From 1a010ef141670f76718e5d5581b1c07779c94943 Mon Sep 17 00:00:00 2001 From: BruceOu <1576690133@qq.com> Date: Tue, 28 Jun 2022 19:43:00 +0800 Subject: [PATCH] [bsp/gd32]Optimize GD32 bsp architecture (#6108) * [bsp/gd32]Optimize GD32 bsp architecture --- .github/workflows/action.yml | 20 +- bsp/gd32/README.md | 37 +- bsp/gd32/arm/README.md | 32 + .../docs/GD32_ARM系列BSP制作教程.md} | 126 +- .../docs/GD32_ARM系列BSP外设驱动使用教程.md} | 6 +- .../docs/GD32_ARM系列驱动介绍.md} | 2 +- .../docs/figures/CMSIS-DAP_Debugger.png | Bin bsp/gd32/{ => arm}/docs/figures/FMC.png | Bin .../{ => arm}/docs/figures/Gigadevice.png | Bin bsp/gd32/{ => arm}/docs/figures/MDK_Build.png | Bin .../docs/figures/MDK_Build_Success.png | Bin .../{ => arm}/docs/figures/Peripheral.png | Bin bsp/gd32/{ => arm}/docs/figures/UART2.png | Bin bsp/gd32/{ => arm}/docs/figures/chip.png | Bin bsp/gd32/{ => arm}/docs/figures/com_print.png | Bin bsp/gd32/{ => arm}/docs/figures/complise.png | Bin bsp/gd32/{ => arm}/docs/figures/config1.png | Bin bsp/gd32/{ => arm}/docs/figures/config2.png | Bin bsp/gd32/{ => arm}/docs/figures/debug.png | Bin .../{ => arm}/docs/figures/disable_lwip.png | Bin .../{ => arm}/docs/figures/disable_net.png | Bin .../{ => arm}/docs/figures/disable_socket.png | Bin bsp/gd32/{ => arm}/docs/figures/dowmload.png | Bin .../docs/figures/download_success.png | Bin bsp/gd32/{ => arm}/docs/figures/frame.png | Bin .../{ => arm}/docs/figures/gdlink_debug.png | Bin .../docs/figures/gdlink_download.png | Bin .../docs/figures/import_rt-thread_studio.png | Bin .../{ => arm}/docs/figures/install_pack.png | Bin bsp/gd32/{ => arm}/docs/figures/mdk_keil.png | Bin .../figures/menuconfig_gd32407v-start.png | Bin 0 -> 27755 bytes .../{ => arm}/docs/figures/pack_finish.png | Bin bsp/gd32/{ => arm}/docs/figures/rename.png | Bin .../docs/figures/rt-thread_studio.png | Bin bsp/gd32/{ => arm}/docs/figures/rt_device.png | Bin bsp/gd32/{ => arm}/docs/figures/run_flash.png | Bin bsp/gd32/{ => arm}/docs/figures/save.png | Bin bsp/gd32/arm/docs/figures/scons.png | Bin 0 -> 25026 bytes bsp/gd32/arm/docs/figures/scons_dist.png | Bin 0 -> 35072 bytes bsp/gd32/arm/docs/figures/scons_mdk5.png | Bin 0 -> 28837 bytes bsp/gd32/arm/docs/figures/scons_success.png | Bin 0 -> 19572 bytes bsp/gd32/{ => arm}/docs/figures/setting1.png | Bin bsp/gd32/{ => arm}/docs/figures/setting2.png | Bin bsp/gd32/{ => arm}/docs/figures/storage.png | Bin bsp/gd32/arm/docs/figures/update.png | Bin 0 -> 29370 bytes bsp/gd32/{ => arm}/gd32103c-eval/.config | 42 +- bsp/gd32/{ => arm}/gd32103c-eval/Kconfig | 2 +- bsp/gd32/{ => arm}/gd32103c-eval/README.md | 33 +- bsp/gd32/{ => arm}/gd32103c-eval/SConscript | 0 .../gd32103c-eval}/SConstruct | 4 +- .../gd32103c-eval/applications/SConscript | 0 .../gd32103c-eval/applications/main.c | 2 +- bsp/gd32/arm/gd32103c-eval/board/Kconfig | 211 + .../{ => arm}/gd32103c-eval/board/SConscript | 6 +- .../gd32103c-eval}/board/board.c | 0 .../{ => arm}/gd32103c-eval/board/board.h | 2 +- .../gd32103c-eval/board/gd32f10x_libopt.h | 0 .../board/linker_scripts/link.icf | 0 .../board/linker_scripts/link.ld | 2 +- .../board/linker_scripts/link.sct | 0 bsp/gd32/arm/gd32103c-eval/figures/board.jpg | Bin 0 -> 180816 bytes bsp/gd32/arm/gd32103c-eval/project.ewd | 3056 ++ bsp/gd32/arm/gd32103c-eval/project.ewp | 2316 ++ bsp/gd32/arm/gd32103c-eval/project.eww | 10 + bsp/gd32/arm/gd32103c-eval/project.uvoptx | 784 + .../{ => arm}/gd32103c-eval/project.uvproj | 202 +- .../{ => arm}/gd32103c-eval/project.uvprojx | 377 +- bsp/gd32/{ => arm}/gd32103c-eval/rtconfig.h | 17 +- .../gd32103c-eval}/rtconfig.py | 6 +- bsp/gd32/arm/gd32103c-eval/template.ewp | 1889 ++ .../gd32103c-eval}/template.uvoptx | 4 +- .../{ => arm}/gd32103c-eval/template.uvproj | 12 +- .../{ => arm}/gd32103c-eval/template.uvprojx | 6 +- bsp/gd32/{ => arm}/gd32105c-eval/.config | 40 +- .../gd32105c-eval}/Kconfig | 2 +- bsp/gd32/arm/gd32105c-eval/README.md | 111 + bsp/gd32/{ => arm}/gd32105c-eval/SConscript | 0 .../gd32105c-eval}/SConstruct | 4 +- .../gd32105c-eval/applications/SConscript | 0 .../gd32105c-eval}/applications/main.c | 8 +- .../{ => arm}/gd32105c-eval/board/Kconfig | 81 + .../gd32105c-eval}/board/SConscript | 6 +- .../gd32105c-eval}/board/board.c | 0 .../{ => arm}/gd32105c-eval/board/board.h | 2 +- .../gd32105c-eval/board/gd32f10x_libopt.h | 0 .../board/linker_scripts/link.icf | 0 .../board/linker_scripts/link.ld | 2 +- .../board/linker_scripts/link.sct | 0 .../{ => arm}/gd32105c-eval/figures/board.jpg | Bin bsp/gd32/arm/gd32105c-eval/project.ewd | 3056 ++ bsp/gd32/arm/gd32105c-eval/project.ewp | 2316 ++ bsp/gd32/arm/gd32105c-eval/project.eww | 10 + bsp/gd32/arm/gd32105c-eval/project.uvoptx | 789 + .../{ => arm}/gd32105c-eval/project.uvproj | 172 +- .../{ => arm}/gd32105c-eval/project.uvprojx | 375 +- bsp/gd32/{ => arm}/gd32105c-eval/rtconfig.h | 17 +- .../gd32105c-eval}/rtconfig.py | 6 +- bsp/gd32/arm/gd32105c-eval/template.ewp | 1889 ++ .../gd32105c-eval}/template.uvoptx | 13 +- .../{ => arm}/gd32105c-eval/template.uvproj | 8 +- .../{ => arm}/gd32105c-eval/template.uvprojx | 8 +- bsp/gd32/{ => arm}/gd32105r-start/.config | 45 +- .../gd32105r-start}/Kconfig | 2 +- bsp/gd32/{ => arm}/gd32105r-start/README.md | 15 +- bsp/gd32/{ => arm}/gd32105r-start/SConscript | 0 .../gd32105r-start}/SConstruct | 4 +- .../gd32105r-start/applications/SConscript | 0 .../gd32105r-start/applications/main.c | 0 bsp/gd32/arm/gd32105r-start/board/Kconfig | 215 + .../gd32105r-start}/board/SConscript | 6 +- .../gd32105r-start}/board/board.c | 2 +- .../{ => arm}/gd32105r-start/board/board.h | 0 .../gd32105r-start/board/gd32f10x_libopt.h | 0 .../board/linker_scripts/link.icf | 0 .../board/linker_scripts/link.ld | 2 +- .../board/linker_scripts/link.sct | 0 .../gd32105r-start/figures/board.jpg | Bin bsp/gd32/arm/gd32105r-start/project.ewd | 3056 ++ bsp/gd32/arm/gd32105r-start/project.ewp | 2316 ++ bsp/gd32/arm/gd32105r-start/project.eww | 10 + bsp/gd32/arm/gd32105r-start/project.uvoptx | 784 + .../{ => arm}/gd32105r-start/project.uvproj | 154 +- .../{ => arm}/gd32105r-start/project.uvprojx | 450 +- bsp/gd32/{ => arm}/gd32105r-start/rtconfig.h | 20 +- bsp/gd32/{ => arm}/gd32105r-start/rtconfig.py | 6 +- bsp/gd32/arm/gd32105r-start/template.ewp | 1889 ++ .../{ => arm}/gd32105r-start/template.uvoptx | 2 +- .../{ => arm}/gd32105r-start/template.uvproj | 14 +- .../{ => arm}/gd32105r-start/template.uvprojx | 4 +- bsp/gd32/{ => arm}/gd32107c-eval/.config | 41 +- .../gd32107c-eval}/Kconfig | 2 +- bsp/gd32/{ => arm}/gd32107c-eval/README.md | 27 +- bsp/gd32/{ => arm}/gd32107c-eval/SConscript | 0 bsp/gd32/{ => arm}/gd32107c-eval/SConstruct | 4 +- .../gd32107c-eval/applications/SConscript | 0 .../gd32107c-eval}/applications/main.c | 6 +- .../{ => arm}/gd32107c-eval/board/Kconfig | 81 + .../{ => arm}/gd32107c-eval/board/SConscript | 6 +- .../gd32107c-eval}/board/board.c | 2 +- .../{ => arm}/gd32107c-eval/board/board.h | 2 +- .../gd32107c-eval/board/gd32f10x_libopt.h | 0 .../board/linker_scripts/link.icf | 0 .../board/linker_scripts/link.ld | 2 +- .../board/linker_scripts/link.sct | 0 .../{ => arm}/gd32107c-eval/figures/board.jpg | Bin bsp/gd32/arm/gd32107c-eval/project.ewd | 3056 ++ bsp/gd32/arm/gd32107c-eval/project.ewp | 2330 ++ bsp/gd32/arm/gd32107c-eval/project.eww | 10 + .../gd32107c-eval}/project.uvoptx | 4 +- .../{ => arm}/gd32107c-eval/project.uvproj | 160 +- .../{ => arm}/gd32107c-eval/project.uvprojx | 278 +- bsp/gd32/{ => arm}/gd32107c-eval/rtconfig.h | 17 +- bsp/gd32/{ => arm}/gd32107c-eval/rtconfig.py | 6 +- bsp/gd32/arm/gd32107c-eval/template.ewp | 1889 ++ .../gd32107c-eval/template.uvoptx} | 4 +- .../{ => arm}/gd32107c-eval/template.uvproj | 12 +- .../{ => arm}/gd32107c-eval/template.uvprojx | 4 +- bsp/gd32/{ => arm}/gd32205r-start/.config | 40 +- bsp/gd32/arm/gd32205r-start/Kconfig | 21 + bsp/gd32/{ => arm}/gd32205r-start/README.md | 7 +- bsp/gd32/{ => arm}/gd32205r-start/SConscript | 0 bsp/gd32/{ => arm}/gd32205r-start/SConstruct | 4 +- .../gd32205r-start/applications/SConscript | 0 .../gd32205r-start/applications/main.c | 0 .../{ => arm}/gd32205r-start/board/Kconfig | 84 + .../{ => arm}/gd32205r-start/board/SConscript | 6 +- .../{ => arm}/gd32205r-start/board/board.c | 0 .../{ => arm}/gd32205r-start/board/board.h | 0 .../gd32205r-start/board/gd32f20x_libopt.h | 0 .../board/linker_scripts/link.icf | 0 .../board/linker_scripts/link.ld | 4 +- .../board/linker_scripts/link.sct | 0 .../gd32205r-start/figures/board.jpg | Bin bsp/gd32/arm/gd32205r-start/project.ewd | 3056 ++ bsp/gd32/arm/gd32205r-start/project.ewp | 2316 ++ bsp/gd32/arm/gd32205r-start/project.eww | 10 + bsp/gd32/arm/gd32205r-start/project.uvoptx | 784 + .../{ => arm}/gd32205r-start/project.uvproj | 182 +- .../{ => arm}/gd32205r-start/project.uvprojx | 366 +- bsp/gd32/{ => arm}/gd32205r-start/rtconfig.h | 17 +- .../gd32205r-start}/rtconfig.py | 6 +- bsp/gd32/arm/gd32205r-start/template.ewp | 1889 ++ .../{ => arm}/gd32205r-start/template.uvoptx | 4 +- .../{ => arm}/gd32205r-start/template.uvproj | 12 +- .../{ => arm}/gd32205r-start/template.uvprojx | 4 +- .../gd32207i-eval}/.config | 28 +- bsp/gd32/arm/gd32207i-eval/Kconfig | 21 + bsp/gd32/arm/gd32207i-eval/README.md | 115 + .../gd32207i-eval}/SConscript | 0 bsp/gd32/arm/gd32207i-eval/SConstruct | 60 + .../gd32207i-eval}/applications/SConscript | 0 .../gd32207i-eval}/applications/main.c | 8 +- .../gd32207i-eval}/board/Kconfig | 119 +- bsp/gd32/arm/gd32207i-eval/board/SConscript | 28 + .../gd32207i-eval}/board/board.c | 2 +- bsp/gd32/arm/gd32207i-eval/board/board.h | 47 + .../arm/gd32207i-eval/board/gd32f20x_libopt.h | 70 + .../board/linker_scripts/link.icf | 0 .../board/linker_scripts/link.ld | 6 +- .../board/linker_scripts/link.sct | 0 bsp/gd32/arm/gd32207i-eval/figures/board.jpg | Bin 0 -> 81713 bytes bsp/gd32/arm/gd32207i-eval/project.ewd | 3056 ++ bsp/gd32/arm/gd32207i-eval/project.ewp | 2316 ++ bsp/gd32/arm/gd32207i-eval/project.eww | 10 + bsp/gd32/arm/gd32207i-eval/project.uvoptx | 784 + bsp/gd32/arm/gd32207i-eval/project.uvproj | 758 + .../gd32207i-eval/project.uvprojx} | 371 +- bsp/gd32/arm/gd32207i-eval/rtconfig.h | 208 + bsp/gd32/arm/gd32207i-eval/rtconfig.py | 150 + bsp/gd32/arm/gd32207i-eval/template.ewp | 1889 ++ .../gd32207i-eval}/template.uvoptx | 4 +- bsp/gd32/arm/gd32207i-eval/template.uvproj | 628 + bsp/gd32/arm/gd32207i-eval/template.uvprojx | 417 + bsp/gd32/arm/gd32303e-eval/.config | 698 + bsp/gd32/arm/gd32303e-eval/Kconfig | 21 + bsp/gd32/{ => arm}/gd32303e-eval/README.md | 46 +- .../gd32303e-eval}/SConscript | 0 bsp/gd32/{ => arm}/gd32303e-eval/SConstruct | 4 +- .../gd32303e-eval}/applications/SConscript | 0 .../gd32303e-eval/applications/main.c | 2 +- .../{ => arm}/gd32303e-eval/board/Kconfig | 85 + .../{ => arm}/gd32303e-eval/board/SConscript | 6 +- .../{ => arm}/gd32303e-eval/board/board.c | 2 +- .../{ => arm}/gd32303e-eval/board/board.h | 2 +- .../gd32303e-eval/board/gd32f30x_libopt.h | 0 .../board/linker_scripts/link.icf | 0 .../board/linker_scripts/link.ld | 0 .../board/linker_scripts/link.sct | 0 bsp/gd32/arm/gd32303e-eval/project.ewd | 3056 ++ bsp/gd32/arm/gd32303e-eval/project.ewp | 2316 ++ bsp/gd32/arm/gd32303e-eval/project.eww | 10 + bsp/gd32/arm/gd32303e-eval/project.uvoptx | 784 + .../{ => arm}/gd32303e-eval/project.uvproj | 124 +- .../{ => arm}/gd32303e-eval/project.uvprojx | 377 +- bsp/gd32/{ => arm}/gd32303e-eval/rtconfig.h | 17 +- bsp/gd32/{ => arm}/gd32303e-eval/rtconfig.py | 6 +- bsp/gd32/arm/gd32303e-eval/template.ewp | 1889 ++ .../{ => arm}/gd32303e-eval/template.uvoptx | 4 +- .../{ => arm}/gd32303e-eval/template.uvproj | 12 +- .../{ => arm}/gd32303e-eval/template.uvprojx | 6 +- bsp/gd32/{ => arm}/gd32305r-start/.config | 40 +- bsp/gd32/arm/gd32305r-start/Kconfig | 21 + bsp/gd32/{ => arm}/gd32305r-start/README.md | 9 +- .../gd32305r-start}/SConscript | 0 bsp/gd32/{ => arm}/gd32305r-start/SConstruct | 4 +- .../gd32305r-start}/applications/SConscript | 0 .../gd32305r-start/applications/main.c | 0 .../{ => arm}/gd32305r-start/board/Kconfig | 81 + .../{ => arm}/gd32305r-start/board/SConscript | 6 +- .../gd32305r-start}/board/board.c | 2 +- .../{ => arm}/gd32305r-start/board/board.h | 0 .../gd32305r-start/board/gd32f30x_libopt.h | 0 .../board/linker_scripts/link.icf | 0 .../board/linker_scripts/link.ld | 0 .../board/linker_scripts/link.sct | 0 .../gd32305r-start/figures/board.jpg | Bin bsp/gd32/arm/gd32305r-start/project.ewd | 3056 ++ bsp/gd32/arm/gd32305r-start/project.ewp | 2316 ++ bsp/gd32/arm/gd32305r-start/project.eww | 10 + bsp/gd32/arm/gd32305r-start/project.uvoptx | 784 + .../{ => arm}/gd32305r-start/project.uvproj | 134 +- .../{ => arm}/gd32305r-start/project.uvprojx | 387 +- bsp/gd32/{ => arm}/gd32305r-start/rtconfig.h | 17 +- bsp/gd32/{ => arm}/gd32305r-start/rtconfig.py | 6 +- bsp/gd32/arm/gd32305r-start/template.ewp | 1889 ++ .../{ => arm}/gd32305r-start/template.uvoptx | 4 +- .../{ => arm}/gd32305r-start/template.uvproj | 12 +- .../{ => arm}/gd32305r-start/template.uvprojx | 4 +- .../gd32307e-start}/.config | 41 +- bsp/gd32/arm/gd32307e-start/Kconfig | 21 + .../gd32307e-start}/README.md | 23 +- .../gd32307e-start}/SConscript | 0 bsp/gd32/arm/gd32307e-start/SConstruct | 60 + .../gd32307e-start}/applications/SConscript | 0 .../arm/gd32307e-start/applications/main.c | 35 + bsp/gd32/arm/gd32307e-start/board/Kconfig | 208 + bsp/gd32/arm/gd32307e-start/board/SConscript | 28 + bsp/gd32/arm/gd32307e-start/board/board.c | 85 + bsp/gd32/arm/gd32307e-start/board/board.h | 47 + .../gd32307e-start/board/gd32f30x_libopt.h | 65 + .../board/linker_scripts/link.icf | 40 + .../board/linker_scripts/link.ld | 142 + .../board/linker_scripts/link.sct | 15 + bsp/gd32/arm/gd32307e-start/figures/board.jpg | Bin 0 -> 448025 bytes bsp/gd32/arm/gd32307e-start/project.ewd | 3056 ++ bsp/gd32/arm/gd32307e-start/project.ewp | 2316 ++ bsp/gd32/arm/gd32307e-start/project.eww | 10 + bsp/gd32/arm/gd32307e-start/project.uvoptx | 784 + bsp/gd32/arm/gd32307e-start/project.uvproj | 758 + bsp/gd32/arm/gd32307e-start/project.uvprojx | 683 + bsp/gd32/arm/gd32307e-start/rtconfig.h | 207 + .../gd32307e-start}/rtconfig.py | 6 +- bsp/gd32/arm/gd32307e-start/template.ewp | 1889 ++ .../gd32307e-start}/template.uvoptx | 6 +- .../gd32307e-start}/template.uvproj | 154 +- .../gd32307e-start}/template.uvprojx | 33 +- bsp/gd32/{ => arm}/gd32407v-start/.config | 40 +- bsp/gd32/arm/gd32407v-start/Kconfig | 21 + bsp/gd32/arm/gd32407v-start/README.md | 99 + .../gd32407v-start}/SConscript | 0 bsp/gd32/{ => arm}/gd32407v-start/SConstruct | 4 +- .../gd32407v-start}/applications/SConscript | 0 .../gd32407v-start/applications/main.c | 0 .../{ => arm}/gd32407v-start/board/Kconfig | 85 + .../{ => arm}/gd32407v-start/board/SConscript | 6 +- .../{ => arm}/gd32407v-start/board/board.c | 0 .../{ => arm}/gd32407v-start/board/board.h | 0 .../gd32407v-start/board/gd32f4xx_libopt.h | 0 .../board/linker_scripts/link.icf | 6 +- .../board/linker_scripts/link.ld | 2 +- .../board/linker_scripts/link.sct | 0 .../gd32407v-start/figures/board.jpg | Bin bsp/gd32/arm/gd32407v-start/project.ewd | 3056 ++ bsp/gd32/arm/gd32407v-start/project.ewp | 2334 ++ bsp/gd32/arm/gd32407v-start/project.ewt | 3043 ++ bsp/gd32/arm/gd32407v-start/project.eww | 10 + bsp/gd32/arm/gd32407v-start/project.uvoptx | 856 + .../{ => arm}/gd32407v-start/project.uvproj | 140 +- .../{ => arm}/gd32407v-start/project.uvprojx | 399 +- bsp/gd32/{ => arm}/gd32407v-start/rtconfig.h | 17 +- .../gd32407v-start}/rtconfig.py | 11 +- bsp/gd32/arm/gd32407v-start/template.ewp | 1889 ++ bsp/gd32/arm/gd32407v-start/template.uvoptx | 180 + .../{ => arm}/gd32407v-start/template.uvproj | 4 +- .../{ => arm}/gd32407v-start/template.uvprojx | 4 +- bsp/gd32/arm/gd32450z-eval/Kconfig | 21 + bsp/gd32/{ => arm}/gd32450z-eval/README.md | 41 +- bsp/gd32/arm/gd32450z-eval/SConscript | 15 + .../gd32450z-eval}/SConstruct | 4 +- .../arm/gd32450z-eval/applications/SConscript | 11 + .../gd32450z-eval/applications/main.c | 2 +- .../{ => arm}/gd32450z-eval/board/Kconfig | 89 +- .../gd32450z-eval}/board/SConscript | 6 +- .../{ => arm}/gd32450z-eval/board/board.c | 2 +- .../{ => arm}/gd32450z-eval/board/board.h | 2 +- .../gd32450z-eval}/board/gd32f4xx_libopt.h | 0 .../board/linker_scripts/link.icf | 2 +- .../board/linker_scripts/link.ld | 2 +- .../board/linker_scripts/link.sct | 0 bsp/gd32/arm/gd32450z-eval/project.ewd | 3056 ++ bsp/gd32/arm/gd32450z-eval/project.ewp | 2321 ++ bsp/gd32/arm/gd32450z-eval/project.eww | 10 + bsp/gd32/arm/gd32450z-eval/project.uvoptx | 806 + .../{ => arm}/gd32450z-eval/project.uvproj | 216 +- .../{ => arm}/gd32450z-eval/project.uvprojx | 358 +- .../gd32450z-eval}/rtconfig.h | 3 +- bsp/gd32/{ => arm}/gd32450z-eval/rtconfig.py | 6 +- bsp/gd32/arm/gd32450z-eval/template.ewp | 1892 ++ .../{ => arm}/gd32450z-eval/template.uvoptx | 4 +- .../{ => arm}/gd32450z-eval/template.uvproj | 2 +- .../{ => arm}/gd32450z-eval/template.uvprojx | 4 +- .../CMSIS/GD/GD32F10x/Include/gd32f10x.h | 0 .../GD/GD32F10x/Include/system_gd32f10x.h | 0 .../GD32F10x/Source/ARM/startup_gd32f10x_cl.s | 0 .../GD32F10x/Source/ARM/startup_gd32f10x_hd.s | 0 .../GD32F10x/Source/ARM/startup_gd32f10x_md.s | 0 .../GD32F10x/Source/ARM/startup_gd32f10x_xd.s | 0 .../GD32F10x/Source/GCC/startup_gd32f10x_cl.s | 0 .../GD32F10x/Source/GCC/startup_gd32f10x_hd.s | 0 .../GD32F10x/Source/GCC/startup_gd32f10x_md.s | 0 .../GD32F10x/Source/GCC/startup_gd32f10x_xd.s | 0 .../GD32F10x/Source/IAR/startup_gd32f10x_cl.s | 0 .../GD32F10x/Source/IAR/startup_gd32f10x_hd.s | 0 .../GD32F10x/Source/IAR/startup_gd32f10x_md.s | 0 .../GD32F10x/Source/IAR/startup_gd32f10x_xd.s | 0 .../GD/GD32F10x/Source/system_gd32f10x.c | 0 .../CMSIS/core_cm3.h | 0 .../CMSIS/core_cmFunc.h | 0 .../CMSIS/core_cmInstr.h | 0 .../Include/gd32f10x_adc.h | 0 .../Include/gd32f10x_bkp.h | 0 .../Include/gd32f10x_can.h | 0 .../Include/gd32f10x_crc.h | 0 .../Include/gd32f10x_dac.h | 0 .../Include/gd32f10x_dbg.h | 0 .../Include/gd32f10x_dma.h | 0 .../Include/gd32f10x_enet.h | 0 .../Include/gd32f10x_exmc.h | 0 .../Include/gd32f10x_exti.h | 0 .../Include/gd32f10x_fmc.h | 0 .../Include/gd32f10x_fwdgt.h | 0 .../Include/gd32f10x_gpio.h | 0 .../Include/gd32f10x_i2c.h | 0 .../Include/gd32f10x_misc.h | 0 .../Include/gd32f10x_pmu.h | 0 .../Include/gd32f10x_rcu.h | 0 .../Include/gd32f10x_rtc.h | 0 .../Include/gd32f10x_sdio.h | 0 .../Include/gd32f10x_spi.h | 0 .../Include/gd32f10x_timer.h | 0 .../Include/gd32f10x_usart.h | 0 .../Include/gd32f10x_wwdgt.h | 0 .../Source/gd32f10x_adc.c | 0 .../Source/gd32f10x_bkp.c | 0 .../Source/gd32f10x_can.c | 0 .../Source/gd32f10x_crc.c | 0 .../Source/gd32f10x_dac.c | 0 .../Source/gd32f10x_dbg.c | 0 .../Source/gd32f10x_dma.c | 0 .../Source/gd32f10x_enet.c | 0 .../Source/gd32f10x_exmc.c | 0 .../Source/gd32f10x_exti.c | 0 .../Source/gd32f10x_fmc.c | 0 .../Source/gd32f10x_fwdgt.c | 0 .../Source/gd32f10x_gpio.c | 0 .../Source/gd32f10x_i2c.c | 0 .../Source/gd32f10x_misc.c | 0 .../Source/gd32f10x_pmu.c | 0 .../Source/gd32f10x_rcu.c | 0 .../Source/gd32f10x_rtc.c | 0 .../Source/gd32f10x_sdio.c | 0 .../Source/gd32f10x_spi.c | 0 .../Source/gd32f10x_timer.c | 0 .../Source/gd32f10x_usart.c | 0 .../Source/gd32f10x_wwdgt.c | 0 .../class/device/audio/Include/audio_core.h | 0 .../device/audio/Include/audio_out_itf.h | 0 .../class/device/audio/Source/audio_core.c | 0 .../class/device/audio/Source/audio_out_itf.c | 0 .../class/device/cdc/Include/cdc_acm_core.h | 0 .../class/device/cdc/Source/cdc_acm_core.c | 0 .../class/device/dfu/Include/dfu_core.h | 0 .../class/device/dfu/Source/dfu_core.c | 0 .../device/hid/Include/custom_hid_core.h | 0 .../device/hid/Include/standard_hid_core.h | 0 .../class/device/hid/Include/usb_hid.h | 0 .../class/device/hid/Source/custom_hid_core.c | 0 .../device/hid/Source/standard_hid_core.c | 0 .../class/device/iap/Include/usb_iap_core.h | 0 .../class/device/iap/Source/usb_iap_core.c | 0 .../class/device/msc/Include/usbd_msc_bbb.h | 0 .../class/device/msc/Include/usbd_msc_core.h | 0 .../class/device/msc/Include/usbd_msc_data.h | 0 .../class/device/msc/Include/usbd_msc_mem.h | 0 .../class/device/msc/Include/usbd_msc_scsi.h | 0 .../class/device/msc/Source/usbd_msc_bbb.c | 0 .../class/device/msc/Source/usbd_msc_core.c | 0 .../class/device/msc/Source/usbd_msc_data.c | 0 .../class/device/msc/Source/usbd_msc_scsi.c | 0 .../device/printer/Include/printer_core.h | 0 .../device/printer/Source/printer_core.c | 0 .../device/Include/usb_ch9_std.h | 0 .../device/Include/usbd_core.h | 0 .../device/Include/usbd_enum.h | 0 .../device/Include/usbd_pwr.h | 0 .../device/Include/usbd_transc.h | 0 .../device/Source/usbd_core.c | 0 .../device/Source/usbd_enum.c | 0 .../device/Source/usbd_pwr.c | 0 .../device/Source/usbd_transc.c | 0 .../usbd/Include/usbd_lld_core.h | 0 .../usbd/Include/usbd_lld_int.h | 0 .../usbd/Include/usbd_lld_regs.h | 0 .../usbd/Source/usbd_lld_core.c | 0 .../usbd/Source/usbd_lld_int.c | 0 .../device/class/audio/Include/audio_core.h | 0 .../class/audio/Include/audio_out_itf.h | 0 .../device/class/audio/Source/audio_core.c | 0 .../device/class/audio/Source/audio_out_itf.c | 0 .../device/class/cdc/Include/cdc_acm_core.h | 0 .../device/class/cdc/Source/cdc_acm_core.c | 0 .../device/class/dfu/Include/dfu_core.h | 0 .../device/class/dfu/Include/dfu_mal.h | 0 .../device/class/dfu/Source/dfu_core.c | 0 .../device/class/dfu/Source/dfu_mal.c | 0 .../class/hid/Include/custom_hid_core.h | 0 .../class/hid/Include/standard_hid_core.h | 0 .../device/class/hid/Source/custom_hid_core.c | 0 .../class/hid/Source/standard_hid_core.c | 0 .../device/class/iap/Include/usb_iap_core.h | 0 .../device/class/iap/Source/usb_iap_core.c | 0 .../device/class/msc/Include/usbd_msc_bbb.h | 0 .../device/class/msc/Include/usbd_msc_core.h | 0 .../device/class/msc/Include/usbd_msc_data.h | 0 .../device/class/msc/Include/usbd_msc_mem.h | 0 .../device/class/msc/Include/usbd_msc_scsi.h | 0 .../device/class/msc/Source/usbd_msc_bbb.c | 0 .../device/class/msc/Source/usbd_msc_core.c | 0 .../device/class/msc/Source/usbd_msc_data.c | 0 .../device/class/msc/Source/usbd_msc_scsi.c | 0 .../class/printer/Include/printer_core.h | 0 .../class/printer/Source/printer_core.c | 0 .../device/core/Include/usbd_core.h | 0 .../device/core/Include/usbd_enum.h | 0 .../device/core/Include/usbd_transc.h | 0 .../device/core/Source/usbd_core.c | 0 .../device/core/Source/usbd_enum.c | 0 .../device/core/Source/usbd_transc.c | 0 .../driver/Include/drv_usb_core.h | 0 .../driver/Include/drv_usb_dev.h | 0 .../driver/Include/drv_usb_host.h | 0 .../driver/Include/drv_usb_hw.h | 0 .../driver/Include/drv_usb_regs.h | 0 .../driver/Include/drv_usbd_int.h | 0 .../driver/Include/drv_usbh_int.h | 0 .../driver/Source/drv_usb_core.c | 0 .../driver/Source/drv_usb_dev.c | 0 .../driver/Source/drv_usb_host.c | 0 .../driver/Source/drv_usbd_int.c | 0 .../driver/Source/drv_usbh_int.c | 0 .../host/class/hid/Include/usbh_hid_core.h | 0 .../host/class/hid/Include/usbh_hid_keybd.h | 0 .../host/class/hid/Include/usbh_hid_mouse.h | 0 .../host/class/hid/Include/usbh_hid_parser.h | 0 .../host/class/hid/Include/usbh_hid_usage.h | 0 .../host/class/hid/Source/usbh_hid_core.c | 0 .../host/class/hid/Source/usbh_hid_keybd.c | 0 .../host/class/hid/Source/usbh_hid_mouse.c | 0 .../host/class/hid/Source/usbh_hid_parser.c | 0 .../host/class/msc/Include/usbh_msc_bbb.h | 0 .../host/class/msc/Include/usbh_msc_core.h | 0 .../host/class/msc/Include/usbh_msc_scsi.h | 0 .../host/class/msc/Source/usbh_msc_bbb.c | 0 .../host/class/msc/Source/usbh_msc_core.c | 0 .../host/class/msc/Source/usbh_msc_fatfs.c | 0 .../host/class/msc/Source/usbh_msc_scsi.c | 0 .../host/core/Include/usbh_core.h | 0 .../host/core/Include/usbh_enum.h | 0 .../host/core/Include/usbh_pipe.h | 0 .../host/core/Include/usbh_transc.h | 0 .../host/core/Source/usbh_core.c | 0 .../host/core/Source/usbh_enum.c | 0 .../host/core/Source/usbh_pipe.c | 0 .../host/core/Source/usbh_transc.c | 0 .../ustd/class/cdc/usb_cdc.h | 0 .../ustd/class/hid/usb_hid.h | 0 .../ustd/class/msc/msc_bbb.h | 0 .../ustd/class/msc/msc_scsi.h | 0 .../ustd/class/msc/usb_msc.h | 0 .../ustd/common/usb_ch9_std.h | 0 .../GD32F10x_Firmware_Library/SConscript | 0 .../CMSIS/GD/GD32F20x/Include/gd32f20x.h | 0 .../GD/GD32F20x/Include/system_gd32f20x.h | 0 .../GD32F20x/Source/ARM/startup_gd32f20x_cl.s | 0 .../GD32F20x/Source/GCC/startup_gd32f20x_cl.s | 0 .../GD32F20x/Source/IAR/startup_gd32f20x_cl.s | 0 .../GD/GD32F20x/Source/system_gd32f20x.c | 0 .../CMSIS/cmsis_armcc.h | 0 .../CMSIS/core_cm3.h | 0 .../CMSIS/core_cmFunc.h | 0 .../CMSIS/core_cmInstr.h | 0 .../Include/gd32f20x_adc.h | 0 .../Include/gd32f20x_bkp.h | 0 .../Include/gd32f20x_can.h | 0 .../Include/gd32f20x_cau.h | 0 .../Include/gd32f20x_crc.h | 0 .../Include/gd32f20x_dac.h | 0 .../Include/gd32f20x_dbg.h | 0 .../Include/gd32f20x_dci.h | 0 .../Include/gd32f20x_dma.h | 0 .../Include/gd32f20x_enet.h | 0 .../Include/gd32f20x_exmc.h | 0 .../Include/gd32f20x_exti.h | 0 .../Include/gd32f20x_fmc.h | 0 .../Include/gd32f20x_fwdgt.h | 0 .../Include/gd32f20x_gpio.h | 0 .../Include/gd32f20x_hau.h | 0 .../Include/gd32f20x_i2c.h | 0 .../Include/gd32f20x_misc.h | 0 .../Include/gd32f20x_pmu.h | 0 .../Include/gd32f20x_rcu.h | 0 .../Include/gd32f20x_rtc.h | 0 .../Include/gd32f20x_sdio.h | 0 .../Include/gd32f20x_spi.h | 0 .../Include/gd32f20x_timer.h | 0 .../Include/gd32f20x_tli.h | 0 .../Include/gd32f20x_trng.h | 0 .../Include/gd32f20x_usart.h | 0 .../Include/gd32f20x_wwdgt.h | 0 .../Source/gd32f20x_adc.c | 0 .../Source/gd32f20x_bkp.c | 0 .../Source/gd32f20x_can.c | 0 .../Source/gd32f20x_cau.c | 0 .../Source/gd32f20x_cau_aes.c | 0 .../Source/gd32f20x_cau_des.c | 0 .../Source/gd32f20x_cau_tdes.c | 0 .../Source/gd32f20x_crc.c | 0 .../Source/gd32f20x_dac.c | 0 .../Source/gd32f20x_dbg.c | 0 .../Source/gd32f20x_dci.c | 0 .../Source/gd32f20x_dma.c | 0 .../Source/gd32f20x_enet.c | 0 .../Source/gd32f20x_exmc.c | 0 .../Source/gd32f20x_exti.c | 0 .../Source/gd32f20x_fmc.c | 0 .../Source/gd32f20x_fwdgt.c | 0 .../Source/gd32f20x_gpio.c | 0 .../Source/gd32f20x_hau.c | 0 .../Source/gd32f20x_hau_sha_md5.c | 0 .../Source/gd32f20x_i2c.c | 0 .../Source/gd32f20x_misc.c | 0 .../Source/gd32f20x_pmu.c | 0 .../Source/gd32f20x_rcu.c | 0 .../Source/gd32f20x_rtc.c | 0 .../Source/gd32f20x_sdio.c | 0 .../Source/gd32f20x_spi.c | 0 .../Source/gd32f20x_timer.c | 0 .../Source/gd32f20x_tli.c | 0 .../Source/gd32f20x_trng.c | 0 .../Source/gd32f20x_usart.c | 0 .../Source/gd32f20x_wwdgt.c | 0 .../device/class/audio/Include/audio_core.h | 0 .../class/audio/Include/audio_out_itf.h | 0 .../device/class/audio/Source/audio_core.c | 0 .../device/class/audio/Source/audio_out_itf.c | 0 .../device/class/cdc/Include/cdc_acm_core.h | 0 .../device/class/cdc/Source/cdc_acm_core.c | 0 .../device/class/dfu/Include/dfu_core.h | 0 .../device/class/dfu/Include/dfu_mal.h | 0 .../device/class/dfu/Source/dfu_core.c | 0 .../device/class/dfu/Source/dfu_mal.c | 0 .../class/hid/Include/custom_hid_core.h | 0 .../class/hid/Include/standard_hid_core.h | 0 .../device/class/hid/Source/custom_hid_core.c | 0 .../class/hid/Source/standard_hid_core.c | 0 .../device/class/iap/Include/usb_iap_core.h | 0 .../device/class/iap/Source/usb_iap_core.c | 0 .../device/class/msc/Include/usbd_msc_bbb.h | 0 .../device/class/msc/Include/usbd_msc_core.h | 0 .../device/class/msc/Include/usbd_msc_data.h | 0 .../device/class/msc/Include/usbd_msc_mem.h | 0 .../device/class/msc/Include/usbd_msc_scsi.h | 0 .../device/class/msc/Source/usbd_msc_bbb.c | 0 .../device/class/msc/Source/usbd_msc_core.c | 0 .../device/class/msc/Source/usbd_msc_data.c | 0 .../device/class/msc/Source/usbd_msc_scsi.c | 0 .../class/printer/Include/printer_core.h | 0 .../class/printer/Source/printer_core.c | 0 .../device/core/Include/usbd_core.h | 0 .../device/core/Include/usbd_enum.h | 0 .../device/core/Include/usbd_transc.h | 0 .../device/core/Source/usbd_core.c | 0 .../device/core/Source/usbd_enum.c | 0 .../device/core/Source/usbd_transc.c | 0 .../driver/Include/drv_usb_core.h | 0 .../driver/Include/drv_usb_dev.h | 0 .../driver/Include/drv_usb_host.h | 0 .../driver/Include/drv_usb_hw.h | 0 .../driver/Include/drv_usb_regs.h | 0 .../driver/Include/drv_usbd_int.h | 0 .../driver/Include/drv_usbh_int.h | 0 .../driver/Source/drv_usb_core.c | 0 .../driver/Source/drv_usb_dev.c | 0 .../driver/Source/drv_usb_host.c | 0 .../driver/Source/drv_usbd_int.c | 0 .../driver/Source/drv_usbh_int.c | 0 .../host/class/hid/Include/usbh_hid_core.h | 0 .../host/class/hid/Include/usbh_hid_keybd.h | 0 .../host/class/hid/Include/usbh_hid_mouse.h | 0 .../host/class/hid/Include/usbh_hid_parser.h | 0 .../host/class/hid/Include/usbh_hid_usage.h | 0 .../host/class/hid/Source/usbh_hid_core.c | 0 .../host/class/hid/Source/usbh_hid_keybd.c | 0 .../host/class/hid/Source/usbh_hid_mouse.c | 0 .../host/class/hid/Source/usbh_hid_parser.c | 0 .../host/class/msc/Include/usbh_msc_bbb.h | 0 .../host/class/msc/Include/usbh_msc_core.h | 0 .../host/class/msc/Include/usbh_msc_scsi.h | 0 .../host/class/msc/Source/usbh_msc_bbb.c | 0 .../host/class/msc/Source/usbh_msc_core.c | 0 .../host/class/msc/Source/usbh_msc_fatfs.c | 0 .../host/class/msc/Source/usbh_msc_scsi.c | 0 .../host/core/Include/usbh_core.h | 0 .../host/core/Include/usbh_enum.h | 0 .../host/core/Include/usbh_pipe.h | 0 .../host/core/Include/usbh_transc.h | 0 .../host/core/Source/usbh_core.c | 0 .../host/core/Source/usbh_enum.c | 0 .../host/core/Source/usbh_pipe.c | 0 .../host/core/Source/usbh_transc.c | 0 .../ustd/class/cdc/usb_cdc.h | 0 .../ustd/class/hid/usb_hid.h | 0 .../ustd/class/msc/msc_bbb.h | 0 .../ustd/class/msc/msc_scsi.h | 0 .../ustd/class/msc/usb_msc.h | 0 .../ustd/common/usb_ch9_std.h | 0 .../GD32F20x_Firmware_Library/SConscript | 1 - .../CMSIS/GD/GD32F30x/Include/gd32f30x.h | 0 .../GD/GD32F30x/Include/system_gd32f30x.h | 0 .../GD32F30x/Source/ARM/startup_gd32f30x_cl.s | 0 .../GD32F30x/Source/ARM/startup_gd32f30x_hd.s | 0 .../GD32F30x/Source/ARM/startup_gd32f30x_xd.s | 0 .../GD32F30x/Source/GCC/startup_gd32f30x_cl.s | 0 .../GD32F30x/Source/GCC/startup_gd32f30x_hd.s | 0 .../GD32F30x/Source/GCC/startup_gd32f30x_xd.s | 0 .../GD32F30x/Source/IAR/startup_gd32f30x_cl.s | 0 .../GD32F30x/Source/IAR/startup_gd32f30x_hd.s | 0 .../GD32F30x/Source/IAR/startup_gd32f30x_xd.s | 0 .../GD/GD32F30x/Source/system_gd32f30x.c | 0 .../CMSIS/core_cm4.h | 0 .../CMSIS/core_cm4_simd.h | 0 .../CMSIS/core_cmFunc.h | 0 .../CMSIS/core_cmInstr.h | 0 .../Include/gd32f30x_adc.h | 0 .../Include/gd32f30x_bkp.h | 0 .../Include/gd32f30x_can.h | 0 .../Include/gd32f30x_crc.h | 0 .../Include/gd32f30x_ctc.h | 0 .../Include/gd32f30x_dac.h | 0 .../Include/gd32f30x_dbg.h | 0 .../Include/gd32f30x_dma.h | 0 .../Include/gd32f30x_enet.h | 0 .../Include/gd32f30x_exmc.h | 0 .../Include/gd32f30x_exti.h | 0 .../Include/gd32f30x_fmc.h | 0 .../Include/gd32f30x_fwdgt.h | 0 .../Include/gd32f30x_gpio.h | 0 .../Include/gd32f30x_i2c.h | 0 .../Include/gd32f30x_misc.h | 0 .../Include/gd32f30x_pmu.h | 0 .../Include/gd32f30x_rcu.h | 0 .../Include/gd32f30x_rtc.h | 0 .../Include/gd32f30x_sdio.h | 0 .../Include/gd32f30x_spi.h | 0 .../Include/gd32f30x_timer.h | 0 .../Include/gd32f30x_usart.h | 0 .../Include/gd32f30x_wwdgt.h | 0 .../Source/gd32f30x_adc.c | 0 .../Source/gd32f30x_bkp.c | 0 .../Source/gd32f30x_can.c | 0 .../Source/gd32f30x_crc.c | 0 .../Source/gd32f30x_ctc.c | 0 .../Source/gd32f30x_dac.c | 0 .../Source/gd32f30x_dbg.c | 0 .../Source/gd32f30x_dma.c | 0 .../Source/gd32f30x_enet.c | 0 .../Source/gd32f30x_exmc.c | 0 .../Source/gd32f30x_exti.c | 0 .../Source/gd32f30x_fmc.c | 0 .../Source/gd32f30x_fwdgt.c | 0 .../Source/gd32f30x_gpio.c | 0 .../Source/gd32f30x_i2c.c | 0 .../Source/gd32f30x_misc.c | 0 .../Source/gd32f30x_pmu.c | 0 .../Source/gd32f30x_rcu.c | 0 .../Source/gd32f30x_rtc.c | 0 .../Source/gd32f30x_sdio.c | 0 .../Source/gd32f30x_spi.c | 0 .../Source/gd32f30x_timer.c | 0 .../Source/gd32f30x_usart.c | 0 .../Source/gd32f30x_wwdgt.c | 0 .../class/device/audio/Include/audio_core.h | 0 .../device/audio/Include/audio_out_itf.h | 0 .../class/device/audio/Source/audio_core.c | 0 .../class/device/audio/Source/audio_out_itf.c | 0 .../class/device/cdc/Include/cdc_acm_core.h | 0 .../class/device/cdc/Source/cdc_acm_core.c | 0 .../class/device/dfu/Include/dfu_core.h | 0 .../class/device/dfu/Source/dfu_core.c | 0 .../device/hid/Include/custom_hid_core.h | 0 .../device/hid/Include/standard_hid_core.h | 0 .../device/hid/Include/std_hid_mouse_core.h | 0 .../class/device/hid/Include/usb_hid.h | 0 .../class/device/hid/Source/custom_hid_core.c | 0 .../device/hid/Source/standard_hid_core.c | 0 .../device/hid/Source/std_hid_mouse_core.c | 0 .../class/device/iap/Include/usb_iap_core.h | 0 .../class/device/iap/Source/usb_iap_core.c | 0 .../class/device/msc/Include/usbd_msc_bbb.h | 0 .../class/device/msc/Include/usbd_msc_core.h | 0 .../class/device/msc/Include/usbd_msc_data.h | 0 .../class/device/msc/Include/usbd_msc_mem.h | 0 .../class/device/msc/Include/usbd_msc_scsi.h | 0 .../class/device/msc/Source/usbd_msc_bbb.c | 0 .../class/device/msc/Source/usbd_msc_core.c | 0 .../class/device/msc/Source/usbd_msc_data.c | 0 .../class/device/msc/Source/usbd_msc_scsi.c | 0 .../device/printer/Include/printer_core.h | 0 .../device/printer/Source/printer_core.c | 0 .../device/Include/usb_ch9_std.h | 0 .../device/Include/usbd_core.h | 0 .../device/Include/usbd_enum.h | 0 .../device/Include/usbd_pwr.h | 0 .../device/Include/usbd_transc.h | 0 .../device/Source/usbd_core.c | 0 .../device/Source/usbd_enum.c | 0 .../device/Source/usbd_pwr.c | 0 .../device/Source/usbd_transc.c | 0 .../usbd/Include/usbd_lld_core.h | 0 .../usbd/Include/usbd_lld_int.h | 0 .../usbd/Include/usbd_lld_regs.h | 0 .../usbd/Source/usbd_lld_core.c | 0 .../usbd/Source/usbd_lld_int.c | 0 .../device/class/audio/Include/audio_core.h | 0 .../class/audio/Include/audio_out_itf.h | 0 .../device/class/audio/Source/audio_core.c | 0 .../device/class/audio/Source/audio_out_itf.c | 0 .../device/class/cdc/Include/cdc_acm_core.h | 0 .../device/class/cdc/Source/cdc_acm_core.c | 0 .../device/class/dfu/Include/dfu_core.h | 0 .../device/class/dfu/Include/dfu_mal.h | 0 .../device/class/dfu/Source/dfu_core.c | 0 .../device/class/dfu/Source/dfu_mal.c | 0 .../class/hid/Include/custom_hid_core.h | 0 .../class/hid/Include/standard_hid_core.h | 0 .../device/class/hid/Source/custom_hid_core.c | 0 .../class/hid/Source/standard_hid_core.c | 0 .../device/class/iap/Include/usb_iap_core.h | 0 .../device/class/iap/Source/usb_iap_core.c | 0 .../device/class/msc/Include/usbd_msc_bbb.h | 0 .../device/class/msc/Include/usbd_msc_core.h | 0 .../device/class/msc/Include/usbd_msc_data.h | 0 .../device/class/msc/Include/usbd_msc_mem.h | 0 .../device/class/msc/Include/usbd_msc_scsi.h | 0 .../device/class/msc/Source/usbd_msc_bbb.c | 0 .../device/class/msc/Source/usbd_msc_core.c | 0 .../device/class/msc/Source/usbd_msc_data.c | 0 .../device/class/msc/Source/usbd_msc_scsi.c | 0 .../class/printer/Include/printer_core.h | 0 .../class/printer/Source/printer_core.c | 0 .../device/core/Include/usbd_core.h | 0 .../device/core/Include/usbd_enum.h | 0 .../device/core/Include/usbd_transc.h | 0 .../device/core/Source/usbd_core.c | 0 .../device/core/Source/usbd_enum.c | 0 .../device/core/Source/usbd_transc.c | 0 .../driver/Include/drv_usb_core.h | 0 .../driver/Include/drv_usb_dev.h | 0 .../driver/Include/drv_usb_host.h | 0 .../driver/Include/drv_usb_hw.h | 0 .../driver/Include/drv_usb_regs.h | 0 .../driver/Include/drv_usbd_int.h | 0 .../driver/Include/drv_usbh_int.h | 0 .../driver/Source/drv_usb_core.c | 0 .../driver/Source/drv_usb_dev.c | 0 .../driver/Source/drv_usb_host.c | 0 .../driver/Source/drv_usbd_int.c | 0 .../driver/Source/drv_usbh_int.c | 0 .../host/class/hid/Include/usbh_hid_core.h | 0 .../host/class/hid/Include/usbh_hid_keybd.h | 0 .../host/class/hid/Include/usbh_hid_mouse.h | 0 .../host/class/hid/Include/usbh_hid_parser.h | 0 .../host/class/hid/Include/usbh_hid_usage.h | 0 .../host/class/hid/Source/usbh_hid_core.c | 0 .../host/class/hid/Source/usbh_hid_keybd.c | 0 .../host/class/hid/Source/usbh_hid_mouse.c | 0 .../host/class/hid/Source/usbh_hid_parser.c | 0 .../host/class/msc/Include/usbh_msc_bbb.h | 0 .../host/class/msc/Include/usbh_msc_core.h | 0 .../host/class/msc/Include/usbh_msc_scsi.h | 0 .../host/class/msc/Source/usbh_msc_bbb.c | 0 .../host/class/msc/Source/usbh_msc_core.c | 0 .../host/class/msc/Source/usbh_msc_fatfs.c | 0 .../host/class/msc/Source/usbh_msc_scsi.c | 0 .../host/core/Include/usbh_core.h | 0 .../host/core/Include/usbh_enum.h | 0 .../host/core/Include/usbh_pipe.h | 0 .../host/core/Include/usbh_transc.h | 0 .../host/core/Source/usbh_core.c | 0 .../host/core/Source/usbh_enum.c | 0 .../host/core/Source/usbh_pipe.c | 0 .../host/core/Source/usbh_transc.c | 0 .../ustd/class/cdc/usb_cdc.h | 0 .../ustd/class/hid/usb_hid.h | 0 .../ustd/class/msc/msc_bbb.h | 0 .../ustd/class/msc/msc_scsi.h | 0 .../ustd/class/msc/usb_msc.h | 0 .../ustd/common/usb_ch9_std.h | 0 .../GD32F30x_Firmware_Library/SConscript | 1 - .../CMSIS/GD/GD32F4xx/Include/gd32f4xx.h | 0 .../GD/GD32F4xx/Include/system_gd32f4xx.h | 0 .../GD/GD32F4xx/Source/ARM/startup_gd32f4xx.s | 0 .../GD/GD32F4xx/Source/GCC/startup_gd32f4xx.s | 0 .../GD/GD32F4xx/Source/IAR/startup_gd32f4xx.s | 0 .../GD/GD32F4xx/Source/system_gd32f4xx.c | 0 .../CMSIS/core_cm4.h | 0 .../CMSIS/core_cm4_simd.h | 0 .../CMSIS/core_cmFunc.h | 0 .../CMSIS/core_cmInstr.h | 0 .../Include/gd32f4xx_adc.h | 0 .../Include/gd32f4xx_can.h | 0 .../Include/gd32f4xx_crc.h | 0 .../Include/gd32f4xx_ctc.h | 0 .../Include/gd32f4xx_dac.h | 0 .../Include/gd32f4xx_dbg.h | 0 .../Include/gd32f4xx_dci.h | 0 .../Include/gd32f4xx_dma.h | 0 .../Include/gd32f4xx_enet.h | 0 .../Include/gd32f4xx_exmc.h | 0 .../Include/gd32f4xx_exti.h | 0 .../Include/gd32f4xx_fmc.h | 0 .../Include/gd32f4xx_fwdgt.h | 0 .../Include/gd32f4xx_gpio.h | 0 .../Include/gd32f4xx_i2c.h | 0 .../Include/gd32f4xx_ipa.h | 0 .../Include/gd32f4xx_iref.h | 0 .../Include/gd32f4xx_misc.h | 0 .../Include/gd32f4xx_pmu.h | 0 .../Include/gd32f4xx_rcu.h | 0 .../Include/gd32f4xx_rtc.h | 0 .../Include/gd32f4xx_sdio.h | 0 .../Include/gd32f4xx_spi.h | 0 .../Include/gd32f4xx_syscfg.h | 0 .../Include/gd32f4xx_timer.h | 0 .../Include/gd32f4xx_tli.h | 0 .../Include/gd32f4xx_trng.h | 0 .../Include/gd32f4xx_usart.h | 0 .../Include/gd32f4xx_wwdgt.h | 0 .../Source/gd32f4xx_adc.c | 0 .../Source/gd32f4xx_can.c | 0 .../Source/gd32f4xx_crc.c | 0 .../Source/gd32f4xx_ctc.c | 0 .../Source/gd32f4xx_dac.c | 0 .../Source/gd32f4xx_dbg.c | 0 .../Source/gd32f4xx_dci.c | 0 .../Source/gd32f4xx_dma.c | 0 .../Source/gd32f4xx_enet.c | 0 .../Source/gd32f4xx_exmc.c | 0 .../Source/gd32f4xx_exti.c | 0 .../Source/gd32f4xx_fmc.c | 0 .../Source/gd32f4xx_fwdgt.c | 0 .../Source/gd32f4xx_gpio.c | 0 .../Source/gd32f4xx_i2c.c | 0 .../Source/gd32f4xx_ipa.c | 0 .../Source/gd32f4xx_iref.c | 0 .../Source/gd32f4xx_misc.c | 0 .../Source/gd32f4xx_pmu.c | 0 .../Source/gd32f4xx_rcu.c | 0 .../Source/gd32f4xx_rtc.c | 0 .../Source/gd32f4xx_sdio.c | 0 .../Source/gd32f4xx_spi.c | 0 .../Source/gd32f4xx_syscfg.c | 0 .../Source/gd32f4xx_timer.c | 0 .../Source/gd32f4xx_tli.c | 0 .../Source/gd32f4xx_trng.c | 0 .../Source/gd32f4xx_usart.c | 0 .../Source/gd32f4xx_wwdgt.c | 0 .../device/class/audio/Include/audio_core.h | 0 .../class/audio/Include/audio_out_itf.h | 0 .../device/class/audio/Source/audio_core.c | 0 .../device/class/audio/Source/audio_out_itf.c | 0 .../device/class/cdc/Include/cdc_acm_core.h | 0 .../device/class/cdc/Source/cdc_acm_core.c | 0 .../device/class/dfu/Include/dfu_core.h | 0 .../device/class/dfu/Include/dfu_mal.h | 0 .../device/class/dfu/Source/dfu_core.c | 0 .../device/class/dfu/Source/dfu_mal.c | 0 .../class/hid/Include/custom_hid_core.h | 0 .../class/hid/Include/standard_hid_core.h | 0 .../device/class/hid/Source/custom_hid_core.c | 0 .../class/hid/Source/standard_hid_core.c | 0 .../device/class/iap/Include/usb_iap_core.h | 0 .../device/class/iap/Source/usb_iap_core.c | 0 .../device/class/msc/Include/usbd_msc_bbb.h | 0 .../device/class/msc/Include/usbd_msc_core.h | 0 .../device/class/msc/Include/usbd_msc_data.h | 0 .../device/class/msc/Include/usbd_msc_mem.h | 0 .../device/class/msc/Include/usbd_msc_scsi.h | 0 .../device/class/msc/Source/usbd_msc_bbb.c | 0 .../device/class/msc/Source/usbd_msc_core.c | 0 .../device/class/msc/Source/usbd_msc_data.c | 0 .../device/class/msc/Source/usbd_msc_scsi.c | 0 .../class/printer/Include/printer_core.h | 0 .../class/printer/Source/printer_core.c | 0 .../device/core/Include/usbd_core.h | 0 .../device/core/Include/usbd_enum.h | 0 .../device/core/Include/usbd_transc.h | 0 .../device/core/Source/usbd_core.c | 0 .../device/core/Source/usbd_enum.c | 0 .../device/core/Source/usbd_transc.c | 0 .../driver/Include/drv_usb_core.h | 0 .../driver/Include/drv_usb_dev.h | 0 .../driver/Include/drv_usb_host.h | 0 .../driver/Include/drv_usb_hw.h | 0 .../driver/Include/drv_usb_regs.h | 0 .../driver/Include/drv_usbd_int.h | 0 .../driver/Include/drv_usbh_int.h | 0 .../driver/Source/drv_usb_core.c | 0 .../driver/Source/drv_usb_dev.c | 0 .../driver/Source/drv_usb_host.c | 0 .../driver/Source/drv_usbd_int.c | 0 .../driver/Source/drv_usbh_int.c | 0 .../host/class/hid/Include/usbh_hid_core.h | 0 .../host/class/hid/Include/usbh_hid_keybd.h | 0 .../host/class/hid/Include/usbh_hid_mouse.h | 0 .../host/class/hid/Include/usbh_hid_parser.h | 0 .../host/class/hid/Include/usbh_hid_usage.h | 0 .../host/class/hid/Source/usbh_hid_core.c | 0 .../host/class/hid/Source/usbh_hid_keybd.c | 0 .../host/class/hid/Source/usbh_hid_mouse.c | 0 .../host/class/hid/Source/usbh_hid_parser.c | 0 .../host/class/msc/Include/usbh_msc_bbb.h | 0 .../host/class/msc/Include/usbh_msc_core.h | 0 .../host/class/msc/Include/usbh_msc_scsi.h | 0 .../host/class/msc/Source/usbh_msc_bbb.c | 0 .../host/class/msc/Source/usbh_msc_core.c | 0 .../host/class/msc/Source/usbh_msc_fatfs.c | 0 .../host/class/msc/Source/usbh_msc_scsi.c | 0 .../host/core/Include/usbh_core.h | 0 .../host/core/Include/usbh_enum.h | 0 .../host/core/Include/usbh_pipe.h | 0 .../host/core/Include/usbh_transc.h | 0 .../host/core/Source/usbh_core.c | 0 .../host/core/Source/usbh_enum.c | 0 .../host/core/Source/usbh_pipe.c | 0 .../host/core/Source/usbh_transc.c | 0 .../ustd/class/cdc/usb_cdc.h | 0 .../ustd/class/hid/usb_hid.h | 0 .../ustd/class/msc/msc_bbb.h | 0 .../ustd/class/msc/msc_scsi.h | 0 .../ustd/class/msc/usb_msc.h | 0 .../ustd/common/usb_ch9_std.h | 0 .../GD32F4xx_Firmware_Library/SConscript | 1 - bsp/gd32/{ => arm}/libraries/Kconfig | 0 .../{ => arm}/libraries/gd32_drivers/Kconfig | 0 .../libraries/gd32_drivers/SConscript | 4 + bsp/gd32/arm/libraries/gd32_drivers/drv_adc.c | 206 + bsp/gd32/arm/libraries/gd32_drivers/drv_adc.h | 37 + .../libraries/gd32_drivers/drv_gpio.c | 211 +- .../libraries/gd32_drivers/drv_gpio.h | 10 +- .../libraries/gd32_drivers/drv_hwtimer.c | 0 .../libraries/gd32_drivers/drv_rtc.c | 0 .../libraries/gd32_drivers/drv_soft_i2c.c | 2 +- .../libraries/gd32_drivers/drv_soft_i2c.h | 0 .../libraries/gd32_drivers/drv_spi.c | 110 +- .../libraries/gd32_drivers/drv_spi.h | 5 - .../libraries/gd32_drivers/drv_spi_flash.c | 0 .../libraries/gd32_drivers/drv_usart.c | 4 +- .../libraries/gd32_drivers/drv_usart.h | 0 .../libraries/gd32_drivers/drv_wdt.c | 0 bsp/gd32/{ => arm}/tools/sdk_dist.py | 0 .../figures/menuconfig_gd32407v-start.png | Bin 27476 -> 0 bytes bsp/gd32/docs/figures/scons.png | Bin 14676 -> 0 bytes bsp/gd32/docs/figures/scons_dist.png | Bin 15200 -> 0 bytes bsp/gd32/docs/figures/scons_mdk5.png | Bin 19725 -> 0 bytes bsp/gd32/docs/figures/scons_success.png | Bin 13453 -> 0 bytes bsp/gd32/docs/figures/update.png | Bin 31611 -> 0 bytes bsp/gd32/gd32105r-start/project.uvoptx | 180 - bsp/gd32/gd32107c-eval/project.uvoptx | 180 - bsp/gd32/gd32205r-start/Kconfig | 21 - bsp/gd32/gd32205r-start/project.uvoptx | 180 - bsp/gd32/gd32303e-eval/Kconfig | 21 - bsp/gd32/gd32303e-eval/project.uvoptx | 180 - bsp/gd32/gd32305r-start/Kconfig | 21 - bsp/gd32/gd32305r-start/project.uvoptx | 180 - bsp/gd32/gd32407v-start/Kconfig | 21 - bsp/gd32/gd32407v-start/project.uvoptx | 180 - bsp/gd32/gd32450i-eval/Kconfig | 21 - bsp/gd32/gd32450i-eval/README.md | 94 - bsp/gd32/gd32450i-eval/board/board.h | 47 - bsp/gd32/gd32450i-eval/project.uvoptx | 190 - bsp/gd32/gd32450i-eval/project.uvprojx | 754 - bsp/gd32/gd32450i-eval/template.uvoptx | 190 - bsp/gd32/gd32450z-eval/.config | 671 - bsp/gd32/gd32450z-eval/Kconfig | 21 - bsp/gd32/gd32450z-eval/SConstruct | 60 - bsp/gd32/gd32450z-eval/board/SConscript | 28 - .../gd32450z-eval/board/gd32f4xx_libopt.h | 45 - bsp/gd32/gd32450z-eval/project.uvoptx | 190 - bsp/gd32/gd32450z-eval/rtconfig.h | 196 - bsp/gd32/libraries/gd32_drivers/drv_adc.c | 154 - bsp/gd32/risc-v/README.md | 20 + .../risc-v/docs/GD32_RISC-V系列BSP制作教程.md | 612 + .../GD32_RISC-V系列BSP外设驱动使用教程.md | 77 + .../risc-v/docs/GD32_RISC-V系列驱动介绍.md | 59 + bsp/gd32/risc-v/docs/figures/GD32VF103xB.png | Bin 0 -> 65143 bytes bsp/gd32/risc-v/docs/figures/Peripheral.png | Bin 0 -> 37871 bytes bsp/gd32/risc-v/docs/figures/UART1.png | Bin 0 -> 48195 bytes bsp/gd32/risc-v/docs/figures/config1.png | Bin 0 -> 52454 bytes bsp/gd32/risc-v/docs/figures/config2.png | Bin 0 -> 48578 bytes bsp/gd32/risc-v/docs/figures/frame.png | Bin 0 -> 39871 bytes bsp/gd32/risc-v/docs/figures/gcc.png | Bin 0 -> 65633 bytes .../figures/menuconfig_gd32vf103v-eval.png | Bin 0 -> 23926 bytes bsp/gd32/risc-v/docs/figures/rt_device.png | Bin 0 -> 17656 bytes bsp/gd32/risc-v/docs/figures/run.png | Bin 0 -> 6220 bytes bsp/gd32/risc-v/docs/figures/run_flash.png | Bin 0 -> 17134 bytes bsp/gd32/risc-v/docs/figures/save.png | Bin 0 -> 48043 bytes bsp/gd32/risc-v/docs/figures/scons.png | Bin 0 -> 36042 bytes .../risc-v/docs/figures/scons_success.png | Bin 0 -> 20344 bytes bsp/gd32/risc-v/docs/figures/start.png | Bin 0 -> 12036 bytes bsp/gd32/risc-v/docs/figures/svc_download.png | Bin 0 -> 22792 bytes .../docs/figures/svc_download_success.png | Bin 0 -> 77627 bytes bsp/gd32/risc-v/docs/figures/svc_run_task.png | Bin 0 -> 29432 bytes bsp/gd32/risc-v/docs/figures/update.png | Bin 0 -> 29592 bytes bsp/gd32/risc-v/docs/figures/vsc.png | Bin 0 -> 15918 bytes bsp/gd32/risc-v/gd32vf103r-start/.config | 686 + bsp/gd32/risc-v/gd32vf103r-start/Kconfig | 21 + .../gd32vf103r-start}/README.md | 31 +- bsp/gd32/risc-v/gd32vf103r-start/SConscript | 16 + bsp/gd32/risc-v/gd32vf103r-start/SConstruct | 57 + .../gd32vf103r-start/applications/SConscript | 11 + .../gd32vf103r-start/applications/main.c | 35 + .../gd32vf103r-start}/board/Kconfig | 100 +- .../risc-v/gd32vf103r-start/board/SConscript | 26 + .../risc-v/gd32vf103r-start/board/board.c | 80 + .../risc-v/gd32vf103r-start/board/board.h | 24 + .../gd32vf103r-start/board/gd32vf103_libopt.h | 62 + .../risc-v/gd32vf103r-start/figures/board.jpg | Bin 0 -> 119055 bytes bsp/gd32/risc-v/gd32vf103r-start/rtconfig.h | 195 + bsp/gd32/risc-v/gd32vf103r-start/rtconfig.py | 74 + bsp/gd32/risc-v/gd32vf103v-eval/.config | 686 + bsp/gd32/risc-v/gd32vf103v-eval/Kconfig | 21 + bsp/gd32/risc-v/gd32vf103v-eval/README.md | 105 + bsp/gd32/risc-v/gd32vf103v-eval/SConscript | 16 + bsp/gd32/risc-v/gd32vf103v-eval/SConstruct | 57 + .../gd32vf103v-eval/applications/SConscript | 11 + .../gd32vf103v-eval/applications/main.c | 35 + .../gd32vf103v-eval}/board/Kconfig | 106 +- .../risc-v/gd32vf103v-eval/board/SConscript | 26 + bsp/gd32/risc-v/gd32vf103v-eval/board/board.c | 80 + bsp/gd32/risc-v/gd32vf103v-eval/board/board.h | 24 + .../gd32vf103v-eval/board/gd32vf103_libopt.h | 62 + .../risc-v/gd32vf103v-eval/figures/board.jpg | Bin 0 -> 115432 bytes bsp/gd32/risc-v/gd32vf103v-eval/rtconfig.h | 196 + bsp/gd32/risc-v/gd32vf103v-eval/rtconfig.py | 74 + .../Include/gd32vf103_adc.h | 397 + .../Include/gd32vf103_bkp.h | 228 + .../Include/gd32vf103_can.h | 753 + .../Include/gd32vf103_crc.h | 78 + .../Include/gd32vf103_dac.h | 243 + .../Include/gd32vf103_dbg.h | 110 + .../Include/gd32vf103_dma.h | 284 + .../Include/gd32vf103_eclic.h | 67 + .../Include/gd32vf103_exmc.h | 127 + .../Include/gd32vf103_exti.h | 246 + .../Include/gd32vf103_fmc.h | 313 + .../Include/gd32vf103_fwdgt.h | 105 + .../Include/gd32vf103_gpio.h | 422 + .../Include/gd32vf103_i2c.h | 344 + .../Include/gd32vf103_pmu.h | 126 + .../Include/gd32vf103_rcu.h | 721 + .../Include/gd32vf103_rtc.h | 149 + .../Include/gd32vf103_spi.h | 342 + .../Include/gd32vf103_timer.h | 723 + .../Include/gd32vf103_usart.h | 376 + .../Include/gd32vf103_wwdgt.h | 87 + .../Source/gd32vf103_adc.c | 993 + .../Source/gd32vf103_bkp.c | 293 + .../Source/gd32vf103_can.c | 1018 + .../Source/gd32vf103_crc.c | 128 + .../Source/gd32vf103_dac.c | 538 + .../Source/gd32vf103_dbg.c | 111 + .../Source/gd32vf103_dma.c | 733 + .../Source/gd32vf103_eclic.c | 129 + .../Source/gd32vf103_eclic.s | 21240 +++++++++++++ .../Source/gd32vf103_exmc.c | 165 + .../Source/gd32vf103_exti.c | 255 + .../Source/gd32vf103_exti.s | 17780 +++++++++++ .../Source/gd32vf103_fmc.c | 648 + .../Source/gd32vf103_fwdgt.c | 152 + .../Source/gd32vf103_gpio.c | 503 + .../Source/gd32vf103_gpio.s | 19001 +++++++++++ .../Source/gd32vf103_i2c.c | 728 + .../Source/gd32vf103_pmu.c | 271 + .../Source/gd32vf103_rcu.c | 1111 + .../Source/gd32vf103_rcu.s | 21714 +++++++++++++ .../Source/gd32vf103_rtc.c | 274 + .../Source/gd32vf103_spi.c | 767 + .../Source/gd32vf103_timer.c | 1967 ++ .../Source/gd32vf103_usart.c | 766 + .../Source/gd32vf103_usart.s | 20500 ++++++++++++ .../Source/gd32vf103_wwdgt.c | 147 + .../GD32VF103_standard_peripheral/gd32vf103.h | 242 + .../system_gd32vf103.c | 1007 + .../system_gd32vf103.h | 65 + .../system_gd32vf103.s | 17608 ++++++++++ .../device/class/audio/Include/audio_core.h | 300 + .../class/audio/Include/audio_out_itf.h | 76 + .../device/class/audio/Source/audio_core.c | 809 + .../device/class/audio/Source/audio_out_itf.c | 229 + .../device/class/cdc/Include/cdc_acm_core.h | 66 + .../device/class/cdc/Source/cdc_acm_core.c | 531 + .../device/class/dfu/Include/dfu_core.h | 176 + .../device/class/dfu/Include/dfu_mal.h | 84 + .../device/class/dfu/Source/dfu_core.c | 652 + .../device/class/dfu/Source/dfu_mal.c | 233 + .../class/hid/Include/custom_hid_core.h | 70 + .../class/hid/Include/standard_hid_core.h | 68 + .../device/class/hid/Source/custom_hid_core.c | 489 + .../class/hid/Source/standard_hid_core.c | 403 + .../device/class/iap/Include/usb_iap_core.h | 84 + .../device/class/iap/Source/usb_iap_core.c | 562 + .../device/class/msc/Include/usbd_msc_bbb.h | 101 + .../device/class/msc/Include/usbd_msc_core.h | 59 + .../device/class/msc/Include/usbd_msc_data.h | 49 + .../device/class/msc/Include/usbd_msc_mem.h | 59 + .../device/class/msc/Include/usbd_msc_scsi.h | 50 + .../device/class/msc/Source/usbd_msc_bbb.c | 287 + .../device/class/msc/Source/usbd_msc_core.c | 319 + .../device/class/msc/Source/usbd_msc_data.c | 73 + .../device/class/msc/Source/usbd_msc_scsi.c | 686 + .../class/printer/Include/printer_core.h | 78 + .../class/printer/Source/printer_core.c | 309 + .../device/core/Include/usbd_core.h | 103 + .../device/core/Include/usbd_enum.h | 105 + .../device/core/Include/usbd_transc.h | 56 + .../device/core/Source/usbd_core.c | 320 + .../device/core/Source/usbd_enum.c | 764 + .../device/core/Source/usbd_transc.c | 265 + .../driver/Include/drv_usb_core.h | 163 + .../driver/Include/drv_usb_dev.h | 300 + .../driver/Include/drv_usb_host.h | 193 + .../driver/Include/drv_usb_hw.h | 69 + .../driver/Include/drv_usb_regs.h | 657 + .../driver/Include/drv_usbd_int.h | 45 + .../driver/Include/drv_usbh_int.h | 56 + .../driver/Source/drv_usb_core.c | 343 + .../driver/Source/drv_usb_dev.c | 612 + .../driver/Source/drv_usb_host.c | 452 + .../driver/Source/drv_usbd_int.c | 489 + .../driver/Source/drv_usbh_int.c | 622 + .../host/class/hid/Include/usbh_hid_core.h | 212 + .../host/class/hid/Include/usbh_hid_keybd.h | 303 + .../host/class/hid/Include/usbh_hid_mouse.h | 59 + .../host/class/hid/Include/usbh_hid_parser.h | 61 + .../host/class/hid/Include/usbh_hid_usage.h | 141 + .../host/class/hid/Source/usbh_hid_core.c | 675 + .../host/class/hid/Source/usbh_hid_keybd.c | 399 + .../host/class/hid/Source/usbh_hid_mouse.c | 216 + .../host/class/hid/Source/usbh_hid_parser.c | 148 + .../host/class/msc/Include/usbh_msc_bbb.h | 150 + .../host/class/msc/Include/usbh_msc_core.h | 124 + .../host/class/msc/Include/usbh_msc_scsi.h | 100 + .../host/class/msc/Source/usbh_msc_bbb.c | 362 + .../host/class/msc/Source/usbh_msc_core.c | 562 + .../host/class/msc/Source/usbh_msc_fatfs.c | 233 + .../host/class/msc/Source/usbh_msc_scsi.c | 397 + .../host/core/Include/usbh_core.h | 274 + .../host/core/Include/usbh_enum.h | 71 + .../host/core/Include/usbh_pipe.h | 100 + .../host/core/Include/usbh_transc.h | 51 + .../host/core/Source/usbh_core.c | 650 + .../host/core/Source/usbh_enum.c | 693 + .../host/core/Source/usbh_pipe.c | 174 + .../host/core/Source/usbh_transc.c | 370 + .../ustd/class/cdc/usb_cdc.h | 180 + .../ustd/class/hid/usb_hid.h | 83 + .../ustd/class/msc/msc_bbb.h | 69 + .../ustd/class/msc/msc_scsi.h | 117 + .../ustd/class/msc/usb_msc.h | 68 + .../ustd/common/usb_ch9_std.h | 248 + .../RISCV/drivers/n200_eclic.h | 46 + .../RISCV/drivers/n200_func.c | 424 + .../RISCV/drivers/n200_func.h | 105 + .../RISCV/drivers/n200_func.s | 26445 ++++++++++++++++ .../RISCV/drivers/n200_timer.h | 18 + .../RISCV/drivers/riscv_bits.h | 36 + .../RISCV/drivers/riscv_const.h | 18 + .../RISCV/drivers/riscv_encoding.h | 1362 + .../RISCV/env_Eclipse/GD32VF103x4.lds | 200 + .../RISCV/env_Eclipse/GD32VF103x6.lds | 200 + .../RISCV/env_Eclipse/GD32VF103x8.lds | 200 + .../RISCV/env_Eclipse/GD32VF103xB.lds | 199 + .../RISCV/env_Eclipse/entry.S | 286 + .../RISCV/env_Eclipse/handlers.c | 32 + .../RISCV/env_Eclipse/handlers.s | 9542 ++++++ .../RISCV/env_Eclipse/init.c | 34 + .../RISCV/env_Eclipse/init.s | 23058 ++++++++++++++ .../RISCV/env_Eclipse/start.S | 258 + .../RISCV/env_Eclipse/your_printf.c | 5 + .../RISCV/env_Eclipse/your_printf.s | 1885 ++ .../RISCV/env_IAR/compiler.h | 20 + .../RISCV/env_IAR/low_level_init.c | 238 + .../RISCV/stubs/_exit.c | 17 + .../RISCV/stubs/close.c | 9 + .../RISCV/stubs/fstat.c | 16 + .../RISCV/stubs/isatty.c | 11 + .../RISCV/stubs/lseek.c | 14 + .../RISCV/stubs/read.c | 13 + .../RISCV/stubs/sbrk.c | 16 + .../RISCV/stubs/stub.h | 18 + .../RISCV/stubs/write.c | 72 + .../RISCV/stubs/write_hex.c | 18 + .../RISCV/tools/openocd_upload.sh | 5 + .../GD32VF103_Firmware_Library/SConscript | 61 + bsp/gd32/risc-v/libraries/Kconfig | 8 + .../risc-v/libraries/gd32_drivers/Kconfig | 6 + .../risc-v/libraries/gd32_drivers/SConscript | 52 + .../risc-v/libraries/gd32_drivers/drv_adc.c | 192 + .../risc-v/libraries/gd32_drivers/drv_adc.h | 37 + .../risc-v/libraries/gd32_drivers/drv_gpio.c | 574 + .../risc-v/libraries/gd32_drivers/drv_gpio.h | 65 + .../libraries/gd32_drivers/drv_soft_i2c.c | 201 + .../libraries/gd32_drivers/drv_soft_i2c.h | 78 + .../risc-v/libraries/gd32_drivers/drv_spi.c | 347 + .../risc-v/libraries/gd32_drivers/drv_spi.h | 46 + .../risc-v/libraries/gd32_drivers/drv_usart.c | 448 + .../risc-v/libraries/gd32_drivers/drv_usart.h | 45 + .../tools/interface/openocd_gdlink_riscv.cfg | 43 + bsp/gd32/risc-v/tools/sdk_dist.py | 37 + 1280 files changed, 329414 insertions(+), 7658 deletions(-) create mode 100644 bsp/gd32/arm/README.md rename bsp/gd32/{docs/GD32系列BSP制作教程.md => arm/docs/GD32_ARM系列BSP制作教程.md} (88%) rename bsp/gd32/{docs/GD32系列BSP外设驱动使用教程.md => arm/docs/GD32_ARM系列BSP外设驱动使用教程.md} (92%) rename bsp/gd32/{docs/GD32系列驱动介绍.md => arm/docs/GD32_ARM系列驱动介绍.md} (99%) rename bsp/gd32/{ => arm}/docs/figures/CMSIS-DAP_Debugger.png (100%) rename bsp/gd32/{ => arm}/docs/figures/FMC.png (100%) rename bsp/gd32/{ => arm}/docs/figures/Gigadevice.png (100%) rename bsp/gd32/{ => arm}/docs/figures/MDK_Build.png (100%) rename bsp/gd32/{ => arm}/docs/figures/MDK_Build_Success.png (100%) rename bsp/gd32/{ => arm}/docs/figures/Peripheral.png (100%) rename bsp/gd32/{ => arm}/docs/figures/UART2.png (100%) rename bsp/gd32/{ => arm}/docs/figures/chip.png (100%) rename bsp/gd32/{ => arm}/docs/figures/com_print.png (100%) rename bsp/gd32/{ => arm}/docs/figures/complise.png (100%) rename bsp/gd32/{ => arm}/docs/figures/config1.png (100%) rename bsp/gd32/{ => arm}/docs/figures/config2.png (100%) rename bsp/gd32/{ => arm}/docs/figures/debug.png (100%) rename bsp/gd32/{ => arm}/docs/figures/disable_lwip.png (100%) rename bsp/gd32/{ => arm}/docs/figures/disable_net.png (100%) rename bsp/gd32/{ => arm}/docs/figures/disable_socket.png (100%) rename bsp/gd32/{ => arm}/docs/figures/dowmload.png (100%) rename bsp/gd32/{ => arm}/docs/figures/download_success.png (100%) rename bsp/gd32/{ => arm}/docs/figures/frame.png (100%) rename bsp/gd32/{ => arm}/docs/figures/gdlink_debug.png (100%) rename bsp/gd32/{ => arm}/docs/figures/gdlink_download.png (100%) rename bsp/gd32/{ => arm}/docs/figures/import_rt-thread_studio.png (100%) rename bsp/gd32/{ => arm}/docs/figures/install_pack.png (100%) rename bsp/gd32/{ => arm}/docs/figures/mdk_keil.png (100%) create mode 100644 bsp/gd32/arm/docs/figures/menuconfig_gd32407v-start.png rename bsp/gd32/{ => arm}/docs/figures/pack_finish.png (100%) rename bsp/gd32/{ => arm}/docs/figures/rename.png (100%) rename bsp/gd32/{ => arm}/docs/figures/rt-thread_studio.png (100%) rename bsp/gd32/{ => arm}/docs/figures/rt_device.png (100%) rename bsp/gd32/{ => arm}/docs/figures/run_flash.png (100%) rename bsp/gd32/{ => arm}/docs/figures/save.png (100%) create mode 100644 bsp/gd32/arm/docs/figures/scons.png create mode 100644 bsp/gd32/arm/docs/figures/scons_dist.png create mode 100644 bsp/gd32/arm/docs/figures/scons_mdk5.png create mode 100644 bsp/gd32/arm/docs/figures/scons_success.png rename bsp/gd32/{ => arm}/docs/figures/setting1.png (100%) rename bsp/gd32/{ => arm}/docs/figures/setting2.png (100%) rename bsp/gd32/{ => arm}/docs/figures/storage.png (100%) create mode 100644 bsp/gd32/arm/docs/figures/update.png rename bsp/gd32/{ => arm}/gd32103c-eval/.config (96%) rename bsp/gd32/{ => arm}/gd32103c-eval/Kconfig (92%) rename bsp/gd32/{ => arm}/gd32103c-eval/README.md (77%) rename bsp/gd32/{ => arm}/gd32103c-eval/SConscript (100%) rename bsp/gd32/{gd32105c-eval => arm/gd32103c-eval}/SConstruct (94%) rename bsp/gd32/{ => arm}/gd32103c-eval/applications/SConscript (100%) rename bsp/gd32/{ => arm}/gd32103c-eval/applications/main.c (91%) create mode 100644 bsp/gd32/arm/gd32103c-eval/board/Kconfig rename bsp/gd32/{ => arm}/gd32103c-eval/board/SConscript (84%) rename bsp/gd32/{gd32105r-start => arm/gd32103c-eval}/board/board.c (100%) rename bsp/gd32/{ => arm}/gd32103c-eval/board/board.h (95%) rename bsp/gd32/{ => arm}/gd32103c-eval/board/gd32f10x_libopt.h (100%) rename bsp/gd32/{ => arm}/gd32103c-eval/board/linker_scripts/link.icf (100%) rename bsp/gd32/{ => arm}/gd32103c-eval/board/linker_scripts/link.ld (98%) rename bsp/gd32/{ => arm}/gd32103c-eval/board/linker_scripts/link.sct (100%) create mode 100644 bsp/gd32/arm/gd32103c-eval/figures/board.jpg create mode 100644 bsp/gd32/arm/gd32103c-eval/project.ewd create mode 100644 bsp/gd32/arm/gd32103c-eval/project.ewp create mode 100644 bsp/gd32/arm/gd32103c-eval/project.eww create mode 100644 bsp/gd32/arm/gd32103c-eval/project.uvoptx rename bsp/gd32/{ => arm}/gd32103c-eval/project.uvproj (98%) rename bsp/gd32/{ => arm}/gd32103c-eval/project.uvprojx (75%) rename bsp/gd32/{ => arm}/gd32103c-eval/rtconfig.h (95%) rename bsp/gd32/{gd32105c-eval => arm/gd32103c-eval}/rtconfig.py (98%) create mode 100644 bsp/gd32/arm/gd32103c-eval/template.ewp rename bsp/gd32/{gd32105c-eval => arm/gd32103c-eval}/template.uvoptx (96%) rename bsp/gd32/{ => arm}/gd32103c-eval/template.uvproj (98%) rename bsp/gd32/{ => arm}/gd32103c-eval/template.uvprojx (97%) rename bsp/gd32/{ => arm}/gd32105c-eval/.config (96%) rename bsp/gd32/{gd32105r-start => arm/gd32105c-eval}/Kconfig (92%) create mode 100644 bsp/gd32/arm/gd32105c-eval/README.md rename bsp/gd32/{ => arm}/gd32105c-eval/SConscript (100%) rename bsp/gd32/{gd32105r-start => arm/gd32105c-eval}/SConstruct (94%) rename bsp/gd32/{ => arm}/gd32105c-eval/applications/SConscript (100%) rename bsp/gd32/{gd32107c-eval => arm/gd32105c-eval}/applications/main.c (77%) rename bsp/gd32/{ => arm}/gd32105c-eval/board/Kconfig (61%) rename bsp/gd32/{gd32105r-start => arm/gd32105c-eval}/board/SConscript (84%) rename bsp/gd32/{gd32305r-start => arm/gd32105c-eval}/board/board.c (100%) rename bsp/gd32/{ => arm}/gd32105c-eval/board/board.h (95%) rename bsp/gd32/{ => arm}/gd32105c-eval/board/gd32f10x_libopt.h (100%) rename bsp/gd32/{ => arm}/gd32105c-eval/board/linker_scripts/link.icf (100%) rename bsp/gd32/{gd32105r-start => arm/gd32105c-eval}/board/linker_scripts/link.ld (98%) rename bsp/gd32/{ => arm}/gd32105c-eval/board/linker_scripts/link.sct (100%) rename bsp/gd32/{ => arm}/gd32105c-eval/figures/board.jpg (100%) create mode 100644 bsp/gd32/arm/gd32105c-eval/project.ewd create mode 100644 bsp/gd32/arm/gd32105c-eval/project.ewp create mode 100644 bsp/gd32/arm/gd32105c-eval/project.eww create mode 100644 bsp/gd32/arm/gd32105c-eval/project.uvoptx rename bsp/gd32/{ => arm}/gd32105c-eval/project.uvproj (98%) rename bsp/gd32/{ => arm}/gd32105c-eval/project.uvprojx (76%) rename bsp/gd32/{ => arm}/gd32105c-eval/rtconfig.h (95%) rename bsp/gd32/{gd32205r-start => arm/gd32105c-eval}/rtconfig.py (98%) create mode 100644 bsp/gd32/arm/gd32105c-eval/template.ewp rename bsp/gd32/{gd32407v-start => arm/gd32105c-eval}/template.uvoptx (87%) rename bsp/gd32/{ => arm}/gd32105c-eval/template.uvproj (98%) rename bsp/gd32/{ => arm}/gd32105c-eval/template.uvprojx (97%) rename bsp/gd32/{ => arm}/gd32105r-start/.config (96%) rename bsp/gd32/{gd32107c-eval => arm/gd32105r-start}/Kconfig (92%) rename bsp/gd32/{ => arm}/gd32105r-start/README.md (84%) rename bsp/gd32/{ => arm}/gd32105r-start/SConscript (100%) rename bsp/gd32/{gd32103c-eval => arm/gd32105r-start}/SConstruct (94%) rename bsp/gd32/{ => arm}/gd32105r-start/applications/SConscript (100%) rename bsp/gd32/{ => arm}/gd32105r-start/applications/main.c (100%) create mode 100644 bsp/gd32/arm/gd32105r-start/board/Kconfig rename bsp/gd32/{gd32105c-eval => arm/gd32105r-start}/board/SConscript (84%) rename bsp/gd32/{gd32107c-eval => arm/gd32105r-start}/board/board.c (96%) rename bsp/gd32/{ => arm}/gd32105r-start/board/board.h (100%) rename bsp/gd32/{ => arm}/gd32105r-start/board/gd32f10x_libopt.h (100%) rename bsp/gd32/{ => arm}/gd32105r-start/board/linker_scripts/link.icf (100%) rename bsp/gd32/{gd32107c-eval => arm/gd32105r-start}/board/linker_scripts/link.ld (98%) rename bsp/gd32/{ => arm}/gd32105r-start/board/linker_scripts/link.sct (100%) rename bsp/gd32/{ => arm}/gd32105r-start/figures/board.jpg (100%) create mode 100644 bsp/gd32/arm/gd32105r-start/project.ewd create mode 100644 bsp/gd32/arm/gd32105r-start/project.ewp create mode 100644 bsp/gd32/arm/gd32105r-start/project.eww create mode 100644 bsp/gd32/arm/gd32105r-start/project.uvoptx rename bsp/gd32/{ => arm}/gd32105r-start/project.uvproj (99%) rename bsp/gd32/{ => arm}/gd32105r-start/project.uvprojx (71%) rename bsp/gd32/{ => arm}/gd32105r-start/rtconfig.h (95%) rename bsp/gd32/{ => arm}/gd32105r-start/rtconfig.py (98%) create mode 100644 bsp/gd32/arm/gd32105r-start/template.ewp rename bsp/gd32/{ => arm}/gd32105r-start/template.uvoptx (99%) rename bsp/gd32/{ => arm}/gd32105r-start/template.uvproj (98%) rename bsp/gd32/{ => arm}/gd32105r-start/template.uvprojx (98%) rename bsp/gd32/{ => arm}/gd32107c-eval/.config (96%) rename bsp/gd32/{gd32105c-eval => arm/gd32107c-eval}/Kconfig (92%) rename bsp/gd32/{ => arm}/gd32107c-eval/README.md (79%) rename bsp/gd32/{ => arm}/gd32107c-eval/SConscript (100%) rename bsp/gd32/{ => arm}/gd32107c-eval/SConstruct (94%) rename bsp/gd32/{ => arm}/gd32107c-eval/applications/SConscript (100%) rename bsp/gd32/{gd32105c-eval => arm/gd32107c-eval}/applications/main.c (82%) rename bsp/gd32/{ => arm}/gd32107c-eval/board/Kconfig (61%) rename bsp/gd32/{ => arm}/gd32107c-eval/board/SConscript (84%) rename bsp/gd32/{gd32105c-eval => arm/gd32107c-eval}/board/board.c (96%) rename bsp/gd32/{ => arm}/gd32107c-eval/board/board.h (95%) rename bsp/gd32/{ => arm}/gd32107c-eval/board/gd32f10x_libopt.h (100%) rename bsp/gd32/{ => arm}/gd32107c-eval/board/linker_scripts/link.icf (100%) rename bsp/gd32/{gd32305r-start => arm/gd32107c-eval}/board/linker_scripts/link.ld (98%) rename bsp/gd32/{ => arm}/gd32107c-eval/board/linker_scripts/link.sct (100%) rename bsp/gd32/{ => arm}/gd32107c-eval/figures/board.jpg (100%) create mode 100644 bsp/gd32/arm/gd32107c-eval/project.ewd create mode 100644 bsp/gd32/arm/gd32107c-eval/project.ewp create mode 100644 bsp/gd32/arm/gd32107c-eval/project.eww rename bsp/gd32/{gd32103c-eval => arm/gd32107c-eval}/project.uvoptx (96%) rename bsp/gd32/{ => arm}/gd32107c-eval/project.uvproj (97%) rename bsp/gd32/{ => arm}/gd32107c-eval/project.uvprojx (85%) rename bsp/gd32/{ => arm}/gd32107c-eval/rtconfig.h (95%) rename bsp/gd32/{ => arm}/gd32107c-eval/rtconfig.py (98%) create mode 100644 bsp/gd32/arm/gd32107c-eval/template.ewp rename bsp/gd32/{gd32105c-eval/project.uvoptx => arm/gd32107c-eval/template.uvoptx} (96%) rename bsp/gd32/{ => arm}/gd32107c-eval/template.uvproj (98%) rename bsp/gd32/{ => arm}/gd32107c-eval/template.uvprojx (98%) rename bsp/gd32/{ => arm}/gd32205r-start/.config (96%) create mode 100644 bsp/gd32/arm/gd32205r-start/Kconfig rename bsp/gd32/{ => arm}/gd32205r-start/README.md (88%) rename bsp/gd32/{ => arm}/gd32205r-start/SConscript (100%) rename bsp/gd32/{ => arm}/gd32205r-start/SConstruct (94%) rename bsp/gd32/{ => arm}/gd32205r-start/applications/SConscript (100%) rename bsp/gd32/{ => arm}/gd32205r-start/applications/main.c (100%) rename bsp/gd32/{ => arm}/gd32205r-start/board/Kconfig (60%) rename bsp/gd32/{ => arm}/gd32205r-start/board/SConscript (84%) rename bsp/gd32/{ => arm}/gd32205r-start/board/board.c (100%) rename bsp/gd32/{ => arm}/gd32205r-start/board/board.h (100%) rename bsp/gd32/{ => arm}/gd32205r-start/board/gd32f20x_libopt.h (100%) rename bsp/gd32/{ => arm}/gd32205r-start/board/linker_scripts/link.icf (100%) rename bsp/gd32/{ => arm}/gd32205r-start/board/linker_scripts/link.ld (98%) rename bsp/gd32/{ => arm}/gd32205r-start/board/linker_scripts/link.sct (100%) rename bsp/gd32/{ => arm}/gd32205r-start/figures/board.jpg (100%) create mode 100644 bsp/gd32/arm/gd32205r-start/project.ewd create mode 100644 bsp/gd32/arm/gd32205r-start/project.ewp create mode 100644 bsp/gd32/arm/gd32205r-start/project.eww create mode 100644 bsp/gd32/arm/gd32205r-start/project.uvoptx rename bsp/gd32/{ => arm}/gd32205r-start/project.uvproj (99%) rename bsp/gd32/{ => arm}/gd32205r-start/project.uvprojx (76%) rename bsp/gd32/{ => arm}/gd32205r-start/rtconfig.h (95%) rename bsp/gd32/{gd32103c-eval => arm/gd32205r-start}/rtconfig.py (98%) create mode 100644 bsp/gd32/arm/gd32205r-start/template.ewp rename bsp/gd32/{ => arm}/gd32205r-start/template.uvoptx (96%) rename bsp/gd32/{ => arm}/gd32205r-start/template.uvproj (98%) rename bsp/gd32/{ => arm}/gd32205r-start/template.uvprojx (98%) rename bsp/gd32/{gd32450i-eval => arm/gd32207i-eval}/.config (96%) create mode 100644 bsp/gd32/arm/gd32207i-eval/Kconfig create mode 100644 bsp/gd32/arm/gd32207i-eval/README.md rename bsp/gd32/{gd32303e-eval => arm/gd32207i-eval}/SConscript (100%) create mode 100644 bsp/gd32/arm/gd32207i-eval/SConstruct rename bsp/gd32/{gd32303e-eval => arm/gd32207i-eval}/applications/SConscript (100%) rename bsp/gd32/{gd32450i-eval => arm/gd32207i-eval}/applications/main.c (74%) rename bsp/gd32/{gd32450i-eval => arm/gd32207i-eval}/board/Kconfig (59%) create mode 100644 bsp/gd32/arm/gd32207i-eval/board/SConscript rename bsp/gd32/{gd32450i-eval => arm/gd32207i-eval}/board/board.c (96%) create mode 100644 bsp/gd32/arm/gd32207i-eval/board/board.h create mode 100644 bsp/gd32/arm/gd32207i-eval/board/gd32f20x_libopt.h rename bsp/gd32/{gd32450i-eval => arm/gd32207i-eval}/board/linker_scripts/link.icf (100%) rename bsp/gd32/{gd32450z-eval => arm/gd32207i-eval}/board/linker_scripts/link.ld (96%) rename bsp/gd32/{gd32450i-eval => arm/gd32207i-eval}/board/linker_scripts/link.sct (100%) create mode 100644 bsp/gd32/arm/gd32207i-eval/figures/board.jpg create mode 100644 bsp/gd32/arm/gd32207i-eval/project.ewd create mode 100644 bsp/gd32/arm/gd32207i-eval/project.ewp create mode 100644 bsp/gd32/arm/gd32207i-eval/project.eww create mode 100644 bsp/gd32/arm/gd32207i-eval/project.uvoptx create mode 100644 bsp/gd32/arm/gd32207i-eval/project.uvproj rename bsp/gd32/{gd32450i-eval/project.uvproj => arm/gd32207i-eval/project.uvprojx} (69%) create mode 100644 bsp/gd32/arm/gd32207i-eval/rtconfig.h create mode 100644 bsp/gd32/arm/gd32207i-eval/rtconfig.py create mode 100644 bsp/gd32/arm/gd32207i-eval/template.ewp rename bsp/gd32/{gd32107c-eval => arm/gd32207i-eval}/template.uvoptx (97%) create mode 100644 bsp/gd32/arm/gd32207i-eval/template.uvproj create mode 100644 bsp/gd32/arm/gd32207i-eval/template.uvprojx create mode 100644 bsp/gd32/arm/gd32303e-eval/.config create mode 100644 bsp/gd32/arm/gd32303e-eval/Kconfig rename bsp/gd32/{ => arm}/gd32303e-eval/README.md (57%) rename bsp/gd32/{gd32305r-start => arm/gd32303e-eval}/SConscript (100%) rename bsp/gd32/{ => arm}/gd32303e-eval/SConstruct (94%) rename bsp/gd32/{gd32305r-start => arm/gd32303e-eval}/applications/SConscript (100%) rename bsp/gd32/{ => arm}/gd32303e-eval/applications/main.c (91%) rename bsp/gd32/{ => arm}/gd32303e-eval/board/Kconfig (60%) rename bsp/gd32/{ => arm}/gd32303e-eval/board/SConscript (84%) rename bsp/gd32/{ => arm}/gd32303e-eval/board/board.c (96%) rename bsp/gd32/{ => arm}/gd32303e-eval/board/board.h (95%) rename bsp/gd32/{ => arm}/gd32303e-eval/board/gd32f30x_libopt.h (100%) rename bsp/gd32/{ => arm}/gd32303e-eval/board/linker_scripts/link.icf (100%) rename bsp/gd32/{ => arm}/gd32303e-eval/board/linker_scripts/link.ld (100%) rename bsp/gd32/{ => arm}/gd32303e-eval/board/linker_scripts/link.sct (100%) create mode 100644 bsp/gd32/arm/gd32303e-eval/project.ewd create mode 100644 bsp/gd32/arm/gd32303e-eval/project.ewp create mode 100644 bsp/gd32/arm/gd32303e-eval/project.eww create mode 100644 bsp/gd32/arm/gd32303e-eval/project.uvoptx rename bsp/gd32/{ => arm}/gd32303e-eval/project.uvproj (98%) rename bsp/gd32/{ => arm}/gd32303e-eval/project.uvprojx (76%) rename bsp/gd32/{ => arm}/gd32303e-eval/rtconfig.h (95%) rename bsp/gd32/{ => arm}/gd32303e-eval/rtconfig.py (98%) create mode 100644 bsp/gd32/arm/gd32303e-eval/template.ewp rename bsp/gd32/{ => arm}/gd32303e-eval/template.uvoptx (96%) rename bsp/gd32/{ => arm}/gd32303e-eval/template.uvproj (98%) rename bsp/gd32/{ => arm}/gd32303e-eval/template.uvprojx (97%) rename bsp/gd32/{ => arm}/gd32305r-start/.config (96%) create mode 100644 bsp/gd32/arm/gd32305r-start/Kconfig rename bsp/gd32/{ => arm}/gd32305r-start/README.md (86%) rename bsp/gd32/{gd32407v-start => arm/gd32305r-start}/SConscript (100%) rename bsp/gd32/{ => arm}/gd32305r-start/SConstruct (94%) rename bsp/gd32/{gd32407v-start => arm/gd32305r-start}/applications/SConscript (100%) rename bsp/gd32/{ => arm}/gd32305r-start/applications/main.c (100%) rename bsp/gd32/{ => arm}/gd32305r-start/board/Kconfig (61%) rename bsp/gd32/{ => arm}/gd32305r-start/board/SConscript (84%) rename bsp/gd32/{gd32103c-eval => arm/gd32305r-start}/board/board.c (96%) rename bsp/gd32/{ => arm}/gd32305r-start/board/board.h (100%) rename bsp/gd32/{ => arm}/gd32305r-start/board/gd32f30x_libopt.h (100%) rename bsp/gd32/{ => arm}/gd32305r-start/board/linker_scripts/link.icf (100%) rename bsp/gd32/{gd32105c-eval => arm/gd32305r-start}/board/linker_scripts/link.ld (100%) rename bsp/gd32/{ => arm}/gd32305r-start/board/linker_scripts/link.sct (100%) rename bsp/gd32/{ => arm}/gd32305r-start/figures/board.jpg (100%) create mode 100644 bsp/gd32/arm/gd32305r-start/project.ewd create mode 100644 bsp/gd32/arm/gd32305r-start/project.ewp create mode 100644 bsp/gd32/arm/gd32305r-start/project.eww create mode 100644 bsp/gd32/arm/gd32305r-start/project.uvoptx rename bsp/gd32/{ => arm}/gd32305r-start/project.uvproj (98%) rename bsp/gd32/{ => arm}/gd32305r-start/project.uvprojx (76%) rename bsp/gd32/{ => arm}/gd32305r-start/rtconfig.h (95%) rename bsp/gd32/{ => arm}/gd32305r-start/rtconfig.py (98%) create mode 100644 bsp/gd32/arm/gd32305r-start/template.ewp rename bsp/gd32/{ => arm}/gd32305r-start/template.uvoptx (96%) rename bsp/gd32/{ => arm}/gd32305r-start/template.uvproj (98%) rename bsp/gd32/{ => arm}/gd32305r-start/template.uvprojx (98%) rename bsp/gd32/{gd32303e-eval => arm/gd32307e-start}/.config (96%) create mode 100644 bsp/gd32/arm/gd32307e-start/Kconfig rename bsp/gd32/{gd32407v-start => arm/gd32307e-start}/README.md (72%) rename bsp/gd32/{gd32450i-eval => arm/gd32307e-start}/SConscript (100%) create mode 100644 bsp/gd32/arm/gd32307e-start/SConstruct rename bsp/gd32/{gd32450i-eval => arm/gd32307e-start}/applications/SConscript (100%) create mode 100644 bsp/gd32/arm/gd32307e-start/applications/main.c create mode 100644 bsp/gd32/arm/gd32307e-start/board/Kconfig create mode 100644 bsp/gd32/arm/gd32307e-start/board/SConscript create mode 100644 bsp/gd32/arm/gd32307e-start/board/board.c create mode 100644 bsp/gd32/arm/gd32307e-start/board/board.h create mode 100644 bsp/gd32/arm/gd32307e-start/board/gd32f30x_libopt.h create mode 100644 bsp/gd32/arm/gd32307e-start/board/linker_scripts/link.icf create mode 100644 bsp/gd32/arm/gd32307e-start/board/linker_scripts/link.ld create mode 100644 bsp/gd32/arm/gd32307e-start/board/linker_scripts/link.sct create mode 100644 bsp/gd32/arm/gd32307e-start/figures/board.jpg create mode 100644 bsp/gd32/arm/gd32307e-start/project.ewd create mode 100644 bsp/gd32/arm/gd32307e-start/project.ewp create mode 100644 bsp/gd32/arm/gd32307e-start/project.eww create mode 100644 bsp/gd32/arm/gd32307e-start/project.uvoptx create mode 100644 bsp/gd32/arm/gd32307e-start/project.uvproj create mode 100644 bsp/gd32/arm/gd32307e-start/project.uvprojx create mode 100644 bsp/gd32/arm/gd32307e-start/rtconfig.h rename bsp/gd32/{gd32407v-start => arm/gd32307e-start}/rtconfig.py (98%) create mode 100644 bsp/gd32/arm/gd32307e-start/template.ewp rename bsp/gd32/{gd32103c-eval => arm/gd32307e-start}/template.uvoptx (97%) rename bsp/gd32/{gd32450i-eval => arm/gd32307e-start}/template.uvproj (75%) rename bsp/gd32/{gd32450i-eval => arm/gd32307e-start}/template.uvprojx (93%) rename bsp/gd32/{ => arm}/gd32407v-start/.config (96%) create mode 100644 bsp/gd32/arm/gd32407v-start/Kconfig create mode 100644 bsp/gd32/arm/gd32407v-start/README.md rename bsp/gd32/{gd32450z-eval => arm/gd32407v-start}/SConscript (100%) rename bsp/gd32/{ => arm}/gd32407v-start/SConstruct (94%) rename bsp/gd32/{gd32450z-eval => arm/gd32407v-start}/applications/SConscript (100%) rename bsp/gd32/{ => arm}/gd32407v-start/applications/main.c (100%) rename bsp/gd32/{ => arm}/gd32407v-start/board/Kconfig (62%) rename bsp/gd32/{ => arm}/gd32407v-start/board/SConscript (84%) rename bsp/gd32/{ => arm}/gd32407v-start/board/board.c (100%) rename bsp/gd32/{ => arm}/gd32407v-start/board/board.h (100%) rename bsp/gd32/{ => arm}/gd32407v-start/board/gd32f4xx_libopt.h (100%) rename bsp/gd32/{gd32450z-eval => arm/gd32407v-start}/board/linker_scripts/link.icf (88%) rename bsp/gd32/{ => arm}/gd32407v-start/board/linker_scripts/link.ld (99%) rename bsp/gd32/{ => arm}/gd32407v-start/board/linker_scripts/link.sct (100%) rename bsp/gd32/{ => arm}/gd32407v-start/figures/board.jpg (100%) create mode 100644 bsp/gd32/arm/gd32407v-start/project.ewd create mode 100644 bsp/gd32/arm/gd32407v-start/project.ewp create mode 100644 bsp/gd32/arm/gd32407v-start/project.ewt create mode 100644 bsp/gd32/arm/gd32407v-start/project.eww create mode 100644 bsp/gd32/arm/gd32407v-start/project.uvoptx rename bsp/gd32/{ => arm}/gd32407v-start/project.uvproj (99%) rename bsp/gd32/{ => arm}/gd32407v-start/project.uvprojx (76%) rename bsp/gd32/{ => arm}/gd32407v-start/rtconfig.h (95%) rename bsp/gd32/{gd32450i-eval => arm/gd32407v-start}/rtconfig.py (95%) create mode 100644 bsp/gd32/arm/gd32407v-start/template.ewp create mode 100644 bsp/gd32/arm/gd32407v-start/template.uvoptx rename bsp/gd32/{ => arm}/gd32407v-start/template.uvproj (98%) rename bsp/gd32/{ => arm}/gd32407v-start/template.uvprojx (98%) create mode 100644 bsp/gd32/arm/gd32450z-eval/Kconfig rename bsp/gd32/{ => arm}/gd32450z-eval/README.md (62%) create mode 100644 bsp/gd32/arm/gd32450z-eval/SConscript rename bsp/gd32/{gd32450i-eval => arm/gd32450z-eval}/SConstruct (94%) create mode 100644 bsp/gd32/arm/gd32450z-eval/applications/SConscript rename bsp/gd32/{ => arm}/gd32450z-eval/applications/main.c (91%) rename bsp/gd32/{ => arm}/gd32450z-eval/board/Kconfig (66%) rename bsp/gd32/{gd32450i-eval => arm/gd32450z-eval}/board/SConscript (84%) rename bsp/gd32/{ => arm}/gd32450z-eval/board/board.c (96%) rename bsp/gd32/{ => arm}/gd32450z-eval/board/board.h (95%) rename bsp/gd32/{gd32450i-eval => arm/gd32450z-eval}/board/gd32f4xx_libopt.h (100%) rename bsp/gd32/{gd32407v-start => arm/gd32450z-eval}/board/linker_scripts/link.icf (94%) rename bsp/gd32/{gd32450i-eval => arm/gd32450z-eval}/board/linker_scripts/link.ld (99%) rename bsp/gd32/{ => arm}/gd32450z-eval/board/linker_scripts/link.sct (100%) create mode 100644 bsp/gd32/arm/gd32450z-eval/project.ewd create mode 100644 bsp/gd32/arm/gd32450z-eval/project.ewp create mode 100644 bsp/gd32/arm/gd32450z-eval/project.eww create mode 100644 bsp/gd32/arm/gd32450z-eval/project.uvoptx rename bsp/gd32/{ => arm}/gd32450z-eval/project.uvproj (87%) rename bsp/gd32/{ => arm}/gd32450z-eval/project.uvprojx (76%) rename bsp/gd32/{gd32450i-eval => arm/gd32450z-eval}/rtconfig.h (98%) rename bsp/gd32/{ => arm}/gd32450z-eval/rtconfig.py (98%) create mode 100644 bsp/gd32/arm/gd32450z-eval/template.ewp rename bsp/gd32/{ => arm}/gd32450z-eval/template.uvoptx (96%) rename bsp/gd32/{ => arm}/gd32450z-eval/template.uvproj (99%) rename bsp/gd32/{ => arm}/gd32450z-eval/template.uvprojx (97%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Include/gd32f10x.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Include/system_gd32f10x.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_cl.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_hd.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_md.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_xd.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_cl.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_hd.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_md.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_xd.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_cl.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_hd.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_md.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_xd.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/system_gd32f10x.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/CMSIS/core_cm3.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/CMSIS/core_cmFunc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/CMSIS/core_cmInstr.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_adc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_bkp.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_can.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_crc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_dac.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_dbg.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_dma.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_enet.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_exmc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_exti.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_fmc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_fwdgt.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_gpio.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_i2c.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_misc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_pmu.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_rcu.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_rtc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_sdio.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_spi.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_timer.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_usart.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_wwdgt.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_adc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_bkp.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_can.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_crc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_dac.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_dbg.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_dma.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_enet.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_exmc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_exti.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_fmc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_fwdgt.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_gpio.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_i2c.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_misc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_pmu.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_rcu.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_rtc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_sdio.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_spi.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_timer.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_usart.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_wwdgt.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/audio/Include/audio_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/audio/Include/audio_out_itf.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/audio/Source/audio_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/audio/Source/audio_out_itf.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/cdc/Include/cdc_acm_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/cdc/Source/cdc_acm_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/dfu/Include/dfu_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/dfu/Source/dfu_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Include/custom_hid_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Include/standard_hid_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Include/usb_hid.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Source/custom_hid_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Source/standard_hid_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/iap/Include/usb_iap_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/iap/Source/usb_iap_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_bbb.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_data.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_mem.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_scsi.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Source/usbd_msc_bbb.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Source/usbd_msc_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Source/usbd_msc_data.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Source/usbd_msc_scsi.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/printer/Include/printer_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/printer/Source/printer_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usb_ch9_std.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usbd_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usbd_enum.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usbd_pwr.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usbd_transc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Source/usbd_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Source/usbd_enum.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Source/usbd_pwr.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Source/usbd_transc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Include/usbd_lld_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Include/usbd_lld_int.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Include/usbd_lld_regs.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Source/usbd_lld_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Source/usbd_lld_int.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/audio/Include/audio_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/audio/Include/audio_out_itf.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/audio/Source/audio_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/audio/Source/audio_out_itf.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/cdc/Include/cdc_acm_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/cdc/Source/cdc_acm_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/dfu/Include/dfu_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/dfu/Include/dfu_mal.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/dfu/Source/dfu_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/dfu/Source/dfu_mal.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/hid/Include/custom_hid_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/hid/Include/standard_hid_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/hid/Source/custom_hid_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/hid/Source/standard_hid_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/iap/Include/usb_iap_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/iap/Source/usb_iap_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_bbb.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_data.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_mem.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_scsi.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Source/usbd_msc_bbb.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Source/usbd_msc_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Source/usbd_msc_data.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Source/usbd_msc_scsi.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/printer/Include/printer_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/printer/Source/printer_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Include/usbd_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Include/usbd_enum.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Include/usbd_transc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Source/usbd_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Source/usbd_enum.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Source/usbd_transc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_dev.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_host.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_hw.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_regs.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usbd_int.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usbh_int.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usb_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usb_dev.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usb_host.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usbd_int.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usbh_int.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_keybd.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_mouse.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_parser.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_usage.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Source/usbh_hid_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Source/usbh_hid_keybd.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Source/usbh_hid_mouse.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Source/usbh_hid_parser.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Include/usbh_msc_bbb.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Include/usbh_msc_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Include/usbh_msc_scsi.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Source/usbh_msc_bbb.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Source/usbh_msc_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Source/usbh_msc_fatfs.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Source/usbh_msc_scsi.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Include/usbh_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Include/usbh_enum.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Include/usbh_pipe.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Include/usbh_transc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Source/usbh_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Source/usbh_enum.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Source/usbh_pipe.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Source/usbh_transc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/cdc/usb_cdc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/hid/usb_hid.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/msc/msc_bbb.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/msc/msc_scsi.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/msc/usb_msc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/common/usb_ch9_std.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F10x_Firmware_Library/SConscript (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Include/gd32f20x.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Include/system_gd32f20x.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/ARM/startup_gd32f20x_cl.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/GCC/startup_gd32f20x_cl.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/IAR/startup_gd32f20x_cl.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/system_gd32f20x.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/CMSIS/cmsis_armcc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/CMSIS/core_cm3.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/CMSIS/core_cmFunc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/CMSIS/core_cmInstr.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_adc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_bkp.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_can.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_cau.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_crc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_dac.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_dbg.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_dci.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_dma.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_enet.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_exmc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_exti.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_fmc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_fwdgt.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_gpio.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_hau.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_i2c.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_misc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_pmu.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_rcu.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_rtc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_sdio.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_spi.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_timer.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_tli.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_trng.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_usart.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_wwdgt.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_adc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_bkp.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_can.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_cau.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_cau_aes.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_cau_des.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_cau_tdes.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_crc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_dac.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_dbg.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_dci.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_dma.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_enet.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_exmc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_exti.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_fmc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_fwdgt.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_gpio.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_hau.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_hau_sha_md5.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_i2c.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_misc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_pmu.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_rcu.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_rtc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_sdio.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_spi.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_timer.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_tli.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_trng.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_usart.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_wwdgt.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/audio/Include/audio_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/audio/Include/audio_out_itf.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/audio/Source/audio_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/audio/Source/audio_out_itf.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/cdc/Include/cdc_acm_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/cdc/Source/cdc_acm_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/dfu/Include/dfu_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/dfu/Include/dfu_mal.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/dfu/Source/dfu_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/dfu/Source/dfu_mal.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/hid/Include/custom_hid_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/hid/Include/standard_hid_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/hid/Source/custom_hid_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/hid/Source/standard_hid_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/iap/Include/usb_iap_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/iap/Source/usb_iap_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_bbb.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_data.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_mem.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_scsi.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Source/usbd_msc_bbb.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Source/usbd_msc_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Source/usbd_msc_data.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Source/usbd_msc_scsi.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/printer/Include/printer_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/printer/Source/printer_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Include/usbd_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Include/usbd_enum.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Include/usbd_transc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Source/usbd_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Source/usbd_enum.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Source/usbd_transc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_dev.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_host.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_hw.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_regs.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usbd_int.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usbh_int.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usb_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usb_dev.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usb_host.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usbd_int.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usbh_int.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_keybd.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_mouse.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_parser.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_usage.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Source/usbh_hid_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Source/usbh_hid_keybd.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Source/usbh_hid_mouse.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Source/usbh_hid_parser.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Include/usbh_msc_bbb.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Include/usbh_msc_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Include/usbh_msc_scsi.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Source/usbh_msc_bbb.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Source/usbh_msc_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Source/usbh_msc_fatfs.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Source/usbh_msc_scsi.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Include/usbh_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Include/usbh_enum.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Include/usbh_pipe.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Include/usbh_transc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Source/usbh_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Source/usbh_enum.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Source/usbh_pipe.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Source/usbh_transc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/cdc/usb_cdc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/hid/usb_hid.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/msc/msc_bbb.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/msc/msc_scsi.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/msc/usb_msc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/common/usb_ch9_std.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F20x_Firmware_Library/SConscript (96%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Include/gd32f30x.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Include/system_gd32f30x.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/ARM/startup_gd32f30x_cl.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/ARM/startup_gd32f30x_hd.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/ARM/startup_gd32f30x_xd.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/GCC/startup_gd32f30x_cl.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/GCC/startup_gd32f30x_hd.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/GCC/startup_gd32f30x_xd.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/IAR/startup_gd32f30x_cl.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/IAR/startup_gd32f30x_hd.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/IAR/startup_gd32f30x_xd.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/system_gd32f30x.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/CMSIS/core_cm4.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/CMSIS/core_cm4_simd.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/CMSIS/core_cmFunc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/CMSIS/core_cmInstr.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_adc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_bkp.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_can.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_crc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_ctc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_dac.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_dbg.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_dma.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_enet.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_exmc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_exti.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_fmc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_fwdgt.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_gpio.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_i2c.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_misc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_pmu.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_rcu.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_rtc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_sdio.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_spi.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_timer.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_usart.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_wwdgt.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_adc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_bkp.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_can.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_crc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_ctc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_dac.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_dbg.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_dma.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_enet.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_exmc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_exti.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_fmc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_fwdgt.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_gpio.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_i2c.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_misc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_pmu.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_rcu.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_rtc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_sdio.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_spi.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_timer.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_usart.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_wwdgt.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/audio/Include/audio_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/audio/Include/audio_out_itf.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/audio/Source/audio_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/audio/Source/audio_out_itf.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/cdc/Include/cdc_acm_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/cdc/Source/cdc_acm_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/dfu/Include/dfu_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/dfu/Source/dfu_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Include/custom_hid_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Include/standard_hid_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Include/std_hid_mouse_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Include/usb_hid.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Source/custom_hid_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Source/standard_hid_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Source/std_hid_mouse_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/iap/Include/usb_iap_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/iap/Source/usb_iap_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_bbb.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_data.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_mem.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_scsi.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Source/usbd_msc_bbb.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Source/usbd_msc_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Source/usbd_msc_data.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Source/usbd_msc_scsi.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/printer/Include/printer_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/printer/Source/printer_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usb_ch9_std.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usbd_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usbd_enum.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usbd_pwr.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usbd_transc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Source/usbd_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Source/usbd_enum.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Source/usbd_pwr.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Source/usbd_transc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Include/usbd_lld_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Include/usbd_lld_int.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Include/usbd_lld_regs.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Source/usbd_lld_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Source/usbd_lld_int.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/audio/Include/audio_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/audio/Include/audio_out_itf.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/audio/Source/audio_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/audio/Source/audio_out_itf.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/cdc/Include/cdc_acm_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/cdc/Source/cdc_acm_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/dfu/Include/dfu_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/dfu/Include/dfu_mal.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/dfu/Source/dfu_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/dfu/Source/dfu_mal.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/hid/Include/custom_hid_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/hid/Include/standard_hid_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/hid/Source/custom_hid_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/hid/Source/standard_hid_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/iap/Include/usb_iap_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/iap/Source/usb_iap_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_bbb.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_data.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_mem.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_scsi.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Source/usbd_msc_bbb.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Source/usbd_msc_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Source/usbd_msc_data.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Source/usbd_msc_scsi.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/printer/Include/printer_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/printer/Source/printer_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Include/usbd_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Include/usbd_enum.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Include/usbd_transc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Source/usbd_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Source/usbd_enum.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Source/usbd_transc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_dev.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_host.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_hw.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_regs.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usbd_int.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usbh_int.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usb_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usb_dev.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usb_host.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usbd_int.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usbh_int.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_keybd.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_mouse.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_parser.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_usage.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Source/usbh_hid_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Source/usbh_hid_keybd.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Source/usbh_hid_mouse.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Source/usbh_hid_parser.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Include/usbh_msc_bbb.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Include/usbh_msc_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Include/usbh_msc_scsi.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Source/usbh_msc_bbb.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Source/usbh_msc_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Source/usbh_msc_fatfs.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Source/usbh_msc_scsi.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Include/usbh_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Include/usbh_enum.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Include/usbh_pipe.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Include/usbh_transc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Source/usbh_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Source/usbh_enum.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Source/usbh_pipe.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Source/usbh_transc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/cdc/usb_cdc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/hid/usb_hid.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/msc/msc_bbb.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/msc/msc_scsi.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/msc/usb_msc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/common/usb_ch9_std.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F30x_Firmware_Library/SConscript (96%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Include/gd32f4xx.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Include/system_gd32f4xx.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/ARM/startup_gd32f4xx.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/GCC/startup_gd32f4xx.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/IAR/startup_gd32f4xx.s (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/system_gd32f4xx.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/CMSIS/core_cm4.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/CMSIS/core_cm4_simd.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/CMSIS/core_cmFunc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/CMSIS/core_cmInstr.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_adc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_can.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_crc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_ctc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_dac.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_dbg.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_dci.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_dma.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_enet.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_exmc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_exti.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_fmc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_fwdgt.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_gpio.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_i2c.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_ipa.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_iref.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_misc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_pmu.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_rcu.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_rtc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_sdio.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_spi.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_syscfg.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_timer.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_tli.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_trng.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_usart.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_wwdgt.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_adc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_can.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_crc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_ctc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dac.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dbg.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dci.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dma.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_enet.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_exmc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_exti.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_fmc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_fwdgt.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_gpio.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_i2c.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_ipa.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_iref.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_misc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_pmu.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_rcu.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_rtc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_sdio.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_spi.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_syscfg.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_timer.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_tli.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_trng.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_usart.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_wwdgt.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/audio/Include/audio_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/audio/Include/audio_out_itf.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/audio/Source/audio_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/audio/Source/audio_out_itf.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/cdc/Include/cdc_acm_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/cdc/Source/cdc_acm_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/dfu/Include/dfu_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/dfu/Include/dfu_mal.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/dfu/Source/dfu_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/dfu/Source/dfu_mal.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/hid/Include/custom_hid_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/hid/Include/standard_hid_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/hid/Source/custom_hid_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/hid/Source/standard_hid_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/iap/Include/usb_iap_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/iap/Source/usb_iap_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_bbb.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_data.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_mem.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_scsi.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Source/usbd_msc_bbb.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Source/usbd_msc_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Source/usbd_msc_data.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Source/usbd_msc_scsi.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/printer/Include/printer_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/printer/Source/printer_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Include/usbd_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Include/usbd_enum.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Include/usbd_transc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Source/usbd_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Source/usbd_enum.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Source/usbd_transc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_dev.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_host.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_hw.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_regs.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usbd_int.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usbh_int.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usb_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usb_dev.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usb_host.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usbd_int.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usbh_int.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_keybd.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_mouse.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_parser.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_usage.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Source/usbh_hid_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Source/usbh_hid_keybd.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Source/usbh_hid_mouse.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Source/usbh_hid_parser.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Include/usbh_msc_bbb.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Include/usbh_msc_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Include/usbh_msc_scsi.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Source/usbh_msc_bbb.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Source/usbh_msc_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Source/usbh_msc_fatfs.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Source/usbh_msc_scsi.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Include/usbh_core.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Include/usbh_enum.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Include/usbh_pipe.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Include/usbh_transc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Source/usbh_core.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Source/usbh_enum.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Source/usbh_pipe.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Source/usbh_transc.c (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/cdc/usb_cdc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/hid/usb_hid.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/msc/msc_bbb.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/msc/msc_scsi.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/msc/usb_msc.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/common/usb_ch9_std.h (100%) rename bsp/gd32/{ => arm}/libraries/GD32F4xx_Firmware_Library/SConscript (96%) rename bsp/gd32/{ => arm}/libraries/Kconfig (100%) rename bsp/gd32/{ => arm}/libraries/gd32_drivers/Kconfig (100%) rename bsp/gd32/{ => arm}/libraries/gd32_drivers/SConscript (93%) create mode 100644 bsp/gd32/arm/libraries/gd32_drivers/drv_adc.c create mode 100644 bsp/gd32/arm/libraries/gd32_drivers/drv_adc.h rename bsp/gd32/{ => arm}/libraries/gd32_drivers/drv_gpio.c (84%) rename bsp/gd32/{ => arm}/libraries/gd32_drivers/drv_gpio.h (78%) rename bsp/gd32/{ => arm}/libraries/gd32_drivers/drv_hwtimer.c (100%) rename bsp/gd32/{ => arm}/libraries/gd32_drivers/drv_rtc.c (100%) rename bsp/gd32/{ => arm}/libraries/gd32_drivers/drv_soft_i2c.c (97%) rename bsp/gd32/{ => arm}/libraries/gd32_drivers/drv_soft_i2c.h (100%) rename bsp/gd32/{ => arm}/libraries/gd32_drivers/drv_spi.c (76%) rename bsp/gd32/{ => arm}/libraries/gd32_drivers/drv_spi.h (80%) rename bsp/gd32/{ => arm}/libraries/gd32_drivers/drv_spi_flash.c (100%) rename bsp/gd32/{ => arm}/libraries/gd32_drivers/drv_usart.c (99%) rename bsp/gd32/{ => arm}/libraries/gd32_drivers/drv_usart.h (100%) rename bsp/gd32/{ => arm}/libraries/gd32_drivers/drv_wdt.c (100%) rename bsp/gd32/{ => arm}/tools/sdk_dist.py (100%) delete mode 100644 bsp/gd32/docs/figures/menuconfig_gd32407v-start.png delete mode 100644 bsp/gd32/docs/figures/scons.png delete mode 100644 bsp/gd32/docs/figures/scons_dist.png delete mode 100644 bsp/gd32/docs/figures/scons_mdk5.png delete mode 100644 bsp/gd32/docs/figures/scons_success.png delete mode 100644 bsp/gd32/docs/figures/update.png delete mode 100644 bsp/gd32/gd32105r-start/project.uvoptx delete mode 100644 bsp/gd32/gd32107c-eval/project.uvoptx delete mode 100644 bsp/gd32/gd32205r-start/Kconfig delete mode 100644 bsp/gd32/gd32205r-start/project.uvoptx delete mode 100644 bsp/gd32/gd32303e-eval/Kconfig delete mode 100644 bsp/gd32/gd32303e-eval/project.uvoptx delete mode 100644 bsp/gd32/gd32305r-start/Kconfig delete mode 100644 bsp/gd32/gd32305r-start/project.uvoptx delete mode 100644 bsp/gd32/gd32407v-start/Kconfig delete mode 100644 bsp/gd32/gd32407v-start/project.uvoptx delete mode 100644 bsp/gd32/gd32450i-eval/Kconfig delete mode 100644 bsp/gd32/gd32450i-eval/README.md delete mode 100644 bsp/gd32/gd32450i-eval/board/board.h delete mode 100644 bsp/gd32/gd32450i-eval/project.uvoptx delete mode 100644 bsp/gd32/gd32450i-eval/project.uvprojx delete mode 100644 bsp/gd32/gd32450i-eval/template.uvoptx delete mode 100644 bsp/gd32/gd32450z-eval/.config delete mode 100644 bsp/gd32/gd32450z-eval/Kconfig delete mode 100644 bsp/gd32/gd32450z-eval/SConstruct delete mode 100644 bsp/gd32/gd32450z-eval/board/SConscript delete mode 100644 bsp/gd32/gd32450z-eval/board/gd32f4xx_libopt.h delete mode 100644 bsp/gd32/gd32450z-eval/project.uvoptx delete mode 100644 bsp/gd32/gd32450z-eval/rtconfig.h delete mode 100644 bsp/gd32/libraries/gd32_drivers/drv_adc.c create mode 100644 bsp/gd32/risc-v/README.md create mode 100644 bsp/gd32/risc-v/docs/GD32_RISC-V系列BSP制作教程.md create mode 100644 bsp/gd32/risc-v/docs/GD32_RISC-V系列BSP外设驱动使用教程.md create mode 100644 bsp/gd32/risc-v/docs/GD32_RISC-V系列驱动介绍.md create mode 100644 bsp/gd32/risc-v/docs/figures/GD32VF103xB.png create mode 100644 bsp/gd32/risc-v/docs/figures/Peripheral.png create mode 100644 bsp/gd32/risc-v/docs/figures/UART1.png create mode 100644 bsp/gd32/risc-v/docs/figures/config1.png create mode 100644 bsp/gd32/risc-v/docs/figures/config2.png create mode 100644 bsp/gd32/risc-v/docs/figures/frame.png create mode 100644 bsp/gd32/risc-v/docs/figures/gcc.png create mode 100644 bsp/gd32/risc-v/docs/figures/menuconfig_gd32vf103v-eval.png create mode 100644 bsp/gd32/risc-v/docs/figures/rt_device.png create mode 100644 bsp/gd32/risc-v/docs/figures/run.png create mode 100644 bsp/gd32/risc-v/docs/figures/run_flash.png create mode 100644 bsp/gd32/risc-v/docs/figures/save.png create mode 100644 bsp/gd32/risc-v/docs/figures/scons.png create mode 100644 bsp/gd32/risc-v/docs/figures/scons_success.png create mode 100644 bsp/gd32/risc-v/docs/figures/start.png create mode 100644 bsp/gd32/risc-v/docs/figures/svc_download.png create mode 100644 bsp/gd32/risc-v/docs/figures/svc_download_success.png create mode 100644 bsp/gd32/risc-v/docs/figures/svc_run_task.png create mode 100644 bsp/gd32/risc-v/docs/figures/update.png create mode 100644 bsp/gd32/risc-v/docs/figures/vsc.png create mode 100644 bsp/gd32/risc-v/gd32vf103r-start/.config create mode 100644 bsp/gd32/risc-v/gd32vf103r-start/Kconfig rename bsp/gd32/{gd32105c-eval => risc-v/gd32vf103r-start}/README.md (60%) create mode 100644 bsp/gd32/risc-v/gd32vf103r-start/SConscript create mode 100644 bsp/gd32/risc-v/gd32vf103r-start/SConstruct create mode 100644 bsp/gd32/risc-v/gd32vf103r-start/applications/SConscript create mode 100644 bsp/gd32/risc-v/gd32vf103r-start/applications/main.c rename bsp/gd32/{gd32105r-start => risc-v/gd32vf103r-start}/board/Kconfig (76%) create mode 100644 bsp/gd32/risc-v/gd32vf103r-start/board/SConscript create mode 100644 bsp/gd32/risc-v/gd32vf103r-start/board/board.c create mode 100644 bsp/gd32/risc-v/gd32vf103r-start/board/board.h create mode 100644 bsp/gd32/risc-v/gd32vf103r-start/board/gd32vf103_libopt.h create mode 100644 bsp/gd32/risc-v/gd32vf103r-start/figures/board.jpg create mode 100644 bsp/gd32/risc-v/gd32vf103r-start/rtconfig.h create mode 100644 bsp/gd32/risc-v/gd32vf103r-start/rtconfig.py create mode 100644 bsp/gd32/risc-v/gd32vf103v-eval/.config create mode 100644 bsp/gd32/risc-v/gd32vf103v-eval/Kconfig create mode 100644 bsp/gd32/risc-v/gd32vf103v-eval/README.md create mode 100644 bsp/gd32/risc-v/gd32vf103v-eval/SConscript create mode 100644 bsp/gd32/risc-v/gd32vf103v-eval/SConstruct create mode 100644 bsp/gd32/risc-v/gd32vf103v-eval/applications/SConscript create mode 100644 bsp/gd32/risc-v/gd32vf103v-eval/applications/main.c rename bsp/gd32/{gd32103c-eval => risc-v/gd32vf103v-eval}/board/Kconfig (78%) create mode 100644 bsp/gd32/risc-v/gd32vf103v-eval/board/SConscript create mode 100644 bsp/gd32/risc-v/gd32vf103v-eval/board/board.c create mode 100644 bsp/gd32/risc-v/gd32vf103v-eval/board/board.h create mode 100644 bsp/gd32/risc-v/gd32vf103v-eval/board/gd32vf103_libopt.h create mode 100644 bsp/gd32/risc-v/gd32vf103v-eval/figures/board.jpg create mode 100644 bsp/gd32/risc-v/gd32vf103v-eval/rtconfig.h create mode 100644 bsp/gd32/risc-v/gd32vf103v-eval/rtconfig.py create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_adc.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_bkp.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_can.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_crc.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_dac.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_dbg.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_dma.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_eclic.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_exmc.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_exti.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_fmc.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_fwdgt.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_gpio.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_i2c.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_pmu.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_rcu.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_rtc.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_spi.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_timer.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_usart.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_wwdgt.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_adc.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_bkp.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_can.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_crc.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_dac.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_dbg.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_dma.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_eclic.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_eclic.s create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_exmc.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_exti.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_exti.s create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_fmc.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_fwdgt.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_gpio.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_gpio.s create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_i2c.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_pmu.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_rcu.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_rcu.s create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_rtc.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_spi.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_timer.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_usart.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_usart.s create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_wwdgt.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/gd32vf103.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/system_gd32vf103.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/system_gd32vf103.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/system_gd32vf103.s create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/audio/Include/audio_core.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/audio/Include/audio_out_itf.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/audio/Source/audio_core.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/audio/Source/audio_out_itf.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/cdc/Include/cdc_acm_core.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/cdc/Source/cdc_acm_core.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/dfu/Include/dfu_core.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/dfu/Include/dfu_mal.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/dfu/Source/dfu_core.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/dfu/Source/dfu_mal.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/hid/Include/custom_hid_core.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/hid/Include/standard_hid_core.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/hid/Source/custom_hid_core.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/hid/Source/standard_hid_core.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/iap/Include/usb_iap_core.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/iap/Source/usb_iap_core.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Include/usbd_msc_bbb.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Include/usbd_msc_core.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Include/usbd_msc_data.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Include/usbd_msc_mem.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Include/usbd_msc_scsi.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Source/usbd_msc_bbb.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Source/usbd_msc_core.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Source/usbd_msc_data.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Source/usbd_msc_scsi.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/printer/Include/printer_core.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/printer/Source/printer_core.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Include/usbd_core.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Include/usbd_enum.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Include/usbd_transc.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Source/usbd_core.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Source/usbd_enum.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Source/usbd_transc.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usb_core.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usb_dev.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usb_host.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usb_hw.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usb_regs.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usbd_int.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usbh_int.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Source/drv_usb_core.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Source/drv_usb_dev.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Source/drv_usb_host.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Source/drv_usbd_int.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Source/drv_usbh_int.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Include/usbh_hid_core.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Include/usbh_hid_keybd.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Include/usbh_hid_mouse.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Include/usbh_hid_parser.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Include/usbh_hid_usage.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Source/usbh_hid_core.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Source/usbh_hid_keybd.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Source/usbh_hid_mouse.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Source/usbh_hid_parser.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Include/usbh_msc_bbb.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Include/usbh_msc_core.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Include/usbh_msc_scsi.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Source/usbh_msc_bbb.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Source/usbh_msc_core.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Source/usbh_msc_fatfs.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Source/usbh_msc_scsi.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Include/usbh_core.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Include/usbh_enum.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Include/usbh_pipe.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Include/usbh_transc.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Source/usbh_core.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Source/usbh_enum.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Source/usbh_pipe.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Source/usbh_transc.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/class/cdc/usb_cdc.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/class/hid/usb_hid.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/class/msc/msc_bbb.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/class/msc/msc_scsi.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/class/msc/usb_msc.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/common/usb_ch9_std.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/n200_eclic.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/n200_func.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/n200_func.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/n200_func.s create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/n200_timer.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/riscv_bits.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/riscv_const.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/riscv_encoding.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/GD32VF103x4.lds create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/GD32VF103x6.lds create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/GD32VF103x8.lds create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/GD32VF103xB.lds create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/entry.S create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/handlers.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/handlers.s create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/init.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/init.s create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/start.S create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/your_printf.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/your_printf.s create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_IAR/compiler.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_IAR/low_level_init.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/_exit.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/close.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/fstat.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/isatty.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/lseek.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/read.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/sbrk.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/stub.h create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/write.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/write_hex.c create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/tools/openocd_upload.sh create mode 100644 bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/SConscript create mode 100644 bsp/gd32/risc-v/libraries/Kconfig create mode 100644 bsp/gd32/risc-v/libraries/gd32_drivers/Kconfig create mode 100644 bsp/gd32/risc-v/libraries/gd32_drivers/SConscript create mode 100644 bsp/gd32/risc-v/libraries/gd32_drivers/drv_adc.c create mode 100644 bsp/gd32/risc-v/libraries/gd32_drivers/drv_adc.h create mode 100644 bsp/gd32/risc-v/libraries/gd32_drivers/drv_gpio.c create mode 100644 bsp/gd32/risc-v/libraries/gd32_drivers/drv_gpio.h create mode 100644 bsp/gd32/risc-v/libraries/gd32_drivers/drv_soft_i2c.c create mode 100644 bsp/gd32/risc-v/libraries/gd32_drivers/drv_soft_i2c.h create mode 100644 bsp/gd32/risc-v/libraries/gd32_drivers/drv_spi.c create mode 100644 bsp/gd32/risc-v/libraries/gd32_drivers/drv_spi.h create mode 100644 bsp/gd32/risc-v/libraries/gd32_drivers/drv_usart.c create mode 100644 bsp/gd32/risc-v/libraries/gd32_drivers/drv_usart.h create mode 100644 bsp/gd32/risc-v/tools/interface/openocd_gdlink_riscv.cfg create mode 100644 bsp/gd32/risc-v/tools/sdk_dist.py diff --git a/.github/workflows/action.yml b/.github/workflows/action.yml index 4ff9e4f55c..a25c2c3496 100644 --- a/.github/workflows/action.yml +++ b/.github/workflows/action.yml @@ -38,15 +38,17 @@ jobs: - {RTT_BSP: "at91/at91sam9260", RTT_TOOL_CHAIN: "sourcery-arm"} - {RTT_BSP: "allwinner_tina", RTT_TOOL_CHAIN: "sourcery-arm"} - {RTT_BSP: "ft32/ft32f072xb-starter", RTT_TOOL_CHAIN: "sourcery-arm"} - - {RTT_BSP: "gd32/gd32103c-eval", RTT_TOOL_CHAIN: "sourcery-arm"} - - {RTT_BSP: "gd32/gd32105c-eval", RTT_TOOL_CHAIN: "sourcery-arm"} - - {RTT_BSP: "gd32/gd32105r-start", RTT_TOOL_CHAIN: "sourcery-arm"} - - {RTT_BSP: "gd32/gd32107c-eval", RTT_TOOL_CHAIN: "sourcery-arm"} - - {RTT_BSP: "gd32/gd32205r-start", RTT_TOOL_CHAIN: "sourcery-arm"} - - {RTT_BSP: "gd32/gd32303e-eval", RTT_TOOL_CHAIN: "sourcery-arm"} - - {RTT_BSP: "gd32/gd32305r-start", RTT_TOOL_CHAIN: "sourcery-arm"} - - {RTT_BSP: "gd32/gd32407v-start", RTT_TOOL_CHAIN: "sourcery-arm"} - - {RTT_BSP: "gd32/gd32450z-eval", RTT_TOOL_CHAIN: "sourcery-arm"} + - {RTT_BSP: "gd32/arm/gd32103c-eval", RTT_TOOL_CHAIN: "sourcery-arm"} + - {RTT_BSP: "gd32/arm/gd32105c-eval", RTT_TOOL_CHAIN: "sourcery-arm"} + - {RTT_BSP: "gd32/arm/gd32105r-start", RTT_TOOL_CHAIN: "sourcery-arm"} + - {RTT_BSP: "gd32/arm/gd32107c-eval", RTT_TOOL_CHAIN: "sourcery-arm"} + - {RTT_BSP: "gd32/arm/gd32205r-start", RTT_TOOL_CHAIN: "sourcery-arm"} + - {RTT_BSP: "gd32/arm/gd32207i-eval", RTT_TOOL_CHAIN: "sourcery-arm"} + - {RTT_BSP: "gd32/arm/gd32303e-eval", RTT_TOOL_CHAIN: "sourcery-arm"} + - {RTT_BSP: "gd32/arm/gd32305r-start", RTT_TOOL_CHAIN: "sourcery-arm"} + - {RTT_BSP: "gd32/arm/gd32307e-start", RTT_TOOL_CHAIN: "sourcery-arm"} + - {RTT_BSP: "gd32/arm/gd32407v-start", RTT_TOOL_CHAIN: "sourcery-arm"} + - {RTT_BSP: "gd32/arm/gd32450z-eval", RTT_TOOL_CHAIN: "sourcery-arm"} - {RTT_BSP: "gd32e230k-start", RTT_TOOL_CHAIN: "sourcery-arm"} - {RTT_BSP: "gd32vf103v-eval", RTT_TOOL_CHAIN: "sourcery-riscv-none-embed"} - {RTT_BSP: "gd32303e-eval", RTT_TOOL_CHAIN: "sourcery-arm"} diff --git a/bsp/gd32/README.md b/bsp/gd32/README.md index 5937be20aa..2f9263244b 100644 --- a/bsp/gd32/README.md +++ b/bsp/gd32/README.md @@ -1,30 +1,29 @@ -# GD32 BSP 说明 +# GD32 系列BSP 说明 GD32 系列 BSP 目前支持情况如下表所示: | **BSP 文件夹名称** | **开发板名称** | |:------------------------- |:-------------------------- | +| **ARM 系列** | | | **F1 系列** | | -| [gd32103c-eval](gd32103c-eval) | 兆易创新 官方 GD32103C-EVAL 开发板 | -| [gd32105c-eval](gd32105c-eval) | 兆易创新 官方 GD32105C-EVAL 开发板 | -| [gd32105r-start](gd32105r-start) | 兆易创新 官方 GD32105R-START 开发板 | -| [gd32107c-eval](gd32107c-eval) | 兆易创新 官方 GD32107C-EVAL 开发板 | +| [gd32103c-eval](arm/gd32103c-eval) | 兆易创新 官方 GD32103C-EVAL 开发板 | +| [gd32105c-eval](arm/gd32105c-eval) | 兆易创新 官方 GD32105C-EVAL 开发板 | +| [gd32105r-start](arm/gd32105r-start) | 兆易创新 官方 GD32105R-START 开发板 | +| [gd32107c-eval](arm/gd32107c-eval) | 兆易创新 官方 GD32107C-EVAL 开发板 | | **F2 系列** | | -| [gd32205r-start](gd32205r-start) | 兆易创新 官方 GD32205R-START 开发板 | +| [gd32205r-start](arm/gd32205r-start) | 兆易创新 官方 GD32205R-START 开发板 | +| [gd32207i-eval](arm/gd32207i-eval) | 兆易创新 官方 GD32207I-EVAL 开发板 | | **F3 系列** | | -| [gd32303e-eval](gd32303e-eval) | 兆易创新 官方 GD32303E-EVAL 开发板 | -| [gd32305r-start](gd32305r-start) | 兆易创新 官方 GD32305R-START 开发板 | +| [gd32303e-eval](arm/gd32303e-eval) | 兆易创新 官方 GD32303E-EVAL 开发板 | +| [gd32305r-start](arm/gd32305r-start) | 兆易创新 官方 GD32305R-START 开发板 | +| [gd32307e-start](arm/gd32307e-start) | 兆易创新 官方 GD32307E-START 开发板 | | **F4 系列** | | -| [gd32407v-start](gd32407v-start) | 兆易创新 官方 GD32407V-START 开发板 | -| [gd32450z-eval](gd32450z-eval) | 兆易创新 官方 GD32450Z-EVAL 开发板 | - -可以通过阅读相应 BSP 下的 README 来快速上手,如果想要使用 BSP 更多功能可参考 docs 文件夹下提供的说明文档,如下表所示: - -| **BSP 使用教程** | **简介** | -|:-------------------- |:------------------------------------------------- | -| [外设驱动使用教程](docs/GD32系列BSP外设驱动使用教程.md) | 讲解 BSP 上更多外设驱动的使用方法 | -| [外设驱动介绍与应用](docs/GD32系列驱动介绍.md) | 讲解 GD32 系列 BSP 驱动的支持情况,以及如何利用驱动框架开发应用程序 | -| **BSP 制作与提交** | **简介** | -| [BSP 制作教程](docs/GD32系列BSP制作教程.md) | 讲解 GD32 系列 BSP 的制作方法 | +| [gd32407v-start](arm/gd32407v-start) | 兆易创新 官方 GD32407V-START 开发板 | +| [gd32450z-eval](arm/gd32450z-eval) | 兆易创新 官方 GD32450Z-EVAL 开发板 | +| | | +| **RISC-V 系列** | | +| **VF1 系列** | | +| [gd32vf103v-eval](risc-v/gd32vf103v-eval) | 兆易创新 官方 GGD32VF103V-EVAL 开发板 | +| [gd32vf103r-start](risc-v/gd32vf103r-start) | 兆易创新 官方 GD32VF103R-START 开发板 | diff --git a/bsp/gd32/arm/README.md b/bsp/gd32/arm/README.md new file mode 100644 index 0000000000..abb9515a5e --- /dev/null +++ b/bsp/gd32/arm/README.md @@ -0,0 +1,32 @@ + +# GD32 ARM 系列BSP 说明 + +GD32 ARM 系列 BSP 目前支持情况如下表所示: + +| **BSP 文件夹名称** | **开发板名称** | +|:------------------------- |:-------------------------- | +| **F1 系列** | | +| [gd32103c-eval](gd32103c-eval) | 兆易创新 官方 GD32103C-EVAL 开发板 | +| [gd32105c-eval](gd32105c-eval) | 兆易创新 官方 GD32105C-EVAL 开发板 | +| [gd32105r-start](gd32105r-start) | 兆易创新 官方 GD32105R-START 开发板 | +| [gd32107c-eval](gd32107c-eval) | 兆易创新 官方 GD32107C-EVAL 开发板 | +| **F2 系列** | | +| [gd32205r-start](gd32205r-start) | 兆易创新 官方 GD32205R-START 开发板 | +| [gd32207i-eval](gd32207i-eval) | 兆易创新 官方 GD32207I-EVAL 开发板 | +| **F3 系列** | | +| [gd32303e-eval](gd32303e-eval) | 兆易创新 官方 GD32303E-EVAL 开发板 | +| [gd32305r-start](gd32305r-start) | 兆易创新 官方 GD32305R-START 开发板 | +| [gd32307e-start](gd32307e-start) | 兆易创新 官方 GD32307E-START 开发板 | +| **F4 系列** | | +| [gd32407v-start](gd32407v-start) | 兆易创新 官方 GD32407V-START 开发板 | +| [gd32450z-eval](gd32450z-eval) | 兆易创新 官方 GD32450Z-EVAL 开发板 | + +可以通过阅读相应 BSP 下的 README 来快速上手,如果想要使用 BSP 更多功能可参考 docs 文件夹下提供的说明文档,如下表所示: + +| **BSP 使用教程** | **简介** | +|:-------------------- |:------------------------------------------------- | +| [外设驱动使用教程](docs/GD32_ARM系列BSP外设驱动使用教程.md) | 讲解 GD32 ARM 系列BSP 上更多外设驱动的使用方法 | +| [外设驱动介绍与应用](docs/GD32_ARM系列驱动介绍.md) | 讲解 GD32 ARM系列 BSP 驱动的支持情况,以及如何利用驱动框架开发应用程序 | +| **BSP 制作与提交** | **简介** | +| [BSP 制作教程](docs/GD32_ARM系列BSP制作教程.md) | 讲解 GD32 ARM系列 BSP 的制作方法 | + diff --git a/bsp/gd32/docs/GD32系列BSP制作教程.md b/bsp/gd32/arm/docs/GD32_ARM系列BSP制作教程.md similarity index 88% rename from bsp/gd32/docs/GD32系列BSP制作教程.md rename to bsp/gd32/arm/docs/GD32_ARM系列BSP制作教程.md index 03c7764741..6abba300a4 100644 --- a/bsp/gd32/docs/GD32系列BSP制作教程.md +++ b/bsp/gd32/arm/docs/GD32_ARM系列BSP制作教程.md @@ -1,4 +1,4 @@ -# GD32 系列 BSP 制作教程 +# GD32 ARM系列 BSP 制作教程 ## 1. BSP 框架介绍 @@ -6,13 +6,13 @@ BSP 框架结构如下图所示: ![BSP 框架图](./figures/frame.png) -GD32的BSP架构主要分为三个部分:libraries、tools和具体的Boards,其中libraries包含了GD32的通用库,包括每个系列的Firmware Library以及适配RT-Thread的drivers;tools是生成工程的Python脚本工具;另外就是Boards文件,当然这里的Boards有很多,我这里值列举了GD32407V-START。 +GD32 ARM系列BSP架构主要分为三个部分:libraries、tools和具体的Boards,其中libraries包含了GD32的通用库,包括每个系列的Firmware Library以及适配RT-Thread的drivers;tools是生成工程的Python脚本工具;另外就是Boards文件,当然这里的Boards有很多,我这里值列举了GD32407V-START。 ## 2. 知识准备 制作一个 BSP 的过程就是构建一个新系统的过程,因此想要制作出好用的 BSP,要对 RT-Thread 系统的构建过程有一定了解,需要的知识准备如下所示: -- 掌握 GD32 系列 BSP 的使用方法 +- 掌握 GD32 ARM系列 BSP 的使用方法 了解 BSP 的使用方法,可以阅读 [BSP 说明文档](../README.md) 中使用教程表格内的文档。 @@ -68,59 +68,7 @@ GD32的BSP架构主要分为三个部分:libraries、tools和具体的Boards **2.修改BSP构建脚本** -bsp/gd32/gd32407v-start/Kconfig修改后的内容如下: - -```config -mainmenu "RT-Thread Configuration" - -config BSP_DIR - string - option env="BSP_ROOT" - default "." - -config RTT_DIR - string - option env="RTT_ROOT" - default "../../.." - -config PKGS_DIR - string - option env="PKGS_ROOT" - default "packages" - -source "$RTT_DIR/Kconfig" -source "$PKGS_DIR/Kconfig" -source "../libraries/Kconfig" -source "board/Kconfig" -``` - -该文件是获取所有路径下的Kconfig。 - -bsp/gd32/gd32407v-start/SConscript修改后的内容如下: - -```python -# for module compiling - -import os -Import('RTT_ROOT') - -from building import * - -cwd = GetCurrentDir() -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') -``` - -该文件是用于遍历当前目录的所有文件夹。 - -bsp/gd32/gd32407v-start/SConstruct修改后的内容如下: +bsp/gd32/arm/gd32407v-start/SConstruct修改后的内容如下: ```python import os @@ -130,7 +78,7 @@ import rtconfig if os.getenv('RTT_ROOT'): RTT_ROOT = os.getenv('RTT_ROOT') else: - RTT_ROOT = os.path.normpath(os.getcwd() + '/../../..') + RTT_ROOT = os.path.normpath(os.getcwd() + '/../../../..') sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] try: @@ -151,7 +99,7 @@ env = Environment(tools = ['mingw'], LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) env.PrependENVPath('PATH', rtconfig.EXEC_PATH) -if rtconfig.PLATFORM == 'iccarm': +if rtconfig.PLATFORM == 'iar': env.Replace(CCCOM = ['$CC $CFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES']) env.Replace(ARFLAGS = ['']) env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map') @@ -185,35 +133,9 @@ objs.extend(SConscript(os.path.join(libraries_path_prefix, 'Drivers', 'SConscrip DoBuilding(TARGET, objs) ``` -该文件用于链接所有的依赖文件,并调用make进行编译。 +该文件用于链接所有的依赖文件,主要修改固件库路径,并调用make进行编译。 -**3.修改开发环境信息** -bsp/gd32/gd32407v-start/cconfig.h修改后的内容如下: - -```c -#ifndef CCONFIG_H__ -#define CCONFIG_H__ -/* Automatically generated file; DO NOT EDIT. */ -/* compiler configure file for RT-Thread in GCC*/ - -#define HAVE_NEWLIB_H 1 -#define LIBC_VERSION "newlib 2.4.0" - -#define HAVE_SYS_SIGNAL_H 1 -#define HAVE_SYS_SELECT_H 1 -#define HAVE_PTHREAD_H 1 - -#define HAVE_FDSET 1 -#define HAVE_SIGACTION 1 -#define GCC_VERSION_STR "5.4.1 20160919 (release) [ARM/embedded-5-branch revision 240496]" -#define STDC "2011" - -#endif -``` - -该文件是是编译BSP的环境信息,需根据实际修改。 - -**4.修改KEIL的模板工程** +**3.修改KEIL的模板工程** 双击:template.uvprojx即可修改模板工程。 @@ -237,9 +159,9 @@ bsp/gd32/gd32407v-start/cconfig.h修改后的内容如下: ![FMC](./figures/FMC.png) -**5.修改board文件夹** +**4.修改board文件夹** -(1) 修改bsp/gd32/gd32407v-start/board/linker_scripts/link.icf +(1) 修改bsp/gd32/arm/gd32407v-start/board/linker_scripts/link.icf 修改后的内容如下: @@ -288,7 +210,7 @@ place in RAM1_region { section .sram }; 该文件是IAR编译的链接脚本,根据《GD32F407xx_Datasheet_Rev2.1》可知,GD32F407VKT6的flash大小为3072KB,SRAM大小为192KB,因此需要设置ROM和RAM的起始地址和堆栈大小等。 -(2) 修改bsp/gd32/gd32407v-start/board/linker_scripts/link.ld +(2) 修改bsp/gd32/arm/gd32407v-start/board/linker_scripts/link.ld 修改后的内容如下: @@ -434,7 +356,7 @@ SECTIONS 该文件是GCC编译的链接脚本,根据《GD32F407xx_Datasheet_Rev2.1》可知,GD32F407VKT6的flash大小为3072KB,SRAM大小为192KB,因此CODE和DATA 的LENGTH分别设置为3072KB和192KB,其他芯片类似,但其实地址都是一样的。 -(3) 修改bsp/gd32/gd32407v-start/board/linker_scripts/link.sct +(3) 修改bsp/gd32/arm/gd32407v-start/board/linker_scripts/link.sct 修改后的内容如下: ``` @@ -456,7 +378,7 @@ LR_IROM1 0x08000000 0x00300000 { ; load region size_region 该文件是MDK的连接脚本,根据《GD32F407xx_Datasheet_Rev2.1》手册,因此需要将 LR_IROM1 和 ER_IROM1 的参数设置为 0x00300000;RAM 的大小为192k,因此需要将 RW_IRAM1 的参数设置为 0x00030000。 -(4) 修改bsp/gd32/gd32407v-start/board/board.h文件 +(4) 修改bsp/gd32/arm/gd32407v-start/board/board.h文件 修改后内容如下: @@ -502,7 +424,7 @@ extern int __bss_end; 值得注意的是,不同的编译器规定的堆栈内存的起始地址 HEAP_BEGIN 和结束地址 HEAP_END。这里 HEAP_BEGIN 和 HEAP_END 的值需要和前面的链接脚本是一致的,需要结合实际去修改。 -(5) 修改bsp/gd32/gd32407v-start/board/board.c文件 +(5) 修改bsp/gd32/arm/gd32407v-start/board/board.c文件 修改后的文件如下: @@ -585,7 +507,7 @@ void SystemClock_Config(void) 该文件重点关注的就是SystemClock_Config配置,SystemCoreClock的定义在system_gd32f4xx.c中定义的。 -(6) 修改bsp/gd32/gd32407v-start/board/Kconfig文件 +(6) 修改bsp/gd32/arm/gd32407v-start/board/Kconfig文件 修改后内容如下: ```config @@ -676,7 +598,7 @@ endmenu 这个文件就是配置板子驱动的,这里可根据实际需求添加。 -(7) 修改bsp/gd32/gd32407v-start/board/SConscript文件 +(7) 修改bsp/gd32/arm/gd32407v-start/board/SConscript文件 修改后内容如下: @@ -700,7 +622,7 @@ startup_path_prefix = SDK_LIB if rtconfig.CROSS_TOOL == 'gcc': src += [startup_path_prefix + '/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/GCC/startup_gd32f4xx.s'] -elif rtconfig.PLATFORM in ['armcc', 'armclang']: +elif rtconfig.CROSS_TOOL == 'keil': src += [startup_path_prefix + '/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/ARM/startup_gd32f4xx.s'] elif rtconfig.CROSS_TOOL == 'iar': src += [startup_path_prefix + '/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/IAR/startup_gd32f4xx.s'] @@ -715,7 +637,7 @@ Return('group') 到这里,基本所有的依赖脚本都配置完成了,接下来将通过menuconfig配置工程。 -**6.menuconfig配置** +**5.menuconfig配置** 关闭套接字抽象层。 ![Disable socket](./figures/disable_socket.png) @@ -730,13 +652,13 @@ Return('group') GD32407V-START板载没有以太网,因此这里主要是关闭网络相关的内容,当然GD32407V-START的资源丰富,不关这些其实也不影响,如果是其他MCU,根据实际需求自行修改吧。 -**7.驱动修改** +**6.驱动修改** 一个基本的BSP中,串口是必不可少的,所以还需要编写串口驱动,这里使用的串口2作为调试串口。 板子上还有LED灯,主要要编写GPIO驱动即可。 关于串口和LED的驱动可以查看源码,这里就不贴出来了。 -**8.应用开发** +**7.应用开发** 笔者在applications的main.c中添加LED的应用代码, @@ -770,7 +692,7 @@ int main(void) 当然,这需要GPIO驱动的支持。 -**9.使用ENV编译工程** +**8.使用ENV编译工程** 在env中执行:scons ![scons](./figures/scons.png) @@ -779,7 +701,7 @@ int main(void) ![scons_success](./figures/scons_success.png) -**10.使用env生成MDK工程** +**9.使用env生成MDK工程** 在env中执行:scons --target=mdk5 ![scons_mdk5](./figures/scons_mdk5.png) @@ -798,7 +720,7 @@ int main(void) 1.第一次使用GD-link插入电脑后,会自动安装驱动。 -在Options for Target -> Debug 中选择“CMSIS-DAP Debugger”,部分客户反馈找不到这一驱动器选项,那是因为MDK版本过低,只有Keil4.74以上的版本和Keil5才支持CMSIS-DAP Debugger选项。 +在Options for Target -> Debug 中选择“CMSIS-DAP Debugger”,值得注意的是,只有Keil4.74以上的版本和Keil5才支持CMSIS-DAP Debugger选项。 ![CMSIS-DAP Debugger](./figures/CMSIS-DAP_Debugger.png) @@ -885,7 +807,7 @@ GD32 BSP 的制作规范主要分为 3 个方面:工程配置,ENV 配置和 ### 4.2 BSP 提交规范 -- 提交前请认真修改 BSP 的 README.md 文件,README.md 文件的外设支持表单只填写 BSP 支持的外设,可参考其他 BSP 填写。查看文档[《GD32系列驱动介绍》](./GD32系列驱动介绍.md)了解驱动分类。 +- 提交前请认真修改 BSP 的 README.md 文件,README.md 文件的外设支持表单只填写 BSP 支持的外设,可参考其他 BSP 填写。查看文档[《GD32 ARM系列驱动介绍》](./GD32 ARM系列驱动介绍.md)了解驱动分类。 - 提交 BSP 分为 2 个阶段提交: - 第一阶段:基础 BSP 包括串口驱动和 GPIO 驱动,能运行 FinSH 控制台。完成 MDK4、MDK5 、IAR 和 GCC 编译器支持,如果芯片不支持某款编译器(比如MDK4)可以不用做。 BSP 的 README.md 文件需要填写第二阶段要完成的驱动。 - 第二阶段:完成板载外设驱动支持,所有板载外设使用 menuconfig 配置后就能直接使用。若开发板没有板载外设,则此阶段可以不用完成。不同的驱动要分开提交,方便 review 和合并。 diff --git a/bsp/gd32/docs/GD32系列BSP外设驱动使用教程.md b/bsp/gd32/arm/docs/GD32_ARM系列BSP外设驱动使用教程.md similarity index 92% rename from bsp/gd32/docs/GD32系列BSP外设驱动使用教程.md rename to bsp/gd32/arm/docs/GD32_ARM系列BSP外设驱动使用教程.md index d33f9a7d01..2c6868a8e1 100644 --- a/bsp/gd32/docs/GD32系列BSP外设驱动使用教程.md +++ b/bsp/gd32/arm/docs/GD32_ARM系列BSP外设驱动使用教程.md @@ -1,4 +1,4 @@ -# GD32系列BSP外设驱动使用教程 +# GD32 ARM系列BSP外设驱动使用教程 ## 简介 @@ -20,7 +20,7 @@ ### 1)打开配置工具 -在目录 `rt-thread\bsp\gd32\gd32407v-start` 下打开 menuconfig 配置界面。 +在目录 `rt-thread\bsp\gd32\arm\gd32407v-start` 下打开 menuconfig 配置界面。 ![打开 menuconfig](figures/menuconfig_gd32407v-start.png) @@ -54,7 +54,7 @@ ### 6)生成 MDK5 工程 -输入命令 `scons --target=mdk5 -s` 重新生成 MDK5 的工程。 +输入命令 `scons --target=mdk5` 重新生成 MDK5 的工程。 ![1543477194829](figures/scons_mdk5.png) diff --git a/bsp/gd32/docs/GD32系列驱动介绍.md b/bsp/gd32/arm/docs/GD32_ARM系列驱动介绍.md similarity index 99% rename from bsp/gd32/docs/GD32系列驱动介绍.md rename to bsp/gd32/arm/docs/GD32_ARM系列驱动介绍.md index 9c993f5dca..3a18296274 100644 --- a/bsp/gd32/docs/GD32系列驱动介绍.md +++ b/bsp/gd32/arm/docs/GD32_ARM系列驱动介绍.md @@ -1,4 +1,4 @@ -# GD32系列驱动介绍 +# GD32 ARM系列驱动介绍 在 RT-Thread 实时操作系统中,各种各样的设备驱动是通过一套 I/O 设备管理框架来管理的。设备管理框架给上层应用提供了一套标准的设备操作 API,开发者通过调用这些标准设备操作 API,可以高效地完成和底层硬件外设的交互。设备管理框架的结构如下图所示: diff --git a/bsp/gd32/docs/figures/CMSIS-DAP_Debugger.png b/bsp/gd32/arm/docs/figures/CMSIS-DAP_Debugger.png similarity index 100% rename from bsp/gd32/docs/figures/CMSIS-DAP_Debugger.png rename to bsp/gd32/arm/docs/figures/CMSIS-DAP_Debugger.png diff --git a/bsp/gd32/docs/figures/FMC.png b/bsp/gd32/arm/docs/figures/FMC.png similarity index 100% rename from bsp/gd32/docs/figures/FMC.png rename to bsp/gd32/arm/docs/figures/FMC.png diff --git a/bsp/gd32/docs/figures/Gigadevice.png b/bsp/gd32/arm/docs/figures/Gigadevice.png similarity index 100% rename from bsp/gd32/docs/figures/Gigadevice.png rename to bsp/gd32/arm/docs/figures/Gigadevice.png diff --git a/bsp/gd32/docs/figures/MDK_Build.png b/bsp/gd32/arm/docs/figures/MDK_Build.png similarity index 100% rename from bsp/gd32/docs/figures/MDK_Build.png rename to bsp/gd32/arm/docs/figures/MDK_Build.png diff --git a/bsp/gd32/docs/figures/MDK_Build_Success.png b/bsp/gd32/arm/docs/figures/MDK_Build_Success.png similarity index 100% rename from bsp/gd32/docs/figures/MDK_Build_Success.png rename to bsp/gd32/arm/docs/figures/MDK_Build_Success.png diff --git a/bsp/gd32/docs/figures/Peripheral.png b/bsp/gd32/arm/docs/figures/Peripheral.png similarity index 100% rename from bsp/gd32/docs/figures/Peripheral.png rename to bsp/gd32/arm/docs/figures/Peripheral.png diff --git a/bsp/gd32/docs/figures/UART2.png b/bsp/gd32/arm/docs/figures/UART2.png similarity index 100% rename from bsp/gd32/docs/figures/UART2.png rename to bsp/gd32/arm/docs/figures/UART2.png diff --git a/bsp/gd32/docs/figures/chip.png b/bsp/gd32/arm/docs/figures/chip.png similarity index 100% rename from bsp/gd32/docs/figures/chip.png rename to bsp/gd32/arm/docs/figures/chip.png diff --git a/bsp/gd32/docs/figures/com_print.png b/bsp/gd32/arm/docs/figures/com_print.png similarity index 100% rename from bsp/gd32/docs/figures/com_print.png rename to bsp/gd32/arm/docs/figures/com_print.png diff --git a/bsp/gd32/docs/figures/complise.png b/bsp/gd32/arm/docs/figures/complise.png similarity index 100% rename from bsp/gd32/docs/figures/complise.png rename to bsp/gd32/arm/docs/figures/complise.png diff --git a/bsp/gd32/docs/figures/config1.png b/bsp/gd32/arm/docs/figures/config1.png similarity index 100% rename from bsp/gd32/docs/figures/config1.png rename to bsp/gd32/arm/docs/figures/config1.png diff --git a/bsp/gd32/docs/figures/config2.png b/bsp/gd32/arm/docs/figures/config2.png similarity index 100% rename from bsp/gd32/docs/figures/config2.png rename to bsp/gd32/arm/docs/figures/config2.png diff --git a/bsp/gd32/docs/figures/debug.png b/bsp/gd32/arm/docs/figures/debug.png similarity index 100% rename from bsp/gd32/docs/figures/debug.png rename to bsp/gd32/arm/docs/figures/debug.png diff --git a/bsp/gd32/docs/figures/disable_lwip.png b/bsp/gd32/arm/docs/figures/disable_lwip.png similarity index 100% rename from bsp/gd32/docs/figures/disable_lwip.png rename to bsp/gd32/arm/docs/figures/disable_lwip.png diff --git a/bsp/gd32/docs/figures/disable_net.png b/bsp/gd32/arm/docs/figures/disable_net.png similarity index 100% rename from bsp/gd32/docs/figures/disable_net.png rename to bsp/gd32/arm/docs/figures/disable_net.png diff --git a/bsp/gd32/docs/figures/disable_socket.png b/bsp/gd32/arm/docs/figures/disable_socket.png similarity index 100% rename from bsp/gd32/docs/figures/disable_socket.png rename to bsp/gd32/arm/docs/figures/disable_socket.png diff --git a/bsp/gd32/docs/figures/dowmload.png b/bsp/gd32/arm/docs/figures/dowmload.png similarity index 100% rename from bsp/gd32/docs/figures/dowmload.png rename to bsp/gd32/arm/docs/figures/dowmload.png diff --git a/bsp/gd32/docs/figures/download_success.png b/bsp/gd32/arm/docs/figures/download_success.png similarity index 100% rename from bsp/gd32/docs/figures/download_success.png rename to bsp/gd32/arm/docs/figures/download_success.png diff --git a/bsp/gd32/docs/figures/frame.png b/bsp/gd32/arm/docs/figures/frame.png similarity index 100% rename from bsp/gd32/docs/figures/frame.png rename to bsp/gd32/arm/docs/figures/frame.png diff --git a/bsp/gd32/docs/figures/gdlink_debug.png b/bsp/gd32/arm/docs/figures/gdlink_debug.png similarity index 100% rename from bsp/gd32/docs/figures/gdlink_debug.png rename to bsp/gd32/arm/docs/figures/gdlink_debug.png diff --git a/bsp/gd32/docs/figures/gdlink_download.png b/bsp/gd32/arm/docs/figures/gdlink_download.png similarity index 100% rename from bsp/gd32/docs/figures/gdlink_download.png rename to bsp/gd32/arm/docs/figures/gdlink_download.png diff --git a/bsp/gd32/docs/figures/import_rt-thread_studio.png b/bsp/gd32/arm/docs/figures/import_rt-thread_studio.png similarity index 100% rename from bsp/gd32/docs/figures/import_rt-thread_studio.png rename to bsp/gd32/arm/docs/figures/import_rt-thread_studio.png diff --git a/bsp/gd32/docs/figures/install_pack.png b/bsp/gd32/arm/docs/figures/install_pack.png similarity index 100% rename from bsp/gd32/docs/figures/install_pack.png rename to bsp/gd32/arm/docs/figures/install_pack.png diff --git a/bsp/gd32/docs/figures/mdk_keil.png b/bsp/gd32/arm/docs/figures/mdk_keil.png similarity index 100% rename from bsp/gd32/docs/figures/mdk_keil.png rename to bsp/gd32/arm/docs/figures/mdk_keil.png diff --git a/bsp/gd32/arm/docs/figures/menuconfig_gd32407v-start.png b/bsp/gd32/arm/docs/figures/menuconfig_gd32407v-start.png new file mode 100644 index 0000000000000000000000000000000000000000..ed4dbaf96ac35a56fecb2bbe93f283c32fde4af2 GIT binary patch literal 27755 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 b6*`yntNr!;@Z)46q5X=oYBHr#&))tYEFYP3 literal 0 HcmV?d00001 diff --git a/bsp/gd32/docs/figures/pack_finish.png b/bsp/gd32/arm/docs/figures/pack_finish.png similarity index 100% rename from bsp/gd32/docs/figures/pack_finish.png rename to bsp/gd32/arm/docs/figures/pack_finish.png diff --git a/bsp/gd32/docs/figures/rename.png b/bsp/gd32/arm/docs/figures/rename.png similarity index 100% rename from bsp/gd32/docs/figures/rename.png rename to bsp/gd32/arm/docs/figures/rename.png diff --git a/bsp/gd32/docs/figures/rt-thread_studio.png b/bsp/gd32/arm/docs/figures/rt-thread_studio.png similarity index 100% rename from bsp/gd32/docs/figures/rt-thread_studio.png rename to bsp/gd32/arm/docs/figures/rt-thread_studio.png diff --git a/bsp/gd32/docs/figures/rt_device.png b/bsp/gd32/arm/docs/figures/rt_device.png similarity index 100% rename from bsp/gd32/docs/figures/rt_device.png rename to bsp/gd32/arm/docs/figures/rt_device.png diff --git a/bsp/gd32/docs/figures/run_flash.png b/bsp/gd32/arm/docs/figures/run_flash.png similarity index 100% rename from bsp/gd32/docs/figures/run_flash.png rename to bsp/gd32/arm/docs/figures/run_flash.png diff --git a/bsp/gd32/docs/figures/save.png b/bsp/gd32/arm/docs/figures/save.png similarity index 100% rename from bsp/gd32/docs/figures/save.png rename to bsp/gd32/arm/docs/figures/save.png diff --git a/bsp/gd32/arm/docs/figures/scons.png b/bsp/gd32/arm/docs/figures/scons.png new file mode 100644 index 0000000000000000000000000000000000000000..efebaa9e5743d23dd08ca18c931bf49b549296a8 GIT binary patch literal 25026 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 z z(8t}-6hgL~x7tc5wW(okJwbUq$f0U#P@c|MN8N9^K)&Yv{FHKQgU*SG-5o>5(8_U9 zQpG^3%oEzj$KZ2xysh(9i3wnO^q6 zV}DLn`eHVn8BVrQneyym+7ArnOj6GJCt9$^ynC3E5i#TQWOE`=)@>gC3I-h|RGyFxZw)%*KG=Ew} z(L~E!CSVjDctDPW4+P&hHp-^)UJOzQJS$RvG@ERBTupQ|TP{dV_tMm@%Whp7zmE&s zzv`z!4R)6Z64hC7NaU?*H5}5Ae3YYjzzs90JCn6f)V@z~iuUFrKkj!m%8%V{81%OZ z?7!Yv)&I(6?1%oJ%VA1S$G_PQH8qm44Mfz{dgNEN{wZ%^&k4_A<&z3dGU1QHTUyzQ z+aDE}gJWdOs%ihl=N-P`p-Xj!ls^(3+kMRa+}x8EWj53j1$ zfdCFc*Q=+-tDK5Z+)+=F#k?4r}n19bcuvYrCKt=!lAD>!4q&w;MS740q02w$xP z#OHDQJ5-dF6~#<;|1DoSqu1lLU=T%q)&}_%!Whq(+Omd3y$oUY5wy$#tNk9QoHn!_ z)Tw(A|MYWNzDxnKa14>}APjDmvi82&S6fL;y0gAkah#6zxPhrD?>-QW zB0Zl4qX9RkA@(~=%NN3Cy`a_}{B8tWBnT+&8-F-Q5RD7A!5fO&8HDbY{yaG%8M*)C zb3GIVvU687o#r(YhFztZ=GS2+&L)*?BbF=5r}N`GK7J0UJk9ysC>Qjc7?6aSf~|TR zLmJf1fX(D3^E{^>sdAcN5#OwxC!4JqsQM;OY_ys)-TIvD8_cOYK4|m#qkK|3+ke-^ z*>%mGNk?xF4z}cAi?0FKn(eX~p-0NNyH=Nmh7;1PYJTaK2CT`(7Mg;=K=ItJuqMs( z61<1@%OCeNh3LnQ+39S{3^|@;l*CbCe6{8E5D@iQ*OAE9z4g7SaWF(VyTB&fZ)7mm z@j5V7O-`qf+>HWUGcdB#?gv5vW@!^1PRMe11Ghgpa>b+SJ4ECYb0FW=3;O78 zb{fYXOZdM<`uesC4qi z7e4FfsJ=e{TQ$6x6OPST@7Q^}jTnF>`7e`x__ew#4Nj8w%d2?#shr;?ibiUr<(9ifz*?&g^$1o@IuD%`xUk zTG|mVD*gjS7w7YHbhwP%wMBuWLPYNQfU|>#s%o~ygr`yg*Z%z^kWKRUHeX=xqUO_{ zTUo!-(lV#C3A|QBLyNI(?u&l%pTkUPI)5Edx^yAhCR;?&GJ&+#Y&;sZ{hmqni0K>o zeB=kJmIgRNuL)aXeC|k5CXlifz@NKJt zcckm97|$g792QB0qTlk`$5b~Ed;?MFEm2)EA$)HW{fO8=rTY`Uzq_A&*FAJ=*r4^l z$~%r;m(nl&cV6=BRmgHY>Amp(u@dip)c1X=8xg(Aj=9@A7&R_`FLc-JO2y4F_`qHD zi#tk^h29PRJ-Xq%d+}p3p(jAJLydQ8`+Kpk&~dT7Lg9NH&XSKE(<=CN`Yh^QYQ++` zKEUtDzgWTMNz61G`g=T17jtYHU{?P2`lihworfwc#atP{-A=QTSuOG^sWj7yd>FAIIch_K-t`)~HTJhD)!C zpw5(IPAp;r)xRIFL);Z^e!gn84zyeZ`Xe0u5qfPG3y`k4Pmhi&&DO_xqfpxz3@kj2 z0qb)$LVY<-1zU_^_m=%}+v83n^)t7Rd6eSC>`J??YB*Pf2_(}P!oxMCW3ed?UWw27 z!$KCT)Cy=nIMv>%l@S7@H`Tbqi4GO~0jz*IIz9uEz!!MKZ+Q9^VLNXBEq{$Qo>vhJ zyZNob#@UAl;la~NOGWvsJ-Smk!7E6v*S{**UP6*_m;IuE%Ls6ke<1WNhxM`h(R6SnBlNtf+m@S=E0RmDr2uf+R`kiA{e9_I3%fr#f)(!9YcVJ`PNV9p%p z6cPY9D-0=ytM7<4^M^6gNA#0BCX&Jx&)u9lU7|Sjnkn1%F$YvZEAtQLGHxS9uQ*ld znFt%M$cVhHsdopZcn;G8O_ID+~eQ1e@UB$ zPdEcMs}(-#FkZVB+Qrt8$htUt;))1P(-x&FYlHEF=u~xTy>qa{WJUN{2>-)>f<`Hv zK^;kM{BHau*^cda*sIn^7=J6 zXE5fip353L5r@k!uV94>?M3cQ2Q`(SyWn~k=V;d(G4MM22qo4sG(-42G^tPY2-ml} z8u_AeWp$nEH&Yv38q99ub8a2fv;L$@(Ot4^_S<&t5f(f+D7*=@436E=k){#%f}e&{ z!)U+p4rmB!Hhppw#Z9tb5DE&JNS=TzG+HSP-6^uZp1V1qjXZD9>WWtXhRF;RZ8cbp zZ;rsXI&MqukGovmi9G&#D`paOdr+hFyixMv7ti$5b?QavboaG#uub^O5}OOv4rC)w z(9!B6G57-|BG-$*;)~M;bqp>0iT5Q~Vt*X{iQ%R%$FF0V)3tohn?t(!+@k=WR8Jhc z6b$N)MhwoP?qw~&Wy zcQ|%>hMmBUmS<};*j2bWjLM@`MtFZMI>jF8e}thuSkQ{i)gkiqe|ZxUTtIQ1@In;D z`(+JibC?wJy|&LLm$oLj7csacY9;4+SwgQ}+PLTBR#jcR{ZSwApN~eB>qoA28<)Es zu7da#cV8?R6xaoycz@((=jE68)^L9&;;N@f8aurt)~n~Y{wU=;^FU^JDk3j;N?@U9 zW_%L-!*7?@A*C+M!G#_u`|97VpFjzpv%GbX9vq_?DgbGUXyF3y3csHiggU^1zJV^l zP9aG4%4Zkos5Lf#EcCXmeas>#1SQcGDjnX4eiQ^s<-S7j**w4PZ~8K?btZkxpSVwK z#~!No-o>_K(6VrlvE#X9>+b)a^gM3h(=`aa zHGc}bD7Tfk))P}3neOSR?V3qFsA#RYT%dXopERs3)c03Y!s8GxoFrUHwl!zW9%%ie z4XSzqR3x#}7)T5#ex6LTf4MsyV=)~GM4egP5`%fM?p9m(xkt4b(nVhIleP4n{J&#! zb68?8R2n?8dCPncs)MB|0e{x$Yzs`-Ju)zFB(wd-k8(GtTfC9BYg|=FZzxc|{nP!J zpg*lRaI0nNSk$`<2ECYt+(ca%TfDIk6%t-q9_p_>GsE?Guho;I7y4gx&RAY~6v9u@ z!!|tNfnECIqUa{Rcl)BgZ@%`E*I!EQmP-2s?UhGM0S&HkD2KoG`ClFl{8zv4_U(T$ z7CF!V+pmBA$LYL6-7&LEQ#p z9{Cw}*2DIC0^sJL(#^6%3_DD1rTTUbpMoFyLP?$1XEU8G(#!01 zXglsvu^YPfmYM0lz1v}ik$!)O$3%PKRDgD&06OTB8jX7o6n*SB8|~*iGG5D{w!n3& zgIg(=ot8&JWGfMBMS3Fz!7o$z4u8t;6Tg~*xu&dx^@c-|rVt^%Yl)t0SWuf-_x$gC zHIJ!~<|4z()=m%jP8W1^MEHA|(On3&XKj2^9eYv`u+gGtB{FsIkuOXDQy;Y4J}tLx zc{jh8rc48+`@osr*AGhXY$m=bbIY#_8JimH7O=s6Fv8K;7?6`1`$)O`8~}VX{_Y(4 z{Tz-B8n{%W{L(d%+GhwO@6%XNhwzYYo!Gi)YR0^?1LaF$(Z93*20zG#^QL>*xW;EL zfhpy`fUPqn;}6$xIn-Ec)?RwJI!{&Ohy|D;R!&H%^EsBGpUqiFOkL3aVAXTl^xr&o zBHpY~5|LMWPy@dYP6i%KFdhRq4=Q=RvEypUH+_fNw!OcC)Og;!4Qu?c*m9NMIcee6 z1v3_@?d<3EhPGzqw4BSmx%zybH&2v;S~84 zO}T==D!dq1*%8GkSzt!H@}n<3SMc&BlC|;x^RGhb@vSctk-lvU4>C=+h$cMFc5A?W zON%0E=6g$+_HZObSv*dsf_defi3?pP7ACFl^bPZHH)+pSZye^!@FT{(l}NkP>;N>0Y{*U|zul#>(g zzV8mlZyanVYvgBlTB!P6_A0wW5UWwOi}y7wDG#EhM%vTrccj(8l-^%?Y=8hYZmzgg zX$sa4DLwb-{g-p!u8WC}O|;n`JHO=OV0#^ThWsCZ>*(b-7@wK|E#)OYk zh<)QZlM{30@{bwsE11|k&XNGMN(l-{04jdOtW0SfE- zDJRBHiy$J{iN9#}xNucnX;1;mBhK;xDcB!yTl||0f*P^DheHCwUX1~JJ<#ZNHJ0?$7mmD-`?h9EfV)(7wKWhFo zNqDKIO$bkUVCls^4VZP>M9xp6LF?mt*CqK> z2>Q{7bNg$4-5M`pjdR5g`i*{RG{(5-sF}a-4onGCBabcc4o=a%v$eFRxd5)kB7EV# zNqSq-e)eC4@A+6ZuP}hq@lpLk8A3NdLT5By^cAoqzpI#U+=WTY*B6f-Xp(5tyJ*8` zGGYgw?avh=)s-Ez46Cz2f88l6sY=IdU(4dk58K2>xG@~~MaR5SLtPpiX*8NOdAmCc zc|}B=biO?Zc}rd*8|?@jg?js$Dh@snS6XR^dp5b~F%TkgDnQ!tO?XB1yZZ}_epQ{e zGX=%$otrpslc>^&3$GKMsulrY2sY44KR}-kU$j=bl<(?BTZSllfb-_U2CifNO zaocSs)w9lBn0S}IELiEV&ly~)tl;ZeI5_v@w*O%1@#E@pH$82jC;K%4!6{W?BTpVp z(eoDB3|KugK8QDbqw&5)(rL^;DDOey;^Jz8`mv*(SFwqjs*h>>)VhTglcAhE1TBb!?&o_O@bsT4AFzO3FZbW=|aA z;J_!=&qml8B#2xBq$ldqJQKVY_QuDd(D8qir~Uo)e|{&Q&R;sXZPQXbjb>g zORI6r==v7kB2~aI+vqffsWzK*EN|Gy0QeBgeXvrrojqHBwCKCJPxhl@v(m);{ePFh zEk!i`twGH2_m-J?8Y?ti5R>Xx5+om(3)!>pDsS?Cl4P-dS?k&y#%>D(V;2mCKywTi zzo|OJ%EuNddyBrCC^xY39sNk*rthfTd~dAL-OZ^iOi?CimjhIZ%cBeV!ei+X`FB`05ow`E8Mcj@AU0}we_9VJBto$!X5UBg5LP}4a$wi|| zQA1VRsKFUqg_b*a>-vXL33e*=0qLBF2JVw;A3?XqM#!#@$JrPIkMX-?%CU6N4LbKh zIB44rZ(A!9?DLcy7mVUcuvPln3=f{!Wr2_wLfmE}%e0T9;ZdKr2zyJ=PW@d@e&2P6>Kc0H^>HttQp=md zwhrxxR5ecN_3+=`9Na$u1p1sAtx__0>-DS*d`i{wbq^4FZ}oQ)^z6u?-gGkR%Tc?@ zmR2kpi>X4wu7OQVYY;W7U*!3t$vMYO*r6J@o--Gao%GveVs3xsR!Vy6L{vuY+!?O> z<}Gql+@Rvls_#IECjmi3G6rT5Y*x(C{FfE`-1rL&4FU)HYue=$^Fk+1bK;iF8yE`( z(j=vlU6_ixP^C$W_0mhw{@8R*f>7*n+ycO4Y&o2@cK={J`;`1m$k&>jeEWFA&W)|g z&n4$a3!Vt%nu14X7ug_j&a+VkIXZw^HU5{I)A2k1EN8{vrM_*w<+mURkZIx-9K2D} zt|ND5R+F71!!)am?7%5*Z5fjf53Y=KmD|4W_h$eth73Esm1IhD_QHWQ@iA_EA{Q(46pdD>AJ;e z_Z{u`R7;NkO}Bn#itU?BKLmAPe?o&@k(vrysXdcR`S-fH`5lZ+>cz;e@IFJG*{rsI zjDHJcGIu;L=B^BjiesrVpYj1V3k8N7=LnE=)o$SkQ0m4?Z?GsT5 zZ+qg-;y1iuMOX0J)4Aq?BS9j2bK7<6KAZR_yFItj3-mQQw&L*{;YtqlXbnvJr>d2E zeTI92$U!9?={dgAqN!c0UdtW9%A@eA7#FpXNs-q@qXZ|Gq^ylZb0nfaSZ}JP96rFj zz9Fy62q=))6>@AZBiR&+`y;I5OO|h+8 zOUJ0)q^Wz|p~z8o*o-^mZqL=IPfl*zSX^~1i~g<6vgypcAiOJt(84a;J^t^YTi11)eJ*gA#nXTzGLU)C zTlvL}-Rxr|!SO;tifkz2msKz7H@*5c2E7uNttLP7an|g=2|Q*sJlel{R>4od*p02a zbS@U$qCabv2zfZ37sAJJ%gouDjEfkI*DNvZ%P8)PDdR3%Jlv-11k8~PI%Z*2H|^mN zv#q0KAdAVL{V_F7nFTz%QnKoL__wAbfvGvGWg3sFEx`DUOnd&A7@9s?jTOIY_a}+0 zG4390aW3{Rb4j^lD(h=Xmapa==VK=m#b)f?m0k-xJAmL5(t!fOj(eNH{=1~+oEba7 z1x7&IWp?D0Gr?@=c;43*U2T@{cX3vOa+)o%i~rkM@>@@~!Ll6{U1&|+v8X&}jeDds zA$0#yx3cD!uOFgc-4Tm9C4O9GxNZ7~HPF&pO>H6>*17Qy7Ti?(o1%QPzuPJ#1Z){E z>5V{Q$xp~zQhBe6c(=u`n5w5=CXMqJJJ0AAAV8^VDIzyK+UhBq1k%HqfpomP-w&5! z8S`_+ph%P2%X?;@uqqQhTkdULx?Z`&S-&)wAJ7aduZG)kNfxr$|KnvXk z-VCOX^uA*+Kg!BvUK(P6_kV($YeFYBTssuT=B!evu8M zoEERAf}d%3B0HVvuVNk;3ZEN1neohj=eZ+&D9($yXUSD(H_X5lv&X*QeT-DG|64qq zMfng{{;$&BJRYj|?;lsvLZuCr(DH5-$}U?Q%2rup7z!f>W63(UC@P^68vBxMER$ts zY-1}F!`Q|$W2s~Y!-z3t8Gc7I`h4!+<8%M+`}h6&k1^+5=Q`JGc`oNVIQx&Ei~3K{ zFh6g|uzaBe)rvmEyw_F!0^f;hZ$t)V>8?O}o$?*lt*Pc$VK5_*rDHNlY(P zCVZt7(pu#`RjrI6B_pVXywXoYuWvzK`d&vlx9q+RuOi=w!lAbI;k@}uirmcJ3)v>n z^o)HgAGo;bu{%Pp^jP_}L94d=?!U%O9xMov1XyWd2MlE0ak^G9miK?^o+i{L`ik;2 z^v4afEqIsuwuO9y5B(zM1wTff%k(5Ooy<=Shp7_m%aUs^bQ4!zft^6G@Q?7v5hq^+ zWSQn~M@$msN>H`KwQW@rD?T~peX%>iGmiwWNU`sO}1&vuAb75OW$cZC2 zN%PilM@C{?5mQNi?;KJ(RqF2k2@CIk{8H(Wnmx4vhiry62+kZBezc%|!YWbL6TDLM zyGfZwTif#z?~^dpr88}n%V4MYZ`VzKCLo5x6zk=V=#1)ZvFhuNn@tGfEgiT7@%SfO zAEn*3*TC)$bfFa!l_{c9q&<^wN_6njo0)o%1?w`@Mmv;rbt+h@Y2BSPvI`@}`nwX; zPMedbE_pE?A&Emp?J^%VOW7m_=D>`^vC=)CDa zhkx6oic8%?JSqp0<7*%gAO}3kei`raNtk^bxQtO>i`Dx%Z3UN+%jUy3T!%LIpWym$_wT@KL;sL|=ACa>(1ohvvD0JP4o)*E ziUBS1fnVJ`YB$s-Z6;fx;j%N-ct8Qf%@-513)y@>tH-=*EVOoplIMSI&~i2Mi>8%- zTpC4X0=FudRQvH)KljO6rRT)O8pOd#~GQe}E)B_Mqr9oWzeTRM0S zzLqqUT~bW{Lk5nkNYiABHcST!RF}WdBkwHU?*%~C`DyvVF>$dZ(mj~EnAIUe`?;S1 zr0U0^emY99uYEMY#IO^5<6)Jk8Coy2B^y6#`flFC-dX%J>*LDdA$v<3i$y_4Dg18% z4)p1E%k^_o#cm?pd%!qd!Ai z;q3$k+#o&3vS@p&YGC6d6Z<=*%h)pLi`zld!9EovU;$PNitNavEIW(N{oz@88mM&I|40 z^!n?>vK7CMlvyj0N)Fk};HG)c5*I(coxbe_(V*_R&7m2P%K8 z6DQ3-J_IXR>zu4Qvxmwkq=9!5;9wyNMNBw67Mm*}oO8`XJwSJ`yF}Xh>9d<8z!Y`Lkh zJ8x)q%Sm68<(-%l110)c$;ZQ;Xd4uFUguQPv_Bi6|2 zspH+lTm0T#1L%Z}mVdu4(DEO;cm2lfw|bY~hc<+_fukN)(SsQk!?bLJ&M6bs1T{ew z*l(|?Jz@US?~A7jbl$0DRuqhyx{TF`jfttlWlom9FcwN=vDb}J=*d2O5(*AFwIKP8 zKi)=bVxwJunyI>`M6bvxT=YVjgdz^q%4hS?J=SV$fhh1qQy)2F@&_d}v2&gE$^VIwneE1N%3s=n|Jhl^ zfwupfJ&6j+Hd&Zh`g3CJf{XLCS>CRW*r~zdzlsMTQ19THAN%~TvjKAi*LC4Pq)Ta# z)5OcX(xL_y`@_2OllY|P<|d9%Estf77t?;WMEO12_sS8U(acZrL{}YOYPiFh;M$X) z@Jr^MrMjLQ2CM$M{`s8-GutI5nCjnOtyDI@6Eq@SgKW64CRO8EitI0a^S^8RzCwpU zFV~`(_d%hyF>#M)F5Hm{iG9u*AbEvUKALm8E>$#P;B?9Jrt~0)ZQxq_MN~CCsdF59 z$1-Zcfzh=`yY;}QOF;H?HvDJwnYDUo-}l4qDMf78;}do^g!*kFn;kXeWM>f!f3 znxpHOq*R38%JPp0y!~hRiB|j5qaLr7B-2U4`GoU-#(Gsi+>iUX@>O!zS&evs;o#HT z4&vW;WC!U~#a;BQ1t-VUoQT@xHTd%G%zG`bTYSBc0mZX`cGFutM=D)D>R_3ArD*X8 z?)}HT5$$~Q0X3BOck_Z^U$14qWr3ViKkdr#zZQo(p||XL(X7<+#Y2KZ+ySQfd)TUz z%WwPZ_A^)F)KJTIW@`M;=*{;(=EN&g$%9tk`tSBZZ%z?FIr2+%x6&)!fjbJ^iWB@C z9VSbwD@LkOpy@~rjDldQ;h!rAzMyd15fFrGL^49H2Da+R>>)jM^|~wfawtt0a32_X zy{_m?#owRK5e2cJP)xoYOTaO-`0Vt@v!u9z+OmbgyXUUJYgRr3{deNKFGfvdH!x({jg8{F1X;fY;dCE7aVS)xv}jSy>h#9l63PP`asT2Xrjoa#_h@0 z#dcn$sv^F3-t<}fYn9$yYTLKWy81MjxZ2V}-jbPKN=uIRhZ@^5>62BASD-$@uHc;Drn~z*_;<&vZ)dXrSDQwPk85IJ$4qJiZCfOZtV5P<&Z~j;Hh7_y+Y8U=O^K^M zp3{rP?PLa}QzN;1nbM{oDOx(JG61zt)gj`>VTFwG9tD)U1I=GGu1oMZgozkC9C#kg=4`SL_l3OkB-tu18?nLsoz_l&T^x9+{LQ=+e{z_-&4rH*Y* zZ3~3hi;KLEkYddE7~`g-;`@7x6qCA~THaomS=pASit$b?-Cs%uE8Z_%l~LN!`rO>! z4{R~S%GcNPf)2%3Q1=WgB}|&Ot!}-sGghkioT4F(mDF~jOK7g?@_+&&s$yu3r12hR z${fjDS^qrq$$#gK6^_F8sfCb~Uf^r-J((1XHk<{*^`w!ELcV~rK92!hOME!d78Qjb)C^Z0a|pRZua zffI?D&yXoH-%g6c;`S?2XP$qdA<}fFA$YI2H_{O68NHe}R z#`eugIH}K8a^!NcfSJ@4l|W{D*zTy=IYMS?`^sDAVPM-PX~(KBjL2LI3)6;U10Aap ziSQrm^4o_XqQ|IqK{@QYF-lLIsaapBy~qFX{^~xO?DB=i-ngd=Mkh*a@@U#`@DT=iUx( zy-dI#3#w-v3Zqkn_1a4rsYwLuq47q-4hZ#B3D2*^~3?^k4eV z=KFB&j^N8C0r~biFfCQ~$+-siUp9rbJD_c8#x9eNnjCb-rTW z(lc)F0+{ih1!GvIq|E|F0o75R^A287sGHv%wQ|7M-;zqsQs-P-Y`;CkWI9A}uPSwe-#0zIpH+QkZ(pKwikLQ{O_Il{pa3(7ah#_{ z5fesS(BkXa{88kKOq)kj9toGfnvOB7uVu^RrAk)1u#ST3APuA@i}+!v^vIanLZa3& zaC*wZ3ikJptNMLSao$#@J%>jt;kDW51OC0k3+}b4eX*i_1%W+QmNSfZ5W_fl>d1}| z4G$|!tP+_|btJ=m+A2!EMse}a{tdu`(W60YFBJ{nR5qu&JhAg_=KoY(H+>+sAck-G z{AsB#gL}?AcUdp&qyH}H9(HW|##@VIMF?qUmn4ruX(&-}cHsN`TDOcl0)Wul{;dF>i_lW8T{|H-Qdw%Ro{&x-%$2jF1wk;d8ApLDw>oPzX}q! z5nhBEytr>V?Uov&KKXOJR zZDwU-ub?P}!JzX3v4^esVD1a)7e#2%5pmahKS|}x$<03zduT^t?aTL^unCaFV)GHW zo`bujjAW;gsWo2^gvt7;cghg;Z#wIjrk&&04teaAP%TR2eT6b-U_5i;oC_};`ldN8 zbt(GMsz6Tr_vSAnO8MyUlwrrge)W9}+#(WBCDT2qGO)rPr&kiKzLCX|7^GdS zKG0QI9?^MmtBeoeK%dfiW@^&pi6n7ZNv``A#M+hekdi?Un?@)qKLz{)@2{Lb)VtlJ zp?4--N!S2erl>~_h%>XJjiYeZmsrL*6nj_s&mjgWRi3HruA3fGk3lFPqZfIvoI>{M z53TD%&q&0=d0v1|APS@@1z+4RO--Uzl?s~Wp&r}qyvXFOmK${{Jkd^`mzU@_B35d= z{;WF9xdfIW98^_~5*0LGv`g^}^^VHEPQ;_Ge^U$Ux?$EH-(j+L4NGX=M^j@bfp6I_ zacwFH@#SmTd4~c9LM}vR$hW3T)J^0(K@OcQ;a{DcsMj9ml&6J_@_Xj9 z=Y#JAx!ZJ^j}gQ)%u3EI1T{U~ZGM?5A^*25ok(jZhRn(?Prxm`MQal-l^+`H4qEb^ z7fH43fQq|Dz*ZOKy z7ztRP4$2h${PFh*vcr4_GB7S9Ot5{g)|4+hP`DJns0Xd*GZ>8Yg^J?h%LR^<(XS(Z zDqnh?IsecnL6K*G{$cfyFIf5-S~E|v|9)vZ-QxWbl^M4*#$gUBeD%5T3VWj{;0c~_ zH^}Cm)XI^Yj`_O#fA^}rB={FXzWSH#-R8+9kEu3xo_Flw<{Y@_(1Xom74MV5+X@_K zk0H3TTnM%FCQ#k~L*bJ1Gze~fQFM>}p@|%lRf-F)=rN7FEzdVA0VNXPbMLifVXdy@ zIFWLL#r%OgqoAj}&LG)<#3?%MPf}30Sceq606KR0M@`Yh?X)}W;^5O4IW+RlT?!jp zEZLXZ2N`w@_^J}K)Z5w)T}X@}mink$Xzp z1`7_Ap{*uosbe8;zr*6Z%YghJ6-zXk$m`wuw4(2z?7`J~$M z&{J6@^|NMRpMjk`5;P-J;`ijNuQyl5$VH&FwwammiY-OtajB18#j9oli>Mbjp*n%m zi?_~;>}cv4Cm2v>lNy$pLT1wGyShhG>xo5Lq|+Sns_t;b+2k+a)~``3ZId8X5YktC z%|u({^!EOeq@;jzI?c6>!Qx* zxi17FwbpW7nQ|mySL=soR+2l9f!ZB$n7el_ym{q0aDN$$J&Mj*Nsv`;F05YAS!$0? z-m+b2;Eh*&&9c3xB$;HjAoXRl-#L7C@d{tp)A=hx-O8ELw88>^Tv_Hd!4=}MQY+=^ zhRa2UM0|V@CG2U2N&<6_bw9cvyJ)_|RS#DOQA)!X#hnv4%O;>tBw_FPvk zM3foPW5Z0;C#BBjzfx)~IktNX+?g!elLRry=KZY|q;{j$1vULM-kAS(;mWYw$;(>X zs$UB|(g#c4-p;tovEDX%aOWQk?qT3JYX0*}M+3DSKDuYguM4OLTk1BEz@{=lVJb zoR`^s4!+8c!C>Lz6a>P+piMu*wN%0 z-Smx24%q0p`<$y~^L68|f1mn@5__DRN^WqSsuNt3t`aDB;_-Q( zxH`KTG4@5d;%b)YE3kE8=JBFLGs{Z3Ano^@V6%7ng*` zby{fNQAS*+*$=q?b7)IcyHW=OjYWd%<=TgTmchpkat`5Ao46kW#%?ToKN?HM@*`UM z@{d{0SjTCQr-&!6`#HZ>zVL-ml1y|k;IZr?h%D!?9XIf?2(4w-uQwP977d$rDE4_= zk*}pvC5;ew6lXTF3bM~;RU1T7!fAex)W-{nfk@WaL@%wy+J;%A9CY+bGvK@P)q89~ z4pJAG94*M~J3j_?5${eYQ>#ArrKm|%lzk%CoXc1%Q~chxu+l=YRCca@H;-c?|I zG04Qu*ZknF(lK1kb!i}18O(*?F}y$MKHex-i-~44Gm4rg==9OocvXWIBPafX1BF2H zy3vALkEYsMd1Z-nE+=A0=2{vqE=FWAaTwW>fJOUd85#X(!D@@qJW@Z)Dy`g&Bh#a4 zw@eZ#vN6)2VRbL3XqZCQz`N7N!{H$#2Z?y_{EMg97UmB%_7Q`tptp$lLgC_)OApN6 zGBnU{qB7!vypeCk$s5XxA2|7V=V7PBiq4C}9{$c`{7Rlu)Vlk4kqMop6wz9;WV zcini>8u)SDu?N#ueNUp=v_t76k(9SG;?VXXYtA?;f8q%0p)d4=o$7}&dcLn$&Ls8G zh5Kzu(?8i?tg{1d7Eq^H$4g6c8ifzp`nA+fgzgfIzd@|;zOw@f5#6mN%<}Poc>v9} zN2gXBGyz^F{r&OOF{xVR*EYx!A<7SaPUaacHe(fP`N_)8T)f|Wpe)v*+Bu}}2UnlO%(!oZbCnY`XrTH5rUxZH>ki`II#NX9 z!C|)c&4++}8{d$&y*%@b&^DD@$5Fk~+BTaI4kH{)9{qPj`@FV|<8tBB{40w6ZyJTa zQT`u$if8asI6nYu%9oZLMJ02qTEX)jM;87>uKVv%i+dnOj-@*1#$6iL6o#0LOb&E` zW>P0Y3S(cqiQ-IC-5z<;C7GhDzd1I=Z!Z7qaFxsCjeujag(@krj9ogO`#0SHHiH%ZtjVzr29+Bc#wT?;gy6L^lb0A&T`grZGiQx)jy70FtURlC ze$gFtBws7SCI5J8rThzFk@g0Q14!9Z{!wm{Z1R@ zUMj|xc@r(Oi0b)pfNo{HcxMB6VTZ)t9OxHi>HSk}oJV}Hn}aW}S`}jv-uCAiJ}!!u zmQNB!%W(Sl<9;R~@eX77s2zazAhL#!xocvP@o| z5#$er`Xq?%kvZ)`rFO^Z9@b15q{~3biI~N>;oomJIgh#3P)n-s8ol|&- zSU-#r!^ETr2#BZHFs;eV?2R}mDKvhz^^0V?<5_1E&N$=Ale6|>EnUTHhtHXD?y76d zp1g#LEc|H2mKtvW>sOVFJ)+0sQ#0JZ)@#1`c=4-}vGd1G2WNTxb~41}AC@!41a(s7 z4Ub7!?+V^YFl&p6U+=M)m)kMPoS~J=0slChD>y7Ze(c>q<=S;{nv&AhlV*j4hfxT|rD3xBFX{D!V&P#Wz#bZ2!Vjcd~A%Y{~ML2$@;CsuIs+n3AtS6Ln zcUgr;Sslvj-pOBDE%Y+sE~ ztyeb^Kgn=fii%#BzU=z_7)p%1+RD#&_DVx*a9PE0nUJewFWKk8cy{4e1*PdY8%#uj zsI5szJpd9~c}|}{%&D^$`S30_c=anAH<_ra&TLGu+V7t)n+HVO%jAQalqe}>3F8G) zLp#9NseKr9vln`IF>zMIS?C6U=N3^dsr3T6S|rP=pPSeC+3U`gH|*{Ttnn)W>+ZJE zT_G{xvq3%FI_?*&Zipp~8#dm91RCs;Ny?r6VF8%05G$sR1HH)YW&@m5ZGAt?sBI9y zj)Sh1liv$^ZTKqB#NKLx3AF+6tCv|n%iYF$yJTo2>BXT?xg?<**}rQ9;xh63B^I&h zfix$+I{UDyf2+7D&7<8(@bpVAPU`G)1pbwIU0F4>{eI14Pl10Kz4cYr4QA$=dr8ac zrL(c2_NMv{@^-gl7Xx1(MGx7%FJwyn zb&HlN2A29oP0>r80F@It)(q$!QEJu7F9#&U<_&QzdT3ni2CR+Jht5`U4s@v;R=)9xK8c@2;(GFQn`LJ{n0((^JJ@wI11T9oVQ7lb`ygos=h?ne63M2gp4m z>yxXi{<#4zPEMcqZ1U~j9-0b3_U8RH5?M(6U625I^8XzG{~09xTl++}B*(t}lMx3t z2#h{2;;d;c%!ILr&7fDIm3nDeB16k$<-H7%CJ(;F@5jcMNFd`+)9g{xpVRncq@4Bh z|8Ut%yxI|_b&=L7JaP)aFS3)J7R8`>|8V9Y62^3zC|o2w2Dq`$ubbHD?ou}0^3chp zExh^lnx{7!b+gXJqC3Y0cjD+zh1IN5*!8-O_zjO2o-smC<~9fa_HkjK_>&+s(O25E z$7C`h1x1|y@Xi#uR@3bX{aE`$M!;{eAhSDyAUI#7G_q{OAd^yIxT)%eKe6E;BHQn4 z^1y<_8PO{P6jesrX-!o@`#&og7LTfVM|Ics<)kx&s|p60^yUwXxDD2*?Y6hliragF zLhq5cr+h^3S$;Kpe=lf}HN*D2)aePV<8{UJ3*Q>~#&l=gF08hOg7VQpHx~}A6r{UQTRdX*t7)=n9_j_WTR$E>@`(brS zo=R=^l?&)uAU#dix2{?9bk+;w6ZKsrY`aBYAxbVv9ZPEI(*7!PW7O`_tw_J@hs}&f z+pOZxr`enzZ6^p5y6%+{V&nOca-kI`)JJj|A{55+$qOkUTVU8vyxJ}e2M_`vx1-*& z=hMbI&6(m{4_;CTaQ)E3@6kr+jxH@p;%1S&J;`spZk*6w8hUcf%G#sdu$87yV2X|Gc7)UBlKQpf1*Iru$w<_V&4y!Dz-nC74 zjDRc;()%YnAwWuUtXiGGKeV@+7*#=mhaP%2OK?@`6>FPK-iW#NlwRE{Ufz1(`~AlV zFVu_&XU$`@WkI_amo#O5Quh-DRIs@x*Xc345QAlN_O2I`3G8>Qeak+29Ipa2qXN*g zNCa;5;0wQ7vN?!%KaJG(3cfaiCWAUpA^vEnsW-&;d>V}?+P^ih=Fv0ooR+Gq6ipFG zXpi|8U#YPypFAa2R18wb%jA7(?a>P#Ng%rcSQfR8ppbFdNA#1xsJB(^VxAo+KYnL1 zI~8f3UXy2>pef1}x4#(b4$w<*DPS{Aqu%4;!R{Z~U|0B$;ewjX-Q*qu#zzn2y3PkaKe*kW9GFeb1VVeOWjeki%3-!*mS z<6toLvXNWR;zl1o7j?ccH7lXwGlEm=`tmB;221GSY6%7n|LEJJ)t;F8fGWg_o~|(3 zJ9jf@oTEMW&ci=A*9@&VAMscAl>(6La*DVaE4TK#eb};}^E%F@Q05<@P~U}7X1eiJaK(kTfmV%{ zj|oidsQqhGizcHS$=!FSa-iYNADXR=3s65I9yB`la^l0BGj*RPF342Mub;So*vn{K z^jqZ(|C)O!cxh_$FO9XKD#8X8_VG=Sq|;)lA&c-Tf}8aK%TDg&jX?Lsi&Zhb2TH_9 zw?*s9QCu1=ve5=5=q?`zjJOmUH7CQuVFu+R*YLWw?KE-wmALKp3yZ)-hC|*VyP^I`vi;+PZT?I1Yf@P-j{3)or@~cW%UO_Anw=J?J<{> zt>*KtynVwd(#0FV#FZFTR`oO0^r)IlcT!b(|HVO0<1*+}+`hSyPH>>&Ur8ZZb92M` z{|31+7Daxtw^)|uyDsS9!9py;#*?{#wH$R-enKgb(c+< zG=N}6MQ<4c@ZUf`f(}Td_xQJ)jtZ{ovj^*v3(pkglKl286_BG}7Mn^^j6|8oIp22x zzQ0*>Eh&X~UCK*Rf;y3wm0ZUwUur3jdI69trFVLq;+He1P&rjMbsZw;$`g6s0Ck`& zT~yiXA^8(x^0&YeD=GdoLjcbQ)i6sKB*PZmph@;p?84fQh)%0b>R?0VXsosUouasd zt{Rm8>$KFOieH=Ih@WsN?0-@2I!8xbK~Zj$ESNs!A6KAM@Vf zZaY!$w7T`epMvCAQ|I{Q-wG1rEeoJ;4Hd`d&XgWh|8neVEj8Wt`WgPh)guKJ{^JlNbj!Scn z6kNN)#nAo@iUR=}`X)m;0%0%XF(1t|ZxKQj%EDD!?_vK1z zxO$Xn#X^Yon$qhieQtQppQRx6_Ta#dX1ZQGcBtEyZf|!{OKiB&O3zP@fL)(C#E$>a zr9VKHu$sx5YO%qAm-Sx6ll|_R!Azp*el=MhY1DLNzh2|TWShg=Aw+^9;F zkXc$-(Wh)_BC~g9O+(a5RVDgyWKUHIn3X@y7K6##88H)BZE+MLvlu!ra*xx*S_Wvq>qZ;NN zmq|s6=0lVXRm0$3#n0UBa^@2u)9oX@`GY;V;cS&9__C~~xD2&Sdtca>-<%!!2IUtu zRk`MEu2)nW&}%oC?b17%s%cMRBa~vbRM|Zt*Q>(I<_KSfEWW_k97HAk+k$RzgcihB1AM$9o>vEskVE&gC5|MZ-U)V6|T|s z2y9MYnTh^>7W=6sQPp7}K=5)-hgak|LR->Ah01{1ojdWxo_H)n&0D3aazj&Aj(gPP z<1(z6!!1GwAXN`5As|SKGwVXLSOmz-Id=7`W9K#l@W--3qWSSO^< zR%SA!?OjG-kU=H&9;dlNBvFy!+_!VMa)*;)%UEg2V18+aG_> z{8B#WehsbZ1L8lJT<6bPae_+kGuqe-sR2j7Jx`^u)C|(E_J|N1m%qS8W;i=(2D?dj z$TKj<^Hvkp6b&ZBD=5?r?Wg@o;I!~b5eKZZXC`^5id(5<-daBJdz>x(jR8d9K|pNE zJ#>&;^9F-V4}mQ_{CWjGvb*~tO|}D@_4VmGYMim>mOAeE7g>)bvm^NdlJUfu3OSz> zc8tmm*;&{;W-dpWlj%nnW=hFcUe~_9AAPwxm>_O^V~dk-POJ7E_AC#|b3a8iFAoYH zOU{KX02}2@p6CVi+P8*F{elLXCWXwQgrT7gOO?^mG16WUQ7e^Lb?yfl0AZmOv4x^c zHXrB@Abv|q@wrBY-MIL^d!_=NL?ku;Ec9}6lDV^%yMylRm4r%%J-b23%}~ewoVsBq z!eF1e&hqk~{BQjK%KyJb!25L&%l@CzAB39D18;)$4aI6L9<7qiyV=Fc2UPBHg2V&F zA*N3JRSw_oU4QEnUi0-pjdOWm?}MpffG2VCP$Tm>y{UPz_1V)6Q&XAU6_%0s`EJUz zwKzzNZiIGBTIfs#wO!uBicKw+WEZ4hQ2L@gV_sLwj!thN7qDDgO6XYcMaBEYgSjv% zuRrkM695k?2EFF$HIiXf?ruZsHtrR<7Sg|PV!E*|wL1xcd9%%^qb`V+K|0N};y3k$ z*U?{!!IN4nBD0_kOm19xu{MZA8!py%C*0PWz>dstxYE%kJ{jff8Gh)=bJY@^R{*3a z(a9`5Xc(PvBH8Roh4lBQUVeQyF18x+pla=qmVKdB`pktVfuE{>T+4R!e(?ICdg#k5 zz`lx<;+_n@s+h zAE=j+tAj^1BCc=wXw_Ejk;Dqzj6f*>@XbY~oP9|$$DnJSh7|#}#Pc-Rg?6pkbQ2l0 zds#S+9B}4sss^9|fE*~1Eh&P1Kb^(+rSlKA$w^0g4SO!icH1QS+QZR8oq09H(yRpU zA_5=7&rSL(i#RN5TnBV5x~jy5*^G{YBsG6lD#(^TV|VY&FPByDZpM_?cJcd% zmMRcjiaF*dTv0epNQ7VfgM}4Nmb5PLXM0xA#X(JD6W`JWG=DUyD3s25$>f)c?~Y^N z-AjJ!t1MJIfe=ojHZ?Wz*h9A7h+|V+=e5`vEqKd5$d8x0=S}bLJj6tF$M_l^A7=@; zWO0gwvlpy~yUuyDNPqz1xKskz4xXcuzq$_`lD)RCswZu}n*N*q-(58S8;{WUr)Et`BwrPNR+Gw$gA0m2 zQ3AOG%=3~a{5dtckeLSv`|2Zp1HRL2X@0dOI6Y0FD14dL2-kB-@cqr|5ha^nj&a{R zxbn-S(B)LSfO+*H4)cUejGdM1o`ty>yV@Y5@8uav3b z33@fg=%e;E(?{#c=xt8-QW8h*BJ{}oJLB=H^EaCQkWUR{zxU(YD6|oKP|TCG66Vy= zgLKb38R`l%i*I;&GUz@4fEcFv)NXFS6Z3?Z3(a%;KXm>3CT>+Z=L-+fhef`;$=Xpm z%ZL5PBl?|m{!Uu{{HuTK`%8s%dIwe@?;&P6PiiFe&a4J$q{6N)JER`(<`>Xo!qy3f zmY9A1wbb5k&)&89rU3l4^CP{MRQfyj0SBq6-BILPf=dvfirPep&w1!bj_0_(o@lfC zFC`%f;afm(uJ3%|2$5pmY~U+K0!W}`+e0z(^_DM4IT&=|=9CnNbxxn|_&(ccxYTWx zJnp7%OnY>>&fh-OF(|Oo`?cBdtmz$jqN!HgOYPnMQ4nBI?j}$%Lo#pc&uG7I!w|r* z+EXj$2cfV!WR~}3vI_)VW$k!58#|ZBXo9(N`zl`QPo>bIU5{iq4j}huW8E}w?cb5d&+!*^%(Xz+1AiH2i`a7k~6KO7|zcNlJq`VJv zGYw?N_BYIU00iQfohj|@&2;XKZIXwoCzVupNOTO1S~t39*5LY;I%eKr_IS@=vjRYK z%okTiya0<(P}5KMdlj}%TYFN&Yo`MaHxMK;IAx*9YnE_XyhJO=h2x&Mc}1n{KUIb< z!0J>z7EKw5W`3e zJ+yMfsAtJ5kN_qdHj2-8=affRNVNubCO;6UobY$KS1}4ulGMaLN9&G1#!{dUj1a?U z2D(IMXng1D&xZ^vwFmxP!$LuczP?(7gBs2ffUQg(c8tdCsyrZtWu}da11_lnbBF53 zd*}W0a3?FyA7+r;$xft}_rUg7<`yy70F^HV`m%jrWJ$h#L*2U3&XnY7BKT&`vI!y1 zaoDqgD&=KVCz_GVn11|WNN5+1gvSUhPIyJ-9$7EdiL71sh`=8LWX)>fTA@!WRmt!3 zrD-SC6%KMyjl{Rn(S2W>?#)Q!|25RuzdX6h}zpK92t^fG{ZfxbNJgOwL&d&3_DsjpbO5p3^oQ{^ZG< z3squFq%9U%3AYFB%|EKlS#=5jhh-t%`#r+q*M)niY?Pa9K$`j-mbRXp*P@>B08S za3P)nqDjOCROk^>waN#)qJ?Z(FSqtj7Pn#2`8i)-z0`eZWdN_ekzk)jMlObQ-9gu? zOh0=Y=>>MJaDdJMu8T3i+YYD%yUq+P=10!BK+%Furu>@Xz`a-Ioi}~AQF~C#U+3(N2W!t9Fl-~lRA^~W+($)d zrLSGI6D3$WKIDwcC4L=2d?R!IYo32~`E?(F>HawA1&|GYESUcQHhausG_#_BPuD?y z%AFQ!6mu$JKbiQcNe@mO0~ zvP!=imFEY3et)Xj=)TkdDQLjVi30)arYX)cs14teQ{lhD&E%848DN{u1^mO9jR%LK znSKsuDM)-J+rQekD>cy!&~xZlH+LQ^kNj&@WLF dqxrSI<j@THS}*5UAGSTe*i)Y2BQD~ literal 0 HcmV?d00001 diff --git a/bsp/gd32/arm/docs/figures/scons_mdk5.png b/bsp/gd32/arm/docs/figures/scons_mdk5.png new file mode 100644 index 0000000000000000000000000000000000000000..d1327eb29e67a8a69cc26da90891d72bff2ec3b0 GIT binary patch literal 28837 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%0D3$`nj)~`rbwE;){zgFv7pD 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 literal 0 HcmV?d00001 diff --git a/bsp/gd32/arm/docs/figures/scons_success.png b/bsp/gd32/arm/docs/figures/scons_success.png new file mode 100644 index 0000000000000000000000000000000000000000..4e47ee50133a5e5695b0bead955ba18c9975d50b GIT binary patch literal 19572 zcmb@ucT^Km+b@cuqM~2}1gQ$5(v%`SH0f38HK=r?cM_T?s7UW!=@1}F6+#F~?=|!y zEukZX5EBwO0ervjJL|5y&RX}L`6FwXWM=l>v-k7-$}@b_(Ney8ndveG1;tfWm1i#~ zD9%47@BhAdf&3}#sJcc$!A_z2Ois@?V{?Yq_0Cx4Z#;U(l8od> zk89S(1}TF`3r!o%G(cx!+Rt*OJmeMYGE;@pK zz?XaoyH0;lh%0pb$xd$J@pes4-NgKKmxAI!IK}K%skHK=dg6>emgOWyNbZ|D8ay$(qu2gwKv1t*$&0$zy-;?|5s7_~SFD`_Bx% zu%r5i< zJ2sMQ1hZw2hVs|P^M<_9Q@UKMO#P|OWdeywmuowNA6$f{cw9=6(f-8jqkNB+wnJez z4?DpV-94!r-SMfM-*^Xi)OXl-i7~cW@G-&6t&uX^dZ|SoFn4qJgOq#8s`AB?>khX zMm*T6t=M<-8=9~L?{6!y#)dTCbH9s-`x{UZ_-yG)A z9jwTDGXbJ^L8Wt zN*n*sEW16ce~~{bBj$Z4VHfW5qD*3zi;|~)H)8*DhUIm((}tX@H8OZUc1fc?G$qoc zqu5dI9=cq6_Fno?Z_Os{cD!UqzYnZ+GC0 zNPkH2)V+AtVw1Mk`YoPIarzvIH);7h09vse6o z`e|u?Uqmu6ur6^~mZEmX+Y}OUdb!{alEfDt`$F!9uQ9;2Km|))!bM@qx+JIsh&mqzd723{bP7!!55dv-F?<7jQLkIrHe@pF_tdc%q-*JW-%`Y}>-* zB9XKX-4r}(u*GW%66%(}CTWhP%hVjoEnw@iJMwFR{Vs_8u;?yjkh3T-=nw8KRhE#@ zks`lELs4en%b$qDa@dxH@%}_V)of7Nf5yr4BDX7^_UI3-wG8!*4&tFU@LFBl~;-8lx5!`5PU*E|m2I)z&AM2OGD zQJ~g?YLySgF_ai=`{Ge(4}3p@Xe)ZS)z0a2n1LtkE=%tYYHwdjz`?c~dG3fhk7ynJ zq83OAn)T?HR-7sUS$!FHjw6qEP*38@}<~^h>nxK82li~8zNH+P(^mSmxa*O&0GO#~s)2^Fd zLzs`VZ7f$$uKl4VIV+)e?wa4<-wH#&-$yX;`TQP&X`UAhC2VXu_R0vrJqC$x2fZ$V z@j;|{+MpjxFvnz5X`B{m$@4d9bgj%spqq~kguoLvBa$hD=J4fRg>)z(nWS{UOLG=- zR}S2*=N%3!vu!P6=S=;y0W-=nEW9ps2oDK5gLSiUB$6wc-@L0(8vOU$=g*&0w!Ol? z%3#~BDw)8wKC362NCzB|8f8R}h&za*+V}lc?%zngm>|9*B4%u94GBT@zh%s8c-82A zhXVPHV7JCZI1wsup}bck!nBUit?b`H*qAe047l-Jnp{ecGJ)$uAl?RM(`!_Dttrny& zP0bzFfQgH2$p_mA;NgP6p}c#Y*@N>YrF}Au1_oeE^ira3w2EUv_(^2(%t_9g=ABE~ zj1Q+}?V-8~^xuUD26?Ef-7_G@{jtvdi*4KsWG!MqC7!PgP0K-PdtxqdAwe!_Tl)>)peo-V`{uL(s(`Ui z6exB3)I@;lHN?4V!QQkQJn~aqbEGYw<>BnZD&mH%OneZrJxDnB5Abj|xmVahF~<=K z9|e=Dp#i<08zANRk6xMHcApJislIGR!(3xACwV>a@MJ<%ad`Zw*;DmtwOm%;T|&92 z1P1%fHMQy<2Qz*i@ttJR^g+r&9s*ZUx19sUpq zUbv4BXG2&uHrnN>AITi4IoD5^xS*0`QcCLCd}uXrb&uLt10WK@1Sf$)Ye)>RuAW_; zfxbrx58n>Z4%~?Vsys~>LDzUPt@$)!SdO+Q=_)KyH@zt^;*2a}y!W{2tzIbQJ8E}K zoMe-MQJdu!%#q2~?z(#_PzU`*Dj_IHKI>@ACskS)2r4r@9QnI}%Gv8fkGi_X+H#4y z>d*j|w1gb{zWWV)_GrA{AB2VGNoF5rbmX?#ib~q|ch150>qhr3Zpu3N`sTk}3Sro( zyNiC>)$w%#0_6A^kzD3GvWh{(;rPt&X2UVB_t9<7^eu;}2{s*}@Aos2$ zTM3xg;?cF$bNAA(H@)e+3#glJ$Pj*1VIn&CN18j=oYH-q=G=v7IsRm2txe(Gl{o%v z%U4_m>@Tbq6358)^aBiHz9-OMUOT z=1vzZ9A0?GUS{($AkB|y>Tra6Yqgdj#uFzRHrzclb5qE*zni`ek4j%A;xQFqyt@#4 z(b*7(4>e3ttooZqDDPaBCOwQ{Nh>JrPJ<^EKl0j+zmc>EcdwLwziOr|%A+EPc!2t| zC*R+@yxXyK55-f7*@E8`Og#DnFqXON{`b#^jUE?Me%#R@T=1|ryTfl0v#gY*&1S$N zVt!z8_(4MxtZM+SET=rdX~3U$uW=4G z(Fa>~JY`POxS&Z}fI0%%ZX7G6p|!1!guQqUh0Cd6CwT1Oy-DPp##Iy;h2ZL45Hf&R_I7? zU8@#5B!POfqN%H|9PoG3Sd~~rKZ>!ZrNYg$dT5*e99DbYr#)k_H$&$$%j3SCS@Emd z3BQ?rIf?sZRlM{F14H=Zp`^^E&tp8@S7rh?@ke%40_M%|O}ZAg#%_$nQNG`Ep`BJ@ zTj)VPZYnJ8M`*H^>kB8$(lbHNjZo^O~n$!+%00PMKV7y zwsy8MtlW^=fZ+?&GgNZU@z4ZwOq5NkF>9d>}#1Pc|F)=lJ2t$ihC^ z(Q0(>DrmGn^WrS7! z51v78!Glt8EB+g_ze7%{xn25eJ2-1DhFFzmlO@mz3<#ZHjMU-xWh_yrcHfZz-Tt91 z`Xh%mr3AOUozP!sTy9qPXrBpCVWo|LB@*V|8GB`@b3*^=o(K$;~S ztDvR6FU^C=GIu4F+pH}u^+wT@g`;-?xG9X~g&JZYJ{Qz(4gTv^Hzyv2Rw|?G+%Drg zC3~06sBwB4`!UQ?M)wovZ1EJSi9s<^>cfT|lqP968idWpyvphbKUPUuw2?TUzH+{X zZEWZ7OnEX;#P4#s(cjpv2#u%SZ%JAsLFei?+xwPxS7BynG!pxcL9_88-plcWH=jaB z&|!D?eYRbi7v|&WoqcW=RAW!)4^wbp{4Ma{3(JyU{g*^9z{ujX%4To4;HVcXnbD z=YVPuV-&$B>qAz*_p*fqeV`ro!UkakdzTFhHY&~?Uw^;-sR4Rjk!QWIZZ0M05ci!{ zJtivQk?$(FHWh^~V@;wA+Lh@{j7VPUf*HVzvr>}hK+1qU4jvW18LzuzQ<%>sGRS_P zqka8NQjz{pW~*PhZmRy5AvmT_5+&bwE zMI^HH_cHuwal0FLw0~4No8ha?-*}Le1%K{$hc^^#OiDJ+Esit3o!AH3*pPOXD+gLmoz5u!7M=8LhJxiF$c#!CArVK zHecN((+p!txDa}oHt)XM!pg`Vos@daI2Lng!;6*6co#znKD7Mu$ZU+4m^_|+w_@Mqxh#B%5pw=$9(#gtkr+W zJH<8QbN?+H+Ma)WP}{XP@{V({j9(>Sq4UzBSdCf`g!;xaaIVzT#5le!dB?2iBo-H; z$p|3)9pBofMJ?FdTvJl!;Hg?GbZPjYHnXNKs)Sj2MIwJ@?B3^Hk%NZ!Wm(?Wu$Vja z+tS61xCw6;Lvkx*Lp=>BJW!wWxbE|e@lrn-_Nr+0P4VSrG{}01W_Wp3oQ>m?Ki*T3 zB<9(jEPi(?EWV=iZ>ol9pEpy;b#BT2Jow%_vp+@nUDM;O*|t9rM}w=iJLp&*n3o>nF`) zM)nnkghcL#zP_{UsTzG2HfEDQdm;7Su7;+?;| z&&uPHX1=iBwI@4YcDcb>-FyI0F}cgLm2VQKv?z92?~fnU?Qj>gCm#Lc_ET>Cp~O`= z$!*O74}fR%m=7Xys0vS*LfF7>efO8=y5OH@NZ0w$#KG)oK5?il zPQ)#jWNXHT1TzEBhK1&-_|iBJSXNTj%$l!9>neQA?u)n1d))1keZb`%iOZ0~vuxog zEW|A!g*>kuhaUh_(7jss066CL?Xx>0*=_i%o(S4HmUsF=A?u3Cs2ztw2=B%mZK(!! ziz)<4>(Xy4!Woz|3UU?09?QuiuZsO$P2xYKB6zd=^wdhy%Pr^v8MlE>qy=UOkzEqA zQ2IHlG}(%1^&VLITJVRYHAzsWG%&T6m0cO013B6B5QR z@*~VBZF##q#sFfz%IeaAEev2jQx2S2SCA;2F{CR3b7a=`JQPp96ZbQ2eqw(vSLv`3 zUABNn@&cQuw5q)B3Ab&lVi5^FOH~o#Hf#>rnB`nHPbrv^D7(PSB6z_ZKM4>;2 z_g>xldeo*6i9X|lT6xmxw?Bn=sq(7s_3pbZ%Je?`ht?i;-FaVxb%HkMlO-m4hHW~m zMsncb3@ERvC#nh<=yRaqrIQaHHM6VS)j0GOP+1!$wj16=*VdLh0D&c?0_J~E# zl}JRtanZo`KNKqc?jXIM2~@_e-@E@EUx+yqZuF)P+16!_(6kVKR%kv^!sarLEmS@r zT=fm`)POh9P;`BPbWt7p)oZ*3TN@S|Eb3c)yZyG*c#&}sc_d{i72WA}HN4Av zxZ4yy`hO^rFov(SrpAvqq4S4EEHD!bRDzX;ioaVwFj*V)+0p0ix`|1f_W4GwzqLaC zMQqJ>(XytN+TLD~FwVTl)G;c~HoI8ejShTV+Z}gXwKJ*2qb9MlALq-H-0v^87aw0& zijlB{7qM#SK1?-`*;lL82mRS|sSdMF%206GI{INHJ z`*tLbDAGYljNIPgyx=#%F=cbFHDu@Unhmb`UgaN$ioorUWQNy?{cMVv(6uYLbY0c9 zD9Kb4WBGoIe)YNAhw&5*?a0Ky44y#K`dAVXUCx?%|?;o$kpo* ztCu}L^^3tJ$upE6IsDk`G;A`yR+WgVNe@5tHAvInwDorgz`u42ds^Z*_-OBJi9vs) z1fo7Iz?|^V$&io+43aCK`#q*ySao10@z8eYb=w?upQ}BOQL3cd0G-`s@1W5cmy}I* zumtu7uguIM_JSd`f1W7+jo-lKoUgyIFApi7ZM{hh(z{%+xJFBUqE6QKjX3$v3_aHR zRe4J+8Iqu7QzF9bQc_iv^3Vli5W&I)5e$-h%jd07t3uy~c;gzM(p7Zx(HRZCy@XpH zgeM@@8o9Z;1$kbeOLXYUBIoZ3lWef@IUbvB1j3>^*`PfKOUJ*dj$GH|*0Ff+d7opZg!1m-E8mO=05+XRj6 z;dB>OX--vnJ}n*XkW#81qm3kgL3_(Uq#X^N58u$9UaLxJ5Wd%Ms3d`N9RDqhzYAO= zuS5FqX3Dx(&PZ_XRVwk()%SY>z?WN4&8@ltHP+jX(Bx0MJi~-CVdf37y*`)4_a5e> zYPsfk2Yu421p*)pjV9;HLnb|dIVuA(>T2(y;?ha%^~wO6dsT;CKmw8e#i4UMX%STT z-VihAi->ZYqX6gOAAr(g-%n^rSz4huym@q}_#BhL@p=mec+hAdsqZ_Lvr5eS`5JSZ zwoxO#trb9050c#xvkw#@F^)@Uf0dFI*d9BC=Un_qfUzS4Fn1q za^N~gONCkmRwjxF#~^BN!o#veJWtC6Betd0X?gg1onh(hj3?pM*8Im;Whr%K(=JO6 z)g!S0RXg11H`cfd$c1yolWgy7?|Z92(}3MxJ=h)>M(;rVR7{_B@7MBKztQRDm+Ia5 zeGrkBVd-ZEd|i(jJ*v+j)g56ectcbWAOk<9RQOpcGtZ%D?Hl^5w+%w-rIeJmcHO~Y z0_ej!BrDqnpYgIBR1l`tIA1O^o|Btuy5ukoVy+)^`L^C%raK8oOl}(2Eka;LOkZm z-P6cxqhphOgW#c8#$aCG4l%gRAYz**q-~SxDd)pBG>5L=R68Pk3q#t%5zu0c==1s@ zG&sThZ=u`?z*t$UCq`)p*$fZ+>c4ov>t7n{L6C&FL+33%$2 z$`+cmoaynZuy)X>*WQS6DyHVhQ~20(ec~y&1w0{>6*su`Xf^YbCSN?gu^-WXu#O`m&P3sn_3a5}ItY-OK9H*Rm0o@cDiQtqlgF zo3wYAWt?Z2@_ns1sOX1t{j2x0g^l*YU51uaAE|Gu5c7TeU@lERm)0s|R_sT16dhF2Imy1srr!y=3-Dn^rlaQLhfID1}usk#< z)*x%@g{Zk)_Gc|@YBNf-SS63Kbegwwc=n4$;;!n;Y*ftQCif;GHAWi7{p{1*cS`k7 zV!6ZO@e)Ge%b?*2IjtvAFXKI~^wp%TBx#2VS<71V6e%y>&ZymMJF%cBj7E}#1u+_H z_Nv?l>Os}-NT$~P!5us1^Q8-A{s8*777RtWX+;)LI?BC1MJ2SG&SKiRBlVRV3^;PN+VuN-Aom81(hyRQ@~Z1c3;xoN_l5`6)t z%tb;V-J~mnG*hJ+gVS=$yL|B?A5&Bap9>opI3aByADmjl3lte98T}>0q-&k|+V88_ zUt})-d%|b!eqVD}N9`HM&SWPajszZ^bLi`SEnQ)2MTYP6P?JWnnY+>s7M=eCkT_fa zHS0|Jc8-Vb^zrFLhfzJ|@_3e|T4?2k=ty<9x7qLRo4qt4B*@XZ@d|hmrJvgUk@Hd6 zA7_uZ$%+bNnc|Z7bpBNceX+R8D({@?=Voxj$1v;86PfUZtuiFK=gND!4-u`-mmZoM zd4|85QmFH2Un>3tHz0Mp^hFqN@i>HJ7bj?F<1?wlKAm>ui(lG}ri4_N&Ydmnu57Dw z2m@y|DJHKM*^qv{rHaz+BR1}Hcr3pZN?yvrd0*u3ypiFqzSpIsP4YW}Qk5 zgjj+`+4+=j*lqt!)Ax3*?B5VKHN~IyGnha}%c1?Z$1#Qf3LSr{%b*DDtDVO-0(8%A zGBU?J^5D!$poIA^f1gpXxu(n1@Tae*g=Tf8*6@N)q1C`_fx*Q&lyR9UnJ)+`TTQu+ zGGE@3X4~@T=Sw#Ec@R^&e}%&^;+$sN3&FKKU9=}TmmF*z?iqJpEn-cxroTVL3tS~; zkRQE62N*eUlG(`7wSDDZd_FDMp`iFPoWZel+FS}9%Kxhs88zR@(XODdMh&sg@U-i- zZn5QDvBK}&2|~L*qwcPeyRkx7wUHtm&il05f{o9*_9I^;uV>@T#IdF#wc=B7pVJtt zKKN~X@(hmSxP{g1el#$F%l^kXf?04gq&t?%wUHat{mie>Jm zE9^hfV?IbuIrMzdTqxavmrAXyMHZZuoZ4v8lEbn({@gV^3B8YjPq6#J!#&z)@Dd%H zN2i-FrevO3Z^~ABS*X8VwsgsK)m=_P@|&TGugX(RUl8#92#uNCGnXkH53i{EW==AC zN|KCgLeahOISmK1`>)#qm21?FG|CRH7Q)ZfNByct2rq!`Hfr-CX*Lp9Lw=bSO4YA^ z(idlwz{WA`lUhM6#wd7a)%yUMtJgQbfa?dQu8S?qMfNX#jtP8?VEnD#8QLA z9*3SG$4@m@n^(u`!THEA{ecdD9j2Mu=N0AQ5s9zYm#52F1VwAce5E-;F-nAHNF>!a za;|XBc%!nfQ5+7*W7e4yVMFbAC6)4Y(B-wKX$AICCP|ELa+~Av$OxJl;@OO7 zvuG*HC2<$#xq?)|_Iakawy0s2s%ciaHRD|HqX)GQmkCj%-)pdSxAmX!2S4nW>hh1Q zST>uw`fI^Lb8(9b0fH$;JZ|@(8ix_X_6EbLDLjLgm0ZY-5%^qrIXa1FWdN`9in-YkjF+e!J)(F*8B zdH{(4F>Cy`EnpBmYDUn@)YTOG)tLR1X0wTJ!~6G#j)3EkDLd8CA7bpx`YR3OZ|@#< zj$yMhst(dX>vO&>^!fDPd%5Yud_%b<_nzJ#)_tAN26|LLa68ux&BDa?7MJrfT?$yq ziuPZt8{NgWy|Rf>qB#aG*Yp&LxR#9}cbTer0{`LbWVH02~YQU*LS5 zwBp??@r9G(6fxpl=uaqq&xAWK3^m6U?s#D!IPiExYLD%m;X7qp{^fA6flj|kL&4xO z52K)c-=NJ^)2HD)q7FM*#KThYKSb1pD?WeyL#Nbpw*-0tY<>p859ncBd7dvX9ULwI z13dsO?!f2NFpYdGe+Ni{Mb6-zM;2_8a!#9HGL+^{M+L_9zOK+L;#CSQ`)jACY3pzE zqIy4Zwpm527e72KQ%tB7w*hAM-OS=3z^k3ZstG1CEH|2{|f9~ zR4o;74izb+*8YKG0QDIe;(KexGI=B$#?x{Qc8-+8zHJwlDM}Vqv;4Iup3W+mP0KKSi zIP3t=e5hOaTk!Gsa^;?Va=&<%Q9S+j69#lg*jSb+(t^n=$bKL1n!p+z1Yaqj)*Qz% zos@s{5{_OUpU);n?&?y zdY%>-SY>5RJ|ay5$L-4ZSym)p+93n)J^JGparS`O+1~0aX0zpRqW1ZM970HhqqF26 zecQAmH;tky{Qp4U^#8cyVp@j6t%h4V+mesfF>;DHcc!Pcg^u0i)`6mO#4$(f?A*yc zCvZH{6f0I&IH(5NP@L)ZUW~^FC}i)^`CCdfKf&B_cL$IC$P+9dA=425y!Pp=nV7i2 zcbK208Z_Itc{hiffya+P(b5&cmPag0| zDHnMs3KY&>yqGj6sJb=96N>+|Q=BX-j2RYZ^J{H4b7!7ya1f(H?ys5xdP!;M*X;N6 ziBaM$n6HCb>RnI285U5PaaFCGh?;+YgeEKh-PAC1zkaCoY`TW&_}KN6b{p~5J0liH z&kGrShZ<(NpHJ=)U%8RR9?Gb*T4{ksXI4_)d_`4Arn5`W`dB0$2-X-HFu9PEVs`<9 zA(~Q9?kvOm-!Tv=Z{r~{Dr@?ms^;W zuSaw?=sM3WKKO>BFBJ_o_Gb>XE)PH$q?@GfUm(c?*d#V5Dz_h_nmnl_hZWIf+<&q3 zMHa$P56O;)Td%*>_9ojKCZ3mZv7U;6X%Qc@oxat;(#|R$_=3jw?0F&O=;Cj=WNufw zr2a_O=;95tnBmn7l~QGY%)?hUO+%M7T3&ewrfRdrXIT`h629?_Kk-l+YGXUj5apzkCPxR_@+?I)YG1hQSJr_|!*_JMW`=NJ6&+{V!1JCq@OZwX1CmKvF zUe#Z#XTT!6al;3dQqDnt76G<9G*I4T!f@aeVH|Bg#E7 z*=?7eD3s_Q*gDqLmGT`j4auVII-ggv#NBPB`K#k`K%0;r?yZ%6t0(Tlm20D^zzNK} zG>s%e>B8@g3QnaL75Oqt4U2b{sY}{7p13>~-oQNnGMv?HSVp4L;|Gp!I%Jj_!2O2{ z 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%0Ak-APN3RoY!?FAK3W5fUnh)F2Xvx_a=Zj1@ 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 PIN: 0, 1...144 | +| GPIO | 支持 | PA0, PA1... ---> PIN: 0, 1...79 | | UART | 支持 | UART0 - UART4 | | I2C | 支持 | I2C1 | | SPI | 支持 | SPI0 - SPI2 | | SPI FLASH | 支持 | | +| ADC | 支持 | ADC0 - ADC2 | | **扩展模块** | **支持情况** | **备注** | | 暂无 | 暂不支持 | 暂不支持 | @@ -45,11 +60,11 @@ GD3103C-EVAL是-兆易创新推出的一款GD32F10X系列的评估板,最高 ### 快速上手 -本 BSP 为开发者提供 MDK5 工程,并且支持 GCC 开发环境,也可使用RT-Thread Studio开发。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 +本 BSP 为开发者提供 MDK4、MDK5 和 IAR 工程,并且支持 GCC 开发环境,也可使用RT-Thread Studio开发。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 #### 硬件连接 -使用数据线连接开发板到 PC,使用USB转TTL模块连接PA2(MCU TX)和PA3(MCU RX),打开电源开关。 +使用数据线连接开发板到 PC,使用USB转232连接USART1,打开电源开关。 #### 编译下载 @@ -81,7 +96,7 @@ msh > 3. 输入`pkgs --update`命令更新软件包。 -4. 输入`scons --target=mdk4/mdk5` 命令重新生成工程。 +4. 输入`scons --target=mdk4/mdk5/iar` 命令重新生成工程。 ## 注意事项 diff --git a/bsp/gd32/gd32103c-eval/SConscript b/bsp/gd32/arm/gd32103c-eval/SConscript similarity index 100% rename from bsp/gd32/gd32103c-eval/SConscript rename to bsp/gd32/arm/gd32103c-eval/SConscript diff --git a/bsp/gd32/gd32105c-eval/SConstruct b/bsp/gd32/arm/gd32103c-eval/SConstruct similarity index 94% rename from bsp/gd32/gd32105c-eval/SConstruct rename to bsp/gd32/arm/gd32103c-eval/SConstruct index 4ae47cd02f..4e87945853 100644 --- a/bsp/gd32/gd32105c-eval/SConstruct +++ b/bsp/gd32/arm/gd32103c-eval/SConstruct @@ -5,7 +5,7 @@ import rtconfig if os.getenv('RTT_ROOT'): RTT_ROOT = os.getenv('RTT_ROOT') else: - RTT_ROOT = os.path.normpath(os.getcwd() + '/../../..') + RTT_ROOT = os.path.normpath(os.getcwd() + '/../../../..') sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] try: @@ -26,7 +26,7 @@ env = Environment(tools = ['mingw'], LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) env.PrependENVPath('PATH', rtconfig.EXEC_PATH) -if rtconfig.PLATFORM in ['iccarm']: +if rtconfig.PLATFORM == 'iar': env.Replace(CCCOM = ['$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES']) env.Replace(ARFLAGS = ['']) env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map') diff --git a/bsp/gd32/gd32103c-eval/applications/SConscript b/bsp/gd32/arm/gd32103c-eval/applications/SConscript similarity index 100% rename from bsp/gd32/gd32103c-eval/applications/SConscript rename to bsp/gd32/arm/gd32103c-eval/applications/SConscript diff --git a/bsp/gd32/gd32103c-eval/applications/main.c b/bsp/gd32/arm/gd32103c-eval/applications/main.c similarity index 91% rename from bsp/gd32/gd32103c-eval/applications/main.c rename to bsp/gd32/arm/gd32103c-eval/applications/main.c index d13b24ab50..139fe2567f 100644 --- a/bsp/gd32/gd32103c-eval/applications/main.c +++ b/bsp/gd32/arm/gd32103c-eval/applications/main.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2022, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/gd32/arm/gd32103c-eval/board/Kconfig b/bsp/gd32/arm/gd32103c-eval/board/Kconfig new file mode 100644 index 0000000000..5524f2b139 --- /dev/null +++ b/bsp/gd32/arm/gd32103c-eval/board/Kconfig @@ -0,0 +1,211 @@ +menu "Hardware Drivers Config" + +config SOC_SERIES_GD32F10x + bool + default y + +config SOC_GD32103V + bool + select SOC_SERIES_GD32F10x + select RT_USING_COMPONENTS_INIT + select RT_USING_USER_MAIN + default y + +menu "Onboard Peripheral Drivers" + +endmenu + +menu "On-chip Peripheral Drivers" + + config BSP_USING_GPIO + bool "Enable GPIO" + select RT_USING_PIN + default y + + menuconfig BSP_USING_UART + bool "Enable UART" + default y + select RT_USING_SERIAL + if BSP_USING_UART + config BSP_USING_UART0 + bool "Enable UART0" + default n + + config BSP_UART0_RX_USING_DMA + bool "Enable UART0 RX DMA" + depends on BSP_USING_UART0 + select RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART1 + bool "Enable UART1" + default y + + config BSP_UART1_RX_USING_DMA + bool "Enable UART1 RX DMA" + depends on BSP_USING_UART1 + select RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART2 + bool "Enable UART2" + default n + + config BSP_UART2_RX_USING_DMA + bool "Enable UART2 RX DMA" + depends on BSP_USING_UART2 + select RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART3 + bool "Enable UART3" + default n + + config BSP_UART3_RX_USING_DMA + bool "Enable UART3 RX DMA" + depends on BSP_USING_UART3 + select RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART4 + bool "Enable UART4" + default n + + config BSP_UART4_RX_USING_DMA + bool "Enable UART4 RX DMA" + depends on BSP_USING_UART4 + select RT_SERIAL_USING_DMA + default n + endif + + menuconfig BSP_USING_SPI + bool "Enable SPI BUS" + default n + select RT_USING_SPI + if BSP_USING_SPI + config BSP_USING_SPI1 + bool "Enable SPI1 BUS" + default n + + config BSP_SPI1_TX_USING_DMA + bool "Enable SPI1 TX DMA" + depends on BSP_USING_SPI1 + default n + + config BSP_SPI1_RX_USING_DMA + bool "Enable SPI1 RX DMA" + depends on BSP_USING_SPI1 + select BSP_SPI1_TX_USING_DMA + default n + endif + + menuconfig BSP_USING_I2C1 + bool "Enable I2C1 BUS (software simulation)" + default n + select RT_USING_I2C + select RT_USING_I2C_BITOPS + select RT_USING_PIN + if BSP_USING_I2C1 + config BSP_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 1 216 + default 24 + config BSP_I2C1_SDA_PIN + int "I2C1 sda pin number" + range 1 216 + default 25 + endif + + menuconfig BSP_USING_ADC + bool "Enable ADC" + default n + select RT_USING_ADC + if BSP_USING_ADC + config BSP_USING_ADC0 + bool "Enable ADC0" + default n + + config BSP_USING_ADC1 + bool "Enable ADC1" + default n + + config BSP_USING_ADC2 + bool "Enable ADC2" + default n + endif + + menuconfig BSP_USING_TIM + bool "Enable timer" + default n + select RT_USING_HWTIMER + if BSP_USING_TIM + config BSP_USING_TIM10 + bool "Enable TIM10" + default n + + config BSP_USING_TIM11 + bool "Enable TIM11" + default n + + config BSP_USING_TIM12 + bool "Enable TIM13" + default n + endif + + menuconfig BSP_USING_ONCHIP_RTC + bool "Enable RTC" + select RT_USING_RTC + default n + if BSP_USING_ONCHIP_RTC + choice + prompt "Select clock source" + default BSP_RTC_USING_LSE + + config BSP_RTC_USING_LSE + bool "RTC USING LSE" + + config BSP_RTC_USING_LSI + bool "RTC USING LSI" + endchoice + endif + + config BSP_USING_WDT + bool "Enable Watchdog Timer" + select RT_USING_WDT + default n + + config BSP_USING_SDIO + bool "Enable SDIO" + select RT_USING_SDIO + select RT_USING_DFS + default n + + config BSP_USING_USBD + bool "Enable USB Device" + select RT_USING_USB_DEVICE + default n + + menuconfig BSP_USING_USBH + bool "Enable USB Host" + select RT_USING_USB_HOST + default n + if BSP_USING_USBH + menuconfig RT_USBH_MSTORAGE + bool "Enable Udisk Drivers" + default n + if RT_USBH_MSTORAGE + config UDISK_MOUNTPOINT + string "Udisk mount dir" + default "/" + endif + endif + + source "../libraries/gd32_drivers/Kconfig" + +endmenu + +menu "Board extended module Drivers" + +endmenu + +endmenu diff --git a/bsp/gd32/gd32103c-eval/board/SConscript b/bsp/gd32/arm/gd32103c-eval/board/SConscript similarity index 84% rename from bsp/gd32/gd32103c-eval/board/SConscript rename to bsp/gd32/arm/gd32103c-eval/board/SConscript index 0762046a90..95b0a6e9ac 100644 --- a/bsp/gd32/gd32103c-eval/board/SConscript +++ b/bsp/gd32/arm/gd32103c-eval/board/SConscript @@ -15,11 +15,11 @@ path = [cwd] startup_path_prefix = SDK_LIB -if rtconfig.PLATFORM in ['gcc']: +if rtconfig.CROSS_TOOL == 'gcc': src += [startup_path_prefix + '/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_hd.s'] -elif rtconfig.PLATFORM in ['armcc', 'armclang']: +elif rtconfig.CROSS_TOOL == 'keil': src += [startup_path_prefix + '/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_hd.s'] -elif rtconfig.PLATFORM in ['iccarm']: +elif rtconfig.CROSS_TOOL == 'iar': src += [startup_path_prefix + '/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_hd.s'] CPPDEFINES = ['GD32F10X_HD'] diff --git a/bsp/gd32/gd32105r-start/board/board.c b/bsp/gd32/arm/gd32103c-eval/board/board.c similarity index 100% rename from bsp/gd32/gd32105r-start/board/board.c rename to bsp/gd32/arm/gd32103c-eval/board/board.c diff --git a/bsp/gd32/gd32103c-eval/board/board.h b/bsp/gd32/arm/gd32103c-eval/board/board.h similarity index 95% rename from bsp/gd32/gd32103c-eval/board/board.h rename to bsp/gd32/arm/gd32103c-eval/board/board.h index 2eb804a9af..0bf3e288a4 100644 --- a/bsp/gd32/gd32103c-eval/board/board.h +++ b/bsp/gd32/arm/gd32103c-eval/board/board.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2022, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/gd32/gd32103c-eval/board/gd32f10x_libopt.h b/bsp/gd32/arm/gd32103c-eval/board/gd32f10x_libopt.h similarity index 100% rename from bsp/gd32/gd32103c-eval/board/gd32f10x_libopt.h rename to bsp/gd32/arm/gd32103c-eval/board/gd32f10x_libopt.h diff --git a/bsp/gd32/gd32103c-eval/board/linker_scripts/link.icf b/bsp/gd32/arm/gd32103c-eval/board/linker_scripts/link.icf similarity index 100% rename from bsp/gd32/gd32103c-eval/board/linker_scripts/link.icf rename to bsp/gd32/arm/gd32103c-eval/board/linker_scripts/link.icf diff --git a/bsp/gd32/gd32103c-eval/board/linker_scripts/link.ld b/bsp/gd32/arm/gd32103c-eval/board/linker_scripts/link.ld similarity index 98% rename from bsp/gd32/gd32103c-eval/board/linker_scripts/link.ld rename to bsp/gd32/arm/gd32103c-eval/board/linker_scripts/link.ld index 7bacb5ab4a..29fdadf318 100644 --- a/bsp/gd32/gd32103c-eval/board/linker_scripts/link.ld +++ b/bsp/gd32/arm/gd32103c-eval/board/linker_scripts/link.ld @@ -1,5 +1,5 @@ /* - * linker script for GD32F30x with GNU ld + * linker script for GD32F10x with GNU ld * BruceOu 2021-12-18 */ diff --git a/bsp/gd32/gd32103c-eval/board/linker_scripts/link.sct b/bsp/gd32/arm/gd32103c-eval/board/linker_scripts/link.sct similarity index 100% rename from bsp/gd32/gd32103c-eval/board/linker_scripts/link.sct rename to bsp/gd32/arm/gd32103c-eval/board/linker_scripts/link.sct diff --git a/bsp/gd32/arm/gd32103c-eval/figures/board.jpg b/bsp/gd32/arm/gd32103c-eval/figures/board.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7a80e45af04d89ca94bc135535a5cf9267c81395 GIT binary patch literal 180816 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 bmiM+T_Hyp=|L2QU^uLnU|Kr8_Z}R^DXoVoK literal 0 HcmV?d00001 diff --git a/bsp/gd32/arm/gd32103c-eval/project.ewd b/bsp/gd32/arm/gd32103c-eval/project.ewd new file mode 100644 index 0000000000..7e329366d3 --- /dev/null +++ b/bsp/gd32/arm/gd32103c-eval/project.ewd @@ -0,0 +1,3056 @@ + + + 3 + + Debug + + ARM + + 1 + + C-SPY + 2 + + 32 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 1 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 1 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 32 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 0 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 0 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 0 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 0 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/bsp/gd32/arm/gd32103c-eval/project.ewp b/bsp/gd32/arm/gd32103c-eval/project.ewp new file mode 100644 index 0000000000..27d7f5757f --- /dev/null +++ b/bsp/gd32/arm/gd32103c-eval/project.ewp @@ -0,0 +1,2316 @@ + + + 3 + + Debug + + ARM + + 1 + + General + 3 + + 33 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + + Release + + ARM + + 0 + + General + 3 + + 33 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + Compiler + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\stdlib.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscalls.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\time.c + + + + CPU + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\backtrace.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m3\context_iar.S + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m3\cpuport.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\showmem.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\completion.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\dataqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\misc\pin.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\pipe.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringbuffer.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\serial\serial.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\waitqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\workqueue.c + + + + Drivers + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_gpio.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_usart.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\IAR\startup_gd32f10x_hd.s + + + + Finsh + + $PROJ_DIR$\..\..\..\..\components\finsh\cmd.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\shell.c + + + + Kernel + + $PROJ_DIR$\..\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\..\src\device.c + + + $PROJ_DIR$\..\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\..\src\scheduler.c + + + $PROJ_DIR$\..\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\..\src\timer.c + + + + Libraries + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_exti.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_gpio.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_misc.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_rcu.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_usart.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\system_gd32f10x.c + + + + POSIX + + diff --git a/bsp/gd32/arm/gd32103c-eval/project.eww b/bsp/gd32/arm/gd32103c-eval/project.eww new file mode 100644 index 0000000000..c2cb02eb1e --- /dev/null +++ b/bsp/gd32/arm/gd32103c-eval/project.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\project.ewp + + + + + diff --git a/bsp/gd32/arm/gd32103c-eval/project.uvoptx b/bsp/gd32/arm/gd32103c-eval/project.uvoptx new file mode 100644 index 0000000000..f8ed3597eb --- /dev/null +++ b/bsp/gd32/arm/gd32103c-eval/project.uvoptx @@ -0,0 +1,784 @@ + + + + 1.0 + +

### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 3 + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC800 -FD20000000 -FF0GD32F10x_HD -FL040000 -FS08000000 -FP0($$Device:GD32F103VC$Flash\GD32F10x_HD.FLM) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + Applications + 0 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + applications\main.c + main.c + 0 + 0 + + + + + Compiler + 0 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c + syscalls.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c + syscall_mem.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\time.c + time.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\stdlib.c + stdlib.c + 0 + 0 + + + + + CPU + 0 + 0 + 0 + 0 + + 3 + 6 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 3 + 7 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 3 + 8 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\backtrace.c + backtrace.c + 0 + 0 + + + 3 + 9 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m3\cpuport.c + cpuport.c + 0 + 0 + + + 3 + 10 + 2 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m3\context_rvds.S + context_rvds.S + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 4 + 11 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 4 + 12 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 4 + 13 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\workqueue.c + workqueue.c + 0 + 0 + + + 4 + 14 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\dataqueue.c + dataqueue.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\pipe.c + pipe.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\completion.c + completion.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\waitqueue.c + waitqueue.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\serial\serial.c + serial.c + 0 + 0 + + + + + Drivers + 0 + 0 + 0 + 0 + + 5 + 20 + 2 + 0 + 0 + 0 + ..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\ARM\startup_gd32f10x_hd.s + startup_gd32f10x_hd.s + 0 + 0 + + + 5 + 21 + 1 + 0 + 0 + 0 + board\board.c + board.c + 0 + 0 + + + 5 + 22 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 5 + 23 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_usart.c + drv_usart.c + 0 + 0 + + + + + Finsh + 0 + 0 + 0 + 0 + + 6 + 24 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 6 + 25 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 6 + 26 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + + + Kernel + 0 + 0 + 0 + 0 + + 7 + 27 + 1 + 0 + 0 + 0 + ..\..\..\..\src\thread.c + thread.c + 0 + 0 + + + 7 + 28 + 1 + 0 + 0 + 0 + ..\..\..\..\src\clock.c + clock.c + 0 + 0 + + + 7 + 29 + 1 + 0 + 0 + 0 + ..\..\..\..\src\irq.c + irq.c + 0 + 0 + + + 7 + 30 + 1 + 0 + 0 + 0 + ..\..\..\..\src\components.c + components.c + 0 + 0 + + + 7 + 31 + 1 + 0 + 0 + 0 + ..\..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 7 + 32 + 1 + 0 + 0 + 0 + ..\..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 7 + 33 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mempool.c + mempool.c + 0 + 0 + + + 7 + 34 + 1 + 0 + 0 + 0 + ..\..\..\..\src\idle.c + idle.c + 0 + 0 + + + 7 + 35 + 1 + 0 + 0 + 0 + ..\..\..\..\src\scheduler.c + scheduler.c + 0 + 0 + + + 7 + 36 + 1 + 0 + 0 + 0 + ..\..\..\..\src\device.c + device.c + 0 + 0 + + + 7 + 37 + 1 + 0 + 0 + 0 + ..\..\..\..\src\timer.c + timer.c + 0 + 0 + + + 7 + 38 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mem.c + mem.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\object.c + object.c + 0 + 0 + + + + + Libraries + 0 + 0 + 0 + 0 + + 8 + 40 + 1 + 0 + 0 + 0 + ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_exti.c + gd32f10x_exti.c + 0 + 0 + + + 8 + 41 + 1 + 0 + 0 + 0 + ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_gpio.c + gd32f10x_gpio.c + 0 + 0 + + + 8 + 42 + 1 + 0 + 0 + 0 + ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_misc.c + gd32f10x_misc.c + 0 + 0 + + + 8 + 43 + 1 + 0 + 0 + 0 + ..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\system_gd32f10x.c + system_gd32f10x.c + 0 + 0 + + + 8 + 44 + 1 + 0 + 0 + 0 + ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_rcu.c + gd32f10x_rcu.c + 0 + 0 + + + 8 + 45 + 1 + 0 + 0 + 0 + ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_usart.c + gd32f10x_usart.c + 0 + 0 + + + + + ::CMSIS + 0 + 0 + 0 + 1 + + + diff --git a/bsp/gd32/gd32103c-eval/project.uvproj b/bsp/gd32/arm/gd32103c-eval/project.uvproj similarity index 98% rename from bsp/gd32/gd32103c-eval/project.uvproj rename to bsp/gd32/arm/gd32103c-eval/project.uvproj index 44657ee758..4308ad819f 100644 --- a/bsp/gd32/gd32103c-eval/project.uvproj +++ b/bsp/gd32/arm/gd32103c-eval/project.uvproj @@ -12,10 +12,10 @@ GD32F103VC GigaDevice - IRAM(0x20000000-0x20018000) IROM(0x08000000-0x08040000) CLOCK(10800000) CPUTYPE("Cortex-M3") + IRAM(0x20000000-0x2000C000) IROM(0x08000000-0x08040000) CLOCK(8000000) CPUTYPE("Cortex-M3") - "Startup\GD\GD32F10x\startup_gd32f10x.s" ("GD32F10x Startup Code") - UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F10x_3MB -FS08000000 -FL0100000) + "Startup\GD\GD32F10x\startup_gd32f10x_hd.s" ("GD32F10x Startup Code") + UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F10x_HD -FS08000000 -FL040000) 0 gd32f10x0.h @@ -27,7 +27,7 @@ - SFD\GD\GD32F10x\GD32F10x.SFR + SFD\GD\GD32F10x\GD32F10x_HD.SFR 0 0 @@ -456,6 +456,13 @@ CPU + + + backtrace.c + 1 + ..\..\..\libcpu\arm\common\backtrace.c + + showmem.c @@ -472,9 +479,9 @@ - backtrace.c + cpuport.c 1 - ..\..\..\libcpu\arm\common\backtrace.c + ..\..\..\libcpu\arm\cortex-m3\cpuport.c @@ -484,51 +491,9 @@ ..\..\..\libcpu\arm\cortex-m3\context_rvds.S - - - cpuport.c - 1 - ..\..\..\libcpu\arm\cortex-m3\cpuport.c - - DeviceDrivers - - - waitqueue.c - 1 - ..\..\..\components\drivers\ipc\waitqueue.c - - - - - ringbuffer.c - 1 - ..\..\..\components\drivers\ipc\ringbuffer.c - - - - - ringblk_buf.c - 1 - ..\..\..\components\drivers\ipc\ringblk_buf.c - - - - - dataqueue.c - 1 - ..\..\..\components\drivers\ipc\dataqueue.c - - - - - completion.c - 1 - ..\..\..\components\drivers\ipc\completion.c - - workqueue.c @@ -543,6 +508,41 @@ ..\..\..\components\drivers\ipc\pipe.c + + + ringbuffer.c + 1 + ..\..\..\components\drivers\ipc\ringbuffer.c + + + + + waitqueue.c + 1 + ..\..\..\components\drivers\ipc\waitqueue.c + + + + + dataqueue.c + 1 + ..\..\..\components\drivers\ipc\dataqueue.c + + + + + ringblk_buf.c + 1 + ..\..\..\components\drivers\ipc\ringblk_buf.c + + + + + completion.c + 1 + ..\..\..\components\drivers\ipc\completion.c + + pin.c @@ -615,48 +615,6 @@ Kernel - - - thread.c - 1 - ..\..\..\src\thread.c - - - - - mem.c - 1 - ..\..\..\src\mem.c - - - - - components.c - 1 - ..\..\..\src\components.c - - - - - object.c - 1 - ..\..\..\src\object.c - - - - - ipc.c - 1 - ..\..\..\src\ipc.c - - - - - idle.c - 1 - ..\..\..\src\idle.c - - kservice.c @@ -666,16 +624,9 @@ - device.c + thread.c 1 - ..\..\..\src\device.c - - - - - mempool.c - 1 - ..\..\..\src\mempool.c + ..\..\..\src\thread.c @@ -687,9 +638,9 @@ - timer.c + object.c 1 - ..\..\..\src\timer.c + ..\..\..\src\object.c @@ -706,6 +657,55 @@ ..\..\..\src\scheduler.c + + + timer.c + 1 + ..\..\..\src\timer.c + + + + + mempool.c + 1 + ..\..\..\src\mempool.c + + + + + mem.c + 1 + ..\..\..\src\mem.c + + + + + idle.c + 1 + ..\..\..\src\idle.c + + + + + device.c + 1 + ..\..\..\src\device.c + + + + + components.c + 1 + ..\..\..\src\components.c + + + + + ipc.c + 1 + ..\..\..\src\ipc.c + + Libraries diff --git a/bsp/gd32/gd32103c-eval/project.uvprojx b/bsp/gd32/arm/gd32103c-eval/project.uvprojx similarity index 75% rename from bsp/gd32/gd32103c-eval/project.uvprojx rename to bsp/gd32/arm/gd32103c-eval/project.uvprojx index 52c9ada262..dc6a4f6c87 100644 --- a/bsp/gd32/gd32103c-eval/project.uvprojx +++ b/bsp/gd32/arm/gd32103c-eval/project.uvprojx @@ -1,7 +1,10 @@ + 2.1 +
### uVision Project, (C) Keil Software
+ rt-thread @@ -13,31 +16,31 @@ GD32F103VC GigaDevice - GigaDevice.GD32F10x_DFP.2.0.1 - http://www.keil.com/pack/ - IRAM(0x20000000,0x0000C000) IROM(0x08000000,0x00040000) CPUTYPE("Cortex-M3") CLOCK(10800000) ELITTLE - - - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F10x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F103VC$Flash\GD32F10x_CL.FLM)) + GigaDevice.GD32F10x_DFP.2.0.2 + http://gd32mcu.com/data/documents/pack/ + IRAM(0x20000000,0x0000C000) IROM(0x08000000,0x00040000) CPUTYPE("Cortex-M3") CLOCK(8000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F10x_HD -FS08000000 -FL040000 -FP0($$Device:GD32F103VC$Flash\GD32F10x_HD.FLM)) 0 $$Device:GD32F103VC$Device\Include\gd32f10x.h - - - - - - - - - - $$Device:GD32F103VC$SVD\GD32F10x\GD32F10x_CL.svd + + + + + + + + + + $$Device:GD32F103VC$SVD\GD32F10x\GD32F10x_HD.svd 0 0 - - - - - + + + + + 0 0 @@ -59,8 +62,8 @@ 0 0 - - + + 0 0 0 @@ -69,8 +72,8 @@ 0 0 - - + + 0 0 0 @@ -80,14 +83,14 @@ 1 0 fromelf --bin !L --output rtthread.bin - + 0 0 0 0 0 - + 0 @@ -101,8 +104,8 @@ 0 0 3 - - + + 1 @@ -111,7 +114,7 @@ DCM.DLL -pCM3 SARMCM3.DLL - + TCM.DLL -pCM3 @@ -135,11 +138,11 @@ 1 BIN\UL2CM3.DLL - - - - - + + + + + 0 @@ -172,7 +175,7 @@ 0 0 "Cortex-M3" - + 0 0 0 @@ -306,7 +309,7 @@ 0x0 - + 1 @@ -333,10 +336,10 @@ 0 0 - + USE_STDPERIPH_DRIVER, GD32F10X_HD, __RTTHREAD__, RT_USING_ARM_LIBC, __CLK_TCK=RT_TICK_PER_SECOND - - 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\gd32_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Include;..\libraries\GD32F10x_Firmware_Library\CMSIS;..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Include;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc + + 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\gd32_drivers;..\..\..\..\components\finsh;.;..\..\..\..\include;..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Include;..\libraries\GD32F10x_Firmware_Library\CMSIS;..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Include;..\..\..\..\components\libc\posix\io\poll;..\..\..\..\components\libc\posix\io\stdio;..\..\..\..\components\libc\posix\ipc @@ -351,10 +354,10 @@ 0 4 - - - - + + + + @@ -366,13 +369,13 @@ 0 0x08000000 0x20000000 - + .\gd32_rom.ld - - - - - + + + + + @@ -393,132 +396,102 @@ syscalls.c 1 - ..\..\..\components\libc\compilers\armlibc\syscalls.c + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c - - syscall_mem.c 1 - ..\..\..\components\libc\compilers\armlibc\syscall_mem.c + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c - - - - stdlib.c - 1 - ..\..\..\components\libc\compilers\common\stdlib.c - - - time.c 1 - ..\..\..\components\libc\compilers\common\time.c + ..\..\..\..\components\libc\compilers\common\time.c + + + stdlib.c + 1 + ..\..\..\..\components\libc\compilers\common\stdlib.c
CPU - - - backtrace.c - 1 - ..\..\..\libcpu\arm\common\backtrace.c - - div0.c 1 - ..\..\..\libcpu\arm\common\div0.c + ..\..\..\..\libcpu\arm\common\div0.c - - showmem.c 1 - ..\..\..\libcpu\arm\common\showmem.c + ..\..\..\..\libcpu\arm\common\showmem.c + + + backtrace.c + 1 + ..\..\..\..\libcpu\arm\common\backtrace.c - - cpuport.c 1 - ..\..\..\libcpu\arm\cortex-m3\cpuport.c + ..\..\..\..\libcpu\arm\cortex-m3\cpuport.c - - context_rvds.S 2 - ..\..\..\libcpu\arm\cortex-m3\context_rvds.S + ..\..\..\..\libcpu\arm\cortex-m3\context_rvds.S DeviceDrivers - - - pipe.c - 1 - ..\..\..\components\drivers\ipc\pipe.c - - ringbuffer.c 1 - ..\..\..\components\drivers\ipc\ringbuffer.c + ..\..\..\..\components\drivers\ipc\ringbuffer.c - - - - workqueue.c - 1 - ..\..\..\components\drivers\ipc\workqueue.c - - - - - waitqueue.c - 1 - ..\..\..\components\drivers\ipc\waitqueue.c - - - - - dataqueue.c - 1 - ..\..\..\components\drivers\ipc\dataqueue.c - - - ringblk_buf.c 1 - ..\..\..\components\drivers\ipc\ringblk_buf.c + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + workqueue.c + 1 + ..\..\..\..\components\drivers\ipc\workqueue.c + + + dataqueue.c + 1 + ..\..\..\..\components\drivers\ipc\dataqueue.c + + + pipe.c + 1 + ..\..\..\..\components\drivers\ipc\pipe.c - - completion.c 1 - ..\..\..\components\drivers\ipc\completion.c + ..\..\..\..\components\drivers\ipc\completion.c + + + waitqueue.c + 1 + ..\..\..\..\components\drivers\ipc\waitqueue.c - - pin.c 1 - ..\..\..\components\drivers\misc\pin.c + ..\..\..\..\components\drivers\misc\pin.c - - serial.c 1 - ..\..\..\components\drivers\serial\serial.c + ..\..\..\..\components\drivers\serial\serial.c @@ -530,22 +503,16 @@ 2 ..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\ARM\startup_gd32f10x_hd.s - - board.c 1 board\board.c - - drv_gpio.c 1 ..\libraries\gd32_drivers\drv_gpio.c - - drv_usart.c 1 @@ -559,21 +526,17 @@ shell.c 1 - ..\..\..\components\finsh\shell.c + ..\..\..\..\components\finsh\shell.c - - msh.c 1 - ..\..\..\components\finsh\msh.c + ..\..\..\..\components\finsh\msh.c - - cmd.c 1 - ..\..\..\components\finsh\cmd.c + ..\..\..\..\components\finsh\cmd.c @@ -581,93 +544,69 @@ Kernel - idle.c + thread.c 1 - ..\..\..\src\idle.c + ..\..\..\..\src\thread.c - - - - mem.c - 1 - ..\..\..\src\mem.c - - - - - scheduler.c - 1 - ..\..\..\src\scheduler.c - - - clock.c 1 - ..\..\..\src\clock.c + ..\..\..\..\src\clock.c - - - - components.c - 1 - ..\..\..\src\components.c - - - - - mempool.c - 1 - ..\..\..\src\mempool.c - - - irq.c 1 - ..\..\..\src\irq.c + ..\..\..\..\src\irq.c - - - ipc.c + components.c 1 - ..\..\..\src\ipc.c + ..\..\..\..\src\components.c - - - - thread.c - 1 - ..\..\..\src\thread.c - - - - - device.c - 1 - ..\..\..\src\device.c - - - - - timer.c - 1 - ..\..\..\src\timer.c - - - kservice.c 1 - ..\..\..\src\kservice.c + ..\..\..\..\src\kservice.c + + + ipc.c + 1 + ..\..\..\..\src\ipc.c + + + mempool.c + 1 + ..\..\..\..\src\mempool.c + + + idle.c + 1 + ..\..\..\..\src\idle.c + + + scheduler.c + 1 + ..\..\..\..\src\scheduler.c + + + device.c + 1 + ..\..\..\..\src\device.c + + + timer.c + 1 + ..\..\..\..\src\timer.c + + + mem.c + 1 + ..\..\..\..\src\mem.c - - object.c 1 - ..\..\..\src\object.c + ..\..\..\..\src\object.c @@ -679,36 +618,26 @@ 1 ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_exti.c - - gd32f10x_gpio.c 1 ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_gpio.c - - gd32f10x_misc.c 1 ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_misc.c - - system_gd32f10x.c 1 ..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\system_gd32f10x.c - - gd32f10x_rcu.c 1 ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_rcu.c - - gd32f10x_usart.c 1 @@ -716,33 +645,39 @@ + + ::CMSIS + + - + - + - + - + + <Project Info> - - - - - + + + + + 0 1 + diff --git a/bsp/gd32/gd32103c-eval/rtconfig.h b/bsp/gd32/arm/gd32103c-eval/rtconfig.h similarity index 95% rename from bsp/gd32/gd32103c-eval/rtconfig.h rename to bsp/gd32/arm/gd32103c-eval/rtconfig.h index f36f1f7197..bc0197da3a 100644 --- a/bsp/gd32/gd32103c-eval/rtconfig.h +++ b/bsp/gd32/arm/gd32103c-eval/rtconfig.h @@ -52,8 +52,14 @@ #define RT_USING_USER_MAIN #define RT_MAIN_THREAD_STACK_SIZE 2048 #define RT_MAIN_THREAD_PRIORITY 10 -#define RT_USING_MSH + +/* C++ features */ + + +/* Command shell */ + #define RT_USING_FINSH +#define RT_USING_MSH #define FINSH_USING_MSH #define FINSH_THREAD_NAME "tshell" #define FINSH_THREAD_PRIORITY 20 @@ -66,6 +72,9 @@ #define FINSH_USING_DESCRIPTION #define FINSH_ARG_MAX 10 +/* Device virtual file system */ + + /* Device Drivers */ #define RT_USING_DEVICE_IPC @@ -81,7 +90,7 @@ /* Using USB */ -/* C/C++ and POSIX layer */ +/* POSIX layer and C standard library */ #define RT_LIBC_DEFAULT_TIMEZONE 8 @@ -93,10 +102,12 @@ /* Socket is in the 'Network' category */ - /* Network */ +/* VBUS(Virtual Software BUS) */ + + /* Utilities */ diff --git a/bsp/gd32/gd32105c-eval/rtconfig.py b/bsp/gd32/arm/gd32103c-eval/rtconfig.py similarity index 98% rename from bsp/gd32/gd32105c-eval/rtconfig.py rename to bsp/gd32/arm/gd32103c-eval/rtconfig.py index a8cb7dc467..4285e6b03c 100644 --- a/bsp/gd32/gd32105c-eval/rtconfig.py +++ b/bsp/gd32/arm/gd32103c-eval/rtconfig.py @@ -22,8 +22,8 @@ elif CROSS_TOOL == 'keil': PLATFORM = 'armcc' EXEC_PATH = r'C:/Keil_v5' elif CROSS_TOOL == 'iar': - PLATFORM = 'iccarm' - EXEC_PATH = r'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.3' + 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') @@ -93,7 +93,7 @@ elif PLATFORM == 'armcc': POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' -elif PLATFORM == 'iccarm': +elif PLATFORM == 'iar': # toolchains CC = 'iccarm' CXX = 'iccarm' diff --git a/bsp/gd32/arm/gd32103c-eval/template.ewp b/bsp/gd32/arm/gd32103c-eval/template.ewp new file mode 100644 index 0000000000..5f4ded0ae7 --- /dev/null +++ b/bsp/gd32/arm/gd32103c-eval/template.ewp @@ -0,0 +1,1889 @@ + + + 2 + + Debug + + ARM + + 1 + + General + 3 + + 22 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 22 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + + diff --git a/bsp/gd32/gd32105c-eval/template.uvoptx b/bsp/gd32/arm/gd32103c-eval/template.uvoptx similarity index 96% rename from bsp/gd32/gd32105c-eval/template.uvoptx rename to bsp/gd32/arm/gd32103c-eval/template.uvoptx index d691bf54c0..bb6f1ddba6 100644 --- a/bsp/gd32/gd32105c-eval/template.uvoptx +++ b/bsp/gd32/arm/gd32103c-eval/template.uvoptx @@ -26,7 +26,7 @@ 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -120,7 +120,7 @@ 0 UL2CM3 - UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0GD32F10x_CL -FL040000 -FS08000000 -FP0($$Device:GD32F105VC$Flash\GD32F10x_CL.FLM) + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC800 -FD20000000 -FF0GD32F10x_HD -FL040000 -FS08000000 -FP0($$Device:GD32F103VC$Flash\GD32F10x_HD.FLM) diff --git a/bsp/gd32/gd32103c-eval/template.uvproj b/bsp/gd32/arm/gd32103c-eval/template.uvproj similarity index 98% rename from bsp/gd32/gd32103c-eval/template.uvproj rename to bsp/gd32/arm/gd32103c-eval/template.uvproj index 33458e05f7..c4285b8560 100644 --- a/bsp/gd32/gd32103c-eval/template.uvproj +++ b/bsp/gd32/arm/gd32103c-eval/template.uvproj @@ -15,10 +15,10 @@ GD32F103VC GigaDevice - IRAM(0x20000000-0x20018000) IROM(0x08000000-0x08040000) CLOCK(10800000) CPUTYPE("Cortex-M3") + IRAM(0x20000000-0x2000C000) IROM(0x08000000-0x08040000) CLOCK(8000000) CPUTYPE("Cortex-M3") - "Startup\GD\GD32F10x\startup_gd32f10x.s" ("GD32F10x Startup Code") - UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F10x_3MB -FS08000000 -FL0100000) + "Startup\GD\GD32F10x\startup_gd32f10x_hd.s" ("GD32F10x Startup Code") + UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F10x_HD -FS08000000 -FL040000) 0 gd32f10x0.h @@ -30,7 +30,7 @@ - SFD\GD\GD32F10x\GD32F10x.SFR + SFD\GD\GD32F10x\GD32F10x_HD.SFR 0 0 @@ -605,9 +605,9 @@ Startup - startup_gd32f10x.s + startup_gd32f10x_hd.s 2 - ..\..\..\Library\Firmware\CMSIS\GD\GD32F10x\Source\ARM\startup_gd32f10x.s + ..\..\..\Library\Firmware\CMSIS\GD\GD32F10x\Source\ARM\startup_gd32f10x_hd.s diff --git a/bsp/gd32/gd32103c-eval/template.uvprojx b/bsp/gd32/arm/gd32103c-eval/template.uvprojx similarity index 97% rename from bsp/gd32/gd32103c-eval/template.uvprojx rename to bsp/gd32/arm/gd32103c-eval/template.uvprojx index efc072e87e..e498edc3e9 100644 --- a/bsp/gd32/gd32103c-eval/template.uvprojx +++ b/bsp/gd32/arm/gd32103c-eval/template.uvprojx @@ -18,10 +18,10 @@ GigaDevice GigaDevice.GD32F10x_DFP.2.0.1 http://www.keil.com/pack/ - IRAM(0x20000000,0x0000C000) IROM(0x08000000,0x00040000) CPUTYPE("Cortex-M3") CLOCK(10800000) ELITTLE + IRAM(0x20000000,0x0000C000) IROM(0x08000000,0x00040000) CPUTYPE("Cortex-M3") CLOCK(8000000) ELITTLE - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F10x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F103VC$Flash\GD32F10x_CL.FLM)) + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F10x_HD -FS08000000 -FL040000 -FP0($$Device:GD32F103VC$Flash\GD32F10x_HD.FLM)) 0 $$Device:GD32F103VC$Device\Include\gd32f10x.h @@ -33,7 +33,7 @@ - $$Device:GD32F103VC$SVD\GD32F10x\GD32F10x_CL.svd + $$Device:GD32F103VC$SVD\GD32F10x\GD32F10x_HD.svd 0 0 diff --git a/bsp/gd32/gd32105c-eval/.config b/bsp/gd32/arm/gd32105c-eval/.config similarity index 96% rename from bsp/gd32/gd32105c-eval/.config rename to bsp/gd32/arm/gd32105c-eval/.config index bb63f61b1a..dab8b600b4 100644 --- a/bsp/gd32/gd32105c-eval/.config +++ b/bsp/gd32/arm/gd32105c-eval/.config @@ -90,8 +90,17 @@ 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 -CONFIG_RT_USING_MSH=y + +# +# C++ features +# +# CONFIG_RT_USING_CPLUSPLUS is not set + +# +# Command shell +# CONFIG_RT_USING_FINSH=y +CONFIG_RT_USING_MSH=y CONFIG_FINSH_USING_MSH=y CONFIG_FINSH_THREAD_NAME="tshell" CONFIG_FINSH_THREAD_PRIORITY=20 @@ -105,8 +114,11 @@ 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 is not set -# CONFIG_RT_USING_FAL is not set # # Device Drivers @@ -152,7 +164,7 @@ CONFIG_RT_USING_PIN=y # CONFIG_RT_USING_USB_DEVICE is not set # -# C/C++ and POSIX layer +# POSIX layer and C standard library # CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 @@ -176,7 +188,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # # Socket is in the 'Network' category # -# CONFIG_RT_USING_CPLUSPLUS is not set # # Network @@ -186,6 +197,11 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_RT_USING_LWIP is not set # CONFIG_RT_USING_AT is not set +# +# VBUS(Virtual Software BUS) +# +# CONFIG_RT_USING_VBUS is not set + # # Utilities # @@ -194,7 +210,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_RT_USING_UTEST is not set # 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 @@ -259,6 +274,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set # CONFIG_PKG_USING_JOYLINK is not set # CONFIG_PKG_USING_EZ_IOT_OS is not set +# CONFIG_PKG_USING_IOTSHARP_SDK 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 @@ -298,6 +314,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # # CONFIG_PKG_USING_MBEDTLS is not set # CONFIG_PKG_USING_LIBSODIUM is not set +# CONFIG_PKG_USING_LIBHYDROGEN is not set # CONFIG_PKG_USING_TINYCRYPT is not set # CONFIG_PKG_USING_TFM is not set # CONFIG_PKG_USING_YD_CRYPTO is not set @@ -337,6 +354,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_LVGL is not set # CONFIG_PKG_USING_LITTLEVGL2RTT is not set # CONFIG_PKG_USING_LV_MUSIC_DEMO is not set +# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set # # u8g2: a monochrome graphic library @@ -411,6 +429,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_FDT is not set # CONFIG_PKG_USING_CBOX is not set # CONFIG_PKG_USING_SNOWFLAKE is not set +# CONFIG_PKG_USING_HASH_MATCH is not set # # system packages @@ -442,6 +461,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CMSIS: ARM Cortex-M Microcontroller Software Interface Standard # # CONFIG_PKG_USING_CMSIS_5 is not set +# CONFIG_PKG_USING_CMSIS_RTOS1 is not set # CONFIG_PKG_USING_CMSIS_RTOS2 is not set # @@ -484,6 +504,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_TINYUSB is not set # CONFIG_PKG_USING_CHERRYUSB is not set # CONFIG_PKG_USING_KMULTI_RTIMER is not set +# CONFIG_PKG_USING_TFDB is not set # # peripheral libraries and drivers @@ -638,6 +659,8 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_CONTROLLER is not set # CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set # CONFIG_PKG_USING_MFBD is not set +# CONFIG_PKG_USING_SLCAN2RTT is not set +# CONFIG_PKG_USING_SOEM is not set # # Hardware Drivers Config @@ -662,6 +685,13 @@ CONFIG_BSP_USING_UART1=y # CONFIG_BSP_USING_UART4 is not set # CONFIG_BSP_USING_SPI is not set # CONFIG_BSP_USING_I2C1 is not set +# CONFIG_BSP_USING_ADC is not set +# CONFIG_BSP_USING_TIM is not set +# CONFIG_BSP_USING_ONCHIP_RTC is not set +# CONFIG_BSP_USING_WDT is not set +# CONFIG_BSP_USING_SDIO is not set +# CONFIG_BSP_USING_USBD is not set +# CONFIG_BSP_USING_USBH is not set # # Board extended module Drivers diff --git a/bsp/gd32/gd32105r-start/Kconfig b/bsp/gd32/arm/gd32105c-eval/Kconfig similarity index 92% rename from bsp/gd32/gd32105r-start/Kconfig rename to bsp/gd32/arm/gd32105c-eval/Kconfig index 8cbc7b71a8..dbc650938f 100644 --- a/bsp/gd32/gd32105r-start/Kconfig +++ b/bsp/gd32/arm/gd32105c-eval/Kconfig @@ -8,7 +8,7 @@ config BSP_DIR config RTT_DIR string option env="RTT_ROOT" - default "../../.." + default "../../../.." config PKGS_DIR string diff --git a/bsp/gd32/arm/gd32105c-eval/README.md b/bsp/gd32/arm/gd32105c-eval/README.md new file mode 100644 index 0000000000..58753e56b1 --- /dev/null +++ b/bsp/gd32/arm/gd32105c-eval/README.md @@ -0,0 +1,111 @@ +# GD32105C-EVAL开发板BSP说明 + +## 简介 + +GD3105C-EVAL是-兆易创新推出的一款GD32F10X系列的评估板,最高主频高达108M,该开发板具有丰富的板载资源,可以充分发挥 GD32105VCT6 的芯片性能。 + +开发板外观如下图所示: + +![board](figures/board.jpg) + +该开发板常用 **板载资源** 如下: + +- GD32105VCT6,主频 108MHz,256KB FLASH ,96KB RAM +- 常用外设 + - LED :5个,LED1 (电源指示灯),LED2(PC0),LED3(PC2),LED4(PE0),LED5(PE1) + - 按键:3个,K1(用户按键,PA0),K2(用户按键,PC13),K3(用户按键,PB14) + - General TM * 4 、Advanced TM * 1、Basic TM * 2 + - 系统时钟 * 1 + - 看门狗 * 2 + - RTC * 1 + - U(S)ART * 5 + - I2C * 2、I2S * 2 + - SPI * 3 + - CAN2.0B * 2 + - USB2.0 OTG FS * 1 + - TFT-LCD + - EXMC/SDRAM * 1 + - ADC * 2 + - DAC * 2 + - 最多支持80GPIOs +- 常用接口:USB OTG接口 +- 调试接口:J-LINK + + + +## 外设支持 + +本 BSP 目前对外设的支持情况如下: + +| **片上外设** | **支持情况** | **备注** | +| :----------- | :----------: | :------------------------------ | +| GPIO | 支持 | PA0, PA1... ---> PIN: 0, 1...79 | +| UART | 支持 | UART0 - UART4 | +| I2C | 支持 | I2C1 | +| SPI | 支持 | SPI0 - SPI2 | +| SPI FLASH | 支持 | | +| ADC | 支持 | ADC0- ADC1 | +| **扩展模块** | **支持情况** | **备注** | +| 暂无 | 暂不支持 | 暂不支持 | + +## 使用说明 + +使用说明分为如下两个章节: + +- 快速上手 + + 本章节是为刚接触 RT-Thread 的新手准备的使用说明,遵循简单的步骤即可将 RT-Thread 操作系统运行在该开发板上,看到实验效果 。 + +- 进阶使用 + + 本章节是为需要在 RT-Thread 操作系统上使用更多开发板资源的开发者准备的。通过使用 ENV 工具对 BSP 进行配置,可以开启更多板载资源,实现更多高级功能。 + +### 快速上手 + +本 BSP 为开发者提供 MDK4、MDK5 和 IAR 工程,并且支持 GCC 开发环境,也可使用RT-Thread Studio开发。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 + +#### 硬件连接 + +使用数据线连接开发板到 PC,使用USB转232连接USART1,打开电源开关。 + +#### 编译下载 + +双击 project.uvprojx 文件,打开 MDK5 工程,编译并下载程序到开发板。 + +> 工程默认配置使用 J-Link 仿真器下载程序,在通过 J-Link 连接开发板的基础上,点击下载按钮即可下载程序到开发板 + +#### 运行结果 + +下载程序成功之后,系统会自动运行,LED2闪烁。 + +连接开发板对应串口到 PC , 在终端工具里打开相应的串口(115200-8-1-N),复位设备后,可以看到 RT-Thread 的输出信息: + +```bash +\ | / +- RT - Thread Operating System + / | \ 4.1.0 build May 15 2022 14:22:05 + 2006 - 2022 Copyright by RT-Thread team +msh > +``` + +### 进阶使用 + +此 BSP 默认只开启了 GPIO 和 串口1的功能,如果需使用高级功能,需要利用 ENV 工具对BSP 进行配置,步骤如下: + +1. 在 bsp 下打开 env 工具。 + +2. 输入`menuconfig`命令配置工程,配置好之后保存退出。 + +3. 输入`pkgs --update`命令更新软件包。 + +4. 输入`scons --target=mdk4/mdk5/iar` 命令重新生成工程。 + +## 注意事项 + +暂无 + +## 联系人信息 + +维护人: + +- [BruceOu](https://github.com/Ouxiaolong/), 邮箱: \ No newline at end of file diff --git a/bsp/gd32/gd32105c-eval/SConscript b/bsp/gd32/arm/gd32105c-eval/SConscript similarity index 100% rename from bsp/gd32/gd32105c-eval/SConscript rename to bsp/gd32/arm/gd32105c-eval/SConscript diff --git a/bsp/gd32/gd32105r-start/SConstruct b/bsp/gd32/arm/gd32105c-eval/SConstruct similarity index 94% rename from bsp/gd32/gd32105r-start/SConstruct rename to bsp/gd32/arm/gd32105c-eval/SConstruct index 4ae47cd02f..4e87945853 100644 --- a/bsp/gd32/gd32105r-start/SConstruct +++ b/bsp/gd32/arm/gd32105c-eval/SConstruct @@ -5,7 +5,7 @@ import rtconfig if os.getenv('RTT_ROOT'): RTT_ROOT = os.getenv('RTT_ROOT') else: - RTT_ROOT = os.path.normpath(os.getcwd() + '/../../..') + RTT_ROOT = os.path.normpath(os.getcwd() + '/../../../..') sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] try: @@ -26,7 +26,7 @@ env = Environment(tools = ['mingw'], LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) env.PrependENVPath('PATH', rtconfig.EXEC_PATH) -if rtconfig.PLATFORM in ['iccarm']: +if rtconfig.PLATFORM == 'iar': env.Replace(CCCOM = ['$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES']) env.Replace(ARFLAGS = ['']) env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map') diff --git a/bsp/gd32/gd32105c-eval/applications/SConscript b/bsp/gd32/arm/gd32105c-eval/applications/SConscript similarity index 100% rename from bsp/gd32/gd32105c-eval/applications/SConscript rename to bsp/gd32/arm/gd32105c-eval/applications/SConscript diff --git a/bsp/gd32/gd32107c-eval/applications/main.c b/bsp/gd32/arm/gd32105c-eval/applications/main.c similarity index 77% rename from bsp/gd32/gd32107c-eval/applications/main.c rename to bsp/gd32/arm/gd32105c-eval/applications/main.c index 4a528128b4..34c7773369 100644 --- a/bsp/gd32/gd32107c-eval/applications/main.c +++ b/bsp/gd32/arm/gd32105c-eval/applications/main.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2022, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -13,14 +13,14 @@ #include #include -/* defined the LED2 pin: PC6 */ -#define LED2_PIN GET_PIN(C, 6) +/* defined the LED2 pin: PC0 */ +#define LED2_PIN GET_PIN(C, 0) int main(void) { int count = 1; - /* set LED2 pin mode to output */ + /* set LED0 pin mode to output */ rt_pin_mode(LED2_PIN, PIN_MODE_OUTPUT); while (count++) diff --git a/bsp/gd32/gd32105c-eval/board/Kconfig b/bsp/gd32/arm/gd32105c-eval/board/Kconfig similarity index 61% rename from bsp/gd32/gd32105c-eval/board/Kconfig rename to bsp/gd32/arm/gd32105c-eval/board/Kconfig index d7fec293c8..7f9c530e63 100644 --- a/bsp/gd32/gd32105c-eval/board/Kconfig +++ b/bsp/gd32/arm/gd32105c-eval/board/Kconfig @@ -115,6 +115,87 @@ menu "On-chip Peripheral Drivers" range 1 216 default 25 endif + + menuconfig BSP_USING_ADC + bool "Enable ADC" + default n + select RT_USING_ADC + if BSP_USING_ADC + config BSP_USING_ADC0 + bool "Enable ADC0" + default n + + config BSP_USING_ADC1 + bool "Enable ADC1" + default n + endif + + menuconfig BSP_USING_TIM + bool "Enable timer" + default n + select RT_USING_HWTIMER + if BSP_USING_TIM + config BSP_USING_TIM10 + bool "Enable TIM10" + default n + + config BSP_USING_TIM11 + bool "Enable TIM11" + default n + + config BSP_USING_TIM12 + bool "Enable TIM13" + default n + endif + + menuconfig BSP_USING_ONCHIP_RTC + bool "Enable RTC" + select RT_USING_RTC + default n + if BSP_USING_ONCHIP_RTC + choice + prompt "Select clock source" + default BSP_RTC_USING_LSE + + config BSP_RTC_USING_LSE + bool "RTC USING LSE" + + config BSP_RTC_USING_LSI + bool "RTC USING LSI" + endchoice + endif + + config BSP_USING_WDT + bool "Enable Watchdog Timer" + select RT_USING_WDT + default n + + config BSP_USING_SDIO + bool "Enable SDIO" + select RT_USING_SDIO + select RT_USING_DFS + default n + + config BSP_USING_USBD + bool "Enable USB Device" + select RT_USING_USB_DEVICE + default n + + menuconfig BSP_USING_USBH + bool "Enable USB Host" + select RT_USING_USB_HOST + default n + if BSP_USING_USBH + menuconfig RT_USBH_MSTORAGE + bool "Enable Udisk Drivers" + default n + if RT_USBH_MSTORAGE + config UDISK_MOUNTPOINT + string "Udisk mount dir" + default "/" + endif + endif + source "../libraries/gd32_drivers/Kconfig" endmenu diff --git a/bsp/gd32/gd32105r-start/board/SConscript b/bsp/gd32/arm/gd32105c-eval/board/SConscript similarity index 84% rename from bsp/gd32/gd32105r-start/board/SConscript rename to bsp/gd32/arm/gd32105c-eval/board/SConscript index a85b0a42ae..c1f4a6001b 100644 --- a/bsp/gd32/gd32105r-start/board/SConscript +++ b/bsp/gd32/arm/gd32105c-eval/board/SConscript @@ -15,11 +15,11 @@ path = [cwd] startup_path_prefix = SDK_LIB -if rtconfig.PLATFORM in ['gcc']: +if rtconfig.CROSS_TOOL == 'gcc': src += [startup_path_prefix + '/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_cl.s'] -elif rtconfig.PLATFORM in ['armcc', 'armclang']: +elif rtconfig.CROSS_TOOL == 'keil': src += [startup_path_prefix + '/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_cl.s'] -elif rtconfig.PLATFORM in ['iccarm']: +elif rtconfig.CROSS_TOOL == 'iar': src += [startup_path_prefix + '/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_cl.s'] CPPDEFINES = ['GD32F10X_CL'] diff --git a/bsp/gd32/gd32305r-start/board/board.c b/bsp/gd32/arm/gd32105c-eval/board/board.c similarity index 100% rename from bsp/gd32/gd32305r-start/board/board.c rename to bsp/gd32/arm/gd32105c-eval/board/board.c diff --git a/bsp/gd32/gd32105c-eval/board/board.h b/bsp/gd32/arm/gd32105c-eval/board/board.h similarity index 95% rename from bsp/gd32/gd32105c-eval/board/board.h rename to bsp/gd32/arm/gd32105c-eval/board/board.h index 11fb4fa084..3312ada335 100644 --- a/bsp/gd32/gd32105c-eval/board/board.h +++ b/bsp/gd32/arm/gd32105c-eval/board/board.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2022, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/gd32/gd32105c-eval/board/gd32f10x_libopt.h b/bsp/gd32/arm/gd32105c-eval/board/gd32f10x_libopt.h similarity index 100% rename from bsp/gd32/gd32105c-eval/board/gd32f10x_libopt.h rename to bsp/gd32/arm/gd32105c-eval/board/gd32f10x_libopt.h diff --git a/bsp/gd32/gd32105c-eval/board/linker_scripts/link.icf b/bsp/gd32/arm/gd32105c-eval/board/linker_scripts/link.icf similarity index 100% rename from bsp/gd32/gd32105c-eval/board/linker_scripts/link.icf rename to bsp/gd32/arm/gd32105c-eval/board/linker_scripts/link.icf diff --git a/bsp/gd32/gd32105r-start/board/linker_scripts/link.ld b/bsp/gd32/arm/gd32105c-eval/board/linker_scripts/link.ld similarity index 98% rename from bsp/gd32/gd32105r-start/board/linker_scripts/link.ld rename to bsp/gd32/arm/gd32105c-eval/board/linker_scripts/link.ld index 8ba4a0e9f2..0bd341937c 100644 --- a/bsp/gd32/gd32105r-start/board/linker_scripts/link.ld +++ b/bsp/gd32/arm/gd32105c-eval/board/linker_scripts/link.ld @@ -1,5 +1,5 @@ /* - * linker script for GD32F30x with GNU ld + * linker script for GD32F10x with GNU ld * BruceOu 2021-12-14 */ diff --git a/bsp/gd32/gd32105c-eval/board/linker_scripts/link.sct b/bsp/gd32/arm/gd32105c-eval/board/linker_scripts/link.sct similarity index 100% rename from bsp/gd32/gd32105c-eval/board/linker_scripts/link.sct rename to bsp/gd32/arm/gd32105c-eval/board/linker_scripts/link.sct diff --git a/bsp/gd32/gd32105c-eval/figures/board.jpg b/bsp/gd32/arm/gd32105c-eval/figures/board.jpg similarity index 100% rename from bsp/gd32/gd32105c-eval/figures/board.jpg rename to bsp/gd32/arm/gd32105c-eval/figures/board.jpg diff --git a/bsp/gd32/arm/gd32105c-eval/project.ewd b/bsp/gd32/arm/gd32105c-eval/project.ewd new file mode 100644 index 0000000000..b55ce6cb3e --- /dev/null +++ b/bsp/gd32/arm/gd32105c-eval/project.ewd @@ -0,0 +1,3056 @@ + + + 3 + + Debug + + ARM + + 1 + + C-SPY + 2 + + 32 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 1 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 1 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 32 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 0 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 0 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 0 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 0 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/bsp/gd32/arm/gd32105c-eval/project.ewp b/bsp/gd32/arm/gd32105c-eval/project.ewp new file mode 100644 index 0000000000..fe2a197f80 --- /dev/null +++ b/bsp/gd32/arm/gd32105c-eval/project.ewp @@ -0,0 +1,2316 @@ + + + 3 + + Debug + + ARM + + 1 + + General + 3 + + 33 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + + Release + + ARM + + 0 + + General + 3 + + 33 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + Compiler + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\stdlib.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscalls.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\time.c + + + + CPU + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\backtrace.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m3\context_iar.S + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m3\cpuport.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\showmem.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\completion.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\dataqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\misc\pin.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\pipe.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringbuffer.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\serial\serial.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\waitqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\workqueue.c + + + + Drivers + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_gpio.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_usart.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\IAR\startup_gd32f10x_cl.s + + + + Finsh + + $PROJ_DIR$\..\..\..\..\components\finsh\cmd.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\shell.c + + + + Kernel + + $PROJ_DIR$\..\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\..\src\device.c + + + $PROJ_DIR$\..\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\..\src\scheduler.c + + + $PROJ_DIR$\..\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\..\src\timer.c + + + + Libraries + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_exti.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_gpio.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_misc.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_rcu.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_usart.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\system_gd32f10x.c + + + + POSIX + + diff --git a/bsp/gd32/arm/gd32105c-eval/project.eww b/bsp/gd32/arm/gd32105c-eval/project.eww new file mode 100644 index 0000000000..c2cb02eb1e --- /dev/null +++ b/bsp/gd32/arm/gd32105c-eval/project.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\project.ewp + + + + + diff --git a/bsp/gd32/arm/gd32105c-eval/project.uvoptx b/bsp/gd32/arm/gd32105c-eval/project.uvoptx new file mode 100644 index 0000000000..fc2d72abec --- /dev/null +++ b/bsp/gd32/arm/gd32105c-eval/project.uvoptx @@ -0,0 +1,789 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 25000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 4 + + + + + + + + + + + Segger\JL2CM3.dll + + + + 0 + JL2CM3 + -U59413783 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F10x_CL.FLM -FS08000000 -FL040000 -FP0($$Device:GD32F105VC$Flash\GD32F10x_CL.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC800 -FD20000000 -FF0GD32F10x_CL -FL040000 -FS08000000 -FP0($$Device:GD32F105VC$Flash\GD32F10x_CL.FLM) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + Applications + 0 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + applications\main.c + main.c + 0 + 0 + + + + + Compiler + 0 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c + syscalls.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c + syscall_mem.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\stdlib.c + stdlib.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\time.c + time.c + 0 + 0 + + + + + CPU + 0 + 0 + 0 + 0 + + 3 + 6 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 3 + 7 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\backtrace.c + backtrace.c + 0 + 0 + + + 3 + 8 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 3 + 9 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m3\cpuport.c + cpuport.c + 0 + 0 + + + 3 + 10 + 2 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m3\context_rvds.S + context_rvds.S + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 4 + 11 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\waitqueue.c + waitqueue.c + 0 + 0 + + + 4 + 12 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\completion.c + completion.c + 0 + 0 + + + 4 + 13 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 4 + 14 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\workqueue.c + workqueue.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\pipe.c + pipe.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\dataqueue.c + dataqueue.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\serial\serial.c + serial.c + 0 + 0 + + + + + Drivers + 0 + 0 + 0 + 0 + + 5 + 20 + 2 + 0 + 0 + 0 + ..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\ARM\startup_gd32f10x_cl.s + startup_gd32f10x_cl.s + 0 + 0 + + + 5 + 21 + 1 + 0 + 0 + 0 + board\board.c + board.c + 0 + 0 + + + 5 + 22 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 5 + 23 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_usart.c + drv_usart.c + 0 + 0 + + + + + Finsh + 0 + 0 + 0 + 0 + + 6 + 24 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 6 + 25 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 6 + 26 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + + + Kernel + 0 + 0 + 0 + 0 + + 7 + 27 + 1 + 0 + 0 + 0 + ..\..\..\..\src\irq.c + irq.c + 0 + 0 + + + 7 + 28 + 1 + 0 + 0 + 0 + ..\..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 7 + 29 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mem.c + mem.c + 0 + 0 + + + 7 + 30 + 1 + 0 + 0 + 0 + ..\..\..\..\src\thread.c + thread.c + 0 + 0 + + + 7 + 31 + 1 + 0 + 0 + 0 + ..\..\..\..\src\device.c + device.c + 0 + 0 + + + 7 + 32 + 1 + 0 + 0 + 0 + ..\..\..\..\src\clock.c + clock.c + 0 + 0 + + + 7 + 33 + 1 + 0 + 0 + 0 + ..\..\..\..\src\object.c + object.c + 0 + 0 + + + 7 + 34 + 1 + 0 + 0 + 0 + ..\..\..\..\src\components.c + components.c + 0 + 0 + + + 7 + 35 + 1 + 0 + 0 + 0 + ..\..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 7 + 36 + 1 + 0 + 0 + 0 + ..\..\..\..\src\scheduler.c + scheduler.c + 0 + 0 + + + 7 + 37 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mempool.c + mempool.c + 0 + 0 + + + 7 + 38 + 1 + 0 + 0 + 0 + ..\..\..\..\src\timer.c + timer.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\idle.c + idle.c + 0 + 0 + + + + + Libraries + 0 + 0 + 0 + 0 + + 8 + 40 + 1 + 0 + 0 + 0 + ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_exti.c + gd32f10x_exti.c + 0 + 0 + + + 8 + 41 + 1 + 0 + 0 + 0 + ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_gpio.c + gd32f10x_gpio.c + 0 + 0 + + + 8 + 42 + 1 + 0 + 0 + 0 + ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_misc.c + gd32f10x_misc.c + 0 + 0 + + + 8 + 43 + 1 + 0 + 0 + 0 + ..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\system_gd32f10x.c + system_gd32f10x.c + 0 + 0 + + + 8 + 44 + 1 + 0 + 0 + 0 + ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_rcu.c + gd32f10x_rcu.c + 0 + 0 + + + 8 + 45 + 1 + 0 + 0 + 0 + ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_usart.c + gd32f10x_usart.c + 0 + 0 + + + + + ::CMSIS + 0 + 0 + 0 + 1 + + +
diff --git a/bsp/gd32/gd32105c-eval/project.uvproj b/bsp/gd32/arm/gd32105c-eval/project.uvproj similarity index 98% rename from bsp/gd32/gd32105c-eval/project.uvproj rename to bsp/gd32/arm/gd32105c-eval/project.uvproj index d6e0aa5963..344951c61b 100644 --- a/bsp/gd32/gd32105c-eval/project.uvproj +++ b/bsp/gd32/arm/gd32105c-eval/project.uvproj @@ -12,10 +12,10 @@ GD32F105VC GigaDevice - IRAM(0x20000000-0x20018000) IROM(0x08000000-0x08040000) CLOCK(10800000) CPUTYPE("Cortex-M3") + IRAM(0x20000000-0x20018000) IROM(0x08000000-0x08040000) CLOCK(25000000) CPUTYPE("Cortex-M3") - "Startup\GD\GD32F10x\startup_gd32f10x.s" ("GD32F10x Startup Code") - UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F10x_3MB -FS08000000 -FL0100000) + "Startup\GD\GD32F10x\startup_gd32f10x_cl.s" ("GD32F10x Startup Code") + UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F10x_CL -FS08000000 -FL040000) 0 gd32f10x0.h @@ -27,7 +27,7 @@ - SFD\GD\GD32F10x\GD32F10x.SFR + SFD\GD\GD32F10x\GD32F10x_CL.SFR 0 0 @@ -427,16 +427,16 @@ Compiler - syscalls.c + syscall_mem.c 1 - ..\..\..\components\libc\compilers\armlibc\syscalls.c + ..\..\..\components\libc\compilers\armlibc\syscall_mem.c - syscall_mem.c + syscalls.c 1 - ..\..\..\components\libc\compilers\armlibc\syscall_mem.c + ..\..\..\components\libc\compilers\armlibc\syscalls.c @@ -479,16 +479,16 @@ - context_rvds.S - 2 - ..\..\..\libcpu\arm\cortex-m3\context_rvds.S + cpuport.c + 1 + ..\..\..\libcpu\arm\cortex-m3\cpuport.c - cpuport.c - 1 - ..\..\..\libcpu\arm\cortex-m3\cpuport.c + context_rvds.S + 2 + ..\..\..\libcpu\arm\cortex-m3\context_rvds.S @@ -503,30 +503,9 @@ - pipe.c + workqueue.c 1 - ..\..\..\components\drivers\ipc\pipe.c - - - - - ringblk_buf.c - 1 - ..\..\..\components\drivers\ipc\ringblk_buf.c - - - - - dataqueue.c - 1 - ..\..\..\components\drivers\ipc\dataqueue.c - - - - - waitqueue.c - 1 - ..\..\..\components\drivers\ipc\waitqueue.c + ..\..\..\components\drivers\ipc\workqueue.c @@ -538,9 +517,30 @@ - workqueue.c + dataqueue.c 1 - ..\..\..\components\drivers\ipc\workqueue.c + ..\..\..\components\drivers\ipc\dataqueue.c + + + + + ringblk_buf.c + 1 + ..\..\..\components\drivers\ipc\ringblk_buf.c + + + + + waitqueue.c + 1 + ..\..\..\components\drivers\ipc\waitqueue.c + + + + + pipe.c + 1 + ..\..\..\components\drivers\ipc\pipe.c @@ -562,16 +562,16 @@ Drivers - board.c - 1 - board\board.c + startup_gd32f10x_cl.s + 2 + ..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\ARM\startup_gd32f10x_cl.s - startup_gd32f10x_cl.s - 2 - ..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\ARM\startup_gd32f10x_cl.s + board.c + 1 + board\board.c @@ -617,23 +617,9 @@ Kernel - components.c + object.c 1 - ..\..\..\src\components.c - - - - - mempool.c - 1 - ..\..\..\src\mempool.c - - - - - clock.c - 1 - ..\..\..\src\clock.c + ..\..\..\src\object.c @@ -645,23 +631,9 @@ - object.c + thread.c 1 - ..\..\..\src\object.c - - - - - kservice.c - 1 - ..\..\..\src\kservice.c - - - - - timer.c - 1 - ..\..\..\src\timer.c + ..\..\..\src\thread.c @@ -671,6 +643,27 @@ ..\..\..\src\device.c + + + mempool.c + 1 + ..\..\..\src\mempool.c + + + + + idle.c + 1 + ..\..\..\src\idle.c + + + + + clock.c + 1 + ..\..\..\src\clock.c + + ipc.c @@ -678,6 +671,20 @@ ..\..\..\src\ipc.c + + + kservice.c + 1 + ..\..\..\src\kservice.c + + + + + components.c + 1 + ..\..\..\src\components.c + + mem.c @@ -687,16 +694,9 @@ - thread.c + timer.c 1 - ..\..\..\src\thread.c - - - - - idle.c - 1 - ..\..\..\src\idle.c + ..\..\..\src\timer.c diff --git a/bsp/gd32/gd32105c-eval/project.uvprojx b/bsp/gd32/arm/gd32105c-eval/project.uvprojx similarity index 76% rename from bsp/gd32/gd32105c-eval/project.uvprojx rename to bsp/gd32/arm/gd32105c-eval/project.uvprojx index 15a2e8225e..f2fb3189e3 100644 --- a/bsp/gd32/gd32105c-eval/project.uvprojx +++ b/bsp/gd32/arm/gd32105c-eval/project.uvprojx @@ -1,7 +1,10 @@ + 2.1 +
### uVision Project, (C) Keil Software
+ rt-thread @@ -13,31 +16,31 @@ GD32F105VC GigaDevice - GigaDevice.GD32F10x_DFP.2.0.1 - http://www.keil.com/pack/ - IRAM(0x20000000,0x00018000) IROM(0x08000000,0x00040000) CPUTYPE("Cortex-M3") CLOCK(10800000) ELITTLE - - - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F10x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F105VC$Flash\GD32F10x_CL.FLM)) + GigaDevice.GD32F10x_DFP.2.0.2 + http://gd32mcu.com/data/documents/pack/ + IRAM(0x20000000,0x00018000) IROM(0x08000000,0x00040000) CPUTYPE("Cortex-M3") CLOCK(25000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F10x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F105VC$Flash\GD32F10x_CL.FLM)) 0 $$Device:GD32F105VC$Device\Include\gd32f10x.h - - - - - - - - - + + + + + + + + + $$Device:GD32F105VC$SVD\GD32F10x\GD32F10x_CL.svd 0 0 - - - - - + + + + + 0 0 @@ -59,8 +62,8 @@ 0 0 - - + + 0 0 0 @@ -69,8 +72,8 @@ 0 0 - - + + 0 0 0 @@ -80,14 +83,14 @@ 1 0 fromelf --bin !L --output rtthread.bin - + 0 0 0 0 0 - + 0 @@ -101,8 +104,8 @@ 0 0 3 - - + + 1 @@ -111,7 +114,7 @@ DCM.DLL -pCM3 SARMCM3.DLL - + TCM.DLL -pCM3 @@ -135,11 +138,11 @@ 1 BIN\UL2CM3.DLL - - - - - + + + + + 0 @@ -172,7 +175,7 @@ 0 0 "Cortex-M3" - + 0 0 0 @@ -306,7 +309,7 @@ 0x0 - + 1 @@ -333,10 +336,10 @@ 0 0 - + USE_STDPERIPH_DRIVER, GD32F10X_CL, __RTTHREAD__, RT_USING_ARM_LIBC, __CLK_TCK=RT_TICK_PER_SECOND - - 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\gd32_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Include;..\libraries\GD32F10x_Firmware_Library\CMSIS;..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Include;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc + + 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\gd32_drivers;..\..\..\..\components\finsh;.;..\..\..\..\include;..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Include;..\libraries\GD32F10x_Firmware_Library\CMSIS;..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Include;..\..\..\..\components\libc\posix\io\poll;..\..\..\..\components\libc\posix\io\stdio;..\..\..\..\components\libc\posix\ipc @@ -351,10 +354,10 @@ 0 4 - - - - + + + + @@ -366,13 +369,13 @@ 0 0x08000000 0x20000000 - + .\gd32_rom.ld - - - - - + + + + +
@@ -389,32 +392,26 @@ Compiler - - - syscall_mem.c - 1 - ..\..\..\components\libc\compilers\armlibc\syscall_mem.c - - syscalls.c 1 - ..\..\..\components\libc\compilers\armlibc\syscalls.c + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c - - - time.c + syscall_mem.c 1 - ..\..\..\components\libc\compilers\common\time.c + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c - - stdlib.c 1 - ..\..\..\components\libc\compilers\common\stdlib.c + ..\..\..\..\components\libc\compilers\common\stdlib.c + + + time.c + 1 + ..\..\..\..\components\libc\compilers\common\time.c @@ -424,35 +421,27 @@ div0.c 1 - ..\..\..\libcpu\arm\common\div0.c + ..\..\..\..\libcpu\arm\common\div0.c - - backtrace.c 1 - ..\..\..\libcpu\arm\common\backtrace.c + ..\..\..\..\libcpu\arm\common\backtrace.c - - showmem.c 1 - ..\..\..\libcpu\arm\common\showmem.c + ..\..\..\..\libcpu\arm\common\showmem.c - - cpuport.c 1 - ..\..\..\libcpu\arm\cortex-m3\cpuport.c + ..\..\..\..\libcpu\arm\cortex-m3\cpuport.c - - context_rvds.S 2 - ..\..\..\libcpu\arm\cortex-m3\context_rvds.S + ..\..\..\..\libcpu\arm\cortex-m3\context_rvds.S @@ -462,90 +451,68 @@ waitqueue.c 1 - ..\..\..\components\drivers\ipc\waitqueue.c + ..\..\..\..\components\drivers\ipc\waitqueue.c - - - - pipe.c - 1 - ..\..\..\components\drivers\ipc\pipe.c - - - completion.c 1 - ..\..\..\components\drivers\ipc\completion.c + ..\..\..\..\components\drivers\ipc\completion.c - - ringblk_buf.c 1 - ..\..\..\components\drivers\ipc\ringblk_buf.c + ..\..\..\..\components\drivers\ipc\ringblk_buf.c - - - - dataqueue.c - 1 - ..\..\..\components\drivers\ipc\dataqueue.c - - - ringbuffer.c 1 - ..\..\..\components\drivers\ipc\ringbuffer.c + ..\..\..\..\components\drivers\ipc\ringbuffer.c - - workqueue.c 1 - ..\..\..\components\drivers\ipc\workqueue.c + ..\..\..\..\components\drivers\ipc\workqueue.c + + + pipe.c + 1 + ..\..\..\..\components\drivers\ipc\pipe.c + + + dataqueue.c + 1 + ..\..\..\..\components\drivers\ipc\dataqueue.c - - pin.c 1 - ..\..\..\components\drivers\misc\pin.c + ..\..\..\..\components\drivers\misc\pin.c - - serial.c 1 - ..\..\..\components\drivers\serial\serial.c + ..\..\..\..\components\drivers\serial\serial.c Drivers - - - board.c - 1 - board\board.c - - startup_gd32f10x_cl.s 2 ..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\ARM\startup_gd32f10x_cl.s - - + + board.c + 1 + board\board.c + drv_gpio.c 1 ..\libraries\gd32_drivers\drv_gpio.c - - drv_usart.c 1 @@ -559,115 +526,87 @@ shell.c 1 - ..\..\..\components\finsh\shell.c + ..\..\..\..\components\finsh\shell.c - - msh.c 1 - ..\..\..\components\finsh\msh.c + ..\..\..\..\components\finsh\msh.c - - cmd.c 1 - ..\..\..\components\finsh\cmd.c + ..\..\..\..\components\finsh\cmd.c Kernel - - - object.c - 1 - ..\..\..\src\object.c - - - - - kservice.c - 1 - ..\..\..\src\kservice.c - - - - - device.c - 1 - ..\..\..\src\device.c - - - - - idle.c - 1 - ..\..\..\src\idle.c - - - - - timer.c - 1 - ..\..\..\src\timer.c - - - - - scheduler.c - 1 - ..\..\..\src\scheduler.c - - irq.c 1 - ..\..\..\src\irq.c + ..\..\..\..\src\irq.c - - - - thread.c - 1 - ..\..\..\src\thread.c - - - ipc.c 1 - ..\..\..\src\ipc.c + ..\..\..\..\src\ipc.c - - - - mempool.c - 1 - ..\..\..\src\mempool.c - - - - - components.c - 1 - ..\..\..\src\components.c - - - mem.c 1 - ..\..\..\src\mem.c + ..\..\..\..\src\mem.c + + + thread.c + 1 + ..\..\..\..\src\thread.c + + + device.c + 1 + ..\..\..\..\src\device.c - - clock.c 1 - ..\..\..\src\clock.c + ..\..\..\..\src\clock.c + + + object.c + 1 + ..\..\..\..\src\object.c + + + components.c + 1 + ..\..\..\..\src\components.c + + + kservice.c + 1 + ..\..\..\..\src\kservice.c + + + scheduler.c + 1 + ..\..\..\..\src\scheduler.c + + + mempool.c + 1 + ..\..\..\..\src\mempool.c + + + timer.c + 1 + ..\..\..\..\src\timer.c + + + idle.c + 1 + ..\..\..\..\src\idle.c @@ -679,36 +618,26 @@ 1 ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_exti.c - - gd32f10x_gpio.c 1 ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_gpio.c - - gd32f10x_misc.c 1 ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_misc.c - - system_gd32f10x.c 1 ..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\system_gd32f10x.c - - gd32f10x_rcu.c 1 ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_rcu.c - - gd32f10x_usart.c 1 @@ -716,33 +645,39 @@ + + ::CMSIS + + - + - + - + - + + <Project Info> - - - - - + + + + + 0 1 + diff --git a/bsp/gd32/gd32105c-eval/rtconfig.h b/bsp/gd32/arm/gd32105c-eval/rtconfig.h similarity index 95% rename from bsp/gd32/gd32105c-eval/rtconfig.h rename to bsp/gd32/arm/gd32105c-eval/rtconfig.h index 704d2d2edd..f835dc264e 100644 --- a/bsp/gd32/gd32105c-eval/rtconfig.h +++ b/bsp/gd32/arm/gd32105c-eval/rtconfig.h @@ -52,8 +52,14 @@ #define RT_USING_USER_MAIN #define RT_MAIN_THREAD_STACK_SIZE 2048 #define RT_MAIN_THREAD_PRIORITY 10 -#define RT_USING_MSH + +/* C++ features */ + + +/* Command shell */ + #define RT_USING_FINSH +#define RT_USING_MSH #define FINSH_USING_MSH #define FINSH_THREAD_NAME "tshell" #define FINSH_THREAD_PRIORITY 20 @@ -66,6 +72,9 @@ #define FINSH_USING_DESCRIPTION #define FINSH_ARG_MAX 10 +/* Device virtual file system */ + + /* Device Drivers */ #define RT_USING_DEVICE_IPC @@ -81,7 +90,7 @@ /* Using USB */ -/* C/C++ and POSIX layer */ +/* POSIX layer and C standard library */ #define RT_LIBC_DEFAULT_TIMEZONE 8 @@ -93,10 +102,12 @@ /* Socket is in the 'Network' category */ - /* Network */ +/* VBUS(Virtual Software BUS) */ + + /* Utilities */ diff --git a/bsp/gd32/gd32205r-start/rtconfig.py b/bsp/gd32/arm/gd32105c-eval/rtconfig.py similarity index 98% rename from bsp/gd32/gd32205r-start/rtconfig.py rename to bsp/gd32/arm/gd32105c-eval/rtconfig.py index a8cb7dc467..4285e6b03c 100644 --- a/bsp/gd32/gd32205r-start/rtconfig.py +++ b/bsp/gd32/arm/gd32105c-eval/rtconfig.py @@ -22,8 +22,8 @@ elif CROSS_TOOL == 'keil': PLATFORM = 'armcc' EXEC_PATH = r'C:/Keil_v5' elif CROSS_TOOL == 'iar': - PLATFORM = 'iccarm' - EXEC_PATH = r'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.3' + 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') @@ -93,7 +93,7 @@ elif PLATFORM == 'armcc': POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' -elif PLATFORM == 'iccarm': +elif PLATFORM == 'iar': # toolchains CC = 'iccarm' CXX = 'iccarm' diff --git a/bsp/gd32/arm/gd32105c-eval/template.ewp b/bsp/gd32/arm/gd32105c-eval/template.ewp new file mode 100644 index 0000000000..16b17dc86e --- /dev/null +++ b/bsp/gd32/arm/gd32105c-eval/template.ewp @@ -0,0 +1,1889 @@ + + + 2 + + Debug + + ARM + + 1 + + General + 3 + + 22 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 22 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + + diff --git a/bsp/gd32/gd32407v-start/template.uvoptx b/bsp/gd32/arm/gd32105c-eval/template.uvoptx similarity index 87% rename from bsp/gd32/gd32407v-start/template.uvoptx rename to bsp/gd32/arm/gd32105c-eval/template.uvoptx index 6f7965ced8..956bfbef1e 100644 --- a/bsp/gd32/gd32407v-start/template.uvoptx +++ b/bsp/gd32/arm/gd32105c-eval/template.uvoptx @@ -26,7 +26,7 @@ 0x4 ARM-ADS - 12000000 + 25000000 1 1 @@ -103,7 +103,7 @@ 1 0 0 - 3 + 4 @@ -114,13 +114,18 @@ - BIN\CMSIS_AGDI.dll + Segger\JL2CM3.dll + + 0 + JL2CM3 + -U59413783 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F10x_CL.FLM -FS08000000 -FL040000 -FP0($$Device:GD32F105VC$Flash\GD32F10x_CL.FLM) + 0 UL2CM3 - UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0GD32F4xx_3MB -FL0300000 -FS08000000 -FP0($$Device:GD32F407VK$Flash\GD32F4xx_3MB.FLM) + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC800 -FD20000000 -FF0GD32F10x_CL -FL040000 -FS08000000 -FP0($$Device:GD32F105VC$Flash\GD32F10x_CL.FLM) diff --git a/bsp/gd32/gd32105c-eval/template.uvproj b/bsp/gd32/arm/gd32105c-eval/template.uvproj similarity index 98% rename from bsp/gd32/gd32105c-eval/template.uvproj rename to bsp/gd32/arm/gd32105c-eval/template.uvproj index 8ad9e1c662..5abdefe531 100644 --- a/bsp/gd32/gd32105c-eval/template.uvproj +++ b/bsp/gd32/arm/gd32105c-eval/template.uvproj @@ -15,10 +15,10 @@ GD32F105VC GigaDevice - IRAM(0x20000000-0x20018000) IROM(0x08000000-0x08040000) CLOCK(10800000) CPUTYPE("Cortex-M3") + IRAM(0x20000000-0x20018000) IROM(0x08000000-0x08040000) CLOCK(25000000) CPUTYPE("Cortex-M3") - "Startup\GD\GD32F10x\startup_gd32f10x.s" ("GD32F10x Startup Code") - UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F10x_3MB -FS08000000 -FL0100000) + "Startup\GD\GD32F10x\startup_gd32f10x_cl.s" ("GD32F10x Startup Code") + UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F10x_CL -FS08000000 -FL040000) 0 gd32f10x0.h @@ -30,7 +30,7 @@ - SFD\GD\GD32F10x\GD32F10x.SFR + SFD\GD\GD32F10x\GD32F10x_CL.SFR 0 0 diff --git a/bsp/gd32/gd32105c-eval/template.uvprojx b/bsp/gd32/arm/gd32105c-eval/template.uvprojx similarity index 97% rename from bsp/gd32/gd32105c-eval/template.uvprojx rename to bsp/gd32/arm/gd32105c-eval/template.uvprojx index 2b0da81501..77d48050ff 100644 --- a/bsp/gd32/gd32105c-eval/template.uvprojx +++ b/bsp/gd32/arm/gd32105c-eval/template.uvprojx @@ -16,12 +16,12 @@ GD32F105VC GigaDevice - GigaDevice.GD32F10x_DFP.2.0.1 - http://www.keil.com/pack/ - IRAM(0x20000000,0x00018000) IROM(0x08000000,0x00040000) CPUTYPE("Cortex-M3") CLOCK(10800000) ELITTLE + GigaDevice.GD32F10x_DFP.2.0.2 + http://gd32mcu.com/data/documents/pack/ + IRAM(0x20000000,0x00018000) IROM(0x08000000,0x00040000) CPUTYPE("Cortex-M3") CLOCK(25000000) ELITTLE - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F10x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F105VC$Flash\GD32F10x_CL.FLM)) + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F10x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F105VC$Flash\GD32F10x_CL.FLM)) 0 $$Device:GD32F105VC$Device\Include\gd32f10x.h diff --git a/bsp/gd32/gd32105r-start/.config b/bsp/gd32/arm/gd32105r-start/.config similarity index 96% rename from bsp/gd32/gd32105r-start/.config rename to bsp/gd32/arm/gd32105r-start/.config index 4c43d8b05d..cc9c25e12e 100644 --- a/bsp/gd32/gd32105r-start/.config +++ b/bsp/gd32/arm/gd32105r-start/.config @@ -90,8 +90,17 @@ 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 -CONFIG_RT_USING_MSH=y + +# +# C++ features +# +# CONFIG_RT_USING_CPLUSPLUS is not set + +# +# Command shell +# CONFIG_RT_USING_FINSH=y +CONFIG_RT_USING_MSH=y CONFIG_FINSH_USING_MSH=y CONFIG_FINSH_THREAD_NAME="tshell" CONFIG_FINSH_THREAD_PRIORITY=20 @@ -105,8 +114,11 @@ 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 is not set -# CONFIG_RT_USING_FAL is not set # # Device Drivers @@ -123,13 +135,10 @@ CONFIG_RT_SERIAL_RB_BUFSZ=64 # CONFIG_RT_USING_CAN is not set # CONFIG_RT_USING_HWTIMER is not set # CONFIG_RT_USING_CPUTIME is not set -CONFIG_RT_USING_I2C=y -# CONFIG_RT_I2C_DEBUG is not set -CONFIG_RT_USING_I2C_BITOPS=y -# CONFIG_RT_I2C_BITOPS_DEBUG is not set +# CONFIG_RT_USING_I2C is not set # CONFIG_RT_USING_PHY is not set CONFIG_RT_USING_PIN=y -CONFIG_RT_USING_ADC=y +# CONFIG_RT_USING_ADC is not set # CONFIG_RT_USING_DAC is not set # CONFIG_RT_USING_PWM is not set # CONFIG_RT_USING_MTD_NOR is not set @@ -155,7 +164,7 @@ CONFIG_RT_USING_ADC=y # CONFIG_RT_USING_USB_DEVICE is not set # -# C/C++ and POSIX layer +# POSIX layer and C standard library # CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 @@ -179,7 +188,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # # Socket is in the 'Network' category # -# CONFIG_RT_USING_CPLUSPLUS is not set # # Network @@ -189,6 +197,11 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_RT_USING_LWIP is not set # CONFIG_RT_USING_AT is not set +# +# VBUS(Virtual Software BUS) +# +# CONFIG_RT_USING_VBUS is not set + # # Utilities # @@ -197,7 +210,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_RT_USING_UTEST is not set # 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 @@ -262,6 +274,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set # CONFIG_PKG_USING_JOYLINK is not set # CONFIG_PKG_USING_EZ_IOT_OS is not set +# CONFIG_PKG_USING_IOTSHARP_SDK 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 @@ -301,6 +314,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # # CONFIG_PKG_USING_MBEDTLS is not set # CONFIG_PKG_USING_LIBSODIUM is not set +# CONFIG_PKG_USING_LIBHYDROGEN is not set # CONFIG_PKG_USING_TINYCRYPT is not set # CONFIG_PKG_USING_TFM is not set # CONFIG_PKG_USING_YD_CRYPTO is not set @@ -340,6 +354,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_LVGL is not set # CONFIG_PKG_USING_LITTLEVGL2RTT is not set # CONFIG_PKG_USING_LV_MUSIC_DEMO is not set +# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set # # u8g2: a monochrome graphic library @@ -414,6 +429,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_FDT is not set # CONFIG_PKG_USING_CBOX is not set # CONFIG_PKG_USING_SNOWFLAKE is not set +# CONFIG_PKG_USING_HASH_MATCH is not set # # system packages @@ -445,6 +461,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CMSIS: ARM Cortex-M Microcontroller Software Interface Standard # # CONFIG_PKG_USING_CMSIS_5 is not set +# CONFIG_PKG_USING_CMSIS_RTOS1 is not set # CONFIG_PKG_USING_CMSIS_RTOS2 is not set # @@ -487,6 +504,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_TINYUSB is not set # CONFIG_PKG_USING_CHERRYUSB is not set # CONFIG_PKG_USING_KMULTI_RTIMER is not set +# CONFIG_PKG_USING_TFDB is not set # # peripheral libraries and drivers @@ -641,6 +659,8 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_CONTROLLER is not set # CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set # CONFIG_PKG_USING_MFBD is not set +# CONFIG_PKG_USING_SLCAN2RTT is not set +# CONFIG_PKG_USING_SOEM is not set # # Hardware Drivers Config @@ -667,8 +687,11 @@ CONFIG_BSP_USING_UART1=y # CONFIG_BSP_USING_SPI is not set # CONFIG_BSP_USING_I2C1 is not set # CONFIG_BSP_USING_TIM is not set +# CONFIG_BSP_USING_ONCHIP_RTC is not set # CONFIG_BSP_USING_WDT is not set -# CONFIG_BSP_USING_RTC is not set +# CONFIG_BSP_USING_SDIO is not set +# CONFIG_BSP_USING_USBD is not set +# CONFIG_BSP_USING_USBH is not set # # Board extended module Drivers diff --git a/bsp/gd32/gd32107c-eval/Kconfig b/bsp/gd32/arm/gd32105r-start/Kconfig similarity index 92% rename from bsp/gd32/gd32107c-eval/Kconfig rename to bsp/gd32/arm/gd32105r-start/Kconfig index 8cbc7b71a8..dbc650938f 100644 --- a/bsp/gd32/gd32107c-eval/Kconfig +++ b/bsp/gd32/arm/gd32105r-start/Kconfig @@ -8,7 +8,7 @@ config BSP_DIR config RTT_DIR string option env="RTT_ROOT" - default "../../.." + default "../../../.." config PKGS_DIR string diff --git a/bsp/gd32/gd32105r-start/README.md b/bsp/gd32/arm/gd32105r-start/README.md similarity index 84% rename from bsp/gd32/gd32105r-start/README.md rename to bsp/gd32/arm/gd32105r-start/README.md index b3a02bae22..0f4f784aef 100644 --- a/bsp/gd32/gd32105r-start/README.md +++ b/bsp/gd32/arm/gd32105r-start/README.md @@ -25,15 +25,16 @@ GD3105R-START是-兆易创新推出的一款GD32F10X系列的评估板,最高 本 BSP 目前对外设的支持情况如下: -| **片上外设** | **支持情况** | **备注** | +| **片上外设** | **支持情况** | **备注** | |:--------- |:--------:|:------------------------------------- | -| GPIO | 支持 | PA0, PA1... PK15 ---> PIN: 0, 1...144 | +| GPIO | 支持 | PA0, PA1... ---> PIN: 0, 1...50 | | UART | 支持 | UART0 - UART4 | | I2C | 支持 | I2C1 | -| SPI | 支持 | SPI0 - SPI2 | +| SPI | 支持 | SPI0 - SPI2 | | SPI FLASH | 支持 | | -| **扩展模块** | **支持情况** | **备注** | -| 暂无 | 暂不支持 | 暂不支持 | +| ADC | 支持 | ADC0 - ADC1 | +| **扩展模块** | **支持情况** | **备注** | +| 暂无 | 暂不支持 | 暂不支持 | ## 使用说明 @@ -49,7 +50,7 @@ GD3105R-START是-兆易创新推出的一款GD32F10X系列的评估板,最高 ### 快速上手 -本 BSP 为开发者提供 MDK5 工程,并且支持 GCC 开发环境,也可使用RT-Thread Studio开发。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 +本 BSP 为开发者提供 MDK4、MDK5 和 IAR 工程,并且支持 GCC 开发环境,也可使用RT-Thread Studio开发。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 #### 硬件连接 @@ -85,7 +86,7 @@ msh > 3. 输入`pkgs --update`命令更新软件包。 -4. 输入`scons --target=mdk4/mdk5` 命令重新生成工程。 +4. 输入`scons --target=mdk4/mdk5/iar` 命令重新生成工程。 ## 注意事项 diff --git a/bsp/gd32/gd32105r-start/SConscript b/bsp/gd32/arm/gd32105r-start/SConscript similarity index 100% rename from bsp/gd32/gd32105r-start/SConscript rename to bsp/gd32/arm/gd32105r-start/SConscript diff --git a/bsp/gd32/gd32103c-eval/SConstruct b/bsp/gd32/arm/gd32105r-start/SConstruct similarity index 94% rename from bsp/gd32/gd32103c-eval/SConstruct rename to bsp/gd32/arm/gd32105r-start/SConstruct index 4ae47cd02f..4e87945853 100644 --- a/bsp/gd32/gd32103c-eval/SConstruct +++ b/bsp/gd32/arm/gd32105r-start/SConstruct @@ -5,7 +5,7 @@ import rtconfig if os.getenv('RTT_ROOT'): RTT_ROOT = os.getenv('RTT_ROOT') else: - RTT_ROOT = os.path.normpath(os.getcwd() + '/../../..') + RTT_ROOT = os.path.normpath(os.getcwd() + '/../../../..') sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] try: @@ -26,7 +26,7 @@ env = Environment(tools = ['mingw'], LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) env.PrependENVPath('PATH', rtconfig.EXEC_PATH) -if rtconfig.PLATFORM in ['iccarm']: +if rtconfig.PLATFORM == 'iar': env.Replace(CCCOM = ['$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES']) env.Replace(ARFLAGS = ['']) env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map') diff --git a/bsp/gd32/gd32105r-start/applications/SConscript b/bsp/gd32/arm/gd32105r-start/applications/SConscript similarity index 100% rename from bsp/gd32/gd32105r-start/applications/SConscript rename to bsp/gd32/arm/gd32105r-start/applications/SConscript diff --git a/bsp/gd32/gd32105r-start/applications/main.c b/bsp/gd32/arm/gd32105r-start/applications/main.c similarity index 100% rename from bsp/gd32/gd32105r-start/applications/main.c rename to bsp/gd32/arm/gd32105r-start/applications/main.c diff --git a/bsp/gd32/arm/gd32105r-start/board/Kconfig b/bsp/gd32/arm/gd32105r-start/board/Kconfig new file mode 100644 index 0000000000..22420e73aa --- /dev/null +++ b/bsp/gd32/arm/gd32105r-start/board/Kconfig @@ -0,0 +1,215 @@ +menu "Hardware Drivers Config" + +config SOC_SERIES_GD32F10x + bool + default y + +config SOC_GD32105R + bool + select SOC_SERIES_GD32F10x + select RT_USING_COMPONENTS_INIT + select RT_USING_USER_MAIN + default y + +menu "Onboard Peripheral Drivers" + +endmenu + +menu "On-chip Peripheral Drivers" + + config BSP_USING_GPIO + bool "Enable GPIO" + select RT_USING_PIN + default y + + menuconfig BSP_USING_UART + bool "Enable UART" + default y + select RT_USING_SERIAL + if BSP_USING_UART + config BSP_USING_UART0 + bool "Enable UART0" + default n + + config BSP_UART0_RX_USING_DMA + bool "Enable UART0 RX DMA" + depends on BSP_USING_UART0 + select RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART1 + bool "Enable UART1" + default y + + config BSP_UART1_RX_USING_DMA + bool "Enable UART1 RX DMA" + depends on BSP_USING_UART1 + select RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART2 + bool "Enable UART2" + default n + + config BSP_UART2_RX_USING_DMA + bool "Enable UART2 RX DMA" + depends on BSP_USING_UART2 + select RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART3 + bool "Enable UART3" + default n + + config BSP_UART3_RX_USING_DMA + bool "Enable UART3 RX DMA" + depends on BSP_USING_UART3 + select RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART4 + bool "Enable UART4" + default n + + config BSP_UART4_RX_USING_DMA + bool "Enable UART4 RX DMA" + depends on BSP_USING_UART4 + select RT_SERIAL_USING_DMA + 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 + config BSP_USING_ADC1 + bool "using adc1" + default n + endif + + menuconfig BSP_USING_SPI + bool "Enable SPI BUS" + default n + select RT_USING_SPI + if BSP_USING_SPI + config BSP_USING_SPI0 + bool "Enable SPI0 BUS" + default n + config BSP_USING_SPI1 + bool "Enable SPI1 BUS" + default n + config BSP_USING_SPI2 + bool "Enable SPI2 BUS" + default n + endif + + menuconfig BSP_USING_I2C1 + bool "Enable I2C1 BUS (software simulation)" + default n + select RT_USING_I2C + select RT_USING_I2C_BITOPS + select RT_USING_PIN + if BSP_USING_I2C1 + config BSP_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 1 216 + default 24 + config BSP_I2C1_SDA_PIN + int "I2C1 sda pin number" + range 1 216 + default 25 + endif + + menuconfig BSP_USING_ADC + bool "Enable ADC" + default n + select RT_USING_ADC + if BSP_USING_ADC + config BSP_USING_ADC0 + bool "Enable ADC0" + default n + + config BSP_USING_ADC1 + bool "Enable ADC1" + default n + endif + + menuconfig BSP_USING_TIM + bool "Enable timer" + default n + select RT_USING_HWTIMER + if BSP_USING_TIM + config BSP_USING_TIM10 + bool "Enable TIM10" + default n + + config BSP_USING_TIM11 + bool "Enable TIM11" + default n + + config BSP_USING_TIM12 + bool "Enable TIM13" + default n + endif + + menuconfig BSP_USING_ONCHIP_RTC + bool "Enable RTC" + select RT_USING_RTC + default n + if BSP_USING_ONCHIP_RTC + choice + prompt "Select clock source" + default BSP_RTC_USING_LSE + + config BSP_RTC_USING_LSE + bool "RTC USING LSE" + + config BSP_RTC_USING_LSI + bool "RTC USING LSI" + endchoice + endif + + config BSP_USING_WDT + bool "Enable Watchdog Timer" + select RT_USING_WDT + default n + + config BSP_USING_SDIO + bool "Enable SDIO" + select RT_USING_SDIO + select RT_USING_DFS + default n + + config BSP_USING_USBD + bool "Enable USB Device" + select RT_USING_USB_DEVICE + default n + + menuconfig BSP_USING_USBH + bool "Enable USB Host" + select RT_USING_USB_HOST + default n + if BSP_USING_USBH + menuconfig RT_USBH_MSTORAGE + bool "Enable Udisk Drivers" + default n + if RT_USBH_MSTORAGE + config UDISK_MOUNTPOINT + string "Udisk mount dir" + default "/" + endif + endif + + source "../libraries/gd32_drivers/Kconfig" + +endmenu + +menu "Board extended module Drivers" + +endmenu + +endmenu diff --git a/bsp/gd32/gd32105c-eval/board/SConscript b/bsp/gd32/arm/gd32105r-start/board/SConscript similarity index 84% rename from bsp/gd32/gd32105c-eval/board/SConscript rename to bsp/gd32/arm/gd32105r-start/board/SConscript index a85b0a42ae..c1f4a6001b 100644 --- a/bsp/gd32/gd32105c-eval/board/SConscript +++ b/bsp/gd32/arm/gd32105r-start/board/SConscript @@ -15,11 +15,11 @@ path = [cwd] startup_path_prefix = SDK_LIB -if rtconfig.PLATFORM in ['gcc']: +if rtconfig.CROSS_TOOL == 'gcc': src += [startup_path_prefix + '/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_cl.s'] -elif rtconfig.PLATFORM in ['armcc', 'armclang']: +elif rtconfig.CROSS_TOOL == 'keil': src += [startup_path_prefix + '/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_cl.s'] -elif rtconfig.PLATFORM in ['iccarm']: +elif rtconfig.CROSS_TOOL == 'iar': src += [startup_path_prefix + '/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_cl.s'] CPPDEFINES = ['GD32F10X_CL'] diff --git a/bsp/gd32/gd32107c-eval/board/board.c b/bsp/gd32/arm/gd32105r-start/board/board.c similarity index 96% rename from bsp/gd32/gd32107c-eval/board/board.c rename to bsp/gd32/arm/gd32105r-start/board/board.c index c409645b37..4a7c61b8cf 100644 --- a/bsp/gd32/gd32107c-eval/board/board.c +++ b/bsp/gd32/arm/gd32105r-start/board/board.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2022, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/gd32/gd32105r-start/board/board.h b/bsp/gd32/arm/gd32105r-start/board/board.h similarity index 100% rename from bsp/gd32/gd32105r-start/board/board.h rename to bsp/gd32/arm/gd32105r-start/board/board.h diff --git a/bsp/gd32/gd32105r-start/board/gd32f10x_libopt.h b/bsp/gd32/arm/gd32105r-start/board/gd32f10x_libopt.h similarity index 100% rename from bsp/gd32/gd32105r-start/board/gd32f10x_libopt.h rename to bsp/gd32/arm/gd32105r-start/board/gd32f10x_libopt.h diff --git a/bsp/gd32/gd32105r-start/board/linker_scripts/link.icf b/bsp/gd32/arm/gd32105r-start/board/linker_scripts/link.icf similarity index 100% rename from bsp/gd32/gd32105r-start/board/linker_scripts/link.icf rename to bsp/gd32/arm/gd32105r-start/board/linker_scripts/link.icf diff --git a/bsp/gd32/gd32107c-eval/board/linker_scripts/link.ld b/bsp/gd32/arm/gd32105r-start/board/linker_scripts/link.ld similarity index 98% rename from bsp/gd32/gd32107c-eval/board/linker_scripts/link.ld rename to bsp/gd32/arm/gd32105r-start/board/linker_scripts/link.ld index 8ba4a0e9f2..0bd341937c 100644 --- a/bsp/gd32/gd32107c-eval/board/linker_scripts/link.ld +++ b/bsp/gd32/arm/gd32105r-start/board/linker_scripts/link.ld @@ -1,5 +1,5 @@ /* - * linker script for GD32F30x with GNU ld + * linker script for GD32F10x with GNU ld * BruceOu 2021-12-14 */ diff --git a/bsp/gd32/gd32105r-start/board/linker_scripts/link.sct b/bsp/gd32/arm/gd32105r-start/board/linker_scripts/link.sct similarity index 100% rename from bsp/gd32/gd32105r-start/board/linker_scripts/link.sct rename to bsp/gd32/arm/gd32105r-start/board/linker_scripts/link.sct diff --git a/bsp/gd32/gd32105r-start/figures/board.jpg b/bsp/gd32/arm/gd32105r-start/figures/board.jpg similarity index 100% rename from bsp/gd32/gd32105r-start/figures/board.jpg rename to bsp/gd32/arm/gd32105r-start/figures/board.jpg diff --git a/bsp/gd32/arm/gd32105r-start/project.ewd b/bsp/gd32/arm/gd32105r-start/project.ewd new file mode 100644 index 0000000000..118019d132 --- /dev/null +++ b/bsp/gd32/arm/gd32105r-start/project.ewd @@ -0,0 +1,3056 @@ + + + 3 + + Debug + + ARM + + 1 + + C-SPY + 2 + + 32 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 1 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 1 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 32 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 0 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 0 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 0 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 0 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/bsp/gd32/arm/gd32105r-start/project.ewp b/bsp/gd32/arm/gd32105r-start/project.ewp new file mode 100644 index 0000000000..f7391d4d23 --- /dev/null +++ b/bsp/gd32/arm/gd32105r-start/project.ewp @@ -0,0 +1,2316 @@ + + + 3 + + Debug + + ARM + + 1 + + General + 3 + + 33 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + + Release + + ARM + + 0 + + General + 3 + + 33 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + Compiler + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\stdlib.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscalls.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\time.c + + + + CPU + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\backtrace.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m3\context_iar.S + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m3\cpuport.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\showmem.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\completion.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\dataqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\misc\pin.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\pipe.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringbuffer.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\serial\serial.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\waitqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\workqueue.c + + + + Drivers + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_gpio.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_usart.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\IAR\startup_gd32f10x_cl.s + + + + Finsh + + $PROJ_DIR$\..\..\..\..\components\finsh\cmd.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\shell.c + + + + Kernel + + $PROJ_DIR$\..\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\..\src\device.c + + + $PROJ_DIR$\..\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\..\src\scheduler.c + + + $PROJ_DIR$\..\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\..\src\timer.c + + + + Libraries + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_exti.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_gpio.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_misc.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_rcu.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_usart.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\system_gd32f10x.c + + + + POSIX + + diff --git a/bsp/gd32/arm/gd32105r-start/project.eww b/bsp/gd32/arm/gd32105r-start/project.eww new file mode 100644 index 0000000000..c2cb02eb1e --- /dev/null +++ b/bsp/gd32/arm/gd32105r-start/project.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\project.ewp + + + + + diff --git a/bsp/gd32/arm/gd32105r-start/project.uvoptx b/bsp/gd32/arm/gd32105r-start/project.uvoptx new file mode 100644 index 0000000000..6fa7919867 --- /dev/null +++ b/bsp/gd32/arm/gd32105r-start/project.uvoptx @@ -0,0 +1,784 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 25000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 0 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 3 + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F10x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F105RC$Flash\GD32F10x_CL.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + Applications + 0 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + applications\main.c + main.c + 0 + 0 + + + + + Compiler + 0 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c + syscall_mem.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c + syscalls.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\stdlib.c + stdlib.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\time.c + time.c + 0 + 0 + + + + + CPU + 0 + 0 + 0 + 0 + + 3 + 6 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\backtrace.c + backtrace.c + 0 + 0 + + + 3 + 7 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 3 + 8 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 3 + 9 + 2 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m3\context_rvds.S + context_rvds.S + 0 + 0 + + + 3 + 10 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m3\cpuport.c + cpuport.c + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 4 + 11 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\waitqueue.c + waitqueue.c + 0 + 0 + + + 4 + 12 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 4 + 13 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\pipe.c + pipe.c + 0 + 0 + + + 4 + 14 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\workqueue.c + workqueue.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\completion.c + completion.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\dataqueue.c + dataqueue.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\serial\serial.c + serial.c + 0 + 0 + + + + + Drivers + 0 + 0 + 0 + 0 + + 5 + 20 + 2 + 0 + 0 + 0 + ..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\ARM\startup_gd32f10x_cl.s + startup_gd32f10x_cl.s + 0 + 0 + + + 5 + 21 + 1 + 0 + 0 + 0 + board\board.c + board.c + 0 + 0 + + + 5 + 22 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 5 + 23 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_usart.c + drv_usart.c + 0 + 0 + + + + + Finsh + 0 + 0 + 0 + 0 + + 6 + 24 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 6 + 25 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 6 + 26 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + + + Kernel + 0 + 0 + 0 + 0 + + 7 + 27 + 1 + 0 + 0 + 0 + ..\..\..\..\src\device.c + device.c + 0 + 0 + + + 7 + 28 + 1 + 0 + 0 + 0 + ..\..\..\..\src\components.c + components.c + 0 + 0 + + + 7 + 29 + 1 + 0 + 0 + 0 + ..\..\..\..\src\thread.c + thread.c + 0 + 0 + + + 7 + 30 + 1 + 0 + 0 + 0 + ..\..\..\..\src\idle.c + idle.c + 0 + 0 + + + 7 + 31 + 1 + 0 + 0 + 0 + ..\..\..\..\src\scheduler.c + scheduler.c + 0 + 0 + + + 7 + 32 + 1 + 0 + 0 + 0 + ..\..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 7 + 33 + 1 + 0 + 0 + 0 + ..\..\..\..\src\object.c + object.c + 0 + 0 + + + 7 + 34 + 1 + 0 + 0 + 0 + ..\..\..\..\src\timer.c + timer.c + 0 + 0 + + + 7 + 35 + 1 + 0 + 0 + 0 + ..\..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 7 + 36 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mempool.c + mempool.c + 0 + 0 + + + 7 + 37 + 1 + 0 + 0 + 0 + ..\..\..\..\src\irq.c + irq.c + 0 + 0 + + + 7 + 38 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mem.c + mem.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\clock.c + clock.c + 0 + 0 + + + + + Libraries + 0 + 0 + 0 + 0 + + 8 + 40 + 1 + 0 + 0 + 0 + ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_exti.c + gd32f10x_exti.c + 0 + 0 + + + 8 + 41 + 1 + 0 + 0 + 0 + ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_gpio.c + gd32f10x_gpio.c + 0 + 0 + + + 8 + 42 + 1 + 0 + 0 + 0 + ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_misc.c + gd32f10x_misc.c + 0 + 0 + + + 8 + 43 + 1 + 0 + 0 + 0 + ..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\system_gd32f10x.c + system_gd32f10x.c + 0 + 0 + + + 8 + 44 + 1 + 0 + 0 + 0 + ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_rcu.c + gd32f10x_rcu.c + 0 + 0 + + + 8 + 45 + 1 + 0 + 0 + 0 + ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_usart.c + gd32f10x_usart.c + 0 + 0 + + + + + ::CMSIS + 0 + 0 + 0 + 1 + + +
diff --git a/bsp/gd32/gd32105r-start/project.uvproj b/bsp/gd32/arm/gd32105r-start/project.uvproj similarity index 99% rename from bsp/gd32/gd32105r-start/project.uvproj rename to bsp/gd32/arm/gd32105r-start/project.uvproj index b1ebb5a840..634db95d9c 100644 --- a/bsp/gd32/gd32105r-start/project.uvproj +++ b/bsp/gd32/arm/gd32105r-start/project.uvproj @@ -372,7 +372,7 @@ USE_STDPERIPH_DRIVER, GD32F10X_CL, __RTTHREAD__, RT_USING_ARM_LIBC, __CLK_TCK=RT_TICK_PER_SECOND - 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;..\..\..\components\drivers\include;board;..\libraries\gd32_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Include;..\libraries\GD32F10x_Firmware_Library\CMSIS;..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Include;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc + 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;..\..\..\components\drivers\include;board;..\libraries\gd32_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Include;..\libraries\GD32F10x_Firmware_Library\CMSIS;..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Include;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc;..\..\..\examples\utest\testcases\kernel @@ -439,13 +439,6 @@ ..\..\..\components\libc\compilers\armlibc\syscalls.c - - - stdlib.c - 1 - ..\..\..\components\libc\compilers\common\stdlib.c - - time.c @@ -453,9 +446,23 @@ ..\..\..\components\libc\compilers\common\time.c + + + stdlib.c + 1 + ..\..\..\components\libc\compilers\common\stdlib.c + + CPU + + + div0.c + 1 + ..\..\..\libcpu\arm\common\div0.c + + backtrace.c @@ -470,13 +477,6 @@ ..\..\..\libcpu\arm\common\showmem.c - - - div0.c - 1 - ..\..\..\libcpu\arm\common\div0.c - - cpuport.c @@ -517,23 +517,9 @@ - completion.c + ringblk_buf.c 1 - ..\..\..\components\drivers\ipc\completion.c - - - - - pipe.c - 1 - ..\..\..\components\drivers\ipc\pipe.c - - - - - ringbuffer.c - 1 - ..\..\..\components\drivers\ipc\ringbuffer.c + ..\..\..\components\drivers\ipc\ringblk_buf.c @@ -545,9 +531,9 @@ - waitqueue.c + completion.c 1 - ..\..\..\components\drivers\ipc\waitqueue.c + ..\..\..\components\drivers\ipc\completion.c @@ -559,9 +545,23 @@ - ringblk_buf.c + waitqueue.c 1 - ..\..\..\components\drivers\ipc\ringblk_buf.c + ..\..\..\components\drivers\ipc\waitqueue.c + + + + + ringbuffer.c + 1 + ..\..\..\components\drivers\ipc\ringbuffer.c + + + + + pipe.c + 1 + ..\..\..\components\drivers\ipc\pipe.c @@ -590,16 +590,16 @@ Drivers - board.c - 1 - board\board.c + startup_gd32f10x_cl.s + 2 + ..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\ARM\startup_gd32f10x_cl.s - startup_gd32f10x_cl.s - 2 - ..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\ARM\startup_gd32f10x_cl.s + board.c + 1 + board\board.c @@ -652,9 +652,37 @@ Kernel - idle.c + mem.c 1 - ..\..\..\src\idle.c + ..\..\..\src\mem.c + + + + + timer.c + 1 + ..\..\..\src\timer.c + + + + + thread.c + 1 + ..\..\..\src\thread.c + + + + + ipc.c + 1 + ..\..\..\src\ipc.c + + + + + mempool.c + 1 + ..\..\..\src\mempool.c @@ -673,9 +701,9 @@ - object.c + irq.c 1 - ..\..\..\src\object.c + ..\..\..\src\irq.c @@ -694,9 +722,9 @@ - mempool.c + idle.c 1 - ..\..\..\src\mempool.c + ..\..\..\src\idle.c @@ -708,37 +736,9 @@ - irq.c + object.c 1 - ..\..\..\src\irq.c - - - - - thread.c - 1 - ..\..\..\src\thread.c - - - - - timer.c - 1 - ..\..\..\src\timer.c - - - - - ipc.c - 1 - ..\..\..\src\ipc.c - - - - - mem.c - 1 - ..\..\..\src\mem.c + ..\..\..\src\object.c diff --git a/bsp/gd32/gd32105r-start/project.uvprojx b/bsp/gd32/arm/gd32105r-start/project.uvprojx similarity index 71% rename from bsp/gd32/gd32105r-start/project.uvprojx rename to bsp/gd32/arm/gd32105r-start/project.uvprojx index 2fa20610da..7d79ba7d71 100644 --- a/bsp/gd32/gd32105r-start/project.uvprojx +++ b/bsp/gd32/arm/gd32105r-start/project.uvprojx @@ -1,7 +1,10 @@ + 2.1 +
### uVision Project, (C) Keil Software
+ rt-thread @@ -13,31 +16,31 @@ GD32F105RC GigaDevice - GigaDevice.GD32F10x_DFP.2.0.1 - http://www.keil.com/pack/ - IRAM(0x20000000,0x00018000) IROM(0x08000000,0x00040000) CPUTYPE("Cortex-M3") CLOCK(10800000) ELITTLE - - - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F10x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F105RC$Flash\GD32F10x_CL.FLM)) + GigaDevice.GD32F10x_DFP.2.0.2 + http://gd32mcu.com/data/documents/pack/ + IRAM(0x20000000,0x00018000) IROM(0x08000000,0x00040000) CPUTYPE("Cortex-M3") CLOCK(25000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F10x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F105RC$Flash\GD32F10x_CL.FLM)) 0 $$Device:GD32F105RC$Device\Include\gd32f10x.h - - - - - - - - - + + + + + + + + + $$Device:GD32F105RC$SVD\GD32F10x\GD32F10x_CL.svd 0 0 - - - - - + + + + + 0 0 @@ -59,8 +62,8 @@ 0 0 - - + + 0 0 0 @@ -69,8 +72,8 @@ 0 0 - - + + 0 0 0 @@ -80,14 +83,14 @@ 1 0 fromelf --bin !L --output rtthread.bin - + 0 0 0 0 0 - + 0 @@ -101,8 +104,8 @@ 0 0 3 - - + + 1 @@ -111,7 +114,7 @@ DCM.DLL -pCM3 SARMCM3.DLL - + TCM.DLL -pCM3 @@ -135,11 +138,11 @@ 1 BIN\UL2CM3.DLL - - - - - + + + + + 0 @@ -172,7 +175,7 @@ 0 0 "Cortex-M3" - + 0 0 0 @@ -306,7 +309,7 @@ 0x0 - + 1 @@ -333,10 +336,10 @@ 0 0 - + USE_STDPERIPH_DRIVER, GD32F10X_CL, __RTTHREAD__, RT_USING_ARM_LIBC, __CLK_TCK=RT_TICK_PER_SECOND - - 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;..\..\..\components\drivers\include;board;..\libraries\gd32_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Include;..\libraries\GD32F10x_Firmware_Library\CMSIS;..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Include;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc + + 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\gd32_drivers;..\..\..\..\components\finsh;.;..\..\..\..\include;..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Include;..\libraries\GD32F10x_Firmware_Library\CMSIS;..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Include;..\..\..\..\components\libc\posix\io\poll;..\..\..\..\components\libc\posix\io\stdio;..\..\..\..\components\libc\posix\ipc @@ -351,10 +354,10 @@ 0 4 - - - - + + + + @@ -366,13 +369,13 @@ 0 0x08000000 0x20000000 - + .\gd32_rom.ld - - - - - + + + + +
@@ -393,66 +396,52 @@ syscall_mem.c 1 - ..\..\..\components\libc\compilers\armlibc\syscall_mem.c + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c - - syscalls.c 1 - ..\..\..\components\libc\compilers\armlibc\syscalls.c + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c - - - - time.c - 1 - ..\..\..\components\libc\compilers\common\time.c - - - stdlib.c 1 - ..\..\..\components\libc\compilers\common\stdlib.c + ..\..\..\..\components\libc\compilers\common\stdlib.c + + + time.c + 1 + ..\..\..\..\components\libc\compilers\common\time.c CPU + + backtrace.c + 1 + ..\..\..\..\libcpu\arm\common\backtrace.c + showmem.c 1 - ..\..\..\libcpu\arm\common\showmem.c + ..\..\..\..\libcpu\arm\common\showmem.c - - div0.c 1 - ..\..\..\libcpu\arm\common\div0.c + ..\..\..\..\libcpu\arm\common\div0.c - - - - backtrace.c - 1 - ..\..\..\libcpu\arm\common\backtrace.c - - - - - cpuport.c - 1 - ..\..\..\libcpu\arm\cortex-m3\cpuport.c - - - context_rvds.S 2 - ..\..\..\libcpu\arm\cortex-m3\context_rvds.S + ..\..\..\..\libcpu\arm\cortex-m3\context_rvds.S + + + cpuport.c + 1 + ..\..\..\..\libcpu\arm\cortex-m3\cpuport.c @@ -460,127 +449,70 @@ DeviceDrivers - i2c_core.c + waitqueue.c 1 - ..\..\..\components\drivers\i2c\i2c_core.c + ..\..\..\..\components\drivers\ipc\waitqueue.c - - - - i2c_dev.c - 1 - ..\..\..\components\drivers\i2c\i2c_dev.c - - - - - i2c-bit-ops.c - 1 - ..\..\..\components\drivers\i2c\i2c-bit-ops.c - - - - - completion.c - 1 - ..\..\..\components\drivers\ipc\completion.c - - - - - ringblk_buf.c - 1 - ..\..\..\components\drivers\ipc\ringblk_buf.c - - - ringbuffer.c 1 - ..\..\..\components\drivers\ipc\ringbuffer.c + ..\..\..\..\components\drivers\ipc\ringbuffer.c - - - - waitqueue.c - 1 - ..\..\..\components\drivers\ipc\waitqueue.c - - - - - workqueue.c - 1 - ..\..\..\components\drivers\ipc\workqueue.c - - - pipe.c 1 - ..\..\..\components\drivers\ipc\pipe.c + ..\..\..\..\components\drivers\ipc\pipe.c + + + workqueue.c + 1 + ..\..\..\..\components\drivers\ipc\workqueue.c + + + completion.c + 1 + ..\..\..\..\components\drivers\ipc\completion.c - - dataqueue.c 1 - ..\..\..\components\drivers\ipc\dataqueue.c + ..\..\..\..\components\drivers\ipc\dataqueue.c - - - adc.c + ringblk_buf.c 1 - ..\..\..\components\drivers\misc\adc.c + ..\..\..\..\components\drivers\ipc\ringblk_buf.c - - pin.c 1 - ..\..\..\components\drivers\misc\pin.c + ..\..\..\..\components\drivers\misc\pin.c - - serial.c 1 - ..\..\..\components\drivers\serial\serial.c + ..\..\..\..\components\drivers\serial\serial.c Drivers - - - board.c - 1 - board\board.c - - startup_gd32f10x_cl.s 2 ..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\ARM\startup_gd32f10x_cl.s - - + + board.c + 1 + board\board.c + drv_gpio.c 1 ..\libraries\gd32_drivers\drv_gpio.c - - - - drv_adc.c - 1 - ..\libraries\gd32_drivers\drv_adc.c - - - drv_usart.c 1 @@ -594,115 +526,87 @@ shell.c 1 - ..\..\..\components\finsh\shell.c + ..\..\..\..\components\finsh\shell.c - - msh.c 1 - ..\..\..\components\finsh\msh.c + ..\..\..\..\components\finsh\msh.c - - cmd.c 1 - ..\..\..\components\finsh\cmd.c + ..\..\..\..\components\finsh\cmd.c Kernel - - - mem.c - 1 - ..\..\..\src\mem.c - - - - - thread.c - 1 - ..\..\..\src\thread.c - - device.c 1 - ..\..\..\src\device.c + ..\..\..\..\src\device.c - - - - kservice.c - 1 - ..\..\..\src\kservice.c - - - - - scheduler.c - 1 - ..\..\..\src\scheduler.c - - - - - idle.c - 1 - ..\..\..\src\idle.c - - - - - mempool.c - 1 - ..\..\..\src\mempool.c - - - - - ipc.c - 1 - ..\..\..\src\ipc.c - - - - - clock.c - 1 - ..\..\..\src\clock.c - - - - - object.c - 1 - ..\..\..\src\object.c - - - - - timer.c - 1 - ..\..\..\src\timer.c - - - components.c 1 - ..\..\..\src\components.c + ..\..\..\..\src\components.c + + + thread.c + 1 + ..\..\..\..\src\thread.c + + + idle.c + 1 + ..\..\..\..\src\idle.c + + + scheduler.c + 1 + ..\..\..\..\src\scheduler.c + + + ipc.c + 1 + ..\..\..\..\src\ipc.c + + + object.c + 1 + ..\..\..\..\src\object.c + + + timer.c + 1 + ..\..\..\..\src\timer.c + + + kservice.c + 1 + ..\..\..\..\src\kservice.c + + + mempool.c + 1 + ..\..\..\..\src\mempool.c - - irq.c 1 - ..\..\..\src\irq.c + ..\..\..\..\src\irq.c + + + mem.c + 1 + ..\..\..\..\src\mem.c + + + clock.c + 1 + ..\..\..\..\src\clock.c @@ -714,50 +618,26 @@ 1 ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_exti.c - - gd32f10x_gpio.c 1 ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_gpio.c - - gd32f10x_misc.c 1 ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_misc.c - - system_gd32f10x.c 1 ..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\system_gd32f10x.c - - gd32f10x_rcu.c 1 ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_rcu.c - - - - gd32f10x_adc.c - 1 - ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_adc.c - - - - - gd32f10x_i2c.c - 1 - ..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_i2c.c - - - gd32f10x_usart.c 1 @@ -765,33 +645,39 @@ + + ::CMSIS + + - + - + - + - + + <Project Info> - - - - - + + + + + 0 1 + diff --git a/bsp/gd32/gd32105r-start/rtconfig.h b/bsp/gd32/arm/gd32105r-start/rtconfig.h similarity index 95% rename from bsp/gd32/gd32105r-start/rtconfig.h rename to bsp/gd32/arm/gd32105r-start/rtconfig.h index c6606960c2..06ff268756 100644 --- a/bsp/gd32/gd32105r-start/rtconfig.h +++ b/bsp/gd32/arm/gd32105r-start/rtconfig.h @@ -52,8 +52,14 @@ #define RT_USING_USER_MAIN #define RT_MAIN_THREAD_STACK_SIZE 2048 #define RT_MAIN_THREAD_PRIORITY 10 -#define RT_USING_MSH + +/* C++ features */ + + +/* Command shell */ + #define RT_USING_FINSH +#define RT_USING_MSH #define FINSH_USING_MSH #define FINSH_THREAD_NAME "tshell" #define FINSH_THREAD_PRIORITY 20 @@ -66,6 +72,9 @@ #define FINSH_USING_DESCRIPTION #define FINSH_ARG_MAX 10 +/* Device virtual file system */ + + /* Device Drivers */ #define RT_USING_DEVICE_IPC @@ -76,15 +85,12 @@ #define RT_USING_SERIAL_V1 #define RT_SERIAL_USING_DMA #define RT_SERIAL_RB_BUFSZ 64 -#define RT_USING_I2C -#define RT_USING_I2C_BITOPS #define RT_USING_PIN -#define RT_USING_ADC /* Using USB */ -/* C/C++ and POSIX layer */ +/* POSIX layer and C standard library */ #define RT_LIBC_DEFAULT_TIMEZONE 8 @@ -96,10 +102,12 @@ /* Socket is in the 'Network' category */ - /* Network */ +/* VBUS(Virtual Software BUS) */ + + /* Utilities */ diff --git a/bsp/gd32/gd32105r-start/rtconfig.py b/bsp/gd32/arm/gd32105r-start/rtconfig.py similarity index 98% rename from bsp/gd32/gd32105r-start/rtconfig.py rename to bsp/gd32/arm/gd32105r-start/rtconfig.py index c28bbfc9dc..1839e540bf 100644 --- a/bsp/gd32/gd32105r-start/rtconfig.py +++ b/bsp/gd32/arm/gd32105r-start/rtconfig.py @@ -22,8 +22,8 @@ elif CROSS_TOOL == 'keil': PLATFORM = 'armcc' EXEC_PATH = r'C:/Keil_v5' elif CROSS_TOOL == 'iar': - PLATFORM = 'iccarm' - EXEC_PATH = r'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.3' + 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') @@ -93,7 +93,7 @@ elif PLATFORM == 'armcc': POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' -elif PLATFORM == 'iccarm': +elif PLATFORM == 'iar': # toolchains CC = 'iccarm' CXX = 'iccarm' diff --git a/bsp/gd32/arm/gd32105r-start/template.ewp b/bsp/gd32/arm/gd32105r-start/template.ewp new file mode 100644 index 0000000000..16b17dc86e --- /dev/null +++ b/bsp/gd32/arm/gd32105r-start/template.ewp @@ -0,0 +1,1889 @@ + + + 2 + + Debug + + ARM + + 1 + + General + 3 + + 22 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 22 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + + diff --git a/bsp/gd32/gd32105r-start/template.uvoptx b/bsp/gd32/arm/gd32105r-start/template.uvoptx similarity index 99% rename from bsp/gd32/gd32105r-start/template.uvoptx rename to bsp/gd32/arm/gd32105r-start/template.uvoptx index c41712a0e7..fb44014933 100644 --- a/bsp/gd32/gd32105r-start/template.uvoptx +++ b/bsp/gd32/arm/gd32105r-start/template.uvoptx @@ -26,7 +26,7 @@ 0x4 ARM-ADS - 10800000 + 25000000 1 1 diff --git a/bsp/gd32/gd32105r-start/template.uvproj b/bsp/gd32/arm/gd32105r-start/template.uvproj similarity index 98% rename from bsp/gd32/gd32105r-start/template.uvproj rename to bsp/gd32/arm/gd32105r-start/template.uvproj index 592ba32731..31438e58e9 100644 --- a/bsp/gd32/gd32105r-start/template.uvproj +++ b/bsp/gd32/arm/gd32105r-start/template.uvproj @@ -15,12 +15,12 @@ GD32F105RC GigaDevice - IRAM(0x20000000-0x20018000) IROM(0x08000000-0x08040000) CLOCK(10800000) CPUTYPE("Cortex-M3") + IRAM(0x20000000-0x20018000) IROM(0x08000000-0x08040000) CLOCK(25000000) CPUTYPE("Cortex-M3") - "Startup\GD\GD32F10x\startup_gd32f10x.s" ("GD32F10x Startup Code") - UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F10x_3MB -FS08000000 -FL0100000) + "Startup\GD\GD32F10x\startup_gd32f10x_cl.s" ("GD32F10x Startup Code") + UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F10x_CL -FS08000000 -FL040000) 0 - gd32f10x0.h + gd32f10x.h @@ -30,7 +30,7 @@ - SFD\GD\GD32F10x\GD32F10x.SFR + SFD\GD\GD32F10x\GD32F10x_CL.SFR 0 0 @@ -605,9 +605,9 @@ Startup - startup_gd32f10x.s + startup_gd32f10x_cl.s 2 - ..\..\..\Library\Firmware\CMSIS\GD\GD32F10x\Source\ARM\startup_gd32f10x.s + ..\..\..\Library\Firmware\CMSIS\GD\GD32F10x\Source\ARM\startup_gd32f10x_cl.s diff --git a/bsp/gd32/gd32105r-start/template.uvprojx b/bsp/gd32/arm/gd32105r-start/template.uvprojx similarity index 98% rename from bsp/gd32/gd32105r-start/template.uvprojx rename to bsp/gd32/arm/gd32105r-start/template.uvprojx index fd731a72ca..4847d53845 100644 --- a/bsp/gd32/gd32105r-start/template.uvprojx +++ b/bsp/gd32/arm/gd32105r-start/template.uvprojx @@ -18,10 +18,10 @@ GigaDevice GigaDevice.GD32F10x_DFP.2.0.1 http://www.keil.com/pack/ - IRAM(0x20000000,0x00018000) IROM(0x08000000,0x00040000) CPUTYPE("Cortex-M3") CLOCK(10800000) ELITTLE + IRAM(0x20000000,0x00018000) IROM(0x08000000,0x00040000) CPUTYPE("Cortex-M3") CLOCK(25000000) ELITTLE - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F10x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F105RC$Flash\GD32F10x_CL.FLM)) + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F10x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F105RC$Flash\GD32F10x_CL.FLM)) 0 $$Device:GD32F105RC$Device\Include\gd32f10x.h diff --git a/bsp/gd32/gd32107c-eval/.config b/bsp/gd32/arm/gd32107c-eval/.config similarity index 96% rename from bsp/gd32/gd32107c-eval/.config rename to bsp/gd32/arm/gd32107c-eval/.config index 090c2d427b..fbf9218536 100644 --- a/bsp/gd32/gd32107c-eval/.config +++ b/bsp/gd32/arm/gd32107c-eval/.config @@ -90,8 +90,17 @@ 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 -CONFIG_RT_USING_MSH=y + +# +# C++ features +# +# CONFIG_RT_USING_CPLUSPLUS is not set + +# +# Command shell +# CONFIG_RT_USING_FINSH=y +CONFIG_RT_USING_MSH=y CONFIG_FINSH_USING_MSH=y CONFIG_FINSH_THREAD_NAME="tshell" CONFIG_FINSH_THREAD_PRIORITY=20 @@ -105,8 +114,11 @@ 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 is not set -# CONFIG_RT_USING_FAL is not set # # Device Drivers @@ -135,7 +147,6 @@ CONFIG_RT_USING_PIN=y # CONFIG_RT_USING_RTC is not set # CONFIG_RT_USING_SDIO is not set CONFIG_RT_USING_SPI=y -# CONFIG_RT_USING_SPI_BITOPS is not set # CONFIG_RT_USING_QSPI is not set # CONFIG_RT_USING_SPI_MSD is not set # CONFIG_RT_USING_SFUD is not set @@ -158,7 +169,7 @@ CONFIG_RT_USING_SPI=y # CONFIG_RT_USING_USB_DEVICE is not set # -# C/C++ and POSIX layer +# POSIX layer and C standard library # CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 @@ -182,7 +193,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # # Socket is in the 'Network' category # -# CONFIG_RT_USING_CPLUSPLUS is not set # # Network @@ -192,6 +202,11 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_RT_USING_LWIP is not set # CONFIG_RT_USING_AT is not set +# +# VBUS(Virtual Software BUS) +# +# CONFIG_RT_USING_VBUS is not set + # # Utilities # @@ -200,7 +215,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_RT_USING_UTEST is not set # 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 @@ -265,6 +279,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set # CONFIG_PKG_USING_JOYLINK is not set # CONFIG_PKG_USING_EZ_IOT_OS is not set +# CONFIG_PKG_USING_IOTSHARP_SDK 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 @@ -304,6 +319,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # # CONFIG_PKG_USING_MBEDTLS is not set # CONFIG_PKG_USING_LIBSODIUM is not set +# CONFIG_PKG_USING_LIBHYDROGEN is not set # CONFIG_PKG_USING_TINYCRYPT is not set # CONFIG_PKG_USING_TFM is not set # CONFIG_PKG_USING_YD_CRYPTO is not set @@ -343,6 +359,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_LVGL is not set # CONFIG_PKG_USING_LITTLEVGL2RTT is not set # CONFIG_PKG_USING_LV_MUSIC_DEMO is not set +# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set # # u8g2: a monochrome graphic library @@ -417,6 +434,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_FDT is not set # CONFIG_PKG_USING_CBOX is not set # CONFIG_PKG_USING_SNOWFLAKE is not set +# CONFIG_PKG_USING_HASH_MATCH is not set # # system packages @@ -448,6 +466,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CMSIS: ARM Cortex-M Microcontroller Software Interface Standard # # CONFIG_PKG_USING_CMSIS_5 is not set +# CONFIG_PKG_USING_CMSIS_RTOS1 is not set # CONFIG_PKG_USING_CMSIS_RTOS2 is not set # @@ -490,6 +509,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_TINYUSB is not set # CONFIG_PKG_USING_CHERRYUSB is not set # CONFIG_PKG_USING_KMULTI_RTIMER is not set +# CONFIG_PKG_USING_TFDB is not set # # peripheral libraries and drivers @@ -644,6 +664,8 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_CONTROLLER is not set # CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set # CONFIG_PKG_USING_MFBD is not set +# CONFIG_PKG_USING_SLCAN2RTT is not set +# CONFIG_PKG_USING_SOEM is not set # # Hardware Drivers Config @@ -671,6 +693,13 @@ CONFIG_BSP_USING_SPI1=y # CONFIG_BSP_SPI1_TX_USING_DMA is not set # CONFIG_BSP_SPI1_RX_USING_DMA is not set # CONFIG_BSP_USING_I2C1 is not set +# CONFIG_BSP_USING_ADC is not set +# CONFIG_BSP_USING_TIM is not set +# CONFIG_BSP_USING_ONCHIP_RTC is not set +# CONFIG_BSP_USING_WDT is not set +# CONFIG_BSP_USING_SDIO is not set +# CONFIG_BSP_USING_USBD is not set +# CONFIG_BSP_USING_USBH is not set # # Board extended module Drivers diff --git a/bsp/gd32/gd32105c-eval/Kconfig b/bsp/gd32/arm/gd32107c-eval/Kconfig similarity index 92% rename from bsp/gd32/gd32105c-eval/Kconfig rename to bsp/gd32/arm/gd32107c-eval/Kconfig index 8cbc7b71a8..dbc650938f 100644 --- a/bsp/gd32/gd32105c-eval/Kconfig +++ b/bsp/gd32/arm/gd32107c-eval/Kconfig @@ -8,7 +8,7 @@ config BSP_DIR config RTT_DIR string option env="RTT_ROOT" - default "../../.." + default "../../../.." config PKGS_DIR string diff --git a/bsp/gd32/gd32107c-eval/README.md b/bsp/gd32/arm/gd32107c-eval/README.md similarity index 79% rename from bsp/gd32/gd32107c-eval/README.md rename to bsp/gd32/arm/gd32107c-eval/README.md index 75ab55851e..6b2dfbaeb3 100644 --- a/bsp/gd32/gd32107c-eval/README.md +++ b/bsp/gd32/arm/gd32107c-eval/README.md @@ -11,14 +11,26 @@ GD3107C-EVAL是-兆易创新推出的一款GD32F10X系列的评估板,最高 该开发板常用 **板载资源** 如下: - GD32107VCT6,主频 108MHz,256KB FLASH ,96KB RAM - - 常用外设 - LED :5个,LED1 (电源指示灯),LED2(PC0),LED3(PC2),LED4(PE0),LED5(PE1) - 按键:3个,K1(用户按键,PA0),K2(用户按键,PC13),K3(用户按键,PB14) - + - General TM * 4 、Advanced TM * 1、Basic TM * 2 + - 系统时钟 * 1 + - 看门狗 * 2 + - RTC * 1 + - U(S)ART * 5 + - I2C * 1、I2S * 2 + - SPI * 3 + - CAN2.0B * 2 + - USB2.0 OTG FS * 1 + - 以太网MAC * 1 + - TFT-LCD + - EXMC/SDRAM * 1 + - ADC * 2 + - DAC * 2 + - 最多支持140GPIOs - 常用接口:USB 接口 - - 调试接口:GD-LINK ## 外设支持 @@ -27,11 +39,12 @@ GD3107C-EVAL是-兆易创新推出的一款GD32F10X系列的评估板,最高 | **片上外设** | **支持情况** | **备注** | |:--------- |:--------:|:------------------------------------- | -| GPIO | 支持 | PA0, PA1... PK15 ---> PIN: 0, 1...144 | +| GPIO | 支持 | PA0, PA1... ---> PIN: 0, 1...79 | | UART | 支持 | UART0 - UART4 | | I2C | 支持 | I2C1 | | SPI | 支持 | SPI0 - SPI2 | | SPI FLASH | 支持 | | +| ADC | 支持 | ADC0- ADC1 | | **扩展模块** | **支持情况** | **备注** | | 暂无 | 暂不支持 | 暂不支持 | @@ -49,11 +62,11 @@ GD3107C-EVAL是-兆易创新推出的一款GD32F10X系列的评估板,最高 ### 快速上手 -本 BSP 为开发者提供 MDK5 工程,并且支持 GCC 开发环境,也可使用RT-Thread Studio开发。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 +本 BSP 为开发者提供 MDK4、MDK5 和 IAR 工程,并且支持 GCC 开发环境,也可使用RT-Thread Studio开发。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 #### 硬件连接 -使用数据线连接开发板到 PC,使用USB转TTL模块连接PA2(MCU TX)和PA3(MCU RX),打开电源开关。 +使用数据线连接开发板到 PC,使用USB转232连接USART1,打开电源开关。 #### 编译下载 @@ -85,7 +98,7 @@ msh > 3. 输入`pkgs --update`命令更新软件包。 -4. 输入`scons --target=mdk4/mdk5` 命令重新生成工程。 +4. 输入`scons --target=mdk4/mdk5/iar` 命令重新生成工程。 ## 注意事项 diff --git a/bsp/gd32/gd32107c-eval/SConscript b/bsp/gd32/arm/gd32107c-eval/SConscript similarity index 100% rename from bsp/gd32/gd32107c-eval/SConscript rename to bsp/gd32/arm/gd32107c-eval/SConscript diff --git a/bsp/gd32/gd32107c-eval/SConstruct b/bsp/gd32/arm/gd32107c-eval/SConstruct similarity index 94% rename from bsp/gd32/gd32107c-eval/SConstruct rename to bsp/gd32/arm/gd32107c-eval/SConstruct index 4ae47cd02f..4e87945853 100644 --- a/bsp/gd32/gd32107c-eval/SConstruct +++ b/bsp/gd32/arm/gd32107c-eval/SConstruct @@ -5,7 +5,7 @@ import rtconfig if os.getenv('RTT_ROOT'): RTT_ROOT = os.getenv('RTT_ROOT') else: - RTT_ROOT = os.path.normpath(os.getcwd() + '/../../..') + RTT_ROOT = os.path.normpath(os.getcwd() + '/../../../..') sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] try: @@ -26,7 +26,7 @@ env = Environment(tools = ['mingw'], LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) env.PrependENVPath('PATH', rtconfig.EXEC_PATH) -if rtconfig.PLATFORM in ['iccarm']: +if rtconfig.PLATFORM == 'iar': env.Replace(CCCOM = ['$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES']) env.Replace(ARFLAGS = ['']) env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map') diff --git a/bsp/gd32/gd32107c-eval/applications/SConscript b/bsp/gd32/arm/gd32107c-eval/applications/SConscript similarity index 100% rename from bsp/gd32/gd32107c-eval/applications/SConscript rename to bsp/gd32/arm/gd32107c-eval/applications/SConscript diff --git a/bsp/gd32/gd32105c-eval/applications/main.c b/bsp/gd32/arm/gd32107c-eval/applications/main.c similarity index 82% rename from bsp/gd32/gd32105c-eval/applications/main.c rename to bsp/gd32/arm/gd32107c-eval/applications/main.c index 4a528128b4..9c149fd129 100644 --- a/bsp/gd32/gd32105c-eval/applications/main.c +++ b/bsp/gd32/arm/gd32107c-eval/applications/main.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2022, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -13,8 +13,8 @@ #include #include -/* defined the LED2 pin: PC6 */ -#define LED2_PIN GET_PIN(C, 6) +/* defined the LED2 pin: PC0 */ +#define LED2_PIN GET_PIN(C, 0) int main(void) { diff --git a/bsp/gd32/gd32107c-eval/board/Kconfig b/bsp/gd32/arm/gd32107c-eval/board/Kconfig similarity index 61% rename from bsp/gd32/gd32107c-eval/board/Kconfig rename to bsp/gd32/arm/gd32107c-eval/board/Kconfig index 3a68096bc4..1e25efc95a 100644 --- a/bsp/gd32/gd32107c-eval/board/Kconfig +++ b/bsp/gd32/arm/gd32107c-eval/board/Kconfig @@ -115,6 +115,87 @@ menu "On-chip Peripheral Drivers" range 1 216 default 25 endif + + menuconfig BSP_USING_ADC + bool "Enable ADC" + default n + select RT_USING_ADC + if BSP_USING_ADC + config BSP_USING_ADC0 + bool "Enable ADC0" + default n + + config BSP_USING_ADC1 + bool "Enable ADC1" + default n + endif + + menuconfig BSP_USING_TIM + bool "Enable timer" + default n + select RT_USING_HWTIMER + if BSP_USING_TIM + config BSP_USING_TIM10 + bool "Enable TIM10" + default n + + config BSP_USING_TIM11 + bool "Enable TIM11" + default n + + config BSP_USING_TIM12 + bool "Enable TIM13" + default n + endif + + menuconfig BSP_USING_ONCHIP_RTC + bool "Enable RTC" + select RT_USING_RTC + default n + if BSP_USING_ONCHIP_RTC + choice + prompt "Select clock source" + default BSP_RTC_USING_LSE + + config BSP_RTC_USING_LSE + bool "RTC USING LSE" + + config BSP_RTC_USING_LSI + bool "RTC USING LSI" + endchoice + endif + + config BSP_USING_WDT + bool "Enable Watchdog Timer" + select RT_USING_WDT + default n + + config BSP_USING_SDIO + bool "Enable SDIO" + select RT_USING_SDIO + select RT_USING_DFS + default n + + config BSP_USING_USBD + bool "Enable USB Device" + select RT_USING_USB_DEVICE + default n + + menuconfig BSP_USING_USBH + bool "Enable USB Host" + select RT_USING_USB_HOST + default n + if BSP_USING_USBH + menuconfig RT_USBH_MSTORAGE + bool "Enable Udisk Drivers" + default n + if RT_USBH_MSTORAGE + config UDISK_MOUNTPOINT + string "Udisk mount dir" + default "/" + endif + endif + source "../libraries/gd32_drivers/Kconfig" endmenu diff --git a/bsp/gd32/gd32107c-eval/board/SConscript b/bsp/gd32/arm/gd32107c-eval/board/SConscript similarity index 84% rename from bsp/gd32/gd32107c-eval/board/SConscript rename to bsp/gd32/arm/gd32107c-eval/board/SConscript index a85b0a42ae..c1f4a6001b 100644 --- a/bsp/gd32/gd32107c-eval/board/SConscript +++ b/bsp/gd32/arm/gd32107c-eval/board/SConscript @@ -15,11 +15,11 @@ path = [cwd] startup_path_prefix = SDK_LIB -if rtconfig.PLATFORM in ['gcc']: +if rtconfig.CROSS_TOOL == 'gcc': src += [startup_path_prefix + '/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_cl.s'] -elif rtconfig.PLATFORM in ['armcc', 'armclang']: +elif rtconfig.CROSS_TOOL == 'keil': src += [startup_path_prefix + '/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_cl.s'] -elif rtconfig.PLATFORM in ['iccarm']: +elif rtconfig.CROSS_TOOL == 'iar': src += [startup_path_prefix + '/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_cl.s'] CPPDEFINES = ['GD32F10X_CL'] diff --git a/bsp/gd32/gd32105c-eval/board/board.c b/bsp/gd32/arm/gd32107c-eval/board/board.c similarity index 96% rename from bsp/gd32/gd32105c-eval/board/board.c rename to bsp/gd32/arm/gd32107c-eval/board/board.c index c409645b37..4a7c61b8cf 100644 --- a/bsp/gd32/gd32105c-eval/board/board.c +++ b/bsp/gd32/arm/gd32107c-eval/board/board.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2022, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/gd32/gd32107c-eval/board/board.h b/bsp/gd32/arm/gd32107c-eval/board/board.h similarity index 95% rename from bsp/gd32/gd32107c-eval/board/board.h rename to bsp/gd32/arm/gd32107c-eval/board/board.h index 11fb4fa084..3312ada335 100644 --- a/bsp/gd32/gd32107c-eval/board/board.h +++ b/bsp/gd32/arm/gd32107c-eval/board/board.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2022, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/gd32/gd32107c-eval/board/gd32f10x_libopt.h b/bsp/gd32/arm/gd32107c-eval/board/gd32f10x_libopt.h similarity index 100% rename from bsp/gd32/gd32107c-eval/board/gd32f10x_libopt.h rename to bsp/gd32/arm/gd32107c-eval/board/gd32f10x_libopt.h diff --git a/bsp/gd32/gd32107c-eval/board/linker_scripts/link.icf b/bsp/gd32/arm/gd32107c-eval/board/linker_scripts/link.icf similarity index 100% rename from bsp/gd32/gd32107c-eval/board/linker_scripts/link.icf rename to bsp/gd32/arm/gd32107c-eval/board/linker_scripts/link.icf diff --git a/bsp/gd32/gd32305r-start/board/linker_scripts/link.ld b/bsp/gd32/arm/gd32107c-eval/board/linker_scripts/link.ld similarity index 98% rename from bsp/gd32/gd32305r-start/board/linker_scripts/link.ld rename to bsp/gd32/arm/gd32107c-eval/board/linker_scripts/link.ld index 8ba4a0e9f2..0bd341937c 100644 --- a/bsp/gd32/gd32305r-start/board/linker_scripts/link.ld +++ b/bsp/gd32/arm/gd32107c-eval/board/linker_scripts/link.ld @@ -1,5 +1,5 @@ /* - * linker script for GD32F30x with GNU ld + * linker script for GD32F10x with GNU ld * BruceOu 2021-12-14 */ diff --git a/bsp/gd32/gd32107c-eval/board/linker_scripts/link.sct b/bsp/gd32/arm/gd32107c-eval/board/linker_scripts/link.sct similarity index 100% rename from bsp/gd32/gd32107c-eval/board/linker_scripts/link.sct rename to bsp/gd32/arm/gd32107c-eval/board/linker_scripts/link.sct diff --git a/bsp/gd32/gd32107c-eval/figures/board.jpg b/bsp/gd32/arm/gd32107c-eval/figures/board.jpg similarity index 100% rename from bsp/gd32/gd32107c-eval/figures/board.jpg rename to bsp/gd32/arm/gd32107c-eval/figures/board.jpg diff --git a/bsp/gd32/arm/gd32107c-eval/project.ewd b/bsp/gd32/arm/gd32107c-eval/project.ewd new file mode 100644 index 0000000000..1cb78f2710 --- /dev/null +++ b/bsp/gd32/arm/gd32107c-eval/project.ewd @@ -0,0 +1,3056 @@ + + + 3 + + Debug + + ARM + + 1 + + C-SPY + 2 + + 32 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 1 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 1 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 32 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 0 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 0 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 0 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 0 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/bsp/gd32/arm/gd32107c-eval/project.ewp b/bsp/gd32/arm/gd32107c-eval/project.ewp new file mode 100644 index 0000000000..50f1361a15 --- /dev/null +++ b/bsp/gd32/arm/gd32107c-eval/project.ewp @@ -0,0 +1,2330 @@ + + + 3 + + Debug + + ARM + + 1 + + General + 3 + + 33 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + + Release + + ARM + + 0 + + General + 3 + + 33 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + Compiler + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\stdlib.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscalls.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\time.c + + + + CPU + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\backtrace.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m3\context_iar.S + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m3\cpuport.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\showmem.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\completion.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\dataqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\misc\pin.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\pipe.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringbuffer.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\serial\serial.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\spi\spi_core.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\spi\spi_dev.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\waitqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\workqueue.c + + + + Drivers + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_gpio.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_spi.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_usart.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\IAR\startup_gd32f10x_cl.s + + + + Finsh + + $PROJ_DIR$\..\..\..\..\components\finsh\cmd.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\shell.c + + + + Kernel + + $PROJ_DIR$\..\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\..\src\device.c + + + $PROJ_DIR$\..\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\..\src\scheduler.c + + + $PROJ_DIR$\..\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\..\src\timer.c + + + + Libraries + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_exti.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_gpio.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_misc.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_rcu.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_spi.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Source\gd32f10x_usart.c + + + $PROJ_DIR$\..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\system_gd32f10x.c + + + + POSIX + + diff --git a/bsp/gd32/arm/gd32107c-eval/project.eww b/bsp/gd32/arm/gd32107c-eval/project.eww new file mode 100644 index 0000000000..c2cb02eb1e --- /dev/null +++ b/bsp/gd32/arm/gd32107c-eval/project.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\project.ewp + + + + + diff --git a/bsp/gd32/gd32103c-eval/project.uvoptx b/bsp/gd32/arm/gd32107c-eval/project.uvoptx similarity index 96% rename from bsp/gd32/gd32103c-eval/project.uvoptx rename to bsp/gd32/arm/gd32107c-eval/project.uvoptx index e99a756fe7..5ec438907e 100644 --- a/bsp/gd32/gd32103c-eval/project.uvoptx +++ b/bsp/gd32/arm/gd32107c-eval/project.uvoptx @@ -26,7 +26,7 @@ 0x4 ARM-ADS - 12000000 + 25000000 1 1 @@ -120,7 +120,7 @@ 0 UL2CM3 - UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0GD32F10x_CL -FL040000 -FS08000000 -FP0($$Device:GD32F105RC$Flash\GD32F10x_CL.FLM) + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC800 -FD20000000 -FF0GD32F10x_CL -FL040000 -FS08000000 -FP0($$Device:GD32F107VC$Flash\GD32F10x_CL.FLM) diff --git a/bsp/gd32/gd32107c-eval/project.uvproj b/bsp/gd32/arm/gd32107c-eval/project.uvproj similarity index 97% rename from bsp/gd32/gd32107c-eval/project.uvproj rename to bsp/gd32/arm/gd32107c-eval/project.uvproj index fb6c35d24b..d1d33c5ad0 100644 --- a/bsp/gd32/gd32107c-eval/project.uvproj +++ b/bsp/gd32/arm/gd32107c-eval/project.uvproj @@ -12,10 +12,10 @@ GD32F107VC GigaDevice - IRAM(0x20000000-0x20018000) IROM(0x08000000-0x08040000) CLOCK(12000000) CPUTYPE("Cortex-M3") + IRAM(0x20000000-0x20018000) IROM(0x08000000-0x08040000) CLOCK(25000000) CPUTYPE("Cortex-M3") - "Startup\GD\GD32F10x\startup_gd32f10x.s" ("GD32F10x Startup Code") - UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F10x_3MB -FS08000000 -FL0100000) + "Startup\GD\GD32F10x\startup_gd32f10x_cl.s" ("GD32F10x Startup Code") + UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F10x_CL -FS08000000 -FL0100000) 0 gd32f10x0.h @@ -27,7 +27,7 @@ - SFD\GD\GD32F10x\GD32F10x.SFR + SFD\GD\GD32F10x\GD32F10x_CL.SFR 0 0 @@ -425,13 +425,6 @@ Compiler - - - syscall_mem.c - 1 - ..\..\..\components\libc\compilers\armlibc\syscall_mem.c - - syscalls.c @@ -441,9 +434,9 @@ - time.c + syscall_mem.c 1 - ..\..\..\components\libc\compilers\common\time.c + ..\..\..\components\libc\compilers\armlibc\syscall_mem.c @@ -453,6 +446,13 @@ ..\..\..\components\libc\compilers\common\stdlib.c + + + time.c + 1 + ..\..\..\components\libc\compilers\common\time.c + + CPU @@ -465,16 +465,16 @@ - showmem.c + div0.c 1 - ..\..\..\libcpu\arm\common\showmem.c + ..\..\..\libcpu\arm\common\div0.c - div0.c + showmem.c 1 - ..\..\..\libcpu\arm\common\div0.c + ..\..\..\libcpu\arm\common\showmem.c @@ -496,9 +496,9 @@ DeviceDrivers - ringblk_buf.c + workqueue.c 1 - ..\..\..\components\drivers\ipc\ringblk_buf.c + ..\..\..\components\drivers\ipc\workqueue.c @@ -510,16 +510,9 @@ - dataqueue.c + completion.c 1 - ..\..\..\components\drivers\ipc\dataqueue.c - - - - - workqueue.c - 1 - ..\..\..\components\drivers\ipc\workqueue.c + ..\..\..\components\drivers\ipc\completion.c @@ -529,6 +522,13 @@ ..\..\..\components\drivers\ipc\waitqueue.c + + + dataqueue.c + 1 + ..\..\..\components\drivers\ipc\dataqueue.c + + pipe.c @@ -538,9 +538,9 @@ - completion.c + ringblk_buf.c 1 - ..\..\..\components\drivers\ipc\completion.c + ..\..\..\components\drivers\ipc\ringblk_buf.c @@ -571,21 +571,33 @@ ..\..\..\components\drivers\spi\spi_dev.c + + + + + + + + + + + + Drivers - board.c - 1 - board\board.c + startup_gd32f10x_cl.s + 2 + ..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\ARM\startup_gd32f10x_cl.s - startup_gd32f10x_cl.s - 2 - ..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\ARM\startup_gd32f10x_cl.s + board.c + 1 + board\board.c @@ -638,16 +650,16 @@ Kernel - thread.c + timer.c 1 - ..\..\..\src\thread.c + ..\..\..\src\timer.c - timer.c + device.c 1 - ..\..\..\src\timer.c + ..\..\..\src\device.c @@ -664,27 +676,6 @@ ..\..\..\src\mem.c - - - object.c - 1 - ..\..\..\src\object.c - - - - - device.c - 1 - ..\..\..\src\device.c - - - - - ipc.c - 1 - ..\..\..\src\ipc.c - - mempool.c @@ -694,23 +685,16 @@ - irq.c + kservice.c 1 - ..\..\..\src\irq.c + ..\..\..\src\kservice.c - components.c + thread.c 1 - ..\..\..\src\components.c - - - - - scheduler.c - 1 - ..\..\..\src\scheduler.c + ..\..\..\src\thread.c @@ -722,9 +706,37 @@ - kservice.c + object.c 1 - ..\..\..\src\kservice.c + ..\..\..\src\object.c + + + + + ipc.c + 1 + ..\..\..\src\ipc.c + + + + + components.c + 1 + ..\..\..\src\components.c + + + + + irq.c + 1 + ..\..\..\src\irq.c + + + + + scheduler.c + 1 + ..\..\..\src\scheduler.c diff --git a/bsp/gd32/gd32107c-eval/project.uvprojx b/bsp/gd32/arm/gd32107c-eval/project.uvprojx similarity index 85% rename from bsp/gd32/gd32107c-eval/project.uvprojx rename to bsp/gd32/arm/gd32107c-eval/project.uvprojx index 6eb6abd809..cf9d453188 100644 --- a/bsp/gd32/gd32107c-eval/project.uvprojx +++ b/bsp/gd32/arm/gd32107c-eval/project.uvprojx @@ -15,10 +15,10 @@ GigaDevice GigaDevice.GD32F10x_DFP.2.0.1 http://www.keil.com/pack/ - IRAM(0x20000000,0x00018000) IROM(0x08000000,0x00040000) CPUTYPE("Cortex-M3") CLOCK(10800000) ELITTLE + IRAM(0x20000000,0x00018000) IROM(0x08000000,0x00040000) CPUTYPE("Cortex-M3") CLOCK(25000000) ELITTLE - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F10x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F107VC$Flash\GD32F10x_CL.FLM)) + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F10x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F107VC$Flash\GD32F10x_CL.FLM)) 0 $$Device:GD32F107VC$Device\Include\gd32f10x.h @@ -336,7 +336,7 @@ USE_STDPERIPH_DRIVER, GD32F10X_CL, __RTTHREAD__, RT_USING_ARM_LIBC, __CLK_TCK=RT_TICK_PER_SECOND - 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;..\..\..\components\drivers\spi;..\..\..\components\drivers\include;board;..\libraries\gd32_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Include;..\libraries\GD32F10x_Firmware_Library\CMSIS;..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Include;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc + 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;..\..\..\..\components\drivers\spi;..\..\..\..\components\drivers\include;board;..\libraries\gd32_drivers;..\..\..\..\components\finsh;.;..\..\..\..\include;..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Include;..\libraries\GD32F10x_Firmware_Library\CMSIS;..\libraries\GD32F10x_Firmware_Library\GD32F10x_standard_peripheral\Include;..\..\..\..\components\libc\posix\io\poll;..\..\..\..\components\libc\posix\io\stdio;..\..\..\..\components\libc\posix\ipc @@ -393,28 +393,28 @@ syscalls.c 1 - ..\..\..\components\libc\compilers\armlibc\syscalls.c + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c syscall_mem.c 1 - ..\..\..\components\libc\compilers\armlibc\syscall_mem.c - - - - - time.c - 1 - ..\..\..\components\libc\compilers\common\time.c + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c stdlib.c 1 - ..\..\..\components\libc\compilers\common\stdlib.c + ..\..\..\..\components\libc\compilers\common\stdlib.c + + + + + time.c + 1 + ..\..\..\..\components\libc\compilers\common\time.c @@ -422,37 +422,37 @@ CPU - backtrace.c + div0.c 1 - ..\..\..\libcpu\arm\common\backtrace.c + ..\..\..\..\libcpu\arm\common\div0.c - div0.c + backtrace.c 1 - ..\..\..\libcpu\arm\common\div0.c + ..\..\..\..\libcpu\arm\common\backtrace.c showmem.c 1 - ..\..\..\libcpu\arm\common\showmem.c - - - - - cpuport.c - 1 - ..\..\..\libcpu\arm\cortex-m3\cpuport.c + ..\..\..\..\libcpu\arm\common\showmem.c context_rvds.S 2 - ..\..\..\libcpu\arm\cortex-m3\context_rvds.S + ..\..\..\..\libcpu\arm\cortex-m3\context_rvds.S + + + + + cpuport.c + 1 + ..\..\..\..\libcpu\arm\cortex-m3\cpuport.c @@ -460,96 +460,108 @@ DeviceDrivers - waitqueue.c + pipe.c 1 - ..\..\..\components\drivers\ipc\waitqueue.c + ..\..\..\..\components\drivers\ipc\pipe.c dataqueue.c 1 - ..\..\..\components\drivers\ipc\dataqueue.c - - - - - ringblk_buf.c - 1 - ..\..\..\components\drivers\ipc\ringblk_buf.c - - - - - pipe.c - 1 - ..\..\..\components\drivers\ipc\pipe.c - - - - - completion.c - 1 - ..\..\..\components\drivers\ipc\completion.c + ..\..\..\..\components\drivers\ipc\dataqueue.c ringbuffer.c 1 - ..\..\..\components\drivers\ipc\ringbuffer.c + ..\..\..\..\components\drivers\ipc\ringbuffer.c + + + + + waitqueue.c + 1 + ..\..\..\..\components\drivers\ipc\waitqueue.c workqueue.c 1 - ..\..\..\components\drivers\ipc\workqueue.c + ..\..\..\..\components\drivers\ipc\workqueue.c + + + + + ringblk_buf.c + 1 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + + + completion.c + 1 + ..\..\..\..\components\drivers\ipc\completion.c pin.c 1 - ..\..\..\components\drivers\misc\pin.c + ..\..\..\..\components\drivers\misc\pin.c serial.c 1 - ..\..\..\components\drivers\serial\serial.c + ..\..\..\..\components\drivers\serial\serial.c spi_core.c 1 - ..\..\..\components\drivers\spi\spi_core.c + ..\..\..\..\components\drivers\spi\spi_core.c spi_dev.c 1 - ..\..\..\components\drivers\spi\spi_dev.c + ..\..\..\..\components\drivers\spi\spi_dev.c + + + + + + + + + + + + Drivers - board.c - 1 - board\board.c + startup_gd32f10x_cl.s + 2 + ..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\ARM\startup_gd32f10x_cl.s - startup_gd32f10x_cl.s - 2 - ..\libraries\GD32F10x_Firmware_Library\CMSIS\GD\GD32F10x\Source\ARM\startup_gd32f10x_cl.s + board.c + 1 + board\board.c @@ -580,21 +592,21 @@ shell.c 1 - ..\..\..\components\finsh\shell.c + ..\..\..\..\components\finsh\shell.c msh.c 1 - ..\..\..\components\finsh\msh.c + ..\..\..\..\components\finsh\msh.c cmd.c 1 - ..\..\..\components\finsh\cmd.c + ..\..\..\..\components\finsh\cmd.c @@ -602,93 +614,93 @@ Kernel - thread.c + clock.c 1 - ..\..\..\src\thread.c + ..\..\..\..\src\clock.c irq.c 1 - ..\..\..\src\irq.c - - - - - ipc.c - 1 - ..\..\..\src\ipc.c - - - - - components.c - 1 - ..\..\..\src\components.c - - - - - mempool.c - 1 - ..\..\..\src\mempool.c + ..\..\..\..\src\irq.c scheduler.c 1 - ..\..\..\src\scheduler.c - - - - - idle.c - 1 - ..\..\..\src\idle.c - - - - - kservice.c - 1 - ..\..\..\src\kservice.c - - - - - object.c - 1 - ..\..\..\src\object.c - - - - - mem.c - 1 - ..\..\..\src\mem.c - - - - - clock.c - 1 - ..\..\..\src\clock.c - - - - - timer.c - 1 - ..\..\..\src\timer.c + ..\..\..\..\src\scheduler.c device.c 1 - ..\..\..\src\device.c + ..\..\..\..\src\device.c + + + + + thread.c + 1 + ..\..\..\..\src\thread.c + + + + + idle.c + 1 + ..\..\..\..\src\idle.c + + + + + mempool.c + 1 + ..\..\..\..\src\mempool.c + + + + + components.c + 1 + ..\..\..\..\src\components.c + + + + + object.c + 1 + ..\..\..\..\src\object.c + + + + + ipc.c + 1 + ..\..\..\..\src\ipc.c + + + + + mem.c + 1 + ..\..\..\..\src\mem.c + + + + + kservice.c + 1 + ..\..\..\..\src\kservice.c + + + + + timer.c + 1 + ..\..\..\..\src\timer.c diff --git a/bsp/gd32/gd32107c-eval/rtconfig.h b/bsp/gd32/arm/gd32107c-eval/rtconfig.h similarity index 95% rename from bsp/gd32/gd32107c-eval/rtconfig.h rename to bsp/gd32/arm/gd32107c-eval/rtconfig.h index 31b95dc8e2..dc806e5570 100644 --- a/bsp/gd32/gd32107c-eval/rtconfig.h +++ b/bsp/gd32/arm/gd32107c-eval/rtconfig.h @@ -52,8 +52,14 @@ #define RT_USING_USER_MAIN #define RT_MAIN_THREAD_STACK_SIZE 2048 #define RT_MAIN_THREAD_PRIORITY 10 -#define RT_USING_MSH + +/* C++ features */ + + +/* Command shell */ + #define RT_USING_FINSH +#define RT_USING_MSH #define FINSH_USING_MSH #define FINSH_THREAD_NAME "tshell" #define FINSH_THREAD_PRIORITY 20 @@ -66,6 +72,9 @@ #define FINSH_USING_DESCRIPTION #define FINSH_ARG_MAX 10 +/* Device virtual file system */ + + /* Device Drivers */ #define RT_USING_DEVICE_IPC @@ -82,7 +91,7 @@ /* Using USB */ -/* C/C++ and POSIX layer */ +/* POSIX layer and C standard library */ #define RT_LIBC_DEFAULT_TIMEZONE 8 @@ -94,10 +103,12 @@ /* Socket is in the 'Network' category */ - /* Network */ +/* VBUS(Virtual Software BUS) */ + + /* Utilities */ diff --git a/bsp/gd32/gd32107c-eval/rtconfig.py b/bsp/gd32/arm/gd32107c-eval/rtconfig.py similarity index 98% rename from bsp/gd32/gd32107c-eval/rtconfig.py rename to bsp/gd32/arm/gd32107c-eval/rtconfig.py index a8cb7dc467..4285e6b03c 100644 --- a/bsp/gd32/gd32107c-eval/rtconfig.py +++ b/bsp/gd32/arm/gd32107c-eval/rtconfig.py @@ -22,8 +22,8 @@ elif CROSS_TOOL == 'keil': PLATFORM = 'armcc' EXEC_PATH = r'C:/Keil_v5' elif CROSS_TOOL == 'iar': - PLATFORM = 'iccarm' - EXEC_PATH = r'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.3' + 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') @@ -93,7 +93,7 @@ elif PLATFORM == 'armcc': POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' -elif PLATFORM == 'iccarm': +elif PLATFORM == 'iar': # toolchains CC = 'iccarm' CXX = 'iccarm' diff --git a/bsp/gd32/arm/gd32107c-eval/template.ewp b/bsp/gd32/arm/gd32107c-eval/template.ewp new file mode 100644 index 0000000000..4ee73c3c3d --- /dev/null +++ b/bsp/gd32/arm/gd32107c-eval/template.ewp @@ -0,0 +1,1889 @@ + + + 2 + + Debug + + ARM + + 1 + + General + 3 + + 22 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 22 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + + diff --git a/bsp/gd32/gd32105c-eval/project.uvoptx b/bsp/gd32/arm/gd32107c-eval/template.uvoptx similarity index 96% rename from bsp/gd32/gd32105c-eval/project.uvoptx rename to bsp/gd32/arm/gd32107c-eval/template.uvoptx index d691bf54c0..5ec438907e 100644 --- a/bsp/gd32/gd32105c-eval/project.uvoptx +++ b/bsp/gd32/arm/gd32107c-eval/template.uvoptx @@ -26,7 +26,7 @@ 0x4 ARM-ADS - 12000000 + 25000000 1 1 @@ -120,7 +120,7 @@ 0 UL2CM3 - UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0GD32F10x_CL -FL040000 -FS08000000 -FP0($$Device:GD32F105VC$Flash\GD32F10x_CL.FLM) + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC800 -FD20000000 -FF0GD32F10x_CL -FL040000 -FS08000000 -FP0($$Device:GD32F107VC$Flash\GD32F10x_CL.FLM) diff --git a/bsp/gd32/gd32107c-eval/template.uvproj b/bsp/gd32/arm/gd32107c-eval/template.uvproj similarity index 98% rename from bsp/gd32/gd32107c-eval/template.uvproj rename to bsp/gd32/arm/gd32107c-eval/template.uvproj index a165464790..73c63ce85c 100644 --- a/bsp/gd32/gd32107c-eval/template.uvproj +++ b/bsp/gd32/arm/gd32107c-eval/template.uvproj @@ -15,10 +15,10 @@ GD32F107VC GigaDevice - IRAM(0x20000000-0x20018000) IROM(0x08000000-0x08040000) CLOCK(12000000) CPUTYPE("Cortex-M3") + IRAM(0x20000000-0x20018000) IROM(0x08000000-0x08040000) CLOCK(25000000) CPUTYPE("Cortex-M3") - "Startup\GD\GD32F10x\startup_gd32f10x.s" ("GD32F10x Startup Code") - UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F10x_3MB -FS08000000 -FL0100000) + "Startup\GD\GD32F10x\startup_gd32f10x_cl.s" ("GD32F10x Startup Code") + UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F10x_CL -FS08000000 -FL0100000) 0 gd32f10x0.h @@ -30,7 +30,7 @@ - SFD\GD\GD32F10x\GD32F10x.SFR + SFD\GD\GD32F10x\GD32F10x_CL.SFR 0 0 @@ -605,9 +605,9 @@ Startup - startup_gd32f10x.s + startup_gd32f10x_cl.s 2 - ..\..\..\Library\Firmware\CMSIS\GD\GD32F10x\Source\ARM\startup_gd32f10x.s + ..\..\..\Library\Firmware\CMSIS\GD\GD32F10x\Source\ARM\startup_gd32f10x_cl.s diff --git a/bsp/gd32/gd32107c-eval/template.uvprojx b/bsp/gd32/arm/gd32107c-eval/template.uvprojx similarity index 98% rename from bsp/gd32/gd32107c-eval/template.uvprojx rename to bsp/gd32/arm/gd32107c-eval/template.uvprojx index a80f13ffb9..0739d8d50a 100644 --- a/bsp/gd32/gd32107c-eval/template.uvprojx +++ b/bsp/gd32/arm/gd32107c-eval/template.uvprojx @@ -18,10 +18,10 @@ GigaDevice GigaDevice.GD32F10x_DFP.2.0.1 http://www.keil.com/pack/ - IRAM(0x20000000,0x00018000) IROM(0x08000000,0x00040000) CPUTYPE("Cortex-M3") CLOCK(10800000) ELITTLE + IRAM(0x20000000,0x00018000) IROM(0x08000000,0x00040000) CPUTYPE("Cortex-M3") CLOCK(25000000) ELITTLE - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F10x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F107VC$Flash\GD32F10x_CL.FLM)) + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F10x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F107VC$Flash\GD32F10x_CL.FLM)) 0 $$Device:GD32F107VC$Device\Include\gd32f10x.h diff --git a/bsp/gd32/gd32205r-start/.config b/bsp/gd32/arm/gd32205r-start/.config similarity index 96% rename from bsp/gd32/gd32205r-start/.config rename to bsp/gd32/arm/gd32205r-start/.config index fc4311fbad..ad25112c7b 100644 --- a/bsp/gd32/gd32205r-start/.config +++ b/bsp/gd32/arm/gd32205r-start/.config @@ -90,8 +90,17 @@ 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 -CONFIG_RT_USING_MSH=y + +# +# C++ features +# +# CONFIG_RT_USING_CPLUSPLUS is not set + +# +# Command shell +# CONFIG_RT_USING_FINSH=y +CONFIG_RT_USING_MSH=y CONFIG_FINSH_USING_MSH=y CONFIG_FINSH_THREAD_NAME="tshell" CONFIG_FINSH_THREAD_PRIORITY=20 @@ -105,8 +114,11 @@ 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 is not set -# CONFIG_RT_USING_FAL is not set # # Device Drivers @@ -152,7 +164,7 @@ CONFIG_RT_USING_PIN=y # CONFIG_RT_USING_USB_DEVICE is not set # -# C/C++ and POSIX layer +# POSIX layer and C standard library # CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 @@ -176,7 +188,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # # Socket is in the 'Network' category # -# CONFIG_RT_USING_CPLUSPLUS is not set # # Network @@ -186,6 +197,11 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_RT_USING_LWIP is not set # CONFIG_RT_USING_AT is not set +# +# VBUS(Virtual Software BUS) +# +# CONFIG_RT_USING_VBUS is not set + # # Utilities # @@ -194,7 +210,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_RT_USING_UTEST is not set # 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 @@ -259,6 +274,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set # CONFIG_PKG_USING_JOYLINK is not set # CONFIG_PKG_USING_EZ_IOT_OS is not set +# CONFIG_PKG_USING_IOTSHARP_SDK 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 @@ -298,6 +314,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # # CONFIG_PKG_USING_MBEDTLS is not set # CONFIG_PKG_USING_LIBSODIUM is not set +# CONFIG_PKG_USING_LIBHYDROGEN is not set # CONFIG_PKG_USING_TINYCRYPT is not set # CONFIG_PKG_USING_TFM is not set # CONFIG_PKG_USING_YD_CRYPTO is not set @@ -337,6 +354,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_LVGL is not set # CONFIG_PKG_USING_LITTLEVGL2RTT is not set # CONFIG_PKG_USING_LV_MUSIC_DEMO is not set +# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set # # u8g2: a monochrome graphic library @@ -411,6 +429,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_FDT is not set # CONFIG_PKG_USING_CBOX is not set # CONFIG_PKG_USING_SNOWFLAKE is not set +# CONFIG_PKG_USING_HASH_MATCH is not set # # system packages @@ -442,6 +461,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CMSIS: ARM Cortex-M Microcontroller Software Interface Standard # # CONFIG_PKG_USING_CMSIS_5 is not set +# CONFIG_PKG_USING_CMSIS_RTOS1 is not set # CONFIG_PKG_USING_CMSIS_RTOS2 is not set # @@ -484,6 +504,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_TINYUSB is not set # CONFIG_PKG_USING_CHERRYUSB is not set # CONFIG_PKG_USING_KMULTI_RTIMER is not set +# CONFIG_PKG_USING_TFDB is not set # # peripheral libraries and drivers @@ -638,6 +659,8 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_CONTROLLER is not set # CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set # CONFIG_PKG_USING_MFBD is not set +# CONFIG_PKG_USING_SLCAN2RTT is not set +# CONFIG_PKG_USING_SOEM is not set # # Hardware Drivers Config @@ -662,6 +685,13 @@ CONFIG_BSP_USING_UART1=y # CONFIG_BSP_USING_UART4 is not set # CONFIG_BSP_USING_SPI is not set # CONFIG_BSP_USING_I2C1 is not set +# CONFIG_BSP_USING_ADC is not set +# CONFIG_BSP_USING_TIM is not set +# CONFIG_BSP_USING_ONCHIP_RTC is not set +# CONFIG_BSP_USING_WDT is not set +# CONFIG_BSP_USING_SDIO is not set +# CONFIG_BSP_USING_USBD is not set +# CONFIG_BSP_USING_USBH is not set # # Board extended module Drivers diff --git a/bsp/gd32/arm/gd32205r-start/Kconfig b/bsp/gd32/arm/gd32205r-start/Kconfig new file mode 100644 index 0000000000..dbc650938f --- /dev/null +++ b/bsp/gd32/arm/gd32205r-start/Kconfig @@ -0,0 +1,21 @@ +mainmenu "RT-Thread Configuration" + +config BSP_DIR + string + option env="BSP_ROOT" + default "." + +config RTT_DIR + string + option env="RTT_ROOT" + default "../../../.." + +config PKGS_DIR + string + option env="PKGS_ROOT" + default "packages" + +source "$RTT_DIR/Kconfig" +source "$PKGS_DIR/Kconfig" +source "../libraries/Kconfig" +source "board/Kconfig" diff --git a/bsp/gd32/gd32205r-start/README.md b/bsp/gd32/arm/gd32205r-start/README.md similarity index 88% rename from bsp/gd32/gd32205r-start/README.md rename to bsp/gd32/arm/gd32205r-start/README.md index 43ef946f5d..aef8e2ea88 100644 --- a/bsp/gd32/gd32205r-start/README.md +++ b/bsp/gd32/arm/gd32205r-start/README.md @@ -10,7 +10,7 @@ GD32205R-START是-兆易创新推出的一款GD32F20X系列的评估板,最高 该开发板常用 **板载资源** 如下: -- GD32205R,主频 120MHz,256KB FLASH ,128KB RAM +- GD32205RCT6,主频 120MHz,256KB FLASH ,128KB RAM - 常用外设 @@ -27,11 +27,12 @@ GD32205R-START是-兆易创新推出的一款GD32F20X系列的评估板,最高 | **片上外设** | **支持情况** | **备注** | |:--------- |:--------:|:------------------------------------- | -| GPIO | 支持 | PA0, PA1... PK15 ---> PIN: 0, 1...144 | +| GPIO | 支持 | PA0, PA1... ---> PIN: 0, 1...50 | | UART | 支持 | UART0 - UART4 | | I2C | 支持 | I2C1 | | SPI | 支持 | SPI0 - SPI2 | | SPI FLASH | 支持 | | +| ADC | 支持 | ADC0 - ADC2 | | **扩展模块** | **支持情况** | **备注** | | 暂无 | 暂不支持 | 暂不支持 | @@ -49,7 +50,7 @@ GD32205R-START是-兆易创新推出的一款GD32F20X系列的评估板,最高 ### 快速上手 -本 BSP 为开发者提供 MDK5 工程,并且支持 GCC 开发环境,也可使用RT-Thread Studio开发。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 +本 BSP 为开发者提供 MDK4、MDK5 和 IAR 工程,并且支持 GCC 开发环境,也可使用RT-Thread Studio开发。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 #### 硬件连接 diff --git a/bsp/gd32/gd32205r-start/SConscript b/bsp/gd32/arm/gd32205r-start/SConscript similarity index 100% rename from bsp/gd32/gd32205r-start/SConscript rename to bsp/gd32/arm/gd32205r-start/SConscript diff --git a/bsp/gd32/gd32205r-start/SConstruct b/bsp/gd32/arm/gd32205r-start/SConstruct similarity index 94% rename from bsp/gd32/gd32205r-start/SConstruct rename to bsp/gd32/arm/gd32205r-start/SConstruct index 9a8dd0f14d..c8d7363d6d 100644 --- a/bsp/gd32/gd32205r-start/SConstruct +++ b/bsp/gd32/arm/gd32205r-start/SConstruct @@ -5,7 +5,7 @@ import rtconfig if os.getenv('RTT_ROOT'): RTT_ROOT = os.getenv('RTT_ROOT') else: - RTT_ROOT = os.path.normpath(os.getcwd() + '/../../..') + RTT_ROOT = os.path.normpath(os.getcwd() + '/../../../..') sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] try: @@ -26,7 +26,7 @@ env = Environment(tools = ['mingw'], LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) env.PrependENVPath('PATH', rtconfig.EXEC_PATH) -if rtconfig.PLATFORM in ['iccarm']: +if rtconfig.PLATFORM == 'iar': env.Replace(CCCOM = ['$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES']) env.Replace(ARFLAGS = ['']) env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map') diff --git a/bsp/gd32/gd32205r-start/applications/SConscript b/bsp/gd32/arm/gd32205r-start/applications/SConscript similarity index 100% rename from bsp/gd32/gd32205r-start/applications/SConscript rename to bsp/gd32/arm/gd32205r-start/applications/SConscript diff --git a/bsp/gd32/gd32205r-start/applications/main.c b/bsp/gd32/arm/gd32205r-start/applications/main.c similarity index 100% rename from bsp/gd32/gd32205r-start/applications/main.c rename to bsp/gd32/arm/gd32205r-start/applications/main.c diff --git a/bsp/gd32/gd32205r-start/board/Kconfig b/bsp/gd32/arm/gd32205r-start/board/Kconfig similarity index 60% rename from bsp/gd32/gd32205r-start/board/Kconfig rename to bsp/gd32/arm/gd32205r-start/board/Kconfig index 6953402bb2..082bf71fd6 100644 --- a/bsp/gd32/gd32205r-start/board/Kconfig +++ b/bsp/gd32/arm/gd32205r-start/board/Kconfig @@ -115,6 +115,90 @@ menu "On-chip Peripheral Drivers" range 1 216 default 25 endif + menuconfig BSP_USING_ADC + bool "Enable ADC" + default n + select RT_USING_ADC + if BSP_USING_ADC + config BSP_USING_ADC0 + bool "Enable ADC0" + default n + + config BSP_USING_ADC1 + bool "Enable ADC1" + default n + + config BSP_USING_ADC2 + bool "Enable ADC2" + default n + endif + + menuconfig BSP_USING_TIM + bool "Enable timer" + default n + select RT_USING_HWTIMER + if BSP_USING_TIM + config BSP_USING_TIM10 + bool "Enable TIM10" + default n + + config BSP_USING_TIM11 + bool "Enable TIM11" + default n + + config BSP_USING_TIM12 + bool "Enable TIM13" + default n + endif + + menuconfig BSP_USING_ONCHIP_RTC + bool "Enable RTC" + select RT_USING_RTC + default n + if BSP_USING_ONCHIP_RTC + choice + prompt "Select clock source" + default BSP_RTC_USING_LSE + + config BSP_RTC_USING_LSE + bool "RTC USING LSE" + + config BSP_RTC_USING_LSI + bool "RTC USING LSI" + endchoice + endif + + config BSP_USING_WDT + bool "Enable Watchdog Timer" + select RT_USING_WDT + default n + + config BSP_USING_SDIO + bool "Enable SDIO" + select RT_USING_SDIO + select RT_USING_DFS + default n + + config BSP_USING_USBD + bool "Enable USB Device" + select RT_USING_USB_DEVICE + default n + + menuconfig BSP_USING_USBH + bool "Enable USB Host" + select RT_USING_USB_HOST + default n + if BSP_USING_USBH + menuconfig RT_USBH_MSTORAGE + bool "Enable Udisk Drivers" + default n + if RT_USBH_MSTORAGE + config UDISK_MOUNTPOINT + string "Udisk mount dir" + default "/" + endif + endif + source "../libraries/gd32_drivers/Kconfig" endmenu diff --git a/bsp/gd32/gd32205r-start/board/SConscript b/bsp/gd32/arm/gd32205r-start/board/SConscript similarity index 84% rename from bsp/gd32/gd32205r-start/board/SConscript rename to bsp/gd32/arm/gd32205r-start/board/SConscript index e3e280f6ae..d1c8023578 100644 --- a/bsp/gd32/gd32205r-start/board/SConscript +++ b/bsp/gd32/arm/gd32205r-start/board/SConscript @@ -15,11 +15,11 @@ path = [cwd] startup_path_prefix = SDK_LIB -if rtconfig.PLATFORM in ['gcc']: +if rtconfig.CROSS_TOOL == 'gcc': src += [startup_path_prefix + '/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/GCC/startup_gd32f20x_cl.s'] -elif rtconfig.PLATFORM in ['armcc', 'armclang']: +elif rtconfig.CROSS_TOOL == 'keil': src += [startup_path_prefix + '/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/ARM/startup_gd32f20x_cl.s'] -elif rtconfig.PLATFORM in ['iccarm']: +elif rtconfig.CROSS_TOOL == 'iar': src += [startup_path_prefix + '/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/IAR/startup_gd32f20x_cl.s'] CPPDEFINES = ['GD32F20X_CL'] diff --git a/bsp/gd32/gd32205r-start/board/board.c b/bsp/gd32/arm/gd32205r-start/board/board.c similarity index 100% rename from bsp/gd32/gd32205r-start/board/board.c rename to bsp/gd32/arm/gd32205r-start/board/board.c diff --git a/bsp/gd32/gd32205r-start/board/board.h b/bsp/gd32/arm/gd32205r-start/board/board.h similarity index 100% rename from bsp/gd32/gd32205r-start/board/board.h rename to bsp/gd32/arm/gd32205r-start/board/board.h diff --git a/bsp/gd32/gd32205r-start/board/gd32f20x_libopt.h b/bsp/gd32/arm/gd32205r-start/board/gd32f20x_libopt.h similarity index 100% rename from bsp/gd32/gd32205r-start/board/gd32f20x_libopt.h rename to bsp/gd32/arm/gd32205r-start/board/gd32f20x_libopt.h diff --git a/bsp/gd32/gd32205r-start/board/linker_scripts/link.icf b/bsp/gd32/arm/gd32205r-start/board/linker_scripts/link.icf similarity index 100% rename from bsp/gd32/gd32205r-start/board/linker_scripts/link.icf rename to bsp/gd32/arm/gd32205r-start/board/linker_scripts/link.icf diff --git a/bsp/gd32/gd32205r-start/board/linker_scripts/link.ld b/bsp/gd32/arm/gd32205r-start/board/linker_scripts/link.ld similarity index 98% rename from bsp/gd32/gd32205r-start/board/linker_scripts/link.ld rename to bsp/gd32/arm/gd32205r-start/board/linker_scripts/link.ld index dbb8d1bf13..1cae64fe26 100644 --- a/bsp/gd32/gd32205r-start/board/linker_scripts/link.ld +++ b/bsp/gd32/arm/gd32205r-start/board/linker_scripts/link.ld @@ -1,6 +1,6 @@ /* - * linker script for GD32F4xx with GNU ld - * bernard.xiong 2009-10-14 + * linker script for GD32F20x with GNU ld + * BruceOu 2021-12-14 */ /* Program Entry, set to mark it as "used" and avoid gc */ diff --git a/bsp/gd32/gd32205r-start/board/linker_scripts/link.sct b/bsp/gd32/arm/gd32205r-start/board/linker_scripts/link.sct similarity index 100% rename from bsp/gd32/gd32205r-start/board/linker_scripts/link.sct rename to bsp/gd32/arm/gd32205r-start/board/linker_scripts/link.sct diff --git a/bsp/gd32/gd32205r-start/figures/board.jpg b/bsp/gd32/arm/gd32205r-start/figures/board.jpg similarity index 100% rename from bsp/gd32/gd32205r-start/figures/board.jpg rename to bsp/gd32/arm/gd32205r-start/figures/board.jpg diff --git a/bsp/gd32/arm/gd32205r-start/project.ewd b/bsp/gd32/arm/gd32205r-start/project.ewd new file mode 100644 index 0000000000..995e8af8c4 --- /dev/null +++ b/bsp/gd32/arm/gd32205r-start/project.ewd @@ -0,0 +1,3056 @@ + + + 3 + + Debug + + ARM + + 1 + + C-SPY + 2 + + 32 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 1 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 1 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 32 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 0 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 0 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 0 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 0 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/bsp/gd32/arm/gd32205r-start/project.ewp b/bsp/gd32/arm/gd32205r-start/project.ewp new file mode 100644 index 0000000000..8bfa5c772c --- /dev/null +++ b/bsp/gd32/arm/gd32205r-start/project.ewp @@ -0,0 +1,2316 @@ + + + 3 + + Debug + + ARM + + 1 + + General + 3 + + 33 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + + Release + + ARM + + 0 + + General + 3 + + 33 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + Compiler + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\stdlib.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscalls.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\time.c + + + + CPU + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\backtrace.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m3\context_iar.S + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m3\cpuport.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\showmem.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\completion.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\dataqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\misc\pin.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\pipe.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringbuffer.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\serial\serial.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\waitqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\workqueue.c + + + + Drivers + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_gpio.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_usart.c + + + $PROJ_DIR$\..\libraries\GD32F20x_Firmware_Library\CMSIS\GD\GD32F20x\Source\IAR\startup_gd32f20x_cl.s + + + + Finsh + + $PROJ_DIR$\..\..\..\..\components\finsh\cmd.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\shell.c + + + + Kernel + + $PROJ_DIR$\..\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\..\src\device.c + + + $PROJ_DIR$\..\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\..\src\scheduler.c + + + $PROJ_DIR$\..\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\..\src\timer.c + + + + Libraries + + $PROJ_DIR$\..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_exti.c + + + $PROJ_DIR$\..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_gpio.c + + + $PROJ_DIR$\..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_misc.c + + + $PROJ_DIR$\..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_rcu.c + + + $PROJ_DIR$\..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_usart.c + + + $PROJ_DIR$\..\libraries\GD32F20x_Firmware_Library\CMSIS\GD\GD32F20x\Source\system_gd32f20x.c + + + + POSIX + + diff --git a/bsp/gd32/arm/gd32205r-start/project.eww b/bsp/gd32/arm/gd32205r-start/project.eww new file mode 100644 index 0000000000..c2cb02eb1e --- /dev/null +++ b/bsp/gd32/arm/gd32205r-start/project.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\project.ewp + + + + + diff --git a/bsp/gd32/arm/gd32205r-start/project.uvoptx b/bsp/gd32/arm/gd32205r-start/project.uvoptx new file mode 100644 index 0000000000..85e18a700f --- /dev/null +++ b/bsp/gd32/arm/gd32205r-start/project.uvoptx @@ -0,0 +1,784 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 25000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 0 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 3 + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F20x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F205RC$Flash\GD32F20x_CL.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + Applications + 0 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + applications\main.c + main.c + 0 + 0 + + + + + Compiler + 0 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c + syscall_mem.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c + syscalls.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\time.c + time.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\stdlib.c + stdlib.c + 0 + 0 + + + + + CPU + 0 + 0 + 0 + 0 + + 3 + 6 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\backtrace.c + backtrace.c + 0 + 0 + + + 3 + 7 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 3 + 8 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 3 + 9 + 2 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m3\context_rvds.S + context_rvds.S + 0 + 0 + + + 3 + 10 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m3\cpuport.c + cpuport.c + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 4 + 11 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\waitqueue.c + waitqueue.c + 0 + 0 + + + 4 + 12 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\pipe.c + pipe.c + 0 + 0 + + + 4 + 13 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\completion.c + completion.c + 0 + 0 + + + 4 + 14 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\workqueue.c + workqueue.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\dataqueue.c + dataqueue.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\serial\serial.c + serial.c + 0 + 0 + + + + + Drivers + 0 + 0 + 0 + 0 + + 5 + 20 + 2 + 0 + 0 + 0 + ..\libraries\GD32F20x_Firmware_Library\CMSIS\GD\GD32F20x\Source\ARM\startup_gd32f20x_cl.s + startup_gd32f20x_cl.s + 0 + 0 + + + 5 + 21 + 1 + 0 + 0 + 0 + board\board.c + board.c + 0 + 0 + + + 5 + 22 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 5 + 23 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_usart.c + drv_usart.c + 0 + 0 + + + + + Finsh + 0 + 0 + 0 + 0 + + 6 + 24 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 6 + 25 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 6 + 26 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + + + Kernel + 0 + 0 + 0 + 0 + + 7 + 27 + 1 + 0 + 0 + 0 + ..\..\..\..\src\device.c + device.c + 0 + 0 + + + 7 + 28 + 1 + 0 + 0 + 0 + ..\..\..\..\src\idle.c + idle.c + 0 + 0 + + + 7 + 29 + 1 + 0 + 0 + 0 + ..\..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 7 + 30 + 1 + 0 + 0 + 0 + ..\..\..\..\src\clock.c + clock.c + 0 + 0 + + + 7 + 31 + 1 + 0 + 0 + 0 + ..\..\..\..\src\thread.c + thread.c + 0 + 0 + + + 7 + 32 + 1 + 0 + 0 + 0 + ..\..\..\..\src\irq.c + irq.c + 0 + 0 + + + 7 + 33 + 1 + 0 + 0 + 0 + ..\..\..\..\src\object.c + object.c + 0 + 0 + + + 7 + 34 + 1 + 0 + 0 + 0 + ..\..\..\..\src\scheduler.c + scheduler.c + 0 + 0 + + + 7 + 35 + 1 + 0 + 0 + 0 + ..\..\..\..\src\timer.c + timer.c + 0 + 0 + + + 7 + 36 + 1 + 0 + 0 + 0 + ..\..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 7 + 37 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mempool.c + mempool.c + 0 + 0 + + + 7 + 38 + 1 + 0 + 0 + 0 + ..\..\..\..\src\components.c + components.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mem.c + mem.c + 0 + 0 + + + + + Libraries + 0 + 0 + 0 + 0 + + 8 + 40 + 1 + 0 + 0 + 0 + ..\libraries\GD32F20x_Firmware_Library\CMSIS\GD\GD32F20x\Source\system_gd32f20x.c + system_gd32f20x.c + 0 + 0 + + + 8 + 41 + 1 + 0 + 0 + 0 + ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_exti.c + gd32f20x_exti.c + 0 + 0 + + + 8 + 42 + 1 + 0 + 0 + 0 + ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_gpio.c + gd32f20x_gpio.c + 0 + 0 + + + 8 + 43 + 1 + 0 + 0 + 0 + ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_misc.c + gd32f20x_misc.c + 0 + 0 + + + 8 + 44 + 1 + 0 + 0 + 0 + ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_rcu.c + gd32f20x_rcu.c + 0 + 0 + + + 8 + 45 + 1 + 0 + 0 + 0 + ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_usart.c + gd32f20x_usart.c + 0 + 0 + + + + + ::CMSIS + 0 + 0 + 0 + 1 + + +
diff --git a/bsp/gd32/gd32205r-start/project.uvproj b/bsp/gd32/arm/gd32205r-start/project.uvproj similarity index 99% rename from bsp/gd32/gd32205r-start/project.uvproj rename to bsp/gd32/arm/gd32205r-start/project.uvproj index 76df6c3b82..e05d117a00 100644 --- a/bsp/gd32/gd32205r-start/project.uvproj +++ b/bsp/gd32/arm/gd32205r-start/project.uvproj @@ -12,10 +12,10 @@ GD32F205RC GigaDevice - IRAM(0x20000000-0x020000) IROM(0x08000000-0x040000) CLOCK(12000000) CPUTYPE("Cortex-M3") + IRAM(0x20000000-0x020000) IROM(0x08000000-0x040000) CLOCK(25000000) CPUTYPE("Cortex-M3") - "Startup\GD\GD32F20x\startup_gd32f20x.s" ("GD32F20x Startup Code") - UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F20x_3MB -FS08000000 -FL0300000) + "Startup\GD\GD32F20x\startup_gd32f20x_cl.s" ("GD32F20x Startup Code") + UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F20x_CL -FS08000000 -FL0300000) 0 gd32f20x0.h @@ -439,13 +439,6 @@ ..\..\..\components\libc\compilers\armlibc\syscalls.c - - - stdlib.c - 1 - ..\..\..\components\libc\compilers\common\stdlib.c - - time.c @@ -453,9 +446,23 @@ ..\..\..\components\libc\compilers\common\time.c + + + stdlib.c + 1 + ..\..\..\components\libc\compilers\common\stdlib.c + + CPU + + + backtrace.c + 1 + ..\..\..\libcpu\arm\common\backtrace.c + + showmem.c @@ -470,13 +477,6 @@ ..\..\..\libcpu\arm\common\div0.c - - - backtrace.c - 1 - ..\..\..\libcpu\arm\common\backtrace.c - - context_rvds.S @@ -496,16 +496,9 @@ DeviceDrivers - ringbuffer.c + waitqueue.c 1 - ..\..\..\components\drivers\ipc\ringbuffer.c - - - - - dataqueue.c - 1 - ..\..\..\components\drivers\ipc\dataqueue.c + ..\..\..\components\drivers\ipc\waitqueue.c @@ -522,20 +515,6 @@ ..\..\..\components\drivers\ipc\workqueue.c - - - ringblk_buf.c - 1 - ..\..\..\components\drivers\ipc\ringblk_buf.c - - - - - waitqueue.c - 1 - ..\..\..\components\drivers\ipc\waitqueue.c - - pipe.c @@ -543,6 +522,27 @@ ..\..\..\components\drivers\ipc\pipe.c + + + dataqueue.c + 1 + ..\..\..\components\drivers\ipc\dataqueue.c + + + + + ringbuffer.c + 1 + ..\..\..\components\drivers\ipc\ringbuffer.c + + + + + ringblk_buf.c + 1 + ..\..\..\components\drivers\ipc\ringblk_buf.c + + pin.c @@ -615,13 +615,6 @@ Kernel - - - kservice.c - 1 - ..\..\..\src\kservice.c - - device.c @@ -629,13 +622,6 @@ ..\..\..\src\device.c - - - scheduler.c - 1 - ..\..\..\src\scheduler.c - - object.c @@ -645,9 +631,16 @@ - irq.c + thread.c 1 - ..\..\..\src\irq.c + ..\..\..\src\thread.c + + + + + clock.c + 1 + ..\..\..\src\clock.c @@ -657,6 +650,48 @@ ..\..\..\src\idle.c + + + kservice.c + 1 + ..\..\..\src\kservice.c + + + + + scheduler.c + 1 + ..\..\..\src\scheduler.c + + + + + components.c + 1 + ..\..\..\src\components.c + + + + + irq.c + 1 + ..\..\..\src\irq.c + + + + + mempool.c + 1 + ..\..\..\src\mempool.c + + + + + mem.c + 1 + ..\..\..\src\mem.c + + timer.c @@ -671,41 +706,6 @@ ..\..\..\src\ipc.c - - - clock.c - 1 - ..\..\..\src\clock.c - - - - - mempool.c - 1 - ..\..\..\src\mempool.c - - - - - thread.c - 1 - ..\..\..\src\thread.c - - - - - components.c - 1 - ..\..\..\src\components.c - - - - - mem.c - 1 - ..\..\..\src\mem.c - - Libraries diff --git a/bsp/gd32/gd32205r-start/project.uvprojx b/bsp/gd32/arm/gd32205r-start/project.uvprojx similarity index 76% rename from bsp/gd32/gd32205r-start/project.uvprojx rename to bsp/gd32/arm/gd32205r-start/project.uvprojx index 0c6bdc287d..09912feb3a 100644 --- a/bsp/gd32/gd32205r-start/project.uvprojx +++ b/bsp/gd32/arm/gd32205r-start/project.uvprojx @@ -1,42 +1,46 @@ + 2.1 +
### uVision Project, (C) Keil Software
+ rt-thread 0x4 ARM-ADS + 5060750::V5.06 update 6 (build 750)::.\ARMCC 0 GD32F205RC GigaDevice - GigaDevice.GD32F20x_DFP.2.2.0 + GigaDevice.GD32F20x_DFP.2.2.2 http://gd32mcu.com/data/documents/pack/ - IRAM(0x20000000,0x020000) IROM(0x08000000,0x040000) CPUTYPE("Cortex-M3") CLOCK(12000000) ELITTLE - - - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F20x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F205RC$Flash\GD32F20x_CL.FLM)) + IRAM(0x20000000,0x020000) IROM(0x08000000,0x040000) CPUTYPE("Cortex-M3") CLOCK(25000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F20x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F205RC$Flash\GD32F20x_CL.FLM)) 0 $$Device:GD32F205RC$Device\Include\gd32f20x.h - - - - - - - - - + + + + + + + + + $$Device:GD32F205RC$SVD\GD32F20x_CL.svd 0 0 - - - - - + + + + + 0 0 @@ -58,8 +62,8 @@ 0 0 - - + + 0 0 0 @@ -68,8 +72,8 @@ 0 0 - - + + 0 0 0 @@ -79,14 +83,14 @@ 1 0 fromelf --bin !L --output rtthread.bin - + 0 0 0 0 0 - + 0 @@ -100,8 +104,8 @@ 0 0 3 - - + + 1 @@ -110,7 +114,7 @@ DCM.DLL -pCM3 SARMCM3.DLL - + TCM.DLL -pCM3 @@ -134,11 +138,11 @@ 1 BIN\UL2CM3.DLL - - - - - + + + + + 0 @@ -171,7 +175,7 @@ 0 0 "Cortex-M3" - + 0 0 0 @@ -305,7 +309,7 @@ 0x0 - + 1 @@ -332,10 +336,10 @@ 0 0 - + USE_STDPERIPH_DRIVER, GD32F20X_CL, __RTTHREAD__, RT_USING_ARM_LIBC, __CLK_TCK=RT_TICK_PER_SECOND - - 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\gd32_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\GD32F20x_Firmware_Library\CMSIS\GD\GD32F20x\Include;..\libraries\GD32F20x_Firmware_Library\CMSIS;..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Include;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc + + 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\gd32_drivers;..\..\..\..\components\finsh;.;..\..\..\..\include;..\libraries\GD32F20x_Firmware_Library\CMSIS\GD\GD32F20x\Include;..\libraries\GD32F20x_Firmware_Library\CMSIS;..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Include;..\..\..\..\components\libc\posix\io\poll;..\..\..\..\components\libc\posix\io\stdio;..\..\..\..\components\libc\posix\ipc @@ -350,10 +354,10 @@ 0 4 - - - - + + + + @@ -365,13 +369,13 @@ 0 0x08000000 0x20000000 - + .\gd32_rom.ld - - - - - + + + + + @@ -388,32 +392,26 @@
Compiler - - - syscalls.c - 1 - ..\..\..\components\libc\compilers\armlibc\syscalls.c - - syscall_mem.c 1 - ..\..\..\components\libc\compilers\armlibc\syscall_mem.c + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c + + + syscalls.c + 1 + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c - - time.c 1 - ..\..\..\components\libc\compilers\common\time.c + ..\..\..\..\components\libc\compilers\common\time.c - - stdlib.c 1 - ..\..\..\components\libc\compilers\common\stdlib.c + ..\..\..\..\components\libc\compilers\common\stdlib.c @@ -423,35 +421,27 @@ backtrace.c 1 - ..\..\..\libcpu\arm\common\backtrace.c + ..\..\..\..\libcpu\arm\common\backtrace.c - - div0.c 1 - ..\..\..\libcpu\arm\common\div0.c + ..\..\..\..\libcpu\arm\common\div0.c - - showmem.c 1 - ..\..\..\libcpu\arm\common\showmem.c + ..\..\..\..\libcpu\arm\common\showmem.c - - context_rvds.S 2 - ..\..\..\libcpu\arm\cortex-m3\context_rvds.S + ..\..\..\..\libcpu\arm\cortex-m3\context_rvds.S - - cpuport.c 1 - ..\..\..\libcpu\arm\cortex-m3\cpuport.c + ..\..\..\..\libcpu\arm\cortex-m3\cpuport.c @@ -459,65 +449,49 @@ DeviceDrivers - workqueue.c + waitqueue.c 1 - ..\..\..\components\drivers\ipc\workqueue.c + ..\..\..\..\components\drivers\ipc\waitqueue.c - - - - ringbuffer.c - 1 - ..\..\..\components\drivers\ipc\ringbuffer.c - - - pipe.c 1 - ..\..\..\components\drivers\ipc\pipe.c + ..\..\..\..\components\drivers\ipc\pipe.c - - - - ringblk_buf.c - 1 - ..\..\..\components\drivers\ipc\ringblk_buf.c - - - - - dataqueue.c - 1 - ..\..\..\components\drivers\ipc\dataqueue.c - - - completion.c 1 - ..\..\..\components\drivers\ipc\completion.c + ..\..\..\..\components\drivers\ipc\completion.c - - - waitqueue.c + ringbuffer.c 1 - ..\..\..\components\drivers\ipc\waitqueue.c + ..\..\..\..\components\drivers\ipc\ringbuffer.c + + + workqueue.c + 1 + ..\..\..\..\components\drivers\ipc\workqueue.c + + + ringblk_buf.c + 1 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + dataqueue.c + 1 + ..\..\..\..\components\drivers\ipc\dataqueue.c - - pin.c 1 - ..\..\..\components\drivers\misc\pin.c + ..\..\..\..\components\drivers\misc\pin.c - - serial.c 1 - ..\..\..\components\drivers\serial\serial.c + ..\..\..\..\components\drivers\serial\serial.c @@ -529,22 +503,16 @@ 2 ..\libraries\GD32F20x_Firmware_Library\CMSIS\GD\GD32F20x\Source\ARM\startup_gd32f20x_cl.s - - board.c 1 board\board.c - - drv_gpio.c 1 ..\libraries\gd32_drivers\drv_gpio.c - - drv_usart.c 1 @@ -558,115 +526,87 @@ shell.c 1 - ..\..\..\components\finsh\shell.c + ..\..\..\..\components\finsh\shell.c - - msh.c 1 - ..\..\..\components\finsh\msh.c + ..\..\..\..\components\finsh\msh.c - - cmd.c 1 - ..\..\..\components\finsh\cmd.c + ..\..\..\..\components\finsh\cmd.c Kernel - - - kservice.c - 1 - ..\..\..\src\kservice.c - - - - - scheduler.c - 1 - ..\..\..\src\scheduler.c - - - - - irq.c - 1 - ..\..\..\src\irq.c - - device.c 1 - ..\..\..\src\device.c + ..\..\..\..\src\device.c - - - - object.c - 1 - ..\..\..\src\object.c - - - - - components.c - 1 - ..\..\..\src\components.c - - - - - timer.c - 1 - ..\..\..\src\timer.c - - - idle.c 1 - ..\..\..\src\idle.c + ..\..\..\..\src\idle.c - - - - mempool.c - 1 - ..\..\..\src\mempool.c - - - ipc.c 1 - ..\..\..\src\ipc.c + ..\..\..\..\src\ipc.c - - - - thread.c - 1 - ..\..\..\src\thread.c - - - clock.c 1 - ..\..\..\src\clock.c + ..\..\..\..\src\clock.c + + + thread.c + 1 + ..\..\..\..\src\thread.c + + + irq.c + 1 + ..\..\..\..\src\irq.c + + + object.c + 1 + ..\..\..\..\src\object.c + + + scheduler.c + 1 + ..\..\..\..\src\scheduler.c + + + timer.c + 1 + ..\..\..\..\src\timer.c + + + kservice.c + 1 + ..\..\..\..\src\kservice.c + + + mempool.c + 1 + ..\..\..\..\src\mempool.c + + + components.c + 1 + ..\..\..\..\src\components.c - - mem.c 1 - ..\..\..\src\mem.c + ..\..\..\..\src\mem.c @@ -678,36 +618,26 @@ 1 ..\libraries\GD32F20x_Firmware_Library\CMSIS\GD\GD32F20x\Source\system_gd32f20x.c - - gd32f20x_exti.c 1 ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_exti.c - - gd32f20x_gpio.c 1 ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_gpio.c - - gd32f20x_misc.c 1 ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_misc.c - - gd32f20x_rcu.c 1 ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_rcu.c - - gd32f20x_usart.c 1 @@ -715,33 +645,39 @@ + + ::CMSIS + + - + - + - + - + + <Project Info> - - - - - + + + + + 0 1 + diff --git a/bsp/gd32/gd32205r-start/rtconfig.h b/bsp/gd32/arm/gd32205r-start/rtconfig.h similarity index 95% rename from bsp/gd32/gd32205r-start/rtconfig.h rename to bsp/gd32/arm/gd32205r-start/rtconfig.h index f6479ec273..44e20fb54d 100644 --- a/bsp/gd32/gd32205r-start/rtconfig.h +++ b/bsp/gd32/arm/gd32205r-start/rtconfig.h @@ -52,8 +52,14 @@ #define RT_USING_USER_MAIN #define RT_MAIN_THREAD_STACK_SIZE 2048 #define RT_MAIN_THREAD_PRIORITY 10 -#define RT_USING_MSH + +/* C++ features */ + + +/* Command shell */ + #define RT_USING_FINSH +#define RT_USING_MSH #define FINSH_USING_MSH #define FINSH_THREAD_NAME "tshell" #define FINSH_THREAD_PRIORITY 20 @@ -66,6 +72,9 @@ #define FINSH_USING_DESCRIPTION #define FINSH_ARG_MAX 10 +/* Device virtual file system */ + + /* Device Drivers */ #define RT_USING_DEVICE_IPC @@ -81,7 +90,7 @@ /* Using USB */ -/* C/C++ and POSIX layer */ +/* POSIX layer and C standard library */ #define RT_LIBC_DEFAULT_TIMEZONE 8 @@ -93,10 +102,12 @@ /* Socket is in the 'Network' category */ - /* Network */ +/* VBUS(Virtual Software BUS) */ + + /* Utilities */ diff --git a/bsp/gd32/gd32103c-eval/rtconfig.py b/bsp/gd32/arm/gd32205r-start/rtconfig.py similarity index 98% rename from bsp/gd32/gd32103c-eval/rtconfig.py rename to bsp/gd32/arm/gd32205r-start/rtconfig.py index a8cb7dc467..4285e6b03c 100644 --- a/bsp/gd32/gd32103c-eval/rtconfig.py +++ b/bsp/gd32/arm/gd32205r-start/rtconfig.py @@ -22,8 +22,8 @@ elif CROSS_TOOL == 'keil': PLATFORM = 'armcc' EXEC_PATH = r'C:/Keil_v5' elif CROSS_TOOL == 'iar': - PLATFORM = 'iccarm' - EXEC_PATH = r'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.3' + 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') @@ -93,7 +93,7 @@ elif PLATFORM == 'armcc': POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' -elif PLATFORM == 'iccarm': +elif PLATFORM == 'iar': # toolchains CC = 'iccarm' CXX = 'iccarm' diff --git a/bsp/gd32/arm/gd32205r-start/template.ewp b/bsp/gd32/arm/gd32205r-start/template.ewp new file mode 100644 index 0000000000..6e8d4093b9 --- /dev/null +++ b/bsp/gd32/arm/gd32205r-start/template.ewp @@ -0,0 +1,1889 @@ + + + 2 + + Debug + + ARM + + 1 + + General + 3 + + 22 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 22 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + + diff --git a/bsp/gd32/gd32205r-start/template.uvoptx b/bsp/gd32/arm/gd32205r-start/template.uvoptx similarity index 96% rename from bsp/gd32/gd32205r-start/template.uvoptx rename to bsp/gd32/arm/gd32205r-start/template.uvoptx index 3511a69bb3..e96a1012d7 100644 --- a/bsp/gd32/gd32205r-start/template.uvoptx +++ b/bsp/gd32/arm/gd32205r-start/template.uvoptx @@ -26,7 +26,7 @@ 0x4 ARM-ADS - 12000000 + 25000000 1 1 @@ -120,7 +120,7 @@ 0 UL2CM3 - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F20x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F205RC$Flash\GD32F20x_CL.FLM)) + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F20x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F205RC$Flash\GD32F20x_CL.FLM)) diff --git a/bsp/gd32/gd32205r-start/template.uvproj b/bsp/gd32/arm/gd32205r-start/template.uvproj similarity index 98% rename from bsp/gd32/gd32205r-start/template.uvproj rename to bsp/gd32/arm/gd32205r-start/template.uvproj index 344c060ada..9980390103 100644 --- a/bsp/gd32/gd32205r-start/template.uvproj +++ b/bsp/gd32/arm/gd32205r-start/template.uvproj @@ -15,10 +15,10 @@ GD32F205RC GigaDevice - IRAM(0x20000000-0x020000) IROM(0x08000000-0x040000) CLOCK(12000000) CPUTYPE("Cortex-M3") + IRAM(0x20000000-0x020000) IROM(0x08000000-0x040000) CLOCK(25000000) CPUTYPE("Cortex-M3") - "Startup\GD\GD32F20x\startup_gd32f20x.s" ("GD32F20x Startup Code") - UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F20x_3MB -FS08000000 -FL0300000) + "Startup\GD\GD32F20x\startup_gd32f20x_cl.s" ("GD32F20x Startup Code") + UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F20x_CL -FS08000000 -FL0300000) 0 gd32f20x0.h @@ -30,7 +30,7 @@ - SFD\GD\GD32F20x\GD32F20x.SFR + SFD\GD\GD32F20x\GD32F20x_CL.SFR 0 0 @@ -605,9 +605,9 @@ Startup - startup_gd32f20x.s + startup_gd32f20x_cl.s 2 - ..\..\..\Library\Firmware\CMSIS\GD\GD32F20x\Source\ARM\startup_gd32f20x.s + ..\..\..\Library\Firmware\CMSIS\GD\GD32F20x\Source\ARM\startup_gd32f20x_cl.s diff --git a/bsp/gd32/gd32205r-start/template.uvprojx b/bsp/gd32/arm/gd32205r-start/template.uvprojx similarity index 98% rename from bsp/gd32/gd32205r-start/template.uvprojx rename to bsp/gd32/arm/gd32205r-start/template.uvprojx index 1ba7a286ef..7739072989 100644 --- a/bsp/gd32/gd32205r-start/template.uvprojx +++ b/bsp/gd32/arm/gd32205r-start/template.uvprojx @@ -17,10 +17,10 @@ GigaDevice GigaDevice.GD32F20x_DFP.2.2.0 http://gd32mcu.com/data/documents/pack/ - IRAM(0x20000000,0x020000) IROM(0x08000000,0x040000) CPUTYPE("Cortex-M3") CLOCK(12000000) ELITTLE + IRAM(0x20000000,0x020000) IROM(0x08000000,0x040000) CPUTYPE("Cortex-M3") CLOCK(25000000) ELITTLE - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F20x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F205RC$Flash\GD32F20x_CL.FLM)) + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F20x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F205RC$Flash\GD32F20x_CL.FLM)) 0 $$Device:GD32F205RC$Device\Include\gd32f20x.h diff --git a/bsp/gd32/gd32450i-eval/.config b/bsp/gd32/arm/gd32207i-eval/.config similarity index 96% rename from bsp/gd32/gd32450i-eval/.config rename to bsp/gd32/arm/gd32207i-eval/.config index 93de741d62..c177b86f87 100644 --- a/bsp/gd32/gd32450i-eval/.config +++ b/bsp/gd32/arm/gd32207i-eval/.config @@ -95,7 +95,6 @@ CONFIG_RT_MAIN_THREAD_PRIORITY=10 # C++ features # # CONFIG_RT_USING_CPLUSPLUS is not set -# CONFIG_RT_USING_FAL is not set # # Command shell @@ -275,6 +274,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set # CONFIG_PKG_USING_JOYLINK is not set # CONFIG_PKG_USING_EZ_IOT_OS is not set +# CONFIG_PKG_USING_IOTSHARP_SDK 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 @@ -314,6 +314,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # # CONFIG_PKG_USING_MBEDTLS is not set # CONFIG_PKG_USING_LIBSODIUM is not set +# CONFIG_PKG_USING_LIBHYDROGEN is not set # CONFIG_PKG_USING_TINYCRYPT is not set # CONFIG_PKG_USING_TFM is not set # CONFIG_PKG_USING_YD_CRYPTO is not set @@ -353,6 +354,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_LVGL is not set # CONFIG_PKG_USING_LITTLEVGL2RTT is not set # CONFIG_PKG_USING_LV_MUSIC_DEMO is not set +# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set # # u8g2: a monochrome graphic library @@ -382,6 +384,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_TERMBOX is not set # CONFIG_PKG_USING_VT100 is not set # CONFIG_PKG_USING_QRCODE is not set +# CONFIG_PKG_USING_GUIENGINE is not set # # tools packages @@ -425,6 +428,8 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_GAN_ZHI is not set # CONFIG_PKG_USING_FDT is not set # CONFIG_PKG_USING_CBOX is not set +# CONFIG_PKG_USING_SNOWFLAKE is not set +# CONFIG_PKG_USING_HASH_MATCH is not set # # system packages @@ -456,6 +461,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CMSIS: ARM Cortex-M Microcontroller Software Interface Standard # # CONFIG_PKG_USING_CMSIS_5 is not set +# CONFIG_PKG_USING_CMSIS_RTOS1 is not set # CONFIG_PKG_USING_CMSIS_RTOS2 is not set # @@ -467,8 +473,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # 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_GUIENGINE is not set +# CONFIG_PKG_USING_RTDUINO is not set # CONFIG_PKG_USING_CAIRO is not set # CONFIG_PKG_USING_PIXMAN is not set # CONFIG_PKG_USING_PARTITION is not set @@ -499,6 +504,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_TINYUSB is not set # CONFIG_PKG_USING_CHERRYUSB is not set # CONFIG_PKG_USING_KMULTI_RTIMER is not set +# CONFIG_PKG_USING_TFDB is not set # # peripheral libraries and drivers @@ -653,12 +659,14 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_CONTROLLER is not set # CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set # CONFIG_PKG_USING_MFBD is not set +# CONFIG_PKG_USING_SLCAN2RTT is not set +# CONFIG_PKG_USING_SOEM is not set # # Hardware Drivers Config # -CONFIG_SOC_SERIES_GD32F4xx=y -CONFIG_SOC_GD32450I=y +CONFIG_SOC_SERIES_GD32F20x=y +CONFIG_SOC_GD32207I=y # # Onboard Peripheral Drivers @@ -671,7 +679,8 @@ CONFIG_BSP_USING_GPIO=y CONFIG_BSP_USING_UART=y CONFIG_BSP_USING_UART0=y # CONFIG_BSP_UART0_RX_USING_DMA is not set -# CONFIG_BSP_USING_UART1 is not set +CONFIG_BSP_USING_UART1=y +# CONFIG_BSP_UART1_RX_USING_DMA is not set # CONFIG_BSP_USING_UART2 is not set # CONFIG_BSP_USING_UART3 is not set # CONFIG_BSP_USING_UART4 is not set @@ -680,6 +689,13 @@ CONFIG_BSP_USING_UART0=y # CONFIG_BSP_USING_UART7 is not set # CONFIG_BSP_USING_SPI is not set # CONFIG_BSP_USING_I2C1 is not set +# CONFIG_BSP_USING_ADC is not set +# CONFIG_BSP_USING_TIM is not set +# CONFIG_BSP_USING_ONCHIP_RTC is not set +# CONFIG_BSP_USING_WDT is not set +# CONFIG_BSP_USING_SDIO is not set +# CONFIG_BSP_USING_USBD is not set +# CONFIG_BSP_USING_USBH is not set # # Board extended module Drivers diff --git a/bsp/gd32/arm/gd32207i-eval/Kconfig b/bsp/gd32/arm/gd32207i-eval/Kconfig new file mode 100644 index 0000000000..dbc650938f --- /dev/null +++ b/bsp/gd32/arm/gd32207i-eval/Kconfig @@ -0,0 +1,21 @@ +mainmenu "RT-Thread Configuration" + +config BSP_DIR + string + option env="BSP_ROOT" + default "." + +config RTT_DIR + string + option env="RTT_ROOT" + default "../../../.." + +config PKGS_DIR + string + option env="PKGS_ROOT" + default "packages" + +source "$RTT_DIR/Kconfig" +source "$PKGS_DIR/Kconfig" +source "../libraries/Kconfig" +source "board/Kconfig" diff --git a/bsp/gd32/arm/gd32207i-eval/README.md b/bsp/gd32/arm/gd32207i-eval/README.md new file mode 100644 index 0000000000..410c5e1389 --- /dev/null +++ b/bsp/gd32/arm/gd32207i-eval/README.md @@ -0,0 +1,115 @@ +# GD32207I-EVAL开发板BSP说明 + +## 简介 + +GD32207I-EVAL是-兆易创新推出的一款GD32F20X系列的评估板,最高主频高达120M,该开发板具有丰富的板载资源,可以充分发挥 GD32207IK的芯片性能。 + +开发板外观如下图所示: + +![board](figures/board.jpg) + +该开发板常用 **板载资源** 如下: + +- GD32207IK,主频 120MHz,3MB Flash、256KB SRAM + +- 常用外设 + + - LED :5个,LED1 (电源指示灯),LED2(PF6),LED3(PF7),LED4(PF8),LED5(PF9) + - 按键:3个,K1(用户按键,PA0),K2(用户按键,PC13),K3(用户按键,PB14) + - General TM * 10 、Advanced TM * 2、Basic TM * 2 + - 系统时钟 * 1 + - 看门狗 * 2 + - RTC * 1 + - USART * 4、UART * 4 + - I2C * 3、I2S * 1 + - SPI * 3 + - SDIO * 1 + - CAN2.0B * 2 + - USB2.0 OTG FS * 1 + - 以太网MAC * 1 + - TFT-LCD + - 数字摄像头接口 * 1 + - Crypro/Hash * 1 + - EXMC/SDRAM * 1 + - ADC * 3 + - DAC * 2 + - 最多支持140GPIOs + +- 调试接口:GD-LINK + +## 外设支持 + +本 BSP 目前对外设的支持情况如下: + +| **片上外设** | **支持情况** | **备注** | +|:--------- |:--------:|:------------------------------------- | +| GPIO | 支持 | PA0, PA1... ---> PIN: 0, 1...143 | +| UART | 支持 | UART0 - UART7 | +| I2C | 支持 | I2C1 | +| SPI | 支持 | SPI0 - SPI2 | +| SPI FLASH | 支持 | | +| ADC | 支持 | ADC0 - ADC2 | +| **扩展模块** | **支持情况** | **备注** | +| 暂无 | 暂不支持 | 暂不支持 | + +## 使用说明 + +使用说明分为如下两个章节: + +- 快速上手 + + 本章节是为刚接触 RT-Thread 的新手准备的使用说明,遵循简单的步骤即可将 RT-Thread 操作系统运行在该开发板上,看到实验效果 。 + +- 进阶使用 + + 本章节是为需要在 RT-Thread 操作系统上使用更多开发板资源的开发者准备的。通过使用 ENV 工具对 BSP 进行配置,可以开启更多板载资源,实现更多高级功能。 + +### 快速上手 + +本 BSP 为开发者提供 MDK4、MDK5 和 IAR 工程,并且支持 GCC 开发环境,也可使用RT-Thread Studio开发。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 + +#### 硬件连接 + +使用数据线连接开发板到 PC,使用USB转232连接PA9(MCU TX)和PA10(MCU RX),打开电源开关。 + +#### 编译下载 + +双击 project.uvprojx 文件,打开 MDK5 工程,编译并下载程序到开发板。 + +> 工程默认配置使用 GD-Link 仿真器下载程序,在通过 GD-Link 连接开发板的基础上,点击下载按钮即可下载程序到开发板 + +#### 运行结果 + +下载程序成功之后,系统会自动运行,LED 闪烁。 + +连接开发板对应串口到 PC , 在终端工具里打开相应的串口(115200-8-1-N),复位设备后,可以看到 RT-Thread 的输出信息: + +```bash + \ | / +- RT - Thread Operating System + / | \ 4.1.0 build May 2 2022 23:45:28 + 2006 - 2022 Copyright by RT-Thread team +msh > +``` + +### 进阶使用 + +此 BSP 默认只开启了 GPIO 和 串口0的功能,如果需使用高级功能,需要利用 ENV 工具对BSP 进行配置,步骤如下: + +1. 在 bsp 下打开 env 工具。 + +2. 输入`menuconfig`命令配置工程,配置好之后保存退出。 + +3. 输入`pkgs --update`命令更新软件包。 + +4. 输入`scons --target=mdk4/mdk5/iar` 命令重新生成工程。 + +## 注意事项 + +暂无 + +## 联系人信息 + +维护人: + +- [BruceOu](https://github.com/Ouxiaolong/), 邮箱: \ No newline at end of file diff --git a/bsp/gd32/gd32303e-eval/SConscript b/bsp/gd32/arm/gd32207i-eval/SConscript similarity index 100% rename from bsp/gd32/gd32303e-eval/SConscript rename to bsp/gd32/arm/gd32207i-eval/SConscript diff --git a/bsp/gd32/arm/gd32207i-eval/SConstruct b/bsp/gd32/arm/gd32207i-eval/SConstruct new file mode 100644 index 0000000000..c8d7363d6d --- /dev/null +++ b/bsp/gd32/arm/gd32207i-eval/SConstruct @@ -0,0 +1,60 @@ +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.' + rtconfig.TARGET_EXT + +DefaultEnvironment(tools=[]) +env = Environment(tools = ['mingw'], + AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, + CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS, + AR = rtconfig.AR, ARFLAGS = '-rc', + CXX = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS, + LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) +env.PrependENVPath('PATH', rtconfig.EXEC_PATH) + +if rtconfig.PLATFORM == 'iar': + env.Replace(CCCOM = ['$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES']) + env.Replace(ARFLAGS = ['']) + env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map') + +Export('RTT_ROOT') +Export('rtconfig') + +SDK_ROOT = os.path.abspath('./') + +if os.path.exists(SDK_ROOT + '/libraries'): + libraries_path_prefix = SDK_ROOT + '/libraries' +else: + libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries' + +SDK_LIB = libraries_path_prefix +Export('SDK_LIB') + +# prepare building environment +objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) + +gd32_library = 'GD32F20x_Firmware_Library' +rtconfig.BSP_LIBRARY_TYPE = gd32_library + +# include libraries +objs.extend(SConscript(os.path.join(libraries_path_prefix, gd32_library, 'SConscript'))) + +# include drivers +objs.extend(SConscript(os.path.join(libraries_path_prefix, 'gd32_drivers', 'SConscript'))) + +# make a building +DoBuilding(TARGET, objs) diff --git a/bsp/gd32/gd32303e-eval/applications/SConscript b/bsp/gd32/arm/gd32207i-eval/applications/SConscript similarity index 100% rename from bsp/gd32/gd32303e-eval/applications/SConscript rename to bsp/gd32/arm/gd32207i-eval/applications/SConscript diff --git a/bsp/gd32/gd32450i-eval/applications/main.c b/bsp/gd32/arm/gd32207i-eval/applications/main.c similarity index 74% rename from bsp/gd32/gd32450i-eval/applications/main.c rename to bsp/gd32/arm/gd32207i-eval/applications/main.c index 8b7e99ae6d..5b1eb69240 100644 --- a/bsp/gd32/gd32450i-eval/applications/main.c +++ b/bsp/gd32/arm/gd32207i-eval/applications/main.c @@ -1,11 +1,11 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2022, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes - * 2021-08-20 BruceOu first implementation + * 2022-05-02 BruceOu first implementation */ #include @@ -13,8 +13,8 @@ #include #include -/* defined the LED1 pin: PE2 */ -#define LED1_PIN GET_PIN(E, 2) +/* defined the LED1 pin: PF6 */ +#define LED1_PIN GET_PIN(F, 6) int main(void) { diff --git a/bsp/gd32/gd32450i-eval/board/Kconfig b/bsp/gd32/arm/gd32207i-eval/board/Kconfig similarity index 59% rename from bsp/gd32/gd32450i-eval/board/Kconfig rename to bsp/gd32/arm/gd32207i-eval/board/Kconfig index 6707be5a2c..605ec81987 100644 --- a/bsp/gd32/gd32450i-eval/board/Kconfig +++ b/bsp/gd32/arm/gd32207i-eval/board/Kconfig @@ -1,16 +1,16 @@ menu "Hardware Drivers Config" -config SOC_SERIES_GD32F4xx +config SOC_SERIES_GD32F20x bool default y -config SOC_GD32450I +config SOC_GD32207I bool - select SOC_SERIES_GD32F4xx + select SOC_SERIES_GD32F20x select RT_USING_COMPONENTS_INIT select RT_USING_USER_MAIN default y - + menu "Onboard Peripheral Drivers" endmenu @@ -29,21 +29,21 @@ menu "On-chip Peripheral Drivers" if BSP_USING_UART config BSP_USING_UART0 bool "Enable UART0" - default n + default y config BSP_UART0_RX_USING_DMA bool "Enable UART0 RX DMA" - depends on BSP_USING_UART0 + depends on BSP_USING_UART0 select RT_SERIAL_USING_DMA default n config BSP_USING_UART1 bool "Enable UART1" - default y + default n config BSP_UART1_RX_USING_DMA bool "Enable UART1 RX DMA" - depends on BSP_USING_UART1 + depends on BSP_USING_UART1 select RT_SERIAL_USING_DMA default n @@ -53,7 +53,7 @@ menu "On-chip Peripheral Drivers" config BSP_UART2_RX_USING_DMA bool "Enable UART2 RX DMA" - depends on BSP_USING_UART2 + depends on BSP_USING_UART2 select RT_SERIAL_USING_DMA default n @@ -63,7 +63,7 @@ menu "On-chip Peripheral Drivers" config BSP_UART3_RX_USING_DMA bool "Enable UART3 RX DMA" - depends on BSP_USING_UART3 + depends on BSP_USING_UART3 select RT_SERIAL_USING_DMA default n @@ -73,7 +73,7 @@ menu "On-chip Peripheral Drivers" config BSP_UART4_RX_USING_DMA bool "Enable UART4 RX DMA" - depends on BSP_USING_UART4 + depends on BSP_USING_UART4 select RT_SERIAL_USING_DMA default n @@ -83,7 +83,7 @@ menu "On-chip Peripheral Drivers" config BSP_UART5_RX_USING_DMA bool "Enable UART5 RX DMA" - depends on BSP_USING_UART5 + depends on BSP_USING_UART5 select RT_SERIAL_USING_DMA default n @@ -93,7 +93,7 @@ menu "On-chip Peripheral Drivers" config BSP_UART6_RX_USING_DMA bool "Enable UART6 RX DMA" - depends on BSP_USING_UART6 + depends on BSP_USING_UART6 select RT_SERIAL_USING_DMA default n @@ -103,7 +103,7 @@ menu "On-chip Peripheral Drivers" config BSP_UART7_RX_USING_DMA bool "Enable UART7 RX DMA" - depends on BSP_USING_UART7 + depends on BSP_USING_UART7 select RT_SERIAL_USING_DMA default n endif @@ -121,7 +121,7 @@ menu "On-chip Peripheral Drivers" bool "Enable SPI1 TX DMA" depends on BSP_USING_SPI1 default n - + config BSP_SPI1_RX_USING_DMA bool "Enable SPI1 RX DMA" depends on BSP_USING_SPI1 @@ -145,12 +145,97 @@ menu "On-chip Peripheral Drivers" range 1 216 default 25 endif - source "../libraries/gd32_drivers/Kconfig" + menuconfig BSP_USING_ADC + bool "Enable ADC" + default n + select RT_USING_ADC + if BSP_USING_ADC + config BSP_USING_ADC0 + bool "Enable ADC0" + default n + + config BSP_USING_ADC1 + bool "Enable ADC1" + default n + + config BSP_USING_ADC2 + bool "Enable ADC2" + default n + endif + + menuconfig BSP_USING_TIM + bool "Enable timer" + default n + select RT_USING_HWTIMER + if BSP_USING_TIM + config BSP_USING_TIM10 + bool "Enable TIM10" + default n + + config BSP_USING_TIM11 + bool "Enable TIM11" + default n + + config BSP_USING_TIM12 + bool "Enable TIM13" + default n + endif + + menuconfig BSP_USING_ONCHIP_RTC + bool "Enable RTC" + select RT_USING_RTC + default n + if BSP_USING_ONCHIP_RTC + choice + prompt "Select clock source" + default BSP_RTC_USING_LSE + + config BSP_RTC_USING_LSE + bool "RTC USING LSE" + + config BSP_RTC_USING_LSI + bool "RTC USING LSI" + endchoice + endif + + config BSP_USING_WDT + bool "Enable Watchdog Timer" + select RT_USING_WDT + default n + + config BSP_USING_SDIO + bool "Enable SDIO" + select RT_USING_SDIO + select RT_USING_DFS + default n + + config BSP_USING_USBD + bool "Enable USB Device" + select RT_USING_USB_DEVICE + default n + + menuconfig BSP_USING_USBH + bool "Enable USB Host" + select RT_USING_USB_HOST + default n + if BSP_USING_USBH + menuconfig RT_USBH_MSTORAGE + bool "Enable Udisk Drivers" + default n + if RT_USBH_MSTORAGE + config UDISK_MOUNTPOINT + string "Udisk mount dir" + default "/" + endif + endif + + source "../libraries/gd32_drivers/Kconfig" + endmenu menu "Board extended module Drivers" endmenu - + endmenu diff --git a/bsp/gd32/arm/gd32207i-eval/board/SConscript b/bsp/gd32/arm/gd32207i-eval/board/SConscript new file mode 100644 index 0000000000..d1c8023578 --- /dev/null +++ b/bsp/gd32/arm/gd32207i-eval/board/SConscript @@ -0,0 +1,28 @@ +import os +import rtconfig +from building import * + +Import('SDK_LIB') + +cwd = GetCurrentDir() + +# add general drivers +src = Split(''' +board.c +''') + +path = [cwd] + +startup_path_prefix = SDK_LIB + +if rtconfig.CROSS_TOOL == 'gcc': + src += [startup_path_prefix + '/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/GCC/startup_gd32f20x_cl.s'] +elif rtconfig.CROSS_TOOL == 'keil': + src += [startup_path_prefix + '/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/ARM/startup_gd32f20x_cl.s'] +elif rtconfig.CROSS_TOOL == 'iar': + src += [startup_path_prefix + '/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/IAR/startup_gd32f20x_cl.s'] + +CPPDEFINES = ['GD32F20X_CL'] +group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES) + +Return('group') diff --git a/bsp/gd32/gd32450i-eval/board/board.c b/bsp/gd32/arm/gd32207i-eval/board/board.c similarity index 96% rename from bsp/gd32/gd32450i-eval/board/board.c rename to bsp/gd32/arm/gd32207i-eval/board/board.c index 0e9f89865a..8331a86841 100644 --- a/bsp/gd32/gd32450i-eval/board/board.c +++ b/bsp/gd32/arm/gd32207i-eval/board/board.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2022, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/gd32/arm/gd32207i-eval/board/board.h b/bsp/gd32/arm/gd32207i-eval/board/board.h new file mode 100644 index 0000000000..49d44d8948 --- /dev/null +++ b/bsp/gd32/arm/gd32207i-eval/board/board.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-12-18 BruceOu first implementation + */ +#ifndef __BOARD_H__ +#define __BOARD_H__ + +#include "gd32f20x.h" +#include "drv_usart.h" +#include "drv_gpio.h" + +#include "gd32f20x_exti.h" + +#define EXT_SDRAM_BEGIN (0xC0000000U) /* the begining address of external SDRAM */ +#define EXT_SDRAM_END (EXT_SDRAM_BEGIN + (32U * 1024 * 1024)) /* the end address of external SDRAM */ + +// Internal SRAM memory size[Kbytes] <8-128> +// Default: 128 +#ifdef __ICCARM__ +// Use *.icf ram symbal, to avoid hardcode. +extern char __ICFEDIT_region_RAM_end__; +#define GD32_SRAM_END &__ICFEDIT_region_RAM_end__ +#else +#define GD32_SRAM_SIZE 256 +#define GD32_SRAM_END (0x20000000 + GD32_SRAM_SIZE * 1024) +#endif + +#ifdef __CC_ARM +extern int Image$$RW_IRAM1$$ZI$$Limit; +#define HEAP_BEGIN (&Image$$RW_IRAM1$$ZI$$Limit) +#elif __ICCARM__ +#pragma section="HEAP" +#define HEAP_BEGIN (__segment_end("HEAP")) +#else +extern int __bss_end; +#define HEAP_BEGIN (&__bss_end) +#endif + +#define HEAP_END GD32_SRAM_END + +#endif + diff --git a/bsp/gd32/arm/gd32207i-eval/board/gd32f20x_libopt.h b/bsp/gd32/arm/gd32207i-eval/board/gd32f20x_libopt.h new file mode 100644 index 0000000000..bd38888220 --- /dev/null +++ b/bsp/gd32/arm/gd32207i-eval/board/gd32f20x_libopt.h @@ -0,0 +1,70 @@ +/*! + \file gd32f20x_libopt.h + \brief library optional for gd32f20x + + \version 2015-07-15, V1.0.0, demo for GD32F20x + \version 2017-06-05, V2.0.0, demo for GD32F20x + \version 2019-04-01, V2.1.0, demo for GD32F20x + \version 2020-09-30, V2.2.0, demo for GD32F20x +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32F20X_LIBOPT_H +#define GD32F20X_LIBOPT_H + +#include "gd32f20x_adc.h" +#include "gd32f20x_bkp.h" +#include "gd32f20x_can.h" +#include "gd32f20x_crc.h" +#include "gd32f20x_cau.h" +#include "gd32f20x_dac.h" +#include "gd32f20x_dci.h" +#include "gd32f20x_dma.h" +#include "gd32f20x_enet.h" +#include "gd32f20x_exmc.h" +#include "gd32f20x_exti.h" +#include "gd32f20x_fmc.h" +#include "gd32f20x_gpio.h" +#include "gd32f20x_hau.h" +#include "gd32f20x_i2c.h" +#include "gd32f20x_fwdgt.h" +#include "gd32f20x_dbg.h" +#include "gd32f20x_misc.h" +#include "gd32f20x_pmu.h" +#include "gd32f20x_rcu.h" +#include "gd32f20x_trng.h" +#include "gd32f20x_rtc.h" +#include "gd32f20x_sdio.h" +#include "gd32f20x_spi.h" +#include "gd32f20x_timer.h" +#include "gd32f20x_tli.h" +#include "gd32f20x_usart.h" +#include "gd32f20x_wwdgt.h" + +#endif /* GD32F20X_LIBOPT_H */ diff --git a/bsp/gd32/gd32450i-eval/board/linker_scripts/link.icf b/bsp/gd32/arm/gd32207i-eval/board/linker_scripts/link.icf similarity index 100% rename from bsp/gd32/gd32450i-eval/board/linker_scripts/link.icf rename to bsp/gd32/arm/gd32207i-eval/board/linker_scripts/link.icf diff --git a/bsp/gd32/gd32450z-eval/board/linker_scripts/link.ld b/bsp/gd32/arm/gd32207i-eval/board/linker_scripts/link.ld similarity index 96% rename from bsp/gd32/gd32450z-eval/board/linker_scripts/link.ld rename to bsp/gd32/arm/gd32207i-eval/board/linker_scripts/link.ld index f39b59d02d..4bd0cc021a 100644 --- a/bsp/gd32/gd32450z-eval/board/linker_scripts/link.ld +++ b/bsp/gd32/arm/gd32207i-eval/board/linker_scripts/link.ld @@ -1,13 +1,13 @@ /* - * linker script for GD32F4xx with GNU ld - * bernard.xiong 2009-10-14 + * linker script for GD32F20x with GNU ld + * BruceOu 2022-05-02 */ /* Program Entry, set to mark it as "used" and avoid gc */ MEMORY { CODE (rx) : ORIGIN = 0x08000000, LENGTH = 3072k /* 3072KB flash */ - DATA (rw) : ORIGIN = 0x20000000, LENGTH = 256k /* 256KB sram */ + DATA (rw) : ORIGIN = 0x20000000, LENGTH = 256k /* 256KB sram */ } ENTRY(Reset_Handler) _system_stack_size = 0x200; diff --git a/bsp/gd32/gd32450i-eval/board/linker_scripts/link.sct b/bsp/gd32/arm/gd32207i-eval/board/linker_scripts/link.sct similarity index 100% rename from bsp/gd32/gd32450i-eval/board/linker_scripts/link.sct rename to bsp/gd32/arm/gd32207i-eval/board/linker_scripts/link.sct diff --git a/bsp/gd32/arm/gd32207i-eval/figures/board.jpg b/bsp/gd32/arm/gd32207i-eval/figures/board.jpg new file mode 100644 index 0000000000000000000000000000000000000000..08225f1c6afa1167c14b3834999eb50c1e43f1ba GIT binary patch literal 81713 zcmce-cUV(R*Ebpjq=R$>1OybNcLV|vktQHgq!*D+fJhGzh@kW)AfO=RR+`k%K}sUM ziS%9*iqaDl3=rVN=X>6Ao$Gr~`{PV9SN5LFnpwX!Gi%mbv-jof z0807*E-?T>EvSbp0AOec5Cs4L)TIAd0OX`AGScT?>2epq{4mf796~CfAeHd_B_qG# z9uV+CMM}!YU((ST^4vwz3F0jUb$lTuBPlHf0D_<|9G$=}0Rqom+&p~L1P@x#f&w1S zYJwIDhSG*FG+o?1bVL1IOhX@=Ifa6ql$`}Z>I}3%s0!5kg||z9qX5*~%g0{@swVia z)>TN?e~YCA1^!hf0IVjc@wZz6OT#Aunh-x10R>4#2`3qOSpg+wNf||HWm$P~0a>?u~S(Cirh$!NI|j!E%xiKQ}2E zWo2b4X;~>*SqV}N3I7nE07s~VkH65r+W23MJaqAQ^7D8R-~sUw_}i%Cb4Xx-njneY z|AoW*g`wepw*9}AnYZ^}aQ~|9A7JA0U!44JYx|ppyl{~+aq)))`Z>9fstf%GF-d^` z*B$+>Na9B2A;c-r+r=k9@1dF?sYKG*!&ya3=7HP;ZKVef6ttCPWVAFMXh}bKpdqWJ zsjRH=@PWdE|De_L@egqHadP<&T95yt)%YK2|4N*O2KevZUHm+PT%5K2Al?H1!mHx( z-`bQ{RFYNH(w3H$(NdDVrzQPRLsMG&o}8?L;sXUm=?B_^|E6*NZy5e>X{7$e08r}h z`24r=`qxDGS0QO8kZyod|2YducmFY8{>R_{n(8h-&T1mTA|Un41%M{t3K`ko@4pi{ zCHdcUm4bqtlIkiI)!$4_Lq|hRO-oHhMaw`-OGi&iR5XlC4D^hDum3jkm;5gk=}S*d zMg6zN|GRYg6~IhQ_L2-kP9_Mr!c0caOm^7~;3utaN|Fxvs|Nm^$gYr6P+ldmL`z4i z&~S~!J~{an60?*Pq%}_#PWm4}!A!|=Q%2(|tFa@Mpf8(jWZFk+p$9b`>?UJ4VY%mi zQ8ct1oLtwrZ`~HTb5~SeK~d?RvWn(IEo~iLy+@{IPt7eXt*o7#U0mJVJv{vb0)v8~ zA)&8cN5{m*#V4d^yv@wYe)m4-Q$b--amnY>vf8@(hQ_AmFD;#2-95d1{R4yJ6O&WZ zGqZE^80^~m#^#ToTif`k4TMD5(D8BD)ey z%H+%xls9FrvS=7nIr_2+%0^PNJxKdl(?KI7XM$sY?l(ruAuNx%h5rlfU&#KS0gL+o zgzP_o{THrz06jSwY4FII0U*FR@l(Pb!2ch)I7_+2OzsD-vyxZvIRgOXTauDVoh?RG zZH-!D&~>0WNa>OXY>T$os_&{>Q2aL0xY5e!8KC-xMW#=4{v}7koqw+UE8i{ib0?cL zh>M--(kr(`tb$lzwozFs{ifRX^S>w)|9HIgMSB zBewAtUxkYr2WIliZpLl%jy;|c`Sj`R5dv#;w*Br;8M^1Y?@KM|<20Mv9(G%Ys#V6_ zntNaG5%Kq1Zoy+$@)1Sq=29MhZP#}76y0hX=)9rxBv!b^nCJ+rP;kS}M9-q8It z%x>UG_INWLBsIyMCfP*4Z_EGS&X(Vof-t-AjRaBF5H9{5){9eiUh9Nb7M{>oNu?Bl zeOn2XdpDOjK9^krd^ErBqne926VHz>0VqR`pw?UFuf~7oC%m>p{#he#A$-VE;ob0L zgIqf*5>5CTqV&{28js8jYawqJe?Ig$$GMgQSy zx&&Z9Z-ggpBot;YW-q5~C;S>adqPxs5De46MTFP~hIzR)sc!S2=hraFNze7vZ$j0a zTo>9rM`g(~xfZ!nDhiNzS|3^coOw#1%k{16VyDQ_-_QHxL!wX)1mq=v(w%S%cV;~i zFvJvxV#ae6g;!bqYh z8zdArmoI*pPg|Ip)sAJ&kr!|F3VZ0?e2|gX=B6NjexCdVS*G5wqP^xI4wJY9L^Z%} z658?E_M`Qw+ypC_%qI_y;6$X|_LV`^q0;p?TtZe+`*Yl4>2gC(B?{Z45p$OSnuCDc zv!AHj1m=q0i#(+hHjQ_^c#79rZ%BJ$9{Z&#$!(Bjg`QZ zTwTQty)=uVO0&l7Xt$r|HwxBc^a;sAi&ldv>-n!<8Z|^{Tmm|v@Kq!qkf4kg)5I}# zpgELcX7tfnOxHZKwpa}VeK%SqYB|k2wYwOHqPU#yAxq&tsRXf+PEhnpoke^g|5c(b zA-Ih238R&tOPSw5xzX*Xe^w{h!&)cv@K*1={`D6c7rtm8{&~+IJt(DW+(9%Z)v|4T zozpsVZ~BB=G3~LF8!#*5*87(A>73)+?2e%5#nX7uY9*+C`D3FJ0kigWQKh1BtLZTH zWQqqtxC`3jm;Yw7w$e?kV+jKL3SN-AkuNmB^f2gzeEF$B_r3kxM=`fEJfPwfxxJz5 zGmY~E)$V+env@m2DT!z8XHp-4OY)BGDpS2m@;gpPuPzuC&&yHb#E|ow zHkZN$g6=j)pYJ~4e6!7C(9oeNZ%O|zyIkH5QH|8cUWjzMaTK1FZW^l zy2{IAxy%x~6_F#DTOLQDh{21se9IQ*Y_XiPv7N3Wc0>UoW~Q6lrF|oMs{JUhpMib2 zK2cn@^ykw^fmhoMwieGn)hM+He|q0McE4}Z88b2=kL^?7efehAOHt|U z8-05tK3Hrw?M0Vb5hjk^@W-(wo*X6)U~Yx|49;)DNruAOYRHt=EE>Omv`6rCTmmQ_ z6554lvn~Oh#$^oAYb~7|H}v}ZPlJ&8-(@oI&N*(lO%kd^Q+&DKggg(knzQ{wc?o!h zxR4M{USUA-l{=*!w^lKo9~t*t0;rUTMlDk}Z4M|1Vulml{n-{AuAAGs1!C#j6@zr- zhik$XDN00UD(oi}BvBYeXRplX>lLBecgSA!54?i`2Axr?^US}6OFDjGFPt63z}5k| zxi~oRL#W08=LZmMvvlR^J>QP~Zc@_YS4wGe3@K|`4>L-JudXw3xwlkBs+An`6*wV( zT3Eju+pVw8na&R69oOOI6qEQGrz69J;e>)X3tKJ9p_KTYs32^zMdhzY>wYu(;WvhFeZHkwG3u>NYnt(6zJA1cAj)7y_ z=G-x*FP^_L{pIW~^-tclR_(N1L*#(ay$->aAqRp0Djw7wx0$o0z(hV0`0NrecUoNM z*HWC#2IiU+h_W1e`00TyRfh00=K5duAN*+^Df+AT7Tdi4qN?;K$DWZS0(fu-)2j+;jq+y4}}=z31Dkc}}XI79j*iUuhUNy>-bk3;I{YcUXbny`6000dD$hz<5R9cvnI0KVv$iKA>0ELsT)%y?GH~nTjD)kH zo_y;RI%~ze_Sd^S(D2i4FM+k7udOHjLRS*u1f>bR=?ktU4_41m^;9fHT_Z_gjQJA~ zJx!l4S>WJ)h^){CJO7>a&r~_%_m+?7MP01w=8X>E>&^t^1)~xny3~W4ufVZVoK>g7 zR;%J?pHaP=3e5K_&LCSfC9Q4O$El0F=Hnt%urAPna8C&9@#U4t1Wco1JE+zje5*HE z&T@gMJdU%u1D8z^>N>^7t{9| zUY{`}FC$#d6xP$az4e-*18G9Sl#bMX(u68i9g>{4VU`ocQ}s(>Jt*09nd2?-qjt3l z*aAF*L-)9MG-mM*38e?<$+2NTp z4AWUJFUc3{BO8PsaNJ90xx$4HDD0un(1g%-HrDoWSuWX%wq_Z$ zy5tIHSPmkUh;1_244dQg;VpG*AXd`8=oKMhubz$cP#2!5bOG}uCL8H}nesu`P*4MlZLNapR6Jjwd@v@%zyfZ-4N&>{VsiDDJ$#Mo+N&Lbg z%o(hBz}C?vA1|cCQ$t%PiTO&tM_M@)lDJ$b24=;dARODnJP-)16N%lk?$s-CyOlHb zw&UfEmrs*Ke{9f2#>~PysEIc}*{#@aMckT}pHmRK=?JafY8-!nOXKpR=y@-kF=)`A z>%8*|HvD13Sn4E{74u=*a5+3+3c*Bhx}Yss+mYfAQ5V9;CZi%K8?G?Wf26%@~gz&;o?wM$!1{Tg{6nrc367by9{B&b}QLjwb zc+Dz4W6)hud*i_!n62cYF4s97u8GKO+F{Q+1CbPOkg%#hf4rxlzr?-SIS&rYj(hZ( zt&a1dk&1!fo914P`R1TB5_&yCNC7m$`v#;zzmo6Xtd_@}_^j)t>NBSWsT0CC_!MyX0MvuXD<_E?fbUBrQUyDfK{ISpyQh_cl8bpHw6Xk+vw~k* zezgtQ1a_%YJCn&=UuE&^{YWC9z;8ByKMu~&mF%3_Z7fbW*t89Khf!ry*TwG@zRiB) z9pn~X^leV<5DfO78o9?Rw!!@HIcV zyz=Bd$OR1#?oY2?abLMDwBYGvy?)G>#!1GqtfsgJy>Yow#37b0?y?V`=f1A5C%dm$ z)#<*da^X2!YHd&b4!;&L%O`UF4^XFYyQpE013RKwUo-8!+8kzM`nh0mhP8`ZX^5wL zY|mVxX{gt~IR}o*-eG|amwPVcX5?v`_+J9TEw%zL0YnymOjW65Zb%4UgThqN>rns2 z;WB>E6FTua`H9T0=@udDu70w?YpM?-x#1lGD0X2N>k)HTUO5JrY>#91jWtK>!jn=X z&2|43#$Su(x26h={n{JAhae^IHk&e~G_DLoi6 z5$euvz(6>}*GoVOpJ3Cg?y+rkI{ck# z+;+!j9dYeNwUV6MjID*UB4S@&gyn&2o%wCRa8$tiN4fBF?SM6aDao=&+vU+g^WE3Qs_UBM&Q>J>GUK3&INiwp@H+iy(%!9d@pN zo=3O4_!Wv6r-((2@$v!&Y0e7$)XGOwOkeu?B`bU!c+5Lvl5sXy13%M%ChAUkdmR9c zDi-=e%RX&Xls*4X_2=iCXKTlhk?R5%aQniHWLTK&r_Q@)ocI(Y@2d|tBzq)yIZ*Pib zYsnw72n-i&>NkYQi-4kefnW?e3C$RI&fm+&gyUtx{pdwLi_yXrSMpq+a-${t5hjwO zXXf})135s5YPg3DxhrOQE*I-(tsqT2Qado8L!a>xo-Z7)5o|Cc*W4YL8p;F4APsa( z2`bUZM9V%*|8&2t)wbdrUHt*JR@cQO%Zi$}-|rzA&fhiI*{mUYMy~$k_DaU8rm_M* zegCdJPdUZ2D?7wOLqn+%Xu_y*bYQF3g$g zmz+g#syFMGL*pij*$Ul@h=L|y_`V;xx3Z!GKiGIbkrc=Ov% z0i{dt87k5sC9-bI*1l#jpvfF_7Qdc4NL}TnF8Qd!G(2$hx33i+gX!C+3Sqp#yWY6+ z9t59wo9`unT0Id1zYbmKO7r-`F)xYgouAgfF8RRTj)pABMTnuELuiwV0^25qB{`|}Kxwztb*RVIul~4=RzbV0 z%&lSF;v>|MT|)=dgjZ%W;(;2^0yZb|9@QFFmp={yGP5nyISDgTSJv^GmfFK|15mN* z4jCAs2a-jqt)~}mKl}EWac8{_bP+TJ&K`St93+a!R0iF?1Q<`re+J5_+CDf1Wq8~w ztLq=Xv3>iwk%^J;>T}gnQg}q{_};{Yf~P$VAsD+7ixR|PXMe_;B$!PrFtOWuW-PqK zYY(;DDMlJ|G1zo!a*=@QBHWq0z4Jw{P(ixl*Dd@tyNcvUf5@y zhLYYD8UUnb3TM#HXK>G+7prLeGkYxU0>=dn|7Bf@g_=XVUP_r)SS$#<&}m8ymR< zl{M#}9D{sk(F-#MnI%EhxU~ESW%}yW6zO727u30~E49Z(N_)(BA;YN>9P+jI%;Wfq z-*3hZ;h}rp^uF5EqK|4|zn{!P-nrI-ydWv|+~c6ta+JU%Q7^32BZ7IVEyN|T%$BA~ ze8W&3Qhic`keGfd$kHACOyl{zuYIL&rhT3k1bi?*{?dVPxd%2)@+b*zTmq)rpOc)= z)%*)?LWg%LwC*t>wwTZ|(lODWlk|Kp*Ki=pNb;`v!{l#x)YlGO%C}K6J#Guo409a+ zZYiGJ5V!o#s749VqG{ry4_pMyGMQIcifsPHA2dWA|4_A%rR=<8V?6< z)ik?RVs`d~dJjGqX3wm+aDR|}w9Nbd(}vA=Bk^bCA6yOB)5G z#1%oB<6Y!&`uUl+*w^Q9B?-j4Yn7^f%XgX`t`NrcjwCG1v}5S_>*fa90WUf)v z>{078?8V%>`WfDtN=WnmbVCvpi&9U=I(p03j5yX8Z=NVV{3aJG9zd;wwwvLE4eCC-)3Qskq{<}?_Bdgjwi&f^8dAx z@2lS+%xJcawP~!9aLsO&e_mO5bXdW0oUF89w~`f^ASazXH5l@h{7~`+A7|;U;o7P5 zKCQx%~XF`^|L|Z8F|!^=A*i;~sX2Dqi5NKHaRV^V#S) zDOX>^yk2RNBC>JXkHgeHTQe7DZa;j2~4oKp>AHVllN5Zc@2lGz2~ zdtSAM#q!_a&~=|Bxs6zfeE*(sy|WkdKjHNy$uJpQI_TjicTo7- zX?WHi`>Sm^JmH$gQxyRYyM3JYE{(aB?i`?-=AxZof2gL^lkQS3F2dQWNJqOV2Gl#k zr;ECEW~+W1H&xXt9~zYD7sw#FbPz0lYe19j-P<37FRDs-tB1og&zN>{ATNndAE81Q z*LraDB#=Q1TgNEA_Eeqpub$VsYi*3=hBlSOVg1$y>l-iFeQ^izC^h0EQb^AU2@UJy zM#Yl0uoXsoJ2Hhl+D`3U%dzRLk4-V#zh{Vn=s zcuw;=J+$u?QBw$d2{2m_PRPz0U6r9oF9Qth-#@T##}|CHjz~P?hRIEttXb!ru9>HY zxtKMkU$^^1SFHE^Teo~#Y}}(c+F(G%H=`(mVOuI+->>qruWYg@Tx*|4KzYID$;zsx zqa##AOp|z-cnYa~t&>%)6~ACDymHSJ&XXo$MPL zWxNCH5TT+ccYn!1sgXw=c~V$etw?UQn*sC0*$bpeRvS2 zh|G z^O@H#kG~y8)l%r%XV@m>Dp<|uB~rB zTF#c5iZx~R?JWA+f?nTlMd30xD`8`~$=0*d4NZd;kD4id&ESzEzi8m~%}cX?J`a@H zA5NZ>U`vP`APj#e6W@0J^%)4V@@SZGWA~sEJ7KK}k!8x0Wd(aHU+3kukO2`nb5~Ok zBJXefh`XMB&w1?D!9E9C1`W|(IRg{T#oBdjo#hhp%EBUjLLiz65Z5U}(Msybk?Y%KzsN7qT}^jOsmfJ>L3&x(+3Qw?HiVg2a)Cba&fj~wZvnr4vkH`wUJBdbH&viZJCKk0+G zutDu3Y3%E(>tm{j2Gz?hut+4zV~; zx6b_iyT@SZ!l=i(XSzRx54Antkbxln+c5m(qRIUSbpBAKQI zk04e%U!(wY*8JR9gv!l9}q2LdL3Gr%d`Yx?S0MvLL&4c z@WkL6Spw}{{y?}Wa(7W>{^nlE;<-^PNftQ=Rdix7L4*%2J)wh~EFXd2LQH=I;r#Qf z)At=-J9}enE?AD2Qa?AbpZG9RQnDdh(3zm!Q~p7|dApHGQegB|u0koD55bUTQSYS9 zScp%X3FKC$vO?tD!X|>1tAq#^;I|3dMubuy=vQ))YmtZReD4%aGA3Fh0*$(LB3^}D zKdXcY@mGzjTmru8Y#5tLep+*`;F~uOMNDSzQOXe#j{~QXZOvoIHU@aW5JLKH))bEq zmdwjXNcajEPjx|Sg@+i9UT{VX*RI%nL%ZW5YQ({S^~eg9RAQjbFXW;FuazwrR0o-r z@OEv^IrwVQ!`&?l>vFkfG>}{J=pqEPTBXDU#&sP#B*QucaN1Q?JTbOAGaA{rErLZ& zNBS|ee`Pp=s^3?U6Twb16k)n`FrR&#ItCP5MJ8MV=nmRMu--P^>NjW5n48sjtq%yi z=xEmZ>?TdoqKx7!8}J$b`xI?(_XXX>!0AfwNMybue)D~Wdy5ZZ)vAy?y6RJ{Rsg=J zrumm3;F@u*Ab_}#4X5_Cuff8pJnaPtocP=)vO8~}@W=RkG~8=?Svbtn0Kd2;x*ITc zzO;C&=nXJq-}#L|lDE@4xU*rzP$#0cuXm&YTA(+IMNRbPOd~6YU4$oWZTcH4SxzAA zU3$V&fPQ)ny1b9~&sE9eGI^FhBF0dFqXZs z&bM5@(!*S3>U$nz=7yj~i0^SA$BgTfY}U?8z>bqk(p|?_f(34f@d#Q%=MPLLq3eR# zh`H%C`MVW6{p%_Dv;#H2Kv`y@dyw~0ksoA+!{zXU-w$^#XnZlMt;uvo%@Z?vqvCr< z)cf_nn`$5`t`fB3U}#fHQ2h9FJf+9``-0l)E1#jV#}gQ)7@!8dN`1a)ET&b9qm_1jhnG(md34qEl&JGO^OKlNA0tx}V|Uug}J+EtLA5vGycQ`=RcA zP`g9!J%v+?GbImoIs)=c1*X_G2~_2bJn}Z*qa0orJuOtZQqV6HL(yz1XLN^O##JmS zub>DI=Ght_K;4bPOwZ`zz7& z2%S-)G|0o-PlD4HSCv`_1$PB;JJ*Rmo^Rji$?M!}hHAu}lnSCOQ*?!Ro%%aQyGB^K zc^lKiwyGNU!?-H!AdYvd%8i-{!5Ft!5x3oQ8kRreMog!?0#&6YkOA%Lz0-f5q|@s@ zM?tIneWu3-IId?JyoqJ#7i?BWuOe3(Uh}Duw#*zz!hBC}ZLP3~8TaFyCYEA6HhAxeLHa=(@rdimW!Z2gI(<*Ezi-xx(ym`=J<*EPDPQN^0Ng{e^~?w=4mS8&}X; zsH;PTqzForPr*lIw8YU8pSOf-%Bh~sng7!_c4_B16Y`x@2{Z`>uwHYWjxNdV--KMT zf~cOb!EJpbp^<($8m#-B5;x9LoWq{lDm*ctV*++P4DZyFg_3N+KSoHlm;9X8bD!Zr zdA+Gyl#Y^*Zad`UJy3 zKoNCSH*H<=+CyUmbWxV}gEQ;o`o)|BomBlLfEH@nJD-|Vr7qyfCyED7TZHBs+)mlw zUfys@-zwbHv7+^1%B!Hh*MS^oin5l>!>_E0bXH0lQLez`R4%@FN!}jwO1G0Uh`H73 z>*9Gk-3C#wDjGE$J1_0qkBr(yJ2~(Zz0o8kle{l+bVCV~kH$-aD7RIn>c@ryor2YV z9Kgy2f+G$*e!g_6*5N{OM05Kjd;UfUj@f8Vben(1%a^tXZowy41C|^Q^75>=v3j(v zvMub3Dr_V}H_2iQjWbkii#?8-lKefa+0_Dymmn%c$m{PxG}Log5fBAU^h@{4DCt>+-d?a)jt2kiLB)PiK>i}T`@2VF_OcP)KOBAZ zfJr~tewsfK&A&>7NMdm!u zXYzYUNgU^H7nX^QNQ>xefld2wDUR7L(oq+@uc`u;!s3OKjdd*}uOD4$=XpW`5wc^? zPXLueC+zV-dBq+<`PZ|1RGfOiLBmyX`;WLns4eJUZ)i|0TI?Rx(O2H-eCjP}!6Ug# zY=2g>^XEfqX6s5n`iujb+tnhn_p1V03u4p5oU2PftlCGbTuqAZD|7l-i%23Fo=+bU*Ydci%-xT(tyb}g%`mhH9N?y{^`Xpr;N;a^ zDqzANAW-`l^))~+OR@KiV)f6 zOHQf_5MCLzjS8s?PHg5H#&oU(FfZl$(zf(xeY_{$uP40UyS<|>axu$y=lr9(tau`x z2dng22xSunhAlWltx%i*gQH-=@x@z~p#MT^ASC}t^JY{XcE7#f} z$VJIB%cAK({TOIAt-&)8ZqwizTJqjj!jS{n#ndH$%?Dy(+emP9Lt5J8x@JM;TbqJY zX3pfOhN2%> zVOj*pnf?~H&nv0!k%al!gnuS7bRirz?|0=5wby(68Kw%Q7y7=et{!eUYeZGdDJ))) zo^7kOAQ?vl5qMuE(-XW%e0G;gUwoUgKUVG0ifK)%c|EEv@##zSoIQ3hDB0@zhlkg$ zGiNbN%N&4i!gS9+62q}f93CnKwqSn7gL*qLqv}-si36YCn>AtX-;C|3E%)_u2VECc zlJSYffdT^eGUd>mb>O;ixvEw<~PB+&1WM>-k z?DbdnKs6r6ji*j>>JmJv^G*Vb-@2=GucA!P%jy|8zoMIzdKj3xvKkvhCF8L}=b*<8 zwI`K(82!?xPD$$eYWkz+g@#~!?REAUIHzN$b`qaZ7$1Hn0VM?!4I5!0 zM4az^oGQduW)>wZ?VYUFH3;fVT4|G?+^6W+a=1Y__6|NCAbhNXB27~US00c4^Lkm! zgNhjXa5wGKI*txyG?e5<4j|KZh(#uLiv!J*D>d1z*{a8pN}qJfp&5Pih#1r@^`gS< zoESufhwR<@$%-oOW$bNQ<2m7^4NaEEWD6tgivw#^_lFS*0=UH(6f79t}Qv=ufEYFr-FKaG~Ub@Vr}{&1hkmt z#~F?gZuyXKQUVEJESv=@)ysE%e3z(Nns;ZY)Oyh;k667h;4ul5hAmd^{0vVeMSv#sB}RIX{PMX^O}n_Qg*~OqJ}&Tt?fr;!sODHb zpH^+eBdiHw7c|DCs8=r@w9Aa$b27s-#n;~mY)EFA(1%oO3B!T1{J9LXseLo;;ayzw zZN3hP_}i*XN#ES!x`>j~AOj2xRmDWc&E7PHelOXfrR4jmP41_bxW6&_6x~tUS1FU) zACasXO1V3d2lVw7o*$l+8Mr<9Hm^1AiM}E@a&+QCJk5OIZtj zF^@|Cy>~%&pMw*MQ^m`FONrIW;}%=xXOzmr$L6Fn)Tgx9Fmdeb@M{+mbMx>HiQf*4 zde}SrJeCt)#pCh|4EAf^Qg^Li6|KyR??2Pyu#7x>FZjMPGb6xVv4E+l2*=leZ(VJC zk2~n%X9F4s;?5&j=e8mw#_G?_DVuT0dmEVzQw`g_I(eVxMmF^z>oNYUK2PTn60p|` z1zL|hVBSl|YJKObd_%ts`Nu|)jp$#0u^+{ip=IPs18U2^D zz)ckAOoI!`+c-y$n^m; z+{zcJu4#)}={C1eY?|J!7S&DH3HY`mv~i!}pT0pr50ot@Jx+M(qBDFSRi+B$Bkgs4oIKMkmj5Tf;*3Ue5 zXx>J@U!$bG{xq1Tw(vumtxk`_g5TQOkKHqptH(~5OZpPwo zt7}gmk^B0q=>5{&PSA9$IR`N({K8o&vQ){|)wXfZ*%bXzGq4A->NDx55%q0ObNE>C z-YYNL97?ux;BOTel+031qEIcaN(t=q*W)FH1^$o}# zu`s4M^WZV4XV)VK1`m*P!d#V;l_c;@lC`;&t(^EH-6SekTA7nQ=(q1<2Ob8&Oug7{ z-Vf*7XXHJ60!TSQyX+n$;nt(z_s&PjuevSpfB zdI^=fg6rCU(jA1#ZDoWufR_L+_VI|mOF+F_94Ryv1G(xR)WSCHz}z5qLp=!95K>YfBCMN^U8K72 z{6whpLsH6z4@80!>(cwT9>4TAwFk{^#91l#hMpUNl0%JlQ!?fvCJ^*aX-!%X?9$z} zxK?jh&g%4@udd{LNBd599i6f#JDbBw6;nCMMOSQ71X-p}5iSvDzB43`?@!$t_MO80Fyrs@-`se;=N%aG`=${M@UKjK5#69V z7EkLxJ>XGLUH?fT6GHPMOP=`hW?qL%K1mb(v8&(WGWzZ??b z^-W1Y$JHAqeckqVriq3nE4mqrRh3E$`wjyGvEROA1Yn%p{7TWD*=x86r~E`EKZ&<2e)gO{UhS#DC|0KGKsAZfe!-n?;TOGN{%f z*K5|@G#q?KR%0i!n~7n792*i!{juH_<{5_gm3e{IF_wAsOV zw&cIFJ{;0XQ3m!j#@973_K&q`S+a7OFmi36BpjGlV3x7^;60s-Yi{iccY%68tg0#+ zsb2gln4su27L(~n9vNg3U{1q;xb^~>QV@;wO3QazQ8RFi;CQ8!u7}NVK4nd;=c_M| z6xZj=zjE>VfrESbYg1CxRh!~|FX*2^UP&*_4~X;Q-nx%MtFV23;_qtCbl(_^w0b?4 zc`X!~uv?n%v~j!C%-2X?BI)k>z1tI|bPc6PT7Ob(j#Kd>(J(P=vXkv(!ydopl=HZE zJwKChwuQ!(T={f1$lF0?=6F}J>NSe=h!_H^%b6B|^_Um`T7}K}ktHFxYo4TXTav%t zrKqu`DNIp|4P2&wm|`L;t*r$k9hy+!nsE+a`4`Y%Roc?FTb|}em6vv@y-P+7eHKsG zbOQ&zAtZlcVdICg$T!1mw@flUJ%c#Q>0wI{kegdcCP$oH+b z4!xZqMvSg_j@wzggXvj&KVc1P4LYATY_`)F@a3Yz{1l(51Br2B~AmFh)u6HNL# za9x-M`6+SllBQp7-wt)YQ&f;GK54CsSViiWdBCZ*>G0 z7B5bmE!VrQF>3ppTzp%>8Pg$W7kW9kv%C0XA}E^Z!PYJx3T@TPVx@mr6Jw?Z4*8>YGyi+eXdxgM^& zBktCxYq$c_`!Y@&nONxqxijUsADJYyTmpnP#7y(K3*9kge#N`|%p{#%zpPF`s^#U) zbRr{Lyt}UrU(F3Hfj%rc`e0#WxMOv__>GqQKPuUWvoH0ifHS#2BP4OD$$=nFj~1%P zg|B3KTYu6=CfNl?S;A`6tDT5RJ;xR77-8AkXO#h~n*dPjrZbP5HxZe}PtD5&L94$c)5-ys#;9a>l1fKY`VULux zV;U%5;c~FvQI}3xFnMon#9;f6`z;sIiZOs6V}uJZat1iFr9@=SKK_VD?vnf`3K2YK zvN}IuLZ1*;L3*WWC}sKJY5T;@$tN}nt^H#<6bXahyPkcuEtctJh;T#3cft&26o$eQ zdA15ho!eZ(oURD<2|Ijo_S*mY^@nnw@DXx?Y1Zh1#;FS4VT^vhLb1agQB&lOvmvxv zOcRZrF9H<*jL0Kt6J6qfGR*xVgY;x06c!`+EENb#c8}XB-?C+|KcRLaHO4ri~MWV1iEQHRT#j2#rY{Kpd;1%$QLp`#i95 zSpZixIk2qih58Elm9`JSjXQT0!1+baZ`)@A*o?ITt~1Sxa;_?km4zae=PQ4EzV|Xn z%>()vW4_(K}4M}{d#A7l1EEEad6kXOA%Ai=itrf>d!9ul!>C% z)y}^vl1*|Bdl-V6>aDW>#`*Wr%b5m5tCP=S`tIlBM)rc>C9IK1JUqF+f^x_!u_d=x4gG!1hBX7Bd}{a4 zcbb*XMRlsd6CAgTYGB{z{Z5&3tanV%5b(@2bPB{8nxDwJA}{-v^^Xf!n^BQ&3B*!4 zONZwCCVFEGdBU`CRinSEt^U5{+G(6sR{ikzSnGA_KsBFBw6pWsyR*-i+xnk7c$7j* z>W7_^otM3CSR|f)j9y@D>UZi50MljfP%d;7(gZOvl# z76v9Iq^E>qbe4R^?j!tJIbOc`kIKSf&+c_QcDTr>R2R;M_Hx*ih|qmkPJA8yPHVf@>s^tf-=@?Uj%XTlPOq^@08{{cGcd091TnX8+{eeQak~y!>m)W*aBRgsYp-GQv|u~#a*Z?y zx#4bczv$JTwer0<%Yt72bMSs_B{2a#llu+YZGanDCd4Wg$j+c^^&p2~e6|1=u8cgW1YxJ7Y~>lt=nbMHeLD3M5Qotg`k3uDIpn>HHns`{iVAr zLO907;;AzI-?u`P+@DTrp|-?ye&5|smiWc#Nb8tcrrdoPzQDOQ{nq2VZaA$V!SBzk z!ECipt2Sma4)7Lu*lfjtYss>1{*Yqba5|am9xhW(Y1$z7hoiTcy1$KzZ@@cNX|};P zy~&}XaT>ymH~yn~4Re+*ZfE*=Ty^+KDB)%q;fpW-b-gi;ef!yu?Z6EMr$xD^(EW8_ z=BiGuBD!^&5~J+6zCL55^%%GIsCK@0Uu5fd>T}J19HaLYxAFz?jvr-U0H3cDzrtIe z(gjGa+L|4i7MH9snA3rW-X-tZM~;ho5Ro3mI9&9-?a9_Zj;NH~K7-Rj^Ry4R>?!JlahhyfH z&%hx@4{F6)RP`0WFAjWwNM1^QnoYr-IkdD+nz$$CtUVk@USs=Uw-uT-&J2= z&kfSJ2Ccxl?Z2!JQyl+yp}N?Mgxv~MnKX_$qjX>O{i|x6Ss{Oi@ryZ>_nvIL8D6p6 z2>w6^>lU!r7%pjArc*4e(!DZy1XfdbTubQ3<=2VidX8M{k@0?`%;w%*_-V;c@BZ%K zVNL~RY|ayFkE_g=GY0*YS_|^xRXXmmv}EM6T~d$@X`CpyHvD)#<$7^gt8e@{_gYFP zy;J`T=+@@MXf6#|;zG&Z*6diCN3y2-Zlvayq|fNiEB*`;{yjFXZB-H78X`m(d#ubR z&iJFcN13PmZbgu2%{U}dV^Ii6yD7gUE*br$HtO_^#3)8GU*(rsiF6}rOiN&NOY`5Z z&O(5O+MfuImP7=2*uCL99|bz;w)4 z$5yVoFF<0eo*A=FD42*3yK&iFer45TQYcU}^qoqX6OmE$sX_6su_5fr-wL+`mklCZ z2AV}MomTh%wgX}ffZukvY^RU*evLTs>IRGwS(;+6a%S{6!{+&96g8kx68D7lshje^ zYkARI3F^ZsAgGdJ5`1X-TFJjv_Z!@*1K)qfsKwnZPW;~YmWwor2JQ7@7>VX9Y8QFl zk^#9%K|4E#7Sku8%?=posxe7k;aP~$D?4=>#@{Xv>3^YEalZ%-T%!Mj$=-@YC;Dar3p6Qj|!uY?VZDEM<-O0#Bi=QylJ$q=v^{gXM|j>lzuDf%2wuvE z;JYX?JirjRTtc(h}^ojz@d zugZT^CVeJ*!GS)EVY72@`izaQ=QbRcmW{Y&f5tOCPgpca zf8;+Y>3tuWhR}czp`WpvLO=Q{AGt2bCt})*f#-7|Wi0gZgntnbeB-3R_l3oONcO%T34eELGgC)RR`Y4m0L$Ptx4{M27M&_C-aAD z_B!`8oN&4c8nl#IN1leUk1cjmXcWlN)@~W0j^$|iMYa*$uc6CH@KT8{ zfGOp|pa(DvhB20Uw1g9o;e5Zm16r6?`#oiZ^|dGaH}%vToap@A{23!MaP?4|49N$c z3cI9zTime*rZiY}dV6|(QkMuX0rtzm9jlQot5N?94KPYcYs2uk=aQo+pJx3Aj-oVu z&d$W4CovLD2mev!HyokJY&L4fmm_B0hQp)C&&$KJEO3D(os*S^_TK-@0oVK^+LR2Z ztW&>wci((fUq{QoC>9OjFqw-=A^cU;H3W53RmUlgXmZ-a#{;>w>sSBMM!U&6&8&g` zx_AvWhr`+ZvsFUtMG9cMm}nRHb0TxoBS=FiXLOWsYB#x0HumrrdG9xye5CDvd`J7H zrcO;#Ts_r5gbf+hZFIFf!wvYyRkDqk42ADHNc=g^SHXyFa>!JmJxYWZL+8i`IGN59 ze1CG_zL4jFbnHbzk-fHCc;&z!>z*yw9;ukcW)@cL1j_I~suw8>;9fA!2tN0A8c5YR zev}=UXH~Vl8Yel@AJf}4`sZ^DPA@U7#)P7mNd2+ma7iCbPlTf#nsEmg-eiLU&wNl* zworDJPkiM_RATK5KF04?Ljw?X5HfS=4hpBWFK+=HqL3etFnX`0UDyEM)57yBp%T<- zXqPl?`yUZH+AH_2?}49S4(K~EqPna%$bNM-_<2U=S7JJ5p8Zz3<>#>g$gRIXhG~24ew1nGYHk>(2x0$Z3+HgAKMJE+T=u z{|^`H!Ee-xvCn6l(g-Tbs^d}UDjRC=6&%65s*@MFbM}jOMw63#EOV0Se zz$1R={|9(9Z&(QfhlLBkF4(4BE4<)GGLEoWz#B3Sv7TD!{6qN~A-D7+Vi2jFJP$@& zd#dSZ5EKFhPcEab0O%b#hFsI#E7Zhl@ZnX(Q_$eW9?Qe5-d*=qf@!w3Uu~G;l$QT2 zMJN(=1-#an=Cnq$mnC{y&&Wb|p@_A@Rcw5Nh~*AmGGkA9l@>zQ{~;v1@M%dwaS zDei7UPSr}@_l0e)&l9~KFn<@}w!Fo@k7GXh!0_o z=+#@qgoo4h;rhn~2I~&n`A-GRrx-A1#jg{it!{NaeP=`;idy*m{h5DK&K^=d9?Es% zIWJ`_MGRa^Ncjl69ROmeguB6RIWBsXuJ>;0`qT~7NMu}Pa}f<1A4C*@J=&B37g{2P zo-FzYkbSA*H=_Z=j_LyM$-j2GmKMXe9@RN|)lTn59TwPWkEpwzu*iu~x55aJ$^G?< zGWE;By1qO>te117cB*-{Q+tw$ccPrK7!6f&n?y5l84>mb59*?q>$j*M*GbVRC>p%@ zmIFmj9X!WmE10*m-os!x3e!*B)0ES$GgB`#5!=OkjG0w^i3gbkq{=$z2_e=&+7mu5Q_uZ22O~_Cmrjf zb3-S+ifQLIaEE!t3e3V~1ku#eGi_|&-^)JF_>W?9ZmwH)cFUAWLsn$A;r2FurA1<$ z`6Hw|peWRJiqJOrmb&0KVpLFBU?6&zd)e~obhXsp795ykd=(ddKfN`WhA(%|OE&WJ zs=H_kdx;yyB0FJpE1vnH__7b)u=*3R-#Dn8y}pRs{IzekK`qu!Ix%yVre7t?3S)Sn z?0Z??!fbG;=zxkt#+`-GZPnQLYW}vGUv=y)F}Z}0%0%HzF1oO0vu>lsaH zqGH&Y2XCfYtiq1e$#!K9S?b^R!evR?z>t3vFvHrDm1h*`Losp}u|^Y8f`34o2F)^= zzu~I$)ieL3>crPu257sY0zTw>tX^&B4-+POklv7=;)BwE5V1WVT((Ef@8@&6-{x}F zBE98m-*~dbf1MgygzihgM_F8y1d7@l>m#S6!jxUq0Y0}&GR`d!ee^Sz zgF5kNh;PO*ztg1@aVMdztFuqnw+wsDQ-It9u+~_ThCL5oRfO)JoD3A8;KPk!Ph(9; z813G}#D9#m?nq`3y^YOqiJ?=etzBC~Lu(d%yN-kHzDxAY>!WK1ubSZ8yAhWF_Za*f z7Jblajs4gv2&t|v@dCh--@<*t#IwvAJ6gdo>la=z?vFc9*}479sAR})xY&MgiCz$= zi~@wsW{wy$LE#25Z69*9H;25$O@GZgb=@e0?$hPw-@fa<@HDKL+2H}=uj4IA;CTJq zrXgT^7&ALLzf_gj7+>3aW%bM2M|*`(WO&2VIM1|~AsJD3M;sU|EeYkJu9B~hlMS%zQ`IunnApzKq!8X>8;ftlK7!dk4_Ag##Rct} zAz!YUD2osN)BUJ%IpWWX$VEN*3fkTPt6hcYT@3d(gFnSTuHsfu8ZO#4;fNUFxXwD| z+_&@e!-2T3UDLcG2g)=5f|S6hb92Wm=dG>JN?9^xWc8AQJ)j4{X2zjqE>r$!2uv$n z$YI9p>mr9W>$18R4}rv(dj_GKdI=5b!-k_44?0e(!j-#hzzN{BtbCyvKy6GHX466p z@xmG~-m-@#bJMe_)sAbv;z(QyNn*-o_m?LZuTiN0X)Lwudw6_ZAK<(KyKjfd(p-)9fS1(4}@c+L+fl z2kio6-t-PQ&J1zIlTVBoh<7JH#9!OYtMITIDch-;6X=d^PBxZPNO+Z&lp4Lx z=hX-E1iy1+A~TY1M~t;(Hsj;LOi*y|>|Q(fcxlr;;Fgn@C?2C*@d@j@U3ksa{|jep z!%eFGl8FD2VamM-AXUd$;}%iI;^G^3Prm9*{lH?khGaV11T>t5JTxxITkta|Z$4Mh z_m$xr9q_M-S{OU*NKKgaE{wJkCRlTk-+o;RL1rOgvSRHUwdN-pcfN-<+^bvhCYM zyM(`;ewip-jvO$Dk~=qh^x3);X@{;j_>u&}1o5*yu=ztm%xtR~z9#HSF_8f+G9&4I zlFh2FFUKrVpQtxa7q6$ELHm2pEU)Q#z4OKAX3t&^h6~4nF_T0W6ZNU{y2*x=Ie8;u z73qpQS437BbOI0!+4fTI)J>k$1(ps5m)ldPO@=P?gU(Bv8lCOa&OWwh+`+_&9>DZI~7U;8--O5QoL_v&x?-_o3EuzFkhRzK{8*20*O*PEY1-*whF zSS>iP8X5n{=GjwS=nXCzTRt$O3%+NjEwJDa45FwK5d;fjb0|(!8*ipM8-vCR*RKeX zc?Y9bdb zj@uDJLj(ig5-xS6w?zN)yq%Up>T-u*gtKJz`dO$YsX&Kn8|(zwqRKi@R46Y1MS*&3 z2nfveuq*ic4FCA!ld!B`&w)J;BGhr zSq9_Cz3Xs$QfhOiN@3VSc9g8Z2-Df>)1mHVGYA37y}VciU7H(+QExt@kuvu#by7Jk_NXvwcC z{{~Is%*3wmA`xb6naW?+;?GlO+f#~vrz1Jg@uoehU?&8zZ3DHDpm~xTGj8ZuKxC6( zf9@o1o=(hl6g+1I*caQdOOp|NVT?Ff+#VAKplflPi*pCcx`OvJ^aPj(p0Qk0i(#R= z^wn}!X)8Fqy9O}^A_}_gbAAsqzy|`K?M7Dqk8j75LWa za>aL0qv4$Q`Xblb0TxjOQ`s`}oa{F%45Yty;abti4W0ztaikZDgH2sfiZ+g9` z&c(E$|n_`9U{y$%cD!RW}yNd(B zmHBC*(j0tSZ?JHO<3B2R5CAZ}O@(1SY}NfIm+(w;o{n{jUqQk9AVx@0&kdkc5tjWS`F0uW8F-C zh}fE?&?Z2IFS1ciq&TH}>AH9cRHo7Fa#hVM#sUO5cBe^SKOkMD&c++FjXJ1@8u#pm zgL(k510%BsMPQ~7w;B5birNd#$t}yi$gdr^HQEvQnA`RWJU3@QjGrX$kwStjg>m6& zdgy5kWOrn~bz++KUDBVV5jVW&u|iLz)_s5eTvuZ7wR7uJ*$V(K(Dra;oFoR%u1L4R zn60iKdQaJixd%O6E-G1eEiP_2%(5*${FHK#%;mr5C z_ri_25RJ3PCfE_%Ph7mYR=V}Kbo9p-O);EW%fWkZ%!aV$cjXTt^GB0f(=ccFRU+7U zx>XPZ;R8%#+P!(1d4!6xl&39i&8;7HaWyIH6Y%@n8MVs zplf8=$w@4Ga=pYzaL=cmAe$dvQdhUjIHjB>Gf&-e;9ks6^f}`6ua^n53KD#CuxpTL zbq|CUF}ohB9>^YB4N>3v0hk1%I~|K3r2xk`+|4ZT~u^|lUZ zveBtgQO}f-bi*Wx=Hcl7sOXo;M);Gj8X#QqyLQeraEvNniFdHOfPI~zB;n8x&+#P* zes|dAIn_0)?~fGAZDT+h((mSsY)f3tpC0_ z-9tp>@go*0s_Gwd8QPpPA4)i?6lU@A89tVtKK&CQCdi2g7-9gvq_u{KfkA4GqY1Q9 zlqkXL#lM^s2jflU4OuiFj&R-Z%kC695FLU!A0`H`s9Yeyo;Q5dxz`K@O>l_VR{QTB zrCs23-!o0JE{VBBfH18++$QD>nq8@Bw@BowPU^BRgpUVqJy*(Qx-HDMCi zFtzvZczw8mcFXx!g#A1fZ@;*9z*=pqu-+5H`FZ!l@KGKgwOeU63tNA{HI99!=>&fK zOtW+>u66?28opK~F2yz6<>;33>^P8vmiq%I(zoHE=A#!CN!@M63*1=v9M~BYBQn;7 zx_%(ts{O+Yd0x!!aGhz}eK_E`5OgbbzvnN*Y})nb$aUWSO@zWlhWc&n@Yp=9)y$r{ zp;8KN%a~Y(=4g;&3RU46vu`CmQGY7xDp#T1anyIIf28TyF69H+_9dRZubmIKnn>1q z0Dl(-F1LS}RI38gZw%qx=B>nc!Ik#(WWWB0qdn}51Bj0TjvX~luyp= z&z&<9x-JUV0p{j4BqpCb0XVkliYEg`K;24NpoJAi(&I*Dc5Vk>pUK~+O87>zemcKu zmdiJf7>#kqy$N_3%FPVCZC8tZ?7INK4L`p?j1T9wOz8T1UT^63+Co@4H)#s47S`^R zHj*Lq?wSwz^+gWMZQ0@24)2!OE=z1Vv>OlOEQRI}Hoe9@&qFg(_ADf8x&)#>K69c| zdO{`f>(1;b7^#y{Mj1dgvPj@k`d0*6vaH7GN2{uI0paMv-N1kYAE~k+S{d<=8&-)L z2bV-z)vx}v`jOxF;q{p}F~7kx{ur}u$s0G%$|Bl;~%QQc}^~N?H1AdWUJWn_#fQWA8(1dP{JC01y z-2NPg)VD7hVROLg*H%XxHO&>1xz@Zl&&59X-Wwpxi7ct(QT#g|r*6?MqvUCRlp zFt_BxJq!GNosF*RRYPCzc8FBffz9taJ94dFPdQau{|26^UyBL1?Gdi9^A?{8nkQMe zC$0l&{Hr$yN%x7m9d8>`5JZ~39B|wLB4A&tIt*02Vq-J^SP(k1=t*t7vhjrFnd+Wt zs@?2f5y_bNix7M9oqQLKV)Ep>)>6~zae@s|j`a39$RtSIz4g>3NxLKcR$oCzKW)sw z0I*F0j@p$euoo&m82Pih06i8PB)7wL7#*g*5LopC8Yr4W8<3db%>CuNpO*YPt50va zuoPZmkr@u&Gi;kAYCatX{@z`toE2JDpLzV4Q~JtPmpg08jQ*=4s7J$ozt9=#Pwd9L z;EXx0@rrpi>O&GWCo+56q^G-C`K%X3A~Oo08_P>jw=Tbu%z~F|7fPd;2@m0`Z3EAe z1Po5IIqj{|^h9%-v8xMw=fjj6tKkUiVH_D+dy3)9PjCW7*EgY&lWRy9x3oE#&-FdIk4+FH$%O(&|QC?Ldpi`}jnza{O9EZ#H+_B37QtH~;h2cN#x#$Z1& zc=d0VnJQ=A?waxP3V6V!F_UjkXPTc(IxOFYHgBc>#NPb?YO9$9d90 z?Kaw5WX-mIRzSjifz5PdG@)rjliDtm`j?a!A+}`}yjB)Lk0S@KT$>~dWZ7KHFHmz= zHSGO~j2H4qc;e(;GobbQ;rzRM&n(^hySlrd0g@Mc@nUdW9$qYw`fCx-{RjFF{ER|2 z8|q(rc$6&8Yk}sxU60T*%;NlN19$FpTI@Ntg~E3B1oln<&lvMSk6W!tt>rZ61!WY~ zpi~B&KIVAAXZUNg(Wc!k_Q-@lS{V58#8c&3X<`7$Ij@jmi-^pUx3WC!TJt!0Qt>O9)I zUp=HQ$n|4<5=~|lWbQTkkmgC+3zu=hPue-o`>*X2ka*>83LBn1Ufrdt6oughJ)FEV ztMEWh&6MYL1%%5WjpA<2Qt^&xK}97%G{mu^VM(vE%+s-M(P7qA&|f_Z7O~}C?aH{b zUl6)SlEEgob|d!QZ@6dPbC#;F*7DOoOVNdQQ@HVsxxSbxCG0cYe(TOcC6_aXyP043 zbD@4iV_MI@PQ@LIi9Awxp3;A@y8r+q-Eb*AvjY^Te)<#$()V-$HLgXGheP@ zZnp43^SI@v7qZr+ms|qA-o5Xye^7;733gG;bW*e_X|~k$uf%~m7^8sYHL(5o#s|de z1mY#u9>BZ7blXQO*3eHxna9b7CTmxzNAKsgX5P!bx8*JuqU-YqiUTEqamJ4HWMABA z*!y#53cAk?l7aUOB@e_!`Mk*&N zGT#3Cwk~4ScU}dznW3PZgnZT`(HuD-bTr^Wr`AkWeW1$$<7_o1-T%Ab8tvu3wi;(S z>r2$tvA=mjHj=WjwXLv@7!^VSfzkYz=xW~eG^@pJw!?ToAU37u7`+ye z7BSQk92G`Sk{}Dgfz(L|?d~7q$G`1-f2xaB4Zr_1u>JltCvoCoWbp4D^Sq_rW^*es zDnpVguzQmRL`aXwqR1KPRtQ!QkiN8M6%9Obu(7j(hK|+7Yyy9Az-k14W6q82sIG4j zJMw~pZr!lgs|-+N$Li$>mcJ27-qM%{;$tT5B*U+MRhSXU?;`BMbQLUzHGu+WWU1`@B0_snszHYxoSA)HYb z{z?y5u4Y;J841_|Q_l=YqV74M-js#K&U3zI9>6CXrj5CAZOM0o4%hN@ZJ+5fyLeTG zPu@T!ERIhVR~AdT3&r#sBJuLujf9|-vU!{B&Qfb>D`e&u(c6WM9r~hIgwjW>iQ2f> z-nX!QOY|y@;!N|JF^^V-VJUdYUdy=kmWH6Y|GVG8-FA7h*FBR2HePjKN*FR~cFW%H zma(39+z`xf+dZ_=47(TX0+`njQmt;KuQVI|< z6@z2cZNUU$oFie0Slt6?zHhLs{)WXN1Q6{dWU;q=yvB)Qh4F=&|4+}-|J}Fr|9USc ze()JTKrJBCHHb++Hq2)F_Stq9ICUwi;GS_{|M@*kkCIK1@A84Ugx>(s^WxNiiGXgPIvXR{lG6o+^CYrW&!E;9iuPu-G-!d25VsBXx=G1;h1HGC#2w4Wc4K zY$wr_vHGT2MGj2UuOnd(pZdmTU&U;-Mj@B5Y(`EE2RWTb`x>H9L3^BHObI$q6c9Xo zh%&@~ZHL4Mgo|(|}$y^*@6GW{A`B6`^%#Gcw#!v@mMvrM*9GO^uJYT?N-tp1!6 z33XV}FPjp0HsJ_!jxzzT-Vx)s*5hs+DULtMFXDZG|wdVYpd>!<&YkPRH6j?zQZ5PZun25+~Et#YyB~;4~qW& zj2PA6nU=0rXD(X$%e8-+=u?E6G%<_Ovw#SF%pHz?B0+b%m73>;?>S^&6!&-mT5An< z1roUkK0muvLpi0b0s9MNA6)w1brUYyK}L^UzUCPmcNAyS3^mJ7Cd{mG5sR> zK2E8AmA>^k`a0XB(PY?zYg2#_He@!EI-6^4kXG}%jaFVwzF)sO``$6hC}PfLG!J9U z7bZJ-pa^H!brAYB73f$C4I0Agb4^vai%8IlumzgeEWFpdtlM$_Rd^+EztI2AnIs*O zQ{->QZB`9Tk}CbuBc}LhahC7ZMT3i=Zv757aQ{(#WDD2o9w$QVW44~*erIw`_n>yG z|5Oegt2J&8cE5P>f}Szjv2nH=PECG;-%61VQ^rU2aIN-uOPEduzE>(KURW$g*{2O9 zu-vT5IC~ma(1B^~CiLJyiRz+gc#J59I>i^b)L3^23!A?J>3iWBTn(Ge>J@k5BFrNn zo^gPrA9Ao_7wm`cnrHj)%hKs3f~UT2ZSXSaA5OH{u~}+X$#_UC6WlZenV)MsZq)cp z^u{j&!h$YDOfA%5wj0KSklMiWWn)x)fSLbGqTlwJ`zL`8cBiE11p1{nx{8}%8nSU2 z(I4v;dm?k&-4B}nq-i>9KPL>rlV-0QDA?s>to|CTuqvVSB(*88*pd%&>xYDdtH#)A z9c8wh??TP=<+M=E^d3YoZQe&=x40eYW~}x*o7XNRsvIN`HFoF4x@Gf4s`j(*d&Fs2a zzRzWe`32ouvy7%Jf@^1iHSi)W;WK`Ap8PTx_=ya0j_+SiUACbWV>{>8`_{y)Hkx!N z$Mx6zvF!2&eiaOYc2jPq;^i^YNIVnPwjSqYh<}28(liUHu6IA+gYK!9#`Dxj&ZMc! z*7Zd^(^0|-wC7wTwF{BeE@~A(3#OQ|zBUGKIE&UAX;|$Suf#)IH+2YotA)YqE7580 zw?VJf00ZiXEft4v`a0-;jWqTcp|mKO3*SyF{#zwJbANv{Ao9e zfta8Tw?pCc%SyK`lr6E(r#6~$q()fMTEumbl5qb`j^(CzUI&cH6xNHpuq$h;Nt3#T zOVB7&9Hf)}iq_o_&rh8Q2LnPnOPqMSYjacpH<~}JG4ZYxQt_;gL<6NjVo~+~QN6DY z`l~!v?ip9OQufj9p0%BgVJK;v%lysw`JW4WBf<7GZu7;&mCpl#Ivt`TA8>}c zq^HWA7mR3BpVulw7`F!F6!|uWs4iT(++C`5#kQ!Et~A8nQbdVak2TqNWcH5J4gx3% zNL*0>(k~FE-C)MRP+l)W(m0uw&|KUE+2^LEb;)o`73g4k{O7TGk( zikJwFP`dc2A)-&6fVP)j?Q`Vtsbn{wq)Rgl@p9hfaexf5k4kXe^8cBFMlcH}Kfu1+ zcixXUbh5)JXp||WwP*szfm*xVjt0*~e1zEid@uUfaKadq4HTvyx@#?z169;tV}J8Y zOv71DXHVy*T>96{&DI3U%}H#PDMn`h5c@#X%%cQ}i`PbvC~;fOD8$UDv~F++eyWw{ zU20^Ie|Iemiw4Ez^hFg&m8KxPY`l|tY8(t8F6F~4>~ekPMXA%A78aU6%(IPT`)F7T z5X3SQd?qTe(#s};QeL@Z!kv&XJh*_tY|IB`dhlclrNAN@&K2ZjUS^MREqFS<1*=x& z4Yl7?(GzKoz{&*z6>VwybqX))?_3&h3->>K=B~k;Zav*N(4}HVfB5tA_4|wYWz_Yr z>pdFcYCs3mDz55#=aywaS>5f*Fz4K7lL5*TF^d&ug35xMqM&*V2!~#KzlO{xAP!iArncxk2hN_()T;y-aRB`Q~1$1xg zGZi^2X;!3U<+sjWBH5CuS}(FFfDRgcP=T=7MLO{0FK`Ba+;ff;p-UYYVABz{s|erU zYh5>2KfUB;^kJ%aR`a_vv{%^lR&%(qI5D(p1dT|{kuEPLLbUPn?nup@2jb@|hEHan z!R~g%>*>nf6Wz3XSD7^Ya$X~!c!gwZrTp&SvJrS5(beLUftKO&P?iG#(Ii5u438c5 z3h}v}8F1&!kmvOPmF5i#lgf@Wx4o(ovdL_Oc)u?$a@Y(xRsX#(*Cp|py@P`;a~wriQpEV_ZQ#UMgfLa>NObmK&8GJd6m^=NL z%y;i{db z?MRGz$~GRR6lKig_DnZe;*9wqj01CwBaI$Op7(g z>wfr`_jt*X==B_xHnMU_J;+y;=5{|7|K&tFX$Bpy6%88bF5!0yrAs2bSJY;p8Fh4EcWblsqezsn7tZdZp~@3FTJ?~;#Z872T7WlkqVzg z#-ub+gp!LGiV&cj55`52pWrBEYm1Or%5__M)t%n`LxzGksl$RhTyY&iCj5_G8340z zu(#!JM+TU?@zw2Bobf)SJ3vTYne*FDDZiz>(Z(8ekPUg1r@vy&hYb;Po%q*4vez}J4221GojCkx zR^JSBm9i>!5PVG#YR8k_oW|oh`Oz)=bVuUFE1L}>B(Fdsr4y0iBbCa z>So`vvxF+B!I)Q)OuwU?ssSPMIl=vvxt;Ad<6p@}`sWfD(R~>lim*!b#WPcG$?Ol? z!mbm!_hL7Y4`^)BCA`M#WtaH%d9yq(YtGX86XjXp`B30kSw}Z9x1{tL?KckHE;oxEol=~$7mnn|#6CqTKXiI!=KWnm zC5#(MR0hTmY#~v`j1A!M4iEoX1sa62joy&-cC}!#zrG2}yX6r6HN;(CZ{dY55TL~k z`to8c3975@a6@RLmOPf!jh2<|(y9BtWPj*AhWMXVc9pi_kUGqSm|EeLIxIlU)t?At zYYPpEhVVIi=+pibqZ*jg7JkOVa4jNBmr~{T%SiRD>gg|q$;qV?Y#<4N?&qSJ7dQvsh&&T_9Eo++Og zqbb9moG6!RP88>f#WIAAVbK+m>E(!$!3(cMoRb2)Zj-P9VB`%U(w^w~O(IV)Y52ik z7#*4BqOA|?jYWpqk@!!8^-l?e7;O;G=j>US@gGUA}apdEf9gVy?k`#(j_ z=1hQtm+JrP#cB$uJU$7pUikel6v_r^u826hZ2uqC>|NMD*7DDlW*S1U=dyqCyCBAP z`UN}jLGQp9Y|t@s!-u~n64GxI*N^Ubo&5t?hIbZyj2{4p?mtq1msNe9SAXWuKI?ex zo4Yq^E{O^yf89iV8~0U=?Uwm~{Is8Dz{|Rs?Z9k@oF16PthF#H{M(# z+7cG5R+0@AUN=&1IBX_r^b$ zSo4s;f6bWb9)0r-jRB%Hjs}Q{p$S+`$U&yaw8~=J- z!#&*aoVzUjRR5D0@3j}bSoeU{#NaUqE@s%I9df-J7V=8bc3w(&f;W9=GC6@De@nK# zdp!hdlKac`I~hz=#6@-fZ}rquf-~+jxOmwh!$u4?ZfpMaXMF-QzRz~#Autuz72zkO z;c#-W7{eZaoD05O4CuxWoNMq?nGq5xI>@P&0|=YI^3u+4@I?K|%;dUTGLxh4=pO5m z{@}*>j~~Uke<{N{2i`Fb=4Sj3%p72RX&I<5{oH`dNBN?wRJ#mr zv??kNIV=jKvi|wJem~=lz99WCm1-1002pdBp#JF7?z~X6aiY41*EgtfXH7R_l;X15 zqkIaoo~O|TuWS$!g-g)ZbtTbWm6CLr>RIf$o=MiL2a&C{Ib>y zkLaQ2IiD#PPPoWdnv!-#su)Y%QI-}kU(Dzm`Q|-vr6i&a)(PbG76LzC?^fr?l}?QZ zfDJNXMDw(#s@$N6xG+OA>Er$C^XHK2Vq~0<6CXHutBLpW+D&r&6ryMfC?*VHXFIj< z`r$YTk<@E9`^25)KJ-o&dG+>w{7I82+d?gvQl^PWViThPA0jHsQQDy|1(A z;v80aEpBn=(IIhqL<7HZFUBI(9N8}+JAh4@L_R4mpM#ix;`w5Ghe58by`c(i{2}5# zkQy}NWsXC{1SUBd{#j3wDXW*gT7RrNWF<@g?$KX~fBKle&r%))rP-gu6?wROLO&M; z`TT{`t3Su&@k8n%bh|lK@vWbPH!`Aor(0TNMz~oVNBk3y9TIRRj`6FPC0idAcH>YE z)4)nRR{GQCY4<|8dy$)-RoA#&6y@iYR$1=4*_^*%=aj{)UQ}&=hZXsL;o|(V)_1AV z!hPX&T)m&24*K5hH&60n+kHp<9losMEFp0gKW!RcZ#GT3gj8*WoBSQ*NX4X@@wUFu zY~~&MdUBtPRKi-?6mNHZwv#C>n{jCc$40YkJul}(v7kIx6G3bZkhr%|TNXvBwh^+}y!7!9$#ZyTX!FrZ-jeXITk zOh9g})U0wyM|GUGpMl2NpFT<^zrKl~gw^mi7FLy9!C&c?KR=hMz41>XM|^Dog~F0+qPh-}sJ1;UyfSQ3n;X?l~K z9(g}H(QRmsdX~0iKQPJOB=)R4qZQHa_x5;j?3*os>z-=}YM1K<%)IrIloR}{dZF)0i zvVJ(&_WH7ZC5+LP-lcN>6!JC0QH|B6yC^`C)>r?uxtq%a z=?}w+gJRod@NWCD_%~nbr)EzU?fGVgIG&d@xgr}r_Cz~p44NLv+nqG};i2fsUVh~*4 z@>Q3v{Z)vY`~Sh$dqp+Ty>X)`Dj-deju4b4T{;L71?eJ1dVokT5fG#kh@$i+AiYWN zM0!tzP^2qWLhn*dL?A+v_ssu%7w76bS!=E*Gi%S@&-46Re?vPc{P|<59r-cBiT-T& z739hiZZ|LRlc=>-+psf+Bll(KO2!SA@(ugrqGj*rQv0e&MkC3vHh;#FJnW++?RTHa()k z56Y7Ie2vZ`^6l`iP=xzUpTsWrqGQJ<(YQ?Ut*zfhWjMP(1{y;OXP%p*h-lmrcIgQ? zMxM4~z41#7U)p)ZJszx_Ja|Pl2K>+vOzqPQww{lz= zmtR(27^ZM;{;}=%SwoV7Xg&4FZpHX2y+4#@5^wfO)yjW^)|*cE&er7TMZxVOKtLqL z@H2PYg?`phqB#{)7HSv)lojJS6__i<`(Rd8i1S(@3tY1W!4nj3*}!ID9`9M^A!FTa zazyF3h#PO14dm&*VrRi*S}`f8x7Q<=_~QUa;v5%#5lA}V2?Xc>_u-DS;I+^HQE+r~ zI$l20E)I&;c(*%C3>A_1AH-lHZhxfS+-`2N>6^Nu8&A{bh6Dk=Kh#)4xPh=q+SyxN zc`ks=^l_G0+qpmRP(*tq-h+xN+Zp}L5XqCN%$*gf$y!{!+~I0p2J}M`w|J$D*lU%cSc^*oV##-a0+~pQGts zSVDae<6-2bB%$Oi8-G+g7ijbg%a&WIEmT%x`yhw=HT9c2ZcF+iu^O+u(@~GN;RB9; z0efsIGEFZYvNj)sRJ-S{sDRzYAb3|6+-XCL3>A_xek;XMTOa>$NaT+WNmser_qpJO zAPhmKDXRSyQbmA%4hmQ1?n4RT!+J`k_ob;i(+iFv9ZX47!#njGjMq!lwTuTgxmdOJy9xTYM36&V`2XAXx6{#;QLy) zgsQ5u(7&?!-4pK1C*%P;B~tQVB>e#j9NmXrSP^c`IC+*aWEFM6{VCa_>A|L(#y!;3 zm4A8#SxC+w;rvjy4EBr*gSooWp9c@>dPrsYV=2~4pUKRW&eLg${b@6)!N?A<7b1=g z{RMrPiwo>UFtJ|-_G5=IR&a1RD$BDampeB_a<4pXlIETq@-ns(|`2KJF5yEuJFEp|>A~Ze8-HS!wl_l%fp)oBTsy%2WE<8+iA@q*kdE0cO z>#*w`6*_)|1;Ogg*Nkwiyy5)X$&Y zE5zwdV(+3|en%sifN_e!ZPPIJ4TIxM5j^XM>T}BHEosin8GR#0Eanr`RH6QB^HzBD zKu+d>H^8tikeNDk1Z+=<1_;4@_mQUtZgIY>v$_W3krD~@Z;}|*P}=W?Tsr3XuP65@ z8As-cdXD`^@uGLU`o~x2zbjm5xm~}_u#__@B6shGguW48ae(?1Hm+p_(45?IF4ngK zm$}8>ayF!FR|*93?x0^t9Mk&zX)w~~!MtBQIe<S;O9 z&G0scapi?fJO4+KYz1ESh-Gf;II-)5kGouYuRvlM!Z7Xi7JUyy!zW0}?806(@i{6?m~Y!s!zwwE@|17rMZ^qW+;$*dz})tt@E_dX$-N1Nx7 z*qZd8R-vIDLu=KclaouhRt11`HVhHR{tr)?>b+ghWstNtz=y5!(#2ovFSMf%ra6Fy z>5`AdzTtLj+5yvGr$`p#$JhUFm+2gOize_t3L5~9{cc`2YXBoZ&P1G!KuOmO^aT%36LB1&2FBSg{sPLO1;#bCGM9N-b<{mz#ii;{ zEQngWLuPopo-8MOtgU00fM_43lSCiCOypLO)KS|yWHJVXGb&_rvzD)&zd$ury0@BV z;NQh(J5P&$@QLV$54>aDCEvo07xseV&#esylBo&rJpZax@y-5a>#~(Hic-Is&~^0+ zG(GkiZ`i>!*zHoq)|GryVuR<6#dLjrw{%55zwxXWYiX;#B|uGC>T~-Vltt{a4c>e$ z(M9zmTow+&yCh$}vW0u$gkk{)r6+`Zeu8&jXGT}?;(kegCXKtZvme{YqX9|dC}S?c zl=SnI9Fn)h7{5tG5qn+NPduI@SVZ}}!5g!B8|*5@NghWqJK=;e2=*X`6%dn~qTSt$ zgMRwzVYRsP#?NugmRGiQ+xW=%`L{oj92wpp(unRkE3g=#A*Z9~rB(9x$1OElt5rw8 zSL?;!@ZwPw57k#;}Pk#)^|bL4wT^u9_r1mn#N3>_ag zeS6JiqVUN#U#Ir<&saU#G{dK4>}?O3IK)mUXb_zMG&F{h%~DiuA(_2kR#?t=oI<*M zQj=mr*}IB&%kawWw%ESDFTKsNR|Fa`UaY5cnU@d3$H2{imznF=hjY=TLE74=7IeX% zN1zvYKJx0+df|k`b>dl@@wiMAHa&jA=I>&gfJG`H`Yeagi(AF4PZZ<%HvR~+=MUdap}i0eVC>{j@+Bn! zYD##qfhO1%$j*1`H>u-*8Bh;zXolho@k|TF*LpYCL`-8EtFSWJLg-uF+LgAtoB0l~ zgMik~G^=h!Jk|2qSyK%r39PZY_lm7jgkA@hIh7t0~jLSJp0@V{3koEJ@R=dyt@aoZ6yqAj{!` zuX|SH1s4i#f9BMVYTh{!0RO5=NLyy%MSTquz1Ta~b>0ojIT)o1KieHs;^#+FNLMxo zg^#WuDM*IvTYlQU=}HZbj1~JUka7UYfrDO7ZK4wPzqC}Qd}z&77-e}inV^O<DiVel(#t2*LLf*Sz+q9v7C!%)eW+_?t&kl1XJbn7g1fYB5W#u`*!bB8MkeGdcb|n zKk%=4ZNfRzKe`pGU@?u@z0Q^;2{C>H?^l1sq$xgDc&%Jb*qy3bbq_{$*n-Eqn;^0F zt$A8wLYjhR=l2&UWCyj?()U5s_u6_0v>VjI^WJ_Kf5a|2y=u{#l(TZ(EW_^eFwZbt*7I7jkP*`4z>b=x&)lC8!e{}XD;qN0lOtjn2kX7il=V@UA zc*H9u3m1b;C#HHG3)QuPi0%t|W#=#MMY*F%8!rPNDh&I46*xXfLbdFJT3eGJ%^%s~ z@0PSf-V1f{mqrL-x7T929xM-T=nlQY$IXypn-S5S@B$IQQYO}?Xiwq%);~7ieV--0 zLwI*`W38pZSO}+v<0II)4TJRe(Yw~hJ;kj{#9SV2?2f#9mG#m7yfzob}z-+=tQ&F?m2iO=?iw&#kXC3_i-h$Y%+qArBx!D6g_@%q$LghEb6dzs8LXhCG*lHt zbrwU)-TK}vb$b~QX|ko`5W2wmCLHtEb#}1pO|5}KN@a{=g7OQ22VHkX6FZ_9^n7eU zhnoPaf8`c_r;72dpDoy=8&99o00R-U*{w6YCCUTYUh6@2#h=?csx7^==!Pp14)Bxf z+pB$#U?v1AFSsW_!-xsIMS%1*61)u9&ifDjXk%R3J0_SaB3X2IK3>h>TbobI*FEvo znBQpl?c|d%RV7(qp&Gqb0i=yd|0Dw|i>(`iBy!@N=P}DBfKM|u!DaDj+#f>*oubE9 zMdE!RIk|)ix{tA~I5VBy|JAHmi?y?OJY`=%NCl=xeb3L3(fwS}cwocjoxfYfbo7Gf zv5>k`{IHDH{*M|Jj#!E)7q#_EIr2|Xb6^x2kh`pie+Rqrun&NkS_blo`kxJGwN|)P zjMaq|ml>?huYX!k0-_R=3)vCwC$7Aiz(YnKgs!pTYywgma9qQ#Hz&)RY+d$B zPFPD)>hIk5{@7m~w9(XO5j%eGXO1h%(7(O_uR!`A!ph`aaqwd zU!Qg#XzOYV)zBlw_0_}tO-2suCG4suZ@M_ws~YJ)UXt|`5erXa0_jhNSrEcww77>{ z#3<95rkmCJW>N~_=|?PIW_DV2K>(|_)wR!7V~xERd1VjEdn!RW$a^2}+V|5B9X%%# zSseQ+H$COV`@}k z?p_IBzD=_6EI;1~8-vWCUjcKdxK(*lX%5WQ0?Ib%WhBfYVjQ04+@bH(ex+<_2bVbT-yNLiW5~XTIzz^B z5L%)W9RCEi<`%N@GJPG%t#KvEV$f@aKrR4L(Iuv{?Sp*$!1vpFaraxee?@ktoW-WA z7ny9ErO&H6g|lAR0}JRYfMZ%+3KO^ofc`OBJL$LSjDs6PW{B740;SKE#NYW$B`X#x zG!C)}=PIj>t{5vhsdzj2`Q#XR9%p|872VcIfd;mKRv)d#iR#$pZ|$SfMq`HKY16;_ zBa|KNWIGI%l_^ep_r*?7qMKv$GUYh4vdgZzNAhZz=pb*(NT2=}c7OOU5pDZuq8Y0z zi^bPpVfo)l#aR}jqd!x@dOnUhH9oKB4rGBk)*VfWwgC|9kx-lW05O$z0M8EqD1B0N zIOF*oGyh;9n%^!N}XB>i^e|K8N`?veq-0?BD^bIT^9Hv@_eg-uhFM#by5}7Jm zi5wi?*C8qIv8Z)p8!0=)_-wqM*N`=ZzCQ^#w8 zXO$&i-)Gj@(%+n9an@conG1ou`3-=3$X_SDAMX=X);Oh4G}eE{<^5f*cu9VlL-q!* z)t>(WWD=k?Q?U~b;bfwjzz6zv|Hi4uK=+pz^zTk;SJ*<7vui>r3Bf-Gki9GcbEsSd zm-hM*#BLfcy`B$Ne{X(E)X?7dn)%MG_jDruUvGiTu*fc55KPeS3!8;n53SRmZ2T=*s9A7tyF(9<9RpbpCSM~yz#$V=fu&A88FfT- ztz3km_*$m7P+Y;u8dK3ZUzD}dBtQG#31B^4kWdP9Hq96zN&0RU=b6O*g~o)llV^Du zNFPtZ1S?*d%>KDlLNX>LNOHZ~*u75u9KURv=Ch;SHTHzYc~$baoPtFqGS?oB-;N%l zP1L&&zZ>crxJHoYtX;)0s(rv-!7?)*qVJ>lvnsx6kw)(D6!%c}{YOCo1T;X`+Txm% zqgUDGkvu$rz6>LDOr~cuP+NQ)>*eGGU^kO@M(_TK3VQw_&!wFsoSJZoaH~mgn^m>- z-pmaXloy#jeeYdqh-enbc|DW;LBoU1TRK*~=8Lapm_NJLtvran7Wqc7Nq4m*bYkdd z&hFv)rEAbC1n0T?9wn)esZg~B;|^UGB!;mjoJHI}U+P+{5ncTHC%Ew8^%ELO?$;&L z2z&5NxIBRg*fV|*5F5#g7&SIRK3;Y#+I05RDMxYUNFoPs4wBxsEKQXb2(>l6K}}_2 z0nBo4BOK5X;bQY}HdV-_I?RrGPJ&1SKx)Idvx}4G1^10LyCc@5-3xqK{)Jjf9_tRm z#(*fW0xrUvGP|IQ=}p#dkYn5Q=Xgw}ng}lcxX6<-c1MxdM(kRlYlfMnj(AV7YKAb# zRiEkYRsxC}nxW9qqO6x5ib4gdT@u6qEX4q~dI$^=u1z-Lt%>S5sR5M?yhmAEv|r*4 z#+&;&=xn)4XG`amhU&B~A`REXynmmm_@& z`nO!rB1ElG#rPIvqg{-|&Wv~2JI{Nub#t;RtW4?L0gl`O_yoteQ-VT*NN3!w)RQnn zuxjn9xYOJRM7$yY)`eH@8@im8kB!}DtyAC7 z{LGY%YZVrBH*XB5N|AChu6#8iWOh$o6+DG8x`<+iy2zGkQyLhdw?j&qCW>JcG>J4N2Lx zT!Pfq_IhPs(}KKjY5haP@pn^xk`PQpQ~l~vf_~{uK+Mb6V=z9gCF{8{Ic|S1gT>2T zy4*{yu4v}Qei6J@2@;`G^7=Zz(Gmi(obO&3-Jch$+;3A9Ep$!VFi&wbV$9%3rFt^0 z^h?ZP*Sgbyd1B?jC8z0eWv1Jd=Igswf&BDI6xWkzDA=g-;-);+u&YMxGu%h9^fU8f z%nAi3_1hoc>fZoY$=m(gYHdh#oIc#TG|NgG&!JvXKMMHT82zRtfX;J`@o{j~r!@1c zhuHD$^7@7)yH)FPQjsKo#Ifa3TlOlSXsg0*`I`Yh0Ha6U)mX3Nx0?3qwhb;>veEaK z{*rTYc;S@F5!W|pTi3Idsx9vS}AJbvjk1T*uZ07 z9lDx#^Lc@lYlPtHp!fZ;o~00-6Pp2veSx;C@-1!L9qH&u3UyjZhQkvpxtu0ZnFiqj zPX`{20mw$S3nWb8tKQWkYQW62k@5VwHj?%4E|IBtLK)#cdh|WM+*Vm{*PZX*uMW|X z(KgB{lm_aHr`m-+B&I+mUOTA%^DD1d)E*~~PlC@7D=hzwRbISW(qqUdxh1_^ z*jxb?PXS>9#7fe&5@+@FHQaIXXo@|%(Higd!UK#zE0-PZhdC43v z8?#B<pz_j~uU;hO z^O1tw=kddWr`5nP|h zwKBJSHy|+h52x-o;|SS=Q)E;4ZQ?yrt;DHeWNSDN{wysFfAeI(I(_$pf1*aeG0a*a zyF#*1)%tydnAr2WyZj@@JGW2jXE`{)Y>1cWC_8adG?Au?9@>Yv0oM(#G9(pM2Tkhd z^p*mQIQragF%cU9Llef9H>mEIgD_G*5nmN@7%>Q1X!sN__4nG-WKJ94M8;(hyp10u z-U#}e4suNj<}?#RJRsvfU4DH)-vBLS$}$-fAvp{3NYrvadd9#|ZnsPW`*r9I4Cbf- znOCCYSqZ7=6%Z97)^}kzz@s|Mp41XLpXBC$LmE*+%I9Kcnz`|3>v25S$66%{seZ#N za6bazlV&~&_@!m}6;kI0NdiWtgG^r=!#by~`3R^#o}jBy{`hjl`24=;KypF&#A?GN z2FV^Yxj7$w4EFFQXb~0HL%GYo;GgGKNwiGH7l#dMr}S4GG1XQ@Js#g-TcV*VK%5~7 z+_-y)Sd`$5q}oFdF2iK;zufxe-zA8w0-YgClF?LYH4NW1b!X{o8SlJWYU=*IFLB*&Cyax=FD9y}=#_1U$!~Xn%#|lau(r zM9yKA>Bk$jec_F5&%bv(wox{DGoN#s{H{PAP@BuU;=q^`!im)n#QL2t9fZg-h>FBI z?(8#8jI~|D>qtBZ-A$b(O<$Axni}WBnE|4Y%kyEf!5?^X9;| z%KpM;!z5MrP2Cm)m32@ITx`wug<%U`qW&_ruC8K6oR?NXx^HXX)-o4mswrJs!u;*a zAOd0?8m~&bz8VAQrdsG<41t*CL&u>uQ@f~3vr&kBt4*-})tLO_r`1=R`1$DH<;{T( zIXChd*N%~RLrc7QdW}bpSMs_Q&tH;^*ppDzs8G#>tok{f1q)@-;go|EsC!gZ#Ne7^ zYzcP@Tc=d^ACBL(>v*U|UOuwpR1O5{hT_7(@$70mgn#8&z;#aJ^N^nm(J~t#B6b zVrAg{17ndZreea9>rr}mJC$M}$%}!^g&cJ5!X?KYJA8khPb&BF%V&HMbpfdvfGJpF z`NqB#$q3qWv66oBvmO_=Ohfm;%;Xz{G&?sr2}(V@|51{>+vl*Yy+CfExN|tvA!E&j zTH#nTb63gCAzbmnr?AdEhxz6D=&pC=Q-0fGzrtQzQmQy0wX`O~GQ0JrnEGUv?I?u;x=oA_Az zQBOOY&p{~dX4j6%(*#3`SxXGEpbh~`(p^Rient{ja13a zAY_0{S4LfVrgqt6%g~!p$&A)z!#>cWhXdjjV{Dcx!V?Alon~jppc#^RRK=W(J=icD zO(x_ka-Ko)^4l$!@{H^J>mdNxW=#i(4k`X`muNxPVA^XH4(CY{9_ZENeX9;u|Ih+T z$9jN8^Gi&d$XtvtTe+U0gkmJzo=C}Nc>k*BA*KBk8aT@c;$^h~K=`&)gfXOW3DMV! zmz;PL$@UORu=wk~7QKp7`3e(w9kZz2Y>|>Y@^*n~9HE53ng1>%)4ah6eEVi?7{emz~g12P=3mBMAs!7_#Kr{UAKb zC6{)er`+duT%Xv$tIun* z-YKd5cCRh&3QMExKW{o}-A`IEEXOam;{KhRcjI^J*3mKA7)5MkVWjntPAlHOUm*fw z_2iElh7Qf|C@ZquT)(CkhKWmC(@NijOkVZC+M?>@!nx7j z)6rrSGq&F*ynQl!?F9NHdcd^Aed@>R>({#$YK!yX*Wq_b$!JG0Z}uSe4aR;z?RsDL z^L_~Wr_|k(+v@DHTIJliLDOUDlJm|3UAzIUQ}Hd6A3#{IIZ%S4c^i~P)xLt@c*rz# zr#`0?D~|n`9*F4g8fQm1`7g22MQMrtq_6-YKX77ak8zO`DL$^7w5#+znTz5Bg`YAl zN}!zch^&8QeiCL12GA^CF(s=$lt-re{nXO6#beLGL5%`{;wZ@80Pi87IJQk;!Co zt7=>fonmpeM@TLuLZ`yH3DHk;2NZchJ=3QR<>1(sC)N8RUO8iA8<}ONY%@z@lI|u4 zAQHjE+P4K9eY^Q*fnQiyxMMN|Kui;%o@jy@u3%#yEP0{Rt@&uA<#XGjEbLqmqmdxV zk@6)$>hTS+ae$ZYWX0__ns9NGL@U%gVX3ru(y0bO^%@8CLQWp+%HdAlneT@5F3!(D z-R%veXq0#`yNPx4%H63^Mm~kpKe`-rrRU^37Q^SSMQ^6_oX$dq;g%#&kuuY<7`T8fl|0u>mV`o8T6^SMxZj)@dLt0?S zQ4oig72W%OONXy;8R@Y{RCIJkT(4DBOjU674|2GDza=qC;iTEV7sFg3mX>EByN=H7 zy|@$q<;L`9ql#^+a~L^fcG3HmLJofv3=+&G7xb|pUD1w&6S~_ zRaJ_P_J6lK{F4mArVj&|Qx+v(gEIdk-72|4?tLyRsGtRj&0Q$o z&n=Z->E&uSWvCFxx@9`g+gegy0Y)z8KtJM#`FBjEu46F2z5GEI3nb#{^B;p<{7StO zoY0?Uqb^+?ZPTZ)+u4%cw-Kc}I!megp0E2X-wtwQ#l9}}@?4CjaLkzM)(tFo$6NPF zY_>&mDMhq>!be?x6SUDWy||^@HceZ2|puFV(j3jA4Pi z`57=yv#XyWRvml2^Hmg9 zz$m5vePc02iRzkDsxRySO}O`p27JU*ez*xEEtE0fi?HXGyVd^~PMnls8uFQ118uztWXj=Q;hdcYZJJ)0>rf1*}ODh9hr zxMH9?5*J|< zkhdbZ;Z}II{NPPbSEJb$1GaI$Q5wnJ6Sl!wkS~V&CHyl0ZOLfcDb=fjXlC-**jc&n zceQrr%M*(8ykjx))s2QFYM)8PYHC30yZ7M`E)%0+LP+1NQ^W+eJxpp?zl2pbU&f1A zPXyI%M&Um{6|CSc{TNG|m*0PUqUa?3O zdcqIUl9kFBvGqyq>Oj^2q{#*PbsaM2fpx`UQyHPe#E`|~A_x~A4>)XCodyfFw56*2 zsy&v#H9n!GevA!O%J|&P0+K$+yoqY-jxw-Mk%u#e84^Rn}Jvfa&$708E<&# z=!_(Kv=b6bf>4)VA69lCqCC)Um!|hM)-y*%&Fwj3zmMpB5K!Bh2=T^3H>3_XUGa+M zQ~ux^ghldg&qs6?4-3z>5Dx4WPg-t`c^axgv;L#-3s7eWd4X`9#O{MB0a4w1Jd`LC z67;Xz);lbO3^GueXv4|b@5+d$G+#*-mnr#hbD&s7JxQ#PghT*CGxng}!GZ?_Sa}d- z??uLY?@)#`SZGC%v6sANhOMAul3&$_9l!MV#4%LsM& zUiQcAJCzhEP+s6xlB&A6!gcLK6};Ny2B@F=H=PHsYSck*PFcLo5(dt>awI|S{i1U> zCBy&3R+m#aoEwmB8Iy{EQL^DsCfC6EK+RqMHAJ-Q`h0x&ki^d>(~nZ=^q<@!O)g1n zFP}O|Q{Me*M75iztJU3fbAn}Yz8>v!#%Z8uNcCJ&*XOKI`JkzKI%ps($+;q66bK@-zY z^?eaqCNz6PDdhS8D7YlSuw{OX;v8AFZN7FJU)C~E9$)j%`o*scrvMA-C$C!ZoB}{2 zVTn27R&>JUOAn>5*O*n^OyA0TG2c<{9-H`3{w_7v{5we%c;j|NtK5yYxb7GJk7lru z+sJ5DnYMGohhy`KT3Ceixrjva8HD5b%6M3s2enZhQPrXkiqo2m;JrtXt%qAC16Hs_ z>%V>@Yk4Qc+658?W0{?AD5jmK-k-doX|C!;vBlU`WE9h-j^v@z`v*T+sCAls)XCdM zJK}wX{e`b>M4Z>AX0Y%N>X3OAyfBcmN4&B@tD@`_vH$ydM+8;OhR&ATPcf;It8Z+X z4$QnA-1$E8dj?!L-Aq@KA5HjBW>DFs0{+&CUt6T`OJ{ah^xI%Q+0ZC9j|YtN6 z1_6)MNk+o`z(Z{ypi8Wud>`NX9)H`;Kx~6OraoV86w;Ph>$TK0*8e`0_Wr@%G3+no zj00V0NBa26+p8>fW9Qu9#LmLu=x*p!2VK=v-3deae+slzahN&1n&&cUFzwKP`(fet z{3@Q~2z5wDT=Lnt3l!)hnU9wNM5XEqc;)Lei>$#wtqN?9#@RPR!YC-_)oPf3l=8V4 zFKp~FR(cPL{7z<8ldb$8z6iL`e!lvDyJ`;H7*gPfF3QbC=`_-H%j%1H;=2~ci*s)h z+YF*tRQS|+Ejo_zJ?bVsM+&$>!nA7J@Zz>(9N8PaR@-LzKLnCI2}smFPX;bJ@(6xuj@6~8uc>-XhZHxn;HZD$qP8br|cscx#1YuBb`_Z2-!u`oCp3t7; zzdW)W!q{%r0!iI6;@B<_=HgBSO8XrILy$j;J^Z`D2Fc`U`}e;$emKwiSuLCIT0(N2 zXwKYhn3SULW+y55+xXW_F3e+cc4NTKo+{eYL`X3PL=^T_t12D#&y61{7&d6$j|?P6 za7yzjlYZOXkR{sUX?xqy&1Xenn^hIitM!HDQVX@7#gIg!vdB_Trb5T|g_+ym{|-vq zLXX5YL6kwzGd+T9Aa2wQ7G`KVCx5M5AUG#6Zh-DuRDO|_lg%h5YVm{0;}>xkbPBv? zPL&mP!~W??LO*_ot9H$HKe?0)@`tm!c*2daGsf8938Adri#QO7*h_KV|!0 zP9)&P8>RLWoUtyk6>{55&$y7DRb8Wk-;O$mDRogE}K?GUd869&F5})O>cb8 zbZ`8uTLN%ExgZxBp*Jl)>#JXYAvIPXkOVfnqizt6S23O7v;2V;R0bRhbCgJ&kjQ~$ zOE}v&Rckl;oE#-nUdiHN#PXlP3BvVO1P0h|EUoS|(F_#P%yCK^tSaUI#_3C4Yk$t% zo`9O;!|iNczGGowfkMS8v@7yMz(sho6XB@h=ZbsCz-)cNyxN^EezWGpHA^X`lyj|V z@k}Zhv&A>cxt_cVh61*!#{VeVy*suY@t~gVuwk$NsG>+V9Xd^qM%a#ZD%O{W9iMX`PLh3kKk)rl2j7T0F=t~|D%3!2MG^^w6?egSKAFKWYWLyW3%LV9Qa&gH+=dFPf5A-K!_Id z@^$#Q?5F?&SBK&&tFe2w$VM+5xy(oTn|A_(MA$v-*An4WcrICnLLcUbR&LvNh%Yfg zlg2xIsu!U-6L-KlLzdrDrjKxQT{WQYe@}#3sjCHJ(;rr)D}iIi*=3)gv>+dmk~e1C zZG@L8_s%m=U1?`%QnpuFcPEsBsGg*s8(;Fr(ydm5lVO7KjtPW3k8ULOv;y=H7I1QR z$N2+B`x39~cHfcH99{*@)lR`J$U{K_?SZ8x-Yog_kD3;&vN+Z`SYlN6PE?0&$$kh9 zb^s*^sC6;E1rp!RbGnA)tKF;$w!KRtMA(Fqf(!1g!ao~!QmH1G<%^v)ld`vGCF`7V zhDmq;`iX2lV)u|ky}p+4a{araGO-;gif1WcC1hV3{=%XoU->5r_ZdU2ti{=HK_E*I zuVBTLI~t?j4;pr_$)x1r?a+)kFGXqOAzs>V6V(GxmQ|c|TXQ2hG75?aH$E)H$_@sg zz@(CHPo%YqcG&^>UdGwT9)FJJLX&T2!(GVRcAm#;FMVug>x-@*b;k=%>8v_iX2rl; zv!7Ehu7E3yl#nIi_xGlQn$Di!RuhI1K4C#^R z)@vPFz#v8|Qd-4Zb}2&?AyjREd2N=6ylw4i10j;xKEBg?Z4N6t*eUO&jyPQ*Gj02! z(TIl$ys(49sEf>_;dL|zQDyp-`6G*ssPr1x*&ZlP%F~OFOC)JTch241;81h)j@q9$ zk>)g!$Vu-HXBW_9qVdIUI!+s8re`3)sx z9oR)`A=i|Urr7tJ0kCDNSCuW^&uKaCsR75<3U%q$&54C6T%Y
    IE4Go^T`xNIa)6yS99xp5G{d+02>mI*XT#_M{hzSXg$>UzcW;<>qGt>ohC{n z`J))Fy?uIgjrq>z>t`RIvlvGvQUPD1pK*YZ$A!d1f~FpleppZfa;cMhrcY?u(3e`E z-GGmmd1Pt~U@K>fQ05&;i$vkPRgX)z}be zt^?cQ#6uJ!!$QLlRA;%`4E4#ckOKBw6ibT~$RuOGSg(R9$gnKqgnqtlTOi0b*OY*pSPA?3V)#b5YHAwBl8@$=+ z)ZPh>=d>M7-#lsC2y3452v9iLPG~b4;>!nu4ahE>GG4nLs3(7iAHlkS8ZuqK+U<fY1O#@4jy`3YB{rlIgLqxtfQ9bcI@V?e)q0Vy6+TKQQAx3y7qI#CX`MAJV+cVG z_NUR_Dd)+DB>>qcB(vX#XoKH9Q_a-hD3M6tuQ&@Uz4hcwm(QxAoo!@&!&NJBV)E06 zO{HpJej9x>3HWVw4(ZI>1C@T9B(nLD#`78ft`FbA{?}*J@#Xb+yl@lM zdLCNms6OwnYkwJr><#)GDpK5-bh*A|ak3XEyLYCU!Ja#&FnFvIth*|jO(U3;nHDSc5c5*a=jZ@YHEU~ zZ`1HiI8lY_MoFZ;egh4~=FOPLo6MVhX*~InUk>0Usl9HO6 za}=X={N5^bvb;2(r4oJ2|0~3zg!r1E0+bDR_ANT4;+ot2$Ay4|^o(uK9hWQADOL|g zH0VNkLw9P3yx(6D<#Fz{ewY3&O>He*N%udcG8sL*zgxh{63&Y2_+--{au)cH_n2A# zr^@ljyg_28vXIl$ zhG}-j!i|H%5b_6At^{C$PrNeQ;9LRDhCmD(C7K2PgJyJq9V?Bn} z8dD2*z=zF9>u9Lz&E;6#98)_9DcI?Lm5BX)`TsRfTZytmb}B#C@Iq;8ty6;2aHAZ} zeEf`DXqfKNH%LIMbAg+ag5!i|g`*Jev%)&0foM02q9qTtlG$*pF)fSqFk3ut6KwOk z&QWCk7DGnEV2ZQqz*7C84qqY}!)47u+gJghHnk4@N^=9Jck3>^a0EB1lan`$DEeQZW@agdi5ZgF)oxK^{G*8II` zrnydc3AVv#;}kEr^U<-m#T^os9^&)5#0HccPd@dUbb&^I_q@53rdc>}u>y4v~c zI@y-*qWF?)Kf(0MwAn{e_XL7{5+%(hkX3&t2a~T7soJMim0hbr42y(v@J+Wrm}+ad z)wD!W>XmC+*q<1M^)HKTD!mT>CZ6=x>&>qZ9sZ`T?}7o61ZvW3cgVoNN@Qpm5i)i3 zEXOh4yJ>NpQb&tG>`F+<80%+KvI!(hkt)w@_5gv#Ly`#7FH-?KpD0 zV~sw2U3mjTH}=_^{nSY=)gNr;fl}=v$~VJ3@VSrVYqOf;3hcLATeqoD42B>L>st#g zsl&ni+H!>lTu;NwxB~@4qm~T$Q&n;rR<7`n@UEKlbq#h& z%r6)7y%r~Aqc*7gZ1a5%z)BKSJYwDW{lN|}rYzqJzt)M*$PFyow+Lv(?aNw+b>hQE zm}Pz>7Ja;`o&9N0i$=M&kRUGA&!fK~RE1--ob46~Uhe{qPD;VieP&yIA0f2t({k;x zg*0hdnfzUM@+~Fg$mah;*n34a)xFW)C`|>VNw3nCCLL)}5D*a&kY1uv145(+2t=iK z0qFutl@gHNdlQk~I|&^r31En(yl4NvbA85lk(-P?_Q+U!Wv{iKXU^YDC?|jKP_PN! z4{dxSt&(}CZ;d#SbRxpN1Vg2yuFH$Cc&=irS1G*nrt7w@mAM1KpTByix)r5~C{cLY2wGZ3qze@%d*8Q6)_8ea)L>g6y9?SGK3~*%uRFTYSVniO zLG~k$WidA?`5qyOKV7DsKOL$=CIPRhJR>kyPV{xIuiD zj>1&UH=mF3tlHUT?-@8+S*W}Z-;){0P*pc(JD;3h8JQJKPz>>sxy`J8Do343!M@r2 z^NZ7;A&)~@yzs)HdQBt%_b6MD(g1yfg+J?9ka{&+To-VDEDRK$@`b4%__(;uO{9P3 zqsMKF0HVSKBxkRZe(2@AS2$>Qi}$%duO0RFn!k%dq5p^QU?g zg)8$w!h*+voH$fV{j5;iTbDDabP211=cjKB4J_JC-btUmt#d*XQXdEEXBVy}Ak$sB z`1EUjY7Re)`vZCpu+XafhoWppa(?KDJTLj_TrC)L+V`Y&pfzhQrv4&?{Nawfhafs{dx14)MD7l8&2H|Fy z)j-^W<<#9_(HtRN{$9e|aM?q=`Dr{bi--mQE^^M#-e<_3$86@9Wm|`StO>n@F*VwM zJC#1fgO|VcA*kZtdR3Ru_f+&;u9G;6?c13LW3wuD?`M>f%A`sX@w zFH{R|9$?oEL_}|=?WC$CMjebbGIZm)(jQ5w;UeQh+xVy5#!sYei^|>42n-vL7 z%cbcNXkwelPnNA~tXS3iRb1QuRQ+9u<3f4W{W*W-bTP}86su$@IS9qX+mMhyNNg6D zSoJg7d+ipp2w?XOzaRZz9!b8fgB98`@A|Bj;#)H2$%p(TM6Pu{K1UqOEN=(?JGVV8#?pT(f)J=7;_(EtAGt_^6NG zp!M0tJ*K(8>)zLY8ZVW@i@VJ(h}DJVMh0i3u`oS>qd%D6IDPD3=1>jZYF+hzv7I*$ z!hp17@f-91B1z>z+D6|8zMkm)nALkBGam54;164-}P835dz>ZF`032kF6SdTcR+A9E}FzjT=syz{0&XhpW%;Z_ti^-$>sHLd+0?xI?(1g;PFk1nO2)nn_r zZZ8i874$;CadZ*7+JYd;~ZJozN?@TIlNq=vco%cR`NLmTOW3|IDq79zdcY@ z_KB2A7C3Ma1lYEGYbp_Nb#K|2E;;K1?(uHrtb#X9O|i&`d$FIquKbj*9S_)KeJANl zrc1|6^pkJlnF)&cxP^z)M{pCQTW0N{O~Ui=zz}9z$m_&ikosN4YD@7Cz6&&6l(gov zXz|ROlx# zDc#aL3bg)g>KoJXjTYW3$+_LGK!F!fqOoBE^)NEYyx((UPIE%Fmq(8iKE}X@T(p1M zGMt?xWZonJ*FQr;R;AfY0|-N7N!y6vZToso#+_=+Rj)e< z-VR#!eToM|&GVk7D_TQKW$aH(Ka?)F5*i7#cpd}1FQ!dexZgXppg+ULKO)#qc<0wE zr`2sl(8Rd0sjC+TU!#EhgphAU5%HDT8K=3ady`3muO*a{^SAYXAJW__R}s)fv9GBPav5Y+U;nN+JK zOhedMsdpv+Roa;XGB?2`p{0E5pFHSU$PX4X24cQCOjn!CA*&}+D z$k&6UD$a>ISlg$JmxI-x%An0}F8?jWryh~4C$bTpW)9scs4z{eLo^_INqYNx{q`)6 z8D@0xpsf(X?dM?kFLKo)qqgKr_NVW(&|iAmAD?WVgSGM91D6GjRNYkmvP&BdQysMB zZn!Yvw$|y)fiy_dKbk@p+t#eL4QkVKTSF+#QQZ?ETDq2npEeu=$*h{C&87Rnf$wk2 z#d8idS3zoxLR_UnxTrYf_11ONA9qN~oJu8Sv(;ktdjqwukh1)wW&Y`PV5zj^=LY}u zEAPyxrO48#XO?8>c58wv3H zw2}1r!ZUwLIO3Qmu>Z2n1={A`ra2C&}RJ_ad;1uMR1{bqf+v?!(C`3g0ll~Tv!5@9d$^B zE^rg%c&>Qllt_^2AJK&GDI$3}oI5<$OyzGZIm(D^SkaARv3cb#L2P3|OyP`YBcHKL zr-)k2tTS`TaWpR5-`a+=Zpdg`mB&YqIuz8D+?8Gfc;Un|d6vLNAq56-D3GIPflop( zI6y!w=?yEVRDci4N_-&R_P#Kkv#^~;hMwEcpwwX*PVMU~?|Ud1=|}*#(g_gT5QU@r zx@7R#)drQYEwp8ftaRg=W|3`j?HDgwwjs1yXliU1Fp_gKF`8H)JfKmCYj6r5Mmj~?ZGQp!< zX4+74gkE1M(1vT`Ig0TrWV%Nh9Hsl>&!;c)y!7LrwKu-&{|~J_D5^wZzL!R~OCu-h%f31Du;svh-e9){k z$5U=f(~;?FAefD(nDJyZlzQ=S=y8W8bJD*Jix|kM#+3X$NtP4AAIQsW<6vyf68Hfi z$Z+XiF0je$U)E}bqE4>|twYnGxX`PCvun~jy06;q&(+0zsTN}Owl_b2;^{jCMcKp0 z--ww>5N1BCk@YMxF~{)}oA%P|l?%CLU78B2mvAtocf#x}nFGcSF zSn#i*tCAyN8R9_+M0QhmQLG<)3@sSom&aVR0fN_8skSjPfonp&LMz$U1Mxhbu-VdQ zRuXJCqfslszU_l8K7L>f)v2|6&~^J@$`&8x6kA%4xa%#N^W*DhT|tRo^x-LgDnJba zN5@}@f*9H!^@*E@FWmu&PlIm-xZyHh^fL!Tfb^`kMzI^&?(^=0>!>WB5Q*0iUEjHH zmti47lBh!i2|YUJzXcxTAOB{;eu6PpB;(D!ex%Qq0p2#WWJ0;p*ebp1aAchIce_Fp{Z&&YbdKV(M_B2*Q-THcV zu44v88GS3dBM^w~D}eK1%TN=?(&g?pp*u4`3IxMYZIRvb%HLRsH{Ys@qG!vsfFVjb zVTt;yUnq(OtG;`e|0z-VHS7Pot2{ICM8yMr}&3Iqn$u(l52Myb;pc*E{ z#K(=8`Sfr4Z?V$FM%PjgL}Nx8=bv3okN07|Y@3fh9&s&XT)f=W2v+*m*b?89d5ZA) zUd&;spjF5zb*6pa`G6^n>wyZ3ubpf^G(wA`jr2jo6D#AXn>morh7CwBT(VhN6JI>? zl#veCs22ojp#uhm7*^`&9OF*9y}(!8w5UlR$&?eN``-`RGGn!P-8tGKF9PoA$aD(3 z-+8xUPdt^7d*Slj{_TL%f?w_1Pc>YvArsHm4@Qn!osQbWTo(%%I~=_?H}J9?(H$UE z7BF`69FEQxrfbs zPTNThwCFd7dZPrgg!#$8ghbJwEZ1!FhJ{DBUVch$EA|60ui_CvGylUpz<9#K5YMJB zUUW^HhRSOyONNAMqx|NrsVb^l&bQ^+o#;NmhS`8?>lyo?jDTzqbWAm64_;c@*W#IL zL<+5sU&jq927bG3@p$*?mzcK5Pim;#`y;=0Fkkg#D$^25uKflI?w+lK*-v~^OXsGc zXG&zgu(2*?EbY;qZ}3OC&(p~4RAH*gj~c8_TvA19?NyF_4Ahu(q8!iazH7<{F9c#a zHcQhm&A1@E0(y;aJKPR?oKf=4!IW?DXw9%2M9#6blNNbDT3~ zA_nvd!9=tQA&eR`L&*2YLo>q7UCb+y7&B2P z*>oOY!J=tmMJ~DRafQw7_jK8jgot=KzUl{3hlZZ_dsS)bhb$sWM%BiuA&|3`$*n|A z#lNpktv$}QqDfyg1UI;V<^8J`BSyKZlHNhGZj!~&F+@Zj(&zS&M{L9yA@#E2L(vz` z8tFRHXAN;=*c^zRDC_;r!OejS)0xp8RPqq&QyJtZ_1+dX*YS}rke)xmd!ob>h{|!A z*&;P*P-4zT&01T#uzGnwqvz7cJ@M|!gg0R%!ctu|iEmI?gvDIX$JZ+CI;lYMl#@J# z;Dob6k%xw;$k5~zpm*h2MQmr_VBXWO~jD7J;DS?SsIdC z?a081$;L6$%g6Q8Co;Q+(IIXFsXxD+2%Xghv{Ud1bMgV9M!)(vqeo0@WIJ8`L#6Aq z)cGv`&{|71}~DcG$|%l;aM10WlD3~Gl@M~P#fa+|r~7C4xC>P5_?3LqQT zU&9L%TC^X5#q8^m1Suf6y|#;+Xo#^W|3Xyn#+D7V$G~-51505wPuNZVqj21N=9l$L z#Ka>Pxg~iv^6nb%74-ToJOg@z0Z-^@3H$V~q- zr?s`1ORmB#F6JW1bcQkbv!Lj*C#D68&J6yL%d<1BVL_x=x^hXVR9jIpDXAMGu$QgsieQy|5%_gk7B%cnnI`bJ5c&Vhxg|hQeBt?dG;ev z1z^4)0DUS_H%fCiUrM^s1%s^GaG8$$bQei~82E_(THSS#QRk#-$#uZ1y%dQ4kAf() z!J%<~^OVhv+Y8B%R}5nA&_SRzP0yelho*ne?CfmqY?)F}4|RkX6$pdRJaz?^hj9>W zf`c@^b4ywUefe&8O6=ny$2xBlHZ7On;p;9EH*RZoxh%1L7U%r#PSRURyZloArdM}l zj4};8n#-F!^%{Ap%R-?=O*#2_1SP!e0JkiW_4lSlNtsl9p$=Bubk3iZdPdDq7-A&d zF`jkz?PMfH0?nH(B>^I@CHBVn7O=fOx@2ezV#d2`>KLR75tKEQgRS4NJLuUj5aZ4Y zmdeOk`JAcu7QccNU9ONrVaen#f<4s9`2Jof3`9F#Q z5dKc*Uc?dHyAW^3c%yM;$r|r79s+IrTiZ82(WVcQcprS_GT6r>oU!+BK4VN-?oY|3 zCcw!TrIyL++>(&b|F(+STr6y=Fw-fW= zgIp%UGSgWaImUD_8kEwQ%{lN>d-784#(;vNBOWbQ-x!(IoKErlsf5DN&Eqdujg`=s z;42-nTcD){tC?3=XIw5?Q^kt=lSQ+#wxQ7zE+q5Y>1eP>6fMuEwEa$6U=~naE);*|QGvR0G!YGfr&$+MIJ^`fH&_rkfGb z?!z{md@#;3=|SKqx0n|jnkwk&lcX<{W1&dG?XXodq6$VU z`U^geOc>x!O8aJKx4&@N6wv00jC(pFv_uDEbNVzW@&>-NEftus`BtfKVZ1<7NtZBw z*_f=N-0$?=JGUY)J=M0LvH)Ym7*P`F-_j=^^(+ru18veXt z{uilDJ5;=TEvMkSfV%gtmV`ar09elM$k08T4-;%%QPA4^+@^oqafBixK!fG}R@}c5 zx$m9_NvbswzZ^|fvnwiX3!GDC%cO4cN&m0?7xO2Y{eI~PxgvZ%7BoBgv`K>p{UjWH zhX>!aCbYLANfv9ViGqP{o|=I6O1~H{jJY3&iMMd0kAIVj1k*NlpITnWWG{oL+^_BJ z5qlzw-b3m^V)R<*4cYod#F}n=6$p!CMbI z1TIFpFKmIgDAl)uxw1$HTX47*{R;o_vVYpuXZpmT&rW_dyJh4XqZLN~+wINb*_#b{ zeT}iSL-HLVx73rx4g25G-U!AfU8^~;?ZX6h(*h~BwYucdI?WJLV&z|;b^f8nh7?V{ z-c11Y4kQDm&E&Xk`NxQ$=x75~FfQo8K}(3HpPYerTD81w@RiU@|rC>ln#wWy`R zL5(3)SfvWvA#^V4ni^)snia;U zmit{<`x4T$Gxo_oMa;YjflfZxCo=K5Luwh#>IgTm!>Vdv%Zm()72f1#Un&hrzRE>@ zIq(;!R!?X0REWrg!Yx^QE&{nI5CV8#A})p>y#yX^0zwKGiSe*~&4`@Vo`$T?&3 zvg-JecKvpSMHeQG-g-DuV$w$43(LP^8^pnLF!2(PVFa{DrcLNr`e~eNGnO~)ke{=e{^Oy`$rVXGrip>8t2AzN_E}%)94ZMwy+-&1 zw3!Lwgv)M?(Y?SVCzF|f^WU4%P=8C7s(V$9x8Lbbs9gT*^>I}#A?)w1x_1ws!>XVH zaQSJX5oW>xbJB>0((D8O%*i(zpg;(^eXcIbHlDgMmYD19%r>nbL@%+kwCbnvISuW~ zmBC*vYF>oV%1btr?tgMiGu^VrcjQmaO3tMo{uC83jc}7?16vJy1d@mI_Wz~dh2FiF_igav+Q%M;YkYE#mclNpRWTRK#J zb_C^~5_V2Gd2OHgI#YbqFJS#kYUA|b2ECsxVmZ(V%g~*q#W)6G%R9-IAWvufev!30 zC}>+5-~kfU{GOv)7-%$jn||p{&Jt$gXswLMorWIjtgt64bYs#lES8Z2YWDqyDs6u3 z=WKKV8e3)M%X`iqADxgls8lOx)qW3@P} z@T0~pv$aAF-RYiEsSibJG@>S-)OgmWYo~nvE}SaKgVv8G%A#eXHW-gU4Po>LYSI0+ zxrQO_B_Utg>*=pm;EwB7yshn@CKw2&je9&%J(87=sA&(@+Bd&rB!W&^|J~iR`_-3V zci=L-H5>~<(auSgLjFMf*YtiHrye}2^xzxYj*)$BkfHA1>LgtU;d{ZxRb7A!AayCi zwC=$j8nMm8j4?LQcj(F8@Sb}BOwiB~TJdCCq|~Ch2_kkcO8UmHZ*`SB=Pe6tDA}tp zLu-7~20N%Zj1R!Ia}>okY%pzD?O*0ZaPuyVzMZrS0tDSRCM7F|#;**-x9^%Hb}uaq z|Bvm&2Y17_SHLo@@#^KUK(uu7l3$Bg!)Rq?BGq-~@x|o@cC_xM8m-*>2-T~d!K%SZ zZX=ljc&{!#{2KaLe^5c68`ie2&f_uCkPho@ zdDN6K_3B+;Pq6`g>!+`Q^sp)fgDxg`7{@ZN#pwW)NhoTxZrgd#zNo{(n^m;jMY?Qd za|1;Se^q+b{xvE5YC)-LI#dIHI@!g6Z{LjWqvKN<5TND$-D|RBi!X$n%1W`CvtzS% zlYc3borVtH7kDtPeFv%jjjd3H-Fc!=W`+*v{+c|`TLf#lAZqE?xPzJy(Ov*fKcBWf z8Q?l56Ys_%rOXDj?wU~#4wekK9|)v}D1FSZ=EJK2t?N|9?HSA|83~hMxEO?uUywn^>0}7jtYv4zQ*^8I$5k$lZAkS#sisd zWD2ZvIFV-#PUlItVh;=8^Oka15WVBwI96*cW_-s+{@J#kAn#kb{f+t!AO^A*#2O}b zxWS}FLsZ5xMuy$C9rfSryerFbV5*C1vZjadhI#fi*0oX(e5AR1bIzv|=AD$t=u`N~ zE4}OKctpiQ+P6=h2+)}-f--C}2O0y~%_zQPHY^^EIGOD7 znAdrdUBuQ#|LQSOI^I9jx=l2mw#5N3vKnimP1=9}i;NO06wSzJ?-uO8Q=RT6lkLn@ zv#7rmA+sNWnc_>cLLRtfU%y!lQdVmg4jG>dIlw?V-xe<1c~A2RTS{$>Gg z=?iego=$7Vgsr`RQ5*rB@xoEFel0XjL9a^m^+4vwzH8z^<23^U;p^A&xda!Y2tH-A zCK7ZLQ1(PEC#Bz77o4t!dlc!l{mp{XNbqmEy5IBMmdJklSP=aM?@zb~W9%zvwj5w^ zbihlZLPIu7JDtAc!Fu6CZI2dmo_?$KN`FOgbDLXKc)QU?Zw}+EDgx7up5FJIUL)z= z<%|XSOOMk63FqSPi5@^usS9}-Kll}jEF{Vl*M?GN#^Mdj^9DyolqD(!r(s<|aJso5U% zM3nFlDt-P#tlc=Gpgu4Xew%O~{;CWA6?6VDcaXc-%oZ>1z^^&u9It1ata60mnm5~i z5^+1^Lqa|CgefB}S|Ad^;9r0jR{`o^j)i!d1zdR4pS0&#>Y4;8hNPlb!XqN79W{Pe zl7F71If|J?Q?PjK@9Qv{mYvvbbhOE=xASWnSoZf0RVE%?b|ZA^Nu3(Ho82)R^%}MCR9oypbvTKw?{CaeEID(d*sGe*A}~6HeoqDOFuc%i%A! zA?e)>79RffUG*|sAAru+JvjiKYXr!yxDMK=MEe`D|2yP+vy@!BZz_{kwy6K|d%Zqg z5c4u>Ru7gK`!JvOYDfH_+U&X#HlqaTVJh|&>27Iiw`SjPoyS-*tu^l3jW2*vm7?ei zg*W&ic^ZK++F*r?k;>t+0Or@S$>AaUWfGI@w5~z9tAp%fcR^zrZ%F7c=mb*NQFEL7r*T>5Y~WO? zU@A4u!*q$&{2)_(tws)9E}gO3gW8er3SY?V!@?LOBNeQ@1X)E-eT!LH zsj4?GF{ijsPAggAiglrNi>2pcG;HM30#=tSJ29T+*#Ic?a1X?|qlC4J=5{BRTI8YB zcV_qajdr?Irv_OKc>c!N=#H=Ve0=u!cMeGtm@r&neFc={yF|V@qBYiKT^(sLVMX9i zbPXx*tkA23@+SIyAJWOB`t)~1`*~ig(iu2bgSi6sVSGJQ4Z&pK>g~<2+`!Liy|Mj# z<*gE5e={vjR~&HLr(uiy5~Q3Cm94zH=P21YjzR93o_s#3SIuCiQTkNsh@!_c+SBDb zKAX&mW3yzsAv=Gz^ll*a<{JEL!}Yr2l1?T$OXN!JER-lKH7ODchrBtV1uL32ONt@~QX^JybotUrT;Wa;am zWn3-OTH8CVMw}Yo560#aIEp~^dz}kQQ-F5HR3mB1N)`u;SES;i?l>-$0SQVmX|?@# ze&X))RUTZK`Hun#&f4XS1hcA5EkE1aa8`BCf-AbcSOdZ)>|BdMZl$B-Z!?GTflkjE z?D=W2a_~-vgIw|lae>Qe%iEZ`TbcctiOq1M(9pEcp6V+~3q&gej^}MsVc=su%A{}* z>D6CL0nC@Jew81HaI?-uP1>xDy&OFK0%`LPrmmAmVEjLd;}K5qiaPq;@8*GKK>@;H zM-^`zu>T*^=w9(fxBW*EIH=kClzhb5L>Vi}$?qfD7cub{M3(+g)rg^-GHZCj67W{ zH=X!Z*|ssHwMUuf3dzc;NkX63M^x|vY++L>-pR|+gI9ccBp=AN+<7atrE#7r54@W` zTe6npOIIfT?#7B-fA@`M>Uh3u7tSZUf~XcOVhFXqydt^`?T?B^lh_tV)AEP_^T#Pp*bs*K)6W1xerMnQ*@k%Tai6_`}wXmx_OYvp6%&Xph95y3;;do7O0J1GS zEcHH+qgRlmS+ZYHziKF=0F&H|8w})0&oT5gS>~XP@!k$kn@s^EuhO!pg`OH_54nTp zoWQpuexI@gJayNoPR-UR8IY|Px&6F$WetDd~~zsL$GmT zBS55x@{8x=Kr2^eew;x0q!|cA=d0R^p11@Mw1Fl2ZshAjlNYIKm-S)&mm3sh4n70) zoYtWCW=6>GC8@0_T<9}v>G@OR<`4Jd#~6y#S#Qf##i<(gvmNKi9zigYz)6WkRvIo| z4cBrbS}Rqht|z+S#x4$u^B%{|j=4Lmm8d3cW;lzmZ|?z@dQQ9tF_C%U4`Y=kt~kJG z_)HzY8W+0d3z8S&pLfori{^WKr9D3EQ{auXzj|A}$?2GeRumQ&mu}cUXL~MF>aAP4 zujQfnMq#Ur$dWv`&N5p%pKIJQ$J5^>*quAX9l1I`{OpBCE4lBZ#+&o;g_P0pl;tv$p-qY=}zO z)1yCI*E@1$nPDK?nU$kE{;#L|dR>#V(5=yzK6<|=hqmwa@^a(uV4Sb(p1)@M=kfRR z^n|;vy%}^n)QF($j$jNEAd2C~HZ?s4Ir2GXh;O8cO2t~Wg{%9g=$Ksd<|LQYHIuF8 zd`iY&Poo}>o1J`U`~{ooDY!zU-hwWx_n+yrtit?ObuecPmUe9%Q7_^z%^s!P)%9EV zUN`ms>*)MLtOXhoh+wPMx@`kH-0B04Fmv7Sk8I|gJL>ZfHKp^Z@4d@>Q1ucm*B~=5 z`BB~nVcJCr(+B(>!=QMw#+*zS$3YmQTIeuQnE9Zsy1?_T?9_q+*l2HPI+jlG#;=v0 zzCB8|?cG)TNEE%SX3)>)X$EI20VHD`$q_8qufJ}?=}Vn{AU=Ec zk5Y2n60~O@>9Ejj4s)S9q7E-npPM%J|A7Z}?FzF0e^M&qeWvVqxE0 zHH|WRCO$mCK*iNHL_nOB9@{sY=Nwk>e|M<;B^W2{%05b0hBO|`}6ORD$BlOEy`K&dWSrrifgt9sfWxkpKGV0 ziD+}*kCS4`RbDS@0(z9tslAvzGgi+TvZTS@y~Nk{#>OcH0!LZ$bGcPOk$~|{QQG)4 z`Hs!7*G8K~=CeCDIX|mjE0LR|_uDFC!*UI(Syhab8(8}X&hJg__*G06{ajAdbSK~t z_`p)4GuFA}a=`f7A-5f!KYut)_7}S~gKr(~)O7;NQjexzM(YSuX?UrQSzu^tP~Zpw zCb&6zcUD8ca2aN4)===Ib`p6z$H-@CvSciMaA5lNnt9-3ZmV5dQN3$49RNia!MIZw z#}m{gT5cgZ*6?+d8e2{WxsasCx1kNr^HoE3@V}0UOrnmK1 zXx6}B=9u`)<)2o4-Bf-I>gX_J`NK_R%uupoCgL^LJn_#^@j`ZU`j?~-)sm}gWhqx6 zFB;yaeXo33yZNsK(ylGN62iwah}ybFu$E|E1s;X?UZf+YY!GQXz&)6-E;LO95^lY8|BgnUnzZ4=nIoaI z(-T<>V^QRZ*LAV^wK%EpUzRM?W@F;Y3k@4MrIL2x~e- zZwp%;aF}vU9~|#dKQ@>i$$0S~q03R>WCCQIHZ1q`=y1wNTvGi{v*YghotG8kCHD;s zigRi=5sl!1WZs(L)5wf`k?<{xXvXkOegVwbMtp-|s8Yk4!cjQ0zVGYFG2FZD)WLpE z+{J;F!KS7yn!ow0wLPqIcwJ~twoxVDz|WI^mtfU)&iu0k*}fX@twwQ``bMu_VE)5$ z!V~zN89Fy_+ameOnS15hG&^;W zU6Fs_8bLwGy5HNOqL_ls!Lq*Ym3X6^HLZIPK^M^DNn}u>=1KZLfo7i~KWNr{UW%y$(Iw zbBp=0^3G>*WDI^JA$OBO5vch_D9zXx5jDHC6=X+dK)+e{L{6*S54Mz_n@rE{ z(Xwr1zpj5g6;a_UvE<>w+wxR~#^2dPC2$ru@u8s3B_2Cr(l*aNY1RI09qAO2t;z1UTbAnwt1VapCg3QY+NSpQF zHq9ZQ@$a?y>&3kCD~(yd(FaEBex~O=p>zV`4!hw_zCr@pj4q5(WaaD*#*#y_;Jp7S)9RtJ z*#7?WSO<^NRM8*)R@OJR)O`T6=oZ&5f3keC-XGA@#NgU#X%%)WEk zhgd=kva`1pvvb%)M|=I@iH}Itr?xP76nC=jNGtwpWI~+EascQA0`*&O;uAa)P={Io zm1`77)XNUm&WUOG=8_1t2b|FuK@nXoKDOzMhHp_DxOSg30ai!5_WD!uN-_z!?G=MQAtAfABB8=fbk@t}1WTkaa^_aDt0pX^&!k^lgYNpxLgAq*DZ zx~@H?%T^mJs;5?fG%&dY*~q@s5J3Mbsa6sRv*COC9Y^)qk{Oe4p82H97;SI5V@$#+ z5XS<+JknjG)rX8gDz8S(n(TLjpX z2?B&@5pdrTZ8$8x5n`G4z2CBeyb9_h)pbc`>~y1qI)Uttna?$6s`mP5fpEaiB(vYeGjqW{4fieiO|$#k zCS*u?If37r<&NmhkrhAdr$;Xmn69{pdu-_sB53jPkMRDa*v(s$M??ka+nfeyDB(DW z|KW~TiqA;}OtznLm@;mUsDr42b)#;^Z_YTPLP18D%^aAl)WxpK!nl^7ipXcVzcDVu zf?Fr=Xw9)ITYn}7M>nXRz(Ive`kPi?*e#T?RE;egVh8hf#FguW%Fj3D;>e$)jN?j1 zIiA@2@6I@$yKUVwn==4UZxJ72IKJ;)6`YPS8D?M<)DFE>? z^H6s@X`-aepgOk&-RzQs0U?tF0P~EG??G1Wt0m4(l)!9_+O1#LuH~UVhJP2xZW)^D z>A6|~u!0Jr2M`Tn@muzW`i&jAhEaUnJao~oJQ+H!u}fDKtEL2e+sGrntlcffhY)Pt z1+F99Ky2_w(3^OKEml9iS}fZWDxI~ssIk9qM>U*vl*$_Q^Mj9`N4~1v(@f0r%-8=6eh42N~*S4UAGO6<d_#`eOSy05y5)lxiIu=T`?hM^NSR8| z$mM6rZ!6J8es+eH9i{s0^CjHMACy()D>-;(Z~t8peSd#Ho!+>Sw01`eqPLFwxqKus zO#cTc67?8clJbF7Le{DlZ;a}s>sbhvP39Q1a5cg5Z51f*^L#<_s!wTIYYc>D1sD}? zmsfA#>Pgi=i4n*U3j;bJ;-N@pmx92&HMZaLteGimNPIZ^RH3O0AOsxHA~tFG3+sZ&MyoJ+*kyeB87 zW`gh^jK=X~$t63yIJ&E>+UAhy?|heBK3Sr;Q7ZH1zlOydY?tzhWxUA_3~(sZxFW=? zJgIa`e9UQWea}HBa(BS|g?PQK@agIM4PK%(Mr{}!5RK|yav|u<`JA+4eow(W(|)yoz!cOP$`m=;T%|3|Tm7}Ao#C%6$aQPuVvi!R3D)$`&>Mf8>VaCQ&UilfH218crK&`l`Re`4R%aFNI~=bkq> zb@2j;I26)bJOe_R9#Skvh;l zMR(SM+^ilA;?iIMcl1#rsvtH@6kC?4CAbckot4oDEk!^yOFG+a=v+R``(Ir*ka>i| zpQXOuHyruQe^atgiw#bPS3z$iaGw;2$HE0dy*x+irmCR+R$huB=~3GCC8Ix{e%-c8 z)%{c#)v^_{T&a{~kWlpJjjrTi!=DAugtO)B43?Va63sUY>&{_4`SJoxG8Y?BWFgF2 zE`+CwFTcnX(#|k`bpe5avnUWUOolwT!Jq-gIO5{)uKs94X?5cctbWo3f^P6tvKH*KqFUz4jq>G` zYfCgU8Pbyg3NH1AOdfCFBlG5F`yOGa3r@VXhB3xNhcWgA=GhcP^X9MW+;YPLmd>qh z9w`1c@IT_Ai9Y(L)ktT{J8%$0gC{55p7?DW97tpi!9mGC+nZ;B3IV@xdtQ!#KcBV5 z;YH?sD%C6U3Pg8fWT<)>EQjxj2yC{mPU5BL^A?&$>Bdo8x6$};#rV0`j=dK(?D_H@ z)-Q<0PyFVPRB&hDluJVds89E;H3Y=76RUqU>5F$0+a1p;+XRR_2Lu_2%}={Sft#Lx zetVdNzY5{2w{6k9epaME3};O^k0S^T+u2^Ytkr7}dt9-V8G(h)qSjpwoaIA@C;ezX z*B^%pT&AI~!x(^pHPX;TZ7i1IBJtT6aE}(}^o0P;VUA21f^KMh01Yk85nMfJ&hz<-h7XiIIe=LcJa6QO`nKG z$~JtQ&-~8xoxDFNsOxf<>DCW8i*W?e4!=|d>)(V%cL~@dT!2@wCaOKQ=6HR!AG02F>Ux%+wjv2Pjd3}oEHd*x|BcB% zH8+|vmb<>9t&onB$Bo0e$CFBfKa@u~t}Zz)R(57JyrQ7;EfBz;Zy7U;Vb%K~e`^!J5yRVQYJpxhCG44F@qs0~f}I=F zMrTj`oCa7lDxcfZFLOLah^3cjC*H9AhQW<1HF*Qx+&I8xoY>lA*j=fW%b3z4i&*zs z4`sB#ml0@S9$-?VpFm_7BUU;o%PPfhSWvJI+mTUV4U!^SXgsd{v>-e;pa_1U{zj#8t-VOVRc=5;>(c9`vu z)>S;1-~kDqi24Kmkk2!G1|z$4mBnF3Y; z_+JUw=t!ugAttOAO^2XcJUH-nl*z?eZ3DtT6Lq;%sS#GW*OU^fg0F%Z%~*$+UpU@a zC&!~zAs9lUa(Y=3-G%c%{h_3mOXeswT8}@`h3aO=-d?+{-P`5bbQ6< z0o!{_lVK+ zSV`;I8lFBNfLt0E8Cvb0=^z~|)p6gEmjl;wJ424j%-91L!>>cGFpy_by{V-!516^| zGq%7_5sWqhOms0aCo+nqQQHpxQM`Jba6nb4tL_x}TFW*ib?P|9yBAqsZZZbIbY^zE zE$ie)g3f-K{Tm>Qf4%sRVknu$%?5mYU5YGRJJ-mkJYmz=(K;j4aWA*h&DnrhlJ_EO zDVH{Ioyt)a-Tg$1)@_;NmkrN^dGnKtOsY zC;|dvq=p`;c6|h1~i_=t$!sP2oRqx^lv7ii>vz{RDr%E9L|MF*zYfg zD`LPg2LwO#CCU-x$>Knk>U=9P!+J} zj%pqZABW5U zf=Q-`c|9;GAd?+nFKc}I^S|HAk+cg|*uJl)4pw>}n+5zqK6yqSu%*pQ_oI3DBj)iY z*m?_)7H9XfS^ytf3>Iq}QfG^O^U{XXIm9G-y#OMkR6WUuXM|DCe7Ip#2227_XM{F$P z8d&gJuCUV?pZ>*>p#v7ZERx#@?KbK-fo@N-x*u`}h#L1P=h*9+zMP76F@05*%FX{s zh?F37GblQvy*ro5>FrBkXVSqk`(>wm+>ZbDjF}4k(fhLIc*7*@I6{t;F@a(N$I>u? zcx$ojwYBy8&tIss^m$&-$|NIW9z!>0w=jP{LWF3SWsO$yvI@s|0*($x{hSQkbTH5} zzy`oPqWNWh%cOO9s<~yCgVA2yeK*o9%Ik*fM8rx=JB6bovSK!VcW zI-)?0A-f&YmyTxAC>$$tLGWkP86?#V581`+OEp`}z_c)|R8G^Pq6cIBN-a<{&IKBQK0|1+2v zH+?GT3DC@|@tXFDeL0*B^ORZ)3BLwERK|C+UmbA2o++LuQUqgC?3~)GDsD>g&mDmG?#3DF zFS!)oQ?}_B>>n+~R&fa-%!w#;Dmw{W6{h(qZY?U%vLf zl5{6%qzK1dqn(j;VyX7P_<}|U9v9m}(r`C7Q`vR)H{7;&tVeLI_^QpE=*Z>VdFrxy zox@r$nijKs}}8;bBR<;;zis^g28T*PgIInN#OwYfnj;CMhX0ysIF?F+|SG~&tQC3~hS($}GI zSHLaEpPSv)z*%-G$fC+cm_zcl%HMY947#GH>mj%$^^X0OOUQ=Qwn0gdZ>D#U$u$GC zAz_N|$6g7pFbwfye%Bv$8Sx!+>25aNl@aPJlTn9Dn~QJl(hNv1TXD|Wl!2}te-`g! z;Yv9<+F!&X_aN5|N}l}R(PDS^m@^77z{{!w~=ZpTNWGFsQ9c; zw%yU)j>zU{-ZCXU%n!6U1jTb)0F?Z3Mz3 zMV0Kzy|h=kH+kB5+mnPd3c&8j%be)??p`X0x}pJQ@2$$%tGZ z;0)d~>o#*8Or)J%e?HAHU$WF{phT3bB$KMDnJmposPme(~%g(QxP=P7M?Gf z;}Jla?|5A)yCoSUPViIjbZY65#BFD$FKQlh3;((*tvSKF&WfZ zs)$1$Ipx-p$HJLc!L-{=snKG%U)g>DeogHbvEB45@24hp>YJLx>^0UGaqNemctm0@ z2LWH0l|5+GGDg3gTRrnltX9lbm+{;8U2WE}HfZO3U`=Pq?yL%v};@#cD5hY+aA0#Q4*(1{2XWanDkra43<@etdRV6VDW3$ zqh=LKq+?V;Y>%M&A92SaRGToiX#dFbx;1Z)DTG~xH`fdk2XUnipn|8S3Az@$Y1!JX zvufPxC_Uxz@Ur|LD?Q#UAA!*ZN49a+j!B8o>R_!}9sB}IoR9nbIQ7wB^Bh&tpS8U> zCp9LtG9-xxe8706h!1;qok)FN2-9y}+! z5*l}GLkvge*5SGrEvM_^(GaLI)#STh_2IGkqHU&s^OO9X1B)m zbeg-tsgNX~)6mOf(H1GG4-SGSBo6tMz4DqAnl1Pfi@>}&&3uhr{s`A8hrgIovhyl7 zGk2k&sa!db7;zFwWnk4Pa-@6`mGHpe#*mxFOS|Dfjc6>S`!XR`D$}&WqpsPr-u!m} zYz~V1lKQt_+-_sGji=GB^Vs5x&j|)r(Y^|bW?l=3kamK*2bSWCUSZl&MNZvSmS4w7 zf09`2-F$sq_cx)o*w|R($;xp)B@Qu*UJ>Y=KT2RzNw0)?_GY9-AW)}Qioffwr9J9? zKWNT47N|=(IO3chboitc)9SwUIq6R2=brToe|DB_Tls|wB4@n{isGxCxQTkqH?*tB z`QH^HC}cK-10Ro#aQ886!uI!xC|*4p)Tz%jANO6pvzzhi@1J1~LC&~W?T$i0^0X+* zp0&2X=@w~6uEv7BC2A;@x@&NOCjCG31e`5at!_ zJy^uD{)8|1K8)P}l_Xd%qSDp3wx&}brS%v|ZmMT$|K{h@p3l!%_bdRgfN*cLcMj2& zK#reUyLt}zAsVbbhD!{-JK`M4h7BB~+rH^-X>H&O`WSvu;%p4a)c^Sv_U zi5{Q&h4UUfc}Kxsx?u_K4q!vY*OvyYvHi# zA|RPH6Q_djq)DBdjPu@Ob83vyeY6QyU|DyQl2jB@Kw)aG=rmn$cm!4I&vr=H)Rup( zQp?yc6~pUakJ5y8mbTbeKrv>^oddSxr{>?ArnX=Gf~e|p(6Ea{s65?NmH(^Pc5YMA7{TCY&Dd;sl!9~_7R%q z5An)`nL&&nuZL?~JW~$xBeZBl4^)EOyfLoV^!C z^X_)DwiLipLQ_5`o>cwr^MZobAUCxu=#4tYTNdh3cH=8;;w2ijMX|Xeiq0WholT?r z4>5?9<$fp^Oua?YeQjGwacwW2ty5aCAU=gB;Kj);bE9bC)KDo*UK!u;BLSM_p zfUlHNAj{3WE8P8NFmKfLR<&sC(~~TA?{KrHOJ<}SpYO1&Gtds^JiPu9*$YAfxp50J z_ndJG=P|D<0ekAd%xs7`(RGs!BObm0`?$oj%CX8B)N?@J8}SZn)Y`Rs&%(t&VRgqA z#jx1;@?evx|DESzDLO=TbcoE$N<%Chlm3=6dELVsB@s-kkxP%3NlH^e{<~zrdJ}f_-3n!5s~Na+PfobiuSO-EG9j#rv*G0uS!2CLdNK^Y#S&JKhkn| z7*Lu%!=Sej7%(llmh^gB?JmSDo=`5Z6rJDl`HQl=Ro3+MHqn-hlf@p=`>(0f&SuT_@+U~A%?a3g-9X`~uU+GA$6eVJ8NQr}S3kN{3x zZ5pzEnK@y{Q)JdLUZ<-)Zjhl9PoH*cB})zS@}N7&_oMap(sql5rOHSI0>PO_FxK-3J1 zi`p<>1@-Vb$XWZEek5OTuiRdKjd}XT2Cm5Ka`Cpe>P=4^lkmsiXFSqUO%iH6JWj_R z`i7emIqE_8PljID=I!GoVJ7mHbqF~qrVqe#x04AP1Sxjl>eh^L&y1q^5$j*zFM)k} z8+ZWGL&q4(yo#Y!i=zMHsNSxXJ&1I=9+BJD`^aqt{4kVo>rV0$PT2{f+vxsBtd|_% zJVcM8p(PlkK?%AV%QcR@es0|1%XGl1EWY~}fFAs=1rRQ?JxE@tm`$H1kdRrbyJpEE z{3IhKzN|o1SY)nmCr8aaz~F=iFFeYqH{#N|Q=?LFyH@kW1K|LQ`S2gfZ*e?;Z+wf)%ln zfgti{gxtns5u55*M|9yU5YCL4GvECa;xZ3Q_QoK_#1MU@vSBuF`O40^de)OXqXkZi ziOWZ?RK6_%$%KxC$4Bhv7;tRlbvNICBx}w^D+x%S|41HzV%sqgS>Q55#{uOZN>V5r zWGZ~x2Ba4GjYjOd6`2$!7<|l8jbc4alV>GOJw4mZ#T_GTemHzc^F@f0uB0Im+b^+> zL`qQ*J_C%`=K?_D?>xN#2MSmYYp$0;VORX(yzYTgKALearfVy?(k1*DZOk=K($x>f zg_3TV|BeEwZ5o*F67@rVT-G6;x&m<3ZB4?PHc5h%YaC)*8e)vUfj&@s-4qJCi673- zU^WErn_kk_A!sYm_~|p&JL9wXrndR{YlV>9^W&lf@c3Vu`O=N$X(Io<^U-VRb7>u= z*nho*&&0yRB&U&x`2jo-;Bsn8!29w^h%VM>Fu$^fDV5q&BWX00T`vGVOZ!T&THk*p z)zjU|`cqoQI*QBmro&2y?b|9g)z$~cwn!Jj!QqT%QSFf|E*d9q+6&-ilTGCuN?8hM5--pX2;xZWJ2JNowi5rq9g3k17-6; zgum>-c5wDO0GoR3}4@2T^D*wksSpCiwZ^fd~L z(r${l`kmv`S;4GV-4JTZeh}j0;okhicqI$X>rL)n-N3a2eZ>RSC3U{<<4?9C79W23aq=j6fb*gPt$+Q&-9fx8 zL~JTA;-$`E@zNld5;RGBv%Q0zB5O@zL0E+&U)bJMaJyhjDit^9{+) z>FaO=aZS`W3GxgIm0rZH$#i%(vT#6pK);x~l{Im;_*&Ws-&SX!f^+AZH7hu?tRf(jram z$L*iu;CnekC{;lV1vC6a9{V38u=H}r@u+K@~20Eo;}`Ox>aB;Ew1ir;575-_Gn?Jmm_1D zu)F`cx1x@ZmsmPS;*aK=mha12vZx*5R1;@n9K~-9GdsA zqb$hegSg7_aJo##!x5D*O$#hpLct6^pjVh6mipm#HF+2>>^O%W;T=Y{{RVr5@GZ5NJ7`$#arYU*KdxvL;9sFejQ z^tvvd-!*~0&VQOOZtYflDl~g}AN`n|%b5ftzI~osog1ZOfOYK7p&j=-Vq6l4ep1v} zlWA(6-1M@*PedfoBGqtYjpk-j51PL*n;RVvUv7R)+f8KpcXnqZ@SrHH`@4NzVsD2d z>Wj<(_|ovoM08^zpH9zz3a}_8ydaJznAHP`0wVR>2UDHWkNwi8j;Z|Im$XNa?AG!t z9P|gh@Er5R&EY>jC3oiC?**vjap!JG)JtVrwPV1=ZPbWPr300_E;X>2xAlOJlz@7! zUTY4KEaDEExohz^bKUqWJfXwhFB3LfPh(`H!QGijC5UitXEg5)#*iJHW|~$miBYTZ z<+QpDCA*0!-bGniyVW6N#*t+IkO-U--Uu+O2HcfZ@$9pd+2Hr{D z-`>S)J)-8Q?o^7K-Xc8vPzkxWzX#3;{)c1bm%U3ZtIRh@)1OHkxp@r2Ki zqqslQO1k8c>zH-OoJO?k-A{U@nvc5WL?l<+-Z~C4@n+@JU$cDwlTcIu$N4=Q@4Zqe zb;?^9{5e*tIj0x=;@7yH^Vi^<+m_!V=E%IpzBkk&6;B;vH;qriZb92LXg!0<*Gvi< zYa$f=9p?ErJNHaV^LIr8d8FIEZv+m#DeKMw4=J~n_LLZ@n`IdndAA!FTM8}S@@kFq zs!ZGXfR1lVaWXakDRki?lfvW5aWjvUYtlfiHe<;=rO}xuNz;}(GSDOFq~nsB62({j z0$se4(U;9-K2e_?Gqt3Nt|TzkzQP=S2TqY!n4u6Jl%!Ky2qP-uQa!vVg*w+cn$?Ka z+@(5J@ns*4PjU_lmwKH}B!j7Sf>`P^LG-Q=RLCt%D>6OUeVuq@*pyB2i=JTv$AA^5 zuj0()d2r!KU>&M00vvI%{a-Ezz|+xxV*j(kDki@#Ho+ zMPz_$V2Uvzxw%mcJ4vF2o-b;gqV20c(SM3_U$TAfk3)ZUy}T#7n!YLjnw<64LLMWk z{?kYK)XBy4JQ^|K zc9g8Ni(9>=t-*K0eYxcFFx2O4%C z#7E_iLC6rsCQKn}rP(jy@C4k1IW=$&@NwQ;l7HY#>S?7VA+b_Lt)1iz=5O@*1B*jZ zQ2L7IN_uQwi1Lu9+iodjRs7SQ7IbP8{F@MU7R!jqDf}nMQkBqmkD{V$BQdUPh~&;z zq5KZ`7e0N}QnQO$Hg*NUd{m7DotlI^{39yzyzYa$f0c)7hAPR0Da$&2Ok~e=2&ZSP zag9?DP4$mik%CXtBEiKMem(Ydj`iDrrA` z8g=jtAaf!jz9)d|@Lx0hR%3d%pwT;lE{V4l-#nQ!kBZpzY^*y$c2(>_>n9id*=QpV zzvFX!b#J(zaWW6#BVGQQjWWTLsSx&uwwXxT)b;iC6Dyq+T}T%WK@HdADlgid#_HOz z)GNFlGF^)1IreaXSe8=^3h$HN!Xky%=SIT}R)hEm3I!YM8DI3b&!5)BQYi-4)(=UN zo4W|Df%`cx|FeyzHfUhlpW$Z91X3h}Y z^Yb%4sn%-HgQ{`pO};k0ByaD)3UD8S_eOO%32OLsON9#fwL0< zDKx9gR=r-zUa9{FKi(<48aXM_Lceyj5bpmA%wnd{MbUY}GPCvItWTa(cpLPgz4km3 zaIa{mVZy|poktR!UBai;raV_#s-_RR9X9G(Bj_0O;!S>Y{JdlLK^^`dNs%Q%Hg-*S zvM&Wlp9hhpXDl1kwlEc$Hq^^Y@>+*%jWRg8GR~tarB59R_dGil#NvqJOTz$!4aKG) zk#qc|Pcr=KXX{%VoL2o%sBAR5^~p0meuVE!MUB_4+Y%!R!@)J-T8lD)uo31#OA6Ur z<(nZ9fH!aZO0)_E7TOie-Ji?&y?y!&eBYF+SwzHxZE0$1w!^9LvmgU2>q|bwLW<}9;as<(-6MXEmmdPX0vLg|_grl{^hkmfUfD6NY2lS0J zX(0Ux^9nSNQok-n*e{c_*5AFSg-uP)@3i^p>}?U8rD1ndT2YIulBl6-Q|GH(dTFcd(%R!vBKd<> z+;9b5(#dm?J5p%1+Zyp>*#MsrxdMq3SswHxg{?5M4#M8+vvR9u8S2BR`q<#rg1`z& zD9f{bX5(1gQ+xv*XYY83o@=k9{b;taV8t_mTF^aC3FXT`KjPV>Q#BwC^h+mPfk*uW zdb1_3RCJmnjK|iKr~+)Odr(itn4ry}`98>$t+Ao;1Sy-4jBH;_%^uH%Pz-`;C$;TW z0GAXhF~Sl)ztR(Qe8F7+0XqAFf7~n6S)~JV z=2s9h972KV|8P{XI#xD}tLONIn-1_&_j%O#EASDY{q1MQRvkBk*1fC{nCVr|2)G(h zdC=gaSLctYVJ_$0P0){ZSA*vAb%T%y!6i*dw#H~%rv?~52HP%7E^6fJGxy;hrVVYA z#n)W*DZpj9=~W($y6nG-Y7?H2sc}PZGKA6uQ(R_T1Gg-c3}CN84`eZ2Yn?6N3M=iU zhYid@$nsK4OOYR%bV5Hd#ZAS~qd!4xZEcX!%ouJh4jzQMBKao>T1!c;|bVZ+cRCZ{y7J0FA& zci+h?<+#eBOJ2KV7EKg{XJ>BCoPo*U^qA350#D&K?$WY;qb-xNmt(rRyk~4xb?H#^ zNl?;L2^fi&Sv0WL)uP}{GD+Xwk<=w5jMdvdf#lRbwum|7(V$0A$~R{CYsg_#kgZbL zlK+w1Fdzu_cbds_A5)GaFpQwC`u}ZX?;`TQR%043+9<|EMb=|ri|d`n=mMdU}wu-6iPM(CULppCBuh0akKro|?>L?1<^}+vGfQfGM9Hu5Ze2qK(ew z0DT~^`btG6vqy%!+W=t;vk-XD&2grwOuzK3~sO`;EizZp3rx$-g ziF1(4+1{oc4J%1I(F?DyMXLu)|@;e^s6&luCJZ6=u5{?(g`d@WH zsR5;wv)3av)|Sk{L=&+muPHcPe__%N9$pvZ&n;M}$d9uL}bO&>0*Z!Y< zl0VFB@op`(4|B<^X1$eE=tc89*VXoRp8rlnzKc*4%}ca-Y*fm~cV`i57_f}dyH1@=73quw353Jp7wro#LP z%;+^7tXE|vCH;1~*-naZ$fPO(0bVhY{7#xGyyKayJDFd|Gl*a59GIsWPlzIG0%vnH zUozko|B(dl;qAinAa|{#ZSxybcdu!01F;ID`^TfrL`K?BQlD|K6>*Xh(J2fl1?rA* z1OZG;nH}Zr3KD`O^!aU;f*IjsM1`$>or}&92$;2mCbyITbKx7Bp(cnwP6YlR?2sQMN zMe}$`W^cBhIPjR4av`!Eg_4sulLL+>wvpttjDNl*9oTIqFd;fsLg)yr`1fn^j$Kxy z|4!X)q>4-qA4-TnnbR}tC6#U0rbB;6a| zb%<(?|B>RYv0)P`Am-zcvR^7q~|L(VOg_In~SMK`TIRE=j zW9G6HRk=C98WYZXUhICx`mn*fTI}5j7~EX|)Hhwso&*Cc@k7%Z@Wl9AjBRC86XwJ&8pH{K%DvLe(IBfbKNqC^=-1~2eG;-HMtZgi6 zUgwqdPyBC8+_*GO>V#wk`l@TRFl_-A8*D(Em=2`?IzhllV*yZFvRO3;mYXt-^SHVj z>p0Mfn!uxsz(Ygc&y>&w?~Z^GATDGi;DMtCRtffC-PIdDvtn-@26chCcGKhE{{9}J zC1A=cI?Utn@d53&u%7Ll@cvWzUy8KPr35FF^o;+_V7yHEEv-sR6$DX>++@J$o@|de zQlVm^gc3YdFg1PsD-L){I4vbQbm>waEl51G>ev;Wr1ZjBcrmy-174&tJ3XK1qgu-yds){b$x?1^ylJt@}uBG><3J? zubI1yd2EuVgj1Km2 zZY-2|_Z%;Pr8TOVl-itX;VCs+lAcK3QF-1S7&#=!%fR#EImwN#o7X1Q@@4J7-R^8! zzO7`0-j<#hZbfuA+aeW9IpsRsD@{naG#MTWjd=qRu>9{bRY^iZpF9J#E|&BZg35xmd6<+bk#Zm@8S4_As7FqbErH#Wi|Gf{*9Xbl^R=5CduB6vt z(8Ln3uEOAe)f~;06%4L}79Ldg0XNns4RbwyM7avD8j0aDN^qL1krdTtW_Cd2beXkEFtb}8>8sv2nP5Mzou^(uPy(n6CbWy zcX$OG2^=*$tb^hod3IZZp4X212@f8q>7cSbDyiB0vUBo&f>>i*8}dwF@t#GSkS-+u zzH(8tkAjzKyZ_B?Ugiy(YTim;D-!;LP${~rlt6LYsZ&h2nKcJ6B##UuDBBh6_!~EQ zWEXa%;--H6yYoF%ibUuK4WlXxiE*5r^;+&mg@XP*V|O6bU@Feg=<{MNkXDyOMsj_d8q_H+UeCE zDXk?nZ<4Iv`0F^a<06XuV=mZbkMgEqzJFPs##3E&4|leBZYe;dmqXox6-^8L4of_! zk3x#N`PTZNyl=fLW0ym7uNo?epn*!CCEQZH6uw^+d=_pzgP30-ad;)0e9 zXcB$tCV4wl>MaI2r74L&Yd8l@x_@XcifNG$e#=odXB1Aa#~y}m9xsTrIgYZpNJMI! zA1%)qCv+Wsip__+VKt-H$8AvNvFy716lUU0PTy~x9m+BUo>iI}QO(b*)Qz)cx9=Yd z|3s3}B_#();3~H0f&8ryOn(=cRwjA1nQ6>-x;f`+AFC)q@z#Bez9H#`a_z?%%4y6| zx20J3<=J5=2f!qI-;+Gh|1jt_>9-EjZxwOR8;&lh8qLJV-c8mRMZaiY8X1Vru+J5s2cO;ueo^2Y}us4tR4f(G0{`A9WB@R5>BTsjVNtPl zin`udKdriWp)R+A@+37%E&i2HN@lfrH#(QiN{dQU5hh^# zNxM1kGboLVnRS44TnVyx>0ciJFxI?+OZYZZN-Po9?Ga1k+7ph=?vHvane1fp>>W(p z3v7Gs8t9uFw%!fHJFiIKlH<03ZwjJlt}cy9WF?nQ>*mvknS-dW8h7@4$`CPES=Y~s zp?Gh^4EeLROcPA&bX2{ra-FgS3qd9J-M?P%8nD}Rh_&6joV+%CVig|o_tUX_fpciPc?I`r zzCbnvcK>IYP0F%9=FSy%Ty${X?LNs+FhW86a5)=fooAhA^??K+v`-gGh=%MEjrjQg zy?}REqvv<@X})CM7Ex9p(Nn+w0pOvN{Qr3g%EXvGz99p&ZvXci2|#fF|6VsGr`nza zD{)~P)%Fm0_koQ~gKOI+JlL+lpF7=|GkI>cg(FGGzge70pY81F#hP^2y8rfQf;2hm1}05U)5v2cWI_y zHzQ@na=fRXdc5pRb&U?yRT_DfkQ5$=-~$ZYUhh=xER)0UxdwWco7AzDZ)I~_8vaUr znj~J;|0Gk*L3Q9@p7Gj_{pBcz*s6dC_g-cMlsy9IoLHJnG?)S((3=t5vIIAtYyAXC zROgpDH2O?Oqb$5#>+v8jE`R5FXsE}fA~AB*p+ylwWh~9$=Cbrj*6I|tUmmlV!#E9mx)#Wrp z77CU|O2KrqfpG_wRmm;LWg}ZJfV!8TmLN^Nmyw*GMq+8$iqogj6#RUPaVw6Dk(?9n}yYmS1hEk;Fs#S?$K>XN*m;)i;qb;=hOey&&{uXnMA#(bPZl3!@P* me^Vp*E+hHIY+Uu@9d*(I#^bFCz_joG?G^C<_>B9%+5ZF3)Czk5 literal 0 HcmV?d00001 diff --git a/bsp/gd32/arm/gd32207i-eval/project.ewd b/bsp/gd32/arm/gd32207i-eval/project.ewd new file mode 100644 index 0000000000..84f20f063a --- /dev/null +++ b/bsp/gd32/arm/gd32207i-eval/project.ewd @@ -0,0 +1,3056 @@ + + + 3 + + Debug + + ARM + + 1 + + C-SPY + 2 + + 32 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 1 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 1 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 32 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 0 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 0 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 0 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 0 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/bsp/gd32/arm/gd32207i-eval/project.ewp b/bsp/gd32/arm/gd32207i-eval/project.ewp new file mode 100644 index 0000000000..831a2d46ee --- /dev/null +++ b/bsp/gd32/arm/gd32207i-eval/project.ewp @@ -0,0 +1,2316 @@ + + + 3 + + Debug + + ARM + + 1 + + General + 3 + + 33 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + + Release + + ARM + + 0 + + General + 3 + + 33 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + Compiler + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\stdlib.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscalls.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\time.c + + + + CPU + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\backtrace.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m3\context_iar.S + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m3\cpuport.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\showmem.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\completion.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\dataqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\misc\pin.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\pipe.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringbuffer.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\serial\serial.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\waitqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\workqueue.c + + + + Drivers + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_gpio.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_usart.c + + + $PROJ_DIR$\..\libraries\GD32F20x_Firmware_Library\CMSIS\GD\GD32F20x\Source\IAR\startup_gd32f20x_cl.s + + + + Finsh + + $PROJ_DIR$\..\..\..\..\components\finsh\cmd.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\shell.c + + + + Kernel + + $PROJ_DIR$\..\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\..\src\device.c + + + $PROJ_DIR$\..\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\..\src\scheduler.c + + + $PROJ_DIR$\..\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\..\src\timer.c + + + + Libraries + + $PROJ_DIR$\..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_exti.c + + + $PROJ_DIR$\..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_gpio.c + + + $PROJ_DIR$\..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_misc.c + + + $PROJ_DIR$\..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_rcu.c + + + $PROJ_DIR$\..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_usart.c + + + $PROJ_DIR$\..\libraries\GD32F20x_Firmware_Library\CMSIS\GD\GD32F20x\Source\system_gd32f20x.c + + + + POSIX + + diff --git a/bsp/gd32/arm/gd32207i-eval/project.eww b/bsp/gd32/arm/gd32207i-eval/project.eww new file mode 100644 index 0000000000..c2cb02eb1e --- /dev/null +++ b/bsp/gd32/arm/gd32207i-eval/project.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\project.ewp + + + + + diff --git a/bsp/gd32/arm/gd32207i-eval/project.uvoptx b/bsp/gd32/arm/gd32207i-eval/project.uvoptx new file mode 100644 index 0000000000..92670dd997 --- /dev/null +++ b/bsp/gd32/arm/gd32207i-eval/project.uvoptx @@ -0,0 +1,784 @@ + + + + 1.0 + +
    ### uVision Project, (C) Keil Software
    + + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 0 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 3 + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0GD32F20x_CL -FL0300000 -FS08000000 -FP0($$Device:GD32F207IK$Flash\GD32F20x_CL.FLM) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + Applications + 0 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + applications\main.c + main.c + 0 + 0 + + + + + Compiler + 0 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c + syscalls.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c + syscall_mem.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\stdlib.c + stdlib.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\time.c + time.c + 0 + 0 + + + + + CPU + 0 + 0 + 0 + 0 + + 3 + 6 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\backtrace.c + backtrace.c + 0 + 0 + + + 3 + 7 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 3 + 8 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 3 + 9 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m3\cpuport.c + cpuport.c + 0 + 0 + + + 3 + 10 + 2 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m3\context_rvds.S + context_rvds.S + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 4 + 11 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\dataqueue.c + dataqueue.c + 0 + 0 + + + 4 + 12 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 4 + 13 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 4 + 14 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\waitqueue.c + waitqueue.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\workqueue.c + workqueue.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\pipe.c + pipe.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\completion.c + completion.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\serial\serial.c + serial.c + 0 + 0 + + + + + Drivers + 0 + 0 + 0 + 0 + + 5 + 20 + 2 + 0 + 0 + 0 + ..\libraries\GD32F20x_Firmware_Library\CMSIS\GD\GD32F20x\Source\ARM\startup_gd32f20x_cl.s + startup_gd32f20x_cl.s + 0 + 0 + + + 5 + 21 + 1 + 0 + 0 + 0 + board\board.c + board.c + 0 + 0 + + + 5 + 22 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 5 + 23 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_usart.c + drv_usart.c + 0 + 0 + + + + + Finsh + 0 + 0 + 0 + 0 + + 6 + 24 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 6 + 25 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 6 + 26 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + + + Kernel + 0 + 0 + 0 + 0 + + 7 + 27 + 1 + 0 + 0 + 0 + ..\..\..\..\src\irq.c + irq.c + 0 + 0 + + + 7 + 28 + 1 + 0 + 0 + 0 + ..\..\..\..\src\components.c + components.c + 0 + 0 + + + 7 + 29 + 1 + 0 + 0 + 0 + ..\..\..\..\src\thread.c + thread.c + 0 + 0 + + + 7 + 30 + 1 + 0 + 0 + 0 + ..\..\..\..\src\clock.c + clock.c + 0 + 0 + + + 7 + 31 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mem.c + mem.c + 0 + 0 + + + 7 + 32 + 1 + 0 + 0 + 0 + ..\..\..\..\src\device.c + device.c + 0 + 0 + + + 7 + 33 + 1 + 0 + 0 + 0 + ..\..\..\..\src\timer.c + timer.c + 0 + 0 + + + 7 + 34 + 1 + 0 + 0 + 0 + ..\..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 7 + 35 + 1 + 0 + 0 + 0 + ..\..\..\..\src\scheduler.c + scheduler.c + 0 + 0 + + + 7 + 36 + 1 + 0 + 0 + 0 + ..\..\..\..\src\idle.c + idle.c + 0 + 0 + + + 7 + 37 + 1 + 0 + 0 + 0 + ..\..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 7 + 38 + 1 + 0 + 0 + 0 + ..\..\..\..\src\object.c + object.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mempool.c + mempool.c + 0 + 0 + + + + + Libraries + 0 + 0 + 0 + 0 + + 8 + 40 + 1 + 0 + 0 + 0 + ..\libraries\GD32F20x_Firmware_Library\CMSIS\GD\GD32F20x\Source\system_gd32f20x.c + system_gd32f20x.c + 0 + 0 + + + 8 + 41 + 1 + 0 + 0 + 0 + ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_exti.c + gd32f20x_exti.c + 0 + 0 + + + 8 + 42 + 1 + 0 + 0 + 0 + ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_gpio.c + gd32f20x_gpio.c + 0 + 0 + + + 8 + 43 + 1 + 0 + 0 + 0 + ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_misc.c + gd32f20x_misc.c + 0 + 0 + + + 8 + 44 + 1 + 0 + 0 + 0 + ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_rcu.c + gd32f20x_rcu.c + 0 + 0 + + + 8 + 45 + 1 + 0 + 0 + 0 + ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_usart.c + gd32f20x_usart.c + 0 + 0 + + + + + ::CMSIS + 0 + 0 + 0 + 1 + + +
    diff --git a/bsp/gd32/arm/gd32207i-eval/project.uvproj b/bsp/gd32/arm/gd32207i-eval/project.uvproj new file mode 100644 index 0000000000..28e92079c8 --- /dev/null +++ b/bsp/gd32/arm/gd32207i-eval/project.uvproj @@ -0,0 +1,758 @@ + + + 1.1 +
    ### uVision Project, (C) Keil Software
    + + + rt-thread + 0x4 + ARM-ADS + 0 + + + GD32F207IK + GigaDevice + IRAM(0x20000000-0x040000) IROM(0x08000000-0x300000) CLOCK(25000000) CPUTYPE("Cortex-M3") + + "Startup\GD\GD32F20x\startup_gd32f20x_cl.s" ("GD32F20x Startup Code") + UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F20x_CL -FS08000000 -FL0300000) + 0 + gd32f20x0.h + + + + + + + + + + SFD\GD\GD32F20x\GD32F20x_CL.SFR + 0 + 0 + + + + GD\GD32F20x\ + GD\GD32F20x\ + + 0 + 0 + 0 + 0 + 1 + + .\output\ + rtthread + 1 + 0 + 1 + 1 + 1 + .\build\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + + 0 + 3 + + + + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 2 + 1 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x30000 + + + 1 + 0x8000000 + 0x300000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x300000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x30000 + + + 0 + 0x10000000 + 0x10000 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_STDPERIPH_DRIVER, GD32F20X_CL, __RTTHREAD__, RT_USING_ARM_LIBC, __CLK_TCK=RT_TICK_PER_SECOND + + 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\gd32_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\GD32F20x_Firmware_Library\CMSIS\GD\GD32F20x\Include;..\libraries\GD32F20x_Firmware_Library\CMSIS;..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Include;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + Applications + + + main.c + 1 + applications\main.c + + + + + Compiler + + + syscalls.c + 1 + ..\..\..\components\libc\compilers\armlibc\syscalls.c + + + + + syscall_mem.c + 1 + ..\..\..\components\libc\compilers\armlibc\syscall_mem.c + + + + + stdlib.c + 1 + ..\..\..\components\libc\compilers\common\stdlib.c + + + + + time.c + 1 + ..\..\..\components\libc\compilers\common\time.c + + + + + CPU + + + showmem.c + 1 + ..\..\..\libcpu\arm\common\showmem.c + + + + + div0.c + 1 + ..\..\..\libcpu\arm\common\div0.c + + + + + backtrace.c + 1 + ..\..\..\libcpu\arm\common\backtrace.c + + + + + cpuport.c + 1 + ..\..\..\libcpu\arm\cortex-m3\cpuport.c + + + + + context_rvds.S + 2 + ..\..\..\libcpu\arm\cortex-m3\context_rvds.S + + + + + DeviceDrivers + + + pipe.c + 1 + ..\..\..\components\drivers\ipc\pipe.c + + + + + ringbuffer.c + 1 + ..\..\..\components\drivers\ipc\ringbuffer.c + + + + + ringblk_buf.c + 1 + ..\..\..\components\drivers\ipc\ringblk_buf.c + + + + + completion.c + 1 + ..\..\..\components\drivers\ipc\completion.c + + + + + waitqueue.c + 1 + ..\..\..\components\drivers\ipc\waitqueue.c + + + + + dataqueue.c + 1 + ..\..\..\components\drivers\ipc\dataqueue.c + + + + + workqueue.c + 1 + ..\..\..\components\drivers\ipc\workqueue.c + + + + + pin.c + 1 + ..\..\..\components\drivers\misc\pin.c + + + + + serial.c + 1 + ..\..\..\components\drivers\serial\serial.c + + + + + Drivers + + + startup_gd32f20x_cl.s + 2 + ..\libraries\GD32F20x_Firmware_Library\CMSIS\GD\GD32F20x\Source\ARM\startup_gd32f20x_cl.s + + + + + board.c + 1 + board\board.c + + + + + drv_gpio.c + 1 + ..\libraries\gd32_drivers\drv_gpio.c + + + + + drv_usart.c + 1 + ..\libraries\gd32_drivers\drv_usart.c + + + + + Finsh + + + shell.c + 1 + ..\..\..\components\finsh\shell.c + + + + + msh.c + 1 + ..\..\..\components\finsh\msh.c + + + + + cmd.c + 1 + ..\..\..\components\finsh\cmd.c + + + + + Kernel + + + mempool.c + 1 + ..\..\..\src\mempool.c + + + + + ipc.c + 1 + ..\..\..\src\ipc.c + + + + + thread.c + 1 + ..\..\..\src\thread.c + + + + + kservice.c + 1 + ..\..\..\src\kservice.c + + + + + scheduler.c + 1 + ..\..\..\src\scheduler.c + + + + + object.c + 1 + ..\..\..\src\object.c + + + + + components.c + 1 + ..\..\..\src\components.c + + + + + irq.c + 1 + ..\..\..\src\irq.c + + + + + device.c + 1 + ..\..\..\src\device.c + + + + + clock.c + 1 + ..\..\..\src\clock.c + + + + + timer.c + 1 + ..\..\..\src\timer.c + + + + + idle.c + 1 + ..\..\..\src\idle.c + + + + + mem.c + 1 + ..\..\..\src\mem.c + + + + + Libraries + + + system_gd32f20x.c + 1 + ..\libraries\GD32F20x_Firmware_Library\CMSIS\GD\GD32F20x\Source\system_gd32f20x.c + + + + + gd32f20x_exti.c + 1 + ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_exti.c + + + + + gd32f20x_gpio.c + 1 + ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_gpio.c + + + + + gd32f20x_misc.c + 1 + ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_misc.c + + + + + gd32f20x_rcu.c + 1 + ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_rcu.c + + + + + gd32f20x_usart.c + 1 + ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_usart.c + + + + + + +
    diff --git a/bsp/gd32/gd32450i-eval/project.uvproj b/bsp/gd32/arm/gd32207i-eval/project.uvprojx similarity index 69% rename from bsp/gd32/gd32450i-eval/project.uvproj rename to bsp/gd32/arm/gd32207i-eval/project.uvprojx index 576a1aefbb..69b2e71812 100644 --- a/bsp/gd32/gd32450i-eval/project.uvproj +++ b/bsp/gd32/arm/gd32207i-eval/project.uvprojx @@ -1,7 +1,7 @@ - + - 1.1 + 2.1
    ### uVision Project, (C) Keil Software
    @@ -10,17 +10,20 @@ rt-thread 0x4 ARM-ADS + 5060750::V5.06 update 6 (build 750)::.\ARMCC 0 - GD32F450IK + GD32F207IK GigaDevice - IRAM(0x20000000-0x20030000) IROM(0x08000000-0x08300000) CLOCK(20000000) CPUTYPE("Cortex-M4") FPU2 + GigaDevice.GD32F20x_DFP.2.2.2 + http://gd32mcu.com/data/documents/pack/ + IRAM(0x20000000,0x040000) IROM(0x08000000,0x0300000) CPUTYPE("Cortex-M3") CLOCK(12000000) ELITTLE - "Startup\GD\GD32F4xx\startup_gd32f4xx.s" ("GD32F4xx Startup Code") - UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000) + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F20x_CL -FS08000000 -FL0300000 -FP0($$Device:GD32F207IK$Flash\GD32F20x_CL.FLM)) 0 - gd32f4xx0.h + $$Device:GD32F207IK$Device\Include\gd32f20x.h @@ -30,14 +33,14 @@ - SFD\GD\GD32F4xx\GD32F4xx.SFR + $$Device:GD32F207IK$SVD\GD32F20x_CL.svd 0 0 - GD\GD32F4xx\ - GD\GD32F4xx\ + + 0 0 @@ -45,13 +48,13 @@ 0 1 - .\output\ + .\build\ rtthread 1 0 - 1 + 0 1 - 1 + 0 .\build\ 1 0 @@ -77,9 +80,9 @@ 0 - 0 + 1 0 - + fromelf --bin !L --output rtthread.bin 0 0 @@ -123,47 +126,6 @@ 0 16 - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - - - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 0 - 1 - - 0 - 3 - - - - - - - - - - - - - - BIN\CMSIS_AGDI.dll - @@ -176,7 +138,7 @@ 1 BIN\UL2CM3.DLL - "" () + @@ -212,7 +174,7 @@ 1 0 0 - "Cortex-M4" + "Cortex-M3" 0 0 @@ -221,12 +183,13 @@ 1 0 0 - 2 + 0 0 + 0 0 0 8 - 1 + 0 0 0 0 @@ -283,12 +246,12 @@ 0 0x20000000 - 0x30001 + 0x40000 1 0x8000000 - 0x300001 + 0x300000 0 @@ -338,28 +301,28 @@ 0 0x20000000 - 0x30000 + 0x40000 0 - 0x10000000 - 0x10000 + 0x0 + 0x0 1 - 1 + 4 0 0 - 1 + 0 0 0 0 0 0 - 2 + 0 0 0 1 @@ -374,9 +337,9 @@ 0 - USE_STDPERIPH_DRIVER, GD32F450, __RTTHREAD__, RT_USING_ARM_LIBC, __CLK_TCK=RT_TICK_PER_SECOND + USE_STDPERIPH_DRIVER, GD32F20X_CL, __RTTHREAD__, RT_USING_ARM_LIBC, __CLK_TCK=RT_TICK_PER_SECOND - applications;.;..\..\..\components\libc\compilers\common;..\..\..\components\libc\compilers\common\extension;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;..\libraries\gd32_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Include;..\libraries\GD32F4xx_Firmware_Library\CMSIS;..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Include;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc;..\..\..\examples\utest\testcases\kernel + 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\gd32_drivers;..\..\..\..\components\finsh;.;..\..\..\..\include;..\libraries\GD32F20x_Firmware_Library\CMSIS\GD\GD32F20x\Include;..\libraries\GD32F20x_Firmware_Library\CMSIS;..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Include;..\..\..\..\components\libc\posix\io\poll;..\..\..\..\components\libc\posix\io\stdio;..\..\..\..\components\libc\posix\ipc @@ -389,7 +352,7 @@ 0 0 0 - 0 + 4 @@ -407,7 +370,7 @@ 0x08000000 0x20000000 - + .\gd32_rom.ld @@ -430,105 +393,105 @@ Compiler - - syscall_mem.c - 1 - ..\..\..\components\libc\compilers\armlibc\syscall_mem.c - syscalls.c 1 - ..\..\..\components\libc\compilers\armlibc\syscalls.c + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c - time.c + syscall_mem.c 1 - ..\..\..\components\libc\compilers\common\time.c + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c stdlib.c 1 - ..\..\..\components\libc\compilers\common\stdlib.c + ..\..\..\..\components\libc\compilers\common\stdlib.c + + + time.c + 1 + ..\..\..\..\components\libc\compilers\common\time.c CPU - - showmem.c - 1 - ..\..\..\libcpu\arm\common\showmem.c - backtrace.c 1 - ..\..\..\libcpu\arm\common\backtrace.c + ..\..\..\..\libcpu\arm\common\backtrace.c div0.c 1 - ..\..\..\libcpu\arm\common\div0.c + ..\..\..\..\libcpu\arm\common\div0.c + + + showmem.c + 1 + ..\..\..\..\libcpu\arm\common\showmem.c cpuport.c 1 - ..\..\..\libcpu\arm\cortex-m4\cpuport.c + ..\..\..\..\libcpu\arm\cortex-m3\cpuport.c context_rvds.S 2 - ..\..\..\libcpu\arm\cortex-m4\context_rvds.S + ..\..\..\..\libcpu\arm\cortex-m3\context_rvds.S DeviceDrivers - - ringblk_buf.c - 1 - ..\..\..\components\drivers\ipc\ringblk_buf.c - dataqueue.c 1 - ..\..\..\components\drivers\ipc\dataqueue.c - - - pipe.c - 1 - ..\..\..\components\drivers\ipc\pipe.c - - - completion.c - 1 - ..\..\..\components\drivers\ipc\completion.c - - - workqueue.c - 1 - ..\..\..\components\drivers\ipc\workqueue.c - - - waitqueue.c - 1 - ..\..\..\components\drivers\ipc\waitqueue.c + ..\..\..\..\components\drivers\ipc\dataqueue.c ringbuffer.c 1 - ..\..\..\components\drivers\ipc\ringbuffer.c + ..\..\..\..\components\drivers\ipc\ringbuffer.c + + + ringblk_buf.c + 1 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + waitqueue.c + 1 + ..\..\..\..\components\drivers\ipc\waitqueue.c + + + workqueue.c + 1 + ..\..\..\..\components\drivers\ipc\workqueue.c + + + pipe.c + 1 + ..\..\..\..\components\drivers\ipc\pipe.c + + + completion.c + 1 + ..\..\..\..\components\drivers\ipc\completion.c pin.c 1 - ..\..\..\components\drivers\misc\pin.c + ..\..\..\..\components\drivers\misc\pin.c serial.c 1 - ..\..\..\components\drivers\serial\serial.c + ..\..\..\..\components\drivers\serial\serial.c @@ -536,9 +499,9 @@ Drivers - startup_gd32f4xx.s + startup_gd32f20x_cl.s 2 - ..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\ARM\startup_gd32f4xx.s + ..\libraries\GD32F20x_Firmware_Library\CMSIS\GD\GD32F20x\Source\ARM\startup_gd32f20x_cl.s board.c @@ -563,17 +526,17 @@ shell.c 1 - ..\..\..\components\finsh\shell.c + ..\..\..\..\components\finsh\shell.c msh.c 1 - ..\..\..\components\finsh\msh.c + ..\..\..\..\components\finsh\msh.c cmd.c 1 - ..\..\..\components\finsh\cmd.c + ..\..\..\..\components\finsh\cmd.c @@ -581,69 +544,69 @@ Kernel - mempool.c + irq.c 1 - ..\..\..\src\mempool.c - - - kservice.c - 1 - ..\..\..\src\kservice.c - - - timer.c - 1 - ..\..\..\src\timer.c - - - scheduler.c - 1 - ..\..\..\src\scheduler.c - - - device.c - 1 - ..\..\..\src\device.c - - - clock.c - 1 - ..\..\..\src\clock.c - - - mem.c - 1 - ..\..\..\src\mem.c - - - idle.c - 1 - ..\..\..\src\idle.c + ..\..\..\..\src\irq.c components.c 1 - ..\..\..\src\components.c - - - object.c - 1 - ..\..\..\src\object.c - - - irq.c - 1 - ..\..\..\src\irq.c + ..\..\..\..\src\components.c thread.c 1 - ..\..\..\src\thread.c + ..\..\..\..\src\thread.c + + + clock.c + 1 + ..\..\..\..\src\clock.c + + + mem.c + 1 + ..\..\..\..\src\mem.c + + + device.c + 1 + ..\..\..\..\src\device.c + + + timer.c + 1 + ..\..\..\..\src\timer.c + + + kservice.c + 1 + ..\..\..\..\src\kservice.c + + + scheduler.c + 1 + ..\..\..\..\src\scheduler.c + + + idle.c + 1 + ..\..\..\..\src\idle.c ipc.c 1 - ..\..\..\src\ipc.c + ..\..\..\..\src\ipc.c + + + object.c + 1 + ..\..\..\..\src\object.c + + + mempool.c + 1 + ..\..\..\..\src\mempool.c @@ -651,44 +614,70 @@ Libraries - gd32f4xx_syscfg.c + system_gd32f20x.c 1 - ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_syscfg.c + ..\libraries\GD32F20x_Firmware_Library\CMSIS\GD\GD32F20x\Source\system_gd32f20x.c - gd32f4xx_exti.c + gd32f20x_exti.c 1 - ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_exti.c + ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_exti.c - gd32f4xx_gpio.c + gd32f20x_gpio.c 1 - ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_gpio.c + ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_gpio.c - gd32f4xx_rcu.c + gd32f20x_misc.c 1 - ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_rcu.c + ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_misc.c - gd32f4xx_misc.c + gd32f20x_rcu.c 1 - ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_misc.c + ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_rcu.c - gd32f4xx_usart.c + gd32f20x_usart.c 1 - ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_usart.c - - - system_gd32f4xx.c - 1 - ..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\system_gd32f4xx.c + ..\libraries\GD32F20x_Firmware_Library\GD32F20x_standard_peripheral\Source\gd32f20x_usart.c + + ::CMSIS + + + + + + + + + + + + + + + + + + <Project Info> + + + + + + 0 + 1 + + + +
    diff --git a/bsp/gd32/arm/gd32207i-eval/rtconfig.h b/bsp/gd32/arm/gd32207i-eval/rtconfig.h new file mode 100644 index 0000000000..974ca3e4b8 --- /dev/null +++ b/bsp/gd32/arm/gd32207i-eval/rtconfig.h @@ -0,0 +1,208 @@ +#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_HOOK_USING_FUNC_PTR +#define RT_USING_IDLE_HOOK +#define RT_IDLE_HOOK_LIST_SIZE 4 +#define IDLE_THREAD_STACK_SIZE 256 + +/* kservice optimization */ + +#define RT_DEBUG +#define RT_DEBUG_COLOR + +/* 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_SMALL_MEM_AS_HEAP +#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 0x40100 + +/* 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 RT_USING_MSH +#define FINSH_USING_MSH +#define FINSH_THREAD_NAME "tshell" +#define FINSH_THREAD_PRIORITY 20 +#define FINSH_THREAD_STACK_SIZE 4096 +#define FINSH_USING_HISTORY +#define FINSH_HISTORY_LINES 5 +#define FINSH_USING_SYMTAB +#define FINSH_CMD_SIZE 80 +#define MSH_USING_BUILT_IN_COMMANDS +#define FINSH_USING_DESCRIPTION +#define FINSH_ARG_MAX 10 + +/* Device virtual file system */ + + +/* Device Drivers */ + +#define RT_USING_DEVICE_IPC +#define RT_USING_SYSTEM_WORKQUEUE +#define RT_SYSTEM_WORKQUEUE_STACKSIZE 2048 +#define RT_SYSTEM_WORKQUEUE_PRIORITY 23 +#define RT_USING_SERIAL +#define RT_USING_SERIAL_V1 +#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_LIBC_DEFAULT_TIMEZONE 8 + +/* POSIX (Portable Operating System Interface) layer */ + + +/* Interprocess Communication (IPC) */ + + +/* Socket is in the 'Network' category */ + +/* Network */ + + +/* VBUS(Virtual Software BUS) */ + + +/* Utilities */ + + +/* RT-Thread Utestcases */ + + +/* RT-Thread online packages */ + +/* IoT - internet of things */ + + +/* Wi-Fi */ + +/* Marvell WiFi */ + + +/* Wiced WiFi */ + + +/* IoT Cloud */ + + +/* security packages */ + + +/* language packages */ + +/* JSON: JavaScript Object Notation, a lightweight data-interchange format */ + + +/* XML: Extensible Markup Language */ + + +/* multimedia packages */ + +/* LVGL: powerful and easy-to-use embedded GUI library */ + + +/* u8g2: a monochrome graphic library */ + + +/* PainterEngine: A cross-platform graphics application framework written in C language */ + + +/* tools packages */ + + +/* system packages */ + +/* enhanced kernel services */ + + +/* POSIX extension functions */ + + +/* acceleration: Assembly language or algorithmic acceleration packages */ + + +/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */ + + +/* Micrium: Micrium software products porting for RT-Thread */ + + +/* peripheral libraries and drivers */ + + +/* AI packages */ + + +/* miscellaneous packages */ + +/* project laboratory */ + +/* samples: kernel and components samples */ + + +/* entertainment: terminal games and other interesting software packages */ + + +/* Hardware Drivers Config */ + +#define SOC_SERIES_GD32F20x +#define SOC_GD32207I + +/* Onboard Peripheral Drivers */ + +/* On-chip Peripheral Drivers */ + +#define BSP_USING_GPIO +#define BSP_USING_UART +#define BSP_USING_UART0 +#define BSP_USING_UART1 + +/* Board extended module Drivers */ + + +#endif diff --git a/bsp/gd32/arm/gd32207i-eval/rtconfig.py b/bsp/gd32/arm/gd32207i-eval/rtconfig.py new file mode 100644 index 0000000000..4285e6b03c --- /dev/null +++ b/bsp/gd32/arm/gd32207i-eval/rtconfig.py @@ -0,0 +1,150 @@ +import os + +# toolchains options +ARCH='arm' +CPU='cortex-m3' +CROSS_TOOL='keil' + +# bsp lib config +BSP_LIBRARY_TYPE = None + +if os.getenv('RTT_CC'): + CROSS_TOOL = os.getenv('RTT_CC') +if os.getenv('RTT_ROOT'): + RTT_ROOT = os.getenv('RTT_ROOT') + +# cross_tool provides the cross compiler +# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR +if CROSS_TOOL == 'gcc': + PLATFORM = 'gcc' + EXEC_PATH = r'C:\Users\XXYYZZ' +elif CROSS_TOOL == 'keil': + PLATFORM = 'armcc' + EXEC_PATH = r'C:/Keil_v5' +elif CROSS_TOOL == 'iar': + PLATFORM = 'iar' + EXEC_PATH = r'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.0' + +if os.getenv('RTT_EXEC_PATH'): + EXEC_PATH = os.getenv('RTT_EXEC_PATH') + +BUILD = 'debug' + +if PLATFORM == 'gcc': + # toolchains + PREFIX = 'arm-none-eabi-' + CC = PREFIX + 'gcc' + AS = PREFIX + 'gcc' + AR = PREFIX + 'ar' + CXX = PREFIX + 'g++' + LINK = PREFIX + 'gcc' + TARGET_EXT = 'elf' + SIZE = PREFIX + 'size' + OBJDUMP = PREFIX + 'objdump' + OBJCPY = PREFIX + 'objcopy' + + DEVICE = ' -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections' + CFLAGS = DEVICE + ' -Dgcc' + AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb ' + LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler -T board/linker_scripts/link.ld' + + CPATH = '' + LPATH = '' + + if BUILD == 'debug': + CFLAGS += ' -O0 -gdwarf-2 -g' + AFLAGS += ' -gdwarf-2' + else: + CFLAGS += ' -O2' + + CXXFLAGS = CFLAGS + + POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' + +elif PLATFORM == 'armcc': + # toolchains + CC = 'armcc' + CXX = 'armcc' + AS = 'armasm' + AR = 'armar' + LINK = 'armlink' + TARGET_EXT = 'axf' + + DEVICE = ' --cpu Cortex-M3.fp ' + CFLAGS = '-c ' + DEVICE + ' --apcs=interwork --c99' + AFLAGS = DEVICE + ' --apcs=interwork ' + LFLAGS = DEVICE + ' --scatter "board\linker_scripts\link.sct" --info sizes --info totals --info unused --info veneers --list rtthread.map --strict' + CFLAGS += ' -I' + EXEC_PATH + '/ARM/ARMCC/include' + LFLAGS += ' --libpath=' + EXEC_PATH + '/ARM/ARMCC/lib' + + CFLAGS += ' -D__MICROLIB ' + AFLAGS += ' --pd "__MICROLIB SETA 1" ' + LFLAGS += ' --library_type=microlib ' + EXEC_PATH += '/ARM/ARMCC/bin/' + + if BUILD == 'debug': + CFLAGS += ' -g -O0' + AFLAGS += ' -g' + else: + CFLAGS += ' -O2' + + CXXFLAGS = CFLAGS + CFLAGS += ' -std=c99' + + POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' + +elif PLATFORM == 'iar': + # toolchains + CC = 'iccarm' + CXX = 'iccarm' + AS = 'iasmarm' + AR = 'iarchive' + LINK = 'ilinkarm' + TARGET_EXT = 'out' + + DEVICE = '-Dewarm' + + CFLAGS = DEVICE + CFLAGS += ' --diag_suppress Pa050' + CFLAGS += ' --no_cse' + CFLAGS += ' --no_unroll' + CFLAGS += ' --no_inline' + CFLAGS += ' --no_code_motion' + CFLAGS += ' --no_tbaa' + CFLAGS += ' --no_clustering' + CFLAGS += ' --no_scheduling' + CFLAGS += ' --endian=little' + CFLAGS += ' --cpu=Cortex-M3' + CFLAGS += ' -e' + CFLAGS += ' --fpu=None' + CFLAGS += ' --dlib_config "' + EXEC_PATH + '/arm/INC/c/DLib_Config_Normal.h"' + CFLAGS += ' --silent' + + AFLAGS = DEVICE + AFLAGS += ' -s+' + AFLAGS += ' -w+' + AFLAGS += ' -r' + AFLAGS += ' --cpu Cortex-M3' + AFLAGS += ' --fpu None' + AFLAGS += ' -S' + + if BUILD == 'debug': + CFLAGS += ' --debug' + CFLAGS += ' -On' + else: + CFLAGS += ' -Oh' + + LFLAGS = ' --config "board/linker_scripts/link.icf"' + LFLAGS += ' --entry __iar_program_start' + + CXXFLAGS = CFLAGS + + EXEC_PATH = EXEC_PATH + '/arm/bin/' + POST_ACTION = 'ielftool --bin $TARGET rtthread.bin' + +def dist_handle(BSP_ROOT, dist_dir): + import sys + cwd_path = os.getcwd() + sys.path.append(os.path.join(os.path.dirname(BSP_ROOT), 'tools')) + from sdk_dist import dist_do_building + dist_do_building(BSP_ROOT, dist_dir) diff --git a/bsp/gd32/arm/gd32207i-eval/template.ewp b/bsp/gd32/arm/gd32207i-eval/template.ewp new file mode 100644 index 0000000000..6fb4d43cc8 --- /dev/null +++ b/bsp/gd32/arm/gd32207i-eval/template.ewp @@ -0,0 +1,1889 @@ + + + 2 + + Debug + + ARM + + 1 + + General + 3 + + 22 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 22 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + + diff --git a/bsp/gd32/gd32107c-eval/template.uvoptx b/bsp/gd32/arm/gd32207i-eval/template.uvoptx similarity index 97% rename from bsp/gd32/gd32107c-eval/template.uvoptx rename to bsp/gd32/arm/gd32207i-eval/template.uvoptx index 4dfb02c5ad..d6cce1a318 100644 --- a/bsp/gd32/gd32107c-eval/template.uvoptx +++ b/bsp/gd32/arm/gd32207i-eval/template.uvoptx @@ -73,7 +73,7 @@ 0 - 1 + 0 0 1 @@ -120,7 +120,7 @@ 0 UL2CM3 - UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0GD32F10x_CL -FL040000 -FS08000000 -FP0($$Device:GD32F107VC$Flash\GD32F10x_CL.FLM) + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0GD32F20x_CL -FL0300000 -FS08000000 -FP0($$Device:GD32F207IK$Flash\GD32F20x_CL.FLM) diff --git a/bsp/gd32/arm/gd32207i-eval/template.uvproj b/bsp/gd32/arm/gd32207i-eval/template.uvproj new file mode 100644 index 0000000000..28520e5350 --- /dev/null +++ b/bsp/gd32/arm/gd32207i-eval/template.uvproj @@ -0,0 +1,628 @@ + + + + 1.1 + +
    ### uVision Project, (C) Keil Software
    + + + + rt-thread + 0x4 + ARM-ADS + 0 + + + GD32F207IK + GigaDevice + IRAM(0x20000000-0x040000) IROM(0x08000000-0x300000) CLOCK(25000000) CPUTYPE("Cortex-M3") + + "Startup\GD\GD32F20x\startup_gd32f20x_cl.s" ("GD32F20x Startup Code") + UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F20x_CL -FS08000000 -FL0300000) + 0 + gd32f20x0.h + + + + + + + + + + SFD\GD\GD32F20x\GD32F20x_CL.SFR + 0 + 0 + + + + GD\GD32F20x\ + GD\GD32F20x\ + + 0 + 0 + 0 + 0 + 1 + + .\output\ + rtthread + 1 + 0 + 1 + 1 + 1 + .\build\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + + 0 + 3 + + + + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 2 + 1 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x30000 + + + 1 + 0x8000000 + 0x300000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x300000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x30000 + + + 0 + 0x10000000 + 0x10000 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + + + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Include;..\..\..\Library\Firmware\CMSIS\GD\GD32F20x\Include;..\..\..\Library\Utilities;..\ + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + Application + + + main.c + 1 + ..\main.c + + + gd32f20x_it.c + 1 + ..\gd32f20x_it.c + + + + + CMSIS + + + system_gd32f20x.c + 1 + ..\..\..\Library\Firmware\CMSIS\GD\GD32F20x\Source\system_gd32f20x.c + + + + + GD32F20x_Peripherals + + + gd32f20x_adc.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_adc.c + + + gd32f20x_can.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_can.c + + + gd32f20x_crc.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_crc.c + + + gd32f20x_ctc.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_ctc.c + + + gd32f20x_dac.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_dac.c + + + gd32f20x_dbg.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_dbg.c + + + gd32f20x_dci.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_dci.c + + + gd32f20x_dma.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_dma.c + + + gd32f20x_enet.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_enet.c + + + gd32f20x_exmc.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_exmc.c + + + gd32f20x_exti.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_exti.c + + + gd32f20x_fmc.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_fmc.c + + + gd32f20x_fwdgt.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_fwdgt.c + + + gd32f20x_gpio.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_gpio.c + + + gd32f20x_i2c.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_i2c.c + + + gd32f20x_ipa.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_ipa.c + + + gd32f20x_iref.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_iref.c + + + gd32f20x_misc.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_misc.c + + + gd32f20x_pmu.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_pmu.c + + + gd32f20x_rcu.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_rcu.c + + + gd32f20x_rtc.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_rtc.c + + + gd32f20x_sdio.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_sdio.c + + + gd32f20x_spi.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_spi.c + + + gd32f20x_syscfg.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_syscfg.c + + + gd32f20x_timer.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_timer.c + + + gd32f20x_tli.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_tli.c + + + gd32f20x_trng.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_trng.c + + + gd32f20x_usart.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_usart.c + + + gd32f20x_wwdgt.c + 1 + ..\..\..\Library\Firmware\GD32F20x_standard_peripheral\Source\gd32f20x_wwdgt.c + + + + + GD32F20x_START + + + gd32f205r_start.c + 1 + ..\..\..\Library\Utilities\gd32f205r_start.c + + + + + Startup + + + startup_gd32f20x_cl.s + 2 + ..\..\..\Library\Firmware\CMSIS\GD\GD32F20x\Source\ARM\startup_gd32f20x_cl.s + + + + + Doc + + + readme.txt + 5 + ..\readme.txt + + + + + + + +
    diff --git a/bsp/gd32/arm/gd32207i-eval/template.uvprojx b/bsp/gd32/arm/gd32207i-eval/template.uvprojx new file mode 100644 index 0000000000..839cfea9a9 --- /dev/null +++ b/bsp/gd32/arm/gd32207i-eval/template.uvprojx @@ -0,0 +1,417 @@ + + + + 2.1 + +
    ### uVision Project, (C) Keil Software
    + + + + rt-thread + 0x4 + ARM-ADS + 0 + + + GD32F207IK + GigaDevice + GigaDevice.GD32F20x_DFP.2.2.2 + http://gd32mcu.com/data/documents/pack/ + IRAM(0x20000000,0x040000) IROM(0x08000000,0x0300000) CPUTYPE("Cortex-M3") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F20x_CL -FS08000000 -FL0300000 -FP0($$Device:GD32F207IK$Flash\GD32F20x_CL.FLM)) + 0 + $$Device:GD32F207IK$Device\Include\gd32f20x.h + + + + + + + + + + $$Device:GD32F207IK$SVD\GD32F20x_CL.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\build\ + rtthread + 1 + 0 + 0 + 1 + 0 + .\build\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin !L --output rtthread.bin + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x40000 + + + 1 + 0x8000000 + 0x300000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x300000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x40000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + .\gd32_rom.ld + + + + + + + + + + + ::CMSIS + + + + + + + + + + + + + + + + + + + + + + <Project Info> + + + + + + 0 + 1 + + + + +
    diff --git a/bsp/gd32/arm/gd32303e-eval/.config b/bsp/gd32/arm/gd32303e-eval/.config new file mode 100644 index 0000000000..6d32e7b7d3 --- /dev/null +++ b/bsp/gd32/arm/gd32303e-eval/.config @@ -0,0 +1,698 @@ +# +# Automatically generated file; DO NOT EDIT. +# RT-Thread Configuration +# + +# +# RT-Thread Kernel +# +CONFIG_RT_NAME_MAX=8 +# CONFIG_RT_USING_ARCH_DATA_TYPE is not set +# CONFIG_RT_USING_SMP is not set +CONFIG_RT_ALIGN_SIZE=4 +# CONFIG_RT_THREAD_PRIORITY_8 is not set +CONFIG_RT_THREAD_PRIORITY_32=y +# CONFIG_RT_THREAD_PRIORITY_256 is not set +CONFIG_RT_THREAD_PRIORITY_MAX=32 +CONFIG_RT_TICK_PER_SECOND=100 +CONFIG_RT_USING_OVERFLOW_CHECK=y +CONFIG_RT_USING_HOOK=y +CONFIG_RT_HOOK_USING_FUNC_PTR=y +CONFIG_RT_USING_IDLE_HOOK=y +CONFIG_RT_IDLE_HOOK_LIST_SIZE=4 +CONFIG_IDLE_THREAD_STACK_SIZE=256 +# CONFIG_RT_USING_TIMER_SOFT is not set + +# +# kservice optimization +# +# CONFIG_RT_KSERVICE_USING_STDLIB is not set +# CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set +# CONFIG_RT_USING_TINY_FFS is not set +# CONFIG_RT_PRINTF_LONGLONG is not set +CONFIG_RT_DEBUG=y +CONFIG_RT_DEBUG_COLOR=y +# CONFIG_RT_DEBUG_INIT_CONFIG is not set +# CONFIG_RT_DEBUG_THREAD_CONFIG is not set +# CONFIG_RT_DEBUG_SCHEDULER_CONFIG is not set +# CONFIG_RT_DEBUG_IPC_CONFIG is not set +# CONFIG_RT_DEBUG_TIMER_CONFIG is not set +# CONFIG_RT_DEBUG_IRQ_CONFIG is not set +# CONFIG_RT_DEBUG_MEM_CONFIG is not set +# CONFIG_RT_DEBUG_SLAB_CONFIG is not set +# CONFIG_RT_DEBUG_MEMHEAP_CONFIG is not set +# CONFIG_RT_DEBUG_MODULE_CONFIG is not set + +# +# Inter-Thread communication +# +CONFIG_RT_USING_SEMAPHORE=y +CONFIG_RT_USING_MUTEX=y +CONFIG_RT_USING_EVENT=y +CONFIG_RT_USING_MAILBOX=y +CONFIG_RT_USING_MESSAGEQUEUE=y +# CONFIG_RT_USING_SIGNALS is not set + +# +# Memory Management +# +CONFIG_RT_USING_MEMPOOL=y +CONFIG_RT_USING_SMALL_MEM=y +# CONFIG_RT_USING_SLAB is not set +# CONFIG_RT_USING_MEMHEAP is not set +CONFIG_RT_USING_SMALL_MEM_AS_HEAP=y +# CONFIG_RT_USING_MEMHEAP_AS_HEAP is not set +# CONFIG_RT_USING_SLAB_AS_HEAP is not set +# CONFIG_RT_USING_USERHEAP is not set +# CONFIG_RT_USING_NOHEAP is not set +# CONFIG_RT_USING_MEMTRACE is not set +# CONFIG_RT_USING_HEAP_ISR is not set +CONFIG_RT_USING_HEAP=y + +# +# Kernel Device Object +# +CONFIG_RT_USING_DEVICE=y +# CONFIG_RT_USING_DEVICE_OPS is not set +# CONFIG_RT_USING_INTERRUPT_INFO is not set +CONFIG_RT_USING_CONSOLE=y +CONFIG_RT_CONSOLEBUF_SIZE=128 +CONFIG_RT_CONSOLE_DEVICE_NAME="uart1" +CONFIG_RT_VER_NUM=0x40100 +# CONFIG_RT_USING_CPU_FFS is not set +# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set + +# +# RT-Thread Components +# +CONFIG_RT_USING_COMPONENTS_INIT=y +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_FINSH_USING_MSH=y +CONFIG_FINSH_THREAD_NAME="tshell" +CONFIG_FINSH_THREAD_PRIORITY=20 +CONFIG_FINSH_THREAD_STACK_SIZE=4096 +CONFIG_FINSH_USING_HISTORY=y +CONFIG_FINSH_HISTORY_LINES=5 +CONFIG_FINSH_USING_SYMTAB=y +CONFIG_FINSH_CMD_SIZE=80 +CONFIG_MSH_USING_BUILT_IN_COMMANDS=y +CONFIG_FINSH_USING_DESCRIPTION=y +# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set +# CONFIG_FINSH_USING_AUTH is not set +CONFIG_FINSH_ARG_MAX=10 + +# +# Device virtual file system +# +# CONFIG_RT_USING_DFS is not set + +# +# Device Drivers +# +CONFIG_RT_USING_DEVICE_IPC=y +CONFIG_RT_USING_SYSTEM_WORKQUEUE=y +CONFIG_RT_SYSTEM_WORKQUEUE_STACKSIZE=2048 +CONFIG_RT_SYSTEM_WORKQUEUE_PRIORITY=23 +CONFIG_RT_USING_SERIAL=y +CONFIG_RT_USING_SERIAL_V1=y +# CONFIG_RT_USING_SERIAL_V2 is not set +CONFIG_RT_SERIAL_USING_DMA=y +CONFIG_RT_SERIAL_RB_BUFSZ=64 +# CONFIG_RT_USING_CAN is not set +# CONFIG_RT_USING_HWTIMER is not set +# CONFIG_RT_USING_CPUTIME is not set +# CONFIG_RT_USING_I2C is not set +# CONFIG_RT_USING_PHY is not set +CONFIG_RT_USING_PIN=y +# CONFIG_RT_USING_ADC is not set +# CONFIG_RT_USING_DAC is not set +# CONFIG_RT_USING_PWM is not set +# CONFIG_RT_USING_MTD_NOR is not set +# CONFIG_RT_USING_MTD_NAND is not set +# CONFIG_RT_USING_PM is not set +# CONFIG_RT_USING_RTC is not set +# CONFIG_RT_USING_SDIO is not set +# CONFIG_RT_USING_SPI is not set +# CONFIG_RT_USING_WDT is not set +# CONFIG_RT_USING_AUDIO is not set +# CONFIG_RT_USING_SENSOR is not set +# CONFIG_RT_USING_TOUCH is not set +# CONFIG_RT_USING_HWCRYPTO is not set +# CONFIG_RT_USING_PULSE_ENCODER is not set +# CONFIG_RT_USING_INPUT_CAPTURE is not set +# CONFIG_RT_USING_WIFI is not set + +# +# Using USB +# +# CONFIG_RT_USING_USB is not set +# CONFIG_RT_USING_USB_HOST is not set +# CONFIG_RT_USING_USB_DEVICE is not set + +# +# POSIX layer and C standard library +# +CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 + +# +# POSIX (Portable Operating System Interface) layer +# +# CONFIG_RT_USING_POSIX_FS is not set +# CONFIG_RT_USING_POSIX_DELAY is not set +# CONFIG_RT_USING_POSIX_CLOCK is not set +# CONFIG_RT_USING_POSIX_TIMER is not set +# CONFIG_RT_USING_PTHREADS is not set +# CONFIG_RT_USING_MODULE is not set + +# +# Interprocess Communication (IPC) +# +# CONFIG_RT_USING_POSIX_PIPE is not set +# CONFIG_RT_USING_POSIX_MESSAGE_QUEUE is not set +# CONFIG_RT_USING_POSIX_MESSAGE_SEMAPHORE is not set + +# +# Socket is in the 'Network' category +# + +# +# Network +# +# CONFIG_RT_USING_SAL is not set +# CONFIG_RT_USING_NETDEV is not set +# CONFIG_RT_USING_LWIP is not set +# CONFIG_RT_USING_AT is not set + +# +# VBUS(Virtual Software BUS) +# +# CONFIG_RT_USING_VBUS is not set + +# +# Utilities +# +# CONFIG_RT_USING_RYM is not set +# CONFIG_RT_USING_ULOG is not set +# CONFIG_RT_USING_UTEST is not set +# CONFIG_RT_USING_VAR_EXPORT is not set +# CONFIG_RT_USING_RT_LINK is not set + +# +# RT-Thread Utestcases +# +# CONFIG_RT_USING_UTESTCASES is not set + +# +# RT-Thread online packages +# + +# +# 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 +# CONFIG_PKG_USING_WEBCLIENT is not set +# CONFIG_PKG_USING_WEBNET is not set +# CONFIG_PKG_USING_MONGOOSE is not set +# CONFIG_PKG_USING_MYMQTT is not set +# CONFIG_PKG_USING_KAWAII_MQTT is not set +# CONFIG_PKG_USING_BC28_MQTT is not set +# CONFIG_PKG_USING_WEBTERMINAL is not set +# CONFIG_PKG_USING_LIBMODBUS is not set +# CONFIG_PKG_USING_FREEMODBUS is not set +# CONFIG_PKG_USING_NANOPB is not set + +# +# Wi-Fi +# + +# +# Marvell WiFi +# +# CONFIG_PKG_USING_WLANMARVELL is not set + +# +# Wiced WiFi +# +# CONFIG_PKG_USING_WLAN_WICED is not set +# CONFIG_PKG_USING_RW007 is not set +# CONFIG_PKG_USING_COAP is not set +# CONFIG_PKG_USING_NOPOLL is not set +# CONFIG_PKG_USING_NETUTILS is not set +# CONFIG_PKG_USING_CMUX is not set +# CONFIG_PKG_USING_PPP_DEVICE is not set +# CONFIG_PKG_USING_AT_DEVICE is not set +# CONFIG_PKG_USING_ATSRV_SOCKET is not set +# CONFIG_PKG_USING_WIZNET is not set +# CONFIG_PKG_USING_ZB_COORDINATOR is not set + +# +# IoT Cloud +# +# CONFIG_PKG_USING_ONENET is not set +# CONFIG_PKG_USING_GAGENT_CLOUD is not set +# CONFIG_PKG_USING_ALI_IOTKIT is not set +# CONFIG_PKG_USING_AZURE is not set +# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set +# CONFIG_PKG_USING_JIOT-C-SDK is not set +# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set +# CONFIG_PKG_USING_JOYLINK is not set +# CONFIG_PKG_USING_EZ_IOT_OS is not set +# CONFIG_PKG_USING_IOTSHARP_SDK 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 +# CONFIG_PKG_USING_AIRKISS_OPEN is not set +# CONFIG_PKG_USING_LIBRWS is not set +# CONFIG_PKG_USING_TCPSERVER is not set +# CONFIG_PKG_USING_PROTOBUF_C is not set +# CONFIG_PKG_USING_DLT645 is not set +# CONFIG_PKG_USING_QXWZ is not set +# CONFIG_PKG_USING_SMTP_CLIENT is not set +# CONFIG_PKG_USING_ABUP_FOTA is not set +# CONFIG_PKG_USING_LIBCURL2RTT is not set +# CONFIG_PKG_USING_CAPNP is not set +# CONFIG_PKG_USING_AGILE_TELNET is not set +# CONFIG_PKG_USING_NMEALIB is not set +# CONFIG_PKG_USING_PDULIB is not set +# CONFIG_PKG_USING_BTSTACK is not set +# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set +# CONFIG_PKG_USING_WAYZ_IOTKIT is not set +# CONFIG_PKG_USING_MAVLINK is not set +# CONFIG_PKG_USING_BSAL is not set +# CONFIG_PKG_USING_AGILE_MODBUS is not set +# CONFIG_PKG_USING_AGILE_FTP is not set +# CONFIG_PKG_USING_EMBEDDEDPROTO is not set +# CONFIG_PKG_USING_RT_LINK_HW is not set +# CONFIG_PKG_USING_LORA_PKT_FWD is not set +# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set +# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set +# CONFIG_PKG_USING_HM is not set +# CONFIG_PKG_USING_SMALL_MODBUS is not set +# CONFIG_PKG_USING_NET_SERVER is not set + +# +# security packages +# +# CONFIG_PKG_USING_MBEDTLS is not set +# CONFIG_PKG_USING_LIBSODIUM is not set +# CONFIG_PKG_USING_LIBHYDROGEN is not set +# CONFIG_PKG_USING_TINYCRYPT is not set +# CONFIG_PKG_USING_TFM is not set +# CONFIG_PKG_USING_YD_CRYPTO is not set + +# +# 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 +# CONFIG_PKG_USING_MICROPYTHON is not set +# CONFIG_PKG_USING_PIKASCRIPT is not set + +# +# multimedia packages +# + +# +# LVGL: powerful and easy-to-use embedded GUI library +# +# CONFIG_PKG_USING_LVGL is not set +# CONFIG_PKG_USING_LITTLEVGL2RTT is not set +# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set +# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set + +# +# u8g2: a monochrome graphic library +# +# CONFIG_PKG_USING_U8G2_OFFICIAL is not set +# CONFIG_PKG_USING_U8G2 is not set +# CONFIG_PKG_USING_OPENMV is not set +# CONFIG_PKG_USING_MUPDF is not set +# CONFIG_PKG_USING_STEMWIN is not set +# CONFIG_PKG_USING_WAVPLAYER is not set +# CONFIG_PKG_USING_TJPGD is not set +# CONFIG_PKG_USING_PDFGEN is not set +# CONFIG_PKG_USING_HELIX is not set +# CONFIG_PKG_USING_AZUREGUIX is not set +# CONFIG_PKG_USING_TOUCHGFX2RTT is not set +# CONFIG_PKG_USING_NUEMWIN is not set +# CONFIG_PKG_USING_MP3PLAYER is not set +# CONFIG_PKG_USING_TINYJPEG is not set +# CONFIG_PKG_USING_UGUI is not set + +# +# PainterEngine: A cross-platform graphics application framework written in C language +# +# CONFIG_PKG_USING_PAINTERENGINE is not set +# CONFIG_PKG_USING_PAINTERENGINE_AUX is not set +# CONFIG_PKG_USING_MCURSES is not set +# CONFIG_PKG_USING_TERMBOX is not set +# CONFIG_PKG_USING_VT100 is not set +# CONFIG_PKG_USING_QRCODE is not set +# CONFIG_PKG_USING_GUIENGINE is not set + +# +# tools packages +# +# CONFIG_PKG_USING_CMBACKTRACE is not set +# CONFIG_PKG_USING_EASYFLASH is not set +# CONFIG_PKG_USING_EASYLOGGER is not set +# CONFIG_PKG_USING_SYSTEMVIEW is not set +# CONFIG_PKG_USING_SEGGER_RTT is not set +# CONFIG_PKG_USING_RDB 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 +# CONFIG_PKG_USING_ADBD is not set +# CONFIG_PKG_USING_COREMARK is not set +# CONFIG_PKG_USING_DHRYSTONE is not set +# CONFIG_PKG_USING_MEMORYPERF is not set +# CONFIG_PKG_USING_NR_MICRO_SHELL is not set +# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set +# CONFIG_PKG_USING_LUNAR_CALENDAR is not set +# CONFIG_PKG_USING_BS8116A is not set +# CONFIG_PKG_USING_GPS_RMC is not set +# CONFIG_PKG_USING_URLENCODE is not set +# CONFIG_PKG_USING_UMCN is not set +# CONFIG_PKG_USING_LWRB2RTT is not set +# CONFIG_PKG_USING_CPU_USAGE is not set +# CONFIG_PKG_USING_GBK2UTF8 is not set +# CONFIG_PKG_USING_VCONSOLE is not set +# CONFIG_PKG_USING_KDB is not set +# CONFIG_PKG_USING_WAMR is not set +# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set +# CONFIG_PKG_USING_LWLOG is not set +# CONFIG_PKG_USING_ANV_TRACE is not set +# CONFIG_PKG_USING_ANV_MEMLEAK is not set +# CONFIG_PKG_USING_ANV_TESTSUIT is not set +# CONFIG_PKG_USING_ANV_BENCH is not set +# CONFIG_PKG_USING_DEVMEM is not set +# CONFIG_PKG_USING_REGEX is not set +# CONFIG_PKG_USING_MEM_SANDBOX is not set +# CONFIG_PKG_USING_SOLAR_TERMS is not set +# CONFIG_PKG_USING_GAN_ZHI is not set +# CONFIG_PKG_USING_FDT is not set +# CONFIG_PKG_USING_CBOX is not set +# CONFIG_PKG_USING_SNOWFLAKE is not set +# CONFIG_PKG_USING_HASH_MATCH is not set + +# +# system packages +# + +# +# enhanced kernel services +# +# CONFIG_PKG_USING_RT_MEMCPY_CM is not set +# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set +# CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set + +# +# POSIX extension functions +# +# 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 +# +# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set +# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set +# CONFIG_PKG_USING_QFPLIB_M3 is not set + +# +# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard +# +# CONFIG_PKG_USING_CMSIS_5 is not set +# CONFIG_PKG_USING_CMSIS_RTOS1 is not set +# CONFIG_PKG_USING_CMSIS_RTOS2 is not set + +# +# Micrium: Micrium software products porting for RT-Thread +# +# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set +# CONFIG_PKG_USING_UCOSII_WRAPPER is not set +# CONFIG_PKG_USING_UC_CRC is not set +# CONFIG_PKG_USING_UC_CLK is not set +# CONFIG_PKG_USING_UC_COMMON is not set +# CONFIG_PKG_USING_UC_MODBUS is not set +# CONFIG_PKG_USING_RTDUINO 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_FLASHDB is not set +# CONFIG_PKG_USING_SQLITE is not set +# CONFIG_PKG_USING_RTI is not set +# CONFIG_PKG_USING_DFS_YAFFS is not set +# CONFIG_PKG_USING_LITTLEFS is not set +# CONFIG_PKG_USING_DFS_JFFS2 is not set +# CONFIG_PKG_USING_DFS_UFFS is not set +# CONFIG_PKG_USING_LWEXT4 is not set +# CONFIG_PKG_USING_THREAD_POOL is not set +# CONFIG_PKG_USING_ROBOTS is not set +# CONFIG_PKG_USING_EV is not set +# CONFIG_PKG_USING_SYSWATCH is not set +# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set +# CONFIG_PKG_USING_PLCCORE is not set +# CONFIG_PKG_USING_RAMDISK is not set +# CONFIG_PKG_USING_MININI is not set +# CONFIG_PKG_USING_QBOOT is not set +# CONFIG_PKG_USING_PPOOL is not set +# CONFIG_PKG_USING_OPENAMP is not set +# CONFIG_PKG_USING_LPM is not set +# CONFIG_PKG_USING_TLSF is not set +# CONFIG_PKG_USING_EVENT_RECORDER is not set +# CONFIG_PKG_USING_ARM_2D is not set +# CONFIG_PKG_USING_MCUBOOT is not set +# CONFIG_PKG_USING_TINYUSB is not set +# CONFIG_PKG_USING_CHERRYUSB is not set +# CONFIG_PKG_USING_KMULTI_RTIMER is not set +# CONFIG_PKG_USING_TFDB is not set + +# +# peripheral libraries and drivers +# +# CONFIG_PKG_USING_SENSORS_DRIVERS is not set +# CONFIG_PKG_USING_REALTEK_AMEBA is not set +# CONFIG_PKG_USING_SHT2X is not set +# CONFIG_PKG_USING_SHT3X is not set +# CONFIG_PKG_USING_AS7341 is not set +# CONFIG_PKG_USING_STM32_SDIO is not set +# CONFIG_PKG_USING_ICM20608 is not set +# CONFIG_PKG_USING_BUTTON is not set +# CONFIG_PKG_USING_PCF8574 is not set +# CONFIG_PKG_USING_SX12XX is not set +# CONFIG_PKG_USING_SIGNAL_LED is not set +# CONFIG_PKG_USING_LEDBLINK is not set +# CONFIG_PKG_USING_LITTLED is not set +# CONFIG_PKG_USING_LKDGUI is not set +# CONFIG_PKG_USING_NRF5X_SDK is not set +# CONFIG_PKG_USING_NRFX is not set +# 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 +# CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set +# CONFIG_PKG_USING_AD7746 is not set +# CONFIG_PKG_USING_PCA9685 is not set +# CONFIG_PKG_USING_I2C_TOOLS is not set +# CONFIG_PKG_USING_NRF24L01 is not set +# CONFIG_PKG_USING_TOUCH_DRIVERS is not set +# CONFIG_PKG_USING_MAX17048 is not set +# CONFIG_PKG_USING_RPLIDAR is not set +# CONFIG_PKG_USING_AS608 is not set +# CONFIG_PKG_USING_RC522 is not set +# CONFIG_PKG_USING_WS2812B is not set +# CONFIG_PKG_USING_EMBARC_BSP is not set +# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set +# CONFIG_PKG_USING_MULTI_RTIMER is not set +# CONFIG_PKG_USING_MAX7219 is not set +# CONFIG_PKG_USING_BEEP is not set +# CONFIG_PKG_USING_EASYBLINK is not set +# CONFIG_PKG_USING_PMS_SERIES is not set +# CONFIG_PKG_USING_CAN_YMODEM is not set +# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set +# CONFIG_PKG_USING_QLED is not set +# CONFIG_PKG_USING_PAJ7620 is not set +# CONFIG_PKG_USING_AGILE_CONSOLE is not set +# CONFIG_PKG_USING_LD3320 is not set +# CONFIG_PKG_USING_WK2124 is not set +# CONFIG_PKG_USING_LY68L6400 is not set +# CONFIG_PKG_USING_DM9051 is not set +# CONFIG_PKG_USING_SSD1306 is not set +# CONFIG_PKG_USING_QKEY is not set +# CONFIG_PKG_USING_RS485 is not set +# CONFIG_PKG_USING_RS232 is not set +# CONFIG_PKG_USING_NES is not set +# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set +# CONFIG_PKG_USING_VDEVICE is not set +# CONFIG_PKG_USING_SGM706 is not set +# CONFIG_PKG_USING_STM32WB55_SDK is not set +# CONFIG_PKG_USING_RDA58XX is not set +# CONFIG_PKG_USING_LIBNFC is not set +# CONFIG_PKG_USING_MFOC is not set +# CONFIG_PKG_USING_TMC51XX is not set +# CONFIG_PKG_USING_TCA9534 is not set +# CONFIG_PKG_USING_KOBUKI is not set +# CONFIG_PKG_USING_ROSSERIAL is not set +# CONFIG_PKG_USING_MICRO_ROS is not set +# CONFIG_PKG_USING_MCP23008 is not set +# CONFIG_PKG_USING_BLUETRUM_SDK is not set +# CONFIG_PKG_USING_MISAKA_AT24CXX is not set +# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set +# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set +# CONFIG_PKG_USING_BL_MCU_SDK is not set +# 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 +# +# CONFIG_PKG_USING_LIBANN is not set +# CONFIG_PKG_USING_NNOM is not set +# CONFIG_PKG_USING_ONNX_BACKEND is not set +# CONFIG_PKG_USING_ONNX_PARSER is not set +# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set +# CONFIG_PKG_USING_ELAPACK is not set +# CONFIG_PKG_USING_ULAPACK is not set +# CONFIG_PKG_USING_QUEST is not set +# CONFIG_PKG_USING_NAXOS is not set + +# +# miscellaneous packages +# + +# +# project laboratory +# + +# +# samples: kernel and components samples +# +# CONFIG_PKG_USING_KERNEL_SAMPLES is not set +# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set +# CONFIG_PKG_USING_NETWORK_SAMPLES is not set +# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set + +# +# entertainment: terminal games and other interesting software packages +# +# CONFIG_PKG_USING_CMATRIX is not set +# CONFIG_PKG_USING_SL is not set +# CONFIG_PKG_USING_CAL is not set +# CONFIG_PKG_USING_ACLOCK is not set +# CONFIG_PKG_USING_THREES is not set +# CONFIG_PKG_USING_2048 is not set +# CONFIG_PKG_USING_SNAKE is not set +# CONFIG_PKG_USING_TETRIS is not set +# CONFIG_PKG_USING_DONUT is not set +# CONFIG_PKG_USING_COWSAY is not set +# CONFIG_PKG_USING_LIBCSV is not set +# CONFIG_PKG_USING_OPTPARSE is not set +# CONFIG_PKG_USING_FASTLZ is not set +# CONFIG_PKG_USING_MINILZO is not set +# CONFIG_PKG_USING_QUICKLZ is not set +# CONFIG_PKG_USING_LZMA is not set +# CONFIG_PKG_USING_MULTIBUTTON is not set +# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set +# CONFIG_PKG_USING_CANFESTIVAL is not set +# CONFIG_PKG_USING_ZLIB is not set +# CONFIG_PKG_USING_MINIZIP is not set +# CONFIG_PKG_USING_HEATSHRINK is not set +# CONFIG_PKG_USING_DSTR is not set +# CONFIG_PKG_USING_TINYFRAME is not set +# CONFIG_PKG_USING_KENDRYTE_DEMO is not set +# CONFIG_PKG_USING_DIGITALCTRL is not set +# CONFIG_PKG_USING_UPACKER is not set +# CONFIG_PKG_USING_UPARAM is not set +# CONFIG_PKG_USING_HELLO is not set +# CONFIG_PKG_USING_VI is not set +# CONFIG_PKG_USING_KI is not set +# CONFIG_PKG_USING_ARMv7M_DWT is not set +# CONFIG_PKG_USING_UKAL is not set +# CONFIG_PKG_USING_CRCLIB is not set +# CONFIG_PKG_USING_LWGPS is not set +# CONFIG_PKG_USING_STATE_MACHINE is not set +# CONFIG_PKG_USING_DESIGN_PATTERN is not set +# CONFIG_PKG_USING_CONTROLLER is not set +# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set +# CONFIG_PKG_USING_MFBD is not set +# CONFIG_PKG_USING_SLCAN2RTT is not set +# CONFIG_PKG_USING_SOEM is not set + +# +# Hardware Drivers Config +# +CONFIG_SOC_SERIES_GD32F30x=y +CONFIG_SOC_GD32303Z=y + +# +# Onboard Peripheral Drivers +# + +# +# On-chip Peripheral Drivers +# +CONFIG_BSP_USING_GPIO=y +CONFIG_BSP_USING_UART=y +# CONFIG_BSP_USING_UART0 is not set +CONFIG_BSP_USING_UART1=y +# CONFIG_BSP_UART1_RX_USING_DMA is not set +# CONFIG_BSP_USING_UART2 is not set +# CONFIG_BSP_USING_UART3 is not set +# CONFIG_BSP_USING_UART4 is not set +# CONFIG_BSP_USING_SPI is not set +# CONFIG_BSP_USING_I2C1 is not set +# CONFIG_BSP_USING_ADC is not set +# CONFIG_BSP_USING_TIM is not set +# CONFIG_BSP_USING_ONCHIP_RTC is not set +# CONFIG_BSP_USING_WDT is not set +# CONFIG_BSP_USING_SDIO is not set +# CONFIG_BSP_USING_USBD is not set +# CONFIG_BSP_USING_USBH is not set + +# +# Board extended module Drivers +# diff --git a/bsp/gd32/arm/gd32303e-eval/Kconfig b/bsp/gd32/arm/gd32303e-eval/Kconfig new file mode 100644 index 0000000000..dbc650938f --- /dev/null +++ b/bsp/gd32/arm/gd32303e-eval/Kconfig @@ -0,0 +1,21 @@ +mainmenu "RT-Thread Configuration" + +config BSP_DIR + string + option env="BSP_ROOT" + default "." + +config RTT_DIR + string + option env="RTT_ROOT" + default "../../../.." + +config PKGS_DIR + string + option env="PKGS_ROOT" + default "packages" + +source "$RTT_DIR/Kconfig" +source "$PKGS_DIR/Kconfig" +source "../libraries/Kconfig" +source "board/Kconfig" diff --git a/bsp/gd32/gd32303e-eval/README.md b/bsp/gd32/arm/gd32303e-eval/README.md similarity index 57% rename from bsp/gd32/gd32303e-eval/README.md rename to bsp/gd32/arm/gd32303e-eval/README.md index f71b1cd0e6..c30b3a7636 100644 --- a/bsp/gd32/gd32303e-eval/README.md +++ b/bsp/gd32/arm/gd32303e-eval/README.md @@ -7,29 +7,41 @@ GD3303E-EVAL是-兆易创新推出的一款GD32F30X系列的评估板,最高 该开发板常用 **板载资源** 如下: - GD32303ZET6,主频 120MHz,512KB FLASH ,64KB RAM - - 常用外设 - - LED :5个,LED1 (电源指示灯),LED2(PC0),LED3(PC2),LED4(PE0),LED5(PE1) - - 按键:3个,K1(用户按键,PA0),K2(用户按键,PC13),K3(用户按键,PB14) - + - LED :5个,LED1 (电源指示灯),LED2(PF0),LED3(PF1),LED4(PF2),LED5(PF3) + - 按键:4个,K1(用户按键,PA0),K2(用户按键,PC13),K3(用户按键,PF5),K4(用户按键,PF4) + - General TM * 4、Advanced TM * 2、Basic TM * 2 + - 系统时钟 * 1 + - 看门狗 * 2 + - RTC * 1 + - USART * 3、UART * 2 + - I2C * 2、I2S * 2 + - SPI * 3 + - CAN2.0B * 1 + - USB2.0 OTG FS * 1 + - TFT-LCD + - EXMC/SDRAM * 1 + - ADC * 3 + - DAC * 2 + - 最多支持112GPIOs - 常用接口:USB 接口 - - 调试接口:GD-LINK ## 外设支持 本 BSP 目前对外设的支持情况如下: -| **片上外设** | **支持情况** | **备注** | -|:--------- |:--------:|:------------------------------------- | -| GPIO | 支持 | PA0, PA1... PK15 ---> PIN: 0, 1...144 | -| UART | 支持 | UART0 - UART4 | -| I2C | 支持 | I2C1 | -| SPI | 支持 | SPI0 - SPI2 | -| SPI FLASH | 支持 | | -| **扩展模块** | **支持情况** | **备注** | -| 暂无 | 暂不支持 | 暂不支持 | +| **片上外设** | **支持情况** | **备注** | +| :----------- | :----------: | :------------------------------- | +| GPIO | 支持 | PA0, PA1... ---> PIN: 0, 1...111 | +| UART | 支持 | UART0 - UART4 | +| I2C | 支持 | I2C1 | +| SPI | 支持 | SPI0 - SPI2 | +| SPI FLASH | 支持 | | +| ADC | 支持 | ADC0 - ADC2 | +| **扩展模块** | **支持情况** | **备注** | +| 暂无 | 暂不支持 | 暂不支持 | ## 使用说明 @@ -45,11 +57,11 @@ GD3303E-EVAL是-兆易创新推出的一款GD32F30X系列的评估板,最高 ### 快速上手 -本 BSP 为开发者提供 MDK5 工程,并且支持 GCC 开发环境,也可使用RT-Thread Studio开发。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 +本 BSP 为开发者提供 MDK4、MDK5 和 IAR 工程,并且支持 GCC 开发环境,也可使用RT-Thread Studio开发。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 #### 硬件连接 -使用数据线连接开发板到 PC,使用USB转TTL模块连接PA2(MCU TX)和PA3(MCU RX),打开电源开关。 +使用数据线连接开发板到 PC,使用USB转232连接USART1,打开电源开关。 #### 编译下载 @@ -81,7 +93,7 @@ msh > 3. 输入`pkgs --update`命令更新软件包。 -4. 输入`scons --target=mdk4/mdk5` 命令重新生成工程。 +4. 输入`scons --target=mdk4/mdk5/iar` 命令重新生成工程。 ## 注意事项 diff --git a/bsp/gd32/gd32305r-start/SConscript b/bsp/gd32/arm/gd32303e-eval/SConscript similarity index 100% rename from bsp/gd32/gd32305r-start/SConscript rename to bsp/gd32/arm/gd32303e-eval/SConscript diff --git a/bsp/gd32/gd32303e-eval/SConstruct b/bsp/gd32/arm/gd32303e-eval/SConstruct similarity index 94% rename from bsp/gd32/gd32303e-eval/SConstruct rename to bsp/gd32/arm/gd32303e-eval/SConstruct index d733bb923d..a39a8933ac 100644 --- a/bsp/gd32/gd32303e-eval/SConstruct +++ b/bsp/gd32/arm/gd32303e-eval/SConstruct @@ -5,7 +5,7 @@ import rtconfig if os.getenv('RTT_ROOT'): RTT_ROOT = os.getenv('RTT_ROOT') else: - RTT_ROOT = os.path.normpath(os.getcwd() + '/../../..') + RTT_ROOT = os.path.normpath(os.getcwd() + '/../../../..') sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] try: @@ -26,7 +26,7 @@ env = Environment(tools = ['mingw'], LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) env.PrependENVPath('PATH', rtconfig.EXEC_PATH) -if rtconfig.PLATFORM in ['iccarm']: +if rtconfig.PLATFORM == 'iar': env.Replace(CCCOM = ['$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES']) env.Replace(ARFLAGS = ['']) env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map') diff --git a/bsp/gd32/gd32305r-start/applications/SConscript b/bsp/gd32/arm/gd32303e-eval/applications/SConscript similarity index 100% rename from bsp/gd32/gd32305r-start/applications/SConscript rename to bsp/gd32/arm/gd32303e-eval/applications/SConscript diff --git a/bsp/gd32/gd32303e-eval/applications/main.c b/bsp/gd32/arm/gd32303e-eval/applications/main.c similarity index 91% rename from bsp/gd32/gd32303e-eval/applications/main.c rename to bsp/gd32/arm/gd32303e-eval/applications/main.c index 3e85fc86ca..cbd3cc50f5 100644 --- a/bsp/gd32/gd32303e-eval/applications/main.c +++ b/bsp/gd32/arm/gd32303e-eval/applications/main.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2022, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/gd32/gd32303e-eval/board/Kconfig b/bsp/gd32/arm/gd32303e-eval/board/Kconfig similarity index 60% rename from bsp/gd32/gd32303e-eval/board/Kconfig rename to bsp/gd32/arm/gd32303e-eval/board/Kconfig index a36e954a1d..e954516cdf 100644 --- a/bsp/gd32/gd32303e-eval/board/Kconfig +++ b/bsp/gd32/arm/gd32303e-eval/board/Kconfig @@ -115,6 +115,91 @@ menu "On-chip Peripheral Drivers" range 1 216 default 25 endif + + menuconfig BSP_USING_ADC + bool "Enable ADC" + default n + select RT_USING_ADC + if BSP_USING_ADC + config BSP_USING_ADC0 + bool "Enable ADC0" + default n + + config BSP_USING_ADC1 + bool "Enable ADC1" + default n + + config BSP_USING_ADC2 + bool "Enable ADC2" + default n + endif + + menuconfig BSP_USING_TIM + bool "Enable timer" + default n + select RT_USING_HWTIMER + if BSP_USING_TIM + config BSP_USING_TIM10 + bool "Enable TIM10" + default n + + config BSP_USING_TIM11 + bool "Enable TIM11" + default n + + config BSP_USING_TIM12 + bool "Enable TIM13" + default n + endif + + menuconfig BSP_USING_ONCHIP_RTC + bool "Enable RTC" + select RT_USING_RTC + default n + if BSP_USING_ONCHIP_RTC + choice + prompt "Select clock source" + default BSP_RTC_USING_LSE + + config BSP_RTC_USING_LSE + bool "RTC USING LSE" + + config BSP_RTC_USING_LSI + bool "RTC USING LSI" + endchoice + endif + + config BSP_USING_WDT + bool "Enable Watchdog Timer" + select RT_USING_WDT + default n + + config BSP_USING_SDIO + bool "Enable SDIO" + select RT_USING_SDIO + select RT_USING_DFS + default n + + config BSP_USING_USBD + bool "Enable USB Device" + select RT_USING_USB_DEVICE + default n + + menuconfig BSP_USING_USBH + bool "Enable USB Host" + select RT_USING_USB_HOST + default n + if BSP_USING_USBH + menuconfig RT_USBH_MSTORAGE + bool "Enable Udisk Drivers" + default n + if RT_USBH_MSTORAGE + config UDISK_MOUNTPOINT + string "Udisk mount dir" + default "/" + endif + endif + source "../libraries/gd32_drivers/Kconfig" endmenu diff --git a/bsp/gd32/gd32303e-eval/board/SConscript b/bsp/gd32/arm/gd32303e-eval/board/SConscript similarity index 84% rename from bsp/gd32/gd32303e-eval/board/SConscript rename to bsp/gd32/arm/gd32303e-eval/board/SConscript index 4952e20f50..1d4c0408eb 100644 --- a/bsp/gd32/gd32303e-eval/board/SConscript +++ b/bsp/gd32/arm/gd32303e-eval/board/SConscript @@ -15,11 +15,11 @@ path = [cwd] startup_path_prefix = SDK_LIB -if rtconfig.PLATFORM in ['gcc']: +if rtconfig.CROSS_TOOL == 'gcc': src += [startup_path_prefix + '/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/GCC/startup_gd32f30x_hd.s'] -elif rtconfig.PLATFORM in ['armcc', 'armclang']: +elif rtconfig.CROSS_TOOL == 'keil': src += [startup_path_prefix + '/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/ARM/startup_gd32f30x_hd.s'] -elif rtconfig.PLATFORM in ['iccarm']: +elif rtconfig.CROSS_TOOL == 'iar': src += [startup_path_prefix + '/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/IAR/startup_gd32f30x_hd.s'] CPPDEFINES = ['GD32F30X_HD'] diff --git a/bsp/gd32/gd32303e-eval/board/board.c b/bsp/gd32/arm/gd32303e-eval/board/board.c similarity index 96% rename from bsp/gd32/gd32303e-eval/board/board.c rename to bsp/gd32/arm/gd32303e-eval/board/board.c index c409645b37..4a7c61b8cf 100644 --- a/bsp/gd32/gd32303e-eval/board/board.c +++ b/bsp/gd32/arm/gd32303e-eval/board/board.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2022, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/gd32/gd32303e-eval/board/board.h b/bsp/gd32/arm/gd32303e-eval/board/board.h similarity index 95% rename from bsp/gd32/gd32303e-eval/board/board.h rename to bsp/gd32/arm/gd32303e-eval/board/board.h index aecf8beaad..57e4dd68f8 100644 --- a/bsp/gd32/gd32303e-eval/board/board.h +++ b/bsp/gd32/arm/gd32303e-eval/board/board.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2022, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/gd32/gd32303e-eval/board/gd32f30x_libopt.h b/bsp/gd32/arm/gd32303e-eval/board/gd32f30x_libopt.h similarity index 100% rename from bsp/gd32/gd32303e-eval/board/gd32f30x_libopt.h rename to bsp/gd32/arm/gd32303e-eval/board/gd32f30x_libopt.h diff --git a/bsp/gd32/gd32303e-eval/board/linker_scripts/link.icf b/bsp/gd32/arm/gd32303e-eval/board/linker_scripts/link.icf similarity index 100% rename from bsp/gd32/gd32303e-eval/board/linker_scripts/link.icf rename to bsp/gd32/arm/gd32303e-eval/board/linker_scripts/link.icf diff --git a/bsp/gd32/gd32303e-eval/board/linker_scripts/link.ld b/bsp/gd32/arm/gd32303e-eval/board/linker_scripts/link.ld similarity index 100% rename from bsp/gd32/gd32303e-eval/board/linker_scripts/link.ld rename to bsp/gd32/arm/gd32303e-eval/board/linker_scripts/link.ld diff --git a/bsp/gd32/gd32303e-eval/board/linker_scripts/link.sct b/bsp/gd32/arm/gd32303e-eval/board/linker_scripts/link.sct similarity index 100% rename from bsp/gd32/gd32303e-eval/board/linker_scripts/link.sct rename to bsp/gd32/arm/gd32303e-eval/board/linker_scripts/link.sct diff --git a/bsp/gd32/arm/gd32303e-eval/project.ewd b/bsp/gd32/arm/gd32303e-eval/project.ewd new file mode 100644 index 0000000000..1c6168a2f8 --- /dev/null +++ b/bsp/gd32/arm/gd32303e-eval/project.ewd @@ -0,0 +1,3056 @@ + + + 3 + + Debug + + ARM + + 1 + + C-SPY + 2 + + 32 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 1 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 1 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 32 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 0 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 0 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 0 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 0 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/bsp/gd32/arm/gd32303e-eval/project.ewp b/bsp/gd32/arm/gd32303e-eval/project.ewp new file mode 100644 index 0000000000..81fedea825 --- /dev/null +++ b/bsp/gd32/arm/gd32303e-eval/project.ewp @@ -0,0 +1,2316 @@ + + + 3 + + Debug + + ARM + + 1 + + General + 3 + + 33 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + + Release + + ARM + + 0 + + General + 3 + + 33 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + Compiler + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\stdlib.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscalls.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\time.c + + + + CPU + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\backtrace.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m4\context_iar.S + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m4\cpuport.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\showmem.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\completion.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\dataqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\misc\pin.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\pipe.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringbuffer.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\serial\serial.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\waitqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\workqueue.c + + + + Drivers + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_gpio.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_usart.c + + + $PROJ_DIR$\..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Source\IAR\startup_gd32f30x_hd.s + + + + Finsh + + $PROJ_DIR$\..\..\..\..\components\finsh\cmd.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\shell.c + + + + Kernel + + $PROJ_DIR$\..\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\..\src\device.c + + + $PROJ_DIR$\..\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\..\src\scheduler.c + + + $PROJ_DIR$\..\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\..\src\timer.c + + + + Libraries + + $PROJ_DIR$\..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_exti.c + + + $PROJ_DIR$\..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_gpio.c + + + $PROJ_DIR$\..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_misc.c + + + $PROJ_DIR$\..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_rcu.c + + + $PROJ_DIR$\..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_usart.c + + + $PROJ_DIR$\..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Source\system_gd32f30x.c + + + + POSIX + + diff --git a/bsp/gd32/arm/gd32303e-eval/project.eww b/bsp/gd32/arm/gd32303e-eval/project.eww new file mode 100644 index 0000000000..c2cb02eb1e --- /dev/null +++ b/bsp/gd32/arm/gd32303e-eval/project.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\project.ewp + + + + + diff --git a/bsp/gd32/arm/gd32303e-eval/project.uvoptx b/bsp/gd32/arm/gd32303e-eval/project.uvoptx new file mode 100644 index 0000000000..a0414d390b --- /dev/null +++ b/bsp/gd32/arm/gd32303e-eval/project.uvoptx @@ -0,0 +1,784 @@ + + + + 1.0 + +
    ### uVision Project, (C) Keil Software
    + + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 0 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 3 + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F30x_HD -FS08000000 -FL080000 -FP0($$Device:GD32F303ZE$Flash\GD32F30x_HD.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + Applications + 0 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + applications\main.c + main.c + 0 + 0 + + + + + Compiler + 0 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c + syscall_mem.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c + syscalls.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\stdlib.c + stdlib.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\time.c + time.c + 0 + 0 + + + + + CPU + 0 + 0 + 0 + 0 + + 3 + 6 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\backtrace.c + backtrace.c + 0 + 0 + + + 3 + 7 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 3 + 8 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 3 + 9 + 2 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m4\context_rvds.S + context_rvds.S + 0 + 0 + + + 3 + 10 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m4\cpuport.c + cpuport.c + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 4 + 11 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\waitqueue.c + waitqueue.c + 0 + 0 + + + 4 + 12 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\completion.c + completion.c + 0 + 0 + + + 4 + 13 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 4 + 14 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\workqueue.c + workqueue.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\pipe.c + pipe.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\dataqueue.c + dataqueue.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\serial\serial.c + serial.c + 0 + 0 + + + + + Drivers + 0 + 0 + 0 + 0 + + 5 + 20 + 2 + 0 + 0 + 0 + ..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Source\ARM\startup_gd32f30x_hd.s + startup_gd32f30x_hd.s + 0 + 0 + + + 5 + 21 + 1 + 0 + 0 + 0 + board\board.c + board.c + 0 + 0 + + + 5 + 22 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 5 + 23 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_usart.c + drv_usart.c + 0 + 0 + + + + + Finsh + 0 + 0 + 0 + 0 + + 6 + 24 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 6 + 25 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 6 + 26 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + + + Kernel + 0 + 0 + 0 + 0 + + 7 + 27 + 1 + 0 + 0 + 0 + ..\..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 7 + 28 + 1 + 0 + 0 + 0 + ..\..\..\..\src\components.c + components.c + 0 + 0 + + + 7 + 29 + 1 + 0 + 0 + 0 + ..\..\..\..\src\thread.c + thread.c + 0 + 0 + + + 7 + 30 + 1 + 0 + 0 + 0 + ..\..\..\..\src\idle.c + idle.c + 0 + 0 + + + 7 + 31 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mem.c + mem.c + 0 + 0 + + + 7 + 32 + 1 + 0 + 0 + 0 + ..\..\..\..\src\clock.c + clock.c + 0 + 0 + + + 7 + 33 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mempool.c + mempool.c + 0 + 0 + + + 7 + 34 + 1 + 0 + 0 + 0 + ..\..\..\..\src\timer.c + timer.c + 0 + 0 + + + 7 + 35 + 1 + 0 + 0 + 0 + ..\..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 7 + 36 + 1 + 0 + 0 + 0 + ..\..\..\..\src\object.c + object.c + 0 + 0 + + + 7 + 37 + 1 + 0 + 0 + 0 + ..\..\..\..\src\scheduler.c + scheduler.c + 0 + 0 + + + 7 + 38 + 1 + 0 + 0 + 0 + ..\..\..\..\src\device.c + device.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\irq.c + irq.c + 0 + 0 + + + + + Libraries + 0 + 0 + 0 + 0 + + 8 + 40 + 1 + 0 + 0 + 0 + ..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Source\system_gd32f30x.c + system_gd32f30x.c + 0 + 0 + + + 8 + 41 + 1 + 0 + 0 + 0 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_rcu.c + gd32f30x_rcu.c + 0 + 0 + + + 8 + 42 + 1 + 0 + 0 + 0 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_usart.c + gd32f30x_usart.c + 0 + 0 + + + 8 + 43 + 1 + 0 + 0 + 0 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_exti.c + gd32f30x_exti.c + 0 + 0 + + + 8 + 44 + 1 + 0 + 0 + 0 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_gpio.c + gd32f30x_gpio.c + 0 + 0 + + + 8 + 45 + 1 + 0 + 0 + 0 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_misc.c + gd32f30x_misc.c + 0 + 0 + + + + + ::CMSIS + 0 + 0 + 0 + 1 + + +
    diff --git a/bsp/gd32/gd32303e-eval/project.uvproj b/bsp/gd32/arm/gd32303e-eval/project.uvproj similarity index 98% rename from bsp/gd32/gd32303e-eval/project.uvproj rename to bsp/gd32/arm/gd32303e-eval/project.uvproj index 9baf49642d..991ade9637 100644 --- a/bsp/gd32/gd32303e-eval/project.uvproj +++ b/bsp/gd32/arm/gd32303e-eval/project.uvproj @@ -12,10 +12,10 @@ GD32F303ZE GigaDevice - IRAM(0x20000000-0x20010000) IROM(0x08000000-0x08080000) CLOCK(12000000) CPUTYPE("Cortex-M4") FPU2 + IRAM(0x20000000-0x20010000) IROM(0x08000000-0x08080000) CLOCK(8000000) CPUTYPE("Cortex-M4") FPU2 - "Startup\GD\GD32F30x\startup_gd32f30x.s" ("GD32F30x Startup Code") - UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F30x_3MB -FS08000000 -FL0300000) + "Startup\GD\GD32F30x\startup_gd32f30x_hd.s" ("GD32F30x Startup Code") + UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F30x_HD -FS08000000 -FL080000) 0 gd32f30x0.h @@ -27,7 +27,7 @@ - SFD\GD\GD32F30x\GD32F30x.SFR + SFD\GD\GD32F30x\GD32F30x_HD.SFR 0 0 @@ -427,16 +427,16 @@ Compiler - syscalls.c + syscall_mem.c 1 - ..\..\..\components\libc\compilers\armlibc\syscalls.c + ..\..\..\components\libc\compilers\armlibc\syscall_mem.c - syscall_mem.c + syscalls.c 1 - ..\..\..\components\libc\compilers\armlibc\syscall_mem.c + ..\..\..\components\libc\compilers\armlibc\syscalls.c @@ -458,9 +458,9 @@ CPU - backtrace.c + div0.c 1 - ..\..\..\libcpu\arm\common\backtrace.c + ..\..\..\libcpu\arm\common\div0.c @@ -472,9 +472,9 @@ - div0.c + backtrace.c 1 - ..\..\..\libcpu\arm\common\div0.c + ..\..\..\libcpu\arm\common\backtrace.c @@ -503,9 +503,9 @@ - completion.c + pipe.c 1 - ..\..\..\components\drivers\ipc\completion.c + ..\..\..\components\drivers\ipc\pipe.c @@ -515,6 +515,13 @@ ..\..\..\components\drivers\ipc\workqueue.c + + + completion.c + 1 + ..\..\..\components\drivers\ipc\completion.c + + ringblk_buf.c @@ -524,9 +531,9 @@ - pipe.c + dataqueue.c 1 - ..\..\..\components\drivers\ipc\pipe.c + ..\..\..\components\drivers\ipc\dataqueue.c @@ -536,13 +543,6 @@ ..\..\..\components\drivers\ipc\ringbuffer.c - - - dataqueue.c - 1 - ..\..\..\components\drivers\ipc\dataqueue.c - - pin.c @@ -615,27 +615,6 @@ Kernel - - - irq.c - 1 - ..\..\..\src\irq.c - - - - - ipc.c - 1 - ..\..\..\src\ipc.c - - - - - idle.c - 1 - ..\..\..\src\idle.c - - device.c @@ -645,16 +624,9 @@ - scheduler.c + mempool.c 1 - ..\..\..\src\scheduler.c - - - - - timer.c - 1 - ..\..\..\src\timer.c + ..\..\..\src\mempool.c @@ -664,13 +636,6 @@ ..\..\..\src\object.c - - - kservice.c - 1 - ..\..\..\src\kservice.c - - clock.c @@ -680,9 +645,9 @@ - mempool.c + scheduler.c 1 - ..\..\..\src\mempool.c + ..\..\..\src\scheduler.c @@ -699,6 +664,20 @@ ..\..\..\src\thread.c + + + timer.c + 1 + ..\..\..\src\timer.c + + + + + ipc.c + 1 + ..\..\..\src\ipc.c + + components.c @@ -706,6 +685,27 @@ ..\..\..\src\components.c + + + kservice.c + 1 + ..\..\..\src\kservice.c + + + + + irq.c + 1 + ..\..\..\src\irq.c + + + + + idle.c + 1 + ..\..\..\src\idle.c + + Libraries diff --git a/bsp/gd32/gd32303e-eval/project.uvprojx b/bsp/gd32/arm/gd32303e-eval/project.uvprojx similarity index 76% rename from bsp/gd32/gd32303e-eval/project.uvprojx rename to bsp/gd32/arm/gd32303e-eval/project.uvprojx index 624591c89d..ed1d7fbc17 100644 --- a/bsp/gd32/gd32303e-eval/project.uvprojx +++ b/bsp/gd32/arm/gd32303e-eval/project.uvprojx @@ -1,7 +1,10 @@ + 2.1 +
    ### uVision Project, (C) Keil Software
    + rt-thread @@ -13,31 +16,31 @@ GD32F303ZE GigaDevice - GigaDevice.GD32F30x_DFP.2.1.0 + GigaDevice.GD32F30x_DFP.2.2.0 http://gd32mcu.com/data/documents/pack/ - IRAM(0x20000000,0x010000) IROM(0x08000000,0x080000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE - - - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F30x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F303ZE$Flash\GD32F30x_CL.FLM)) + IRAM(0x20000000,0x010000) IROM(0x08000000,0x080000) CPUTYPE("Cortex-M4") FPU2 CLOCK(8000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F30x_CL -FS08000000 -FL080000 -FP0($$Device:GD32F303ZE$Flash\GD32F30x_HD.FLM)) 0 $$Device:GD32F303ZE$Device\Include\gd32f30x.h - - - - - - - - - - $$Device:GD32F303ZE$SVD\GD32F30x_CL.svd + + + + + + + + + + $$Device:GD32F303ZE$SVD\GD32F30x_HD.svd 0 0 - - - - - + + + + + 0 0 @@ -59,8 +62,8 @@ 0 0 - - + + 0 0 0 @@ -69,8 +72,8 @@ 0 0 - - + + 0 0 0 @@ -80,14 +83,14 @@ 1 0 fromelf --bin !L --output rtthread.bin - + 0 0 0 0 0 - + 0 @@ -101,8 +104,8 @@ 0 0 3 - - + + 1 @@ -135,11 +138,11 @@ 1 BIN\UL2CM3.DLL - - - - - + + + + + 0 @@ -172,7 +175,7 @@ 0 0 "Cortex-M4" - + 0 0 0 @@ -243,12 +246,12 @@ 0 0x20000000 - 0x18000 + 0x10000 1 0x8000000 - 0x40000 + 0x80000 0 @@ -306,7 +309,7 @@ 0x0 - + 1 @@ -333,10 +336,10 @@ 0 0 - + GD32F30X_HD, USE_STDPERIPH_DRIVER, __RTTHREAD__, RT_USING_ARM_LIBC, __CLK_TCK=RT_TICK_PER_SECOND - - applications;.;..\..\..\components\libc\compilers\common;..\..\..\components\libc\compilers\common\extension;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;..\libraries\gd32_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Include;..\libraries\GD32F30x_Firmware_Library\CMSIS;..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Include;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc + + applications;.;..\..\..\..\components\libc\compilers\common;..\..\..\..\components\libc\compilers\common\extension;..\..\..\..\libcpu\arm\common;..\..\..\..\libcpu\arm\cortex-m4;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;board;..\libraries\gd32_drivers;..\..\..\..\components\finsh;.;..\..\..\..\include;..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Include;..\libraries\GD32F30x_Firmware_Library\CMSIS;..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Include;..\..\..\..\components\libc\posix\io\poll;..\..\..\..\components\libc\posix\io\stdio;..\..\..\..\components\libc\posix\ipc @@ -351,10 +354,10 @@ 0 4 - - - - + + + + @@ -366,13 +369,13 @@ 0 0x08000000 0x20000000 - + .\gd32_rom.ld - - - - - + + + + + @@ -393,66 +396,52 @@ syscall_mem.c 1 - ..\..\..\components\libc\compilers\armlibc\syscall_mem.c + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c -
    - syscalls.c 1 - ..\..\..\components\libc\compilers\armlibc\syscalls.c + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c - - stdlib.c 1 - ..\..\..\components\libc\compilers\common\stdlib.c + ..\..\..\..\components\libc\compilers\common\stdlib.c - - time.c 1 - ..\..\..\components\libc\compilers\common\time.c + ..\..\..\..\components\libc\compilers\common\time.c CPU - - - div0.c - 1 - ..\..\..\libcpu\arm\common\div0.c - - backtrace.c 1 - ..\..\..\libcpu\arm\common\backtrace.c + ..\..\..\..\libcpu\arm\common\backtrace.c - - showmem.c 1 - ..\..\..\libcpu\arm\common\showmem.c + ..\..\..\..\libcpu\arm\common\showmem.c + + + div0.c + 1 + ..\..\..\..\libcpu\arm\common\div0.c - - context_rvds.S 2 - ..\..\..\libcpu\arm\cortex-m4\context_rvds.S + ..\..\..\..\libcpu\arm\cortex-m4\context_rvds.S - - cpuport.c 1 - ..\..\..\libcpu\arm\cortex-m4\cpuport.c + ..\..\..\..\libcpu\arm\cortex-m4\cpuport.c @@ -462,63 +451,47 @@ waitqueue.c 1 - ..\..\..\components\drivers\ipc\waitqueue.c + ..\..\..\..\components\drivers\ipc\waitqueue.c - - - - ringbuffer.c - 1 - ..\..\..\components\drivers\ipc\ringbuffer.c - - - - - dataqueue.c - 1 - ..\..\..\components\drivers\ipc\dataqueue.c - - - - - workqueue.c - 1 - ..\..\..\components\drivers\ipc\workqueue.c - - - - - pipe.c - 1 - ..\..\..\components\drivers\ipc\pipe.c - - - completion.c 1 - ..\..\..\components\drivers\ipc\completion.c + ..\..\..\..\components\drivers\ipc\completion.c - - ringblk_buf.c 1 - ..\..\..\components\drivers\ipc\ringblk_buf.c + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + workqueue.c + 1 + ..\..\..\..\components\drivers\ipc\workqueue.c + + + ringbuffer.c + 1 + ..\..\..\..\components\drivers\ipc\ringbuffer.c + + + pipe.c + 1 + ..\..\..\..\components\drivers\ipc\pipe.c + + + dataqueue.c + 1 + ..\..\..\..\components\drivers\ipc\dataqueue.c - - pin.c 1 - ..\..\..\components\drivers\misc\pin.c + ..\..\..\..\components\drivers\misc\pin.c - - serial.c 1 - ..\..\..\components\drivers\serial\serial.c + ..\..\..\..\components\drivers\serial\serial.c @@ -530,22 +503,16 @@ 2 ..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Source\ARM\startup_gd32f30x_hd.s - - board.c 1 board\board.c - - drv_gpio.c 1 ..\libraries\gd32_drivers\drv_gpio.c - - drv_usart.c 1 @@ -559,115 +526,87 @@ shell.c 1 - ..\..\..\components\finsh\shell.c + ..\..\..\..\components\finsh\shell.c - - msh.c 1 - ..\..\..\components\finsh\msh.c + ..\..\..\..\components\finsh\msh.c - - cmd.c 1 - ..\..\..\components\finsh\cmd.c + ..\..\..\..\components\finsh\cmd.c Kernel - - - irq.c - 1 - ..\..\..\src\irq.c - - - - - scheduler.c - 1 - ..\..\..\src\scheduler.c - - - - - thread.c - 1 - ..\..\..\src\thread.c - - - - - mem.c - 1 - ..\..\..\src\mem.c - - - - - idle.c - 1 - ..\..\..\src\idle.c - - - - - clock.c - 1 - ..\..\..\src\clock.c - - ipc.c 1 - ..\..\..\src\ipc.c + ..\..\..\..\src\ipc.c - - - - device.c - 1 - ..\..\..\src\device.c - - - - - kservice.c - 1 - ..\..\..\src\kservice.c - - - components.c 1 - ..\..\..\src\components.c + ..\..\..\..\src\components.c - - - timer.c + thread.c 1 - ..\..\..\src\timer.c + ..\..\..\..\src\thread.c - - - object.c + idle.c 1 - ..\..\..\src\object.c + ..\..\..\..\src\idle.c + + + mem.c + 1 + ..\..\..\..\src\mem.c + + + clock.c + 1 + ..\..\..\..\src\clock.c - - mempool.c 1 - ..\..\..\src\mempool.c + ..\..\..\..\src\mempool.c + + + timer.c + 1 + ..\..\..\..\src\timer.c + + + kservice.c + 1 + ..\..\..\..\src\kservice.c + + + object.c + 1 + ..\..\..\..\src\object.c + + + scheduler.c + 1 + ..\..\..\..\src\scheduler.c + + + device.c + 1 + ..\..\..\..\src\device.c + + + irq.c + 1 + ..\..\..\..\src\irq.c @@ -679,36 +618,26 @@ 1 ..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Source\system_gd32f30x.c - - gd32f30x_rcu.c 1 ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_rcu.c - - gd32f30x_usart.c 1 ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_usart.c - - gd32f30x_exti.c 1 ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_exti.c - - gd32f30x_gpio.c 1 ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_gpio.c - - gd32f30x_misc.c 1 @@ -716,33 +645,39 @@ + + ::CMSIS + + - + - + - + - + + <Project Info> - - - - - + + + + + 0 1 +
    diff --git a/bsp/gd32/gd32303e-eval/rtconfig.h b/bsp/gd32/arm/gd32303e-eval/rtconfig.h similarity index 95% rename from bsp/gd32/gd32303e-eval/rtconfig.h rename to bsp/gd32/arm/gd32303e-eval/rtconfig.h index 2c8afb2f75..ebad857126 100644 --- a/bsp/gd32/gd32303e-eval/rtconfig.h +++ b/bsp/gd32/arm/gd32303e-eval/rtconfig.h @@ -52,8 +52,14 @@ #define RT_USING_USER_MAIN #define RT_MAIN_THREAD_STACK_SIZE 2048 #define RT_MAIN_THREAD_PRIORITY 10 -#define RT_USING_MSH + +/* C++ features */ + + +/* Command shell */ + #define RT_USING_FINSH +#define RT_USING_MSH #define FINSH_USING_MSH #define FINSH_THREAD_NAME "tshell" #define FINSH_THREAD_PRIORITY 20 @@ -66,6 +72,9 @@ #define FINSH_USING_DESCRIPTION #define FINSH_ARG_MAX 10 +/* Device virtual file system */ + + /* Device Drivers */ #define RT_USING_DEVICE_IPC @@ -81,7 +90,7 @@ /* Using USB */ -/* C/C++ and POSIX layer */ +/* POSIX layer and C standard library */ #define RT_LIBC_DEFAULT_TIMEZONE 8 @@ -93,10 +102,12 @@ /* Socket is in the 'Network' category */ - /* Network */ +/* VBUS(Virtual Software BUS) */ + + /* Utilities */ diff --git a/bsp/gd32/gd32303e-eval/rtconfig.py b/bsp/gd32/arm/gd32303e-eval/rtconfig.py similarity index 98% rename from bsp/gd32/gd32303e-eval/rtconfig.py rename to bsp/gd32/arm/gd32303e-eval/rtconfig.py index 2075890edf..a91905a233 100644 --- a/bsp/gd32/gd32303e-eval/rtconfig.py +++ b/bsp/gd32/arm/gd32303e-eval/rtconfig.py @@ -22,8 +22,8 @@ elif CROSS_TOOL == 'keil': PLATFORM = 'armcc' EXEC_PATH = r'C:/Keil_v5' elif CROSS_TOOL == 'iar': - PLATFORM = 'iccarm' - EXEC_PATH = r'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.3' + 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') @@ -93,7 +93,7 @@ elif PLATFORM == 'armcc': POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' -elif PLATFORM == 'iccarm': +elif PLATFORM == 'iar': # toolchains CC = 'iccarm' CXX = 'iccarm' diff --git a/bsp/gd32/arm/gd32303e-eval/template.ewp b/bsp/gd32/arm/gd32303e-eval/template.ewp new file mode 100644 index 0000000000..d33673620b --- /dev/null +++ b/bsp/gd32/arm/gd32303e-eval/template.ewp @@ -0,0 +1,1889 @@ + + + 2 + + Debug + + ARM + + 1 + + General + 3 + + 22 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 22 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + + diff --git a/bsp/gd32/gd32303e-eval/template.uvoptx b/bsp/gd32/arm/gd32303e-eval/template.uvoptx similarity index 96% rename from bsp/gd32/gd32303e-eval/template.uvoptx rename to bsp/gd32/arm/gd32303e-eval/template.uvoptx index 18fdad5165..e04b402ce0 100644 --- a/bsp/gd32/gd32303e-eval/template.uvoptx +++ b/bsp/gd32/arm/gd32303e-eval/template.uvoptx @@ -26,7 +26,7 @@ 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -120,7 +120,7 @@ 0 UL2CM3 - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F30x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F305RC$Flash\GD32F30x_CL.FLM)) + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F30x_HD -FS08000000 -FL080000 -FP0($$Device:GD32F305RC$Flash\GD32F30x_HD.FLM)) diff --git a/bsp/gd32/gd32303e-eval/template.uvproj b/bsp/gd32/arm/gd32303e-eval/template.uvproj similarity index 98% rename from bsp/gd32/gd32303e-eval/template.uvproj rename to bsp/gd32/arm/gd32303e-eval/template.uvproj index c42d8a33b1..1ae05a1082 100644 --- a/bsp/gd32/gd32303e-eval/template.uvproj +++ b/bsp/gd32/arm/gd32303e-eval/template.uvproj @@ -15,10 +15,10 @@ GD32F303ZE GigaDevice - IRAM(0x20000000-0x20010000) IROM(0x08000000-0x08080000) CLOCK(12000000) CPUTYPE("Cortex-M4") FPU2 + IRAM(0x20000000-0x20010000) IROM(0x08000000-0x08080000) CLOCK(8000000) CPUTYPE("Cortex-M4") FPU2 - "Startup\GD\GD32F30x\startup_gd32f30x.s" ("GD32F30x Startup Code") - UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F30x_3MB -FS08000000 -FL0300000) + "Startup\GD\GD32F30x\startup_gd32f30x_hd.s" ("GD32F30x Startup Code") + UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F30x_HD -FS08000000 -FL080000) 0 gd32f30x0.h @@ -30,7 +30,7 @@ - SFD\GD\GD32F30x\GD32F30x.SFR + SFD\GD\GD32F30x\GD32F30x_HD.SFR 0 0 @@ -605,9 +605,9 @@ Startup - startup_gd32f30x.s + startup_gd32f30x_hd.s 2 - ..\..\..\Library\Firmware\CMSIS\GD\GD32F30x\Source\ARM\startup_gd32f30x.s + ..\..\..\Library\Firmware\CMSIS\GD\GD32F30x\Source\ARM\startup_gd32f30x_hd.s diff --git a/bsp/gd32/gd32303e-eval/template.uvprojx b/bsp/gd32/arm/gd32303e-eval/template.uvprojx similarity index 97% rename from bsp/gd32/gd32303e-eval/template.uvprojx rename to bsp/gd32/arm/gd32303e-eval/template.uvprojx index 7f6137db37..3678894906 100644 --- a/bsp/gd32/gd32303e-eval/template.uvprojx +++ b/bsp/gd32/arm/gd32303e-eval/template.uvprojx @@ -18,10 +18,10 @@ GigaDevice GigaDevice.GD32F30x_DFP.2.1.0 http://gd32mcu.com/data/documents/pack/ - IRAM(0x20000000,0x010000) IROM(0x08000000,0x080000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE + IRAM(0x20000000,0x010000) IROM(0x08000000,0x080000) CPUTYPE("Cortex-M4") FPU2 CLOCK(8000000) ELITTLE - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F30x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F303ZE$Flash\GD32F30x_CL.FLM)) + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F30x_CL -FS08000000 -FL080000 -FP0($$Device:GD32F303ZE$Flash\GD32F30x_HD.FLM)) 0 $$Device:GD32F303ZE$Device\Include\gd32f30x.h @@ -33,7 +33,7 @@ - $$Device:GD32F303ZE$SVD\GD32F30x_CL.svd + $$Device:GD32F303ZE$SVD\GD32F30x_HD.svd 0 0 diff --git a/bsp/gd32/gd32305r-start/.config b/bsp/gd32/arm/gd32305r-start/.config similarity index 96% rename from bsp/gd32/gd32305r-start/.config rename to bsp/gd32/arm/gd32305r-start/.config index dc221bfb49..8b498bdca2 100644 --- a/bsp/gd32/gd32305r-start/.config +++ b/bsp/gd32/arm/gd32305r-start/.config @@ -90,8 +90,17 @@ 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 -CONFIG_RT_USING_MSH=y + +# +# C++ features +# +# CONFIG_RT_USING_CPLUSPLUS is not set + +# +# Command shell +# CONFIG_RT_USING_FINSH=y +CONFIG_RT_USING_MSH=y CONFIG_FINSH_USING_MSH=y CONFIG_FINSH_THREAD_NAME="tshell" CONFIG_FINSH_THREAD_PRIORITY=20 @@ -105,8 +114,11 @@ 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 is not set -# CONFIG_RT_USING_FAL is not set # # Device Drivers @@ -152,7 +164,7 @@ CONFIG_RT_USING_PIN=y # CONFIG_RT_USING_USB_DEVICE is not set # -# C/C++ and POSIX layer +# POSIX layer and C standard library # CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 @@ -176,7 +188,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # # Socket is in the 'Network' category # -# CONFIG_RT_USING_CPLUSPLUS is not set # # Network @@ -186,6 +197,11 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_RT_USING_LWIP is not set # CONFIG_RT_USING_AT is not set +# +# VBUS(Virtual Software BUS) +# +# CONFIG_RT_USING_VBUS is not set + # # Utilities # @@ -194,7 +210,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_RT_USING_UTEST is not set # 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 @@ -259,6 +274,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set # CONFIG_PKG_USING_JOYLINK is not set # CONFIG_PKG_USING_EZ_IOT_OS is not set +# CONFIG_PKG_USING_IOTSHARP_SDK 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 @@ -298,6 +314,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # # CONFIG_PKG_USING_MBEDTLS is not set # CONFIG_PKG_USING_LIBSODIUM is not set +# CONFIG_PKG_USING_LIBHYDROGEN is not set # CONFIG_PKG_USING_TINYCRYPT is not set # CONFIG_PKG_USING_TFM is not set # CONFIG_PKG_USING_YD_CRYPTO is not set @@ -337,6 +354,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_LVGL is not set # CONFIG_PKG_USING_LITTLEVGL2RTT is not set # CONFIG_PKG_USING_LV_MUSIC_DEMO is not set +# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set # # u8g2: a monochrome graphic library @@ -411,6 +429,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_FDT is not set # CONFIG_PKG_USING_CBOX is not set # CONFIG_PKG_USING_SNOWFLAKE is not set +# CONFIG_PKG_USING_HASH_MATCH is not set # # system packages @@ -442,6 +461,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CMSIS: ARM Cortex-M Microcontroller Software Interface Standard # # CONFIG_PKG_USING_CMSIS_5 is not set +# CONFIG_PKG_USING_CMSIS_RTOS1 is not set # CONFIG_PKG_USING_CMSIS_RTOS2 is not set # @@ -484,6 +504,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_TINYUSB is not set # CONFIG_PKG_USING_CHERRYUSB is not set # CONFIG_PKG_USING_KMULTI_RTIMER is not set +# CONFIG_PKG_USING_TFDB is not set # # peripheral libraries and drivers @@ -638,6 +659,8 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_CONTROLLER is not set # CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set # CONFIG_PKG_USING_MFBD is not set +# CONFIG_PKG_USING_SLCAN2RTT is not set +# CONFIG_PKG_USING_SOEM is not set # # Hardware Drivers Config @@ -662,6 +685,13 @@ CONFIG_BSP_USING_UART1=y # CONFIG_BSP_USING_UART4 is not set # CONFIG_BSP_USING_SPI is not set # CONFIG_BSP_USING_I2C1 is not set +# CONFIG_BSP_USING_ADC is not set +# CONFIG_BSP_USING_TIM is not set +# CONFIG_BSP_USING_ONCHIP_RTC is not set +# CONFIG_BSP_USING_WDT is not set +# CONFIG_BSP_USING_SDIO is not set +# CONFIG_BSP_USING_USBD is not set +# CONFIG_BSP_USING_USBH is not set # # Board extended module Drivers diff --git a/bsp/gd32/arm/gd32305r-start/Kconfig b/bsp/gd32/arm/gd32305r-start/Kconfig new file mode 100644 index 0000000000..dbc650938f --- /dev/null +++ b/bsp/gd32/arm/gd32305r-start/Kconfig @@ -0,0 +1,21 @@ +mainmenu "RT-Thread Configuration" + +config BSP_DIR + string + option env="BSP_ROOT" + default "." + +config RTT_DIR + string + option env="RTT_ROOT" + default "../../../.." + +config PKGS_DIR + string + option env="PKGS_ROOT" + default "packages" + +source "$RTT_DIR/Kconfig" +source "$PKGS_DIR/Kconfig" +source "../libraries/Kconfig" +source "board/Kconfig" diff --git a/bsp/gd32/gd32305r-start/README.md b/bsp/gd32/arm/gd32305r-start/README.md similarity index 86% rename from bsp/gd32/gd32305r-start/README.md rename to bsp/gd32/arm/gd32305r-start/README.md index 49db8aa8ad..5f99b8bacd 100644 --- a/bsp/gd32/gd32305r-start/README.md +++ b/bsp/gd32/arm/gd32305r-start/README.md @@ -2,7 +2,7 @@ ## 简介 -GD3305R-START是-兆易创新推出的一款GD32F30X系列的评估板,最高主频高达120M,该开发板具有丰富的板载资源,可以充分发挥 GD3230R 的芯片性能。 +GD3305R-START是-兆易创新推出的一款GD32F30X系列的评估板,最高主频高达120M,该开发板具有丰富的板载资源,可以充分发挥 GD32305RC 的芯片性能。 开发板外观如下图所示: @@ -27,11 +27,12 @@ GD3305R-START是-兆易创新推出的一款GD32F30X系列的评估板,最高 | **片上外设** | **支持情况** | **备注** | |:--------- |:--------:|:------------------------------------- | -| GPIO | 支持 | PA0, PA1... PK15 ---> PIN: 0, 1...144 | +| GPIO | 支持 | PA0, PA1... ---> PIN: 0, 1...50 | | UART | 支持 | UART0 - UART4 | | I2C | 支持 | I2C1 | | SPI | 支持 | SPI0 - SPI2 | | SPI FLASH | 支持 | | +| ADC | 支持 | ADC0 - ADC1 | | **扩展模块** | **支持情况** | **备注** | | 暂无 | 暂不支持 | 暂不支持 | @@ -49,7 +50,7 @@ GD3305R-START是-兆易创新推出的一款GD32F30X系列的评估板,最高 ### 快速上手 -本 BSP 为开发者提供 MDK5 工程,并且支持 GCC 开发环境,也可使用RT-Thread Studio开发。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 +本 BSP 为开发者提供 MDK4、MDK5 和 IAR 工程,并且支持 GCC 开发环境,也可使用RT-Thread Studio开发。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 #### 硬件连接 @@ -85,7 +86,7 @@ msh > 3. 输入`pkgs --update`命令更新软件包。 -4. 输入`scons --target=mdk4/mdk5` 命令重新生成工程。 +4. 输入`scons --target=mdk4/mdk5/iar` 命令重新生成工程。 ## 注意事项 diff --git a/bsp/gd32/gd32407v-start/SConscript b/bsp/gd32/arm/gd32305r-start/SConscript similarity index 100% rename from bsp/gd32/gd32407v-start/SConscript rename to bsp/gd32/arm/gd32305r-start/SConscript diff --git a/bsp/gd32/gd32305r-start/SConstruct b/bsp/gd32/arm/gd32305r-start/SConstruct similarity index 94% rename from bsp/gd32/gd32305r-start/SConstruct rename to bsp/gd32/arm/gd32305r-start/SConstruct index d733bb923d..a39a8933ac 100644 --- a/bsp/gd32/gd32305r-start/SConstruct +++ b/bsp/gd32/arm/gd32305r-start/SConstruct @@ -5,7 +5,7 @@ import rtconfig if os.getenv('RTT_ROOT'): RTT_ROOT = os.getenv('RTT_ROOT') else: - RTT_ROOT = os.path.normpath(os.getcwd() + '/../../..') + RTT_ROOT = os.path.normpath(os.getcwd() + '/../../../..') sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] try: @@ -26,7 +26,7 @@ env = Environment(tools = ['mingw'], LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) env.PrependENVPath('PATH', rtconfig.EXEC_PATH) -if rtconfig.PLATFORM in ['iccarm']: +if rtconfig.PLATFORM == 'iar': env.Replace(CCCOM = ['$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES']) env.Replace(ARFLAGS = ['']) env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map') diff --git a/bsp/gd32/gd32407v-start/applications/SConscript b/bsp/gd32/arm/gd32305r-start/applications/SConscript similarity index 100% rename from bsp/gd32/gd32407v-start/applications/SConscript rename to bsp/gd32/arm/gd32305r-start/applications/SConscript diff --git a/bsp/gd32/gd32305r-start/applications/main.c b/bsp/gd32/arm/gd32305r-start/applications/main.c similarity index 100% rename from bsp/gd32/gd32305r-start/applications/main.c rename to bsp/gd32/arm/gd32305r-start/applications/main.c diff --git a/bsp/gd32/gd32305r-start/board/Kconfig b/bsp/gd32/arm/gd32305r-start/board/Kconfig similarity index 61% rename from bsp/gd32/gd32305r-start/board/Kconfig rename to bsp/gd32/arm/gd32305r-start/board/Kconfig index 043313a0fb..0fc1318daa 100644 --- a/bsp/gd32/gd32305r-start/board/Kconfig +++ b/bsp/gd32/arm/gd32305r-start/board/Kconfig @@ -115,6 +115,87 @@ menu "On-chip Peripheral Drivers" range 1 216 default 25 endif + + menuconfig BSP_USING_ADC + bool "Enable ADC" + default n + select RT_USING_ADC + if BSP_USING_ADC + config BSP_USING_ADC0 + bool "Enable ADC0" + default n + + config BSP_USING_ADC1 + bool "Enable ADC1" + default n + endif + + menuconfig BSP_USING_TIM + bool "Enable timer" + default n + select RT_USING_HWTIMER + if BSP_USING_TIM + config BSP_USING_TIM10 + bool "Enable TIM10" + default n + + config BSP_USING_TIM11 + bool "Enable TIM11" + default n + + config BSP_USING_TIM12 + bool "Enable TIM13" + default n + endif + + menuconfig BSP_USING_ONCHIP_RTC + bool "Enable RTC" + select RT_USING_RTC + default n + if BSP_USING_ONCHIP_RTC + choice + prompt "Select clock source" + default BSP_RTC_USING_LSE + + config BSP_RTC_USING_LSE + bool "RTC USING LSE" + + config BSP_RTC_USING_LSI + bool "RTC USING LSI" + endchoice + endif + + config BSP_USING_WDT + bool "Enable Watchdog Timer" + select RT_USING_WDT + default n + + config BSP_USING_SDIO + bool "Enable SDIO" + select RT_USING_SDIO + select RT_USING_DFS + default n + + config BSP_USING_USBD + bool "Enable USB Device" + select RT_USING_USB_DEVICE + default n + + menuconfig BSP_USING_USBH + bool "Enable USB Host" + select RT_USING_USB_HOST + default n + if BSP_USING_USBH + menuconfig RT_USBH_MSTORAGE + bool "Enable Udisk Drivers" + default n + if RT_USBH_MSTORAGE + config UDISK_MOUNTPOINT + string "Udisk mount dir" + default "/" + endif + endif + source "../libraries/gd32_drivers/Kconfig" endmenu diff --git a/bsp/gd32/gd32305r-start/board/SConscript b/bsp/gd32/arm/gd32305r-start/board/SConscript similarity index 84% rename from bsp/gd32/gd32305r-start/board/SConscript rename to bsp/gd32/arm/gd32305r-start/board/SConscript index 09ae44cf73..ec6b7bf3c1 100644 --- a/bsp/gd32/gd32305r-start/board/SConscript +++ b/bsp/gd32/arm/gd32305r-start/board/SConscript @@ -15,11 +15,11 @@ path = [cwd] startup_path_prefix = SDK_LIB -if rtconfig.PLATFORM in ['gcc']: +if rtconfig.CROSS_TOOL == 'gcc': src += [startup_path_prefix + '/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/GCC/startup_gd32f30x_cl.s'] -elif rtconfig.PLATFORM in ['armcc', 'armclang']: +elif rtconfig.CROSS_TOOL == 'keil': src += [startup_path_prefix + '/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/ARM/startup_gd32f30x_cl.s'] -elif rtconfig.PLATFORM in ['iccarm']: +elif rtconfig.CROSS_TOOL == 'iar': src += [startup_path_prefix + '/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/IAR/startup_gd32f30x_cl.s'] CPPDEFINES = ['GD32F30X_CL'] diff --git a/bsp/gd32/gd32103c-eval/board/board.c b/bsp/gd32/arm/gd32305r-start/board/board.c similarity index 96% rename from bsp/gd32/gd32103c-eval/board/board.c rename to bsp/gd32/arm/gd32305r-start/board/board.c index c409645b37..4a7c61b8cf 100644 --- a/bsp/gd32/gd32103c-eval/board/board.c +++ b/bsp/gd32/arm/gd32305r-start/board/board.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2022, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/gd32/gd32305r-start/board/board.h b/bsp/gd32/arm/gd32305r-start/board/board.h similarity index 100% rename from bsp/gd32/gd32305r-start/board/board.h rename to bsp/gd32/arm/gd32305r-start/board/board.h diff --git a/bsp/gd32/gd32305r-start/board/gd32f30x_libopt.h b/bsp/gd32/arm/gd32305r-start/board/gd32f30x_libopt.h similarity index 100% rename from bsp/gd32/gd32305r-start/board/gd32f30x_libopt.h rename to bsp/gd32/arm/gd32305r-start/board/gd32f30x_libopt.h diff --git a/bsp/gd32/gd32305r-start/board/linker_scripts/link.icf b/bsp/gd32/arm/gd32305r-start/board/linker_scripts/link.icf similarity index 100% rename from bsp/gd32/gd32305r-start/board/linker_scripts/link.icf rename to bsp/gd32/arm/gd32305r-start/board/linker_scripts/link.icf diff --git a/bsp/gd32/gd32105c-eval/board/linker_scripts/link.ld b/bsp/gd32/arm/gd32305r-start/board/linker_scripts/link.ld similarity index 100% rename from bsp/gd32/gd32105c-eval/board/linker_scripts/link.ld rename to bsp/gd32/arm/gd32305r-start/board/linker_scripts/link.ld diff --git a/bsp/gd32/gd32305r-start/board/linker_scripts/link.sct b/bsp/gd32/arm/gd32305r-start/board/linker_scripts/link.sct similarity index 100% rename from bsp/gd32/gd32305r-start/board/linker_scripts/link.sct rename to bsp/gd32/arm/gd32305r-start/board/linker_scripts/link.sct diff --git a/bsp/gd32/gd32305r-start/figures/board.jpg b/bsp/gd32/arm/gd32305r-start/figures/board.jpg similarity index 100% rename from bsp/gd32/gd32305r-start/figures/board.jpg rename to bsp/gd32/arm/gd32305r-start/figures/board.jpg diff --git a/bsp/gd32/arm/gd32305r-start/project.ewd b/bsp/gd32/arm/gd32305r-start/project.ewd new file mode 100644 index 0000000000..b16503f95c --- /dev/null +++ b/bsp/gd32/arm/gd32305r-start/project.ewd @@ -0,0 +1,3056 @@ + + + 3 + + Debug + + ARM + + 1 + + C-SPY + 2 + + 32 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 1 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 1 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 32 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 0 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 0 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 0 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 0 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/bsp/gd32/arm/gd32305r-start/project.ewp b/bsp/gd32/arm/gd32305r-start/project.ewp new file mode 100644 index 0000000000..8dac0702e5 --- /dev/null +++ b/bsp/gd32/arm/gd32305r-start/project.ewp @@ -0,0 +1,2316 @@ + + + 3 + + Debug + + ARM + + 1 + + General + 3 + + 33 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + + Release + + ARM + + 0 + + General + 3 + + 33 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + Compiler + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\stdlib.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscalls.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\time.c + + + + CPU + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\backtrace.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m4\context_iar.S + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m4\cpuport.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\showmem.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\completion.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\dataqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\misc\pin.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\pipe.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringbuffer.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\serial\serial.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\waitqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\workqueue.c + + + + Drivers + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_gpio.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_usart.c + + + $PROJ_DIR$\..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Source\IAR\startup_gd32f30x_cl.s + + + + Finsh + + $PROJ_DIR$\..\..\..\..\components\finsh\cmd.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\shell.c + + + + Kernel + + $PROJ_DIR$\..\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\..\src\device.c + + + $PROJ_DIR$\..\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\..\src\scheduler.c + + + $PROJ_DIR$\..\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\..\src\timer.c + + + + Libraries + + $PROJ_DIR$\..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_exti.c + + + $PROJ_DIR$\..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_gpio.c + + + $PROJ_DIR$\..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_misc.c + + + $PROJ_DIR$\..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_rcu.c + + + $PROJ_DIR$\..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_usart.c + + + $PROJ_DIR$\..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Source\system_gd32f30x.c + + + + POSIX + + diff --git a/bsp/gd32/arm/gd32305r-start/project.eww b/bsp/gd32/arm/gd32305r-start/project.eww new file mode 100644 index 0000000000..c2cb02eb1e --- /dev/null +++ b/bsp/gd32/arm/gd32305r-start/project.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\project.ewp + + + + + diff --git a/bsp/gd32/arm/gd32305r-start/project.uvoptx b/bsp/gd32/arm/gd32305r-start/project.uvoptx new file mode 100644 index 0000000000..3f89f6b481 --- /dev/null +++ b/bsp/gd32/arm/gd32305r-start/project.uvoptx @@ -0,0 +1,784 @@ + + + + 1.0 + +
    ### uVision Project, (C) Keil Software
    + + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 25000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 3 + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F30x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F305RC$Flash\GD32F30x_CL.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + Applications + 0 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + applications\main.c + main.c + 0 + 0 + + + + + Compiler + 0 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c + syscalls.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c + syscall_mem.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\time.c + time.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\stdlib.c + stdlib.c + 0 + 0 + + + + + CPU + 0 + 0 + 0 + 0 + + 3 + 6 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\backtrace.c + backtrace.c + 0 + 0 + + + 3 + 7 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 3 + 8 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 3 + 9 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m4\cpuport.c + cpuport.c + 0 + 0 + + + 3 + 10 + 2 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m4\context_rvds.S + context_rvds.S + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 4 + 11 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\workqueue.c + workqueue.c + 0 + 0 + + + 4 + 12 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\dataqueue.c + dataqueue.c + 0 + 0 + + + 4 + 13 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\pipe.c + pipe.c + 0 + 0 + + + 4 + 14 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\completion.c + completion.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\waitqueue.c + waitqueue.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\serial\serial.c + serial.c + 0 + 0 + + + + + Drivers + 0 + 0 + 0 + 0 + + 5 + 20 + 2 + 0 + 0 + 0 + ..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Source\ARM\startup_gd32f30x_cl.s + startup_gd32f30x_cl.s + 0 + 0 + + + 5 + 21 + 1 + 0 + 0 + 0 + board\board.c + board.c + 0 + 0 + + + 5 + 22 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 5 + 23 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_usart.c + drv_usart.c + 0 + 0 + + + + + Finsh + 0 + 0 + 0 + 0 + + 6 + 24 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 6 + 25 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 6 + 26 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + + + Kernel + 0 + 0 + 0 + 0 + + 7 + 27 + 1 + 0 + 0 + 0 + ..\..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 7 + 28 + 1 + 0 + 0 + 0 + ..\..\..\..\src\idle.c + idle.c + 0 + 0 + + + 7 + 29 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mem.c + mem.c + 0 + 0 + + + 7 + 30 + 1 + 0 + 0 + 0 + ..\..\..\..\src\clock.c + clock.c + 0 + 0 + + + 7 + 31 + 1 + 0 + 0 + 0 + ..\..\..\..\src\timer.c + timer.c + 0 + 0 + + + 7 + 32 + 1 + 0 + 0 + 0 + ..\..\..\..\src\thread.c + thread.c + 0 + 0 + + + 7 + 33 + 1 + 0 + 0 + 0 + ..\..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 7 + 34 + 1 + 0 + 0 + 0 + ..\..\..\..\src\scheduler.c + scheduler.c + 0 + 0 + + + 7 + 35 + 1 + 0 + 0 + 0 + ..\..\..\..\src\irq.c + irq.c + 0 + 0 + + + 7 + 36 + 1 + 0 + 0 + 0 + ..\..\..\..\src\components.c + components.c + 0 + 0 + + + 7 + 37 + 1 + 0 + 0 + 0 + ..\..\..\..\src\object.c + object.c + 0 + 0 + + + 7 + 38 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mempool.c + mempool.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\device.c + device.c + 0 + 0 + + + + + Libraries + 0 + 0 + 0 + 0 + + 8 + 40 + 1 + 0 + 0 + 0 + ..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Source\system_gd32f30x.c + system_gd32f30x.c + 0 + 0 + + + 8 + 41 + 1 + 0 + 0 + 0 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_rcu.c + gd32f30x_rcu.c + 0 + 0 + + + 8 + 42 + 1 + 0 + 0 + 0 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_usart.c + gd32f30x_usart.c + 0 + 0 + + + 8 + 43 + 1 + 0 + 0 + 0 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_exti.c + gd32f30x_exti.c + 0 + 0 + + + 8 + 44 + 1 + 0 + 0 + 0 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_gpio.c + gd32f30x_gpio.c + 0 + 0 + + + 8 + 45 + 1 + 0 + 0 + 0 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_misc.c + gd32f30x_misc.c + 0 + 0 + + + + + ::CMSIS + 0 + 0 + 0 + 1 + + +
    diff --git a/bsp/gd32/gd32305r-start/project.uvproj b/bsp/gd32/arm/gd32305r-start/project.uvproj similarity index 98% rename from bsp/gd32/gd32305r-start/project.uvproj rename to bsp/gd32/arm/gd32305r-start/project.uvproj index 7b14d78c05..dc7bfdc0d7 100644 --- a/bsp/gd32/gd32305r-start/project.uvproj +++ b/bsp/gd32/arm/gd32305r-start/project.uvproj @@ -12,10 +12,10 @@ GD32F305RC GigaDevice - IRAM(0x20000000-0x20018000) IROM(0x08000000-0x08040000) CLOCK(12000000) CPUTYPE("Cortex-M4") FPU2 + IRAM(0x20000000-0x20018000) IROM(0x08000000-0x08040000) CLOCK(25000000) CPUTYPE("Cortex-M4") FPU2 - "Startup\GD\GD32F30x\startup_gd32f30x.s" ("GD32F30x Startup Code") - UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F30x_3MB -FS08000000 -FL0300000) + "Startup\GD\GD32F30x\startup_gd32f30x_cl.s" ("GD32F30x Startup Code") + UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F30x_CL -FS08000000 -FL040000) 0 gd32f30x.h @@ -27,7 +27,7 @@ - SFD\GD\GD32F30x\GD32F30x.SFR + SFD\GD\GD32F30x\GD32F30x_CL.SFR 0 0 @@ -458,9 +458,9 @@ CPU - showmem.c + backtrace.c 1 - ..\..\..\libcpu\arm\common\showmem.c + ..\..\..\libcpu\arm\common\backtrace.c @@ -472,16 +472,9 @@ - backtrace.c + showmem.c 1 - ..\..\..\libcpu\arm\common\backtrace.c - - - - - context_rvds.S - 2 - ..\..\..\libcpu\arm\cortex-m4\context_rvds.S + ..\..\..\libcpu\arm\common\showmem.c @@ -491,23 +484,16 @@ ..\..\..\libcpu\arm\cortex-m4\cpuport.c + + + context_rvds.S + 2 + ..\..\..\libcpu\arm\cortex-m4\context_rvds.S + + DeviceDrivers - - - waitqueue.c - 1 - ..\..\..\components\drivers\ipc\waitqueue.c - - - - - completion.c - 1 - ..\..\..\components\drivers\ipc\completion.c - - pipe.c @@ -515,13 +501,6 @@ ..\..\..\components\drivers\ipc\pipe.c - - - dataqueue.c - 1 - ..\..\..\components\drivers\ipc\dataqueue.c - - workqueue.c @@ -529,6 +508,13 @@ ..\..\..\components\drivers\ipc\workqueue.c + + + ringbuffer.c + 1 + ..\..\..\components\drivers\ipc\ringbuffer.c + + ringblk_buf.c @@ -538,9 +524,23 @@ - ringbuffer.c + completion.c 1 - ..\..\..\components\drivers\ipc\ringbuffer.c + ..\..\..\components\drivers\ipc\completion.c + + + + + dataqueue.c + 1 + ..\..\..\components\drivers\ipc\dataqueue.c + + + + + waitqueue.c + 1 + ..\..\..\components\drivers\ipc\waitqueue.c @@ -617,9 +617,9 @@ Kernel - thread.c + clock.c 1 - ..\..\..\src\thread.c + ..\..\..\src\clock.c @@ -629,13 +629,6 @@ ..\..\..\src\components.c - - - ipc.c - 1 - ..\..\..\src\ipc.c - - mempool.c @@ -645,9 +638,16 @@ - kservice.c + thread.c 1 - ..\..\..\src\kservice.c + ..\..\..\src\thread.c + + + + + device.c + 1 + ..\..\..\src\device.c @@ -659,9 +659,9 @@ - clock.c + scheduler.c 1 - ..\..\..\src\clock.c + ..\..\..\src\scheduler.c @@ -671,20 +671,6 @@ ..\..\..\src\mem.c - - - object.c - 1 - ..\..\..\src\object.c - - - - - scheduler.c - 1 - ..\..\..\src\scheduler.c - - idle.c @@ -694,9 +680,23 @@ - device.c + object.c 1 - ..\..\..\src\device.c + ..\..\..\src\object.c + + + + + ipc.c + 1 + ..\..\..\src\ipc.c + + + + + kservice.c + 1 + ..\..\..\src\kservice.c diff --git a/bsp/gd32/gd32305r-start/project.uvprojx b/bsp/gd32/arm/gd32305r-start/project.uvprojx similarity index 76% rename from bsp/gd32/gd32305r-start/project.uvprojx rename to bsp/gd32/arm/gd32305r-start/project.uvprojx index 92bb19e9ba..6c30daae2f 100644 --- a/bsp/gd32/gd32305r-start/project.uvprojx +++ b/bsp/gd32/arm/gd32305r-start/project.uvprojx @@ -1,7 +1,10 @@ + 2.1 +
    ### uVision Project, (C) Keil Software
    + rt-thread @@ -13,31 +16,31 @@ GD32F305RC GigaDevice - GigaDevice.GD32F30x_DFP.2.1.0 + GigaDevice.GD32F30x_DFP.2.2.0 http://gd32mcu.com/data/documents/pack/ - IRAM(0x20000000,0x018000) IROM(0x08000000,0x040000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE - - - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F30x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F305RC$Flash\GD32F30x_CL.FLM)) + IRAM(0x20000000,0x018000) IROM(0x08000000,0x040000) CPUTYPE("Cortex-M4") FPU2 CLOCK(25000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F30x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F305RC$Flash\GD32F30x_CL.FLM)) 0 $$Device:GD32F305RC$Device\Include\gd32f30x.h - - - - - - - - - + + + + + + + + + $$Device:GD32F305RC$SVD\GD32F30x_CL.svd 0 0 - - - - - + + + + + 0 0 @@ -59,8 +62,8 @@ 0 0 - - + + 0 0 0 @@ -69,8 +72,8 @@ 0 0 - - + + 0 0 0 @@ -80,14 +83,14 @@ 1 0 fromelf --bin !L --output rtthread.bin - + 0 0 0 0 0 - + 0 @@ -101,8 +104,8 @@ 0 0 3 - - + + 1 @@ -135,11 +138,11 @@ 1 BIN\UL2CM3.DLL - - - - - + + + + + 0 @@ -172,7 +175,7 @@ 0 0 "Cortex-M4" - + 0 0 0 @@ -306,7 +309,7 @@ 0x0 - + 1 @@ -333,10 +336,10 @@ 0 0 - + USE_STDPERIPH_DRIVER, GD32F30X_CL, __RTTHREAD__, RT_USING_ARM_LIBC, __CLK_TCK=RT_TICK_PER_SECOND - - applications;.;..\..\..\components\libc\compilers\common;..\..\..\components\libc\compilers\common\extension;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;..\libraries\gd32_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Include;..\libraries\GD32F30x_Firmware_Library\CMSIS;..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Include;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc + + applications;.;..\..\..\..\components\libc\compilers\common;..\..\..\..\components\libc\compilers\common\extension;..\..\..\..\libcpu\arm\common;..\..\..\..\libcpu\arm\cortex-m4;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;board;..\libraries\gd32_drivers;..\..\..\..\components\finsh;.;..\..\..\..\include;..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Include;..\libraries\GD32F30x_Firmware_Library\CMSIS;..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Include;..\..\..\..\components\libc\posix\io\poll;..\..\..\..\components\libc\posix\io\stdio;..\..\..\..\components\libc\posix\ipc @@ -351,10 +354,10 @@ 0 4 - - - - + + + + @@ -366,13 +369,13 @@ 0 0x08000000 0x20000000 - + .\gd32_rom.ld - - - - - + + + + +
    @@ -389,70 +392,56 @@ Compiler - - - syscall_mem.c - 1 - ..\..\..\components\libc\compilers\armlibc\syscall_mem.c - - syscalls.c 1 - ..\..\..\components\libc\compilers\armlibc\syscalls.c + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c - - - stdlib.c + syscall_mem.c 1 - ..\..\..\components\libc\compilers\common\stdlib.c + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c - - time.c 1 - ..\..\..\components\libc\compilers\common\time.c + ..\..\..\..\components\libc\compilers\common\time.c + + + stdlib.c + 1 + ..\..\..\..\components\libc\compilers\common\stdlib.c CPU - - - div0.c - 1 - ..\..\..\libcpu\arm\common\div0.c - - backtrace.c 1 - ..\..\..\libcpu\arm\common\backtrace.c + ..\..\..\..\libcpu\arm\common\backtrace.c - - showmem.c 1 - ..\..\..\libcpu\arm\common\showmem.c + ..\..\..\..\libcpu\arm\common\showmem.c - - - context_rvds.S - 2 - ..\..\..\libcpu\arm\cortex-m4\context_rvds.S + div0.c + 1 + ..\..\..\..\libcpu\arm\common\div0.c - - cpuport.c 1 - ..\..\..\libcpu\arm\cortex-m4\cpuport.c + ..\..\..\..\libcpu\arm\cortex-m4\cpuport.c + + + context_rvds.S + 2 + ..\..\..\..\libcpu\arm\cortex-m4\context_rvds.S @@ -460,65 +449,49 @@ DeviceDrivers - waitqueue.c + workqueue.c 1 - ..\..\..\components\drivers\ipc\waitqueue.c + ..\..\..\..\components\drivers\ipc\workqueue.c - - - - ringblk_buf.c - 1 - ..\..\..\components\drivers\ipc\ringblk_buf.c - - - dataqueue.c 1 - ..\..\..\components\drivers\ipc\dataqueue.c + ..\..\..\..\components\drivers\ipc\dataqueue.c - - - - ringbuffer.c - 1 - ..\..\..\components\drivers\ipc\ringbuffer.c - - - - - completion.c - 1 - ..\..\..\components\drivers\ipc\completion.c - - - pipe.c 1 - ..\..\..\components\drivers\ipc\pipe.c + ..\..\..\..\components\drivers\ipc\pipe.c - - - workqueue.c + completion.c 1 - ..\..\..\components\drivers\ipc\workqueue.c + ..\..\..\..\components\drivers\ipc\completion.c + + + ringblk_buf.c + 1 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + waitqueue.c + 1 + ..\..\..\..\components\drivers\ipc\waitqueue.c + + + ringbuffer.c + 1 + ..\..\..\..\components\drivers\ipc\ringbuffer.c - - pin.c 1 - ..\..\..\components\drivers\misc\pin.c + ..\..\..\..\components\drivers\misc\pin.c - - serial.c 1 - ..\..\..\components\drivers\serial\serial.c + ..\..\..\..\components\drivers\serial\serial.c @@ -530,22 +503,16 @@ 2 ..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Source\ARM\startup_gd32f30x_cl.s - - board.c 1 board\board.c - - drv_gpio.c 1 ..\libraries\gd32_drivers\drv_gpio.c - - drv_usart.c 1 @@ -559,21 +526,17 @@ shell.c 1 - ..\..\..\components\finsh\shell.c + ..\..\..\..\components\finsh\shell.c - - msh.c 1 - ..\..\..\components\finsh\msh.c + ..\..\..\..\components\finsh\msh.c - - cmd.c 1 - ..\..\..\components\finsh\cmd.c + ..\..\..\..\components\finsh\cmd.c @@ -581,93 +544,69 @@ Kernel - mempool.c + kservice.c 1 - ..\..\..\src\mempool.c + ..\..\..\..\src\kservice.c - - - - thread.c - 1 - ..\..\..\src\thread.c - - - - - components.c - 1 - ..\..\..\src\components.c - - - - - timer.c - 1 - ..\..\..\src\timer.c - - - idle.c 1 - ..\..\..\src\idle.c + ..\..\..\..\src\idle.c - - mem.c 1 - ..\..\..\src\mem.c + ..\..\..\..\src\mem.c - - - - irq.c - 1 - ..\..\..\src\irq.c - - - - - ipc.c - 1 - ..\..\..\src\ipc.c - - - - - scheduler.c - 1 - ..\..\..\src\scheduler.c - - - - - device.c - 1 - ..\..\..\src\device.c - - - - - kservice.c - 1 - ..\..\..\src\kservice.c - - - - - object.c - 1 - ..\..\..\src\object.c - - - clock.c 1 - ..\..\..\src\clock.c + ..\..\..\..\src\clock.c + + + timer.c + 1 + ..\..\..\..\src\timer.c + + + thread.c + 1 + ..\..\..\..\src\thread.c + + + ipc.c + 1 + ..\..\..\..\src\ipc.c + + + scheduler.c + 1 + ..\..\..\..\src\scheduler.c + + + irq.c + 1 + ..\..\..\..\src\irq.c + + + components.c + 1 + ..\..\..\..\src\components.c + + + object.c + 1 + ..\..\..\..\src\object.c + + + mempool.c + 1 + ..\..\..\..\src\mempool.c + + + device.c + 1 + ..\..\..\..\src\device.c @@ -679,36 +618,26 @@ 1 ..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Source\system_gd32f30x.c - - gd32f30x_rcu.c 1 ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_rcu.c - - gd32f30x_usart.c 1 ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_usart.c - - gd32f30x_exti.c 1 ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_exti.c - - gd32f30x_gpio.c 1 ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_gpio.c - - gd32f30x_misc.c 1 @@ -716,33 +645,39 @@ + + ::CMSIS + + - + - + - + - + + <Project Info> - - - - - + + + + + 0 1 + diff --git a/bsp/gd32/gd32305r-start/rtconfig.h b/bsp/gd32/arm/gd32305r-start/rtconfig.h similarity index 95% rename from bsp/gd32/gd32305r-start/rtconfig.h rename to bsp/gd32/arm/gd32305r-start/rtconfig.h index d6804594cb..fcac9e83be 100644 --- a/bsp/gd32/gd32305r-start/rtconfig.h +++ b/bsp/gd32/arm/gd32305r-start/rtconfig.h @@ -52,8 +52,14 @@ #define RT_USING_USER_MAIN #define RT_MAIN_THREAD_STACK_SIZE 2048 #define RT_MAIN_THREAD_PRIORITY 10 -#define RT_USING_MSH + +/* C++ features */ + + +/* Command shell */ + #define RT_USING_FINSH +#define RT_USING_MSH #define FINSH_USING_MSH #define FINSH_THREAD_NAME "tshell" #define FINSH_THREAD_PRIORITY 20 @@ -66,6 +72,9 @@ #define FINSH_USING_DESCRIPTION #define FINSH_ARG_MAX 10 +/* Device virtual file system */ + + /* Device Drivers */ #define RT_USING_DEVICE_IPC @@ -81,7 +90,7 @@ /* Using USB */ -/* C/C++ and POSIX layer */ +/* POSIX layer and C standard library */ #define RT_LIBC_DEFAULT_TIMEZONE 8 @@ -93,10 +102,12 @@ /* Socket is in the 'Network' category */ - /* Network */ +/* VBUS(Virtual Software BUS) */ + + /* Utilities */ diff --git a/bsp/gd32/gd32305r-start/rtconfig.py b/bsp/gd32/arm/gd32305r-start/rtconfig.py similarity index 98% rename from bsp/gd32/gd32305r-start/rtconfig.py rename to bsp/gd32/arm/gd32305r-start/rtconfig.py index 2075890edf..a91905a233 100644 --- a/bsp/gd32/gd32305r-start/rtconfig.py +++ b/bsp/gd32/arm/gd32305r-start/rtconfig.py @@ -22,8 +22,8 @@ elif CROSS_TOOL == 'keil': PLATFORM = 'armcc' EXEC_PATH = r'C:/Keil_v5' elif CROSS_TOOL == 'iar': - PLATFORM = 'iccarm' - EXEC_PATH = r'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.3' + 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') @@ -93,7 +93,7 @@ elif PLATFORM == 'armcc': POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' -elif PLATFORM == 'iccarm': +elif PLATFORM == 'iar': # toolchains CC = 'iccarm' CXX = 'iccarm' diff --git a/bsp/gd32/arm/gd32305r-start/template.ewp b/bsp/gd32/arm/gd32305r-start/template.ewp new file mode 100644 index 0000000000..3fbd2cab92 --- /dev/null +++ b/bsp/gd32/arm/gd32305r-start/template.ewp @@ -0,0 +1,1889 @@ + + + 2 + + Debug + + ARM + + 1 + + General + 3 + + 22 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 22 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + + diff --git a/bsp/gd32/gd32305r-start/template.uvoptx b/bsp/gd32/arm/gd32305r-start/template.uvoptx similarity index 96% rename from bsp/gd32/gd32305r-start/template.uvoptx rename to bsp/gd32/arm/gd32305r-start/template.uvoptx index 18fdad5165..9a597f5230 100644 --- a/bsp/gd32/gd32305r-start/template.uvoptx +++ b/bsp/gd32/arm/gd32305r-start/template.uvoptx @@ -26,7 +26,7 @@ 0x4 ARM-ADS - 12000000 + 25000000 1 1 @@ -120,7 +120,7 @@ 0 UL2CM3 - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F30x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F305RC$Flash\GD32F30x_CL.FLM)) + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F30x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F305RC$Flash\GD32F30x_CL.FLM)) diff --git a/bsp/gd32/gd32305r-start/template.uvproj b/bsp/gd32/arm/gd32305r-start/template.uvproj similarity index 98% rename from bsp/gd32/gd32305r-start/template.uvproj rename to bsp/gd32/arm/gd32305r-start/template.uvproj index 919038f7f4..c1ac6be5d7 100644 --- a/bsp/gd32/gd32305r-start/template.uvproj +++ b/bsp/gd32/arm/gd32305r-start/template.uvproj @@ -15,10 +15,10 @@ GD32F305RC GigaDevice - IRAM(0x20000000-0x20018000) IROM(0x08000000-0x08040000) CLOCK(12000000) CPUTYPE("Cortex-M4") FPU2 + IRAM(0x20000000-0x20018000) IROM(0x08000000-0x08040000) CLOCK(25000000) CPUTYPE("Cortex-M4") FPU2 - "Startup\GD\GD32F30x\startup_gd32f30x.s" ("GD32F30x Startup Code") - UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F30x_3MB -FS08000000 -FL0300000) + "Startup\GD\GD32F30x\startup_gd32f30x_cl.s" ("GD32F30x Startup Code") + UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F30x_CL -FS08000000 -FL040000) 0 gd32f30x.h @@ -30,7 +30,7 @@ - SFD\GD\GD32F30x\GD32F30x.SFR + SFD\GD\GD32F30x\GD32F30x_CL.SFR 0 0 @@ -605,9 +605,9 @@ Startup - startup_gd32f30x.s + startup_gd32f30x_cl.s 2 - ..\..\..\Library\Firmware\CMSIS\GD\GD32F30x\Source\ARM\startup_gd32f30x.s + ..\..\..\Library\Firmware\CMSIS\GD\GD32F30x\Source\ARM\startup_gd32f30x_cl.s diff --git a/bsp/gd32/gd32305r-start/template.uvprojx b/bsp/gd32/arm/gd32305r-start/template.uvprojx similarity index 98% rename from bsp/gd32/gd32305r-start/template.uvprojx rename to bsp/gd32/arm/gd32305r-start/template.uvprojx index 0c172a57a8..3e3ed8c310 100644 --- a/bsp/gd32/gd32305r-start/template.uvprojx +++ b/bsp/gd32/arm/gd32305r-start/template.uvprojx @@ -18,10 +18,10 @@ GigaDevice GigaDevice.GD32F30x_DFP.2.1.0 http://gd32mcu.com/data/documents/pack/ - IRAM(0x20000000,0x018000) IROM(0x08000000,0x040000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE + IRAM(0x20000000,0x018000) IROM(0x08000000,0x040000) CPUTYPE("Cortex-M4") FPU2 CLOCK(25000000) ELITTLE - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F30x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F305RC$Flash\GD32F30x_CL.FLM)) + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F30x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F305RC$Flash\GD32F30x_CL.FLM)) 0 $$Device:GD32F305RC$Device\Include\gd32f30x.h diff --git a/bsp/gd32/gd32303e-eval/.config b/bsp/gd32/arm/gd32307e-start/.config similarity index 96% rename from bsp/gd32/gd32303e-eval/.config rename to bsp/gd32/arm/gd32307e-start/.config index f0dea1ae4c..b8663cde56 100644 --- a/bsp/gd32/gd32303e-eval/.config +++ b/bsp/gd32/arm/gd32307e-start/.config @@ -90,8 +90,17 @@ 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 -CONFIG_RT_USING_MSH=y + +# +# C++ features +# +# CONFIG_RT_USING_CPLUSPLUS is not set + +# +# Command shell +# CONFIG_RT_USING_FINSH=y +CONFIG_RT_USING_MSH=y CONFIG_FINSH_USING_MSH=y CONFIG_FINSH_THREAD_NAME="tshell" CONFIG_FINSH_THREAD_PRIORITY=20 @@ -105,8 +114,11 @@ 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 is not set -# CONFIG_RT_USING_FAL is not set # # Device Drivers @@ -152,7 +164,7 @@ CONFIG_RT_USING_PIN=y # CONFIG_RT_USING_USB_DEVICE is not set # -# C/C++ and POSIX layer +# POSIX layer and C standard library # CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 @@ -176,7 +188,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # # Socket is in the 'Network' category # -# CONFIG_RT_USING_CPLUSPLUS is not set # # Network @@ -186,6 +197,11 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_RT_USING_LWIP is not set # CONFIG_RT_USING_AT is not set +# +# VBUS(Virtual Software BUS) +# +# CONFIG_RT_USING_VBUS is not set + # # Utilities # @@ -194,7 +210,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_RT_USING_UTEST is not set # 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 @@ -259,6 +274,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set # CONFIG_PKG_USING_JOYLINK is not set # CONFIG_PKG_USING_EZ_IOT_OS is not set +# CONFIG_PKG_USING_IOTSHARP_SDK 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 @@ -298,6 +314,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # # CONFIG_PKG_USING_MBEDTLS is not set # CONFIG_PKG_USING_LIBSODIUM is not set +# CONFIG_PKG_USING_LIBHYDROGEN is not set # CONFIG_PKG_USING_TINYCRYPT is not set # CONFIG_PKG_USING_TFM is not set # CONFIG_PKG_USING_YD_CRYPTO is not set @@ -337,6 +354,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_LVGL is not set # CONFIG_PKG_USING_LITTLEVGL2RTT is not set # CONFIG_PKG_USING_LV_MUSIC_DEMO is not set +# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set # # u8g2: a monochrome graphic library @@ -411,6 +429,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_FDT is not set # CONFIG_PKG_USING_CBOX is not set # CONFIG_PKG_USING_SNOWFLAKE is not set +# CONFIG_PKG_USING_HASH_MATCH is not set # # system packages @@ -442,6 +461,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CMSIS: ARM Cortex-M Microcontroller Software Interface Standard # # CONFIG_PKG_USING_CMSIS_5 is not set +# CONFIG_PKG_USING_CMSIS_RTOS1 is not set # CONFIG_PKG_USING_CMSIS_RTOS2 is not set # @@ -484,6 +504,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_TINYUSB is not set # CONFIG_PKG_USING_CHERRYUSB is not set # CONFIG_PKG_USING_KMULTI_RTIMER is not set +# CONFIG_PKG_USING_TFDB is not set # # peripheral libraries and drivers @@ -638,12 +659,13 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_CONTROLLER is not set # CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set # CONFIG_PKG_USING_MFBD is not set +# CONFIG_PKG_USING_SLCAN2RTT is not set # # Hardware Drivers Config # CONFIG_SOC_SERIES_GD32F30x=y -CONFIG_SOC_GD32303Z=y +CONFIG_SOC_GD32307E=y # # Onboard Peripheral Drivers @@ -662,6 +684,13 @@ CONFIG_BSP_USING_UART1=y # CONFIG_BSP_USING_UART4 is not set # CONFIG_BSP_USING_SPI is not set # CONFIG_BSP_USING_I2C1 is not set +# CONFIG_BSP_USING_ADC is not set +# CONFIG_BSP_USING_TIM is not set +# CONFIG_BSP_USING_ONCHIP_RTC is not set +# CONFIG_BSP_USING_WDT is not set +# CONFIG_BSP_USING_SDIO is not set +# CONFIG_BSP_USING_USBD is not set +# CONFIG_BSP_USING_USBH is not set # # Board extended module Drivers diff --git a/bsp/gd32/arm/gd32307e-start/Kconfig b/bsp/gd32/arm/gd32307e-start/Kconfig new file mode 100644 index 0000000000..dbc650938f --- /dev/null +++ b/bsp/gd32/arm/gd32307e-start/Kconfig @@ -0,0 +1,21 @@ +mainmenu "RT-Thread Configuration" + +config BSP_DIR + string + option env="BSP_ROOT" + default "." + +config RTT_DIR + string + option env="RTT_ROOT" + default "../../../.." + +config PKGS_DIR + string + option env="PKGS_ROOT" + default "packages" + +source "$RTT_DIR/Kconfig" +source "$PKGS_DIR/Kconfig" +source "../libraries/Kconfig" +source "board/Kconfig" diff --git a/bsp/gd32/gd32407v-start/README.md b/bsp/gd32/arm/gd32307e-start/README.md similarity index 72% rename from bsp/gd32/gd32407v-start/README.md rename to bsp/gd32/arm/gd32307e-start/README.md index f938dc9f84..ce1e2ea9d4 100644 --- a/bsp/gd32/gd32407v-start/README.md +++ b/bsp/gd32/arm/gd32307e-start/README.md @@ -1,8 +1,8 @@ -# GD32407V-START开发板BSP说明 +# GD32307E-START开发板BSP说明 ## 简介 -GD32407V-START是-兆易创新推出的一款GD32F4XX系列的评估板,最高主频高达168M,该开发板具有丰富的板载资源,可以充分发挥 GD32407V 的芯片性能。 +GD3307E-START是-兆易创新推出的一款GD32F30X系列的评估板,最高主频高达120M,该开发板具有丰富的板载资源,可以充分发挥 GD32307VE 的芯片性能。 开发板外观如下图所示: @@ -10,11 +10,11 @@ GD32407V-START是-兆易创新推出的一款GD32F4XX系列的评估板,最高 该开发板常用 **板载资源** 如下: -- GD32407V,主频 168MHz,3072KB FLASH ,192KB RAM +- GD32307VE,主频 120MHz,512KB FLASH ,96KB RAM - 常用外设 - - LED :2个,LED1 (电源指示灯),LED2(PC6) + - LED :2个,LED1(PC6) - 按键:2个,K1(复位引脚),K2(用户按键,PA0) - 常用接口:USB 接口 @@ -27,11 +27,12 @@ GD32407V-START是-兆易创新推出的一款GD32F4XX系列的评估板,最高 | **片上外设** | **支持情况** | **备注** | |:--------- |:--------:|:------------------------------------- | -| GPIO | 支持 | PA0, PA1... PK15 ---> PIN: 0, 1...144 | -| UART | 支持 | UART0 - UART5 | +| GPIO | 支持 | PA0, PA1...---> PIN: 0, 1...79 | +| UART | 支持 | UART0 - UART4 | | I2C | 支持 | I2C1 | -| SPI | 支持 | SPI0 -  SPI2 | +| SPI | 支持 | SPI0 - SPI2 | | SPI FLASH | 支持 | | +| ADC | 支持 | ADC0 - ADC1 | | **扩展模块** | **支持情况** | **备注** | | 暂无 | 暂不支持 | 暂不支持 | @@ -49,7 +50,7 @@ GD32407V-START是-兆易创新推出的一款GD32F4XX系列的评估板,最高 ### 快速上手 -本 BSP 为开发者提供 MDK5 工程,并且支持 GCC 开发环境,也可使用RT-Thread Studio开发。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 +本 BSP 为开发者提供 MDK4、MDK5 和 IAR 工程,并且支持 GCC 开发环境,也可使用RT-Thread Studio开发。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 #### 硬件连接 @@ -70,8 +71,8 @@ GD32407V-START是-兆易创新推出的一款GD32F4XX系列的评估板,最高 ```bash \ | / - RT - Thread Operating System - / | \ 4.0.4 build Jan 9 2021 - 2006 - 2021 Copyright by rt-thread team + / | \ 4.1.0 build May 3 2022 09:26:08 + 2006 - 2022 Copyright by RT-Thread team msh > ``` @@ -85,7 +86,7 @@ msh > 3. 输入`pkgs --update`命令更新软件包。 -4. 输入`scons --target=mdk4/mdk5` 命令重新生成工程。 +4. 输入`scons --target=mdk4/mdk5/iar` 命令重新生成工程。 ## 注意事项 diff --git a/bsp/gd32/gd32450i-eval/SConscript b/bsp/gd32/arm/gd32307e-start/SConscript similarity index 100% rename from bsp/gd32/gd32450i-eval/SConscript rename to bsp/gd32/arm/gd32307e-start/SConscript diff --git a/bsp/gd32/arm/gd32307e-start/SConstruct b/bsp/gd32/arm/gd32307e-start/SConstruct new file mode 100644 index 0000000000..a39a8933ac --- /dev/null +++ b/bsp/gd32/arm/gd32307e-start/SConstruct @@ -0,0 +1,60 @@ +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.' + rtconfig.TARGET_EXT + +DefaultEnvironment(tools=[]) +env = Environment(tools = ['mingw'], + AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, + CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS, + AR = rtconfig.AR, ARFLAGS = '-rc', + CXX = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS, + LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) +env.PrependENVPath('PATH', rtconfig.EXEC_PATH) + +if rtconfig.PLATFORM == 'iar': + env.Replace(CCCOM = ['$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES']) + env.Replace(ARFLAGS = ['']) + env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map') + +Export('RTT_ROOT') +Export('rtconfig') + +SDK_ROOT = os.path.abspath('./') + +if os.path.exists(SDK_ROOT + '/libraries'): + libraries_path_prefix = SDK_ROOT + '/libraries' +else: + libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries' + +SDK_LIB = libraries_path_prefix +Export('SDK_LIB') + +# prepare building environment +objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) + +gd32_library = 'GD32F30x_Firmware_Library' +rtconfig.BSP_LIBRARY_TYPE = gd32_library + +# include libraries +objs.extend(SConscript(os.path.join(libraries_path_prefix, gd32_library, 'SConscript'))) + +# include drivers +objs.extend(SConscript(os.path.join(libraries_path_prefix, 'gd32_drivers', 'SConscript'))) + +# make a building +DoBuilding(TARGET, objs) diff --git a/bsp/gd32/gd32450i-eval/applications/SConscript b/bsp/gd32/arm/gd32307e-start/applications/SConscript similarity index 100% rename from bsp/gd32/gd32450i-eval/applications/SConscript rename to bsp/gd32/arm/gd32307e-start/applications/SConscript diff --git a/bsp/gd32/arm/gd32307e-start/applications/main.c b/bsp/gd32/arm/gd32307e-start/applications/main.c new file mode 100644 index 0000000000..cc273e0829 --- /dev/null +++ b/bsp/gd32/arm/gd32307e-start/applications/main.c @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-05-03 BruceOu first implementation + */ + +#include +#include +#include +#include + +/* defined the LED1 pin: PC6 */ +#define LED1_PIN GET_PIN(C, 6) + +int main(void) +{ + int count = 1; + + /* set LED1 pin mode to output */ + rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT); + + while (count++) + { + rt_pin_write(LED1_PIN, PIN_HIGH); + rt_thread_mdelay(500); + rt_pin_write(LED1_PIN, PIN_LOW); + rt_thread_mdelay(500); + } + + return RT_EOK; +} diff --git a/bsp/gd32/arm/gd32307e-start/board/Kconfig b/bsp/gd32/arm/gd32307e-start/board/Kconfig new file mode 100644 index 0000000000..11ccc123a6 --- /dev/null +++ b/bsp/gd32/arm/gd32307e-start/board/Kconfig @@ -0,0 +1,208 @@ +menu "Hardware Drivers Config" + +config SOC_SERIES_GD32F30x + bool + default y + +config SOC_GD32307E + bool + select SOC_SERIES_GD32F30x + select RT_USING_COMPONENTS_INIT + select RT_USING_USER_MAIN + default y + +menu "Onboard Peripheral Drivers" + +endmenu + +menu "On-chip Peripheral Drivers" + + config BSP_USING_GPIO + bool "Enable GPIO" + select RT_USING_PIN + default y + + menuconfig BSP_USING_UART + bool "Enable UART" + default y + select RT_USING_SERIAL + if BSP_USING_UART + config BSP_USING_UART0 + bool "Enable UART0" + default n + + config BSP_UART0_RX_USING_DMA + bool "Enable UART0 RX DMA" + depends on BSP_USING_UART0 + select RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART1 + bool "Enable UART1" + default y + + config BSP_UART1_RX_USING_DMA + bool "Enable UART1 RX DMA" + depends on BSP_USING_UART1 + select RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART2 + bool "Enable UART2" + default n + + config BSP_UART2_RX_USING_DMA + bool "Enable UART2 RX DMA" + depends on BSP_USING_UART2 + select RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART3 + bool "Enable UART3" + default n + + config BSP_UART3_RX_USING_DMA + bool "Enable UART3 RX DMA" + depends on BSP_USING_UART3 + select RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART4 + bool "Enable UART4" + default n + + config BSP_UART4_RX_USING_DMA + bool "Enable UART4 RX DMA" + depends on BSP_USING_UART4 + select RT_SERIAL_USING_DMA + default n + + endif + + menuconfig BSP_USING_SPI + bool "Enable SPI BUS" + default n + select RT_USING_SPI + if BSP_USING_SPI + config BSP_USING_SPI1 + bool "Enable SPI1 BUS" + default n + + config BSP_SPI1_TX_USING_DMA + bool "Enable SPI1 TX DMA" + depends on BSP_USING_SPI1 + default n + + config BSP_SPI1_RX_USING_DMA + bool "Enable SPI1 RX DMA" + depends on BSP_USING_SPI1 + select BSP_SPI1_TX_USING_DMA + default n + endif + + menuconfig BSP_USING_I2C1 + bool "Enable I2C1 BUS (software simulation)" + default n + select RT_USING_I2C + select RT_USING_I2C_BITOPS + select RT_USING_PIN + if BSP_USING_I2C1 + config BSP_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 1 216 + default 24 + config BSP_I2C1_SDA_PIN + int "I2C1 sda pin number" + range 1 216 + default 25 + endif + + menuconfig BSP_USING_ADC + bool "Enable ADC" + default n + select RT_USING_ADC + if BSP_USING_ADC + config BSP_USING_ADC0 + bool "Enable ADC0" + default n + + config BSP_USING_ADC1 + bool "Enable ADC1" + default n + endif + + menuconfig BSP_USING_TIM + bool "Enable timer" + default n + select RT_USING_HWTIMER + if BSP_USING_TIM + config BSP_USING_TIM10 + bool "Enable TIM10" + default n + + config BSP_USING_TIM11 + bool "Enable TIM11" + default n + + config BSP_USING_TIM12 + bool "Enable TIM13" + default n + endif + + menuconfig BSP_USING_ONCHIP_RTC + bool "Enable RTC" + select RT_USING_RTC + default n + if BSP_USING_ONCHIP_RTC + choice + prompt "Select clock source" + default BSP_RTC_USING_LSE + + config BSP_RTC_USING_LSE + bool "RTC USING LSE" + + config BSP_RTC_USING_LSI + bool "RTC USING LSI" + endchoice + endif + + config BSP_USING_WDT + bool "Enable Watchdog Timer" + select RT_USING_WDT + default n + + config BSP_USING_SDIO + bool "Enable SDIO" + select RT_USING_SDIO + select RT_USING_DFS + default n + + config BSP_USING_USBD + bool "Enable USB Device" + select RT_USING_USB_DEVICE + default n + + menuconfig BSP_USING_USBH + bool "Enable USB Host" + select RT_USING_USB_HOST + default n + if BSP_USING_USBH + menuconfig RT_USBH_MSTORAGE + bool "Enable Udisk Drivers" + default n + if RT_USBH_MSTORAGE + config UDISK_MOUNTPOINT + string "Udisk mount dir" + default "/" + endif + endif + + source "../libraries/gd32_drivers/Kconfig" + +endmenu + +menu "Board extended module Drivers" + +endmenu + +endmenu diff --git a/bsp/gd32/arm/gd32307e-start/board/SConscript b/bsp/gd32/arm/gd32307e-start/board/SConscript new file mode 100644 index 0000000000..ec6b7bf3c1 --- /dev/null +++ b/bsp/gd32/arm/gd32307e-start/board/SConscript @@ -0,0 +1,28 @@ +import os +import rtconfig +from building import * + +Import('SDK_LIB') + +cwd = GetCurrentDir() + +# add general drivers +src = Split(''' +board.c +''') + +path = [cwd] + +startup_path_prefix = SDK_LIB + +if rtconfig.CROSS_TOOL == 'gcc': + src += [startup_path_prefix + '/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/GCC/startup_gd32f30x_cl.s'] +elif rtconfig.CROSS_TOOL == 'keil': + src += [startup_path_prefix + '/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/ARM/startup_gd32f30x_cl.s'] +elif rtconfig.CROSS_TOOL == 'iar': + src += [startup_path_prefix + '/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/IAR/startup_gd32f30x_cl.s'] + +CPPDEFINES = ['GD32F30X_CL'] +group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES) + +Return('group') diff --git a/bsp/gd32/arm/gd32307e-start/board/board.c b/bsp/gd32/arm/gd32307e-start/board/board.c new file mode 100644 index 0000000000..4a7c61b8cf --- /dev/null +++ b/bsp/gd32/arm/gd32307e-start/board/board.c @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-12-18 BruceOu first implementation + */ +#include +#include +#include +#include + +/** + * @brief This function is executed in case of error occurrence. + * @param None + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler */ + /* User can add his own implementation to report the HAL error return state */ + while (1) + { + } + /* USER CODE END Error_Handler */ +} + +/** System Clock Configuration +*/ +void SystemClock_Config(void) +{ + SysTick_Config(SystemCoreClock / RT_TICK_PER_SECOND); + NVIC_SetPriority(SysTick_IRQn, 0); +} + +/** + * 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 GD32 board. + */ +void rt_hw_board_init() +{ + /* NVIC Configuration */ +#define NVIC_VTOR_MASK 0x3FFFFF80 +#ifdef VECT_TAB_RAM + /* Set the Vector Table base location at 0x10000000 */ + SCB->VTOR = (0x10000000 & NVIC_VTOR_MASK); +#else /* VECT_TAB_FLASH */ + /* Set the Vector Table base location at 0x08000000 */ + SCB->VTOR = (0x08000000 & NVIC_VTOR_MASK); +#endif + + 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 +} + +/*@}*/ diff --git a/bsp/gd32/arm/gd32307e-start/board/board.h b/bsp/gd32/arm/gd32307e-start/board/board.h new file mode 100644 index 0000000000..7bc2c83c60 --- /dev/null +++ b/bsp/gd32/arm/gd32307e-start/board/board.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-12-18 BruceOu first implementation + */ +#ifndef __BOARD_H__ +#define __BOARD_H__ + +#include "gd32f30x.h" +#include "drv_usart.h" +#include "drv_gpio.h" + +#include "gd32f30x_exti.h" + +#define EXT_SDRAM_BEGIN (0xC0000000U) /* the begining address of external SDRAM */ +#define EXT_SDRAM_END (EXT_SDRAM_BEGIN + (32U * 1024 * 1024)) /* the end address of external SDRAM */ + +// Internal SRAM memory size[Kbytes] <8-96> +// Default: 96 +#ifdef __ICCARM__ +// Use *.icf ram symbal, to avoid hardcode. +extern char __ICFEDIT_region_RAM_end__; +#define GD32_SRAM_END &__ICFEDIT_region_RAM_end__ +#else +#define GD32_SRAM_SIZE 96 +#define GD32_SRAM_END (0x20000000 + GD32_SRAM_SIZE * 1024) +#endif + +#ifdef __CC_ARM +extern int Image$$RW_IRAM1$$ZI$$Limit; +#define HEAP_BEGIN (&Image$$RW_IRAM1$$ZI$$Limit) +#elif __ICCARM__ +#pragma section="HEAP" +#define HEAP_BEGIN (__segment_end("HEAP")) +#else +extern int __bss_end; +#define HEAP_BEGIN (&__bss_end) +#endif + +#define HEAP_END GD32_SRAM_END + +#endif + diff --git a/bsp/gd32/arm/gd32307e-start/board/gd32f30x_libopt.h b/bsp/gd32/arm/gd32307e-start/board/gd32f30x_libopt.h new file mode 100644 index 0000000000..e026fd658a --- /dev/null +++ b/bsp/gd32/arm/gd32307e-start/board/gd32f30x_libopt.h @@ -0,0 +1,65 @@ +/*! + \file gd32f30x_libopt.h + \brief library optional for gd32f30x + + \version 2021-03-23, V2.0.0, demo for GD32F30x +*/ + +/* + Copyright (c) 2021, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32F30X_LIBOPT_H +#define GD32F30X_LIBOPT_H + +#include "gd32f30x_rcu.h" +#include "gd32f30x_adc.h" +#include "gd32f30x_can.h" +#include "gd32f30x_crc.h" +#include "gd32f30x_ctc.h" +#include "gd32f30x_dac.h" +#include "gd32f30x_dbg.h" +#include "gd32f30x_dma.h" +#include "gd32f30x_exti.h" +#include "gd32f30x_fmc.h" +#include "gd32f30x_fwdgt.h" +#include "gd32f30x_gpio.h" +#include "gd32f30x_i2c.h" +#include "gd32f30x_pmu.h" +#include "gd32f30x_bkp.h" +#include "gd32f30x_rtc.h" +#include "gd32f30x_sdio.h" +#include "gd32f30x_spi.h" +#include "gd32f30x_timer.h" +#include "gd32f30x_usart.h" +#include "gd32f30x_wwdgt.h" +#include "gd32f30x_misc.h" +#include "gd32f30x_exmc.h" +#ifdef GD32F30X_CL +#include "gd32f30x_enet.h" +#endif /* GD32F30X_CL */ + +#endif /* GD32F30X_LIBOPT_H */ diff --git a/bsp/gd32/arm/gd32307e-start/board/linker_scripts/link.icf b/bsp/gd32/arm/gd32307e-start/board/linker_scripts/link.icf new file mode 100644 index 0000000000..498c2369e2 --- /dev/null +++ b/bsp/gd32/arm/gd32307e-start/board/linker_scripts/link.icf @@ -0,0 +1,40 @@ +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */ +/*-Specials-*/ +define symbol __ICFEDIT_intvec_start__ = 0x08000000; +/*-Memory Regions-*/ +define symbol __ICFEDIT_region_ROM_start__ = 0x08000000; +define symbol __ICFEDIT_region_ROM_end__ = 0x0807FFFF; +define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; +define symbol __ICFEDIT_region_RAM_end__ = 0x20017FFF; +/*-Sizes-*/ +define symbol __ICFEDIT_size_cstack__ = 0x200; +define symbol __ICFEDIT_size_heap__ = 0x200; +/**** End of ICF editor section. ###ICF###*/ + +export symbol __ICFEDIT_region_RAM_end__; + +define symbol __region_RAM1_start__ = 0x10000000; +define symbol __region_RAM1_end__ = 0x1000FFFF; + +define memory mem with size = 4G; +define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; +define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; +define region RAM1_region = mem:[from __region_RAM1_start__ to __region_RAM1_end__]; + +define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; +define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; + +initialize by copy { readwrite }; +do not initialize { section .noinit }; + +keep { section FSymTab }; +keep { section VSymTab }; +keep { section .rti_fn* }; +place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; + +place in ROM_region { readonly }; +place in RAM_region { readwrite, + block CSTACK, block HEAP }; +place in RAM1_region { section .sram }; \ No newline at end of file diff --git a/bsp/gd32/arm/gd32307e-start/board/linker_scripts/link.ld b/bsp/gd32/arm/gd32307e-start/board/linker_scripts/link.ld new file mode 100644 index 0000000000..aa1aaaec2c --- /dev/null +++ b/bsp/gd32/arm/gd32307e-start/board/linker_scripts/link.ld @@ -0,0 +1,142 @@ +/* + * linker script for GD32F30x with GNU ld + * BruceOu 2022-05-03 + */ + +/* Program Entry, set to mark it as "used" and avoid gc */ +MEMORY +{ + CODE (rx) : ORIGIN = 0x08000000, LENGTH = 512k /* 512KB flash */ + DATA (rw) : ORIGIN = 0x20000000, LENGTH = 96k /* 96KB sram */ +} +ENTRY(Reset_Handler) +_system_stack_size = 0x200; + +SECTIONS +{ + .text : + { + . = ALIGN(4); + _stext = .; + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + *(.text) /* remaining code */ + *(.text.*) /* remaining code */ + *(.rodata) /* read-only data (constants) */ + *(.rodata*) + *(.glue_7) + *(.glue_7t) + *(.gnu.linkonce.t*) + + /* section information for finsh shell */ + . = ALIGN(4); + __fsymtab_start = .; + KEEP(*(FSymTab)) + __fsymtab_end = .; + . = ALIGN(4); + __vsymtab_start = .; + KEEP(*(VSymTab)) + __vsymtab_end = .; + . = ALIGN(4); + + /* section information for initial. */ + . = ALIGN(4); + __rt_init_start = .; + KEEP(*(SORT(.rti_fn*))) + __rt_init_end = .; + . = ALIGN(4); + + . = ALIGN(4); + _etext = .; + } > CODE = 0 + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + + /* This is used by the startup in order to initialize the .data secion */ + _sidata = .; + } > CODE + __exidx_end = .; + + /* .data section which is used for initialized data */ + + .data : AT (_sidata) + { + . = ALIGN(4); + /* This is used by the startup in order to initialize the .data secion */ + _sdata = . ; + + *(.data) + *(.data.*) + *(.gnu.linkonce.d*) + + . = ALIGN(4); + /* This is used by the startup in order to initialize the .data secion */ + _edata = . ; + } >DATA + + .stack : + { + . = . + _system_stack_size; + . = ALIGN(4); + _estack = .; + } >DATA + + __bss_start = .; + .bss : + { + . = ALIGN(4); + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; + + *(.bss) + *(.bss.*) + *(COMMON) + + . = ALIGN(4); + /* This is used by the startup in order to initialize the .bss secion */ + _ebss = . ; + + *(.bss.init) + } > DATA + __bss_end = .; + + _end = .; + + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + * Symbols in the DWARF debugging sections are relative to the beginning + * of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } +} diff --git a/bsp/gd32/arm/gd32307e-start/board/linker_scripts/link.sct b/bsp/gd32/arm/gd32307e-start/board/linker_scripts/link.sct new file mode 100644 index 0000000000..6afcafa346 --- /dev/null +++ b/bsp/gd32/arm/gd32307e-start/board/linker_scripts/link.sct @@ -0,0 +1,15 @@ +; ************************************************************* +; *** Scatter-Loading Description File generated by uVision *** +; ************************************************************* + +LR_IROM1 0x08000000 0x00080000 { ; load region size_region + ER_IROM1 0x08000000 0x00080000 { ; load address = execution address + *.o (RESET, +First) + *(InRoot$$Sections) + .ANY (+RO) + } + RW_IRAM1 0x20000000 0x00018000 { ; RW data + .ANY (+RW +ZI) + } +} + diff --git a/bsp/gd32/arm/gd32307e-start/figures/board.jpg b/bsp/gd32/arm/gd32307e-start/figures/board.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1b333a070af95b2d1dbf7e7a71435693e124d51c GIT binary patch literal 448025 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

    FNT5J6oML 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

    iOKz{=Keu;Xj=UXLu=Zxp0STghjUk#;hIi$S8 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�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 literal 0 HcmV?d00001 diff --git a/bsp/gd32/arm/gd32307e-start/project.ewd b/bsp/gd32/arm/gd32307e-start/project.ewd new file mode 100644 index 0000000000..7b40c0e00a --- /dev/null +++ b/bsp/gd32/arm/gd32307e-start/project.ewd @@ -0,0 +1,3056 @@ + + + 3 + + Debug + + ARM + + 1 + + C-SPY + 2 + + 32 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 1 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 1 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 32 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 0 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 0 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 0 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 0 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/bsp/gd32/arm/gd32307e-start/project.ewp b/bsp/gd32/arm/gd32307e-start/project.ewp new file mode 100644 index 0000000000..effeedbc85 --- /dev/null +++ b/bsp/gd32/arm/gd32307e-start/project.ewp @@ -0,0 +1,2316 @@ + + + 3 + + Debug + + ARM + + 1 + + General + 3 + + 33 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 112 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + + Release + + ARM + + 0 + + General + 3 + + 33 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + Compiler + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\stdlib.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscalls.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\time.c + + + + CPU + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\backtrace.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m4\context_iar.S + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m4\cpuport.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\showmem.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\completion.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\dataqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\misc\pin.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\pipe.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringbuffer.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\serial\serial.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\waitqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\workqueue.c + + + + Drivers + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_gpio.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_usart.c + + + $PROJ_DIR$\..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Source\IAR\startup_gd32f30x_cl.s + + + + Finsh + + $PROJ_DIR$\..\..\..\..\components\finsh\cmd.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\shell.c + + + + Kernel + + $PROJ_DIR$\..\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\..\src\device.c + + + $PROJ_DIR$\..\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\..\src\scheduler.c + + + $PROJ_DIR$\..\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\..\src\timer.c + + + + Libraries + + $PROJ_DIR$\..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_exti.c + + + $PROJ_DIR$\..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_gpio.c + + + $PROJ_DIR$\..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_misc.c + + + $PROJ_DIR$\..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_rcu.c + + + $PROJ_DIR$\..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_usart.c + + + $PROJ_DIR$\..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Source\system_gd32f30x.c + + + + POSIX + + diff --git a/bsp/gd32/arm/gd32307e-start/project.eww b/bsp/gd32/arm/gd32307e-start/project.eww new file mode 100644 index 0000000000..c2cb02eb1e --- /dev/null +++ b/bsp/gd32/arm/gd32307e-start/project.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\project.ewp + + + + + diff --git a/bsp/gd32/arm/gd32307e-start/project.uvoptx b/bsp/gd32/arm/gd32307e-start/project.uvoptx new file mode 100644 index 0000000000..af76758d40 --- /dev/null +++ b/bsp/gd32/arm/gd32307e-start/project.uvoptx @@ -0,0 +1,784 @@ + + + + 1.0 + +

    ### uVision Project, (C) Keil Software
    + + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 25000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 0 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 3 + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0GD32F30x_CL -FL080000 -FS08000000 -FP0($$Device:GD32F307VE$Flash\GD32F30x_CL.FLM) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + Applications + 0 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + applications\main.c + main.c + 0 + 0 + + + + + Compiler + 0 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c + syscall_mem.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c + syscalls.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\time.c + time.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\stdlib.c + stdlib.c + 0 + 0 + + + + + CPU + 0 + 0 + 0 + 0 + + 3 + 6 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 3 + 7 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 3 + 8 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\backtrace.c + backtrace.c + 0 + 0 + + + 3 + 9 + 2 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m4\context_rvds.S + context_rvds.S + 0 + 0 + + + 3 + 10 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m4\cpuport.c + cpuport.c + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 4 + 11 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\completion.c + completion.c + 0 + 0 + + + 4 + 12 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\waitqueue.c + waitqueue.c + 0 + 0 + + + 4 + 13 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\dataqueue.c + dataqueue.c + 0 + 0 + + + 4 + 14 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\workqueue.c + workqueue.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\pipe.c + pipe.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\serial\serial.c + serial.c + 0 + 0 + + + + + Drivers + 0 + 0 + 0 + 0 + + 5 + 20 + 2 + 0 + 0 + 0 + ..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Source\ARM\startup_gd32f30x_cl.s + startup_gd32f30x_cl.s + 0 + 0 + + + 5 + 21 + 1 + 0 + 0 + 0 + board\board.c + board.c + 0 + 0 + + + 5 + 22 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 5 + 23 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_usart.c + drv_usart.c + 0 + 0 + + + + + Finsh + 0 + 0 + 0 + 0 + + 6 + 24 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 6 + 25 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 6 + 26 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + + + Kernel + 0 + 0 + 0 + 0 + + 7 + 27 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mempool.c + mempool.c + 0 + 0 + + + 7 + 28 + 1 + 0 + 0 + 0 + ..\..\..\..\src\clock.c + clock.c + 0 + 0 + + + 7 + 29 + 1 + 0 + 0 + 0 + ..\..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 7 + 30 + 1 + 0 + 0 + 0 + ..\..\..\..\src\device.c + device.c + 0 + 0 + + + 7 + 31 + 1 + 0 + 0 + 0 + ..\..\..\..\src\thread.c + thread.c + 0 + 0 + + + 7 + 32 + 1 + 0 + 0 + 0 + ..\..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 7 + 33 + 1 + 0 + 0 + 0 + ..\..\..\..\src\object.c + object.c + 0 + 0 + + + 7 + 34 + 1 + 0 + 0 + 0 + ..\..\..\..\src\components.c + components.c + 0 + 0 + + + 7 + 35 + 1 + 0 + 0 + 0 + ..\..\..\..\src\timer.c + timer.c + 0 + 0 + + + 7 + 36 + 1 + 0 + 0 + 0 + ..\..\..\..\src\irq.c + irq.c + 0 + 0 + + + 7 + 37 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mem.c + mem.c + 0 + 0 + + + 7 + 38 + 1 + 0 + 0 + 0 + ..\..\..\..\src\idle.c + idle.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\scheduler.c + scheduler.c + 0 + 0 + + + + + Libraries + 0 + 0 + 0 + 0 + + 8 + 40 + 1 + 0 + 0 + 0 + ..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Source\system_gd32f30x.c + system_gd32f30x.c + 0 + 0 + + + 8 + 41 + 1 + 0 + 0 + 0 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_rcu.c + gd32f30x_rcu.c + 0 + 0 + + + 8 + 42 + 1 + 0 + 0 + 0 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_usart.c + gd32f30x_usart.c + 0 + 0 + + + 8 + 43 + 1 + 0 + 0 + 0 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_exti.c + gd32f30x_exti.c + 0 + 0 + + + 8 + 44 + 1 + 0 + 0 + 0 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_gpio.c + gd32f30x_gpio.c + 0 + 0 + + + 8 + 45 + 1 + 0 + 0 + 0 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_misc.c + gd32f30x_misc.c + 0 + 0 + + + + + ::CMSIS + 0 + 0 + 0 + 1 + + + diff --git a/bsp/gd32/arm/gd32307e-start/project.uvproj b/bsp/gd32/arm/gd32307e-start/project.uvproj new file mode 100644 index 0000000000..b1dc6a8cd4 --- /dev/null +++ b/bsp/gd32/arm/gd32307e-start/project.uvproj @@ -0,0 +1,758 @@ + + + 1.1 +
    ### uVision Project, (C) Keil Software
    + + + rt-thread + 0x4 + ARM-ADS + 0 + + + GD32F307VE + GigaDevice + IRAM(0x20000000-0x20018000) IROM(0x08000000-0x08040000) CLOCK(25000000) CPUTYPE("Cortex-M4") FPU2 + + "Startup\GD\GD32F30x\startup_gd32f30x_cl.s" ("GD32F30x Startup Code") + UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F30x_CL -FS08000000 -FL040000) + 0 + gd32f30x.h + + + + + + + + + + SFD\GD\GD32F30x\GD32F30x_CL.SFR + 0 + 0 + + + + GD\GD32F30x\ + GD\GD32F30x\ + + 0 + 0 + 0 + 0 + 1 + + .\output\ + rtthread + 1 + 0 + 1 + 1 + 1 + .\build\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + + 0 + 3 + + + + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 2 + 1 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x30000 + + + 1 + 0x8000000 + 0x300000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x300000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x30000 + + + 0 + 0x10000000 + 0x10000 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_STDPERIPH_DRIVER, GD32F30X_CL, __RTTHREAD__, RT_USING_ARM_LIBC, __CLK_TCK=RT_TICK_PER_SECOND + + applications;.;..\..\..\..\components\libc\compilers\common;..\..\..\..\components\libc\compilers\common\extension;..\..\..\..\libcpu\arm\common;..\..\..\..\libcpu\arm\cortex-m4;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;board;..\libraries\gd32_drivers;..\..\..\..\components\finsh;.;..\..\..\..\include;..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Include;..\libraries\GD32F30x_Firmware_Library\CMSIS;..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Include;..\..\..\..\components\libc\posix\io\poll;..\..\..\..\components\libc\posix\io\stdio;..\..\..\..\components\libc\posix\ipc + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + Applications + + + main.c + 1 + applications\main.c + + + + + Compiler + + + syscall_mem.c + 1 + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c + + + + + syscalls.c + 1 + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c + + + + + stdlib.c + 1 + ..\..\..\..\components\libc\compilers\common\stdlib.c + + + + + time.c + 1 + ..\..\..\..\components\libc\compilers\common\time.c + + + + + CPU + + + showmem.c + 1 + ..\..\..\..\libcpu\arm\common\showmem.c + + + + + backtrace.c + 1 + ..\..\..\..\libcpu\arm\common\backtrace.c + + + + + div0.c + 1 + ..\..\..\..\libcpu\arm\common\div0.c + + + + + context_rvds.S + 2 + ..\..\..\..\libcpu\arm\cortex-m4\context_rvds.S + + + + + cpuport.c + 1 + ..\..\..\..\libcpu\arm\cortex-m4\cpuport.c + + + + + DeviceDrivers + + + ringbuffer.c + 1 + ..\..\..\..\components\drivers\ipc\ringbuffer.c + + + + + completion.c + 1 + ..\..\..\..\components\drivers\ipc\completion.c + + + + + ringblk_buf.c + 1 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + + + waitqueue.c + 1 + ..\..\..\..\components\drivers\ipc\waitqueue.c + + + + + dataqueue.c + 1 + ..\..\..\..\components\drivers\ipc\dataqueue.c + + + + + workqueue.c + 1 + ..\..\..\..\components\drivers\ipc\workqueue.c + + + + + pipe.c + 1 + ..\..\..\..\components\drivers\ipc\pipe.c + + + + + pin.c + 1 + ..\..\..\..\components\drivers\misc\pin.c + + + + + serial.c + 1 + ..\..\..\..\components\drivers\serial\serial.c + + + + + Drivers + + + startup_gd32f30x_cl.s + 2 + ..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Source\ARM\startup_gd32f30x_cl.s + + + + + board.c + 1 + board\board.c + + + + + drv_gpio.c + 1 + ..\libraries\gd32_drivers\drv_gpio.c + + + + + drv_usart.c + 1 + ..\libraries\gd32_drivers\drv_usart.c + + + + + Finsh + + + shell.c + 1 + ..\..\..\..\components\finsh\shell.c + + + + + msh.c + 1 + ..\..\..\..\components\finsh\msh.c + + + + + cmd.c + 1 + ..\..\..\..\components\finsh\cmd.c + + + + + Kernel + + + object.c + 1 + ..\..\..\..\src\object.c + + + + + irq.c + 1 + ..\..\..\..\src\irq.c + + + + + device.c + 1 + ..\..\..\..\src\device.c + + + + + thread.c + 1 + ..\..\..\..\src\thread.c + + + + + clock.c + 1 + ..\..\..\..\src\clock.c + + + + + mem.c + 1 + ..\..\..\..\src\mem.c + + + + + idle.c + 1 + ..\..\..\..\src\idle.c + + + + + ipc.c + 1 + ..\..\..\..\src\ipc.c + + + + + mempool.c + 1 + ..\..\..\..\src\mempool.c + + + + + kservice.c + 1 + ..\..\..\..\src\kservice.c + + + + + components.c + 1 + ..\..\..\..\src\components.c + + + + + timer.c + 1 + ..\..\..\..\src\timer.c + + + + + scheduler.c + 1 + ..\..\..\..\src\scheduler.c + + + + + Libraries + + + system_gd32f30x.c + 1 + ..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Source\system_gd32f30x.c + + + + + gd32f30x_rcu.c + 1 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_rcu.c + + + + + gd32f30x_usart.c + 1 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_usart.c + + + + + gd32f30x_exti.c + 1 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_exti.c + + + + + gd32f30x_gpio.c + 1 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_gpio.c + + + + + gd32f30x_misc.c + 1 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_misc.c + + + + + + +
    diff --git a/bsp/gd32/arm/gd32307e-start/project.uvprojx b/bsp/gd32/arm/gd32307e-start/project.uvprojx new file mode 100644 index 0000000000..8bece19b3a --- /dev/null +++ b/bsp/gd32/arm/gd32307e-start/project.uvprojx @@ -0,0 +1,683 @@ + + + + 2.1 + +
    ### uVision Project, (C) Keil Software
    + + + + rt-thread + 0x4 + ARM-ADS + 5060750::V5.06 update 6 (build 750)::.\ARMCC + 0 + + + GD32F307VE + GigaDevice + GigaDevice.GD32F30x_DFP.2.2.0 + http://gd32mcu.com/data/documents/pack/ + IRAM(0x20000000,0x018000) IROM(0x08000000,0x080000) CPUTYPE("Cortex-M4") FPU2 CLOCK(25000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F30x_CL -FS08000000 -FL080000 -FP0($$Device:GD32F307VE$Flash\GD32F30x_CL.FLM)) + 0 + $$Device:GD32F307VE$Device\Include\gd32f30x.h + + + + + + + + + + $$Device:GD32F307VE$SVD\GD32F30x_CL.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\build\ + rtthread + 1 + 0 + 0 + 1 + 0 + .\build\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin !L --output rtthread.bin + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM4 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM4 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M4" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x18000 + + + 1 + 0x8000000 + 0x80000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x80000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x18000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_STDPERIPH_DRIVER, GD32F30X_CL, __RTTHREAD__, RT_USING_ARM_LIBC, __CLK_TCK=RT_TICK_PER_SECOND + + applications;.;..\..\..\..\components\libc\compilers\common;..\..\..\..\components\libc\compilers\common\extension;..\..\..\..\libcpu\arm\common;..\..\..\..\libcpu\arm\cortex-m4;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;board;..\libraries\gd32_drivers;..\..\..\..\components\finsh;.;..\..\..\..\include;..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Include;..\libraries\GD32F30x_Firmware_Library\CMSIS;..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Include;..\..\..\..\components\libc\posix\io\poll;..\..\..\..\components\libc\posix\io\stdio;..\..\..\..\components\libc\posix\ipc + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + .\gd32_rom.ld + + + + + + + + + + + Applications + + + main.c + 1 + applications\main.c + + + + + Compiler + + + syscall_mem.c + 1 + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c + + + syscalls.c + 1 + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c + + + time.c + 1 + ..\..\..\..\components\libc\compilers\common\time.c + + + stdlib.c + 1 + ..\..\..\..\components\libc\compilers\common\stdlib.c + + + + + CPU + + + div0.c + 1 + ..\..\..\..\libcpu\arm\common\div0.c + + + showmem.c + 1 + ..\..\..\..\libcpu\arm\common\showmem.c + + + backtrace.c + 1 + ..\..\..\..\libcpu\arm\common\backtrace.c + + + context_rvds.S + 2 + ..\..\..\..\libcpu\arm\cortex-m4\context_rvds.S + + + cpuport.c + 1 + ..\..\..\..\libcpu\arm\cortex-m4\cpuport.c + + + + + DeviceDrivers + + + completion.c + 1 + ..\..\..\..\components\drivers\ipc\completion.c + + + waitqueue.c + 1 + ..\..\..\..\components\drivers\ipc\waitqueue.c + + + dataqueue.c + 1 + ..\..\..\..\components\drivers\ipc\dataqueue.c + + + workqueue.c + 1 + ..\..\..\..\components\drivers\ipc\workqueue.c + + + pipe.c + 1 + ..\..\..\..\components\drivers\ipc\pipe.c + + + ringbuffer.c + 1 + ..\..\..\..\components\drivers\ipc\ringbuffer.c + + + ringblk_buf.c + 1 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + pin.c + 1 + ..\..\..\..\components\drivers\misc\pin.c + + + serial.c + 1 + ..\..\..\..\components\drivers\serial\serial.c + + + + + Drivers + + + startup_gd32f30x_cl.s + 2 + ..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Source\ARM\startup_gd32f30x_cl.s + + + board.c + 1 + board\board.c + + + drv_gpio.c + 1 + ..\libraries\gd32_drivers\drv_gpio.c + + + drv_usart.c + 1 + ..\libraries\gd32_drivers\drv_usart.c + + + + + Finsh + + + shell.c + 1 + ..\..\..\..\components\finsh\shell.c + + + msh.c + 1 + ..\..\..\..\components\finsh\msh.c + + + cmd.c + 1 + ..\..\..\..\components\finsh\cmd.c + + + + + Kernel + + + mempool.c + 1 + ..\..\..\..\src\mempool.c + + + clock.c + 1 + ..\..\..\..\src\clock.c + + + kservice.c + 1 + ..\..\..\..\src\kservice.c + + + device.c + 1 + ..\..\..\..\src\device.c + + + thread.c + 1 + ..\..\..\..\src\thread.c + + + ipc.c + 1 + ..\..\..\..\src\ipc.c + + + object.c + 1 + ..\..\..\..\src\object.c + + + components.c + 1 + ..\..\..\..\src\components.c + + + timer.c + 1 + ..\..\..\..\src\timer.c + + + irq.c + 1 + ..\..\..\..\src\irq.c + + + mem.c + 1 + ..\..\..\..\src\mem.c + + + idle.c + 1 + ..\..\..\..\src\idle.c + + + scheduler.c + 1 + ..\..\..\..\src\scheduler.c + + + + + Libraries + + + system_gd32f30x.c + 1 + ..\libraries\GD32F30x_Firmware_Library\CMSIS\GD\GD32F30x\Source\system_gd32f30x.c + + + gd32f30x_rcu.c + 1 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_rcu.c + + + gd32f30x_usart.c + 1 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_usart.c + + + gd32f30x_exti.c + 1 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_exti.c + + + gd32f30x_gpio.c + 1 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_gpio.c + + + gd32f30x_misc.c + 1 + ..\libraries\GD32F30x_Firmware_Library\GD32F30x_standard_peripheral\Source\gd32f30x_misc.c + + + + + ::CMSIS + + + + + + + + + + + + + + + + + + + + + + <Project Info> + + + + + + 0 + 1 + + + + +
    diff --git a/bsp/gd32/arm/gd32307e-start/rtconfig.h b/bsp/gd32/arm/gd32307e-start/rtconfig.h new file mode 100644 index 0000000000..79841232f1 --- /dev/null +++ b/bsp/gd32/arm/gd32307e-start/rtconfig.h @@ -0,0 +1,207 @@ +#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_HOOK_USING_FUNC_PTR +#define RT_USING_IDLE_HOOK +#define RT_IDLE_HOOK_LIST_SIZE 4 +#define IDLE_THREAD_STACK_SIZE 256 + +/* kservice optimization */ + +#define RT_DEBUG +#define RT_DEBUG_COLOR + +/* 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_SMALL_MEM_AS_HEAP +#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 "uart1" +#define RT_VER_NUM 0x40100 + +/* 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 RT_USING_MSH +#define FINSH_USING_MSH +#define FINSH_THREAD_NAME "tshell" +#define FINSH_THREAD_PRIORITY 20 +#define FINSH_THREAD_STACK_SIZE 4096 +#define FINSH_USING_HISTORY +#define FINSH_HISTORY_LINES 5 +#define FINSH_USING_SYMTAB +#define FINSH_CMD_SIZE 80 +#define MSH_USING_BUILT_IN_COMMANDS +#define FINSH_USING_DESCRIPTION +#define FINSH_ARG_MAX 10 + +/* Device virtual file system */ + + +/* Device Drivers */ + +#define RT_USING_DEVICE_IPC +#define RT_USING_SYSTEM_WORKQUEUE +#define RT_SYSTEM_WORKQUEUE_STACKSIZE 2048 +#define RT_SYSTEM_WORKQUEUE_PRIORITY 23 +#define RT_USING_SERIAL +#define RT_USING_SERIAL_V1 +#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_LIBC_DEFAULT_TIMEZONE 8 + +/* POSIX (Portable Operating System Interface) layer */ + + +/* Interprocess Communication (IPC) */ + + +/* Socket is in the 'Network' category */ + +/* Network */ + + +/* VBUS(Virtual Software BUS) */ + + +/* Utilities */ + + +/* RT-Thread Utestcases */ + + +/* RT-Thread online packages */ + +/* IoT - internet of things */ + + +/* Wi-Fi */ + +/* Marvell WiFi */ + + +/* Wiced WiFi */ + + +/* IoT Cloud */ + + +/* security packages */ + + +/* language packages */ + +/* JSON: JavaScript Object Notation, a lightweight data-interchange format */ + + +/* XML: Extensible Markup Language */ + + +/* multimedia packages */ + +/* LVGL: powerful and easy-to-use embedded GUI library */ + + +/* u8g2: a monochrome graphic library */ + + +/* PainterEngine: A cross-platform graphics application framework written in C language */ + + +/* tools packages */ + + +/* system packages */ + +/* enhanced kernel services */ + + +/* POSIX extension functions */ + + +/* acceleration: Assembly language or algorithmic acceleration packages */ + + +/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */ + + +/* Micrium: Micrium software products porting for RT-Thread */ + + +/* peripheral libraries and drivers */ + + +/* AI packages */ + + +/* miscellaneous packages */ + +/* project laboratory */ + +/* samples: kernel and components samples */ + + +/* entertainment: terminal games and other interesting software packages */ + + +/* Hardware Drivers Config */ + +#define SOC_SERIES_GD32F30x +#define SOC_GD32307E + +/* Onboard Peripheral Drivers */ + +/* On-chip Peripheral Drivers */ + +#define BSP_USING_GPIO +#define BSP_USING_UART +#define BSP_USING_UART1 + +/* Board extended module Drivers */ + + +#endif diff --git a/bsp/gd32/gd32407v-start/rtconfig.py b/bsp/gd32/arm/gd32307e-start/rtconfig.py similarity index 98% rename from bsp/gd32/gd32407v-start/rtconfig.py rename to bsp/gd32/arm/gd32307e-start/rtconfig.py index 2075890edf..a91905a233 100644 --- a/bsp/gd32/gd32407v-start/rtconfig.py +++ b/bsp/gd32/arm/gd32307e-start/rtconfig.py @@ -22,8 +22,8 @@ elif CROSS_TOOL == 'keil': PLATFORM = 'armcc' EXEC_PATH = r'C:/Keil_v5' elif CROSS_TOOL == 'iar': - PLATFORM = 'iccarm' - EXEC_PATH = r'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.3' + 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') @@ -93,7 +93,7 @@ elif PLATFORM == 'armcc': POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' -elif PLATFORM == 'iccarm': +elif PLATFORM == 'iar': # toolchains CC = 'iccarm' CXX = 'iccarm' diff --git a/bsp/gd32/arm/gd32307e-start/template.ewp b/bsp/gd32/arm/gd32307e-start/template.ewp new file mode 100644 index 0000000000..45f5f4f799 --- /dev/null +++ b/bsp/gd32/arm/gd32307e-start/template.ewp @@ -0,0 +1,1889 @@ + + + 2 + + Debug + + ARM + + 1 + + General + 3 + + 22 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 22 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + + diff --git a/bsp/gd32/gd32103c-eval/template.uvoptx b/bsp/gd32/arm/gd32307e-start/template.uvoptx similarity index 97% rename from bsp/gd32/gd32103c-eval/template.uvoptx rename to bsp/gd32/arm/gd32307e-start/template.uvoptx index e99a756fe7..74f85b97bc 100644 --- a/bsp/gd32/gd32103c-eval/template.uvoptx +++ b/bsp/gd32/arm/gd32307e-start/template.uvoptx @@ -26,7 +26,7 @@ 0x4 ARM-ADS - 12000000 + 25000000 1 1 @@ -73,7 +73,7 @@ 0 - 1 + 0 0 1 @@ -120,7 +120,7 @@ 0 UL2CM3 - UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0GD32F10x_CL -FL040000 -FS08000000 -FP0($$Device:GD32F105RC$Flash\GD32F10x_CL.FLM) + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0GD32F30x_CL -FL080000 -FS08000000 -FP0($$Device:GD32F307VE$Flash\GD32F30x_CL.FLM) diff --git a/bsp/gd32/gd32450i-eval/template.uvproj b/bsp/gd32/arm/gd32307e-start/template.uvproj similarity index 75% rename from bsp/gd32/gd32450i-eval/template.uvproj rename to bsp/gd32/arm/gd32307e-start/template.uvproj index 40e80c8971..93d90e478e 100644 --- a/bsp/gd32/gd32450i-eval/template.uvproj +++ b/bsp/gd32/arm/gd32307e-start/template.uvproj @@ -13,14 +13,14 @@ 0 - GD32F450IK + GD32F307VE GigaDevice - IRAM(0x20000000-0x20030000) IROM(0x08000000-0x08300000) CLOCK(20000000) CPUTYPE("Cortex-M4") FPU2 + IRAM(0x20000000-0x20018000) IROM(0x08000000-0x08040000) CLOCK(25000000) CPUTYPE("Cortex-M4") FPU2 - "Startup\GD\GD32F4xx\startup_gd32f4xx.s" ("GD32F4xx Startup Code") - UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000) + "Startup\GD\GD32F30x\startup_gd32f30x_cl.s" ("GD32F30x Startup Code") + UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F30x_CL -FS08000000 -FL040000) 0 - gd32f4xx0.h + gd32f30x.h @@ -30,14 +30,14 @@ - SFD\GD\GD32F4xx\GD32F4xx.SFR + SFD\GD\GD32F30x\GD32F30x_CL.SFR 0 0 - GD\GD32F4xx\ - GD\GD32F4xx\ + GD\GD32F30x\ + GD\GD32F30x\ 0 0 @@ -375,7 +375,7 @@ - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Include;..\..\..\Library\Firmware\CMSIS\GD\GD32F4xx\Include;..\..\..\Library\Utilities;..\ + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Include;..\..\..\Library\Firmware\CMSIS\GD\GD32F30x\Include;..\..\..\Library\Utilities;..\ @@ -425,9 +425,9 @@ ..\main.c - gd32f4xx_it.c + gd32f30x_it.c 1 - ..\gd32f4xx_it.c + ..\gd32f30x_it.c @@ -435,169 +435,169 @@ CMSIS - system_gd32f4xx.c + system_gd32f30x.c 1 - ..\..\..\Library\Firmware\CMSIS\GD\GD32F4xx\Source\system_gd32f4xx.c + ..\..\..\Library\Firmware\CMSIS\GD\GD32F30x\Source\system_gd32f30x.c - GD32F4xx_Peripherals + GD32F30x_Peripherals - gd32f4xx_adc.c + gd32f30x_adc.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_adc.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_adc.c - gd32f4xx_can.c + gd32f30x_can.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_can.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_can.c - gd32f4xx_crc.c + gd32f30x_crc.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_crc.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_crc.c - gd32f4xx_ctc.c + gd32f30x_ctc.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_ctc.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_ctc.c - gd32f4xx_dac.c + gd32f30x_dac.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_dac.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_dac.c - gd32f4xx_dbg.c + gd32f30x_dbg.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_dbg.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_dbg.c - gd32f4xx_dci.c + gd32f30x_dci.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_dci.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_dci.c - gd32f4xx_dma.c + gd32f30x_dma.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_dma.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_dma.c - gd32f4xx_enet.c + gd32f30x_enet.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_enet.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_enet.c - gd32f4xx_exmc.c + gd32f30x_exmc.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_exmc.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_exmc.c - gd32f4xx_exti.c + gd32f30x_exti.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_exti.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_exti.c - gd32f4xx_fmc.c + gd32f30x_fmc.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_fmc.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_fmc.c - gd32f4xx_fwdgt.c + gd32f30x_fwdgt.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_fwdgt.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_fwdgt.c - gd32f4xx_gpio.c + gd32f30x_gpio.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_gpio.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_gpio.c - gd32f4xx_i2c.c + gd32f30x_i2c.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_i2c.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_i2c.c - gd32f4xx_ipa.c + gd32f30x_ipa.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_ipa.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_ipa.c - gd32f4xx_iref.c + gd32f30x_iref.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_iref.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_iref.c - gd32f4xx_misc.c + gd32f30x_misc.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_misc.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_misc.c - gd32f4xx_pmu.c + gd32f30x_pmu.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_pmu.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_pmu.c - gd32f4xx_rcu.c + gd32f30x_rcu.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_rcu.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_rcu.c - gd32f4xx_rtc.c + gd32f30x_rtc.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_rtc.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_rtc.c - gd32f4xx_sdio.c + gd32f30x_sdio.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_sdio.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_sdio.c - gd32f4xx_spi.c + gd32f30x_spi.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_spi.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_spi.c - gd32f4xx_syscfg.c + gd32f30x_syscfg.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_syscfg.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_syscfg.c - gd32f4xx_timer.c + gd32f30x_timer.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_timer.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_timer.c - gd32f4xx_tli.c + gd32f30x_tli.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_tli.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_tli.c - gd32f4xx_trng.c + gd32f30x_trng.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_trng.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_trng.c - gd32f4xx_usart.c + gd32f30x_usart.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_usart.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_usart.c - gd32f4xx_wwdgt.c + gd32f30x_wwdgt.c 1 - ..\..\..\Library\Firmware\GD32F4xx_standard_peripheral\Source\gd32f4xx_wwdgt.c + ..\..\..\Library\Firmware\GD32F30x_standard_peripheral\Source\gd32f30x_wwdgt.c - GD32F4xx_EVAL + GD32F30x_START - gd32f450i_eval.c + gd32f305r_start.c 1 - ..\..\..\Library\Utilities\gd32f450i_eval.c + ..\..\..\Library\Utilities\gd32f305r_start.c @@ -605,9 +605,9 @@ Startup - startup_gd32f4xx.s + startup_gd32f30x_cl.s 2 - ..\..\..\Library\Firmware\CMSIS\GD\GD32F4xx\Source\ARM\startup_gd32f4xx.s + ..\..\..\Library\Firmware\CMSIS\GD\GD32F30x\Source\ARM\startup_gd32f30x_cl.s diff --git a/bsp/gd32/gd32450i-eval/template.uvprojx b/bsp/gd32/arm/gd32307e-start/template.uvprojx similarity index 93% rename from bsp/gd32/gd32450i-eval/template.uvprojx rename to bsp/gd32/arm/gd32307e-start/template.uvprojx index d5716156b4..b528108c9a 100644 --- a/bsp/gd32/gd32450i-eval/template.uvprojx +++ b/bsp/gd32/arm/gd32307e-start/template.uvprojx @@ -10,19 +10,20 @@ rt-thread 0x4 ARM-ADS + 5060750::V5.06 update 6 (build 750)::.\ARMCC 0 - GD32F450IK + GD32F307VE GigaDevice - GigaDevice.GD32F4xx_DFP.2.1.0 + GigaDevice.GD32F30x_DFP.2.2.0 http://gd32mcu.com/data/documents/pack/ - IRAM(0x20000000,0x040000) IROM(0x08000000,0x0300000) CPUTYPE("Cortex-M4") FPU2 CLOCK(20000000) ELITTLE + IRAM(0x20000000,0x018000) IROM(0x08000000,0x080000) CPUTYPE("Cortex-M4") FPU2 CLOCK(25000000) ELITTLE - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000 -FP0($$Device:GD32F450IK$Flash\GD32F4xx_3MB.FLM)) + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F30x_CL -FS08000000 -FL080000 -FP0($$Device:GD32F307VE$Flash\GD32F30x_CL.FLM)) 0 - $$Device:GD32F450IK$Device\Include\gd32f4xx.h + $$Device:GD32F307VE$Device\Include\gd32f30x.h @@ -32,7 +33,7 @@ - $$Device:GD32F450IK$SVD\GD32F4xx.svd + $$Device:GD32F307VE$SVD\GD32F30x_CL.svd 0 0 @@ -188,12 +189,12 @@ 0 0 8 - 0 + 1 0 0 0 3 - 4 + 3 0 0 0 @@ -245,12 +246,12 @@ 0 0x20000000 - 0x40000 + 0x18000 1 0x8000000 - 0x300000 + 0x80000 0 @@ -275,7 +276,7 @@ 1 0x8000000 - 0x300000 + 0x80000 1 @@ -300,12 +301,12 @@ 0 0x20000000 - 0x30000 + 0x18000 0 - 0x10000000 - 0x10000 + 0x0 + 0x0 @@ -389,8 +390,8 @@ - - + + diff --git a/bsp/gd32/gd32407v-start/.config b/bsp/gd32/arm/gd32407v-start/.config similarity index 96% rename from bsp/gd32/gd32407v-start/.config rename to bsp/gd32/arm/gd32407v-start/.config index 8c3f9d4b13..5dd7d92bb1 100644 --- a/bsp/gd32/gd32407v-start/.config +++ b/bsp/gd32/arm/gd32407v-start/.config @@ -90,8 +90,17 @@ 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 -CONFIG_RT_USING_MSH=y + +# +# C++ features +# +# CONFIG_RT_USING_CPLUSPLUS is not set + +# +# Command shell +# CONFIG_RT_USING_FINSH=y +CONFIG_RT_USING_MSH=y CONFIG_FINSH_USING_MSH=y CONFIG_FINSH_THREAD_NAME="tshell" CONFIG_FINSH_THREAD_PRIORITY=20 @@ -105,8 +114,11 @@ 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 is not set -# CONFIG_RT_USING_FAL is not set # # Device Drivers @@ -155,7 +167,7 @@ CONFIG_RT_USING_PIN=y # CONFIG_RT_USING_USB_DEVICE is not set # -# C/C++ and POSIX layer +# POSIX layer and C standard library # CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 @@ -179,7 +191,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # # Socket is in the 'Network' category # -# CONFIG_RT_USING_CPLUSPLUS is not set # # Network @@ -189,6 +200,11 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_RT_USING_LWIP is not set # CONFIG_RT_USING_AT is not set +# +# VBUS(Virtual Software BUS) +# +# CONFIG_RT_USING_VBUS is not set + # # Utilities # @@ -197,7 +213,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_RT_USING_UTEST is not set # 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 @@ -262,6 +277,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set # CONFIG_PKG_USING_JOYLINK is not set # CONFIG_PKG_USING_EZ_IOT_OS is not set +# CONFIG_PKG_USING_IOTSHARP_SDK 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 @@ -301,6 +317,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # # CONFIG_PKG_USING_MBEDTLS is not set # CONFIG_PKG_USING_LIBSODIUM is not set +# CONFIG_PKG_USING_LIBHYDROGEN is not set # CONFIG_PKG_USING_TINYCRYPT is not set # CONFIG_PKG_USING_TFM is not set # CONFIG_PKG_USING_YD_CRYPTO is not set @@ -340,6 +357,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_LVGL is not set # CONFIG_PKG_USING_LITTLEVGL2RTT is not set # CONFIG_PKG_USING_LV_MUSIC_DEMO is not set +# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set # # u8g2: a monochrome graphic library @@ -414,6 +432,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_FDT is not set # CONFIG_PKG_USING_CBOX is not set # CONFIG_PKG_USING_SNOWFLAKE is not set +# CONFIG_PKG_USING_HASH_MATCH is not set # # system packages @@ -445,6 +464,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CMSIS: ARM Cortex-M Microcontroller Software Interface Standard # # CONFIG_PKG_USING_CMSIS_5 is not set +# CONFIG_PKG_USING_CMSIS_RTOS1 is not set # CONFIG_PKG_USING_CMSIS_RTOS2 is not set # @@ -487,6 +507,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_TINYUSB is not set # CONFIG_PKG_USING_CHERRYUSB is not set # CONFIG_PKG_USING_KMULTI_RTIMER is not set +# CONFIG_PKG_USING_TFDB is not set # # peripheral libraries and drivers @@ -641,6 +662,8 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 # CONFIG_PKG_USING_CONTROLLER is not set # CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set # CONFIG_PKG_USING_MFBD is not set +# CONFIG_PKG_USING_SLCAN2RTT is not set +# CONFIG_PKG_USING_SOEM is not set # # Hardware Drivers Config @@ -668,6 +691,13 @@ CONFIG_BSP_USING_UART1=y CONFIG_BSP_USING_I2C1=y CONFIG_BSP_I2C1_SCL_PIN=24 CONFIG_BSP_I2C1_SDA_PIN=25 +# CONFIG_BSP_USING_ADC is not set +# CONFIG_BSP_USING_TIM is not set +# CONFIG_BSP_USING_ONCHIP_RTC is not set +# CONFIG_BSP_USING_WDT is not set +# CONFIG_BSP_USING_SDIO is not set +# CONFIG_BSP_USING_USBD is not set +# CONFIG_BSP_USING_USBH is not set # # Board extended module Drivers diff --git a/bsp/gd32/arm/gd32407v-start/Kconfig b/bsp/gd32/arm/gd32407v-start/Kconfig new file mode 100644 index 0000000000..dbc650938f --- /dev/null +++ b/bsp/gd32/arm/gd32407v-start/Kconfig @@ -0,0 +1,21 @@ +mainmenu "RT-Thread Configuration" + +config BSP_DIR + string + option env="BSP_ROOT" + default "." + +config RTT_DIR + string + option env="RTT_ROOT" + default "../../../.." + +config PKGS_DIR + string + option env="PKGS_ROOT" + default "packages" + +source "$RTT_DIR/Kconfig" +source "$PKGS_DIR/Kconfig" +source "../libraries/Kconfig" +source "board/Kconfig" diff --git a/bsp/gd32/arm/gd32407v-start/README.md b/bsp/gd32/arm/gd32407v-start/README.md new file mode 100644 index 0000000000..c08e06c584 --- /dev/null +++ b/bsp/gd32/arm/gd32407v-start/README.md @@ -0,0 +1,99 @@ +# GD32407V-START开发板BSP说明 + +## 简介 + +GD32407V-START是-兆易创新推出的一款GD32F4XX系列的评估板,最高主频高达168M,该开发板具有丰富的板载资源,可以充分发挥 GD32407V 的芯片性能。 + +开发板外观如下图所示: + +![board](figures/board.jpg) + +该开发板常用 **板载资源** 如下: + +- GD32407VKT6,主频 168MHz,3072KB FLASH ,192KB RAM + +- 常用外设 + + - LED :2个,LED1 (电源指示灯),LED2(PC6) + - 按键:2个,K1(复位引脚),K2(用户按键,PA0) + +- 常用接口:USB 接口 + +- 调试接口:GD-LINK + +## 外设支持 + +本 BSP 目前对外设的支持情况如下: + +| **片上外设** | **支持情况** | **备注** | +| :----------- | :----------: | :------------------------------ | +| GPIO | 支持 | PA0, PA1... ---> PIN: 0, 1...81 | +| UART | 支持 | UART0 - UART5 | +| I2C | 支持 | I2C1 | +| SPI | 支持 | SPI0 -  SPI2 | +| SPI FLASH | 支持 | | +| ADC | 支持 | ADC0 - ADC2 | +| **扩展模块** | **支持情况** | **备注** | +| 暂无 | 暂不支持 | 暂不支持 | + +## 使用说明 + +使用说明分为如下两个章节: + +- 快速上手 + + 本章节是为刚接触 RT-Thread 的新手准备的使用说明,遵循简单的步骤即可将 RT-Thread 操作系统运行在该开发板上,看到实验效果 。 + +- 进阶使用 + + 本章节是为需要在 RT-Thread 操作系统上使用更多开发板资源的开发者准备的。通过使用 ENV 工具对 BSP 进行配置,可以开启更多板载资源,实现更多高级功能。 + +### 快速上手 + +本 BSP 为开发者提供 MDK4、MDK5 和 IAR 工程,并且支持 GCC 开发环境,也可使用RT-Thread Studio开发。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 + +#### 硬件连接 + +使用数据线连接开发板到 PC,使用USB转TTL模块连接PA2(MCU TX)和PA3(MCU RX),打开电源开关。 + +#### 编译下载 + +双击 project.uvprojx 文件,打开 MDK5 工程,编译并下载程序到开发板。 + +> 工程默认配置使用 GD-Link 仿真器下载程序,在通过 GD-Link 连接开发板的基础上,点击下载按钮即可下载程序到开发板 + +#### 运行结果 + +下载程序成功之后,系统会自动运行,LED 闪烁。 + +连接开发板对应串口到 PC , 在终端工具里打开相应的串口(115200-8-1-N),复位设备后,可以看到 RT-Thread 的输出信息: + +```bash + \ | / +- RT - Thread Operating System + / | \ 4.0.4 build Jan 9 2021 + 2006 - 2021 Copyright by rt-thread team +msh > +``` + +### 进阶使用 + +此 BSP 默认只开启了 GPIO 和 串口1的功能,如果需使用高级功能,需要利用 ENV 工具对BSP 进行配置,步骤如下: + +1. 在 bsp 下打开 env 工具。 + +2. 输入`menuconfig`命令配置工程,配置好之后保存退出。 + +3. 输入`pkgs --update`命令更新软件包。 + +4. 输入`scons --target=mdk4/mdk5/iar` 命令重新生成工程。 + +## 注意事项 + +暂无 + +## 联系人信息 + +维护人: + +- [BruceOu](https://github.com/Ouxiaolong/), 邮箱: \ No newline at end of file diff --git a/bsp/gd32/gd32450z-eval/SConscript b/bsp/gd32/arm/gd32407v-start/SConscript similarity index 100% rename from bsp/gd32/gd32450z-eval/SConscript rename to bsp/gd32/arm/gd32407v-start/SConscript diff --git a/bsp/gd32/gd32407v-start/SConstruct b/bsp/gd32/arm/gd32407v-start/SConstruct similarity index 94% rename from bsp/gd32/gd32407v-start/SConstruct rename to bsp/gd32/arm/gd32407v-start/SConstruct index 2e0cd022f1..36481e3cea 100644 --- a/bsp/gd32/gd32407v-start/SConstruct +++ b/bsp/gd32/arm/gd32407v-start/SConstruct @@ -5,7 +5,7 @@ import rtconfig if os.getenv('RTT_ROOT'): RTT_ROOT = os.getenv('RTT_ROOT') else: - RTT_ROOT = os.path.normpath(os.getcwd() + '/../../..') + RTT_ROOT = os.path.normpath(os.getcwd() + '/../../../..') sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] try: @@ -26,7 +26,7 @@ env = Environment(tools = ['mingw'], LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) env.PrependENVPath('PATH', rtconfig.EXEC_PATH) -if rtconfig.PLATFORM in ['iccarm']: +if rtconfig.PLATFORM == 'iar': env.Replace(CCCOM = ['$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES']) env.Replace(ARFLAGS = ['']) env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map') diff --git a/bsp/gd32/gd32450z-eval/applications/SConscript b/bsp/gd32/arm/gd32407v-start/applications/SConscript similarity index 100% rename from bsp/gd32/gd32450z-eval/applications/SConscript rename to bsp/gd32/arm/gd32407v-start/applications/SConscript diff --git a/bsp/gd32/gd32407v-start/applications/main.c b/bsp/gd32/arm/gd32407v-start/applications/main.c similarity index 100% rename from bsp/gd32/gd32407v-start/applications/main.c rename to bsp/gd32/arm/gd32407v-start/applications/main.c diff --git a/bsp/gd32/gd32407v-start/board/Kconfig b/bsp/gd32/arm/gd32407v-start/board/Kconfig similarity index 62% rename from bsp/gd32/gd32407v-start/board/Kconfig rename to bsp/gd32/arm/gd32407v-start/board/Kconfig index 572e421de8..9bcff58577 100644 --- a/bsp/gd32/gd32407v-start/board/Kconfig +++ b/bsp/gd32/arm/gd32407v-start/board/Kconfig @@ -125,6 +125,91 @@ menu "On-chip Peripheral Drivers" range 1 216 default 25 endif + + menuconfig BSP_USING_ADC + bool "Enable ADC" + default n + select RT_USING_ADC + if BSP_USING_ADC + config BSP_USING_ADC0 + bool "Enable ADC0" + default n + + config BSP_USING_ADC1 + bool "Enable ADC1" + default n + + config BSP_USING_ADC2 + bool "Enable ADC2" + default n + endif + + menuconfig BSP_USING_TIM + bool "Enable timer" + default n + select RT_USING_HWTIMER + if BSP_USING_TIM + config BSP_USING_TIM10 + bool "Enable TIM10" + default n + + config BSP_USING_TIM11 + bool "Enable TIM11" + default n + + config BSP_USING_TIM12 + bool "Enable TIM13" + default n + endif + + menuconfig BSP_USING_ONCHIP_RTC + bool "Enable RTC" + select RT_USING_RTC + default n + if BSP_USING_ONCHIP_RTC + choice + prompt "Select clock source" + default BSP_RTC_USING_LSE + + config BSP_RTC_USING_LSE + bool "RTC USING LSE" + + config BSP_RTC_USING_LSI + bool "RTC USING LSI" + endchoice + endif + + config BSP_USING_WDT + bool "Enable Watchdog Timer" + select RT_USING_WDT + default n + + config BSP_USING_SDIO + bool "Enable SDIO" + select RT_USING_SDIO + select RT_USING_DFS + default n + + config BSP_USING_USBD + bool "Enable USB Device" + select RT_USING_USB_DEVICE + default n + + menuconfig BSP_USING_USBH + bool "Enable USB Host" + select RT_USING_USB_HOST + default n + if BSP_USING_USBH + menuconfig RT_USBH_MSTORAGE + bool "Enable Udisk Drivers" + default n + if RT_USBH_MSTORAGE + config UDISK_MOUNTPOINT + string "Udisk mount dir" + default "/" + endif + endif + source "../libraries/gd32_drivers/Kconfig" endmenu diff --git a/bsp/gd32/gd32407v-start/board/SConscript b/bsp/gd32/arm/gd32407v-start/board/SConscript similarity index 84% rename from bsp/gd32/gd32407v-start/board/SConscript rename to bsp/gd32/arm/gd32407v-start/board/SConscript index 0d775ec7dc..171600e2e1 100644 --- a/bsp/gd32/gd32407v-start/board/SConscript +++ b/bsp/gd32/arm/gd32407v-start/board/SConscript @@ -15,11 +15,11 @@ path = [cwd] startup_path_prefix = SDK_LIB -if rtconfig.PLATFORM in ['gcc']: +if rtconfig.CROSS_TOOL == 'gcc': src += [startup_path_prefix + '/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/GCC/startup_gd32f4xx.s'] -elif rtconfig.PLATFORM in ['armcc', 'armclang']: +elif rtconfig.CROSS_TOOL == 'keil': src += [startup_path_prefix + '/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/ARM/startup_gd32f4xx.s'] -elif rtconfig.PLATFORM in ['iccarm']: +elif rtconfig.CROSS_TOOL == 'iar': src += [startup_path_prefix + '/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/IAR/startup_gd32f4xx.s'] CPPDEFINES = ['GD32F407'] diff --git a/bsp/gd32/gd32407v-start/board/board.c b/bsp/gd32/arm/gd32407v-start/board/board.c similarity index 100% rename from bsp/gd32/gd32407v-start/board/board.c rename to bsp/gd32/arm/gd32407v-start/board/board.c diff --git a/bsp/gd32/gd32407v-start/board/board.h b/bsp/gd32/arm/gd32407v-start/board/board.h similarity index 100% rename from bsp/gd32/gd32407v-start/board/board.h rename to bsp/gd32/arm/gd32407v-start/board/board.h diff --git a/bsp/gd32/gd32407v-start/board/gd32f4xx_libopt.h b/bsp/gd32/arm/gd32407v-start/board/gd32f4xx_libopt.h similarity index 100% rename from bsp/gd32/gd32407v-start/board/gd32f4xx_libopt.h rename to bsp/gd32/arm/gd32407v-start/board/gd32f4xx_libopt.h diff --git a/bsp/gd32/gd32450z-eval/board/linker_scripts/link.icf b/bsp/gd32/arm/gd32407v-start/board/linker_scripts/link.icf similarity index 88% rename from bsp/gd32/gd32450z-eval/board/linker_scripts/link.icf rename to bsp/gd32/arm/gd32407v-start/board/linker_scripts/link.icf index be287f2c06..2dd20cf186 100644 --- a/bsp/gd32/gd32450z-eval/board/linker_scripts/link.icf +++ b/bsp/gd32/arm/gd32407v-start/board/linker_scripts/link.icf @@ -7,10 +7,10 @@ define symbol __ICFEDIT_intvec_start__ = 0x08000000; define symbol __ICFEDIT_region_ROM_start__ = 0x08000000; define symbol __ICFEDIT_region_ROM_end__ = 0x082FFFFF; define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; -define symbol __ICFEDIT_region_RAM_end__ = 0x2003FFFF; +define symbol __ICFEDIT_region_RAM_end__ = 0x2001FFFF; /*-Sizes-*/ -define symbol __ICFEDIT_size_cstack__ = 0x2000; -define symbol __ICFEDIT_size_heap__ = 0x2000; +define symbol __ICFEDIT_size_cstack__ = 0x200; +define symbol __ICFEDIT_size_heap__ = 0x200; /**** End of ICF editor section. ###ICF###*/ export symbol __ICFEDIT_region_RAM_end__; diff --git a/bsp/gd32/gd32407v-start/board/linker_scripts/link.ld b/bsp/gd32/arm/gd32407v-start/board/linker_scripts/link.ld similarity index 99% rename from bsp/gd32/gd32407v-start/board/linker_scripts/link.ld rename to bsp/gd32/arm/gd32407v-start/board/linker_scripts/link.ld index ec1c65c34e..331fdd7a86 100644 --- a/bsp/gd32/gd32407v-start/board/linker_scripts/link.ld +++ b/bsp/gd32/arm/gd32407v-start/board/linker_scripts/link.ld @@ -1,6 +1,6 @@ /* * linker script for GD32F4xx with GNU ld - * bernard.xiong 2009-10-14 + * BruceOu 2021-12-14 */ /* Program Entry, set to mark it as "used" and avoid gc */ diff --git a/bsp/gd32/gd32407v-start/board/linker_scripts/link.sct b/bsp/gd32/arm/gd32407v-start/board/linker_scripts/link.sct similarity index 100% rename from bsp/gd32/gd32407v-start/board/linker_scripts/link.sct rename to bsp/gd32/arm/gd32407v-start/board/linker_scripts/link.sct diff --git a/bsp/gd32/gd32407v-start/figures/board.jpg b/bsp/gd32/arm/gd32407v-start/figures/board.jpg similarity index 100% rename from bsp/gd32/gd32407v-start/figures/board.jpg rename to bsp/gd32/arm/gd32407v-start/figures/board.jpg diff --git a/bsp/gd32/arm/gd32407v-start/project.ewd b/bsp/gd32/arm/gd32407v-start/project.ewd new file mode 100644 index 0000000000..428d928f12 --- /dev/null +++ b/bsp/gd32/arm/gd32407v-start/project.ewd @@ -0,0 +1,3056 @@ + + + 3 + + Debug + + ARM + + 1 + + C-SPY + 2 + + 32 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 1 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 1 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 32 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 0 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 0 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 0 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 0 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/bsp/gd32/arm/gd32407v-start/project.ewp b/bsp/gd32/arm/gd32407v-start/project.ewp new file mode 100644 index 0000000000..d1cccc99f1 --- /dev/null +++ b/bsp/gd32/arm/gd32407v-start/project.ewp @@ -0,0 +1,2334 @@ + + + 3 + + Debug + + ARM + + 1 + + General + 3 + + 33 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + + Release + + ARM + + 0 + + General + 3 + + 33 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + Compiler + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\stdlib.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscalls.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\time.c + + + + CPU + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\backtrace.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m4\context_iar.S + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m4\cpuport.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\showmem.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\completion.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\dataqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\i2c\i2c-bit-ops.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\i2c\i2c_core.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\i2c\i2c_dev.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\misc\pin.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\pipe.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringbuffer.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\serial\serial.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\waitqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\workqueue.c + + + + Drivers + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_gpio.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_soft_i2c.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_usart.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\IAR\startup_gd32f4xx.s + + + + Finsh + + $PROJ_DIR$\..\..\..\..\components\finsh\cmd.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\shell.c + + + + Kernel + + $PROJ_DIR$\..\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\..\src\device.c + + + $PROJ_DIR$\..\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\..\src\scheduler.c + + + $PROJ_DIR$\..\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\..\src\timer.c + + + + Libraries + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_exti.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_gpio.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_i2c.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_misc.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_rcu.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_syscfg.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_usart.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\system_gd32f4xx.c + + + + POSIX + + diff --git a/bsp/gd32/arm/gd32407v-start/project.ewt b/bsp/gd32/arm/gd32407v-start/project.ewt new file mode 100644 index 0000000000..03124a4a87 --- /dev/null +++ b/bsp/gd32/arm/gd32407v-start/project.ewt @@ -0,0 +1,3043 @@ + + + 3 + + Debug + + ARM + + 1 + + C-STAT + 515 + + 515 + + 0 + + 1 + 600 + 1 + 6 + 0 + 1 + 100 + Debug\C-STAT + + + 2.3.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RuntimeChecking + 0 + + 2 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + Release + + ARM + + 0 + + C-STAT + 515 + + 515 + + 0 + + 1 + 600 + 1 + 6 + 0 + 1 + 100 + Release\C-STAT + + + 2.3.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RuntimeChecking + 0 + + 2 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + Compiler + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\stdlib.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscalls.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\time.c + + + + CPU + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\backtrace.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m4\context_iar.S + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m4\cpuport.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\showmem.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\completion.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\dataqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\i2c\i2c-bit-ops.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\i2c\i2c_core.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\i2c\i2c_dev.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\misc\pin.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\pipe.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringbuffer.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\serial\serial.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\waitqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\workqueue.c + + + + Drivers + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_gpio.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_soft_i2c.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_usart.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\IAR\startup_gd32f4xx.s + + + + Finsh + + $PROJ_DIR$\..\..\..\..\components\finsh\cmd.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\shell.c + + + + Kernel + + $PROJ_DIR$\..\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\..\src\device.c + + + $PROJ_DIR$\..\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\..\src\scheduler.c + + + $PROJ_DIR$\..\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\..\src\timer.c + + + + Libraries + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_exti.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_gpio.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_i2c.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_misc.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_rcu.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_syscfg.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_usart.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\system_gd32f4xx.c + + + + POSIX + + diff --git a/bsp/gd32/arm/gd32407v-start/project.eww b/bsp/gd32/arm/gd32407v-start/project.eww new file mode 100644 index 0000000000..c2cb02eb1e --- /dev/null +++ b/bsp/gd32/arm/gd32407v-start/project.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\project.ewp + + + + + diff --git a/bsp/gd32/arm/gd32407v-start/project.uvoptx b/bsp/gd32/arm/gd32407v-start/project.uvoptx new file mode 100644 index 0000000000..837f87095c --- /dev/null +++ b/bsp/gd32/arm/gd32407v-start/project.uvoptx @@ -0,0 +1,856 @@ + + + + 1.0 + +
    ### uVision Project, (C) Keil Software
    + + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 25000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 3 + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC800 -FD20000000 -FF0GD32F4xx_3MB -FL0300000 -FS08000000 -FP0($$Device:GD32F407VK$Flash\GD32F4xx_3MB.FLM) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + Applications + 0 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + applications\main.c + main.c + 0 + 0 + + + + + Compiler + 0 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c + syscalls.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c + syscall_mem.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\stdlib.c + stdlib.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\time.c + time.c + 0 + 0 + + + + + CPU + 0 + 0 + 0 + 0 + + 3 + 6 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 3 + 7 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 3 + 8 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\backtrace.c + backtrace.c + 0 + 0 + + + 3 + 9 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m4\cpuport.c + cpuport.c + 0 + 0 + + + 3 + 10 + 2 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m4\context_rvds.S + context_rvds.S + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 4 + 11 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\i2c\i2c_core.c + i2c_core.c + 0 + 0 + + + 4 + 12 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\i2c\i2c_dev.c + i2c_dev.c + 0 + 0 + + + 4 + 13 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\i2c\i2c-bit-ops.c + i2c-bit-ops.c + 0 + 0 + + + 4 + 14 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\workqueue.c + workqueue.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\completion.c + completion.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\waitqueue.c + waitqueue.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\dataqueue.c + dataqueue.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\pipe.c + pipe.c + 0 + 0 + + + 4 + 20 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 4 + 21 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 4 + 22 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\serial\serial.c + serial.c + 0 + 0 + + + + + Drivers + 0 + 0 + 0 + 0 + + 5 + 23 + 2 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\ARM\startup_gd32f4xx.s + startup_gd32f4xx.s + 0 + 0 + + + 5 + 24 + 1 + 0 + 0 + 0 + board\board.c + board.c + 0 + 0 + + + 5 + 25 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 5 + 26 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_usart.c + drv_usart.c + 0 + 0 + + + 5 + 27 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_soft_i2c.c + drv_soft_i2c.c + 0 + 0 + + + + + Finsh + 0 + 0 + 0 + 0 + + 6 + 28 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 6 + 29 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 6 + 30 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + + + Kernel + 0 + 0 + 0 + 0 + + 7 + 31 + 1 + 0 + 0 + 0 + ..\..\..\..\src\object.c + object.c + 0 + 0 + + + 7 + 32 + 1 + 0 + 0 + 0 + ..\..\..\..\src\idle.c + idle.c + 0 + 0 + + + 7 + 33 + 1 + 0 + 0 + 0 + ..\..\..\..\src\thread.c + thread.c + 0 + 0 + + + 7 + 34 + 1 + 0 + 0 + 0 + ..\..\..\..\src\timer.c + timer.c + 0 + 0 + + + 7 + 35 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mem.c + mem.c + 0 + 0 + + + 7 + 36 + 1 + 0 + 0 + 0 + ..\..\..\..\src\components.c + components.c + 0 + 0 + + + 7 + 37 + 1 + 0 + 0 + 0 + ..\..\..\..\src\clock.c + clock.c + 0 + 0 + + + 7 + 38 + 1 + 0 + 0 + 0 + ..\..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\scheduler.c + scheduler.c + 0 + 0 + + + 7 + 40 + 1 + 0 + 0 + 0 + ..\..\..\..\src\device.c + device.c + 0 + 0 + + + 7 + 41 + 1 + 0 + 0 + 0 + ..\..\..\..\src\irq.c + irq.c + 0 + 0 + + + 7 + 42 + 1 + 0 + 0 + 0 + ..\..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 7 + 43 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mempool.c + mempool.c + 0 + 0 + + + + + Libraries + 0 + 0 + 0 + 0 + + 8 + 44 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_i2c.c + gd32f4xx_i2c.c + 0 + 0 + + + 8 + 45 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_syscfg.c + gd32f4xx_syscfg.c + 0 + 0 + + + 8 + 46 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_exti.c + gd32f4xx_exti.c + 0 + 0 + + + 8 + 47 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_gpio.c + gd32f4xx_gpio.c + 0 + 0 + + + 8 + 48 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_rcu.c + gd32f4xx_rcu.c + 0 + 0 + + + 8 + 49 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_misc.c + gd32f4xx_misc.c + 0 + 0 + + + 8 + 50 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_usart.c + gd32f4xx_usart.c + 0 + 0 + + + 8 + 51 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\system_gd32f4xx.c + system_gd32f4xx.c + 0 + 0 + + + + + ::CMSIS + 0 + 0 + 0 + 1 + + +
    diff --git a/bsp/gd32/gd32407v-start/project.uvproj b/bsp/gd32/arm/gd32407v-start/project.uvproj similarity index 99% rename from bsp/gd32/gd32407v-start/project.uvproj rename to bsp/gd32/arm/gd32407v-start/project.uvproj index 14bf6ce052..726aa25f4d 100644 --- a/bsp/gd32/gd32407v-start/project.uvproj +++ b/bsp/gd32/arm/gd32407v-start/project.uvproj @@ -12,10 +12,10 @@ GD32F407VK GigaDevice - IRAM(0x20000000,0x020000) IRAM2(0x10000000,0x010000) IROM(0x08000000,0x300000) CPUTYPE("Cortex-M4") FPU2 CLOCK(16800000) + IRAM(0x20000000,0x020000) IRAM2(0x10000000,0x010000) IROM(0x08000000,0x300000) CPUTYPE("Cortex-M4") FPU2 CLOCK(25000000) "Startup\GD\GD32F4xx\startup_gd32f4xx.s" ("GD32F4xx Startup Code") - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000 -FP0($$Device:GD32F407VK$Flash\GD32F4xx_3MB.FLM)) + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000 -FP0($$Device:GD32F407VK$Flash\GD32F4xx_3MB.FLM)) 0 gd32f4xx.h @@ -425,13 +425,6 @@ Compiler - - - syscalls.c - 1 - ..\..\..\components\libc\compilers\armlibc\syscalls.c - - syscall_mem.c @@ -441,9 +434,9 @@ - time.c + syscalls.c 1 - ..\..\..\components\libc\compilers\common\time.c + ..\..\..\components\libc\compilers\armlibc\syscalls.c @@ -453,16 +446,16 @@ ..\..\..\components\libc\compilers\common\stdlib.c + + + time.c + 1 + ..\..\..\components\libc\compilers\common\time.c + + CPU - - - div0.c - 1 - ..\..\..\libcpu\arm\common\div0.c - - showmem.c @@ -479,9 +472,9 @@ - context_rvds.S - 2 - ..\..\..\libcpu\arm\cortex-m4\context_rvds.S + div0.c + 1 + ..\..\..\libcpu\arm\common\div0.c @@ -491,6 +484,13 @@ ..\..\..\libcpu\arm\cortex-m4\cpuport.c + + + context_rvds.S + 2 + ..\..\..\libcpu\arm\cortex-m4\context_rvds.S + + DeviceDrivers @@ -517,23 +517,9 @@ - pipe.c + completion.c 1 - ..\..\..\components\drivers\ipc\pipe.c - - - - - workqueue.c - 1 - ..\..\..\components\drivers\ipc\workqueue.c - - - - - dataqueue.c - 1 - ..\..\..\components\drivers\ipc\dataqueue.c + ..\..\..\components\drivers\ipc\completion.c @@ -550,6 +536,20 @@ ..\..\..\components\drivers\ipc\ringblk_buf.c + + + workqueue.c + 1 + ..\..\..\components\drivers\ipc\workqueue.c + + + + + pipe.c + 1 + ..\..\..\components\drivers\ipc\pipe.c + + ringbuffer.c @@ -559,9 +559,9 @@ - completion.c + dataqueue.c 1 - ..\..\..\components\drivers\ipc\completion.c + ..\..\..\components\drivers\ipc\dataqueue.c @@ -645,30 +645,9 @@ Kernel - idle.c + components.c 1 - ..\..\..\src\idle.c - - - - - mem.c - 1 - ..\..\..\src\mem.c - - - - - mempool.c - 1 - ..\..\..\src\mempool.c - - - - - object.c - 1 - ..\..\..\src\object.c + ..\..\..\src\components.c @@ -678,6 +657,13 @@ ..\..\..\src\timer.c + + + device.c + 1 + ..\..\..\src\device.c + + irq.c @@ -687,9 +673,9 @@ - scheduler.c + mempool.c 1 - ..\..\..\src\scheduler.c + ..\..\..\src\mempool.c @@ -699,6 +685,20 @@ ..\..\..\src\ipc.c + + + mem.c + 1 + ..\..\..\src\mem.c + + + + + clock.c + 1 + ..\..\..\src\clock.c + + kservice.c @@ -715,23 +715,23 @@ - clock.c + scheduler.c 1 - ..\..\..\src\clock.c + ..\..\..\src\scheduler.c - device.c + idle.c 1 - ..\..\..\src\device.c + ..\..\..\src\idle.c - components.c + object.c 1 - ..\..\..\src\components.c + ..\..\..\src\object.c diff --git a/bsp/gd32/gd32407v-start/project.uvprojx b/bsp/gd32/arm/gd32407v-start/project.uvprojx similarity index 76% rename from bsp/gd32/gd32407v-start/project.uvprojx rename to bsp/gd32/arm/gd32407v-start/project.uvprojx index 4ba51852ab..c10f5a0f9e 100644 --- a/bsp/gd32/gd32407v-start/project.uvprojx +++ b/bsp/gd32/arm/gd32407v-start/project.uvprojx @@ -1,7 +1,10 @@ + 2.1 +
    ### uVision Project, (C) Keil Software
    + rt-thread @@ -15,29 +18,29 @@ GigaDevice GigaDevice.GD32F4xx_DFP.2.1.0 http://gd32mcu.com/data/documents/pack/ - IRAM(0x20000000,0x020000) IRAM2(0x10000000,0x010000) IROM(0x08000000,0x300000) CPUTYPE("Cortex-M4") FPU2 CLOCK(16800000) ELITTLE - - - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000 -FP0($$Device:GD32F407VK$Flash\GD32F4xx_3MB.FLM)) + IRAM(0x20000000,0x020000) IRAM2(0x10000000,0x010000) IROM(0x08000000,0x300000) CPUTYPE("Cortex-M4") FPU2 CLOCK(25000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000 -FP0($$Device:GD32F407VK$Flash\GD32F4xx_3MB.FLM)) 0 $$Device:GD32F407VK$Device\F4XX\Include\gd32f4xx.h - - - - - - - - - + + + + + + + + + $$Device:GD32F407VK$SVD\GD32F4xx.svd 0 0 - - - - - + + + + + 0 0 @@ -59,8 +62,8 @@ 0 0 - - + + 0 0 0 @@ -69,8 +72,8 @@ 0 0 - - + + 0 0 0 @@ -80,14 +83,14 @@ 1 0 fromelf --bin !L --output rtthread.bin - + 0 0 0 0 0 - +
    0 @@ -101,8 +104,8 @@ 0 0 3 - - + + 1 @@ -135,11 +138,11 @@ 1 BIN\UL2CM3.DLL - - - - - + + + + + 0 @@ -172,7 +175,7 @@ 0 0 "Cortex-M4" - + 0 0 0 @@ -306,7 +309,7 @@ 0x10000 - + 1 @@ -333,10 +336,10 @@ 0 0 - + USE_STDPERIPH_DRIVER, GD32F407, __RTTHREAD__, RT_USING_ARM_LIBC, __CLK_TCK=RT_TICK_PER_SECOND - - applications;.;..\..\..\components\libc\compilers\common;..\..\..\components\libc\compilers\common\extension;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;..\libraries\gd32_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Include;..\libraries\GD32F4xx_Firmware_Library\CMSIS;..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Include;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc + + applications;.;..\..\..\..\components\libc\compilers\common;..\..\..\..\components\libc\compilers\common\extension;..\..\..\..\libcpu\arm\common;..\..\..\..\libcpu\arm\cortex-m4;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;board;..\libraries\gd32_drivers;..\..\..\..\components\finsh;.;..\..\..\..\include;..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Include;..\libraries\GD32F4xx_Firmware_Library\CMSIS;..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Include;..\..\..\..\components\libc\posix\io\poll;..\..\..\..\components\libc\posix\io\stdio;..\..\..\..\components\libc\posix\ipc @@ -351,10 +354,10 @@ 0 4 - - - - + + + + @@ -366,13 +369,13 @@ 0 0x08000000 0x20000000 - + .\gd32_rom.ld - - - - - + + + + +
    @@ -389,32 +392,26 @@ Compiler - - - syscall_mem.c - 1 - ..\..\..\components\libc\compilers\armlibc\syscall_mem.c - - syscalls.c 1 - ..\..\..\components\libc\compilers\armlibc\syscalls.c + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c + + + syscall_mem.c + 1 + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c - - stdlib.c 1 - ..\..\..\components\libc\compilers\common\stdlib.c + ..\..\..\..\components\libc\compilers\common\stdlib.c - - time.c 1 - ..\..\..\components\libc\compilers\common\time.c + ..\..\..\..\components\libc\compilers\common\time.c @@ -424,35 +421,27 @@ div0.c 1 - ..\..\..\libcpu\arm\common\div0.c + ..\..\..\..\libcpu\arm\common\div0.c - - showmem.c 1 - ..\..\..\libcpu\arm\common\showmem.c + ..\..\..\..\libcpu\arm\common\showmem.c - - backtrace.c 1 - ..\..\..\libcpu\arm\common\backtrace.c + ..\..\..\..\libcpu\arm\common\backtrace.c - - cpuport.c 1 - ..\..\..\libcpu\arm\cortex-m4\cpuport.c + ..\..\..\..\libcpu\arm\cortex-m4\cpuport.c - - context_rvds.S 2 - ..\..\..\libcpu\arm\cortex-m4\context_rvds.S + ..\..\..\..\libcpu\arm\cortex-m4\context_rvds.S @@ -462,84 +451,62 @@ i2c_core.c 1 - ..\..\..\components\drivers\i2c\i2c_core.c + ..\..\..\..\components\drivers\i2c\i2c_core.c - - i2c_dev.c 1 - ..\..\..\components\drivers\i2c\i2c_dev.c + ..\..\..\..\components\drivers\i2c\i2c_dev.c - - i2c-bit-ops.c 1 - ..\..\..\components\drivers\i2c\i2c-bit-ops.c + ..\..\..\..\components\drivers\i2c\i2c-bit-ops.c - - - - dataqueue.c - 1 - ..\..\..\components\drivers\ipc\dataqueue.c - - - - - completion.c - 1 - ..\..\..\components\drivers\ipc\completion.c - - - - - ringblk_buf.c - 1 - ..\..\..\components\drivers\ipc\ringblk_buf.c - - - - - pipe.c - 1 - ..\..\..\components\drivers\ipc\pipe.c - - - - - waitqueue.c - 1 - ..\..\..\components\drivers\ipc\waitqueue.c - - - workqueue.c 1 - ..\..\..\components\drivers\ipc\workqueue.c + ..\..\..\..\components\drivers\ipc\workqueue.c + + + completion.c + 1 + ..\..\..\..\components\drivers\ipc\completion.c + + + ringblk_buf.c + 1 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + waitqueue.c + 1 + ..\..\..\..\components\drivers\ipc\waitqueue.c + + + dataqueue.c + 1 + ..\..\..\..\components\drivers\ipc\dataqueue.c + + + pipe.c + 1 + ..\..\..\..\components\drivers\ipc\pipe.c - - ringbuffer.c 1 - ..\..\..\components\drivers\ipc\ringbuffer.c + ..\..\..\..\components\drivers\ipc\ringbuffer.c - - pin.c 1 - ..\..\..\components\drivers\misc\pin.c + ..\..\..\..\components\drivers\misc\pin.c - - serial.c 1 - ..\..\..\components\drivers\serial\serial.c + ..\..\..\..\components\drivers\serial\serial.c @@ -551,29 +518,21 @@ 2 ..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\ARM\startup_gd32f4xx.s - - board.c 1 board\board.c - - drv_gpio.c 1 ..\libraries\gd32_drivers\drv_gpio.c - - drv_usart.c 1 ..\libraries\gd32_drivers\drv_usart.c - - drv_soft_i2c.c 1 @@ -587,21 +546,17 @@ shell.c 1 - ..\..\..\components\finsh\shell.c + ..\..\..\..\components\finsh\shell.c - - msh.c 1 - ..\..\..\components\finsh\msh.c + ..\..\..\..\components\finsh\msh.c - - cmd.c 1 - ..\..\..\components\finsh\cmd.c + ..\..\..\..\components\finsh\cmd.c @@ -611,91 +566,67 @@ object.c 1 - ..\..\..\src\object.c + ..\..\..\..\src\object.c - - idle.c 1 - ..\..\..\src\idle.c + ..\..\..\..\src\idle.c - - thread.c 1 - ..\..\..\src\thread.c + ..\..\..\..\src\thread.c - - - - components.c - 1 - ..\..\..\src\components.c - - - - - mempool.c - 1 - ..\..\..\src\mempool.c - - - - - irq.c - 1 - ..\..\..\src\irq.c - - - - - ipc.c - 1 - ..\..\..\src\ipc.c - - - - - scheduler.c - 1 - ..\..\..\src\scheduler.c - - - - - device.c - 1 - ..\..\..\src\device.c - - - - - mem.c - 1 - ..\..\..\src\mem.c - - - - - clock.c - 1 - ..\..\..\src\clock.c - - - - - kservice.c - 1 - ..\..\..\src\kservice.c - - - timer.c 1 - ..\..\..\src\timer.c + ..\..\..\..\src\timer.c + + + mem.c + 1 + ..\..\..\..\src\mem.c + + + components.c + 1 + ..\..\..\..\src\components.c + + + clock.c + 1 + ..\..\..\..\src\clock.c + + + kservice.c + 1 + ..\..\..\..\src\kservice.c + + + scheduler.c + 1 + ..\..\..\..\src\scheduler.c + + + device.c + 1 + ..\..\..\..\src\device.c + + + irq.c + 1 + ..\..\..\..\src\irq.c + + + ipc.c + 1 + ..\..\..\..\src\ipc.c + + + mempool.c + 1 + ..\..\..\..\src\mempool.c @@ -707,50 +638,36 @@ 1 ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_i2c.c - - gd32f4xx_syscfg.c 1 ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_syscfg.c - - gd32f4xx_exti.c 1 ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_exti.c - - gd32f4xx_gpio.c 1 ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_gpio.c - - gd32f4xx_rcu.c 1 ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_rcu.c - - gd32f4xx_misc.c 1 ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_misc.c - - gd32f4xx_usart.c 1 ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_usart.c - - system_gd32f4xx.c 1 @@ -758,33 +675,39 @@ + + ::CMSIS + + - + - + - + - + + <Project Info> - - - - - + + + + + 0 1 + diff --git a/bsp/gd32/gd32407v-start/rtconfig.h b/bsp/gd32/arm/gd32407v-start/rtconfig.h similarity index 95% rename from bsp/gd32/gd32407v-start/rtconfig.h rename to bsp/gd32/arm/gd32407v-start/rtconfig.h index e904c8f094..dfc65383a1 100644 --- a/bsp/gd32/gd32407v-start/rtconfig.h +++ b/bsp/gd32/arm/gd32407v-start/rtconfig.h @@ -52,8 +52,14 @@ #define RT_USING_USER_MAIN #define RT_MAIN_THREAD_STACK_SIZE 2048 #define RT_MAIN_THREAD_PRIORITY 10 -#define RT_USING_MSH + +/* C++ features */ + + +/* Command shell */ + #define RT_USING_FINSH +#define RT_USING_MSH #define FINSH_USING_MSH #define FINSH_THREAD_NAME "tshell" #define FINSH_THREAD_PRIORITY 20 @@ -66,6 +72,9 @@ #define FINSH_USING_DESCRIPTION #define FINSH_ARG_MAX 10 +/* Device virtual file system */ + + /* Device Drivers */ #define RT_USING_DEVICE_IPC @@ -83,7 +92,7 @@ /* Using USB */ -/* C/C++ and POSIX layer */ +/* POSIX layer and C standard library */ #define RT_LIBC_DEFAULT_TIMEZONE 8 @@ -95,10 +104,12 @@ /* Socket is in the 'Network' category */ - /* Network */ +/* VBUS(Virtual Software BUS) */ + + /* Utilities */ diff --git a/bsp/gd32/gd32450i-eval/rtconfig.py b/bsp/gd32/arm/gd32407v-start/rtconfig.py similarity index 95% rename from bsp/gd32/gd32450i-eval/rtconfig.py rename to bsp/gd32/arm/gd32407v-start/rtconfig.py index c6165614cb..ba952e3598 100644 --- a/bsp/gd32/gd32450i-eval/rtconfig.py +++ b/bsp/gd32/arm/gd32407v-start/rtconfig.py @@ -22,8 +22,8 @@ elif CROSS_TOOL == 'keil': PLATFORM = 'armcc' EXEC_PATH = r'C:/Keil_v5' elif CROSS_TOOL == 'iar': - PLATFORM = 'iccarm' - EXEC_PATH = r'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.3' + 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') @@ -43,7 +43,7 @@ if PLATFORM == 'gcc': OBJDUMP = PREFIX + 'objdump' OBJCPY = PREFIX + 'objcopy' - DEVICE = ' -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -DGD32F450' + DEVICE = ' -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections' CFLAGS = DEVICE + ' -Dgcc' AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb ' LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler -T board/linker_scripts/link.ld' @@ -93,7 +93,7 @@ elif PLATFORM == 'armcc': POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' -elif PLATFORM == 'iccarm': +elif PLATFORM == 'iar': # toolchains CC = 'iccarm' CXX = 'iccarm' @@ -103,6 +103,7 @@ elif PLATFORM == 'iccarm': TARGET_EXT = 'out' DEVICE = '-Dewarm' + #DEVICE = ' -D USE_STDPERIPH_DRIVER' + ' -D GD32F407xK' CFLAGS = DEVICE CFLAGS += ' --diag_suppress Pa050' @@ -125,8 +126,8 @@ elif PLATFORM == 'iccarm': AFLAGS += ' -w+' AFLAGS += ' -r' AFLAGS += ' --cpu Cortex-M4' - AFLAGS += ' --fpu VFPv4_sp' AFLAGS += ' -S' + AFLAGS += ' --fpu VFPv4_sp' if BUILD == 'debug': CFLAGS += ' --debug' diff --git a/bsp/gd32/arm/gd32407v-start/template.ewp b/bsp/gd32/arm/gd32407v-start/template.ewp new file mode 100644 index 0000000000..c3cff156ac --- /dev/null +++ b/bsp/gd32/arm/gd32407v-start/template.ewp @@ -0,0 +1,1889 @@ + + + 2 + + Debug + + ARM + + 1 + + General + 3 + + 22 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 22 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + + diff --git a/bsp/gd32/arm/gd32407v-start/template.uvoptx b/bsp/gd32/arm/gd32407v-start/template.uvoptx new file mode 100644 index 0000000000..263c23a06e --- /dev/null +++ b/bsp/gd32/arm/gd32407v-start/template.uvoptx @@ -0,0 +1,180 @@ + + + + 1.0 + +
    ### uVision Project, (C) Keil Software
    + + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 25000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 3 + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC800 -FD20000000 -FF0GD32F4xx_3MB -FL0300000 -FS08000000 -FP0($$Device:GD32F407VK$Flash\GD32F4xx_3MB.FLM) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + ::CMSIS + 0 + 0 + 0 + 1 + + +
    diff --git a/bsp/gd32/gd32407v-start/template.uvproj b/bsp/gd32/arm/gd32407v-start/template.uvproj similarity index 98% rename from bsp/gd32/gd32407v-start/template.uvproj rename to bsp/gd32/arm/gd32407v-start/template.uvproj index 69d95a4e29..deb72d33b0 100644 --- a/bsp/gd32/gd32407v-start/template.uvproj +++ b/bsp/gd32/arm/gd32407v-start/template.uvproj @@ -15,10 +15,10 @@ GD32F407VK GigaDevice - IRAM(0x20000000,0x020000) IRAM2(0x10000000,0x010000) IROM(0x08000000,0x300000) CPUTYPE("Cortex-M4") FPU2 CLOCK(16800000) + IRAM(0x20000000,0x020000) IRAM2(0x10000000,0x010000) IROM(0x08000000,0x300000) CPUTYPE("Cortex-M4") FPU2 CLOCK(25000000) "Startup\GD\GD32F4xx\startup_gd32f4xx.s" ("GD32F4xx Startup Code") - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000 -FP0($$Device:GD32F407VK$Flash\GD32F4xx_3MB.FLM)) + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000 -FP0($$Device:GD32F407VK$Flash\GD32F4xx_3MB.FLM)) 0 gd32f4xx.h diff --git a/bsp/gd32/gd32407v-start/template.uvprojx b/bsp/gd32/arm/gd32407v-start/template.uvprojx similarity index 98% rename from bsp/gd32/gd32407v-start/template.uvprojx rename to bsp/gd32/arm/gd32407v-start/template.uvprojx index dd4e87c945..a185b70851 100644 --- a/bsp/gd32/gd32407v-start/template.uvprojx +++ b/bsp/gd32/arm/gd32407v-start/template.uvprojx @@ -18,10 +18,10 @@ GigaDevice GigaDevice.GD32F4xx_DFP.2.1.0 http://gd32mcu.com/data/documents/pack/ - IRAM(0x20000000,0x020000) IRAM2(0x10000000,0x010000) IROM(0x08000000,0x300000) CPUTYPE("Cortex-M4") FPU2 CLOCK(16800000) ELITTLE + IRAM(0x20000000,0x020000) IRAM2(0x10000000,0x010000) IROM(0x08000000,0x300000) CPUTYPE("Cortex-M4") FPU2 CLOCK(25000000) ELITTLE - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000 -FP0($$Device:GD32F407VK$Flash\GD32F4xx_3MB.FLM)) + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000 -FP0($$Device:GD32F407VK$Flash\GD32F4xx_3MB.FLM)) 0 $$Device:GD32F407VK$Device\F4XX\Include\gd32f4xx.h diff --git a/bsp/gd32/arm/gd32450z-eval/Kconfig b/bsp/gd32/arm/gd32450z-eval/Kconfig new file mode 100644 index 0000000000..dbc650938f --- /dev/null +++ b/bsp/gd32/arm/gd32450z-eval/Kconfig @@ -0,0 +1,21 @@ +mainmenu "RT-Thread Configuration" + +config BSP_DIR + string + option env="BSP_ROOT" + default "." + +config RTT_DIR + string + option env="RTT_ROOT" + default "../../../.." + +config PKGS_DIR + string + option env="PKGS_ROOT" + default "packages" + +source "$RTT_DIR/Kconfig" +source "$PKGS_DIR/Kconfig" +source "../libraries/Kconfig" +source "board/Kconfig" diff --git a/bsp/gd32/gd32450z-eval/README.md b/bsp/gd32/arm/gd32450z-eval/README.md similarity index 62% rename from bsp/gd32/gd32450z-eval/README.md rename to bsp/gd32/arm/gd32450z-eval/README.md index 6b398d8661..198a828958 100644 --- a/bsp/gd32/gd32450z-eval/README.md +++ b/bsp/gd32/arm/gd32450z-eval/README.md @@ -12,7 +12,21 @@ GD32450Z-EVAL是-兆易创新推出的一款GD32F4XX系列的评估板,最高 - LED :3个,LED1 (PD4),LED2(PD5),LED3(PG3) - 按键:2个,K1(PA0),K2(PC13),K3(PB14) - + - General TM * 10、Advanced TM * 2、Basic TM * 2 + - 系统时钟 * 1 + - 看门狗 * 2 + - RTC * 1 + - USART * 4、UART * 4 + - I2C * 3、I2S * 2 + - SPI * 6 + - CAN2.0B * 2 + - USB2.0 OTG * 2 + - 以太网 * 1 + - TFT-LCD + - EXMC/SDRAM * 1 + - ADC * 3 + - DAC * 2 + - 最多支持114GPIOs - 常用接口:USB 接口 - 调试接口:GD-LINK @@ -21,15 +35,16 @@ GD32450Z-EVAL是-兆易创新推出的一款GD32F4XX系列的评估板,最高 本 BSP 目前对外设的支持情况如下: -| **片上外设** | **支持情况** | **备注** | -|:--------- |:--------:|:------------------------------------- | -| GPIO | 支持 | PA0, PA1... PK15 ---> PIN: 0, 1...144 | -| UART | 支持 | UART0 - UART7 | -| I2C | 支持 | I2C1 | -| SPI | 支持 | SPI0 - SPI2 | -| SPI FLASH | 支持 | | -| **扩展模块** | **支持情况** | **备注** | -| 暂无 | 暂不支持 | 暂不支持 | +| **片上外设** | **支持情况** | **备注** | +| :----------- | :----------: | :------------------------------- | +| GPIO | 支持 | PA0, PA1... ---> PIN: 0, 1...113 | +| UART | 支持 | UART0 - UART7 | +| I2C | 支持 | I2C1 | +| SPI | 支持 | SPI0 - SPI2 | +| SPI FLASH | 支持 | | +| ADC | 支持 | ADC0 - ADC2 | +| **扩展模块** | **支持情况** | **备注** | +| 暂无 | 暂不支持 | 暂不支持 | ## 使用说明 @@ -45,11 +60,11 @@ GD32450Z-EVAL是-兆易创新推出的一款GD32F4XX系列的评估板,最高 ### 快速上手 -本 BSP 为开发者提供 MDK5 工程,并且支持 GCC 开发环境,也可使用RT-Thread Studio开发。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 +本 BSP 为开发者提供 MDK4、MDK5 和 IAR 工程,并且支持 GCC 开发环境,也可使用RT-Thread Studio开发。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 #### 硬件连接 -使用数据线连接开发板到 PC,使用USB转TTL模块连接PA2(MCU TX)和PA3(MCU RX),打开电源开关。 +使用数据线连接开发板到 PC,使用USB转232连接USART0,打开电源开关。 #### 编译下载 @@ -81,7 +96,7 @@ msh > 3. 输入`pkgs --update`命令更新软件包。 -4. 输入`scons --target=mdk4/mdk5` 命令重新生成工程。 +4. 输入`scons --target=mdk4/mdk5/iar` 命令重新生成工程。 ## 注意事项 diff --git a/bsp/gd32/arm/gd32450z-eval/SConscript b/bsp/gd32/arm/gd32450z-eval/SConscript new file mode 100644 index 0000000000..20f7689c53 --- /dev/null +++ b/bsp/gd32/arm/gd32450z-eval/SConscript @@ -0,0 +1,15 @@ +# for module compiling +import os +Import('RTT_ROOT') +from building import * + +cwd = GetCurrentDir() +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/gd32/gd32450i-eval/SConstruct b/bsp/gd32/arm/gd32450z-eval/SConstruct similarity index 94% rename from bsp/gd32/gd32450i-eval/SConstruct rename to bsp/gd32/arm/gd32450z-eval/SConstruct index 2e0cd022f1..36481e3cea 100644 --- a/bsp/gd32/gd32450i-eval/SConstruct +++ b/bsp/gd32/arm/gd32450z-eval/SConstruct @@ -5,7 +5,7 @@ import rtconfig if os.getenv('RTT_ROOT'): RTT_ROOT = os.getenv('RTT_ROOT') else: - RTT_ROOT = os.path.normpath(os.getcwd() + '/../../..') + RTT_ROOT = os.path.normpath(os.getcwd() + '/../../../..') sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] try: @@ -26,7 +26,7 @@ env = Environment(tools = ['mingw'], LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) env.PrependENVPath('PATH', rtconfig.EXEC_PATH) -if rtconfig.PLATFORM in ['iccarm']: +if rtconfig.PLATFORM == 'iar': env.Replace(CCCOM = ['$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES']) env.Replace(ARFLAGS = ['']) env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map') diff --git a/bsp/gd32/arm/gd32450z-eval/applications/SConscript b/bsp/gd32/arm/gd32450z-eval/applications/SConscript new file mode 100644 index 0000000000..01eb940dfb --- /dev/null +++ b/bsp/gd32/arm/gd32450z-eval/applications/SConscript @@ -0,0 +1,11 @@ +Import('RTT_ROOT') +Import('rtconfig') +from building import * + +cwd = os.path.join(str(Dir('#')), 'applications') +src = Glob('*.c') +CPPPATH = [cwd, str(Dir('#'))] + +group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH) + +Return('group') diff --git a/bsp/gd32/gd32450z-eval/applications/main.c b/bsp/gd32/arm/gd32450z-eval/applications/main.c similarity index 91% rename from bsp/gd32/gd32450z-eval/applications/main.c rename to bsp/gd32/arm/gd32450z-eval/applications/main.c index 5ce66c9b0c..916f6b8a89 100644 --- a/bsp/gd32/gd32450z-eval/applications/main.c +++ b/bsp/gd32/arm/gd32450z-eval/applications/main.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2022, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/gd32/gd32450z-eval/board/Kconfig b/bsp/gd32/arm/gd32450z-eval/board/Kconfig similarity index 66% rename from bsp/gd32/gd32450z-eval/board/Kconfig rename to bsp/gd32/arm/gd32450z-eval/board/Kconfig index c74455ad92..c32001e040 100644 --- a/bsp/gd32/gd32450z-eval/board/Kconfig +++ b/bsp/gd32/arm/gd32450z-eval/board/Kconfig @@ -29,7 +29,7 @@ menu "On-chip Peripheral Drivers" if BSP_USING_UART config BSP_USING_UART0 bool "Enable UART0" - default n + default y config BSP_UART0_RX_USING_DMA bool "Enable UART0 RX DMA" @@ -39,7 +39,7 @@ menu "On-chip Peripheral Drivers" config BSP_USING_UART1 bool "Enable UART1" - default y + default n config BSP_UART1_RX_USING_DMA bool "Enable UART1 RX DMA" @@ -145,6 +145,91 @@ menu "On-chip Peripheral Drivers" range 1 216 default 25 endif + + menuconfig BSP_USING_ADC + bool "Enable ADC" + default n + select RT_USING_ADC + if BSP_USING_ADC + config BSP_USING_ADC0 + bool "Enable ADC0" + default n + + config BSP_USING_ADC1 + bool "Enable ADC1" + default n + + config BSP_USING_ADC2 + bool "Enable ADC2" + default n + endif + + menuconfig BSP_USING_TIM + bool "Enable timer" + default n + select RT_USING_HWTIMER + if BSP_USING_TIM + config BSP_USING_TIM10 + bool "Enable TIM10" + default n + + config BSP_USING_TIM11 + bool "Enable TIM11" + default n + + config BSP_USING_TIM12 + bool "Enable TIM13" + default n + endif + + menuconfig BSP_USING_ONCHIP_RTC + bool "Enable RTC" + select RT_USING_RTC + default n + if BSP_USING_ONCHIP_RTC + choice + prompt "Select clock source" + default BSP_RTC_USING_LSE + + config BSP_RTC_USING_LSE + bool "RTC USING LSE" + + config BSP_RTC_USING_LSI + bool "RTC USING LSI" + endchoice + endif + + config BSP_USING_WDT + bool "Enable Watchdog Timer" + select RT_USING_WDT + default n + + config BSP_USING_SDIO + bool "Enable SDIO" + select RT_USING_SDIO + select RT_USING_DFS + default n + + config BSP_USING_USBD + bool "Enable USB Device" + select RT_USING_USB_DEVICE + default n + + menuconfig BSP_USING_USBH + bool "Enable USB Host" + select RT_USING_USB_HOST + default n + if BSP_USING_USBH + menuconfig RT_USBH_MSTORAGE + bool "Enable Udisk Drivers" + default n + if RT_USBH_MSTORAGE + config UDISK_MOUNTPOINT + string "Udisk mount dir" + default "/" + endif + endif + source "../libraries/gd32_drivers/Kconfig" endmenu diff --git a/bsp/gd32/gd32450i-eval/board/SConscript b/bsp/gd32/arm/gd32450z-eval/board/SConscript similarity index 84% rename from bsp/gd32/gd32450i-eval/board/SConscript rename to bsp/gd32/arm/gd32450z-eval/board/SConscript index cc9fd76fbd..77a18f74e1 100644 --- a/bsp/gd32/gd32450i-eval/board/SConscript +++ b/bsp/gd32/arm/gd32450z-eval/board/SConscript @@ -15,11 +15,11 @@ path = [cwd] startup_path_prefix = SDK_LIB -if rtconfig.PLATFORM in ['gcc']: +if rtconfig.CROSS_TOOL == 'gcc': src += [startup_path_prefix + '/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/GCC/startup_gd32f4xx.s'] -elif rtconfig.PLATFORM in ['armcc', 'armclang']: +elif rtconfig.CROSS_TOOL == 'keil': src += [startup_path_prefix + '/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/ARM/startup_gd32f4xx.s'] -elif rtconfig.PLATFORM in ['iccarm']: +elif rtconfig.CROSS_TOOL == 'iar': src += [startup_path_prefix + '/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/IAR/startup_gd32f4xx.s'] CPPDEFINES = ['GD32F450'] diff --git a/bsp/gd32/gd32450z-eval/board/board.c b/bsp/gd32/arm/gd32450z-eval/board/board.c similarity index 96% rename from bsp/gd32/gd32450z-eval/board/board.c rename to bsp/gd32/arm/gd32450z-eval/board/board.c index 0e9f89865a..8331a86841 100644 --- a/bsp/gd32/gd32450z-eval/board/board.c +++ b/bsp/gd32/arm/gd32450z-eval/board/board.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2022, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/gd32/gd32450z-eval/board/board.h b/bsp/gd32/arm/gd32450z-eval/board/board.h similarity index 95% rename from bsp/gd32/gd32450z-eval/board/board.h rename to bsp/gd32/arm/gd32450z-eval/board/board.h index 59e00a88ca..70ad21024d 100644 --- a/bsp/gd32/gd32450z-eval/board/board.h +++ b/bsp/gd32/arm/gd32450z-eval/board/board.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team + * Copyright (c) 2006-2022, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/gd32/gd32450i-eval/board/gd32f4xx_libopt.h b/bsp/gd32/arm/gd32450z-eval/board/gd32f4xx_libopt.h similarity index 100% rename from bsp/gd32/gd32450i-eval/board/gd32f4xx_libopt.h rename to bsp/gd32/arm/gd32450z-eval/board/gd32f4xx_libopt.h diff --git a/bsp/gd32/gd32407v-start/board/linker_scripts/link.icf b/bsp/gd32/arm/gd32450z-eval/board/linker_scripts/link.icf similarity index 94% rename from bsp/gd32/gd32407v-start/board/linker_scripts/link.icf rename to bsp/gd32/arm/gd32450z-eval/board/linker_scripts/link.icf index 1741be6a71..c32661c11b 100644 --- a/bsp/gd32/gd32407v-start/board/linker_scripts/link.icf +++ b/bsp/gd32/arm/gd32450z-eval/board/linker_scripts/link.icf @@ -7,7 +7,7 @@ define symbol __ICFEDIT_intvec_start__ = 0x08000000; define symbol __ICFEDIT_region_ROM_start__ = 0x08000000; define symbol __ICFEDIT_region_ROM_end__ = 0x082FFFFF; define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; -define symbol __ICFEDIT_region_RAM_end__ = 0x2002FFFF; +define symbol __ICFEDIT_region_RAM_end__ = 0x2001FFFF; /*-Sizes-*/ define symbol __ICFEDIT_size_cstack__ = 0x2000; define symbol __ICFEDIT_size_heap__ = 0x2000; diff --git a/bsp/gd32/gd32450i-eval/board/linker_scripts/link.ld b/bsp/gd32/arm/gd32450z-eval/board/linker_scripts/link.ld similarity index 99% rename from bsp/gd32/gd32450i-eval/board/linker_scripts/link.ld rename to bsp/gd32/arm/gd32450z-eval/board/linker_scripts/link.ld index f39b59d02d..a69ea2837a 100644 --- a/bsp/gd32/gd32450i-eval/board/linker_scripts/link.ld +++ b/bsp/gd32/arm/gd32450z-eval/board/linker_scripts/link.ld @@ -1,6 +1,6 @@ /* * linker script for GD32F4xx with GNU ld - * bernard.xiong 2009-10-14 + * BruceOu 2021-12-14 */ /* Program Entry, set to mark it as "used" and avoid gc */ diff --git a/bsp/gd32/gd32450z-eval/board/linker_scripts/link.sct b/bsp/gd32/arm/gd32450z-eval/board/linker_scripts/link.sct similarity index 100% rename from bsp/gd32/gd32450z-eval/board/linker_scripts/link.sct rename to bsp/gd32/arm/gd32450z-eval/board/linker_scripts/link.sct diff --git a/bsp/gd32/arm/gd32450z-eval/project.ewd b/bsp/gd32/arm/gd32450z-eval/project.ewd new file mode 100644 index 0000000000..ff32f65ffb --- /dev/null +++ b/bsp/gd32/arm/gd32450z-eval/project.ewd @@ -0,0 +1,3056 @@ + + + 3 + + Debug + + ARM + + 1 + + C-SPY + 2 + + 32 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 1 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 1 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 32 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 0 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + IJET_ID + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 0 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 0 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 0 + + + + + + + + STLINK_ID + 2 + + 7 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/bsp/gd32/arm/gd32450z-eval/project.ewp b/bsp/gd32/arm/gd32450z-eval/project.ewp new file mode 100644 index 0000000000..0b77ae33fc --- /dev/null +++ b/bsp/gd32/arm/gd32450z-eval/project.ewp @@ -0,0 +1,2321 @@ + + + 3 + + Debug + + ARM + + 1 + + General + 3 + + 33 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 64 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + + Release + + ARM + + 0 + + General + 3 + + 33 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 37 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 11 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 25 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + Compiler + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\stdlib.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\dlib\syscalls.c + + + $PROJ_DIR$\..\..\..\..\components\libc\compilers\common\time.c + + + + CPU + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\backtrace.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m4\context_iar.S + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\cortex-m4\cpuport.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\..\libcpu\arm\common\showmem.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\completion.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\dataqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\misc\pin.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\pipe.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\ringbuffer.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\serial\serial.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\waitqueue.c + + + $PROJ_DIR$\..\..\..\..\components\drivers\ipc\workqueue.c + + + + Drivers + + $PROJ_DIR$\board\board.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_gpio.c + + + $PROJ_DIR$\..\libraries\gd32_drivers\drv_usart.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\IAR\startup_gd32f4xx.s + + + + Finsh + + $PROJ_DIR$\..\..\..\..\components\finsh\cmd.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\..\components\finsh\shell.c + + + + Kernel + + $PROJ_DIR$\..\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\..\src\device.c + + + $PROJ_DIR$\..\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\..\src\scheduler.c + + + $PROJ_DIR$\..\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\..\src\timer.c + + + + Libraries + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_exti.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_gpio.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_misc.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_rcu.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_syscfg.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_usart.c + + + $PROJ_DIR$\..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\system_gd32f4xx.c + + + + POSIX + + diff --git a/bsp/gd32/arm/gd32450z-eval/project.eww b/bsp/gd32/arm/gd32450z-eval/project.eww new file mode 100644 index 0000000000..c2cb02eb1e --- /dev/null +++ b/bsp/gd32/arm/gd32450z-eval/project.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\project.ewp + + + + + diff --git a/bsp/gd32/arm/gd32450z-eval/project.uvoptx b/bsp/gd32/arm/gd32450z-eval/project.uvoptx new file mode 100644 index 0000000000..d1ac42416b --- /dev/null +++ b/bsp/gd32/arm/gd32450z-eval/project.uvoptx @@ -0,0 +1,806 @@ + + + + 1.0 + +
    ### uVision Project, (C) Keil Software
    + + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + rt-thread + 0x4 + ARM-ADS + + 25000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\build\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 3 + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + 0 + CMSIS_AGDI + -X"CMSIS-DAP" -O206 -S0 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_3MB.FLM -FS08000000 -FL0300000 -FP0($$Device:GD32F450ZK$Flash\GD32F4xx_3MB.FLM) + + + 0 + JL2CM3 + -U59401765 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_3MB.FLM -FS08000000 -FL0300000 -FP0($$Device:GD32F450ZK$Flash\GD32F4xx_3MB.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000 -FP0($$Device:GD32F450ZK$Flash\GD32F4xx_3MB.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + Applications + 0 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + applications\main.c + main.c + 0 + 0 + + + + + Compiler + 0 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c + syscalls.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c + syscall_mem.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\time.c + time.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + ..\..\..\..\components\libc\compilers\common\stdlib.c + stdlib.c + 0 + 0 + + + + + CPU + 0 + 0 + 0 + 0 + + 3 + 6 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 3 + 7 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 3 + 8 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\common\backtrace.c + backtrace.c + 0 + 0 + + + 3 + 9 + 2 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m4\context_rvds.S + context_rvds.S + 0 + 0 + + + 3 + 10 + 1 + 0 + 0 + 0 + ..\..\..\..\libcpu\arm\cortex-m4\cpuport.c + cpuport.c + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 4 + 11 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 4 + 12 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\pipe.c + pipe.c + 0 + 0 + + + 4 + 13 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\dataqueue.c + dataqueue.c + 0 + 0 + + + 4 + 14 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\waitqueue.c + waitqueue.c + 0 + 0 + + + 4 + 15 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\completion.c + completion.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 4 + 17 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\ipc\workqueue.c + workqueue.c + 0 + 0 + + + 4 + 18 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 4 + 19 + 1 + 0 + 0 + 0 + ..\..\..\..\components\drivers\serial\serial.c + serial.c + 0 + 0 + + + + + Drivers + 0 + 0 + 0 + 0 + + 5 + 20 + 2 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\ARM\startup_gd32f4xx.s + startup_gd32f4xx.s + 0 + 0 + + + 5 + 21 + 1 + 0 + 0 + 0 + board\board.c + board.c + 0 + 0 + + + 5 + 22 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 5 + 23 + 1 + 0 + 0 + 0 + ..\libraries\gd32_drivers\drv_usart.c + drv_usart.c + 0 + 0 + + + + + Finsh + 0 + 0 + 0 + 0 + + 6 + 24 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 6 + 25 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 6 + 26 + 1 + 0 + 0 + 0 + ..\..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + + + Kernel + 0 + 0 + 0 + 0 + + 7 + 27 + 1 + 0 + 0 + 0 + ..\..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 7 + 28 + 1 + 0 + 0 + 0 + ..\..\..\..\src\thread.c + thread.c + 0 + 0 + + + 7 + 29 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mem.c + mem.c + 0 + 0 + + + 7 + 30 + 1 + 0 + 0 + 0 + ..\..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 7 + 31 + 1 + 0 + 0 + 0 + ..\..\..\..\src\irq.c + irq.c + 0 + 0 + + + 7 + 32 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mempool.c + mempool.c + 0 + 0 + + + 7 + 33 + 1 + 0 + 0 + 0 + ..\..\..\..\src\components.c + components.c + 0 + 0 + + + 7 + 34 + 1 + 0 + 0 + 0 + ..\..\..\..\src\timer.c + timer.c + 0 + 0 + + + 7 + 35 + 1 + 0 + 0 + 0 + ..\..\..\..\src\device.c + device.c + 0 + 0 + + + 7 + 36 + 1 + 0 + 0 + 0 + ..\..\..\..\src\idle.c + idle.c + 0 + 0 + + + 7 + 37 + 1 + 0 + 0 + 0 + ..\..\..\..\src\scheduler.c + scheduler.c + 0 + 0 + + + 7 + 38 + 1 + 0 + 0 + 0 + ..\..\..\..\src\clock.c + clock.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\object.c + object.c + 0 + 0 + + + + + Libraries + 0 + 0 + 0 + 0 + + 8 + 40 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_syscfg.c + gd32f4xx_syscfg.c + 0 + 0 + + + 8 + 41 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_exti.c + gd32f4xx_exti.c + 0 + 0 + + + 8 + 42 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_gpio.c + gd32f4xx_gpio.c + 0 + 0 + + + 8 + 43 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_rcu.c + gd32f4xx_rcu.c + 0 + 0 + + + 8 + 44 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_misc.c + gd32f4xx_misc.c + 0 + 0 + + + 8 + 45 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_usart.c + gd32f4xx_usart.c + 0 + 0 + + + 8 + 46 + 1 + 0 + 0 + 0 + ..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\system_gd32f4xx.c + system_gd32f4xx.c + 0 + 0 + + + + + ::CMSIS + 0 + 0 + 0 + 1 + + +
    diff --git a/bsp/gd32/gd32450z-eval/project.uvproj b/bsp/gd32/arm/gd32450z-eval/project.uvproj similarity index 87% rename from bsp/gd32/gd32450z-eval/project.uvproj rename to bsp/gd32/arm/gd32450z-eval/project.uvproj index 54fc0812e2..46a67506a8 100644 --- a/bsp/gd32/gd32450z-eval/project.uvproj +++ b/bsp/gd32/arm/gd32450z-eval/project.uvproj @@ -12,7 +12,7 @@ GD32F450ZK GigaDevice - IRAM(0x20000000-0x20030000) IROM(0x08000000-0x08300000) CLOCK(20000000) CPUTYPE("Cortex-M4") FPU2 + IRAM(0x20000000-0x20030000) IRAM2(0x10000000-0x10010000) IROM(0x08000000-0x08300000) CLOCK(25000000) CPUTYPE("Cortex-M4") FPU2 "Startup\GD\GD32F4xx\startup_gd32f4xx.s" ("GD32F4xx Startup Code") UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000) @@ -372,7 +372,7 @@ USE_STDPERIPH_DRIVER, GD32F450, __RTTHREAD__, RT_USING_ARM_LIBC, __CLK_TCK=RT_TICK_PER_SECOND - applications;.;..\..\..\components\libc\compilers\common;..\..\..\components\libc\compilers\common\extension;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;..\libraries\gd32_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Include;..\libraries\GD32F4xx_Firmware_Library\CMSIS;..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Include;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc + applications;.;..\..\..\..\components\libc\compilers\common;..\..\..\..\components\libc\compilers\common\extension;..\..\..\..\libcpu\arm\common;..\..\..\..\libcpu\arm\cortex-m4;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;board;..\libraries\gd32_drivers;..\..\..\..\components\finsh;.;..\..\..\..\include;..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Include;..\libraries\GD32F4xx_Firmware_Library\CMSIS;..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Include;..\..\..\..\components\libc\posix\io\poll;..\..\..\..\components\libc\posix\io\stdio;..\..\..\..\components\libc\posix\ipc @@ -427,30 +427,30 @@ Compiler - syscall_mem.c + syscalls.c 1 - ..\..\..\components\libc\compilers\armlibc\syscall_mem.c + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c - syscalls.c + syscall_mem.c 1 - ..\..\..\components\libc\compilers\armlibc\syscalls.c + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c stdlib.c 1 - ..\..\..\components\libc\compilers\common\stdlib.c + ..\..\..\..\components\libc\compilers\common\stdlib.c time.c 1 - ..\..\..\components\libc\compilers\common\time.c + ..\..\..\..\components\libc\compilers\common\time.c @@ -460,35 +460,35 @@ backtrace.c 1 - ..\..\..\libcpu\arm\common\backtrace.c - - - - - showmem.c - 1 - ..\..\..\libcpu\arm\common\showmem.c + ..\..\..\..\libcpu\arm\common\backtrace.c div0.c 1 - ..\..\..\libcpu\arm\common\div0.c + ..\..\..\..\libcpu\arm\common\div0.c + + + + + showmem.c + 1 + ..\..\..\..\libcpu\arm\common\showmem.c context_rvds.S 2 - ..\..\..\libcpu\arm\cortex-m4\context_rvds.S + ..\..\..\..\libcpu\arm\cortex-m4\context_rvds.S cpuport.c 1 - ..\..\..\libcpu\arm\cortex-m4\cpuport.c + ..\..\..\..\libcpu\arm\cortex-m4\cpuport.c @@ -498,63 +498,63 @@ dataqueue.c 1 - ..\..\..\components\drivers\ipc\dataqueue.c + ..\..\..\..\components\drivers\ipc\dataqueue.c completion.c 1 - ..\..\..\components\drivers\ipc\completion.c - - - - - waitqueue.c - 1 - ..\..\..\components\drivers\ipc\waitqueue.c - - - - - ringblk_buf.c - 1 - ..\..\..\components\drivers\ipc\ringblk_buf.c - - - - - pipe.c - 1 - ..\..\..\components\drivers\ipc\pipe.c + ..\..\..\..\components\drivers\ipc\completion.c workqueue.c 1 - ..\..\..\components\drivers\ipc\workqueue.c + ..\..\..\..\components\drivers\ipc\workqueue.c ringbuffer.c 1 - ..\..\..\components\drivers\ipc\ringbuffer.c + ..\..\..\..\components\drivers\ipc\ringbuffer.c + + + + + pipe.c + 1 + ..\..\..\..\components\drivers\ipc\pipe.c + + + + + ringblk_buf.c + 1 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c + + + + + waitqueue.c + 1 + ..\..\..\..\components\drivers\ipc\waitqueue.c pin.c 1 - ..\..\..\components\drivers\misc\pin.c + ..\..\..\..\components\drivers\misc\pin.c serial.c 1 - ..\..\..\components\drivers\serial\serial.c + ..\..\..\..\components\drivers\serial\serial.c @@ -595,21 +595,21 @@ shell.c 1 - ..\..\..\components\finsh\shell.c + ..\..\..\..\components\finsh\shell.c msh.c 1 - ..\..\..\components\finsh\msh.c + ..\..\..\..\components\finsh\msh.c cmd.c 1 - ..\..\..\components\finsh\cmd.c + ..\..\..\..\components\finsh\cmd.c @@ -617,93 +617,93 @@ Kernel - components.c + scheduler.c 1 - ..\..\..\src\components.c - - - - - irq.c - 1 - ..\..\..\src\irq.c - - - - - object.c - 1 - ..\..\..\src\object.c - - - - - ipc.c - 1 - ..\..\..\src\ipc.c - - - - - clock.c - 1 - ..\..\..\src\clock.c - - - - - mempool.c - 1 - ..\..\..\src\mempool.c - - - - - mem.c - 1 - ..\..\..\src\mem.c - - - - - idle.c - 1 - ..\..\..\src\idle.c + ..\..\..\..\src\scheduler.c timer.c 1 - ..\..\..\src\timer.c + ..\..\..\..\src\timer.c - scheduler.c + mem.c 1 - ..\..\..\src\scheduler.c + ..\..\..\..\src\mem.c - device.c + object.c 1 - ..\..\..\src\device.c + ..\..\..\..\src\object.c - kservice.c + ipc.c 1 - ..\..\..\src\kservice.c + ..\..\..\..\src\ipc.c + + + + + mempool.c + 1 + ..\..\..\..\src\mempool.c + + + + + idle.c + 1 + ..\..\..\..\src\idle.c thread.c 1 - ..\..\..\src\thread.c + ..\..\..\..\src\thread.c + + + + + kservice.c + 1 + ..\..\..\..\src\kservice.c + + + + + irq.c + 1 + ..\..\..\..\src\irq.c + + + + + components.c + 1 + ..\..\..\..\src\components.c + + + + + clock.c + 1 + ..\..\..\..\src\clock.c + + + + + device.c + 1 + ..\..\..\..\src\device.c diff --git a/bsp/gd32/gd32450z-eval/project.uvprojx b/bsp/gd32/arm/gd32450z-eval/project.uvprojx similarity index 76% rename from bsp/gd32/gd32450z-eval/project.uvprojx rename to bsp/gd32/arm/gd32450z-eval/project.uvprojx index 2cfc044022..88806a834a 100644 --- a/bsp/gd32/gd32450z-eval/project.uvprojx +++ b/bsp/gd32/arm/gd32450z-eval/project.uvprojx @@ -1,12 +1,16 @@ + 2.1 +
    ### uVision Project, (C) Keil Software
    + rt-thread 0x4 ARM-ADS + 5060750::V5.06 update 6 (build 750)::.\ARMCC 0 @@ -14,29 +18,29 @@ GigaDevice GigaDevice.GD32F4xx_DFP.2.1.0 http://gd32mcu.com/data/documents/pack/ - IRAM(0x20000000,0x040000) IROM(0x08000000,0x0300000) CPUTYPE("Cortex-M4") FPU2 CLOCK(20000000) ELITTLE - - - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000 -FP0($$Device:GD32F450ZK$Flash\GD32F4xx_3MB.FLM)) + IRAM(0x20000000-0x20030000) IRAM2(0x10000000-0x10010000) IROM(0x08000000,0x0300000) CPUTYPE("Cortex-M4") FPU2 CLOCK(25000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000 -FP0($$Device:GD32F450ZK$Flash\GD32F4xx_3MB.FLM)) 0 $$Device:GD32F450ZK$Device\Include\gd32f4xx.h - - - - - - - - - + + + + + + + + + $$Device:GD32F450ZK$SVD\GD32F4xx.svd 0 0 - - - - - + + + + + 0 0 @@ -58,8 +62,8 @@ 0 0 - - + + 0 0 0 @@ -68,8 +72,8 @@ 0 0 - - + + 0 0 0 @@ -79,14 +83,14 @@ 1 0 fromelf --bin !L --output rtthread.bin - + 0 0 0 0 0 - + 0 @@ -100,8 +104,8 @@ 0 0 3 - - + + 1 @@ -134,11 +138,11 @@ 1 BIN\UL2CM3.DLL - - - - - + + + + + 0 @@ -171,7 +175,7 @@ 0 0 "Cortex-M4" - + 0 0 0 @@ -182,7 +186,7 @@ 2 0 0 - 0 + 1 0 8 0 @@ -242,7 +246,7 @@ 0 0x20000000 - 0x40000 + 0x30001 1 @@ -305,7 +309,7 @@ 0x10000 - + 1 @@ -332,10 +336,10 @@ 0 0 - + USE_STDPERIPH_DRIVER, GD32F450, __RTTHREAD__, RT_USING_ARM_LIBC, __CLK_TCK=RT_TICK_PER_SECOND - - applications;.;..\..\..\components\libc\compilers\common;..\..\..\components\libc\compilers\common\extension;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;..\libraries\gd32_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Include;..\libraries\GD32F4xx_Firmware_Library\CMSIS;..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Include;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc + + applications;.;..\..\..\..\components\libc\compilers\common;..\..\..\..\components\libc\compilers\common\extension;..\..\..\..\libcpu\arm\common;..\..\..\..\libcpu\arm\cortex-m4;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;..\..\..\..\components\drivers\include;board;..\libraries\gd32_drivers;..\..\..\..\components\finsh;.;..\..\..\..\include;..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Include;..\libraries\GD32F4xx_Firmware_Library\CMSIS;..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Include;..\..\..\..\components\libc\posix\io\poll;..\..\..\..\components\libc\posix\io\stdio;..\..\..\..\components\libc\posix\ipc @@ -350,10 +354,10 @@ 0 4 - - - - + + + + @@ -365,13 +369,13 @@ 0 0x08000000 0x20000000 - + .\gd32_rom.ld - - - - - + + + + + @@ -388,32 +392,26 @@ Compiler - - - syscall_mem.c - 1 - ..\..\..\components\libc\compilers\armlibc\syscall_mem.c - - syscalls.c 1 - ..\..\..\components\libc\compilers\armlibc\syscalls.c + ..\..\..\..\components\libc\compilers\armlibc\syscalls.c - - - stdlib.c + syscall_mem.c 1 - ..\..\..\components\libc\compilers\common\stdlib.c + ..\..\..\..\components\libc\compilers\armlibc\syscall_mem.c - - time.c 1 - ..\..\..\components\libc\compilers\common\time.c + ..\..\..\..\components\libc\compilers\common\time.c + + + stdlib.c + 1 + ..\..\..\..\components\libc\compilers\common\stdlib.c @@ -423,35 +421,27 @@ div0.c 1 - ..\..\..\libcpu\arm\common\div0.c + ..\..\..\..\libcpu\arm\common\div0.c - - - - backtrace.c - 1 - ..\..\..\libcpu\arm\common\backtrace.c - - - showmem.c 1 - ..\..\..\libcpu\arm\common\showmem.c + ..\..\..\..\libcpu\arm\common\showmem.c + + + backtrace.c + 1 + ..\..\..\..\libcpu\arm\common\backtrace.c - - context_rvds.S 2 - ..\..\..\libcpu\arm\cortex-m4\context_rvds.S + ..\..\..\..\libcpu\arm\cortex-m4\context_rvds.S - - cpuport.c 1 - ..\..\..\libcpu\arm\cortex-m4\cpuport.c + ..\..\..\..\libcpu\arm\cortex-m4\cpuport.c @@ -459,65 +449,49 @@ DeviceDrivers - ringblk_buf.c + ringbuffer.c 1 - ..\..\..\components\drivers\ipc\ringblk_buf.c + ..\..\..\..\components\drivers\ipc\ringbuffer.c - - pipe.c 1 - ..\..\..\components\drivers\ipc\pipe.c + ..\..\..\..\components\drivers\ipc\pipe.c - - - - completion.c - 1 - ..\..\..\components\drivers\ipc\completion.c - - - dataqueue.c 1 - ..\..\..\components\drivers\ipc\dataqueue.c + ..\..\..\..\components\drivers\ipc\dataqueue.c - - waitqueue.c 1 - ..\..\..\components\drivers\ipc\waitqueue.c + ..\..\..\..\components\drivers\ipc\waitqueue.c + + + completion.c + 1 + ..\..\..\..\components\drivers\ipc\completion.c + + + ringblk_buf.c + 1 + ..\..\..\..\components\drivers\ipc\ringblk_buf.c - - workqueue.c 1 - ..\..\..\components\drivers\ipc\workqueue.c + ..\..\..\..\components\drivers\ipc\workqueue.c - - - - ringbuffer.c - 1 - ..\..\..\components\drivers\ipc\ringbuffer.c - - - pin.c 1 - ..\..\..\components\drivers\misc\pin.c + ..\..\..\..\components\drivers\misc\pin.c - - serial.c 1 - ..\..\..\components\drivers\serial\serial.c + ..\..\..\..\components\drivers\serial\serial.c @@ -529,22 +503,16 @@ 2 ..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\ARM\startup_gd32f4xx.s - - board.c 1 board\board.c - - drv_gpio.c 1 ..\libraries\gd32_drivers\drv_gpio.c - - drv_usart.c 1 @@ -558,21 +526,17 @@ shell.c 1 - ..\..\..\components\finsh\shell.c + ..\..\..\..\components\finsh\shell.c - - msh.c 1 - ..\..\..\components\finsh\msh.c + ..\..\..\..\components\finsh\msh.c - - cmd.c 1 - ..\..\..\components\finsh\cmd.c + ..\..\..\..\components\finsh\cmd.c @@ -580,93 +544,69 @@ Kernel - clock.c + ipc.c 1 - ..\..\..\src\clock.c + ..\..\..\..\src\ipc.c - - - - components.c - 1 - ..\..\..\src\components.c - - - thread.c 1 - ..\..\..\src\thread.c + ..\..\..\..\src\thread.c - - - - irq.c - 1 - ..\..\..\src\irq.c - - - - - object.c - 1 - ..\..\..\src\object.c - - - - - kservice.c - 1 - ..\..\..\src\kservice.c - - - - - idle.c - 1 - ..\..\..\src\idle.c - - - mem.c 1 - ..\..\..\src\mem.c + ..\..\..\..\src\mem.c + + + kservice.c + 1 + ..\..\..\..\src\kservice.c + + + irq.c + 1 + ..\..\..\..\src\irq.c - - mempool.c 1 - ..\..\..\src\mempool.c + ..\..\..\..\src\mempool.c - - - scheduler.c + components.c 1 - ..\..\..\src\scheduler.c + ..\..\..\..\src\components.c - - - - device.c - 1 - ..\..\..\src\device.c - - - timer.c 1 - ..\..\..\src\timer.c + ..\..\..\..\src\timer.c - - - ipc.c + device.c 1 - ..\..\..\src\ipc.c + ..\..\..\..\src\device.c + + + idle.c + 1 + ..\..\..\..\src\idle.c + + + scheduler.c + 1 + ..\..\..\..\src\scheduler.c + + + clock.c + 1 + ..\..\..\..\src\clock.c + + + object.c + 1 + ..\..\..\..\src\object.c @@ -678,43 +618,31 @@ 1 ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_syscfg.c - - gd32f4xx_exti.c 1 ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_exti.c - - gd32f4xx_gpio.c 1 ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_gpio.c - - gd32f4xx_rcu.c 1 ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_rcu.c - - gd32f4xx_misc.c 1 ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_misc.c - - gd32f4xx_usart.c 1 ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_usart.c - - system_gd32f4xx.c 1 @@ -722,33 +650,39 @@ + + ::CMSIS + + - + - + - + - + + <Project Info> - - - - - + + + + + 0 1 +
    diff --git a/bsp/gd32/gd32450i-eval/rtconfig.h b/bsp/gd32/arm/gd32450z-eval/rtconfig.h similarity index 98% rename from bsp/gd32/gd32450i-eval/rtconfig.h rename to bsp/gd32/arm/gd32450z-eval/rtconfig.h index 8b26a86fed..af0753934d 100644 --- a/bsp/gd32/gd32450i-eval/rtconfig.h +++ b/bsp/gd32/arm/gd32450z-eval/rtconfig.h @@ -191,7 +191,7 @@ /* Hardware Drivers Config */ #define SOC_SERIES_GD32F4xx -#define SOC_GD32450I +#define SOC_GD32450Z /* Onboard Peripheral Drivers */ @@ -200,6 +200,7 @@ #define BSP_USING_GPIO #define BSP_USING_UART #define BSP_USING_UART0 +#define BSP_USING_UART1 /* Board extended module Drivers */ diff --git a/bsp/gd32/gd32450z-eval/rtconfig.py b/bsp/gd32/arm/gd32450z-eval/rtconfig.py similarity index 98% rename from bsp/gd32/gd32450z-eval/rtconfig.py rename to bsp/gd32/arm/gd32450z-eval/rtconfig.py index c6165614cb..c0c0b203cf 100644 --- a/bsp/gd32/gd32450z-eval/rtconfig.py +++ b/bsp/gd32/arm/gd32450z-eval/rtconfig.py @@ -22,8 +22,8 @@ elif CROSS_TOOL == 'keil': PLATFORM = 'armcc' EXEC_PATH = r'C:/Keil_v5' elif CROSS_TOOL == 'iar': - PLATFORM = 'iccarm' - EXEC_PATH = r'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.3' + 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') @@ -93,7 +93,7 @@ elif PLATFORM == 'armcc': POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET' -elif PLATFORM == 'iccarm': +elif PLATFORM == 'iar': # toolchains CC = 'iccarm' CXX = 'iccarm' diff --git a/bsp/gd32/arm/gd32450z-eval/template.ewp b/bsp/gd32/arm/gd32450z-eval/template.ewp new file mode 100644 index 0000000000..963857b281 --- /dev/null +++ b/bsp/gd32/arm/gd32450z-eval/template.ewp @@ -0,0 +1,1892 @@ + + + + 2 + + Debug + + ARM + + 1 + + General + 3 + + 22 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 22 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + + diff --git a/bsp/gd32/gd32450z-eval/template.uvoptx b/bsp/gd32/arm/gd32450z-eval/template.uvoptx similarity index 96% rename from bsp/gd32/gd32450z-eval/template.uvoptx rename to bsp/gd32/arm/gd32450z-eval/template.uvoptx index 3947c5e208..e921b2fe4e 100644 --- a/bsp/gd32/gd32450z-eval/template.uvoptx +++ b/bsp/gd32/arm/gd32450z-eval/template.uvoptx @@ -26,7 +26,7 @@ 0x4 ARM-ADS - 12000000 + 25000000 1 1 @@ -130,7 +130,7 @@ 0 UL2CM3 - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000 -FP0($$Device:GD32F450ZK$Flash\GD32F4xx_3MB.FLM)) + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000 -FP0($$Device:GD32F450ZK$Flash\GD32F4xx_3MB.FLM)) diff --git a/bsp/gd32/gd32450z-eval/template.uvproj b/bsp/gd32/arm/gd32450z-eval/template.uvproj similarity index 99% rename from bsp/gd32/gd32450z-eval/template.uvproj rename to bsp/gd32/arm/gd32450z-eval/template.uvproj index a23ad93c9a..d7a936eb29 100644 --- a/bsp/gd32/gd32450z-eval/template.uvproj +++ b/bsp/gd32/arm/gd32450z-eval/template.uvproj @@ -15,7 +15,7 @@ GD32F450ZK GigaDevice - IRAM(0x20000000-0x20030000) IROM(0x08000000-0x08300000) CLOCK(20000000) CPUTYPE("Cortex-M4") FPU2 + IRAM(0x20000000-0x20030000) IRAM2(0x10000000-0x10010000) IROM(0x08000000-0x08300000) CLOCK(25000000) CPUTYPE("Cortex-M4") FPU2 "Startup\GD\GD32F4xx\startup_gd32f4xx.s" ("GD32F4xx Startup Code") UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000) diff --git a/bsp/gd32/gd32450z-eval/template.uvprojx b/bsp/gd32/arm/gd32450z-eval/template.uvprojx similarity index 97% rename from bsp/gd32/gd32450z-eval/template.uvprojx rename to bsp/gd32/arm/gd32450z-eval/template.uvprojx index 5653f2da1d..3a24d98008 100644 --- a/bsp/gd32/gd32450z-eval/template.uvprojx +++ b/bsp/gd32/arm/gd32450z-eval/template.uvprojx @@ -17,10 +17,10 @@ GigaDevice GigaDevice.GD32F4xx_DFP.2.1.0 http://gd32mcu.com/data/documents/pack/ - IRAM(0x20000000,0x040000) IROM(0x08000000,0x0300000) CPUTYPE("Cortex-M4") FPU2 CLOCK(20000000) ELITTLE + IRAM(0x20000000-0x20030000) IRAM2(0x10000000-0x10010000) IROM(0x08000000,0x0300000) CPUTYPE("Cortex-M4") FPU2 CLOCK(25000000) ELITTLE - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000 -FP0($$Device:GD32F450ZK$Flash\GD32F4xx_3MB.FLM)) + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC800 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000 -FP0($$Device:GD32F450ZK$Flash\GD32F4xx_3MB.FLM)) 0 $$Device:GD32F450ZK$Device\Include\gd32f4xx.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Include/gd32f10x.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Include/gd32f10x.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Include/gd32f10x.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Include/gd32f10x.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Include/system_gd32f10x.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Include/system_gd32f10x.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Include/system_gd32f10x.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Include/system_gd32f10x.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_cl.s b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_cl.s similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_cl.s rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_cl.s diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_hd.s b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_hd.s similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_hd.s rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_hd.s diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_md.s b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_md.s similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_md.s rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_md.s diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_xd.s b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_xd.s similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_xd.s rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/ARM/startup_gd32f10x_xd.s diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_cl.s b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_cl.s similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_cl.s rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_cl.s diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_hd.s b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_hd.s similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_hd.s rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_hd.s diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_md.s b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_md.s similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_md.s rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_md.s diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_xd.s b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_xd.s similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_xd.s rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/GCC/startup_gd32f10x_xd.s diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_cl.s b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_cl.s similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_cl.s rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_cl.s diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_hd.s b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_hd.s similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_hd.s rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_hd.s diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_md.s b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_md.s similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_md.s rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_md.s diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_xd.s b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_xd.s similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_xd.s rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/IAR/startup_gd32f10x_xd.s diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/system_gd32f10x.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/system_gd32f10x.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/system_gd32f10x.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/GD/GD32F10x/Source/system_gd32f10x.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/core_cm3.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/core_cm3.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/core_cm3.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/core_cm3.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/core_cmFunc.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/core_cmFunc.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/core_cmFunc.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/core_cmFunc.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/core_cmInstr.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/core_cmInstr.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/CMSIS/core_cmInstr.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/CMSIS/core_cmInstr.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_adc.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_adc.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_adc.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_adc.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_bkp.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_bkp.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_bkp.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_bkp.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_can.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_can.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_can.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_can.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_crc.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_crc.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_crc.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_crc.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_dac.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_dac.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_dac.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_dac.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_dbg.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_dbg.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_dbg.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_dbg.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_dma.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_dma.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_dma.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_dma.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_enet.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_enet.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_enet.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_enet.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_exmc.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_exmc.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_exmc.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_exmc.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_exti.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_exti.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_exti.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_exti.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_fmc.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_fmc.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_fmc.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_fmc.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_fwdgt.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_fwdgt.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_fwdgt.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_fwdgt.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_gpio.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_gpio.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_gpio.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_gpio.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_i2c.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_i2c.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_i2c.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_i2c.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_misc.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_misc.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_misc.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_misc.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_pmu.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_pmu.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_pmu.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_pmu.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_rcu.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_rcu.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_rcu.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_rcu.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_rtc.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_rtc.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_rtc.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_rtc.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_sdio.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_sdio.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_sdio.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_sdio.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_spi.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_spi.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_spi.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_spi.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_timer.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_timer.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_timer.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_timer.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_usart.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_usart.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_usart.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_usart.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_wwdgt.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_wwdgt.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_wwdgt.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Include/gd32f10x_wwdgt.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_adc.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_adc.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_adc.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_adc.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_bkp.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_bkp.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_bkp.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_bkp.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_can.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_can.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_can.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_can.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_crc.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_crc.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_crc.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_crc.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_dac.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_dac.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_dac.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_dac.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_dbg.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_dbg.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_dbg.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_dbg.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_dma.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_dma.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_dma.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_dma.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_enet.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_enet.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_enet.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_enet.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_exmc.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_exmc.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_exmc.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_exmc.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_exti.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_exti.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_exti.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_exti.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_fmc.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_fmc.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_fmc.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_fmc.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_fwdgt.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_fwdgt.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_fwdgt.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_fwdgt.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_gpio.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_gpio.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_gpio.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_gpio.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_i2c.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_i2c.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_i2c.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_i2c.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_misc.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_misc.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_misc.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_misc.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_pmu.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_pmu.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_pmu.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_pmu.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_rcu.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_rcu.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_rcu.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_rcu.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_rtc.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_rtc.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_rtc.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_rtc.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_sdio.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_sdio.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_sdio.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_sdio.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_spi.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_spi.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_spi.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_spi.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_timer.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_timer.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_timer.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_timer.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_usart.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_usart.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_usart.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_usart.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_wwdgt.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_wwdgt.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_wwdgt.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_standard_peripheral/Source/gd32f10x_wwdgt.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/audio/Include/audio_core.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/audio/Include/audio_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/audio/Include/audio_core.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/audio/Include/audio_core.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/audio/Include/audio_out_itf.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/audio/Include/audio_out_itf.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/audio/Include/audio_out_itf.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/audio/Include/audio_out_itf.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/audio/Source/audio_core.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/audio/Source/audio_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/audio/Source/audio_core.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/audio/Source/audio_core.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/audio/Source/audio_out_itf.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/audio/Source/audio_out_itf.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/audio/Source/audio_out_itf.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/audio/Source/audio_out_itf.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/cdc/Include/cdc_acm_core.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/cdc/Include/cdc_acm_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/cdc/Include/cdc_acm_core.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/cdc/Include/cdc_acm_core.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/cdc/Source/cdc_acm_core.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/cdc/Source/cdc_acm_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/cdc/Source/cdc_acm_core.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/cdc/Source/cdc_acm_core.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/dfu/Include/dfu_core.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/dfu/Include/dfu_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/dfu/Include/dfu_core.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/dfu/Include/dfu_core.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/dfu/Source/dfu_core.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/dfu/Source/dfu_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/dfu/Source/dfu_core.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/dfu/Source/dfu_core.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Include/custom_hid_core.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Include/custom_hid_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Include/custom_hid_core.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Include/custom_hid_core.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Include/standard_hid_core.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Include/standard_hid_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Include/standard_hid_core.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Include/standard_hid_core.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Include/usb_hid.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Include/usb_hid.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Include/usb_hid.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Include/usb_hid.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Source/custom_hid_core.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Source/custom_hid_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Source/custom_hid_core.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Source/custom_hid_core.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Source/standard_hid_core.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Source/standard_hid_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Source/standard_hid_core.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/hid/Source/standard_hid_core.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/iap/Include/usb_iap_core.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/iap/Include/usb_iap_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/iap/Include/usb_iap_core.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/iap/Include/usb_iap_core.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/iap/Source/usb_iap_core.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/iap/Source/usb_iap_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/iap/Source/usb_iap_core.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/iap/Source/usb_iap_core.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_bbb.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_bbb.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_bbb.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_bbb.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_core.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_core.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_core.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_data.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_data.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_data.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_data.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_mem.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_mem.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_mem.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_mem.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_scsi.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_scsi.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_scsi.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Include/usbd_msc_scsi.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Source/usbd_msc_bbb.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Source/usbd_msc_bbb.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Source/usbd_msc_bbb.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Source/usbd_msc_bbb.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Source/usbd_msc_core.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Source/usbd_msc_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Source/usbd_msc_core.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Source/usbd_msc_core.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Source/usbd_msc_data.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Source/usbd_msc_data.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Source/usbd_msc_data.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Source/usbd_msc_data.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Source/usbd_msc_scsi.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Source/usbd_msc_scsi.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Source/usbd_msc_scsi.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/msc/Source/usbd_msc_scsi.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/printer/Include/printer_core.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/printer/Include/printer_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/printer/Include/printer_core.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/printer/Include/printer_core.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/printer/Source/printer_core.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/printer/Source/printer_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/printer/Source/printer_core.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/class/device/printer/Source/printer_core.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usb_ch9_std.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usb_ch9_std.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usb_ch9_std.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usb_ch9_std.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usbd_core.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usbd_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usbd_core.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usbd_core.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usbd_enum.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usbd_enum.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usbd_enum.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usbd_enum.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usbd_pwr.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usbd_pwr.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usbd_pwr.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usbd_pwr.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usbd_transc.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usbd_transc.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usbd_transc.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Include/usbd_transc.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Source/usbd_core.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Source/usbd_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Source/usbd_core.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Source/usbd_core.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Source/usbd_enum.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Source/usbd_enum.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Source/usbd_enum.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Source/usbd_enum.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Source/usbd_pwr.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Source/usbd_pwr.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Source/usbd_pwr.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Source/usbd_pwr.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Source/usbd_transc.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Source/usbd_transc.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Source/usbd_transc.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/device/Source/usbd_transc.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Include/usbd_lld_core.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Include/usbd_lld_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Include/usbd_lld_core.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Include/usbd_lld_core.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Include/usbd_lld_int.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Include/usbd_lld_int.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Include/usbd_lld_int.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Include/usbd_lld_int.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Include/usbd_lld_regs.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Include/usbd_lld_regs.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Include/usbd_lld_regs.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Include/usbd_lld_regs.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Source/usbd_lld_core.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Source/usbd_lld_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Source/usbd_lld_core.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Source/usbd_lld_core.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Source/usbd_lld_int.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Source/usbd_lld_int.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Source/usbd_lld_int.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbd_library/usbd/Source/usbd_lld_int.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/audio/Include/audio_core.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/audio/Include/audio_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/audio/Include/audio_core.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/audio/Include/audio_core.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/audio/Include/audio_out_itf.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/audio/Include/audio_out_itf.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/audio/Include/audio_out_itf.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/audio/Include/audio_out_itf.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/audio/Source/audio_core.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/audio/Source/audio_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/audio/Source/audio_core.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/audio/Source/audio_core.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/audio/Source/audio_out_itf.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/audio/Source/audio_out_itf.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/audio/Source/audio_out_itf.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/audio/Source/audio_out_itf.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/cdc/Include/cdc_acm_core.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/cdc/Include/cdc_acm_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/cdc/Include/cdc_acm_core.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/cdc/Include/cdc_acm_core.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/cdc/Source/cdc_acm_core.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/cdc/Source/cdc_acm_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/cdc/Source/cdc_acm_core.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/cdc/Source/cdc_acm_core.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/dfu/Include/dfu_core.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/dfu/Include/dfu_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/dfu/Include/dfu_core.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/dfu/Include/dfu_core.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/dfu/Include/dfu_mal.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/dfu/Include/dfu_mal.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/dfu/Include/dfu_mal.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/dfu/Include/dfu_mal.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/dfu/Source/dfu_core.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/dfu/Source/dfu_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/dfu/Source/dfu_core.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/dfu/Source/dfu_core.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/dfu/Source/dfu_mal.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/dfu/Source/dfu_mal.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/dfu/Source/dfu_mal.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/dfu/Source/dfu_mal.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/hid/Include/custom_hid_core.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/hid/Include/custom_hid_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/hid/Include/custom_hid_core.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/hid/Include/custom_hid_core.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/hid/Include/standard_hid_core.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/hid/Include/standard_hid_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/hid/Include/standard_hid_core.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/hid/Include/standard_hid_core.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/hid/Source/custom_hid_core.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/hid/Source/custom_hid_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/hid/Source/custom_hid_core.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/hid/Source/custom_hid_core.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/hid/Source/standard_hid_core.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/hid/Source/standard_hid_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/hid/Source/standard_hid_core.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/hid/Source/standard_hid_core.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/iap/Include/usb_iap_core.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/iap/Include/usb_iap_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/iap/Include/usb_iap_core.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/iap/Include/usb_iap_core.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/iap/Source/usb_iap_core.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/iap/Source/usb_iap_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/iap/Source/usb_iap_core.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/iap/Source/usb_iap_core.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_bbb.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_bbb.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_bbb.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_bbb.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_core.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_core.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_core.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_data.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_data.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_data.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_data.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_mem.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_mem.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_mem.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_mem.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_scsi.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_scsi.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_scsi.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Include/usbd_msc_scsi.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Source/usbd_msc_bbb.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Source/usbd_msc_bbb.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Source/usbd_msc_bbb.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Source/usbd_msc_bbb.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Source/usbd_msc_core.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Source/usbd_msc_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Source/usbd_msc_core.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Source/usbd_msc_core.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Source/usbd_msc_data.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Source/usbd_msc_data.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Source/usbd_msc_data.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Source/usbd_msc_data.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Source/usbd_msc_scsi.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Source/usbd_msc_scsi.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Source/usbd_msc_scsi.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/msc/Source/usbd_msc_scsi.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/printer/Include/printer_core.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/printer/Include/printer_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/printer/Include/printer_core.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/printer/Include/printer_core.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/printer/Source/printer_core.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/printer/Source/printer_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/printer/Source/printer_core.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/class/printer/Source/printer_core.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Include/usbd_core.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Include/usbd_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Include/usbd_core.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Include/usbd_core.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Include/usbd_enum.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Include/usbd_enum.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Include/usbd_enum.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Include/usbd_enum.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Include/usbd_transc.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Include/usbd_transc.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Include/usbd_transc.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Include/usbd_transc.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Source/usbd_core.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Source/usbd_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Source/usbd_core.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Source/usbd_core.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Source/usbd_enum.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Source/usbd_enum.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Source/usbd_enum.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Source/usbd_enum.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Source/usbd_transc.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Source/usbd_transc.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Source/usbd_transc.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/device/core/Source/usbd_transc.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_core.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_core.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_core.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_dev.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_dev.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_dev.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_dev.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_host.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_host.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_host.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_host.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_hw.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_hw.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_hw.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_hw.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_regs.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_regs.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_regs.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usb_regs.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usbd_int.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usbd_int.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usbd_int.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usbd_int.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usbh_int.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usbh_int.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usbh_int.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Include/drv_usbh_int.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usb_core.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usb_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usb_core.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usb_core.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usb_dev.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usb_dev.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usb_dev.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usb_dev.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usb_host.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usb_host.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usb_host.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usb_host.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usbd_int.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usbd_int.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usbd_int.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usbd_int.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usbh_int.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usbh_int.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usbh_int.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/driver/Source/drv_usbh_int.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_core.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_core.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_core.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_keybd.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_keybd.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_keybd.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_keybd.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_mouse.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_mouse.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_mouse.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_mouse.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_parser.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_parser.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_parser.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_parser.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_usage.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_usage.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_usage.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Include/usbh_hid_usage.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Source/usbh_hid_core.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Source/usbh_hid_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Source/usbh_hid_core.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Source/usbh_hid_core.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Source/usbh_hid_keybd.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Source/usbh_hid_keybd.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Source/usbh_hid_keybd.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Source/usbh_hid_keybd.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Source/usbh_hid_mouse.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Source/usbh_hid_mouse.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Source/usbh_hid_mouse.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Source/usbh_hid_mouse.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Source/usbh_hid_parser.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Source/usbh_hid_parser.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Source/usbh_hid_parser.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/hid/Source/usbh_hid_parser.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Include/usbh_msc_bbb.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Include/usbh_msc_bbb.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Include/usbh_msc_bbb.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Include/usbh_msc_bbb.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Include/usbh_msc_core.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Include/usbh_msc_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Include/usbh_msc_core.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Include/usbh_msc_core.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Include/usbh_msc_scsi.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Include/usbh_msc_scsi.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Include/usbh_msc_scsi.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Include/usbh_msc_scsi.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Source/usbh_msc_bbb.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Source/usbh_msc_bbb.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Source/usbh_msc_bbb.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Source/usbh_msc_bbb.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Source/usbh_msc_core.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Source/usbh_msc_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Source/usbh_msc_core.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Source/usbh_msc_core.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Source/usbh_msc_fatfs.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Source/usbh_msc_fatfs.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Source/usbh_msc_fatfs.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Source/usbh_msc_fatfs.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Source/usbh_msc_scsi.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Source/usbh_msc_scsi.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Source/usbh_msc_scsi.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/class/msc/Source/usbh_msc_scsi.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Include/usbh_core.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Include/usbh_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Include/usbh_core.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Include/usbh_core.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Include/usbh_enum.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Include/usbh_enum.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Include/usbh_enum.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Include/usbh_enum.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Include/usbh_pipe.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Include/usbh_pipe.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Include/usbh_pipe.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Include/usbh_pipe.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Include/usbh_transc.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Include/usbh_transc.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Include/usbh_transc.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Include/usbh_transc.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Source/usbh_core.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Source/usbh_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Source/usbh_core.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Source/usbh_core.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Source/usbh_enum.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Source/usbh_enum.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Source/usbh_enum.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Source/usbh_enum.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Source/usbh_pipe.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Source/usbh_pipe.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Source/usbh_pipe.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Source/usbh_pipe.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Source/usbh_transc.c b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Source/usbh_transc.c similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Source/usbh_transc.c rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/host/core/Source/usbh_transc.c diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/cdc/usb_cdc.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/cdc/usb_cdc.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/cdc/usb_cdc.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/cdc/usb_cdc.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/hid/usb_hid.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/hid/usb_hid.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/hid/usb_hid.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/hid/usb_hid.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/msc/msc_bbb.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/msc/msc_bbb.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/msc/msc_bbb.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/msc/msc_bbb.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/msc/msc_scsi.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/msc/msc_scsi.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/msc/msc_scsi.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/msc/msc_scsi.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/msc/usb_msc.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/msc/usb_msc.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/msc/usb_msc.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/class/msc/usb_msc.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/common/usb_ch9_std.h b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/common/usb_ch9_std.h similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/common/usb_ch9_std.h rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/GD32F10x_usbfs_library/ustd/common/usb_ch9_std.h diff --git a/bsp/gd32/libraries/GD32F10x_Firmware_Library/SConscript b/bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/SConscript similarity index 100% rename from bsp/gd32/libraries/GD32F10x_Firmware_Library/SConscript rename to bsp/gd32/arm/libraries/GD32F10x_Firmware_Library/SConscript diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Include/gd32f20x.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Include/gd32f20x.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Include/gd32f20x.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Include/gd32f20x.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Include/system_gd32f20x.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Include/system_gd32f20x.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Include/system_gd32f20x.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Include/system_gd32f20x.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/ARM/startup_gd32f20x_cl.s b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/ARM/startup_gd32f20x_cl.s similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/ARM/startup_gd32f20x_cl.s rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/ARM/startup_gd32f20x_cl.s diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/GCC/startup_gd32f20x_cl.s b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/GCC/startup_gd32f20x_cl.s similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/GCC/startup_gd32f20x_cl.s rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/GCC/startup_gd32f20x_cl.s diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/IAR/startup_gd32f20x_cl.s b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/IAR/startup_gd32f20x_cl.s similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/IAR/startup_gd32f20x_cl.s rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/IAR/startup_gd32f20x_cl.s diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/system_gd32f20x.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/system_gd32f20x.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/system_gd32f20x.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/CMSIS/GD/GD32F20x/Source/system_gd32f20x.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/CMSIS/cmsis_armcc.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/CMSIS/cmsis_armcc.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/CMSIS/cmsis_armcc.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/CMSIS/cmsis_armcc.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/CMSIS/core_cm3.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/CMSIS/core_cm3.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/CMSIS/core_cm3.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/CMSIS/core_cm3.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/CMSIS/core_cmFunc.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/CMSIS/core_cmFunc.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/CMSIS/core_cmFunc.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/CMSIS/core_cmFunc.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/CMSIS/core_cmInstr.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/CMSIS/core_cmInstr.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/CMSIS/core_cmInstr.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/CMSIS/core_cmInstr.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_adc.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_adc.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_adc.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_adc.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_bkp.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_bkp.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_bkp.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_bkp.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_can.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_can.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_can.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_can.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_cau.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_cau.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_cau.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_cau.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_crc.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_crc.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_crc.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_crc.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_dac.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_dac.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_dac.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_dac.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_dbg.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_dbg.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_dbg.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_dbg.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_dci.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_dci.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_dci.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_dci.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_dma.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_dma.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_dma.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_dma.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_enet.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_enet.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_enet.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_enet.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_exmc.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_exmc.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_exmc.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_exmc.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_exti.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_exti.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_exti.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_exti.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_fmc.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_fmc.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_fmc.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_fmc.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_fwdgt.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_fwdgt.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_fwdgt.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_fwdgt.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_gpio.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_gpio.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_gpio.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_gpio.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_hau.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_hau.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_hau.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_hau.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_i2c.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_i2c.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_i2c.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_i2c.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_misc.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_misc.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_misc.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_misc.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_pmu.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_pmu.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_pmu.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_pmu.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_rcu.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_rcu.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_rcu.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_rcu.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_rtc.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_rtc.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_rtc.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_rtc.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_sdio.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_sdio.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_sdio.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_sdio.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_spi.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_spi.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_spi.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_spi.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_timer.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_timer.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_timer.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_timer.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_tli.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_tli.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_tli.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_tli.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_trng.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_trng.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_trng.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_trng.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_usart.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_usart.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_usart.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_usart.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_wwdgt.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_wwdgt.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_wwdgt.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Include/gd32f20x_wwdgt.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_adc.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_adc.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_adc.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_adc.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_bkp.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_bkp.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_bkp.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_bkp.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_can.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_can.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_can.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_can.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_cau.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_cau.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_cau.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_cau.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_cau_aes.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_cau_aes.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_cau_aes.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_cau_aes.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_cau_des.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_cau_des.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_cau_des.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_cau_des.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_cau_tdes.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_cau_tdes.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_cau_tdes.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_cau_tdes.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_crc.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_crc.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_crc.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_crc.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_dac.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_dac.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_dac.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_dac.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_dbg.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_dbg.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_dbg.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_dbg.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_dci.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_dci.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_dci.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_dci.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_dma.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_dma.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_dma.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_dma.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_enet.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_enet.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_enet.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_enet.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_exmc.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_exmc.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_exmc.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_exmc.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_exti.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_exti.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_exti.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_exti.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_fmc.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_fmc.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_fmc.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_fmc.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_fwdgt.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_fwdgt.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_fwdgt.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_fwdgt.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_gpio.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_gpio.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_gpio.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_gpio.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_hau.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_hau.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_hau.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_hau.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_hau_sha_md5.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_hau_sha_md5.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_hau_sha_md5.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_hau_sha_md5.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_i2c.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_i2c.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_i2c.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_i2c.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_misc.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_misc.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_misc.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_misc.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_pmu.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_pmu.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_pmu.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_pmu.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_rcu.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_rcu.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_rcu.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_rcu.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_rtc.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_rtc.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_rtc.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_rtc.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_sdio.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_sdio.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_sdio.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_sdio.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_spi.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_spi.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_spi.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_spi.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_timer.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_timer.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_timer.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_timer.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_tli.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_tli.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_tli.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_tli.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_trng.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_trng.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_trng.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_trng.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_usart.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_usart.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_usart.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_usart.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_wwdgt.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_wwdgt.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_wwdgt.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_standard_peripheral/Source/gd32f20x_wwdgt.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/audio/Include/audio_core.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/audio/Include/audio_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/audio/Include/audio_core.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/audio/Include/audio_core.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/audio/Include/audio_out_itf.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/audio/Include/audio_out_itf.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/audio/Include/audio_out_itf.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/audio/Include/audio_out_itf.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/audio/Source/audio_core.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/audio/Source/audio_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/audio/Source/audio_core.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/audio/Source/audio_core.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/audio/Source/audio_out_itf.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/audio/Source/audio_out_itf.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/audio/Source/audio_out_itf.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/audio/Source/audio_out_itf.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/cdc/Include/cdc_acm_core.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/cdc/Include/cdc_acm_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/cdc/Include/cdc_acm_core.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/cdc/Include/cdc_acm_core.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/cdc/Source/cdc_acm_core.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/cdc/Source/cdc_acm_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/cdc/Source/cdc_acm_core.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/cdc/Source/cdc_acm_core.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/dfu/Include/dfu_core.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/dfu/Include/dfu_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/dfu/Include/dfu_core.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/dfu/Include/dfu_core.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/dfu/Include/dfu_mal.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/dfu/Include/dfu_mal.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/dfu/Include/dfu_mal.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/dfu/Include/dfu_mal.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/dfu/Source/dfu_core.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/dfu/Source/dfu_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/dfu/Source/dfu_core.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/dfu/Source/dfu_core.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/dfu/Source/dfu_mal.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/dfu/Source/dfu_mal.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/dfu/Source/dfu_mal.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/dfu/Source/dfu_mal.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/hid/Include/custom_hid_core.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/hid/Include/custom_hid_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/hid/Include/custom_hid_core.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/hid/Include/custom_hid_core.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/hid/Include/standard_hid_core.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/hid/Include/standard_hid_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/hid/Include/standard_hid_core.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/hid/Include/standard_hid_core.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/hid/Source/custom_hid_core.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/hid/Source/custom_hid_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/hid/Source/custom_hid_core.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/hid/Source/custom_hid_core.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/hid/Source/standard_hid_core.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/hid/Source/standard_hid_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/hid/Source/standard_hid_core.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/hid/Source/standard_hid_core.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/iap/Include/usb_iap_core.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/iap/Include/usb_iap_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/iap/Include/usb_iap_core.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/iap/Include/usb_iap_core.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/iap/Source/usb_iap_core.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/iap/Source/usb_iap_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/iap/Source/usb_iap_core.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/iap/Source/usb_iap_core.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_bbb.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_bbb.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_bbb.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_bbb.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_core.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_core.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_core.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_data.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_data.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_data.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_data.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_mem.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_mem.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_mem.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_mem.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_scsi.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_scsi.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_scsi.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Include/usbd_msc_scsi.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Source/usbd_msc_bbb.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Source/usbd_msc_bbb.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Source/usbd_msc_bbb.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Source/usbd_msc_bbb.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Source/usbd_msc_core.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Source/usbd_msc_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Source/usbd_msc_core.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Source/usbd_msc_core.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Source/usbd_msc_data.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Source/usbd_msc_data.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Source/usbd_msc_data.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Source/usbd_msc_data.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Source/usbd_msc_scsi.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Source/usbd_msc_scsi.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Source/usbd_msc_scsi.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/msc/Source/usbd_msc_scsi.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/printer/Include/printer_core.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/printer/Include/printer_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/printer/Include/printer_core.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/printer/Include/printer_core.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/printer/Source/printer_core.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/printer/Source/printer_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/printer/Source/printer_core.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/class/printer/Source/printer_core.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Include/usbd_core.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Include/usbd_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Include/usbd_core.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Include/usbd_core.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Include/usbd_enum.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Include/usbd_enum.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Include/usbd_enum.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Include/usbd_enum.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Include/usbd_transc.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Include/usbd_transc.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Include/usbd_transc.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Include/usbd_transc.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Source/usbd_core.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Source/usbd_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Source/usbd_core.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Source/usbd_core.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Source/usbd_enum.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Source/usbd_enum.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Source/usbd_enum.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Source/usbd_enum.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Source/usbd_transc.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Source/usbd_transc.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Source/usbd_transc.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/device/core/Source/usbd_transc.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_core.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_core.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_core.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_dev.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_dev.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_dev.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_dev.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_host.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_host.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_host.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_host.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_hw.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_hw.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_hw.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_hw.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_regs.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_regs.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_regs.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usb_regs.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usbd_int.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usbd_int.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usbd_int.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usbd_int.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usbh_int.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usbh_int.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usbh_int.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Include/drv_usbh_int.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usb_core.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usb_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usb_core.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usb_core.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usb_dev.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usb_dev.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usb_dev.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usb_dev.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usb_host.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usb_host.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usb_host.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usb_host.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usbd_int.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usbd_int.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usbd_int.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usbd_int.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usbh_int.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usbh_int.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usbh_int.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/driver/Source/drv_usbh_int.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_core.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_core.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_core.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_keybd.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_keybd.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_keybd.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_keybd.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_mouse.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_mouse.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_mouse.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_mouse.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_parser.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_parser.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_parser.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_parser.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_usage.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_usage.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_usage.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Include/usbh_hid_usage.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Source/usbh_hid_core.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Source/usbh_hid_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Source/usbh_hid_core.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Source/usbh_hid_core.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Source/usbh_hid_keybd.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Source/usbh_hid_keybd.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Source/usbh_hid_keybd.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Source/usbh_hid_keybd.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Source/usbh_hid_mouse.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Source/usbh_hid_mouse.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Source/usbh_hid_mouse.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Source/usbh_hid_mouse.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Source/usbh_hid_parser.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Source/usbh_hid_parser.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Source/usbh_hid_parser.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/hid/Source/usbh_hid_parser.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Include/usbh_msc_bbb.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Include/usbh_msc_bbb.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Include/usbh_msc_bbb.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Include/usbh_msc_bbb.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Include/usbh_msc_core.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Include/usbh_msc_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Include/usbh_msc_core.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Include/usbh_msc_core.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Include/usbh_msc_scsi.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Include/usbh_msc_scsi.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Include/usbh_msc_scsi.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Include/usbh_msc_scsi.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Source/usbh_msc_bbb.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Source/usbh_msc_bbb.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Source/usbh_msc_bbb.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Source/usbh_msc_bbb.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Source/usbh_msc_core.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Source/usbh_msc_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Source/usbh_msc_core.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Source/usbh_msc_core.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Source/usbh_msc_fatfs.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Source/usbh_msc_fatfs.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Source/usbh_msc_fatfs.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Source/usbh_msc_fatfs.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Source/usbh_msc_scsi.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Source/usbh_msc_scsi.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Source/usbh_msc_scsi.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/class/msc/Source/usbh_msc_scsi.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Include/usbh_core.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Include/usbh_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Include/usbh_core.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Include/usbh_core.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Include/usbh_enum.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Include/usbh_enum.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Include/usbh_enum.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Include/usbh_enum.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Include/usbh_pipe.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Include/usbh_pipe.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Include/usbh_pipe.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Include/usbh_pipe.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Include/usbh_transc.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Include/usbh_transc.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Include/usbh_transc.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Include/usbh_transc.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Source/usbh_core.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Source/usbh_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Source/usbh_core.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Source/usbh_core.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Source/usbh_enum.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Source/usbh_enum.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Source/usbh_enum.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Source/usbh_enum.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Source/usbh_pipe.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Source/usbh_pipe.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Source/usbh_pipe.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Source/usbh_pipe.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Source/usbh_transc.c b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Source/usbh_transc.c similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Source/usbh_transc.c rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/host/core/Source/usbh_transc.c diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/cdc/usb_cdc.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/cdc/usb_cdc.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/cdc/usb_cdc.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/cdc/usb_cdc.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/hid/usb_hid.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/hid/usb_hid.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/hid/usb_hid.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/hid/usb_hid.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/msc/msc_bbb.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/msc/msc_bbb.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/msc/msc_bbb.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/msc/msc_bbb.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/msc/msc_scsi.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/msc/msc_scsi.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/msc/msc_scsi.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/msc/msc_scsi.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/msc/usb_msc.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/msc/usb_msc.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/msc/usb_msc.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/class/msc/usb_msc.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/common/usb_ch9_std.h b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/common/usb_ch9_std.h similarity index 100% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/common/usb_ch9_std.h rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/GD32F20x_usbfs_library/ustd/common/usb_ch9_std.h diff --git a/bsp/gd32/libraries/GD32F20x_Firmware_Library/SConscript b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/SConscript similarity index 96% rename from bsp/gd32/libraries/GD32F20x_Firmware_Library/SConscript rename to bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/SConscript index e6b05ca3c9..90cca69a13 100644 --- a/bsp/gd32/libraries/GD32F20x_Firmware_Library/SConscript +++ b/bsp/gd32/arm/libraries/GD32F20x_Firmware_Library/SConscript @@ -37,7 +37,6 @@ if GetDepend(['RT_USING_DAC']): if GetDepend(['RT_USING_RTC']): src += ['GD32F20x_standard_peripheral/Source/gd32f20x_rtc.c'] - src += ['GD32F20x_standard_peripheral/Source/gd32f20x_pmu.c'] if GetDepend(['RT_USING_WDT']): src += ['GD32F20x_standard_peripheral/Source/gd32f20x_wwdgt.c'] diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Include/gd32f30x.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Include/gd32f30x.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Include/gd32f30x.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Include/gd32f30x.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Include/system_gd32f30x.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Include/system_gd32f30x.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Include/system_gd32f30x.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Include/system_gd32f30x.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/ARM/startup_gd32f30x_cl.s b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/ARM/startup_gd32f30x_cl.s similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/ARM/startup_gd32f30x_cl.s rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/ARM/startup_gd32f30x_cl.s diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/ARM/startup_gd32f30x_hd.s b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/ARM/startup_gd32f30x_hd.s similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/ARM/startup_gd32f30x_hd.s rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/ARM/startup_gd32f30x_hd.s diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/ARM/startup_gd32f30x_xd.s b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/ARM/startup_gd32f30x_xd.s similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/ARM/startup_gd32f30x_xd.s rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/ARM/startup_gd32f30x_xd.s diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/GCC/startup_gd32f30x_cl.s b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/GCC/startup_gd32f30x_cl.s similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/GCC/startup_gd32f30x_cl.s rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/GCC/startup_gd32f30x_cl.s diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/GCC/startup_gd32f30x_hd.s b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/GCC/startup_gd32f30x_hd.s similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/GCC/startup_gd32f30x_hd.s rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/GCC/startup_gd32f30x_hd.s diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/GCC/startup_gd32f30x_xd.s b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/GCC/startup_gd32f30x_xd.s similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/GCC/startup_gd32f30x_xd.s rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/GCC/startup_gd32f30x_xd.s diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/IAR/startup_gd32f30x_cl.s b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/IAR/startup_gd32f30x_cl.s similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/IAR/startup_gd32f30x_cl.s rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/IAR/startup_gd32f30x_cl.s diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/IAR/startup_gd32f30x_hd.s b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/IAR/startup_gd32f30x_hd.s similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/IAR/startup_gd32f30x_hd.s rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/IAR/startup_gd32f30x_hd.s diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/IAR/startup_gd32f30x_xd.s b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/IAR/startup_gd32f30x_xd.s similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/IAR/startup_gd32f30x_xd.s rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/IAR/startup_gd32f30x_xd.s diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/system_gd32f30x.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/system_gd32f30x.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/system_gd32f30x.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/GD/GD32F30x/Source/system_gd32f30x.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/core_cm4.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/core_cm4.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/core_cm4.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/core_cm4.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/core_cm4_simd.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/core_cm4_simd.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/core_cm4_simd.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/core_cm4_simd.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/core_cmFunc.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/core_cmFunc.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/core_cmFunc.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/core_cmFunc.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/core_cmInstr.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/core_cmInstr.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/CMSIS/core_cmInstr.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/CMSIS/core_cmInstr.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_adc.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_adc.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_adc.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_adc.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_bkp.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_bkp.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_bkp.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_bkp.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_can.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_can.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_can.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_can.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_crc.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_crc.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_crc.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_crc.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_ctc.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_ctc.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_ctc.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_ctc.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_dac.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_dac.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_dac.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_dac.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_dbg.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_dbg.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_dbg.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_dbg.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_dma.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_dma.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_dma.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_dma.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_enet.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_enet.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_enet.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_enet.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_exmc.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_exmc.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_exmc.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_exmc.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_exti.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_exti.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_exti.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_exti.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_fmc.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_fmc.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_fmc.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_fmc.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_fwdgt.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_fwdgt.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_fwdgt.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_fwdgt.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_gpio.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_gpio.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_gpio.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_gpio.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_i2c.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_i2c.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_i2c.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_i2c.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_misc.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_misc.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_misc.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_misc.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_pmu.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_pmu.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_pmu.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_pmu.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_rcu.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_rcu.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_rcu.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_rcu.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_rtc.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_rtc.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_rtc.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_rtc.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_sdio.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_sdio.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_sdio.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_sdio.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_spi.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_spi.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_spi.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_spi.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_timer.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_timer.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_timer.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_timer.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_usart.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_usart.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_usart.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_usart.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_wwdgt.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_wwdgt.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_wwdgt.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Include/gd32f30x_wwdgt.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_adc.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_adc.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_adc.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_adc.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_bkp.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_bkp.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_bkp.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_bkp.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_can.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_can.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_can.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_can.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_crc.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_crc.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_crc.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_crc.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_ctc.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_ctc.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_ctc.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_ctc.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_dac.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_dac.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_dac.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_dac.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_dbg.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_dbg.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_dbg.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_dbg.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_dma.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_dma.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_dma.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_dma.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_enet.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_enet.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_enet.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_enet.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_exmc.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_exmc.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_exmc.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_exmc.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_exti.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_exti.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_exti.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_exti.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_fmc.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_fmc.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_fmc.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_fmc.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_fwdgt.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_fwdgt.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_fwdgt.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_fwdgt.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_gpio.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_gpio.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_gpio.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_gpio.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_i2c.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_i2c.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_i2c.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_i2c.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_misc.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_misc.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_misc.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_misc.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_pmu.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_pmu.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_pmu.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_pmu.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_rcu.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_rcu.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_rcu.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_rcu.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_rtc.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_rtc.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_rtc.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_rtc.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_sdio.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_sdio.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_sdio.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_sdio.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_spi.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_spi.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_spi.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_spi.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_timer.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_timer.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_timer.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_timer.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_usart.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_usart.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_usart.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_usart.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_wwdgt.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_wwdgt.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_wwdgt.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_standard_peripheral/Source/gd32f30x_wwdgt.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/audio/Include/audio_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/audio/Include/audio_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/audio/Include/audio_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/audio/Include/audio_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/audio/Include/audio_out_itf.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/audio/Include/audio_out_itf.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/audio/Include/audio_out_itf.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/audio/Include/audio_out_itf.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/audio/Source/audio_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/audio/Source/audio_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/audio/Source/audio_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/audio/Source/audio_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/audio/Source/audio_out_itf.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/audio/Source/audio_out_itf.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/audio/Source/audio_out_itf.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/audio/Source/audio_out_itf.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/cdc/Include/cdc_acm_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/cdc/Include/cdc_acm_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/cdc/Include/cdc_acm_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/cdc/Include/cdc_acm_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/cdc/Source/cdc_acm_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/cdc/Source/cdc_acm_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/cdc/Source/cdc_acm_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/cdc/Source/cdc_acm_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/dfu/Include/dfu_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/dfu/Include/dfu_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/dfu/Include/dfu_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/dfu/Include/dfu_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/dfu/Source/dfu_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/dfu/Source/dfu_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/dfu/Source/dfu_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/dfu/Source/dfu_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Include/custom_hid_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Include/custom_hid_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Include/custom_hid_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Include/custom_hid_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Include/standard_hid_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Include/standard_hid_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Include/standard_hid_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Include/standard_hid_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Include/std_hid_mouse_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Include/std_hid_mouse_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Include/std_hid_mouse_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Include/std_hid_mouse_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Include/usb_hid.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Include/usb_hid.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Include/usb_hid.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Include/usb_hid.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Source/custom_hid_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Source/custom_hid_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Source/custom_hid_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Source/custom_hid_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Source/standard_hid_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Source/standard_hid_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Source/standard_hid_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Source/standard_hid_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Source/std_hid_mouse_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Source/std_hid_mouse_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Source/std_hid_mouse_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/hid/Source/std_hid_mouse_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/iap/Include/usb_iap_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/iap/Include/usb_iap_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/iap/Include/usb_iap_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/iap/Include/usb_iap_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/iap/Source/usb_iap_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/iap/Source/usb_iap_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/iap/Source/usb_iap_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/iap/Source/usb_iap_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_bbb.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_bbb.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_bbb.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_bbb.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_data.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_data.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_data.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_data.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_mem.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_mem.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_mem.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_mem.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_scsi.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_scsi.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_scsi.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Include/usbd_msc_scsi.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Source/usbd_msc_bbb.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Source/usbd_msc_bbb.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Source/usbd_msc_bbb.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Source/usbd_msc_bbb.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Source/usbd_msc_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Source/usbd_msc_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Source/usbd_msc_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Source/usbd_msc_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Source/usbd_msc_data.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Source/usbd_msc_data.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Source/usbd_msc_data.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Source/usbd_msc_data.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Source/usbd_msc_scsi.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Source/usbd_msc_scsi.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Source/usbd_msc_scsi.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/msc/Source/usbd_msc_scsi.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/printer/Include/printer_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/printer/Include/printer_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/printer/Include/printer_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/printer/Include/printer_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/printer/Source/printer_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/printer/Source/printer_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/printer/Source/printer_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/class/device/printer/Source/printer_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usb_ch9_std.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usb_ch9_std.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usb_ch9_std.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usb_ch9_std.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usbd_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usbd_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usbd_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usbd_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usbd_enum.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usbd_enum.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usbd_enum.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usbd_enum.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usbd_pwr.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usbd_pwr.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usbd_pwr.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usbd_pwr.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usbd_transc.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usbd_transc.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usbd_transc.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Include/usbd_transc.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Source/usbd_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Source/usbd_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Source/usbd_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Source/usbd_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Source/usbd_enum.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Source/usbd_enum.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Source/usbd_enum.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Source/usbd_enum.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Source/usbd_pwr.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Source/usbd_pwr.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Source/usbd_pwr.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Source/usbd_pwr.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Source/usbd_transc.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Source/usbd_transc.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Source/usbd_transc.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/device/Source/usbd_transc.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Include/usbd_lld_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Include/usbd_lld_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Include/usbd_lld_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Include/usbd_lld_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Include/usbd_lld_int.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Include/usbd_lld_int.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Include/usbd_lld_int.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Include/usbd_lld_int.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Include/usbd_lld_regs.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Include/usbd_lld_regs.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Include/usbd_lld_regs.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Include/usbd_lld_regs.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Source/usbd_lld_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Source/usbd_lld_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Source/usbd_lld_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Source/usbd_lld_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Source/usbd_lld_int.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Source/usbd_lld_int.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Source/usbd_lld_int.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbd_library/usbd/Source/usbd_lld_int.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/audio/Include/audio_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/audio/Include/audio_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/audio/Include/audio_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/audio/Include/audio_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/audio/Include/audio_out_itf.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/audio/Include/audio_out_itf.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/audio/Include/audio_out_itf.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/audio/Include/audio_out_itf.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/audio/Source/audio_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/audio/Source/audio_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/audio/Source/audio_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/audio/Source/audio_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/audio/Source/audio_out_itf.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/audio/Source/audio_out_itf.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/audio/Source/audio_out_itf.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/audio/Source/audio_out_itf.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/cdc/Include/cdc_acm_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/cdc/Include/cdc_acm_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/cdc/Include/cdc_acm_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/cdc/Include/cdc_acm_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/cdc/Source/cdc_acm_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/cdc/Source/cdc_acm_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/cdc/Source/cdc_acm_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/cdc/Source/cdc_acm_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/dfu/Include/dfu_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/dfu/Include/dfu_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/dfu/Include/dfu_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/dfu/Include/dfu_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/dfu/Include/dfu_mal.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/dfu/Include/dfu_mal.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/dfu/Include/dfu_mal.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/dfu/Include/dfu_mal.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/dfu/Source/dfu_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/dfu/Source/dfu_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/dfu/Source/dfu_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/dfu/Source/dfu_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/dfu/Source/dfu_mal.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/dfu/Source/dfu_mal.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/dfu/Source/dfu_mal.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/dfu/Source/dfu_mal.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/hid/Include/custom_hid_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/hid/Include/custom_hid_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/hid/Include/custom_hid_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/hid/Include/custom_hid_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/hid/Include/standard_hid_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/hid/Include/standard_hid_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/hid/Include/standard_hid_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/hid/Include/standard_hid_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/hid/Source/custom_hid_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/hid/Source/custom_hid_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/hid/Source/custom_hid_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/hid/Source/custom_hid_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/hid/Source/standard_hid_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/hid/Source/standard_hid_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/hid/Source/standard_hid_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/hid/Source/standard_hid_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/iap/Include/usb_iap_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/iap/Include/usb_iap_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/iap/Include/usb_iap_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/iap/Include/usb_iap_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/iap/Source/usb_iap_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/iap/Source/usb_iap_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/iap/Source/usb_iap_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/iap/Source/usb_iap_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_bbb.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_bbb.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_bbb.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_bbb.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_data.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_data.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_data.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_data.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_mem.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_mem.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_mem.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_mem.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_scsi.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_scsi.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_scsi.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Include/usbd_msc_scsi.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Source/usbd_msc_bbb.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Source/usbd_msc_bbb.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Source/usbd_msc_bbb.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Source/usbd_msc_bbb.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Source/usbd_msc_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Source/usbd_msc_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Source/usbd_msc_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Source/usbd_msc_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Source/usbd_msc_data.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Source/usbd_msc_data.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Source/usbd_msc_data.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Source/usbd_msc_data.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Source/usbd_msc_scsi.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Source/usbd_msc_scsi.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Source/usbd_msc_scsi.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/msc/Source/usbd_msc_scsi.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/printer/Include/printer_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/printer/Include/printer_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/printer/Include/printer_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/printer/Include/printer_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/printer/Source/printer_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/printer/Source/printer_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/printer/Source/printer_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/class/printer/Source/printer_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Include/usbd_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Include/usbd_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Include/usbd_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Include/usbd_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Include/usbd_enum.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Include/usbd_enum.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Include/usbd_enum.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Include/usbd_enum.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Include/usbd_transc.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Include/usbd_transc.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Include/usbd_transc.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Include/usbd_transc.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Source/usbd_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Source/usbd_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Source/usbd_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Source/usbd_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Source/usbd_enum.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Source/usbd_enum.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Source/usbd_enum.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Source/usbd_enum.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Source/usbd_transc.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Source/usbd_transc.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Source/usbd_transc.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/device/core/Source/usbd_transc.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_dev.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_dev.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_dev.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_dev.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_host.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_host.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_host.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_host.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_hw.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_hw.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_hw.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_hw.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_regs.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_regs.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_regs.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usb_regs.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usbd_int.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usbd_int.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usbd_int.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usbd_int.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usbh_int.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usbh_int.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usbh_int.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Include/drv_usbh_int.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usb_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usb_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usb_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usb_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usb_dev.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usb_dev.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usb_dev.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usb_dev.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usb_host.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usb_host.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usb_host.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usb_host.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usbd_int.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usbd_int.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usbd_int.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usbd_int.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usbh_int.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usbh_int.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usbh_int.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/driver/Source/drv_usbh_int.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_keybd.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_keybd.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_keybd.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_keybd.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_mouse.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_mouse.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_mouse.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_mouse.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_parser.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_parser.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_parser.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_parser.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_usage.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_usage.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_usage.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Include/usbh_hid_usage.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Source/usbh_hid_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Source/usbh_hid_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Source/usbh_hid_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Source/usbh_hid_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Source/usbh_hid_keybd.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Source/usbh_hid_keybd.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Source/usbh_hid_keybd.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Source/usbh_hid_keybd.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Source/usbh_hid_mouse.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Source/usbh_hid_mouse.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Source/usbh_hid_mouse.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Source/usbh_hid_mouse.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Source/usbh_hid_parser.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Source/usbh_hid_parser.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Source/usbh_hid_parser.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/hid/Source/usbh_hid_parser.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Include/usbh_msc_bbb.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Include/usbh_msc_bbb.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Include/usbh_msc_bbb.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Include/usbh_msc_bbb.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Include/usbh_msc_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Include/usbh_msc_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Include/usbh_msc_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Include/usbh_msc_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Include/usbh_msc_scsi.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Include/usbh_msc_scsi.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Include/usbh_msc_scsi.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Include/usbh_msc_scsi.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Source/usbh_msc_bbb.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Source/usbh_msc_bbb.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Source/usbh_msc_bbb.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Source/usbh_msc_bbb.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Source/usbh_msc_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Source/usbh_msc_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Source/usbh_msc_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Source/usbh_msc_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Source/usbh_msc_fatfs.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Source/usbh_msc_fatfs.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Source/usbh_msc_fatfs.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Source/usbh_msc_fatfs.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Source/usbh_msc_scsi.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Source/usbh_msc_scsi.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Source/usbh_msc_scsi.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/class/msc/Source/usbh_msc_scsi.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Include/usbh_core.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Include/usbh_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Include/usbh_core.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Include/usbh_core.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Include/usbh_enum.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Include/usbh_enum.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Include/usbh_enum.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Include/usbh_enum.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Include/usbh_pipe.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Include/usbh_pipe.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Include/usbh_pipe.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Include/usbh_pipe.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Include/usbh_transc.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Include/usbh_transc.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Include/usbh_transc.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Include/usbh_transc.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Source/usbh_core.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Source/usbh_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Source/usbh_core.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Source/usbh_core.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Source/usbh_enum.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Source/usbh_enum.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Source/usbh_enum.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Source/usbh_enum.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Source/usbh_pipe.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Source/usbh_pipe.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Source/usbh_pipe.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Source/usbh_pipe.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Source/usbh_transc.c b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Source/usbh_transc.c similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Source/usbh_transc.c rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/host/core/Source/usbh_transc.c diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/cdc/usb_cdc.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/cdc/usb_cdc.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/cdc/usb_cdc.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/cdc/usb_cdc.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/hid/usb_hid.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/hid/usb_hid.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/hid/usb_hid.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/hid/usb_hid.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/msc/msc_bbb.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/msc/msc_bbb.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/msc/msc_bbb.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/msc/msc_bbb.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/msc/msc_scsi.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/msc/msc_scsi.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/msc/msc_scsi.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/msc/msc_scsi.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/msc/usb_msc.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/msc/usb_msc.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/msc/usb_msc.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/class/msc/usb_msc.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/common/usb_ch9_std.h b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/common/usb_ch9_std.h similarity index 100% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/common/usb_ch9_std.h rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/GD32F30x_usbfs_library/ustd/common/usb_ch9_std.h diff --git a/bsp/gd32/libraries/GD32F30x_Firmware_Library/SConscript b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/SConscript similarity index 96% rename from bsp/gd32/libraries/GD32F30x_Firmware_Library/SConscript rename to bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/SConscript index 5341d8bc52..09f70ea989 100644 --- a/bsp/gd32/libraries/GD32F30x_Firmware_Library/SConscript +++ b/bsp/gd32/arm/libraries/GD32F30x_Firmware_Library/SConscript @@ -37,7 +37,6 @@ if GetDepend(['RT_USING_DAC']): if GetDepend(['RT_USING_RTC']): src += ['GD32F30x_standard_peripheral/Source/gd32f30x_rtc.c'] - src += ['GD32F30x_standard_peripheral/Source/gd32f30x_pmu.c'] if GetDepend(['RT_USING_WDT']): src += ['GD32F30x_standard_peripheral/Source/gd32f30x_wwdgt.c'] diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Include/gd32f4xx.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Include/gd32f4xx.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Include/gd32f4xx.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Include/gd32f4xx.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Include/system_gd32f4xx.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Include/system_gd32f4xx.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Include/system_gd32f4xx.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Include/system_gd32f4xx.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/ARM/startup_gd32f4xx.s b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/ARM/startup_gd32f4xx.s similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/ARM/startup_gd32f4xx.s rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/ARM/startup_gd32f4xx.s diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/GCC/startup_gd32f4xx.s b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/GCC/startup_gd32f4xx.s similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/GCC/startup_gd32f4xx.s rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/GCC/startup_gd32f4xx.s diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/IAR/startup_gd32f4xx.s b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/IAR/startup_gd32f4xx.s similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/IAR/startup_gd32f4xx.s rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/IAR/startup_gd32f4xx.s diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/system_gd32f4xx.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/system_gd32f4xx.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/system_gd32f4xx.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/system_gd32f4xx.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/CMSIS/core_cm4.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/core_cm4.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/CMSIS/core_cm4.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/core_cm4.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/CMSIS/core_cm4_simd.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/core_cm4_simd.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/CMSIS/core_cm4_simd.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/core_cm4_simd.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/CMSIS/core_cmFunc.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/core_cmFunc.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/CMSIS/core_cmFunc.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/core_cmFunc.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/CMSIS/core_cmInstr.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/core_cmInstr.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/CMSIS/core_cmInstr.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/CMSIS/core_cmInstr.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_adc.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_adc.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_adc.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_adc.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_can.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_can.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_can.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_can.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_crc.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_crc.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_crc.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_crc.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_ctc.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_ctc.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_ctc.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_ctc.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_dac.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_dac.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_dac.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_dac.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_dbg.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_dbg.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_dbg.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_dbg.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_dci.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_dci.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_dci.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_dci.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_dma.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_dma.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_dma.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_dma.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_enet.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_enet.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_enet.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_enet.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_exmc.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_exmc.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_exmc.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_exmc.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_exti.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_exti.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_exti.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_exti.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_fmc.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_fmc.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_fmc.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_fmc.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_fwdgt.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_fwdgt.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_fwdgt.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_fwdgt.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_gpio.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_gpio.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_gpio.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_gpio.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_i2c.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_i2c.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_i2c.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_i2c.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_ipa.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_ipa.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_ipa.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_ipa.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_iref.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_iref.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_iref.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_iref.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_misc.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_misc.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_misc.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_misc.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_pmu.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_pmu.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_pmu.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_pmu.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_rcu.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_rcu.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_rcu.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_rcu.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_rtc.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_rtc.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_rtc.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_rtc.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_sdio.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_sdio.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_sdio.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_sdio.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_spi.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_spi.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_spi.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_spi.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_syscfg.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_syscfg.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_syscfg.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_syscfg.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_timer.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_timer.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_timer.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_timer.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_tli.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_tli.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_tli.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_tli.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_trng.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_trng.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_trng.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_trng.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_usart.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_usart.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_usart.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_usart.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_wwdgt.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_wwdgt.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_wwdgt.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Include/gd32f4xx_wwdgt.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_adc.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_adc.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_adc.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_adc.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_can.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_can.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_can.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_can.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_crc.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_crc.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_crc.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_crc.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_ctc.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_ctc.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_ctc.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_ctc.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dac.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dac.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dac.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dac.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dbg.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dbg.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dbg.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dbg.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dci.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dci.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dci.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dci.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dma.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dma.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dma.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_dma.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_enet.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_enet.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_enet.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_enet.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_exmc.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_exmc.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_exmc.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_exmc.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_exti.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_exti.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_exti.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_exti.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_fmc.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_fmc.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_fmc.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_fmc.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_fwdgt.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_fwdgt.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_fwdgt.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_fwdgt.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_gpio.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_gpio.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_gpio.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_gpio.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_i2c.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_i2c.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_i2c.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_i2c.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_ipa.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_ipa.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_ipa.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_ipa.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_iref.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_iref.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_iref.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_iref.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_misc.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_misc.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_misc.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_misc.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_pmu.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_pmu.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_pmu.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_pmu.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_rcu.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_rcu.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_rcu.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_rcu.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_rtc.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_rtc.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_rtc.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_rtc.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_sdio.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_sdio.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_sdio.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_sdio.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_spi.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_spi.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_spi.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_spi.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_syscfg.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_syscfg.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_syscfg.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_syscfg.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_timer.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_timer.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_timer.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_timer.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_tli.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_tli.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_tli.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_tli.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_trng.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_trng.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_trng.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_trng.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_usart.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_usart.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_usart.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_usart.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_wwdgt.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_wwdgt.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_wwdgt.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_standard_peripheral/Source/gd32f4xx_wwdgt.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/audio/Include/audio_core.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/audio/Include/audio_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/audio/Include/audio_core.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/audio/Include/audio_core.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/audio/Include/audio_out_itf.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/audio/Include/audio_out_itf.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/audio/Include/audio_out_itf.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/audio/Include/audio_out_itf.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/audio/Source/audio_core.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/audio/Source/audio_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/audio/Source/audio_core.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/audio/Source/audio_core.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/audio/Source/audio_out_itf.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/audio/Source/audio_out_itf.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/audio/Source/audio_out_itf.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/audio/Source/audio_out_itf.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/cdc/Include/cdc_acm_core.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/cdc/Include/cdc_acm_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/cdc/Include/cdc_acm_core.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/cdc/Include/cdc_acm_core.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/cdc/Source/cdc_acm_core.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/cdc/Source/cdc_acm_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/cdc/Source/cdc_acm_core.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/cdc/Source/cdc_acm_core.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/dfu/Include/dfu_core.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/dfu/Include/dfu_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/dfu/Include/dfu_core.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/dfu/Include/dfu_core.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/dfu/Include/dfu_mal.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/dfu/Include/dfu_mal.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/dfu/Include/dfu_mal.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/dfu/Include/dfu_mal.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/dfu/Source/dfu_core.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/dfu/Source/dfu_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/dfu/Source/dfu_core.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/dfu/Source/dfu_core.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/dfu/Source/dfu_mal.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/dfu/Source/dfu_mal.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/dfu/Source/dfu_mal.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/dfu/Source/dfu_mal.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/hid/Include/custom_hid_core.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/hid/Include/custom_hid_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/hid/Include/custom_hid_core.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/hid/Include/custom_hid_core.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/hid/Include/standard_hid_core.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/hid/Include/standard_hid_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/hid/Include/standard_hid_core.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/hid/Include/standard_hid_core.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/hid/Source/custom_hid_core.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/hid/Source/custom_hid_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/hid/Source/custom_hid_core.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/hid/Source/custom_hid_core.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/hid/Source/standard_hid_core.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/hid/Source/standard_hid_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/hid/Source/standard_hid_core.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/hid/Source/standard_hid_core.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/iap/Include/usb_iap_core.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/iap/Include/usb_iap_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/iap/Include/usb_iap_core.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/iap/Include/usb_iap_core.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/iap/Source/usb_iap_core.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/iap/Source/usb_iap_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/iap/Source/usb_iap_core.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/iap/Source/usb_iap_core.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_bbb.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_bbb.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_bbb.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_bbb.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_core.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_core.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_core.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_data.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_data.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_data.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_data.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_mem.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_mem.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_mem.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_mem.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_scsi.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_scsi.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_scsi.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Include/usbd_msc_scsi.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Source/usbd_msc_bbb.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Source/usbd_msc_bbb.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Source/usbd_msc_bbb.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Source/usbd_msc_bbb.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Source/usbd_msc_core.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Source/usbd_msc_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Source/usbd_msc_core.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Source/usbd_msc_core.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Source/usbd_msc_data.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Source/usbd_msc_data.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Source/usbd_msc_data.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Source/usbd_msc_data.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Source/usbd_msc_scsi.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Source/usbd_msc_scsi.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Source/usbd_msc_scsi.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/msc/Source/usbd_msc_scsi.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/printer/Include/printer_core.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/printer/Include/printer_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/printer/Include/printer_core.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/printer/Include/printer_core.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/printer/Source/printer_core.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/printer/Source/printer_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/printer/Source/printer_core.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/class/printer/Source/printer_core.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Include/usbd_core.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Include/usbd_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Include/usbd_core.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Include/usbd_core.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Include/usbd_enum.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Include/usbd_enum.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Include/usbd_enum.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Include/usbd_enum.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Include/usbd_transc.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Include/usbd_transc.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Include/usbd_transc.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Include/usbd_transc.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Source/usbd_core.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Source/usbd_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Source/usbd_core.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Source/usbd_core.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Source/usbd_enum.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Source/usbd_enum.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Source/usbd_enum.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Source/usbd_enum.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Source/usbd_transc.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Source/usbd_transc.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Source/usbd_transc.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/device/core/Source/usbd_transc.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_core.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_core.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_core.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_dev.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_dev.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_dev.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_dev.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_host.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_host.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_host.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_host.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_hw.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_hw.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_hw.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_hw.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_regs.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_regs.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_regs.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usb_regs.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usbd_int.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usbd_int.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usbd_int.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usbd_int.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usbh_int.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usbh_int.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usbh_int.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Include/drv_usbh_int.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usb_core.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usb_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usb_core.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usb_core.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usb_dev.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usb_dev.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usb_dev.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usb_dev.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usb_host.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usb_host.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usb_host.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usb_host.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usbd_int.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usbd_int.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usbd_int.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usbd_int.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usbh_int.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usbh_int.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usbh_int.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/driver/Source/drv_usbh_int.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_core.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_core.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_core.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_keybd.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_keybd.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_keybd.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_keybd.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_mouse.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_mouse.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_mouse.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_mouse.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_parser.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_parser.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_parser.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_parser.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_usage.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_usage.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_usage.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Include/usbh_hid_usage.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Source/usbh_hid_core.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Source/usbh_hid_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Source/usbh_hid_core.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Source/usbh_hid_core.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Source/usbh_hid_keybd.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Source/usbh_hid_keybd.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Source/usbh_hid_keybd.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Source/usbh_hid_keybd.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Source/usbh_hid_mouse.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Source/usbh_hid_mouse.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Source/usbh_hid_mouse.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Source/usbh_hid_mouse.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Source/usbh_hid_parser.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Source/usbh_hid_parser.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Source/usbh_hid_parser.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/hid/Source/usbh_hid_parser.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Include/usbh_msc_bbb.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Include/usbh_msc_bbb.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Include/usbh_msc_bbb.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Include/usbh_msc_bbb.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Include/usbh_msc_core.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Include/usbh_msc_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Include/usbh_msc_core.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Include/usbh_msc_core.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Include/usbh_msc_scsi.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Include/usbh_msc_scsi.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Include/usbh_msc_scsi.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Include/usbh_msc_scsi.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Source/usbh_msc_bbb.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Source/usbh_msc_bbb.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Source/usbh_msc_bbb.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Source/usbh_msc_bbb.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Source/usbh_msc_core.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Source/usbh_msc_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Source/usbh_msc_core.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Source/usbh_msc_core.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Source/usbh_msc_fatfs.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Source/usbh_msc_fatfs.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Source/usbh_msc_fatfs.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Source/usbh_msc_fatfs.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Source/usbh_msc_scsi.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Source/usbh_msc_scsi.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Source/usbh_msc_scsi.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/class/msc/Source/usbh_msc_scsi.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Include/usbh_core.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Include/usbh_core.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Include/usbh_core.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Include/usbh_core.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Include/usbh_enum.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Include/usbh_enum.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Include/usbh_enum.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Include/usbh_enum.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Include/usbh_pipe.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Include/usbh_pipe.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Include/usbh_pipe.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Include/usbh_pipe.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Include/usbh_transc.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Include/usbh_transc.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Include/usbh_transc.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Include/usbh_transc.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Source/usbh_core.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Source/usbh_core.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Source/usbh_core.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Source/usbh_core.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Source/usbh_enum.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Source/usbh_enum.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Source/usbh_enum.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Source/usbh_enum.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Source/usbh_pipe.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Source/usbh_pipe.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Source/usbh_pipe.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Source/usbh_pipe.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Source/usbh_transc.c b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Source/usbh_transc.c similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Source/usbh_transc.c rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/host/core/Source/usbh_transc.c diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/cdc/usb_cdc.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/cdc/usb_cdc.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/cdc/usb_cdc.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/cdc/usb_cdc.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/hid/usb_hid.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/hid/usb_hid.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/hid/usb_hid.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/hid/usb_hid.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/msc/msc_bbb.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/msc/msc_bbb.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/msc/msc_bbb.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/msc/msc_bbb.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/msc/msc_scsi.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/msc/msc_scsi.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/msc/msc_scsi.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/msc/msc_scsi.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/msc/usb_msc.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/msc/usb_msc.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/msc/usb_msc.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/class/msc/usb_msc.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/common/usb_ch9_std.h b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/common/usb_ch9_std.h similarity index 100% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/common/usb_ch9_std.h rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/GD32F4xx_usb_library/ustd/common/usb_ch9_std.h diff --git a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/SConscript b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/SConscript similarity index 96% rename from bsp/gd32/libraries/GD32F4xx_Firmware_Library/SConscript rename to bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/SConscript index 1963d0e1db..5f87f85bdd 100644 --- a/bsp/gd32/libraries/GD32F4xx_Firmware_Library/SConscript +++ b/bsp/gd32/arm/libraries/GD32F4xx_Firmware_Library/SConscript @@ -38,7 +38,6 @@ if GetDepend(['RT_USING_DAC']): if GetDepend(['RT_USING_RTC']): src += ['GD32F4xx_standard_peripheral/Source/gd32f4xx_rtc.c'] - src += ['GD32F4xx_standard_peripheral/Source/gd32f4xx_pmu.c'] if GetDepend(['RT_USING_WDT']): src += ['GD32F4xx_standard_peripheral/Source/gd32f4xx_wwdgt.c'] diff --git a/bsp/gd32/libraries/Kconfig b/bsp/gd32/arm/libraries/Kconfig similarity index 100% rename from bsp/gd32/libraries/Kconfig rename to bsp/gd32/arm/libraries/Kconfig diff --git a/bsp/gd32/libraries/gd32_drivers/Kconfig b/bsp/gd32/arm/libraries/gd32_drivers/Kconfig similarity index 100% rename from bsp/gd32/libraries/gd32_drivers/Kconfig rename to bsp/gd32/arm/libraries/gd32_drivers/Kconfig diff --git a/bsp/gd32/libraries/gd32_drivers/SConscript b/bsp/gd32/arm/libraries/gd32_drivers/SConscript similarity index 93% rename from bsp/gd32/libraries/gd32_drivers/SConscript rename to bsp/gd32/arm/libraries/gd32_drivers/SConscript index 16a76e2b0b..df963f3b78 100644 --- a/bsp/gd32/libraries/gd32_drivers/SConscript +++ b/bsp/gd32/arm/libraries/gd32_drivers/SConscript @@ -29,15 +29,19 @@ if GetDepend('RT_USING_SPI'): if GetDepend('RT_USING_SFUD'): src += ['drv_spi_flash.c', 'drv_spi.c'] +# add wdt drivers. if GetDepend('RT_USING_WDT'): src += ['drv_wdt.c'] +# add rtc drivers. if GetDepend('RT_USING_RTC'): src += ['drv_rtc.c'] +# add timer drivers. if GetDepend('RT_USING_HWTIMER'): src += ['drv_hwtimer.c'] +# add adc drivers. if GetDepend('RT_USING_ADC'): src += ['drv_adc.c'] diff --git a/bsp/gd32/arm/libraries/gd32_drivers/drv_adc.c b/bsp/gd32/arm/libraries/gd32_drivers/drv_adc.c new file mode 100644 index 0000000000..ae89469d1d --- /dev/null +++ b/bsp/gd32/arm/libraries/gd32_drivers/drv_adc.c @@ -0,0 +1,206 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-02-25 iysheng first version + * 2022-05-03 BruceOu optimization adc + */ + +#include "drv_adc.h" + +#define DBG_TAG "drv.adc" +#define DBG_LVL DBG_INFO + +#include + +#ifdef RT_USING_ADC + +#if defined(BSP_USING_ADC0) +struct rt_adc_device adc0; +#endif + +#if defined(BSP_USING_ADC1) +struct rt_adc_device adc1; +#endif + +#if defined(BSP_USING_ADC2) +struct rt_adc_device adc2; +#endif + +#define MAX_EXTERN_ADC_CHANNEL 16 + +static const struct gd32_adc adc_obj[] = { +#ifdef BSP_USING_ADC0 + { + ADC0, + RCU_ADC0, + { + GET_PIN(A, 0), GET_PIN(A, 1), GET_PIN(A, 2), GET_PIN(A, 3), + GET_PIN(A, 4), GET_PIN(A, 5), GET_PIN(A, 6), GET_PIN(A, 7), + GET_PIN(B, 0), GET_PIN(B, 1), GET_PIN(C, 0), GET_PIN(C, 1), + GET_PIN(C, 2), GET_PIN(C, 3), GET_PIN(C, 4), GET_PIN(C, 5), + }, + &adc0, + "adc0", + }, +#endif + +#ifdef BSP_USING_ADC1 + { + ADC1, + RCU_ADC1, + { + GET_PIN(A, 0), GET_PIN(A, 1), GET_PIN(A, 2), GET_PIN(A, 3), + GET_PIN(A, 4), GET_PIN(A, 5), GET_PIN(A, 6), GET_PIN(A, 7), + GET_PIN(B, 0), GET_PIN(B, 1), GET_PIN(C, 0), GET_PIN(C, 1), + GET_PIN(C, 2), GET_PIN(C, 3), GET_PIN(C, 4), GET_PIN(C, 5), + }, + &adc1, + "adc1", + }, +#endif +#ifdef BSP_USING_ADC2 + { + ADC2, + RCU_ADC2, + { + GET_PIN(A, 0), GET_PIN(A, 1), GET_PIN(A, 2), GET_PIN(A, 3), + GET_PIN(A, 4), GET_PIN(A, 5), GET_PIN(A, 6), GET_PIN(A, 7), + GET_PIN(B, 0), GET_PIN(B, 1), GET_PIN(C, 0), GET_PIN(C, 1), + GET_PIN(C, 2), GET_PIN(C, 3), GET_PIN(C, 4), GET_PIN(C, 5), + }, + &adc2, + "adc2", + }, +#endif +}; + +/** +* @brief ADC MSP Initialization +* This function configures the hardware resources. +* @param adc_clk, pin +* @retval None +*/ +static void gd32_adc_gpio_init(rcu_periph_enum adc_clk, rt_base_t pin) +{ + /* enable ADC clock */ + rcu_periph_clock_enable(adc_clk); + +#if defined SOC_SERIES_GD32F4xx + /* configure adc pin */ + gpio_mode_set(PIN_GDPORT(pin), GPIO_MODE_ANALOG, GPIO_PUPD_NONE, PIN_GDPIN(pin)); +#else + /* configure adc pin */ + gpio_init(PIN_GDPORT(pin), GPIO_MODE_AIN, GPIO_OSPEED_50MHZ, PIN_GDPIN(pin)); + +#endif +} + +/** +* @brief ADC enable +* This function enable adc. +* @param device, channel, enabled +* @retval None +*/ +static rt_err_t gd32_adc_enabled(struct rt_adc_device *device, rt_uint32_t channel, rt_bool_t enabled) +{ + uint32_t adc_periph; + struct gd32_adc * adc = (struct gd32_adc *)device->parent.user_data; + + if (channel >= MAX_EXTERN_ADC_CHANNEL) + { + LOG_E("invalid channel"); + return -RT_EINVAL; + } + + adc_periph = (uint32_t )(adc->adc_periph); + + if (enabled == ENABLE) + { + gd32_adc_gpio_init(adc->adc_clk, adc->adc_pins[channel]); + + adc_channel_length_config(adc_periph, ADC_REGULAR_CHANNEL, 1); + adc_data_alignment_config(adc_periph, ADC_DATAALIGN_RIGHT); + +#if defined SOC_SERIES_GD32F4xx + adc_external_trigger_source_config(adc_periph, ADC_REGULAR_CHANNEL, ADC_EXTTRIG_REGULAR_EXTI_11); +#else + adc_external_trigger_source_config(adc_periph, ADC_REGULAR_CHANNEL, ADC0_1_2_EXTTRIG_REGULAR_NONE); +#endif + adc_external_trigger_config(adc_periph, ADC_REGULAR_CHANNEL, ENABLE); + +#if defined SOC_SERIES_GD32F4xx + adc_regular_channel_config(adc_periph, 0, channel, ADC_SAMPLETIME_480); +#else + adc_regular_channel_config(adc_periph, 0, channel, ADC_SAMPLETIME_13POINT5); +#endif + + adc_enable(adc_periph); + + /* ADC calibration and reset calibration */ + adc_calibration_enable(adc_periph); + } + else + { + adc_disable(adc_periph); + } + return 0; +} + +/** +* @brief convert adc. +* This function get adc value. +* @param device, channel, value +* @retval None +*/ +static rt_err_t gd32_adc_convert(struct rt_adc_device *device, rt_uint32_t channel, rt_uint32_t *value) +{ + uint32_t adc_periph; + struct gd32_adc * adc = (struct gd32_adc *)(device->parent.user_data); + + if (!value) + { + LOG_E("invalid param"); + return -RT_EINVAL; + } + + adc_periph = (uint32_t )(adc->adc_periph); + adc_software_trigger_enable(adc_periph, ADC_REGULAR_CHANNEL); + + while(!adc_flag_get(adc_periph, ADC_FLAG_EOC)){}; + // clear flag + adc_flag_clear(adc_periph, ADC_FLAG_EOC); + + *value = adc_regular_data_read(adc_periph); + + return 0; +} + +static struct rt_adc_ops gd32_adc_ops = { + .enabled = gd32_adc_enabled, + .convert = gd32_adc_convert, +}; + +static int rt_hw_adc_init(void) +{ + int ret, i = 0; + + for (; i < sizeof(adc_obj) / sizeof(adc_obj[0]); i++) + { + ret = rt_hw_adc_register(adc_obj[i].adc, \ + (const char *)adc_obj[i].device_name, \ + &gd32_adc_ops, &adc_obj[i]); + if (ret != RT_EOK) + { + /* TODO err handler */ + LOG_E("failed register %s, err=%d", adc_obj[i].device_name, ret); + } + } + + return ret; +} +INIT_BOARD_EXPORT(rt_hw_adc_init); +#endif diff --git a/bsp/gd32/arm/libraries/gd32_drivers/drv_adc.h b/bsp/gd32/arm/libraries/gd32_drivers/drv_adc.h new file mode 100644 index 0000000000..b2bc10eb98 --- /dev/null +++ b/bsp/gd32/arm/libraries/gd32_drivers/drv_adc.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-05-03 BruceOu first implementation + */ + +#ifndef __DRV_ADC_H__ +#define __DRV_ADC_H__ + +#include +#include +#include +#include "drv_gpio.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* gd32 adc dirver class */ +struct gd32_adc +{ + uint32_t adc_periph; + rcu_periph_enum adc_clk; + rt_base_t adc_pins[16]; + struct rt_adc_device *adc; + char *device_name; +}; + +#ifdef __cplusplus +} +#endif + +#endif /* __DRV_ADC_H__ */ diff --git a/bsp/gd32/libraries/gd32_drivers/drv_gpio.c b/bsp/gd32/arm/libraries/gd32_drivers/drv_gpio.c similarity index 84% rename from bsp/gd32/libraries/gd32_drivers/drv_gpio.c rename to bsp/gd32/arm/libraries/gd32_drivers/drv_gpio.c index 8ce5330077..73cf5cb620 100644 --- a/bsp/gd32/libraries/gd32_drivers/drv_gpio.c +++ b/bsp/gd32/arm/libraries/gd32_drivers/drv_gpio.c @@ -18,7 +18,7 @@ static const struct pin_index pins[] = { - /* GPIOA 0-15 */ +#ifdef GPIOA GD32_PIN(0, A, 0), GD32_PIN(1, A, 1), GD32_PIN(2, A, 2), @@ -35,7 +35,8 @@ static const struct pin_index pins[] = GD32_PIN(13, A, 13), GD32_PIN(14, A, 14), GD32_PIN(15, A, 15), - /* GPIOB 0-15 */ +#endif +#ifdef GPIOB GD32_PIN(16, B, 0), GD32_PIN(17, B, 1), GD32_PIN(18, B, 2), @@ -52,7 +53,8 @@ static const struct pin_index pins[] = GD32_PIN(39, B, 13), GD32_PIN(30, B, 14), GD32_PIN(31, B, 15), - /* GPIOC 0-15 */ +#endif +#ifdef GPIOC GD32_PIN(32, C, 0), GD32_PIN(33, C, 1), GD32_PIN(34, C, 2), @@ -69,104 +71,115 @@ static const struct pin_index pins[] = GD32_PIN(45, C, 13), GD32_PIN(46, C, 14), GD32_PIN(47, C, 15), - /* GPIOD 0-15 */ - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, +#endif +#ifdef GPIOD + GD32_PIN(48, D, 0), + GD32_PIN(49, D, 1), GD32_PIN(50, D, 2), - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - /* GPIOE 0-15 */ - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, + GD32_PIN(51, D, 3), + GD32_PIN(52, D, 4), + GD32_PIN(53, D, 5), + GD32_PIN(54, D, 6), + GD32_PIN(55, D, 7), + GD32_PIN(56, D, 8), + GD32_PIN(57, D, 9), + GD32_PIN(58, D, 10), + GD32_PIN(59, D, 11), + GD32_PIN(60, D, 12), + GD32_PIN(61, D, 13), + GD32_PIN(62, D, 14), + GD32_PIN(63, D, 15), +#endif +#ifdef GPIOE + GD32_PIN(64, E, 0), + GD32_PIN(65, E, 1), GD32_PIN(66, E, 2), - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - /* GPIOF 0-15 */ - GD32_PIN(64, F, 0), - GD32_PIN(65, F, 1), - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN(68, F, 4), - GD32_PIN(69, F, 5), - GD32_PIN(70, F, 6), - GD32_PIN(71, F, 7), - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - /* GPIOG 0-15 */ - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - /* GPIOH 0-15 */ - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - /* GPIOI 0-11 */ - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, - GD32_PIN_DEFAULT, + GD32_PIN(67, E, 3), + GD32_PIN(68, E, 4), + GD32_PIN(69, E, 5), + GD32_PIN(70, E, 6), + GD32_PIN(71, E, 7), + GD32_PIN(72, E, 8), + GD32_PIN(73, E, 9), + GD32_PIN(74, E, 10), + GD32_PIN(75, E, 11), + GD32_PIN(76, E, 12), + GD32_PIN(77, E, 13), + GD32_PIN(78, E, 14), + GD32_PIN(79, E, 15), +#endif +#ifdef GPIOF + GD32_PIN(80, F, 0), + GD32_PIN(81, F, 1), + GD32_PIN(82, F, 2), + GD32_PIN(83, F, 3), + GD32_PIN(84, F, 4), + GD32_PIN(85, F, 5), + GD32_PIN(86, F, 6), + GD32_PIN(87, F, 7), + GD32_PIN(88, F, 8), + GD32_PIN(89, F, 9), + GD32_PIN(90, F, 10), + GD32_PIN(91, F, 11), + GD32_PIN(92, F, 12), + GD32_PIN(93, F, 13), + GD32_PIN(94, F, 14), + GD32_PIN(95, F, 15), +#endif +#ifdef GPIOG + GD32_PIN(96, G, 0), + GD32_PIN(97, G, 1), + GD32_PIN(98, G, 2), + GD32_PIN(99, G, 3), + GD32_PIN(100, G, 4), + GD32_PIN(101, G, 5), + GD32_PIN(102, G, 6), + GD32_PIN(103, G, 7), + GD32_PIN(104, G, 8), + GD32_PIN(105, G, 9), + GD32_PIN(106, G, 10), + GD32_PIN(107, G, 11), + GD32_PIN(108, G, 12), + GD32_PIN(109, G, 13), + GD32_PIN(110, G, 14), + GD32_PIN(111, G, 15), +#endif +#ifdef GPIOH + GD32_PIN(112, H, 0), + GD32_PIN(113, H, 1), + GD32_PIN(114, H, 2), + GD32_PIN(115, H, 3), + GD32_PIN(116, H, 4), + GD32_PIN(117, H, 5), + GD32_PIN(118, H, 6), + GD32_PIN(119, H, 7), + GD32_PIN(120, H, 8), + GD32_PIN(121, H, 9), + GD32_PIN(122, H, 10), + GD32_PIN(123, H, 11), + GD32_PIN(124, H, 12), + GD32_PIN(125, H, 13), + GD32_PIN(126, H, 14), + GD32_PIN(127, H, 15), +#endif +#ifdef GPIOI + GD32_PIN(128, I, 0), + GD32_PIN(129, I, 1), + GD32_PIN(130, I, 2), + GD32_PIN(131, I, 3), + GD32_PIN(132, I, 4), + GD32_PIN(133, I, 5), + GD32_PIN(134, I, 6), + GD32_PIN(135, I, 7), + GD32_PIN(136, I, 8), + GD32_PIN(137, I, 9), + GD32_PIN(138, I, 10), + GD32_PIN(139, I, 11), + GD32_PIN(140, I, 12), + GD32_PIN(141, I, 13), + GD32_PIN(142, I, 14), + GD32_PIN(143, I, 15), +#endif }; static const struct pin_irq_map pin_irq_map[] = diff --git a/bsp/gd32/libraries/gd32_drivers/drv_gpio.h b/bsp/gd32/arm/libraries/gd32_drivers/drv_gpio.h similarity index 78% rename from bsp/gd32/libraries/gd32_drivers/drv_gpio.h rename to bsp/gd32/arm/libraries/gd32_drivers/drv_gpio.h index aa4db2351d..5258a4f5ac 100644 --- a/bsp/gd32/libraries/gd32_drivers/drv_gpio.h +++ b/bsp/gd32/arm/libraries/gd32_drivers/drv_gpio.h @@ -48,13 +48,11 @@ extern "C" { #define GET_PIN(PORTx,PIN) (rt_base_t)((16 * ( ((rt_base_t)__GD32_PORT(PORTx) - (rt_base_t)GPIO_BASE)/(0x0400UL) )) + 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_PORT(pin) ((uint8_t)(((pin) >> 4) & 0xFu)) +#define PIN_NO(pin) ((uint8_t)((pin) & 0xFu)) -#define PIN_GDPORT(pin) (GPIO_BASE + (0x400u * PIN_PORT(pin))) /* gpio_periph GPIOA~GPIOG */ -#define PIN_GDPIN(pin) ((uint16_t)(1u << PIN_NO(pin))) /* GPIO_PIN_0~GPIO_PIN_15 */ -#define PIN_GDRCU(pin) RCU_REGIDX_BIT(APB2EN_REG_OFFSET, PIN_PORT(pin) + 2) /* pin gpio外设时钟 */ +#define PIN_GDPORT(pin) (GPIO_BASE + (0x400u * PIN_PORT(pin))) +#define PIN_GDPIN(pin) ((uint16_t)(1u << PIN_NO(pin))) struct pin_index { diff --git a/bsp/gd32/libraries/gd32_drivers/drv_hwtimer.c b/bsp/gd32/arm/libraries/gd32_drivers/drv_hwtimer.c similarity index 100% rename from bsp/gd32/libraries/gd32_drivers/drv_hwtimer.c rename to bsp/gd32/arm/libraries/gd32_drivers/drv_hwtimer.c diff --git a/bsp/gd32/libraries/gd32_drivers/drv_rtc.c b/bsp/gd32/arm/libraries/gd32_drivers/drv_rtc.c similarity index 100% rename from bsp/gd32/libraries/gd32_drivers/drv_rtc.c rename to bsp/gd32/arm/libraries/gd32_drivers/drv_rtc.c diff --git a/bsp/gd32/libraries/gd32_drivers/drv_soft_i2c.c b/bsp/gd32/arm/libraries/gd32_drivers/drv_soft_i2c.c similarity index 97% rename from bsp/gd32/libraries/gd32_drivers/drv_soft_i2c.c rename to bsp/gd32/arm/libraries/gd32_drivers/drv_soft_i2c.c index 176a7e3319..18c9795c9e 100644 --- a/bsp/gd32/libraries/gd32_drivers/drv_soft_i2c.c +++ b/bsp/gd32/arm/libraries/gd32_drivers/drv_soft_i2c.c @@ -16,7 +16,7 @@ #if !defined(BSP_USING_I2C0) && !defined(BSP_USING_I2C1) && !defined(BSP_USING_I2C2) && !defined(BSP_USING_I2C3) #error "Please define at least one BSP_USING_I2Cx" -/* this driver can be disabled at menuconfig -> RT-Thread Components -> Device Drivers */ +/* this driver can be disabled at menuconfig → RT-Thread Components → Device Drivers */ #endif static const struct gd32_soft_i2c_config soft_i2c_config[] = diff --git a/bsp/gd32/libraries/gd32_drivers/drv_soft_i2c.h b/bsp/gd32/arm/libraries/gd32_drivers/drv_soft_i2c.h similarity index 100% rename from bsp/gd32/libraries/gd32_drivers/drv_soft_i2c.h rename to bsp/gd32/arm/libraries/gd32_drivers/drv_soft_i2c.h diff --git a/bsp/gd32/libraries/gd32_drivers/drv_spi.c b/bsp/gd32/arm/libraries/gd32_drivers/drv_spi.c similarity index 76% rename from bsp/gd32/libraries/gd32_drivers/drv_spi.c rename to bsp/gd32/arm/libraries/gd32_drivers/drv_spi.c index aa626c4a77..fcbf523f88 100644 --- a/bsp/gd32/libraries/gd32_drivers/drv_spi.c +++ b/bsp/gd32/arm/libraries/gd32_drivers/drv_spi.c @@ -11,7 +11,7 @@ #ifdef RT_USING_SPI -#if defined(BSP_USING_SPI0) || defined(BSP_USING_SPI1) || defined(BSP_USING_SPI2) || defined(BSP_USING_SPI3) || defined(BSP_USING_SPI4) +#if defined(BSP_USING_SPI0) || defined(BSP_USING_SPI1) || defined(BSP_USING_SPI2) #define LOG_TAG "drv.spi" #include @@ -25,12 +25,6 @@ static struct rt_spi_bus spi_bus1; #ifdef BSP_USING_SPI2 static struct rt_spi_bus spi_bus2; #endif -#ifdef BSP_USING_SPI3 -static struct rt_spi_bus spi_bus3; -#endif -#ifdef BSP_USING_SPI4 -static struct rt_spi_bus spi_bus4; -#endif static const struct gd32_spi spi_bus_obj[] = { @@ -42,13 +36,10 @@ static const struct gd32_spi spi_bus_obj[] = { RCU_GPIOA, &spi_bus0, GPIOA, -#if defined SOC_SERIES_GD32F4xx - GPIO_AF_5, -#endif GPIO_PIN_5, GPIO_PIN_6, GPIO_PIN_7, - }, + } #endif /* BSP_USING_SPI0 */ #ifdef BSP_USING_SPI1 @@ -59,13 +50,10 @@ static const struct gd32_spi spi_bus_obj[] = { RCU_GPIOB, &spi_bus1, GPIOB, -#if defined SOC_SERIES_GD32F4xx - GPIO_AF_5, -#endif GPIO_PIN_12, GPIO_PIN_14, GPIO_PIN_15, - }, + } #endif /* BSP_USING_SPI1 */ #ifdef BSP_USING_SPI2 @@ -76,48 +64,11 @@ static const struct gd32_spi spi_bus_obj[] = { RCU_GPIOB, &spi_bus2, GPIOB, -#if defined SOC_SERIES_GD32F4xx - GPIO_AF_6, -#endif GPIO_PIN_3, GPIO_PIN_4, GPIO_PIN_5, - }, -#endif /* BSP_USING_SPI2 */ - -#ifdef BSP_USING_SPI3 - { - SPI2, - "spi2", - RCU_SPI3, - RCU_GPIOE, - &spi_bus3, - GPIOB, -#if defined SOC_SERIES_GD32F4xx - GPIO_AF_5, -#endif - GPIO_PIN_2, - GPIO_PIN_5, - GPIO_PIN_6, - }, -#endif /* BSP_USING_SPI3 */ - -#ifdef BSP_USING_SPI4 - { - SPI4, - "spi4", - RCU_SPI4, - RCU_GPIOF, - &spi_bus4, - GPIOF, -#if defined SOC_SERIES_GD32F4xx - GPIO_AF_5, -#endif - GPIO_PIN_7, - GPIO_PIN_8, - GPIO_PIN_9, } -#endif /* BSP_USING_SPI4 */ +#endif /* BSP_USING_SPI2 */ }; /* private rt-thread spi ops function */ @@ -143,10 +94,11 @@ static void gd32_spi_init(struct gd32_spi *gd32_spi) #if defined SOC_SERIES_GD32F4xx /*GPIO pin configuration*/ - gpio_af_set(gd32_spi->spi_port, gd32_spi->alt_func_num, gd32_spi->sck_pin | gd32_spi->mosi_pin | gd32_spi->miso_pin); + gpio_af_set(gd32_spi->spi_port, GPIO_AF_5, gd32_spi->sck_pin | gd32_spi->mosi_pin | gd32_spi->miso_pin); + + gpio_mode_set(gd32_spi->spi_port, GPIO_MODE_AF, GPIO_PUPD_NONE, gd32_spi->miso_pin| gd32_spi->miso_pin); + gpio_output_options_set(gd32_spi->spi_port, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,gd32_spi->miso_pin| gd32_spi->miso_pin); - gpio_mode_set(gd32_spi->spi_port, GPIO_MODE_AF, GPIO_PUPD_NONE, gd32_spi->sck_pin | gd32_spi->mosi_pin | gd32_spi->miso_pin); - gpio_output_options_set(gd32_spi->spi_port, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ, gd32_spi->sck_pin | gd32_spi->miso_pin| gd32_spi->miso_pin); #else /* Init SPI SCK MOSI */ gpio_init(gd32_spi->spi_port, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, gd32_spi->sck_pin | gd32_spi->mosi_pin); @@ -379,50 +331,6 @@ static rt_uint32_t spixfer(struct rt_spi_device* device, struct rt_spi_message* return message->length; }; -/** - * Attach the spi device to SPI bus, this function must be used after initialization. - */ -rt_err_t rt_hw_spi_device_attach(const char *bus_name, const char *device_name, uint32_t cs_gpiox, uint16_t cs_gpio_pin) -{ - RT_ASSERT(bus_name != RT_NULL); - RT_ASSERT(device_name != RT_NULL); - - rt_err_t result; - struct rt_spi_device *spi_device; - struct gd32_spi_cs *cs_pin; - -#if defined SOC_SERIES_GD32F4xx - /* initialize the cs pin && select the slave*/ - gpio_mode_set(cs_gpiox, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, cs_gpio_pin); - gpio_output_options_set(cs_gpiox, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, cs_gpio_pin); - gpio_bit_set(cs_gpiox, cs_gpio_pin); -#else - /* initialize the cs pin && select the slave*/ - gpio_init(cs_gpiox, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, cs_gpio_pin); - gpio_bit_set(cs_gpiox, cs_gpio_pin); -#endif - - /* attach the device to spi bus*/ - spi_device = (struct rt_spi_device *)rt_malloc(sizeof(struct rt_spi_device)); - RT_ASSERT(spi_device != RT_NULL); - cs_pin = (struct gd32_spi_cs *)rt_malloc(sizeof(struct gd32_spi_cs)); - RT_ASSERT(cs_pin != RT_NULL); - cs_pin->GPIOx = cs_gpiox; - cs_pin->GPIO_Pin = cs_gpio_pin; - result = rt_spi_bus_attach_device(spi_device, device_name, bus_name, (void *)cs_pin); - - if (result != RT_EOK) - { - LOG_E("%s attach to %s faild, %d\n", device_name, bus_name, result); - } - - RT_ASSERT(result == RT_EOK); - - LOG_D("%s attach to %s done", device_name, bus_name); - - return result; -} - int rt_hw_spi_init(void) { int result = 0; @@ -444,5 +352,5 @@ int rt_hw_spi_init(void) INIT_BOARD_EXPORT(rt_hw_spi_init); -#endif /* BSP_USING_SPI0 || BSP_USING_SPI1 || BSP_USING_SPI2 || BSP_USING_SPI3 || BSP_USING_SPI4*/ +#endif /* BSP_USING_SPI0 || BSP_USING_SPI1 || BSP_USING_SPI2 */ #endif /* RT_USING_SPI */ diff --git a/bsp/gd32/libraries/gd32_drivers/drv_spi.h b/bsp/gd32/arm/libraries/gd32_drivers/drv_spi.h similarity index 80% rename from bsp/gd32/libraries/gd32_drivers/drv_spi.h rename to bsp/gd32/arm/libraries/gd32_drivers/drv_spi.h index 0f3e066f28..6359d75bd1 100644 --- a/bsp/gd32/libraries/gd32_drivers/drv_spi.h +++ b/bsp/gd32/arm/libraries/gd32_drivers/drv_spi.h @@ -34,16 +34,11 @@ struct gd32_spi rcu_periph_enum gpio_clk; struct rt_spi_bus *spi_bus; uint32_t spi_port; -#if defined SOC_SERIES_GD32F4xx - uint32_t alt_func_num; -#endif uint16_t sck_pin; uint16_t miso_pin; uint16_t mosi_pin; }; -rt_err_t rt_hw_spi_device_attach(const char *bus_name, const char *device_name, uint32_t cs_gpiox, uint16_t cs_gpio_pin); - #ifdef __cplusplus } #endif diff --git a/bsp/gd32/libraries/gd32_drivers/drv_spi_flash.c b/bsp/gd32/arm/libraries/gd32_drivers/drv_spi_flash.c similarity index 100% rename from bsp/gd32/libraries/gd32_drivers/drv_spi_flash.c rename to bsp/gd32/arm/libraries/gd32_drivers/drv_spi_flash.c diff --git a/bsp/gd32/libraries/gd32_drivers/drv_usart.c b/bsp/gd32/arm/libraries/gd32_drivers/drv_usart.c similarity index 99% rename from bsp/gd32/libraries/gd32_drivers/drv_usart.c rename to bsp/gd32/arm/libraries/gd32_drivers/drv_usart.c index 9eebb96327..c74c3468ca 100644 --- a/bsp/gd32/libraries/gd32_drivers/drv_usart.c +++ b/bsp/gd32/arm/libraries/gd32_drivers/drv_usart.c @@ -496,7 +496,7 @@ static const struct rt_uart_ops gd32_uart_ops = * @param None * @retval None */ -int gd32_hw_usart_init(void) +int rt_hw_usart_init(void) { struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; int i; @@ -519,6 +519,6 @@ int gd32_hw_usart_init(void) return result; } -INIT_BOARD_EXPORT(gd32_hw_usart_init); +INIT_BOARD_EXPORT(rt_hw_usart_init); #endif diff --git a/bsp/gd32/libraries/gd32_drivers/drv_usart.h b/bsp/gd32/arm/libraries/gd32_drivers/drv_usart.h similarity index 100% rename from bsp/gd32/libraries/gd32_drivers/drv_usart.h rename to bsp/gd32/arm/libraries/gd32_drivers/drv_usart.h diff --git a/bsp/gd32/libraries/gd32_drivers/drv_wdt.c b/bsp/gd32/arm/libraries/gd32_drivers/drv_wdt.c similarity index 100% rename from bsp/gd32/libraries/gd32_drivers/drv_wdt.c rename to bsp/gd32/arm/libraries/gd32_drivers/drv_wdt.c diff --git a/bsp/gd32/tools/sdk_dist.py b/bsp/gd32/arm/tools/sdk_dist.py similarity index 100% rename from bsp/gd32/tools/sdk_dist.py rename to bsp/gd32/arm/tools/sdk_dist.py diff --git a/bsp/gd32/docs/figures/menuconfig_gd32407v-start.png b/bsp/gd32/docs/figures/menuconfig_gd32407v-start.png deleted file mode 100644 index ffb58f239010f9519e852fcaf8d4602e39c40b35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27476 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 diff --git a/bsp/gd32/docs/figures/scons_mdk5.png b/bsp/gd32/docs/figures/scons_mdk5.png deleted file mode 100644 index e62758136411ef7c679664bb8900e0346232586c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19725 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 diff --git a/bsp/gd32/docs/figures/update.png b/bsp/gd32/docs/figures/update.png deleted file mode 100644 index 01332bd3777a91f8a44e7fcf571dfd97601dd9e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31611 zcmd43cUY6n+bxQs@G2rUM5Nm25b3?y0qMO4ks`f>8cGxumEL@M<8fwpJFW$aLK|w*Q^x}yY z1;zOu3W_rv|4@-X(Q3=eqo81?PQd26%ow%fLK*F=3& z)zq323S~r=j>sWh-2V36g6-zn>~mlB!MX|$ zaH8nO1;$$(EWI}-6N~*hpB-pf+VedRKjhp6V^Ry(N=r*Oq()3hpVl|2HC~DpsY5|) zIv#8Kd64CB&@#ebcB?A=q|K+VY3to(c&zlK>4kqknfRh0`S&`b=qeZW-)nc#v*^E< zZ%dzLF#o+C82Klb^6z!S1QbYuU`x;beNTY}EwddBZt(p3en8GE;Mn+o|AMI{_kTU2 zBCVW3nA!$ifRDiq`n4>j#LSdpwTS4C_YApB5+j9GN+#2F{W970)tb5bS8|8DTqPTv zO%dwQcs-Glti&CVYf9Y4N|uv7;Lj5^9&>A?N%9H5-|Si(e_G#S7Wq9n`0hsBXmMY+SwM^z$%Hl9a$GhH38AlcEO`NNBk0-!>0t-QWT?+}E${w6q2rxJeQT zGi^e`QtZ(wF~UcQ#)FedJ$0LOQT8L3exJ+nqzlfm7K1m8zlUM1rjYv~xWVD}QJuo; z?#8}nPH*`3wqJohP6%T0Xz9U&dq}pJ%b0d$Y zed*#+O{ojPF(`L7X}>-D&8^TY)fd-PC2Y;yHE@Z{M%(?*yeNZk z2TDno&RxaKQw7qr;M}ilbrtXURL$`Yb{YtYksmlyCb<1(c^NAQ)t66N%4IDlh-cWK z)o)_1%dk4Rh%7TVYDtHO3^VfScLL7`_O{TPZxS`EE7l2JN83+WW+h1LDvDn*hK%RE zbV3<6Up=}P^2$ia5~hx_v8ymx8rvqK!Ghk7Y!Q@qLE6{b&1*~ZHobq`rq0Ex;=KQk zItwBp>#+K|jEA8=Hxa^s?$cp+N!jsKjc%NySrcf!SO4=2>@p%GDX+?+V7&UvlXY#O zXb)T&kur9FAJ`rD?zK?tG@u|SB$|L%+Ur|b;-%5U1TZE*8?`-wKCJ_%8Eg|`0mSF&kFq!saz1`U=fXHx^-{3apg5R)<6AF_=LIO>$s3RQ>%hFeEHly2DQ5-Er0iEtd$~22eHw7IQ zs?q5<3VFAQecSpQ%;+1pxi&4KO^G%SR}2SvnO?g&!gmT*ibPAdyY=($`7~aB$PnLt zKYps4wA?=*V0Zt4irE^yD5jyDT|dR7ESPz*^Z>M)vbwnNXAM!@w{1J$BcAI~a2vGF zRRmu0Zny%_2lJy)y6?ge`I~Q#CVwvX&FunW4MBJMEWH(RIO-=(0yvHhSnXwre?t@4 zAfmBB^}(0e&ek&G)0-2X)UXdj8{Of3{NDFz{Nb4;yMmX|H)qoJ*3>JsYJP~umEOM_ z;WbGFD0AC*nbKVm^1aWG@1yXV1R6y4K4Xa-ka)AS<-+iEWPipuHJ$BG-}9Fcp86TG zsV2SAtnpE?+ri28($@5AFKvGDt#hrqO2%?GC*Sr_3tAT{YnoU;|8klFRwj$r;(m5f zPcNKxD&-Z@*WPfNWZ_d6gVpGWS> zAq{-ccqL6mO$fF@;Nx=;vK!_g(Y zA0f4-?_;9tqh|VDtL#Y_<1sa8~Mhg+C)az`Y^iwK0XdE>E;=#GG+| z$jRv~b)VDcnJmQ%hQ*!&h6fwM|JEz4IB^^3X}?C#9;5@0X$(MPgZpN|735-k`eM5M z&W&9;KzF$mM#ajD)J&TIEbxRWy)rBnO8HyE#>&M^!re0PH_?5uF>txWEE6<7?f&xL z5?P)}u7RQX=KB_nynp9k#)TKn|JJw_yK_B%Kc+AZ`+u*TH3JGhOLN6d52J(qK!cNK zpw4B?$!T#(t8LM?Ub;qKCnqLZwC;6Iy1h)PogEJF$sCp7Kbj^H4g&;_p195We!iY@ zp{`~4-jUA}`IB1v_KQ}A49LLx^2Ug~84&Q|6+ZycKjO+A;>y{~awP>cgltO)%N>d^ zZd^;)36O41pJaz?QZ0ow z^6>w3#I^@zQ~qL@G^P2`fzJ_Lu{jxnhng2-Rm_&uUv@PyBnp_scNYxZaaIC1a(POY z@pU2Y88S-O>Bsj3{_-5BuC(Y5PUU=Y`E=+gDDvA_mJv`Qc-}@nZm@sz63hyD%CXSyF2fX&a0{=ZaJUffPO?j2XbhlQE(4kP;xYE>$Q}dNAq-5r1?7qD6t;_0|rC~ESV36&Gln}4K2enk6 zgyMSzh4xZpX5Uw5xF;L)m86tpE-Kp{VmLFyg&7lLLrJL;rv}bcchLsN&cy*ES*(lm z5(puvnHsRQi7H(#2w?HP4F;F>HJ%CTYrWmNos4c@O?b2K<9n$;Vb_%SF35)zjh=KC zRCo=~y-9cJ+*0Vl1BAEOZNL&m|vf2U83LUvn>adtXpvNqA8B$du;$kx{*3>%F0q$Xj^5fP|rSN9KZ-FQ`=b0ew zsI{y1GS5R9+DtpxsIL-7Y=@~V-^>XrjiY0gCwLomK8O+2w%;$Bs6S3jg`Y-LLOH}o z04k8;V}&m`|81SAui%@i{@^5I)vWKUr?X9$ZHD`?AaLzLoc^JBmecR47F#?u6>b|I z&C4TiGuq-)VuRu!1Ji;z)dmZ~W1ojVoSx57fmcV)bANsy?WI2|;MIx(s%(BvPTkzG z>RSuDq#_mhwPTe*g}Pk@U>2L8BcIoaj+{oWElpmKJ7+V+7;iHL=oTsk&P#8gs*FLs zM~0zsom0iY`H1DNEej)f?VIoWDc-&dP`DJkKJ$B@`UWix>L;GVHJgiZVe+zOJ(E9U zx4SCcBb%ycRr=v_Og%DC`l51n(3dB-7b2ED!xAQl_yD%p$~$S}3o;7+HD7Fzb!nqF zJdRE?*?hh5dV5aQ^=HCNF*5=U?0^h6lMaI6Za=B4=lw=Or)8c$%E$mn+f=cC=F{+o zB9xaj4Gx6w>vDfM%0%FJPT&H)&^DlqVeeWITt=bX-3YO~9>5Ca=l|BA1N5QAt4v$e ziYskY==kTciRct%D#3rSBB@9Y2IQ`F>`w;o>d8W|wZ(Bj!j8jiZf?Qndv;AC7@3P3 zDBiMZx+|%SgCFByF&ErM1=A))&A#rYz#B}q9&!oixBRT((@$Z%x&$_QTqLi5l8nu_ zF+R>mC~WEDOF189@n_R?12V72OLDZvTq8|Q5~S$VJ*;Z@!RU{|m?1;?H!hyH`V5)!fYB^SYrK7) znzJ(oIqPXV?c?rmDtkt?v`K9+9GUe44d}72FAk+2DwCk2cVkGF1vL;$^UN+X%DY9J z-y!5UFou;u+R()e>-Wrql z%Nr*E|Ltzw_OYWEZFKhgm0c3f{Gpdq&5g5Xq?YZVjb_FSHFcw<$w0U#=Bmlt>ecxi zWiB*Cp5NwXYSZt9dq-rvYBLJZ)sbaYqd=}<%W6?ec?N00qOPFC{3lT67T@zSO~z~0TT?(~%KmZzOOPQ}8Xpng+$94;?{HK8)G z($uLyz-+D?#+97>E>}BMB*DyOpr_~O`>Qm+$MLdj$m5MAUf8ZIdEGAH$jNGB%Y`T? zYhsoQf#u>=l1(=m&c?anmTy}2%bSk6G$n>F|G=PbXm*xNW5Y^;AjIs-))cwzuB=v< z^>V$H4-XuE^y^|V;&|FXLErU}1gqQ&3zADmF|7K9kYfK%OTOvg0~(a}N&6L4rnh1W zju$Y;%j?H88{i+2Zn$@&%G4THbqu4n@6ddWTfVI~X%a2hxDMsTFH@Fu0g`D(he{x> z!CxmfrKQ;F(7lh>h8<-!oW0$4`7^t#_trc<-A z$s3h$4w*GC+L2ez4oJ`M^Kf*N&5sAjH8ua7086nTxfOK_HS1vfp5JcViH7p5g4M}CbM@)xC&8UvngJSrL#IlVKvLLI9t1?;2b zs~c}qP-G14fn3CW{r~J!CkpbMk+UI(v(D9xWayvKwzv$8?cVo9ou<9FOO4tsQFdM| zC(l25y-6WcA^+kzivJT8Qj=EZRHECIC@I0KUXmW0u(T~Yo4VuqMFpF{5N_Gd)1nc{ zn`aiQr%(Ad=|4z{98dk+oZX(xRad26W&Ijcf3eUUEblhPanJ8XaQE^{*A$*kaf4^C z6wTyZHO1aUP%uUKUcM>tvMb4{p5i2HFA0- zV^904Fb~dlhHVcGKB$kD3|5nF5;(XV1K+f&=K4 z2T?@^$MmOTGab_Z0CFW~TJ2KASB_6KA^AA>!SYqw-1XO0P)|h4< z9{hq*=1zWrPu-6&-V^_DF_UG%sdwUJ2*2g(UyQX$^RU)TGZ+?!H^u|2og;_)TR}o@ zBk8^}zp&9dQ5)Z)D{P6my+lzbRzs+qwL%aTYfP-^FReI2kAR0)oNu1{5Qc{1-I?o$7=|1SZ@BJWbwic$tHaH@to zO$tg@FI8uW5XF*G;T1h94e8S<&fM|K=h+I+LEI3D0$A~Y<8}cgYv*H6;?5q_h;P(& zeV^pk>^;Ql@3+7LlfW18A9*vDBPY+W$UseS2LSKs7o`DV#<9I+bSmK4jCHl~&Ma=? zZVk+vwhCC)sZcocEsQnq+RE~r#0b-~2>G_{N|Bo;GyD2Q%~v~7##gHO#+*>gWNwI? z9PD)AFUzdXZFQT!k*)Kk_d4F`lT#OUO52W%dI0k+JTP>jar;}jiL{5-=w;?Ah}_2E zaVw4QI-wDzG=#-D`NqgN(Weu&7L2lc#um;Emsp#f@)7QV(joHvPyw2|#{S%zXEKDf z-=#!m!&IUt^8D}R95o*{Br{|OLa(=@<^i?w2}Qi;2}@ms$`)JPa*k^Ei_vcQ2Hm&C zWyk}49X@IM*+sFj>Vb)p5@LXMYms4+WF3lB16)R!@^Z-366LOF7=t}pXTC>68+q*$ z8t0_d$QV;uc$2x!Q@JG_%G}0_GpcAJ7sKMu7e_aG_G+0JYa{Aq)BIj{jh8)mtiD;o zC0=+uAD>5gz1^|dbyeoR>ksJ`&G}J)tySyoX$Tto#*6gba1eG6T-30#J-(4(bu3zp zOYGF0K_;Ybzj?T^XaC*D7VM`@#=hn*>M*qXc3{#M2qMuQS+}{4RJ1|mE@Y7BGc9ua zN9Q}u<95lGc!Q6PBKo~v*?BQqELm9i{{G`4Z_`+?o>={slo&zSByhyI1Sh&crnjzd^N44rd+q399vnXoid|6CC32;FzhA(tK#IVd6Xg$J$=>3v#yK*19md^AqA5(gz@o+sxF^9mzNDX`J$xLk|E;Tl_S;421wKhX&J+ z4G}5Zs-M62ObW6J6)Le_7gCy_C->KU2=iqoyZ2wL2>0BWvP28$%sf2*Ug?3;L+Mp% zKL4yl4{KBG*uB-MK$8lp91+(-zo>e<{dX9e+*OuJXVFqwMrAa8puVGTp;FI(R(qnlwpqC}G&xS6$9fl}tJbYc^g0eJ^NKNKtpkB} z#memX^`6W73U88V4t4p)Y6@-Ea%coWQ~Gi4K1yt}iumnQXtB;^rLctE z9D@t!B|@0|(d~?zUu4jWE2;tjuq^k5>`UD)Gn*p&k8cC5E%fxBvSxI5-XsW_mo5|#$kD#UI>%1fqTXVc$KNee?jQJQ>j7C zN^D$Qg?~ICA>ZpY);Ls^TB8GV`DJWe3Tr7~(`_BsN0b~rx^(t3_}9ZmU((aA z-Vk5EtO(;ltmt%E!P0Qq<&98v-tuy@`E|?>ns;g-+(ja2RlF|b{Q@}tw|zxk9;d%q zheXTF+3c)$Q=6U;-6e0e1MmpAqSN2CB=`)}tWXeoAjuVU+T)+0llIgpWM;zn}5}0-~<(Z%dL8)Ri?9;w}W1ODM07q0T!(CH>@}e zN!aHW@egJPZ87%Ce<+CdZd$zt8`8ODS^3OoMnd4&*h)x8+hs?ZZoTp+Y9<4 z0QJ}vbSIOa!5%3wrnCVb^_3>R@Urw`->uOu+)LuPH$;t%8H&(5EO9U?Nb=V%Iw+cH zZ7TN&gMT=Q$vvXv>TdD|O6NO11ms_FXbYZ#!*#46tCg-s5Ylj6dKE@O7%QKQkMQk$ z8>))zNhB00ON!_&TX(RDPKe|KTr?kmYU1!7F{%6Q-vt*4o4ne z`mub@8kNF27hL)oWXfMX_sRx#5xHsN{L1h0DL@v>Bct}{Vcy)-GI>-?JOvByNSRI6 zN3`XrF#e2)?%?X{E0JVI)h-w8BoIY?_1|9!pG9*BeVS(UaZL07Vu{xGP}8c}vo)O1 z1l0XN6~8-|W4V|C5o~G}Dt=#=us`~2e!V3iK+k$=d^SdD5xESya?*?PZpTDsGY`_MOX+EgBpI5nlU2hiAz^<5p$l>Ui0InE zo6IA|A0M4bk#vaowV;Kvy{c!%IZ_ry;xIL9ocwiEQi3X?I*=4~^LuY%zi)EVAqt8x z?(;pm3afKwqy;=a@Wv=^{v6v`#oTPzV`{fRwQkv|HwpcN;cf-f?=9$WF5Z!euCbNVfMw9>^ajD!Q7S5Hp_)HT7S&z_5b z9u;kdm_jQSsp9mMAmsVerw$})WtjXQG)qczzN+VgT9Lf^(t!0O$(3{6{bCzGJjd{o z_^-pEo75hb(tc9S0jKw&VEKLm*C+lHt|w(GIWr_Mye-QSsT$F|M{zS%DLEykyDFrj zSG(RX;__dL7Ut;f`+B(SqdU{CVGhGzMU!{ps~a0zxAH2>9qa&UvIq$D1?zPLhh0u8 zFxE7yaci!iKO&4_KYzuDa-q~r<6G`6sLlPHP5U0`KLt3jUZ;vE)9?K}eFJ0ac(ZDH zqjZ4@T&#lPUb&3;LRpLBvOwKd)(tDIuIA$$JDUo`5!Wxda z(f-qW9#cF_p=Ln`UpUOcoB*dZ!Rqh)TS?q1wd=7>t$V`y>=%1us&FzIaKsA#U_t?Y*kO zWk|ZksiwO0QexF=$2X!oQ}oz#32$F>*yJC&q~cL+N7c6Oc=;5iV~UB}U9M5V=J5|6 zdqP&(r(*4@uCK6GP5MpSS26L$TFCph{x)YHKtVWDk3iwiZQ)xJubh_Oy{h+I%PwY- zus-&iVw`2z9qaVg@XTBHTx^^8AyrY*tkX*z>$I`e%$)}&GOOJxw{O#L)1I!P>+BO$xTgWneF3q5x_ zGg4vz&-ZOP|Cz5m7(V+s#Lb%LiX~Yg$j&*y_w`LxLgaS?)X%}Tt-nzP%6c{H^jJ^onI67-I+a@3bIT?tbM!=48Q)NpIPkU3^+sx z@sWyiQXf9t1wv5LlIAR&EnT4#mjPE~bqjL&0GeJe-vPW z57~_Rp!D%|j=f8uCpXOKRS4BaoT=>>n9KY|n^2WAdsI7MQd_>v3@#+oDP7I-j@q|< zd}63G2Ou*2{5nIo!<>vzN%~KG8JD*y2nlodek*r1Wnb!#EGMP)Cd2QwcGajpH0gU* zl~C4@g3eOy$h-0HZZEEsYCV+D9pv@jx?9zO4{1}$oMX6oMPwSG^Hjj4tWT;3XZ=%7 zG&=eL03V#(PgYk4r9O}b^E_?BFn)wD>vbi3jBdoTgIl20r;H@w4dXiv0pK%83E@U^ zBja#F$321TGS}p)q`N)u`>@hK9R?uqfIhrOqh|*%jH=MuokjWRZ!0x=IWEQWwj_Ob znwig3Kma)hhE_tmJOslV+lztB*u?S8^MoF4@jA&?47bbk^liE0?&?4@f-#jB5M z&Qp^e7T_F4zYyKgR7qpyGs6>KYOdmYnd2*}CpxMlq^em)ysMIZi8+TnQ6|#Yyn6j?4G_q0)Sf-wz^{UaOOSr^$Uc zduKJNs?%x_{Nl<(3(XGC5rD8n#<6i4Y7#B?n=6HTDifQpjO@9*)E$3rGHS%e0($<`b*Hacvvkf^Xx7tdMHGRHU8yX+06I2Flz0X zlJsOo8Aeo|wfDxixt@_iOCh>F`m3I2Y1TMO zl~77~m)d<^{Ha27<9@W zRi5`%`AfZ9P~y46-colOT59-vlC(+STKoO8(H?vzRu4inZ7Bm(^(p26X>Z9Di53 zv}mdJY4M!b%_GeG(?g+8c*!?!t6JZuRcDF*SCxj^Z|9h`cEkWj>T`xDBb4mqfEVNQc6;~aY%1D{rX^Bj zw%VUfe)OzG=5hBkW0Q->R01WSLBNu}l>~noj*=4Jq2<`khwy(Z0_ICq+XT*t`0> z7l%I(BiMZ^hqqGW7_LcYC?%j)uQ@m$eQjC{-`=i2S8IQ>1CyEK47XmiNF|tC!vH~Ab@9W#iKD_rk z)UDKZey4ULh{cKiSr~KOUQH&gTt$SZDg2#PW1lYLZcY0vHGLJ4@W+6*z`C%9eoCm? zNA$ZLCGUjTk}P1b7!a1|wpl7$g1E3rmjlWoEj;Cx=b)dwRo$jfNtn=^dcC*xP|m4! zYu<61f-s>QOXFL9%awKYfUc)TJ0WND^F*n}jC>2|LHG7!iv$LLnF&`@doy2J5p;vK z#70)(&AfC~MDJMokgGS{p?!4@VnJ{1lLCpSlqt;|(z(xEJbfClw`7+eQU=pEC|8m1 zEbzz5HWD^=!k&6<$L)A3U8MT7Zro3%PoIqwMMVsB-m9?*vp*)Uj-FDNf*xP1ga+yU zX6=T0{B*JU0VUv+KMlbZOl?MQ#IW4eWdQNs$Qz#YhbUM&*?p}mxqO#dQs7!seQl+i zyV10}x`eHp`(!v7&E>J=jFa%^_ugB?CAiBIwXRFhvD!H>{RCVV_tq2}T}P$O0=UIB z=*x~Rm|?XQmR%bV{{YnjG3hfkf{pzs-IPg5v+6TMsfQWbBC3T8*%8KL9$a5pv?lW8 zS~yb|Fro0dt%ovBP8u)$7V7tmps91_><{9mmmVjzSI(*;v!K*L=!t@uO3%4O(zfez zL%^#D(vjjg89TMxhsep_A3(m_zK7UnBKQ^g$b9Wp0jG-PH3ud8n1-w^=NGnbEPvh> zLM*!rCx#L!058n2nQvCXbF!)VIE|K$1z%9Yw$M!}0Gb=jonLh$rsHaQO@FiG<#;{G zN%9JRC0&!3PP$8cN@#4Ju7nip?l#wZcb1sCvzL1Z_$-HQU&*^3dp->BO0x;i_so74 zgaysElbdD~0ekJg^aKmoRpv-#Wohu(>C3B`+(lYB}9(4bvs{zqaobwdLhc z)ZOjI##T?wcw5p=e1DpBL{FgY#8Rreo=2+Yf0-FBEsLW z^rp>6xf7mr^pq#p9mbgFlgJ(gN+@Yr~}h z0zxYcF!iCVDmSj{6^_k?tgv0~b2ljms-9ugydp)mw@eyYxW{G9KlW+#V?N@3td)^6 za_8$Lh0SPqojGq#;m$gWPBLxF@X&P7+woJ~nsUwnTBO4@JNY-Z-fVgBZ|#by43bit z@-ZPlm)(b+g!;m#M}~fINrQ|0?TBn(6??f;vrq;N{)zJ-8pnXHF(L2efEdp}<9eDn zVOXH}_9-RGS67%@!yo_)p9?1KjnjpN-gu zp>NFcb@s<5Nc|`i9u;$8duF%*ZvJ@j9pzy7LN2A_NA&Gh2cYa%L>7nA#$lM3%tTIA znLdY@f_&#*suP<^&=f|oMliF*1E(X!s~(nZ*{#z2wIxo&;Gc7cF~_N=nez&lcx83d z-PdMvX7rJIK*b2r?J^m2s0f~ZKXymiX}`Ldc0zo-QQK|gXqxTecAzJkn{kS{qQA%} zL==|ZzkgE=1VUUMNz!hT4mXy>)5anazpz#p+63p){IqAO#?&Ph8(-;{jW9|Z=iJ!0 z50H`4&NC_d>JS>>bO>q~_Y3(|m^61Sx^0TckqCJ=#6wfTvHxefxO~VpQ+$h%T=Oe2 zhCrqF=ywh$-S|Z~ZEMPksaH%2@h)d?*>%i1H5#oIjq@0o)5oZVm-_7S8!hH)NrdG;wK4Jyf7-j&kFb=tSb5nJoOz@wjGZ$e%$P& z$e!-n{;WhQ;%tG{wOQvXEy#V5Qn7hFj}8l|_$=%XjZ#S0{(-y{kgM?pP%T@s=aBQ$ z{)#IjH)cRfji_`y!NcLxX&-?2VeUS4Qi#pB?`k;x=;pS^N^`tkEpKm~Iu9FMu-bp5 zeGl0ksoUcJl%02Bk*@@1CN)s*Y!dXNzrFCLMOCFx?oArrr4IaAmX>zJ4(*mV^vnT{ zqym<3X`3x3GoSU2>kIpjGH_}$D+=L;{0+_hl1|vcwXJBGX7)V)02WyT`!kP+7M7L@ zcSnHzPuQwD-KNL+nm(R;uPEVb5|2n4O?{q3CPDR_+rNLfuz_0l{t-7^H$j2oeOy7T zuY1<)RodjofSa`dUcH+3)_Aqv?EDN^0^r0J(0ZO0i#6M*n$((7a|CG}q{(wg zWAYPX>{@aCX2!8zpxrQVgA83^a(nK7lAXDM`FyYnzriSU(r#5|kIW$1=>;u;vv`u0 z)`e_xNmhDgKpkJzh!k7tYtGIu`Pl$U+QQ;_dL9?!%v-FFJ-T-43Z7m-5)eI!Fle$W z_>ud*hn_~>YXj*O-XUH>v2)c2KtbCPT|(&fIFd$#IT%uLy@t|$Z3oYNjrb>>K4dsNYvL(ogoAwMEF5mve!V9kq2;Y}{ zT{s4THe{R<`y%82~*ndAx(GQLLfR)d>Svp|QB^J9-CFXbo`2_ywCL~*>Jli}cQ zoDG&;mUZXit9}SQEq3mlXVId2+fB7Qm<0+72MM+C!~L5ZuG@ZUfSx378~;G_a9q5+ z`^nJ16?hu%c5*>}DWL8?|F1I`nE!8QFvxz_KR2OJ(7&hgU+m}q0A~LW4tV_k_vX39 z@UH96^&Vi3eCN9Xlcx7Fd{~dGLJnsfB=+-;EA zuiF%DTliVKTWitu0k1MBrXu|({toAQRAs>0mDF-EOl3R0-?{O~XeK&_f8t+ngY82W z(KJe=huwll^)iyarfJjZI!R>2-!59jS&9B8`AE?auWpTO}B@e$G zqf8Gv;y&)V?6Xi(cit(=p2n+JSQ;Kl6xi+R+_L}h#N%M=jW+3f2kAg;e;QD$H>}uS z3*jI>{o$FC!xF#~>8q`^s}8$a+nW>8icwkJ3~xj?Ljn|LNZK`U>L(kg8_~C6nTO$$ zSL%jaTPek#h-sBi(fSp>T?k}y8Eze+EOLtg{I)IJ{9;^*e^0&GZ%(8!UhL>Mc0+pN zL5Fs`vbdx!>dD16YNzg9Ha}Z}^9vV|9q-~EPe9_q45?DX0hxg7Qoo2Bc&>XE?|SgS z4o`3N_6q<(Z4)_ZpCD5Gl9=~yCc2v8c>J@!yWzRA3W2h?ib zgeQ%$X*j?1SKM-8I}Qk$>Y0g#MmVb$zZ@m!;Lx+4D%=M8)pV(R;sq_d*hXDx9QFVv0_KZzJ z)FVDpKMBHCpne?0gKWNxCet3|l|&oYKTuykGRe#SC&%V{K#onu(f)ICIL>U+5xP>Y z&&JCucU>A=r)BJq51>s)8=3l}|GY_MDgdP^AjgY)9n5dSN4bM?aTw8>?$r zxbv}NqpGJdWLA4BVU6wrBNIZBSGNNaJFy_Li~qLR}U3+44k-gs7@`EQQn___GoXG#H!KOs#5U#)Z0Bv6#} zF9PP%!HciyKLDr*Q;hkvRFU%ugaR2sVnLcCM6v(MsA9QsC5F(NVfsWmyBZlgvBZGb z&!)7t5_Xx!9u;-LRoA(wBzbMtlnq_BzPBrU6a4UV%ivgf(38bEu7(gK<1>BiNC}h< zZq*>xKpOZ7=h;$sW}P0RW>5UL$6p71y$abYOg$?gNA9pi6gDCyxLOq0^H`d4 z@^%Po-c~7f&~nb`1cvMwB-;W>c6>{#R9j9?F~|R0I9R>G+HTk?Te==CQ};yX?*7^!HaG7ULiYDRj;HK4V9B`I|kc*5)RpA^%)W$+Fb~lTx`Yz zb}mgt^W&be&mDHoI>i{jBY}m%$NeJTtleb5@Bu}fmM?4qe_e^xh8^7U{>>|!B?cLh z-{rxqcYlh55x0A2@2z>w(#gXJz7dPTSZtKn@ucimR%@9(Z`;N(l9mI?aeuOS`sibc z?%Af6hMj`(Z(iN$Z5_uPZ#w;n&XVtlc2(b}1zj-Uh)r3x?v*o9;y_KuedQLCd7MAE zsvCjh z)x90@QG8y1ZidZ|!x&5YaDG9hCAQ_$F%M4BrK3W6X#X7mZ6?@wVfFwDXm`I$8YLd{ zz?^3uSojM}ZXO3s?Gac>+jo>4KqbS>`A;Qk* z6EAEigvr{u*9$MbT9$CCK+x`A8b)9!^F%49u(L>_^`gC6c2!0w?fy1+zl>fo)HIA^ zI)B;QugMek!Z5v%`oSc0?#=!I@x>^ncS#dcq+Xi}YoauGk)$$dNqlE4 zMM4ny)m~}&1k^2v^kj)!&HY;P6VBka;J-UwC!aR+N`j_#WFy*`=a$*;WtGdz=NEd| zOzO^bKP%Gg+!_$hK*7#iixIjS;bV6;3)!Z}`yzst?9|EwNI)qp0pMp~uQ)DsxV1yV z%{lBBFWntcqc_o81%2JE*PP6>Nh&gT(;+sEPl)3sniqXF8sBw8!+JjJi{*7{2LLcy{o%*6fb3%R48SYoo0)zV6ET*}g6@JH;Z$ z&UB{n`NcN2k5sB2Zx5DgdlX!skRH`5f}qK0lEgbxPOS1+vAvDwZr-2`4A8B^Y?MWc zj=c^Edx~1fA2kKWeWS*C3Wv;qk8*fF2oPw@@A1 zXoBP@+bVw|biUiVu&+-&w(&*UD;K1LCX!1nLvkc9&_$`5e--!jR<6O8R`r;_Z^=^V z=I;Yc)2NnjkbTp_uWX8_xJJ9|kK;TEM~11xY-_#DqP?MN+}F(Hy+-lM!|#I*h&j0y zb}`=qQ$!tpc=~w}@($p3cY2<`-}Im)BKjO{cD;Hoh7Z|s2Yt1UY1Fw)gw$nH9*AhB_oCo4befH)4Xgm zI+97}#LP80M{jEq7Kkh@6zYacPEo;=lnMeQ28;ae$W69g&R*AIeYs28^` z06V;})kNuCkd|+9m6|hd8X8AzEQ>?2!!Hj%YPUi*?pATUHBWQ07RpY*{emn*{cME^A4-mP5^$2lOGL3-}9| zjTLsg(1pw)mvcASb*sYDr-4UioC($Pot{{nTg{;RhtaY_#m64BJ0XY~7A?3`;388E zi(T&S$1ihmB7VLZ?5a%k0yKXSPdgqJzuDru_bl$ILi6~d@jX_A1a_u&yLNqQ|KsAZ zF=f^I>#(7G%)3<|Mtw}#3px#Xo z$>Y;IJ8^fPGF`dHyEgCoAy~wMJg*@#&896SI9j50qgXUVW)*jLRc6p@b$qW?27MGz zTAXmvL8?IHkehXQ{;l(_X#!^xc9;(h{A?Ovbs6pUtFx`Qi1cGUFQ@(12#kv3Y-c;Mxh8_9gIx+(khPu|V1`8qwU~{lp#|ZAvK0f1rJC*!1YR4js zFl#IgkQ(5h8ZU+=mz#5~4FoRyI_I((EKW12tqEUS4M_dS5@YyM#Fe~BJ{d}ij6$-Z zuF`WY&WX?shiE%t412Jp7Y5Gk%m>{qfYh->xt-N#xtqMR>q-(Zm z>NhRaxw{VMPViV&mxV=$9EU?y^{JFVq4PXLCeX-RQ|D;s-md&+J9(X!h))>uQjEQ+ z?P9u4z*IkIotk;IUnh;Sw*7OS=64Y>{D_W3_td%CkZ;`4^kUQKY<#kN+-6z882OJr zOjY@x`TVkoeo)B19e$t2A?Dvk&)xZNM(aQSRix%gbV2l8N~P7pSh>>xo!DH3|NBUF z3F#fK?^RNgoWQ*TPkqblO5`Ipxi)Bx+-ds1n&n#r>PSISYQRiVM3xuud*_c4i$Z~c z{Xf{R76l*WfW5v5^d=l$;$QQx+?ml1R+e8vla9Ci_ZyFK@Scd;BeMXaT1#f2_PtK@ z%D2iUKMUQUyv_&M7Bg>Bc9RIO(SbDMA5R(zPED8MS811DKRxnO=>1%=G!?9=++H|* zC&yp!sM$ZYwj=@8TT+I`q|JB@kMm5!RVZ$g2B27f;O$6y6 zAiarFRFK}g^xk_3O%Uly?+DUMr1t<)Lhm)9cL)$V1PFO!dG6XzAN&F1Y|{5xFGAVP;F{4s3cwgdiqvmzX4)&iEv%k zzxDmiso_GLZdAPeFZ|b={huG@iwl3~)VrLZX*JT&%qYtahe0)uCA9^5*v?>amu_5d znjTWPDr|0;9_<=$*KD54?Q}}dDsk(@-IQ#RF4~ywiVM>52=FQI1`o8OQ?Q-&I`Qo{ zHw~-%9qaJ#?6V;*5g*5gFJ};ae@q3v+Q{aSMWFQJ7jIx!M@eNdJ&R&hnm76F)P-~o z+=Wf(H1bDMW5GTh0z*^;gkPa5P1s#uAA6NucpGexYV4v2ddegHI{;!P!gbACK2FL* zw$*eEY{e)ZMT;(0_8vV`)5c1|L<9ZUpm|*p53pf1?=KV<-zv(sC<}emR|&J|9T``T z{>$uw;hKHWB`V>ic(d-&n#4Ezq$!j9EA5=F!y(&|{p`SDb7_$;okpwLM{|#o*)dFY z)vDdCGWq%y<{pR}ic`a_@5{+nDOI1ESAQtcq`!}uCS*S_p$_JAZ|O|k_t!xeZOojA z%1u`Q1(@_dW~rul@@(-d>gdh8o0j(U^%`xSwT*7h(h#`pAOOIckx(F`Qn{9A&`U7m zpcPwU=AexRM3gA#B#vsQkWc3E$BXC|Fyk;_5aMp7*-vvm7V6PI3|>bgo5CyprkuCp>*wOE{wR-_p1QTh=Bp-YMAmy?C~=R$FOcJeydzHU2T<;?_Q$c-HdA!Q z7{U9ZuSp1E;+%22CPd>Wik^%XSNB)N-_?LNP3{LlYi31y&3bDUa=Mee;PJcuH2+~b znMr2FT=&lGlAVw`+4?-we&d2U)q-4cNFLHP(8x?<&HF)@6h)6%UQdiK(Aw_g z`~xM$z)&?4>Z|kf@4@*BL>d6nJY)6po{>-Ez65Ew>C~m-h%*T#gs=B}=)Euy81l;y zV&{sCcUWh?L(yZl@C;Go#-bbWVs*`2KzY_5eKwp!59wIp(;lRvt-2qW-8AhVtfE(^ zI#``Wlk_q_`Do8?9cw$}WmzeeSkKRlzqgUU_8)9CtM$|&VHV<>FUJu%L_0IB!}Af}nGZ!OuG#fMhw33lHqH!eC?;8C_aX62JWW2QHAGsYPi%(FL8!GAcGEEyj&xAJ;d z5yb9zINJl&HuzgXG#Rs$e>%blu;!P^7HutdvDd|nN!Vmo+)Hvw$o&3;T~lDx_MdYB z*hzKMZS&uB7amtzuC=>dtPW>u=6wx+T_=WRQU2Y&<72MAHD9zRM^j&Xz3X1RcJ&AC zgMsnD+~m8#KQ8p`Kf+-&>d+Ty-k??Zu@Zn)#nQec7Y)%{?%oWxXzC0a zQW%;bN<}TcoXk=8%du)f$c2?}N^ljAIU`YFq|@ApcJnc_08^X=DU6HhZ?>arw|X%2 zugqBJJPIbI6wVt1aO6l-H>o40Qr2&P&FRV{R?ym?i@r>YzrCLFo9iiLTCwjtCAnf0 zRZ=b**%71m7=ym7A7TzD{Cz}(1_|}!#}}9~h@e@a*yOyvWce!(p%2Mswm$T-3t7E& zJ@7TsHW061?EuYghK#t9yEptIeo~=d?jzq3e!2JyxC~j)bQ1P?!x|q()zfHy04JuuV0)Z)PKywb2KJb`Jg@UOk(%5vFsKCn!T$WHw3iKOPZTj)x5> zNpPwV*`mP^J*C9gX(~|RTdftF=l!R~2M|tpK+oKS6nAo2us-NW&B)&wR1HtPB{)t6 zb~1;+0LtxBSEs%;0Pf8@$LRo0&?4vYFA67*@yk8Y=j_u88Syok;N7g4ex>$(_^&KH z!oL0Z`C$W1a%w}>(cdGb*4z(%aCj@9K%Pk9x0>{@{1^8G4=VUT~SEW(X`K zpM!@=N0kFZhT1rAAw>c4Ey~`G4u|lfFTa?ZmO(GI0XLdw?umF}Et)~D*>&}H2Ib{5 zcXj+KbL+cu(sAxEBpK-cfSIE)CoEM{-5PfJNMQPz`MI3qa04zVdu>eQEAeEc@J`Zi z%t&tIz&L1ebz=BoiDQG7K)=p8HKp9;JL1J4%_k%Sb zp(-#!<1S+2&qJ`(IPThUWaRL?Ff)noF;ms$e4Fh%cS5Zvy!^q?gh#h~qfXgZ3#;!T zCb7mW$=>`*zcYU{r5P+jfV0M?PQyP@Wz!;PEak-w(JK zP&6uJnzWN(HM-{aJo~~Ree{rTfm22zt@i2iS*_g7j&oN>^}teqm|)^M>pw#6d|v1z z!ZV$o;_|Z=F6QIp9bbJC(#70YK%eAh(nVgfaAq(%Oqlw>5jtwKZDeq2`?S2cBSZJphJKqcFn>7SSzaNPjJf1Om? zSAzJ>>8U*H5f9lcEtOcCXGG8(b+I@;{WqMl6{HMYijvD4)e5GBr&>u`!-U55pmO1n z6e0r@=iFrthgRl^;2VHmSKOcJx2Op*^y!t$zAUd8$Q;_WM>_7#FumYD24na1y71U_ zQkjTN|4Te1uCVhsLrz50qFOsO$f!8NTh&HwH9wJ=y~ivUBZ*kB+WU$UYIkGTK$4o) zq*ENRCP>JYF0BSNZ1q-6>7>S11`k#@A2_=%IOlqkDMhqrIy@l-j2XKJPuZEuJ*jXg$>Tt~D?i>`%qRHVe=YliNMs$a=^WSlf5Hb#%i-8 zq)F)49h>{t zDltY*|23okzkA~UXA~I!pJbH(wKr8=OMk~c~C1Vg2oE?qOtMIhnBiNy4(goFBz@=vn@c!kItB*Xdm z7V_aP?8sdWdUp1e(E&6{+^GKE`q^%v;%ijAzuBkeLyfuHbv-p9P3tKchCP0yK5MHN ze6MnZk)G8>fDfwxzqIRpQeC#4Y;&kY9FpF+3B9Qx@wlgjh2^S17ZTOQ#_<}o2JAvvAVA6{h zljofrvzP6dN9I3}Aso)D8ypQ5O_xFdzAGAp{93Tx(K2S8=@lWU`bvO7kiuJ3!>ox^ z-VYAYX0F|o^IAhWz!ywP1mVqr{;DEmk@(NVyA9gr;yd~4U+(0+^lUHjgBuu#(|DJ@B&C-(yxLsclUH>RW+lKUZ! zVej#=u+y85MR{F@2GScuUCO&}01O||jE^Z68=}0ch(QOyu!*voyZ4=)4%?*c_5AOo zs?tWn%b`K!>?G}*_kA2u6*gNHcPGjuElgU&0)X!R|JT-r*k z3Dr0~rMdZpj=Nh1BT+1FAy#QjjKEfZS|O{&cA}Z@$cXXa#t8qrx(6CqNd=FLHdB?m zZT83Uzn?yjLZv9i>c$5m%ml(?l8nYh?slJ0CnNe5=t$VPUiPOtClSK>ImP)uN;=d3 zE))-Zb2CW^ADR4QkbSO&rFV)4E8#8EuC-5T^@?WK5hK&tB5`yxKWj8Mr<5FicC==}&}=GM%0k)&NP(;yQWeZkHnJAvkIZ`*#&sO=F>9i14Ld zN4;hk7Awn!#g`RqlqE4SK? z9ES)xHB<7oLfPb0>c6J^@Z-Teh06&)uj=+SAtNXy59F^mZR4zulqK!-cN=y-O`N;l z)vmx9XD*eU|R7zS&c>pbhaUDev#5uc4H zs^$97rkPkIzs7VJr6uI8 ziDJtxDapvkRsZT4^TPVk_T6{!0=8e(x?8&ial=jq561~!$pA*Hm z<$jE+KsxWG?~sosMlKYW@PyI0;n?emimB;#b8eo8g!=Ps8rMu9*f*27ei%WHOuAx~8Cl4hu+OdV&5~n-tgV5SUJ(}qP&m5+pxNG*ck5A&A7!R=h;~q zbnJA9OY{OnF8-81Q5n|LCZ=tC)nYlME>>^bD+Pk^JhW)C&v7;fiVy1hJxJM0nhT0g zf=em(X;{Vz9|Q$*9>DQR#u@yHY2mp!g=pO2p%X}AAo8GmM|S?~7N zuZf{fFRhq!Vjepk*~a*^MGY>{Yp0qUA2EGt774xiV9QiC{78Hv`mSOZssaC+qRA;+ zWn6rIEjuJt?yew=v{{8}PRUfU8&ex0=wo|NDc_>w47>L03vt+^Y8r2nz2{UvOd$rd z8j*2HphWU|r@NL;chaHatTJ^b4dya%z$8Xm-?{Qx4c=Gqbe)n7?emSm%!_mGT1E2- zgNu?HIAiUsYr7p_aqoTl^K8GT1?SfN)S<)`r-QOErVcuL^T@IYMN;pk&Z!dYDiTW= z%IceJ!1P$+C_SYhp}z+Vg=r)vBR*G#z28##GfI49{)+=bo{2`Efa>C9sT{3LUY^TYxU;ZmYG+bk{3wYH4Nr0 zWa;ztg**h^l0Kh%`K^|!&d7I;BQn#K_~K`ZldY+6Ok)Urq5enG1vlK{&nF>_0;A&z z*izogI?ha-C`Hh9!vn~0QVq_&N@`TFwtJVY!!1s~TNBLjhUCatW|61w+CL6M2v_R# zRSe3vG$T&Z*z9ZePhWx(Oy~waN=i6nZxp$AW`=4~znqjcRTd$c;c3*z+QFNXxO^^e zI-lg4BR|1}$~~-PXM5BouO&xtYW&kr2X*Od`cC^q!6eb6=cQ)4W&dxmzCG^d zKizLdb>5c@nxB3>d_fYpko~f0s3$CjVs_jZlsVpL8b?`f%hnlkSD$BV&fCDjXE*;9 z&*{SJ({TpI-6SXE)jv06LnOI?-R?-O3GXt5`i^SCJ(*k^%a{4iq8JTJEJ<}u6G;V` zHKi8V=jlVTqhgv$VWR0@*7fbX{Xw#R4cwKxeHns2LN{O8{VNM8iHk#_byd92*+8^0 zl%z$KcBEbFsf;eR$4(^@T;l!*&vrZL9T zmOy;o1M6MjX^eNPA9ErjOXIYv+I z4Zd;l(?{{WaSoyat)6m=1IYZ|REhnMp*T;_fcREBc(ZptLHH6YcOF6ujto=S@DNDW2 z`=YmIhrJTdHoX9yQS41QM0^Wu)Ntu^%;0CHDomT!GkZDpa}oZfO2eVz+Cjk{`ZDu5 z{mH(wUy3;TTj%a2>;e11+tgjm`U@QW@bn>PoVZS8$5w%4aibD13$G%UsZ^mPgX;8| zLW41hZSDFu-8&t*Q{KJ%14ik{?hv9_`5N-KzO+1;mns!ctAuFFT3KXEE=GII%bm+6 z)4R{q=fcOjA|(2?NPZIU}1 zr%p_}^|b%=SkGAdl*yC@1A~(0*E<3z;I>CvO=f-`CcBu*W8ZD>aZ)LWmY2Xcw_ye3 z^IV^Q>u{^KfFxn}gbOD}-dwdKQLG%>=`nWPi+81-wd-rorAXZxvEG{nG?oZ*D^ZPz zYs!r1C7KISKl@RVr0>+%j~o)19skz8pqqfWJ*&w#)xv;|pN&UekL*WpL&jq`wN_?QJ(HH;cX=)FyN z`1})GG*~XYzHYduQJls#_X%Qeg-rv}$-R^x19cMX_CIgDHpG+CUcW9SnwjRUJKcqI z6In={vT{F)e{cVQZD{mGrQ3+G+}S`!Jiq>EPU7~bHgb3 z<%#PByNV5l-dDF&2L=Vt%6k?~Qc+v|$y621T|Y7&nga~;$hi0W&sxUc~D4O%9- zLBp5w>$#Vc6$l6{ty+6LGswvwQc2+-`t|ToMc;ZOJ#`pN2$d+A{#rXVbC$J;)5=3# zzE`zqd64+i{Yy=)J|syh_S#*a@JmsPRn)QJXR2mR0)--^eWC#O)iJxAAsMQwpC&jU zb#^V}mVm{{DQD(bFpDavJ48{Xr;>0|F*q8#_{vOcR)XN~O2eEPZ$mp(FVv-UB2?&2 zPO|15=@@C{9m}8F5^77uJ%zRAGkv!xIO3!~t+u5hoMUAzGMsJvtb_`;H0ihOsMAMF zt*G<;yxkqQ_3Ns=NS=5bGFfNtbj%XUJZWrJg(_S+6W0zhBnj_y8^wWUp**lF8Dm7k z3*`k)a?OBT+D9fENA~3GpBj7-NRpn^)iZJCAh5V15n0xIz7kQV=ZZ;<>#SFwv|Cn8tN%T*nUxw@Brovx#6s^;^N-SXMp-kDf}ke2}ZPVLb(pi?zP2 zjCRc&==PXmsk7hgbpPCzZ}6@|XGIc^z|+VT+dOsrGyD4D%QSyud^3@Act>f8*l`W) zu$`<+71M^Qy)XFb57e@P9d&8{;eC(+VP=-`)qpd7grOYXW8J!}9e1Y^f%!cZ8|c7_ zf)=TZpJ-Mw88dA8N#ZvcW3T}0197GrFpK7zDuV+ zZZ(W&B|3^y0MN8ym^J7oa>*#9W%BlmzrJfu`_CTpy`i>%Z}A`5eQCWh1i17_YFWPd zEvy4h0;$J&lPw|m@uzfuqB43#AaZdUDF?)J*F;$`dz&UYm+QWoAna+!59B61xf7qB zUAhHd{8Z&kU^^PC%N#6fij{W-l z&i*venTUb#{>Kve*Z-}Kw_5CV!~FaAUti9j1OJAzztl%DLB`DVSC91cIg(NTe~p6= znQ4Q!BWQmjJxDjp`TlzmDQ$C{c*C}BF5riYPE;`Cc=uYl^uL=;*;>Z@tOdk{A-5tk zqZ!XN0~^-=+x}vNaf%tW*t(SKSKw6U$YaiRLv!;4JL(^~=;`}N&f7(SnVl9Qgsb#@ z%1xf)`z(FVCI1>%Wv7^uJuek8QiaMWVF-`u_gTfZjWMA z630S=jKDQqD9Wr1W14?oo*?lh;x5%fFZ;iBt_O;PVf{6iUp=iq#Qe853b~aO{;Ql| z9l!y@GKXIMgC_UA`{|+o9WwLu{!G2oYF!p;&!NHoKcjFj3{vMp1HS3DMjS8XZywr49161@Z~;Z59zX8>xaTu+ zF-Jh}rA7xo>RkhIPU@GAGH!?Xq;l#_X@#{-VjZ5GPfBd-jNr7v+ zTs$=G+wnJ1k||j|XjXJ`rD3dIk9W3clFqQK6BZ}-oy}+y-`QgVBtexJ0bRv*VmJX= zRExW8Kh}W#XzK|=+^)hsye0a)leD$=6^xn9BYVdfhbwYY2 zYy7R^YDF{splH<%z>;l5ebI64(>MEW1BZUCUepvd@Lr%I3%En{?067c(a6q(gQopM z1OCc!Ml^y~>W6R@PAe-^>0n23TQI5c9b^8sk2n>I&LGuk?rZ_(LICp{@r5@G-0AJ| z`I*h!LN7c8I*l<&xwaEFFho_>erqWJ+FjsiR0~|ujI54l-1Ezh!{+pQV6Sjdy452A zjIs2`*kTG78Hx7yu^}89)C!wijarY6@*L8YZ{3f&c)LMhhwbm<^JvvvzGLD=P1f&+ z$nyDNYiLQ^3OR&NZ#-1X(d?MS37_dUXZy6L9FwW9~vp3ef8x!eY^$`y?*}keT6ELYpo+hZ{Y5gupyTe_6^dbZe9{B2NgJ&adA;*zuicua z0IgW71U22kp6H#(x2ddE+T%oX;z1Uv3iVjEaqgC+3pO6O2OK}|@3uF68mq~UjSNUi zgM>=Awd>E6obG8Z?zF8usx5ox|E89!q%$Xd$O=ZCZ)f!s1V7UcG;=H4!(9<5(=F|t zA}NDwSM?&Jg;>E1Vh5D%#7{269VqoT;O0<>UHA#L=Kua-EFE!}&{ z19raTS6O!q9*vh@XNW!r)=;sVvV!Cb1UBkw@N8f$@P(fB{zpD0m-);Z&DpfECnAZH z71Xa5tj2`pa~a(hVO3x2F)j+A^ns@=8u zI5|Nxp9)MIMWsQ@u*F9QLN9Th3u@D|c_4pWZjPjsd8eJ&H+@<#P(pe`m;FbHca+74 zrcm6==AV4FL3)Pgq1hI6KNA^!nur6R5v6HSI&uKZUz-~Y>01vEkRZ3_zCDcw#fj4g ztjiF-yYjb?O%qsJ9LUy$ekjE~d?BR;@Ds8`;fG7lCYqQ+Kxyr6hfgc>khh^9AO$>S zyi;qwiYF~IK9XRnuGQpw*U=@+gtn~?lzuB#IoJ2u6^X+@yvkQQ9dlvwNgwT!*F@uo z8Mhx)M+Tg)S5)}Xq*lYtQQj?h!@L~hhtTdfW19ibC7qvWl4|WfAr&UR zU1YEv_H-;f??CIW}PJMN#qkDM%v-Yn8 z${r=|qQgFgBK&x*Y+tKr2e0VVIqh0|IdK6!9^2@rO?wWZUr)2_E8%Z&z2=V(<7}C3 zA%FUH0TQ#i7r;IXjber$cH-vDwJo>d89nxnG=D-8vly6b=l$anhiFT$=oA<_vFX5g zB@;3wTjuu~i#F=+=XQifxtt09*~FbwvsUCZJN`0B#6#oYyl_LvX=8tb4!nttUeIMk zh(E*o>Zd%+Bfauej1q1#v=MM_0``hl)H zMO2lmy~@7J7sMFXnMf;qmSmXA{2JRIW3-RUWfHQ=QMD0uPq5YJjfi6zFcG_aM&|xS zY3ca!oUk9wOkn6{^Yo}5@O&Yh_Q4u;C%Iz3NLbo1*I3n>Dl<(MdtFn_%4n=bs&&Pp zS=+6a`WqZ5t8%X-B}xuww8c-|nYO@^8rF#_6}i#n*yN?Xp6#1|~J@2?Z5E15~eYy%~>`?`qc` zpCu30nS6o)f6gsMvS9C>b!+!tK>RzT!+8DWMPn0|a@0~Kx$iY1o%(Ik+cyQ-WN$`p z*lM#Z*zaGu`%hh@-?O*ZLGi>IFTM%QM5L4D;*N_?S_Ma|PJt{oT?PY zWww6dD{5l3=sf$w7p+L`P}6y>U*79|JZY&TF?<${H^#*MsWv>40|6H<=V_1Kr>5N9Ezal9te9Bg7!x1RxGeRCX?P)OW$o&CGr1~`v zW^i}0k7-i1zgRw`w9Dp>k96z?V{_INMj_(+jU2x0K~DeGhbqxicDFBxYwl-50lvlJ z`f3h%oxw3Nt6vi3!IsxWoiEL)OHb$h2QkV#*jW|sOwih~j!)_PV$bS(e4)EE^SN^@ zona9(0DZpalE!}^cvr6Mu#8+-ChYs%$1&=&b?lnaZX!iuw4K(-6@0MfmiQ?{bV;b0H!FgKw#%yOAIHrJ~}`x1j(J@@Fa8&64L&jCfz`wz{% zOJ`L(;o5oPsUgbu;E{Az*7`V z=zSI8r0=gscwSYv^9K}MWJbCKdikF0zFRt{hZz0xu7%iBme>moj z|BElp2X%x4%)lpXIWxxvXG=EC0XFs7!%QytX`f*Wt`TPH8%7UWY0vL5uLhY!q`9ufaQU3TSk z5)+ni2watd zby!OQo|Ea%9?)K^!4LlK&H47z(s6HSr$Ri3 zfd+MWWvi7_@Bfq?Q>dqsbCxo;U5^yzo@VFQS!A5KSMjao{jdm)zykq%y`35+dD%a! zDnV^*x8T#wSW}IIcU!?fQ-aC+Y_{DhBq=a~hqud@gT%82_-xC8KA4|N-|e89o zqdRPKHNa-P)WiI&x$>URLf`w8#BAg=7s;um3-2k%-+z-rr17-rwX1ht$ zw3C*!;tJ`P-Qu2YB@>^3?q%LIi&H3t_clchhy9vYTr02pB6rf~3Xh?o?J6R_?Nbf% z!&V*hnI&?Vitr`v_>%JOnz1^|7(C~PtzL0Nqp2rVsf$nhqv zsZr{mfY}-5-n{?#7?2}|UUaC{5t(2t_m+-oT36`a>2*eRV*Ap)vN&FJ? zbz{&PTpU%JCxbBJe?2GUJA3vDC`ZQp0*xYx@&y-w2SV-#;Fq}PMM%KpGrvN33& zNtwmy>UikBOV;XywB7b&^<@6;D>60jVF}~0d#k(!9wwXnabXJsuh*L74uavDIZAWg zAoqt*)DKFF$J720LjOSR$De`cer|YKw(}8O_G{mcZfH$u_N zZDaM`pr3sB8vMjmt<3muW|+hD9fbGD;+e^esOj zxp>c&1D0q{93ILcWQ3d_o9tb^UG-kv{aG=u`{Ue|>*yVu@`48mY2%TSxC;y5c^TE+ zqVKP?YHx*-WG~5ZdCTQz1Ge?lo;g`R-dvM!nDio`l?JZ9TX-(|+@7lMlc}w8@c4Ab zMSlbH%~aASpQi~I3xy&s^Ylg8*=?&C1iL6C2{X-XPy@}Cx1;kF)~>jX(Egc>(~%-N zYV^ZPwBAfV`Z#D>Tk`OjwnR1oT=5-tlI2v)dvg`L;w%+)rm7>f;$o%0r5vm-dwj$t$E=Eqh`08+R1Rr-Co{3(-d+f|6d zb0EAge>pHEp?i^3nF?AQ|*2eX6#3zGth{a8OX#3T~t|zj0_m5%O)Gk9AXqbN&MSy_HswDt~1Z^nU - - - 1.0 - -

    ### uVision Project, (C) Keil Software
    - - - *.c - *.s*; *.src; *.a* - *.obj; *.o - *.lib - *.txt; *.h; *.inc - *.plm - *.cpp - 0 - - - - 0 - 0 - - - - rt-thread - 0x4 - ARM-ADS - - 10800000 - - 1 - 1 - 0 - 1 - 0 - - - 1 - 65535 - 0 - 0 - 0 - - - 79 - 66 - 8 - .\build\ - - - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - - - 0 - 0 - 1 - - 255 - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 1 - 1 - 0 - 0 - 1 - 0 - 0 - 3 - - - - - - - - - - - BIN\CMSIS_AGDI.dll - - - - 0 - UL2CM3 - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F10x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F105RC$Flash\GD32F10x_CL.FLM)) - - - - - 0 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - 0 - 0 - 0 - - - - - - - - - - - - - ::CMSIS - 0 - 0 - 0 - 1 - - - diff --git a/bsp/gd32/gd32107c-eval/project.uvoptx b/bsp/gd32/gd32107c-eval/project.uvoptx deleted file mode 100644 index 4dfb02c5ad..0000000000 --- a/bsp/gd32/gd32107c-eval/project.uvoptx +++ /dev/null @@ -1,180 +0,0 @@ - - - - 1.0 - -
    ### uVision Project, (C) Keil Software
    - - - *.c - *.s*; *.src; *.a* - *.obj; *.o - *.lib - *.txt; *.h; *.inc - *.plm - *.cpp - 0 - - - - 0 - 0 - - - - rt-thread - 0x4 - ARM-ADS - - 12000000 - - 1 - 1 - 0 - 1 - 0 - - - 1 - 65535 - 0 - 0 - 0 - - - 79 - 66 - 8 - .\build\ - - - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - - - 1 - 0 - 1 - - 255 - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 1 - 1 - 0 - 0 - 1 - 0 - 0 - 3 - - - - - - - - - - - BIN\CMSIS_AGDI.dll - - - - 0 - UL2CM3 - UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0GD32F10x_CL -FL040000 -FS08000000 -FP0($$Device:GD32F107VC$Flash\GD32F10x_CL.FLM) - - - - - 0 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - 0 - 0 - 0 - - - - - - - - - - - - - ::CMSIS - 0 - 0 - 0 - 1 - - -
    diff --git a/bsp/gd32/gd32205r-start/Kconfig b/bsp/gd32/gd32205r-start/Kconfig deleted file mode 100644 index 8cbc7b71a8..0000000000 --- a/bsp/gd32/gd32205r-start/Kconfig +++ /dev/null @@ -1,21 +0,0 @@ -mainmenu "RT-Thread Configuration" - -config BSP_DIR - string - option env="BSP_ROOT" - default "." - -config RTT_DIR - string - option env="RTT_ROOT" - default "../../.." - -config PKGS_DIR - string - option env="PKGS_ROOT" - default "packages" - -source "$RTT_DIR/Kconfig" -source "$PKGS_DIR/Kconfig" -source "../libraries/Kconfig" -source "board/Kconfig" diff --git a/bsp/gd32/gd32205r-start/project.uvoptx b/bsp/gd32/gd32205r-start/project.uvoptx deleted file mode 100644 index 3511a69bb3..0000000000 --- a/bsp/gd32/gd32205r-start/project.uvoptx +++ /dev/null @@ -1,180 +0,0 @@ - - - - 1.0 - -
    ### uVision Project, (C) Keil Software
    - - - *.c - *.s*; *.src; *.a* - *.obj; *.o - *.lib - *.txt; *.h; *.inc - *.plm - *.cpp - 0 - - - - 0 - 0 - - - - rt-thread - 0x4 - ARM-ADS - - 12000000 - - 1 - 1 - 0 - 1 - 0 - - - 1 - 65535 - 0 - 0 - 0 - - - 79 - 66 - 8 - .\build\ - - - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - - - 0 - 0 - 1 - - 255 - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 1 - 1 - 0 - 0 - 1 - 0 - 0 - 3 - - - - - - - - - - - BIN\CMSIS_AGDI.dll - - - - 0 - UL2CM3 - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F20x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F205RC$Flash\GD32F20x_CL.FLM)) - - - - - 0 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - 0 - 0 - 0 - - - - - - - - - - - - - ::CMSIS - 0 - 0 - 0 - 1 - - -
    diff --git a/bsp/gd32/gd32303e-eval/Kconfig b/bsp/gd32/gd32303e-eval/Kconfig deleted file mode 100644 index 8cbc7b71a8..0000000000 --- a/bsp/gd32/gd32303e-eval/Kconfig +++ /dev/null @@ -1,21 +0,0 @@ -mainmenu "RT-Thread Configuration" - -config BSP_DIR - string - option env="BSP_ROOT" - default "." - -config RTT_DIR - string - option env="RTT_ROOT" - default "../../.." - -config PKGS_DIR - string - option env="PKGS_ROOT" - default "packages" - -source "$RTT_DIR/Kconfig" -source "$PKGS_DIR/Kconfig" -source "../libraries/Kconfig" -source "board/Kconfig" diff --git a/bsp/gd32/gd32303e-eval/project.uvoptx b/bsp/gd32/gd32303e-eval/project.uvoptx deleted file mode 100644 index 18fdad5165..0000000000 --- a/bsp/gd32/gd32303e-eval/project.uvoptx +++ /dev/null @@ -1,180 +0,0 @@ - - - - 1.0 - -
    ### uVision Project, (C) Keil Software
    - - - *.c - *.s*; *.src; *.a* - *.obj; *.o - *.lib - *.txt; *.h; *.inc - *.plm - *.cpp - 0 - - - - 0 - 0 - - - - rt-thread - 0x4 - ARM-ADS - - 12000000 - - 1 - 1 - 0 - 1 - 0 - - - 1 - 65535 - 0 - 0 - 0 - - - 79 - 66 - 8 - .\build\ - - - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - - - 0 - 0 - 1 - - 0 - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 1 - 1 - 0 - 0 - 1 - 0 - 0 - 3 - - - - - - - - - - - BIN\CMSIS_AGDI.dll - - - - 0 - UL2CM3 - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F30x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F305RC$Flash\GD32F30x_CL.FLM)) - - - - - 0 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - 0 - 0 - 0 - - - - - - - - - - - - - ::CMSIS - 0 - 0 - 0 - 1 - - -
    diff --git a/bsp/gd32/gd32305r-start/Kconfig b/bsp/gd32/gd32305r-start/Kconfig deleted file mode 100644 index 8cbc7b71a8..0000000000 --- a/bsp/gd32/gd32305r-start/Kconfig +++ /dev/null @@ -1,21 +0,0 @@ -mainmenu "RT-Thread Configuration" - -config BSP_DIR - string - option env="BSP_ROOT" - default "." - -config RTT_DIR - string - option env="RTT_ROOT" - default "../../.." - -config PKGS_DIR - string - option env="PKGS_ROOT" - default "packages" - -source "$RTT_DIR/Kconfig" -source "$PKGS_DIR/Kconfig" -source "../libraries/Kconfig" -source "board/Kconfig" diff --git a/bsp/gd32/gd32305r-start/project.uvoptx b/bsp/gd32/gd32305r-start/project.uvoptx deleted file mode 100644 index 18fdad5165..0000000000 --- a/bsp/gd32/gd32305r-start/project.uvoptx +++ /dev/null @@ -1,180 +0,0 @@ - - - - 1.0 - -
    ### uVision Project, (C) Keil Software
    - - - *.c - *.s*; *.src; *.a* - *.obj; *.o - *.lib - *.txt; *.h; *.inc - *.plm - *.cpp - 0 - - - - 0 - 0 - - - - rt-thread - 0x4 - ARM-ADS - - 12000000 - - 1 - 1 - 0 - 1 - 0 - - - 1 - 65535 - 0 - 0 - 0 - - - 79 - 66 - 8 - .\build\ - - - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - - - 0 - 0 - 1 - - 0 - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 1 - 1 - 0 - 0 - 1 - 0 - 0 - 3 - - - - - - - - - - - BIN\CMSIS_AGDI.dll - - - - 0 - UL2CM3 - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F30x_CL -FS08000000 -FL040000 -FP0($$Device:GD32F305RC$Flash\GD32F30x_CL.FLM)) - - - - - 0 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - 0 - 0 - 0 - - - - - - - - - - - - - ::CMSIS - 0 - 0 - 0 - 1 - - -
    diff --git a/bsp/gd32/gd32407v-start/Kconfig b/bsp/gd32/gd32407v-start/Kconfig deleted file mode 100644 index 8cbc7b71a8..0000000000 --- a/bsp/gd32/gd32407v-start/Kconfig +++ /dev/null @@ -1,21 +0,0 @@ -mainmenu "RT-Thread Configuration" - -config BSP_DIR - string - option env="BSP_ROOT" - default "." - -config RTT_DIR - string - option env="RTT_ROOT" - default "../../.." - -config PKGS_DIR - string - option env="PKGS_ROOT" - default "packages" - -source "$RTT_DIR/Kconfig" -source "$PKGS_DIR/Kconfig" -source "../libraries/Kconfig" -source "board/Kconfig" diff --git a/bsp/gd32/gd32407v-start/project.uvoptx b/bsp/gd32/gd32407v-start/project.uvoptx deleted file mode 100644 index 6f7965ced8..0000000000 --- a/bsp/gd32/gd32407v-start/project.uvoptx +++ /dev/null @@ -1,180 +0,0 @@ - - - - 1.0 - -
    ### uVision Project, (C) Keil Software
    - - - *.c - *.s*; *.src; *.a* - *.obj; *.o - *.lib - *.txt; *.h; *.inc - *.plm - *.cpp - 0 - - - - 0 - 0 - - - - rt-thread - 0x4 - ARM-ADS - - 12000000 - - 1 - 1 - 0 - 1 - 0 - - - 1 - 65535 - 0 - 0 - 0 - - - 79 - 66 - 8 - .\build\ - - - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - - - 1 - 0 - 1 - - 255 - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 1 - 1 - 0 - 0 - 1 - 0 - 0 - 3 - - - - - - - - - - - BIN\CMSIS_AGDI.dll - - - - 0 - UL2CM3 - UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0GD32F4xx_3MB -FL0300000 -FS08000000 -FP0($$Device:GD32F407VK$Flash\GD32F4xx_3MB.FLM) - - - - - 0 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - 0 - 0 - 0 - - - - - - - - - - - - - ::CMSIS - 0 - 0 - 0 - 1 - - -
    diff --git a/bsp/gd32/gd32450i-eval/Kconfig b/bsp/gd32/gd32450i-eval/Kconfig deleted file mode 100644 index 8cbc7b71a8..0000000000 --- a/bsp/gd32/gd32450i-eval/Kconfig +++ /dev/null @@ -1,21 +0,0 @@ -mainmenu "RT-Thread Configuration" - -config BSP_DIR - string - option env="BSP_ROOT" - default "." - -config RTT_DIR - string - option env="RTT_ROOT" - default "../../.." - -config PKGS_DIR - string - option env="PKGS_ROOT" - default "packages" - -source "$RTT_DIR/Kconfig" -source "$PKGS_DIR/Kconfig" -source "../libraries/Kconfig" -source "board/Kconfig" diff --git a/bsp/gd32/gd32450i-eval/README.md b/bsp/gd32/gd32450i-eval/README.md deleted file mode 100644 index 297275cb63..0000000000 --- a/bsp/gd32/gd32450i-eval/README.md +++ /dev/null @@ -1,94 +0,0 @@ -# GD32450I-EVAL开发板BSP说明 - -## 简介 - -GD32450I-EVAL是兆易创新推出的一款GD32F4XX系列的评估板,最高主频高达200M,该开发板具有丰富的板载资源,可以充分发挥 GD32F450IKH6的芯片性能。 - -该开发板常用 **板载资源** 如下: - -- GD32F450IKH6,主频 200MHz,3072KB FLASH ,256KB RAM - -- 常用外设 - - - LED :3个,LED1 (PE2),LED2(PE3),LED3(PF10) - - 按键:2个,K1(PA0),K2(PC13),K3(PB14) - -- 常用接口:USB 接口 - -- 调试接口:GD-LINK - -## 外设支持 - -本 BSP 目前对外设的支持情况如下: - -| **片上外设** | **支持情况** | **备注** | -|:--------- |:--------:|:------------------------------------- | -| GPIO | 支持 | PA0, PA1... PK15 ---> PIN: 0, 1...144 | -| UART | 支持 | UART0 - UART7 | -| I2C | 支持 | I2C1 | -| SPI | 支持 | SPI0 - SPI2 | -| SPI FLASH | 支持 | | -| **扩展模块** | **支持情况** | **备注** | -| 暂无 | 暂不支持 | 暂不支持 | - -## 使用说明 - -使用说明分为如下两个章节: - -- 快速上手 - - 本章节是为刚接触 RT-Thread 的新手准备的使用说明,遵循简单的步骤即可将 RT-Thread 操作系统运行在该开发板上,看到实验效果 。 - -- 进阶使用 - - 本章节是为需要在 RT-Thread 操作系统上使用更多开发板资源的开发者准备的。通过使用 ENV 工具对 BSP 进行配置,可以开启更多板载资源,实现更多高级功能。 - -### 快速上手 - -本 BSP 为开发者提供 MDK5 工程,并且支持 GCC 开发环境,也可使用RT-Thread Studio开发。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 - -#### 硬件连接 - -使用数据线连接开发板到 PC,使用RS232线连接COM0,打开电源开关。 - -#### 编译下载 - -双击 project.uvprojx 文件,打开 MDK5 工程,编译并下载程序到开发板。 - -> 工程默认配置使用 GD-Link 仿真器下载程序,在通过 GD-Link 连接开发板的基础上,点击下载按钮即可下载程序到开发板 - -#### 运行结果 - -下载程序成功之后,系统会自动运行,LED 闪烁。 - -连接开发板对应串口到 PC , 在终端工具里打开相应的串口(115200-8-1-N),复位设备后,可以看到 RT-Thread 的输出信息: - -```bash - \ | / -- RT - Thread Operating System - / | \ 4.1.0 build Mar 28 2022 - 2006 - 2022 Copyright by rt-thread team -msh > -``` - -### 进阶使用 - -此 BSP 默认只开启了 GPIO 和 串口1的功能,如果需使用高级功能,需要利用 ENV 工具对BSP 进行配置,步骤如下: - -1. 在 bsp 下打开 env 工具。 - -2. 输入`menuconfig`命令配置工程,配置好之后保存退出。 - -3. 输入`pkgs --update`命令更新软件包。 - -4. 输入`scons --target=mdk4/mdk5` 命令重新生成工程。 - -## 注意事项 - -暂无 - -## 联系人信息 - -维护人: - -- [CornerOfSkyline](https://github.com/CornerOfSkyline), 邮箱: \ No newline at end of file diff --git a/bsp/gd32/gd32450i-eval/board/board.h b/bsp/gd32/gd32450i-eval/board/board.h deleted file mode 100644 index 66708836c7..0000000000 --- a/bsp/gd32/gd32450i-eval/board/board.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-08-20 BruceOu first implementation - */ -#ifndef __BOARD_H__ -#define __BOARD_H__ - -#include "gd32f4xx.h" -#include "drv_usart.h" -#include "drv_gpio.h" - -#include "gd32f4xx_exti.h" - -#define EXT_SDRAM_BEGIN (0xC0000000U) /* the begining address of external SDRAM */ -#define EXT_SDRAM_END (EXT_SDRAM_BEGIN + (32U * 1024 * 1024)) /* the end address of external SDRAM */ - -// Internal SRAM memory size[Kbytes] <8-256> -// Default: 256 -#ifdef __ICCARM__ -// Use *.icf ram symbal, to avoid hardcode. -extern char __ICFEDIT_region_RAM_end__; -#define GD32_SRAM_END &__ICFEDIT_region_RAM_end__ -#else -#define GD32_SRAM_SIZE 192 -#define GD32_SRAM_END (0x20000000 + GD32_SRAM_SIZE * 1024) -#endif - -#ifdef __CC_ARM -extern int Image$$RW_IRAM1$$ZI$$Limit; -#define HEAP_BEGIN (&Image$$RW_IRAM1$$ZI$$Limit) -#elif __ICCARM__ -#pragma section="HEAP" -#define HEAP_BEGIN (__segment_end("HEAP")) -#else -extern int __bss_end; -#define HEAP_BEGIN (&__bss_end) -#endif - -#define HEAP_END GD32_SRAM_END - -#endif - diff --git a/bsp/gd32/gd32450i-eval/project.uvoptx b/bsp/gd32/gd32450i-eval/project.uvoptx deleted file mode 100644 index 1ae6de1bf8..0000000000 --- a/bsp/gd32/gd32450i-eval/project.uvoptx +++ /dev/null @@ -1,190 +0,0 @@ - - - - 1.0 - -
    ### uVision Project, (C) Keil Software
    - - - *.c - *.s*; *.src; *.a* - *.obj; *.o - *.lib - *.txt; *.h; *.inc - *.plm - *.cpp - 0 - - - - 0 - 0 - - - - rt-thread - 0x4 - ARM-ADS - - 12000000 - - 1 - 1 - 0 - 1 - 0 - - - 1 - 65535 - 0 - 0 - 0 - - - 79 - 66 - 8 - .\build\ - - - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - - - 1 - 0 - 1 - - 255 - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 1 - 1 - 0 - 0 - 1 - 0 - 0 - 3 - - - - - - - - - - - BIN\CMSIS_AGDI.dll - - - - 0 - CMSIS_AGDI - -X"CMSIS-DAP" -O206 -S0 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_3MB.FLM -FS08000000 -FL0300000 -FP0($$Device:GD32F450IK$Flash\GD32F4xx_3MB.FLM) - - - 0 - JL2CM3 - -U59401765 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_3MB.FLM -FS08000000 -FL0300000 -FP0($$Device:GD32F450IK$Flash\GD32F4xx_3MB.FLM) - - - 0 - UL2CM3 - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000 -FP0($$Device:GD32F450IK$Flash\GD32F4xx_3MB.FLM)) - - - - - 0 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - 0 - 0 - 0 - - - - - - - - - - - - - ::CMSIS - 0 - 0 - 0 - 1 - - -
    diff --git a/bsp/gd32/gd32450i-eval/project.uvprojx b/bsp/gd32/gd32450i-eval/project.uvprojx deleted file mode 100644 index 00f3dc6b12..0000000000 --- a/bsp/gd32/gd32450i-eval/project.uvprojx +++ /dev/null @@ -1,754 +0,0 @@ - - - 2.1 -
    ### uVision Project, (C) Keil Software
    - - - rt-thread - 0x4 - ARM-ADS - 0 - - - GD32F450IK - GigaDevice - GigaDevice.GD32F4xx_DFP.2.1.0 - http://gd32mcu.com/data/documents/pack/ - IRAM(0x20000000,0x040000) IROM(0x08000000,0x0300000) CPUTYPE("Cortex-M4") FPU2 CLOCK(20000000) ELITTLE - - - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000 -FP0($$Device:GD32F450IK$Flash\GD32F4xx_3MB.FLM)) - 0 - $$Device:GD32F450IK$Device\Include\gd32f4xx.h - - - - - - - - - - $$Device:GD32F450IK$SVD\GD32F4xx.svd - 0 - 0 - - - - - - - 0 - 0 - 0 - 0 - 1 - - .\build\ - rtthread - 1 - 0 - 0 - 1 - 0 - .\build\ - 1 - 0 - 0 - - 0 - 0 - - - 0 - 0 - 0 - 0 - - - 0 - 0 - - - 0 - 0 - 0 - 0 - - - 1 - 0 - fromelf --bin !L --output rtthread.bin - - 0 - 0 - 0 - 0 - - 0 - - - - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 3 - - - 1 - - - SARMCM3.DLL - -REMAP -MPU - DCM.DLL - -pCM4 - SARMCM3.DLL - -MPU - TCM.DLL - -pCM4 - - - - 1 - 0 - 0 - 0 - 16 - - - - - 1 - 0 - 0 - 1 - 1 - 4096 - - 1 - BIN\UL2CM3.DLL - - - - - - 0 - - - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 1 - 0 - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - "Cortex-M4" - - 0 - 0 - 0 - 1 - 1 - 0 - 0 - 2 - 0 - 0 - 0 - 0 - 8 - 0 - 0 - 0 - 0 - 3 - 4 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 1 - 0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x40000 - - - 1 - 0x8000000 - 0x300000 - - - 0 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x0 - 0x0 - - - 1 - 0x8000000 - 0x300000 - - - 1 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x0 - 0x0 - - - 0 - 0x20000000 - 0x30000 - - - 0 - 0x10000000 - 0x10000 - - - - - - 1 - 4 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 1 - 1 - 1 - 1 - 0 - 0 - 0 - - - USE_STDPERIPH_DRIVER, GD32F450, __RTTHREAD__, RT_USING_ARM_LIBC, __CLK_TCK=RT_TICK_PER_SECOND - - applications;.;..\..\..\components\libc\compilers\common;..\..\..\components\libc\compilers\common\extension;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;board;..\libraries\gd32_drivers;..\..\..\components\finsh;.;..\..\..\include;..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Include;..\libraries\GD32F4xx_Firmware_Library\CMSIS;..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Include;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\posix\io\stdio;..\..\..\components\libc\posix\ipc;..\..\..\examples\utest\testcases\kernel - - - - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 4 - - - - - - - - - 1 - 0 - 0 - 0 - 1 - 0 - 0x08000000 - 0x20000000 - - .\gd32_rom.ld - - - - - - - - - - - Applications - - - main.c - 1 - applications\main.c - - - - - Compiler - - - syscalls.c - 1 - ..\..\..\components\libc\compilers\armlibc\syscalls.c - - - - - syscall_mem.c - 1 - ..\..\..\components\libc\compilers\armlibc\syscall_mem.c - - - - - stdlib.c - 1 - ..\..\..\components\libc\compilers\common\stdlib.c - - - - - time.c - 1 - ..\..\..\components\libc\compilers\common\time.c - - - - - CPU - - - showmem.c - 1 - ..\..\..\libcpu\arm\common\showmem.c - - - - - backtrace.c - 1 - ..\..\..\libcpu\arm\common\backtrace.c - - - - - div0.c - 1 - ..\..\..\libcpu\arm\common\div0.c - - - - - context_rvds.S - 2 - ..\..\..\libcpu\arm\cortex-m4\context_rvds.S - - - - - cpuport.c - 1 - ..\..\..\libcpu\arm\cortex-m4\cpuport.c - - - - - DeviceDrivers - - - ringbuffer.c - 1 - ..\..\..\components\drivers\ipc\ringbuffer.c - - - - - pipe.c - 1 - ..\..\..\components\drivers\ipc\pipe.c - - - - - dataqueue.c - 1 - ..\..\..\components\drivers\ipc\dataqueue.c - - - - - waitqueue.c - 1 - ..\..\..\components\drivers\ipc\waitqueue.c - - - - - workqueue.c - 1 - ..\..\..\components\drivers\ipc\workqueue.c - - - - - ringblk_buf.c - 1 - ..\..\..\components\drivers\ipc\ringblk_buf.c - - - - - completion.c - 1 - ..\..\..\components\drivers\ipc\completion.c - - - - - pin.c - 1 - ..\..\..\components\drivers\misc\pin.c - - - - - serial.c - 1 - ..\..\..\components\drivers\serial\serial.c - - - - - Drivers - - - startup_gd32f4xx.s - 2 - ..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\ARM\startup_gd32f4xx.s - - - - - board.c - 1 - board\board.c - - - - - drv_gpio.c - 1 - ..\libraries\gd32_drivers\drv_gpio.c - - - - - drv_usart.c - 1 - ..\libraries\gd32_drivers\drv_usart.c - - - - - Finsh - - - shell.c - 1 - ..\..\..\components\finsh\shell.c - - - - - msh.c - 1 - ..\..\..\components\finsh\msh.c - - - - - cmd.c - 1 - ..\..\..\components\finsh\cmd.c - - - - - Kernel - - - timer.c - 1 - ..\..\..\src\timer.c - - - - - thread.c - 1 - ..\..\..\src\thread.c - - - - - clock.c - 1 - ..\..\..\src\clock.c - - - - - irq.c - 1 - ..\..\..\src\irq.c - - - - - scheduler.c - 1 - ..\..\..\src\scheduler.c - - - - - object.c - 1 - ..\..\..\src\object.c - - - - - kservice.c - 1 - ..\..\..\src\kservice.c - - - - - components.c - 1 - ..\..\..\src\components.c - - - - - device.c - 1 - ..\..\..\src\device.c - - - - - idle.c - 1 - ..\..\..\src\idle.c - - - - - mempool.c - 1 - ..\..\..\src\mempool.c - - - - - ipc.c - 1 - ..\..\..\src\ipc.c - - - - - mem.c - 1 - ..\..\..\src\mem.c - - - - - Libraries - - - gd32f4xx_syscfg.c - 1 - ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_syscfg.c - - - - - gd32f4xx_exti.c - 1 - ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_exti.c - - - - - gd32f4xx_gpio.c - 1 - ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_gpio.c - - - - - gd32f4xx_rcu.c - 1 - ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_rcu.c - - - - - gd32f4xx_misc.c - 1 - ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_misc.c - - - - - gd32f4xx_usart.c - 1 - ..\libraries\GD32F4xx_Firmware_Library\GD32F4xx_standard_peripheral\Source\gd32f4xx_usart.c - - - - - system_gd32f4xx.c - 1 - ..\libraries\GD32F4xx_Firmware_Library\CMSIS\GD\GD32F4xx\Source\system_gd32f4xx.c - - - - - - - - - - - - - - - - - - - - - - <Project Info> - - - - - - 0 - 1 - - - -
    diff --git a/bsp/gd32/gd32450i-eval/template.uvoptx b/bsp/gd32/gd32450i-eval/template.uvoptx deleted file mode 100644 index 1ae6de1bf8..0000000000 --- a/bsp/gd32/gd32450i-eval/template.uvoptx +++ /dev/null @@ -1,190 +0,0 @@ - - - - 1.0 - -
    ### uVision Project, (C) Keil Software
    - - - *.c - *.s*; *.src; *.a* - *.obj; *.o - *.lib - *.txt; *.h; *.inc - *.plm - *.cpp - 0 - - - - 0 - 0 - - - - rt-thread - 0x4 - ARM-ADS - - 12000000 - - 1 - 1 - 0 - 1 - 0 - - - 1 - 65535 - 0 - 0 - 0 - - - 79 - 66 - 8 - .\build\ - - - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - - - 1 - 0 - 1 - - 255 - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 1 - 1 - 0 - 0 - 1 - 0 - 0 - 3 - - - - - - - - - - - BIN\CMSIS_AGDI.dll - - - - 0 - CMSIS_AGDI - -X"CMSIS-DAP" -O206 -S0 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_3MB.FLM -FS08000000 -FL0300000 -FP0($$Device:GD32F450IK$Flash\GD32F4xx_3MB.FLM) - - - 0 - JL2CM3 - -U59401765 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_3MB.FLM -FS08000000 -FL0300000 -FP0($$Device:GD32F450IK$Flash\GD32F4xx_3MB.FLM) - - - 0 - UL2CM3 - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000 -FP0($$Device:GD32F450IK$Flash\GD32F4xx_3MB.FLM)) - - - - - 0 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - 0 - 0 - 0 - - - - - - - - - - - - - ::CMSIS - 0 - 0 - 0 - 1 - - -
    diff --git a/bsp/gd32/gd32450z-eval/.config b/bsp/gd32/gd32450z-eval/.config deleted file mode 100644 index 73c05ec3d9..0000000000 --- a/bsp/gd32/gd32450z-eval/.config +++ /dev/null @@ -1,671 +0,0 @@ -# -# Automatically generated file; DO NOT EDIT. -# RT-Thread Configuration -# - -# -# RT-Thread Kernel -# -CONFIG_RT_NAME_MAX=8 -# CONFIG_RT_USING_ARCH_DATA_TYPE is not set -# CONFIG_RT_USING_SMP is not set -CONFIG_RT_ALIGN_SIZE=4 -# CONFIG_RT_THREAD_PRIORITY_8 is not set -CONFIG_RT_THREAD_PRIORITY_32=y -# CONFIG_RT_THREAD_PRIORITY_256 is not set -CONFIG_RT_THREAD_PRIORITY_MAX=32 -CONFIG_RT_TICK_PER_SECOND=100 -CONFIG_RT_USING_OVERFLOW_CHECK=y -CONFIG_RT_USING_HOOK=y -CONFIG_RT_HOOK_USING_FUNC_PTR=y -CONFIG_RT_USING_IDLE_HOOK=y -CONFIG_RT_IDLE_HOOK_LIST_SIZE=4 -CONFIG_IDLE_THREAD_STACK_SIZE=256 -# CONFIG_RT_USING_TIMER_SOFT is not set - -# -# kservice optimization -# -# CONFIG_RT_KSERVICE_USING_STDLIB is not set -# CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set -# CONFIG_RT_USING_TINY_FFS is not set -# CONFIG_RT_PRINTF_LONGLONG is not set -CONFIG_RT_DEBUG=y -CONFIG_RT_DEBUG_COLOR=y -# CONFIG_RT_DEBUG_INIT_CONFIG is not set -# CONFIG_RT_DEBUG_THREAD_CONFIG is not set -# CONFIG_RT_DEBUG_SCHEDULER_CONFIG is not set -# CONFIG_RT_DEBUG_IPC_CONFIG is not set -# CONFIG_RT_DEBUG_TIMER_CONFIG is not set -# CONFIG_RT_DEBUG_IRQ_CONFIG is not set -# CONFIG_RT_DEBUG_MEM_CONFIG is not set -# CONFIG_RT_DEBUG_SLAB_CONFIG is not set -# CONFIG_RT_DEBUG_MEMHEAP_CONFIG is not set -# CONFIG_RT_DEBUG_MODULE_CONFIG is not set - -# -# Inter-Thread communication -# -CONFIG_RT_USING_SEMAPHORE=y -CONFIG_RT_USING_MUTEX=y -CONFIG_RT_USING_EVENT=y -CONFIG_RT_USING_MAILBOX=y -CONFIG_RT_USING_MESSAGEQUEUE=y -# CONFIG_RT_USING_SIGNALS is not set - -# -# Memory Management -# -CONFIG_RT_USING_MEMPOOL=y -CONFIG_RT_USING_SMALL_MEM=y -# CONFIG_RT_USING_SLAB is not set -# CONFIG_RT_USING_MEMHEAP is not set -CONFIG_RT_USING_SMALL_MEM_AS_HEAP=y -# CONFIG_RT_USING_MEMHEAP_AS_HEAP is not set -# CONFIG_RT_USING_SLAB_AS_HEAP is not set -# CONFIG_RT_USING_USERHEAP is not set -# CONFIG_RT_USING_NOHEAP is not set -# CONFIG_RT_USING_MEMTRACE is not set -# CONFIG_RT_USING_HEAP_ISR is not set -CONFIG_RT_USING_HEAP=y - -# -# Kernel Device Object -# -CONFIG_RT_USING_DEVICE=y -# CONFIG_RT_USING_DEVICE_OPS is not set -# CONFIG_RT_USING_INTERRUPT_INFO is not set -CONFIG_RT_USING_CONSOLE=y -CONFIG_RT_CONSOLEBUF_SIZE=128 -CONFIG_RT_CONSOLE_DEVICE_NAME="uart1" -CONFIG_RT_VER_NUM=0x40100 -# CONFIG_RT_USING_CPU_FFS is not set -# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set - -# -# RT-Thread Components -# -CONFIG_RT_USING_COMPONENTS_INIT=y -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 -CONFIG_RT_USING_MSH=y -CONFIG_RT_USING_FINSH=y -CONFIG_FINSH_USING_MSH=y -CONFIG_FINSH_THREAD_NAME="tshell" -CONFIG_FINSH_THREAD_PRIORITY=20 -CONFIG_FINSH_THREAD_STACK_SIZE=4096 -CONFIG_FINSH_USING_HISTORY=y -CONFIG_FINSH_HISTORY_LINES=5 -CONFIG_FINSH_USING_SYMTAB=y -CONFIG_FINSH_CMD_SIZE=80 -CONFIG_MSH_USING_BUILT_IN_COMMANDS=y -CONFIG_FINSH_USING_DESCRIPTION=y -# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set -# CONFIG_FINSH_USING_AUTH is not set -CONFIG_FINSH_ARG_MAX=10 -# CONFIG_RT_USING_DFS is not set -# CONFIG_RT_USING_FAL is not set - -# -# Device Drivers -# -CONFIG_RT_USING_DEVICE_IPC=y -CONFIG_RT_USING_SYSTEM_WORKQUEUE=y -CONFIG_RT_SYSTEM_WORKQUEUE_STACKSIZE=2048 -CONFIG_RT_SYSTEM_WORKQUEUE_PRIORITY=23 -CONFIG_RT_USING_SERIAL=y -CONFIG_RT_USING_SERIAL_V1=y -# CONFIG_RT_USING_SERIAL_V2 is not set -CONFIG_RT_SERIAL_USING_DMA=y -CONFIG_RT_SERIAL_RB_BUFSZ=64 -# CONFIG_RT_USING_CAN is not set -# CONFIG_RT_USING_HWTIMER is not set -# CONFIG_RT_USING_CPUTIME is not set -# CONFIG_RT_USING_I2C is not set -# CONFIG_RT_USING_PHY is not set -CONFIG_RT_USING_PIN=y -# CONFIG_RT_USING_ADC is not set -# CONFIG_RT_USING_DAC is not set -# CONFIG_RT_USING_PWM is not set -# CONFIG_RT_USING_MTD_NOR is not set -# CONFIG_RT_USING_MTD_NAND is not set -# CONFIG_RT_USING_PM is not set -# CONFIG_RT_USING_RTC is not set -# CONFIG_RT_USING_SDIO is not set -# CONFIG_RT_USING_SPI is not set -# CONFIG_RT_USING_WDT is not set -# CONFIG_RT_USING_AUDIO is not set -# CONFIG_RT_USING_SENSOR is not set -# CONFIG_RT_USING_TOUCH is not set -# CONFIG_RT_USING_HWCRYPTO is not set -# CONFIG_RT_USING_PULSE_ENCODER is not set -# CONFIG_RT_USING_INPUT_CAPTURE is not set -# CONFIG_RT_USING_WIFI is not set - -# -# Using USB -# -# CONFIG_RT_USING_USB is not set -# CONFIG_RT_USING_USB_HOST is not set -# CONFIG_RT_USING_USB_DEVICE is not set - -# -# C/C++ and POSIX layer -# -CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 - -# -# POSIX (Portable Operating System Interface) layer -# -# CONFIG_RT_USING_POSIX_FS is not set -# CONFIG_RT_USING_POSIX_DELAY is not set -# CONFIG_RT_USING_POSIX_CLOCK is not set -# CONFIG_RT_USING_POSIX_TIMER is not set -# CONFIG_RT_USING_PTHREADS is not set -# CONFIG_RT_USING_MODULE is not set - -# -# Interprocess Communication (IPC) -# -# CONFIG_RT_USING_POSIX_PIPE is not set -# CONFIG_RT_USING_POSIX_MESSAGE_QUEUE is not set -# CONFIG_RT_USING_POSIX_MESSAGE_SEMAPHORE is not set - -# -# Socket is in the 'Network' category -# -# CONFIG_RT_USING_CPLUSPLUS is not set - -# -# Network -# -# CONFIG_RT_USING_SAL is not set -# CONFIG_RT_USING_NETDEV is not set -# CONFIG_RT_USING_LWIP is not set -# CONFIG_RT_USING_AT is not set - -# -# Utilities -# -# CONFIG_RT_USING_RYM is not set -# CONFIG_RT_USING_ULOG is not set -# CONFIG_RT_USING_UTEST is not set -# CONFIG_RT_USING_VAR_EXPORT is not set -# CONFIG_RT_USING_RT_LINK is not set -# CONFIG_RT_USING_VBUS is not set - -# -# RT-Thread Utestcases -# -# CONFIG_RT_USING_UTESTCASES is not set - -# -# RT-Thread online packages -# - -# -# 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 -# CONFIG_PKG_USING_WEBCLIENT is not set -# CONFIG_PKG_USING_WEBNET is not set -# CONFIG_PKG_USING_MONGOOSE is not set -# CONFIG_PKG_USING_MYMQTT is not set -# CONFIG_PKG_USING_KAWAII_MQTT is not set -# CONFIG_PKG_USING_BC28_MQTT is not set -# CONFIG_PKG_USING_WEBTERMINAL is not set -# CONFIG_PKG_USING_LIBMODBUS is not set -# CONFIG_PKG_USING_FREEMODBUS is not set -# CONFIG_PKG_USING_NANOPB is not set - -# -# Wi-Fi -# - -# -# Marvell WiFi -# -# CONFIG_PKG_USING_WLANMARVELL is not set - -# -# Wiced WiFi -# -# CONFIG_PKG_USING_WLAN_WICED is not set -# CONFIG_PKG_USING_RW007 is not set -# CONFIG_PKG_USING_COAP is not set -# CONFIG_PKG_USING_NOPOLL is not set -# CONFIG_PKG_USING_NETUTILS is not set -# CONFIG_PKG_USING_CMUX is not set -# CONFIG_PKG_USING_PPP_DEVICE is not set -# CONFIG_PKG_USING_AT_DEVICE is not set -# CONFIG_PKG_USING_ATSRV_SOCKET is not set -# CONFIG_PKG_USING_WIZNET is not set -# CONFIG_PKG_USING_ZB_COORDINATOR is not set - -# -# IoT Cloud -# -# CONFIG_PKG_USING_ONENET is not set -# CONFIG_PKG_USING_GAGENT_CLOUD is not set -# CONFIG_PKG_USING_ALI_IOTKIT is not set -# CONFIG_PKG_USING_AZURE is not set -# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set -# CONFIG_PKG_USING_JIOT-C-SDK is not set -# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set -# CONFIG_PKG_USING_JOYLINK is not set -# CONFIG_PKG_USING_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 -# CONFIG_PKG_USING_AIRKISS_OPEN is not set -# CONFIG_PKG_USING_LIBRWS is not set -# CONFIG_PKG_USING_TCPSERVER is not set -# CONFIG_PKG_USING_PROTOBUF_C is not set -# CONFIG_PKG_USING_DLT645 is not set -# CONFIG_PKG_USING_QXWZ is not set -# CONFIG_PKG_USING_SMTP_CLIENT is not set -# CONFIG_PKG_USING_ABUP_FOTA is not set -# CONFIG_PKG_USING_LIBCURL2RTT is not set -# CONFIG_PKG_USING_CAPNP is not set -# CONFIG_PKG_USING_AGILE_TELNET is not set -# CONFIG_PKG_USING_NMEALIB is not set -# CONFIG_PKG_USING_PDULIB is not set -# CONFIG_PKG_USING_BTSTACK is not set -# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set -# CONFIG_PKG_USING_WAYZ_IOTKIT is not set -# CONFIG_PKG_USING_MAVLINK is not set -# CONFIG_PKG_USING_BSAL is not set -# CONFIG_PKG_USING_AGILE_MODBUS is not set -# CONFIG_PKG_USING_AGILE_FTP is not set -# CONFIG_PKG_USING_EMBEDDEDPROTO is not set -# CONFIG_PKG_USING_RT_LINK_HW is not set -# CONFIG_PKG_USING_LORA_PKT_FWD is not set -# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set -# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set -# CONFIG_PKG_USING_HM is not set -# CONFIG_PKG_USING_SMALL_MODBUS is not set -# CONFIG_PKG_USING_NET_SERVER is not set - -# -# security packages -# -# CONFIG_PKG_USING_MBEDTLS is not set -# CONFIG_PKG_USING_LIBSODIUM is not set -# CONFIG_PKG_USING_TINYCRYPT is not set -# CONFIG_PKG_USING_TFM is not set -# CONFIG_PKG_USING_YD_CRYPTO is not set - -# -# 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 -# CONFIG_PKG_USING_MICROPYTHON is not set -# CONFIG_PKG_USING_PIKASCRIPT is not set - -# -# multimedia packages -# - -# -# LVGL: powerful and easy-to-use embedded GUI library -# -# CONFIG_PKG_USING_LVGL is not set -# CONFIG_PKG_USING_LITTLEVGL2RTT is not set -# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set - -# -# u8g2: a monochrome graphic library -# -# CONFIG_PKG_USING_U8G2_OFFICIAL is not set -# CONFIG_PKG_USING_U8G2 is not set -# CONFIG_PKG_USING_OPENMV is not set -# CONFIG_PKG_USING_MUPDF is not set -# CONFIG_PKG_USING_STEMWIN is not set -# CONFIG_PKG_USING_WAVPLAYER is not set -# CONFIG_PKG_USING_TJPGD is not set -# CONFIG_PKG_USING_PDFGEN is not set -# CONFIG_PKG_USING_HELIX is not set -# CONFIG_PKG_USING_AZUREGUIX is not set -# CONFIG_PKG_USING_TOUCHGFX2RTT is not set -# CONFIG_PKG_USING_NUEMWIN is not set -# CONFIG_PKG_USING_MP3PLAYER is not set -# CONFIG_PKG_USING_TINYJPEG is not set -# CONFIG_PKG_USING_UGUI is not set - -# -# PainterEngine: A cross-platform graphics application framework written in C language -# -# CONFIG_PKG_USING_PAINTERENGINE is not set -# CONFIG_PKG_USING_PAINTERENGINE_AUX is not set -# CONFIG_PKG_USING_MCURSES is not set -# CONFIG_PKG_USING_TERMBOX is not set -# CONFIG_PKG_USING_VT100 is not set -# CONFIG_PKG_USING_QRCODE is not set -# CONFIG_PKG_USING_GUIENGINE is not set - -# -# tools packages -# -# CONFIG_PKG_USING_CMBACKTRACE is not set -# CONFIG_PKG_USING_EASYFLASH is not set -# CONFIG_PKG_USING_EASYLOGGER is not set -# CONFIG_PKG_USING_SYSTEMVIEW is not set -# CONFIG_PKG_USING_SEGGER_RTT is not set -# CONFIG_PKG_USING_RDB 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 -# CONFIG_PKG_USING_ADBD is not set -# CONFIG_PKG_USING_COREMARK is not set -# CONFIG_PKG_USING_DHRYSTONE is not set -# CONFIG_PKG_USING_MEMORYPERF is not set -# CONFIG_PKG_USING_NR_MICRO_SHELL is not set -# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set -# CONFIG_PKG_USING_LUNAR_CALENDAR is not set -# CONFIG_PKG_USING_BS8116A is not set -# CONFIG_PKG_USING_GPS_RMC is not set -# CONFIG_PKG_USING_URLENCODE is not set -# CONFIG_PKG_USING_UMCN is not set -# CONFIG_PKG_USING_LWRB2RTT is not set -# CONFIG_PKG_USING_CPU_USAGE is not set -# CONFIG_PKG_USING_GBK2UTF8 is not set -# CONFIG_PKG_USING_VCONSOLE is not set -# CONFIG_PKG_USING_KDB is not set -# CONFIG_PKG_USING_WAMR is not set -# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set -# CONFIG_PKG_USING_LWLOG is not set -# CONFIG_PKG_USING_ANV_TRACE is not set -# CONFIG_PKG_USING_ANV_MEMLEAK is not set -# CONFIG_PKG_USING_ANV_TESTSUIT is not set -# CONFIG_PKG_USING_ANV_BENCH is not set -# CONFIG_PKG_USING_DEVMEM is not set -# CONFIG_PKG_USING_REGEX is not set -# CONFIG_PKG_USING_MEM_SANDBOX is not set -# CONFIG_PKG_USING_SOLAR_TERMS is not set -# CONFIG_PKG_USING_GAN_ZHI is not set -# CONFIG_PKG_USING_FDT is not set -# CONFIG_PKG_USING_CBOX is not set -# CONFIG_PKG_USING_SNOWFLAKE is not set - -# -# system packages -# - -# -# enhanced kernel services -# -# CONFIG_PKG_USING_RT_MEMCPY_CM is not set -# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set -# CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set - -# -# POSIX extension functions -# -# 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 -# -# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set -# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set -# CONFIG_PKG_USING_QFPLIB_M3 is not set - -# -# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard -# -# CONFIG_PKG_USING_CMSIS_5 is not set -# CONFIG_PKG_USING_CMSIS_RTOS2 is not set - -# -# Micrium: Micrium software products porting for RT-Thread -# -# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set -# CONFIG_PKG_USING_UCOSII_WRAPPER is not set -# CONFIG_PKG_USING_UC_CRC is not set -# CONFIG_PKG_USING_UC_CLK is not set -# CONFIG_PKG_USING_UC_COMMON is not set -# CONFIG_PKG_USING_UC_MODBUS is not set -# CONFIG_PKG_USING_RTDUINO 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_FLASHDB is not set -# CONFIG_PKG_USING_SQLITE is not set -# CONFIG_PKG_USING_RTI is not set -# CONFIG_PKG_USING_DFS_YAFFS is not set -# CONFIG_PKG_USING_LITTLEFS is not set -# CONFIG_PKG_USING_DFS_JFFS2 is not set -# CONFIG_PKG_USING_DFS_UFFS is not set -# CONFIG_PKG_USING_LWEXT4 is not set -# CONFIG_PKG_USING_THREAD_POOL is not set -# CONFIG_PKG_USING_ROBOTS is not set -# CONFIG_PKG_USING_EV is not set -# CONFIG_PKG_USING_SYSWATCH is not set -# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set -# CONFIG_PKG_USING_PLCCORE is not set -# CONFIG_PKG_USING_RAMDISK is not set -# CONFIG_PKG_USING_MININI is not set -# CONFIG_PKG_USING_QBOOT is not set -# CONFIG_PKG_USING_PPOOL is not set -# CONFIG_PKG_USING_OPENAMP is not set -# CONFIG_PKG_USING_LPM is not set -# CONFIG_PKG_USING_TLSF is not set -# CONFIG_PKG_USING_EVENT_RECORDER is not set -# CONFIG_PKG_USING_ARM_2D is not set -# CONFIG_PKG_USING_MCUBOOT is not set -# CONFIG_PKG_USING_TINYUSB is not set -# CONFIG_PKG_USING_CHERRYUSB is not set -# CONFIG_PKG_USING_KMULTI_RTIMER is not set - -# -# peripheral libraries and drivers -# -# CONFIG_PKG_USING_SENSORS_DRIVERS is not set -# CONFIG_PKG_USING_REALTEK_AMEBA is not set -# CONFIG_PKG_USING_SHT2X is not set -# CONFIG_PKG_USING_SHT3X is not set -# CONFIG_PKG_USING_AS7341 is not set -# CONFIG_PKG_USING_STM32_SDIO is not set -# CONFIG_PKG_USING_ICM20608 is not set -# CONFIG_PKG_USING_BUTTON is not set -# CONFIG_PKG_USING_PCF8574 is not set -# CONFIG_PKG_USING_SX12XX is not set -# CONFIG_PKG_USING_SIGNAL_LED is not set -# CONFIG_PKG_USING_LEDBLINK is not set -# CONFIG_PKG_USING_LITTLED is not set -# CONFIG_PKG_USING_LKDGUI is not set -# CONFIG_PKG_USING_NRF5X_SDK is not set -# CONFIG_PKG_USING_NRFX is not set -# 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 -# CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set -# CONFIG_PKG_USING_AD7746 is not set -# CONFIG_PKG_USING_PCA9685 is not set -# CONFIG_PKG_USING_I2C_TOOLS is not set -# CONFIG_PKG_USING_NRF24L01 is not set -# CONFIG_PKG_USING_TOUCH_DRIVERS is not set -# CONFIG_PKG_USING_MAX17048 is not set -# CONFIG_PKG_USING_RPLIDAR is not set -# CONFIG_PKG_USING_AS608 is not set -# CONFIG_PKG_USING_RC522 is not set -# CONFIG_PKG_USING_WS2812B is not set -# CONFIG_PKG_USING_EMBARC_BSP is not set -# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set -# CONFIG_PKG_USING_MULTI_RTIMER is not set -# CONFIG_PKG_USING_MAX7219 is not set -# CONFIG_PKG_USING_BEEP is not set -# CONFIG_PKG_USING_EASYBLINK is not set -# CONFIG_PKG_USING_PMS_SERIES is not set -# CONFIG_PKG_USING_CAN_YMODEM is not set -# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set -# CONFIG_PKG_USING_QLED is not set -# CONFIG_PKG_USING_PAJ7620 is not set -# CONFIG_PKG_USING_AGILE_CONSOLE is not set -# CONFIG_PKG_USING_LD3320 is not set -# CONFIG_PKG_USING_WK2124 is not set -# CONFIG_PKG_USING_LY68L6400 is not set -# CONFIG_PKG_USING_DM9051 is not set -# CONFIG_PKG_USING_SSD1306 is not set -# CONFIG_PKG_USING_QKEY is not set -# CONFIG_PKG_USING_RS485 is not set -# CONFIG_PKG_USING_RS232 is not set -# CONFIG_PKG_USING_NES is not set -# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set -# CONFIG_PKG_USING_VDEVICE is not set -# CONFIG_PKG_USING_SGM706 is not set -# CONFIG_PKG_USING_STM32WB55_SDK is not set -# CONFIG_PKG_USING_RDA58XX is not set -# CONFIG_PKG_USING_LIBNFC is not set -# CONFIG_PKG_USING_MFOC is not set -# CONFIG_PKG_USING_TMC51XX is not set -# CONFIG_PKG_USING_TCA9534 is not set -# CONFIG_PKG_USING_KOBUKI is not set -# CONFIG_PKG_USING_ROSSERIAL is not set -# CONFIG_PKG_USING_MICRO_ROS is not set -# CONFIG_PKG_USING_MCP23008 is not set -# CONFIG_PKG_USING_BLUETRUM_SDK is not set -# CONFIG_PKG_USING_MISAKA_AT24CXX is not set -# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set -# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set -# CONFIG_PKG_USING_BL_MCU_SDK is not set -# 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 -# -# CONFIG_PKG_USING_LIBANN is not set -# CONFIG_PKG_USING_NNOM is not set -# CONFIG_PKG_USING_ONNX_BACKEND is not set -# CONFIG_PKG_USING_ONNX_PARSER is not set -# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set -# CONFIG_PKG_USING_ELAPACK is not set -# CONFIG_PKG_USING_ULAPACK is not set -# CONFIG_PKG_USING_QUEST is not set -# CONFIG_PKG_USING_NAXOS is not set - -# -# miscellaneous packages -# - -# -# project laboratory -# - -# -# samples: kernel and components samples -# -# CONFIG_PKG_USING_KERNEL_SAMPLES is not set -# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set -# CONFIG_PKG_USING_NETWORK_SAMPLES is not set -# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set - -# -# entertainment: terminal games and other interesting software packages -# -# CONFIG_PKG_USING_CMATRIX is not set -# CONFIG_PKG_USING_SL is not set -# CONFIG_PKG_USING_CAL is not set -# CONFIG_PKG_USING_ACLOCK is not set -# CONFIG_PKG_USING_THREES is not set -# CONFIG_PKG_USING_2048 is not set -# CONFIG_PKG_USING_SNAKE is not set -# CONFIG_PKG_USING_TETRIS is not set -# CONFIG_PKG_USING_DONUT is not set -# CONFIG_PKG_USING_COWSAY is not set -# CONFIG_PKG_USING_LIBCSV is not set -# CONFIG_PKG_USING_OPTPARSE is not set -# CONFIG_PKG_USING_FASTLZ is not set -# CONFIG_PKG_USING_MINILZO is not set -# CONFIG_PKG_USING_QUICKLZ is not set -# CONFIG_PKG_USING_LZMA is not set -# CONFIG_PKG_USING_MULTIBUTTON is not set -# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set -# CONFIG_PKG_USING_CANFESTIVAL is not set -# CONFIG_PKG_USING_ZLIB is not set -# CONFIG_PKG_USING_MINIZIP is not set -# CONFIG_PKG_USING_HEATSHRINK is not set -# CONFIG_PKG_USING_DSTR is not set -# CONFIG_PKG_USING_TINYFRAME is not set -# CONFIG_PKG_USING_KENDRYTE_DEMO is not set -# CONFIG_PKG_USING_DIGITALCTRL is not set -# CONFIG_PKG_USING_UPACKER is not set -# CONFIG_PKG_USING_UPARAM is not set -# CONFIG_PKG_USING_HELLO is not set -# CONFIG_PKG_USING_VI is not set -# CONFIG_PKG_USING_KI is not set -# CONFIG_PKG_USING_ARMv7M_DWT is not set -# CONFIG_PKG_USING_UKAL is not set -# CONFIG_PKG_USING_CRCLIB is not set -# CONFIG_PKG_USING_LWGPS is not set -# CONFIG_PKG_USING_STATE_MACHINE is not set -# CONFIG_PKG_USING_DESIGN_PATTERN is not set -# CONFIG_PKG_USING_CONTROLLER is not set -# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set -# CONFIG_PKG_USING_MFBD is not set - -# -# Hardware Drivers Config -# -CONFIG_SOC_SERIES_GD32F4xx=y -CONFIG_SOC_GD32450Z=y - -# -# Onboard Peripheral Drivers -# - -# -# On-chip Peripheral Drivers -# -CONFIG_BSP_USING_GPIO=y -CONFIG_BSP_USING_UART=y -# CONFIG_BSP_USING_UART0 is not set -CONFIG_BSP_USING_UART1=y -# CONFIG_BSP_UART1_RX_USING_DMA is not set -# CONFIG_BSP_USING_UART2 is not set -# CONFIG_BSP_USING_UART3 is not set -# CONFIG_BSP_USING_UART4 is not set -# CONFIG_BSP_USING_UART5 is not set -# CONFIG_BSP_USING_UART6 is not set -# CONFIG_BSP_USING_UART7 is not set -# CONFIG_BSP_USING_SPI is not set -# CONFIG_BSP_USING_I2C1 is not set - -# -# Board extended module Drivers -# diff --git a/bsp/gd32/gd32450z-eval/Kconfig b/bsp/gd32/gd32450z-eval/Kconfig deleted file mode 100644 index 8cbc7b71a8..0000000000 --- a/bsp/gd32/gd32450z-eval/Kconfig +++ /dev/null @@ -1,21 +0,0 @@ -mainmenu "RT-Thread Configuration" - -config BSP_DIR - string - option env="BSP_ROOT" - default "." - -config RTT_DIR - string - option env="RTT_ROOT" - default "../../.." - -config PKGS_DIR - string - option env="PKGS_ROOT" - default "packages" - -source "$RTT_DIR/Kconfig" -source "$PKGS_DIR/Kconfig" -source "../libraries/Kconfig" -source "board/Kconfig" diff --git a/bsp/gd32/gd32450z-eval/SConstruct b/bsp/gd32/gd32450z-eval/SConstruct deleted file mode 100644 index 2e0cd022f1..0000000000 --- a/bsp/gd32/gd32450z-eval/SConstruct +++ /dev/null @@ -1,60 +0,0 @@ -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.' + rtconfig.TARGET_EXT - -DefaultEnvironment(tools=[]) -env = Environment(tools = ['mingw'], - AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, - CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS, - AR = rtconfig.AR, ARFLAGS = '-rc', - CXX = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS, - LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) -env.PrependENVPath('PATH', rtconfig.EXEC_PATH) - -if rtconfig.PLATFORM in ['iccarm']: - env.Replace(CCCOM = ['$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES']) - env.Replace(ARFLAGS = ['']) - env.Replace(LINKCOM = env["LINKCOM"] + ' --map rtthread.map') - -Export('RTT_ROOT') -Export('rtconfig') - -SDK_ROOT = os.path.abspath('./') - -if os.path.exists(SDK_ROOT + '/libraries'): - libraries_path_prefix = SDK_ROOT + '/libraries' -else: - libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries' - -SDK_LIB = libraries_path_prefix -Export('SDK_LIB') - -# prepare building environment -objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) - -gd32_library = 'GD32F4xx_Firmware_Library' -rtconfig.BSP_LIBRARY_TYPE = gd32_library - -# include libraries -objs.extend(SConscript(os.path.join(libraries_path_prefix, gd32_library, 'SConscript'))) - -# include drivers -objs.extend(SConscript(os.path.join(libraries_path_prefix, 'gd32_drivers', 'SConscript'))) - -# make a building -DoBuilding(TARGET, objs) diff --git a/bsp/gd32/gd32450z-eval/board/SConscript b/bsp/gd32/gd32450z-eval/board/SConscript deleted file mode 100644 index cc9fd76fbd..0000000000 --- a/bsp/gd32/gd32450z-eval/board/SConscript +++ /dev/null @@ -1,28 +0,0 @@ -import os -import rtconfig -from building import * - -Import('SDK_LIB') - -cwd = GetCurrentDir() - -# add general drivers -src = Split(''' -board.c -''') - -path = [cwd] - -startup_path_prefix = SDK_LIB - -if rtconfig.PLATFORM in ['gcc']: - src += [startup_path_prefix + '/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/GCC/startup_gd32f4xx.s'] -elif rtconfig.PLATFORM in ['armcc', 'armclang']: - src += [startup_path_prefix + '/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/ARM/startup_gd32f4xx.s'] -elif rtconfig.PLATFORM in ['iccarm']: - src += [startup_path_prefix + '/GD32F4xx_Firmware_Library/CMSIS/GD/GD32F4xx/Source/IAR/startup_gd32f4xx.s'] - -CPPDEFINES = ['GD32F450'] -group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES) - -Return('group') diff --git a/bsp/gd32/gd32450z-eval/board/gd32f4xx_libopt.h b/bsp/gd32/gd32450z-eval/board/gd32f4xx_libopt.h deleted file mode 100644 index d26e3d15ec..0000000000 --- a/bsp/gd32/gd32450z-eval/board/gd32f4xx_libopt.h +++ /dev/null @@ -1,45 +0,0 @@ -/*! - \file gd32f4xx_libopt.h - \brief library optional for gd32f4xx -*/ - -/* - Copyright (C) 2016 GigaDevice - - 2016-10-19, V1.0.0, firmware for GD32F4xx -*/ - -#ifndef GD32F4XX_LIBOPT_H -#define GD32F4XX_LIBOPT_H -#include "gd32f4xx_rcu.h" -#include "gd32f4xx_adc.h" -#include "gd32f4xx_can.h" -#include "gd32f4xx_crc.h" -#include "gd32f4xx_ctc.h" -#include "gd32f4xx_dac.h" -#include "gd32f4xx_dbg.h" -#include "gd32f4xx_dci.h" -#include "gd32f4xx_dma.h" -//#include "gd32f4xx_enet.h" -#include "gd32f4xx_exmc.h" -#include "gd32f4xx_exti.h" -#include "gd32f4xx_fmc.h" -#include "gd32f4xx_fwdgt.h" -#include "gd32f4xx_gpio.h" -#include "gd32f4xx_syscfg.h" -#include "gd32f4xx_i2c.h" -#include "gd32f4xx_ipa.h" -#include "gd32f4xx_iref.h" -#include "gd32f4xx_pmu.h" -#include "gd32f4xx_rcu.h" -#include "gd32f4xx_rtc.h" -#include "gd32f4xx_sdio.h" -#include "gd32f4xx_spi.h" -#include "gd32f4xx_timer.h" -#include "gd32f4xx_tli.h" -#include "gd32f4xx_trng.h" -#include "gd32f4xx_usart.h" -#include "gd32f4xx_wwdgt.h" -#include "gd32f4xx_misc.h" - -#endif /* GD32F4XX_LIBOPT_H */ diff --git a/bsp/gd32/gd32450z-eval/project.uvoptx b/bsp/gd32/gd32450z-eval/project.uvoptx deleted file mode 100644 index 3947c5e208..0000000000 --- a/bsp/gd32/gd32450z-eval/project.uvoptx +++ /dev/null @@ -1,190 +0,0 @@ - - - - 1.0 - -
    ### uVision Project, (C) Keil Software
    - - - *.c - *.s*; *.src; *.a* - *.obj; *.o - *.lib - *.txt; *.h; *.inc - *.plm - *.cpp - 0 - - - - 0 - 0 - - - - rt-thread - 0x4 - ARM-ADS - - 12000000 - - 1 - 1 - 0 - 1 - 0 - - - 1 - 65535 - 0 - 0 - 0 - - - 79 - 66 - 8 - .\build\ - - - 1 - 1 - 1 - 0 - 1 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 0 - - - 1 - 0 - 1 - - 255 - - 0 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 1 - 0 - 1 - 1 - 1 - 1 - 0 - 0 - 1 - 0 - 0 - 3 - - - - - - - - - - - BIN\CMSIS_AGDI.dll - - - - 0 - CMSIS_AGDI - -X"CMSIS-DAP" -O206 -S0 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_3MB.FLM -FS08000000 -FL0300000 -FP0($$Device:GD32F450ZK$Flash\GD32F4xx_3MB.FLM) - - - 0 - JL2CM3 - -U59401765 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_3MB.FLM -FS08000000 -FL0300000 -FP0($$Device:GD32F450ZK$Flash\GD32F4xx_3MB.FLM) - - - 0 - UL2CM3 - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000 -FP0($$Device:GD32F450ZK$Flash\GD32F4xx_3MB.FLM)) - - - - - 0 - - - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - 0 - 0 - 0 - - - - - - - - - - - - - ::CMSIS - 0 - 0 - 0 - 1 - - -
    diff --git a/bsp/gd32/gd32450z-eval/rtconfig.h b/bsp/gd32/gd32450z-eval/rtconfig.h deleted file mode 100644 index 85f56c7cc2..0000000000 --- a/bsp/gd32/gd32450z-eval/rtconfig.h +++ /dev/null @@ -1,196 +0,0 @@ -#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_HOOK_USING_FUNC_PTR -#define RT_USING_IDLE_HOOK -#define RT_IDLE_HOOK_LIST_SIZE 4 -#define IDLE_THREAD_STACK_SIZE 256 - -/* kservice optimization */ - -#define RT_DEBUG -#define RT_DEBUG_COLOR - -/* 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_SMALL_MEM_AS_HEAP -#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 "uart1" -#define RT_VER_NUM 0x40100 - -/* 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 -#define RT_USING_MSH -#define RT_USING_FINSH -#define FINSH_USING_MSH -#define FINSH_THREAD_NAME "tshell" -#define FINSH_THREAD_PRIORITY 20 -#define FINSH_THREAD_STACK_SIZE 4096 -#define FINSH_USING_HISTORY -#define FINSH_HISTORY_LINES 5 -#define FINSH_USING_SYMTAB -#define FINSH_CMD_SIZE 80 -#define MSH_USING_BUILT_IN_COMMANDS -#define FINSH_USING_DESCRIPTION -#define FINSH_ARG_MAX 10 - -/* Device Drivers */ - -#define RT_USING_DEVICE_IPC -#define RT_USING_SYSTEM_WORKQUEUE -#define RT_SYSTEM_WORKQUEUE_STACKSIZE 2048 -#define RT_SYSTEM_WORKQUEUE_PRIORITY 23 -#define RT_USING_SERIAL -#define RT_USING_SERIAL_V1 -#define RT_SERIAL_USING_DMA -#define RT_SERIAL_RB_BUFSZ 64 -#define RT_USING_PIN - -/* Using USB */ - - -/* C/C++ and POSIX layer */ - -#define RT_LIBC_DEFAULT_TIMEZONE 8 - -/* POSIX (Portable Operating System Interface) layer */ - - -/* Interprocess Communication (IPC) */ - - -/* Socket is in the 'Network' category */ - - -/* Network */ - - -/* Utilities */ - - -/* RT-Thread Utestcases */ - - -/* RT-Thread online packages */ - -/* IoT - internet of things */ - - -/* Wi-Fi */ - -/* Marvell WiFi */ - - -/* Wiced WiFi */ - - -/* IoT Cloud */ - - -/* security packages */ - - -/* language packages */ - -/* JSON: JavaScript Object Notation, a lightweight data-interchange format */ - - -/* XML: Extensible Markup Language */ - - -/* multimedia packages */ - -/* LVGL: powerful and easy-to-use embedded GUI library */ - - -/* u8g2: a monochrome graphic library */ - - -/* PainterEngine: A cross-platform graphics application framework written in C language */ - - -/* tools packages */ - - -/* system packages */ - -/* enhanced kernel services */ - - -/* POSIX extension functions */ - - -/* acceleration: Assembly language or algorithmic acceleration packages */ - - -/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */ - - -/* Micrium: Micrium software products porting for RT-Thread */ - - -/* peripheral libraries and drivers */ - - -/* AI packages */ - - -/* miscellaneous packages */ - -/* project laboratory */ - -/* samples: kernel and components samples */ - - -/* entertainment: terminal games and other interesting software packages */ - - -/* Hardware Drivers Config */ - -#define SOC_SERIES_GD32F4xx -#define SOC_GD32450Z - -/* Onboard Peripheral Drivers */ - -/* On-chip Peripheral Drivers */ - -#define BSP_USING_GPIO -#define BSP_USING_UART -#define BSP_USING_UART1 - -/* Board extended module Drivers */ - - -#endif diff --git a/bsp/gd32/libraries/gd32_drivers/drv_adc.c b/bsp/gd32/libraries/gd32_drivers/drv_adc.c deleted file mode 100644 index 6653ca2c38..0000000000 --- a/bsp/gd32/libraries/gd32_drivers/drv_adc.c +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright (c) 2006-2022, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-02-25 iysheng first version - * 2022-04-13 wangh adc init and convert bug fix - */ - -#include - -#ifdef RT_USING_ADC - -#define DBG_TAG "drv.adc" -#define DBG_LVL DBG_INFO -#include - -#define MAX_EXTERN_ADC_CHANNEL 16 - -typedef struct -{ - struct rt_adc_device adc_dev; - char name[8]; - rt_base_t adc_pins[16]; - void *private_data; -} gd32_adc_device; - -static gd32_adc_device adc_devs[] = { -#ifdef BSP_USING_ADC0 - { - .name = "adc0", - .adc_pins = { - GET_PIN(A, 0), GET_PIN(A, 1), GET_PIN(A, 2), GET_PIN(A, 3), - GET_PIN(A, 4), GET_PIN(A, 5), GET_PIN(A, 6), GET_PIN(A, 7), - GET_PIN(B, 0), GET_PIN(B, 1), GET_PIN(C, 0), GET_PIN(C, 1), - GET_PIN(C, 2), GET_PIN(C, 3), GET_PIN(C, 4), GET_PIN(C, 5), - }, - .private_data = (void *)ADC0, - }, -#endif - -#ifdef BSP_USING_ADC1 - { - .name = "adc1", - .adc_pins = { - GET_PIN(A, 0), GET_PIN(A, 1), GET_PIN(A, 2), GET_PIN(A, 3), - GET_PIN(A, 4), GET_PIN(A, 5), GET_PIN(A, 6), GET_PIN(A, 7), - GET_PIN(B, 0), GET_PIN(B, 1), GET_PIN(C, 0), GET_PIN(C, 1), - GET_PIN(C, 2), GET_PIN(C, 3), GET_PIN(C, 4), GET_PIN(C, 5), - }, - .private_data = (void *)ADC1, - }, -#endif -}; - -static void gd32_adc_gpio_init(rt_base_t pin) -{ - rcu_periph_clock_enable((rcu_periph_enum)PIN_GDRCU(pin)); - gpio_init(PIN_GDPORT(pin), GPIO_MODE_AIN, GPIO_OSPEED_50MHZ, PIN_GDPIN(pin)); -} - -static rt_err_t drv_adc_enabled(struct rt_adc_device *device, rt_uint32_t channel, rt_bool_t enabled) -{ - if ((device == NULL) || (channel >= MAX_EXTERN_ADC_CHANNEL)) - { - LOG_E("invalid channel\r\n"); - return -RT_EINVAL; - } - - gd32_adc_device *gd32_adc = (gd32_adc_device *)device; - uint32_t adc_periph = (uint32_t )(device->parent.user_data); - - if (enabled == ENABLE) - { - gd32_adc_gpio_init(gd32_adc->adc_pins[channel]); - adc_deinit(adc_periph); - adc_channel_length_config(adc_periph, ADC_REGULAR_CHANNEL, 1); - adc_data_alignment_config(adc_periph, ADC_DATAALIGN_RIGHT); /* 数据右对齐 */ - adc_external_trigger_config(adc_periph, ADC_REGULAR_CHANNEL, ENABLE); /* 规则组外部触发使能 */ - adc_external_trigger_source_config(adc_periph, ADC_REGULAR_CHANNEL, ADC0_1_2_EXTTRIG_REGULAR_NONE); - adc_special_function_config(adc_periph, ADC_SCAN_MODE, DISABLE); /* 扫描模式禁止,单通道模式 */ - adc_special_function_config(adc_periph, ADC_CONTINUOUS_MODE, DISABLE); /* 连续转换禁止,单次转换模式 */ - adc_discontinuous_mode_config(adc_periph, ADC_REGULAR_CHANNEL, 1); /* 规则组间断使能及转换通道数目 */ - adc_enable(adc_periph); - rt_hw_us_delay(500); - adc_calibration_enable(adc_periph); /* ADC自校准 */ - } - else - { - adc_disable(adc_periph); - } - - return 0; -} - -static rt_err_t drv_adc_convert(struct rt_adc_device *device, rt_uint32_t channel, rt_uint32_t *value) -{ - if ((device == NULL) || (channel >= MAX_EXTERN_ADC_CHANNEL) || (value == NULL)) - { - LOG_E("invalid param\r\n"); - return -RT_EINVAL; - } - - uint32_t adc_periph = (uint32_t )(device->parent.user_data); - - adc_regular_channel_config(adc_periph, 0, channel, ADC_SAMPLETIME_239POINT5); - adc_software_trigger_enable(adc_periph, ADC_REGULAR_CHANNEL); - - while(!adc_flag_get(adc_periph, ADC_FLAG_EOC)); /* 等待ADC转换完成 */ - adc_flag_clear(adc_periph, ADC_FLAG_EOC); /* 清除转换完成标志位 */ - adc_flag_clear(adc_periph, ADC_FLAG_STRC); - *value = adc_regular_data_read(adc_periph); - - return 0; -} - -static struct rt_adc_ops drv_adc_ops = { - .enabled = drv_adc_enabled, - .convert = drv_adc_convert, -}; - -static int rt_hw_adc_init(void) -{ - int ret, i = 0; - -#ifdef BSP_USING_ADC0 - rcu_periph_clock_enable(RCU_ADC0); -#endif - -#ifdef BSP_USING_ADC1 - rcu_periph_clock_enable(RCU_ADC1); -#endif - - rcu_adc_clock_config(RCU_CKADC_CKAPB2_DIV6); /* 72/6 = 12MHz need < 14MHZ */ - adc_mode_config(ADC_MODE_FREE); - - for (; i < sizeof(adc_devs) / sizeof(gd32_adc_device); i++) - { - ret = rt_hw_adc_register(&adc_devs[i].adc_dev, - (const char *)adc_devs[i].name, - &drv_adc_ops, (void *)adc_devs[i].private_data); - if (ret != RT_EOK) - { - /* TODO err handler */ - LOG_E("failed register %s, err=%d\r\n", adc_devs[i].name, ret); - } - } - - return ret; -} -INIT_BOARD_EXPORT(rt_hw_adc_init); -#endif diff --git a/bsp/gd32/risc-v/README.md b/bsp/gd32/risc-v/README.md new file mode 100644 index 0000000000..cc2ba4c067 --- /dev/null +++ b/bsp/gd32/risc-v/README.md @@ -0,0 +1,20 @@ + +# GD32 RISC-V 系列BSP 说明 + +GD32 RISC-V系列 BSP 目前支持情况如下表所示: + +| **BSP 文件夹名称** | **开发板名称** | +|:------------------------- |:-------------------------- | +| **VF1 系列** | | +| [gd32vf103v-eval](gd32vf103v-eval) | 兆易创新 官方 GD32VF103V-EVAL 开发板 | +| [gd32vf103r-start](gd32vf103r-start) | 兆易创新 官方 GD32VF103R-START 开发板 | + +可以通过阅读相应 BSP 下的 README 来快速上手,如果想要使用 BSP 更多功能可参考 docs 文件夹下提供的说明文档,如下表所示: + +| **BSP 使用教程** | **简介** | +|:-------------------- |:------------------------------------------------- | +| [外设驱动使用教程](docs/GD32_RISC-V系列BSP外设驱动使用教程.md) | 讲解 BSP 上更多外设驱动的使用方法 | +| [外设驱动介绍与应用](docs/GD32_RISC-V系列驱动介绍.md) | 讲解 GD32 RISC-V系列 BSP 驱动的支持情况,以及如何利用驱动框架开发应用程序 | +| **BSP 制作与提交** | **简介** | +| [BSP 制作教程](docs/GD32_RISC-V系列BSP制作教程.md) | 讲解 GD32 RISC-V系列 BSP 的制作方法 | + diff --git a/bsp/gd32/risc-v/docs/GD32_RISC-V系列BSP制作教程.md b/bsp/gd32/risc-v/docs/GD32_RISC-V系列BSP制作教程.md new file mode 100644 index 0000000000..8e8622e5a0 --- /dev/null +++ b/bsp/gd32/risc-v/docs/GD32_RISC-V系列BSP制作教程.md @@ -0,0 +1,612 @@ +# GD32 RISC-V系列 BSP 制作教程 + +## 1. BSP 框架介绍 + +BSP 框架结构如下图所示: + +![BSP 框架图](./figures/frame.png) + +GD32的BSP架构主要分为三个部分:libraries、tools和具体的Boards,其中libraries包含了GD32的通用库,包括每个系列的Firmware Library以及适配RT-Thread的drivers;tools是生成工程的Python脚本工具;另外就是Boards文件,当然这里的Boards有很多,我这里值列举了GD32VF103V_EVAL。 + +## 2. 知识准备 + +制作一个 BSP 的过程就是构建一个新系统的过程,因此想要制作出好用的 BSP,要对 RT-Thread 系统的构建过程有一定了解,需要的知识准备如下所示: + +- 掌握 GD32 RISC-V系列 BSP 的使用方法 + + 了解 BSP 的使用方法,可以阅读 [BSP 说明文档](../README.md) 中使用教程表格内的文档。 + +- 了解 RISC-V系列MCU的基本架构与特征 + +- 了解 Scons 工程构建方法 + + RT-Thread 使用 Scons 作为系统的构建工具,因此了解 Scons 的常用命令对制作新 BSP 是基本要求。 + +- 了解设备驱动框架 + + 在 RT-Thread 系统中,应用程序通过设备驱动框架来操作硬件,因此了解设备驱动框架,对添加 BSP 驱动是很重要的。 + +- 了解 Kconfig 语法 + + RT-Thread 系统通过 menuconfig 的方式进行配置,而 menuconfig 中的选项是由 Kconfig 文件决定的,因此想要对 RT-Thread 系统进行配置,需要对 kconfig 语法有一定了解。 + +## 3. BSP移植 + +### 3.1 GCC环境准备 + +RISC-V系列MCU使用的工具链是xPack GNU RISC-V Embedded GCC。 + +在配置交叉编译工具链之前,需要下载得到GCC工具链的安装包,然后解压即可,也可配置环境变量。 + +[GCC工具链下载地址](https://github.com/xpack-dev-tools/riscv-none-embed-gcc-xpack/releases/) + +![GCC](./figures/gcc.png) + +根据自己的主机选择相应的版本,下载完成解压即可。 + + + +### 3.2 BSP工程制作 + +**1.构建基础工程** +首先看看RT-Thread代码仓库中已有很多BSP,而我要移植的是RISC-V内核。这里参考GD32 ARM工程。最终目录如下: +``` +risc-v +docs # 说明文档 +gd32vf103v-eval # 具体BSP +libraries # 库文件 + gd32_drivers + GD32VF103_Firmware_Library # GD官方固件库 +tools + OpenOCD # OpenOCD 下载调试工具 +README.md +``` +**2.修改BSP构建脚本** +bsp/gd32/risc-v/gd32vf103v-eval/SConstruct修改后的内容如下: +```python +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.' + rtconfig.TARGET_EXT + +DefaultEnvironment(tools=[]) +env = Environment(tools = ['mingw'], + AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, + CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS, + AR = rtconfig.AR, ARFLAGS = '-rc', + CXX = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS, + LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) +env.PrependENVPath('PATH', rtconfig.EXEC_PATH) +env['ASCOM'] = env['ASPPCOM'] + +Export('RTT_ROOT') +Export('rtconfig') + +SDK_ROOT = os.path.abspath('./') + +if os.path.exists(SDK_ROOT + '/libraries'): + libraries_path_prefix = SDK_ROOT + '/libraries' +else: + libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries' + +SDK_LIB = libraries_path_prefix +Export('SDK_LIB') + +# prepare building environment +# objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) +objs = PrepareBuilding(env, RTT_ROOT) + +gd32_library = 'GD32VF103_Firmware_Library' +rtconfig.BSP_LIBRARY_TYPE = gd32_library + +# include libraries +objs.extend(SConscript(os.path.join(libraries_path_prefix, gd32_library, 'SConscript'))) + +# include drivers +objs.extend(SConscript(os.path.join(libraries_path_prefix, 'gd32_drivers', 'SConscript'))) + +# make a building +DoBuilding(TARGET, objs) +``` +该文件用于链接所有的依赖文件,并调用make进行编译。该文件主要修改固件库的路径。 + +bsp/gd32/risc-v/gd32vf103v-eval/rtconfig.py修改后的内容如下: +```python +import os + +# toolchains options +ARCH='risc-v' +CPU='bumblebee' +CROSS_TOOL='gcc' + +# bsp lib config +BSP_LIBRARY_TYPE = None + +if os.getenv('RTT_CC'): + CROSS_TOOL = os.getenv('RTT_CC') +if os.getenv('RTT_ROOT'): + RTT_ROOT = os.getenv('RTT_ROOT') + +# cross_tool provides the cross compiler +# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR +if CROSS_TOOL == 'gcc': + PLATFORM = 'gcc' + EXEC_PATH = EXEC_PATH = r'D:/gcc/xpack-riscv-none-embed-gcc-10.2.0-1.2/bin' +else: + print('Please make sure your toolchains is GNU GCC!') + exit(0) + +#if os.getenv('RTT_EXEC_PATH'): +# EXEC_PATH = os.getenv('RTT_EXEC_PATH') + +CORE = 'risc-v' +BUILD = 'debug' +MAP_FILE = 'rtthread.map' +LINK_FILE = '../libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/GD32VF103xB.lds' + +if PLATFORM == 'gcc': + # toolchains + PREFIX = 'riscv-none-embed-' + CC = PREFIX + 'gcc' + AS = PREFIX + 'gcc' + AR = PREFIX + 'ar' + CXX = PREFIX + 'g++' + LINK = PREFIX + 'gcc' + TARGET_EXT = 'elf' + SIZE = PREFIX + 'size' + OBJDUMP = PREFIX + 'objdump' + OBJCPY = PREFIX + 'objcopy' + + DEVICE = ' -march=rv32imac -mabi=ilp32 -DUSE_PLIC -DUSE_M_TIME -DNO_INIT -mcmodel=medany -msmall-data-limit=8 -L. -nostartfiles -lc ' + CFLAGS = DEVICE + CFLAGS += ' -save-temps=obj' + AFLAGS = '-c'+ DEVICE + ' -x assembler-with-cpp' + AFLAGS += ' -Iplatform -Ilibraries/RISCV/include -Ilibraries/RISCV/env_Eclipse' + LFLAGS = DEVICE + LFLAGS += ' -Wl,--gc-sections,-cref,-Map=' + MAP_FILE + LFLAGS += ' -T ' + LINK_FILE + LFLAGS += ' -Wl,-wrap=memset' + + CPATH = '' + LPATH = '' + + if BUILD == 'debug': + CFLAGS += ' -O0 -g3' + AFLAGS += ' -g3' + else: + CFLAGS += ' -O2' + + CXXFLAGS = CFLAGS + + POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' + +def dist_handle(BSP_ROOT, dist_dir): + import sys + cwd_path = os.getcwd() + sys.path.append(os.path.join(os.path.dirname(BSP_ROOT), 'tools')) + from sdk_dist import dist_do_building +dist_do_building(BSP_ROOT, dist_dir) +``` +该文件编译参数,主要关注链接脚本和交叉编译工具链,工具链的地址需要根据实际的地址修改,gd32vf103v-eval开发板使用的芯片是GD32VF103VB,因此其链接脚本是GD32VF103xB.lds。 + +**3.修改board文件夹** +(1) 修改bsp/gd32/risc-v/gd32vf103v-eval/board/Kconfig文件 + +修改后内容如下: +``` +menu "Hardware Drivers Config" + +config SOC_SERIES_GD32VF103V + bool + default y + +config SOC_GD32VF103V + bool + select SOC_SERIES_GD32VF103V + select RT_USING_COMPONENTS_INIT + select RT_USING_USER_MAIN + default y + +menu "Onboard Peripheral Drivers" + +endmenu + +menu "On-chip Peripheral Drivers" + + config BSP_USING_GPIO + bool "Enable GPIO" + select RT_USING_PIN + default y + + menuconfig BSP_USING_UART + bool "Enable UART" + default y + select RT_USING_SERIAL + if BSP_USING_UART + config BSP_USING_UART0 + bool "Enable UART0" + default y + + config BSP_UART0_RX_USING_DMA + bool "Enable UART0 RX DMA" + depends on BSP_USING_UART0 + select RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART1 + bool "Enable UART1" + default n + + config BSP_UART1_RX_USING_DMA + bool "Enable UART1 RX DMA" + depends on BSP_USING_UART1 + select RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART2 + bool "Enable UART2" + default n + + config BSP_UART2_RX_USING_DMA + bool "Enable UART2 RX DMA" + depends on BSP_USING_UART2 + select RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART3 + bool "Enable UART3" + default n + + config BSP_UART3_RX_USING_DMA + bool "Enable UART3 RX DMA" + depends on BSP_USING_UART3 + select RT_SERIAL_USING_DMA + default n + + config BSP_USING_UART4 + bool "Enable UART4" + default n + + config BSP_UART4_RX_USING_DMA + bool "Enable UART4 RX DMA" + depends on BSP_USING_UART4 + select RT_SERIAL_USING_DMA + default n + endif + + menuconfig BSP_USING_SPI + bool "Enable SPI BUS" + default n + select RT_USING_SPI + if BSP_USING_SPI + config BSP_USING_SPI1 + bool "Enable SPI1 BUS" + default n + + config BSP_SPI1_TX_USING_DMA + bool "Enable SPI1 TX DMA" + depends on BSP_USING_SPI1 + default n + + config BSP_SPI1_RX_USING_DMA + bool "Enable SPI1 RX DMA" + depends on BSP_USING_SPI1 + select BSP_SPI1_TX_USING_DMA + default n + endif + + menuconfig BSP_USING_I2C1 + bool "Enable I2C1 BUS (software simulation)" + default n + select RT_USING_I2C + select RT_USING_I2C_BITOPS + select RT_USING_PIN + if BSP_USING_I2C1 + config BSP_I2C1_SCL_PIN + int "i2c1 scl pin number" + range 1 216 + default 24 + config BSP_I2C1_SDA_PIN + int "I2C1 sda pin number" + range 1 216 + default 25 + endif + + menuconfig BSP_USING_ADC + bool "Enable ADC" + default n + select RT_USING_ADC + if BSP_USING_ADC + config BSP_USING_ADC0 + bool "Enable ADC0" + default n + + config BSP_USING_ADC1 + bool "Enable ADC1" + default n + + config BSP_USING_ADC2 + bool "Enable ADC2" + default n + endif + + menuconfig BSP_USING_TIM + bool "Enable timer" + default n + select RT_USING_HWTIMER + if BSP_USING_TIM + config BSP_USING_TIM10 + bool "Enable TIM10" + default n + + config BSP_USING_TIM11 + bool "Enable TIM11" + default n + + config BSP_USING_TIM12 + bool "Enable TIM13" + default n + endif + + menuconfig BSP_USING_ONCHIP_RTC + bool "Enable RTC" + select RT_USING_RTC + default n + if BSP_USING_ONCHIP_RTC + choice + prompt "Select clock source" + default BSP_RTC_USING_LSE + + config BSP_RTC_USING_LSE + bool "RTC USING LSE" + + config BSP_RTC_USING_LSI + bool "RTC USING LSI" + endchoice + endif + + config BSP_USING_WDT + bool "Enable Watchdog Timer" + select RT_USING_WDT + default n + + source "../libraries/gd32_drivers/Kconfig" + +endmenu + +menu "Board extended module Drivers" + +endmenu + +endmenu +``` +这个文件就是配置板子驱动的,这里可根据实际需求添加。 + +(2) 修改bsp/gd32/risc-v/gd32vf103v-eval/board/SConscript文件 +修改后内容如下: +```python +import os +import rtconfig +from building import * + +Import('SDK_LIB') + +cwd = GetCurrentDir() + +# add general drivers +src = Split(''' +board.c +''') + +path = [cwd] + +startup_path_prefix = SDK_LIB + +if rtconfig.CROSS_TOOL == 'gcc': + src += [startup_path_prefix + '/GD32VF103_Firmware_Library/RISCV/env_Eclipse/start.S'] + src += [startup_path_prefix + '/GD32VF103_Firmware_Library/RISCV/env_Eclipse/entry.S'] + +CPPDEFINES = ['GD32VF103V_EVAL'] +group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES) + + +Return('group') +``` +该文件主要添加board文件夹的.c文件和头文件路径。另外根据开发环境选择相应的汇编文件,和前面的libraries的SConscript语法是一样,文件的结构都是类似的,这里就没有注释了。 + +到这里,基本所有的依赖脚本都配置完成了。 + +**4.固件库修改** +(1) 修改bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/start.S +GCC 环境下的启动是由 entry() 函数调用的启动函数 rt_thread_startup(),所以需要修改启动文的C语言入口。 + +![start](./figures/start.png) + + +(2) 修改bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/GD32VF103xB.lds +GD32VF103xB.lds文件需要新增RT-Thread堆栈的位置,否则无法正常运转,新增代码如下: +``` +/* section information for finsh shell */ +. = ALIGN(4); +__fsymtab_start = .; +KEEP(*(FSymTab)) +__fsymtab_end = .; +. = ALIGN(4); +__vsymtab_start = .; +KEEP(*(VSymTab)) +__vsymtab_end = .; +. = ALIGN(4); + +/* section information for initial. */ +. = ALIGN(4); +__rt_init_start = .; +KEEP(*(SORT(.rti_fn*))) +__rt_init_end = .; +. = ALIGN(4); + +/* section information for modules */ +. = ALIGN(4); +__rtmsymtab_start = .; +KEEP(*(RTMSymTab)) +__rtmsymtab_end = .; +``` + +![GD32VF103xB](./figures/GD32VF103xB.png) + +**5.驱动修改** +一个基本的BSP中,串口是必不可少的,所以还需要编写串口驱动,这里使用的串口0作为调试串口。 + +板子上还有LED灯,主要编写GPIO驱动即可。 + +关于串口和LED的驱动可以查看源码,这里就不贴出来了。 + +**6.应用开发** +笔者在applications的main.c中添加LED的应用代码, + +```c +#include +#include +#include +#include + +/* defined the LED1 pin: PC0 */ +#define LED1_PIN GET_PIN(C, 0) + +int main(void) +{ + int count = 1; + + /* set LED1 pin mode to output */ + rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT); + + while (count++) + { + rt_pin_write(LED1_PIN, PIN_HIGH); + rt_thread_mdelay(500); + rt_pin_write(LED1_PIN, PIN_LOW); + rt_thread_mdelay(500); + } + + return RT_EOK; +} +``` + +当然,这需要GPIO驱动的支持。 + +**7.使用ENV编译工程** +在env中执行:scons + +![scons ](./figures/scons.png) + +编译成功打印信息如下: + +![scons_success](./figures/scons_success.png) + +**8.使用VS Code开发GD32** +在env中执行:scons --target=vsc + +![vsc](./figures/vsc.png) + +这样就可方便使用VSCode开发GD32了,当然,这里只是生成了c_cpp_properties.json,要想使用VS Code下载代码还需要更多的配置,下一节讲解。 + +### 3.3固件下载 +前面使用ENV成功编译GD32VF103V-SEVAL的固件,那么接下来就是下载环节,下载方式很多,笔者这里讲解使用OpenOCD工具下载。 + +OpenOCD是用于对RISC-V进行下载仿真的软件工具,是一个开源软件包。当然啦,要想使用OpenOCD下载固件,需要GD-Link或者J-Link的支持。OpenOCD软件包已经放在bsp/gd32/risc-v/tools,只需要简单配置就可以,笔者这里使用VS Code开发。 + +**1.新建bsp/gd32/risc-v/gd32vf103v-eval/.vscode/tasks.json** + +tasks.json的作用就是配置工程的编译、下载等工作。如果没有则需要创建tasks.json文件,内容如下: +```json +{ + "version": "2.0.0", + "tasks": [ + { + "label": "download", + "type": "shell", + "command": "../tools/OpenOCD/bin/openocd.exe", + "args": [ + "-f", + "../tools/interface/openocd_gdlink_riscv.cfg", + "-c", + "program rtthread.elf exit" + ] + } + ] +} +``` +这个文件创建了一个任务,任务名为download,用于在线下载固件。 +选择“终端->运行任务…” + +![svc_run_task](./figures/svc_run_task.png) + +选择task中配置的命令download。 + +![svc_download](./figures/svc_download.png) + +稍等片刻,即可下载成功。 + +![svc_download_success](./figures/svc_download_success.png) + + +固件下载成后,接上串口0,打印信息如下: + +![run](./figures/run.png) + +同时LED会不断闪烁。 + + +## 4. 规范 + +本章节介绍 RT-Thread GD32 系列 BSP 制作与提交时应当遵守的规范 。开发人员在 BSP 制作完成后,可以根据本规范提出的检查点对制作的 BSP 进行检查,确保 BSP 在提交前有较高的质量 。 + +### 4.1 BSP 制作规范 + +GD32 BSP 的制作规范主要分为 3 个方面:工程配置,ENV 配置和 IDE 配置。在已有的 GD32 系列 BSP 的模板中,已经根据下列规范对模板进行配置。在制作新 BSP 的过程中,拷贝模板进行修改时,需要注意的是不要修改这些默认的配置。BSP 制作完成后,需要对新制作的 BSP 进行功能测试,功能正常后再进行代码提交。 + +下面将详细介绍 BSP 的制作规范。 + +#### 4.1.1 工程配置 + +- 遵从RT-Thread 编码规范,代码注释风格统一 +- main 函数功能保持一致 + - 如果有 LED 的话,main 函数里**只放一个** LED 1HZ 闪烁的程序 +- 在 `rt_hw_board_init` 中需要完成堆的初始化:调用 `rt_system_heap_init` +- 默认只初始化 GPIO 驱动和 FinSH 对应的串口驱动,不使用 DMA +- 当使能板载外设驱动时,应做到不需要修改代码就能编译下载使用 +- 提交前应检查 GCC/IAR 编译器直接编译或者重新生成后编译是否成功 +- 使用 `dist` 命令对 BSP 进行发布,检查使用 `dist` 命令生成的工程是否可以正常使用 + +#### 4.1.2 ENV 配置 + +- 系统心跳统一设置为 1000(宏:RT_TICK_PER_SECOND) +- BSP 中需要打开调试选项中的断言(宏:RT_DEBUG) +- 系统空闲线程栈大小统一设置为 256(宏:IDLE_THREAD_STACK_SIZE) +- 开启组件自动初始化(宏:RT_USING_COMPONENTS_INIT) +- 需要开启 user main 选项(宏:RT_USING_USER_MAIN) +- 默认关闭 libc(宏:RT_USING_LIBC) +- FinSH 默认只使用 MSH 模式(宏:FINSH_USING_MSH_ONLY) + +### 4.2 BSP 提交规范 + +- 提交前请认真修改 BSP 的 README.md 文件,README.md 文件的外设支持表单只填写 BSP 支持的外设,可参考其他 BSP 填写。查看文档[《GD32系列驱动介绍》](./GD32 RISC-V系列驱动介绍.md)了解驱动分类。 +- 提交 BSP 分为 2 个阶段提交: + - 第一阶段:基础 BSP 包括串口驱动和 GPIO 驱动,能运行 FinSH 控制台。完成IAR 和 GCC 编译器支持。 BSP 的 README.md 文件需要填写第二阶段要完成的驱动。 + - 第二阶段:完成板载外设驱动支持,所有板载外设使用 menuconfig 配置后就能直接使用。若开发板没有板载外设,则此阶段可以不用完成。不同的驱动要分开提交,方便 review 和合并。 +- 只提交 BSP 必要的文件,删除无关的中间文件,能够提交的文件请对照其他 BSP。 +- 提交前要对 BSP 进行编译测试,确保在不同编译器下编译正常 +- 提交前要对 BSP 进行功能测试,确保 BSP 的在提交前符合工程配置章节中的要求 \ No newline at end of file diff --git a/bsp/gd32/risc-v/docs/GD32_RISC-V系列BSP外设驱动使用教程.md b/bsp/gd32/risc-v/docs/GD32_RISC-V系列BSP外设驱动使用教程.md new file mode 100644 index 0000000000..ec15fdc45e --- /dev/null +++ b/bsp/gd32/risc-v/docs/GD32_RISC-V系列BSP外设驱动使用教程.md @@ -0,0 +1,77 @@ +# GD32 RISC-V系列BSP外设驱动使用教程 + +## 简介 + +本文档是为需要在 RT-Thread 操作系统上使用更多开发板资源的开发者准备的。通过使用 ENV 工具对 BSP 进行配置,可以开启更多板载资源,实现更多高级功能。 + +主要包括以下内容: + +1. 如何使用开发板上更多的板载资源 +2. 如何使用更多的片上资源 +3. 如何添加更多片上资源选项 + +## 前提要求 + +- 学会如何使用 ENV 工具,参考:[RT-Thread env 工具用户手册](https://www.rt-thread.org/document/site/programming-manual/env/env/) + +## 如何使用更多的板载资源 + +开发板上一般有很多板载资源,如 Flash、SD卡等,但是 BSP 工程默认没有开启这些外设驱动。RT-Thread 提供了 ENV 工具来开启或关闭 BSP 的外设驱动。下面以在GD32VFf103V-EVAL开发板上开启 UART1驱动为例,一步步的展示如何使用 ENV 工具对 BSP 进行配置。 + +### 1)打开配置工具 + +在目录 `rt-thread\bsp\gd32\risc-v\gd32vf103v-eval` 下打开 menuconfig 配置界面。 + +![打开 menuconfig](figures/menuconfig_gd32vf103v-eval.png) + +打开的配置工具界面如下所示: + +![RT-Thread 配置菜单](figures/config1.png) + +通过键盘上的上下键移动光标,选中 `Hardware Drivers Config`然后按回车键进入硬件驱动配置菜单。 + +### 2)进入硬件驱动配置菜单 + +在硬件配置菜单里有三个选项,分别是 **板载外设配置菜单**、**片上外设配置菜单**和**扩展模块配置菜单**,按回车键进入板载外设配置菜单。 + +![硬件驱动 配置菜单](figures/config2.png) + +### 3)在板载外设配置菜单里开启 UART1 选项 + +![板载外设 配置菜单](figures/UART1.png) + +### 4)保存退出 + +然后右移光标选中 Save 按回车键保存,然后按 Esc 键退出配置工具。 + +![保存退出](figures/save.png) + +### 5)更新软件包 + +输入命令 `pkgs --update` 使软件包配置生效。 + +![1543477036034](figures/update.png) + +### 6)编译 + +直接使用gcc编译程序。 + +![1543478492157](figures/scons.png) + +值得注意的是,使用gcc编译程序,需要先配置好RISC-V系列MCU的交叉编译工具链。 + +### 7)下载 + +下载工具可以使用J-Link/GD-Link,可使用GD官方的DFU,也可使用OpenOCD下载。 + +### 8)查看运行结果 + +程序运行后,输入命令 `list_device` 可以看到名为 uart1的设备,此时 `UART1` 设备已经可以使用了。 + +![1543478742034](figures/run_flash.png) + + + +## 总结 + +当开发者需要使用未开启的外设时,只要在 ENV 工具中使能相关的外设即可,重新生成的工程中就会添加对应的驱动文件。开发者就可以利用 RT-Thread 提供的驱动开快速开发应用了。 \ No newline at end of file diff --git a/bsp/gd32/risc-v/docs/GD32_RISC-V系列驱动介绍.md b/bsp/gd32/risc-v/docs/GD32_RISC-V系列驱动介绍.md new file mode 100644 index 0000000000..074e8b79a3 --- /dev/null +++ b/bsp/gd32/risc-v/docs/GD32_RISC-V系列驱动介绍.md @@ -0,0 +1,59 @@ +# GD32 RISC-V系列驱动介绍 + +在 RT-Thread 实时操作系统中,各种各样的设备驱动是通过一套 I/O 设备管理框架来管理的。设备管理框架给上层应用提供了一套标准的设备操作 API,开发者通过调用这些标准设备操作 API,可以高效地完成和底层硬件外设的交互。设备管理框架的结构如下图所示: + +![rt_device](figures/rt_device.png) + +使用 I/O 设备管理框架开发应用程序,有如下优点: + +- 使用同一套标准的 API 开发应用程序,使应用程序具有更好的移植性 +- 底层驱动的升级和修改不会影响到上层代码 +- 驱动和应用程序相互独立,方便多个开发者协同开发 + +## 1. 驱动分类介绍 + +本小节介绍 BSP 提供的不同类别驱动的概念,对一个 BSP 而言,有如下三类驱动: + +- **板载外设驱动**:指 MCU 之外,开发板上外设,例如 TF 卡、以太网和 LCD 等 +- **片上外设驱动**:指 MCU 芯片上的外设,例如硬件定时器、ADC 和看门狗等 +- **扩展模块驱动**:指可以通过扩展接口或者杜邦线连接的开发板的模块,例如 ESP8266 模块 + +这三种外设的示意图如下所示: + +![Peripheral](figures/Peripheral.png) + +## 2. 外设驱动的使用方法 + +点击下表中的驱动名称,即可跳转到对应驱动框架的介绍文档。开发者可以通过阅读相关资料,了解如何在应用开发中通过设备驱动框架来使用这些外设驱动。 + +### 2.1 片上外设 + +| 序号 | 驱动 | 简介 | +| ---- | ------------------------------------------------------------ | ------------------------------------------------ | +| 1 | [GPIO](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/pin/pin.md) | 操作 GPIO 管脚 | +| 2 | [UART](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/uart/uart_v1/uart) | 通过串口收发数据 | +| 3 | [soft I2C](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/i2c/i2c.md) | 通过软件 I2C 收发数据 | +| 4 | [SPI](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/spi/spi) | 通过 SPI 收发数据 | +| 5 | [ADC](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/adc/adc.md) | 测量管脚上的模拟量 | +| 6 | [TIMER](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/hwtimer/hwtimer.md) | 使用硬件定时器实现测量时间和定时执行回调函数功能 | +| 7 | [PWM](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/pwm/pwm.md) | 在特定的管脚输出 PWM 波形 | +| 8 | [RTC](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/rtc/rtc.md) | 设置和读取时间 | +| 9 | [WDT](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/watchdog/watchdog.md) | 看门狗驱动 | + + +### 2.2 板载外设 + +| 序号 | 驱动 | 简介 | +| ---- | ------- | --------------------------------------- | +| 1 | USB FS | USB | +| 2 | LCD | 显示屏 | + +### 2.3 扩展模块 + +| 序号 | 驱动 | 简介 | +| ---- | -------- | ---------------------- | +| 1 | ESP8266 | 串口转 WIFI 模块 | + +### 2.4 驱动示例代码 + +在 RT-Thread 的 `examples\test` 目录下,有 RT-Thread 提供的基于不同外设驱动的示例代码。在 env 工具中开启 BSP 中要测试的驱动,并将 `examples\test` 中对应的驱动框架测试文件加入工程,即可快速测试 BSP 中提供的驱动。 \ No newline at end of file diff --git a/bsp/gd32/risc-v/docs/figures/GD32VF103xB.png b/bsp/gd32/risc-v/docs/figures/GD32VF103xB.png new file mode 100644 index 0000000000000000000000000000000000000000..7322cbac0abf5c8cc03f9afe2fb0c6d269d6507d GIT binary patch literal 65143 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 z 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 IhSSsk0X;qYIRF3v literal 0 HcmV?d00001 diff --git a/bsp/gd32/risc-v/docs/figures/config2.png b/bsp/gd32/risc-v/docs/figures/config2.png new file mode 100644 index 0000000000000000000000000000000000000000..5bbcf7e0bbca038551dd7c14b207b504747fcd7d GIT binary patch literal 48578 zcmb5WXIPU@&^L+=te_$yQWcS2q$7m#SEpJKDz_r|Ec4v3WZ)axnR!>Lm()pX`X=rFJX{bLmprJW4 zKtprt^jX^DI|;Ja8)#^_Xfz(G7zO66&RSAfHpWlNBcq})W4cPI_w0KfT3@5NGPS#FS%0*&)2_H@3e3EG6#De3y2z)6lXBP` zpO9hu-uN}~C!ev!b>6`?j>n80Up55z5iG}V(tMfXt7KQFLM0t44NjO2OC2ftEXO_z zcek8zQL8+vHmm#4@!{m3Z)n7bLpuY$EKGj4{@$Q@bM*!2Z(I2hw;ui9cG=U@11J8r znc|e?{x%CfT;Zep+cuIsiTT@n9xXkC_+p%H&D8f_6dHBCFXZn78om_&0;@Cqvq$)V zQ|4t^%$@(IGyaW#ino9>Mf2&|&{=w+BZ_ zKD3tpL%raYk+Cr~D=aWjw&>j}-D-S1yS&3>mAQH8Y^zV{P#&O-4{xFOYsBFbLA4

    AI;5&j%64Kh*UgzNbEiMXVI7 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

    yIan>4I7TYeG#O^OTBYo4Wuq*c-{|6|F Bi!cBH literal 0 HcmV?d00001 diff --git a/bsp/gd32/risc-v/docs/figures/frame.png b/bsp/gd32/risc-v/docs/figures/frame.png new file mode 100644 index 0000000000000000000000000000000000000000..0c702bcbf316e5efc1f38369784e3793d9af144f GIT binary patch literal 39871 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

    !8XwD8KZHh`s_x5K_L26;>O9 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


    u-?K(txnA zgirBf*e)qHWx&i&b!r%UC^#7IH$T~h6edCf z=Zy6SV-~E$!DP~AL&W!K{8`h>n|8vTEAiENY@aRp?Vq1h&0XqwA6CifllOIknP@v_Z?14PWT{w;p(;T9oPOZZ2PK1ryy+c zbmFSEN$jTJZg`e>fw__%54_%g;)V2Doa z-j7pphXWlGyk0!|X-*8iJ$QLZlKzSc*nVN52}VAmU$F#x>$X~repu}Pc&t)pBonHr zX0uQ>s7sURc-A8FsNO^5HiXYCnoAD%SRcN22K0_J0*#i!aect6j~mIrxoUM0#9 zmCxjut!VM0{et4tU}EmK;i)6Zk$~EI?*oK`NZ=@g1cUWK{sma( zpIbqo+OxnY7K+M{Y}!5uVBc*!QGz^tJ;)y%t~~fpS}+v}J~)VyV*d$MadqVL|4dYt zbHNFK2x^Ml)6*-7be@O?hQ3Np3t$FkUw{0W z$wxu;b%)E{yM#IyQyIDu!T!zl_4ukUDC#Lm%9kv9memgZx*a*i7C}bIu>smu=ek^w z6H|O2y2mkll5B=(k^|W3U0;dkHYFl$_&L$LL&ZE?MM3f;69*yf8AhN-o1g!J#dW~T zq^5rmI1xR7z(uhZ!{jnuAREN(55Qm$_VHS&r%oenIh^z3#&~KCUHv{urF%+};rggT z?27T@q+|+?cw>*RX^$86;O~)a^Vn^NR8-r(Loo~4c((r9fCg{WgB6CF>pM_0bU~_5-+ux~@YmF$kR>xbT z=5IurW`BvkNVsRhJHakX-v`aG_LwlWO9|swWkGn?mWI>=w-{Awa8Fd}!)4CcaBIT( z2#WoQp7KTg*2KCMQx?!Wu?^c>XareoQv=M*-u^%(iXOGNXqZJW_iPd@HP+yOEM=D- z>%LnKre=G6k9D;58=TO(Dyzr1cGRh?!LAjZy>yub??&X{K|5>cx=Yi=Xx?5|tkY~v z&dN>BRz@rsJEXBfmte*=gQUzccht&7U^-YAncfE(YNjw@)n%vjtqP}o8|WARunPlS zoUGjTfQaK>^El&_s(|0H;PQZ3y~aI3jK85nzBP)fUJa!0+j>5aGEsp_JCSQ)%;%GO zoX3-Ri<&bRaW1JjQ3)T6ofN84N62b$baT3+w@(w7ll>G`Ta)teC1birm} zpEl~-MfHp*!)SU+?IuPGf1jGA7gf)hF^HG_Er+^cF8bEP2!vBwYWMq(*2%AQ9z15Z zp*n701swa z->{^&(;J)C|M|v^swje-ou~yQIq>nA;EkB82_lj^T!iA>B+DV+U0VY}ZlfKk^_Cd6 z!&#|w9_g0^bT1T&6;aWacn5-E3k!sN$ZV;BZKDK}=mi;je=Q9w=Sm99dvv5k4RmjD zJvOHqhe4bS`x;dyc$u;cPiw8qcIBJOgX)oG2I>g4jKdgJjJSLqOl|HQlO0!At20Zn z<*&_BO2OaK%#9M+V(!?{JL_ioV^@kcZ2NEIm?wN+9z?7-m9#l|+m$DAk=ipOlN5>e!iEO&2`RuedGNV-1v-hz-7rggxLB%5KwR}tjTam z;}XPBh_4fwlr6}i?X_zypi649keE%f1e-2tIr1&ta|O&N#bM|DauIL14m^uJP3sbg zi#Vh5<6z3v8pK1+wBp&m$H71qQFUdt}39_23i z-ZyrN;`SJ<^?i-t8Km-@@HbK_ccffCK>YAb8H`P8^XA+4S4I~;*4!eQa05L$*KN7x zJg+*BGQyV>10y~Ao2^CFJcLMU#Ghq;tIV_IHGX$!{7a}q?=jwCE9$**p?y!xf;OAz z?8NgHDg0f?3P3W|4q6Cm1?|`@C-J*NijzNxT7uUPqUP8UUl7VtipTCnbcsfuz+KEu zvzOhg(5Z2%ioO4YcZ+|(JMy+a;GL1xVnMxWt@bm))Bq@IuC@syEPuxMwm_M^D&GxD z6|Cqusn?VJN-qu91v)Azvs0IGadY=SF^ZU}6adri)eD6QQ35d)fCE_O%{vHi{4Nd$ z9c7zw|MKaq!OG|hbdjRrA;&*tY&XQ7a5*R(qa73R80~D;%zuw|SWNMt9E`r0>~?s7 zu&?|mS6R(sYk&26#!kd0yZBw!lGMsv13=C-_S06n(Ib1J%DB4PMj@j0=j~zi^+emH z)tqU^pofza$gk8onNA7n7$~h87q_VZghOYomT0#!(AgF3?A{ZKd!7l5F;yVt!ok1N z&%MJ8$Ag8)tIBq^U0EUGM12Uy(Y+WQu9bBg`6yizV!0fAaD8WZN@e|g&obPzvWWVg z!IjZvS}lvaerksU4=L5cxL?hx7LlFC)?GR^%XXs$+(jV~V=I5Zw#-dO-x}4N57OeW z4(+ca*rM-aM{n2UTe+z^>=|c`mQ|W2MXeM{WVFi4*fZioF|HkO!GmAo*xp zoR<;F?|K}}WyYcQ*?LCB`t#lsnzK_n)n1`D$>OrVTFZCa;3mVKY+Z9F2R?~9WNdOv zWx_g-A3ab5$2~)8VS$EhxY5r0j_o|y08V`;%+x6pz(980Ai*f)|^=ZrD z;e6}r2S6P$nl!BUOpf4T_~>j;6?uwAygw8BRjBLa%b6n2`UD9--|73ny0-nFLNjCd zU}J{emu8yD{^MPSuF6;b6##r0Uo?pdL>y!SJ0N`M9+Dj5=XNVNmj>pWeaQ^W2PFGD zJN2+HMKt_38~JJ+t^5~_jt(1I4wl2Xq*d0TV72|BWa*OUA(Hhr&)Db=8qe=7kM5Z! zl{QrzJO6cpT!)3HK@_cBt1D?FW;NGVjZK>7da$>qMn9G7U2}XIoUMcEi#+ixu8+O| zBym7Pd(+xlcxz|I#QKWIQ_m_8V+6Qrnq`l5AigU1Eb1#ld^tq}c7$4dOVgxO(|t`B zu>KEMQ>OvzKVcM$nD_5A`gV%+5oJi%_qjzJt_u-)VVZ4BPz7^!Sw3oV;#^RW)$+=E zn}~|-{MvJXdfTE%8z>n8)xR{ri#%)>nQBUJ_60&69bgs#qd04oG|sNPTqRO?G{n&+ zs?hkr(_>lS)#Ba7BXAQ=KfG#;K!eF6nG0Qz7i)557 z)A~Ws>y(WtyEXUH^!w`QyL+BqB}hl(S*b#{3=Q<#%fEEJqr2CGiRAQ2K!<5goqKD< zHFoc--u%XI1bP~TVD3D3-V(PKpakcI%JPIQP}rxPdGcMoyVoL7E&M~SHr#F^scK8g zszlrMCkFl;`INHnyy}r>meqH~zV};LC3Xv(0$oYH5Wt=&_h?t)jbc<-?FMrg%;Pit z^VH?Z=4v5x~fppKaT7^^3gP%v)OH1gJLlzmfQsC$}S_B`0zyjn3Q}F@%(7S!) z>vVnZV~v!2pgAz0@~)7rm+J^@ici|4^ydVe;sURKn5 z0H88A^EGM;2w3O~cCiCHvAG;_BbsSe_O9wjy#xgC=+t=a+Bo-w>Wb9i*Ox9CoQ6g>_4b&X=HOcz%C_sDSC~FWMpzA56QB_qdl;uUHh~)qLChFPk~(V7ja45sMFmF zZ3{RYn+#w;F)MS(cvv{(Aa&&?r>#WKDQt1y&Qf?p*jcI zYn*=$sD{N{Xi}&0%%-5aL7#{iVX~)K9+7juN7DYJMxX48Ktu0^z0aex7O~Hl_|HL| zR<|E3sNE_H1t^>jf})OEFL@`9E8J+zN903-Vdc%8G7lER|wU&Ui;MFQd_Z2%6jAmwGc%n(bY?WrPqX9ZE~_jJbrgyNb6H(qzv<_5_pJX8VU5 zZ(xdSosl_Jxl9kNDL}4QMMrUAq_K;gX|d}H2pVD(G?wwv*b~g-z(}}`>+`&NgF%Fl zUK7B4%o_b?17+%~4mOwY4ERvEPBMl)vF%Q8;f^uW=w%+Nj~C8IjgUhYMqo082aeb-{T`+Tyb@f@!mL74HhpYKRPHm>6V0w^6De zXVzT&q0r`X??&I5l=-K1R-9k7r#5&yYmg5aqgYT5s+=PAow71uoPccH=xcniBMX=O zRD(ednsGKw)^>7TyMt5V)Mt`e%k8bc;1Y+i0}Qq4yJleZBd<9Mx!AVU8+!T`|FAee zDop$dRlXLT`EE|gJufmUl~i0PFK^4jICOu?KP=x?mlC-kKMC_gsqzQ4UseBdO~$k0 z`z>-1A4TjsYN(+hR*@mem1`@d4=(TE1WM zZ>WJDXf2xgZ{mPF0!ST{<$s*G#lSmBEU`%zS28e;STg%};QrcO{M<;+&7q{hBM7{~ z<&b(ap(swk3ixWwysghRo|X+7*(udpFCO&DMBQTzRC;;A67eEA^x(d8cTi4~Y6tw8 zn7qKsz)(|ZsayO}X{JBmew$upA~Dk8Ruw6pFi_x>3E&NJF0<8(HcRVy^2tFnf(kZW z_)ZNRD4`NA+2pbt{cS+=gOR7ktx&B)|0a*KBEBNiW0{y27nXz%u3)#`@_T?DS-nLn zLJV328H()srR6K?b!FY5^zFF|eI4;)mN?PMA-SmJ!_Q_94CW1qU?_)L`E%qaMDzWY zyvye~UkAKX)7|#m3Lk3q`iE0HLO4B>z`+W4k%+a-gj=g`+UCM~Cq-=+~JA za--;J?@`DKv;m!OF~k#w_5O(4`%x;yt_9yRt{)XE9@f99UTp*t7moIagJ5hl-A~yM zH5fpkRQCBS#Q+A-XOa*pD-dXn7HDnVq1Yf2c~Fkky# zfsS_Z=Ksd(kZ}BVW!-BLX7zy{yp{uoLH-iCaoy)+idugXBE3jP?XazbpUAZgFu3g% zx>e*BV-RrH?tWU+$fm#6Y&T9c+efjbQp>|I`Rx0a&R#FvYRe(fv;EnMq}kiY2c-1w z)~bEc)jUG@8=d!V{LKcK=$nEf)!xOEU=9E0vK_|+X(G&kTIQ>ZvlKO8BchW56hH2_ zVROt>4#HiU{U8CGGqapOVEu{`j*@MFNj3g-5g)nzyL3?9F^&~5{~O1U@c@oFP%$fy zZ#j0&kHzA%i)b>hRD7}+Qf7uM{in*-<$qk+xyzj?$fS=IK*!?7 zeSC~KFbn7pcOSr2xjkYpo(qNDXD8&kjJPbyKT$zXq5Iz`p66jKh`Xv?E-U2Z9@(BH zJ3i1I&a-kRrIJ-S(v+1<+~L>Ii;+FB2jn&X4Sow8p`6x(qG`x%QPV5FE>2kuvXL9@z)vcZFk4RrZ-Dk z;%68VeESrQMnxM4mEZ$ko}EYFheB+>XdZX9ET?Q=9(T2>Ud7Y?>}qjD zj{Li;)j+Uy81K2T(ihTaX|Dd$;zv(hm-T(0SIDKr$Shl+%9DxMR$zZ1d99?4@oiWv z(E?94o(uly2}N;BB)xpVCGq?se9NwlP26}RWC8xfqxJ;!fG>7kALwf_KgpHtC7HY>f&laYNbYlFOKxP+F!!gu~o0UJGoi1EBX623M7zL$ zs5PiWhY6arTv3WD&~x(*@GFlw$Df$a87kHNbY_U@`H-L*y}XUulH|HU)Qq?jRT{e{ zg5fR=^KZ!)D@JT$_2N)ee%#OKkCOUDGcrGTZgeY$Cj-uM&z`X~Lk_Hd|4L5`H04Je z$c&*7p`5hkQe$XJQZVYM0+U5XzV6TQp?{nbdI-u!EDt>3HBdeF%IQl5T&(p?ld!ozRH}PQ@MF+IK!Z7D%S(?|pz(Xaam0J)P4c5J!{b&p#BGP`yoBP>A9g+-vSE2EN zJL}+-W5OH-zh1j~>tyR3JAW@i@fJ3!NypT${9PTG0rcq9Yqcoh8O&Rz?3+M3DBPE_ zUqG-jiK>1T{M7YWS^dZQLu?(z*JkD6llsGeP46Ay=^a&dYy7o2g{n=TnE9AO{15v) z1)(JIu8ORyc#9sw!Vya`U5aF$%yJ#?vI@&=FS09X1lqCS3cwQNmuKPb=}YMyzrlNV@$;$ zqUC6v^`x-{v?2KQrv3j}jUKpQ3LJ)U=VXu*y98Bst-9@lgMxzL>gu2^h2u7at29s_ z3tOc*wa7q+P?6eG;W(~u?b(y>7UN z*#8nG0lH@On=n0}kIc8fMbZO~w_KEcp$?Hbm&c)nA6j)j=XBcZijHw=iMF1GgB4Lp z^5za3&log><5HUQMzu#}5z!VXcu~bE#$J4%;Dnx?VJ%kYKs$*)-&j4Cz>Pk@3jnn( zBd%f_7RcfygE_B}g^%7>+!8pY5G!zkt*DV2N;0&6a1t%0GMaUO+Oc(^iG0{Ilm*@J z={LrORe!287(hIm>#e%#JY+eU zq)9Kdboa64aunvb-JvcAqQohqUc*dmB`qz_Zp4S<57UU2fIx71IKXz6)CMf;zGMWEu zAN;>}`yN8-ff5hESOQA-G`ov5TH86xA9Bek6S+QM7g8S{^=e`$}1Zuwa`BZYU+d?weXMj|4+e1x~ zynRm&_Z)D(7k~rYJ_EPLAi&WE(yBsQTzY{D|2LYA-29%YqukXR{gCUD~x#Gyv7VTO? z2f&AaU@i~wse5K>VH<&&*6FQBMYiI3RFZ?hM1EJJz*|9kY|<~t5k{mmp+G#E z7+lEWY+cTuo~{3V5p!L4j}GVY zj6q=oEr&ZT&F7B)|K{mO`Ad;Eugl-rE%wb_gn`877M=osmsggP)&YJ#@&Ns*r1}qS ew9b~J!=Uai)mzF_=T(khNm*W9u2{zW@&5sJ8@*Bh literal 0 HcmV?d00001 diff --git a/bsp/gd32/risc-v/docs/figures/menuconfig_gd32vf103v-eval.png b/bsp/gd32/risc-v/docs/figures/menuconfig_gd32vf103v-eval.png new file mode 100644 index 0000000000000000000000000000000000000000..8c276520b2272f3626cdb90b90e4c158f7075448 GIT binary patch literal 23926 zcmd3OXH-*7_b(PiMMXhCkS0>3M!Iy6-g}1xkOb*S4-kq4M5Ncyk=~_uBGPNc(a3_>;BiHobjCV-o3rOUKixv$pde3mJjfhl;M@6 zEh`(J<7DTA6pvp)x31u3h@17oNS+q=tM<>HdM!GFt~QGpym+bvCf@zx>lfGY@E&q! z&5{0X`HK9aVx&Co+D(CL`YVjBBo%3nr(&8G=63v(H(C+Fpk1CNjXfgN%#<7v@ z+Qr>|3Tb(HUE^mYBqTcd3j29gG(s-&Q`6JITLRqN^v)~&Mb<_=_ssM0mbcDacg_NH zj6sO~D1lC4gnW0yl1+Cp)rA7xT7 zvdB-%%8I?B%ot7wnWnDpNl*5TI@p~$Z*2NJ1dN)?W)hv%JwIA-=+Z#N05_p%8>c-Z z-=qW2{;F(X(L>A9#;S20K`%CIp37k!869tM+faYgrnGT&5*?Ue6!+ZvC|2!vw)?gd z=q2rxrbH7({&_r9gqaW{{-iuH!2+Xp7JQTf8+v+eXcTK`Uu$x0sN8{GYfB9JGGzj^ zOLl1s#<5P39U>>DPNf7F;#m_&hPjVX3*7FL=PC6X^^Zytelg2>YB%ls-ut+>5k>0* z)^*!0Ectkv$L^sD{L25jr&XV(^^Ea@~ zF||25^a*{}FR@GIePdYWCxDdd^c19T&@KN)oEnqu+p*S$S(a}_dsX`S>;-4g6A{Go z8GN02xI_L zo*P)U(z=%bS6F7eyy&MG9`v_gTDnS}JO1V0cxjLR4?M)vkN=8z(E8U44GjEGj%P|6 z)eP|24)z?oCN=|IN!~C1>!>Jaz6n%*$_hya`k3sdpu6 zMxbds1lQ0R^6_%*p%nzq?r>-+p)UncQcFII4yJp-bnTxt#KFmd9#0&mUxkS-*C(AX z<(wBZz(vBLK3l(_NOa?Iz7@QK=)LeFE&9lzDGU^9S3(<89okePeztn@9(@23E>bu@ zI5Vi0M@yAoElSkO@v%M8_|-arTsnc1z&D4p=NSYlXR^dowgb=JA-mFj!*LD?I_GQt zz45%b>Dbx|JClKvd+Xo%++y=MDo;Hv{9)ts7VdDi!x2&NIc@IUf%H@UfB6#w$Ni3;FTtaBR&f%QjP)r!ZfW~bX92p=zHBgK{qHp0Y?bDm1L1!2+1$);Bw zp;22*EGr%2*MX~AR{Yu0zHjV&gO@R4Zfz-q8rKhZs6rBPX*~Jt8Ejv zR`e%M9Vmg0HJ3$o9m}Iv1R7WCLq8m*knj)(b#heC(9fT4xi3{s+egXKK&8*l(C5IR zH5b#EI$~;=y?^gnKd3X}R81b1{rSS57>CY5&0@U0GEJH)z)DPxhy8@}(c9A~&Bt8k z@$a7(v~ds)AJvuE_6C!9Mkah&)~ay6!8Gc;BBqtC+=W{WtGxTqw{IE<$pK3ZZkr=4 zPSeaKQ3W}a`^V~=sEL*DA6Vc{>p$Id#3Scn9-6-1F@m&tGNR&M>n;#+#D-+A=BCz) zDt>;99tg&_!e`_4WXwCZ-?m#(c^ezBybL+o4)ZOPdo`*kZB4Hhqj;RB24nrI7_(Uk zv@-miL{;Q2dSQvLucI62=4q@Va5 zU8KOAhm;t064_niv(I*P;Ct>aN_oCt;%hQ5SES8rH^qyymy^Ev)dwCikbL^;$)77a zAI%GXfXDr|5B<-6^bq_R&y;v5&|ayYm;A1N(^Ej!?ca%>57TDYZTWXvz{IW4X-S&Zu2ZRwR{~+4)-aJBrIzMXNS!CTWW|csF4I7H6Fp{xhtFhx znh_A@LpQFROrKi6qPy$5x#DfVBqrv|qNQ52eln==R319Ma;7;oh3q~mmo40!DXd?d z>9EXV^p^JZ>8nuUJ{5Xpy1!@R5Q8dCWks9>9k9?8@!1u2wB>3{U=Ct3>a8 zNoKjN$!F!*IbI-Yl9^aCVE*vN`7 zZzEaYX+YsnP6ZD){k~s%cbSU`qeyhuOv5RU{X$dU_?6)o`Dn=*oZ5-<}=y&6Wm7%O#wUBl`nR(%TR&+VwhJoeM zj~{8u$=ot1gcaN_j?*NXg!%KGiGpI{+A;67x&j%oH&WYGFY-(?Ny7_e?w8|~mpQz^ zo$Ct8iyr*Z$keD}!fkrv+G)oV%PtaZ>QMLVNTxVHb1vEEnwjUF?!Ew-!^X zOjEPF7LWOnMac=g_4Ji8($z+#y4C0{-qOXx*5frXo<~^_g{4vjvdLo1=M#xmDZ)vX?py(M-ht$A$dUH) z1_spA{HoOZjAvaczd}13vpY9=AVRnEO_Y1O%5KcWcd_I$&VCEId#;-o)p4#fG_@dz zAMl3O_w<|(xB2Pw%iX^~$DbG8EUPShfh-f&hTL_Zp0|74ZBArrctx?YuS@Uu&~mlj z>6nLO(b21;XYMy^ZySC(;Cu5)b20?D66GS~`}0fE*~FuEAgkY+kYj@ty;dk~%*fF% z##gIuf-PMD6YFlak{@rpuXAns>mww4t=TsgVBx+hc|Ye#oH9X~4sKDr`(#NQW$e~3 z+@rW;jhSxaKfid4bK};i^c9maMwc=_x z!WWYHcun?x{v-jmXCs^BXu`#yOMIL0l3>+!u#cRNkM^RO(cWIC+9JMu;$ zETpSbKv%&{h5-B3v2T;8OAiqpt219kcJct`(^CQ)omk+BaEpl0TY5Yeyt!$3>(?X2 zt()SI?vpBu?8%WHZ@IIz={t-i0WYugN+hR-JL@G%eK*nk>BP;YL$=I(J5Gy@8~`MC zHlc-cXSu|FaZY6!ie|~t72_p`rXESCS^*K#@4nlFKmotM_Vn`#dW{? zm-6os{fU(a&OqgPh$y}9wnXY)k%uZx>D0DiNvY=1wI$MvI7=edjw|&`y(p7W)x(LN z%}V9)-e>b_@FOfa%e9md2EV-8I;(^x*4izhj^L?XFIh5+)ats2j{HWdMaDIbz(V}? z#9q9m_kx32o@dkLD`4bL7sxr2(S5B=%SOEzEjEOp*`0At%NIxWXwYwODjYw8ntQZF zMl_UvS_m7ty$?F-)>|~1KaR~gFkCMaI;!vJ0FSO$k|uv+F;w$K@81pxKzhE!paH0m z9cidTbYQhgXM`77r>)VRL6J!D%XqnNR*g{^ua&oxhHzMWb_&cX^L$=^;sW;IMQaz} zWrKgse=hu%EncU)$kY+s7TKn1G0*0t!k4c*02roSKR@$XmEDd~&$}8w=4E5$J=0mS zaolrmz?mWpAQ$I8RsmZ84-X4x9N#_2Z8)}$u<3)!jUv`pLeR9k-c*&Ib(N;b(fqIU zBR-bMls=IyG#c4(kP#-viWxiR+}LeIpOs^FJ=+M9;&aVei@PTZzrPiPn{7e^6YpET zEJQUy_qmr(dS^Gy#$Ww$X?S=OdEc^bTW}*8iy3gv6gVt>8IY@+RNgif`^`+$oj8B) zzilz!;k1>xAcV499H%pC|5fP|HTtJK`5=mkX~MQvNT}AU-=o zE=-7g;xcr@^9vYs8J|sM`j;Ls<4XEV!%0Z(lD6In6lSDa9PD8SP?<25zE136vm*|{ zHGj2W7qVO1-dW$Drs4vgzsXJnZi6<;kYxy>)e z8eC^6jiHWWUdRx$9%S0BuLuA1Pz(r^r3NFTLyPZ4)J$`kC)(2@!F*?elOtpbi4!E4R+0Oksg{Nw9q4DY3qN)WmS2g{pZn^4s|m^Avd;aFVqLJ1ahZ zR(aGPU~5vQ==n73U0ByhyjzAKof=twLEU_>ums)(r|U<*M+bQ^#ZuI-XDDo;ktuVJ z)^@n*Lzp$FLYN^^jG;b~GwXdHj4E_vpXljVQZ!K=ozzYv@W)AgMDA*8- z=MJmaCzHL`o#GA9~ePw!n*TEKE=Eu zrmZWxCLTZY1(s-G_FB5CXi1316B@=o^;I(^=%{azlTJhnA(v?kv^FVIAj_)m-fih{ zs>%V*(W^CXl%6c>o`$g$8yb1*T(H}IY!NiA%J*t5_+*7M1z_^DWkv7%08_iKdMteU zLpiu}3QR0gjoc>EMC!jwWovsP?igH=b)8Yqmx#^kzCj&f2Z3*&Nd^f69oE*vuWcva zg)6+a5DK6&8m@&Kv$7TBG|IDB`L?LO<0NuTFHQ!El1!yA+E_r={Z+;{CRGg@VOi3| zp`T@Vy!ak|t3}pl4|_GJ2xx>Gtl0W*xhii(GZPqA*my-1s^W)#NTg!-Kt4aCb5f4v z^v&J2714SAc&2702E=<|;Cfe`UqBOE&3V8R{Bag8!1_!Q030a{wz5#JDw<`N`pJKb z+0GzxkdK?WQ7)yV`S+NkZRvxVkCk2FLckg=^Ie$$Y6?wO9$s6qB*dbILSx~mFbn<% zLiUD;YEghmB^AamisJp$0KgpII)J}tN13b*Ib}JOzQhDY&UPujlTW8HSy|NuWrk~4dOM#$t=sy0VK4FN1jIO& z@VSeA72CiqdRk<2KZTE&Izd{C?$S}r_tGurwl461UFW$cM@!xkwV%WV zg8CtH-89ZXrAqm>0Itbw?(dOy#5SUIYQ>cVt)FGQg!XCyA?$q;%WQW5Q5{cTMGkaR zJ?2NnJhYk|cv94|)gm$aQhaEJSb3wAwZdnfhn~=D3fzCfAEXz#Mw&ZgTT{W)ql?_K z9pqWmRQh$?;CG|?vjm&bfG3cyoHL4A-yG4PEZS02f;lPxG3i(HGb$182OIcSf3|pP zRC@Bk=<|=pv1(4=XY%)GBVF{WrI%elz2H6_p`{-YEM0cgX&D^#PUxw0`d(Ul#`a6Z ztwD{grwOd?wmG~$#izF%Sc#P%0zr?pAFxIZlbO=4gP3vA8~fS_Pf7Bg*;0hPfyJp= zhK3AT504sv^Y<6G?GV~rE7uEs#oO8vV()a90|3KKuK`iBUWN>j9x^E^`J1w7I|e-Z zgZZ(8DzuT&XH&U7S4A?o9|~MEuzr$MY)bY$h!f5hSZ)8npqBN#O&PMP+~NG@4h$Km zT7QRxFC*osMULE~g<;m;^IB&=BNftJY#jHRaWoh}Y_CB%1D&u1tn_sV#9DWz8EV_50ov6O(Bund* zT2YRng0c-DKf+PYQjs-Sb@j#CT)*YDyfJV^ zL0%sD&{Y%uanfw9eE@O`%md<~cwhBHg}X@xlP%>5F&Rq}K|S&*#Vvm+C=us|EtK+IQ7L!YEG10=c&5y%~O?GiuXmw z4t%7V82%+jkSh1nF{c+a^kioTLcv+ZgjeD*eyJT%O5NIb)X4JL>6N2xDDk_GY+S`w=aHx>6iok~g zKMGj#KkOV~OPoKB*^09`AysfG>V;F%iTD;{tSBR9mu}=48SUYF+^a{%nW|qIO~E8R zSvpqV*`uLQC4+(nzSw-u!?&GGT`KLH%`fxTsg=Q~X16ntEGp}|{8%@0z04A_{<>*i zrBGSGNNkTj+;ee<8q zW#!8IX5*o^=y#XD77~*F9y_~L6iq#?w~R>Yhpjg`dCl2h+0hesxUnQ*p5-Q1nBFIw z#@pzi6chO7aYu+nKr{jM?|lhcpu=_5)cj}99PVs8RH;!o3jS^of+kA0WXO=yUl2(@ z6r)L6?{w&PCAE@4HNg>gT^9R31J2&Bx~sHC4nMjkDQf4XNfz8(W+GcW;j0JY8m8 zGQY=2TdZ+k{dD_V5}BEiU_m4sWZ5p$GRucr#Hv2G#WUNSLTUsh4Nj<@DzDNxRRWu@ zmjI$dx9l};eW$*Lsz81RKWx3AY|~y&(m_1n?056pn0o>JQh=_xEtSdi(m}qmTxgg` z2?6Fd9wAk+bYuph8VTf4SQMW4Zbdel*+u@$V9cATzP%X z9<{_%S{bBk1kv&?BlakJHJwQnzr$+mY66@`3)*X*^eGt%oL zXF-J{Ipp%>HC3n2mv^}HbN`MKG>vE_B^`&P?MAGrWh0HylnTE z0N=QYwv8OY-Pk4cW8KM>sZ*{omaI<~p~(+Lew}k-8m%k6C#Jz-twz|ZO`hOjs)>YD z!Tmz9#RiaW583oU2S0p%mVV(H44&RBwcQt~>ED-QB;DR&AtK5|pb6=G;wo{kQ#nZ1 z5)y207ZV!pl{}Ms#7nCuIku0IjxCI&RtshzF6k^jH1$6y_|_4>0Yur=Kp_69*4G69 zE4Ip&Q>UMz#n@*A(V4K-L-lhZE1lhU_8)s*!h&yqvWvOb;pkN9I8dc->{)a=@(2yX@Axu}RaT)B;Aged4Hm?AEM!7b(3M_0ePLng*qLVtm{x) zYHBrz%qBm;KvQ;(MUCn6fzG;_iDCM+R<^k&@4!kYBTGdao50eqpR#KwA5c*Nv||nL zSjKefI;W_{v{gv6t^80bvw6*1k7$CGvTIWqM#j2$Dz}pmlu7ojatCGIF7YUSD;n0r zwqxP_+-QZ7_0a>TyZv~h;9eq1tD2Y%lp1Ivzjg>|k@&ua(|JKx0-rI?t-5m}C2rl_cEJda zaCQ4{UsRB-igzOzKTJ7;PF8PQ7Jr<34f}F6z9=twspxs}8Q!pGuh);u(1J}mLRlFv zL>ejdITMUNZtAg_@^^~gRqk$b-LYtHYr8n}zAc$6HnQP;d(7v)I_Dw}IyzCzL3Y3= z6#vF2Y}euc)`?L5SM%R2_J0?ujL}K<@&}1h$5F#@8RQFw5tk^wu>kl;Ve(YC>OhIz zIJsL}#se-=F3MSu@t-bEhlJ+$sKejCx9C5qV%1^x_<7{a7(Ms2K49JCVllY6F8vlv z^2XsgC8cL&65n<5R0o8>R(kS7L8p<0?m8EX!NZGgJ4lM}`Y9E8&$VZ$>$!;V)RPAa zJwJaAdXE3ig-gIs02@&=EcGPx5zvsPn`()zb<;A$CGsK$=(@jBp6MABL=jO_JqTjA z-@y0zPH3TuJ0=~!&hcGR33%%MWpCr7%=~G|_Wu6ENwkE|RfO+TM-$VYL>Yw-yAy1Efuc+%C41XVesmZPtoS{T{2PzQpL7$ME576W z-SYOI@(FO(7rN{_jSODHA(h|MToeTU6%iNF{WhMPwIxW_@JEi85dHW6+>`m84)TuU zzoq2-qWkm2Z-I%68^lOWC223`@xzIi@8ipW<5zd@zo3daoQiKnnfxu6!1K=+A^B$u z@^jaU>%~Pi(29TOFY(0U|D>X6nUszS6-PZiE?+T6y8X04Ic1V2ZZs-?$Q6Q_%oHBK zl*)L&^*W_tPT?F)oTa(lesL#*%=zVmEf{YY@=|AczP&j7m5t#A9Wdlgi8C$Fso>~e z6STFf2x9Hu)>+cr$P&LZd0f<|w^8WMF_XtWcy~6kkQow}p}-w*IBb9+s$Wg=qv4nx;akADqu z|Dh-p8)%!I1Zms(>Se#!6nR}5n1q?m9rLLWMQ`Ls_6@5z!QE+w6e^BWGHpqFw=cI@ zMJcM22}LJHzF2l<#kOV%M76&rk~ix8X2n!lECESgxg%n^oM|?rhwb%rtqx|WTCU)r zKu6g6Mm*LG7Z zn0#>e-qc*fF{zci#`4j?`kr?`SB2O2slLgaDv6wO&Ox!!xPCGA6f0E0d7&qnFv8Qf zH>L#ziio|tUb8l{Yn+C>(7MEP>xZqqlxh#Y6^6O3&CYQK`Nu~z=MjYHD%eg?gx~J^ ze)o;&%^L3y-Rrz>g&WlXQQA!MuWp2oh}nensy!VZjJ2}atkzsSA}v*Rlp~TCJm9$o zF-MM+R~?bUw27n{F^iU&_x`{r`Fa=W$_`y#_7RT9)xjAc+({oT`fAw53$_Oe^3jkS zU)tU%O*FYyz%>2bsWEAp{xqXn5C2C6hLNyB0PU@RMXcJiN-mwuN=Jud?|49|th(NW zOqNVuUl`(sP+e1({NCz+f(QAY0xh%~K7L_~DJ?nMedDuIXv`isUJ_LrlUUJlDvQ~b z2pkJ^2K(p>yEWgq;F|mtM_!wysu~m_=U>nhJQ6k(xP?_;Prnu!9-cyh$|S<}T@RE6 zzli9+o*s?k0;ILw((P6~FN2seM}?fCOiAciL^A*04vm6v=wp*1j`RlQ#+~;@Mwvfc zV=0G2lL6Hr;Ly|)VtAZg-~onGaX)q3Coi_ukK=g`h=9JYXmTN71vzTXO<&Km($bl! z>;L=Sd{2ty{B(h?D!K;^uo2Hl)qXxuB{*efA=+e1s2FG@(`H3Nu<5^kBDUX+J-Vy# z`Xokq{=>^xRR`}gvo8ImM2t4qN2?ngd$c?~c{A*s*S~q;O~N?}EGs9M1(IoR334w) zYbfNE&i54&bLx6Sf#5T6pY!+0=i@s&kNWuBS(n-z3y_hP>O??lp5XGDcvpWl~F;&#f<3m z;dIODzJ-bgkr~AEb#lwLt7CzX_JRgaxBaOrEnE~@Ek&Y*@9pu|odRr(oFD4ux#0*u z%sIypW$ekVM@B{r3|4|0Y_NVWuf}{i#Nn5Ns71~IlEv?QtUS)0Nr7cv@b`gbOY6I_ zhPz5tZjV|TOvDGO(sBg@S6+?_Dk|MNJGr#PAEOXe98IE#)kC%yc0JJGyTI)(7q~sQ z?1A*{50GWs(UmUt9M5IrRC{Ngx_c`93siGkm5o5?CV8;exwe{{>%kI^F-SEmYA8Y~ zSl?k8N9xTzcObVm%h+#E`f{|Z8M}^1Ljo>Vo*O{Pu@Plb)5=lvzDq_t&N>G5Hn`#$ z#IdtUJ-9nwYtlXRbPwOe_KJN>-o$hgr!xaOZDT5KYz0_>jLVIqQ0SQ}YJ2x)uqnn9 zGjBh=cWrJ86*KPhW&>0%j(44Ugh%hLyDcBtutq_rFf#Cs==(Z;iWL+%ZliOR63P@? zj~7|`C}KJ(ISUJz*d@G}Qofn>n#t8jIJ%hM`PG+C+RM{8;7TsHWu4Rri1dn+Kjg`)ljdLwSHY!u{&4$^i z{Q1H*_q%Nn59h?)Q^rq@`08;?@>auX!#FZGSSKL)9D}nGBb{*mtId}i-V?%-}vrqPocQ{w!roxV!xyyRB)>e6@XZZ5Z8e|`%`Ua@^Xl23Lv z&xbO^>9Gh8iIp(#s$Y)AjO%itSG<9NN2-^k4qjUN|Gs+g?jO>9V))JE;J5+$)8%b= zub;;daJBR-!Z+U-P~T1CkNH#_K|PISBrA58`P=1s77luNoEhKBI_NA;r_0w$zi^+u z@OfQy!rwkOEv22{ z=7VF6f*9`IyP=X3%sl?xBlyjuVk;n*R(Ja z!jr!`ib@QlTV^mA=;*>>LY!wonfxsc#A{O7Z$jm^j<+)a8|$?D)O~H8@PU7aus8%I z|3#p9*8h)4kBKSuH#ZdGW$b1PdOE21DQI8MxZOg?J|i*u)EpRGz^s#XF>1Uwt}->n zrF(tz4U}n27yW5Oeqgh4=ora%d_jHS0kRE=w8=)=i`6kPdo)n%O;v^EMj6-|kR@Ux zw9Flr+PdquSC=~7^t8;b4MMRq8ohqA3Dnv-H#NZVL=77)RO}A5vr6;9;F3Zq#--(R zm6tk_2w9a>7Of!_WKb*m`qn~L!hT^m^6`uEt2RM@fS>yO!_8nNbb!wTujlxoq9CccJN)(zEIg~PX#_Ig zW^)J*i!gWnnJqBwK=2Xsaa|C~nPT0D|pA5ZI61L&9^M|TMo^=jPeSSEX6jiXep;&A9x z5XOze7X}a4Vr5GCDTe0Iaxbd7@0bdeixDhM`ot~7bw2C6?mnJvk!J_eSz#`!gZob; z*)fTJdt3_kU&mIhb|`RYlo)skam$=qdlP= zsoAnO^%gv@_YdqNM_HT^>2Veg?)B`S*~7o;>S6|DeHDKBWdL55sSAhZ+K!RFGsm~{ zOa(Hru;rRRmMtdONg%9fxw9yrO|6U9$~P!-p2B; zkr`yh2+-)CLv_BSUb8Pb-}#hEgxn0@;CgDETG>uZ{24U~e^T@h?iDBRc}_mP^0d4t z|CHEKnAcgCGqwda-Zjy!GPU4i@S-?IbRd1-b&K}(g_*p5h)<5Ox|?@%CO$KA`9|E2 zgr)>X9AWMMVACMDA^^6*Y&T@R@vI1Dowc^1_7vcx;fC;tQC>4J=_|rNPOH^9dC2?| zpIff&ISE$DLa$Pxu-=5|_T)R3u0yiPM6w_kK##D!>W!k?b$O@Dt_hEE*frhmW?tII zO_jlWPqC<_lP4RVzj>qjtQ$cnabyVJ`xRtNI4*Kk7M5jfl1mPDTXQs!5vrypU`TKD z>OWxxy_<67-5T?S`(WmMf%v1y(O>)C(bhN%)JGLOn1u9%^B1p#r#wmKdxjJ$Bhp!R zo_aIWOKbA>raAV$i?BA{3*IwDrd*2KA(P$r6qGWIFS&z>8Un5io6qSV@XH&u$Fz+3 z1Aq}rGJzFj(+=4cxgMq#SuRwctx6KbuRSGRpBjnx@BMb16)!0me!qxFSAjig*80vZ zK!Joqp{eC@{KAKqlEn`Mal9O;`(qR2Z8DA~IPy<}Zca(wtA%_JDp%XLt>iu)yvbXy z(4*g7+cz0%$THwt<%5~NT++`|?}rY7aQ~zOgFb|+3EWq?lbfel>5Pl+wPbZm_>0$s zZ*w{r(0@xRsMXRhLwkcV?!$7`UQk7wE$A$S65cayM3%2KMn1Qe+nVFuC}Xs zOe&8!jG7NsHJHufZcc(nGV1TM@jOe?fe7CVl`r8#0&N1h*sG>kd<_vOGb*e(OO$Cd zvFJNq*fVCfV$RbQDIGBf|L16cb+O#IxR8Z`KVk;Iy;odOyD=r}KQo&Axd_*>BP{Z? zz2mIgoMs{j5DFCboGlq}?A$PhcYR7E_rvY(OO2;~mDBD4i3Z{;GoMtCze{2SIXHmR z8m2WxV&fTH42HC~skMC{Mki16@W}Wd=e_W=x*qlN_`Bk$Dd)sO!muEFt`hDHfn`!TuK{4l1OQTqI zMl6N1xNeoBg6Y+*IH$ZP^}?Qp7U<)hWe%$K`FucVnWL0%zeu8ItS-py2@PyJu~X5& z&gi5ab@UNa#D3p`Z+S#}Hwhza{RY^01J=zhP&P3b*!=YvaPFDsdJYbIZ0l7p?Q36% zTxu7yG@Z)=V(1XZGXn}`iChq$GxEZ^VGii_e;F0qh{7_Yu>Z!$Y7d`XQaZ0iv=q@-wV7~9GcktwbMKTTszM#4 zP)}l_R_`c+IXwY$iR>h<(SHnD|5VJSr(8Vv@XE6F#*<3QdYBiEl$-+>o|*JKnItW6 zy(FCQc+>Lsi}5(sFh^``@W3H)zVjR|wRC4yWj^GO9fim~eZ;?`|E-0?!y)JYDy;b* z-^LleWgZaM#WTH7)^ZH>gufTvM96;8$y0}p+#d8F>vBM7M;XM8hK&4tru1Wc&0=xi zbGeRaCbQv;GY;j4YT|#pinwtq`p0JDmGenj|5Q5YwOZ6-$~iP*o+_*EDP3ES9-SiZ zxnR=dLpT8z8scya1c!yj9+8c`a-+u)_Oj-x~-2I3DV%rAX=8k)8Bqkp*^4U!zU&|RA z-f#*lNGz-+9EePI@j(*icrP9d_ClJo*%8n z{k{s<`f;`dMraFh5L-p)j$*DlP^*O~D!!dXB5)jB2|=iCF8?FR&%h!gt$d=>lxpIW zxRoWbwRGx8QOFvywrXB6Vnwf&8&)(QmxP5jo5J&3!dH!0j8BAT=!qwvkx`kH#JjnYJN>vq8m|KNY+xT0arUV?<2yDF zS_FnRTx`A-i|d@B)Q93vFR!4@$3+jYKcZ_8+M5W%Hf_}9a-8A~J>#4L#m5pTp5H7Q zA!q4ch}9Iz3p1krfUKm5S4aTW4F?)GdFX11Vh!*|aR;bKC7@8)^Yb-s0=S;ex;Sj& z=%X!LjG3OTxaj>sI}6`RYb+zCb8fj7a$l1oDjL|4c2EGY@%U;2cHX+tHoqd`z$tk! zd-adu#&pw|{0-&GaIY1xckR&}C|i__HxkUCgP%k7hi!%&*0v-`H?G_TJ_WGyT0ji_9PfJtl!oaXb6ee(054mKr#X zqrPV(a;0b5hjm({aF&3CKtRbFSk0a=&(t#IZ26lB2OPk-QXo2tBvqV|=;HCX$CnG{ zn2w?hR{et$|=W9!-@3rI1T5Z65TSgT$ zdEU**AAQq9O=ji2cI%R;R4I3m$5kd3JKHZ4fq1UYe^{|$>o%-ttG3=R_d0)=MP{w< z(Azk!Ir#oP>kr~MYPFRO$?9c1JZi>2-vvNs=!pWSjbst4BE~t4Sfms}pU|F)eOsn! z(MMKTCt%pSXwLeu*l>XTp@He09BMWA=1os=FKXP0o8O2_LoH=!_J}%EvX(q7Np;?B z(smNl4m%L9H(zP#fDI+uezmPlc-ef+!W;9p0|m#zp3sz7mK>1ROPtlK=lk4wj5~I} z#n^qKB(AhcJ?1axwgfWAEDb&WLwSxSXNt)mf4OHJGt@MtY7Yutkj3h*OHI3BX#ZSdBOLQ~{jFesPGN!ns2fi@Tr>b8#SNz8NQ- zoYX$RhpMx#j8QCHf9vXlc9AzrfFbi}8_ZpiZ~@CD*xW#@W{l6U#^k-u$jzfZ#99%mRkpH9`z}rv!MK)`42<;1>G^pnR_msy94(2Rq;rnB6= zaHRw})*e4U?Og3%Kd~pY0^8xr4H`9#z(tp{N!(K!MZ3Zy4kK3SMI3@FQZ^mCQ?=8jvp!qh=iU}X-V(%9aVPR2 z<;hA_TIcsUt+y(j_{7UU;gMOoTj8a0oaK5i&aGcs2qo8Rt2`{!#=X zY0v-~w2hB1lEnbwd7APE*zo#g*KeKeNjI|j8@I=$ly<+fkRTo16dL7e$lQC=xJ57$ z!WC%Q3cjcOYMXKTCD(rtkpv^Uc@g1oa1_{X&guL5uy*b9ahYrqWVz zFwIYvzw*x)CeXG8R|v{z)#bXPSGDMHS+5sj33n}U*mA+7{ku$i^zDBIhkX9?X$e;@ zTpic*o zzq_(alw9H-;{HBHe?bU+p}~M`_y@>Fty7UWc#SUX;YlBdZbaC;4H|1VU%%ua)ZVuDA(4H$;CjVUo4%oQIztx65CA+{3TSJpULm z2B3-Rob8V*j>z!!sy}fl#Kh$H8o;Z63JfJdfs(@7HBRa351TMQt{^6pFwY7M{sG8|S)%TYc=%ZM|t!}ia5`C~hqK5ZWJO@xc9gCip z;REl+#08&>pKny1V8Tq;7SL8DFhx;*{=8RBW;DaMtzGS3EKtUG6Y6`u4%ApC7^-XI zkcSAe?c$QRH0)kj$YjRp1d0#UcvVtZ{B*^$kt%9A$>(>5%YC(yp4nmW|El9liYno%Qe#NWgwEQUscTFWt)YZ!%o3q!ib^y{N{H5w zAV`UXjDFGY%m3&9>b%(Jth4vpYdvS5wVt&?12* zIk^3=$GO@YOm*7?0W#3XdA;G;$}ldSIYEhXmUK?r>RDnws&ky{o;=5Cm#Wh!_IQ&f zY~aW6Z8FtHd(m6ea8Bs=B!cj#M2tXOIF;_D&E-^D3lc)JB_5jGHGeyg=UoK+E)#E| z+U6#{yi1^Q_*i7N+^EJPrRXiK734-=>e`nT|259dJ&{Pi@Q|y*Gk?d~S{Y+3 zd5k21aH$?GQe$UMP(X>)KT{Y>-znIcO3f!~=DyQaCiQ+ZbG~n-$H2ofcm2&f7h;>w z=4u|pYir{ABav`}r@(Q#shDi$q0br_8QrD>JE27#duf4x#2r@G3OXD#%zNQM65AO0^jMyny)-YVMb+0CbAi=JPU{5uFfm>BgF}l_2(E8;0;*k!qspiEud=18d zkNGE@E)V#HzmSpR+%`_c5aII2Tj1;8N+7Xs*L%vwbJrs2&+WgSsV|&;+2V6c)yg`3 zc_1O=cVoj^|G?mrelpg~;M2Fxn_oqod7g4M?2b2PXMO{qs69qc9!RFgPVl)8o|r)$ z-=m#kfb?9F+VeC{XcwmN|+B#D;8h325ij< z?2P5NU<$>coEyf=>e4wTBsN2|>(p3o_^|aY9^r37Q+`B2 zJ1Nv#qe~m_N!t0~@68*Nd90FI(%0{d!mf=+b;AVQ03Z=xZ|PZSmJPpxxy*h}n0X?n ztf_V;zSSxr<~F@LBhzT)FYr#|o8wL&WSiqx-#xq21XG19ikvE^d6>pZ`A|cjjj;H= z@YPzUKS@-vAni8AIz7Sy8=KNtV!lmiorkPr`_$?Yd~)RVk+-9>_t@8B6JV;A&1)-B zt!g=y#p>9ffZ5P;v`gRPT$6LkLleIDa>k=DKI0Kq!kJR$cnqq<=k`3+V1)Lu^Y$+{ z&kZ0xiP)is6DtQ!751N+4jy$8oa;_V(IlJ%6MOY>KE@b1a`lVw!sJ1IcSr=@WycTV z(r4oiO<*b{?tD&g_5Q)p6KHKNc22sHvX&PcTXhYis%Zl9EKEd{94)&l} z&%#4KN>Y`JMrjh$bCOIJ^+lX02Gj~nJ3gpypcXYDsQ-!&3Ee$k^9^$V{!g-f+s6;d?aT(S61cjcI40qK?BUA;>RP~JEck_b zyl`de*2Z2mdnNfxC9`SdugflRD+F%=iF;Ff#Ivz1#b&4|#^8izdsKH!zC#fF8_)Rf za;?p=h&$39aQxMZ%6?O4Y%_+>j?m~>565MIp-P-MoxVC~(HRqxzdEC$mPjwM=VeJV zkDk9OweA}Jk1u9k#u@ft>q)J=4k+5s2x@9>v^V;7b9cWkc<=4ntYeE4P3}WapY5R` z&cHrM<_zMZUCx?SE2+`C$AHL$<)(90z8;^`D`wC2;Vajj;DK?;B>eu%bA^f+K@RJO zA4WF`@geBbKV9|W_NUA`EoxPVlC(QkjNs`u8GpakyEK)!y4Uhbtf%B<*;DBLZgs^C z4r_|?Hb1}WzAwA>Lj^=ia`|ABEQJwxLRN?I2Ug!y{QPXp4P8EnRdAx3UI5PD4QJS@ z9a(QXOQLs2BD~<;ag=nL(Nn@#WkW%>Ke!t$|CQxjJ_V&A(;2EBuQMZZ>t;V2>x+t1 zZ8%l24{_3`$3peD;wzc#r%XbtmMW8iptSx2=HjK-omrv#V%rfu32n2}CdB=}0q-~z zCik;m%u@BoTy616&oMp6jpH@Eh%90LEr{=}n8zja7dHpiRhRxFLQdrVt2+Ok{nHlw zZm;J$;@79h1lnLt8f489x=G^^jzz`j!FXDr6+6fGyL<=qq343xa21}r3AO<#UWmapEA(z+rUDkaRW)*>NC5;GV7U-INfr8-2hMt&2om?yIlj4lPpe-PzKA5*yI?`~4Shy;mC4e^smHtP{(` zi>E%?L%e{J?2;utrrT@1H++kxJ@Fr6VEU)>9VnVdJUDK*%fS?CesxmyT=U`qf$PFe zry8~2t=$QOXU*S_D$T^Vh+{^k?GfN>Mp{VB$^ma&n>UMxK4AVLAF5tnnmoA~<-=4Z zoWu{F9JswaLNnk$LpdzwiHsCoBzfT!ti96q9MHr<)DeO@(Ng+iuYLA+on-MbMJ9(e zNwIqHDQJqs5Kr`LmpYT^quj)e`NfV6wpgHd@}PtCugL64cGWn5TGAIkZN$YJR_?#0%PThma55DCyp~Qenh;Q1ET3n&E zhW&eilom5SWvgek*J{t-n0V9T7o8E&Xq5|vq`&le4}4s#DEyB^E%7vF^+wseS-%Gl z;VcNk71NA;oS`K)miCxnc+dF}DHng21F=s3oSPX~OO0}Z%eukVtomeuck}cNHKAoG z#}CT2lRS&nKHjk9!zAx-*6#lzCAVm7CJce8`*~3KReSn*zrB9_>Re%IBG=ZRhXz3; zsCx?g8M&nz-QknYMH|CurDCs(|qJS?BmKRtJ^UB8s|*%tBD#29DffJbMeoSTUVd#*2wztnQ5ydX78xT~3CbQ0S7MKYgrb_xc0hg(^K+rq_t{Cx58G^43}*}j1dG^i$)3by#%G(MrU5McDZzuSiwLx@%y zi=ua+&D}Yj^V)mK!liRFOx0GOBgkr9~GKv*0-~Hcj6X zBRZfe9GPzrrpY|gnbZ&tV0fd-6IeS1|`CfSCTXO&yoZ?&^Diz5LH*6b*!NUu9j7NP?ZmO-;ew{+WdycK+b-a1M^qIX?}atWSI8XC>wbkhbA79fuDay#BM)J&&IuA4dR!O;)FQoQH61|?lK{c%>)5*w+V9>;3O32p9FITs|W( zE06g$8b9f9%NZzFeE#uW{nPjmBYmCg+u_7(cB28_hkDWJ#z!P4IWwG8YJrB_{r8-- z?Lo1%x~8K{Q~pdgd8TU)^BQ{+eGE(K7~;KLa9(JiS%SOV_hPV5)sDu>#QA8!Wor2y z@#o=*D-YkC2Az7HDaFQe&BMOp#xr^|pVosm1^v7))1;(q^+1b`CIh%EdMI|HZMBJ; z8F=4s&S+pf%@#3s!lDU*S~G;iMX?0ksWdc})X0v_mxWyIs}By_ro(ocl783;dy^8= z?t4y1r6YtfhU|ee)2Wz*!=B%~ezrG(UL)fov72l`4p#iWpf}fhpky@6hddc(zxwcv zRi8uS?tilk<7*2HZH_&OlQeJ8X}uKm5}K6VGjR)*hk`4f-N54N`-SPdD?nor1YC6z9&-@(R(EU}3utD$fctfgTDr9W8 zl!LXG`Gt;H(@m=jZ!5}8w70dHp+aglY+pg+Ao| zI-!I8!rtwxPkmfYGgJTc?}GyOAfWBtR5kDDZmNuJp9i`j0$+d}_%te)9C?@R0L$%GhYyv+X~Z&L>(oqt<%sr<+PPLls5+8p0tG z3VJP{*}CB9I9lBRRQG{x0bd1Eoawq89u`y@DF3p{d(Oh2__?5I7;E42<=4UbFdrp5 zQgb$-+F}4OJsFd-opKZNb@V$5>BCQ#h=(NKR6of;uQ~IPpbDYZm+as%DP+OII>}W} zFD&BXgDRQ>c*r9@^zHbN-=t9YQ!RVk$M(^-46hvlw%(K?Ew*$@3x74`49^A;L5{BS zthkHRUp`4eeMD+qm1DJKRshC#0%Hwu|LOE_?*yudYXk1m$v-_)^(aOZs?{K_)o$mX zwYmq4^q_v>lB)N8TaB7_ojR6xr!R6IOc;%`@H7(h>{{jj?E29htd$mI4ZNlQh>_MM@=gy`ap24EG;{AD>_fxW zC@rFnT|rGikSxer;nff~nx!te9&y4q>>cR;ZYmq#58&p5RoRJ0#XAi(n|yaC{;nJ0#XABY+O*8MZ<&it4=^8@$F&ffcb`+nc&dt&G#T{Q-J4thE| zItC5(hx&AMe*k|c`u_R@IOAWV=L;N8xa+GupeyX)oCiMqX?tJiJ{=t<^4!j|Q^4o5 zuhgHo)6re@IQTn(x8d=oqk9;x@$f#x+k!OK8F_uyZ`^h7>^4t=8ot1wB0ixuG(K>X zCm|jO|I5na;@M`Cn);p>PA4=9e$Zhe;Oc*$h<;3tEMT}CcRJ*mD^qCriRZWTahGm< zL51sxsklKC!Gp8&;%O+$T?o|BGZH~N_x3)>5DZ%P(4kT0bMkCwkezgNxu-E_+KA!O zc<-|bbBmVyFxVf@p4D^TDvr1G-yDOE>zw-huXNpJyY#rP1nZYuR!j+3Fu|x0tQ0f+ z-?k8twh9p)iaTkeN_-}4<)Q=JC}G89zzlc1M*Sy|8J_SSXUYOB@B#M&Qjbpx0X?;; z=gz)H9e7AQA;Cwz#fmAv@&Cm~>Pk?>#KpzM#PlbwgZy_kCVm8?zTDzj^w9n5NTZ>% zjriSdnk8%=DGy!BB0r=L#hRO&BaOCl-+Z0@_V&y|GE6X%8$`ZAnqzCMBtsNOv2dFH zChpj>y0@s3{f>c}vMOP;vB-*8}JzlFK~ZzCe_5>?+(uc4=p4wA!&S z(P&+xT{QB@OGH5o)YCKek7xJHRI~|-%I^1SB9@UJW5^z#Y%t?3ZdrQioQ70 z_G+dv(p9ArX|BTZRsIV{{^sJRUOUZrJLWcixc#41;+0VBs2e7Stz;W7DZyQLTbA!A zLW-vv5p2|KjmHj4Rd%wm^#euR#eb1PrdYI$eJmnAl{CJgPRC4Q_(stFO~L#|JTDdnPM z`fljtsW!rv_kMjlc}hdfpDDdsV<-8nW=x-EBb>qY6RSm{$6HZnH9vI%W1ydjLkGAX z!4@=ZcIh}0n5~yPsLNkU6jLUB^%;?Fjdi%LYN3~Zq`O!U-cp?}+G@BE393D=E;>0| z)?oXEb6NO2pI0fb70wx}9wnDoJ6A=tTp9WVl} zmbd)lU7uT2FdiE?vk6gT+St|!6YyP4jDc|flGCcUFuUPoXrSPzlU@RDbc%SF2#yLj z8#8A(mQv3OESt`(aOYo20)^tvj)Z=n^@;o{5PQbEiQh_m#x&2%#|M>>Onz7TF}cNO zcY{;xB6RMDBH)q3T$a})$_iYww&I8%pAG{TRb0L=;|~`3sw118IeksGD*5@Wj(q>> zQig*MtxuXude&Mf$3S*!z)dGQxe1w=V!}P?fa*%;%btl-`%mXq0kN?@z4MY&zDX;x z9H#N0>KGBcqms`VH|DCm3;hb4z1FU&DLlU(Iab;YrOy#SYhKp8#}T9!3JO+J)ZhM^ zV>buRPrBK6z0u&`os;2w*JNXobRvAkW@1d#^Y1tZ2p%oU3o%N z(xeO%VV8B?nE2lgh{3rx+BNGE8k=7;J4pEr`nCB40xxi?WTBa zZU^*al}GJbb;{;2PB&b!cG;P9m z^giMo1cpS?2cadIfLd;6@8{b6JRG$__U4?&z5(zWm*b2t?*|O~?mU)d=pyAiMDh3)QY>W+rbtANb-eYl2CJYs zD^KCB!dLI>EMhAY7H1M8^-A@38~wCaZ5`Ia$|))Fgr(_X|AQwA}v+-Gcizm1Jz;qr%6FfxgEF?B{68@4l;D zN4tnnEYyeHE?|ecI~7^!KHo@Euh}8Dn*2@G?O67sB-7Uv`L8?jDD2J+QP{U&OVjc) zTOlC2{%cg-Zus)<^!lLXe!uki&Irw)JWpXyQ-JUNl<!Y-j%u_1%vh0RWaUeJ5%x9~5 ze3THypAassxUn*SgMz@~+E$W=@E4>3KaKE-#p)H z6Ev%V?_s~|e)OFqe5+f{(sy?~IDjnR>f}ynW3ghoR~mvf6za$OZLoa#n4ePE)e1ZW_g)zg!48HD;0nzZiReZmW3E_NaIhshGan+9mj3sX6 z;@VPPRI^KU@h6BNX8m@E4b0*$97jujjd9YH(ODM@*pTLtN_!qU{#acq;`O18U7oxz zU-sMIE~+x?cy?T$egpo>>cBXWQemnCT+UxId@>M`Zx90>0298y_&m!Y3Ns)80n9mALtY_DEzXPF^g0p8GjG8ho;(oT?f7-lxm>V;1=trxtc7bG^mbvsNW| zAp5&acl8NFHXV`PyrALLEs%}%Qn86T;e_HlxsNRyoBcd+%kAMo$(#6xmit?Sz1A{! z3CVYK^#<$lX_C^^q<~~Z84n8v>cP&=-hK-o?R$IAfmcT1x}h-3X5J4WbuZ0o2KRSs zHVFgyX{e7^hLHT(AJC8e$kU;N@sd3R#%Vu;wz;8?cn`FEVh0F_#&5(u$9^ljt^wpd3)S5z{{4Y7X+~;g=Uxp8Vq?c~e2%iCbG4LK_ zxv3y$wfxY|WJ*tp=TEFEpS7@bl{HP*_1hzNMW#}$8G1!{PCclS*~ww`rsg>m{#LNZ z;_XHVc+ns-80lBon{L`p?VvUyK@xH)@?~lGyBMH16{_df6!awj)cHV0-#5$5GKydCeYB=ZjU2kP33|6Xdo5~( za;5A|ZzyuhuF0Qdn}QqT({#==UX8pEx`@e3F*1*g^M0h`wHCHQonJue6!LZSEsgv! z2ziSd71)Y{R@D2$pQ+a4^+Q0!`^xCX`lWkB*BWW8n`V4S@Lv)|dWF- z5KEr^IYw#IXyq?IsWoj-RTJIqE~?h%-78~g#3Z_0yoPw^`+_s~RayM9sZ|~J7BCe7 zhN-&5%dzaX+24@h?^*Ou107n&zEgELMX%lHyTwj{kG$*Jg3yU-kp5REFl(mH4+;Z zc8*}SH}fMt5L(L{vZu}PWtaN>LkJdm0Y0~I<8|Jcw5vgLb!J1(L z?tHYB5|lI_vN~RM-*+ zcyY6^t3#Pxev&?qzHH_ez8fOSHtJnqA4-p^(JCL2gGp2BS;q0wEPP&G-p&7G0fQ2| zjo!y8Ev5)>PXSYougNEh=fDPePmINK-l@x5vd1g;-?oe+QY#zO(j>nwYe(gNY{{&O zf0fzU-En;^xTg4rGIivfgozY&ZAMFc{S!OMKLq=r9xrqms4g*!y7TmWO`Hl24}Uo7 zitw|R`M&nZePMZW?Iyb4)`|QeEV3}pV6$r1IaVbQ!c8dutHs_EH!HElNz(2C$;!(s zJO>gdbKOc@>@yP+8RHqbxvs^QkE#p5^!am{dcEGU ztlyUBMIQcSCDWZXy37Z{%NLCef;);g+uyxWioJ?>6`8h>%EkQ^2*hp}W|n3K`-F50 zwjjZToAH(Ehb!DyaVDZ zk~yK6?F+?)uJQ)gh0kAE=vPnk`&25Vlq;`vDdU-Ka4@l)-NwU?xGBVsQuyVz4JDYy zukXrT(c7aM9j&tBsP?wtjHO?vCD-bwRii}7M{;g`6>M(K!mMSS`6lY}OjkoM1ecdB zpuY&)-Dmpd=%pG$1UwGt#v%9qu6>bnTK~ij?Y2i@-}gs^!rw;J#0+BX_@aDZP9=!1 z!j1XZm9dNq@W2qP!LQc6Y+E>O*xyW(8Qaw}e1{RSWZ^8zTBh(O{=+&S^CWwL^yZwy z-S2SQeQ35iM4e!z>~|O2-^FxI_3EPkhcc0^%x^lug0t8l?i)s5^of8c^a#oQX24V;5lZ^KoS(_kQ9!GD={Vn(n@9ZEv-^N1< zKd4Hymks(0&FRBi&2$GMAe`lf!7G-}?KIh0(-#jQQE_vf{;ImC;>uKs4FzIAwCw+E zj#NTC4vd!zJqYXW2KVY@pW$iTg;Sw3zEJ@jNrs#}5$&RL)fVZp<Ce)^KbmbtLX z+(6f>Iti6EoH=hSG<4+sr!>J-Qi+$=?lLGBwn&e)wE@D`TU-j!@_1|#Gb@mf@IsA- z*sgTgey}v=mkK=8nj=eq)AA@Q5W*}3xHHT)m4~q~SgQj6C7c;?0 zUAZqv{K_t`po~)HNf^|95^f>OO?R1l&2LuCxGyn1KeM8eEfQoYVu$7VfDJ-SeiK*k z))GT=s2=3}t0}=MNe*@4liMbDsWA@t;rHcaX=i5mF#qudbP&fO93`hlazcxM2HC** z*|iU{3K&*Iufl5?@Ts{C7V_dxUb(oOJv@0CzN(S8q_d1Gac7*}%*Y}O9z-fI8Jugx zznwAYMqAF^K9x>$@asdiriIK~+#snO$N?<#4M*8Z-!$9V(px_BS+ww#mv}Vw8Wlhx z=<-S-L=`Kfn;N7-X+`U+@raVM{NCb2+2bc`H6Xrgi!>EItBSCj8Qj9^NiDWTr`G9n z{1)^g+;!2})=GuEu1_ZIv}r{g82Ci)KspB6O$#R1d|jE$dLz0o@iyB}%7C+yG#K{Z z1%s_Tb)1`TUt_slNIP6q-g*n(gSlxY5}U51UiQba1e7Lx7teLm69=(!@)3H|y3<%j zYwy{2;;{tnJaDy#M{0)QOzAOa=mbLk7ms#(xN7J!zGFYJ_QLV15>0pl;RS^zv%TMo z->AEy8OwO@*p_=k7CRyt&SY7tBv;>q6&{Ib$UNPDvV-(~$^Haz?gS&L8uIE?6KZrt zDbH{ZNj~vEEav9rHS@7`->_it0$fe)z*_nk0ou}7>plTNj>O4F;i@YtDm)kCI#}uY zW~ii*q8jph)$g0uMf{4SPc5ePcs;>Qk1D#)4;U*Ntij*1z2y&P9nmI4b`Z*!4s`hd zADQgJRaaHPe9ip>DczZB$)R{Har=&VBPUsEjSy)_JvrxZDji)QV>k#rJ-vz1FK!(FKg{Vx5Z)-#7q4UqOI+_~BrA1^N>x07JKoE-zg z?w%g=fA#?O+>SEtup_5?_2z%|I1mD~_+gcMxHXw$b2!!`_NTM=i-;M&qn#Vh#I5jX zrgZPy)`Q>Y07N#j57+_YW>>E!9o7TG7p2wb-Mb&H0JHzeeTE@j2TPY0gA-Cu?o!G7 zf+fBF0seA_N<{!r6g)q?GJovF9FmT5P9gSOy^^);4tnLIw^}XjOQtjn%nr+m+d{PX zIS*WoN|QL(XrTaIKkqo>wrl1Tm;d=d=j95kHj+;5MrRCGA8F-?2cE_2uirWL?1|iE z#`A+wJO+{pEq)#*W@i>ng{kD(`sR@~Z;g^YrtPCnwA;S$m#x3_=FV{U=Yqh`qi(wp zR9g%53QXrcwz(#CEu=?ryC)&j%fpJ+YP|cX1iqM6YUC_8?DI#=#wn<~s=WoWFxM2L76hMX&Z*BUSq$V#Q?hAd98SEboBNZzkvU{KsYwUEli!=+a~7^JrrRDiqt8}-=)RZd7hAF$$>Wh*rXYr2TTQ7A)Nm4 zym<^7>s$4;sL^z_g(vpV(Pp2nN2xoa-(`4AY#+BTeJk!vcVChig-QQ9li_Es*7~W; zNw%h6dhpv8Q2Tk&`Ba$yoQ~b_U6zBWf_|NJHWPO7`E&4dVoN3&n#d<{9Xsz)n!2nQ zD~WxUxoTbwSM0m466rmWL!N44#yAv9-6X0xReg)o5I|qunW}EmSaJ*Kdn!!3;v@bB ziDrlUGoAt^HjY1CI!y4?n^>{6g}I1O|IM{*W8M1~f4II&94wj9Uxg`5zYn{r=hFYx zRD}6{27YUGt2#H|#CfRFUXW^bf83xl^jc{z-0{((=lit~eOY-Glv!KdNY_Gahx@YW znF5y~TyL~?C!J;LE$rFn>z=5DwVxaD0Xg!0|@Uo4hbdb^TUQokr)?j1iCnj6%e(90 z%7^dWT$cs#H=qk+17Uhu{Incvgzgm4$j0>+TEk|a*WdTHy7!o$_5>HTLvU_c49EzT zP6MBR7Cn;P%GW`$MOTOORame2QF`;Ei`F+QF7>ZH4NfwA9Kq8qTB3Rj^ll)t>z|)H z%YrsxAY^I)P8Jlr7R~MBX>Z`7+LASxB`TLBkIDAMdQ*2A1UeBS)V+^5WotpIzCHt96a9ps8ML+ z`||(*ze7~GPz>^z*C?C~vhFl7-e=6I(Er%x7SH?O+NXaV$$Q)D$v`8X@TtYGBy*8y zn?x!Xx}q0j@hDU?d9ARWsI)HykeH?`UWVy0=o`e>%2gcKe0g-Kg*Wn zDoOLukwsn^p)M9{SkhO55!j8n=-K_9c#G|~O8&X0te7f|i1sT^s^70+Phw5Fwg^ji z9+G{cdm+ITBPC8kZrHa){@63QT9r7hU5$LXwO2JClP+HXogZ!xXkxi9N^9)wh^w9~ z$aAr9*17FU9~TbV{UzPmqD_gx)yTKb`=DZn`AIcJvequ{wjIVomcBdl?(O~54cOMt zVkRYgJs!Gm#{vg-2x`wNS}`$15?4zG&!zjg60@HTS5NO;b69;|2yL+%mYf$;zHZ4W zmaUn@TN!24cB#?g)ef8;05J*>bKRZ-4)P7kU5R?Ps|Mj(r77D$9lSW%r$WD=m-`2l ztXuyTlam7xcG=YU2$=L+nh{YdF=unAsnbH{Uxa_gvO%q)(F|xiC(SPpx81=5>f_)S z!~}P}2X&w0Rh?+x{>JD+_8ud!r`G020T!x%B!<@Ru`n6Zd{G4KSAV86u*kb_Y{WO* z&C=pbR`C$BzwtuDL$T8a^!!X&Z9bvID_+J}k(5m^3dmUfESJIM6gl1aIt1(A{&Kk( zoaU!E((B>W6CX`}n+6(bqwYP%&_3Xlb&DeKIasxy3Af)}Uer1btD_URl4R`J(Efd( zUbjXuU}F23rm$sBQ_n))$xc%~B)Rw!0B%^#`8K}PKB;R`9Sc?NuZk4O3Eio zyliFxtW2Vej*2RL5q7Uu?#I*SBm@YC^D;=sR76e@Vyn z-qcyFHjs-P4ismpqXV(cmgwt0(|Y^WD6Wo5y$P5SBqfP&IN-}F6^2af{v$kq2#Sw1m8^-q|zDjMiB zx<99E_x#aY^w~IRQqA35diq#}#x=VB#8k4mwj=q+{Q2D6%SLap8E(Qf-jxVDpqRP~ z#+L6$Y6hY;imI54BWIFh-1bPT$S=N_O4Z?=sx4(JCQ+DYeXoW1>*lkoDMD#lJ_UnY z5d4cu_RmGP^W55cOf(8~XB>BK@y7-W>5}_GpN6n;DsB2)oxDp5^imB-CNN#<_0sSN_rMa&3jyrT$vyn zq_f2|p+2r!4~n5i?a+N+y=5x|rc#?Sfb8`f1WOMpFx*ulo6%5ZX)GVGq?eI6&kIKxl{AUb1Y9jnnR;AJMpC})+19v@=m5vtxJc9A-n*MOGP6OS=*9#f({2dk( ziLTOKMqZ_#FwLOrROgIRTR1j>g#Lh&KZUT?aG9~6`{0AHYcxpkkEZog8zc z@i8r?7>g>~JF`i0uN{2f3FjuU^*H~4;6Mj1g}RMu*fl18w&tEknOS z-g+xydj+qc{x&gcr%)(6!%v-`KjOY4IUrvibjKw`?j`_7ES1&fFbtw}-B%d;^)^&; zMSf&38?T)4HG$MU-^)TfXVrJ1nm5lccIoi2!9RpU;WfCQgKFau@?XGq= zQSP&&4V$1|thxyj&&DYeMFVllvJ5dC^sIFJ(kqhnBG)0Zic8&u z)$&&_*SmvnJm1!f%h&N#PUWnlmwOPYXK(Cn(#RSVE-=a`a9429uz0+ZzUFbbEHF z?$fM)V->(GMkeY~a;_{z?hWJwq#LCr?|_&lY_ zVn^>6$n4t8L$YlN1nPp55x6{5*{HHtUq~F*G(2xYc0H#W> zCVJIHXnMa@lTv5&{b1X2XD0;*Kpg<2;uq<tCgs;7@9{=^g^Ct2K0Tp%# z8j^6mzGAVJ%{~eT3;j-5U_rjYTctw67vS~Wbeu;Ugmk)HFEO;~pV7^E3RP?7$t5cQ z+Jl~sPC2-w`z0oRF}yIOdva+2ih$dU?1TVWb%*s;?_nAF@<(0BJKUnDzyA`L34o$&*)z=> zqn81d^0JpvAFjT@;(C+$&_Bb?rejJ*E*%cTvq2U@{*_2F2Bn1XqrM+p_byFYT-Fiw z{-{CFbG=gK}___@c#={+6{nwMzg#wvaWWQJ5_y>}9!aUdYp< z%+bXq-S-BpE6n7sW6!w#sM_wym{<3j_d2!|&!n?nS~LI9Qu>v?O$4ZYiOc5x6}HZG zHtYk){mxIvCarc|yR&-Efe96==+CgEbJEYjj(u=&!fbTAblEG&<0^y+K3HDw+3Ni; zK0e-p#V;;5F4A7{PuiyQ#~~}Q(zfqX5dnaFN}T90(3|!6@G0D4?c;0Z`m$3K6;Oka zF)2sL6rpCYE9VMUis{2Z5*FY)xIUz1n`jX2o3f!K2ktIk%SWDlF-69n0`B-!4ZO~6 zTYz^|G@pvNW=|4S8lieGF!3J5pmaoZ_O?|huY9aTv{liH)YV2Bc|hS^&5eca3V)fr zf%hWoJAjFRxKJkuNiy|b$YN`oMbjJ{`~&YQzWLaD73x|lqlfRyD9rmI=PW!`0t9Zx ztj=;y?)nD}aLHoO5^1Ol+0A?y6^*MaV_ZpULDtxipu2%M^K=4&QY)il6oC2ZA)Yj3b-~y_3mLg*r~eO zgvn7@k-4fGG*!`xNSe!ZD9j8j$!puNz$ej%4{-1dVrC=XZJ1=tq1_E=!@I?94nCAZ zpVnFQI)0dx!&OMh-p#u4iVT2k11y*e#aO}xz$U@Vz{xEc|L21L27Op2piv+Bp9tGx z*jp#z){NwV9q^@(SoUbQF5 z)tM7}PFtDiIrRgBys`E0^!Zb`k5Sm52Zhx)G9ILQ1h%$nSxylB6|!z^n674??`_$+ z?jdggP!C=u9d;d$zrFt9N-R9ktJz{qi~;?VuLU)84$+f}L%q4EH{LDbqRFvfr+8b^CCNm*x zZSYtnz7&q%4=9DI_uDO^fnW&UNJn3+cH~7113wxO4k6!5%sEAxtc;IO1tFqC*^*Kf znVOBPLPek~x4l9|(t4`c925n{;!?ANwc01%9ljB6u}9``#7jLduTSBNEecClkm{S* zU&PkIE|DrgL-bk`@}8o=twrX5tk) zoyJ0nZ81&axI0?_NddUaxdJHJlv}@LUcUgit~to)U!r7*as3y;j2H&ZKM1ey`ee*_ zQ(Q|6a0aLPAs?g|KCBX*1i;IjTFS+8Q2P)Vl9RNQY;dl<`*f$MF54lQ#eH=pPw%mP z_axJ8U}R_Kjp0~$#AW=bz5OLJf!4ExN*6s9q^~v(aLlnO{ECHqk2LRqeNT$pL7}Fv z7x?7ZOYi7vl@mVUdX-m}`1&WWXWel=A}Gy#)%emB2`~P(d0TR0OY?JiyT3WXgc_WR5NZVl z18n&s4a{t(p@XI9c10~*x)3@k(~$^Fv^l6!ojUn6_jy94_2|u)t3RS3jqUdj8j~ON zm(B;DuRY2wyrZqRpbbPVe6hN>xw>AZIrT>SU!F1nWhzZA6f%*hO`0x0-5aF0;N@7G z`y^XwGXr|oUnWpzBI|r3-qZ!VPSv5zB)cG<5_iKax7P#qdFt*HpPg+2_Ke0FRTL76 zz`{E*%KR{K2xI6|M^H*a;!sBkce)tTh$Ffxn5CNs&cSBzX;gB-2X?-R4MVdH*uw@; z7o4n^v?@mT_`g6DL3^C<|Ij#R@WWI1MV<|O4AR>M&QWKU^2jVqnL#&cc#~r@YB6$=HS1-)~4a`Abb58#|$kBP(Z|x@~V6(`7YR_d~ zmj&KbhdtPu17ha$3>ANaDmk$|uCyl)-q4+p6FA~VzEQvcOHSE*rxoqD$M21~`1KFU zM#>-aYE9#MbY#mDSNzC3Ir|$E;(L?qd$apn`I+F2BYtjNY3hm}bv36mfI3f6+NLaH zw-!j5AT^FI#gkIR0`8Hr@BGe^R3Typ8O z^rhNUhS>PWBlkPUv9N6_Q@~mwi>u#}o{n~tq=sVBxNz^_{zfZL4X_%MqAx5)i09}D znwOmED`xa(Z%`HY);0t7#K*TL*)8{1=G7Kw4|uo$0Tq^{l`4(^f$RP)EZX1N9^Z_$ z^qKmR12)zL0K-EvEY=&d>DZT??5jhZU##=9jrIi(rc#cagccr~hSzR(p4Y97Ov84i zEccI;2drg6jkS*NE|vNj?@UHcZ?A1y?hu$_e8;!wXj^(_-X^j%F z)IWjh91YUhzP6K8?RP+T-fg++;tSAzz3y>G9PyXm33lHNz`msL#ap!otM z?T0?Y?9gq={$85oh?XJsD7>LnDX*CQ?eof`go!#z>!#(-*gxqE$=m+G^-e#;31bt9 zXXq~c&y4#bvHywLZlMz6Q|>&r^@1+9lQdFp=|f-*2goTZYc^_1+Yq{cl2+hwse`d1 z442P*7)%!7M`_@2z!zY{81o$|#&Kk${)63qQL7@=Bgg)~cB^hve}6x)v!;JS1h%uW z`lInIB4C{a(2`-!S!6oH>Y5tuQ`Mz4Tt0qQ|sQf2@&Khw`^U`U=iO72RKk)pTwhCQnWBTCpW(#DK0g- z0jOsOPvN-I1iEa$kSQnYq7&GrZe?y}W*4uJ2&we+1bB%ZeYmg~j--{!Cw^eUA4_PD z=uUKLN9gRePr|8}cQ1g8;d0?ixC^spDR|y3=8F3zN20aZ!nq$x4phsm%?$VJr+-ir z;}VHg+9m=o633;{%IKEuMg%M$8ZoRZ^*e{fxnHmv@0+AeE8;QSI zr=L74{S^j5KPUe}Mv27I!a?Pkn@@zH6$dI*ezl)0t*to1=i+f81Pg>3L80EGX(>NHzdf0%EpfpqC}*^J zmleEDjx!tz&vN^bNzKBAVZOrojYj!JbKlg$<2CwT?o~{tzUFo@>6by_7QK|QPOveF zwaQs+@&h6s{z=WdXsKb=?vZCtUQn8V-1|5~HNRfTj&XBdZ|Dsl`9uG-__+0^-fh^B zDwKK`c=<7fp5sf2DvK2QJfhs52#|rIx<$oQsBSW-Q=*I2P}zrBFNIwUFTxem2&&Yc zL?YFo6SO)C%j(QXt44^z8nf@5KJ*ZMgTjrv&$hP{96}@qwF76Og$h4*hVM`iAM53`V z0T}pTrds5|jPtA>$XVtiz_t;E_!jcHT?RKA#_GiK@&L&YE%}7|Tp48qo60-v!@Ag09+AOm@`QFZWKA zt6saF-3m;mc{6ec9dQhiAh)fd^Ax}W_<-Ii$C5)@>dkD)&$p;}^c8onCPXl#bTo-^ zi%l2**^^1q>iJDCc{w|aK3c-5nY75}N*mpy&CJx-TST-duuRpiczn{Fgj-%yED@== z7_;za*+cFevga^|632(X4^lX`OJG_)ht>?+fo;u-Q@Wb+K)ixb);AfxL_e)fYmTEthp;eeFH(!^8tAzk# z)lCk#^5kdK2kcQ6^(1gZhb6t>7e2h!XN8?v6BBs&h|dJ&Wi`Y)YO)-w>Y`78aL*(y zl*tA3t6%*JPOaC`G^Tbp#Os&3)EXP(ZLe0!!6q3$T(DZ6xpp8mX&Uk+B*nMOHBcek zD!S4Qae=M6YSt)nmTpeA2h_S3?C+ZS1J=fauR zhVvSoYG%xKPJV(Q1ijLRN7Av!v)6~Zx2P)z=65lB7{V@j0ges2STy*xan(1v{)YPt zLoEU$N#5dH)tLq4I|FAQZq#Z=Jdesrp5Fr0H;U?6R;>%8W|02C!BjC8s!fxz{Cq>v8OSsc~FaIpj)vYJ^zJ zT-wg@WywP7D$L_s2IucN>zFJrO+}=d+MSBr9$&D~zR~Aq;+Z;7PSrnCqo33?Hlx!q z#oQfop39F3)o?N^NNzIS9vE~aO5!^fxF>gYgl(Od)@PAN<ann~|F z(2I@Ymm5)944%0WB6h$+#p4#rlQqaY^hcTLqaAwq{6%z$>VAqe^7}xuyt8znoQc;9 zJwJ3OLp#+>sm^&wL@^&AcnwQOASkvzK~?A}>JoCxWIVM;W!Atap##km-^O}2BQtDR zo1nedOY9NjGvz;U*)EmiYjN7#VLY&s6E42BfqrfixQ*74uUt)y`sMpxQTrknm8&)- znFQKuZhM*AIgFI;DD76rhPgAW!e5<%bz0DJ5-EIK!@`*DJ~ipuc-x91hobq9jpT>YE(!Z(ue!JCp z$#SUom%pbcA+bG+S26M`7WhdTa8G4U`+pzf}-i5NCROIfY{R@`}=yL*E&_ z;C@P6f&h~2si^dcW8twNwaU1%Nkz$^vU^+2{ixChO1|;dw%155H{d+;4_j5*{N;&8 z=;_ENDMMYtohUhMnl`g^HDyk8shGQfMR%Mck^$Q=nP0aMjC{8P0sDR7(+@kN&ft0T z5?pqdxaQ6oAkI1~8msruK|5pIZ2i8Gi$VWl+OAge)!X)6kJF4|U8jnh5KS%FYSy=F zEQvmE9I=TUIqEl%#^=ZH*f+U4-|~M`S*iFFm9+3mb{RQlp!{QUCYP$2FPHHRqI%+> z^ReKK6uLcEuRfd6fV-~wW+_-LsA3h^CsvD0H1eN9JJ#XC?vdIRQqyFr?DS>u!Di>j z^*5esMxdBW9^&%1%_PTb&-`_*U8c|EH#0q~akaK2k>nqTQ zU*pyl24AXPoUQfIy+pAX21%8K6{Ri0fvK9Z{GSftLLBYzoSPhVR?j2pIYy=anvvkX z@;>hSFIOopG2mCum)Bhl18f`BC%R1)Mp}bkg1n^p7w-8Nk`1n#80n<;Xh849OBfSl z&m{O1;ROuEON*l8=oxl>OI35E1HK}i1n(V0ko=?bYbJB4#`cfGLVrE7s$>S*f)j;h z64ZwvA(Ty^+A`VDj7vn!`~B(hbme^id>aknqF)sl@M&|ZUYHq#9+`Tv=7vAbod)=%U z`{`V>9q&Ow{@=Kr{a^3Df#0G5eZ4;U#62hH@!H)Mks`b6*QpB`)4eH7bi!F@$8FR6 dsQV{0mqQJ3Fo{6me=DKWP|uMSU02kg+ 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 literal 0 HcmV?d00001 diff --git a/bsp/gd32/risc-v/docs/figures/run_flash.png b/bsp/gd32/risc-v/docs/figures/run_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..364dd283fe5a69fe6a8374da37eafc8d08547b55 GIT binary patch literal 17134 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 Y!6h@l7eB!MM+F=}N=dR({7b<91%HA%ssI20 literal 0 HcmV?d00001 diff --git a/bsp/gd32/risc-v/docs/figures/save.png b/bsp/gd32/risc-v/docs/figures/save.png new file mode 100644 index 0000000000000000000000000000000000000000..1edae30bf0483d278c38c4485c26ba3e5626b9d0 GIT binary patch literal 48043 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 literal 0 HcmV?d00001 diff --git a/bsp/gd32/risc-v/docs/figures/svc_download_success.png b/bsp/gd32/risc-v/docs/figures/svc_download_success.png new file mode 100644 index 0000000000000000000000000000000000000000..d4d33634df0764167579a8de3f32a720ec285488 GIT binary patch literal 77627 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

    G?x<1z+4GT#oqnx*z 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 literal 0 HcmV?d00001 diff --git a/bsp/gd32/risc-v/gd32vf103v-eval/rtconfig.h b/bsp/gd32/risc-v/gd32vf103v-eval/rtconfig.h new file mode 100644 index 0000000000..278946708d --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103v-eval/rtconfig.h @@ -0,0 +1,196 @@ +#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_HOOK_USING_FUNC_PTR +#define RT_USING_IDLE_HOOK +#define RT_IDLE_HOOK_LIST_SIZE 4 +#define IDLE_THREAD_STACK_SIZE 512 +#define RT_USING_TIMER_SOFT +#define RT_TIMER_THREAD_PRIO 4 +#define RT_TIMER_THREAD_STACK_SIZE 512 + +/* kservice optimization */ + +#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_SMALL_MEM_AS_HEAP +#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 0x40101 + +/* 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 +#define RT_USING_MSH +#define RT_USING_FINSH +#define FINSH_USING_MSH +#define FINSH_THREAD_NAME "tshell" +#define FINSH_THREAD_PRIORITY 20 +#define FINSH_THREAD_STACK_SIZE 4096 +#define FINSH_USING_HISTORY +#define FINSH_HISTORY_LINES 5 +#define FINSH_USING_SYMTAB +#define FINSH_CMD_SIZE 80 +#define MSH_USING_BUILT_IN_COMMANDS +#define FINSH_USING_DESCRIPTION +#define FINSH_ARG_MAX 10 + +/* Device Drivers */ + +#define RT_USING_DEVICE_IPC +#define RT_USING_SERIAL +#define RT_USING_SERIAL_V1 +#define RT_SERIAL_RB_BUFSZ 64 +#define RT_USING_PIN + +/* Using USB */ + + +/* C/C++ and POSIX layer */ + +#define RT_LIBC_DEFAULT_TIMEZONE 8 + +/* POSIX (Portable Operating System Interface) layer */ + + +/* Interprocess Communication (IPC) */ + + +/* Socket is in the 'Network' category */ + + +/* Network */ + + +/* Utilities */ + + +/* RT-Thread Utestcases */ + + +/* RT-Thread online packages */ + +/* IoT - internet of things */ + + +/* Wi-Fi */ + +/* Marvell WiFi */ + + +/* Wiced WiFi */ + + +/* IoT Cloud */ + + +/* security packages */ + + +/* language packages */ + +/* JSON: JavaScript Object Notation, a lightweight data-interchange format */ + + +/* XML: Extensible Markup Language */ + + +/* multimedia packages */ + +/* LVGL: powerful and easy-to-use embedded GUI library */ + + +/* u8g2: a monochrome graphic library */ + + +/* PainterEngine: A cross-platform graphics application framework written in C language */ + + +/* tools packages */ + + +/* system packages */ + +/* enhanced kernel services */ + + +/* POSIX extension functions */ + + +/* acceleration: Assembly language or algorithmic acceleration packages */ + + +/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */ + + +/* Micrium: Micrium software products porting for RT-Thread */ + + +/* peripheral libraries and drivers */ + + +/* AI packages */ + + +/* miscellaneous packages */ + +/* project laboratory */ + +/* samples: kernel and components samples */ + + +/* entertainment: terminal games and other interesting software packages */ + +#define SOC_FAMILY_GD32 +#define SOC_GD32VF103V + +/* Hardware Drivers Config */ + +#define SOC_SERIES_GD32VF103V + +/* Onboard Peripheral Drivers */ + +/* On-chip Peripheral Drivers */ + +#define BSP_USING_GPIO +#define BSP_USING_UART +#define BSP_USING_UART0 +#define BSP_USING_UART1 + +/* Board extended module Drivers */ + + +#endif diff --git a/bsp/gd32/risc-v/gd32vf103v-eval/rtconfig.py b/bsp/gd32/risc-v/gd32vf103v-eval/rtconfig.py new file mode 100644 index 0000000000..454c4eee9d --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103v-eval/rtconfig.py @@ -0,0 +1,74 @@ +import os + +# toolchains options +ARCH='risc-v' +CPU='bumblebee' +CROSS_TOOL='gcc' + +# bsp lib config +BSP_LIBRARY_TYPE = None + +if os.getenv('RTT_CC'): + CROSS_TOOL = os.getenv('RTT_CC') +if os.getenv('RTT_ROOT'): + RTT_ROOT = os.getenv('RTT_ROOT') + +# cross_tool provides the cross compiler +# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR +if CROSS_TOOL == 'gcc': + PLATFORM = 'gcc' + EXEC_PATH = EXEC_PATH = r'D:/gcc/xpack-riscv-none-embed-gcc-10.2.0-1.2/bin' +else: + print('Please make sure your toolchains is GNU GCC!') + exit(0) + +#if os.getenv('RTT_EXEC_PATH'): +# EXEC_PATH = os.getenv('RTT_EXEC_PATH') + +CORE = 'risc-v' +BUILD = 'debug' +MAP_FILE = 'rtthread.map' +LINK_FILE = '../libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/GD32VF103xB.lds' + +if PLATFORM == 'gcc': + # toolchains + PREFIX = 'riscv-none-embed-' + CC = PREFIX + 'gcc' + AS = PREFIX + 'gcc' + AR = PREFIX + 'ar' + CXX = PREFIX + 'g++' + LINK = PREFIX + 'gcc' + TARGET_EXT = 'elf' + SIZE = PREFIX + 'size' + OBJDUMP = PREFIX + 'objdump' + OBJCPY = PREFIX + 'objcopy' + + DEVICE = ' -march=rv32imac -mabi=ilp32 -DUSE_PLIC -DUSE_M_TIME -DNO_INIT -mcmodel=medany -msmall-data-limit=8 -L. -nostartfiles -lc ' + CFLAGS = DEVICE + CFLAGS += ' -save-temps=obj' + AFLAGS = '-c'+ DEVICE + ' -x assembler-with-cpp' + AFLAGS += ' -Iplatform -Ilibraries/RISCV/include -Ilibraries/RISCV/env_Eclipse' + LFLAGS = DEVICE + LFLAGS += ' -Wl,--gc-sections,-cref,-Map=' + MAP_FILE + LFLAGS += ' -T ' + LINK_FILE + LFLAGS += ' -Wl,-wrap=memset' + + CPATH = '' + LPATH = '' + + if BUILD == 'debug': + CFLAGS += ' -O0 -g3' + AFLAGS += ' -g3' + else: + CFLAGS += ' -O2' + + CXXFLAGS = CFLAGS + + POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' + +def dist_handle(BSP_ROOT, dist_dir): + import sys + cwd_path = os.getcwd() + sys.path.append(os.path.join(os.path.dirname(BSP_ROOT), 'tools')) + from sdk_dist import dist_do_building + dist_do_building(BSP_ROOT, dist_dir) diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_adc.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_adc.h new file mode 100644 index 0000000000..164fddf603 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_adc.h @@ -0,0 +1,397 @@ +/*! + \file gd32vf103_adc.h + \brief definitions for the ADC + + \version 2020-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_ADC_H +#define GD32VF103_ADC_H + +#include "gd32vf103.h" + +/* ADC definitions */ +#define ADC0 ADC_BASE +#define ADC1 (ADC_BASE + 0x400U) + +/* registers definitions */ +#define ADC_STAT(adcx) REG32((adcx) + 0x00U) /*!< ADC status register */ +#define ADC_CTL0(adcx) REG32((adcx) + 0x04U) /*!< ADC control register 0 */ +#define ADC_CTL1(adcx) REG32((adcx) + 0x08U) /*!< ADC control register 1 */ +#define ADC_SAMPT0(adcx) REG32((adcx) + 0x0CU) /*!< ADC sampling time register 0 */ +#define ADC_SAMPT1(adcx) REG32((adcx) + 0x10U) /*!< ADC sampling time register 1 */ +#define ADC_IOFF0(adcx) REG32((adcx) + 0x14U) /*!< ADC inserted channel data offset register 0 */ +#define ADC_IOFF1(adcx) REG32((adcx) + 0x18U) /*!< ADC inserted channel data offset register 1 */ +#define ADC_IOFF2(adcx) REG32((adcx) + 0x1CU) /*!< ADC inserted channel data offset register 2 */ +#define ADC_IOFF3(adcx) REG32((adcx) + 0x20U) /*!< ADC inserted channel data offset register 3 */ +#define ADC_WDHT(adcx) REG32((adcx) + 0x24U) /*!< ADC watchdog high threshold register */ +#define ADC_WDLT(adcx) REG32((adcx) + 0x28U) /*!< ADC watchdog low threshold register */ +#define ADC_RSQ0(adcx) REG32((adcx) + 0x2CU) /*!< ADC regular sequence register 0 */ +#define ADC_RSQ1(adcx) REG32((adcx) + 0x30U) /*!< ADC regular sequence register 1 */ +#define ADC_RSQ2(adcx) REG32((adcx) + 0x34U) /*!< ADC regular sequence register 2 */ +#define ADC_ISQ(adcx) REG32((adcx) + 0x38U) /*!< ADC inserted sequence register */ +#define ADC_IDATA0(adcx) REG32((adcx) + 0x3CU) /*!< ADC inserted data register 0 */ +#define ADC_IDATA1(adcx) REG32((adcx) + 0x40U) /*!< ADC inserted data register 1 */ +#define ADC_IDATA2(adcx) REG32((adcx) + 0x44U) /*!< ADC inserted data register 2 */ +#define ADC_IDATA3(adcx) REG32((adcx) + 0x48U) /*!< ADC inserted data register 3 */ +#define ADC_RDATA(adcx) REG32((adcx) + 0x4CU) /*!< ADC regular data register */ +#define ADC_OVSCR(adcx) REG32((adcx) + 0x80U) /*!< ADC oversample control register */ + +/* bits definitions */ +/* ADC_STAT */ +#define ADC_STAT_WDE BIT(0) /*!< analog watchdog event flag */ +#define ADC_STAT_EOC BIT(1) /*!< end of conversion */ +#define ADC_STAT_EOIC BIT(2) /*!< inserted channel end of conversion */ +#define ADC_STAT_STIC BIT(3) /*!< inserted channel start flag */ +#define ADC_STAT_STRC BIT(4) /*!< regular channel start flag */ + +/* ADC_CTL0 */ +#define ADC_CTL0_WDCHSEL BITS(0,4) /*!< analog watchdog channel select bits */ +#define ADC_CTL0_EOCIE BIT(5) /*!< interrupt enable for EOC */ +#define ADC_CTL0_WDEIE BIT(6) /*!< analog watchdog interrupt enable */ +#define ADC_CTL0_EOICIE BIT(7) /*!< interrupt enable for inserted channels */ +#define ADC_CTL0_SM BIT(8) /*!< scan mode */ +#define ADC_CTL0_WDSC BIT(9) /*!< when in scan mode, analog watchdog is effective on a single channel */ +#define ADC_CTL0_ICA BIT(10) /*!< automatic inserted group conversion */ +#define ADC_CTL0_DISRC BIT(11) /*!< discontinuous mode on regular channels */ +#define ADC_CTL0_DISIC BIT(12) /*!< discontinuous mode on inserted channels */ +#define ADC_CTL0_DISNUM BITS(13,15) /*!< discontinuous mode channel count */ +#define ADC_CTL0_SYNCM BITS(16,19) /*!< sync mode selection */ +#define ADC_CTL0_IWDEN BIT(22) /*!< analog watchdog enable on inserted channels */ +#define ADC_CTL0_RWDEN BIT(23) /*!< analog watchdog enable on regular channels */ + +/* ADC_CTL1 */ +#define ADC_CTL1_ADCON BIT(0) /*!< ADC converter on */ +#define ADC_CTL1_CTN BIT(1) /*!< continuous conversion */ +#define ADC_CTL1_CLB BIT(2) /*!< ADC calibration */ +#define ADC_CTL1_RSTCLB BIT(3) /*!< reset calibration */ +#define ADC_CTL1_DMA BIT(8) /*!< direct memory access mode */ +#define ADC_CTL1_DAL BIT(11) /*!< data alignment */ +#define ADC_CTL1_ETSIC BITS(12,14) /*!< external trigger select for inserted channel */ +#define ADC_CTL1_ETEIC BIT(15) /*!< external trigger enable for inserted channel */ +#define ADC_CTL1_ETSRC BITS(17,19) /*!< external trigger select for regular channel */ +#define ADC_CTL1_ETERC BIT(20) /*!< external trigger conversion mode for inserted channels */ +#define ADC_CTL1_SWICST BIT(21) /*!< start on inserted channel */ +#define ADC_CTL1_SWRCST BIT(22) /*!< start on regular channel */ +#define ADC_CTL1_TSVREN BIT(23) /*!< channel 16 and 17 enable of ADC0 */ + +/* ADC_SAMPTx x=0..1 */ +#define ADC_SAMPTX_SPTN BITS(0,2) /*!< channel n sample time selection */ + +/* ADC_IOFFx x=0..3 */ +#define ADC_IOFFX_IOFF BITS(0,11) /*!< data offset for inserted channel x */ + +/* ADC_WDHT */ +#define ADC_WDHT_WDHT BITS(0,11) /*!< analog watchdog high threshold */ + +/* ADC_WDLT */ +#define ADC_WDLT_WDLT BITS(0,11) /*!< analog watchdog low threshold */ + +/* ADC_RSQx x=0..2 */ +#define ADC_RSQX_RSQN BITS(0,4) /*!< nth conversion in regular sequence */ +#define ADC_RSQ0_RL BITS(20,23) /*!< regular channel sequence length */ + +/* ADC_ISQ */ +#define ADC_ISQ_ISQN BITS(0,4) /*!< nth conversion in inserted sequence */ +#define ADC_ISQ_IL BITS(20,21) /*!< inserted sequence length */ + +/* ADC_IDATAx x=0..3*/ +#define ADC_IDATAX_IDATAN BITS(0,15) /*!< inserted data n */ + +/* ADC_RDATA */ +#define ADC_RDATA_RDATA BITS(0,15) /*!< regular data */ +#define ADC_RDATA_ADC1RDTR BITS(16,31) /*!< ADC1 regular channel data */ + +/* ADC_OVSCR */ +#define ADC_OVSCR_OVSEN BIT(0) /*!< oversampling enable */ +#define ADC_OVSCR_OVSR BITS(2,4) /*!< oversampling ratio */ +#define ADC_OVSCR_OVSS BITS(5,8) /*!< oversampling shift */ +#define ADC_OVSCR_TOVS BIT(9) /*!< triggered oversampling */ +#define ADC_OVSCR_DRES BITS(12,13) /*!< ADC data resolution */ + +/* constants definitions */ +/* adc_stat register value */ +#define ADC_FLAG_WDE ADC_STAT_WDE /*!< analog watchdog event flag */ +#define ADC_FLAG_EOC ADC_STAT_EOC /*!< end of conversion */ +#define ADC_FLAG_EOIC ADC_STAT_EOIC /*!< inserted channel end of conversion */ +#define ADC_FLAG_STIC ADC_STAT_STIC /*!< inserted channel start flag */ +#define ADC_FLAG_STRC ADC_STAT_STRC /*!< regular channel start flag */ + +/* adc_ctl0 register value */ +#define CTL0_DISNUM(regval) (BITS(13,15) & ((uint32_t)(regval) << 13)) /*!< write value to ADC_CTL0_DISNUM bit field */ + +/* scan mode */ +#define ADC_SCAN_MODE ADC_CTL0_SM /*!< scan mode */ + +/* inserted channel group convert automatically */ +#define ADC_INSERTED_CHANNEL_AUTO ADC_CTL0_ICA /*!< inserted channel group convert automatically */ + +/* ADC sync mode */ +#define CTL0_SYNCM(regval) (BITS(16,19) & ((uint32_t)(regval) << 16)) /*!< write value to ADC_CTL0_SYNCM bit field */ +#define ADC_MODE_FREE CTL0_SYNCM(0) /*!< all the ADCs work independently */ +#define ADC_DAUL_REGULAL_PARALLEL_INSERTED_PARALLEL CTL0_SYNCM(1) /*!< ADC0 and ADC1 work in combined regular parallel + inserted parallel mode */ +#define ADC_DAUL_REGULAL_PARALLEL_INSERTED_ROTATION CTL0_SYNCM(2) /*!< ADC0 and ADC1 work in combined regular parallel + trigger rotation mode */ +#define ADC_DAUL_INSERTED_PARALLEL_REGULAL_FOLLOWUP_FAST CTL0_SYNCM(3) /*!< ADC0 and ADC1 work in combined inserted parallel + follow-up fast mode */ +#define ADC_DAUL_INSERTED_PARALLEL_REGULAL_FOLLOWUP_SLOW CTL0_SYNCM(4) /*!< ADC0 and ADC1 work in combined inserted parallel + follow-up slow mode */ +#define ADC_DAUL_INSERTED_PARALLEL CTL0_SYNCM(5) /*!< ADC0 and ADC1 work in inserted parallel mode only */ +#define ADC_DAUL_REGULAL_PARALLEL CTL0_SYNCM(6) /*!< ADC0 and ADC1 work in regular parallel mode only */ +#define ADC_DAUL_REGULAL_FOLLOWUP_FAST CTL0_SYNCM(7) /*!< ADC0 and ADC1 work in follow-up fast mode only */ +#define ADC_DAUL_REGULAL_FOLLOWUP_SLOW CTL0_SYNCM(8) /*!< ADC0 and ADC1 work in follow-up slow mode only */ +#define ADC_DAUL_INSERTED_TRIGGER_ROTATION CTL0_SYNCM(9) /*!< ADC0 and ADC1 work in trigger rotation mode only */ + +/* adc_ctl1 register value */ +#define ADC_DATAALIGN_RIGHT ((uint32_t)0x00000000U) /*!< LSB alignment */ +#define ADC_DATAALIGN_LEFT ADC_CTL1_DAL /*!< MSB alignment */ + +/* continuous mode */ +#define ADC_CONTINUOUS_MODE ADC_CTL1_CTN /*!< continuous mode */ + +/* external trigger select for regular channel */ +#define CTL1_ETSRC(regval) (BITS(17,19) & ((uint32_t)(regval) << 17)) /*!< write value to ADC_CTL1_ETSRC bit field */ +/* for ADC0 and ADC1 regular channel */ +#define ADC0_1_EXTTRIG_REGULAR_T0_CH0 CTL1_ETSRC(0) /*!< TIMER0 CH0 event select */ +#define ADC0_1_EXTTRIG_REGULAR_T0_CH1 CTL1_ETSRC(1) /*!< TIMER0 CH1 event select */ +#define ADC0_1_EXTTRIG_REGULAR_T0_CH2 CTL1_ETSRC(2) /*!< TIMER0 CH2 event select */ +#define ADC0_1_EXTTRIG_REGULAR_T1_CH1 CTL1_ETSRC(3) /*!< TIMER1 CH1 event select */ +#define ADC0_1_EXTTRIG_REGULAR_T2_TRGO CTL1_ETSRC(4) /*!< TIMER2 TRGO event select */ +#define ADC0_1_EXTTRIG_REGULAR_T3_CH3 CTL1_ETSRC(5) /*!< TIMER3 CH3 event select */ +#define ADC0_1_EXTTRIG_REGULAR_EXTI_11 CTL1_ETSRC(6) /*!< external interrupt line 11 */ +#define ADC0_1_EXTTRIG_REGULAR_NONE CTL1_ETSRC(7) /*!< software trigger */ + +/* external trigger mode for inserted channel */ +#define CTL1_ETSIC(regval) (BITS(12,14) & ((uint32_t)(regval) << 12)) /*!< write value to ADC_CTL1_ETSIC bit field */ +/* for ADC0 and ADC1 inserted channel */ +#define ADC0_1_EXTTRIG_INSERTED_T0_TRGO CTL1_ETSIC(0) /*!< TIMER0 TRGO event select */ +#define ADC0_1_EXTTRIG_INSERTED_T0_CH3 CTL1_ETSIC(1) /*!< TIMER0 CH3 event select */ +#define ADC0_1_EXTTRIG_INSERTED_T1_TRGO CTL1_ETSIC(2) /*!< TIMER1 TRGO event select */ +#define ADC0_1_EXTTRIG_INSERTED_T1_CH0 CTL1_ETSIC(3) /*!< TIMER1 CH0 event select */ +#define ADC0_1_EXTTRIG_INSERTED_T2_CH3 CTL1_ETSIC(4) /*!< TIMER2 CH3 event select */ +#define ADC0_1_EXTTRIG_INSERTED_T3_TRGO CTL1_ETSIC(5) /*!< TIMER3 TRGO event select */ +#define ADC0_1_EXTTRIG_INSERTED_EXTI_15 CTL1_ETSIC(6) /*!< external interrupt line 15 */ +#define ADC0_1_EXTTRIG_INSERTED_NONE CTL1_ETSIC(7) /*!< software trigger */ + +/* adc_samptx register value */ +#define SAMPTX_SPT(regval) (BITS(0,2) & ((uint32_t)(regval) << 0)) /*!< write value to ADC_SAMPTX_SPT bit field */ +#define ADC_SAMPLETIME_1POINT5 SAMPTX_SPT(0) /*!< 1.5 sampling cycles */ +#define ADC_SAMPLETIME_7POINT5 SAMPTX_SPT(1) /*!< 7.5 sampling cycles */ +#define ADC_SAMPLETIME_13POINT5 SAMPTX_SPT(2) /*!< 13.5 sampling cycles */ +#define ADC_SAMPLETIME_28POINT5 SAMPTX_SPT(3) /*!< 28.5 sampling cycles */ +#define ADC_SAMPLETIME_41POINT5 SAMPTX_SPT(4) /*!< 41.5 sampling cycles */ +#define ADC_SAMPLETIME_55POINT5 SAMPTX_SPT(5) /*!< 55.5 sampling cycles */ +#define ADC_SAMPLETIME_71POINT5 SAMPTX_SPT(6) /*!< 71.5 sampling cycles */ +#define ADC_SAMPLETIME_239POINT5 SAMPTX_SPT(7) /*!< 239.5 sampling cycles */ + +/* adc_ioffx register value */ +#define IOFFX_IOFF(regval) (BITS(0,11) & ((uint32_t)(regval) << 0)) /*!< write value to ADC_IOFFX_IOFF bit field */ + +/* adc_wdht register value */ +#define WDHT_WDHT(regval) (BITS(0,11) & ((uint32_t)(regval) << 0)) /*!< write value to ADC_WDHT_WDHT bit field */ + +/* adc_wdlt register value */ +#define WDLT_WDLT(regval) (BITS(0,11) & ((uint32_t)(regval) << 0)) /*!< write value to ADC_WDLT_WDLT bit field */ + +/* adc_rsqx register value */ +#define RSQ0_RL(regval) (BITS(20,23) & ((uint32_t)(regval) << 20)) /*!< write value to ADC_RSQ0_RL bit field */ + +/* adc_isq register value */ +#define ISQ_IL(regval) (BITS(20,21) & ((uint32_t)(regval) << 20)) /*!< write value to ADC_ISQ_IL bit field */ + +/* ADC channel group definitions */ +#define ADC_REGULAR_CHANNEL ((uint8_t)0x01U) /*!< adc regular channel group */ +#define ADC_INSERTED_CHANNEL ((uint8_t)0x02U) /*!< adc inserted channel group */ +#define ADC_REGULAR_INSERTED_CHANNEL ((uint8_t)0x03U) /*!< both regular and inserted channel group */ + +#define ADC_CHANNEL_DISCON_DISABLE ((uint8_t)0x04U) /*!< disable discontinuous mode of regular & inserted channel */ + +/* ADC inserted channel definitions */ +#define ADC_INSERTED_CHANNEL_0 ((uint8_t)0x00U) /*!< adc inserted channel 0 */ +#define ADC_INSERTED_CHANNEL_1 ((uint8_t)0x01U) /*!< adc inserted channel 1 */ +#define ADC_INSERTED_CHANNEL_2 ((uint8_t)0x02U) /*!< adc inserted channel 2 */ +#define ADC_INSERTED_CHANNEL_3 ((uint8_t)0x03U) /*!< adc inserted channel 3 */ + +/* ADC channel definitions */ +#define ADC_CHANNEL_0 ((uint8_t)0x00U) /*!< ADC channel 0 */ +#define ADC_CHANNEL_1 ((uint8_t)0x01U) /*!< ADC channel 1 */ +#define ADC_CHANNEL_2 ((uint8_t)0x02U) /*!< ADC channel 2 */ +#define ADC_CHANNEL_3 ((uint8_t)0x03U) /*!< ADC channel 3 */ +#define ADC_CHANNEL_4 ((uint8_t)0x04U) /*!< ADC channel 4 */ +#define ADC_CHANNEL_5 ((uint8_t)0x05U) /*!< ADC channel 5 */ +#define ADC_CHANNEL_6 ((uint8_t)0x06U) /*!< ADC channel 6 */ +#define ADC_CHANNEL_7 ((uint8_t)0x07U) /*!< ADC channel 7 */ +#define ADC_CHANNEL_8 ((uint8_t)0x08U) /*!< ADC channel 8 */ +#define ADC_CHANNEL_9 ((uint8_t)0x09U) /*!< ADC channel 9 */ +#define ADC_CHANNEL_10 ((uint8_t)0x0AU) /*!< ADC channel 10 */ +#define ADC_CHANNEL_11 ((uint8_t)0x0BU) /*!< ADC channel 11 */ +#define ADC_CHANNEL_12 ((uint8_t)0x0CU) /*!< ADC channel 12 */ +#define ADC_CHANNEL_13 ((uint8_t)0x0DU) /*!< ADC channel 13 */ +#define ADC_CHANNEL_14 ((uint8_t)0x0EU) /*!< ADC channel 14 */ +#define ADC_CHANNEL_15 ((uint8_t)0x0FU) /*!< ADC channel 15 */ +#define ADC_CHANNEL_16 ((uint8_t)0x10U) /*!< ADC channel 16 */ +#define ADC_CHANNEL_17 ((uint8_t)0x11U) /*!< ADC channel 17 */ + +/* ADC interrupt */ +#define ADC_INT_WDE ADC_STAT_WDE /*!< analog watchdog event interrupt */ +#define ADC_INT_EOC ADC_STAT_EOC /*!< end of group conversion interrupt */ +#define ADC_INT_EOIC ADC_STAT_EOIC /*!< end of inserted group conversion interrupt */ + +/* ADC interrupt flag */ +#define ADC_INT_FLAG_WDE ADC_STAT_WDE /*!< analog watchdog event interrupt flag */ +#define ADC_INT_FLAG_EOC ADC_STAT_EOC /*!< end of group conversion interrupt flag */ +#define ADC_INT_FLAG_EOIC ADC_STAT_EOIC /*!< end of inserted group conversion interrupt flag */ + +/* ADC resolution definitions */ +#define OVSCR_DRES(regval) (BITS(12,13) & ((uint32_t)(regval) << 12)) +#define ADC_RESOLUTION_12B OVSCR_DRES(0) /*!< 12-bit ADC resolution */ +#define ADC_RESOLUTION_10B OVSCR_DRES(1) /*!< 10-bit ADC resolution */ +#define ADC_RESOLUTION_8B OVSCR_DRES(2) /*!< 8-bit ADC resolution */ +#define ADC_RESOLUTION_6B OVSCR_DRES(3) /*!< 6-bit ADC resolution */ + +/* ADC oversampling mode */ +#define ADC_OVERSAMPLING_ALL_CONVERT 0 /*!< all oversampled conversions for a channel are done consecutively after a trigger */ +#define ADC_OVERSAMPLING_ONE_CONVERT 1 /*!< each oversampled conversion for a channel needs a trigger */ + +/* ADC oversampling shift */ +#define OVSCR_OVSS(regval) (BITS(5,8) & ((uint32_t)(regval) << 5)) +#define ADC_OVERSAMPLING_SHIFT_NONE OVSCR_OVSS(0) /*!< no oversampling shift */ +#define ADC_OVERSAMPLING_SHIFT_1B OVSCR_OVSS(1) /*!< 1-bit oversampling shift */ +#define ADC_OVERSAMPLING_SHIFT_2B OVSCR_OVSS(2) /*!< 2-bit oversampling shift */ +#define ADC_OVERSAMPLING_SHIFT_3B OVSCR_OVSS(3) /*!< 3-bit oversampling shift */ +#define ADC_OVERSAMPLING_SHIFT_4B OVSCR_OVSS(4) /*!< 4-bit oversampling shift */ +#define ADC_OVERSAMPLING_SHIFT_5B OVSCR_OVSS(5) /*!< 5-bit oversampling shift */ +#define ADC_OVERSAMPLING_SHIFT_6B OVSCR_OVSS(6) /*!< 6-bit oversampling shift */ +#define ADC_OVERSAMPLING_SHIFT_7B OVSCR_OVSS(7) /*!< 7-bit oversampling shift */ +#define ADC_OVERSAMPLING_SHIFT_8B OVSCR_OVSS(8) /*!< 8-bit oversampling shift */ + +/* ADC oversampling ratio */ +#define OVSCR_OVSR(regval) (BITS(2,4) & ((uint32_t)(regval) << 2)) +#define ADC_OVERSAMPLING_RATIO_MUL2 OVSCR_OVSR(0) /*!< oversampling ratio X2 */ +#define ADC_OVERSAMPLING_RATIO_MUL4 OVSCR_OVSR(1) /*!< oversampling ratio X4 */ +#define ADC_OVERSAMPLING_RATIO_MUL8 OVSCR_OVSR(2) /*!< oversampling ratio X8 */ +#define ADC_OVERSAMPLING_RATIO_MUL16 OVSCR_OVSR(3) /*!< oversampling ratio X16 */ +#define ADC_OVERSAMPLING_RATIO_MUL32 OVSCR_OVSR(4) /*!< oversampling ratio X32 */ +#define ADC_OVERSAMPLING_RATIO_MUL64 OVSCR_OVSR(5) /*!< oversampling ratio X64 */ +#define ADC_OVERSAMPLING_RATIO_MUL128 OVSCR_OVSR(6) /*!< oversampling ratio X128 */ +#define ADC_OVERSAMPLING_RATIO_MUL256 OVSCR_OVSR(7) /*!< oversampling ratio X256 */ + +/* function declarations */ +/* initialization config */ +/* reset ADC */ +void adc_deinit(uint32_t adc_periph); +/* configure the ADC sync mode */ +void adc_mode_config(uint32_t mode); +/* enable or disable ADC special function */ +void adc_special_function_config(uint32_t adc_periph, uint32_t function, ControlStatus newvalue); +/* configure ADC data alignment */ +void adc_data_alignment_config(uint32_t adc_periph, uint32_t data_alignment); +/* enable ADC interface */ +void adc_enable(uint32_t adc_periph); +/* disable ADC interface */ +void adc_disable(uint32_t adc_periph); +/* ADC calibration and reset calibration */ +void adc_calibration_enable(uint32_t adc_periph); +/* enable the temperature sensor and Vrefint channel */ +void adc_tempsensor_vrefint_enable(void); +/* disable the temperature sensor and Vrefint channel */ +void adc_tempsensor_vrefint_disable(void); + +/* DMA config */ +/* enable DMA request */ +void adc_dma_mode_enable(uint32_t adc_periph); +/* disable DMA request */ +void adc_dma_mode_disable(uint32_t adc_periph); + +/* regular group and inserted group config */ +/* configure ADC discontinuous mode */ +void adc_discontinuous_mode_config(uint32_t adc_periph, uint8_t adc_channel_group, uint8_t length); + +/* configure the length of regular channel group or inserted channel group */ +void adc_channel_length_config(uint32_t adc_periph, uint8_t adc_channel_group, uint32_t length); +/* configure ADC regular channel */ +void adc_regular_channel_config(uint32_t adc_periph, uint8_t rank, uint8_t adc_channel, uint32_t sample_time); +/* configure ADC inserted channel */ +void adc_inserted_channel_config(uint32_t adc_periph, uint8_t rank, uint8_t adc_channel, uint32_t sample_time); +/* configure ADC inserted channel offset */ +void adc_inserted_channel_offset_config(uint32_t adc_periph, uint8_t inserted_channel, uint16_t offset); + +/* configure ADC external trigger source */ +void adc_external_trigger_source_config(uint32_t adc_periph, uint8_t adc_channel_group, uint32_t external_trigger_source); +/* configure ADC external trigger */ +void adc_external_trigger_config(uint32_t adc_periph, uint8_t adc_channel_group, ControlStatus newvalue); +/* enable ADC software trigger */ +void adc_software_trigger_enable(uint32_t adc_periph, uint8_t adc_channel_group); + +/* get channel data */ +/* read ADC regular group data register */ +uint16_t adc_regular_data_read(uint32_t adc_periph); +/* read ADC inserted group data register */ +uint16_t adc_inserted_data_read(uint32_t adc_periph, uint8_t inserted_channel); +/* read the last ADC0 and ADC1 conversion result data in sync mode */ +uint32_t adc_sync_mode_convert_value_read(void); + +/* watchdog config */ +/* configure ADC analog watchdog single channel */ +void adc_watchdog_single_channel_enable(uint32_t adc_periph, uint8_t adc_channel); +/* configure ADC analog watchdog group channel */ +void adc_watchdog_group_channel_enable(uint32_t adc_periph, uint8_t adc_channel_group); +/* disable ADC analog watchdog */ +void adc_watchdog_disable(uint32_t adc_periph); +/* configure ADC analog watchdog threshold */ +void adc_watchdog_threshold_config(uint32_t adc_periph, uint16_t low_threshold, uint16_t high_threshold); + +/* interrupt & flag functions */ +/* get the ADC flag bits */ +FlagStatus adc_flag_get(uint32_t adc_periph, uint32_t adc_flag); +/* clear the ADC flag bits */ +void adc_flag_clear(uint32_t adc_periph, uint32_t adc_flag); +/* get the bit state of ADCx software start conversion */ +FlagStatus adc_regular_software_startconv_flag_get(uint32_t adc_periph); +/* get the bit state of ADCx software inserted channel start conversion */ +FlagStatus adc_inserted_software_startconv_flag_get(uint32_t adc_periph); +/* get the ADC interrupt bits */ +FlagStatus adc_interrupt_flag_get(uint32_t adc_periph, uint32_t adc_interrupt); +/* clear the ADC flag */ +void adc_interrupt_flag_clear(uint32_t adc_periph, uint32_t adc_interrupt); +/* enable ADC interrupt */ +void adc_interrupt_enable(uint32_t adc_periph, uint32_t adc_interrupt); +/* disable ADC interrupt */ +void adc_interrupt_disable(uint32_t adc_periph, uint32_t adc_interrupt); + +/* ADC resolution & oversample */ +/* ADC resolution config */ +void adc_resolution_config(uint32_t adc_periph, uint32_t resolution); +/* ADC oversample mode config */ +void adc_oversample_mode_config(uint32_t adc_periph, uint8_t mode, uint16_t shift, uint8_t ratio); +/* enable ADC oversample mode */ +void adc_oversample_mode_enable(uint32_t adc_periph); +/* disable ADC oversample mode */ +void adc_oversample_mode_disable(uint32_t adc_periph); + +#endif /* GD32VF103_ADC_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_bkp.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_bkp.h new file mode 100644 index 0000000000..f2dcff240b --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_bkp.h @@ -0,0 +1,228 @@ +/*! + \file gd32vf103_bkp.h + \brief definitions for the BKP + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_BKP_H +#define GD32VF103_BKP_H + +#include "gd32vf103.h" + +/* BKP definitions */ +#define BKP BKP_BASE /*!< BKP base address */ + +/* registers definitions */ +#define BKP_DATA0 REG16((BKP) + 0x04U) /*!< BKP data register 0 */ +#define BKP_DATA1 REG16((BKP) + 0x08U) /*!< BKP data register 1 */ +#define BKP_DATA2 REG16((BKP) + 0x0CU) /*!< BKP data register 2 */ +#define BKP_DATA3 REG16((BKP) + 0x10U) /*!< BKP data register 3 */ +#define BKP_DATA4 REG16((BKP) + 0x14U) /*!< BKP data register 4 */ +#define BKP_DATA5 REG16((BKP) + 0x18U) /*!< BKP data register 5 */ +#define BKP_DATA6 REG16((BKP) + 0x1CU) /*!< BKP data register 6 */ +#define BKP_DATA7 REG16((BKP) + 0x20U) /*!< BKP data register 7 */ +#define BKP_DATA8 REG16((BKP) + 0x24U) /*!< BKP data register 8 */ +#define BKP_DATA9 REG16((BKP) + 0x28U) /*!< BKP data register 9 */ +#define BKP_DATA10 REG16((BKP) + 0x40U) /*!< BKP data register 10 */ +#define BKP_DATA11 REG16((BKP) + 0x44U) /*!< BKP data register 11 */ +#define BKP_DATA12 REG16((BKP) + 0x48U) /*!< BKP data register 12 */ +#define BKP_DATA13 REG16((BKP) + 0x4CU) /*!< BKP data register 13 */ +#define BKP_DATA14 REG16((BKP) + 0x50U) /*!< BKP data register 14 */ +#define BKP_DATA15 REG16((BKP) + 0x54U) /*!< BKP data register 15 */ +#define BKP_DATA16 REG16((BKP) + 0x58U) /*!< BKP data register 16 */ +#define BKP_DATA17 REG16((BKP) + 0x5CU) /*!< BKP data register 17 */ +#define BKP_DATA18 REG16((BKP) + 0x60U) /*!< BKP data register 18 */ +#define BKP_DATA19 REG16((BKP) + 0x64U) /*!< BKP data register 19 */ +#define BKP_DATA20 REG16((BKP) + 0x68U) /*!< BKP data register 20 */ +#define BKP_DATA21 REG16((BKP) + 0x6CU) /*!< BKP data register 21 */ +#define BKP_DATA22 REG16((BKP) + 0x70U) /*!< BKP data register 22 */ +#define BKP_DATA23 REG16((BKP) + 0x74U) /*!< BKP data register 23 */ +#define BKP_DATA24 REG16((BKP) + 0x78U) /*!< BKP data register 24 */ +#define BKP_DATA25 REG16((BKP) + 0x7CU) /*!< BKP data register 25 */ +#define BKP_DATA26 REG16((BKP) + 0x80U) /*!< BKP data register 26 */ +#define BKP_DATA27 REG16((BKP) + 0x84U) /*!< BKP data register 27 */ +#define BKP_DATA28 REG16((BKP) + 0x88U) /*!< BKP data register 28 */ +#define BKP_DATA29 REG16((BKP) + 0x8CU) /*!< BKP data register 29 */ +#define BKP_DATA30 REG16((BKP) + 0x90U) /*!< BKP data register 30 */ +#define BKP_DATA31 REG16((BKP) + 0x94U) /*!< BKP data register 31 */ +#define BKP_DATA32 REG16((BKP) + 0x98U) /*!< BKP data register 32 */ +#define BKP_DATA33 REG16((BKP) + 0x9CU) /*!< BKP data register 33 */ +#define BKP_DATA34 REG16((BKP) + 0xA0U) /*!< BKP data register 34 */ +#define BKP_DATA35 REG16((BKP) + 0xA4U) /*!< BKP data register 35 */ +#define BKP_DATA36 REG16((BKP) + 0xA8U) /*!< BKP data register 36 */ +#define BKP_DATA37 REG16((BKP) + 0xACU) /*!< BKP data register 37 */ +#define BKP_DATA38 REG16((BKP) + 0xB0U) /*!< BKP data register 38 */ +#define BKP_DATA39 REG16((BKP) + 0xB4U) /*!< BKP data register 39 */ +#define BKP_DATA40 REG16((BKP) + 0xB8U) /*!< BKP data register 40 */ +#define BKP_DATA41 REG16((BKP) + 0xBCU) /*!< BKP data register 41 */ +#define BKP_OCTL REG16((BKP) + 0x2CU) /*!< RTC signal output control register */ +#define BKP_TPCTL REG16((BKP) + 0x30U) /*!< tamper pin control register */ +#define BKP_TPCS REG16((BKP) + 0x34U) /*!< tamper control and status register */ + +/* bits definitions */ +/* BKP_DATA */ +#define BKP_DATA BITS(0,15) /*!< backup data */ + +/* BKP_OCTL */ +#define BKP_OCTL_RCCV BITS(0,6) /*!< RTC clock calibration value */ +#define BKP_OCTL_COEN BIT(7) /*!< RTC clock calibration output enable */ +#define BKP_OCTL_ASOEN BIT(8) /*!< RTC alarm or second signal output enable */ +#define BKP_OCTL_ROSEL BIT(9) /*!< RTC output selection */ + +/* BKP_TPCTL */ +#define BKP_TPCTL_TPEN BIT(0) /*!< tamper detection enable */ +#define BKP_TPCTL_TPAL BIT(1) /*!< tamper pin active level */ + +/* BKP_TPCS */ +#define BKP_TPCS_TER BIT(0) /*!< tamper event reset */ +#define BKP_TPCS_TIR BIT(1) /*!< tamper interrupt reset */ +#define BKP_TPCS_TPIE BIT(2) /*!< tamper interrupt enable */ +#define BKP_TPCS_TEF BIT(8) /*!< tamper event flag */ +#define BKP_TPCS_TIF BIT(9) /*!< tamper interrupt flag */ + +/* constants definitions */ +/* BKP data register number */ +typedef enum +{ + BKP_DATA_0 = 1, /*!< BKP data register 0 */ + BKP_DATA_1, /*!< BKP data register 1 */ + BKP_DATA_2, /*!< BKP data register 2 */ + BKP_DATA_3, /*!< BKP data register 3 */ + BKP_DATA_4, /*!< BKP data register 4 */ + BKP_DATA_5, /*!< BKP data register 5 */ + BKP_DATA_6, /*!< BKP data register 6 */ + BKP_DATA_7, /*!< BKP data register 7 */ + BKP_DATA_8, /*!< BKP data register 8 */ + BKP_DATA_9, /*!< BKP data register 9 */ + BKP_DATA_10, /*!< BKP data register 10 */ + BKP_DATA_11, /*!< BKP data register 11 */ + BKP_DATA_12, /*!< BKP data register 12 */ + BKP_DATA_13, /*!< BKP data register 13 */ + BKP_DATA_14, /*!< BKP data register 14 */ + BKP_DATA_15, /*!< BKP data register 15 */ + BKP_DATA_16, /*!< BKP data register 16 */ + BKP_DATA_17, /*!< BKP data register 17 */ + BKP_DATA_18, /*!< BKP data register 18 */ + BKP_DATA_19, /*!< BKP data register 19 */ + BKP_DATA_20, /*!< BKP data register 20 */ + BKP_DATA_21, /*!< BKP data register 21 */ + BKP_DATA_22, /*!< BKP data register 22 */ + BKP_DATA_23, /*!< BKP data register 23 */ + BKP_DATA_24, /*!< BKP data register 24 */ + BKP_DATA_25, /*!< BKP data register 25 */ + BKP_DATA_26, /*!< BKP data register 26 */ + BKP_DATA_27, /*!< BKP data register 27 */ + BKP_DATA_28, /*!< BKP data register 28 */ + BKP_DATA_29, /*!< BKP data register 29 */ + BKP_DATA_30, /*!< BKP data register 30 */ + BKP_DATA_31, /*!< BKP data register 31 */ + BKP_DATA_32, /*!< BKP data register 32 */ + BKP_DATA_33, /*!< BKP data register 33 */ + BKP_DATA_34, /*!< BKP data register 34 */ + BKP_DATA_35, /*!< BKP data register 35 */ + BKP_DATA_36, /*!< BKP data register 36 */ + BKP_DATA_37, /*!< BKP data register 37 */ + BKP_DATA_38, /*!< BKP data register 38 */ + BKP_DATA_39, /*!< BKP data register 39 */ + BKP_DATA_40, /*!< BKP data register 40 */ + BKP_DATA_41, /*!< BKP data register 41 */ +}bkp_data_register_enum; + +/* BKP register */ +#define BKP_DATA0_9(number) REG16((BKP) + 0x04U + (number) * 0x04U) +#define BKP_DATA10_41(number) REG16((BKP) + 0x40U + ((number)-10U) * 0x04U) + +/* get data of BKP data register */ +#define BKP_DATA_GET(regval) GET_BITS((uint32_t)(regval), 0, 15) + +/* RTC clock calibration value */ +#define OCTL_RCCV(regval) (BITS(0,6) & ((uint32_t)(regval) << 0)) + +/* RTC output selection */ +#define RTC_OUTPUT_ALARM_PULSE ((uint16_t)0x0000U) /*!< RTC alarm pulse is selected as the RTC output */ +#define RTC_OUTPUT_SECOND_PULSE ((uint16_t)0x0200U) /*!< RTC second pulse is selected as the RTC output */ + +/* tamper pin active level */ +#define TAMPER_PIN_ACTIVE_HIGH ((uint16_t)0x0000U) /*!< the tamper pin is active high */ +#define TAMPER_PIN_ACTIVE_LOW ((uint16_t)0x0002U) /*!< the tamper pin is active low */ + +/* tamper flag */ +#define BKP_FLAG_TAMPER BKP_TPCS_TEF /*!< tamper event flag */ + +/* tamper interrupt flag */ +#define BKP_INT_FLAG_TAMPER BKP_TPCS_TIF /*!< tamper interrupt flag */ + +/* function declarations */ +/* reset BKP registers */ +void bkp_deinit(void); +/* write BKP data register */ +void bkp_data_write(bkp_data_register_enum register_number, uint16_t data); +/* read BKP data register */ +uint16_t bkp_data_read(bkp_data_register_enum register_number); + +/* RTC related functions */ +/* enable RTC clock calibration output */ +void bkp_rtc_calibration_output_enable(void); +/* disable RTC clock calibration output */ +void bkp_rtc_calibration_output_disable(void); +/* enable RTC alarm or second signal output */ +void bkp_rtc_signal_output_enable(void); +/* disable RTC alarm or second signal output */ +void bkp_rtc_signal_output_disable(void); +/* select RTC output */ +void bkp_rtc_output_select(uint16_t outputsel); +/* set RTC clock calibration value */ +void bkp_rtc_calibration_value_set(uint8_t value); + +/* tamper pin related functions */ +/* enable tamper pin detection */ +void bkp_tamper_detection_enable(void); +/* disable tamper pin detection */ +void bkp_tamper_detection_disable(void); +/* set tamper pin active level */ +void bkp_tamper_active_level_set(uint16_t level); + +/* interrupt & flag functions */ +/* enable tamper interrupt */ +void bkp_interrupt_enable(void); +/* disable tamper interrupt */ +void bkp_interrupt_disable(void); +/* get tamper flag state */ +FlagStatus bkp_flag_get(void); +/* clear tamper flag state */ +void bkp_flag_clear(void); +/* get tamper interrupt flag state */ +FlagStatus bkp_interrupt_flag_get(void); +/* clear tamper interrupt flag state */ +void bkp_interrupt_flag_clear(void); + +#endif /* GD32VF103_BKP_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_can.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_can.h new file mode 100644 index 0000000000..1700b532b0 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_can.h @@ -0,0 +1,753 @@ +/*! + \file gd32vf103_can.h + \brief definitions for the CAN + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2019-11-27, V1.0.1, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 + \version 2020-12-14, V1.1.1, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_CAN_H +#define GD32VF103_CAN_H + +#include "gd32vf103.h" + +/* CAN definitions */ +#define CAN0 CAN_BASE /*!< CAN0 base address */ +#define CAN1 (CAN0 + 0x00000400U) /*!< CAN1 base address */ + +/* registers definitions */ +#define CAN_CTL(canx) REG32((canx) + 0x00U) /*!< CAN control register */ +#define CAN_STAT(canx) REG32((canx) + 0x04U) /*!< CAN status register */ +#define CAN_TSTAT(canx) REG32((canx) + 0x08U) /*!< CAN transmit status register*/ +#define CAN_RFIFO0(canx) REG32((canx) + 0x0CU) /*!< CAN receive FIFO0 register */ +#define CAN_RFIFO1(canx) REG32((canx) + 0x10U) /*!< CAN receive FIFO1 register */ +#define CAN_INTEN(canx) REG32((canx) + 0x14U) /*!< CAN interrupt enable register */ +#define CAN_ERR(canx) REG32((canx) + 0x18U) /*!< CAN error register */ +#define CAN_BT(canx) REG32((canx) + 0x1CU) /*!< CAN bit timing register */ +#define CAN_TMI0(canx) REG32((canx) + 0x180U) /*!< CAN transmit mailbox0 identifier register */ +#define CAN_TMP0(canx) REG32((canx) + 0x184U) /*!< CAN transmit mailbox0 property register */ +#define CAN_TMDATA00(canx) REG32((canx) + 0x188U) /*!< CAN transmit mailbox0 data0 register */ +#define CAN_TMDATA10(canx) REG32((canx) + 0x18CU) /*!< CAN transmit mailbox0 data1 register */ +#define CAN_TMI1(canx) REG32((canx) + 0x190U) /*!< CAN transmit mailbox1 identifier register */ +#define CAN_TMP1(canx) REG32((canx) + 0x194U) /*!< CAN transmit mailbox1 property register */ +#define CAN_TMDATA01(canx) REG32((canx) + 0x198U) /*!< CAN transmit mailbox1 data0 register */ +#define CAN_TMDATA11(canx) REG32((canx) + 0x19CU) /*!< CAN transmit mailbox1 data1 register */ +#define CAN_TMI2(canx) REG32((canx) + 0x1A0U) /*!< CAN transmit mailbox2 identifier register */ +#define CAN_TMP2(canx) REG32((canx) + 0x1A4U) /*!< CAN transmit mailbox2 property register */ +#define CAN_TMDATA02(canx) REG32((canx) + 0x1A8U) /*!< CAN transmit mailbox2 data0 register */ +#define CAN_TMDATA12(canx) REG32((canx) + 0x1ACU) /*!< CAN transmit mailbox2 data1 register */ +#define CAN_RFIFOMI0(canx) REG32((canx) + 0x1B0U) /*!< CAN receive FIFO0 mailbox identifier register */ +#define CAN_RFIFOMP0(canx) REG32((canx) + 0x1B4U) /*!< CAN receive FIFO0 mailbox property register */ +#define CAN_RFIFOMDATA00(canx) REG32((canx) + 0x1B8U) /*!< CAN receive FIFO0 mailbox data0 register */ +#define CAN_RFIFOMDATA10(canx) REG32((canx) + 0x1BCU) /*!< CAN receive FIFO0 mailbox data1 register */ +#define CAN_RFIFOMI1(canx) REG32((canx) + 0x1C0U) /*!< CAN receive FIFO1 mailbox identifier register */ +#define CAN_RFIFOMP1(canx) REG32((canx) + 0x1C4U) /*!< CAN receive FIFO1 mailbox property register */ +#define CAN_RFIFOMDATA01(canx) REG32((canx) + 0x1C8U) /*!< CAN receive FIFO1 mailbox data0 register */ +#define CAN_RFIFOMDATA11(canx) REG32((canx) + 0x1CCU) /*!< CAN receive FIFO1 mailbox data1 register */ +#define CAN_FCTL(canx) REG32((canx) + 0x200U) /*!< CAN filter control register */ +#define CAN_FMCFG(canx) REG32((canx) + 0x204U) /*!< CAN filter mode register */ +#define CAN_FSCFG(canx) REG32((canx) + 0x20CU) /*!< CAN filter scale register */ +#define CAN_FAFIFO(canx) REG32((canx) + 0x214U) /*!< CAN filter associated FIFO register */ +#define CAN_FW(canx) REG32((canx) + 0x21CU) /*!< CAN filter working register */ +#define CAN_F0DATA0(canx) REG32((canx) + 0x240U) /*!< CAN filter 0 data 0 register */ +#define CAN_F1DATA0(canx) REG32((canx) + 0x248U) /*!< CAN filter 1 data 0 register */ +#define CAN_F2DATA0(canx) REG32((canx) + 0x250U) /*!< CAN filter 2 data 0 register */ +#define CAN_F3DATA0(canx) REG32((canx) + 0x258U) /*!< CAN filter 3 data 0 register */ +#define CAN_F4DATA0(canx) REG32((canx) + 0x260U) /*!< CAN filter 4 data 0 register */ +#define CAN_F5DATA0(canx) REG32((canx) + 0x268U) /*!< CAN filter 5 data 0 register */ +#define CAN_F6DATA0(canx) REG32((canx) + 0x270U) /*!< CAN filter 6 data 0 register */ +#define CAN_F7DATA0(canx) REG32((canx) + 0x278U) /*!< CAN filter 7 data 0 register */ +#define CAN_F8DATA0(canx) REG32((canx) + 0x280U) /*!< CAN filter 8 data 0 register */ +#define CAN_F9DATA0(canx) REG32((canx) + 0x288U) /*!< CAN filter 9 data 0 register */ +#define CAN_F10DATA0(canx) REG32((canx) + 0x290U) /*!< CAN filter 10 data 0 register */ +#define CAN_F11DATA0(canx) REG32((canx) + 0x298U) /*!< CAN filter 11 data 0 register */ +#define CAN_F12DATA0(canx) REG32((canx) + 0x2A0U) /*!< CAN filter 12 data 0 register */ +#define CAN_F13DATA0(canx) REG32((canx) + 0x2A8U) /*!< CAN filter 13 data 0 register */ +#define CAN_F14DATA0(canx) REG32((canx) + 0x2B0U) /*!< CAN filter 14 data 0 register */ +#define CAN_F15DATA0(canx) REG32((canx) + 0x2B8U) /*!< CAN filter 15 data 0 register */ +#define CAN_F16DATA0(canx) REG32((canx) + 0x2C0U) /*!< CAN filter 16 data 0 register */ +#define CAN_F17DATA0(canx) REG32((canx) + 0x2C8U) /*!< CAN filter 17 data 0 register */ +#define CAN_F18DATA0(canx) REG32((canx) + 0x2D0U) /*!< CAN filter 18 data 0 register */ +#define CAN_F19DATA0(canx) REG32((canx) + 0x2D8U) /*!< CAN filter 19 data 0 register */ +#define CAN_F20DATA0(canx) REG32((canx) + 0x2E0U) /*!< CAN filter 20 data 0 register */ +#define CAN_F21DATA0(canx) REG32((canx) + 0x2E8U) /*!< CAN filter 21 data 0 register */ +#define CAN_F22DATA0(canx) REG32((canx) + 0x2F0U) /*!< CAN filter 22 data 0 register */ +#define CAN_F23DATA0(canx) REG32((canx) + 0x3F8U) /*!< CAN filter 23 data 0 register */ +#define CAN_F24DATA0(canx) REG32((canx) + 0x300U) /*!< CAN filter 24 data 0 register */ +#define CAN_F25DATA0(canx) REG32((canx) + 0x308U) /*!< CAN filter 25 data 0 register */ +#define CAN_F26DATA0(canx) REG32((canx) + 0x310U) /*!< CAN filter 26 data 0 register */ +#define CAN_F27DATA0(canx) REG32((canx) + 0x318U) /*!< CAN filter 27 data 0 register */ +#define CAN_F0DATA1(canx) REG32((canx) + 0x244U) /*!< CAN filter 0 data 1 register */ +#define CAN_F1DATA1(canx) REG32((canx) + 0x24CU) /*!< CAN filter 1 data 1 register */ +#define CAN_F2DATA1(canx) REG32((canx) + 0x254U) /*!< CAN filter 2 data 1 register */ +#define CAN_F3DATA1(canx) REG32((canx) + 0x25CU) /*!< CAN filter 3 data 1 register */ +#define CAN_F4DATA1(canx) REG32((canx) + 0x264U) /*!< CAN filter 4 data 1 register */ +#define CAN_F5DATA1(canx) REG32((canx) + 0x26CU) /*!< CAN filter 5 data 1 register */ +#define CAN_F6DATA1(canx) REG32((canx) + 0x274U) /*!< CAN filter 6 data 1 register */ +#define CAN_F7DATA1(canx) REG32((canx) + 0x27CU) /*!< CAN filter 7 data 1 register */ +#define CAN_F8DATA1(canx) REG32((canx) + 0x284U) /*!< CAN filter 8 data 1 register */ +#define CAN_F9DATA1(canx) REG32((canx) + 0x28CU) /*!< CAN filter 9 data 1 register */ +#define CAN_F10DATA1(canx) REG32((canx) + 0x294U) /*!< CAN filter 10 data 1 register */ +#define CAN_F11DATA1(canx) REG32((canx) + 0x29CU) /*!< CAN filter 11 data 1 register */ +#define CAN_F12DATA1(canx) REG32((canx) + 0x2A4U) /*!< CAN filter 12 data 1 register */ +#define CAN_F13DATA1(canx) REG32((canx) + 0x2ACU) /*!< CAN filter 13 data 1 register */ +#define CAN_F14DATA1(canx) REG32((canx) + 0x2B4U) /*!< CAN filter 14 data 1 register */ +#define CAN_F15DATA1(canx) REG32((canx) + 0x2BCU) /*!< CAN filter 15 data 1 register */ +#define CAN_F16DATA1(canx) REG32((canx) + 0x2C4U) /*!< CAN filter 16 data 1 register */ +#define CAN_F17DATA1(canx) REG32((canx) + 0x24CU) /*!< CAN filter 17 data 1 register */ +#define CAN_F18DATA1(canx) REG32((canx) + 0x2D4U) /*!< CAN filter 18 data 1 register */ +#define CAN_F19DATA1(canx) REG32((canx) + 0x2DCU) /*!< CAN filter 19 data 1 register */ +#define CAN_F20DATA1(canx) REG32((canx) + 0x2E4U) /*!< CAN filter 20 data 1 register */ +#define CAN_F21DATA1(canx) REG32((canx) + 0x2ECU) /*!< CAN filter 21 data 1 register */ +#define CAN_F22DATA1(canx) REG32((canx) + 0x2F4U) /*!< CAN filter 22 data 1 register */ +#define CAN_F23DATA1(canx) REG32((canx) + 0x2FCU) /*!< CAN filter 23 data 1 register */ +#define CAN_F24DATA1(canx) REG32((canx) + 0x304U) /*!< CAN filter 24 data 1 register */ +#define CAN_F25DATA1(canx) REG32((canx) + 0x30CU) /*!< CAN filter 25 data 1 register */ +#define CAN_F26DATA1(canx) REG32((canx) + 0x314U) /*!< CAN filter 26 data 1 register */ +#define CAN_F27DATA1(canx) REG32((canx) + 0x31CU) /*!< CAN filter 27 data 1 register */ + +/* CAN transmit mailbox bank */ +#define CAN_TMI(canx, bank) REG32((canx) + 0x180U + ((bank) * 0x10U)) /*!< CAN transmit mailbox identifier register */ +#define CAN_TMP(canx, bank) REG32((canx) + 0x184U + ((bank) * 0x10U)) /*!< CAN transmit mailbox property register */ +#define CAN_TMDATA0(canx, bank) REG32((canx) + 0x188U + ((bank) * 0x10U)) /*!< CAN transmit mailbox data0 register */ +#define CAN_TMDATA1(canx, bank) REG32((canx) + 0x18CU + ((bank) * 0x10U)) /*!< CAN transmit mailbox data1 register */ + +/* CAN filter bank */ +#define CAN_FDATA0(canx, bank) REG32((canx) + 0x240U + ((bank) * 0x8U) + 0x0U) /*!< CAN filter data 0 register */ +#define CAN_FDATA1(canx, bank) REG32((canx) + 0x240U + ((bank) * 0x8U) + 0x4U) /*!< CAN filter data 1 register */ + +/* CAN receive fifo mailbox bank */ +#define CAN_RFIFOMI(canx, bank) REG32((canx) + 0x1B0U + ((bank) * 0x10U)) /*!< CAN receive FIFO mailbox identifier register */ +#define CAN_RFIFOMP(canx, bank) REG32((canx) + 0x1B4U + ((bank) * 0x10U)) /*!< CAN receive FIFO mailbox property register */ +#define CAN_RFIFOMDATA0(canx, bank) REG32((canx) + 0x1B8U + ((bank) * 0x10U)) /*!< CAN receive FIFO mailbox data0 register */ +#define CAN_RFIFOMDATA1(canx, bank) REG32((canx) + 0x1BCU + ((bank) * 0x10U)) /*!< CAN receive FIFO mailbox data1 register */ + +/* bits definitions */ +/* CAN_CTL */ +#define CAN_CTL_IWMOD BIT(0) /*!< initial working mode */ +#define CAN_CTL_SLPWMOD BIT(1) /*!< sleep working mode */ +#define CAN_CTL_TFO BIT(2) /*!< transmit FIFO order */ +#define CAN_CTL_RFOD BIT(3) /*!< receive FIFO overwrite disable */ +#define CAN_CTL_ARD BIT(4) /*!< automatic retransmission disable */ +#define CAN_CTL_AWU BIT(5) /*!< automatic wakeup */ +#define CAN_CTL_ABOR BIT(6) /*!< automatic bus-off recovery */ +#define CAN_CTL_TTC BIT(7) /*!< time triggered communication */ +#define CAN_CTL_SWRST BIT(15) /*!< CAN software reset */ +#define CAN_CTL_DFZ BIT(16) /*!< CAN debug freeze */ + +/* CAN_STAT */ +#define CAN_STAT_IWS BIT(0) /*!< initial working state */ +#define CAN_STAT_SLPWS BIT(1) /*!< sleep working state */ +#define CAN_STAT_ERRIF BIT(2) /*!< error interrupt flag*/ +#define CAN_STAT_WUIF BIT(3) /*!< status change interrupt flag of wakeup from sleep working mode */ +#define CAN_STAT_SLPIF BIT(4) /*!< status change interrupt flag of sleep working mode entering */ +#define CAN_STAT_TS BIT(8) /*!< transmitting state */ +#define CAN_STAT_RS BIT(9) /*!< receiving state */ +#define CAN_STAT_LASTRX BIT(10) /*!< last sample value of rx pin */ +#define CAN_STAT_RXL BIT(11) /*!< CAN rx signal */ + +/* CAN_TSTAT */ +#define CAN_TSTAT_MTF0 BIT(0) /*!< mailbox0 transmit finished */ +#define CAN_TSTAT_MTFNERR0 BIT(1) /*!< mailbox0 transmit finished and no error */ +#define CAN_TSTAT_MAL0 BIT(2) /*!< mailbox0 arbitration lost */ +#define CAN_TSTAT_MTE0 BIT(3) /*!< mailbox0 transmit error */ +#define CAN_TSTAT_MST0 BIT(7) /*!< mailbox0 stop transmitting */ +#define CAN_TSTAT_MTF1 BIT(8) /*!< mailbox1 transmit finished */ +#define CAN_TSTAT_MTFNERR1 BIT(9) /*!< mailbox1 transmit finished and no error */ +#define CAN_TSTAT_MAL1 BIT(10) /*!< mailbox1 arbitration lost */ +#define CAN_TSTAT_MTE1 BIT(11) /*!< mailbox1 transmit error */ +#define CAN_TSTAT_MST1 BIT(15) /*!< mailbox1 stop transmitting */ +#define CAN_TSTAT_MTF2 BIT(16) /*!< mailbox2 transmit finished */ +#define CAN_TSTAT_MTFNERR2 BIT(17) /*!< mailbox2 transmit finished and no error */ +#define CAN_TSTAT_MAL2 BIT(18) /*!< mailbox2 arbitration lost */ +#define CAN_TSTAT_MTE2 BIT(19) /*!< mailbox2 transmit error */ +#define CAN_TSTAT_MST2 BIT(23) /*!< mailbox2 stop transmitting */ +#define CAN_TSTAT_NUM BITS(24,25) /*!< mailbox number */ +#define CAN_TSTAT_TME0 BIT(26) /*!< transmit mailbox0 empty */ +#define CAN_TSTAT_TME1 BIT(27) /*!< transmit mailbox1 empty */ +#define CAN_TSTAT_TME2 BIT(28) /*!< transmit mailbox2 empty */ +#define CAN_TSTAT_TMLS0 BIT(29) /*!< last sending priority flag for mailbox0 */ +#define CAN_TSTAT_TMLS1 BIT(30) /*!< last sending priority flag for mailbox1 */ +#define CAN_TSTAT_TMLS2 BIT(31) /*!< last sending priority flag for mailbox2 */ + +/* CAN_RFIFO0 */ +#define CAN_RFIFO0_RFL0 BITS(0,1) /*!< receive FIFO0 length */ +#define CAN_RFIFO0_RFF0 BIT(3) /*!< receive FIFO0 full */ +#define CAN_RFIFO0_RFO0 BIT(4) /*!< receive FIFO0 overfull */ +#define CAN_RFIFO0_RFD0 BIT(5) /*!< receive FIFO0 dequeue */ + +/* CAN_RFIFO1 */ +#define CAN_RFIFO1_RFL1 BITS(0,1) /*!< receive FIFO1 length */ +#define CAN_RFIFO1_RFF1 BIT(3) /*!< receive FIFO1 full */ +#define CAN_RFIFO1_RFO1 BIT(4) /*!< receive FIFO1 overfull */ +#define CAN_RFIFO1_RFD1 BIT(5) /*!< receive FIFO1 dequeue */ + +/* CAN_INTEN */ +#define CAN_INTEN_TMEIE BIT(0) /*!< transmit mailbox empty interrupt enable */ +#define CAN_INTEN_RFNEIE0 BIT(1) /*!< receive FIFO0 not empty interrupt enable */ +#define CAN_INTEN_RFFIE0 BIT(2) /*!< receive FIFO0 full interrupt enable */ +#define CAN_INTEN_RFOIE0 BIT(3) /*!< receive FIFO0 overfull interrupt enable */ +#define CAN_INTEN_RFNEIE1 BIT(4) /*!< receive FIFO1 not empty interrupt enable */ +#define CAN_INTEN_RFFIE1 BIT(5) /*!< receive FIFO1 full interrupt enable */ +#define CAN_INTEN_RFOIE1 BIT(6) /*!< receive FIFO1 overfull interrupt enable */ +#define CAN_INTEN_WERRIE BIT(8) /*!< warning error interrupt enable */ +#define CAN_INTEN_PERRIE BIT(9) /*!< passive error interrupt enable */ +#define CAN_INTEN_BOIE BIT(10) /*!< bus-off interrupt enable */ +#define CAN_INTEN_ERRNIE BIT(11) /*!< error number interrupt enable */ +#define CAN_INTEN_ERRIE BIT(15) /*!< error interrupt enable */ +#define CAN_INTEN_WIE BIT(16) /*!< wakeup interrupt enable */ +#define CAN_INTEN_SLPWIE BIT(17) /*!< sleep working interrupt enable */ + +/* CAN_ERR */ +#define CAN_ERR_WERR BIT(0) /*!< warning error */ +#define CAN_ERR_PERR BIT(1) /*!< passive error */ +#define CAN_ERR_BOERR BIT(2) /*!< bus-off error */ +#define CAN_ERR_ERRN BITS(4,6) /*!< error number */ +#define CAN_ERR_TECNT BITS(16,23) /*!< transmit error count */ +#define CAN_ERR_RECNT BITS(24,31) /*!< receive error count */ + +/* CAN_BT */ +#define CAN_BT_BAUDPSC BITS(0,9) /*!< baudrate prescaler */ +#define CAN_BT_BS1 BITS(16,19) /*!< bit segment 1 */ +#define CAN_BT_BS2 BITS(20,22) /*!< bit segment 2 */ +#define CAN_BT_SJW BITS(24,25) /*!< resynchronization jump width */ +#define CAN_BT_LCMOD BIT(30) /*!< loopback communication mode */ +#define CAN_BT_SCMOD BIT(31) /*!< silent communication mode */ + +/* CAN_TMIx */ +#define CAN_TMI_TEN BIT(0) /*!< transmit enable */ +#define CAN_TMI_FT BIT(1) /*!< frame type */ +#define CAN_TMI_FF BIT(2) /*!< frame format */ +#define CAN_TMI_EFID BITS(3,31) /*!< the frame identifier */ +#define CAN_TMI_SFID BITS(21,31) /*!< the frame identifier */ + +/* CAN_TMPx */ +#define CAN_TMP_DLENC BITS(0,3) /*!< data length code */ +#define CAN_TMP_TSEN BIT(8) /*!< time stamp enable */ +#define CAN_TMP_TS BITS(16,31) /*!< time stamp */ + +/* CAN_TMDATA0x */ +#define CAN_TMDATA0_DB0 BITS(0,7) /*!< transmit data byte 0 */ +#define CAN_TMDATA0_DB1 BITS(8,15) /*!< transmit data byte 1 */ +#define CAN_TMDATA0_DB2 BITS(16,23) /*!< transmit data byte 2 */ +#define CAN_TMDATA0_DB3 BITS(24,31) /*!< transmit data byte 3 */ + +/* CAN_TMDATA1x */ +#define CAN_TMDATA1_DB4 BITS(0,7) /*!< transmit data byte 4 */ +#define CAN_TMDATA1_DB5 BITS(8,15) /*!< transmit data byte 5 */ +#define CAN_TMDATA1_DB6 BITS(16,23) /*!< transmit data byte 6 */ +#define CAN_TMDATA1_DB7 BITS(24,31) /*!< transmit data byte 7 */ + +/* CAN_RFIFOMIx */ +#define CAN_RFIFOMI_FT BIT(1) /*!< frame type */ +#define CAN_RFIFOMI_FF BIT(2) /*!< frame format */ +#define CAN_RFIFOMI_EFID BITS(3,31) /*!< the frame identifier */ +#define CAN_RFIFOMI_SFID BITS(21,31) /*!< the frame identifier */ + +/* CAN_RFIFOMPx */ +#define CAN_RFIFOMP_DLENC BITS(0,3) /*!< receive data length code */ +#define CAN_RFIFOMP_FI BITS(8,15) /*!< filter index */ +#define CAN_RFIFOMP_TS BITS(16,31) /*!< time stamp */ + +/* CAN_RFIFOMDATA0x */ +#define CAN_RFIFOMDATA0_DB0 BITS(0,7) /*!< receive data byte 0 */ +#define CAN_RFIFOMDATA0_DB1 BITS(8,15) /*!< receive data byte 1 */ +#define CAN_RFIFOMDATA0_DB2 BITS(16,23) /*!< receive data byte 2 */ +#define CAN_RFIFOMDATA0_DB3 BITS(24,31) /*!< receive data byte 3 */ + +/* CAN_RFIFOMDATA1x */ +#define CAN_RFIFOMDATA1_DB4 BITS(0,7) /*!< receive data byte 4 */ +#define CAN_RFIFOMDATA1_DB5 BITS(8,15) /*!< receive data byte 5 */ +#define CAN_RFIFOMDATA1_DB6 BITS(16,23) /*!< receive data byte 6 */ +#define CAN_RFIFOMDATA1_DB7 BITS(24,31) /*!< receive data byte 7 */ + +/* CAN_FCTL */ +#define CAN_FCTL_FLD BIT(0) /*!< filter lock disable */ +#define CAN_FCTL_HBC1F BITS(8,13) /*!< header bank of CAN1 filter */ + +/* CAN_FMCFG */ +#define CAN_FMCFG_FMOD(regval) BIT(regval) /*!< filter mode, list or mask*/ + +/* CAN_FSCFG */ +#define CAN_FSCFG_FS(regval) BIT(regval) /*!< filter scale, 32 bits or 16 bits*/ + +/* CAN_FAFIFO */ +#define CAN_FAFIFOR_FAF(regval) BIT(regval) /*!< filter associated with FIFO */ + +/* CAN_FW */ +#define CAN_FW_FW(regval) BIT(regval) /*!< filter working */ + +/* CAN_FxDATAy */ +#define CAN_FDATA_FD(regval) BIT(regval) /*!< filter data */ + +/* consts definitions */ +/* define the CAN bit position and its register index offset */ +#define CAN_REGIDX_BIT(regidx, bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos)) +#define CAN_REG_VAL(canx, offset) (REG32((canx) + ((uint32_t)(offset) >> 6))) +#define CAN_BIT_POS(val) ((uint32_t)(val) & 0x1FU) + +#define CAN_REGIDX_BITS(regidx, bitpos0, bitpos1) (((uint32_t)(regidx) << 12) | ((uint32_t)(bitpos0) << 6) | (uint32_t)(bitpos1)) +#define CAN_REG_VALS(canx, offset) (REG32((canx) + ((uint32_t)(offset) >> 12))) +#define CAN_BIT_POS0(val) (((uint32_t)(val) >> 6) & 0x1FU) +#define CAN_BIT_POS1(val) ((uint32_t)(val) & 0x1FU) + +/* register offset */ +#define STAT_REG_OFFSET ((uint8_t)0x04U) /*!< STAT register offset */ +#define TSTAT_REG_OFFSET ((uint8_t)0x08U) /*!< TSTAT register offset */ +#define RFIFO0_REG_OFFSET ((uint8_t)0x0CU) /*!< RFIFO0 register offset */ +#define RFIFO1_REG_OFFSET ((uint8_t)0x10U) /*!< RFIFO1 register offset */ +#define ERR_REG_OFFSET ((uint8_t)0x18U) /*!< ERR register offset */ + +/* CAN flags */ +typedef enum +{ + /* flags in STAT register */ + CAN_FLAG_RXL = CAN_REGIDX_BIT(STAT_REG_OFFSET, 11U), /*!< RX level */ + CAN_FLAG_LASTRX = CAN_REGIDX_BIT(STAT_REG_OFFSET, 10U), /*!< last sample value of RX pin */ + CAN_FLAG_RS = CAN_REGIDX_BIT(STAT_REG_OFFSET, 9U), /*!< receiving state */ + CAN_FLAG_TS = CAN_REGIDX_BIT(STAT_REG_OFFSET, 8U), /*!< transmitting state */ + CAN_FLAG_SLPIF = CAN_REGIDX_BIT(STAT_REG_OFFSET, 4U), /*!< status change flag of entering sleep working mode */ + CAN_FLAG_WUIF = CAN_REGIDX_BIT(STAT_REG_OFFSET, 3U), /*!< status change flag of wakeup from sleep working mode */ + CAN_FLAG_ERRIF = CAN_REGIDX_BIT(STAT_REG_OFFSET, 2U), /*!< error flag */ + CAN_FLAG_SLPWS = CAN_REGIDX_BIT(STAT_REG_OFFSET, 1U), /*!< sleep working state */ + CAN_FLAG_IWS = CAN_REGIDX_BIT(STAT_REG_OFFSET, 0U), /*!< initial working state */ + /* flags in TSTAT register */ + CAN_FLAG_TMLS2 = CAN_REGIDX_BIT(TSTAT_REG_OFFSET, 31U), /*!< transmit mailbox 2 last sending in Tx FIFO */ + CAN_FLAG_TMLS1 = CAN_REGIDX_BIT(TSTAT_REG_OFFSET, 30U), /*!< transmit mailbox 1 last sending in Tx FIFO */ + CAN_FLAG_TMLS0 = CAN_REGIDX_BIT(TSTAT_REG_OFFSET, 29U), /*!< transmit mailbox 0 last sending in Tx FIFO */ + CAN_FLAG_TME2 = CAN_REGIDX_BIT(TSTAT_REG_OFFSET, 28U), /*!< transmit mailbox 2 empty */ + CAN_FLAG_TME1 = CAN_REGIDX_BIT(TSTAT_REG_OFFSET, 27U), /*!< transmit mailbox 1 empty */ + CAN_FLAG_TME0 = CAN_REGIDX_BIT(TSTAT_REG_OFFSET, 26U), /*!< transmit mailbox 0 empty */ + CAN_FLAG_MTE2 = CAN_REGIDX_BIT(TSTAT_REG_OFFSET, 19U), /*!< mailbox 2 transmit error */ + CAN_FLAG_MTE1 = CAN_REGIDX_BIT(TSTAT_REG_OFFSET, 11U), /*!< mailbox 1 transmit error */ + CAN_FLAG_MTE0 = CAN_REGIDX_BIT(TSTAT_REG_OFFSET, 3U), /*!< mailbox 0 transmit error */ + CAN_FLAG_MAL2 = CAN_REGIDX_BIT(TSTAT_REG_OFFSET, 18U), /*!< mailbox 2 arbitration lost */ + CAN_FLAG_MAL1 = CAN_REGIDX_BIT(TSTAT_REG_OFFSET, 10U), /*!< mailbox 1 arbitration lost */ + CAN_FLAG_MAL0 = CAN_REGIDX_BIT(TSTAT_REG_OFFSET, 2U), /*!< mailbox 0 arbitration lost */ + CAN_FLAG_MTFNERR2 = CAN_REGIDX_BIT(TSTAT_REG_OFFSET, 17U), /*!< mailbox 2 transmit finished with no error */ + CAN_FLAG_MTFNERR1 = CAN_REGIDX_BIT(TSTAT_REG_OFFSET, 9U), /*!< mailbox 1 transmit finished with no error */ + CAN_FLAG_MTFNERR0 = CAN_REGIDX_BIT(TSTAT_REG_OFFSET, 1U), /*!< mailbox 0 transmit finished with no error */ + CAN_FLAG_MTF2 = CAN_REGIDX_BIT(TSTAT_REG_OFFSET, 16U), /*!< mailbox 2 transmit finished */ + CAN_FLAG_MTF1 = CAN_REGIDX_BIT(TSTAT_REG_OFFSET, 8U), /*!< mailbox 1 transmit finished */ + CAN_FLAG_MTF0 = CAN_REGIDX_BIT(TSTAT_REG_OFFSET, 0U), /*!< mailbox 0 transmit finished */ + /* flags in RFIFO0 register */ + CAN_FLAG_RFO0 = CAN_REGIDX_BIT(RFIFO0_REG_OFFSET, 4U), /*!< receive FIFO0 overfull */ + CAN_FLAG_RFF0 = CAN_REGIDX_BIT(RFIFO0_REG_OFFSET, 3U), /*!< receive FIFO0 full */ + /* flags in RFIFO1 register */ + CAN_FLAG_RFO1 = CAN_REGIDX_BIT(RFIFO1_REG_OFFSET, 4U), /*!< receive FIFO1 overfull */ + CAN_FLAG_RFF1 = CAN_REGIDX_BIT(RFIFO1_REG_OFFSET, 3U), /*!< receive FIFO1 full */ + /* flags in ERR register */ + CAN_FLAG_BOERR = CAN_REGIDX_BIT(ERR_REG_OFFSET, 2U), /*!< bus-off error */ + CAN_FLAG_PERR = CAN_REGIDX_BIT(ERR_REG_OFFSET, 1U), /*!< passive error */ + CAN_FLAG_WERR = CAN_REGIDX_BIT(ERR_REG_OFFSET, 0U), /*!< warning error */ +}can_flag_enum; + +/* CAN interrupt flags */ +typedef enum +{ + /* interrupt flags in STAT register */ + CAN_INT_FLAG_SLPIF = CAN_REGIDX_BITS(STAT_REG_OFFSET, 4U, 17U), /*!< status change interrupt flag of sleep working mode entering */ + CAN_INT_FLAG_WUIF = CAN_REGIDX_BITS(STAT_REG_OFFSET, 3U, 16), /*!< status change interrupt flag of wakeup from sleep working mode */ + CAN_INT_FLAG_ERRIF = CAN_REGIDX_BITS(STAT_REG_OFFSET, 2U, 15), /*!< error interrupt flag */ + /* interrupt flags in TSTAT register */ + CAN_INT_FLAG_MTF2 = CAN_REGIDX_BITS(TSTAT_REG_OFFSET, 16U, 0U), /*!< mailbox 2 transmit finished interrupt flag */ + CAN_INT_FLAG_MTF1 = CAN_REGIDX_BITS(TSTAT_REG_OFFSET, 8U, 0U), /*!< mailbox 1 transmit finished interrupt flag */ + CAN_INT_FLAG_MTF0 = CAN_REGIDX_BITS(TSTAT_REG_OFFSET, 0U, 0U), /*!< mailbox 0 transmit finished interrupt flag */ + /* interrupt flags in RFIFO0 register */ + CAN_INT_FLAG_RFO0 = CAN_REGIDX_BITS(RFIFO0_REG_OFFSET, 4U, 3U), /*!< receive FIFO0 overfull interrupt flag */ + CAN_INT_FLAG_RFF0 = CAN_REGIDX_BITS(RFIFO0_REG_OFFSET, 3U, 2U), /*!< receive FIFO0 full interrupt flag */ + CAN_INT_FLAG_RFL0 = CAN_REGIDX_BITS(RFIFO0_REG_OFFSET, 2U, 1U), /*!< receive FIFO0 not empty interrupt flag */ + /* interrupt flags in RFIFO0 register */ + CAN_INT_FLAG_RFO1 = CAN_REGIDX_BITS(RFIFO1_REG_OFFSET, 4U, 6U), /*!< receive FIFO1 overfull interrupt flag */ + CAN_INT_FLAG_RFF1 = CAN_REGIDX_BITS(RFIFO1_REG_OFFSET, 3U, 5U), /*!< receive FIFO1 full interrupt flag */ + CAN_INT_FLAG_RFL1 = CAN_REGIDX_BITS(RFIFO1_REG_OFFSET, 2U, 4U), /*!< receive FIFO1 not empty interrupt flag */ + /* interrupt flags in ERR register */ + CAN_INT_FLAG_ERRN = CAN_REGIDX_BITS(ERR_REG_OFFSET, 3U, 11U), /*!< error number interrupt flag */ + CAN_INT_FLAG_BOERR = CAN_REGIDX_BITS(ERR_REG_OFFSET, 2U, 10U), /*!< bus-off error interrupt flag */ + CAN_INT_FLAG_PERR = CAN_REGIDX_BITS(ERR_REG_OFFSET, 1U, 9U), /*!< passive error interrupt flag */ + CAN_INT_FLAG_WERR = CAN_REGIDX_BITS(ERR_REG_OFFSET, 0U, 8U), /*!< warning error interrupt flag */ +}can_interrupt_flag_enum; + +/* CAN initiliaze parameters struct */ +typedef struct +{ + uint8_t working_mode; /*!< CAN working mode */ + uint8_t resync_jump_width; /*!< CAN resynchronization jump width */ + uint8_t time_segment_1; /*!< time segment 1 */ + uint8_t time_segment_2; /*!< time segment 2 */ + ControlStatus time_triggered; /*!< time triggered communication mode */ + ControlStatus auto_bus_off_recovery; /*!< automatic bus-off recovery */ + ControlStatus auto_wake_up; /*!< automatic wake-up mode */ + ControlStatus no_auto_retrans; /*!< automatic retransmission mode disable */ + ControlStatus rec_fifo_overwrite; /*!< receive FIFO overwrite mode */ + ControlStatus trans_fifo_order; /*!< transmit FIFO order */ + uint16_t prescaler; /*!< baudrate prescaler */ +}can_parameter_struct; + +/* CAN transmit message struct */ +typedef struct +{ + uint32_t tx_sfid; /*!< standard format frame identifier */ + uint32_t tx_efid; /*!< extended format frame identifier */ + uint8_t tx_ff; /*!< format of frame, standard or extended format */ + uint8_t tx_ft; /*!< type of frame, data or remote */ + uint8_t tx_dlen; /*!< data length */ + uint8_t tx_data[8]; /*!< transmit data */ +}can_trasnmit_message_struct; + +/* CAN receive message struct */ +typedef struct +{ + uint32_t rx_sfid; /*!< standard format frame identifier */ + uint32_t rx_efid; /*!< extended format frame identifier */ + uint8_t rx_ff; /*!< format of frame, standard or extended format */ + uint8_t rx_ft; /*!< type of frame, data or remote */ + uint8_t rx_dlen; /*!< data length */ + uint8_t rx_data[8]; /*!< receive data */ + uint8_t rx_fi; /*!< filtering index */ +} can_receive_message_struct; + +/* CAN filter parameters struct */ +typedef struct +{ + uint16_t filter_list_high; /*!< filter list number high bits*/ + uint16_t filter_list_low; /*!< filter list number low bits */ + uint16_t filter_mask_high; /*!< filter mask number high bits */ + uint16_t filter_mask_low; /*!< filter mask number low bits */ + uint16_t filter_fifo_number; /*!< receive FIFO associated with the filter */ + uint16_t filter_number; /*!< filter number */ + uint16_t filter_mode; /*!< filter mode, list or mask */ + uint16_t filter_bits; /*!< filter scale */ + ControlStatus filter_enable; /*!< filter work or not */ +}can_filter_parameter_struct; + +/* CAN errors */ +typedef enum +{ + CAN_ERROR_NONE = 0, /*!< no error */ + CAN_ERROR_FILL, /*!< fill error */ + CAN_ERROR_FORMATE, /*!< format error */ + CAN_ERROR_ACK, /*!< ACK error */ + CAN_ERROR_BITRECESSIVE, /*!< bit recessive error */ + CAN_ERROR_BITDOMINANTER, /*!< bit dominant error */ + CAN_ERROR_CRC, /*!< CRC error */ + CAN_ERROR_SOFTWARECFG, /*!< software configure */ +}can_error_enum; + +/* transmit states */ +typedef enum +{ + CAN_TRANSMIT_FAILED = 0U, /*!< CAN transmitted failure */ + CAN_TRANSMIT_OK = 1U, /*!< CAN transmitted success */ + CAN_TRANSMIT_PENDING = 2U, /*!< CAN transmitted pending */ + CAN_TRANSMIT_NOMAILBOX = 4U, /*!< no empty mailbox to be used for CAN */ +}can_transmit_state_enum; + +typedef enum +{ + CAN_INIT_STRUCT = 0, /* CAN initiliaze parameters struct */ + CAN_FILTER_STRUCT, /* CAN filter parameters struct */ + CAN_TX_MESSAGE_STRUCT, /* CAN transmit message struct */ + CAN_RX_MESSAGE_STRUCT, /* CAN receive message struct */ +}can_struct_type_enum; + +/* CAN baudrate prescaler*/ +#define BT_BAUDPSC(regval) (BITS(0,9) & ((uint32_t)(regval) << 0)) + +/* CAN bit segment 1*/ +#define BT_BS1(regval) (BITS(16,19) & ((uint32_t)(regval) << 16)) + +/* CAN bit segment 2*/ +#define BT_BS2(regval) (BITS(20,22) & ((uint32_t)(regval) << 20)) + +/* CAN resynchronization jump width*/ +#define BT_SJW(regval) (BITS(24,25) & ((uint32_t)(regval) << 24)) + +/* CAN communication mode*/ +#define BT_MODE(regval) (BITS(30,31) & ((uint32_t)(regval) << 30)) + +/* CAN FDATA high 16 bits */ +#define FDATA_MASK_HIGH(regval) (BITS(16,31) & ((uint32_t)(regval) << 16)) + +/* CAN FDATA low 16 bits */ +#define FDATA_MASK_LOW(regval) (BITS(0,15) & ((uint32_t)(regval) << 0)) + +/* CAN1 filter start bank_number*/ +#define FCTL_HBC1F(regval) (BITS(8,13) & ((uint32_t)(regval) << 8)) + +/* CAN transmit mailbox extended identifier*/ +#define TMI_EFID(regval) (BITS(3,31) & ((uint32_t)(regval) << 3)) + +/* CAN transmit mailbox standard identifier*/ +#define TMI_SFID(regval) (BITS(21,31) & ((uint32_t)(regval) << 21)) + +/* transmit data byte 0 */ +#define TMDATA0_DB0(regval) (BITS(0,7) & ((uint32_t)(regval) << 0)) + +/* transmit data byte 1 */ +#define TMDATA0_DB1(regval) (BITS(8,15) & ((uint32_t)(regval) << 8)) + +/* transmit data byte 2 */ +#define TMDATA0_DB2(regval) (BITS(16,23) & ((uint32_t)(regval) << 16)) + +/* transmit data byte 3 */ +#define TMDATA0_DB3(regval) (BITS(24,31) & ((uint32_t)(regval) << 24)) + +/* transmit data byte 4 */ +#define TMDATA1_DB4(regval) (BITS(0,7) & ((uint32_t)(regval) << 0)) + +/* transmit data byte 5 */ +#define TMDATA1_DB5(regval) (BITS(8,15) & ((uint32_t)(regval) << 8)) + +/* transmit data byte 6 */ +#define TMDATA1_DB6(regval) (BITS(16,23) & ((uint32_t)(regval) << 16)) + +/* transmit data byte 7 */ +#define TMDATA1_DB7(regval) (BITS(24,31) & ((uint32_t)(regval) << 24)) + +/* receive mailbox extended identifier*/ +#define GET_RFIFOMI_EFID(regval) GET_BITS((uint32_t)(regval), 3U, 31U) + +/* receive mailbox standrad identifier*/ +#define GET_RFIFOMI_SFID(regval) GET_BITS((uint32_t)(regval), 21U, 31U) + +/* receive data length */ +#define GET_RFIFOMP_DLENC(regval) GET_BITS((uint32_t)(regval), 0U, 3U) + +/* the index of the filter by which the frame is passed */ +#define GET_RFIFOMP_FI(regval) GET_BITS((uint32_t)(regval), 8U, 15U) + +/* receive data byte 0 */ +#define GET_RFIFOMDATA0_DB0(regval) GET_BITS((uint32_t)(regval), 0U, 7U) + +/* receive data byte 1 */ +#define GET_RFIFOMDATA0_DB1(regval) GET_BITS((uint32_t)(regval), 8U, 15U) + +/* receive data byte 2 */ +#define GET_RFIFOMDATA0_DB2(regval) GET_BITS((uint32_t)(regval), 16U, 23U) + +/* receive data byte 3 */ +#define GET_RFIFOMDATA0_DB3(regval) GET_BITS((uint32_t)(regval), 24U, 31U) + +/* receive data byte 4 */ +#define GET_RFIFOMDATA1_DB4(regval) GET_BITS((uint32_t)(regval), 0U, 7U) + +/* receive data byte 5 */ +#define GET_RFIFOMDATA1_DB5(regval) GET_BITS((uint32_t)(regval), 8U, 15U) + +/* receive data byte 6 */ +#define GET_RFIFOMDATA1_DB6(regval) GET_BITS((uint32_t)(regval), 16U, 23U) + +/* receive data byte 7 */ +#define GET_RFIFOMDATA1_DB7(regval) GET_BITS((uint32_t)(regval), 24U, 31U) + +/* error number */ +#define GET_ERR_ERRN(regval) GET_BITS((uint32_t)(regval), 4U, 6U) + +/* transmit error count */ +#define GET_ERR_TECNT(regval) GET_BITS((uint32_t)(regval), 16U, 23U) + +/* receive error count */ +#define GET_ERR_RECNT(regval) GET_BITS((uint32_t)(regval), 24U, 31U) + +/* CAN errors */ +#define ERR_ERRN(regval) (BITS(4,6) & ((uint32_t)(regval) << 4)) +#define CAN_ERRN_0 ERR_ERRN(0U) /* no error */ +#define CAN_ERRN_1 ERR_ERRN(1U) /*!< fill error */ +#define CAN_ERRN_2 ERR_ERRN(2U) /*!< format error */ +#define CAN_ERRN_3 ERR_ERRN(3U) /*!< ACK error */ +#define CAN_ERRN_4 ERR_ERRN(4U) /*!< bit recessive error */ +#define CAN_ERRN_5 ERR_ERRN(5U) /*!< bit dominant error */ +#define CAN_ERRN_6 ERR_ERRN(6U) /*!< CRC error */ +#define CAN_ERRN_7 ERR_ERRN(7U) /*!< software error */ + +#define CAN_STATE_PENDING ((uint32_t)0x00000000U) /*!< CAN pending */ + +/* CAN communication mode */ +#define CAN_NORMAL_MODE ((uint8_t)0x00U) /*!< normal communication mode */ +#define CAN_LOOPBACK_MODE ((uint8_t)0x01U) /*!< loopback communication mode */ +#define CAN_SILENT_MODE ((uint8_t)0x02U) /*!< silent communication mode */ +#define CAN_SILENT_LOOPBACK_MODE ((uint8_t)0x03U) /*!< loopback and silent communication mode */ + +/* CAN resynchronisation jump width */ +#define CAN_BT_SJW_1TQ ((uint8_t)0x00U) /*!< 1 time quanta */ +#define CAN_BT_SJW_2TQ ((uint8_t)0x01U) /*!< 2 time quanta */ +#define CAN_BT_SJW_3TQ ((uint8_t)0x02U) /*!< 3 time quanta */ +#define CAN_BT_SJW_4TQ ((uint8_t)0x03U) /*!< 4 time quanta */ + +/* CAN time segment 1 */ +#define CAN_BT_BS1_1TQ ((uint8_t)0x00U) /*!< 1 time quanta */ +#define CAN_BT_BS1_2TQ ((uint8_t)0x01U) /*!< 2 time quanta */ +#define CAN_BT_BS1_3TQ ((uint8_t)0x02U) /*!< 3 time quanta */ +#define CAN_BT_BS1_4TQ ((uint8_t)0x03U) /*!< 4 time quanta */ +#define CAN_BT_BS1_5TQ ((uint8_t)0x04U) /*!< 5 time quanta */ +#define CAN_BT_BS1_6TQ ((uint8_t)0x05U) /*!< 6 time quanta */ +#define CAN_BT_BS1_7TQ ((uint8_t)0x06U) /*!< 7 time quanta */ +#define CAN_BT_BS1_8TQ ((uint8_t)0x07U) /*!< 8 time quanta */ +#define CAN_BT_BS1_9TQ ((uint8_t)0x08U) /*!< 9 time quanta */ +#define CAN_BT_BS1_10TQ ((uint8_t)0x09U) /*!< 10 time quanta */ +#define CAN_BT_BS1_11TQ ((uint8_t)0x0AU) /*!< 11 time quanta */ +#define CAN_BT_BS1_12TQ ((uint8_t)0x0BU) /*!< 12 time quanta */ +#define CAN_BT_BS1_13TQ ((uint8_t)0x0CU) /*!< 13 time quanta */ +#define CAN_BT_BS1_14TQ ((uint8_t)0x0DU) /*!< 14 time quanta */ +#define CAN_BT_BS1_15TQ ((uint8_t)0x0EU) /*!< 15 time quanta */ +#define CAN_BT_BS1_16TQ ((uint8_t)0x0FU) /*!< 16 time quanta */ + +/* CAN time segment 2 */ +#define CAN_BT_BS2_1TQ ((uint8_t)0x00U) /*!< 1 time quanta */ +#define CAN_BT_BS2_2TQ ((uint8_t)0x01U) /*!< 2 time quanta */ +#define CAN_BT_BS2_3TQ ((uint8_t)0x02U) /*!< 3 time quanta */ +#define CAN_BT_BS2_4TQ ((uint8_t)0x03U) /*!< 4 time quanta */ +#define CAN_BT_BS2_5TQ ((uint8_t)0x04U) /*!< 5 time quanta */ +#define CAN_BT_BS2_6TQ ((uint8_t)0x05U) /*!< 6 time quanta */ +#define CAN_BT_BS2_7TQ ((uint8_t)0x06U) /*!< 7 time quanta */ +#define CAN_BT_BS2_8TQ ((uint8_t)0x07U) /*!< 8 time quanta */ + +/* CAN mailbox number */ +#define CAN_MAILBOX0 ((uint8_t)0x00U) /*!< mailbox0 */ +#define CAN_MAILBOX1 ((uint8_t)0x01U) /*!< mailbox1 */ +#define CAN_MAILBOX2 ((uint8_t)0x02U) /*!< mailbox2 */ +#define CAN_NOMAILBOX ((uint8_t)0x03U) /*!< no mailbox empty */ + +/* CAN frame format */ +#define CAN_FF_STANDARD ((uint32_t)0x00000000U) /*!< standard frame */ +#define CAN_FF_EXTENDED ((uint32_t)0x00000004U) /*!< extended frame */ + +/* CAN receive fifo */ +#define CAN_FIFO0 ((uint8_t)0x00U) /*!< receive FIFO0 */ +#define CAN_FIFO1 ((uint8_t)0x01U) /*!< receive FIFO1 */ + +/* frame number of receive fifo */ +#define CAN_RFIF_RFL_MASK ((uint32_t)0x00000003U) /*!< mask for frame number in receive FIFOx */ + +#define CAN_SFID_MASK ((uint32_t)0x000007FFU) /*!< mask of standard identifier */ +#define CAN_EFID_MASK ((uint32_t)0x1FFFFFFFU) /*!< mask of extended identifier */ + +/* CAN working mode */ +#define CAN_MODE_INITIALIZE ((uint8_t)0x01U) /*!< CAN initialize mode */ +#define CAN_MODE_NORMAL ((uint8_t)0x02U) /*!< CAN normal mode */ +#define CAN_MODE_SLEEP ((uint8_t)0x04U) /*!< CAN sleep mode */ + +/* filter bits */ +#define CAN_FILTERBITS_16BIT ((uint8_t)0x00U) /*!< CAN filter 16 bits */ +#define CAN_FILTERBITS_32BIT ((uint8_t)0x01U) /*!< CAN filter 32 bits */ + +/* filter mode */ +#define CAN_FILTERMODE_MASK ((uint8_t)0x00U) /*!< mask mode */ +#define CAN_FILTERMODE_LIST ((uint8_t)0x01U) /*!< list mode */ + +/* filter 16 bits mask */ +#define CAN_FILTER_MASK_16BITS ((uint32_t)0x0000FFFFU) /*!< can filter 16 bits mask */ + +/* frame type */ +#define CAN_FT_DATA ((uint32_t)0x00000000U) /*!< data frame */ +#define CAN_FT_REMOTE ((uint32_t)0x00000002U) /*!< remote frame */ + +/* CAN timeout */ +#define CAN_TIMEOUT ((uint32_t)0x0000FFFFU) /*!< timeout value */ + +/* interrupt enable bits */ +#define CAN_INT_TME CAN_INTEN_TMEIE /*!< transmit mailbox empty interrupt enable */ +#define CAN_INT_RFNE0 CAN_INTEN_RFNEIE0 /*!< receive FIFO0 not empty interrupt enable */ +#define CAN_INT_RFF0 CAN_INTEN_RFFIE0 /*!< receive FIFO0 full interrupt enable */ +#define CAN_INT_RFO0 CAN_INTEN_RFOIE0 /*!< receive FIFO0 overfull interrupt enable */ +#define CAN_INT_RFNE1 CAN_INTEN_RFNEIE1 /*!< receive FIFO1 not empty interrupt enable */ +#define CAN_INT_RFF1 CAN_INTEN_RFFIE1 /*!< receive FIFO1 full interrupt enable */ +#define CAN_INT_RFO1 CAN_INTEN_RFOIE1 /*!< receive FIFO1 overfull interrupt enable */ +#define CAN_INT_WERR CAN_INTEN_WERRIE /*!< warning error interrupt enable */ +#define CAN_INT_PERR CAN_INTEN_PERRIE /*!< passive error interrupt enable */ +#define CAN_INT_BO CAN_INTEN_BOIE /*!< bus-off interrupt enable */ +#define CAN_INT_ERRN CAN_INTEN_ERRNIE /*!< error number interrupt enable */ +#define CAN_INT_ERR CAN_INTEN_ERRIE /*!< error interrupt enable */ +#define CAN_INT_WAKEUP CAN_INTEN_WIE /*!< wakeup interrupt enable */ +#define CAN_INT_SLPW CAN_INTEN_SLPWIE /*!< sleep working interrupt enable */ + +/* function declarations */ +/* deinitialize CAN */ +void can_deinit(uint32_t can_periph); +/* initialize CAN struct */ +void can_struct_para_init(can_struct_type_enum type, void* p_struct); +/* initialize CAN */ +ErrStatus can_init(uint32_t can_periph, can_parameter_struct* can_parameter_init); +/* CAN filter init */ +void can_filter_init(can_filter_parameter_struct* can_filter_parameter_init); +/* set can1 fliter start bank number */ +void can1_filter_start_bank(uint8_t start_bank); +/* enable functions */ +/* CAN debug freeze enable */ +void can_debug_freeze_enable(uint32_t can_periph); +/* CAN debug freeze disable */ +void can_debug_freeze_disable(uint32_t can_periph); +/* CAN time trigger mode enable */ +void can_time_trigger_mode_enable(uint32_t can_periph); +/* CAN time trigger mode disable */ +void can_time_trigger_mode_disable(uint32_t can_periph); + +/* transmit functions */ +/* transmit CAN message */ +uint8_t can_message_transmit(uint32_t can_periph, can_trasnmit_message_struct* transmit_message); +/* get CAN transmit state */ +can_transmit_state_enum can_transmit_states(uint32_t can_periph, uint8_t mailbox_number); +/* stop CAN transmission */ +void can_transmission_stop(uint32_t can_periph, uint8_t mailbox_number); +/* CAN receive message */ +void can_message_receive(uint32_t can_periph, uint8_t fifo_number, can_receive_message_struct* receive_message); +/* CAN release fifo */ +void can_fifo_release(uint32_t can_periph, uint8_t fifo_number); +/* CAN receive message length */ +uint8_t can_receive_message_length_get(uint32_t can_periph, uint8_t fifo_number); +/* CAN working mode */ +ErrStatus can_working_mode_set(uint32_t can_periph, uint8_t working_mode); +/* CAN wakeup from sleep mode */ +ErrStatus can_wakeup(uint32_t can_periph); + +/* CAN get error */ +can_error_enum can_error_get(uint32_t can_periph); +/* get CAN receive error number */ +uint8_t can_receive_error_number_get(uint32_t can_periph); +/* get CAN transmit error number */ +uint8_t can_transmit_error_number_get(uint32_t can_periph); + +/* CAN interrupt enable */ +void can_interrupt_enable(uint32_t can_periph, uint32_t interrupt); +/* CAN interrupt disable */ +void can_interrupt_disable(uint32_t can_periph, uint32_t interrupt); +/* CAN get flag state */ +FlagStatus can_flag_get(uint32_t can_periph, can_flag_enum flag); +/* CAN clear flag state */ +void can_flag_clear(uint32_t can_periph, can_flag_enum flag); +/* CAN get interrupt flag state */ +FlagStatus can_interrupt_flag_get(uint32_t can_periph, can_interrupt_flag_enum flag); +/* CAN clear interrupt flag state */ +void can_interrupt_flag_clear(uint32_t can_periph, can_interrupt_flag_enum flag); + +#endif /* GD32VF103_CAN_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_crc.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_crc.h new file mode 100644 index 0000000000..35683f869e --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_crc.h @@ -0,0 +1,78 @@ +/*! + \file gd32vf103_crc.h + \brief definitions for the CRC + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_CRC_H +#define GD32VF103_CRC_H + +#include "gd32vf103.h" + +/* CRC definitions */ +#define CRC CRC_BASE + +/* registers definitions */ +#define CRC_DATA REG32(CRC + 0x00U) /*!< CRC data register */ +#define CRC_FDATA REG32(CRC + 0x04U) /*!< CRC free data register */ +#define CRC_CTL REG32(CRC + 0x08U) /*!< CRC control register */ + +/* bits definitions */ +/* CRC_DATA */ +#define CRC_DATA_DATA BITS(0, 31) /*!< CRC calculation result bits */ + +/* CRC_FDATA */ +#define CRC_FDATA_FDATA BITS(0, 7) /*!< CRC free data bits */ + +/* CRC_CTL */ +#define CRC_CTL_RST BIT(0) /*!< CRC reset CRC_DATA register bit */ + +/* function declarations */ +/* deinit CRC calculation unit */ +void crc_deinit(void); + +/* reset data register(CRC_DATA) to the value of 0xFFFFFFFF */ +void crc_data_register_reset(void); +/* read the value of the data register */ +uint32_t crc_data_register_read(void); + +/* read the value of the free data register */ +uint8_t crc_free_data_register_read(void); +/* write data to the free data register */ +void crc_free_data_register_write(uint8_t free_data); + +/* calculate the CRC value of a 32-bit data */ +uint32_t crc_single_data_calculate(uint32_t sdata); +/* calculate the CRC value of an array of 32-bit values */ +uint32_t crc_block_data_calculate(uint32_t array[], uint32_t size); + +#endif /* GD32VF103_CRC_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_dac.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_dac.h new file mode 100644 index 0000000000..e546b9725c --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_dac.h @@ -0,0 +1,243 @@ +/*! + \file gd32vf103_dac.h + \brief definitions for the DAC + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_DAC_H +#define GD32VF103_DAC_H + +#include "gd32vf103.h" + +/* DACx(x=0,1) definitions */ +#define DAC DAC_BASE +#define DAC0 (0U) +#define DAC1 (1U) + +/* registers definitions */ +#define DAC_CTL REG32(DAC + 0x00U) /*!< DAC control register */ +#define DAC_SWT REG32(DAC + 0x04U) /*!< DAC software trigger register */ +#define DAC0_R12DH REG32(DAC + 0x08U) /*!< DAC0 12-bit right-aligned data holding register */ +#define DAC0_L12DH REG32(DAC + 0x0CU) /*!< DAC0 12-bit left-aligned data holding register */ +#define DAC0_R8DH REG32(DAC + 0x10U) /*!< DAC0 8-bit right-aligned data holding register */ +#define DAC1_R12DH REG32(DAC + 0x14U) /*!< DAC1 12-bit right-aligned data holding register */ +#define DAC1_L12DH REG32(DAC + 0x18U) /*!< DAC1 12-bit left-aligned data holding register */ +#define DAC1_R8DH REG32(DAC + 0x1CU) /*!< DAC1 8-bit right-aligned data holding register */ +#define DACC_R12DH REG32(DAC + 0x20U) /*!< DAC concurrent mode 12-bit right-aligned data holding register */ +#define DACC_L12DH REG32(DAC + 0x24U) /*!< DAC concurrent mode 12-bit left-aligned data holding register */ +#define DACC_R8DH REG32(DAC + 0x28U) /*!< DAC concurrent mode 8-bit right-aligned data holding register */ +#define DAC0_DO REG32(DAC + 0x2CU) /*!< DAC0 data output register */ +#define DAC1_DO REG32(DAC + 0x30U) /*!< DAC1 data output register */ + +/* bits definitions */ +/* DAC_CTL */ +#define DAC_CTL_DEN0 BIT(0) /*!< DAC0 enable/disable bit */ +#define DAC_CTL_DBOFF0 BIT(1) /*!< DAC0 output buffer turn on/turn off bit */ +#define DAC_CTL_DTEN0 BIT(2) /*!< DAC0 trigger enable/disable bit */ +#define DAC_CTL_DTSEL0 BITS(3,5) /*!< DAC0 trigger source selection enable/disable bits */ +#define DAC_CTL_DWM0 BITS(6,7) /*!< DAC0 noise wave mode */ +#define DAC_CTL_DWBW0 BITS(8,11) /*!< DAC0 noise wave bit width */ +#define DAC_CTL_DDMAEN0 BIT(12) /*!< DAC0 DMA enable/disable bit */ +#define DAC_CTL_DEN1 BIT(16) /*!< DAC1 enable/disable bit */ +#define DAC_CTL_DBOFF1 BIT(17) /*!< DAC1 output buffer turn on/turn off bit */ +#define DAC_CTL_DTEN1 BIT(18) /*!< DAC1 trigger enable/disable bit */ +#define DAC_CTL_DTSEL1 BITS(19,21) /*!< DAC1 trigger source selection enable/disable bits */ +#define DAC_CTL_DWM1 BITS(22,23) /*!< DAC1 noise wave mode */ +#define DAC_CTL_DWBW1 BITS(24,27) /*!< DAC1 noise wave bit width */ +#define DAC_CTL_DDMAEN1 BIT(28) /*!< DAC1 DMA enable/disable bit */ + +/* DAC_SWT */ +#define DAC_SWT_SWTR0 BIT(0) /*!< DAC0 software trigger bit, cleared by hardware */ +#define DAC_SWT_SWTR1 BIT(1) /*!< DAC1 software trigger bit, cleared by hardware */ + +/* DAC0_R12DH */ +#define DAC0_R12DH_DAC0_DH BITS(0,11) /*!< DAC0 12-bit right-aligned data bits */ + +/* DAC0_L12DH */ +#define DAC0_L12DH_DAC0_DH BITS(4,15) /*!< DAC0 12-bit left-aligned data bits */ + +/* DAC0_R8DH */ +#define DAC0_R8DH_DAC0_DH BITS(0,7) /*!< DAC0 8-bit right-aligned data bits */ + +/* DAC1_R12DH */ +#define DAC1_R12DH_DAC1_DH BITS(0,11) /*!< DAC1 12-bit right-aligned data bits */ + +/* DAC1_L12DH */ +#define DAC1_L12DH_DAC1_DH BITS(4,15) /*!< DAC1 12-bit left-aligned data bits */ + +/* DAC1_R8DH */ +#define DAC1_R8DH_DAC1_DH BITS(0,7) /*!< DAC1 8-bit right-aligned data bits */ + +/* DACC_R12DH */ +#define DACC_R12DH_DAC0_DH BITS(0,11) /*!< DAC concurrent mode DAC0 12-bit right-aligned data bits */ +#define DACC_R12DH_DAC1_DH BITS(16,27) /*!< DAC concurrent mode DAC1 12-bit right-aligned data bits */ + +/* DACC_L12DH */ +#define DACC_L12DH_DAC0_DH BITS(4,15) /*!< DAC concurrent mode DAC0 12-bit left-aligned data bits */ +#define DACC_L12DH_DAC1_DH BITS(20,31) /*!< DAC concurrent mode DAC1 12-bit left-aligned data bits */ + +/* DACC_R8DH */ +#define DACC_R8DH_DAC0_DH BITS(0,7) /*!< DAC concurrent mode DAC0 8-bit right-aligned data bits */ +#define DACC_R8DH_DAC1_DH BITS(8,15) /*!< DAC concurrent mode DAC1 8-bit right-aligned data bits */ + +/* DAC0_DO */ +#define DAC0_DO_DAC0_DO BITS(0,11) /*!< DAC0 12-bit output data bits */ + +/* DAC1_DO */ +#define DAC1_DO_DAC1_DO BITS(0,11) /*!< DAC1 12-bit output data bits */ + +/* constants definitions */ +/* DAC trigger source */ +#define CTL_DTSEL(regval) (BITS(3,5) & ((uint32_t)(regval) << 3)) +#define DAC_TRIGGER_T5_TRGO CTL_DTSEL(0) /*!< TIMER5 TRGO */ +#define DAC_TRIGGER_T2_TRGO CTL_DTSEL(1) /*!< TIMER2 TRGO */ +#define DAC_TRIGGER_T6_TRGO CTL_DTSEL(2) /*!< TIMER6 TRGO */ +#define DAC_TRIGGER_T4_TRGO CTL_DTSEL(3) /*!< TIMER4 TRGO */ +#define DAC_TRIGGER_T1_TRGO CTL_DTSEL(4) /*!< TIMER1 TRGO */ +#define DAC_TRIGGER_T3_TRGO CTL_DTSEL(5) /*!< TIMER3 TRGO */ +#define DAC_TRIGGER_EXTI_9 CTL_DTSEL(6) /*!< EXTI interrupt line9 event */ +#define DAC_TRIGGER_SOFTWARE CTL_DTSEL(7) /*!< software trigger */ + +/* DAC noise wave mode */ +#define CTL_DWM(regval) (BITS(6,7) & ((uint32_t)(regval) << 6)) +#define DAC_WAVE_DISABLE CTL_DWM(0) /*!< wave disable */ +#define DAC_WAVE_MODE_LFSR CTL_DWM(1) /*!< LFSR noise mode */ +#define DAC_WAVE_MODE_TRIANGLE CTL_DWM(2) /*!< triangle noise mode */ + +/* DAC noise wave bit width */ +#define DWBW(regval) (BITS(8,11) & ((uint32_t)(regval) << 8)) +#define DAC_WAVE_BIT_WIDTH_1 DWBW(0) /*!< bit width of the wave signal is 1 */ +#define DAC_WAVE_BIT_WIDTH_2 DWBW(1) /*!< bit width of the wave signal is 2 */ +#define DAC_WAVE_BIT_WIDTH_3 DWBW(2) /*!< bit width of the wave signal is 3 */ +#define DAC_WAVE_BIT_WIDTH_4 DWBW(3) /*!< bit width of the wave signal is 4 */ +#define DAC_WAVE_BIT_WIDTH_5 DWBW(4) /*!< bit width of the wave signal is 5 */ +#define DAC_WAVE_BIT_WIDTH_6 DWBW(5) /*!< bit width of the wave signal is 6 */ +#define DAC_WAVE_BIT_WIDTH_7 DWBW(6) /*!< bit width of the wave signal is 7 */ +#define DAC_WAVE_BIT_WIDTH_8 DWBW(7) /*!< bit width of the wave signal is 8 */ +#define DAC_WAVE_BIT_WIDTH_9 DWBW(8) /*!< bit width of the wave signal is 9 */ +#define DAC_WAVE_BIT_WIDTH_10 DWBW(9) /*!< bit width of the wave signal is 10 */ +#define DAC_WAVE_BIT_WIDTH_11 DWBW(10) /*!< bit width of the wave signal is 11 */ +#define DAC_WAVE_BIT_WIDTH_12 DWBW(11) /*!< bit width of the wave signal is 12 */ + +/* unmask LFSR bits in DAC LFSR noise mode */ +#define DAC_LFSR_BIT0 DAC_WAVE_BIT_WIDTH_1 /*!< unmask the LFSR bit0 */ +#define DAC_LFSR_BITS1_0 DAC_WAVE_BIT_WIDTH_2 /*!< unmask the LFSR bits[1:0] */ +#define DAC_LFSR_BITS2_0 DAC_WAVE_BIT_WIDTH_3 /*!< unmask the LFSR bits[2:0] */ +#define DAC_LFSR_BITS3_0 DAC_WAVE_BIT_WIDTH_4 /*!< unmask the LFSR bits[3:0] */ +#define DAC_LFSR_BITS4_0 DAC_WAVE_BIT_WIDTH_5 /*!< unmask the LFSR bits[4:0] */ +#define DAC_LFSR_BITS5_0 DAC_WAVE_BIT_WIDTH_6 /*!< unmask the LFSR bits[5:0] */ +#define DAC_LFSR_BITS6_0 DAC_WAVE_BIT_WIDTH_7 /*!< unmask the LFSR bits[6:0] */ +#define DAC_LFSR_BITS7_0 DAC_WAVE_BIT_WIDTH_8 /*!< unmask the LFSR bits[7:0] */ +#define DAC_LFSR_BITS8_0 DAC_WAVE_BIT_WIDTH_9 /*!< unmask the LFSR bits[8:0] */ +#define DAC_LFSR_BITS9_0 DAC_WAVE_BIT_WIDTH_10 /*!< unmask the LFSR bits[9:0] */ +#define DAC_LFSR_BITS10_0 DAC_WAVE_BIT_WIDTH_11 /*!< unmask the LFSR bits[10:0] */ +#define DAC_LFSR_BITS11_0 DAC_WAVE_BIT_WIDTH_12 /*!< unmask the LFSR bits[11:0] */ + +/* DAC data alignment */ +#define DATA_ALIGN(regval) (BITS(0,1) & ((uint32_t)(regval) << 0)) +#define DAC_ALIGN_12B_R DATA_ALIGN(0) /*!< data right 12b alignment */ +#define DAC_ALIGN_12B_L DATA_ALIGN(1) /*!< data left 12b alignment */ +#define DAC_ALIGN_8B_R DATA_ALIGN(2) /*!< data right 8b alignment */ +/* triangle amplitude in DAC triangle noise mode */ +#define DAC_TRIANGLE_AMPLITUDE_1 DAC_WAVE_BIT_WIDTH_1 /*!< triangle amplitude is 1 */ +#define DAC_TRIANGLE_AMPLITUDE_3 DAC_WAVE_BIT_WIDTH_2 /*!< triangle amplitude is 3 */ +#define DAC_TRIANGLE_AMPLITUDE_7 DAC_WAVE_BIT_WIDTH_3 /*!< triangle amplitude is 7 */ +#define DAC_TRIANGLE_AMPLITUDE_15 DAC_WAVE_BIT_WIDTH_4 /*!< triangle amplitude is 15 */ +#define DAC_TRIANGLE_AMPLITUDE_31 DAC_WAVE_BIT_WIDTH_5 /*!< triangle amplitude is 31 */ +#define DAC_TRIANGLE_AMPLITUDE_63 DAC_WAVE_BIT_WIDTH_6 /*!< triangle amplitude is 63 */ +#define DAC_TRIANGLE_AMPLITUDE_127 DAC_WAVE_BIT_WIDTH_7 /*!< triangle amplitude is 127 */ +#define DAC_TRIANGLE_AMPLITUDE_255 DAC_WAVE_BIT_WIDTH_8 /*!< triangle amplitude is 255 */ +#define DAC_TRIANGLE_AMPLITUDE_511 DAC_WAVE_BIT_WIDTH_9 /*!< triangle amplitude is 511 */ +#define DAC_TRIANGLE_AMPLITUDE_1023 DAC_WAVE_BIT_WIDTH_10 /*!< triangle amplitude is 1023 */ +#define DAC_TRIANGLE_AMPLITUDE_2047 DAC_WAVE_BIT_WIDTH_11 /*!< triangle amplitude is 2047 */ +#define DAC_TRIANGLE_AMPLITUDE_4095 DAC_WAVE_BIT_WIDTH_12 /*!< triangle amplitude is 4095 */ + +/* function declarations */ +/* initialization functions */ +/* deinitialize DAC */ +void dac_deinit(void); +/* enable DAC */ +void dac_enable(uint32_t dac_periph); +/* disable DAC */ +void dac_disable(uint32_t dac_periph); +/* enable DAC DMA */ +void dac_dma_enable(uint32_t dac_periph); +/* disable DAC DMA */ +void dac_dma_disable(uint32_t dac_periph); +/* enable DAC output buffer */ +void dac_output_buffer_enable(uint32_t dac_periph); +/* disable DAC output buffer */ +void dac_output_buffer_disable(uint32_t dac_periph); +/* get the last data output value */ +uint16_t dac_output_value_get(uint32_t dac_periph); +/* set DAC data holding register value */ +void dac_data_set(uint32_t dac_periph, uint32_t dac_align, uint16_t data); + +/* DAC trigger configuration */ +/* enable DAC trigger */ +void dac_trigger_enable(uint32_t dac_periph); +/* disable DAC trigger */ +void dac_trigger_disable(uint32_t dac_periph); +/* configure DAC trigger source */ +void dac_trigger_source_config(uint32_t dac_periph, uint32_t triggersource); +/* enable DAC software trigger */ +void dac_software_trigger_enable(uint32_t dac_periph); +/* disable DAC software trigger */ +void dac_software_trigger_disable(uint32_t dac_periph); + +/* DAC wave mode configuration */ +/* configure DAC wave mode */ +void dac_wave_mode_config(uint32_t dac_periph, uint32_t wave_mode); +/* configure DAC wave bit width */ +void dac_wave_bit_width_config(uint32_t dac_periph, uint32_t bit_width); +/* configure DAC LFSR noise mode */ +void dac_lfsr_noise_config(uint32_t dac_periph, uint32_t unmask_bits); +/* configure DAC triangle noise mode */ +void dac_triangle_noise_config(uint32_t dac_periph, uint32_t amplitude); + +/* DAC concurrent mode configuration */ +/* enable DAC concurrent mode */ +void dac_concurrent_enable(void); +/* disable DAC concurrent mode */ +void dac_concurrent_disable(void); +/* enable DAC concurrent software trigger */ +void dac_concurrent_software_trigger_enable(void); +/* disable DAC concurrent software trigger */ +void dac_concurrent_software_trigger_disable(void); +/* enable DAC concurrent buffer function */ +void dac_concurrent_output_buffer_enable(void); +/* disable DAC concurrent buffer function */ +void dac_concurrent_output_buffer_disable(void); +/* set DAC concurrent mode data holding register value */ +void dac_concurrent_data_set(uint32_t dac_align, uint16_t data0, uint16_t data1); + +#endif /* GD32VF103_DAC_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_dbg.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_dbg.h new file mode 100644 index 0000000000..d9e65d87cb --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_dbg.h @@ -0,0 +1,110 @@ +/*! + \file gd32vf103_dbg.h + \brief definitions for the DBG + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_DBG_H +#define GD32VF103_DBG_H + +#include "gd32vf103.h" + +/* DBG definitions */ +#define DBG DBG_BASE + +/* registers definitions */ +#define DBG_ID REG32(DBG + 0x00U) /*!< DBG_ID code register */ +#define DBG_CTL REG32(DBG + 0x04U) /*!< DBG control register */ + +/* bits definitions */ +/* DBG_ID */ +#define DBG_ID_ID_CODE BITS(0,31) /*!< DBG ID code values */ + +/* DBG_CTL */ +#define DBG_CTL_SLP_HOLD BIT(0) /*!< keep debugger connection during sleep mode */ +#define DBG_CTL_DSLP_HOLD BIT(1) /*!< keep debugger connection during deepsleep mode */ +#define DBG_CTL_STB_HOLD BIT(2) /*!< keep debugger connection during standby mode */ +#define DBG_CTL_FWDGT_HOLD BIT(8) /*!< debug FWDGT kept when core is halted */ +#define DBG_CTL_WWDGT_HOLD BIT(9) /*!< debug WWDGT kept when core is halted */ +#define DBG_CTL_TIMER0_HOLD BIT(10) /*!< hold TIMER0 counter when core is halted */ +#define DBG_CTL_TIMER1_HOLD BIT(11) /*!< hold TIMER1 counter when core is halted */ +#define DBG_CTL_TIMER2_HOLD BIT(12) /*!< hold TIMER2 counter when core is halted */ +#define DBG_CTL_TIMER3_HOLD BIT(13) /*!< hold TIMER3 counter when core is halted */ +#define DBG_CTL_CAN0_HOLD BIT(14) /*!< debug CAN0 kept when core is halted */ +#define DBG_CTL_I2C0_HOLD BIT(15) /*!< hold I2C0 smbus when core is halted */ +#define DBG_CTL_I2C1_HOLD BIT(16) /*!< hold I2C1 smbus when core is halted */ +#define DBG_CTL_TIMER4_HOLD BIT(18) /*!< hold TIMER4 counter when core is halted */ +#define DBG_CTL_TIMER5_HOLD BIT(19) /*!< hold TIMER5 counter when core is halted */ +#define DBG_CTL_TIMER6_HOLD BIT(20) /*!< hold TIMER6 counter when core is halted */ +#define DBG_CTL_CAN1_HOLD BIT(21) /*!< debug CAN1 kept when core is halted */ + +/* constants definitions */ +/* debug hold when core is halted */ +typedef enum +{ + DBG_FWDGT_HOLD = BIT(8), /*!< debug FWDGT kept when core is halted */ + DBG_WWDGT_HOLD = BIT(9), /*!< debug WWDGT kept when core is halted */ + DBG_TIMER0_HOLD = BIT(10), /*!< hold TIMER0 counter when core is halted */ + DBG_TIMER1_HOLD = BIT(11), /*!< hold TIMER1 counter when core is halted */ + DBG_TIMER2_HOLD = BIT(12), /*!< hold TIMER2 counter when core is halted */ + DBG_TIMER3_HOLD = BIT(13), /*!< hold TIMER3 counter when core is halted */ + DBG_CAN0_HOLD = BIT(14), /*!< debug CAN0 kept when core is halted */ + DBG_I2C0_HOLD = BIT(15), /*!< hold I2C0 smbus when core is halted */ + DBG_I2C1_HOLD = BIT(16), /*!< hold I2C1 smbus when core is halted */ + DBG_TIMER4_HOLD = BIT(17), /*!< hold TIMER4 counter when core is halted */ + DBG_TIMER5_HOLD = BIT(18), /*!< hold TIMER5 counter when core is halted */ + DBG_TIMER6_HOLD = BIT(19), /*!< hold TIMER6 counter when core is halted */ + DBG_CAN1_HOLD = BIT(21), /*!< debug CAN1 kept when core is halted */ +}dbg_periph_enum; + +/* DBG low power mode configurations */ +#define DBG_LOW_POWER_SLEEP DBG_CTL_SLP_HOLD /*!< keep debugger connection during sleep mode */ +#define DBG_LOW_POWER_DEEPSLEEP DBG_CTL_DSLP_HOLD /*!< keep debugger connection during deepsleep mode */ +#define DBG_LOW_POWER_STANDBY DBG_CTL_STB_HOLD /*!< keep debugger connection during standby mode */ + +/* function declarations */ +/* read DBG_ID code register */ +uint32_t dbg_id_get(void); + +/* low power behavior configuration */ +/* enable low power behavior when the MCU is in debug mode */ +void dbg_low_power_enable(uint32_t dbg_low_power); +/* disable low power behavior when the MCU is in debug mode */ +void dbg_low_power_disable(uint32_t dbg_low_power); + +/* peripheral behavior configuration */ +/* enable peripheral behavior when the MCU is in debug mode */ +void dbg_periph_enable(dbg_periph_enum dbg_periph); +/* disable peripheral behavior when the MCU is in debug mode */ +void dbg_periph_disable(dbg_periph_enum dbg_periph); + +#endif /* GD32VF103_DBG_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_dma.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_dma.h new file mode 100644 index 0000000000..2d3842ca05 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_dma.h @@ -0,0 +1,284 @@ +/*! + \file gd32vf103_dma.h + \brief definitions for the DMA + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2019-10-30, V1.0.1, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_DMA_H +#define GD32VF103_DMA_H + +#include "gd32vf103.h" + +/* DMA definitions */ +#define DMA0 (DMA_BASE) /*!< DMA0 base address */ +#define DMA1 (DMA_BASE + 0x0400U) /*!< DMA1 base address */ + +/* registers definitions */ +#define DMA_INTF(dmax) REG32((dmax) + 0x00U) /*!< DMA interrupt flag register */ +#define DMA_INTC(dmax) REG32((dmax) + 0x04U) /*!< DMA interrupt flag clear register */ + +#define DMA_CH0CTL(dmax) REG32((dmax) + 0x08U) /*!< DMA channel 0 control register */ +#define DMA_CH0CNT(dmax) REG32((dmax) + 0x0CU) /*!< DMA channel 0 counter register */ +#define DMA_CH0PADDR(dmax) REG32((dmax) + 0x10U) /*!< DMA channel 0 peripheral base address register */ +#define DMA_CH0MADDR(dmax) REG32((dmax) + 0x14U) /*!< DMA channel 0 memory base address register */ + +#define DMA_CH1CTL(dmax) REG32((dmax) + 0x1CU) /*!< DMA channel 1 control register */ +#define DMA_CH1CNT(dmax) REG32((dmax) + 0x20U) /*!< DMA channel 1 counter register */ +#define DMA_CH1PADDR(dmax) REG32((dmax) + 0x24U) /*!< DMA channel 1 peripheral base address register */ +#define DMA_CH1MADDR(dmax) REG32((dmax) + 0x28U) /*!< DMA channel 1 memory base address register */ + +#define DMA_CH2CTL(dmax) REG32((dmax) + 0x30U) /*!< DMA channel 2 control register */ +#define DMA_CH2CNT(dmax) REG32((dmax) + 0x34U) /*!< DMA channel 2 counter register */ +#define DMA_CH2PADDR(dmax) REG32((dmax) + 0x38U) /*!< DMA channel 2 peripheral base address register */ +#define DMA_CH2MADDR(dmax) REG32((dmax) + 0x3CU) /*!< DMA channel 2 memory base address register */ + +#define DMA_CH3CTL(dmax) REG32((dmax) + 0x44U) /*!< DMA channel 3 control register */ +#define DMA_CH3CNT(dmax) REG32((dmax) + 0x48U) /*!< DMA channel 3 counter register */ +#define DMA_CH3PADDR(dmax) REG32((dmax) + 0x4CU) /*!< DMA channel 3 peripheral base address register */ +#define DMA_CH3MADDR(dmax) REG32((dmax) + 0x50U) /*!< DMA channel 3 memory base address register */ + +#define DMA_CH4CTL(dmax) REG32((dmax) + 0x58U) /*!< DMA channel 4 control register */ +#define DMA_CH4CNT(dmax) REG32((dmax) + 0x5CU) /*!< DMA channel 4 counter register */ +#define DMA_CH4PADDR(dmax) REG32((dmax) + 0x60U) /*!< DMA channel 4 peripheral base address register */ +#define DMA_CH4MADDR(dmax) REG32((dmax) + 0x64U) /*!< DMA channel 4 memory base address register */ + +#define DMA_CH5CTL(dmax) REG32((dmax) + 0x6CU) /*!< DMA channel 5 control register */ +#define DMA_CH5CNT(dmax) REG32((dmax) + 0x70U) /*!< DMA channel 5 counter register */ +#define DMA_CH5PADDR(dmax) REG32((dmax) + 0x74U) /*!< DMA channel 5 peripheral base address register */ +#define DMA_CH5MADDR(dmax) REG32((dmax) + 0x78U) /*!< DMA channel 5 memory base address register */ + +#define DMA_CH6CTL(dmax) REG32((dmax) + 0x80U) /*!< DMA channel 6 control register */ +#define DMA_CH6CNT(dmax) REG32((dmax) + 0x84U) /*!< DMA channel 6 counter register */ +#define DMA_CH6PADDR(dmax) REG32((dmax) + 0x88U) /*!< DMA channel 6 peripheral base address register */ +#define DMA_CH6MADDR(dmax) REG32((dmax) + 0x8CU) /*!< DMA channel 6 memory base address register */ + +/* bits definitions */ +/* DMA_INTF */ +#define DMA_INTF_GIF BIT(0) /*!< global interrupt flag of channel */ +#define DMA_INTF_FTFIF BIT(1) /*!< full transfer finish flag of channel */ +#define DMA_INTF_HTFIF BIT(2) /*!< half transfer finish flag of channel */ +#define DMA_INTF_ERRIF BIT(3) /*!< error flag of channel */ + +/* DMA_INTC */ +#define DMA_INTC_GIFC BIT(0) /*!< clear global interrupt flag of channel */ +#define DMA_INTC_FTFIFC BIT(1) /*!< clear transfer finish flag of channel */ +#define DMA_INTC_HTFIFC BIT(2) /*!< clear half transfer finish flag of channel */ +#define DMA_INTC_ERRIFC BIT(3) /*!< clear error flag of channel */ + +/* DMA_CHxCTL, x=0..6 */ +#define DMA_CHXCTL_CHEN BIT(0) /*!< channel enable */ +#define DMA_CHXCTL_FTFIE BIT(1) /*!< enable bit for channel full transfer finish interrupt */ +#define DMA_CHXCTL_HTFIE BIT(2) /*!< enable bit for channel half transfer finish interrupt */ +#define DMA_CHXCTL_ERRIE BIT(3) /*!< enable bit for channel error interrupt */ +#define DMA_CHXCTL_DIR BIT(4) /*!< transfer direction */ +#define DMA_CHXCTL_CMEN BIT(5) /*!< circular mode enable */ +#define DMA_CHXCTL_PNAGA BIT(6) /*!< next address generation algorithm of peripheral */ +#define DMA_CHXCTL_MNAGA BIT(7) /*!< next address generation algorithm of memory */ +#define DMA_CHXCTL_PWIDTH BITS(8,9) /*!< transfer data width of peripheral */ +#define DMA_CHXCTL_MWIDTH BITS(10,11) /*!< transfer data width of memory */ +#define DMA_CHXCTL_PRIO BITS(12,13) /*!< priority level */ +#define DMA_CHXCTL_M2M BIT(14) /*!< memory to memory mode */ + +/* DMA_CHxCNT, x=0..6 */ +#define DMA_CHXCNT_CNT BITS(0,15) /*!< transfer counter */ + +/* DMA_CHxPADDR, x=0..6 */ +#define DMA_CHXPADDR_PADDR BITS(0,31) /*!< peripheral base address */ + +/* DMA_CHxMADDR, x=0..6 */ +#define DMA_CHXMADDR_MADDR BITS(0,31) /*!< memory base address */ + +/* constants definitions */ +/* DMA channel select */ +typedef enum +{ + DMA_CH0 = 0, /*!< DMA Channel0 */ + DMA_CH1, /*!< DMA Channel1 */ + DMA_CH2, /*!< DMA Channel2 */ + DMA_CH3, /*!< DMA Channel3 */ + DMA_CH4, /*!< DMA Channel4 */ + DMA_CH5, /*!< DMA Channel5 */ + DMA_CH6 /*!< DMA Channel6 */ +} dma_channel_enum; + +/* DMA initialize struct */ +typedef struct +{ + uint32_t periph_addr; /*!< peripheral base address */ + uint32_t periph_width; /*!< transfer data size of peripheral */ + uint32_t memory_addr; /*!< memory base address */ + uint32_t memory_width; /*!< transfer data size of memory */ + uint32_t number; /*!< channel transfer number */ + uint32_t priority; /*!< channel priority level */ + uint8_t periph_inc; /*!< peripheral increasing mode */ + uint8_t memory_inc; /*!< memory increasing mode */ + uint8_t direction; /*!< channel data transfer direction */ + +} dma_parameter_struct; + +#define DMA_FLAG_ADD(flag, shift) ((flag) << ((shift) * 4U)) /*!< DMA channel flag shift */ + +/* DMA_register address */ +#define DMA_CHCTL(dma, channel) REG32(((dma) + 0x08U) + 0x14U * (uint32_t)(channel)) /*!< the address of DMA channel CHXCTL register */ +#define DMA_CHCNT(dma, channel) REG32(((dma) + 0x0CU) + 0x14U * (uint32_t)(channel)) /*!< the address of DMA channel CHXCNT register */ +#define DMA_CHPADDR(dma, channel) REG32(((dma) + 0x10U) + 0x14U * (uint32_t)(channel)) /*!< the address of DMA channel CHXPADDR register */ +#define DMA_CHMADDR(dma, channel) REG32(((dma) + 0x14U) + 0x14U * (uint32_t)(channel)) /*!< the address of DMA channel CHXMADDR register */ + +/* DMA reset value */ +#define DMA_CHCTL_RESET_VALUE ((uint32_t)0x00000000U) /*!< the reset value of DMA channel CHXCTL register */ +#define DMA_CHCNT_RESET_VALUE ((uint32_t)0x00000000U) /*!< the reset value of DMA channel CHXCNT register */ +#define DMA_CHPADDR_RESET_VALUE ((uint32_t)0x00000000U) /*!< the reset value of DMA channel CHXPADDR register */ +#define DMA_CHMADDR_RESET_VALUE ((uint32_t)0x00000000U) /*!< the reset value of DMA channel CHXMADDR register */ +#define DMA_CHINTF_RESET_VALUE (DMA_INTF_GIF | DMA_INTF_FTFIF | \ + DMA_INTF_HTFIF | DMA_INTF_ERRIF) /*!< clear DMA channel DMA_INTF register */ + +/* DMA_INTF register */ +/* interrupt flag bits */ +#define DMA_INT_FLAG_G DMA_INTF_GIF /*!< global interrupt flag of channel */ +#define DMA_INT_FLAG_FTF DMA_INTF_FTFIF /*!< full transfer finish interrupt flag of channel */ +#define DMA_INT_FLAG_HTF DMA_INTF_HTFIF /*!< half transfer finish interrupt flag of channel */ +#define DMA_INT_FLAG_ERR DMA_INTF_ERRIF /*!< error interrupt flag of channel */ + +/* flag bits */ +#define DMA_FLAG_G DMA_INTF_GIF /*!< global interrupt flag of channel */ +#define DMA_FLAG_FTF DMA_INTF_FTFIF /*!< full transfer finish flag of channel */ +#define DMA_FLAG_HTF DMA_INTF_HTFIF /*!< half transfer finish flag of channel */ +#define DMA_FLAG_ERR DMA_INTF_ERRIF /*!< error flag of channel */ + +/* DMA_CHxCTL register */ +/* interrupt enable bits */ +#define DMA_INT_FTF DMA_CHXCTL_FTFIE /*!< enable bit for channel full transfer finish interrupt */ +#define DMA_INT_HTF DMA_CHXCTL_HTFIE /*!< enable bit for channel half transfer finish interrupt */ +#define DMA_INT_ERR DMA_CHXCTL_ERRIE /*!< enable bit for channel error interrupt */ + +/* transfer direction */ +#define DMA_PERIPHERAL_TO_MEMORY ((uint8_t)0x00U) /*!< read from peripheral and write to memory */ +#define DMA_MEMORY_TO_PERIPHERAL ((uint8_t)0x01U) /*!< read from memory and write to peripheral */ + +/* peripheral increasing mode */ +#define DMA_PERIPH_INCREASE_DISABLE ((uint8_t)0x00U) /*!< next address of peripheral is fixed address mode */ +#define DMA_PERIPH_INCREASE_ENABLE ((uint8_t)0x01U) /*!< next address of peripheral is increasing address mode */ + +/* memory increasing mode */ +#define DMA_MEMORY_INCREASE_DISABLE ((uint8_t)0x00U) /*!< next address of memory is fixed address mode */ +#define DMA_MEMORY_INCREASE_ENABLE ((uint8_t)0x01U) /*!< next address of memory is increasing address mode */ + +/* transfer data size of peripheral */ +#define CHCTL_PWIDTH(regval) (BITS(8,9) & ((uint32_t)(regval) << 8)) /*!< transfer data size of peripheral */ +#define DMA_PERIPHERAL_WIDTH_8BIT CHCTL_PWIDTH(0U) /*!< transfer data size of peripheral is 8-bit */ +#define DMA_PERIPHERAL_WIDTH_16BIT CHCTL_PWIDTH(1U) /*!< transfer data size of peripheral is 16-bit */ +#define DMA_PERIPHERAL_WIDTH_32BIT CHCTL_PWIDTH(2U) /*!< transfer data size of peripheral is 32-bit */ + +/* transfer data size of memory */ +#define CHCTL_MWIDTH(regval) (BITS(10,11) & ((uint32_t)(regval) << 10)) /*!< transfer data size of memory */ +#define DMA_MEMORY_WIDTH_8BIT CHCTL_MWIDTH(0U) /*!< transfer data size of memory is 8-bit */ +#define DMA_MEMORY_WIDTH_16BIT CHCTL_MWIDTH(1U) /*!< transfer data size of memory is 16-bit */ +#define DMA_MEMORY_WIDTH_32BIT CHCTL_MWIDTH(2U) /*!< transfer data size of memory is 32-bit */ + +/* channel priority level */ +#define CHCTL_PRIO(regval) (BITS(12,13) & ((uint32_t)(regval) << 12)) /*!< DMA channel priority level */ +#define DMA_PRIORITY_LOW CHCTL_PRIO(0U) /*!< low priority */ +#define DMA_PRIORITY_MEDIUM CHCTL_PRIO(1U) /*!< medium priority */ +#define DMA_PRIORITY_HIGH CHCTL_PRIO(2U) /*!< high priority */ +#define DMA_PRIORITY_ULTRA_HIGH CHCTL_PRIO(3U) /*!< ultra high priority */ + +/* memory to memory mode */ +#define DMA_MEMORY_TO_MEMORY_DISABLE ((uint32_t)0x00000000U) /*!< disable memory to memory mode */ +#define DMA_MEMORY_TO_MEMORY_ENABLE ((uint32_t)0x00000001U) /*!< enable memory to memory mode */ + +/* DMA_CHxCNT register */ +/* transfer counter */ +#define DMA_CHANNEL_CNT_MASK DMA_CHXCNT_CNT /*!< transfer counter mask */ + +/* function declarations */ +/* DMA deinitialization and initialization functions */ +/* deinitialize DMA a channel registers */ +void dma_deinit(uint32_t dma_periph, dma_channel_enum channelx); +/* initialize the parameters of DMA struct with the default values */ +void dma_struct_para_init(dma_parameter_struct* init_struct); +/* initialize DMA channel */ +void dma_init(uint32_t dma_periph, dma_channel_enum channelx, dma_parameter_struct *init_struct); +/* enable DMA circulation mode */ +void dma_circulation_enable(uint32_t dma_periph, dma_channel_enum channelx); +/* disable DMA circulation mode */ +void dma_circulation_disable(uint32_t dma_periph, dma_channel_enum channelx); +/* enable memory to memory mode */ +void dma_memory_to_memory_enable(uint32_t dma_periph, dma_channel_enum channelx); +/* disable memory to memory mode */ +void dma_memory_to_memory_disable(uint32_t dma_periph, dma_channel_enum channelx); +/* enable DMA channel */ +void dma_channel_enable(uint32_t dma_periph, dma_channel_enum channelx); +/* disable DMA channel */ +void dma_channel_disable(uint32_t dma_periph, dma_channel_enum channelx); + +/* DMA configuration functions */ +/* set DMA peripheral base address */ +void dma_periph_address_config(uint32_t dma_periph, dma_channel_enum channelx, uint32_t address); +/* set DMA memory base address */ +void dma_memory_address_config(uint32_t dma_periph, dma_channel_enum channelx, uint32_t address); +/* set the number of remaining data to be transferred by the DMA */ +void dma_transfer_number_config(uint32_t dma_periph, dma_channel_enum channelx, uint32_t number); +/* get the number of remaining data to be transferred by the DMA */ +uint32_t dma_transfer_number_get(uint32_t dma_periph, dma_channel_enum channelx); +/* configure priority level of DMA channel */ +void dma_priority_config(uint32_t dma_periph, dma_channel_enum channelx, uint32_t priority); +/* configure transfer data size of memory */ +void dma_memory_width_config(uint32_t dma_periph, dma_channel_enum channelx, uint32_t mwidth); +/* configure transfer data size of peripheral */ +void dma_periph_width_config(uint32_t dma_periph, dma_channel_enum channelx, uint32_t pwidth); +/* enable next address increasement algorithm of memory */ +void dma_memory_increase_enable(uint32_t dma_periph, dma_channel_enum channelx); +/* disable next address increasement algorithm of memory */ +void dma_memory_increase_disable(uint32_t dma_periph, dma_channel_enum channelx); +/* enable next address increasement algorithm of peripheral */ +void dma_periph_increase_enable(uint32_t dma_periph, dma_channel_enum channelx); +/* disable next address increasement algorithm of peripheral */ +void dma_periph_increase_disable(uint32_t dma_periph, dma_channel_enum channelx); +/* configure the direction of data transfer on the channel */ +void dma_transfer_direction_config(uint32_t dma_periph, dma_channel_enum channelx, uint8_t direction); + +/* flag and interrupt functions */ +/* check DMA flag is set or not */ +FlagStatus dma_flag_get(uint32_t dma_periph, dma_channel_enum channelx, uint32_t flag); +/* clear the flag of a DMA channel */ +void dma_flag_clear(uint32_t dma_periph, dma_channel_enum channelx, uint32_t flag); +/* check DMA flag and interrupt enable bit is set or not */ +FlagStatus dma_interrupt_flag_get(uint32_t dma_periph, dma_channel_enum channelx, uint32_t flag); +/* clear the interrupt flag of a DMA channel */ +void dma_interrupt_flag_clear(uint32_t dma_periph, dma_channel_enum channelx, uint32_t flag); +/* enable DMA interrupt */ +void dma_interrupt_enable(uint32_t dma_periph, dma_channel_enum channelx, uint32_t source); +/* disable DMA interrupt */ +void dma_interrupt_disable(uint32_t dma_periph, dma_channel_enum channelx, uint32_t source); + +#endif /* GD32VF103_DMA_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_eclic.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_eclic.h new file mode 100644 index 0000000000..b201996c8f --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_eclic.h @@ -0,0 +1,67 @@ +/*! + \file gd32vf103_eclic.h + \brief definitions for the ECLIC(Enhancement Core-Local Interrupt Controller) + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_ECLIC_H +#define GD32VF103_ECLIC_H + +#include "gd32vf103.h" + +/* constants definitions */ +#define ECLIC_PRIGROUP_LEVEL0_PRIO4 0 /*!< 0 bits for level 4 bits for priority */ +#define ECLIC_PRIGROUP_LEVEL1_PRIO3 1 /*!< 1 bits for level 3 bits for priority */ +#define ECLIC_PRIGROUP_LEVEL2_PRIO2 2 /*!< 2 bits for level 2 bits for priority */ +#define ECLIC_PRIGROUP_LEVEL3_PRIO1 3 /*!< 3 bits for level 1 bits for priority */ +#define ECLIC_PRIGROUP_LEVEL4_PRIO0 4 /*!< 4 bits for level 0 bits for priority */ + +#define __SEV eclic_send_event + +/* function declarations */ +/* enable the global interrupt */ +void eclic_global_interrupt_enable(void); +/* disable the global interrupt */ +void eclic_global_interrupt_disable(void); +/* set the priority group */ +void eclic_priority_group_set(uint8_t prigroup); +/* enable the interrupt request */ +void eclic_irq_enable(uint32_t source, uint8_t level, uint8_t priority); +/* disable the interrupt request */ +void eclic_irq_disable(uint32_t source); + +/* reset system */ +void eclic_system_reset(void); +/* send event(SEV) */ +void eclic_send_event(void); + +#endif /* GD32VF103_ECLIC_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_exmc.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_exmc.h new file mode 100644 index 0000000000..b6605f3c40 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_exmc.h @@ -0,0 +1,127 @@ +/*! + \file gd32vf103_exmc.h + \brief definitions for the EXMC + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_EXMC_H +#define GD32VF103_EXMC_H + +#include "gd32vf103.h" + +/* EXMC definitions */ +#define EXMC (EXMC_BASE) /*!< EXMC register base address */ + +/* registers definitions */ +/* NOR/PSRAM */ +#define EXMC_SNCTL0 REG32(EXMC + 0x00U) /*!< EXMC SRAM/NOR flash control register 0 */ +#define EXMC_SNTCFG0 REG32(EXMC + 0x04U) /*!< EXMC SRAM/NOR flash timing configuration register 0 */ +#define EXMC_SNWTCFG0 REG32(EXMC + 0x104U) /*!< EXMC SRAM/NOR flash write timing configuration register 0 */ + +/* bits definitions */ +/* NOR/PSRAM */ +/* EXMC_SNCTLx, x=0 */ +#define EXMC_SNCTL_NRBKEN BIT(0) /*!< NOR bank enable */ +#define EXMC_SNCTL_NRMUX BIT(1) /*!< NOR bank memory address/data multiplexing */ +#define EXMC_SNCTL_NRTP BITS(2,3) /*!< NOR bank memory type */ +#define EXMC_SNCTL_NRW BITS(4,5) /*!< NOR bank memory data bus width */ +#define EXMC_SNCTL_NREN BIT(6) /*!< NOR flash access enable */ +#define EXMC_SNCTL_NRWTPOL BIT(9) /*!< NWAIT signal polarity */ +#define EXMC_SNCTL_WREN BIT(12) /*!< write enable */ +#define EXMC_SNCTL_NRWTEN BIT(13) /*!< NWAIT signal enable */ +#define EXMC_SNCTL_ASYNCWAIT BIT(15) /*!< asynchronous wait */ + +/* EXMC_SNTCFGx, x=0 */ +#define EXMC_SNTCFG_ASET BITS(0,3) /*!< address setup time */ +#define EXMC_SNTCFG_AHLD BITS(4,7) /*!< address hold time */ +#define EXMC_SNTCFG_DSET BITS(8,15) /*!< data setup time */ +#define EXMC_SNTCFG_BUSLAT BITS(16,19) /*!< bus latency */ + +/* constants definitions */ +/* EXMC NOR/SRAM timing initialize struct */ +typedef struct +{ + uint32_t bus_latency; /*!< configure the bus latency */ + uint32_t asyn_data_setuptime; /*!< configure the data setup time,asynchronous access mode valid */ + uint32_t asyn_address_holdtime; /*!< configure the address hold time,asynchronous access mode valid */ + uint32_t asyn_address_setuptime; /*!< configure the data setup time,asynchronous access mode valid */ +}exmc_norsram_timing_parameter_struct; + +/* EXMC NOR/SRAM initialize struct */ +typedef struct +{ + uint32_t norsram_region; /*!< select the region of EXMC NOR/SRAM bank */ + ControlStatus asyn_wait; /*!< enable or disable the asynchronous wait function */ + ControlStatus nwait_signal; /*!< enable or disable the NWAIT signal */ + ControlStatus memory_write; /*!< enable or disable the write operation */ + uint32_t nwait_polarity; /*!< specifies the polarity of NWAIT signal from memory */ + uint32_t databus_width; /*!< specifies the databus width of external memory */ + uint32_t memory_type; /*!< specifies the type of external memory */ + ControlStatus address_data_mux; /*!< specifies whether the data bus and address bus are multiplexed */ + exmc_norsram_timing_parameter_struct* read_write_timing; /*!< timing parameters for read and write */ +}exmc_norsram_parameter_struct; + +/* EXMC register address */ +#define EXMC_SNCTL(region) REG32(EXMC + 0x08U * (region)) /*!< EXMC SRAM/NOR flash control register */ +#define EXMC_SNTCFG(region) REG32(EXMC + 0x04U + 0x08U * (region)) /*!< EXMC SRAM/NOR flash timing configuration register */ + +/* NOR bank memory data bus width */ +#define SNCTL_NRW(regval) (BITS(4,5) & ((uint32_t)(regval) << 4)) +#define EXMC_NOR_DATABUS_WIDTH_8B SNCTL_NRW(0) /*!< NOR data width 8 bits */ +#define EXMC_NOR_DATABUS_WIDTH_16B SNCTL_NRW(1) /*!< NOR data width 16 bits */ + +/* NOR bank memory type */ +#define SNCTL_NRTP(regval) (BITS(2,3) & ((uint32_t)(regval) << 2)) +#define EXMC_MEMORY_TYPE_SRAM SNCTL_NRTP(0) /*!< SRAM,ROM */ +#define EXMC_MEMORY_TYPE_PSRAM SNCTL_NRTP(1) /*!< PSRAM,CRAM */ +#define EXMC_MEMORY_TYPE_NOR SNCTL_NRTP(2) /*!< NOR flash */ + +/* EXMC NOR/SRAM bank region definition */ +#define EXMC_BANK0_NORSRAM_REGION0 ((uint32_t)0x00000000U) /*!< bank0 NOR/SRAM region0 */ + +/* EXMC NWAIT signal polarity configuration */ +#define EXMC_NWAIT_POLARITY_LOW ((uint32_t)0x00000000U) /*!< low level is active of NWAIT */ +#define EXMC_NWAIT_POLARITY_HIGH ((uint32_t)0x00000200U) /*!< high level is active of NWAIT */ + +/* function declarations */ +/* deinitialize EXMC NOR/SRAM region */ +void exmc_norsram_deinit(uint32_t norsram_region); +/* exmc_norsram_parameter_struct parameter initialize */ +void exmc_norsram_struct_para_init(exmc_norsram_parameter_struct* exmc_norsram_init_struct); +/* initialize EXMC NOR/SRAM region */ +void exmc_norsram_init(exmc_norsram_parameter_struct* exmc_norsram_init_struct); +/* EXMC NOR/SRAM bank enable */ +void exmc_norsram_enable(uint32_t norsram_region); +/* EXMC NOR/SRAM bank disable */ +void exmc_norsram_disable(uint32_t norsram_region); + +#endif /* GD32VF103_EXMC_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_exti.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_exti.h new file mode 100644 index 0000000000..92072bb79b --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_exti.h @@ -0,0 +1,246 @@ +/*! + \file gd32vf103_exti.h + \brief definitions for the EXTI + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_EXTI_H +#define GD32VF103_EXTI_H + +#include "gd32vf103.h" + +/* EXTI definitions */ +#define EXTI EXTI_BASE + +/* registers definitions */ +#define EXTI_INTEN REG32(EXTI + 0x00U) /*!< interrupt enable register */ +#define EXTI_EVEN REG32(EXTI + 0x04U) /*!< event enable register */ +#define EXTI_RTEN REG32(EXTI + 0x08U) /*!< rising edge trigger enable register */ +#define EXTI_FTEN REG32(EXTI + 0x0CU) /*!< falling trigger enable register */ +#define EXTI_SWIEV REG32(EXTI + 0x10U) /*!< software interrupt event register */ +#define EXTI_PD REG32(EXTI + 0x14U) /*!< pending register */ + +/* bits definitions */ +/* EXTI_INTEN */ +#define EXTI_INTEN_INTEN0 BIT(0) /*!< interrupt from line 0 */ +#define EXTI_INTEN_INTEN1 BIT(1) /*!< interrupt from line 1 */ +#define EXTI_INTEN_INTEN2 BIT(2) /*!< interrupt from line 2 */ +#define EXTI_INTEN_INTEN3 BIT(3) /*!< interrupt from line 3 */ +#define EXTI_INTEN_INTEN4 BIT(4) /*!< interrupt from line 4 */ +#define EXTI_INTEN_INTEN5 BIT(5) /*!< interrupt from line 5 */ +#define EXTI_INTEN_INTEN6 BIT(6) /*!< interrupt from line 6 */ +#define EXTI_INTEN_INTEN7 BIT(7) /*!< interrupt from line 7 */ +#define EXTI_INTEN_INTEN8 BIT(8) /*!< interrupt from line 8 */ +#define EXTI_INTEN_INTEN9 BIT(9) /*!< interrupt from line 9 */ +#define EXTI_INTEN_INTEN10 BIT(10) /*!< interrupt from line 10 */ +#define EXTI_INTEN_INTEN11 BIT(11) /*!< interrupt from line 11 */ +#define EXTI_INTEN_INTEN12 BIT(12) /*!< interrupt from line 12 */ +#define EXTI_INTEN_INTEN13 BIT(13) /*!< interrupt from line 13 */ +#define EXTI_INTEN_INTEN14 BIT(14) /*!< interrupt from line 14 */ +#define EXTI_INTEN_INTEN15 BIT(15) /*!< interrupt from line 15 */ +#define EXTI_INTEN_INTEN16 BIT(16) /*!< interrupt from line 16 */ +#define EXTI_INTEN_INTEN17 BIT(17) /*!< interrupt from line 17 */ +#define EXTI_INTEN_INTEN18 BIT(18) /*!< interrupt from line 18 */ + +/* EXTI_EVEN */ +#define EXTI_EVEN_EVEN0 BIT(0) /*!< event from line 0 */ +#define EXTI_EVEN_EVEN1 BIT(1) /*!< event from line 1 */ +#define EXTI_EVEN_EVEN2 BIT(2) /*!< event from line 2 */ +#define EXTI_EVEN_EVEN3 BIT(3) /*!< event from line 3 */ +#define EXTI_EVEN_EVEN4 BIT(4) /*!< event from line 4 */ +#define EXTI_EVEN_EVEN5 BIT(5) /*!< event from line 5 */ +#define EXTI_EVEN_EVEN6 BIT(6) /*!< event from line 6 */ +#define EXTI_EVEN_EVEN7 BIT(7) /*!< event from line 7 */ +#define EXTI_EVEN_EVEN8 BIT(8) /*!< event from line 8 */ +#define EXTI_EVEN_EVEN9 BIT(9) /*!< event from line 9 */ +#define EXTI_EVEN_EVEN10 BIT(10) /*!< event from line 10 */ +#define EXTI_EVEN_EVEN11 BIT(11) /*!< event from line 11 */ +#define EXTI_EVEN_EVEN12 BIT(12) /*!< event from line 12 */ +#define EXTI_EVEN_EVEN13 BIT(13) /*!< event from line 13 */ +#define EXTI_EVEN_EVEN14 BIT(14) /*!< event from line 14 */ +#define EXTI_EVEN_EVEN15 BIT(15) /*!< event from line 15 */ +#define EXTI_EVEN_EVEN16 BIT(16) /*!< event from line 16 */ +#define EXTI_EVEN_EVEN17 BIT(17) /*!< event from line 17 */ +#define EXTI_EVEN_EVEN18 BIT(18) /*!< event from line 18 */ + +/* EXTI_RTEN */ +#define EXTI_RTEN_RTEN0 BIT(0) /*!< rising edge from line 0 */ +#define EXTI_RTEN_RTEN1 BIT(1) /*!< rising edge from line 1 */ +#define EXTI_RTEN_RTEN2 BIT(2) /*!< rising edge from line 2 */ +#define EXTI_RTEN_RTEN3 BIT(3) /*!< rising edge from line 3 */ +#define EXTI_RTEN_RTEN4 BIT(4) /*!< rising edge from line 4 */ +#define EXTI_RTEN_RTEN5 BIT(5) /*!< rising edge from line 5 */ +#define EXTI_RTEN_RTEN6 BIT(6) /*!< rising edge from line 6 */ +#define EXTI_RTEN_RTEN7 BIT(7) /*!< rising edge from line 7 */ +#define EXTI_RTEN_RTEN8 BIT(8) /*!< rising edge from line 8 */ +#define EXTI_RTEN_RTEN9 BIT(9) /*!< rising edge from line 9 */ +#define EXTI_RTEN_RTEN10 BIT(10) /*!< rising edge from line 10 */ +#define EXTI_RTEN_RTEN11 BIT(11) /*!< rising edge from line 11 */ +#define EXTI_RTEN_RTEN12 BIT(12) /*!< rising edge from line 12 */ +#define EXTI_RTEN_RTEN13 BIT(13) /*!< rising edge from line 13 */ +#define EXTI_RTEN_RTEN14 BIT(14) /*!< rising edge from line 14 */ +#define EXTI_RTEN_RTEN15 BIT(15) /*!< rising edge from line 15 */ +#define EXTI_RTEN_RTEN16 BIT(16) /*!< rising edge from line 16 */ +#define EXTI_RTEN_RTEN17 BIT(17) /*!< rising edge from line 17 */ +#define EXTI_RTEN_RTEN18 BIT(18) /*!< rising edge from line 18 */ + +/* EXTI_FTEN */ +#define EXTI_FTEN_FTEN0 BIT(0) /*!< falling edge from line 0 */ +#define EXTI_FTEN_FTEN1 BIT(1) /*!< falling edge from line 1 */ +#define EXTI_FTEN_FTEN2 BIT(2) /*!< falling edge from line 2 */ +#define EXTI_FTEN_FTEN3 BIT(3) /*!< falling edge from line 3 */ +#define EXTI_FTEN_FTEN4 BIT(4) /*!< falling edge from line 4 */ +#define EXTI_FTEN_FTEN5 BIT(5) /*!< falling edge from line 5 */ +#define EXTI_FTEN_FTEN6 BIT(6) /*!< falling edge from line 6 */ +#define EXTI_FTEN_FTEN7 BIT(7) /*!< falling edge from line 7 */ +#define EXTI_FTEN_FTEN8 BIT(8) /*!< falling edge from line 8 */ +#define EXTI_FTEN_FTEN9 BIT(9) /*!< falling edge from line 9 */ +#define EXTI_FTEN_FTEN10 BIT(10) /*!< falling edge from line 10 */ +#define EXTI_FTEN_FTEN11 BIT(11) /*!< falling edge from line 11 */ +#define EXTI_FTEN_FTEN12 BIT(12) /*!< falling edge from line 12 */ +#define EXTI_FTEN_FTEN13 BIT(13) /*!< falling edge from line 13 */ +#define EXTI_FTEN_FTEN14 BIT(14) /*!< falling edge from line 14 */ +#define EXTI_FTEN_FTEN15 BIT(15) /*!< falling edge from line 15 */ +#define EXTI_FTEN_FTEN16 BIT(16) /*!< falling edge from line 16 */ +#define EXTI_FTEN_FTEN17 BIT(17) /*!< falling edge from line 17 */ +#define EXTI_FTEN_FTEN18 BIT(18) /*!< falling edge from line 18 */ + +/* EXTI_SWIEV */ +#define EXTI_SWIEV_SWIEV0 BIT(0) /*!< software interrupt/event request from line 0 */ +#define EXTI_SWIEV_SWIEV1 BIT(1) /*!< software interrupt/event request from line 1 */ +#define EXTI_SWIEV_SWIEV2 BIT(2) /*!< software interrupt/event request from line 2 */ +#define EXTI_SWIEV_SWIEV3 BIT(3) /*!< software interrupt/event request from line 3 */ +#define EXTI_SWIEV_SWIEV4 BIT(4) /*!< software interrupt/event request from line 4 */ +#define EXTI_SWIEV_SWIEV5 BIT(5) /*!< software interrupt/event request from line 5 */ +#define EXTI_SWIEV_SWIEV6 BIT(6) /*!< software interrupt/event request from line 6 */ +#define EXTI_SWIEV_SWIEV7 BIT(7) /*!< software interrupt/event request from line 7 */ +#define EXTI_SWIEV_SWIEV8 BIT(8) /*!< software interrupt/event request from line 8 */ +#define EXTI_SWIEV_SWIEV9 BIT(9) /*!< software interrupt/event request from line 9 */ +#define EXTI_SWIEV_SWIEV10 BIT(10) /*!< software interrupt/event request from line 10 */ +#define EXTI_SWIEV_SWIEV11 BIT(11) /*!< software interrupt/event request from line 11 */ +#define EXTI_SWIEV_SWIEV12 BIT(12) /*!< software interrupt/event request from line 12 */ +#define EXTI_SWIEV_SWIEV13 BIT(13) /*!< software interrupt/event request from line 13 */ +#define EXTI_SWIEV_SWIEV14 BIT(14) /*!< software interrupt/event request from line 14 */ +#define EXTI_SWIEV_SWIEV15 BIT(15) /*!< software interrupt/event request from line 15 */ +#define EXTI_SWIEV_SWIEV16 BIT(16) /*!< software interrupt/event request from line 16 */ +#define EXTI_SWIEV_SWIEV17 BIT(17) /*!< software interrupt/event request from line 17 */ +#define EXTI_SWIEV_SWIEV18 BIT(18) /*!< software interrupt/event request from line 18 */ + +/* EXTI_PD */ +#define EXTI_PD_PD0 BIT(0) /*!< interrupt/event pending status from line 0 */ +#define EXTI_PD_PD1 BIT(1) /*!< interrupt/event pending status from line 1 */ +#define EXTI_PD_PD2 BIT(2) /*!< interrupt/event pending status from line 2 */ +#define EXTI_PD_PD3 BIT(3) /*!< interrupt/event pending status from line 3 */ +#define EXTI_PD_PD4 BIT(4) /*!< interrupt/event pending status from line 4 */ +#define EXTI_PD_PD5 BIT(5) /*!< interrupt/event pending status from line 5 */ +#define EXTI_PD_PD6 BIT(6) /*!< interrupt/event pending status from line 6 */ +#define EXTI_PD_PD7 BIT(7) /*!< interrupt/event pending status from line 7 */ +#define EXTI_PD_PD8 BIT(8) /*!< interrupt/event pending status from line 8 */ +#define EXTI_PD_PD9 BIT(9) /*!< interrupt/event pending status from line 9 */ +#define EXTI_PD_PD10 BIT(10) /*!< interrupt/event pending status from line 10 */ +#define EXTI_PD_PD11 BIT(11) /*!< interrupt/event pending status from line 11 */ +#define EXTI_PD_PD12 BIT(12) /*!< interrupt/event pending status from line 12 */ +#define EXTI_PD_PD13 BIT(13) /*!< interrupt/event pending status from line 13 */ +#define EXTI_PD_PD14 BIT(14) /*!< interrupt/event pending status from line 14 */ +#define EXTI_PD_PD15 BIT(15) /*!< interrupt/event pending status from line 15 */ +#define EXTI_PD_PD16 BIT(16) /*!< interrupt/event pending status from line 16 */ +#define EXTI_PD_PD17 BIT(17) /*!< interrupt/event pending status from line 17 */ +#define EXTI_PD_PD18 BIT(18) /*!< interrupt/event pending status from line 18 */ + +/* constants definitions */ +/* EXTI line number */ +typedef enum { + EXTI_0 = BIT(0), /*!< EXTI line 0 */ + EXTI_1 = BIT(1), /*!< EXTI line 1 */ + EXTI_2 = BIT(2), /*!< EXTI line 2 */ + EXTI_3 = BIT(3), /*!< EXTI line 3 */ + EXTI_4 = BIT(4), /*!< EXTI line 4 */ + EXTI_5 = BIT(5), /*!< EXTI line 5 */ + EXTI_6 = BIT(6), /*!< EXTI line 6 */ + EXTI_7 = BIT(7), /*!< EXTI line 7 */ + EXTI_8 = BIT(8), /*!< EXTI line 8 */ + EXTI_9 = BIT(9), /*!< EXTI line 9 */ + EXTI_10 = BIT(10), /*!< EXTI line 10 */ + EXTI_11 = BIT(11), /*!< EXTI line 11 */ + EXTI_12 = BIT(12), /*!< EXTI line 12 */ + EXTI_13 = BIT(13), /*!< EXTI line 13 */ + EXTI_14 = BIT(14), /*!< EXTI line 14 */ + EXTI_15 = BIT(15), /*!< EXTI line 15 */ + EXTI_16 = BIT(16), /*!< EXTI line 16 */ + EXTI_17 = BIT(17), /*!< EXTI line 17 */ + EXTI_18 = BIT(18), /*!< EXTI line 18 */ +} exti_line_enum; + +/* external interrupt and event */ +typedef enum { + EXTI_INTERRUPT = 0, /*!< EXTI interrupt mode */ + EXTI_EVENT /*!< EXTI event mode */ +} exti_mode_enum; + +/* interrupt trigger mode */ +typedef enum { + EXTI_TRIG_RISING = 0, /*!< EXTI rising edge trigger */ + EXTI_TRIG_FALLING, /*!< EXTI falling edge trigger */ + EXTI_TRIG_BOTH, /*!< EXTI rising edge and falling edge trigger */ + EXTI_TRIG_NONE /*!< without rising edge or falling edge trigger */ +} exti_trig_type_enum; + +/* function declarations */ +/* initialization, EXTI lines configuration functions */ +/* deinitialize the EXTI */ +void exti_deinit(void); +/* enable the configuration of EXTI initialize */ +void exti_init(exti_line_enum linex, exti_mode_enum mode, exti_trig_type_enum trig_type); +/* enable the interrupts from EXTI line x */ +void exti_interrupt_enable(exti_line_enum linex); +/* enable the events from EXTI line x */ +void exti_event_enable(exti_line_enum linex); +/* disable the interrupts from EXTI line x */ +void exti_interrupt_disable(exti_line_enum linex); +/* disable the events from EXTI line x */ +void exti_event_disable(exti_line_enum linex); + +/* interrupt & flag functions */ +/* get EXTI lines pending flag */ +FlagStatus exti_flag_get(exti_line_enum linex); +/* clear EXTI lines pending flag */ +void exti_flag_clear(exti_line_enum linex); +/* get EXTI lines flag when the interrupt flag is set */ +FlagStatus exti_interrupt_flag_get(exti_line_enum linex); +/* clear EXTI lines pending flag */ +void exti_interrupt_flag_clear(exti_line_enum linex); +/* enable the EXTI software interrupt event */ +void exti_software_interrupt_enable(exti_line_enum linex); +/* disable the EXTI software interrupt event */ +void exti_software_interrupt_disable(exti_line_enum linex); + +#endif /* GD32VF103_EXTI_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_fmc.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_fmc.h new file mode 100644 index 0000000000..6a4e7c859f --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_fmc.h @@ -0,0 +1,313 @@ +/*! + \file gd32vf103_fmc.h + \brief definitions for the FMC + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2019-09-18, V1.0.1, firmware for GD32VF103 + \version 2020-02-20, V1.0.2, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_FMC_H +#define GD32VF103_FMC_H + +#include "gd32vf103.h" + +/* FMC and option byte definition */ +#define FMC FMC_BASE /*!< FMC register base address */ +#define OB OB_BASE /*!< option bytes base address */ + +/* registers definitions */ +#define FMC_WS REG32((FMC) + 0x00U) /*!< FMC wait state register */ +#define FMC_KEY REG32((FMC) + 0x04U) /*!< FMC unlock key register */ +#define FMC_OBKEY REG32((FMC) + 0x08U) /*!< FMC option bytes unlock key register */ +#define FMC_STAT REG32((FMC) + 0x0CU) /*!< FMC status register */ +#define FMC_CTL REG32((FMC) + 0x10U) /*!< FMC control register */ +#define FMC_ADDR REG32((FMC) + 0x14U) /*!< FMC address register */ +#define FMC_OBSTAT REG32((FMC) + 0x1CU) /*!< FMC option bytes status register */ +#define FMC_WP REG32((FMC) + 0x20U) /*!< FMC erase/program protection register */ +#define FMC_PID REG32((FMC) + 0x100U) /*!< FMC product ID register */ + +#define OB_SPC REG16((OB) + 0x00U) /*!< option byte security protection value */ +#define OB_USER REG16((OB) + 0x02U) /*!< option byte user value*/ +#define OB_WP0 REG16((OB) + 0x08U) /*!< option byte write protection 0 */ +#define OB_WP1 REG16((OB) + 0x0AU) /*!< option byte write protection 1 */ +#define OB_WP2 REG16((OB) + 0x0CU) /*!< option byte write protection 2 */ +#define OB_WP3 REG16((OB) + 0x0EU) /*!< option byte write protection 3 */ + +/* bits definitions */ +/* FMC_WS */ +#define FMC_WS_WSCNT BITS(0,2) /*!< wait state counter */ + +/* FMC_KEY */ +#define FMC_KEY_KEY BITS(0,31) /*!< FMC_CTL unlock key bits */ + +/* FMC_OBKEY */ +#define FMC_OBKEY_OBKEY BITS(0,31) /*!< option bytes unlock key bits */ + +/* FMC_STAT */ +#define FMC_STAT_BUSY BIT(0) /*!< flash busy flag bit */ +#define FMC_STAT_PGERR BIT(2) /*!< flash program error flag bit */ +#define FMC_STAT_WPERR BIT(4) /*!< erase/program protection error flag bit */ +#define FMC_STAT_ENDF BIT(5) /*!< end of operation flag bit */ + +/* FMC_CTL */ +#define FMC_CTL_PG BIT(0) /*!< main flash program command bit */ +#define FMC_CTL_PER BIT(1) /*!< main flash page erase command bit */ +#define FMC_CTL_MER BIT(2) /*!< main flash mass erase command bit */ +#define FMC_CTL_OBPG BIT(4) /*!< option bytes program command bit */ +#define FMC_CTL_OBER BIT(5) /*!< option bytes erase command bit */ +#define FMC_CTL_START BIT(6) /*!< send erase command to FMC bit */ +#define FMC_CTL_LK BIT(7) /*!< FMC_CTL lock bit */ +#define FMC_CTL_OBWEN BIT(9) /*!< option bytes erase/program enable bit */ +#define FMC_CTL_ERRIE BIT(10) /*!< error interrupt enable bit */ +#define FMC_CTL_ENDIE BIT(12) /*!< end of operation interrupt enable bit */ + +/* FMC_ADDR */ +#define FMC_ADDR0_ADDR BITS(0,31) /*!< Flash erase/program command address bits */ + +/* FMC_OBSTAT */ +#define FMC_OBSTAT_OBERR BIT(0) /*!< option bytes read error bit. */ +#define FMC_OBSTAT_SPC BIT(1) /*!< option bytes security protection code */ +#define FMC_OBSTAT_USER BITS(2,9) /*!< store USER of option bytes block after system reset */ +#define FMC_OBSTAT_DATA BITS(10,25) /*!< store DATA of option bytes block after system reset. */ + +/* FMC_WP */ +#define FMC_WP_WP BITS(0,31) /*!< store WP of option bytes block after system reset */ + +/* FMC_WSEN */ +#define FMC_WSEN_WSEN BIT(0) /*!< FMC wait state enable bit */ + +/* FMC_PID */ +#define FMC_PID_PID BITS(0,31) /*!< product ID bits */ + +/* constants definitions */ +/* define the FMC bit position and its register index offset */ +#define FMC_REGIDX_BIT(regidx, bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos)) +#define FMC_REG_VAL(offset) (REG32(FMC + ((uint32_t)(offset) >> 6))) +#define FMC_BIT_POS(val) ((uint32_t)(val) & 0x1FU) +#define FMC_REGIDX_BITS(regidx, bitpos0, bitpos1) (((uint32_t)(regidx) << 12) | ((uint32_t)(bitpos0) << 6) | (uint32_t)(bitpos1)) +#define FMC_REG_VALS(offset) (REG32(FMC + ((uint32_t)(offset) >> 12))) +#define FMC_BIT_POS0(val) (((uint32_t)(val) >> 6) & 0x1FU) +#define FMC_BIT_POS1(val) ((uint32_t)(val) & 0x1FU) +#define FMC_REG_OFFSET_GET(flag) ((uint32_t)(flag) >> 12) + +/* configuration register */ +#define FMC_STAT_REG_OFFSET 0x0CU /*!< status register offset */ +#define FMC_CTL_REG_OFFSET 0x10U /*!< control register offset */ +#define FMC_OBSTAT_REG_OFFSET 0x1CU /*!< option byte status register offset */ + +/* fmc state */ +typedef enum +{ + FMC_READY, /*!< the operation has been completed */ + FMC_BUSY, /*!< the operation is in progress */ + FMC_PGERR, /*!< program error */ + FMC_WPERR, /*!< erase/program protection error */ + FMC_TOERR, /*!< timeout error */ +}fmc_state_enum; + +/* FMC interrupt enable */ +typedef enum +{ + FMC_INT_END = FMC_CTL_ENDIE, /*!< enable FMC end of program interrupt */ + FMC_INT_ERR = FMC_CTL_ERRIE, /*!< enable FMC error interrupt */ +}fmc_int_enum; + +/* FMC flags */ +typedef enum +{ + FMC_FLAG_BUSY = FMC_STAT_BUSY, /*!< FMC busy flag */ + FMC_FLAG_PGERR = FMC_STAT_PGERR, /*!< FMC operation error flag */ + FMC_FLAG_WPERR = FMC_STAT_WPERR, /*!< FMC erase/program protection error flag */ + FMC_FLAG_END = FMC_STAT_ENDF, /*!< FMC end of operation flag */ +}fmc_flag_enum; + +/* FMC interrupt flags */ +typedef enum +{ + FMC_INT_FLAG_PGERR = FMC_STAT_PGERR, /*!< FMC operation error interrupt flag */ + FMC_INT_FLAG_WPERR = FMC_STAT_WPERR, /*!< FMC erase/program protection error interrupt flag */ + FMC_INT_FLAG_END = FMC_STAT_ENDF, /*!< FMC end of operation interrupt flag */ +}fmc_interrupt_flag_enum; + +/* unlock key */ +#define UNLOCK_KEY0 ((uint32_t)0x45670123U) /*!< unlock key 0 */ +#define UNLOCK_KEY1 ((uint32_t)0xCDEF89ABU) /*!< unlock key 1 */ + +/* FMC wait state counter */ +#define WS_WSCNT(regval) (BITS(0,2) & ((uint32_t)(regval))) +#define WS_WSCNT_0 WS_WSCNT(0) /*!< FMC 0 wait */ +#define WS_WSCNT_1 WS_WSCNT(1) /*!< FMC 1 wait */ +#define WS_WSCNT_2 WS_WSCNT(2) /*!< FMC 2 wait */ + +/* option bytes software/hardware free watch dog timer */ +#define OB_FWDGT_SW ((uint8_t)0x01U) /*!< software free watchdog */ +#define OB_FWDGT_HW ((uint8_t)0x00U) /*!< hardware free watchdog */ + +/* option bytes reset or not entering deep sleep mode */ +#define OB_DEEPSLEEP_NRST ((uint8_t)0x02U) /*!< no reset when entering deepsleep mode */ +#define OB_DEEPSLEEP_RST ((uint8_t)0x00U) /*!< generate a reset instead of entering deepsleep mode */ + +/* option bytes reset or not entering standby mode */ +#define OB_STDBY_NRST ((uint8_t)0x04U) /*!< no reset when entering deepsleep mode */ +#define OB_STDBY_RST ((uint8_t)0x00U) /*!< generate a reset instead of entering standby mode */ + +/* option bytes boot bank value */ +#define OB_BOOT_B0 ((uint8_t)0x08U) /*!< boot from bank0 */ + +#define OB_USER_MASK ((uint8_t)0xF0U) /*!< MASK value */ + +/* read protect configure */ +#define FMC_NSPC ((uint8_t)0xA5U) /*!< no security protection */ +#define FMC_USPC ((uint8_t)0xBBU) /*!< under security protection */ + +/* OB_SPC */ +#define OB_SPC_SPC ((uint32_t)0x000000FFU) /*!< option byte security protection value */ +#define OB_SPC_SPC_N ((uint32_t)0x0000FF00U) /*!< option byte security protection complement value */ + +/* OB_USER */ +#define OB_USER_USER ((uint32_t)0x00FF0000U) /*!< user option value */ +#define OB_USER_USER_N ((uint32_t)0xFF000000U) /*!< user option complement value */ + +/* OB_WP0 */ +#define OB_WP0_WP0 ((uint32_t)0x000000FFU) /*!< FMC write protection option value */ + +/* OB_WP1 */ +#define OB_WP1_WP1 ((uint32_t)0x0000FF00U) /*!< FMC write protection option complement value */ + +/* OB_WP2 */ +#define OB_WP2_WP2 ((uint32_t)0x00FF0000U) /*!< FMC write protection option value */ + +/* OB_WP3 */ +#define OB_WP3_WP3 ((uint32_t)0xFF000000U) /*!< FMC write protection option complement value */ + +/* option bytes write protection */ +#define OB_WP_0 ((uint32_t)0x00000001U) /*!< erase/program protection of sector 0 */ +#define OB_WP_1 ((uint32_t)0x00000002U) /*!< erase/program protection of sector 1 */ +#define OB_WP_2 ((uint32_t)0x00000004U) /*!< erase/program protection of sector 2 */ +#define OB_WP_3 ((uint32_t)0x00000008U) /*!< erase/program protection of sector 3 */ +#define OB_WP_4 ((uint32_t)0x00000010U) /*!< erase/program protection of sector 4 */ +#define OB_WP_5 ((uint32_t)0x00000020U) /*!< erase/program protection of sector 5 */ +#define OB_WP_6 ((uint32_t)0x00000040U) /*!< erase/program protection of sector 6 */ +#define OB_WP_7 ((uint32_t)0x00000080U) /*!< erase/program protection of sector 7 */ +#define OB_WP_8 ((uint32_t)0x00000100U) /*!< erase/program protection of sector 8 */ +#define OB_WP_9 ((uint32_t)0x00000200U) /*!< erase/program protection of sector 9 */ +#define OB_WP_10 ((uint32_t)0x00000400U) /*!< erase/program protection of sector 10 */ +#define OB_WP_11 ((uint32_t)0x00000800U) /*!< erase/program protection of sector 11 */ +#define OB_WP_12 ((uint32_t)0x00001000U) /*!< erase/program protection of sector 12 */ +#define OB_WP_13 ((uint32_t)0x00002000U) /*!< erase/program protection of sector 13 */ +#define OB_WP_14 ((uint32_t)0x00004000U) /*!< erase/program protection of sector 14 */ +#define OB_WP_15 ((uint32_t)0x00008000U) /*!< erase/program protection of sector 15 */ +#define OB_WP_16 ((uint32_t)0x00010000U) /*!< erase/program protection of sector 16 */ +#define OB_WP_17 ((uint32_t)0x00020000U) /*!< erase/program protection of sector 17 */ +#define OB_WP_18 ((uint32_t)0x00040000U) /*!< erase/program protection of sector 18 */ +#define OB_WP_19 ((uint32_t)0x00080000U) /*!< erase/program protection of sector 19 */ +#define OB_WP_20 ((uint32_t)0x00100000U) /*!< erase/program protection of sector 20 */ +#define OB_WP_21 ((uint32_t)0x00200000U) /*!< erase/program protection of sector 21 */ +#define OB_WP_22 ((uint32_t)0x00400000U) /*!< erase/program protection of sector 22 */ +#define OB_WP_23 ((uint32_t)0x00800000U) /*!< erase/program protection of sector 23 */ +#define OB_WP_24 ((uint32_t)0x01000000U) /*!< erase/program protection of sector 24 */ +#define OB_WP_25 ((uint32_t)0x02000000U) /*!< erase/program protection of sector 25 */ +#define OB_WP_26 ((uint32_t)0x04000000U) /*!< erase/program protection of sector 26 */ +#define OB_WP_27 ((uint32_t)0x08000000U) /*!< erase/program protection of sector 27 */ +#define OB_WP_28 ((uint32_t)0x10000000U) /*!< erase/program protection of sector 28 */ +#define OB_WP_29 ((uint32_t)0x20000000U) /*!< erase/program protection of sector 29 */ +#define OB_WP_30 ((uint32_t)0x40000000U) /*!< erase/program protection of sector 30 */ +#define OB_WP_31 ((uint32_t)0x80000000U) /*!< erase/program protection of sector 31 */ +#define OB_WP_ALL ((uint32_t)0xFFFFFFFFU) /*!< erase/program protection of all sectors */ + +/* FMC timeout */ +#define FMC_TIMEOUT_COUNT ((uint32_t)0x000F0000U) /*!< FMC timeout count value */ + +/* FMC BANK address */ +#define FMC_SIZE (*(uint16_t *)0x1FFFF7E0U) /*!< FMC size */ +#define SRAM_SIZE (*(uint16_t *)0x1FFFF7E2U) /*!< SRAM size*/ + +/* function declarations */ +/* FMC main memory programming functions */ +/* set the FMC wait state counter */ +void fmc_wscnt_set(uint32_t wscnt); +/* unlock the main FMC operation */ +void fmc_unlock(void); +/* lock the main FMC operation */ +void fmc_lock(void); +/* FMC erase page */ +fmc_state_enum fmc_page_erase(uint32_t page_address); +/* FMC erase whole chip */ +fmc_state_enum fmc_mass_erase(void); +/* FMC program a word at the corresponding address */ +fmc_state_enum fmc_word_program(uint32_t address, uint32_t data); +/* FMC program a half word at the corresponding address */ +fmc_state_enum fmc_halfword_program(uint32_t address, uint16_t data); + +/* FMC option bytes programming functions */ +/* unlock the option byte operation */ +void ob_unlock(void); +/* lock the option byte operation */ +void ob_lock(void); +/* erase the FMC option byte */ +fmc_state_enum ob_erase(void); +/* enable write protection */ +fmc_state_enum ob_write_protection_enable(uint32_t ob_wp); +/* configure security protection */ +fmc_state_enum ob_security_protection_config(uint8_t ob_spc); +/* program the FMC user option byte */ +fmc_state_enum ob_user_write(uint8_t ob_fwdgt, uint8_t ob_deepsleep, uint8_t ob_stdby, uint8_t ob_boot); +/* program the FMC data option byte */ +fmc_state_enum ob_data_program(uint32_t address, uint8_t data); +/* get OB_USER in register FMC_OBSTAT */ +uint8_t ob_user_get(void); +/* get OB_DATA in register FMC_OBSTAT */ +uint16_t ob_data_get(void); +/* get the FMC option byte write protection */ +uint32_t ob_write_protection_get(void); +/* get FMC option byte security protection state */ +FlagStatus ob_spc_get(void); + +/* FMC interrupts and flags management functions */ +/* enable FMC interrupt */ +void fmc_interrupt_enable(fmc_int_enum interrupt); +/* disable FMC interrupt */ +void fmc_interrupt_disable(fmc_int_enum interrupt); +/* check flag is set or not */ +FlagStatus fmc_flag_get(fmc_flag_enum flag); +/* clear the FMC flag */ +void fmc_flag_clear(fmc_flag_enum flag); +/* get FMC interrupt flag state */ +FlagStatus fmc_interrupt_flag_get(fmc_interrupt_flag_enum flag); +/* clear FMC interrupt flag state */ +void fmc_interrupt_flag_clear(fmc_interrupt_flag_enum flag); +/* return the FMC state */ +fmc_state_enum fmc_state_get(void); +/* check FMC ready or not */ +fmc_state_enum fmc_ready_wait(uint32_t timeout); + +#endif /* GD32VF103_FMC_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_fwdgt.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_fwdgt.h new file mode 100644 index 0000000000..50a0873ec1 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_fwdgt.h @@ -0,0 +1,105 @@ +/*! + \file gd32vf103_fwdgt.h + \brief definitions for the FWDGT + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_FWDGT_H +#define GD32VF103_FWDGT_H + +#include "gd32vf103.h" + +/* FWDGT definitions */ +#define FWDGT FWDGT_BASE /*!< FWDGT base address */ + +/* registers definitions */ +#define FWDGT_CTL REG32((FWDGT) + 0x00000000U) /*!< FWDGT control register */ +#define FWDGT_PSC REG32((FWDGT) + 0x00000004U) /*!< FWDGT prescaler register */ +#define FWDGT_RLD REG32((FWDGT) + 0x00000008U) /*!< FWDGT reload register */ +#define FWDGT_STAT REG32((FWDGT) + 0x0000000CU) /*!< FWDGT status register */ + +/* bits definitions */ +/* FWDGT_CTL */ +#define FWDGT_CTL_CMD BITS(0,15) /*!< FWDGT command value */ + +/* FWDGT_PSC */ +#define FWDGT_PSC_PSC BITS(0,2) /*!< FWDGT prescaler divider value */ + +/* FWDGT_RLD */ +#define FWDGT_RLD_RLD BITS(0,11) /*!< FWDGT counter reload value */ + +/* FWDGT_STAT */ +#define FWDGT_STAT_PUD BIT(0) /*!< FWDGT prescaler divider value update */ +#define FWDGT_STAT_RUD BIT(1) /*!< FWDGT counter reload value update */ + +/* constants definitions */ +/* psc register value */ +#define PSC_PSC(regval) (BITS(0,2) & ((uint32_t)(regval) << 0)) +#define FWDGT_PSC_DIV4 ((uint8_t)PSC_PSC(0)) /*!< FWDGT prescaler set to 4 */ +#define FWDGT_PSC_DIV8 ((uint8_t)PSC_PSC(1)) /*!< FWDGT prescaler set to 8 */ +#define FWDGT_PSC_DIV16 ((uint8_t)PSC_PSC(2)) /*!< FWDGT prescaler set to 16 */ +#define FWDGT_PSC_DIV32 ((uint8_t)PSC_PSC(3)) /*!< FWDGT prescaler set to 32 */ +#define FWDGT_PSC_DIV64 ((uint8_t)PSC_PSC(4)) /*!< FWDGT prescaler set to 64 */ +#define FWDGT_PSC_DIV128 ((uint8_t)PSC_PSC(5)) /*!< FWDGT prescaler set to 128 */ +#define FWDGT_PSC_DIV256 ((uint8_t)PSC_PSC(6)) /*!< FWDGT prescaler set to 256 */ + +/* control value */ +#define FWDGT_WRITEACCESS_ENABLE ((uint16_t)0x5555U) /*!< FWDGT_CTL bits write access enable value */ +#define FWDGT_WRITEACCESS_DISABLE ((uint16_t)0x0000U) /*!< FWDGT_CTL bits write access disable value */ +#define FWDGT_KEY_RELOAD ((uint16_t)0xAAAAU) /*!< FWDGT_CTL bits fwdgt counter reload value */ +#define FWDGT_KEY_ENABLE ((uint16_t)0xCCCCU) /*!< FWDGT_CTL bits fwdgt counter enable value */ + +/* FWDGT timeout value */ +#define FWDGT_PSC_TIMEOUT ((uint32_t)0x000FFFFFU) /*!< FWDGT_PSC register write operation state flag timeout */ +#define FWDGT_RLD_TIMEOUT ((uint32_t)0x000FFFFFU) /*!< FWDGT_RLD register write operation state flag timeout */ + +/* FWDGT flag definitions */ +#define FWDGT_FLAG_PUD FWDGT_STAT_PUD /*!< FWDGT prescaler divider value update flag */ +#define FWDGT_FLAG_RUD FWDGT_STAT_RUD /*!< FWDGT counter reload value update flag */ + +/* function declarations */ +/* enable write access to FWDGT_PSC and FWDGT_RLD */ +void fwdgt_write_enable(void); +/* disable write access to FWDGT_PSC and FWDGT_RLD */ +void fwdgt_write_disable(void); +/* start the free watchdog timer counter */ +void fwdgt_enable(void); + +/* reload the counter of FWDGT */ +void fwdgt_counter_reload(void); +/* configure counter reload value, and prescaler divider value */ +ErrStatus fwdgt_config(uint16_t reload_value, uint8_t prescaler_div); + +/* get flag state of FWDGT */ +FlagStatus fwdgt_flag_get(uint16_t flag); + +#endif /* GD32VF103_FWDGT_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_gpio.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_gpio.h new file mode 100644 index 0000000000..7c457ac39b --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_gpio.h @@ -0,0 +1,422 @@ +/*! + \file gd32vf103_gpio.h + \brief definitions for the GPIO + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_GPIO_H +#define GD32VF103_GPIO_H + +#include "gd32vf103.h" + +/* GPIOx(x=A,B,C,D,E) definitions */ +#define GPIOA (GPIO_BASE + 0x00000000U) +#define GPIOB (GPIO_BASE + 0x00000400U) +#define GPIOC (GPIO_BASE + 0x00000800U) +#define GPIOD (GPIO_BASE + 0x00000C00U) +#define GPIOE (GPIO_BASE + 0x00001000U) + +/* AFIO definitions */ +#define AFIO AFIO_BASE + +/* registers definitions */ + +/* GPIO registers definitions */ +#define GPIO_CTL0(gpiox) REG32((gpiox) + 0x00U) /*!< GPIO port control register 0 */ +#define GPIO_CTL1(gpiox) REG32((gpiox) + 0x04U) /*!< GPIO port control register 1 */ +#define GPIO_ISTAT(gpiox) REG32((gpiox) + 0x08U) /*!< GPIO port input status register */ +#define GPIO_OCTL(gpiox) REG32((gpiox) + 0x0CU) /*!< GPIO port output control register */ +#define GPIO_BOP(gpiox) REG32((gpiox) + 0x10U) /*!< GPIO port bit operation register */ +#define GPIO_BC(gpiox) REG32((gpiox) + 0x14U) /*!< GPIO bit clear register */ +#define GPIO_LOCK(gpiox) REG32((gpiox) + 0x18U) /*!< GPIO port configuration lock register */ + +/* AFIO registers definitions */ +#define AFIO_EC REG32(AFIO + 0x00U) /*!< AFIO event control register */ +#define AFIO_PCF0 REG32(AFIO + 0x04U) /*!< AFIO port configuration register 0 */ +#define AFIO_EXTISS0 REG32(AFIO + 0x08U) /*!< AFIO port EXTI sources selection register 0 */ +#define AFIO_EXTISS1 REG32(AFIO + 0x0CU) /*!< AFIO port EXTI sources selection register 1 */ +#define AFIO_EXTISS2 REG32(AFIO + 0x10U) /*!< AFIO port EXTI sources selection register 2 */ +#define AFIO_EXTISS3 REG32(AFIO + 0x14U) /*!< AFIO port EXTI sources selection register 3 */ +#define AFIO_PCF1 REG32(AFIO + 0x1CU) /*!< AFIO port configuration register 1 */ + +/* bits definitions */ +/* GPIO_CTL0 */ +#define GPIO_CTL0_MD0 BITS(0, 1) /*!< port 0 mode bits */ +#define GPIO_CTL0_CTL0 BITS(2, 3) /*!< pin 0 configuration bits */ +#define GPIO_CTL0_MD1 BITS(4, 5) /*!< port 1 mode bits */ +#define GPIO_CTL0_CTL1 BITS(6, 7) /*!< pin 1 configuration bits */ +#define GPIO_CTL0_MD2 BITS(8, 9) /*!< port 2 mode bits */ +#define GPIO_CTL0_CTL2 BITS(10, 11) /*!< pin 2 configuration bits */ +#define GPIO_CTL0_MD3 BITS(12, 13) /*!< port 3 mode bits */ +#define GPIO_CTL0_CTL3 BITS(14, 15) /*!< pin 3 configuration bits */ +#define GPIO_CTL0_MD4 BITS(16, 17) /*!< port 4 mode bits */ +#define GPIO_CTL0_CTL4 BITS(18, 19) /*!< pin 4 configuration bits */ +#define GPIO_CTL0_MD5 BITS(20, 21) /*!< port 5 mode bits */ +#define GPIO_CTL0_CTL5 BITS(22, 23) /*!< pin 5 configuration bits */ +#define GPIO_CTL0_MD6 BITS(24, 25) /*!< port 6 mode bits */ +#define GPIO_CTL0_CTL6 BITS(26, 27) /*!< pin 6 configuration bits */ +#define GPIO_CTL0_MD7 BITS(28, 29) /*!< port 7 mode bits */ +#define GPIO_CTL0_CTL7 BITS(30, 31) /*!< pin 7 configuration bits */ + +/* GPIO_CTL1 */ +#define GPIO_CTL1_MD8 BITS(0, 1) /*!< port 8 mode bits */ +#define GPIO_CTL1_CTL8 BITS(2, 3) /*!< pin 8 configuration bits */ +#define GPIO_CTL1_MD9 BITS(4, 5) /*!< port 9 mode bits */ +#define GPIO_CTL1_CTL9 BITS(6, 7) /*!< pin 9 configuration bits */ +#define GPIO_CTL1_MD10 BITS(8, 9) /*!< port 10 mode bits */ +#define GPIO_CTL1_CTL10 BITS(10, 11) /*!< pin 10 configuration bits */ +#define GPIO_CTL1_MD11 BITS(12, 13) /*!< port 11 mode bits */ +#define GPIO_CTL1_CTL11 BITS(14, 15) /*!< pin 11 configuration bits */ +#define GPIO_CTL1_MD12 BITS(16, 17) /*!< port 12 mode bits */ +#define GPIO_CTL1_CTL12 BITS(18, 19) /*!< pin 12 configuration bits */ +#define GPIO_CTL1_MD13 BITS(20, 21) /*!< port 13 mode bits */ +#define GPIO_CTL1_CTL13 BITS(22, 23) /*!< pin 13 configuration bits */ +#define GPIO_CTL1_MD14 BITS(24, 25) /*!< port 14 mode bits */ +#define GPIO_CTL1_CTL14 BITS(26, 27) /*!< pin 14 configuration bits */ +#define GPIO_CTL1_MD15 BITS(28, 29) /*!< port 15 mode bits */ +#define GPIO_CTL1_CTL15 BITS(30, 31) /*!< pin 15 configuration bits */ + +/* GPIO_ISTAT */ +#define GPIO_ISTAT_ISTAT0 BIT(0) /*!< pin 0 input status */ +#define GPIO_ISTAT_ISTAT1 BIT(1) /*!< pin 1 input status */ +#define GPIO_ISTAT_ISTAT2 BIT(2) /*!< pin 2 input status */ +#define GPIO_ISTAT_ISTAT3 BIT(3) /*!< pin 3 input status */ +#define GPIO_ISTAT_ISTAT4 BIT(4) /*!< pin 4 input status */ +#define GPIO_ISTAT_ISTAT5 BIT(5) /*!< pin 5 input status */ +#define GPIO_ISTAT_ISTAT6 BIT(6) /*!< pin 6 input status */ +#define GPIO_ISTAT_ISTAT7 BIT(7) /*!< pin 7 input status */ +#define GPIO_ISTAT_ISTAT8 BIT(8) /*!< pin 8 input status */ +#define GPIO_ISTAT_ISTAT9 BIT(9) /*!< pin 9 input status */ +#define GPIO_ISTAT_ISTAT10 BIT(10) /*!< pin 10 input status */ +#define GPIO_ISTAT_ISTAT11 BIT(11) /*!< pin 11 input status */ +#define GPIO_ISTAT_ISTAT12 BIT(12) /*!< pin 12 input status */ +#define GPIO_ISTAT_ISTAT13 BIT(13) /*!< pin 13 input status */ +#define GPIO_ISTAT_ISTAT14 BIT(14) /*!< pin 14 input status */ +#define GPIO_ISTAT_ISTAT15 BIT(15) /*!< pin 15 input status */ + +/* GPIO_OCTL */ +#define GPIO_OCTL_OCTL0 BIT(0) /*!< pin 0 output bit */ +#define GPIO_OCTL_OCTL1 BIT(1) /*!< pin 1 output bit */ +#define GPIO_OCTL_OCTL2 BIT(2) /*!< pin 2 output bit */ +#define GPIO_OCTL_OCTL3 BIT(3) /*!< pin 3 output bit */ +#define GPIO_OCTL_OCTL4 BIT(4) /*!< pin 4 output bit */ +#define GPIO_OCTL_OCTL5 BIT(5) /*!< pin 5 output bit */ +#define GPIO_OCTL_OCTL6 BIT(6) /*!< pin 6 output bit */ +#define GPIO_OCTL_OCTL7 BIT(7) /*!< pin 7 output bit */ +#define GPIO_OCTL_OCTL8 BIT(8) /*!< pin 8 output bit */ +#define GPIO_OCTL_OCTL9 BIT(9) /*!< pin 9 output bit */ +#define GPIO_OCTL_OCTL10 BIT(10) /*!< pin 10 output bit */ +#define GPIO_OCTL_OCTL11 BIT(11) /*!< pin 11 output bit */ +#define GPIO_OCTL_OCTL12 BIT(12) /*!< pin 12 output bit */ +#define GPIO_OCTL_OCTL13 BIT(13) /*!< pin 13 output bit */ +#define GPIO_OCTL_OCTL14 BIT(14) /*!< pin 14 output bit */ +#define GPIO_OCTL_OCTL15 BIT(15) /*!< pin 15 output bit */ + +/* GPIO_BOP */ +#define GPIO_BOP_BOP0 BIT(0) /*!< pin 0 set bit */ +#define GPIO_BOP_BOP1 BIT(1) /*!< pin 1 set bit */ +#define GPIO_BOP_BOP2 BIT(2) /*!< pin 2 set bit */ +#define GPIO_BOP_BOP3 BIT(3) /*!< pin 3 set bit */ +#define GPIO_BOP_BOP4 BIT(4) /*!< pin 4 set bit */ +#define GPIO_BOP_BOP5 BIT(5) /*!< pin 5 set bit */ +#define GPIO_BOP_BOP6 BIT(6) /*!< pin 6 set bit */ +#define GPIO_BOP_BOP7 BIT(7) /*!< pin 7 set bit */ +#define GPIO_BOP_BOP8 BIT(8) /*!< pin 8 set bit */ +#define GPIO_BOP_BOP9 BIT(9) /*!< pin 9 set bit */ +#define GPIO_BOP_BOP10 BIT(10) /*!< pin 10 set bit */ +#define GPIO_BOP_BOP11 BIT(11) /*!< pin 11 set bit */ +#define GPIO_BOP_BOP12 BIT(12) /*!< pin 12 set bit */ +#define GPIO_BOP_BOP13 BIT(13) /*!< pin 13 set bit */ +#define GPIO_BOP_BOP14 BIT(14) /*!< pin 14 set bit */ +#define GPIO_BOP_BOP15 BIT(15) /*!< pin 15 set bit */ +#define GPIO_BOP_CR0 BIT(16) /*!< pin 0 clear bit */ +#define GPIO_BOP_CR1 BIT(17) /*!< pin 1 clear bit */ +#define GPIO_BOP_CR2 BIT(18) /*!< pin 2 clear bit */ +#define GPIO_BOP_CR3 BIT(19) /*!< pin 3 clear bit */ +#define GPIO_BOP_CR4 BIT(20) /*!< pin 4 clear bit */ +#define GPIO_BOP_CR5 BIT(21) /*!< pin 5 clear bit */ +#define GPIO_BOP_CR6 BIT(22) /*!< pin 6 clear bit */ +#define GPIO_BOP_CR7 BIT(23) /*!< pin 7 clear bit */ +#define GPIO_BOP_CR8 BIT(24) /*!< pin 8 clear bit */ +#define GPIO_BOP_CR9 BIT(25) /*!< pin 9 clear bit */ +#define GPIO_BOP_CR10 BIT(26) /*!< pin 10 clear bit */ +#define GPIO_BOP_CR11 BIT(27) /*!< pin 11 clear bit */ +#define GPIO_BOP_CR12 BIT(28) /*!< pin 12 clear bit */ +#define GPIO_BOP_CR13 BIT(29) /*!< pin 13 clear bit */ +#define GPIO_BOP_CR14 BIT(30) /*!< pin 14 clear bit */ +#define GPIO_BOP_CR15 BIT(31) /*!< pin 15 clear bit */ + +/* GPIO_BC */ +#define GPIO_BC_CR0 BIT(0) /*!< pin 0 clear bit */ +#define GPIO_BC_CR1 BIT(1) /*!< pin 1 clear bit */ +#define GPIO_BC_CR2 BIT(2) /*!< pin 2 clear bit */ +#define GPIO_BC_CR3 BIT(3) /*!< pin 3 clear bit */ +#define GPIO_BC_CR4 BIT(4) /*!< pin 4 clear bit */ +#define GPIO_BC_CR5 BIT(5) /*!< pin 5 clear bit */ +#define GPIO_BC_CR6 BIT(6) /*!< pin 6 clear bit */ +#define GPIO_BC_CR7 BIT(7) /*!< pin 7 clear bit */ +#define GPIO_BC_CR8 BIT(8) /*!< pin 8 clear bit */ +#define GPIO_BC_CR9 BIT(9) /*!< pin 9 clear bit */ +#define GPIO_BC_CR10 BIT(10) /*!< pin 10 clear bit */ +#define GPIO_BC_CR11 BIT(11) /*!< pin 11 clear bit */ +#define GPIO_BC_CR12 BIT(12) /*!< pin 12 clear bit */ +#define GPIO_BC_CR13 BIT(13) /*!< pin 13 clear bit */ +#define GPIO_BC_CR14 BIT(14) /*!< pin 14 clear bit */ +#define GPIO_BC_CR15 BIT(15) /*!< pin 15 clear bit */ + +/* GPIO_LOCK */ +#define GPIO_LOCK_LK0 BIT(0) /*!< pin 0 lock bit */ +#define GPIO_LOCK_LK1 BIT(1) /*!< pin 1 lock bit */ +#define GPIO_LOCK_LK2 BIT(2) /*!< pin 2 lock bit */ +#define GPIO_LOCK_LK3 BIT(3) /*!< pin 3 lock bit */ +#define GPIO_LOCK_LK4 BIT(4) /*!< pin 4 lock bit */ +#define GPIO_LOCK_LK5 BIT(5) /*!< pin 5 lock bit */ +#define GPIO_LOCK_LK6 BIT(6) /*!< pin 6 lock bit */ +#define GPIO_LOCK_LK7 BIT(7) /*!< pin 7 lock bit */ +#define GPIO_LOCK_LK8 BIT(8) /*!< pin 8 lock bit */ +#define GPIO_LOCK_LK9 BIT(9) /*!< pin 9 lock bit */ +#define GPIO_LOCK_LK10 BIT(10) /*!< pin 10 lock bit */ +#define GPIO_LOCK_LK11 BIT(11) /*!< pin 11 lock bit */ +#define GPIO_LOCK_LK12 BIT(12) /*!< pin 12 lock bit */ +#define GPIO_LOCK_LK13 BIT(13) /*!< pin 13 lock bit */ +#define GPIO_LOCK_LK14 BIT(14) /*!< pin 14 lock bit */ +#define GPIO_LOCK_LK15 BIT(15) /*!< pin 15 lock bit */ +#define GPIO_LOCK_LKK BIT(16) /*!< pin sequence lock key */ + +/* AFIO_EC */ +#define AFIO_EC_PIN BITS(0, 3) /*!< event output pin selection */ +#define AFIO_EC_PORT BITS(4, 6) /*!< event output port selection */ +#define AFIO_EC_EOE BIT(7) /*!< event output enable */ + +/* AFIO_PCF0 */ +#define AFIO_PCF0_SPI0_REMAP BIT(0) /*!< SPI0 remapping */ +#define AFIO_PCF0_I2C0_REMAP BIT(1) /*!< I2C0 remapping */ +#define AFIO_PCF0_USART0_REMAP BIT(2) /*!< USART0 remapping */ +#define AFIO_PCF0_USART1_REMAP BIT(3) /*!< USART1 remapping */ +#define AFIO_PCF0_USART2_REMAP BITS(4, 5) /*!< USART2 remapping */ +#define AFIO_PCF0_TIMER0_REMAP BITS(6, 7) /*!< TIMER0 remapping */ +#define AFIO_PCF0_TIMER1_REMAP BITS(8, 9) /*!< TIMER1 remapping */ +#define AFIO_PCF0_TIMER2_REMAP BITS(10, 11) /*!< TIMER2 remapping */ +#define AFIO_PCF0_TIMER3_REMAP BIT(12) /*!< TIMER3 remapping */ +#define AFIO_PCF0_CAN_REMAP BITS(13, 14) /*!< CAN remapping */ +#define AFIO_PCF0_PD01_REMAP BIT(15) /*!< port D0/port D1 mapping on OSC_IN/OSC_OUT */ +#define AFIO_PCF0_TIMER4CH3_IREMAP BIT(16) /*!< TIMER3 channel3 internal remapping */ +#define AFIO_PCF0_SWJ_CFG BITS(24, 26) /*!< serial wire JTAG configuration */ +#define AFIO_PCF0_SPI2_REMAP BIT(28) /*!< SPI2/I2S2 remapping */ +#define AFIO_PCF0_TIMER1_ITI1_REMAP BIT(29) /*!< TIMER1 internal trigger 1 remapping */ + +/* AFIO_EXTISS0 */ +#define AFIO_EXTI0_SS BITS(0, 3) /*!< EXTI 0 sources selection */ +#define AFIO_EXTI1_SS BITS(4, 7) /*!< EXTI 1 sources selection */ +#define AFIO_EXTI2_SS BITS(8, 11) /*!< EXTI 2 sources selection */ +#define AFIO_EXTI3_SS BITS(12, 15) /*!< EXTI 3 sources selection */ + +/* AFIO_EXTISS1 */ +#define AFIO_EXTI4_SS BITS(0, 3) /*!< EXTI 4 sources selection */ +#define AFIO_EXTI5_SS BITS(4, 7) /*!< EXTI 5 sources selection */ +#define AFIO_EXTI6_SS BITS(8, 11) /*!< EXTI 6 sources selection */ +#define AFIO_EXTI7_SS BITS(12, 15) /*!< EXTI 7 sources selection */ + +/* AFIO_EXTISS2 */ +#define AFIO_EXTI8_SS BITS(0, 3) /*!< EXTI 8 sources selection */ +#define AFIO_EXTI9_SS BITS(4, 7) /*!< EXTI 9 sources selection */ +#define AFIO_EXTI10_SS BITS(8, 11) /*!< EXTI 10 sources selection */ +#define AFIO_EXTI11_SS BITS(12, 15) /*!< EXTI 11 sources selection */ + +/* AFIO_EXTISS3 */ +#define AFIO_EXTI12_SS BITS(0, 3) /*!< EXTI 12 sources selection */ +#define AFIO_EXTI13_SS BITS(4, 7) /*!< EXTI 13 sources selection */ +#define AFIO_EXTI14_SS BITS(8, 11) /*!< EXTI 14 sources selection */ +#define AFIO_EXTI15_SS BITS(12, 15) /*!< EXTI 15 sources selection */ + +/* AFIO_PCF1 */ +#define AFIO_PCF1_EXMC_NADV BIT(10) /*!< EXMC_NADV connect/disconnect */ + +/* constants definitions */ +typedef FlagStatus bit_status; + +/* GPIO mode values set */ +#define GPIO_MODE_SET(n, mode) ((uint32_t)((uint32_t)(mode) << (4U * (n)))) +#define GPIO_MODE_MASK(n) (0xFU << (4U * (n))) + +/* GPIO mode definitions */ +#define GPIO_MODE_AIN ((uint8_t)0x00U) /*!< analog input mode */ +#define GPIO_MODE_IN_FLOATING ((uint8_t)0x04U) /*!< floating input mode */ +#define GPIO_MODE_IPD ((uint8_t)0x28U) /*!< pull-down input mode */ +#define GPIO_MODE_IPU ((uint8_t)0x48U) /*!< pull-up input mode */ +#define GPIO_MODE_OUT_OD ((uint8_t)0x14U) /*!< GPIO output with open-drain */ +#define GPIO_MODE_OUT_PP ((uint8_t)0x10U) /*!< GPIO output with push-pull */ +#define GPIO_MODE_AF_OD ((uint8_t)0x1CU) /*!< AFIO output with open-drain */ +#define GPIO_MODE_AF_PP ((uint8_t)0x18U) /*!< AFIO output with push-pull */ + +/* GPIO output max speed value */ +#define GPIO_OSPEED_10MHZ ((uint8_t)0x01U) /*!< output max speed 10MHz */ +#define GPIO_OSPEED_2MHZ ((uint8_t)0x02U) /*!< output max speed 2MHz */ +#define GPIO_OSPEED_50MHZ ((uint8_t)0x03U) /*!< output max speed 50MHz */ + +/* GPIO event output port definitions */ +#define GPIO_EVENT_PORT_GPIOA ((uint8_t)0x00U) /*!< event output port A */ +#define GPIO_EVENT_PORT_GPIOB ((uint8_t)0x01U) /*!< event output port B */ +#define GPIO_EVENT_PORT_GPIOC ((uint8_t)0x02U) /*!< event output port C */ +#define GPIO_EVENT_PORT_GPIOD ((uint8_t)0x03U) /*!< event output port D */ +#define GPIO_EVENT_PORT_GPIOE ((uint8_t)0x04U) /*!< event output port E */ + +/* GPIO output port source definitions */ +#define GPIO_PORT_SOURCE_GPIOA ((uint8_t)0x00U) /*!< output port source A */ +#define GPIO_PORT_SOURCE_GPIOB ((uint8_t)0x01U) /*!< output port source B */ +#define GPIO_PORT_SOURCE_GPIOC ((uint8_t)0x02U) /*!< output port source C */ +#define GPIO_PORT_SOURCE_GPIOD ((uint8_t)0x03U) /*!< output port source D */ +#define GPIO_PORT_SOURCE_GPIOE ((uint8_t)0x04U) /*!< output port source E */ + +/* GPIO event output pin definitions */ +#define GPIO_EVENT_PIN_0 ((uint8_t)0x00U) /*!< GPIO event pin 0 */ +#define GPIO_EVENT_PIN_1 ((uint8_t)0x01U) /*!< GPIO event pin 1 */ +#define GPIO_EVENT_PIN_2 ((uint8_t)0x02U) /*!< GPIO event pin 2 */ +#define GPIO_EVENT_PIN_3 ((uint8_t)0x03U) /*!< GPIO event pin 3 */ +#define GPIO_EVENT_PIN_4 ((uint8_t)0x04U) /*!< GPIO event pin 4 */ +#define GPIO_EVENT_PIN_5 ((uint8_t)0x05U) /*!< GPIO event pin 5 */ +#define GPIO_EVENT_PIN_6 ((uint8_t)0x06U) /*!< GPIO event pin 6 */ +#define GPIO_EVENT_PIN_7 ((uint8_t)0x07U) /*!< GPIO event pin 7 */ +#define GPIO_EVENT_PIN_8 ((uint8_t)0x08U) /*!< GPIO event pin 8 */ +#define GPIO_EVENT_PIN_9 ((uint8_t)0x09U) /*!< GPIO event pin 9 */ +#define GPIO_EVENT_PIN_10 ((uint8_t)0x0AU) /*!< GPIO event pin 10 */ +#define GPIO_EVENT_PIN_11 ((uint8_t)0x0BU) /*!< GPIO event pin 11 */ +#define GPIO_EVENT_PIN_12 ((uint8_t)0x0CU) /*!< GPIO event pin 12 */ +#define GPIO_EVENT_PIN_13 ((uint8_t)0x0DU) /*!< GPIO event pin 13 */ +#define GPIO_EVENT_PIN_14 ((uint8_t)0x0EU) /*!< GPIO event pin 14 */ +#define GPIO_EVENT_PIN_15 ((uint8_t)0x0FU) /*!< GPIO event pin 15 */ + +/* GPIO output pin source definitions */ +#define GPIO_PIN_SOURCE_0 ((uint8_t)0x00U) /*!< GPIO pin source 0 */ +#define GPIO_PIN_SOURCE_1 ((uint8_t)0x01U) /*!< GPIO pin source 1 */ +#define GPIO_PIN_SOURCE_2 ((uint8_t)0x02U) /*!< GPIO pin source 2 */ +#define GPIO_PIN_SOURCE_3 ((uint8_t)0x03U) /*!< GPIO pin source 3 */ +#define GPIO_PIN_SOURCE_4 ((uint8_t)0x04U) /*!< GPIO pin source 4 */ +#define GPIO_PIN_SOURCE_5 ((uint8_t)0x05U) /*!< GPIO pin source 5 */ +#define GPIO_PIN_SOURCE_6 ((uint8_t)0x06U) /*!< GPIO pin source 6 */ +#define GPIO_PIN_SOURCE_7 ((uint8_t)0x07U) /*!< GPIO pin source 7 */ +#define GPIO_PIN_SOURCE_8 ((uint8_t)0x08U) /*!< GPIO pin source 8 */ +#define GPIO_PIN_SOURCE_9 ((uint8_t)0x09U) /*!< GPIO pin source 9 */ +#define GPIO_PIN_SOURCE_10 ((uint8_t)0x0AU) /*!< GPIO pin source 10 */ +#define GPIO_PIN_SOURCE_11 ((uint8_t)0x0BU) /*!< GPIO pin source 11 */ +#define GPIO_PIN_SOURCE_12 ((uint8_t)0x0CU) /*!< GPIO pin source 12 */ +#define GPIO_PIN_SOURCE_13 ((uint8_t)0x0DU) /*!< GPIO pin source 13 */ +#define GPIO_PIN_SOURCE_14 ((uint8_t)0x0EU) /*!< GPIO pin source 14 */ +#define GPIO_PIN_SOURCE_15 ((uint8_t)0x0FU) /*!< GPIO pin source 15 */ + +/* GPIO pin definitions */ +#define GPIO_PIN_0 BIT(0) /*!< GPIO pin 0 */ +#define GPIO_PIN_1 BIT(1) /*!< GPIO pin 1 */ +#define GPIO_PIN_2 BIT(2) /*!< GPIO pin 2 */ +#define GPIO_PIN_3 BIT(3) /*!< GPIO pin 3 */ +#define GPIO_PIN_4 BIT(4) /*!< GPIO pin 4 */ +#define GPIO_PIN_5 BIT(5) /*!< GPIO pin 5 */ +#define GPIO_PIN_6 BIT(6) /*!< GPIO pin 6 */ +#define GPIO_PIN_7 BIT(7) /*!< GPIO pin 7 */ +#define GPIO_PIN_8 BIT(8) /*!< GPIO pin 8 */ +#define GPIO_PIN_9 BIT(9) /*!< GPIO pin 9 */ +#define GPIO_PIN_10 BIT(10) /*!< GPIO pin 10 */ +#define GPIO_PIN_11 BIT(11) /*!< GPIO pin 11 */ +#define GPIO_PIN_12 BIT(12) /*!< GPIO pin 12 */ +#define GPIO_PIN_13 BIT(13) /*!< GPIO pin 13 */ +#define GPIO_PIN_14 BIT(14) /*!< GPIO pin 14 */ +#define GPIO_PIN_15 BIT(15) /*!< GPIO pin 15 */ +#define GPIO_PIN_ALL BITS(0, 15) /*!< GPIO pin all */ + +/* GPIO remap definitions */ +#define GPIO_SPI0_REMAP ((uint32_t)0x00000001U) /*!< SPI0 remapping */ +#define GPIO_I2C0_REMAP ((uint32_t)0x00000002U) /*!< I2C0 remapping */ +#define GPIO_USART0_REMAP ((uint32_t)0x00000004U) /*!< USART0 remapping */ +#define GPIO_USART1_REMAP ((uint32_t)0x00000008U) /*!< USART1 remapping */ +#define GPIO_USART2_PARTIAL_REMAP ((uint32_t)0x00140010U) /*!< USART2 partial remapping */ +#define GPIO_USART2_FULL_REMAP ((uint32_t)0x00140030U) /*!< USART2 full remapping */ +#define GPIO_TIMER0_PARTIAL_REMAP ((uint32_t)0x00160040U) /*!< TIMER0 partial remapping */ +#define GPIO_TIMER0_FULL_REMAP ((uint32_t)0x001600C0U) /*!< TIMER0 full remapping */ +#define GPIO_TIMER1_PARTIAL_REMAP0 ((uint32_t)0x00180100U) /*!< TIMER1 partial remapping */ +#define GPIO_TIMER1_PARTIAL_REMAP1 ((uint32_t)0x00180200U) /*!< TIMER1 partial remapping */ +#define GPIO_TIMER1_FULL_REMAP ((uint32_t)0x00180300U) /*!< TIMER1 full remapping */ +#define GPIO_TIMER2_PARTIAL_REMAP ((uint32_t)0x001A0800U) /*!< TIMER2 partial remapping */ +#define GPIO_TIMER2_FULL_REMAP ((uint32_t)0x001A0C00U) /*!< TIMER2 full remapping */ +#define GPIO_TIMER3_REMAP ((uint32_t)0x00001000U) /*!< TIMER3 remapping */ +#define GPIO_CAN0_PARTIAL_REMAP ((uint32_t)0x001D4000U) /*!< CAN0 partial remapping */ +#define GPIO_CAN0_FULL_REMAP ((uint32_t)0x001D6000U) /*!< CAN0 full remapping */ +#define GPIO_PD01_REMAP ((uint32_t)0x00008000U) /*!< PD01 remapping */ +#define GPIO_TIMER4CH3_IREMAP ((uint32_t)0x00200001U) /*!< TIMER4 channel3 internal remapping */ +#define GPIO_CAN1_REMAP ((uint32_t)0x00200040U) /*!< CAN1 remapping */ +#define GPIO_SWJ_NONJTRST_REMAP ((uint32_t)0x00300100U) /*!< JTAG-DP,but without NJTRST */ +#define GPIO_SWJ_DISABLE_REMAP ((uint32_t)0x00300200U) /*!< JTAG-DP disabled */ +#define GPIO_SPI2_REMAP ((uint32_t)0x00201100U) /*!< SPI2 remapping */ +#define GPIO_TIMER1ITI1_REMAP ((uint32_t)0x00202000U) /*!< TIMER1 internal trigger 1 remapping */ +#define GPIO_EXMC_NADV_REMAP ((uint32_t)0x80000400U) /*!< EXMC_NADV connect/disconnect */ + +/* function declarations */ +/* reset GPIO port */ +void gpio_deinit(uint32_t gpio_periph); +/* reset alternate function I/O(AFIO) */ +void gpio_afio_deinit(void); +/* GPIO parameter initialization */ +void gpio_init(uint32_t gpio_periph,uint32_t mode,uint32_t speed,uint32_t pin); + +/* set GPIO pin bit */ +void gpio_bit_set(uint32_t gpio_periph, uint32_t pin); +/* reset GPIO pin bit */ +void gpio_bit_reset(uint32_t gpio_periph, uint32_t pin); +/* write data to the specified GPIO pin */ +void gpio_bit_write(uint32_t gpio_periph, uint32_t pin, bit_status bit_value); +/* write data to the specified GPIO port */ +void gpio_port_write(uint32_t gpio_periph, uint16_t data); + +/* get GPIO pin input status */ +FlagStatus gpio_input_bit_get(uint32_t gpio_periph, uint32_t pin); +/* get GPIO port input status */ +uint16_t gpio_input_port_get(uint32_t gpio_periph); +/* get GPIO pin output status */ +FlagStatus gpio_output_bit_get(uint32_t gpio_periph, uint32_t pin); +/* get GPIO port output status */ +uint16_t gpio_output_port_get(uint32_t gpio_periph); + +/* configure GPIO pin remap */ +void gpio_pin_remap_config(uint32_t remap, ControlStatus newvalue); + +/* select GPIO pin exti sources */ +void gpio_exti_source_select(uint8_t output_port, uint8_t output_pin); +/* configure GPIO pin event output */ +void gpio_event_output_config(uint8_t output_port, uint8_t output_pin); +/* enable GPIO pin event output */ +void gpio_event_output_enable(void); +/* disable GPIO pin event output */ +void gpio_event_output_disable(void); + +/* lock GPIO pin bit */ +void gpio_pin_lock(uint32_t gpio_periph, uint32_t pin); + +#endif /* GD32VF103_GPIO_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_i2c.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_i2c.h new file mode 100644 index 0000000000..c14b539c65 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_i2c.h @@ -0,0 +1,344 @@ +/*! + \file gd32vf103_i2c.h + \brief definitions for the I2C + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_I2C_H +#define GD32VF103_I2C_H + +#include "gd32vf103.h" + +/* I2Cx(x=0,1) definitions */ +#define I2C0 I2C_BASE /*!< I2C0 base address */ +#define I2C1 (I2C_BASE + 0x00000400U) /*!< I2C1 base address */ + +/* registers definitions */ +#define I2C_CTL0(i2cx) REG32((i2cx) + 0x00U) /*!< I2C control register 0 */ +#define I2C_CTL1(i2cx) REG32((i2cx) + 0x04U) /*!< I2C control register 1 */ +#define I2C_SADDR0(i2cx) REG32((i2cx) + 0x08U) /*!< I2C slave address register 0*/ +#define I2C_SADDR1(i2cx) REG32((i2cx) + 0x0CU) /*!< I2C slave address register */ +#define I2C_DATA(i2cx) REG32((i2cx) + 0x10U) /*!< I2C transfer buffer register */ +#define I2C_STAT0(i2cx) REG32((i2cx) + 0x14U) /*!< I2C transfer status register 0 */ +#define I2C_STAT1(i2cx) REG32((i2cx) + 0x18U) /*!< I2C transfer status register */ +#define I2C_CKCFG(i2cx) REG32((i2cx) + 0x1CU) /*!< I2C clock configure register */ +#define I2C_RT(i2cx) REG32((i2cx) + 0x20U) /*!< I2C rise time register */ +#define I2C_FMPCFG(i2cx) REG32((i2cx) + 0x90U) /*!< I2C fast-mode-plus configure register */ +/* bits definitions */ +/* I2Cx_CTL0 */ +#define I2C_CTL0_I2CEN BIT(0) /*!< peripheral enable */ +#define I2C_CTL0_SMBEN BIT(1) /*!< SMBus mode */ +#define I2C_CTL0_SMBSEL BIT(3) /*!< SMBus type */ +#define I2C_CTL0_ARPEN BIT(4) /*!< ARP enable */ +#define I2C_CTL0_PECEN BIT(5) /*!< PEC enable */ +#define I2C_CTL0_GCEN BIT(6) /*!< general call enable */ +#define I2C_CTL0_SS BIT(7) /*!< clock stretching disable (slave mode) */ +#define I2C_CTL0_START BIT(8) /*!< start generation */ +#define I2C_CTL0_STOP BIT(9) /*!< stop generation */ +#define I2C_CTL0_ACKEN BIT(10) /*!< acknowledge enable */ +#define I2C_CTL0_POAP BIT(11) /*!< acknowledge/PEC position (for data reception) */ +#define I2C_CTL0_PECTRANS BIT(12) /*!< packet error checking */ +#define I2C_CTL0_SALT BIT(13) /*!< SMBus alert */ +#define I2C_CTL0_SRESET BIT(15) /*!< software reset */ + +/* I2Cx_CTL1 */ +#define I2C_CTL1_I2CCLK BITS(0,5) /*!< I2CCLK[5:0] bits (peripheral clock frequency) */ +#define I2C_CTL1_ERRIE BIT(8) /*!< error interrupt enable */ +#define I2C_CTL1_EVIE BIT(9) /*!< event interrupt enable */ +#define I2C_CTL1_BUFIE BIT(10) /*!< buffer interrupt enable */ +#define I2C_CTL1_DMAON BIT(11) /*!< DMA requests enable */ +#define I2C_CTL1_DMALST BIT(12) /*!< DMA last transfer */ + +/* I2Cx_SADDR0 */ +#define I2C_SADDR0_ADDRESS0 BIT(0) /*!< bit 0 of a 10-bit address */ +#define I2C_SADDR0_ADDRESS BITS(1,7) /*!< 7-bit address or bits 7:1 of a 10-bit address */ +#define I2C_SADDR0_ADDRESS_H BITS(8,9) /*!< highest two bits of a 10-bit address */ +#define I2C_SADDR0_ADDFORMAT BIT(15) /*!< address mode for the I2C slave */ + +/* I2Cx_SADDR1 */ +#define I2C_SADDR1_DUADEN BIT(0) /*!< aual-address mode switch */ +#define I2C_SADDR1_ADDRESS2 BITS(1,7) /*!< second I2C address for the slave in dual-address mode */ + +/* I2Cx_DATA */ +#define I2C_DATA_TRB BITS(0,7) /*!< 8-bit data register */ + +/* I2Cx_STAT0 */ +#define I2C_STAT0_SBSEND BIT(0) /*!< start bit (master mode) */ +#define I2C_STAT0_ADDSEND BIT(1) /*!< address sent (master mode)/matched (slave mode) */ +#define I2C_STAT0_BTC BIT(2) /*!< byte transfer finished */ +#define I2C_STAT0_ADD10SEND BIT(3) /*!< 10-bit header sent (master mode) */ +#define I2C_STAT0_STPDET BIT(4) /*!< stop detection (slave mode) */ +#define I2C_STAT0_RBNE BIT(6) /*!< data register not empty (receivers) */ +#define I2C_STAT0_TBE BIT(7) /*!< data register empty (transmitters) */ +#define I2C_STAT0_BERR BIT(8) /*!< bus error */ +#define I2C_STAT0_LOSTARB BIT(9) /*!< arbitration lost (master mode) */ +#define I2C_STAT0_AERR BIT(10) /*!< acknowledge failure */ +#define I2C_STAT0_OUERR BIT(11) /*!< overrun/underrun */ +#define I2C_STAT0_PECERR BIT(12) /*!< PEC error in reception */ +#define I2C_STAT0_SMBTO BIT(14) /*!< timeout signal in SMBus mode */ +#define I2C_STAT0_SMBALT BIT(15) /*!< SMBus alert status */ + +/* I2Cx_STAT1 */ +#define I2C_STAT1_MASTER BIT(0) /*!< master/slave */ +#define I2C_STAT1_I2CBSY BIT(1) /*!< bus busy */ +#define I2C_STAT1_TR BIT(2) /*!< transmitter/receiver */ +#define I2C_STAT1_RXGC BIT(4) /*!< general call address (slave mode) */ +#define I2C_STAT1_DEFSMB BIT(5) /*!< SMBus device default address (slave mode) */ +#define I2C_STAT1_HSTSMB BIT(6) /*!< SMBus host header (slave mode) */ +#define I2C_STAT1_DUMODF BIT(7) /*!< dual flag (slave mode) */ +#define I2C_STAT1_PECV BITS(8,15) /*!< packet error checking value */ + +/* I2Cx_CKCFG */ +#define I2C_CKCFG_CLKC BITS(0,11) /*!< clock control register in fast/standard mode (master mode) */ +#define I2C_CKCFG_DTCY BIT(14) /*!< fast mode duty cycle */ +#define I2C_CKCFG_FAST BIT(15) /*!< I2C speed selection in master mode */ + +/* I2Cx_RT */ +#define I2C_RT_RISETIME BITS(0,5) /*!< maximum rise time in fast/standard mode (Master mode) */ + +/* I2Cx_FMPCFG */ +#define I2C_FMPCFG_FMPEN BIT(0) /*!< fast mode plus enable bit */ + +/* constants definitions */ +/* define the I2C bit position and its register index offset */ +#define I2C_REGIDX_BIT(regidx, bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos)) +#define I2C_REG_VAL(i2cx, offset) (REG32((i2cx) + (((uint32_t)(offset) & 0xFFFFU) >> 6))) +#define I2C_BIT_POS(val) ((uint32_t)(val) & 0x1FU) +#define I2C_REGIDX_BIT2(regidx, bitpos, regidx2, bitpos2) (((uint32_t)(regidx2) << 22) | (uint32_t)((bitpos2) << 16)\ + | (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))) +#define I2C_REG_VAL2(i2cx, offset) (REG32((i2cx) + ((uint32_t)(offset) >> 22))) +#define I2C_BIT_POS2(val) (((uint32_t)(val) & 0x1F0000U) >> 16) + +/* register offset */ +#define I2C_CTL1_REG_OFFSET 0x04U /*!< CTL1 register offset */ +#define I2C_STAT0_REG_OFFSET 0x14U /*!< STAT0 register offset */ +#define I2C_STAT1_REG_OFFSET 0x18U /*!< STAT1 register offset */ + +/* I2C flags */ +typedef enum { + /* flags in STAT0 register */ + I2C_FLAG_SBSEND = I2C_REGIDX_BIT(I2C_STAT0_REG_OFFSET, 0U), /*!< start condition sent out in master mode */ + I2C_FLAG_ADDSEND = I2C_REGIDX_BIT(I2C_STAT0_REG_OFFSET, 1U), /*!< address is sent in master mode or received and matches in slave mode */ + I2C_FLAG_BTC = I2C_REGIDX_BIT(I2C_STAT0_REG_OFFSET, 2U), /*!< byte transmission finishes */ + I2C_FLAG_ADD10SEND = I2C_REGIDX_BIT(I2C_STAT0_REG_OFFSET, 3U), /*!< header of 10-bit address is sent in master mode */ + I2C_FLAG_STPDET = I2C_REGIDX_BIT(I2C_STAT0_REG_OFFSET, 4U), /*!< stop condition detected in slave mode */ + I2C_FLAG_RBNE = I2C_REGIDX_BIT(I2C_STAT0_REG_OFFSET, 6U), /*!< I2C_DATA is not Empty during receiving */ + I2C_FLAG_TBE = I2C_REGIDX_BIT(I2C_STAT0_REG_OFFSET, 7U), /*!< I2C_DATA is empty during transmitting */ + I2C_FLAG_BERR = I2C_REGIDX_BIT(I2C_STAT0_REG_OFFSET, 8U), /*!< a bus error occurs indication a unexpected start or stop condition on I2C bus */ + I2C_FLAG_LOSTARB = I2C_REGIDX_BIT(I2C_STAT0_REG_OFFSET, 9U), /*!< arbitration lost in master mode */ + I2C_FLAG_AERR = I2C_REGIDX_BIT(I2C_STAT0_REG_OFFSET, 10U), /*!< acknowledge error */ + I2C_FLAG_OUERR = I2C_REGIDX_BIT(I2C_STAT0_REG_OFFSET, 11U), /*!< over-run or under-run situation occurs in slave mode */ + I2C_FLAG_PECERR = I2C_REGIDX_BIT(I2C_STAT0_REG_OFFSET, 12U), /*!< PEC error when receiving data */ + I2C_FLAG_SMBTO = I2C_REGIDX_BIT(I2C_STAT0_REG_OFFSET, 14U), /*!< timeout signal in SMBus mode */ + I2C_FLAG_SMBALT = I2C_REGIDX_BIT(I2C_STAT0_REG_OFFSET, 15U), /*!< SMBus alert status */ + /* flags in STAT1 register */ + I2C_FLAG_MASTER = I2C_REGIDX_BIT(I2C_STAT1_REG_OFFSET, 0U), /*!< a flag indicating whether I2C block is in master or slave mode */ + I2C_FLAG_I2CBSY = I2C_REGIDX_BIT(I2C_STAT1_REG_OFFSET, 1U), /*!< busy flag */ + I2C_FLAG_TR = I2C_REGIDX_BIT(I2C_STAT1_REG_OFFSET, 2U), /*!< whether the I2C is a transmitter or a receiver */ + I2C_FLAG_RXGC = I2C_REGIDX_BIT(I2C_STAT1_REG_OFFSET, 4U), /*!< general call address (00h) received */ + I2C_FLAG_DEFSMB = I2C_REGIDX_BIT(I2C_STAT1_REG_OFFSET, 5U), /*!< default address of SMBus device */ + I2C_FLAG_HSTSMB = I2C_REGIDX_BIT(I2C_STAT1_REG_OFFSET, 6U), /*!< SMBus host header detected in slave mode */ + I2C_FLAG_DUMODF = I2C_REGIDX_BIT(I2C_STAT1_REG_OFFSET, 7U), /*!< dual flag in slave mode indicating which address is matched in dual-address mode */ +} i2c_flag_enum; + +/* I2C interrupt flags */ +typedef enum { + /* interrupt flags in CTL1 register */ + I2C_INT_FLAG_SBSEND = I2C_REGIDX_BIT2(I2C_CTL1_REG_OFFSET, 9U,I2C_STAT0_REG_OFFSET, 0U), /*!< start condition sent out in master mode interrupt flag */ + I2C_INT_FLAG_ADDSEND = I2C_REGIDX_BIT2(I2C_CTL1_REG_OFFSET, 9U,I2C_STAT0_REG_OFFSET, 1U), /*!< address is sent in master mode or received and matches in slave mode interrupt flag */ + I2C_INT_FLAG_BTC = I2C_REGIDX_BIT2(I2C_CTL1_REG_OFFSET, 9U,I2C_STAT0_REG_OFFSET, 2U), /*!< byte transmission finishes */ + I2C_INT_FLAG_ADD10SEND = I2C_REGIDX_BIT2(I2C_CTL1_REG_OFFSET, 9U,I2C_STAT0_REG_OFFSET, 3U), /*!< header of 10-bit address is sent in master mode interrupt flag */ + I2C_INT_FLAG_STPDET = I2C_REGIDX_BIT2(I2C_CTL1_REG_OFFSET, 9U,I2C_STAT0_REG_OFFSET, 4U), /*!< stop condition detected in slave mode interrupt flag */ + I2C_INT_FLAG_RBNE = I2C_REGIDX_BIT2(I2C_CTL1_REG_OFFSET, 9U,I2C_STAT0_REG_OFFSET, 6U), /*!< I2C_DATA is not Empty during receiving interrupt flag */ + I2C_INT_FLAG_TBE = I2C_REGIDX_BIT2(I2C_CTL1_REG_OFFSET, 9U,I2C_STAT0_REG_OFFSET, 7U), /*!< I2C_DATA is empty during transmitting interrupt flag */ + I2C_INT_FLAG_BERR = I2C_REGIDX_BIT2(I2C_CTL1_REG_OFFSET, 8U,I2C_STAT0_REG_OFFSET, 8U), /*!< a bus error occurs indication a unexpected start or stop condition on I2C bus interrupt flag */ + I2C_INT_FLAG_LOSTARB = I2C_REGIDX_BIT2(I2C_CTL1_REG_OFFSET, 8U,I2C_STAT0_REG_OFFSET, 9U), /*!< arbitration lost in master mode interrupt flag */ + I2C_INT_FLAG_AERR = I2C_REGIDX_BIT2(I2C_CTL1_REG_OFFSET, 8U,I2C_STAT0_REG_OFFSET, 10U), /*!< acknowledge error interrupt flag */ + I2C_INT_FLAG_OUERR = I2C_REGIDX_BIT2(I2C_CTL1_REG_OFFSET, 8U,I2C_STAT0_REG_OFFSET, 11U), /*!< over-run or under-run situation occurs in slave mode interrupt flag */ + I2C_INT_FLAG_PECERR = I2C_REGIDX_BIT2(I2C_CTL1_REG_OFFSET, 8U,I2C_STAT0_REG_OFFSET, 12U), /*!< PEC error when receiving data interrupt flag */ + I2C_INT_FLAG_SMBTO = I2C_REGIDX_BIT2(I2C_CTL1_REG_OFFSET, 8U,I2C_STAT0_REG_OFFSET, 14U), /*!< timeout signal in SMBus mode interrupt flag */ + I2C_INT_FLAG_SMBALT = I2C_REGIDX_BIT2(I2C_CTL1_REG_OFFSET, 8U,I2C_STAT0_REG_OFFSET, 15U), /*!< SMBus Alert status interrupt flag */ +} i2c_interrupt_flag_enum; + +/* I2C interrupt enable or disable */ +typedef enum { + /* interrupt in CTL1 register */ + I2C_INT_ERR = I2C_REGIDX_BIT(I2C_CTL1_REG_OFFSET, 8U), /*!< error interrupt enable */ + I2C_INT_EV = I2C_REGIDX_BIT(I2C_CTL1_REG_OFFSET, 9U), /*!< event interrupt enable */ + I2C_INT_BUF = I2C_REGIDX_BIT(I2C_CTL1_REG_OFFSET, 10U), /*!< buffer interrupt enable */ +} i2c_interrupt_enum; + +/* SMBus/I2C mode switch and SMBus type selection */ +#define I2C_I2CMODE_ENABLE ((uint32_t)0x00000000U) /*!< I2C mode */ +#define I2C_SMBUSMODE_ENABLE I2C_CTL0_SMBEN /*!< SMBus mode */ + +/* SMBus/I2C mode switch and SMBus type selection */ +#define I2C_SMBUS_DEVICE ((uint32_t)0x00000000U) /*!< SMBus mode device type */ +#define I2C_SMBUS_HOST I2C_CTL0_SMBSEL /*!< SMBus mode host type */ + +/* I2C transfer direction */ +#define I2C_RECEIVER ((uint32_t)0x00000001U) /*!< receiver */ +#define I2C_TRANSMITTER ((uint32_t)0xFFFFFFFEU) /*!< transmitter */ + +/* whether or not to send an ACK */ +#define I2C_ACK_DISABLE ((uint32_t)0x00000000U) /*!< ACK will be not sent */ +#define I2C_ACK_ENABLE ((uint32_t)0x00000001U) /*!< ACK will be sent */ + +/* I2C POAP position*/ +#define I2C_ACKPOS_NEXT ((uint32_t)0x00000000U) /*!< ACKEN bit decides whether or not to send ACK for the next byte */ +#define I2C_ACKPOS_CURRENT ((uint32_t)0x00000001U) /*!< ACKEN bit decides whether or not to send ACK or not for the current byte */ + +/* I2C dual-address mode switch */ +#define I2C_DUADEN_DISABLE ((uint32_t)0x00000000U) /*!< dual-address mode disabled */ +#define I2C_DUADEN_ENABLE ((uint32_t)0x00000001U) /*!< dual-address mode enabled */ + +/* whether or not to stretch SCL low */ +#define I2C_SCLSTRETCH_ENABLE ((uint32_t)0x00000000U) /*!< SCL stretching is enabled */ +#define I2C_SCLSTRETCH_DISABLE I2C_CTL0_SS /*!< SCL stretching is disabled */ + +/* whether or not to response to a general call */ +#define I2C_GCEN_ENABLE I2C_CTL0_GCEN /*!< slave will response to a general call */ +#define I2C_GCEN_DISABLE ((uint32_t)0x00000000U) /*!< slave will not response to a general call */ + +/* software reset I2C */ +#define I2C_SRESET_SET I2C_CTL0_SRESET /*!< I2C is under reset */ +#define I2C_SRESET_RESET ((uint32_t)0x00000000U) /*!< I2C is not under reset */ + +/* I2C DMA mode configure */ +/* DMA mode switch */ +#define I2C_DMA_ON I2C_CTL1_DMAON /*!< DMA mode enabled */ +#define I2C_DMA_OFF ((uint32_t)0x00000000U) /*!< DMA mode disabled */ + +/* flag indicating DMA last transfer */ +#define I2C_DMALST_ON I2C_CTL1_DMALST /*!< next DMA EOT is the last transfer */ +#define I2C_DMALST_OFF ((uint32_t)0x00000000U) /*!< next DMA EOT is not the last transfer */ + +/* I2C PEC configure */ +/* PEC enable */ +#define I2C_PEC_ENABLE I2C_CTL0_PECEN /*!< PEC calculation on */ +#define I2C_PEC_DISABLE ((uint32_t)0x00000000U) /*!< PEC calculation off */ + +/* PEC transfer */ +#define I2C_PECTRANS_ENABLE I2C_CTL0_PECTRANS /*!< transfer PEC */ +#define I2C_PECTRANS_DISABLE ((uint32_t)0x00000000U) /*!< not transfer PEC value */ + +/* I2C SMBus configure */ +/* issue or not alert through SMBA pin */ +#define I2C_SALTSEND_ENABLE I2C_CTL0_SALT /*!< issue alert through SMBA pin */ +#define I2C_SALTSEND_DISABLE ((uint32_t)0x00000000U) /*!< not issue alert through SMBA */ + +/* ARP protocol in SMBus switch */ +#define I2C_ARP_ENABLE I2C_CTL0_ARPEN /*!< ARP enable */ +#define I2C_ARP_DISABLE ((uint32_t)0x00000000U) /*!< ARP disable */ + +/* transmit I2C data */ +#define DATA_TRANS(regval) (BITS(0,7) & ((uint32_t)(regval) << 0)) + +/* receive I2C data */ +#define DATA_RECV(regval) GET_BITS((uint32_t)(regval), 0, 7) + +/* I2C duty cycle in fast mode */ +#define I2C_DTCY_2 ((uint32_t)0x00000000U) /*!< I2C fast mode Tlow/Thigh = 2 */ +#define I2C_DTCY_16_9 I2C_CKCFG_DTCY /*!< I2C fast mode Tlow/Thigh = 16/9 */ + +/* address mode for the I2C slave */ +#define I2C_ADDFORMAT_7BITS ((uint32_t)0x00000000U) /*!< address:7 bits */ +#define I2C_ADDFORMAT_10BITS I2C_SADDR0_ADDFORMAT /*!< address:10 bits */ + +/* function declarations */ +/* reset I2C */ +void i2c_deinit(uint32_t i2c_periph); +/* configure I2C clock */ +void i2c_clock_config(uint32_t i2c_periph, uint32_t clkspeed, uint32_t dutycyc); +/* configure I2C address */ +void i2c_mode_addr_config(uint32_t i2c_periph, uint32_t mode,uint32_t addformat, uint32_t addr); +/* SMBus type selection */ +void i2c_smbus_type_config(uint32_t i2c_periph, uint32_t type); +/* whether or not to send an ACK */ +void i2c_ack_config(uint32_t i2c_periph, uint32_t ack); +/* configure I2C POAP position */ +void i2c_ackpos_config(uint32_t i2c_periph, uint32_t pos); +/* master sends slave address */ +void i2c_master_addressing(uint32_t i2c_periph, uint32_t addr,uint32_t trandirection); +/* enable dual-address mode */ +void i2c_dualaddr_enable(uint32_t i2c_periph, uint32_t dualaddr); +/* disable dual-address mode */ +void i2c_dualaddr_disable(uint32_t i2c_periph); +/* enable I2C */ +void i2c_enable(uint32_t i2c_periph); +/* disable I2C */ +void i2c_disable(uint32_t i2c_periph); + +/* generate a START condition on I2C bus */ +void i2c_start_on_bus(uint32_t i2c_periph); +/* generate a STOP condition on I2C bus */ +void i2c_stop_on_bus(uint32_t i2c_periph); +/* I2C transmit data function */ +void i2c_data_transmit(uint32_t i2c_periph, uint8_t data); +/* I2C receive data function */ +uint8_t i2c_data_receive(uint32_t i2c_periph); +/* enable I2C DMA mode */ +void i2c_dma_enable(uint32_t i2c_periph, uint32_t dmastate); +/* configure whether next DMA EOT is DMA last transfer or not */ +void i2c_dma_last_transfer_config(uint32_t i2c_periph, uint32_t dmalast); +/* whether to stretch SCL low when data is not ready in slave mode */ +void i2c_stretch_scl_low_config(uint32_t i2c_periph, uint32_t stretchpara); +/* whether or not to response to a general call */ +void i2c_slave_response_to_gcall_config(uint32_t i2c_periph, uint32_t gcallpara); +/* software reset I2C */ +void i2c_software_reset_config(uint32_t i2c_periph, uint32_t sreset); + +/* I2C PEC calculation on or off */ +void i2c_pec_enable(uint32_t i2c_periph, uint32_t pecstate); +/* I2C whether to transfer PEC value */ +void i2c_pec_transfer_enable(uint32_t i2c_periph, uint32_t pecpara); +/* packet error checking value */ +uint8_t i2c_pec_value_get(uint32_t i2c_periph); +/* I2C issue alert through SMBA pin */ +void i2c_smbus_issue_alert(uint32_t i2c_periph, uint32_t smbuspara); +/* I2C ARP protocol in SMBus switch */ +void i2c_smbus_arp_enable(uint32_t i2c_periph, uint32_t arpstate); + +/* check I2C flag is set or not */ +FlagStatus i2c_flag_get(uint32_t i2c_periph, i2c_flag_enum flag); +/* clear I2C flag */ +void i2c_flag_clear(uint32_t i2c_periph, i2c_flag_enum flag); +/* enable I2C interrupt */ +void i2c_interrupt_enable(uint32_t i2c_periph, i2c_interrupt_enum interrupt); +/* disable I2C interrupt */ +void i2c_interrupt_disable(uint32_t i2c_periph, i2c_interrupt_enum interrupt); +/* check I2C interrupt flag */ +FlagStatus i2c_interrupt_flag_get(uint32_t i2c_periph,i2c_interrupt_flag_enum int_flag); +/* clear I2C interrupt flag */ +void i2c_interrupt_flag_clear(uint32_t i2c_periph,i2c_interrupt_flag_enum int_flag); + +#endif /* GD32VF103_I2C_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_pmu.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_pmu.h new file mode 100644 index 0000000000..c1833f3b44 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_pmu.h @@ -0,0 +1,126 @@ +/*! + \file gd32vf103_pmu.h + \brief definitions for the PMU + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_PMU_H +#define GD32VF103_PMU_H + +#include "gd32vf103.h" + +/* PMU definitions */ +#define PMU PMU_BASE /*!< PMU base address */ + +/* registers definitions */ +#define PMU_CTL REG32((PMU) + 0x00U) /*!< PMU control register */ +#define PMU_CS REG32((PMU) + 0x04U) /*!< PMU control and status register */ + +/* bits definitions */ +/* PMU_CTL */ +#define PMU_CTL_LDOLP BIT(0) /*!< LDO low power mode */ +#define PMU_CTL_STBMOD BIT(1) /*!< standby mode */ +#define PMU_CTL_WURST BIT(2) /*!< wakeup flag reset */ +#define PMU_CTL_STBRST BIT(3) /*!< standby flag reset */ +#define PMU_CTL_LVDEN BIT(4) /*!< low voltage detector enable */ +#define PMU_CTL_LVDT BITS(5,7) /*!< low voltage detector threshold */ +#define PMU_CTL_BKPWEN BIT(8) /*!< backup domain write enable */ + +/* PMU_CS */ +#define PMU_CS_WUF BIT(0) /*!< wakeup flag */ +#define PMU_CS_STBF BIT(1) /*!< standby flag */ +#define PMU_CS_LVDF BIT(2) /*!< low voltage detector status flag */ +#define PMU_CS_WUPEN BIT(8) /*!< wakeup pin enable */ + +/* constants definitions */ +/* PMU low voltage detector threshold definitions */ +#define CTL_LVDT(regval) (BITS(5,7)&((uint32_t)(regval) << 5)) +#define PMU_LVDT_0 CTL_LVDT(0) /*!< voltage threshold is 2.2V */ +#define PMU_LVDT_1 CTL_LVDT(1) /*!< voltage threshold is 2.3V */ +#define PMU_LVDT_2 CTL_LVDT(2) /*!< voltage threshold is 2.4V */ +#define PMU_LVDT_3 CTL_LVDT(3) /*!< voltage threshold is 2.5V */ +#define PMU_LVDT_4 CTL_LVDT(4) /*!< voltage threshold is 2.6V */ +#define PMU_LVDT_5 CTL_LVDT(5) /*!< voltage threshold is 2.7V */ +#define PMU_LVDT_6 CTL_LVDT(6) /*!< voltage threshold is 2.8V */ +#define PMU_LVDT_7 CTL_LVDT(7) /*!< voltage threshold is 2.9V */ + +/* PMU flag definitions */ +#define PMU_FLAG_WAKEUP PMU_CS_WUF /*!< wakeup flag status */ +#define PMU_FLAG_STANDBY PMU_CS_STBF /*!< standby flag status */ +#define PMU_FLAG_LVD PMU_CS_LVDF /*!< lvd flag status */ + +/* PMU ldo definitions */ +#define PMU_LDO_NORMAL ((uint32_t)0x00000000U) /*!< LDO normal work when PMU enter deepsleep mode */ +#define PMU_LDO_LOWPOWER PMU_CTL_LDOLP /*!< LDO work at low power status when PMU enter deepsleep mode */ + +/* PMU flag reset definitions */ +#define PMU_FLAG_RESET_WAKEUP ((uint8_t)0x00U) /*!< wakeup flag reset */ +#define PMU_FLAG_RESET_STANDBY ((uint8_t)0x01U) /*!< standby flag reset */ + +/* PMU command constants definitions */ +#define WFI_CMD ((uint8_t)0x00U) /*!< use WFI command */ +#define WFE_CMD ((uint8_t)0x01U) /*!< use WFE command */ + +/* function declarations */ +/* reset PMU registers */ +void pmu_deinit(void); + +/* select low voltage detector threshold */ +void pmu_lvd_select(uint32_t lvdt_n); +/* disable PMU lvd */ +void pmu_lvd_disable(void); + +/* set PMU mode */ +/* PMU work at sleep mode */ +void pmu_to_sleepmode(uint8_t sleepmodecmd); +/* PMU work at deepsleep mode */ +void pmu_to_deepsleepmode(uint32_t ldo, uint8_t deepsleepmodecmd); +/* PMU work at standby mode */ +void pmu_to_standbymode(uint8_t standbymodecmd); +/* enable PMU wakeup pin */ +void pmu_wakeup_pin_enable(void); +/* disable PMU wakeup pin */ +void pmu_wakeup_pin_disable(void); + +/* backup related functions */ +/* enable write access to the registers in backup domain */ +void pmu_backup_write_enable(void); +/* disable write access to the registers in backup domain */ +void pmu_backup_write_disable(void); + +/* flag functions */ +/* get flag state */ +FlagStatus pmu_flag_get(uint32_t flag); +/* clear flag bit */ +void pmu_flag_clear(uint32_t flag_reset); + +#endif /* GD32VF103_PMU_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_rcu.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_rcu.h new file mode 100644 index 0000000000..b14806c477 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_rcu.h @@ -0,0 +1,721 @@ +/*! + \file gd32vf103_rcu.h + \brief definitions for the RCU + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_RCU_H +#define GD32VF103_RCU_H + +#include "gd32vf103.h" + +/* RCU definitions */ +#define RCU RCU_BASE + +/* registers definitions */ + +#define RCU_CTL REG32(RCU + 0x00U) /*!< control register */ +#define RCU_CFG0 REG32(RCU + 0x04U) /*!< clock configuration register 0 */ +#define RCU_INT REG32(RCU + 0x08U) /*!< clock interrupt register */ +#define RCU_APB2RST REG32(RCU + 0x0CU) /*!< APB2 reset register */ +#define RCU_APB1RST REG32(RCU + 0x10U) /*!< APB1 reset register */ +#define RCU_AHBEN REG32(RCU + 0x14U) /*!< AHB1 enable register */ +#define RCU_APB2EN REG32(RCU + 0x18U) /*!< APB2 enable register */ +#define RCU_APB1EN REG32(RCU + 0x1CU) /*!< APB1 enable register */ +#define RCU_BDCTL REG32(RCU + 0x20U) /*!< backup domain control register */ +#define RCU_RSTSCK REG32(RCU + 0x24U) /*!< reset source / clock register */ +#define RCU_AHBRST REG32(RCU + 0x28U) /*!< AHB reset register */ +#define RCU_CFG1 REG32(RCU + 0x2CU) /*!< clock configuration register 1 */ +#define RCU_DSV REG32(RCU + 0x34U) /*!< deep-sleep mode voltage register */ + + +/* bits definitions */ +/* RCU_CTL */ +#define RCU_CTL_IRC8MEN BIT(0) /*!< internal high speed oscillator enable */ +#define RCU_CTL_IRC8MSTB BIT(1) /*!< IRC8M high speed internal oscillator stabilization flag */ +#define RCU_CTL_IRC8MADJ BITS(3,7) /*!< high speed internal oscillator clock trim adjust value */ +#define RCU_CTL_IRC8MCALIB BITS(8,15) /*!< high speed internal oscillator calibration value register */ +#define RCU_CTL_HXTALEN BIT(16) /*!< external high speed oscillator enable */ +#define RCU_CTL_HXTALSTB BIT(17) /*!< external crystal oscillator clock stabilization flag */ +#define RCU_CTL_HXTALBPS BIT(18) /*!< external crystal oscillator clock bypass mode enable */ +#define RCU_CTL_CKMEN BIT(19) /*!< HXTAL clock monitor enable */ +#define RCU_CTL_PLLEN BIT(24) /*!< PLL enable */ +#define RCU_CTL_PLLSTB BIT(25) /*!< PLL clock stabilization flag */ +#define RCU_CTL_PLL1EN BIT(26) /*!< PLL1 enable */ +#define RCU_CTL_PLL1STB BIT(27) /*!< PLL1 clock stabilization flag */ +#define RCU_CTL_PLL2EN BIT(28) /*!< PLL2 enable */ +#define RCU_CTL_PLL2STB BIT(29) /*!< PLL2 clock stabilization flag */ + + +#define RCU_CFG0_SCS BITS(0,1) /*!< system clock switch */ +#define RCU_CFG0_SCSS BITS(2,3) /*!< system clock switch status */ +#define RCU_CFG0_AHBPSC BITS(4,7) /*!< AHB prescaler selection */ +#define RCU_CFG0_APB1PSC BITS(8,10) /*!< APB1 prescaler selection */ +#define RCU_CFG0_APB2PSC BITS(11,13) /*!< APB2 prescaler selection */ +#define RCU_CFG0_ADCPSC BITS(14,15) /*!< ADC prescaler selection */ +#define RCU_CFG0_PLLSEL BIT(16) /*!< PLL clock source selection */ +#define RCU_CFG0_PREDV0_LSB BIT(17) /*!< the LSB of PREDV0 division factor */ +#define RCU_CFG0_PLLMF BITS(18,21) /*!< PLL clock multiplication factor */ +#define RCU_CFG0_USBFSPSC BITS(22,23) /*!< USBFS clock prescaler selection */ +#define RCU_CFG0_CKOUT0SEL BITS(24,27) /*!< CKOUT0 clock source selection */ +#define RCU_CFG0_ADCPSC_2 BIT(28) /*!< bit 2 of ADCPSC */ +#define RCU_CFG0_PLLMF_4 BIT(29) /*!< bit 4 of PLLMF */ + +/* RCU_INT */ +#define RCU_INT_IRC40KSTBIF BIT(0) /*!< IRC40K stabilization interrupt flag */ +#define RCU_INT_LXTALSTBIF BIT(1) /*!< LXTAL stabilization interrupt flag */ +#define RCU_INT_IRC8MSTBIF BIT(2) /*!< IRC8M stabilization interrupt flag */ +#define RCU_INT_HXTALSTBIF BIT(3) /*!< HXTAL stabilization interrupt flag */ +#define RCU_INT_PLLSTBIF BIT(4) /*!< PLL stabilization interrupt flag */ +#define RCU_INT_PLL1STBIF BIT(5) /*!< PLL1 stabilization interrupt flag */ +#define RCU_INT_PLL2STBIF BIT(6) /*!< PLL2 stabilization interrupt flag */ +#define RCU_INT_CKMIF BIT(7) /*!< HXTAL clock stuck interrupt flag */ +#define RCU_INT_IRC40KSTBIE BIT(8) /*!< IRC40K stabilization interrupt enable */ +#define RCU_INT_LXTALSTBIE BIT(9) /*!< LXTAL stabilization interrupt enable */ +#define RCU_INT_IRC8MSTBIE BIT(10) /*!< IRC8M stabilization interrupt enable */ +#define RCU_INT_HXTALSTBIE BIT(11) /*!< HXTAL stabilization interrupt enable */ +#define RCU_INT_PLLSTBIE BIT(12) /*!< PLL stabilization interrupt enable */ +#define RCU_INT_PLL1STBIE BIT(13) /*!< PLL1 stabilization interrupt enable */ +#define RCU_INT_PLL2STBIE BIT(14) /*!< PLL2 stabilization interrupt enable */ +#define RCU_INT_IRC40KSTBIC BIT(16) /*!< IRC40K stabilization interrupt clear */ +#define RCU_INT_LXTALSTBIC BIT(17) /*!< LXTAL stabilization interrupt clear */ +#define RCU_INT_IRC8MSTBIC BIT(18) /*!< IRC8M stabilization interrupt clear */ +#define RCU_INT_HXTALSTBIC BIT(19) /*!< HXTAL stabilization interrupt clear */ +#define RCU_INT_PLLSTBIC BIT(20) /*!< PLL stabilization interrupt clear */ +#define RCU_INT_PLL1STBIC BIT(21) /*!< PLL1 stabilization interrupt clear */ +#define RCU_INT_PLL2STBIC BIT(22) /*!< PLL2 stabilization interrupt clear */ +#define RCU_INT_CKMIC BIT(23) /*!< HXTAL clock stuck interrupt clear */ + +/* RCU_APB2RST */ +#define RCU_APB2RST_AFRST BIT(0) /*!< alternate function I/O reset */ +#define RCU_APB2RST_PARST BIT(2) /*!< GPIO port A reset */ +#define RCU_APB2RST_PBRST BIT(3) /*!< GPIO port B reset */ +#define RCU_APB2RST_PCRST BIT(4) /*!< GPIO port C reset */ +#define RCU_APB2RST_PDRST BIT(5) /*!< GPIO port D reset */ +#define RCU_APB2RST_PERST BIT(6) /*!< GPIO port E reset */ +#define RCU_APB2RST_ADC0RST BIT(9) /*!< ADC0 reset */ +#define RCU_APB2RST_ADC1RST BIT(10) /*!< ADC1 reset */ +#define RCU_APB2RST_TIMER0RST BIT(11) /*!< TIMER0 reset */ +#define RCU_APB2RST_SPI0RST BIT(12) /*!< SPI0 reset */ +#define RCU_APB2RST_USART0RST BIT(14) /*!< USART0 reset */ + +/* RCU_APB1RST */ +#define RCU_APB1RST_TIMER1RST BIT(0) /*!< TIMER1 reset */ +#define RCU_APB1RST_TIMER2RST BIT(1) /*!< TIMER2 reset */ +#define RCU_APB1RST_TIMER3RST BIT(2) /*!< TIMER3 reset */ +#define RCU_APB1RST_TIMER4RST BIT(3) /*!< TIMER4 reset */ +#define RCU_APB1RST_TIMER5RST BIT(4) /*!< TIMER5 reset */ +#define RCU_APB1RST_TIMER6RST BIT(5) /*!< TIMER6 reset */ + +#define RCU_APB1RST_WWDGTRST BIT(11) /*!< WWDGT reset */ +#define RCU_APB1RST_SPI1RST BIT(14) /*!< SPI1 reset */ +#define RCU_APB1RST_SPI2RST BIT(15) /*!< SPI2 reset */ +#define RCU_APB1RST_USART1RST BIT(17) /*!< USART1 reset */ +#define RCU_APB1RST_USART2RST BIT(18) /*!< USART2 reset */ +#define RCU_APB1RST_UART3RST BIT(19) /*!< UART3 reset */ +#define RCU_APB1RST_UART4RST BIT(20) /*!< UART4 reset */ +#define RCU_APB1RST_I2C0RST BIT(21) /*!< I2C0 reset */ +#define RCU_APB1RST_I2C1RST BIT(22) /*!< I2C1 reset */ +#define RCU_APB1RST_CAN0RST BIT(25) /*!< CAN0 reset */ +#define RCU_APB1RST_CAN1RST BIT(26) /*!< CAN1 reset */ +#define RCU_APB1RST_BKPIRST BIT(27) /*!< backup interface reset */ +#define RCU_APB1RST_PMURST BIT(28) /*!< PMU reset */ +#define RCU_APB1RST_DACRST BIT(29) /*!< DAC reset */ + +/* RCU_AHBEN */ +#define RCU_AHBEN_DMA0EN BIT(0) /*!< DMA0 clock enable */ +#define RCU_AHBEN_DMA1EN BIT(1) /*!< DMA1 clock enable */ +#define RCU_AHBEN_SRAMSPEN BIT(2) /*!< SRAM clock enable when sleep mode */ +#define RCU_AHBEN_FMCSPEN BIT(4) /*!< FMC clock enable when sleep mode */ +#define RCU_AHBEN_CRCEN BIT(6) /*!< CRC clock enable */ +#define RCU_AHBEN_EXMCEN BIT(8) /*!< EXMC clock enable */ +#define RCU_AHBEN_USBFSEN BIT(12) /*!< USBFS clock enable */ + +/* RCU_APB2EN */ +#define RCU_APB2EN_AFEN BIT(0) /*!< alternate function IO clock enable */ +#define RCU_APB2EN_PAEN BIT(2) /*!< GPIO port A clock enable */ +#define RCU_APB2EN_PBEN BIT(3) /*!< GPIO port B clock enable */ +#define RCU_APB2EN_PCEN BIT(4) /*!< GPIO port C clock enable */ +#define RCU_APB2EN_PDEN BIT(5) /*!< GPIO port D clock enable */ +#define RCU_APB2EN_PEEN BIT(6) /*!< GPIO port E clock enable */ +#define RCU_APB2EN_ADC0EN BIT(9) /*!< ADC0 clock enable */ +#define RCU_APB2EN_ADC1EN BIT(10) /*!< ADC1 clock enable */ +#define RCU_APB2EN_TIMER0EN BIT(11) /*!< TIMER0 clock enable */ +#define RCU_APB2EN_SPI0EN BIT(12) /*!< SPI0 clock enable */ +#define RCU_APB2EN_USART0EN BIT(14) /*!< USART0 clock enable */ + +/* RCU_APB1EN */ +#define RCU_APB1EN_TIMER1EN BIT(0) /*!< TIMER1 clock enable */ +#define RCU_APB1EN_TIMER2EN BIT(1) /*!< TIMER2 clock enable */ +#define RCU_APB1EN_TIMER3EN BIT(2) /*!< TIMER3 clock enable */ +#define RCU_APB1EN_TIMER4EN BIT(3) /*!< TIMER4 clock enable */ +#define RCU_APB1EN_TIMER5EN BIT(4) /*!< TIMER5 clock enable */ +#define RCU_APB1EN_TIMER6EN BIT(5) /*!< TIMER6 clock enable */ +#define RCU_APB1EN_WWDGTEN BIT(11) /*!< WWDGT clock enable */ +#define RCU_APB1EN_SPI1EN BIT(14) /*!< SPI1 clock enable */ +#define RCU_APB1EN_SPI2EN BIT(15) /*!< SPI2 clock enable */ +#define RCU_APB1EN_USART1EN BIT(17) /*!< USART1 clock enable */ +#define RCU_APB1EN_USART2EN BIT(18) /*!< USART2 clock enable */ +#define RCU_APB1EN_UART3EN BIT(19) /*!< UART3 clock enable */ +#define RCU_APB1EN_UART4EN BIT(20) /*!< UART4 clock enable */ +#define RCU_APB1EN_I2C0EN BIT(21) /*!< I2C0 clock enable */ +#define RCU_APB1EN_I2C1EN BIT(22) /*!< I2C1 clock enable */ +#define RCU_APB1EN_CAN0EN BIT(25) /*!< CAN0 clock enable */ +#define RCU_APB1EN_CAN1EN BIT(26) /*!< CAN1 clock enable */ +#define RCU_APB1EN_BKPIEN BIT(27) /*!< backup interface clock enable */ +#define RCU_APB1EN_PMUEN BIT(28) /*!< PMU clock enable */ +#define RCU_APB1EN_DACEN BIT(29) /*!< DAC clock enable */ + +/* RCU_BDCTL */ +#define RCU_BDCTL_LXTALEN BIT(0) /*!< LXTAL enable */ +#define RCU_BDCTL_LXTALSTB BIT(1) /*!< low speed crystal oscillator stabilization flag */ +#define RCU_BDCTL_LXTALBPS BIT(2) /*!< LXTAL bypass mode enable */ +#define RCU_BDCTL_RTCSRC BITS(8,9) /*!< RTC clock entry selection */ +#define RCU_BDCTL_RTCEN BIT(15) /*!< RTC clock enable */ +#define RCU_BDCTL_BKPRST BIT(16) /*!< backup domain reset */ + +/* RCU_RSTSCK */ +#define RCU_RSTSCK_IRC40KEN BIT(0) /*!< IRC40K enable */ +#define RCU_RSTSCK_IRC40KSTB BIT(1) /*!< IRC40K stabilization flag */ +#define RCU_RSTSCK_RSTFC BIT(24) /*!< reset flag clear */ +#define RCU_RSTSCK_EPRSTF BIT(26) /*!< external pin reset flag */ +#define RCU_RSTSCK_PORRSTF BIT(27) /*!< power reset flag */ +#define RCU_RSTSCK_SWRSTF BIT(28) /*!< software reset flag */ +#define RCU_RSTSCK_FWDGTRSTF BIT(29) /*!< free watchdog timer reset flag */ +#define RCU_RSTSCK_WWDGTRSTF BIT(30) /*!< window watchdog timer reset flag */ +#define RCU_RSTSCK_LPRSTF BIT(31) /*!< low-power reset flag */ + +/* RCU_AHBRST */ +#define RCU_AHBRST_USBFSRST BIT(12) /*!< USBFS reset */ + +/* RCU_CFG1 */ +#define RCU_CFG1_PREDV0 BITS(0,3) /*!< PREDV0 division factor */ +#define RCU_CFG1_PREDV1 BITS(4,7) /*!< PREDV1 division factor */ +#define RCU_CFG1_PLL1MF BITS(8,11) /*!< PLL1 clock multiplication factor */ +#define RCU_CFG1_PLL2MF BITS(12,15) /*!< PLL2 clock multiplication factor */ +#define RCU_CFG1_PREDV0SEL BIT(16) /*!< PREDV0 input clock source selection */ +#define RCU_CFG1_I2S1SEL BIT(17) /*!< I2S1 clock source selection */ +#define RCU_CFG1_I2S2SEL BIT(18) /*!< I2S2 clock source selection */ + +/* RCU_DSV */ +#define RCU_DSV_DSLPVS BITS(0,1) /*!< deep-sleep mode voltage select */ + +/* constants definitions */ +/* define the peripheral clock enable bit position and its register index offset */ +#define RCU_REGIDX_BIT(regidx, bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos)) +#define RCU_REG_VAL(periph) (REG32(RCU + ((uint32_t)(periph) >> 6))) +#define RCU_BIT_POS(val) ((uint32_t)(val) & 0x1FU) + +/* register offset */ +/* peripherals enable */ +#define AHBEN_REG_OFFSET 0x14U /*!< AHB enable register offset */ +#define APB1EN_REG_OFFSET 0x1CU /*!< APB1 enable register offset */ +#define APB2EN_REG_OFFSET 0x18U /*!< APB2 enable register offset */ + +/* peripherals reset */ +#define AHBRST_REG_OFFSET 0x28U /*!< AHB reset register offset */ +#define APB1RST_REG_OFFSET 0x10U /*!< APB1 reset register offset */ +#define APB2RST_REG_OFFSET 0x0CU /*!< APB2 reset register offset */ +#define RSTSCK_REG_OFFSET 0x24U /*!< reset source/clock register offset */ + +/* clock control */ +#define CTL_REG_OFFSET 0x00U /*!< control register offset */ +#define BDCTL_REG_OFFSET 0x20U /*!< backup domain control register offset */ + +/* clock stabilization and stuck interrupt */ +#define INT_REG_OFFSET 0x08U /*!< clock interrupt register offset */ + +/* configuration register */ +#define CFG0_REG_OFFSET 0x04U /*!< clock configuration register 0 offset */ +#define CFG1_REG_OFFSET 0x2CU /*!< clock configuration register 1 offset */ + +/* peripheral clock enable */ +typedef enum { + /* AHB peripherals */ + RCU_DMA0 = RCU_REGIDX_BIT(AHBEN_REG_OFFSET, 0U), /*!< DMA0 clock */ + RCU_DMA1 = RCU_REGIDX_BIT(AHBEN_REG_OFFSET, 1U), /*!< DMA1 clock */ + RCU_CRC = RCU_REGIDX_BIT(AHBEN_REG_OFFSET, 6U), /*!< CRC clock */ + RCU_EXMC = RCU_REGIDX_BIT(AHBEN_REG_OFFSET, 8U), /*!< EXMC clock */ + RCU_USBFS = RCU_REGIDX_BIT(AHBEN_REG_OFFSET, 12U), /*!< USBFS clock */ + /* APB1 peripherals */ + RCU_TIMER1 = RCU_REGIDX_BIT(APB1EN_REG_OFFSET, 0U), /*!< TIMER1 clock */ + RCU_TIMER2 = RCU_REGIDX_BIT(APB1EN_REG_OFFSET, 1U), /*!< TIMER2 clock */ + RCU_TIMER3 = RCU_REGIDX_BIT(APB1EN_REG_OFFSET, 2U), /*!< TIMER3 clock */ + RCU_TIMER4 = RCU_REGIDX_BIT(APB1EN_REG_OFFSET, 3U), /*!< TIMER4 clock */ + RCU_TIMER5 = RCU_REGIDX_BIT(APB1EN_REG_OFFSET, 4U), /*!< TIMER5 clock */ + RCU_TIMER6 = RCU_REGIDX_BIT(APB1EN_REG_OFFSET, 5U), /*!< TIMER6 clock */ + RCU_WWDGT = RCU_REGIDX_BIT(APB1EN_REG_OFFSET, 11U), /*!< WWDGT clock */ + RCU_SPI1 = RCU_REGIDX_BIT(APB1EN_REG_OFFSET, 14U), /*!< SPI1 clock */ + RCU_SPI2 = RCU_REGIDX_BIT(APB1EN_REG_OFFSET, 15U), /*!< SPI2 clock */ + RCU_USART1 = RCU_REGIDX_BIT(APB1EN_REG_OFFSET, 17U), /*!< USART1 clock */ + RCU_USART2 = RCU_REGIDX_BIT(APB1EN_REG_OFFSET, 18U), /*!< USART2 clock */ + RCU_UART3 = RCU_REGIDX_BIT(APB1EN_REG_OFFSET, 19U), /*!< UART3 clock */ + RCU_UART4 = RCU_REGIDX_BIT(APB1EN_REG_OFFSET, 20U), /*!< UART4 clock */ + RCU_I2C0 = RCU_REGIDX_BIT(APB1EN_REG_OFFSET, 21U), /*!< I2C0 clock */ + RCU_I2C1 = RCU_REGIDX_BIT(APB1EN_REG_OFFSET, 22U), /*!< I2C1 clock */ + RCU_CAN0 = RCU_REGIDX_BIT(APB1EN_REG_OFFSET, 25U), /*!< CAN0 clock */ + RCU_CAN1 = RCU_REGIDX_BIT(APB1EN_REG_OFFSET, 26U), /*!< CAN1 clock */ + RCU_BKPI = RCU_REGIDX_BIT(APB1EN_REG_OFFSET, 27U), /*!< BKPI clock */ + RCU_PMU = RCU_REGIDX_BIT(APB1EN_REG_OFFSET, 28U), /*!< PMU clock */ + RCU_DAC = RCU_REGIDX_BIT(APB1EN_REG_OFFSET, 29U), /*!< DAC clock */ + RCU_RTC = RCU_REGIDX_BIT(BDCTL_REG_OFFSET, 15U), /*!< RTC clock */ + /* APB2 peripherals */ + RCU_AF = RCU_REGIDX_BIT(APB2EN_REG_OFFSET, 0U), /*!< alternate function clock */ + RCU_GPIOA = RCU_REGIDX_BIT(APB2EN_REG_OFFSET, 2U), /*!< GPIOA clock */ + RCU_GPIOB = RCU_REGIDX_BIT(APB2EN_REG_OFFSET, 3U), /*!< GPIOB clock */ + RCU_GPIOC = RCU_REGIDX_BIT(APB2EN_REG_OFFSET, 4U), /*!< GPIOC clock */ + RCU_GPIOD = RCU_REGIDX_BIT(APB2EN_REG_OFFSET, 5U), /*!< GPIOD clock */ + RCU_GPIOE = RCU_REGIDX_BIT(APB2EN_REG_OFFSET, 6U), /*!< GPIOE clock */ + RCU_ADC0 = RCU_REGIDX_BIT(APB2EN_REG_OFFSET, 9U), /*!< ADC0 clock */ + RCU_ADC1 = RCU_REGIDX_BIT(APB2EN_REG_OFFSET, 10U), /*!< ADC1 clock */ + RCU_TIMER0 = RCU_REGIDX_BIT(APB2EN_REG_OFFSET, 11U), /*!< TIMER0 clock */ + RCU_SPI0 = RCU_REGIDX_BIT(APB2EN_REG_OFFSET, 12U), /*!< SPI0 clock */ + RCU_USART0 = RCU_REGIDX_BIT(APB2EN_REG_OFFSET, 14U), /*!< USART0 clock */ +} rcu_periph_enum; + +/* peripheral clock enable when sleep mode*/ +typedef enum { +/* AHB peripherals */ + RCU_SRAM_SLP = RCU_REGIDX_BIT(AHBEN_REG_OFFSET, 2U), /*!< SRAM clock */ + RCU_FMC_SLP = RCU_REGIDX_BIT(AHBEN_REG_OFFSET, 4U), /*!< FMC clock */ +} rcu_periph_sleep_enum; + +/* peripherals reset */ +typedef enum { + /* AHB peripherals */ + RCU_USBFSRST = RCU_REGIDX_BIT(AHBRST_REG_OFFSET, 12U), /*!< USBFS clock reset */ + /* APB1 peripherals */ + RCU_TIMER1RST = RCU_REGIDX_BIT(APB1RST_REG_OFFSET, 0U), /*!< TIMER1 clock reset */ + RCU_TIMER2RST = RCU_REGIDX_BIT(APB1RST_REG_OFFSET, 1U), /*!< TIMER2 clock reset */ + RCU_TIMER3RST = RCU_REGIDX_BIT(APB1RST_REG_OFFSET, 2U), /*!< TIMER3 clock reset */ + RCU_TIMER4RST = RCU_REGIDX_BIT(APB1RST_REG_OFFSET, 3U), /*!< TIMER4 clock reset */ + RCU_TIMER5RST = RCU_REGIDX_BIT(APB1RST_REG_OFFSET, 4U), /*!< TIMER5 clock reset */ + RCU_TIMER6RST = RCU_REGIDX_BIT(APB1RST_REG_OFFSET, 5U), /*!< TIMER6 clock reset */ + RCU_WWDGTRST = RCU_REGIDX_BIT(APB1RST_REG_OFFSET, 11U), /*!< WWDGT clock reset */ + RCU_SPI1RST = RCU_REGIDX_BIT(APB1RST_REG_OFFSET, 14U), /*!< SPI1 clock reset */ + RCU_SPI2RST = RCU_REGIDX_BIT(APB1RST_REG_OFFSET, 15U), /*!< SPI2 clock reset */ + RCU_USART1RST = RCU_REGIDX_BIT(APB1RST_REG_OFFSET, 17U), /*!< USART1 clock reset */ + RCU_USART2RST = RCU_REGIDX_BIT(APB1RST_REG_OFFSET, 18U), /*!< USART2 clock reset */ + RCU_UART3RST = RCU_REGIDX_BIT(APB1RST_REG_OFFSET, 19U), /*!< UART3 clock reset */ + RCU_UART4RST = RCU_REGIDX_BIT(APB1RST_REG_OFFSET, 20U), /*!< UART4 clock reset */ + RCU_I2C0RST = RCU_REGIDX_BIT(APB1RST_REG_OFFSET, 21U), /*!< I2C0 clock reset */ + RCU_I2C1RST = RCU_REGIDX_BIT(APB1RST_REG_OFFSET, 22U), /*!< I2C1 clock reset */ + RCU_CAN0RST = RCU_REGIDX_BIT(APB1RST_REG_OFFSET, 25U), /*!< CAN0 clock reset */ + RCU_CAN1RST = RCU_REGIDX_BIT(APB1RST_REG_OFFSET, 26U), /*!< CAN1 clock reset */ + RCU_BKPIRST = RCU_REGIDX_BIT(APB1RST_REG_OFFSET, 27U), /*!< BKPI clock reset */ + RCU_PMURST = RCU_REGIDX_BIT(APB1RST_REG_OFFSET, 28U), /*!< PMU clock reset */ + RCU_DACRST = RCU_REGIDX_BIT(APB1RST_REG_OFFSET, 29U), /*!< DAC clock reset */ + /* APB2 peripherals */ + RCU_AFRST = RCU_REGIDX_BIT(APB2RST_REG_OFFSET, 0U), /*!< alternate function clock reset */ + RCU_GPIOARST = RCU_REGIDX_BIT(APB2RST_REG_OFFSET, 2U), /*!< GPIOA clock reset */ + RCU_GPIOBRST = RCU_REGIDX_BIT(APB2RST_REG_OFFSET, 3U), /*!< GPIOB clock reset */ + RCU_GPIOCRST = RCU_REGIDX_BIT(APB2RST_REG_OFFSET, 4U), /*!< GPIOC clock reset */ + RCU_GPIODRST = RCU_REGIDX_BIT(APB2RST_REG_OFFSET, 5U), /*!< GPIOD clock reset */ + RCU_GPIOERST = RCU_REGIDX_BIT(APB2RST_REG_OFFSET, 6U), /*!< GPIOE clock reset */ + RCU_ADC0RST = RCU_REGIDX_BIT(APB2RST_REG_OFFSET, 9U), /*!< ADC0 clock reset */ + RCU_ADC1RST = RCU_REGIDX_BIT(APB2RST_REG_OFFSET, 10U), /*!< ADC1 clock reset */ + RCU_TIMER0RST = RCU_REGIDX_BIT(APB2RST_REG_OFFSET, 11U), /*!< TIMER0 clock reset */ + RCU_SPI0RST = RCU_REGIDX_BIT(APB2RST_REG_OFFSET, 12U), /*!< SPI0 clock reset */ + RCU_USART0RST = RCU_REGIDX_BIT(APB2RST_REG_OFFSET, 14U), /*!< USART0 clock reset */ +} rcu_periph_reset_enum; + +/* clock stabilization and peripheral reset flags */ +typedef enum { + /* clock stabilization flags */ + RCU_FLAG_IRC8MSTB = RCU_REGIDX_BIT(CTL_REG_OFFSET, 1U), /*!< IRC8M stabilization flags */ + RCU_FLAG_HXTALSTB = RCU_REGIDX_BIT(CTL_REG_OFFSET, 17U), /*!< HXTAL stabilization flags */ + RCU_FLAG_PLLSTB = RCU_REGIDX_BIT(CTL_REG_OFFSET, 25U), /*!< PLL stabilization flags */ + RCU_FLAG_PLL1STB = RCU_REGIDX_BIT(CTL_REG_OFFSET, 27U), /*!< PLL1 stabilization flags */ + RCU_FLAG_PLL2STB = RCU_REGIDX_BIT(CTL_REG_OFFSET, 29U), /*!< PLL2 stabilization flags */ + RCU_FLAG_LXTALSTB = RCU_REGIDX_BIT(BDCTL_REG_OFFSET, 1U), /*!< LXTAL stabilization flags */ + RCU_FLAG_IRC40KSTB = RCU_REGIDX_BIT(RSTSCK_REG_OFFSET, 1U), /*!< IRC40K stabilization flags */ + /* reset source flags */ + RCU_FLAG_EPRST = RCU_REGIDX_BIT(RSTSCK_REG_OFFSET, 26U), /*!< external PIN reset flags */ + RCU_FLAG_PORRST = RCU_REGIDX_BIT(RSTSCK_REG_OFFSET, 27U), /*!< power reset flags */ + RCU_FLAG_SWRST = RCU_REGIDX_BIT(RSTSCK_REG_OFFSET, 28U), /*!< software reset flags */ + RCU_FLAG_FWDGTRST = RCU_REGIDX_BIT(RSTSCK_REG_OFFSET, 29U), /*!< FWDGT reset flags */ + RCU_FLAG_WWDGTRST = RCU_REGIDX_BIT(RSTSCK_REG_OFFSET, 30U), /*!< WWDGT reset flags */ + RCU_FLAG_LPRST = RCU_REGIDX_BIT(RSTSCK_REG_OFFSET, 31U), /*!< low-power reset flags */ +} rcu_flag_enum; + +/* clock stabilization and ckm interrupt flags */ +typedef enum { + RCU_INT_FLAG_IRC40KSTB = RCU_REGIDX_BIT(INT_REG_OFFSET, 0U), /*!< IRC40K stabilization interrupt flag */ + RCU_INT_FLAG_LXTALSTB = RCU_REGIDX_BIT(INT_REG_OFFSET, 1U), /*!< LXTAL stabilization interrupt flag */ + RCU_INT_FLAG_IRC8MSTB = RCU_REGIDX_BIT(INT_REG_OFFSET, 2U), /*!< IRC8M stabilization interrupt flag */ + RCU_INT_FLAG_HXTALSTB = RCU_REGIDX_BIT(INT_REG_OFFSET, 3U), /*!< HXTAL stabilization interrupt flag */ + RCU_INT_FLAG_PLLSTB = RCU_REGIDX_BIT(INT_REG_OFFSET, 4U), /*!< PLL stabilization interrupt flag */ + RCU_INT_FLAG_PLL1STB = RCU_REGIDX_BIT(INT_REG_OFFSET, 5U), /*!< PLL1 stabilization interrupt flag */ + RCU_INT_FLAG_PLL2STB = RCU_REGIDX_BIT(INT_REG_OFFSET, 6U), /*!< PLL2 stabilization interrupt flag */ + RCU_INT_FLAG_CKM = RCU_REGIDX_BIT(INT_REG_OFFSET, 7U), /*!< HXTAL clock stuck interrupt flag */ +} rcu_int_flag_enum; + +/* clock stabilization and stuck interrupt flags clear */ +typedef enum { + RCU_INT_FLAG_IRC40KSTB_CLR = RCU_REGIDX_BIT(INT_REG_OFFSET, 16U), /*!< IRC40K stabilization interrupt flags clear */ + RCU_INT_FLAG_LXTALSTB_CLR = RCU_REGIDX_BIT(INT_REG_OFFSET, 17U), /*!< LXTAL stabilization interrupt flags clear */ + RCU_INT_FLAG_IRC8MSTB_CLR = RCU_REGIDX_BIT(INT_REG_OFFSET, 18U), /*!< IRC8M stabilization interrupt flags clear */ + RCU_INT_FLAG_HXTALSTB_CLR = RCU_REGIDX_BIT(INT_REG_OFFSET, 19U), /*!< HXTAL stabilization interrupt flags clear */ + RCU_INT_FLAG_PLLSTB_CLR = RCU_REGIDX_BIT(INT_REG_OFFSET, 20U), /*!< PLL stabilization interrupt flags clear */ + RCU_INT_FLAG_PLL1STB_CLR = RCU_REGIDX_BIT(INT_REG_OFFSET, 21U), /*!< PLL1 stabilization interrupt flags clear */ + RCU_INT_FLAG_PLL2STB_CLR = RCU_REGIDX_BIT(INT_REG_OFFSET, 22U), /*!< PLL2 stabilization interrupt flags clear */ + RCU_INT_FLAG_CKM_CLR = RCU_REGIDX_BIT(INT_REG_OFFSET, 23U), /*!< CKM interrupt flags clear */ +} rcu_int_flag_clear_enum; + +/* clock stabilization interrupt enable or disable */ +typedef enum { + RCU_INT_IRC40KSTB = RCU_REGIDX_BIT(INT_REG_OFFSET, 8U), /*!< IRC40K stabilization interrupt */ + RCU_INT_LXTALSTB = RCU_REGIDX_BIT(INT_REG_OFFSET, 9U), /*!< LXTAL stabilization interrupt */ + RCU_INT_IRC8MSTB = RCU_REGIDX_BIT(INT_REG_OFFSET, 10U), /*!< IRC8M stabilization interrupt */ + RCU_INT_HXTALSTB = RCU_REGIDX_BIT(INT_REG_OFFSET, 11U), /*!< HXTAL stabilization interrupt */ + RCU_INT_PLLSTB = RCU_REGIDX_BIT(INT_REG_OFFSET, 12U), /*!< PLL stabilization interrupt */ + RCU_INT_PLL1STB = RCU_REGIDX_BIT(INT_REG_OFFSET, 13U), /*!< PLL1 stabilization interrupt */ + RCU_INT_PLL2STB = RCU_REGIDX_BIT(INT_REG_OFFSET, 14U), /*!< PLL2 stabilization interrupt */ +} rcu_int_enum; + +/* oscillator types */ +typedef enum { + RCU_HXTAL = RCU_REGIDX_BIT(CTL_REG_OFFSET, 16U), /*!< HXTAL */ + RCU_LXTAL = RCU_REGIDX_BIT(BDCTL_REG_OFFSET, 0U), /*!< LXTAL */ + RCU_IRC8M = RCU_REGIDX_BIT(CTL_REG_OFFSET, 0U), /*!< IRC8M */ + RCU_IRC40K = RCU_REGIDX_BIT(RSTSCK_REG_OFFSET, 0U), /*!< IRC40K */ + RCU_PLL_CK = RCU_REGIDX_BIT(CTL_REG_OFFSET, 24U), /*!< PLL */ + RCU_PLL1_CK = RCU_REGIDX_BIT(CTL_REG_OFFSET, 26U), /*!< PLL1 */ + RCU_PLL2_CK = RCU_REGIDX_BIT(CTL_REG_OFFSET, 28U), /*!< PLL2 */ +} rcu_osci_type_enum; + +/* rcu clock frequency */ +typedef enum { + CK_SYS = 0, /*!< system clock */ + CK_AHB, /*!< AHB clock */ + CK_APB1, /*!< APB1 clock */ + CK_APB2, /*!< APB2 clock */ +} rcu_clock_freq_enum; + +/* RCU_CFG0 register bit define */ +/* system clock source select */ +#define CFG0_SCS(regval) (BITS(0,1) & ((uint32_t)(regval) << 0)) +#define RCU_CKSYSSRC_IRC8M CFG0_SCS(0) /*!< system clock source select IRC8M */ +#define RCU_CKSYSSRC_HXTAL CFG0_SCS(1) /*!< system clock source select HXTAL */ +#define RCU_CKSYSSRC_PLL CFG0_SCS(2) /*!< system clock source select PLL */ + +/* system clock source select status */ +#define CFG0_SCSS(regval) (BITS(2,3) & ((uint32_t)(regval) << 2)) +#define RCU_SCSS_IRC8M CFG0_SCSS(0) /*!< system clock source select IRC8M */ +#define RCU_SCSS_HXTAL CFG0_SCSS(1) /*!< system clock source select HXTAL */ +#define RCU_SCSS_PLL CFG0_SCSS(2) /*!< system clock source select PLLP */ + +/* AHB prescaler selection */ +#define CFG0_AHBPSC(regval) (BITS(4,7) & ((uint32_t)(regval) << 4)) +#define RCU_AHB_CKSYS_DIV1 CFG0_AHBPSC(0) /*!< AHB prescaler select CK_SYS */ +#define RCU_AHB_CKSYS_DIV2 CFG0_AHBPSC(8) /*!< AHB prescaler select CK_SYS/2 */ +#define RCU_AHB_CKSYS_DIV4 CFG0_AHBPSC(9) /*!< AHB prescaler select CK_SYS/4 */ +#define RCU_AHB_CKSYS_DIV8 CFG0_AHBPSC(10) /*!< AHB prescaler select CK_SYS/8 */ +#define RCU_AHB_CKSYS_DIV16 CFG0_AHBPSC(11) /*!< AHB prescaler select CK_SYS/16 */ +#define RCU_AHB_CKSYS_DIV64 CFG0_AHBPSC(12) /*!< AHB prescaler select CK_SYS/64 */ +#define RCU_AHB_CKSYS_DIV128 CFG0_AHBPSC(13) /*!< AHB prescaler select CK_SYS/128 */ +#define RCU_AHB_CKSYS_DIV256 CFG0_AHBPSC(14) /*!< AHB prescaler select CK_SYS/256 */ +#define RCU_AHB_CKSYS_DIV512 CFG0_AHBPSC(15) /*!< AHB prescaler select CK_SYS/512 */ + +/* APB1 prescaler selection */ +#define CFG0_APB1PSC(regval) (BITS(8,10) & ((uint32_t)(regval) << 8)) +#define RCU_APB1_CKAHB_DIV1 CFG0_APB1PSC(0) /*!< APB1 prescaler select CK_AHB */ +#define RCU_APB1_CKAHB_DIV2 CFG0_APB1PSC(4) /*!< APB1 prescaler select CK_AHB/2 */ +#define RCU_APB1_CKAHB_DIV4 CFG0_APB1PSC(5) /*!< APB1 prescaler select CK_AHB/4 */ +#define RCU_APB1_CKAHB_DIV8 CFG0_APB1PSC(6) /*!< APB1 prescaler select CK_AHB/8 */ +#define RCU_APB1_CKAHB_DIV16 CFG0_APB1PSC(7) /*!< APB1 prescaler select CK_AHB/16 */ + +/* APB2 prescaler selection */ +#define CFG0_APB2PSC(regval) (BITS(11,13) & ((uint32_t)(regval) << 11)) +#define RCU_APB2_CKAHB_DIV1 CFG0_APB2PSC(0) /*!< APB2 prescaler select CK_AHB */ +#define RCU_APB2_CKAHB_DIV2 CFG0_APB2PSC(4) /*!< APB2 prescaler select CK_AHB/2 */ +#define RCU_APB2_CKAHB_DIV4 CFG0_APB2PSC(5) /*!< APB2 prescaler select CK_AHB/4 */ +#define RCU_APB2_CKAHB_DIV8 CFG0_APB2PSC(6) /*!< APB2 prescaler select CK_AHB/8 */ +#define RCU_APB2_CKAHB_DIV16 CFG0_APB2PSC(7) /*!< APB2 prescaler select CK_AHB/16 */ + +/* ADC prescaler select */ +#define RCU_CKADC_CKAPB2_DIV2 ((uint32_t)0x00000000U) /*!< ADC prescaler select CK_APB2/2 */ +#define RCU_CKADC_CKAPB2_DIV4 ((uint32_t)0x00000001U) /*!< ADC prescaler select CK_APB2/4 */ +#define RCU_CKADC_CKAPB2_DIV6 ((uint32_t)0x00000002U) /*!< ADC prescaler select CK_APB2/6 */ +#define RCU_CKADC_CKAPB2_DIV8 ((uint32_t)0x00000003U) /*!< ADC prescaler select CK_APB2/8 */ +#define RCU_CKADC_CKAPB2_DIV12 ((uint32_t)0x00000005U) /*!< ADC prescaler select CK_APB2/12 */ +#define RCU_CKADC_CKAPB2_DIV16 ((uint32_t)0x00000007U) /*!< ADC prescaler select CK_APB2/16 */ + +/* PLL clock source selection */ +#define RCU_PLLSRC_IRC8M_DIV2 ((uint32_t)0x00000000U) /*!< IRC8M/2 clock selected as source clock of PLL */ +#define RCU_PLLSRC_HXTAL RCU_CFG0_PLLSEL /*!< HXTAL clock selected as source clock of PLL */ + +/* PLL clock multiplication factor */ +#define PLLMF_4 RCU_CFG0_PLLMF_4 /* bit 4 of PLLMF */ + +#define CFG0_PLLMF(regval) (BITS(18,21) & ((uint32_t)(regval) << 18)) +#define RCU_PLL_MUL2 CFG0_PLLMF(0) /*!< PLL source clock multiply by 2 */ +#define RCU_PLL_MUL3 CFG0_PLLMF(1) /*!< PLL source clock multiply by 3 */ +#define RCU_PLL_MUL4 CFG0_PLLMF(2) /*!< PLL source clock multiply by 4 */ +#define RCU_PLL_MUL5 CFG0_PLLMF(3) /*!< PLL source clock multiply by 5 */ +#define RCU_PLL_MUL6 CFG0_PLLMF(4) /*!< PLL source clock multiply by 6 */ +#define RCU_PLL_MUL7 CFG0_PLLMF(5) /*!< PLL source clock multiply by 7 */ +#define RCU_PLL_MUL8 CFG0_PLLMF(6) /*!< PLL source clock multiply by 8 */ +#define RCU_PLL_MUL9 CFG0_PLLMF(7) /*!< PLL source clock multiply by 9 */ +#define RCU_PLL_MUL10 CFG0_PLLMF(8) /*!< PLL source clock multiply by 10 */ +#define RCU_PLL_MUL11 CFG0_PLLMF(9) /*!< PLL source clock multiply by 11 */ +#define RCU_PLL_MUL12 CFG0_PLLMF(10) /*!< PLL source clock multiply by 12 */ +#define RCU_PLL_MUL13 CFG0_PLLMF(11) /*!< PLL source clock multiply by 13 */ +#define RCU_PLL_MUL14 CFG0_PLLMF(12) /*!< PLL source clock multiply by 14 */ +#define RCU_PLL_MUL6_5 CFG0_PLLMF(13) /*!< PLL source clock multiply by 6.5 */ +#define RCU_PLL_MUL16 CFG0_PLLMF(14) /*!< PLL source clock multiply by 16 */ +#define RCU_PLL_MUL17 (PLLMF_4 | CFG0_PLLMF(0)) /*!< PLL source clock multiply by 17 */ +#define RCU_PLL_MUL18 (PLLMF_4 | CFG0_PLLMF(1)) /*!< PLL source clock multiply by 18 */ +#define RCU_PLL_MUL19 (PLLMF_4 | CFG0_PLLMF(2)) /*!< PLL source clock multiply by 19 */ +#define RCU_PLL_MUL20 (PLLMF_4 | CFG0_PLLMF(3)) /*!< PLL source clock multiply by 20 */ +#define RCU_PLL_MUL21 (PLLMF_4 | CFG0_PLLMF(4)) /*!< PLL source clock multiply by 21 */ +#define RCU_PLL_MUL22 (PLLMF_4 | CFG0_PLLMF(5)) /*!< PLL source clock multiply by 22 */ +#define RCU_PLL_MUL23 (PLLMF_4 | CFG0_PLLMF(6)) /*!< PLL source clock multiply by 23 */ +#define RCU_PLL_MUL24 (PLLMF_4 | CFG0_PLLMF(7)) /*!< PLL source clock multiply by 24 */ +#define RCU_PLL_MUL25 (PLLMF_4 | CFG0_PLLMF(8)) /*!< PLL source clock multiply by 25 */ +#define RCU_PLL_MUL26 (PLLMF_4 | CFG0_PLLMF(9)) /*!< PLL source clock multiply by 26 */ +#define RCU_PLL_MUL27 (PLLMF_4 | CFG0_PLLMF(10)) /*!< PLL source clock multiply by 27 */ +#define RCU_PLL_MUL28 (PLLMF_4 | CFG0_PLLMF(11)) /*!< PLL source clock multiply by 28 */ +#define RCU_PLL_MUL29 (PLLMF_4 | CFG0_PLLMF(12)) /*!< PLL source clock multiply by 29 */ +#define RCU_PLL_MUL30 (PLLMF_4 | CFG0_PLLMF(13)) /*!< PLL source clock multiply by 30 */ +#define RCU_PLL_MUL31 (PLLMF_4 | CFG0_PLLMF(14)) /*!< PLL source clock multiply by 31 */ +#define RCU_PLL_MUL32 (PLLMF_4 | CFG0_PLLMF(15)) /*!< PLL source clock multiply by 32 */ + +/* USBFS prescaler select */ +#define CFG0_USBPSC(regval) (BITS(22,23) & ((uint32_t)(regval) << 22)) +#define RCU_CKUSB_CKPLL_DIV1_5 CFG0_USBPSC(0) /*!< USBFS prescaler select CK_PLL/1.5 */ +#define RCU_CKUSB_CKPLL_DIV1 CFG0_USBPSC(1) /*!< USBFS prescaler select CK_PLL/1 */ +#define RCU_CKUSB_CKPLL_DIV2_5 CFG0_USBPSC(2) /*!< USBFS prescaler select CK_PLL/2.5 */ +#define RCU_CKUSB_CKPLL_DIV2 CFG0_USBPSC(3) /*!< USBFS prescaler select CK_PLL/2 */ + +/* CKOUT0 clock source selection */ +#define CFG0_CKOUT0SEL(regval) (BITS(24,27) & ((uint32_t)(regval) << 24)) +#define RCU_CKOUT0SRC_NONE CFG0_CKOUT0SEL(0) /*!< no clock selected */ +#define RCU_CKOUT0SRC_CKSYS CFG0_CKOUT0SEL(4) /*!< system clock selected */ +#define RCU_CKOUT0SRC_IRC8M CFG0_CKOUT0SEL(5) /*!< internal 8M RC oscillator clock selected */ +#define RCU_CKOUT0SRC_HXTAL CFG0_CKOUT0SEL(6) /*!< high speed crystal oscillator clock (HXTAL) selected */ +#define RCU_CKOUT0SRC_CKPLL_DIV2 CFG0_CKOUT0SEL(7) /*!< CK_PLL/2 clock selected */ +#define RCU_CKOUT0SRC_CKPLL1 CFG0_CKOUT0SEL(8) /*!< CK_PLL1 clock selected */ +#define RCU_CKOUT0SRC_CKPLL2_DIV2 CFG0_CKOUT0SEL(9) /*!< CK_PLL2/2 clock selected */ +#define RCU_CKOUT0SRC_EXT1 CFG0_CKOUT0SEL(10) /*!< EXT1 selected */ +#define RCU_CKOUT0SRC_CKPLL2 CFG0_CKOUT0SEL(11) /*!< CK_PLL2 clock selected */ + +/* RTC clock entry selection */ +#define BDCTL_RTCSRC(regval) (BITS(8,9) & ((uint32_t)(regval) << 8)) +#define RCU_RTCSRC_NONE BDCTL_RTCSRC(0) /*!< no clock selected */ +#define RCU_RTCSRC_LXTAL BDCTL_RTCSRC(1) /*!< RTC source clock select LXTAL */ +#define RCU_RTCSRC_IRC40K BDCTL_RTCSRC(2) /*!< RTC source clock select IRC40K */ +#define RCU_RTCSRC_HXTAL_DIV_128 BDCTL_RTCSRC(3) /*!< RTC source clock select HXTAL/128 */ + +/* PREDV0 division factor */ +#define CFG1_PREDV0(regval) (BITS(0,3) & ((uint32_t)(regval) << 0)) +#define RCU_PREDV0_DIV1 CFG1_PREDV0(0) /*!< PREDV0 input source clock not divided */ +#define RCU_PREDV0_DIV2 CFG1_PREDV0(1) /*!< PREDV0 input source clock divided by 2 */ +#define RCU_PREDV0_DIV3 CFG1_PREDV0(2) /*!< PREDV0 input source clock divided by 3 */ +#define RCU_PREDV0_DIV4 CFG1_PREDV0(3) /*!< PREDV0 input source clock divided by 4 */ +#define RCU_PREDV0_DIV5 CFG1_PREDV0(4) /*!< PREDV0 input source clock divided by 5 */ +#define RCU_PREDV0_DIV6 CFG1_PREDV0(5) /*!< PREDV0 input source clock divided by 6 */ +#define RCU_PREDV0_DIV7 CFG1_PREDV0(6) /*!< PREDV0 input source clock divided by 7 */ +#define RCU_PREDV0_DIV8 CFG1_PREDV0(7) /*!< PREDV0 input source clock divided by 8 */ +#define RCU_PREDV0_DIV9 CFG1_PREDV0(8) /*!< PREDV0 input source clock divided by 9 */ +#define RCU_PREDV0_DIV10 CFG1_PREDV0(9) /*!< PREDV0 input source clock divided by 10 */ +#define RCU_PREDV0_DIV11 CFG1_PREDV0(10) /*!< PREDV0 input source clock divided by 11 */ +#define RCU_PREDV0_DIV12 CFG1_PREDV0(11) /*!< PREDV0 input source clock divided by 12 */ +#define RCU_PREDV0_DIV13 CFG1_PREDV0(12) /*!< PREDV0 input source clock divided by 13 */ +#define RCU_PREDV0_DIV14 CFG1_PREDV0(13) /*!< PREDV0 input source clock divided by 14 */ +#define RCU_PREDV0_DIV15 CFG1_PREDV0(14) /*!< PREDV0 input source clock divided by 15 */ +#define RCU_PREDV0_DIV16 CFG1_PREDV0(15) /*!< PREDV0 input source clock divided by 16 */ + +/* PREDV1 division factor */ +#define CFG1_PREDV1(regval) (BITS(4,7) & ((uint32_t)(regval) << 4)) +#define RCU_PREDV1_DIV1 CFG1_PREDV1(0) /*!< PREDV1 input source clock not divided */ +#define RCU_PREDV1_DIV2 CFG1_PREDV1(1) /*!< PREDV1 input source clock divided by 2 */ +#define RCU_PREDV1_DIV3 CFG1_PREDV1(2) /*!< PREDV1 input source clock divided by 3 */ +#define RCU_PREDV1_DIV4 CFG1_PREDV1(3) /*!< PREDV1 input source clock divided by 4 */ +#define RCU_PREDV1_DIV5 CFG1_PREDV1(4) /*!< PREDV1 input source clock divided by 5 */ +#define RCU_PREDV1_DIV6 CFG1_PREDV1(5) /*!< PREDV1 input source clock divided by 6 */ +#define RCU_PREDV1_DIV7 CFG1_PREDV1(6) /*!< PREDV1 input source clock divided by 7 */ +#define RCU_PREDV1_DIV8 CFG1_PREDV1(7) /*!< PREDV1 input source clock divided by 8 */ +#define RCU_PREDV1_DIV9 CFG1_PREDV1(8) /*!< PREDV1 input source clock divided by 9 */ +#define RCU_PREDV1_DIV10 CFG1_PREDV1(9) /*!< PREDV1 input source clock divided by 10 */ +#define RCU_PREDV1_DIV11 CFG1_PREDV1(10) /*!< PREDV1 input source clock divided by 11 */ +#define RCU_PREDV1_DIV12 CFG1_PREDV1(11) /*!< PREDV1 input source clock divided by 12 */ +#define RCU_PREDV1_DIV13 CFG1_PREDV1(12) /*!< PREDV1 input source clock divided by 13 */ +#define RCU_PREDV1_DIV14 CFG1_PREDV1(13) /*!< PREDV1 input source clock divided by 14 */ +#define RCU_PREDV1_DIV15 CFG1_PREDV1(14) /*!< PREDV1 input source clock divided by 15 */ +#define RCU_PREDV1_DIV16 CFG1_PREDV1(15) /*!< PREDV1 input source clock divided by 16 */ + +/* PLL1 clock multiplication factor */ +#define CFG1_PLL1MF(regval) (BITS(8,11) & ((uint32_t)(regval) << 8)) +#define RCU_PLL1_MUL8 CFG1_PLL1MF(6) /*!< PLL1 source clock multiply by 8 */ +#define RCU_PLL1_MUL9 CFG1_PLL1MF(7) /*!< PLL1 source clock multiply by 9 */ +#define RCU_PLL1_MUL10 CFG1_PLL1MF(8) /*!< PLL1 source clock multiply by 10 */ +#define RCU_PLL1_MUL11 CFG1_PLL1MF(9) /*!< PLL1 source clock multiply by 11 */ +#define RCU_PLL1_MUL12 CFG1_PLL1MF(10) /*!< PLL1 source clock multiply by 12 */ +#define RCU_PLL1_MUL13 CFG1_PLL1MF(11) /*!< PLL1 source clock multiply by 13 */ +#define RCU_PLL1_MUL14 CFG1_PLL1MF(12) /*!< PLL1 source clock multiply by 14 */ +#define RCU_PLL1_MUL15 CFG1_PLL1MF(13) /*!< PLL1 source clock multiply by 15 */ +#define RCU_PLL1_MUL16 CFG1_PLL1MF(14) /*!< PLL1 source clock multiply by 16 */ +#define RCU_PLL1_MUL20 CFG1_PLL1MF(15) /*!< PLL1 source clock multiply by 20 */ + +/* PLL2 clock multiplication factor */ +#define CFG1_PLL2MF(regval) (BITS(12,15) & ((uint32_t)(regval) << 12)) +#define RCU_PLL2_MUL8 CFG1_PLL2MF(6) /*!< PLL2 source clock multiply by 8 */ +#define RCU_PLL2_MUL9 CFG1_PLL2MF(7) /*!< PLL2 source clock multiply by 9 */ +#define RCU_PLL2_MUL10 CFG1_PLL2MF(8) /*!< PLL2 source clock multiply by 10 */ +#define RCU_PLL2_MUL11 CFG1_PLL2MF(9) /*!< PLL2 source clock multiply by 11 */ +#define RCU_PLL2_MUL12 CFG1_PLL2MF(10) /*!< PLL2 source clock multiply by 12 */ +#define RCU_PLL2_MUL13 CFG1_PLL2MF(11) /*!< PLL2 source clock multiply by 13 */ +#define RCU_PLL2_MUL14 CFG1_PLL2MF(12) /*!< PLL2 source clock multiply by 14 */ +#define RCU_PLL2_MUL15 CFG1_PLL2MF(13) /*!< PLL2 source clock multiply by 15 */ +#define RCU_PLL2_MUL16 CFG1_PLL2MF(14) /*!< PLL2 source clock multiply by 16 */ +#define RCU_PLL2_MUL20 CFG1_PLL2MF(15) /*!< PLL2 source clock multiply by 20 */ + + +/* PREDV0 input clock source selection */ +#define RCU_PREDV0SRC_HXTAL ((uint32_t)0x00000000U) /*!< HXTAL selected as PREDV0 input source clock */ +#define RCU_PREDV0SRC_CKPLL1 RCU_CFG1_PREDV0SEL /*!< CK_PLL1 selected as PREDV0 input source clock */ + +/* I2S1 clock source selection */ +#define RCU_I2S1SRC_CKSYS ((uint32_t)0x00000000U) /*!< system clock selected as I2S1 source clock */ +#define RCU_I2S1SRC_CKPLL2_MUL2 RCU_CFG1_I2S1SEL /*!< (CK_PLL2 x 2) selected as I2S1 source clock */ + +/* I2S2 clock source selection */ +#define RCU_I2S2SRC_CKSYS ((uint32_t)0x00000000U) /*!< system clock selected as I2S2 source clock */ +#define RCU_I2S2SRC_CKPLL2_MUL2 RCU_CFG1_I2S2SEL /*!< (CK_PLL2 x 2) selected as I2S2 source clock */ + + +/* deep-sleep mode voltage */ +#define DSV_DSLPVS(regval) (BITS(0,1) & ((uint32_t)(regval) << 0)) +#define RCU_DEEPSLEEP_V_1_2 DSV_DSLPVS(0) /*!< core voltage is 1.2V in deep-sleep mode */ +#define RCU_DEEPSLEEP_V_1_1 DSV_DSLPVS(1) /*!< core voltage is 1.1V in deep-sleep mode */ +#define RCU_DEEPSLEEP_V_1_0 DSV_DSLPVS(2) /*!< core voltage is 1.0V in deep-sleep mode */ +#define RCU_DEEPSLEEP_V_0_9 DSV_DSLPVS(3) /*!< core voltage is 0.9V in deep-sleep mode */ + +/* function declarations */ +/* initialization, peripheral clock enable/disable functions */ +/* deinitialize the RCU */ +void rcu_deinit(void); +/* enable the peripherals clock */ +void rcu_periph_clock_enable(rcu_periph_enum periph); +/* disable the peripherals clock */ +void rcu_periph_clock_disable(rcu_periph_enum periph); +/* enable the peripherals clock when sleep mode */ +void rcu_periph_clock_sleep_enable(rcu_periph_sleep_enum periph); +/* disable the peripherals clock when sleep mode */ +void rcu_periph_clock_sleep_disable(rcu_periph_sleep_enum periph); +/* reset the peripherals */ +void rcu_periph_reset_enable(rcu_periph_reset_enum periph_reset); +/* disable reset the peripheral */ +void rcu_periph_reset_disable(rcu_periph_reset_enum periph_reset); +/* reset the BKP domain */ +void rcu_bkp_reset_enable(void); +/* disable the BKP domain reset */ +void rcu_bkp_reset_disable(void); + +/* clock configuration functions */ +/* configure the system clock source */ +void rcu_system_clock_source_config(uint32_t ck_sys); +/* get the system clock source */ +uint32_t rcu_system_clock_source_get(void); +/* configure the AHB prescaler selection */ +void rcu_ahb_clock_config(uint32_t ck_ahb); +/* configure the APB1 prescaler selection */ +void rcu_apb1_clock_config(uint32_t ck_apb1); +/* configure the APB2 prescaler selection */ +void rcu_apb2_clock_config(uint32_t ck_apb2); +/* configure the CK_OUT0 clock source and divider */ +void rcu_ckout0_config(uint32_t ckout0_src); +/* configure the PLL clock source selection and PLL multiply factor */ +void rcu_pll_config(uint32_t pll_src, uint32_t pll_mul); + +/* configure the PREDV0 division factor and clock source */ +void rcu_predv0_config(uint32_t predv0_source, uint32_t predv0_div); +/* configure the PREDV1 division factor */ +void rcu_predv1_config(uint32_t predv1_div); +/* configure the PLL1 clock */ +void rcu_pll1_config(uint32_t pll_mul); +/* configure the PLL2 clock */ +void rcu_pll2_config(uint32_t pll_mul); + +/* peripheral clock configuration functions */ +/* configure the ADC division factor */ +void rcu_adc_clock_config(uint32_t adc_psc); +/* configure the USBD/USBFS prescaler factor */ +void rcu_usb_clock_config(uint32_t usb_psc); +/* configure the RTC clock source selection */ +void rcu_rtc_clock_config(uint32_t rtc_clock_source); + +/* configure the I2S1 clock source selection */ +void rcu_i2s1_clock_config(uint32_t i2s_clock_source); +/* configure the I2S2 clock source selection */ +void rcu_i2s2_clock_config(uint32_t i2s_clock_source); + +/* interrupt & flag functions */ +/* get the clock stabilization and periphral reset flags */ +FlagStatus rcu_flag_get(rcu_flag_enum flag); +/* clear the reset flag */ +void rcu_all_reset_flag_clear(void); +/* get the clock stabilization interrupt and ckm flags */ +FlagStatus rcu_interrupt_flag_get(rcu_int_flag_enum int_flag); +/* clear the interrupt flags */ +void rcu_interrupt_flag_clear(rcu_int_flag_clear_enum int_flag_clear); +/* enable the stabilization interrupt */ +void rcu_interrupt_enable(rcu_int_enum stab_int); +/* disable the stabilization interrupt */ +void rcu_interrupt_disable(rcu_int_enum stab_int); + +/* oscillator configuration functions */ +/* wait for oscillator stabilization flags is SET or oscillator startup is timeout */ +ErrStatus rcu_osci_stab_wait(rcu_osci_type_enum osci); +/* turn on the oscillator */ +void rcu_osci_on(rcu_osci_type_enum osci); +/* turn off the oscillator */ +void rcu_osci_off(rcu_osci_type_enum osci); +/* enable the oscillator bypass mode, HXTALEN or LXTALEN must be reset before it */ +void rcu_osci_bypass_mode_enable(rcu_osci_type_enum osci); +/* disable the oscillator bypass mode, HXTALEN or LXTALEN must be reset before it */ +void rcu_osci_bypass_mode_disable(rcu_osci_type_enum osci); +/* enable the HXTAL clock monitor */ +void rcu_hxtal_clock_monitor_enable(void); +/* disable the HXTAL clock monitor */ +void rcu_hxtal_clock_monitor_disable(void); + +/* set the IRC8M adjust value */ +void rcu_irc8m_adjust_value_set(uint32_t irc8m_adjval); +/* set the deep sleep mode voltage */ +void rcu_deepsleep_voltage_set(uint32_t dsvol); + +/* get the system clock, bus and peripheral clock frequency */ +uint32_t rcu_clock_freq_get(rcu_clock_freq_enum clock); + +#endif /* GD32VF103_RCU_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_rtc.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_rtc.h new file mode 100644 index 0000000000..b3e58c1723 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_rtc.h @@ -0,0 +1,149 @@ +/*! + \file gd32vf103_rtc.h + \brief definitions for the RTC + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_RTC_H +#define GD32VF103_RTC_H + +#include "gd32vf103.h" + +/* RTC definitions */ +#define RTC RTC_BASE + +/* registers definitions */ +#define RTC_INTEN REG32(RTC + 0x00U) /*!< interrupt enable register */ +#define RTC_CTL REG32(RTC + 0x04U) /*!< control register */ +#define RTC_PSCH REG32(RTC + 0x08U) /*!< prescaler high register */ +#define RTC_PSCL REG32(RTC + 0x0CU) /*!< prescaler low register */ +#define RTC_DIVH REG32(RTC + 0x10U) /*!< divider high register */ +#define RTC_DIVL REG32(RTC + 0x14U) /*!< divider low register */ +#define RTC_CNTH REG32(RTC + 0x18U) /*!< counter high register */ +#define RTC_CNTL REG32(RTC + 0x1CU) /*!< counter low register */ +#define RTC_ALRMH REG32(RTC + 0x20U) /*!< alarm high register */ +#define RTC_ALRML REG32(RTC + 0x24U) /*!< alarm low register */ + +/* bits definitions */ +/* RTC_INTEN */ +#define RTC_INTEN_SCIE BIT(0) /*!< second interrupt enable */ +#define RTC_INTEN_ALRMIE BIT(1) /*!< alarm interrupt enable */ +#define RTC_INTEN_OVIE BIT(2) /*!< overflow interrupt enable */ + +/* RTC_CTL */ +#define RTC_CTL_SCIF BIT(0) /*!< second interrupt flag */ +#define RTC_CTL_ALRMIF BIT(1) /*!< alarm interrupt flag */ +#define RTC_CTL_OVIF BIT(2) /*!< overflow interrupt flag */ +#define RTC_CTL_RSYNF BIT(3) /*!< registers synchronized flag */ +#define RTC_CTL_CMF BIT(4) /*!< configuration mode flag */ +#define RTC_CTL_LWOFF BIT(5) /*!< last write operation finished flag */ + +/* RTC_PSCH */ +#define RTC_PSCH_PSC BITS(0,3) /*!< prescaler high value */ + +/* RTC_PSCL */ +#define RTC_PSCL_PSC BITS(0,15) /*!< prescaler low value */ + +/* RTC_DIVH */ +#define RTC_DIVH_DIV BITS(0,3) /*!< divider high value */ + +/* RTC_DIVL */ +#define RTC_DIVL_DIV BITS(0,15) /*!< divider low value */ + +/* RTC_CNTH */ +#define RTC_CNTH_CNT BITS(0,15) /*!< counter high value */ + +/* RTC_CNTL */ +#define RTC_CNTL_CNT BITS(0,15) /*!< counter low value */ + +/* RTC_ALRMH */ +#define RTC_ALRMH_ALRM BITS(0,15) /*!< alarm high value */ + +/* RTC_ALRML */ +#define RTC_ALRML_ALRM BITS(0,15) /*!< alarm low value */ + +/* constants definitions */ +/* RTC interrupt enable or disable definitions */ +#define RTC_INT_SECOND RTC_INTEN_SCIE /*!< second interrupt enable */ +#define RTC_INT_ALARM RTC_INTEN_ALRMIE /*!< alarm interrupt enable */ +#define RTC_INT_OVERFLOW RTC_INTEN_OVIE /*!< overflow interrupt enable */ + +/* RTC interrupt flag definitions */ +#define RTC_INT_FLAG_SECOND RTC_CTL_SCIF /*!< second interrupt flag */ +#define RTC_INT_FLAG_ALARM RTC_CTL_ALRMIF /*!< alarm interrupt flag */ +#define RTC_INT_FLAG_OVERFLOW RTC_CTL_OVIF /*!< overflow interrupt flag */ + +/* RTC flag definitions */ +#define RTC_FLAG_SECOND RTC_CTL_SCIF /*!< second interrupt flag */ +#define RTC_FLAG_ALARM RTC_CTL_ALRMIF /*!< alarm interrupt flag */ +#define RTC_FLAG_OVERFLOW RTC_CTL_OVIF /*!< overflow interrupt flag */ +#define RTC_FLAG_RSYN RTC_CTL_RSYNF /*!< registers synchronized flag */ +#define RTC_FLAG_LWOF RTC_CTL_LWOFF /*!< last write operation finished flag */ + +/* function declarations */ +/* initialization functions */ +/* enter RTC configuration mode */ +void rtc_configuration_mode_enter(void); +/* exit RTC configuration mode */ +void rtc_configuration_mode_exit(void); +/* set RTC counter value */ +void rtc_counter_set(uint32_t cnt); +/* set RTC prescaler value */ +void rtc_prescaler_set(uint32_t psc); + +/* operation functions */ +/* wait RTC last write operation finished flag set */ +void rtc_lwoff_wait(void); +/* wait RTC registers synchronized flag set */ +void rtc_register_sync_wait(void); +/* set RTC alarm value */ +void rtc_alarm_config(uint32_t alarm); +/* get RTC counter value */ +uint32_t rtc_counter_get(void); +/* get RTC divider value */ +uint32_t rtc_divider_get(void); + +/* flag & interrupt functions */ +/* get RTC flag status */ +FlagStatus rtc_flag_get(uint32_t flag); +/* clear RTC flag status */ +void rtc_flag_clear(uint32_t flag); +/* get RTC interrupt flag status */ +FlagStatus rtc_interrupt_flag_get(uint32_t flag); +/* clear RTC interrupt flag status */ +void rtc_interrupt_flag_clear(uint32_t flag); +/* enable RTC interrupt */ +void rtc_interrupt_enable(uint32_t interrupt); +/* disable RTC interrupt */ +void rtc_interrupt_disable(uint32_t interrupt); + +#endif /* GD32VF103_RTC_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_spi.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_spi.h new file mode 100644 index 0000000000..7c7efd2c58 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_spi.h @@ -0,0 +1,342 @@ +/*! + \file gd32vf103_spi.h + \brief definitions for the SPI + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_SPI_H +#define GD32VF103_SPI_H + +#include "gd32vf103.h" + +/* SPIx(x=0,1,2) definitions */ +#define SPI0 (SPI_BASE + 0x0000F800U) +#define SPI1 SPI_BASE +#define SPI2 (SPI_BASE + 0x00000400U) + +/* SPI registers definitions */ +#define SPI_CTL0(spix) REG32((spix) + 0x00U) /*!< SPI control register 0 */ +#define SPI_CTL1(spix) REG32((spix) + 0x04U) /*!< SPI control register 1*/ +#define SPI_STAT(spix) REG32((spix) + 0x08U) /*!< SPI status register */ +#define SPI_DATA(spix) REG32((spix) + 0x0CU) /*!< SPI data register */ +#define SPI_CRCPOLY(spix) REG32((spix) + 0x10U) /*!< SPI CRC polynomial register */ +#define SPI_RCRC(spix) REG32((spix) + 0x14U) /*!< SPI receive CRC register */ +#define SPI_TCRC(spix) REG32((spix) + 0x18U) /*!< SPI transmit CRC register */ +#define SPI_I2SCTL(spix) REG32((spix) + 0x1CU) /*!< SPI I2S control register */ +#define SPI_I2SPSC(spix) REG32((spix) + 0x20U) /*!< SPI I2S clock prescaler register */ + +/* bits definitions */ +/* SPI_CTL0 */ +#define SPI_CTL0_CKPH BIT(0) /*!< clock phase selection*/ +#define SPI_CTL0_CKPL BIT(1) /*!< clock polarity selection */ +#define SPI_CTL0_MSTMOD BIT(2) /*!< master mode enable */ +#define SPI_CTL0_PSC BITS(3,5) /*!< master clock prescaler selection */ +#define SPI_CTL0_SPIEN BIT(6) /*!< SPI enable*/ +#define SPI_CTL0_LF BIT(7) /*!< LSB first mode */ +#define SPI_CTL0_SWNSS BIT(8) /*!< NSS pin selection in NSS software mode */ +#define SPI_CTL0_SWNSSEN BIT(9) /*!< NSS software mode selection */ +#define SPI_CTL0_RO BIT(10) /*!< receive only */ +#define SPI_CTL0_FF16 BIT(11) /*!< data frame size */ +#define SPI_CTL0_CRCNT BIT(12) /*!< CRC next transfer */ +#define SPI_CTL0_CRCEN BIT(13) /*!< CRC calculation enable */ +#define SPI_CTL0_BDOEN BIT(14) /*!< bidirectional transmit output enable*/ +#define SPI_CTL0_BDEN BIT(15) /*!< bidirectional enable */ + +/* SPI_CTL1 */ +#define SPI_CTL1_DMAREN BIT(0) /*!< receive buffer dma enable */ +#define SPI_CTL1_DMATEN BIT(1) /*!< transmit buffer dma enable */ +#define SPI_CTL1_NSSDRV BIT(2) /*!< drive NSS output */ +#define SPI_CTL1_NSSP BIT(3) /*!< SPI NSS pulse mode enable */ +#define SPI_CTL1_TMOD BIT(4) /*!< SPI TI mode enable */ +#define SPI_CTL1_ERRIE BIT(5) /*!< errors interrupt enable */ +#define SPI_CTL1_RBNEIE BIT(6) /*!< receive buffer not empty interrupt enable */ +#define SPI_CTL1_TBEIE BIT(7) /*!< transmit buffer empty interrupt enable */ + +/* SPI_STAT */ +#define SPI_STAT_RBNE BIT(0) /*!< receive buffer not empty */ +#define SPI_STAT_TBE BIT(1) /*!< transmit buffer empty */ +#define SPI_STAT_I2SCH BIT(2) /*!< I2S channel side */ +#define SPI_STAT_TXURERR BIT(3) /*!< I2S transmission underrun error bit */ +#define SPI_STAT_CRCERR BIT(4) /*!< SPI CRC error bit */ +#define SPI_STAT_CONFERR BIT(5) /*!< SPI configuration error bit */ +#define SPI_STAT_RXORERR BIT(6) /*!< SPI reception overrun error bit */ +#define SPI_STAT_TRANS BIT(7) /*!< transmitting on-going bit */ +#define SPI_STAT_FERR BIT(8) /*!< format error bit */ + +/* SPI_DATA */ +#define SPI_DATA_DATA BITS(0,15) /*!< data transfer register */ + +/* SPI_CRCPOLY */ +#define SPI_CRCPOLY_CRCPOLY BITS(0,15) /*!< CRC polynomial value */ + +/* SPI_RCRC */ +#define SPI_RCRC_RCRC BITS(0,15) /*!< RX CRC value */ + +/* SPI_TCRC */ +#define SPI_TCRC_TCRC BITS(0,15) /*!< TX CRC value */ + +/* SPI_I2SCTL */ +#define SPI_I2SCTL_CHLEN BIT(0) /*!< channel length */ +#define SPI_I2SCTL_DTLEN BITS(1,2) /*!< data length */ +#define SPI_I2SCTL_CKPL BIT(3) /*!< idle state clock polarity */ +#define SPI_I2SCTL_I2SSTD BITS(4,5) /*!< I2S standard selection */ +#define SPI_I2SCTL_PCMSMOD BIT(7) /*!< PCM frame synchronization mode */ +#define SPI_I2SCTL_I2SOPMOD BITS(8,9) /*!< I2S operation mode */ +#define SPI_I2SCTL_I2SEN BIT(10) /*!< I2S enable */ +#define SPI_I2SCTL_I2SSEL BIT(11) /*!< I2S mode selection */ + +/* SPI_I2SPSC */ +#define SPI_I2SPSC_DIV BITS(0,7) /*!< dividing factor for the prescaler */ +#define SPI_I2SPSC_OF BIT(8) /*!< odd factor for the prescaler */ +#define SPI_I2SPSC_MCKOEN BIT(9) /*!< I2S MCK output enable */ + +/* constants definitions */ +/* SPI and I2S parameter struct definitions */ +typedef struct +{ + uint32_t device_mode; /*!< SPI master or slave */ + uint32_t trans_mode; /*!< SPI transtype */ + uint32_t frame_size; /*!< SPI frame size */ + uint32_t nss; /*!< SPI NSS control by handware or software */ + uint32_t endian; /*!< SPI big endian or little endian */ + uint32_t clock_polarity_phase; /*!< SPI clock phase and polarity */ + uint32_t prescale; /*!< SPI prescale factor */ +}spi_parameter_struct; + +/* SPI mode definitions */ +#define SPI_MASTER (SPI_CTL0_MSTMOD | SPI_CTL0_SWNSS) /*!< SPI as master */ +#define SPI_SLAVE ((uint32_t)0x00000000U) /*!< SPI as slave */ + +/* SPI bidirectional transfer direction */ +#define SPI_BIDIRECTIONAL_TRANSMIT SPI_CTL0_BDOEN /*!< SPI work in transmit-only mode */ +#define SPI_BIDIRECTIONAL_RECEIVE (~SPI_CTL0_BDOEN) /*!< SPI work in receive-only mode */ + +/* SPI transmit type */ +#define SPI_TRANSMODE_FULLDUPLEX ((uint32_t)0x00000000U) /*!< SPI receive and send data at fullduplex communication */ +#define SPI_TRANSMODE_RECEIVEONLY SPI_CTL0_RO /*!< SPI only receive data */ +#define SPI_TRANSMODE_BDRECEIVE SPI_CTL0_BDEN /*!< bidirectional receive data */ +#define SPI_TRANSMODE_BDTRANSMIT (SPI_CTL0_BDEN | SPI_CTL0_BDOEN) /*!< bidirectional transmit data*/ + +/* SPI frame size */ +#define SPI_FRAMESIZE_16BIT SPI_CTL0_FF16 /*!< SPI frame size is 16 bits */ +#define SPI_FRAMESIZE_8BIT ((uint32_t)0x00000000U) /*!< SPI frame size is 8 bits */ + +/* SPI NSS control mode */ +#define SPI_NSS_SOFT SPI_CTL0_SWNSSEN /*!< SPI NSS control by software */ +#define SPI_NSS_HARD ((uint32_t)0x00000000U) /*!< SPI NSS control by hardware */ + +/* SPI transmit way */ +#define SPI_ENDIAN_MSB ((uint32_t)0x00000000U) /*!< SPI transmit way is big endian: transmit MSB first */ +#define SPI_ENDIAN_LSB SPI_CTL0_LF /*!< SPI transmit way is little endian: transmit LSB first */ + +/* SPI clock phase and polarity */ +#define SPI_CK_PL_LOW_PH_1EDGE ((uint32_t)0x00000000U) /*!< SPI clock polarity is low level and phase is first edge */ +#define SPI_CK_PL_HIGH_PH_1EDGE SPI_CTL0_CKPL /*!< SPI clock polarity is high level and phase is first edge */ +#define SPI_CK_PL_LOW_PH_2EDGE SPI_CTL0_CKPH /*!< SPI clock polarity is low level and phase is second edge */ +#define SPI_CK_PL_HIGH_PH_2EDGE (SPI_CTL0_CKPL | SPI_CTL0_CKPH) /*!< SPI clock polarity is high level and phase is second edge */ + +/* SPI clock prescale factor */ +#define CTL0_PSC(regval) (BITS(3,5) & ((uint32_t)(regval) << 3)) +#define SPI_PSC_2 CTL0_PSC(0) /*!< SPI clock prescale factor is 2 */ +#define SPI_PSC_4 CTL0_PSC(1) /*!< SPI clock prescale factor is 4 */ +#define SPI_PSC_8 CTL0_PSC(2) /*!< SPI clock prescale factor is 8 */ +#define SPI_PSC_16 CTL0_PSC(3) /*!< SPI clock prescale factor is 16 */ +#define SPI_PSC_32 CTL0_PSC(4) /*!< SPI clock prescale factor is 32 */ +#define SPI_PSC_64 CTL0_PSC(5) /*!< SPI clock prescale factor is 64 */ +#define SPI_PSC_128 CTL0_PSC(6) /*!< SPI clock prescale factor is 128 */ +#define SPI_PSC_256 CTL0_PSC(7) /*!< SPI clock prescale factor is 256 */ + +/* I2S audio sample rate */ +#define I2S_AUDIOSAMPLE_8K ((uint32_t)8000U) /*!< I2S audio sample rate is 8KHz */ +#define I2S_AUDIOSAMPLE_11K ((uint32_t)11025U) /*!< I2S audio sample rate is 11KHz */ +#define I2S_AUDIOSAMPLE_16K ((uint32_t)16000U) /*!< I2S audio sample rate is 16KHz */ +#define I2S_AUDIOSAMPLE_22K ((uint32_t)22050U) /*!< I2S audio sample rate is 22KHz */ +#define I2S_AUDIOSAMPLE_32K ((uint32_t)32000U) /*!< I2S audio sample rate is 32KHz */ +#define I2S_AUDIOSAMPLE_44K ((uint32_t)44100U) /*!< I2S audio sample rate is 44KHz */ +#define I2S_AUDIOSAMPLE_48K ((uint32_t)48000U) /*!< I2S audio sample rate is 48KHz */ +#define I2S_AUDIOSAMPLE_96K ((uint32_t)96000U) /*!< I2S audio sample rate is 96KHz */ +#define I2S_AUDIOSAMPLE_192K ((uint32_t)192000U) /*!< I2S audio sample rate is 192KHz */ + +/* I2S frame format */ +#define I2SCTL_DTLEN(regval) (BITS(1,2) & ((uint32_t)(regval) << 1)) +#define I2S_FRAMEFORMAT_DT16B_CH16B I2SCTL_DTLEN(0) /*!< I2S data length is 16 bit and channel length is 16 bit */ +#define I2S_FRAMEFORMAT_DT16B_CH32B (I2SCTL_DTLEN(0) | SPI_I2SCTL_CHLEN) /*!< I2S data length is 16 bit and channel length is 32 bit */ +#define I2S_FRAMEFORMAT_DT24B_CH32B (I2SCTL_DTLEN(1) | SPI_I2SCTL_CHLEN) /*!< I2S data length is 24 bit and channel length is 32 bit */ +#define I2S_FRAMEFORMAT_DT32B_CH32B (I2SCTL_DTLEN(2) | SPI_I2SCTL_CHLEN) /*!< I2S data length is 32 bit and channel length is 32 bit */ + +/* I2S master clock output */ +#define I2S_MCKOUT_DISABLE ((uint32_t)0x00000000U) /*!< I2S master clock output disable */ +#define I2S_MCKOUT_ENABLE SPI_I2SPSC_MCKOEN /*!< I2S master clock output enable */ + +/* I2S operation mode */ +#define I2SCTL_I2SOPMOD(regval) (BITS(8,9) & ((uint32_t)(regval) << 8)) +#define I2S_MODE_SLAVETX I2SCTL_I2SOPMOD(0) /*!< I2S slave transmit mode */ +#define I2S_MODE_SLAVERX I2SCTL_I2SOPMOD(1) /*!< I2S slave receive mode */ +#define I2S_MODE_MASTERTX I2SCTL_I2SOPMOD(2) /*!< I2S master transmit mode */ +#define I2S_MODE_MASTERRX I2SCTL_I2SOPMOD(3) /*!< I2S master receive mode */ + +/* I2S standard */ +#define I2SCTL_I2SSTD(regval) (BITS(4,5) & ((uint32_t)(regval) << 4)) +#define I2S_STD_PHILLIPS I2SCTL_I2SSTD(0) /*!< I2S phillips standard */ +#define I2S_STD_MSB I2SCTL_I2SSTD(1) /*!< I2S MSB standard */ +#define I2S_STD_LSB I2SCTL_I2SSTD(2) /*!< I2S LSB standard */ +#define I2S_STD_PCMSHORT I2SCTL_I2SSTD(3) /*!< I2S PCM short standard */ +#define I2S_STD_PCMLONG (I2SCTL_I2SSTD(3) | SPI_I2SCTL_PCMSMOD) /*!< I2S PCM long standard */ + +/* I2S clock polarity */ +#define I2S_CKPL_LOW ((uint32_t)0x00000000U) /*!< I2S clock polarity low level */ +#define I2S_CKPL_HIGH SPI_I2SCTL_CKPL /*!< I2S clock polarity high level */ + +/* SPI DMA constants definitions */ +#define SPI_DMA_TRANSMIT ((uint8_t)0x00U) /*!< SPI transmit data use DMA */ +#define SPI_DMA_RECEIVE ((uint8_t)0x01U) /*!< SPI receive data use DMA */ + +/* SPI CRC constants definitions */ +#define SPI_CRC_TX ((uint8_t)0x00U) /*!< SPI transmit CRC value */ +#define SPI_CRC_RX ((uint8_t)0x01U) /*!< SPI receive CRC value */ + +/* SPI/I2S interrupt enable/disable constants definitions */ +#define SPI_I2S_INT_TBE ((uint8_t)0x00U) /*!< transmit buffer empty interrupt */ +#define SPI_I2S_INT_RBNE ((uint8_t)0x01U) /*!< receive buffer not empty interrupt */ +#define SPI_I2S_INT_ERR ((uint8_t)0x02U) /*!< error interrupt */ + +/* SPI/I2S interrupt flag constants definitions */ +#define SPI_I2S_INT_FLAG_TBE ((uint8_t)0x00U) /*!< transmit buffer empty interrupt flag */ +#define SPI_I2S_INT_FLAG_RBNE ((uint8_t)0x01U) /*!< receive buffer not empty interrupt flag */ +#define SPI_I2S_INT_FLAG_RXORERR ((uint8_t)0x02U) /*!< overrun interrupt flag */ +#define SPI_INT_FLAG_CONFERR ((uint8_t)0x03U) /*!< config error interrupt flag */ +#define SPI_INT_FLAG_CRCERR ((uint8_t)0x04U) /*!< CRC error interrupt flag */ +#define I2S_INT_FLAG_TXURERR ((uint8_t)0x05U) /*!< underrun error interrupt flag */ +#define SPI_I2S_INT_FLAG_FERR ((uint8_t)0x06U) /*!< format error interrupt flag */ + +/* SPI/I2S flag definitions */ +#define SPI_FLAG_RBNE SPI_STAT_RBNE /*!< receive buffer not empty flag */ +#define SPI_FLAG_TBE SPI_STAT_TBE /*!< transmit buffer empty flag */ +#define SPI_FLAG_CRCERR SPI_STAT_CRCERR /*!< CRC error flag */ +#define SPI_FLAG_CONFERR SPI_STAT_CONFERR /*!< mode config error flag */ +#define SPI_FLAG_RXORERR SPI_STAT_RXORERR /*!< receive overrun error flag */ +#define SPI_FLAG_TRANS SPI_STAT_TRANS /*!< transmit on-going flag */ +#define SPI_FLAG_FERR SPI_STAT_FERR /*!< format error interrupt flag */ +#define I2S_FLAG_RBNE SPI_STAT_RBNE /*!< receive buffer not empty flag */ +#define I2S_FLAG_TBE SPI_STAT_TBE /*!< transmit buffer empty flag */ +#define I2S_FLAG_CH SPI_STAT_I2SCH /*!< channel side flag */ +#define I2S_FLAG_TXURERR SPI_STAT_TXURERR /*!< underrun error flag */ +#define I2S_FLAG_RXORERR SPI_STAT_RXORERR /*!< overrun error flag */ +#define I2S_FLAG_TRANS SPI_STAT_TRANS /*!< transmit on-going flag */ +#define I2S_FLAG_FERR SPI_STAT_FERR /*!< format error interrupt flag */ + +/* function declarations */ +/* SPI/I2S deinitialization and initialization functions */ +/* reset SPI and I2S */ +void spi_i2s_deinit(uint32_t spi_periph); +/* initialize the parameters of SPI struct with the default values */ +void spi_struct_para_init(spi_parameter_struct* spi_struct); +/* initialize SPI parameter */ +void spi_init(uint32_t spi_periph, spi_parameter_struct* spi_struct); +/* enable SPI */ +void spi_enable(uint32_t spi_periph); +/* disable SPI */ +void spi_disable(uint32_t spi_periph); + +/* initialize I2S parameter */ +void i2s_init(uint32_t spi_periph, uint32_t mode, uint32_t standard, uint32_t ckpl); +/* configure I2S prescaler */ +void i2s_psc_config(uint32_t spi_periph, uint32_t audiosample, uint32_t frameformat, uint32_t mckout); +/* enable I2S */ +void i2s_enable(uint32_t spi_periph); +/* disable I2S */ +void i2s_disable(uint32_t spi_periph); + +/* NSS functions */ +/* enable SPI NSS output */ +void spi_nss_output_enable(uint32_t spi_periph); +/* disable SPI NSS output */ +void spi_nss_output_disable(uint32_t spi_periph); +/* SPI NSS pin high level in software mode */ +void spi_nss_internal_high(uint32_t spi_periph); +/* SPI NSS pin low level in software mode */ +void spi_nss_internal_low(uint32_t spi_periph); + +/* DMA communication */ +/* enable SPI DMA */ +void spi_dma_enable(uint32_t spi_periph, uint8_t dma); +/* disable SPI DMA */ +void spi_dma_disable(uint32_t spi_periph, uint8_t dma); + +/* normal mode communication */ +/* configure SPI/I2S data frame format */ +void spi_i2s_data_frame_format_config(uint32_t spi_periph, uint16_t frame_format); +/* SPI transmit data */ +void spi_i2s_data_transmit(uint32_t spi_periph, uint16_t data); +/* SPI receive data */ +uint16_t spi_i2s_data_receive(uint32_t spi_periph); +/* configure SPI bidirectional transfer direction */ +void spi_bidirectional_transfer_config(uint32_t spi_periph, uint32_t transfer_direction); + +/* SPI CRC functions */ +/* set SPI CRC polynomial */ +void spi_crc_polynomial_set(uint32_t spi_periph, uint16_t crc_poly); +/* get SPI CRC polynomial */ +uint16_t spi_crc_polynomial_get(uint32_t spi_periph); +/* turn on SPI CRC function */ +void spi_crc_on(uint32_t spi_periph); +/* turn off SPI CRC function */ +void spi_crc_off(uint32_t spi_periph); +/* SPI next data is CRC value */ +void spi_crc_next(uint32_t spi_periph); +/* get SPI CRC send value or receive value */ +uint16_t spi_crc_get(uint32_t spi_periph, uint8_t crc); + +/* SPI TI mode functions */ +/* enable SPI TI mode */ +void spi_ti_mode_enable(uint32_t spi_periph); +/* disable SPI TI mode */ +void spi_ti_mode_disable(uint32_t spi_periph); + +/* SPI NSS pulse mode functions */ +/* enable SPI NSS pulse mode */ +void spi_nssp_mode_enable(uint32_t spi_periph); +/* disable SPI NSS pulse mode */ +void spi_nssp_mode_disable(uint32_t spi_periph); +/* flag and interrupt functions */ +/* enable SPI and I2S interrupt */ +void spi_i2s_interrupt_enable(uint32_t spi_periph, uint8_t interrupt); +/* disable SPI and I2S interrupt */ +void spi_i2s_interrupt_disable(uint32_t spi_periph, uint8_t interrupt); +/* get SPI and I2S interrupt status */ +FlagStatus spi_i2s_interrupt_flag_get(uint32_t spi_periph, uint8_t interrupt); +/* get SPI and I2S flag status */ +FlagStatus spi_i2s_flag_get(uint32_t spi_periph, uint32_t flag); +/* clear SPI CRC error flag status */ +void spi_crc_error_clear(uint32_t spi_periph); + +#endif /* GD32VF103_SPI_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_timer.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_timer.h new file mode 100644 index 0000000000..cd52873fed --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_timer.h @@ -0,0 +1,723 @@ +/*! + \file gd32vf103_timer.h + \brief definitions for the TIMER + + \version 2019-06-05, V1.0.1, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_TIMER_H +#define GD32VF103_TIMER_H + +#include "gd32vf103.h" + +/* TIMERx(x=0..13) definitions */ +#define TIMER0 (TIMER_BASE + 0x00012C00U) +#define TIMER1 (TIMER_BASE + 0x00000000U) +#define TIMER2 (TIMER_BASE + 0x00000400U) +#define TIMER3 (TIMER_BASE + 0x00000800U) +#define TIMER4 (TIMER_BASE + 0x00000C00U) +#define TIMER5 (TIMER_BASE + 0x00001000U) +#define TIMER6 (TIMER_BASE + 0x00001400U) + +/* registers definitions */ +#define TIMER_CTL0(timerx) REG32((timerx) + 0x00U) /*!< TIMER control register 0 */ +#define TIMER_CTL1(timerx) REG32((timerx) + 0x04U) /*!< TIMER control register 1 */ +#define TIMER_SMCFG(timerx) REG32((timerx) + 0x08U) /*!< TIMER slave mode configuration register */ +#define TIMER_DMAINTEN(timerx) REG32((timerx) + 0x0CU) /*!< TIMER DMA and interrupt enable register */ +#define TIMER_INTF(timerx) REG32((timerx) + 0x10U) /*!< TIMER interrupt flag register */ +#define TIMER_SWEVG(timerx) REG32((timerx) + 0x14U) /*!< TIMER software event generation register */ +#define TIMER_CHCTL0(timerx) REG32((timerx) + 0x18U) /*!< TIMER channel control register 0 */ +#define TIMER_CHCTL1(timerx) REG32((timerx) + 0x1CU) /*!< TIMER channel control register 1 */ +#define TIMER_CHCTL2(timerx) REG32((timerx) + 0x20U) /*!< TIMER channel control register 2 */ +#define TIMER_CNT(timerx) REG32((timerx) + 0x24U) /*!< TIMER counter register */ +#define TIMER_PSC(timerx) REG32((timerx) + 0x28U) /*!< TIMER prescaler register */ +#define TIMER_CAR(timerx) REG32((timerx) + 0x2CU) /*!< TIMER counter auto reload register */ +#define TIMER_CREP(timerx) REG32((timerx) + 0x30U) /*!< TIMER counter repetition register */ +#define TIMER_CH0CV(timerx) REG32((timerx) + 0x34U) /*!< TIMER channel 0 capture/compare value register */ +#define TIMER_CH1CV(timerx) REG32((timerx) + 0x38U) /*!< TIMER channel 1 capture/compare value register */ +#define TIMER_CH2CV(timerx) REG32((timerx) + 0x3CU) /*!< TIMER channel 2 capture/compare value register */ +#define TIMER_CH3CV(timerx) REG32((timerx) + 0x40U) /*!< TIMER channel 3 capture/compare value register */ +#define TIMER_CCHP(timerx) REG32((timerx) + 0x44U) /*!< TIMER channel complementary protection register */ +#define TIMER_DMACFG(timerx) REG32((timerx) + 0x48U) /*!< TIMER DMA configuration register */ +#define TIMER_DMATB(timerx) REG32((timerx) + 0x4CU) /*!< TIMER DMA transfer buffer register */ + +/* bits definitions */ +/* TIMER_CTL0 */ +#define TIMER_CTL0_CEN BIT(0) /*!< TIMER counter enable */ +#define TIMER_CTL0_UPDIS BIT(1) /*!< update disable */ +#define TIMER_CTL0_UPS BIT(2) /*!< update source */ +#define TIMER_CTL0_SPM BIT(3) /*!< single pulse mode */ +#define TIMER_CTL0_DIR BIT(4) /*!< timer counter direction */ +#define TIMER_CTL0_CAM BITS(5,6) /*!< center-aligned mode selection */ +#define TIMER_CTL0_ARSE BIT(7) /*!< auto-reload shadow enable */ +#define TIMER_CTL0_CKDIV BITS(8,9) /*!< clock division */ + +/* TIMER_CTL1 */ +#define TIMER_CTL1_CCSE BIT(0) /*!< commutation control shadow enable */ +#define TIMER_CTL1_CCUC BIT(2) /*!< commutation control shadow register update control */ +#define TIMER_CTL1_DMAS BIT(3) /*!< DMA request source selection */ +#define TIMER_CTL1_MMC BITS(4,6) /*!< master mode control */ +#define TIMER_CTL1_TI0S BIT(7) /*!< channel 0 trigger input selection(hall mode selection) */ +#define TIMER_CTL1_ISO0 BIT(8) /*!< idle state of channel 0 output */ +#define TIMER_CTL1_ISO0N BIT(9) /*!< idle state of channel 0 complementary output */ +#define TIMER_CTL1_ISO1 BIT(10) /*!< idle state of channel 1 output */ +#define TIMER_CTL1_ISO1N BIT(11) /*!< idle state of channel 1 complementary output */ +#define TIMER_CTL1_ISO2 BIT(12) /*!< idle state of channel 2 output */ +#define TIMER_CTL1_ISO2N BIT(13) /*!< idle state of channel 2 complementary output */ +#define TIMER_CTL1_ISO3 BIT(14) /*!< idle state of channel 3 output */ + +/* TIMER_SMCFG */ +#define TIMER_SMCFG_SMC BITS(0,2) /*!< slave mode control */ +#define TIMER_SMCFG_TRGS BITS(4,6) /*!< trigger selection */ +#define TIMER_SMCFG_MSM BIT(7) /*!< master-slave mode */ +#define TIMER_SMCFG_ETFC BITS(8,11) /*!< external trigger filter control */ +#define TIMER_SMCFG_ETPSC BITS(12,13) /*!< external trigger prescaler */ +#define TIMER_SMCFG_SMC1 BIT(14) /*!< part of SMC for enable external clock mode 1 */ +#define TIMER_SMCFG_ETP BIT(15) /*!< external trigger polarity */ + +/* TIMER_DMAINTEN */ +#define TIMER_DMAINTEN_UPIE BIT(0) /*!< update interrupt enable */ +#define TIMER_DMAINTEN_CH0IE BIT(1) /*!< channel 0 capture/compare interrupt enable */ +#define TIMER_DMAINTEN_CH1IE BIT(2) /*!< channel 1 capture/compare interrupt enable */ +#define TIMER_DMAINTEN_CH2IE BIT(3) /*!< channel 2 capture/compare interrupt enable */ +#define TIMER_DMAINTEN_CH3IE BIT(4) /*!< channel 3 capture/compare interrupt enable */ +#define TIMER_DMAINTEN_CMTIE BIT(5) /*!< commutation interrupt request enable */ +#define TIMER_DMAINTEN_TRGIE BIT(6) /*!< trigger interrupt enable */ +#define TIMER_DMAINTEN_BRKIE BIT(7) /*!< break interrupt enable */ +#define TIMER_DMAINTEN_UPDEN BIT(8) /*!< update DMA request enable */ +#define TIMER_DMAINTEN_CH0DEN BIT(9) /*!< channel 0 capture/compare DMA request enable */ +#define TIMER_DMAINTEN_CH1DEN BIT(10) /*!< channel 1 capture/compare DMA request enable */ +#define TIMER_DMAINTEN_CH2DEN BIT(11) /*!< channel 2 capture/compare DMA request enable */ +#define TIMER_DMAINTEN_CH3DEN BIT(12) /*!< channel 3 capture/compare DMA request enable */ +#define TIMER_DMAINTEN_CMTDEN BIT(13) /*!< commutation DMA request enable */ +#define TIMER_DMAINTEN_TRGDEN BIT(14) /*!< trigger DMA request enable */ + +/* TIMER_INTF */ +#define TIMER_INTF_UPIF BIT(0) /*!< update interrupt flag */ +#define TIMER_INTF_CH0IF BIT(1) /*!< channel 0 capture/compare interrupt flag */ +#define TIMER_INTF_CH1IF BIT(2) /*!< channel 1 capture/compare interrupt flag */ +#define TIMER_INTF_CH2IF BIT(3) /*!< channel 2 capture/compare interrupt flag */ +#define TIMER_INTF_CH3IF BIT(4) /*!< channel 3 capture/compare interrupt flag */ +#define TIMER_INTF_CMTIF BIT(5) /*!< channel commutation interrupt flag */ +#define TIMER_INTF_TRGIF BIT(6) /*!< trigger interrupt flag */ +#define TIMER_INTF_BRKIF BIT(7) /*!< break interrupt flag */ +#define TIMER_INTF_CH0OF BIT(9) /*!< channel 0 over capture flag */ +#define TIMER_INTF_CH1OF BIT(10) /*!< channel 1 over capture flag */ +#define TIMER_INTF_CH2OF BIT(11) /*!< channel 2 over capture flag */ +#define TIMER_INTF_CH3OF BIT(12) /*!< channel 3 over capture flag */ + +/* TIMER_SWEVG */ +#define TIMER_SWEVG_UPG BIT(0) /*!< update event generate */ +#define TIMER_SWEVG_CH0G BIT(1) /*!< channel 0 capture or compare event generation */ +#define TIMER_SWEVG_CH1G BIT(2) /*!< channel 1 capture or compare event generation */ +#define TIMER_SWEVG_CH2G BIT(3) /*!< channel 2 capture or compare event generation */ +#define TIMER_SWEVG_CH3G BIT(4) /*!< channel 3 capture or compare event generation */ +#define TIMER_SWEVG_CMTG BIT(5) /*!< channel commutation event generation */ +#define TIMER_SWEVG_TRGG BIT(6) /*!< trigger event generation */ +#define TIMER_SWEVG_BRKG BIT(7) /*!< break event generation */ + +/* TIMER_CHCTL0 */ +/* output compare mode */ +#define TIMER_CHCTL0_CH0MS BITS(0,1) /*!< channel 0 mode selection */ +#define TIMER_CHCTL0_CH0COMFEN BIT(2) /*!< channel 0 output compare fast enable */ +#define TIMER_CHCTL0_CH0COMSEN BIT(3) /*!< channel 0 output compare shadow enable */ +#define TIMER_CHCTL0_CH0COMCTL BITS(4,6) /*!< channel 0 output compare control */ +#define TIMER_CHCTL0_CH0COMCEN BIT(7) /*!< channel 0 output compare clear enable */ +#define TIMER_CHCTL0_CH1MS BITS(8,9) /*!< channel 1 mode selection */ +#define TIMER_CHCTL0_CH1COMFEN BIT(10) /*!< channel 1 output compare fast enable */ +#define TIMER_CHCTL0_CH1COMSEN BIT(11) /*!< channel 1 output compare shadow enable */ +#define TIMER_CHCTL0_CH1COMCTL BITS(12,14) /*!< channel 1 output compare control */ +#define TIMER_CHCTL0_CH1COMCEN BIT(15) /*!< channel 1 output compare clear enable */ +/* input capture mode */ +#define TIMER_CHCTL0_CH0CAPPSC BITS(2,3) /*!< channel 0 input capture prescaler */ +#define TIMER_CHCTL0_CH0CAPFLT BITS(4,7) /*!< channel 0 input capture filter control */ +#define TIMER_CHCTL0_CH1CAPPSC BITS(10,11) /*!< channel 1 input capture prescaler */ +#define TIMER_CHCTL0_CH1CAPFLT BITS(12,15) /*!< channel 1 input capture filter control */ + +/* TIMER_CHCTL1 */ +/* output compare mode */ +#define TIMER_CHCTL1_CH2MS BITS(0,1) /*!< channel 2 mode selection */ +#define TIMER_CHCTL1_CH2COMFEN BIT(2) /*!< channel 2 output compare fast enable */ +#define TIMER_CHCTL1_CH2COMSEN BIT(3) /*!< channel 2 output compare shadow enable */ +#define TIMER_CHCTL1_CH2COMCTL BITS(4,6) /*!< channel 2 output compare control */ +#define TIMER_CHCTL1_CH2COMCEN BIT(7) /*!< channel 2 output compare clear enable */ +#define TIMER_CHCTL1_CH3MS BITS(8,9) /*!< channel 3 mode selection */ +#define TIMER_CHCTL1_CH3COMFEN BIT(10) /*!< channel 3 output compare fast enable */ +#define TIMER_CHCTL1_CH3COMSEN BIT(11) /*!< channel 3 output compare shadow enable */ +#define TIMER_CHCTL1_CH3COMCTL BITS(12,14) /*!< channel 3 output compare control */ +#define TIMER_CHCTL1_CH3COMCEN BIT(15) /*!< channel 3 output compare clear enable */ +/* input capture mode */ +#define TIMER_CHCTL1_CH2CAPPSC BITS(2,3) /*!< channel 2 input capture prescaler */ +#define TIMER_CHCTL1_CH2CAPFLT BITS(4,7) /*!< channel 2 input capture filter control */ +#define TIMER_CHCTL1_CH3CAPPSC BITS(10,11) /*!< channel 3 input capture prescaler */ +#define TIMER_CHCTL1_CH3CAPFLT BITS(12,15) /*!< channel 3 input capture filter control */ + +/* TIMER_CHCTL2 */ +#define TIMER_CHCTL2_CH0EN BIT(0) /*!< channel 0 capture/compare function enable */ +#define TIMER_CHCTL2_CH0P BIT(1) /*!< channel 0 capture/compare function polarity */ +#define TIMER_CHCTL2_CH0NEN BIT(2) /*!< channel 0 complementary output enable */ +#define TIMER_CHCTL2_CH0NP BIT(3) /*!< channel 0 complementary output polarity */ +#define TIMER_CHCTL2_CH1EN BIT(4) /*!< channel 1 capture/compare function enable */ +#define TIMER_CHCTL2_CH1P BIT(5) /*!< channel 1 capture/compare function polarity */ +#define TIMER_CHCTL2_CH1NEN BIT(6) /*!< channel 1 complementary output enable */ +#define TIMER_CHCTL2_CH1NP BIT(7) /*!< channel 1 complementary output polarity */ +#define TIMER_CHCTL2_CH2EN BIT(8) /*!< channel 2 capture/compare function enable */ +#define TIMER_CHCTL2_CH2P BIT(9) /*!< channel 2 capture/compare function polarity */ +#define TIMER_CHCTL2_CH2NEN BIT(10) /*!< channel 2 complementary output enable */ +#define TIMER_CHCTL2_CH2NP BIT(11) /*!< channel 2 complementary output polarity */ +#define TIMER_CHCTL2_CH3EN BIT(12) /*!< channel 3 capture/compare function enable */ +#define TIMER_CHCTL2_CH3P BIT(13) /*!< channel 3 capture/compare function polarity */ + +/* TIMER_CNT */ +#define TIMER_CNT_CNT BITS(0,15) /*!< 16 bit timer counter */ + +/* TIMER_PSC */ +#define TIMER_PSC_PSC BITS(0,15) /*!< prescaler value of the counter clock */ + +/* TIMER_CAR */ +#define TIMER_CAR_CARL BITS(0,15) /*!< 16 bit counter auto reload value */ + +/* TIMER_CREP */ +#define TIMER_CREP_CREP BITS(0,7) /*!< counter repetition value */ + +/* TIMER_CH0CV */ +#define TIMER_CH0CV_CH0VAL BITS(0,15) /*!< 16 bit capture/compare value of channel 0 */ + +/* TIMER_CH1CV */ +#define TIMER_CH1CV_CH1VAL BITS(0,15) /*!< 16 bit capture/compare value of channel 1 */ + +/* TIMER_CH2CV */ +#define TIMER_CH2CV_CH2VAL BITS(0,15) /*!< 16 bit capture/compare value of channel 2 */ + +/* TIMER_CH3CV */ +#define TIMER_CH3CV_CH3VAL BITS(0,15) /*!< 16 bit capture/compare value of channel 3 */ + +/* TIMER_CCHP */ +#define TIMER_CCHP_DTCFG BITS(0,7) /*!< dead time configure */ +#define TIMER_CCHP_PROT BITS(8,9) /*!< complementary register protect control */ +#define TIMER_CCHP_IOS BIT(10) /*!< idle mode off-state configure */ +#define TIMER_CCHP_ROS BIT(11) /*!< run mode off-state configure */ +#define TIMER_CCHP_BRKEN BIT(12) /*!< break enable */ +#define TIMER_CCHP_BRKP BIT(13) /*!< break polarity */ +#define TIMER_CCHP_OAEN BIT(14) /*!< output automatic enable */ +#define TIMER_CCHP_POEN BIT(15) /*!< primary output enable */ + +/* TIMER_DMACFG */ +#define TIMER_DMACFG_DMATA BITS(0,4) /*!< DMA transfer access start address */ +#define TIMER_DMACFG_DMATC BITS(8,12) /*!< DMA transfer count */ + +/* TIMER_DMATB */ +#define TIMER_DMATB_DMATB BITS(0,15) /*!< DMA transfer buffer address */ + +/* constants definitions */ +/* TIMER init parameter struct definitions */ +typedef struct +{ + uint16_t prescaler; /*!< prescaler value */ + uint16_t alignedmode; /*!< aligned mode */ + uint16_t counterdirection; /*!< counter direction */ + uint32_t period; /*!< period value */ + uint16_t clockdivision; /*!< clock division value */ + uint8_t repetitioncounter; /*!< the counter repetition value */ +}timer_parameter_struct; + +/* break parameter struct definitions */ +typedef struct +{ + uint16_t runoffstate; /*!< run mode off-state */ + uint16_t ideloffstate; /*!< idle mode off-state */ + uint16_t deadtime; /*!< dead time */ + uint16_t breakpolarity; /*!< break polarity */ + uint16_t outputautostate; /*!< output automatic enable */ + uint16_t protectmode; /*!< complementary register protect control */ + uint16_t breakstate; /*!< break enable */ +}timer_break_parameter_struct; + +/* channel output parameter struct definitions */ +typedef struct +{ + uint16_t outputstate; /*!< channel output state */ + uint16_t outputnstate; /*!< channel complementary output state */ + uint16_t ocpolarity; /*!< channel output polarity */ + uint16_t ocnpolarity; /*!< channel complementary output polarity */ + uint16_t ocidlestate; /*!< idle state of channel output */ + uint16_t ocnidlestate; /*!< idle state of channel complementary output */ +}timer_oc_parameter_struct; + +/* channel input parameter struct definitions */ +typedef struct +{ + uint16_t icpolarity; /*!< channel input polarity */ + uint16_t icselection; /*!< channel input mode selection */ + uint16_t icprescaler; /*!< channel input capture prescaler */ + uint16_t icfilter; /*!< channel input capture filter control */ +}timer_ic_parameter_struct; + +/* TIMER interrupt enable or disable */ +#define TIMER_INT_UP TIMER_DMAINTEN_UPIE /*!< update interrupt */ +#define TIMER_INT_CH0 TIMER_DMAINTEN_CH0IE /*!< channel 0 interrupt */ +#define TIMER_INT_CH1 TIMER_DMAINTEN_CH1IE /*!< channel 1 interrupt */ +#define TIMER_INT_CH2 TIMER_DMAINTEN_CH2IE /*!< channel 2 interrupt */ +#define TIMER_INT_CH3 TIMER_DMAINTEN_CH3IE /*!< channel 3 interrupt */ +#define TIMER_INT_CMT TIMER_DMAINTEN_CMTIE /*!< channel commutation interrupt flag */ +#define TIMER_INT_TRG TIMER_DMAINTEN_TRGIE /*!< trigger interrupt */ +#define TIMER_INT_BRK TIMER_DMAINTEN_BRKIE /*!< break interrupt */ + +/* TIMER interrupt flag */ +#define TIMER_INT_FLAG_UP TIMER_INT_UP /*!< update interrupt */ +#define TIMER_INT_FLAG_CH0 TIMER_INT_CH0 /*!< channel 0 interrupt */ +#define TIMER_INT_FLAG_CH1 TIMER_INT_CH1 /*!< channel 1 interrupt */ +#define TIMER_INT_FLAG_CH2 TIMER_INT_CH2 /*!< channel 2 interrupt */ +#define TIMER_INT_FLAG_CH3 TIMER_INT_CH3 /*!< channel 3 interrupt */ +#define TIMER_INT_FLAG_CMT TIMER_INT_CMT /*!< channel commutation interrupt flag */ +#define TIMER_INT_FLAG_TRG TIMER_INT_TRG /*!< trigger interrupt */ +#define TIMER_INT_FLAG_BRK TIMER_INT_BRK + +/* TIMER flag */ +#define TIMER_FLAG_UP TIMER_INTF_UPIF /*!< update flag */ +#define TIMER_FLAG_CH0 TIMER_INTF_CH0IF /*!< channel 0 flag */ +#define TIMER_FLAG_CH1 TIMER_INTF_CH1IF /*!< channel 1 flag */ +#define TIMER_FLAG_CH2 TIMER_INTF_CH2IF /*!< channel 2 flag */ +#define TIMER_FLAG_CH3 TIMER_INTF_CH3IF /*!< channel 3 flag */ +#define TIMER_FLAG_CMT TIMER_INTF_CMTIF /*!< channel control update flag */ +#define TIMER_FLAG_TRG TIMER_INTF_TRGIF /*!< trigger flag */ +#define TIMER_FLAG_BRK TIMER_INTF_BRKIF /*!< break flag */ +#define TIMER_FLAG_CH0O TIMER_INTF_CH0OF /*!< channel 0 overcapture flag */ +#define TIMER_FLAG_CH1O TIMER_INTF_CH1OF /*!< channel 1 overcapture flag */ +#define TIMER_FLAG_CH2O TIMER_INTF_CH2OF /*!< channel 2 overcapture flag */ +#define TIMER_FLAG_CH3O TIMER_INTF_CH3OF /*!< channel 3 overcapture flag */ + +/* TIMER DMA source enable */ +#define TIMER_DMA_UPD ((uint16_t)TIMER_DMAINTEN_UPDEN) /*!< update DMA enable */ +#define TIMER_DMA_CH0D ((uint16_t)TIMER_DMAINTEN_CH0DEN) /*!< channel 0 DMA enable */ +#define TIMER_DMA_CH1D ((uint16_t)TIMER_DMAINTEN_CH1DEN) /*!< channel 1 DMA enable */ +#define TIMER_DMA_CH2D ((uint16_t)TIMER_DMAINTEN_CH2DEN) /*!< channel 2 DMA enable */ +#define TIMER_DMA_CH3D ((uint16_t)TIMER_DMAINTEN_CH3DEN) /*!< channel 3 DMA enable */ +#define TIMER_DMA_CMTD ((uint16_t)TIMER_DMAINTEN_CMTDEN) /*!< commutation DMA request enable */ +#define TIMER_DMA_TRGD ((uint16_t)TIMER_DMAINTEN_TRGDEN) /*!< trigger DMA enable */ + +/* channel DMA request source selection */ +#define TIMER_DMAREQUEST_UPDATEEVENT TIMER_CTL1_DMAS /*!< DMA request of channel n is sent when update event occurs */ +#define TIMER_DMAREQUEST_CHANNELEVENT ((uint32_t)0x00000000U) /*!< DMA request of channel n is sent when channel n event occurs */ + +/* DMA access base address */ +#define DMACFG_DMATA(regval) (BITS(0, 4) & ((uint32_t)(regval) << 0U)) +#define TIMER_DMACFG_DMATA_CTL0 DMACFG_DMATA(0) /*!< DMA transfer address is TIMER_CTL0 */ +#define TIMER_DMACFG_DMATA_CTL1 DMACFG_DMATA(1) /*!< DMA transfer address is TIMER_CTL1 */ +#define TIMER_DMACFG_DMATA_SMCFG DMACFG_DMATA(2) /*!< DMA transfer address is TIMER_SMCFG */ +#define TIMER_DMACFG_DMATA_DMAINTEN DMACFG_DMATA(3) /*!< DMA transfer address is TIMER_DMAINTEN */ +#define TIMER_DMACFG_DMATA_INTF DMACFG_DMATA(4) /*!< DMA transfer address is TIMER_INTF */ +#define TIMER_DMACFG_DMATA_SWEVG DMACFG_DMATA(5) /*!< DMA transfer address is TIMER_SWEVG */ +#define TIMER_DMACFG_DMATA_CHCTL0 DMACFG_DMATA(6) /*!< DMA transfer address is TIMER_CHCTL0 */ +#define TIMER_DMACFG_DMATA_CHCTL1 DMACFG_DMATA(7) /*!< DMA transfer address is TIMER_CHCTL1 */ +#define TIMER_DMACFG_DMATA_CHCTL2 DMACFG_DMATA(8) /*!< DMA transfer address is TIMER_CHCTL2 */ +#define TIMER_DMACFG_DMATA_CNT DMACFG_DMATA(9) /*!< DMA transfer address is TIMER_CNT */ +#define TIMER_DMACFG_DMATA_PSC DMACFG_DMATA(10) /*!< DMA transfer address is TIMER_PSC */ +#define TIMER_DMACFG_DMATA_CAR DMACFG_DMATA(11) /*!< DMA transfer address is TIMER_CAR */ +#define TIMER_DMACFG_DMATA_CREP DMACFG_DMATA(12) /*!< DMA transfer address is TIMER_CREP */ +#define TIMER_DMACFG_DMATA_CH0CV DMACFG_DMATA(13) /*!< DMA transfer address is TIMER_CH0CV */ +#define TIMER_DMACFG_DMATA_CH1CV DMACFG_DMATA(14) /*!< DMA transfer address is TIMER_CH1CV */ +#define TIMER_DMACFG_DMATA_CH2CV DMACFG_DMATA(15) /*!< DMA transfer address is TIMER_CH2CV */ +#define TIMER_DMACFG_DMATA_CH3CV DMACFG_DMATA(16) /*!< DMA transfer address is TIMER_CH3CV */ +#define TIMER_DMACFG_DMATA_CCHP DMACFG_DMATA(17) /*!< DMA transfer address is TIMER_CCHP */ +#define TIMER_DMACFG_DMATA_DMACFG DMACFG_DMATA(18) /*!< DMA transfer address is TIMER_DMACFG */ + +/* DMA access burst length */ +#define DMACFG_DMATC(regval) (BITS(8, 12) & ((uint32_t)(regval) << 8U)) +#define TIMER_DMACFG_DMATC_1TRANSFER DMACFG_DMATC(0) /*!< DMA transfer 1 time */ +#define TIMER_DMACFG_DMATC_2TRANSFER DMACFG_DMATC(1) /*!< DMA transfer 2 times */ +#define TIMER_DMACFG_DMATC_3TRANSFER DMACFG_DMATC(2) /*!< DMA transfer 3 times */ +#define TIMER_DMACFG_DMATC_4TRANSFER DMACFG_DMATC(3) /*!< DMA transfer 4 times */ +#define TIMER_DMACFG_DMATC_5TRANSFER DMACFG_DMATC(4) /*!< DMA transfer 5 times */ +#define TIMER_DMACFG_DMATC_6TRANSFER DMACFG_DMATC(5) /*!< DMA transfer 6 times */ +#define TIMER_DMACFG_DMATC_7TRANSFER DMACFG_DMATC(6) /*!< DMA transfer 7 times */ +#define TIMER_DMACFG_DMATC_8TRANSFER DMACFG_DMATC(7) /*!< DMA transfer 8 times */ +#define TIMER_DMACFG_DMATC_9TRANSFER DMACFG_DMATC(8) /*!< DMA transfer 9 times */ +#define TIMER_DMACFG_DMATC_10TRANSFER DMACFG_DMATC(9) /*!< DMA transfer 10 times */ +#define TIMER_DMACFG_DMATC_11TRANSFER DMACFG_DMATC(10) /*!< DMA transfer 11 times */ +#define TIMER_DMACFG_DMATC_12TRANSFER DMACFG_DMATC(11) /*!< DMA transfer 12 times */ +#define TIMER_DMACFG_DMATC_13TRANSFER DMACFG_DMATC(12) /*!< DMA transfer 13 times */ +#define TIMER_DMACFG_DMATC_14TRANSFER DMACFG_DMATC(13) /*!< DMA transfer 14 times */ +#define TIMER_DMACFG_DMATC_15TRANSFER DMACFG_DMATC(14) /*!< DMA transfer 15 times */ +#define TIMER_DMACFG_DMATC_16TRANSFER DMACFG_DMATC(15) /*!< DMA transfer 16 times */ +#define TIMER_DMACFG_DMATC_17TRANSFER DMACFG_DMATC(16) /*!< DMA transfer 17 times */ +#define TIMER_DMACFG_DMATC_18TRANSFER DMACFG_DMATC(17) /*!< DMA transfer 18 times */ + +/* TIMER software event generation source */ +#define TIMER_EVENT_SRC_UPG ((uint16_t)0x0001U) /*!< update event generation */ +#define TIMER_EVENT_SRC_CH0G ((uint16_t)0x0002U) /*!< channel 0 capture or compare event generation */ +#define TIMER_EVENT_SRC_CH1G ((uint16_t)0x0004U) /*!< channel 1 capture or compare event generation */ +#define TIMER_EVENT_SRC_CH2G ((uint16_t)0x0008U) /*!< channel 2 capture or compare event generation */ +#define TIMER_EVENT_SRC_CH3G ((uint16_t)0x0010U) /*!< channel 3 capture or compare event generation */ +#define TIMER_EVENT_SRC_CMTG ((uint16_t)0x0020U) /*!< channel commutation event generation */ +#define TIMER_EVENT_SRC_TRGG ((uint16_t)0x0040U) /*!< trigger event generation */ +#define TIMER_EVENT_SRC_BRKG ((uint16_t)0x0080U) /*!< break event generation */ + +/* center-aligned mode selection */ +#define CTL0_CAM(regval) ((uint16_t)(BITS(5, 6) & ((uint32_t)(regval) << 5U))) +#define TIMER_COUNTER_EDGE CTL0_CAM(0) /*!< edge-aligned mode */ +#define TIMER_COUNTER_CENTER_DOWN CTL0_CAM(1) /*!< center-aligned and counting down assert mode */ +#define TIMER_COUNTER_CENTER_UP CTL0_CAM(2) /*!< center-aligned and counting up assert mode */ +#define TIMER_COUNTER_CENTER_BOTH CTL0_CAM(3) /*!< center-aligned and counting up/down assert mode */ + +/* TIMER prescaler reload mode */ +#define TIMER_PSC_RELOAD_NOW TIMER_SWEVG_UPG /*!< the prescaler is loaded right now */ +#define TIMER_PSC_RELOAD_UPDATE ((uint32_t)0x00000000U) /*!< the prescaler is loaded at the next update event */ + +/* count direction */ +#define TIMER_COUNTER_UP ((uint16_t)0x0000U) /*!< counter up direction */ +#define TIMER_COUNTER_DOWN ((uint16_t)TIMER_CTL0_DIR) /*!< counter down direction */ + +/* specify division ratio between TIMER clock and dead-time and sampling clock */ +#define CTL0_CKDIV(regval) ((uint16_t)(BITS(8, 9) & ((uint32_t)(regval) << 8U))) +#define TIMER_CKDIV_DIV1 CTL0_CKDIV(0) /*!< clock division value is 1,fDTS=fTIMER_CK */ +#define TIMER_CKDIV_DIV2 CTL0_CKDIV(1) /*!< clock division value is 2,fDTS= fTIMER_CK/2 */ +#define TIMER_CKDIV_DIV4 CTL0_CKDIV(2) /*!< clock division value is 4, fDTS= fTIMER_CK/4 */ + +/* single pulse mode */ +#define TIMER_SP_MODE_SINGLE TIMER_CTL0_SPM /*!< single pulse mode */ +#define TIMER_SP_MODE_REPETITIVE ((uint32_t)0x00000000U) /*!< repetitive pulse mode */ + +/* update source */ +#define TIMER_UPDATE_SRC_REGULAR TIMER_CTL0_UPS /*!< update generate only by counter overflow/underflow */ +#define TIMER_UPDATE_SRC_GLOBAL ((uint32_t)0x00000000U) /*!< update generate by setting of UPG bit or the counter overflow/underflow,or the slave mode controller trigger */ + +/* run mode off-state configure */ +#define TIMER_ROS_STATE_ENABLE ((uint16_t)TIMER_CCHP_ROS) /*!< when POEN bit is set, the channel output signals(CHx_O/CHx_ON) are enabled, with relationship to CHxEN/CHxNEN bits */ +#define TIMER_ROS_STATE_DISABLE ((uint16_t)0x0000U) /*!< when POEN bit is set, the channel output signals(CHx_O/CHx_ON) are disabled */ + + +/* idle mode off-state configure */ +#define TIMER_IOS_STATE_ENABLE ((uint16_t)TIMER_CCHP_IOS) /*!< when POEN bit is reset, he channel output signals(CHx_O/CHx_ON) are enabled, with relationship to CHxEN/CHxNEN bits */ +#define TIMER_IOS_STATE_DISABLE ((uint16_t)0x0000U) /*!< when POEN bit is reset, the channel output signals(CHx_O/CHx_ON) are disabled */ + +/* break input polarity */ +#define TIMER_BREAK_POLARITY_LOW ((uint16_t)0x0000U) /*!< break input polarity is low */ +#define TIMER_BREAK_POLARITY_HIGH ((uint16_t)TIMER_CCHP_BRKP) /*!< break input polarity is high */ + +/* output automatic enable */ +#define TIMER_OUTAUTO_ENABLE ((uint16_t)TIMER_CCHP_OAEN) /*!< output automatic enable */ +#define TIMER_OUTAUTO_DISABLE ((uint16_t)0x0000U) /*!< output automatic disable */ + +/* complementary register protect control */ +#define CCHP_PROT(regval) ((uint16_t)(BITS(8, 9) & ((uint32_t)(regval) << 8U))) +#define TIMER_CCHP_PROT_OFF CCHP_PROT(0) /*!< protect disable */ +#define TIMER_CCHP_PROT_0 CCHP_PROT(1) /*!< PROT mode 0 */ +#define TIMER_CCHP_PROT_1 CCHP_PROT(2) /*!< PROT mode 1 */ +#define TIMER_CCHP_PROT_2 CCHP_PROT(3) /*!< PROT mode 2 */ + +/* break input enable */ +#define TIMER_BREAK_ENABLE ((uint16_t)TIMER_CCHP_BRKEN) /*!< break input enable */ +#define TIMER_BREAK_DISABLE ((uint16_t)0x0000U) /*!< break input disable */ + +/* TIMER channel n(n=0,1,2,3) */ +#define TIMER_CH_0 ((uint16_t)0x0000U) /*!< TIMER channel 0(TIMERx(x=0..4)) */ +#define TIMER_CH_1 ((uint16_t)0x0001U) /*!< TIMER channel 1(TIMERx(x=0..4)) */ +#define TIMER_CH_2 ((uint16_t)0x0002U) /*!< TIMER channel 2(TIMERx(x=0..4)) */ +#define TIMER_CH_3 ((uint16_t)0x0003U) /*!< TIMER channel 3(TIMERx(x=0..4)) */ + +/* channel enable state */ +#define TIMER_CCX_ENABLE ((uint16_t)0x0001U) /*!< channel enable */ +#define TIMER_CCX_DISABLE ((uint16_t)0x0000U) /*!< channel disable */ + +/* channel complementary output enable state */ +#define TIMER_CCXN_ENABLE ((uint16_t)0x0004U) /*!< channel complementary enable */ +#define TIMER_CCXN_DISABLE ((uint16_t)0x0000U) /*!< channel complementary disable */ + +/* channel output polarity */ +#define TIMER_OC_POLARITY_HIGH ((uint16_t)0x0000U) /*!< channel output polarity is high */ +#define TIMER_OC_POLARITY_LOW ((uint16_t)0x0002U) /*!< channel output polarity is low */ + +/* channel complementary output polarity */ +#define TIMER_OCN_POLARITY_HIGH ((uint16_t)0x0000U) /*!< channel complementary output polarity is high */ +#define TIMER_OCN_POLARITY_LOW ((uint16_t)0x0008U) /*!< channel complementary output polarity is low */ + +/* idle state of channel output */ +#define TIMER_OC_IDLE_STATE_HIGH ((uint16_t)0x0100) /*!< idle state of channel output is high */ +#define TIMER_OC_IDLE_STATE_LOW ((uint16_t)0x0000) /*!< idle state of channel output is low */ + +/* idle state of channel complementary output */ +#define TIMER_OCN_IDLE_STATE_HIGH ((uint16_t)0x0200U) /*!< idle state of channel complementary output is high */ +#define TIMER_OCN_IDLE_STATE_LOW ((uint16_t)0x0000U) /*!< idle state of channel complementary output is low */ + +/* channel output compare mode */ +#define TIMER_OC_MODE_TIMING ((uint16_t)0x0000U) /*!< timing mode */ +#define TIMER_OC_MODE_ACTIVE ((uint16_t)0x0010U) /*!< active mode */ +#define TIMER_OC_MODE_INACTIVE ((uint16_t)0x0020U) /*!< inactive mode */ +#define TIMER_OC_MODE_TOGGLE ((uint16_t)0x0030U) /*!< toggle mode */ +#define TIMER_OC_MODE_LOW ((uint16_t)0x0040U) /*!< force low mode */ +#define TIMER_OC_MODE_HIGH ((uint16_t)0x0050U) /*!< force high mode */ +#define TIMER_OC_MODE_PWM0 ((uint16_t)0x0060U) /*!< PWM0 mode */ +#define TIMER_OC_MODE_PWM1 ((uint16_t)0x0070U) /*!< PWM1 mode */ + +/* channel output compare shadow enable */ +#define TIMER_OC_SHADOW_ENABLE ((uint16_t)0x0008U) /*!< channel output shadow state enable */ +#define TIMER_OC_SHADOW_DISABLE ((uint16_t)0x0000U) /*!< channel output shadow state disable */ + +/* channel output compare fast enable */ +#define TIMER_OC_FAST_ENABLE ((uint16_t)0x0004) /*!< channel output fast function enable */ +#define TIMER_OC_FAST_DISABLE ((uint16_t)0x0000) /*!< channel output fast function disable */ + +/* channel output compare clear enable */ +#define TIMER_OC_CLEAR_ENABLE ((uint16_t)0x0080U) /*!< channel output clear function enable */ +#define TIMER_OC_CLEAR_DISABLE ((uint16_t)0x0000U) /*!< channel output clear function disable */ + +/* channel control shadow register update control */ +#define TIMER_UPDATECTL_CCU ((uint32_t)0x00000000U) /*!< the shadow registers update by when CMTG bit is set */ +#define TIMER_UPDATECTL_CCUTRI TIMER_CTL1_CCUC /*!< the shadow registers update by when CMTG bit is set or an rising edge of TRGI occurs */ + +/* channel input capture polarity */ +#define TIMER_IC_POLARITY_RISING ((uint16_t)0x0000U) /*!< input capture rising edge */ +#define TIMER_IC_POLARITY_FALLING ((uint16_t)0x0002U) /*!< input capture falling edge */ +#define TIMER_IC_POLARITY_BOTH_EDGE ((uint16_t)0x000AU) /*!< input capture both edge */ + +/* TIMER input capture selection */ +#define TIMER_IC_SELECTION_DIRECTTI ((uint16_t)0x0001U) /*!< channel n is configured as input and icy is mapped on CIy */ +#define TIMER_IC_SELECTION_INDIRECTTI ((uint16_t)0x0002U) /*!< channel n is configured as input and icy is mapped on opposite input */ +#define TIMER_IC_SELECTION_ITS ((uint16_t)0x0003U) /*!< channel n is configured as input and icy is mapped on ITS */ + +/* channel input capture prescaler */ +#define TIMER_IC_PSC_DIV1 ((uint16_t)0x0000U) /*!< no prescaler */ +#define TIMER_IC_PSC_DIV2 ((uint16_t)0x0004U) /*!< divided by 2 */ +#define TIMER_IC_PSC_DIV4 ((uint16_t)0x0008U) /*!< divided by 4 */ +#define TIMER_IC_PSC_DIV8 ((uint16_t)0x000CU) /*!< divided by 8 */ + +/* trigger selection */ +#define SMCFG_TRGSEL(regval) (BITS(4, 6) & ((uint32_t)(regval) << 4U)) +#define TIMER_SMCFG_TRGSEL_ITI0 SMCFG_TRGSEL(0) /*!< internal trigger 0 */ +#define TIMER_SMCFG_TRGSEL_ITI1 SMCFG_TRGSEL(1) /*!< internal trigger 1 */ +#define TIMER_SMCFG_TRGSEL_ITI2 SMCFG_TRGSEL(2) /*!< internal trigger 2 */ +#define TIMER_SMCFG_TRGSEL_ITI3 SMCFG_TRGSEL(3) /*!< internal trigger 3 */ +#define TIMER_SMCFG_TRGSEL_CI0F_ED SMCFG_TRGSEL(4) /*!< TI0 Edge Detector */ +#define TIMER_SMCFG_TRGSEL_CI0FE0 SMCFG_TRGSEL(5) /*!< filtered TIMER input 0 */ +#define TIMER_SMCFG_TRGSEL_CI1FE1 SMCFG_TRGSEL(6) /*!< filtered TIMER input 1 */ +#define TIMER_SMCFG_TRGSEL_ETIFP SMCFG_TRGSEL(7) /*!< filtered external trigger input */ + +/* master mode control */ +#define CTL1_MMC(regval) (BITS(4, 6) & ((uint32_t)(regval) << 4U)) +#define TIMER_TRI_OUT_SRC_RESET CTL1_MMC(0) /*!< the UPG bit as trigger output */ +#define TIMER_TRI_OUT_SRC_ENABLE CTL1_MMC(1) /*!< the counter enable signal TIMER_CTL0_CEN as trigger output */ +#define TIMER_TRI_OUT_SRC_UPDATE CTL1_MMC(2) /*!< update event as trigger output */ +#define TIMER_TRI_OUT_SRC_CH0 CTL1_MMC(3) /*!< a capture or a compare match occurred in channel 0 as trigger output TRGO */ +#define TIMER_TRI_OUT_SRC_O0CPRE CTL1_MMC(4) /*!< O0CPRE as trigger output */ +#define TIMER_TRI_OUT_SRC_O1CPRE CTL1_MMC(5) /*!< O1CPRE as trigger output */ +#define TIMER_TRI_OUT_SRC_O2CPRE CTL1_MMC(6) /*!< O2CPRE as trigger output */ +#define TIMER_TRI_OUT_SRC_O3CPRE CTL1_MMC(7) /*!< O3CPRE as trigger output */ + +/* slave mode control */ +#define SMCFG_SMC(regval) (BITS(0, 2) & ((uint32_t)(regval) << 0U)) +#define TIMER_SLAVE_MODE_DISABLE SMCFG_SMC(0) /*!< slave mode disable */ +#define TIMER_ENCODER_MODE0 SMCFG_SMC(1) /*!< encoder mode 0 */ +#define TIMER_ENCODER_MODE1 SMCFG_SMC(2) /*!< encoder mode 1 */ +#define TIMER_ENCODER_MODE2 SMCFG_SMC(3) /*!< encoder mode 2 */ +#define TIMER_SLAVE_MODE_RESTART SMCFG_SMC(4) /*!< restart mode */ +#define TIMER_SLAVE_MODE_PAUSE SMCFG_SMC(5) /*!< pause mode */ +#define TIMER_SLAVE_MODE_EVENT SMCFG_SMC(6) /*!< event mode */ +#define TIMER_SLAVE_MODE_EXTERNAL0 SMCFG_SMC(7) /*!< external clock mode 0 */ + +/* master slave mode selection */ +#define TIMER_MASTER_SLAVE_MODE_ENABLE TIMER_SMCFG_MSM /*!< master slave mode enable */ +#define TIMER_MASTER_SLAVE_MODE_DISABLE ((uint32_t)0x00000000U) /*!< master slave mode disable */ + +/* external trigger prescaler */ +#define SMCFG_ETPSC(regval) (BITS(12, 13) & ((uint32_t)(regval) << 12U)) +#define TIMER_EXT_TRI_PSC_OFF SMCFG_ETPSC(0) /*!< no divided */ +#define TIMER_EXT_TRI_PSC_DIV2 SMCFG_ETPSC(1) /*!< divided by 2 */ +#define TIMER_EXT_TRI_PSC_DIV4 SMCFG_ETPSC(2) /*!< divided by 4 */ +#define TIMER_EXT_TRI_PSC_DIV8 SMCFG_ETPSC(3) /*!< divided by 8 */ + +/* external trigger polarity */ +#define TIMER_ETP_FALLING TIMER_SMCFG_ETP /*!< active low or falling edge active */ +#define TIMER_ETP_RISING ((uint32_t)0x00000000U) /*!< active high or rising edge active */ + +/* channel 0 trigger input selection */ +#define TIMER_HALLINTERFACE_ENABLE TIMER_CTL1_TI0S /*!< TIMER hall sensor mode enable */ +#define TIMER_HALLINTERFACE_DISABLE ((uint32_t)0x00000000U) /*!< TIMER hall sensor mode disable */ + +/* TIMERx(x=0..4) write CHxVAL register selection */ +#define TIMER_CHVSEL_ENABLE ((uint16_t)TIMER_CFG_OUTSEL) /*!< write CHxVAL register selection enable */ +#define TIMER_CHVSEL_DISABLE ((uint16_t)0x0000U) /*!< write CHxVAL register selection disable */ + +/* function declarations */ +/* TIMER timebase */ +/* deinit a timer */ +void timer_deinit(uint32_t timer_periph); +/* initialize TIMER init parameter struct */ +void timer_struct_para_init(timer_parameter_struct* initpara); +/* initialize TIMER counter */ +void timer_init(uint32_t timer_periph, timer_parameter_struct* initpara); +/* enable a timer */ +void timer_enable(uint32_t timer_periph); +/* disable a timer */ +void timer_disable(uint32_t timer_periph); +/* enable the auto reload shadow function */ +void timer_auto_reload_shadow_enable(uint32_t timer_periph); +/* disable the auto reload shadow function */ +void timer_auto_reload_shadow_disable(uint32_t timer_periph); +/* enable the update event */ +void timer_update_event_enable(uint32_t timer_periph); +/* disable the update event */ +void timer_update_event_disable(uint32_t timer_periph); +/* set TIMER counter alignment mode */ +void timer_counter_alignment(uint32_t timer_periph, uint16_t aligned); +/* set TIMER counter up direction */ +void timer_counter_up_direction(uint32_t timer_periph); +/* set TIMER counter down direction */ +void timer_counter_down_direction(uint32_t timer_periph); + +/* configure TIMER prescaler */ +void timer_prescaler_config(uint32_t timer_periph, uint16_t prescaler, uint32_t pscreload); +/* configure TIMER repetition register value */ +void timer_repetition_value_config(uint32_t timer_periph, uint16_t repetition); +/* configure TIMER autoreload register value */ +void timer_autoreload_value_config(uint32_t timer_periph, uint16_t autoreload); +/* configure TIMER counter register value */ +void timer_counter_value_config(uint32_t timer_periph, uint16_t counter); +/* read TIMER counter value */ +uint32_t timer_counter_read(uint32_t timer_periph); +/* read TIMER prescaler value */ +uint16_t timer_prescaler_read(uint32_t timer_periph); +/* configure TIMER single pulse mode */ +void timer_single_pulse_mode_config(uint32_t timer_periph, uint32_t spmode); +/* configure TIMER update source */ +void timer_update_source_config(uint32_t timer_periph, uint32_t update); + +/* TIMER DMA and event */ +/* enable the TIMER DMA */ +void timer_dma_enable(uint32_t timer_periph, uint16_t dma); +/* disable the TIMER DMA */ +void timer_dma_disable(uint32_t timer_periph, uint16_t dma); +/* channel DMA request source selection */ +void timer_channel_dma_request_source_select(uint32_t timer_periph, uint32_t dma_request); +/* configure the TIMER DMA transfer */ +void timer_dma_transfer_config(uint32_t timer_periph, uint32_t dma_baseaddr, uint32_t dma_lenth); +/* software generate events */ +void timer_event_software_generate(uint32_t timer_periph, uint16_t event); + +/* TIMER channel complementary protection */ +/* initialize TIMER break parameter struct */ +void timer_break_struct_para_init(timer_break_parameter_struct* breakpara); +/* configure TIMER break function */ +void timer_break_config(uint32_t timer_periph, timer_break_parameter_struct* breakpara); +/* enable TIMER break function */ +void timer_break_enable(uint32_t timer_periph); +/* disable TIMER break function */ +void timer_break_disable(uint32_t timer_periph); +/* enable TIMER output automatic function */ +void timer_automatic_output_enable(uint32_t timer_periph); +/* disable TIMER output automatic function */ +void timer_automatic_output_disable(uint32_t timer_periph); +/* enable or disable TIMER primary output function */ +void timer_primary_output_config(uint32_t timer_periph, ControlStatus newvalue); +/* enable or disable channel capture/compare control shadow register */ +void timer_channel_control_shadow_config(uint32_t timer_periph, ControlStatus newvalue); +/* configure TIMER channel control shadow register update control */ +void timer_channel_control_shadow_update_config(uint32_t timer_periph, uint32_t ccuctl); + +/* TIMER channel output */ +/* initialize TIMER channel output parameter struct */ +void timer_channel_output_struct_para_init(timer_oc_parameter_struct* ocpara); +/* configure TIMER channel output function */ +void timer_channel_output_config(uint32_t timer_periph, uint16_t channel, timer_oc_parameter_struct* ocpara); +/* configure TIMER channel output compare mode */ +void timer_channel_output_mode_config(uint32_t timer_periph, uint16_t channel, uint16_t ocmode); +/* configure TIMER channel output pulse value */ +void timer_channel_output_pulse_value_config(uint32_t timer_periph, uint16_t channel, uint32_t pulse); +/* configure TIMER channel output shadow function */ +void timer_channel_output_shadow_config(uint32_t timer_periph, uint16_t channel, uint16_t ocshadow); +/* configure TIMER channel output fast function */ +void timer_channel_output_fast_config(uint32_t timer_periph, uint16_t channel, uint16_t ocfast); +/* configure TIMER channel output clear function */ +void timer_channel_output_clear_config(uint32_t timer_periph, uint16_t channel, uint16_t occlear); +/* configure TIMER channel output polarity */ +void timer_channel_output_polarity_config(uint32_t timer_periph, uint16_t channel, uint16_t ocpolarity); +/* configure TIMER channel complementary output polarity */ +void timer_channel_complementary_output_polarity_config(uint32_t timer_periph, uint16_t channel, uint16_t ocnpolarity); +/* configure TIMER channel enable state */ +void timer_channel_output_state_config(uint32_t timer_periph, uint16_t channel, uint32_t state); +/* configure TIMER channel complementary output enable state */ +void timer_channel_complementary_output_state_config(uint32_t timer_periph, uint16_t channel, uint16_t ocnstate); + +/* TIMER channel input */ +/* initialize TIMER channel input parameter struct */ +void timer_channel_input_struct_para_init(timer_ic_parameter_struct* icpara); +/* configure TIMER input capture parameter */ +void timer_input_capture_config(uint32_t timer_periph, uint16_t channel, timer_ic_parameter_struct* icpara); +/* configure TIMER channel input capture prescaler value */ +void timer_channel_input_capture_prescaler_config(uint32_t timer_periph, uint16_t channel, uint16_t prescaler); +/* read TIMER channel capture compare register value */ +uint32_t timer_channel_capture_value_register_read(uint32_t timer_periph, uint16_t channel); +/* configure TIMER input pwm capture function */ +void timer_input_pwm_capture_config(uint32_t timer_periph, uint16_t channel, timer_ic_parameter_struct* icpwm); +/* configure TIMER hall sensor mode */ +void timer_hall_mode_config(uint32_t timer_periph, uint32_t hallmode); + +/* TIMER master and slave mode */ +/* select TIMER input trigger source */ +void timer_input_trigger_source_select(uint32_t timer_periph, uint32_t intrigger); +/* select TIMER master mode output trigger source */ +void timer_master_output_trigger_source_select(uint32_t timer_periph, uint32_t outrigger); +/* select TIMER slave mode */ +void timer_slave_mode_select(uint32_t timer_periph, uint32_t slavemode); +/* configure TIMER master slave mode */ +void timer_master_slave_mode_config(uint32_t timer_periph, uint32_t masterslave); +/* configure TIMER external trigger input */ +void timer_external_trigger_config(uint32_t timer_periph, uint32_t extprescaler, uint32_t extpolarity, uint32_t extfilter); +/* configure TIMER quadrature decoder mode */ +void timer_quadrature_decoder_mode_config(uint32_t timer_periph, uint32_t decomode, uint16_t ic0polarity, uint16_t ic1polarity); +/* configure TIMER internal clock mode */ +void timer_internal_clock_config(uint32_t timer_periph); +/* configure TIMER the internal trigger as external clock input */ +void timer_internal_trigger_as_external_clock_config(uint32_t timer_periph, uint32_t intrigger); +/* configure TIMER the external trigger as external clock input */ +void timer_external_trigger_as_external_clock_config(uint32_t timer_periph, uint32_t extrigger, uint16_t extpolarity, uint32_t extfilter); +/* configure TIMER the external clock mode 0 */ +void timer_external_clock_mode0_config(uint32_t timer_periph, uint32_t extprescaler, uint32_t extpolarity, uint32_t extfilter); +/* configure TIMER the external clock mode 1 */ +void timer_external_clock_mode1_config(uint32_t timer_periph, uint32_t extprescaler, uint32_t extpolarity, uint32_t extfilter); +/* disable TIMER the external clock mode 1 */ +void timer_external_clock_mode1_disable(uint32_t timer_periph); + +/* TIMER interrupt and flag */ +/* enable the TIMER interrupt */ +void timer_interrupt_enable(uint32_t timer_periph, uint32_t interrupt); +/* disable the TIMER interrupt */ +void timer_interrupt_disable(uint32_t timer_periph, uint32_t interrupt); +/* get TIMER interrupt flag */ +FlagStatus timer_interrupt_flag_get(uint32_t timer_periph, uint32_t interrupt); +/* clear TIMER interrupt flag */ +void timer_interrupt_flag_clear(uint32_t timer_periph, uint32_t interrupt); +/* get TIMER flag */ +FlagStatus timer_flag_get(uint32_t timer_periph, uint32_t flag); +/* clear TIMER flag */ +void timer_flag_clear(uint32_t timer_periph, uint32_t flag); + +#endif /* GD32VF103_TIMER_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_usart.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_usart.h new file mode 100644 index 0000000000..74a4955f6b --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_usart.h @@ -0,0 +1,376 @@ +/*! + \file gd32vf103_usart.h + \brief definitions for the USART + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2019-09-18, V1.0.1, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_USART_H +#define GD32VF103_USART_H + +#include "gd32vf103.h" + +/* USARTx(x=0,1,2)/UARTx(x=3,4) definitions */ +#define USART1 USART_BASE /*!< USART1 base address */ +#define USART2 (USART_BASE+(0x00000400U)) /*!< USART2 base address */ +#define UART3 (USART_BASE+(0x00000800U)) /*!< UART3 base address */ +#define UART4 (USART_BASE+(0x00000C00U)) /*!< UART4 base address */ +#define USART0 (USART_BASE+(0x0000F400U)) /*!< USART0 base address */ + +/* registers definitions */ +#define USART_STAT(usartx) REG32((usartx) + (0x00000000U)) /*!< USART status register */ +#define USART_DATA(usartx) REG32((usartx) + (0x00000004U)) /*!< USART data register */ +#define USART_BAUD(usartx) REG32((usartx) + (0x00000008U)) /*!< USART baud rate register */ +#define USART_CTL0(usartx) REG32((usartx) + (0x0000000CU)) /*!< USART control register 0 */ +#define USART_CTL1(usartx) REG32((usartx) + (0x00000010U)) /*!< USART control register 1 */ +#define USART_CTL2(usartx) REG32((usartx) + (0x00000014U)) /*!< USART control register 2 */ +#define USART_GP(usartx) REG32((usartx) + (0x00000018U)) /*!< USART guard time and prescaler register */ + +/* bits definitions */ +/* USARTx_STAT */ +#define USART_STAT_PERR BIT(0) /*!< parity error flag */ +#define USART_STAT_FERR BIT(1) /*!< frame error flag */ +#define USART_STAT_NERR BIT(2) /*!< noise error flag */ +#define USART_STAT_ORERR BIT(3) /*!< overrun error */ +#define USART_STAT_IDLEF BIT(4) /*!< IDLE frame detected flag */ +#define USART_STAT_RBNE BIT(5) /*!< read data buffer not empty */ +#define USART_STAT_TC BIT(6) /*!< transmission complete */ +#define USART_STAT_TBE BIT(7) /*!< transmit data buffer empty */ +#define USART_STAT_LBDF BIT(8) /*!< LIN break detected flag */ +#define USART_STAT_CTSF BIT(9) /*!< CTS change flag */ + +/* USARTx_DATA */ +#define USART_DATA_DATA BITS(0,8) /*!< transmit or read data value */ + +/* USARTx_BAUD */ +#define USART_BAUD_FRADIV BITS(0,3) /*!< fraction part of baud-rate divider */ +#define USART_BAUD_INTDIV BITS(4,15) /*!< integer part of baud-rate divider */ + +/* USARTx_CTL0 */ +#define USART_CTL0_SBKCMD BIT(0) /*!< send break command */ +#define USART_CTL0_RWU BIT(1) /*!< receiver wakeup from mute mode */ +#define USART_CTL0_REN BIT(2) /*!< receiver enable */ +#define USART_CTL0_TEN BIT(3) /*!< transmitter enable */ +#define USART_CTL0_IDLEIE BIT(4) /*!< idle line detected interrupt enable */ +#define USART_CTL0_RBNEIE BIT(5) /*!< read data buffer not empty interrupt and overrun error interrupt enable */ +#define USART_CTL0_TCIE BIT(6) /*!< transmission complete interrupt enable */ +#define USART_CTL0_TBEIE BIT(7) /*!< transmitter buffer empty interrupt enable */ +#define USART_CTL0_PERRIE BIT(8) /*!< parity error interrupt enable */ +#define USART_CTL0_PM BIT(9) /*!< parity mode */ +#define USART_CTL0_PCEN BIT(10) /*!< parity check function enable */ +#define USART_CTL0_WM BIT(11) /*!< wakeup method in mute mode */ +#define USART_CTL0_WL BIT(12) /*!< word length */ +#define USART_CTL0_UEN BIT(13) /*!< USART enable */ + +/* USARTx_CTL1 */ +#define USART_CTL1_ADDR BITS(0,3) /*!< address of USART */ +#define USART_CTL1_LBLEN BIT(5) /*!< LIN break frame length */ +#define USART_CTL1_LBDIE BIT(6) /*!< LIN break detected interrupt eanble */ +#define USART_CTL1_CLEN BIT(8) /*!< CK length */ +#define USART_CTL1_CPH BIT(9) /*!< CK phase */ +#define USART_CTL1_CPL BIT(10) /*!< CK polarity */ +#define USART_CTL1_CKEN BIT(11) /*!< CK pin enable */ +#define USART_CTL1_STB BITS(12,13) /*!< STOP bits length */ +#define USART_CTL1_LMEN BIT(14) /*!< LIN mode enable */ + +/* USARTx_CTL2 */ +#define USART_CTL2_ERRIE BIT(0) /*!< error interrupt enable */ +#define USART_CTL2_IREN BIT(1) /*!< IrDA mode enable */ +#define USART_CTL2_IRLP BIT(2) /*!< IrDA low-power */ +#define USART_CTL2_HDEN BIT(3) /*!< half-duplex enable */ +#define USART_CTL2_NKEN BIT(4) /*!< NACK enable in smartcard mode */ +#define USART_CTL2_SCEN BIT(5) /*!< smartcard mode enable */ +#define USART_CTL2_DENR BIT(6) /*!< DMA request enable for reception */ +#define USART_CTL2_DENT BIT(7) /*!< DMA request enable for transmission */ +#define USART_CTL2_RTSEN BIT(8) /*!< RTS enable */ +#define USART_CTL2_CTSEN BIT(9) /*!< CTS enable */ +#define USART_CTL2_CTSIE BIT(10) /*!< CTS interrupt enable */ + +/* USARTx_GP */ +#define USART_GP_PSC BITS(0,7) /*!< prescaler value for dividing the system clock */ +#define USART_GP_GUAT BITS(8,15) /*!< guard time value in smartcard mode */ + +/* constants definitions */ +/* define the USART bit position and its register index offset */ +#define USART_REGIDX_BIT(regidx, bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos)) +#define USART_REG_VAL(usartx, offset) (REG32((usartx) + (((uint32_t)(offset) & (0x0000FFFFU)) >> 6))) +#define USART_BIT_POS(val) ((uint32_t)(val) & (0x0000001FU)) +#define USART_REGIDX_BIT2(regidx, bitpos, regidx2, bitpos2) (((uint32_t)(regidx2) << 22) | (uint32_t)((bitpos2) << 16)\ + | (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))) +#define USART_REG_VAL2(usartx, offset) (REG32((usartx) + ((uint32_t)(offset) >> 22))) +#define USART_BIT_POS2(val) (((uint32_t)(val) & (0x001F0000U)) >> 16) + +/* register offset */ +#define USART_STAT_REG_OFFSET (0x00000000U) /*!< STAT register offset */ +#define USART_CTL0_REG_OFFSET (0x0000000CU) /*!< CTL0 register offset */ +#define USART_CTL1_REG_OFFSET (0x00000010U) /*!< CTL1 register offset */ +#define USART_CTL2_REG_OFFSET (0x00000014U) /*!< CTL2 register offset */ + +/* USART flags */ +typedef enum +{ + /* flags in STAT register */ + USART_FLAG_CTS = USART_REGIDX_BIT(USART_STAT_REG_OFFSET, 9U), /*!< CTS change flag */ + USART_FLAG_LBD = USART_REGIDX_BIT(USART_STAT_REG_OFFSET, 8U), /*!< LIN break detected flag */ + USART_FLAG_TBE = USART_REGIDX_BIT(USART_STAT_REG_OFFSET, 7U), /*!< transmit data buffer empty */ + USART_FLAG_TC = USART_REGIDX_BIT(USART_STAT_REG_OFFSET, 6U), /*!< transmission complete */ + USART_FLAG_RBNE = USART_REGIDX_BIT(USART_STAT_REG_OFFSET, 5U), /*!< read data buffer not empty */ + USART_FLAG_IDLE = USART_REGIDX_BIT(USART_STAT_REG_OFFSET, 4U), /*!< IDLE frame detected flag */ + USART_FLAG_ORERR = USART_REGIDX_BIT(USART_STAT_REG_OFFSET, 3U), /*!< overrun error */ + USART_FLAG_NERR = USART_REGIDX_BIT(USART_STAT_REG_OFFSET, 2U), /*!< noise error flag */ + USART_FLAG_FERR = USART_REGIDX_BIT(USART_STAT_REG_OFFSET, 1U), /*!< frame error flag */ + USART_FLAG_PERR = USART_REGIDX_BIT(USART_STAT_REG_OFFSET, 0U), /*!< parity error flag */ +}usart_flag_enum; + +/* USART interrupt flags */ +typedef enum +{ + /* interrupt flags in CTL0 register */ + USART_INT_FLAG_PERR = USART_REGIDX_BIT2(USART_CTL0_REG_OFFSET, 8U, USART_STAT_REG_OFFSET, 0U), /*!< parity error interrupt and flag */ + USART_INT_FLAG_TBE = USART_REGIDX_BIT2(USART_CTL0_REG_OFFSET, 7U, USART_STAT_REG_OFFSET, 7U), /*!< transmitter buffer empty interrupt and flag */ + USART_INT_FLAG_TC = USART_REGIDX_BIT2(USART_CTL0_REG_OFFSET, 6U, USART_STAT_REG_OFFSET, 6U), /*!< transmission complete interrupt and flag */ + USART_INT_FLAG_RBNE = USART_REGIDX_BIT2(USART_CTL0_REG_OFFSET, 5U, USART_STAT_REG_OFFSET, 5U), /*!< read data buffer not empty interrupt and flag */ + USART_INT_FLAG_RBNE_ORERR = USART_REGIDX_BIT2(USART_CTL0_REG_OFFSET, 5U, USART_STAT_REG_OFFSET, 3U), /*!< read data buffer not empty interrupt and overrun error flag */ + USART_INT_FLAG_IDLE = USART_REGIDX_BIT2(USART_CTL0_REG_OFFSET, 4U, USART_STAT_REG_OFFSET, 4U), /*!< IDLE line detected interrupt and flag */ + /* interrupt flags in CTL1 register */ + USART_INT_FLAG_LBD = USART_REGIDX_BIT2(USART_CTL1_REG_OFFSET, 6U, USART_STAT_REG_OFFSET, 8U), /*!< LIN break detected interrupt and flag */ + /* interrupt flags in CTL2 register */ + USART_INT_FLAG_CTS = USART_REGIDX_BIT2(USART_CTL2_REG_OFFSET, 10U, USART_STAT_REG_OFFSET, 9U), /*!< CTS interrupt and flag */ + USART_INT_FLAG_ERR_ORERR = USART_REGIDX_BIT2(USART_CTL2_REG_OFFSET, 0U, USART_STAT_REG_OFFSET, 3U), /*!< error interrupt and overrun error */ + USART_INT_FLAG_ERR_NERR = USART_REGIDX_BIT2(USART_CTL2_REG_OFFSET, 0U, USART_STAT_REG_OFFSET, 2U), /*!< error interrupt and noise error flag */ + USART_INT_FLAG_ERR_FERR = USART_REGIDX_BIT2(USART_CTL2_REG_OFFSET, 0U, USART_STAT_REG_OFFSET, 1U), /*!< error interrupt and frame error flag */ +}usart_interrupt_flag_enum; + +/* USART interrupt enable or disable */ +typedef enum +{ + /* interrupt in CTL0 register */ + USART_INT_PERR = USART_REGIDX_BIT(USART_CTL0_REG_OFFSET, 8U), /*!< parity error interrupt */ + USART_INT_TBE = USART_REGIDX_BIT(USART_CTL0_REG_OFFSET, 7U), /*!< transmitter buffer empty interrupt */ + USART_INT_TC = USART_REGIDX_BIT(USART_CTL0_REG_OFFSET, 6U), /*!< transmission complete interrupt */ + USART_INT_RBNE = USART_REGIDX_BIT(USART_CTL0_REG_OFFSET, 5U), /*!< read data buffer not empty interrupt and overrun error interrupt */ + USART_INT_IDLE = USART_REGIDX_BIT(USART_CTL0_REG_OFFSET, 4U), /*!< IDLE line detected interrupt */ + /* interrupt in CTL1 register */ + USART_INT_LBD = USART_REGIDX_BIT(USART_CTL1_REG_OFFSET, 6U), /*!< LIN break detected interrupt */ + /* interrupt in CTL2 register */ + USART_INT_CTS = USART_REGIDX_BIT(USART_CTL2_REG_OFFSET, 10U), /*!< CTS interrupt */ + USART_INT_ERR = USART_REGIDX_BIT(USART_CTL2_REG_OFFSET, 0U), /*!< error interrupt */ +}usart_interrupt_enum; + +/* USART receiver configure */ +#define CTL0_REN(regval) (BIT(2) & ((uint32_t)(regval) << 2)) +#define USART_RECEIVE_ENABLE CTL0_REN(1) /*!< enable receiver */ +#define USART_RECEIVE_DISABLE CTL0_REN(0) /*!< disable receiver */ + +/* USART transmitter configure */ +#define CTL0_TEN(regval) (BIT(3) & ((uint32_t)(regval) << 3)) +#define USART_TRANSMIT_ENABLE CTL0_TEN(1) /*!< enable transmitter */ +#define USART_TRANSMIT_DISABLE CTL0_TEN(0) /*!< disable transmitter */ + +/* USART parity bits definitions */ +#define CTL0_PM(regval) (BITS(9,10) & ((uint32_t)(regval) << 9)) +#define USART_PM_NONE CTL0_PM(0) /*!< no parity */ +#define USART_PM_EVEN CTL0_PM(2) /*!< even parity */ +#define USART_PM_ODD CTL0_PM(3) /*!< odd parity */ + +/* USART wakeup method in mute mode */ +#define CTL0_WM(regval) (BIT(11) & ((uint32_t)(regval) << 11)) +#define USART_WM_IDLE CTL0_WM(0) /*!< idle line */ +#define USART_WM_ADDR CTL0_WM(1) /*!< address match */ + +/* USART word length definitions */ +#define CTL0_WL(regval) (BIT(12) & ((uint32_t)(regval) << 12)) +#define USART_WL_8BIT CTL0_WL(0) /*!< 8 bits */ +#define USART_WL_9BIT CTL0_WL(1) /*!< 9 bits */ + +/* USART stop bits definitions */ +#define CTL1_STB(regval) (BITS(12,13) & ((uint32_t)(regval) << 12)) +#define USART_STB_1BIT CTL1_STB(0) /*!< 1 bit */ +#define USART_STB_0_5BIT CTL1_STB(1) /*!< 0.5 bit */ +#define USART_STB_2BIT CTL1_STB(2) /*!< 2 bits */ +#define USART_STB_1_5BIT CTL1_STB(3) /*!< 1.5 bits */ + +/* USART LIN break frame length */ +#define CTL1_LBLEN(regval) (BIT(5) & ((uint32_t)(regval) << 5)) +#define USART_LBLEN_10B CTL1_LBLEN(0) /*!< 10 bits */ +#define USART_LBLEN_11B CTL1_LBLEN(1) /*!< 11 bits */ + +/* USART CK length */ +#define CTL1_CLEN(regval) (BIT(8) & ((uint32_t)(regval) << 8)) +#define USART_CLEN_NONE CTL1_CLEN(0) /*!< there are 7 CK pulses for an 8 bit frame and 8 CK pulses for a 9 bit frame */ +#define USART_CLEN_EN CTL1_CLEN(1) /*!< there are 8 CK pulses for an 8 bit frame and 9 CK pulses for a 9 bit frame */ + +/* USART clock phase */ +#define CTL1_CPH(regval) (BIT(9) & ((uint32_t)(regval) << 9)) +#define USART_CPH_1CK CTL1_CPH(0) /*!< first clock transition is the first data capture edge */ +#define USART_CPH_2CK CTL1_CPH(1) /*!< second clock transition is the first data capture edge */ + +/* USART clock polarity */ +#define CTL1_CPL(regval) (BIT(10) & ((uint32_t)(regval) << 10)) +#define USART_CPL_LOW CTL1_CPL(0) /*!< steady low value on CK pin */ +#define USART_CPL_HIGH CTL1_CPL(1) /*!< steady high value on CK pin */ + +/* USART DMA request for receive configure */ +#define CLT2_DENR(regval) (BIT(6) & ((uint32_t)(regval) << 6)) +#define USART_DENR_ENABLE CLT2_DENR(1) /*!< DMA request enable for reception */ +#define USART_DENR_DISABLE CLT2_DENR(0) /*!< DMA request disable for reception */ + +/* USART DMA request for transmission configure */ +#define CLT2_DENT(regval) (BIT(7) & ((uint32_t)(regval) << 7)) +#define USART_DENT_ENABLE CLT2_DENT(1) /*!< DMA request enable for transmission */ +#define USART_DENT_DISABLE CLT2_DENT(0) /*!< DMA request disable for transmission */ + +/* USART RTS configure */ +#define CLT2_RTSEN(regval) (BIT(8) & ((uint32_t)(regval) << 8)) +#define USART_RTS_ENABLE CLT2_RTSEN(1) /*!< RTS enable */ +#define USART_RTS_DISABLE CLT2_RTSEN(0) /*!< RTS disable */ + +/* USART CTS configure */ +#define CLT2_CTSEN(regval) (BIT(9) & ((uint32_t)(regval) << 9)) +#define USART_CTS_ENABLE CLT2_CTSEN(1) /*!< CTS enable */ +#define USART_CTS_DISABLE CLT2_CTSEN(0) /*!< CTS disable */ + +/* USART IrDA low-power enable */ +#define CTL2_IRLP(regval) (BIT(2) & ((uint32_t)(regval) << 2)) +#define USART_IRLP_LOW CTL2_IRLP(1) /*!< low-power */ +#define USART_IRLP_NORMAL CTL2_IRLP(0) /*!< normal */ + +/* function declarations */ +/* initialization functions */ +/* reset USART */ +void usart_deinit(uint32_t usart_periph); +/* configure USART baud rate value */ +void usart_baudrate_set(uint32_t usart_periph, uint32_t baudval); +/* configure USART parity function */ +void usart_parity_config(uint32_t usart_periph, uint32_t paritycfg); +/* configure USART word length */ +void usart_word_length_set(uint32_t usart_periph, uint32_t wlen); +/* configure USART stop bit length */ +void usart_stop_bit_set(uint32_t usart_periph, uint32_t stblen); + +/* USART normal mode communication */ +/* enable USART */ +void usart_enable(uint32_t usart_periph); +/* disable USART */ +void usart_disable(uint32_t usart_periph); +/* configure USART transmitter */ +void usart_transmit_config(uint32_t usart_periph, uint32_t txconfig); +/* configure USART receiver */ +void usart_receive_config(uint32_t usart_periph, uint32_t rxconfig); +/* USART transmit data function */ +void usart_data_transmit(uint32_t usart_periph, uint32_t data); +/* USART receive data function */ +uint16_t usart_data_receive(uint32_t usart_periph); + +/* multi-processor communication */ +/* configure address of the USART */ +void usart_address_config(uint32_t usart_periph, uint8_t addr); +/* enable mute mode */ +void usart_mute_mode_enable(uint32_t usart_periph); +/* disable mute mode */ +void usart_mute_mode_disable(uint32_t usart_periph); +/* configure wakeup method in mute mode */ +void usart_mute_mode_wakeup_config(uint32_t usart_periph, uint32_t wmethod); + +/* LIN mode communication */ +/* LIN mode enable */ +void usart_lin_mode_enable(uint32_t usart_periph); +/* LIN mode disable */ +void usart_lin_mode_disable(uint32_t usart_periph); +/* LIN break detection length */ +void usart_lin_break_detection_length_config(uint32_t usart_periph, uint32_t lblen); +/* send break frame */ +void usart_send_break(uint32_t usart_periph); + +/* half-duplex communication */ +/* half-duplex enable */ +void usart_halfduplex_enable(uint32_t usart_periph); +/* half-duplex disable */ +void usart_halfduplex_disable(uint32_t usart_periph); + +/* synchronous communication */ +/* clock enable */ +void usart_synchronous_clock_enable(uint32_t usart_periph); +/* clock disable */ +void usart_synchronous_clock_disable(uint32_t usart_periph); +/* configure usart synchronous mode parameters */ +void usart_synchronous_clock_config(uint32_t usart_periph, uint32_t clen, uint32_t cph, uint32_t cpl); + +/* smartcard communication */ +/* guard time value configure in smartcard mode */ +void usart_guard_time_config(uint32_t usart_periph, uint32_t gaut); +/* smartcard mode enable */ +void usart_smartcard_mode_enable(uint32_t usart_periph); +/* smartcard mode disable */ +void usart_smartcard_mode_disable(uint32_t usart_periph); +/* NACK enable in smartcard mode */ +void usart_smartcard_mode_nack_enable(uint32_t usart_periph); +/* NACK disable in smartcard mode */ +void usart_smartcard_mode_nack_disable(uint32_t usart_periph); + +/* IrDA communication */ +/* enable IrDA mode */ +void usart_irda_mode_enable(uint32_t usart_periph); +/* disable IrDA mode */ +void usart_irda_mode_disable(uint32_t usart_periph); +/* configure the peripheral clock prescaler */ +void usart_prescaler_config(uint32_t usart_periph, uint8_t psc); +/* configure IrDA low-power */ +void usart_irda_lowpower_config(uint32_t usart_periph, uint32_t irlp); + +/* hardware flow communication */ +/* configure hardware flow control RTS */ +void usart_hardware_flow_rts_config(uint32_t usart_periph, uint32_t rtsconfig); +/* configure hardware flow control CTS */ +void usart_hardware_flow_cts_config(uint32_t usart_periph, uint32_t ctsconfig); + +/* configure USART DMA for reception */ +void usart_dma_receive_config(uint32_t usart_periph, uint32_t dmacmd); +/* configure USART DMA for transmission */ +void usart_dma_transmit_config(uint32_t usart_periph, uint32_t dmacmd); + +/* flag functions */ +/* get flag in STAT register */ +FlagStatus usart_flag_get(uint32_t usart_periph, usart_flag_enum flag); +/* clear flag in STAT register */ +void usart_flag_clear(uint32_t usart_periph, usart_flag_enum flag); + +/* interrupt functions */ +/* enable USART interrupt */ +void usart_interrupt_enable(uint32_t usart_periph, uint32_t interrupt); +/* disable USART interrupt */ +void usart_interrupt_disable(uint32_t usart_periph, uint32_t interrupt); +/* get USART interrupt and flag status */ +FlagStatus usart_interrupt_flag_get(uint32_t usart_periph, uint32_t int_flag); +/* clear interrupt flag in STAT register */ +void usart_interrupt_flag_clear(uint32_t usart_periph, uint32_t int_flag); +#endif /* GD32VF103_USART_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_wwdgt.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_wwdgt.h new file mode 100644 index 0000000000..4588793f3f --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Include/gd32vf103_wwdgt.h @@ -0,0 +1,87 @@ +/*! + \file gd32vf103_wwdgt.h + \brief definitions for the WWDGT + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_WWDGT_H +#define GD32VF103_WWDGT_H + +#include "gd32vf103.h" + +/* WWDGT definitions */ +#define WWDGT WWDGT_BASE /*!< WWDGT base address */ + +/* registers definitions */ +#define WWDGT_CTL REG32((WWDGT) + 0x00000000U) /*!< WWDGT control register */ +#define WWDGT_CFG REG32((WWDGT) + 0x00000004U) /*!< WWDGT configuration register */ +#define WWDGT_STAT REG32((WWDGT) + 0x00000008U) /*!< WWDGT status register */ + +/* bits definitions */ +/* WWDGT_CTL */ +#define WWDGT_CTL_CNT BITS(0,6) /*!< WWDGT counter value */ +#define WWDGT_CTL_WDGTEN BIT(7) /*!< WWDGT counter enable */ + +/* WWDGT_CFG */ +#define WWDGT_CFG_WIN BITS(0,6) /*!< WWDGT counter window value */ +#define WWDGT_CFG_PSC BITS(7,8) /*!< WWDGT prescaler divider value */ +#define WWDGT_CFG_EWIE BIT(9) /*!< early wakeup interrupt enable */ + +/* WWDGT_STAT */ +#define WWDGT_STAT_EWIF BIT(0) /*!< early wakeup interrupt flag */ + +/* constants definitions */ +#define CFG_PSC(regval) (BITS(7,8) & ((uint32_t)(regval) << 7)) /*!< write value to WWDGT_CFG_PSC bit field */ +#define WWDGT_CFG_PSC_DIV1 CFG_PSC(0) /*!< the time base of WWDGT = (PCLK1/4096)/1 */ +#define WWDGT_CFG_PSC_DIV2 CFG_PSC(1) /*!< the time base of WWDGT = (PCLK1/4096)/2 */ +#define WWDGT_CFG_PSC_DIV4 CFG_PSC(2) /*!< the time base of WWDGT = (PCLK1/4096)/4 */ +#define WWDGT_CFG_PSC_DIV8 CFG_PSC(3) /*!< the time base of WWDGT = (PCLK1/4096)/8 */ + +/* function declarations */ +/* reset the window watchdog timer configuration */ +void wwdgt_deinit(void); +/* start the window watchdog timer counter */ +void wwdgt_enable(void); + +/* configure the window watchdog timer counter value */ +void wwdgt_counter_update(uint16_t counter_value); +/* configure counter value, window value, and prescaler divider value */ +void wwdgt_config(uint16_t counter, uint16_t window, uint32_t prescaler); + +/* enable early wakeup interrupt of WWDGT */ +void wwdgt_interrupt_enable(void); +/* check early wakeup interrupt state of WWDGT */ +FlagStatus wwdgt_flag_get(void); +/* clear early wakeup interrupt state of WWDGT */ +void wwdgt_flag_clear(void); + +#endif /* GD32VF103_WWDGT_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_adc.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_adc.c new file mode 100644 index 0000000000..39597e4d3d --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_adc.c @@ -0,0 +1,993 @@ +/*! + \file gd32vf103_adc.c + \brief ADC driver + + \version 2020-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "gd32vf103_adc.h" + +/* discontinuous mode macro*/ +#define ADC_CHANNEL_LENGTH_SUBTRACT_ONE ((uint8_t)1U) + +/* ADC regular channel macro */ +#define ADC_REGULAR_CHANNEL_RANK_SIX ((uint8_t)6U) +#define ADC_REGULAR_CHANNEL_RANK_TWELVE ((uint8_t)12U) +#define ADC_REGULAR_CHANNEL_RANK_SIXTEEN ((uint8_t)16U) +#define ADC_REGULAR_CHANNEL_RANK_LENGTH ((uint8_t)5U) + +/* ADC sampling time macro */ +#define ADC_CHANNEL_SAMPLE_TEN ((uint8_t)10U) +#define ADC_CHANNEL_SAMPLE_EIGHTEEN ((uint8_t)18U) +#define ADC_CHANNEL_SAMPLE_LENGTH ((uint8_t)3U) + +/* ADC inserted channel macro */ +#define ADC_INSERTED_CHANNEL_RANK_LENGTH ((uint8_t)5U) +#define ADC_INSERTED_CHANNEL_SHIFT_LENGTH ((uint8_t)15U) + +/* ADC inserted channel offset macro */ +#define ADC_OFFSET_LENGTH ((uint8_t)3U) +#define ADC_OFFSET_SHIFT_LENGTH ((uint8_t)4U) + +/*! + \brief reset ADC + \param[in] adc_periph: ADCx, x=0,1 + \param[out] none + \retval none +*/ +void adc_deinit(uint32_t adc_periph) +{ + switch(adc_periph){ + case ADC0: + /* reset ADC0 */ + rcu_periph_reset_enable(RCU_ADC0RST); + rcu_periph_reset_disable(RCU_ADC0RST); + break; + case ADC1: + /* reset ADC1 */ + rcu_periph_reset_enable(RCU_ADC1RST); + rcu_periph_reset_disable(RCU_ADC1RST); + break; + default: + break; + } +} + +/*! + \brief configure the ADC sync mode + \param[in] mode: ADC mode + only one parameter can be selected which is shown as below: + \arg ADC_MODE_FREE: all the ADCs work independently + \arg ADC_DAUL_REGULAL_PARALLEL_INSERTED_PARALLEL: ADC0 and ADC1 work in combined regular parallel + inserted parallel mode + \arg ADC_DAUL_REGULAL_PARALLEL_INSERTED_ROTATION: ADC0 and ADC1 work in combined regular parallel + trigger rotation mode + \arg ADC_DAUL_INSERTED_PARALLEL_REGULAL_FOLLOWUP_FAST: ADC0 and ADC1 work in combined inserted parallel + follow-up fast mode + \arg ADC_DAUL_INSERTED_PARALLEL_REGULAL_FOLLOWUP_SLOW: ADC0 and ADC1 work in combined inserted parallel + follow-up slow mode + \arg ADC_DAUL_INSERTED_PARALLEL: ADC0 and ADC1 work in inserted parallel mode only + \arg ADC_DAUL_REGULAL_PARALLEL: ADC0 and ADC1 work in regular parallel mode only + \arg ADC_DAUL_REGULAL_FOLLOWUP_FAST: ADC0 and ADC1 work in follow-up fast mode only + \arg ADC_DAUL_REGULAL_FOLLOWUP_SLOW: ADC0 and ADC1 work in follow-up slow mode only + \arg ADC_DAUL_INSERTED_TRIGGER_ROTATION: ADC0 and ADC1 work in trigger rotation mode only + \param[out] none + \retval none +*/ +void adc_mode_config(uint32_t mode) +{ + ADC_CTL0(ADC0) &= ~(ADC_CTL0_SYNCM); + ADC_CTL0(ADC0) |= mode; +} + +/*! + \brief enable or disable ADC special function + \param[in] adc_periph: ADCx, x=0,1 + \param[in] function: the function to config + only one parameter can be selected which is shown as below: + \arg ADC_SCAN_MODE: scan mode select + \arg ADC_INSERTED_CHANNEL_AUTO: inserted channel group convert automatically + \arg ADC_CONTINUOUS_MODE: continuous mode select + \param[in] newvalue: ENABLE or DISABLE + \param[out] none + \retval none +*/ +void adc_special_function_config(uint32_t adc_periph, uint32_t function, ControlStatus newvalue) +{ + if(newvalue){ + if(0U != (function & ADC_SCAN_MODE)){ + /* enable scan mode */ + ADC_CTL0(adc_periph) |= ADC_SCAN_MODE; + } + if(0U != (function & ADC_INSERTED_CHANNEL_AUTO)){ + /* enable inserted channel group convert automatically */ + ADC_CTL0(adc_periph) |= ADC_INSERTED_CHANNEL_AUTO; + } + if(0U != (function & ADC_CONTINUOUS_MODE)){ + /* enable continuous mode */ + ADC_CTL1(adc_periph) |= ADC_CONTINUOUS_MODE; + } + }else{ + if(0U != (function & ADC_SCAN_MODE)){ + /* disable scan mode */ + ADC_CTL0(adc_periph) &= ~ADC_SCAN_MODE; + } + if(0U != (function & ADC_INSERTED_CHANNEL_AUTO)){ + /* disable inserted channel group convert automatically */ + ADC_CTL0(adc_periph) &= ~ADC_INSERTED_CHANNEL_AUTO; + } + if(0U != (function & ADC_CONTINUOUS_MODE)){ + /* disable continuous mode */ + ADC_CTL1(adc_periph) &= ~ADC_CONTINUOUS_MODE; + } + } +} + +/*! + \brief configure ADC data alignment + \param[in] adc_periph: ADCx, x=0,1 + \param[in] data_alignment: data alignment select + only one parameter can be selected which is shown as below: + \arg ADC_DATAALIGN_RIGHT: LSB alignment + \arg ADC_DATAALIGN_LEFT: MSB alignment + \param[out] none + \retval none +*/ +void adc_data_alignment_config(uint32_t adc_periph, uint32_t data_alignment) +{ + if(ADC_DATAALIGN_RIGHT != data_alignment){ + /* MSB alignment */ + ADC_CTL1(adc_periph) |= ADC_CTL1_DAL; + }else{ + /* LSB alignment */ + ADC_CTL1(adc_periph) &= ~((uint32_t)ADC_CTL1_DAL); + } +} + +/*! + \brief enable ADC interface + \param[in] adc_periph: ADCx, x=0,1 + \param[out] none + \retval none +*/ +void adc_enable(uint32_t adc_periph) +{ + if((uint32_t)RESET == (ADC_CTL1(adc_periph) & ADC_CTL1_ADCON)){ + /* enable ADC */ + ADC_CTL1(adc_periph) |= (uint32_t)ADC_CTL1_ADCON; + } +} + +/*! + \brief disable ADC interface + \param[in] adc_periph: ADCx, x=0,1 + \param[out] none + \retval none +*/ +void adc_disable(uint32_t adc_periph) +{ + /* disable ADC */ + ADC_CTL1(adc_periph) &= ~((uint32_t)ADC_CTL1_ADCON); +} + +/*! + \brief ADC calibration and reset calibration + \param[in] adc_periph: ADCx, x=0,1 + \param[out] none + \retval none +*/ +void adc_calibration_enable(uint32_t adc_periph) +{ + /* reset the selected ADC1 calibration registers */ + ADC_CTL1(adc_periph) |= (uint32_t) ADC_CTL1_RSTCLB; + /* check the RSTCLB bit state */ + while((uint32_t)RESET != (ADC_CTL1(adc_periph) & ADC_CTL1_RSTCLB)){ + } + /* enable ADC calibration process */ + ADC_CTL1(adc_periph) |= ADC_CTL1_CLB; + /* check the CLB bit state */ + while((uint32_t)RESET != (ADC_CTL1(adc_periph) & ADC_CTL1_CLB)){ + } +} + +/*! + \brief enable the temperature sensor and Vrefint channel + \param[in] none + \param[out] none + \retval none +*/ +void adc_tempsensor_vrefint_enable(void) +{ + /* enable the temperature sensor and Vrefint channel */ + ADC_CTL1(ADC0) |= ADC_CTL1_TSVREN; +} + +/*! + \brief disable the temperature sensor and Vrefint channel + \param[in] none + \param[out] none + \retval none +*/ +void adc_tempsensor_vrefint_disable(void) +{ + /* disable the temperature sensor and Vrefint channel */ + ADC_CTL1(ADC0) &= ~ADC_CTL1_TSVREN; +} + +/*! + \brief enable DMA request + \param[in] adc_periph: ADCx, x=0,1 + \param[out] none + \retval none +*/ +void adc_dma_mode_enable(uint32_t adc_periph) +{ + /* enable DMA request */ + ADC_CTL1(adc_periph) |= (uint32_t)(ADC_CTL1_DMA); +} + +/*! + \brief disable DMA request + \param[in] adc_periph: ADCx, x=0,1 + \param[out] none + \retval none +*/ +void adc_dma_mode_disable(uint32_t adc_periph) +{ + /* disable DMA request */ + ADC_CTL1(adc_periph) &= ~((uint32_t)ADC_CTL1_DMA); +} + +/*! + \brief configure ADC discontinuous mode + \param[in] adc_periph: ADCx, x=0,1 + \param[in] adc_channel_group: select the channel group + only one parameter can be selected which is shown as below: + \arg ADC_REGULAR_CHANNEL: regular channel group + \arg ADC_INSERTED_CHANNEL: inserted channel group + \arg ADC_CHANNEL_DISCON_DISABLE: disable discontinuous mode of regular & inserted channel + \param[in] length: number of conversions in discontinuous mode,the number can be 1..8 + for regular channel, the number has no effect for inserted channel + \param[out] none + \retval none +*/ +void adc_discontinuous_mode_config(uint32_t adc_periph, uint8_t adc_channel_group, uint8_t length) +{ + /* disable discontinuous mode of regular & inserted channel */ + ADC_CTL0(adc_periph) &= ~((uint32_t)(ADC_CTL0_DISRC | ADC_CTL0_DISIC)); + switch(adc_channel_group){ + case ADC_REGULAR_CHANNEL: + /* config the number of conversions in discontinuous mode */ + ADC_CTL0(adc_periph) &= ~((uint32_t)ADC_CTL0_DISNUM); + ADC_CTL0(adc_periph) |= CTL0_DISNUM(((uint32_t)length - ADC_CHANNEL_LENGTH_SUBTRACT_ONE)); + /* enable regular channel group discontinuous mode */ + ADC_CTL0(adc_periph) |= (uint32_t)ADC_CTL0_DISRC; + break; + case ADC_INSERTED_CHANNEL: + /* enable inserted channel group discontinuous mode */ + ADC_CTL0(adc_periph) |= (uint32_t)ADC_CTL0_DISIC; + break; + case ADC_CHANNEL_DISCON_DISABLE: + /* disable discontinuous mode of regular & inserted channel */ + default: + break; + } +} + +/*! + \brief configure the length of regular channel group or inserted channel group + \param[in] adc_periph: ADCx, x=0,1 + \param[in] adc_channel_group: select the channel group + only one parameter can be selected which is shown as below: + \arg ADC_REGULAR_CHANNEL: regular channel group + \arg ADC_INSERTED_CHANNEL: inserted channel group + \param[in] length: the length of the channel + regular channel 1-16 + inserted channel 1-4 + \param[out] none + \retval none +*/ +void adc_channel_length_config(uint32_t adc_periph, uint8_t adc_channel_group, uint32_t length) +{ + switch(adc_channel_group){ + case ADC_REGULAR_CHANNEL: + /* configure the length of regular channel group */ + ADC_RSQ0(adc_periph) &= ~((uint32_t)ADC_RSQ0_RL); + ADC_RSQ0(adc_periph) |= RSQ0_RL((uint32_t)(length-ADC_CHANNEL_LENGTH_SUBTRACT_ONE)); + break; + case ADC_INSERTED_CHANNEL: + /* configure the length of inserted channel group */ + ADC_ISQ(adc_periph) &= ~((uint32_t)ADC_ISQ_IL); + ADC_ISQ(adc_periph) |= ISQ_IL((uint32_t)(length-ADC_CHANNEL_LENGTH_SUBTRACT_ONE)); + break; + default: + break; + } +} + +/*! + \brief configure ADC regular channel + \param[in] adc_periph: ADCx, x=0,1 + \param[in] rank: the regular group sequence rank,this parameter must be between 0 to 15 + \param[in] adc_channel: the selected ADC channel + only one parameter can be selected which is shown as below: + \arg ADC_CHANNEL_x(x=0..17)(x=16 and x=17 are only for ADC0): ADC Channelx + \param[in] sample_time: the sample time value + only one parameter can be selected which is shown as below: + \arg ADC_SAMPLETIME_1POINT5: 1.5 cycles + \arg ADC_SAMPLETIME_7POINT5: 7.5 cycles + \arg ADC_SAMPLETIME_13POINT5: 13.5 cycles + \arg ADC_SAMPLETIME_28POINT5: 28.5 cycles + \arg ADC_SAMPLETIME_41POINT5: 41.5 cycles + \arg ADC_SAMPLETIME_55POINT5: 55.5 cycles + \arg ADC_SAMPLETIME_71POINT5: 71.5 cycles + \arg ADC_SAMPLETIME_239POINT5: 239.5 cycles + \param[out] none + \retval none +*/ +void adc_regular_channel_config(uint32_t adc_periph, uint8_t rank, uint8_t adc_channel, uint32_t sample_time) +{ + uint32_t rsq,sampt; + + /* ADC regular sequence config */ + if(rank < ADC_REGULAR_CHANNEL_RANK_SIX){ + /* the regular group sequence rank is smaller than six */ + rsq = ADC_RSQ2(adc_periph); + rsq &= ~((uint32_t)(ADC_RSQX_RSQN << (ADC_REGULAR_CHANNEL_RANK_LENGTH*rank))); + /* the channel number is written to these bits to select a channel as the nth conversion in the regular channel group */ + rsq |= ((uint32_t)adc_channel << (ADC_REGULAR_CHANNEL_RANK_LENGTH*rank)); + ADC_RSQ2(adc_periph) = rsq; + }else if(rank < ADC_REGULAR_CHANNEL_RANK_TWELVE){ + /* the regular group sequence rank is smaller than twelve */ + rsq = ADC_RSQ1(adc_periph); + rsq &= ~((uint32_t)(ADC_RSQX_RSQN << (ADC_REGULAR_CHANNEL_RANK_LENGTH*(rank-ADC_REGULAR_CHANNEL_RANK_SIX)))); + /* the channel number is written to these bits to select a channel as the nth conversion in the regular channel group */ + rsq |= ((uint32_t)adc_channel << (ADC_REGULAR_CHANNEL_RANK_LENGTH*(rank-ADC_REGULAR_CHANNEL_RANK_SIX))); + ADC_RSQ1(adc_periph) = rsq; + }else if(rank < ADC_REGULAR_CHANNEL_RANK_SIXTEEN){ + /* the regular group sequence rank is smaller than sixteen */ + rsq = ADC_RSQ0(adc_periph); + rsq &= ~((uint32_t)(ADC_RSQX_RSQN << (ADC_REGULAR_CHANNEL_RANK_LENGTH*(rank-ADC_REGULAR_CHANNEL_RANK_TWELVE)))); + /* the channel number is written to these bits to select a channel as the nth conversion in the regular channel group */ + rsq |= ((uint32_t)adc_channel << (ADC_REGULAR_CHANNEL_RANK_LENGTH*(rank-ADC_REGULAR_CHANNEL_RANK_TWELVE))); + ADC_RSQ0(adc_periph) = rsq; + }else{ + } + + /* ADC sampling time config */ + if(adc_channel < ADC_CHANNEL_SAMPLE_TEN){ + /* the regular group sequence rank is smaller than ten */ + sampt = ADC_SAMPT1(adc_periph); + sampt &= ~((uint32_t)(ADC_SAMPTX_SPTN << (ADC_CHANNEL_SAMPLE_LENGTH*adc_channel))); + /* channel sample time set*/ + sampt |= (uint32_t)(sample_time << (ADC_CHANNEL_SAMPLE_LENGTH*adc_channel)); + ADC_SAMPT1(adc_periph) = sampt; + }else if(adc_channel < ADC_CHANNEL_SAMPLE_EIGHTEEN){ + /* the regular group sequence rank is smaller than eighteen */ + sampt = ADC_SAMPT0(adc_periph); + sampt &= ~((uint32_t)(ADC_SAMPTX_SPTN << (ADC_CHANNEL_SAMPLE_LENGTH*(adc_channel-ADC_CHANNEL_SAMPLE_TEN)))); + /* channel sample time set*/ + sampt |= (uint32_t)(sample_time << (ADC_CHANNEL_SAMPLE_LENGTH*(adc_channel-ADC_CHANNEL_SAMPLE_TEN))); + ADC_SAMPT0(adc_periph) = sampt; + }else{ + } +} + +/*! + \brief configure ADC inserted channel + \param[in] adc_periph: ADCx, x=0,1 + \param[in] rank: the inserted group sequencer rank,this parameter must be between 0 to 3 + \param[in] adc_channel: the selected ADC channel + only one parameter can be selected which is shown as below: + \arg ADC_CHANNEL_x(x=0..17)(x=16 and x=17 are only for ADC0): ADC Channelx + \param[in] sample_time: The sample time value + only one parameter can be selected which is shown as below: + \arg ADC_SAMPLETIME_1POINT5: 1.5 cycles + \arg ADC_SAMPLETIME_7POINT5: 7.5 cycles + \arg ADC_SAMPLETIME_13POINT5: 13.5 cycles + \arg ADC_SAMPLETIME_28POINT5: 28.5 cycles + \arg ADC_SAMPLETIME_41POINT5: 41.5 cycles + \arg ADC_SAMPLETIME_55POINT5: 55.5 cycles + \arg ADC_SAMPLETIME_71POINT5: 71.5 cycles + \arg ADC_SAMPLETIME_239POINT5: 239.5 cycles + \param[out] none + \retval none +*/ +void adc_inserted_channel_config(uint32_t adc_periph, uint8_t rank, uint8_t adc_channel, uint32_t sample_time) +{ + uint8_t inserted_length; + uint32_t isq,sampt; + /* get inserted channel group length */ + inserted_length = (uint8_t)GET_BITS(ADC_ISQ(adc_periph) , 20U , 21U); + /* the channel number is written to these bits to select a channel as the nth conversion in the inserted channel group */ + isq = ADC_ISQ(adc_periph); + isq &= ~((uint32_t)(ADC_ISQ_ISQN << (ADC_INSERTED_CHANNEL_SHIFT_LENGTH-(inserted_length-rank)*ADC_INSERTED_CHANNEL_RANK_LENGTH))); + isq |= ((uint32_t)adc_channel << (ADC_INSERTED_CHANNEL_SHIFT_LENGTH-(inserted_length-rank)*ADC_INSERTED_CHANNEL_RANK_LENGTH)); + ADC_ISQ(adc_periph) = isq; + + /* ADC sampling time config */ + if(adc_channel < ADC_CHANNEL_SAMPLE_TEN){ + /* the inserted group sequence rank is smaller than ten */ + sampt = ADC_SAMPT1(adc_periph); + sampt &= ~((uint32_t)(ADC_SAMPTX_SPTN << (ADC_CHANNEL_SAMPLE_LENGTH*adc_channel))); + /* channel sample time set*/ + sampt |= (uint32_t) sample_time << (ADC_CHANNEL_SAMPLE_LENGTH*adc_channel); + ADC_SAMPT1(adc_periph) = sampt; + }else if(adc_channel < ADC_CHANNEL_SAMPLE_EIGHTEEN){ + /* the inserted group sequence rank is smaller than eighteen */ + sampt = ADC_SAMPT0(adc_periph); + sampt &= ~((uint32_t)(ADC_SAMPTX_SPTN << (ADC_CHANNEL_SAMPLE_LENGTH*(adc_channel-ADC_CHANNEL_SAMPLE_TEN)))); + /* channel sample time set*/ + sampt |= ((uint32_t)sample_time << (ADC_CHANNEL_SAMPLE_LENGTH*(adc_channel-ADC_CHANNEL_SAMPLE_TEN))); + ADC_SAMPT0(adc_periph) = sampt; + }else{ + } +} + +/*! + \brief configure ADC inserted channel offset + \param[in] adc_periph: ADCx, x=0,1 + \param[in] inserted_channel: insert channel select + only one parameter can be selected + \arg ADC_INSERTED_CHANNEL_0: inserted channel0 + \arg ADC_INSERTED_CHANNEL_1: inserted channel1 + \arg ADC_INSERTED_CHANNEL_2: inserted channel2 + \arg ADC_INSERTED_CHANNEL_3: inserted channel3 + \param[in] offset: the offset data + \param[out] none + \retval none +*/ +void adc_inserted_channel_offset_config(uint32_t adc_periph, uint8_t inserted_channel, uint16_t offset) +{ + uint8_t inserted_length; + uint32_t num = 0U; + + inserted_length = (uint8_t)GET_BITS(ADC_ISQ(adc_periph) , 20U , 21U); + num = ((uint32_t)ADC_OFFSET_LENGTH - ((uint32_t)inserted_length - (uint32_t)inserted_channel)); + + if(num <= ADC_OFFSET_LENGTH){ + /* calculate the offset of the register */ + num = num * ADC_OFFSET_SHIFT_LENGTH; + /* config the offset of the selected channels */ + REG32((adc_periph) + 0x14U + num) = IOFFX_IOFF((uint32_t)offset); + } +} + +/*! + \brief configure ADC external trigger source + \param[in] adc_periph: ADCx, x=0,1 + \param[in] adc_channel_group: select the channel group + only one parameter can be selected which is shown as below: + \arg ADC_REGULAR_CHANNEL: regular channel group + \arg ADC_INSERTED_CHANNEL: inserted channel group + \param[in] external_trigger_source: regular or inserted group trigger source + only one parameter can be selected + for regular channel: + \arg ADC0_1_EXTTRIG_REGULAR_T0_CH0: TIMER0 CH0 event select + \arg ADC0_1_EXTTRIG_REGULAR_T0_CH1: TIMER0 CH1 event select + \arg ADC0_1_EXTTRIG_REGULAR_T0_CH2: TIMER0 CH2 event select + \arg ADC0_1_EXTTRIG_REGULAR_T1_CH1: TIMER1 CH1 event select + \arg ADC0_1_EXTTRIG_REGULAR_T2_TRGO: TIMER2 TRGO event select + \arg ADC0_1_EXTTRIG_REGULAR_T3_CH3: TIMER3 CH3 event select + \arg ADC0_1_EXTTRIG_REGULAR_EXTI_11: external interrupt line 11 + \arg ADC0_1_EXTTRIG_REGULAR_NONE: software trigger + for inserted channel: + \arg ADC0_1_EXTTRIG_INSERTED_T0_TRGO: TIMER0 TRGO event select + \arg ADC0_1_EXTTRIG_INSERTED_T0_CH3: TIMER0 CH3 event select + \arg ADC0_1_EXTTRIG_INSERTED_T1_TRGO: TIMER1 TRGO event select + \arg ADC0_1_EXTTRIG_INSERTED_T1_CH0: TIMER1 CH0 event select + \arg ADC0_1_EXTTRIG_INSERTED_T2_CH3: TIMER2 CH3 event select + \arg ADC0_1_EXTTRIG_INSERTED_T3_TRGO: TIMER3 TRGO event select + \arg ADC0_1_EXTTRIG_INSERTED_EXTI_15: external interrupt line 15 + \arg ADC0_1_EXTTRIG_INSERTED_NONE: software trigger + \param[out] none + \retval none +*/ +void adc_external_trigger_source_config(uint32_t adc_periph, uint8_t adc_channel_group, uint32_t external_trigger_source) +{ + switch(adc_channel_group){ + case ADC_REGULAR_CHANNEL: + /* configure ADC regular group external trigger source */ + ADC_CTL1(adc_periph) &= ~((uint32_t)ADC_CTL1_ETSRC); + ADC_CTL1(adc_periph) |= (uint32_t)external_trigger_source; + break; + case ADC_INSERTED_CHANNEL: + /* configure ADC inserted group external trigger source */ + ADC_CTL1(adc_periph) &= ~((uint32_t)ADC_CTL1_ETSIC); + ADC_CTL1(adc_periph) |= (uint32_t)external_trigger_source; + break; + default: + break; + } +} + +/*! + \brief configure ADC external trigger + \param[in] adc_periph: ADCx, x=0,1 + \param[in] adc_channel_group: select the channel group + one or more parameters can be selected which are shown as below: + \arg ADC_REGULAR_CHANNEL: regular channel group + \arg ADC_INSERTED_CHANNEL: inserted channel group + \param[in] newvalue: ENABLE or DISABLE + \param[out] none + \retval none +*/ +void adc_external_trigger_config(uint32_t adc_periph, uint8_t adc_channel_group, ControlStatus newvalue) +{ + if(newvalue){ + if(0U != (adc_channel_group & ADC_REGULAR_CHANNEL)){ + /* enable ADC regular channel group external trigger */ + ADC_CTL1(adc_periph) |= ADC_CTL1_ETERC; + } + if(0U != (adc_channel_group & ADC_INSERTED_CHANNEL)){ + /* enable ADC inserted channel group external trigger */ + ADC_CTL1(adc_periph) |= ADC_CTL1_ETEIC; + } + }else{ + if(0U != (adc_channel_group & ADC_REGULAR_CHANNEL)){ + /* disable ADC regular channel group external trigger */ + ADC_CTL1(adc_periph) &= ~ADC_CTL1_ETERC; + } + if(0U != (adc_channel_group & ADC_INSERTED_CHANNEL)){ + /* disable ADC regular channel group external trigger */ + ADC_CTL1(adc_periph) &= ~ADC_CTL1_ETEIC; + } + } +} + +/*! + \brief enable ADC software trigger + \param[in] adc_periph: ADCx, x=0,1 + \param[in] adc_channel_group: select the channel group + one or more parameters can be selected which are shown as below: + \arg ADC_REGULAR_CHANNEL: regular channel group + \arg ADC_INSERTED_CHANNEL: inserted channel group + \param[out] none + \retval none +*/ +void adc_software_trigger_enable(uint32_t adc_periph, uint8_t adc_channel_group) +{ + if(0U != (adc_channel_group & ADC_REGULAR_CHANNEL)){ + /* enable ADC regular channel group software trigger */ + ADC_CTL1(adc_periph) |= ADC_CTL1_SWRCST; + } + if(0U != (adc_channel_group & ADC_INSERTED_CHANNEL)){ + /* enable ADC inserted channel group software trigger */ + ADC_CTL1(adc_periph) |= ADC_CTL1_SWICST; + } +} + +/*! + \brief read ADC regular group data register + \param[in] adc_periph: ADCx, x=0,1 + \param[in] none + \param[out] none + \retval the conversion value +*/ +uint16_t adc_regular_data_read(uint32_t adc_periph) +{ + return (uint16_t)(ADC_RDATA(adc_periph)); +} + +/*! + \brief read ADC inserted group data register + \param[in] adc_periph: ADCx, x=0,1 + \param[in] inserted_channel: insert channel select + only one parameter can be selected + \arg ADC_INSERTED_CHANNEL_0: inserted Channel0 + \arg ADC_INSERTED_CHANNEL_1: inserted channel1 + \arg ADC_INSERTED_CHANNEL_2: inserted Channel2 + \arg ADC_INSERTED_CHANNEL_3: inserted Channel3 + \param[out] none + \retval the conversion value +*/ +uint16_t adc_inserted_data_read(uint32_t adc_periph, uint8_t inserted_channel) +{ + uint32_t idata; + /* read the data of the selected channel */ + switch(inserted_channel){ + case ADC_INSERTED_CHANNEL_0: + /* read the data of channel 0 */ + idata = ADC_IDATA0(adc_periph); + break; + case ADC_INSERTED_CHANNEL_1: + /* read the data of channel 1 */ + idata = ADC_IDATA1(adc_periph); + break; + case ADC_INSERTED_CHANNEL_2: + /* read the data of channel 2 */ + idata = ADC_IDATA2(adc_periph); + break; + case ADC_INSERTED_CHANNEL_3: + /* read the data of channel 3 */ + idata = ADC_IDATA3(adc_periph); + break; + default: + idata = 0U; + break; + } + return (uint16_t)idata; +} + +/*! + \brief read the last ADC0 and ADC1 conversion result data in sync mode + \param[in] none + \param[out] none + \retval the conversion value +*/ +uint32_t adc_sync_mode_convert_value_read(void) +{ + /* return conversion value */ + return ADC_RDATA(ADC0); +} + + +/*! + \brief configure ADC analog watchdog single channel + \param[in] adc_periph: ADCx, x=0,1 + \param[in] adc_channel: the selected ADC channel + only one parameter can be selected which is shown as below: + \arg ADC_CHANNEL_x: ADC Channelx(x=0..17)(x=16 and x=17 are only for ADC0) + \param[out] none + \retval none +*/ +void adc_watchdog_single_channel_enable(uint32_t adc_periph, uint8_t adc_channel) +{ + ADC_CTL0(adc_periph) &= (uint32_t)~(ADC_CTL0_RWDEN | ADC_CTL0_IWDEN | ADC_CTL0_WDSC | ADC_CTL0_WDCHSEL); + /* analog watchdog channel select */ + ADC_CTL0(adc_periph) |= (uint32_t)adc_channel; + ADC_CTL0(adc_periph) |= (uint32_t)(ADC_CTL0_RWDEN | ADC_CTL0_IWDEN | ADC_CTL0_WDSC); +} + +/*! + \brief configure ADC analog watchdog group channel + \param[in] adc_periph: ADCx, x=0,1 + \param[in] adc_channel_group: the channel group use analog watchdog + only one parameter can be selected which is shown as below: + \arg ADC_REGULAR_CHANNEL: regular channel group + \arg ADC_INSERTED_CHANNEL: inserted channel group + \arg ADC_REGULAR_INSERTED_CHANNEL: both regular and inserted group + \param[out] none + \retval none +*/ +void adc_watchdog_group_channel_enable(uint32_t adc_periph, uint8_t adc_channel_group) +{ + ADC_CTL0(adc_periph) &= (uint32_t)~(ADC_CTL0_RWDEN | ADC_CTL0_IWDEN | ADC_CTL0_WDSC); + /* select the group */ + switch(adc_channel_group){ + case ADC_REGULAR_CHANNEL: + /* regular channel analog watchdog enable */ + ADC_CTL0(adc_periph) |= (uint32_t) ADC_CTL0_RWDEN; + break; + case ADC_INSERTED_CHANNEL: + /* inserted channel analog watchdog enable */ + ADC_CTL0(adc_periph) |= (uint32_t) ADC_CTL0_IWDEN; + break; + case ADC_REGULAR_INSERTED_CHANNEL: + /* regular and inserted channel analog watchdog enable */ + ADC_CTL0(adc_periph) |= (uint32_t)(ADC_CTL0_RWDEN | ADC_CTL0_IWDEN); + break; + default: + break; + } +} + +/*! + \brief disable ADC analog watchdog + \param[in] adc_periph: ADCx, x=0,1 + \param[out] none + \retval none +*/ +void adc_watchdog_disable(uint32_t adc_periph) +{ + ADC_CTL0(adc_periph) &= (uint32_t)~(ADC_CTL0_RWDEN | ADC_CTL0_IWDEN | ADC_CTL0_WDSC | ADC_CTL0_WDCHSEL); +} + +/*! + \brief configure ADC analog watchdog threshold + \param[in] adc_periph: ADCx, x=0,1 + \param[in] low_threshold: analog watchdog low threshold, 0..4095 + \param[in] high_threshold: analog watchdog high threshold, 0..4095 + \param[out] none + \retval none +*/ +void adc_watchdog_threshold_config(uint32_t adc_periph, uint16_t low_threshold, uint16_t high_threshold) +{ + ADC_WDLT(adc_periph) = (uint32_t)WDLT_WDLT(low_threshold); + ADC_WDHT(adc_periph) = (uint32_t)WDHT_WDHT(high_threshold); +} + +/*! + \brief get the ADC flag bits + \param[in] adc_periph: ADCx, x=0,1 + \param[in] adc_flag: the adc flag bits + only one parameter can be selected which is shown as below: + \arg ADC_FLAG_WDE: analog watchdog event flag + \arg ADC_FLAG_EOC: end of group conversion flag + \arg ADC_FLAG_EOIC: end of inserted group conversion flag + \arg ADC_FLAG_STIC: start flag of inserted channel group + \arg ADC_FLAG_STRC: start flag of regular channel group + \param[out] none + \retval FlagStatus: SET or RESET +*/ +FlagStatus adc_flag_get(uint32_t adc_periph, uint32_t adc_flag) +{ + FlagStatus reval = RESET; + if(ADC_STAT(adc_periph) & adc_flag){ + reval = SET; + } + return reval; +} + +/*! + \brief clear the ADC flag bits + \param[in] adc_periph: ADCx, x=0,1 + \param[in] adc_flag: the adc flag bits + one or more parameters can be selected which are shown as below: + \arg ADC_FLAG_WDE: analog watchdog event flag + \arg ADC_FLAG_EOC: end of group conversion flag + \arg ADC_FLAG_EOIC: end of inserted group conversion flag + \arg ADC_FLAG_STIC: start flag of inserted channel group + \arg ADC_FLAG_STRC: start flag of regular channel group + \param[out] none + \retval none +*/ +void adc_flag_clear(uint32_t adc_periph, uint32_t adc_flag) +{ + ADC_STAT(adc_periph) &= ~((uint32_t)adc_flag); +} + +/*! + \brief get the bit state of ADCx software start conversion + \param[in] adc_periph: ADCx, x=0,1 + \param[in] none + \param[out] none + \retval FlagStatus: SET or RESET +*/ +FlagStatus adc_regular_software_startconv_flag_get(uint32_t adc_periph) +{ + FlagStatus reval = RESET; + if((uint32_t)RESET != (ADC_CTL1(adc_periph) & ADC_CTL1_SWRCST)){ + reval = SET; + } + return reval; +} + +/*! + \brief get the bit state of ADCx software inserted channel start conversion + \param[in] adc_periph: ADCx, x=0,1 + \param[in] none + \param[out] none + \retval FlagStatus: SET or RESET +*/ +FlagStatus adc_inserted_software_startconv_flag_get(uint32_t adc_periph) +{ + FlagStatus reval = RESET; + if((uint32_t)RESET != (ADC_CTL1(adc_periph) & ADC_CTL1_SWICST)){ + reval = SET; + } + return reval; +} + +/*! + \brief get the ADC interrupt bits + \param[in] adc_periph: ADCx, x=0,1 + \param[in] adc_interrupt: the adc interrupt bits + only one parameter can be selected which is shown as below: + \arg ADC_INT_FLAG_WDE: analog watchdog interrupt + \arg ADC_INT_FLAG_EOC: end of group conversion interrupt + \arg ADC_INT_FLAG_EOIC: end of inserted group conversion interrupt + \param[out] none + \retval FlagStatus: SET or RESET +*/ +FlagStatus adc_interrupt_flag_get(uint32_t adc_periph, uint32_t adc_interrupt) +{ + FlagStatus interrupt_flag = RESET; + uint32_t state; + /* check the interrupt bits */ + switch(adc_interrupt){ + case ADC_INT_FLAG_WDE: + /* get the ADC analog watchdog interrupt bits */ + state = ADC_STAT(adc_periph) & ADC_STAT_WDE; + if((ADC_CTL0(adc_periph) & ADC_CTL0_WDEIE) && state){ + interrupt_flag = SET; + } + break; + case ADC_INT_FLAG_EOC: + /* get the ADC end of group conversion interrupt bits */ + state = ADC_STAT(adc_periph) & ADC_STAT_EOC; + if((ADC_CTL0(adc_periph) & ADC_CTL0_EOCIE) && state){ + interrupt_flag = SET; + } + break; + case ADC_INT_FLAG_EOIC: + /* get the ADC end of inserted group conversion interrupt bits */ + state = ADC_STAT(adc_periph) & ADC_STAT_EOIC; + if((ADC_CTL0(adc_periph) & ADC_CTL0_EOICIE) && state){ + interrupt_flag = SET; + } + break; + default: + break; + } + return interrupt_flag; +} + +/*! + \brief clear the ADC flag + \param[in] adc_periph: ADCx, x=0,1 + \param[in] adc_interrupt: the adc status flag + one or more parameters can be selected which are shown as below: + \arg ADC_INT_FLAG_WDE: analog watchdog interrupt + \arg ADC_INT_FLAG_EOC: end of group conversion interrupt + \arg ADC_INT_FLAG_EOIC: end of inserted group conversion interrupt + \param[out] none + \retval none +*/ +void adc_interrupt_flag_clear(uint32_t adc_periph, uint32_t adc_interrupt) +{ + ADC_STAT(adc_periph) &= ~((uint32_t)adc_interrupt); +} + +/*! + \brief enable ADC interrupt + \param[in] adc_periph: ADCx, x=0,1 + \param[in] adc_interrupt: the adc interrupt + one or more parameters can be selected which are shown as below: + \arg ADC_INT_WDE: analog watchdog interrupt flag + \arg ADC_INT_EOC: end of group conversion interrupt flag + \arg ADC_INT_EOIC: end of inserted group conversion interrupt flag + \param[out] none + \retval none +*/ +void adc_interrupt_enable(uint32_t adc_periph, uint32_t adc_interrupt) +{ + /* enable ADC analog watchdog interrupt */ + if(0U != (adc_interrupt & ADC_INT_WDE)){ + ADC_CTL0(adc_periph) |= (uint32_t) ADC_CTL0_WDEIE; + } + /* enable ADC end of group conversion interrupt */ + if(0U != (adc_interrupt & ADC_INT_EOC)){ + ADC_CTL0(adc_periph) |= (uint32_t) ADC_CTL0_EOCIE; + } + /* enable ADC end of inserted group conversion interrupt */ + if(0U != (adc_interrupt & ADC_INT_EOIC)){ + ADC_CTL0(adc_periph) |= (uint32_t) ADC_CTL0_EOICIE; + } +} + +/*! + \brief disable ADC interrupt + \param[in] adc_periph: ADCx, x=0,1 + \param[in] adc_interrupt: the adc interrupt flag + one or more parameters can be selected which are shown as below: + \arg ADC_INT_WDE: analog watchdog interrupt flag + \arg ADC_INT_EOC: end of group conversion interrupt flag + \arg ADC_INT_EOIC: end of inserted group conversion interrupt flag + \param[out] none + \retval none +*/ +void adc_interrupt_disable(uint32_t adc_periph, uint32_t adc_interrupt) +{ + /* disable ADC analog watchdog interrupt */ + if(0U != (adc_interrupt & ADC_INT_WDE)){ + ADC_CTL0(adc_periph) &= ~(uint32_t) ADC_CTL0_WDEIE; + } + /* disable ADC end of group conversion interrupt */ + if(0U != (adc_interrupt & ADC_INT_EOC)){ + ADC_CTL0(adc_periph) &= ~(uint32_t) ADC_CTL0_EOCIE; + } + /* disable ADC end of inserted group conversion interrupt */ + if(0U != (adc_interrupt & ADC_INT_EOIC)){ + ADC_CTL0(adc_periph) &= ~(uint32_t) ADC_CTL0_EOICIE; + } +} + +/*! + \brief adc resolution config + \param[in] adc_periph: ADCx, x=0,1 + \param[in] resolution: ADC resolution + only one parameter can be selected which is shown as below: + \arg ADC_RESOLUTION_12B: 12-bit ADC resolution + \arg ADC_RESOLUTION_10B: 10-bit ADC resolution + \arg ADC_RESOLUTION_8B: 8-bit ADC resolution + \arg ADC_RESOLUTION_6B: 6-bit ADC resolution + \param[out] none + \retval none +*/ +void adc_resolution_config(uint32_t adc_periph, uint32_t resolution) +{ + ADC_OVSCR(adc_periph) &= ~((uint32_t)ADC_OVSCR_DRES); + ADC_OVSCR(adc_periph) |= (uint32_t)resolution; +} + +/*! + \brief adc oversample mode config + \param[in] adc_periph: ADCx, x=0,1 + \param[in] mode: ADC oversampling mode + only one parameter can be selected which is shown as below: + \arg ADC_OVERSAMPLING_ALL_CONVERT: all oversampled conversions for a channel + are done consecutively after a trigger + \arg ADC_OVERSAMPLING_ONE_CONVERT: each oversampled conversion for a channel + needs a trigger + \param[in] shift: ADC oversampling shift + only one parameter can be selected which is shown as below: + \arg ADC_OVERSAMPLING_SHIFT_NONE: no oversampling shift + \arg ADC_OVERSAMPLING_SHIFT_1B: 1-bit oversampling shift + \arg ADC_OVERSAMPLING_SHIFT_2B: 2-bit oversampling shift + \arg ADC_OVERSAMPLING_SHIFT_3B: 3-bit oversampling shift + \arg ADC_OVERSAMPLING_SHIFT_4B: 3-bit oversampling shift + \arg ADC_OVERSAMPLING_SHIFT_5B: 5-bit oversampling shift + \arg ADC_OVERSAMPLING_SHIFT_6B: 6-bit oversampling shift + \arg ADC_OVERSAMPLING_SHIFT_7B: 7-bit oversampling shift + \arg ADC_OVERSAMPLING_SHIFT_8B: 8-bit oversampling shift + \param[in] ratio: ADC oversampling ratio + only one parameter can be selected which is shown as below: + \arg ADC_OVERSAMPLING_RATIO_MUL2: oversampling ratio X2 + \arg ADC_OVERSAMPLING_RATIO_MUL4: oversampling ratio X4 + \arg ADC_OVERSAMPLING_RATIO_MUL8: oversampling ratio X8 + \arg ADC_OVERSAMPLING_RATIO_MUL16: oversampling ratio X16 + \arg ADC_OVERSAMPLING_RATIO_MUL32: oversampling ratio X32 + \arg ADC_OVERSAMPLING_RATIO_MUL64: oversampling ratio X64 + \arg ADC_OVERSAMPLING_RATIO_MUL128: oversampling ratio X128 + \arg ADC_OVERSAMPLING_RATIO_MUL256: oversampling ratio X256 + \param[out] none + \retval none +*/ +void adc_oversample_mode_config(uint32_t adc_periph, uint8_t mode, uint16_t shift,uint8_t ratio) +{ + if(mode){ + ADC_OVSCR(adc_periph) |= (uint32_t)ADC_OVSCR_TOVS; + }else{ + ADC_OVSCR(adc_periph) &= ~((uint32_t)ADC_OVSCR_TOVS); + } + /* config the shift and ratio */ + ADC_OVSCR(adc_periph) &= ~((uint32_t)(ADC_OVSCR_OVSR | ADC_OVSCR_OVSS)); + ADC_OVSCR(adc_periph) |= ((uint32_t)shift | (uint32_t)ratio); +} + +/*! + \brief enable ADC oversample mode + \param[in] adc_periph: ADCx, x=0,1 + \param[out] none + \retval none +*/ +void adc_oversample_mode_enable(uint32_t adc_periph) +{ + ADC_OVSCR(adc_periph) |= ADC_OVSCR_OVSEN; +} + +/*! + \brief disable ADC oversample mode + \param[in] adc_periph: ADCx, x=0,1 + \param[out] none + \retval none +*/ +void adc_oversample_mode_disable(uint32_t adc_periph) +{ + ADC_OVSCR(adc_periph) &= ~((uint32_t)ADC_OVSCR_OVSEN); +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_bkp.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_bkp.c new file mode 100644 index 0000000000..c0eeb2a892 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_bkp.c @@ -0,0 +1,293 @@ +/*! + \file gd32vf103_bkp.c + \brief BKP driver + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "gd32vf103_bkp.h" + +/* BKP register bits offset */ +#define BKP_TAMPER_BITS_OFFSET ((uint32_t)8U) + +/*! + \brief reset BKP registers + \param[in] none + \param[out] none + \retval none +*/ +void bkp_deinit(void) +{ + /* reset BKP domain register*/ + rcu_bkp_reset_enable(); + rcu_bkp_reset_disable(); +} + +/*! + \brief write BKP data register + \param[in] register_number: refer to bkp_data_register_enum + only one parameter can be selected which is shown as below: + \arg BKP_DATA_x(x = 0..41): bkp data register number x + \param[in] data: the data to be write in BKP data register + \param[out] none + \retval none +*/ +void bkp_data_write(bkp_data_register_enum register_number, uint16_t data) +{ + if((register_number >= BKP_DATA_10) && (register_number <= BKP_DATA_41)){ + BKP_DATA10_41((uint32_t)register_number - 1U) = data; + }else if((register_number >= BKP_DATA_0) && (register_number <= BKP_DATA_9)){ + BKP_DATA0_9((uint32_t)register_number - 1U) = data; + }else{ + /* illegal parameters */ + } +} + +/*! + \brief read BKP data register + \param[in] register_number: refer to bkp_data_register_enum + only one parameter can be selected which is shown as below: + \arg BKP_DATA_x(x = 0..41): bkp data register number x + \param[out] none + \retval data of BKP data register +*/ +uint16_t bkp_data_read(bkp_data_register_enum register_number) +{ + uint16_t data = 0U; + + /* get the data from the BKP data register */ + if((register_number >= BKP_DATA_10) && (register_number <= BKP_DATA_41)){ + data = BKP_DATA10_41((uint32_t)register_number - 1U); + }else if((register_number >= BKP_DATA_0) && (register_number <= BKP_DATA_9)){ + data = BKP_DATA0_9((uint32_t)register_number - 1U); + }else{ + /* illegal parameters */ + } + return data; +} + +/*! + \brief enable RTC clock calibration output + \param[in] none + \param[out] none + \retval none +*/ +void bkp_rtc_calibration_output_enable(void) +{ + BKP_OCTL |= (uint16_t)BKP_OCTL_COEN; +} + +/*! + \brief disable RTC clock calibration output + \param[in] none + \param[out] none + \retval none +*/ +void bkp_rtc_calibration_output_disable(void) +{ + BKP_OCTL &= (uint16_t)~BKP_OCTL_COEN; +} + +/*! + \brief enable RTC alarm or second signal output + \param[in] none + \param[out] none + \retval none +*/ +void bkp_rtc_signal_output_enable(void) +{ + BKP_OCTL |= (uint16_t)BKP_OCTL_ASOEN; +} + +/*! + \brief disable RTC alarm or second signal output + \param[in] none + \param[out] none + \retval none +*/ +void bkp_rtc_signal_output_disable(void) +{ + BKP_OCTL &= (uint16_t)~BKP_OCTL_ASOEN; +} + +/*! + \brief select RTC output + \param[in] outputsel: RTC output selection + only one parameter can be selected which is shown as below: + \arg RTC_OUTPUT_ALARM_PULSE: RTC alarm pulse is selected as the RTC output + \arg RTC_OUTPUT_SECOND_PULSE: RTC second pulse is selected as the RTC output + \param[out] none + \retval none +*/ +void bkp_rtc_output_select(uint16_t outputsel) +{ + uint16_t ctl = 0U; + + /* configure BKP_OCTL_ROSEL with outputsel */ + ctl = BKP_OCTL; + ctl &= (uint16_t)~BKP_OCTL_ROSEL; + ctl |= outputsel; + BKP_OCTL = ctl; +} + +/*! + \brief set RTC clock calibration value + \param[in] value: RTC clock calibration value + \arg 0x00 - 0x7F + \param[out] none + \retval none +*/ +void bkp_rtc_calibration_value_set(uint8_t value) +{ + uint16_t ctl; + + /* configure BKP_OCTL_RCCV with value */ + ctl = BKP_OCTL; + ctl &= (uint16_t)~BKP_OCTL_RCCV; + ctl |= (uint16_t)OCTL_RCCV(value); + BKP_OCTL = ctl; +} + +/*! + \brief enable tamper detection + \param[in] none + \param[out] none + \retval none +*/ +void bkp_tamper_detection_enable(void) +{ + BKP_TPCTL |= (uint16_t)BKP_TPCTL_TPEN; +} + +/*! + \brief disable tamper detection + \param[in] none + \param[out] none + \retval none +*/ +void bkp_tamper_detection_disable(void) +{ + BKP_TPCTL &= (uint16_t)~BKP_TPCTL_TPEN; +} + +/*! + \brief set tamper pin active level + \param[in] level: tamper active level + only one parameter can be selected which is shown as below: + \arg TAMPER_PIN_ACTIVE_HIGH: the tamper pin is active high + \arg TAMPER_PIN_ACTIVE_LOW: the tamper pin is active low + \param[out] none + \retval none +*/ +void bkp_tamper_active_level_set(uint16_t level) +{ + uint16_t ctl = 0U; + + /* configure BKP_TPCTL_TPAL with level */ + ctl = BKP_TPCTL; + ctl &= (uint16_t)~BKP_TPCTL_TPAL; + ctl |= level; + BKP_TPCTL = ctl; +} + +/*! + \brief enable tamper interrupt + \param[in] none + \param[out] none + \retval none +*/ +void bkp_interrupt_enable(void) +{ + BKP_TPCS |= (uint16_t)BKP_TPCS_TPIE; +} + +/*! + \brief disable tamper interrupt + \param[in] none + \param[out] none + \retval none +*/ +void bkp_interrupt_disable(void) +{ + BKP_TPCS &= (uint16_t)~BKP_TPCS_TPIE; +} + +/*! + \brief get tamper flag state + \param[in] none + \param[out] none + \retval FlagStatus: SET or RESET +*/ +FlagStatus bkp_flag_get(void) +{ + if(BKP_TPCS & BKP_FLAG_TAMPER){ + return SET; + }else{ + return RESET; + } +} + +/*! + \brief clear tamper flag state + \param[in] none + \param[out] none + \retval none +*/ +void bkp_flag_clear(void) +{ + BKP_TPCS |= (uint16_t)(BKP_FLAG_TAMPER >> BKP_TAMPER_BITS_OFFSET); +} + +/*! + \brief get tamper interrupt flag state + \param[in] none + \param[out] none + \retval FlagStatus: SET or RESET +*/ +FlagStatus bkp_interrupt_flag_get(void) +{ + if(BKP_TPCS & BKP_INT_FLAG_TAMPER){ + return SET; + }else{ + return RESET; + } +} + +/*! + \brief clear tamper interrupt flag state + \param[in] none + \param[out] none + \retval none +*/ +void bkp_interrupt_flag_clear(void) +{ + BKP_TPCS |= (uint16_t)(BKP_INT_FLAG_TAMPER >> BKP_TAMPER_BITS_OFFSET); +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_can.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_can.c new file mode 100644 index 0000000000..fd44a52a80 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_can.c @@ -0,0 +1,1018 @@ +/*! + \file gd32vf103_can.c + \brief CAN driver + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2019-11-27, V1.0.1, firmware for GD32VF103 + \version 2020-07-14, V1.0.2, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 + \version 2020-12-14, V1.1.1, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "gd32vf103_can.h" + +#define CAN_ERROR_HANDLE(s) do{}while(1) + +/*! + \brief deinitialize CAN + \param[in] can_periph + \arg CANx(x=0,1) + \param[out] none + \retval none +*/ +void can_deinit(uint32_t can_periph) +{ + if(CAN0 == can_periph){ + rcu_periph_reset_enable(RCU_CAN0RST); + rcu_periph_reset_disable(RCU_CAN0RST); + }else{ + rcu_periph_reset_enable(RCU_CAN1RST); + rcu_periph_reset_disable(RCU_CAN1RST); + } +} + +/*! + \brief initialize CAN parameter struct with a default value + \param[in] type: the type of CAN parameter struct + only one parameter can be selected which is shown as below: + \arg CAN_INIT_STRUCT: the CAN initial struct + \arg CAN_FILTER_STRUCT: the CAN filter struct + \arg CAN_TX_MESSAGE_STRUCT: the CAN TX message struct + \arg CAN_RX_MESSAGE_STRUCT: the CAN RX message struct + \param[in] p_struct: the pointer of the specific struct + \param[out] none + \retval none +*/ +void can_struct_para_init(can_struct_type_enum type, void* p_struct) +{ + uint8_t i; + + /* get type of the struct */ + switch(type){ + /* used for can_init() */ + case CAN_INIT_STRUCT: + ((can_parameter_struct*)p_struct)->auto_bus_off_recovery = DISABLE; + ((can_parameter_struct*)p_struct)->no_auto_retrans = DISABLE; + ((can_parameter_struct*)p_struct)->auto_wake_up = DISABLE; + ((can_parameter_struct*)p_struct)->prescaler = 0x03FFU; + ((can_parameter_struct*)p_struct)->rec_fifo_overwrite = DISABLE; + ((can_parameter_struct*)p_struct)->resync_jump_width = CAN_BT_SJW_1TQ; + ((can_parameter_struct*)p_struct)->time_segment_1 = CAN_BT_BS1_3TQ; + ((can_parameter_struct*)p_struct)->time_segment_2 = CAN_BT_BS2_1TQ; + ((can_parameter_struct*)p_struct)->time_triggered = DISABLE; + ((can_parameter_struct*)p_struct)->trans_fifo_order = DISABLE; + ((can_parameter_struct*)p_struct)->working_mode = CAN_NORMAL_MODE; + + break; + /* used for can_filter_init() */ + case CAN_FILTER_STRUCT: + ((can_filter_parameter_struct*)p_struct)->filter_bits = CAN_FILTERBITS_32BIT; + ((can_filter_parameter_struct*)p_struct)->filter_enable = DISABLE; + ((can_filter_parameter_struct*)p_struct)->filter_fifo_number = CAN_FIFO0; + ((can_filter_parameter_struct*)p_struct)->filter_list_high = 0x0000U; + ((can_filter_parameter_struct*)p_struct)->filter_list_low = 0x0000U; + ((can_filter_parameter_struct*)p_struct)->filter_mask_high = 0x0000U; + ((can_filter_parameter_struct*)p_struct)->filter_mask_low = 0x0000U; + ((can_filter_parameter_struct*)p_struct)->filter_mode = CAN_FILTERMODE_MASK; + ((can_filter_parameter_struct*)p_struct)->filter_number = 0U; + + break; + /* used for can_message_transmit() */ + case CAN_TX_MESSAGE_STRUCT: + for(i = 0U; i < 8U; i++){ + ((can_trasnmit_message_struct*)p_struct)->tx_data[i] = 0U; + } + + ((can_trasnmit_message_struct*)p_struct)->tx_dlen = 0u; + ((can_trasnmit_message_struct*)p_struct)->tx_efid = 0U; + ((can_trasnmit_message_struct*)p_struct)->tx_ff = (uint8_t)CAN_FF_STANDARD; + ((can_trasnmit_message_struct*)p_struct)->tx_ft = (uint8_t)CAN_FT_DATA; + ((can_trasnmit_message_struct*)p_struct)->tx_sfid = 0U; + + break; + /* used for can_message_receive() */ + case CAN_RX_MESSAGE_STRUCT: + for(i = 0U; i < 8U; i++){ + ((can_receive_message_struct*)p_struct)->rx_data[i] = 0U; + } + + ((can_receive_message_struct*)p_struct)->rx_dlen = 0U; + ((can_receive_message_struct*)p_struct)->rx_efid = 0U; + ((can_receive_message_struct*)p_struct)->rx_ff = (uint8_t)CAN_FF_STANDARD; + ((can_receive_message_struct*)p_struct)->rx_fi = 0U; + ((can_receive_message_struct*)p_struct)->rx_ft = (uint8_t)CAN_FT_DATA; + ((can_receive_message_struct*)p_struct)->rx_sfid = 0U; + + break; + + default: + CAN_ERROR_HANDLE("parameter is invalid \r\n"); + } +} + +/*! + \brief initialize CAN + \param[in] can_periph + \arg CANx(x=0,1) + \param[in] can_parameter_init: parameters for CAN initializtion + \arg working_mode: CAN_NORMAL_MODE, CAN_LOOPBACK_MODE, CAN_SILENT_MODE, CAN_SILENT_LOOPBACK_MODE + \arg resync_jump_width: CAN_BT_SJW_xTQ(x=1, 2, 3, 4) + \arg time_segment_1: CAN_BT_BS1_xTQ(1..16) + \arg time_segment_2: CAN_BT_BS2_xTQ(1..8) + \arg time_triggered: ENABLE or DISABLE + \arg auto_bus_off_recovery: ENABLE or DISABLE + \arg auto_wake_up: ENABLE or DISABLE + \arg no_auto_retrans: ENABLE or DISABLE + \arg rec_fifo_overwrite: ENABLE or DISABLE + \arg trans_fifo_order: ENABLE or DISABLE + \arg prescaler: 0x0001 - 0x0400 + \param[out] none + \retval ErrStatus: SUCCESS or ERROR +*/ +ErrStatus can_init(uint32_t can_periph, can_parameter_struct* can_parameter_init) +{ + uint32_t timeout = CAN_TIMEOUT; + ErrStatus flag = ERROR; + + /* disable sleep mode */ + CAN_CTL(can_periph) &= ~CAN_CTL_SLPWMOD; + /* enable initialize mode */ + CAN_CTL(can_periph) |= CAN_CTL_IWMOD; + /* wait ACK */ + while((CAN_STAT_IWS != (CAN_STAT(can_periph) & CAN_STAT_IWS)) && (0U != timeout)){ + timeout--; + } + /* check initialize working success */ + if(CAN_STAT_IWS != (CAN_STAT(can_periph) & CAN_STAT_IWS)){ + flag = ERROR; + }else{ + /* set the bit timing register */ + CAN_BT(can_periph) = (BT_MODE((uint32_t)can_parameter_init->working_mode) | \ + BT_SJW((uint32_t)can_parameter_init->resync_jump_width) | \ + BT_BS1((uint32_t)can_parameter_init->time_segment_1) | \ + BT_BS2((uint32_t)can_parameter_init->time_segment_2) | \ + BT_BAUDPSC(((uint32_t)(can_parameter_init->prescaler) - 1U))); + + /* time trigger communication mode */ + if(ENABLE == can_parameter_init->time_triggered){ + CAN_CTL(can_periph) |= CAN_CTL_TTC; + }else{ + CAN_CTL(can_periph) &= ~CAN_CTL_TTC; + } + /* automatic bus-off managment */ + if(ENABLE == can_parameter_init->auto_bus_off_recovery){ + CAN_CTL(can_periph) |= CAN_CTL_ABOR; + }else{ + CAN_CTL(can_periph) &= ~CAN_CTL_ABOR; + } + /* automatic wakeup mode */ + if(ENABLE == can_parameter_init->auto_wake_up){ + CAN_CTL(can_periph) |= CAN_CTL_AWU; + }else{ + CAN_CTL(can_periph) &= ~CAN_CTL_AWU; + } + /* automatic retransmission mode disable */ + if(ENABLE == can_parameter_init->no_auto_retrans){ + CAN_CTL(can_periph) |= CAN_CTL_ARD; + }else{ + CAN_CTL(can_periph) &= ~CAN_CTL_ARD; + } + /* receive fifo overwrite mode */ + if(ENABLE == can_parameter_init->rec_fifo_overwrite){ + CAN_CTL(can_periph) |= CAN_CTL_RFOD; + }else{ + CAN_CTL(can_periph) &= ~CAN_CTL_RFOD; + } + /* transmit fifo order */ + if(ENABLE == can_parameter_init->trans_fifo_order){ + CAN_CTL(can_periph) |= CAN_CTL_TFO; + }else{ + CAN_CTL(can_periph) &= ~CAN_CTL_TFO; + } + /* disable initialize mode */ + CAN_CTL(can_periph) &= ~CAN_CTL_IWMOD; + timeout = CAN_TIMEOUT; + /* wait the ACK */ + while((CAN_STAT_IWS == (CAN_STAT(can_periph) & CAN_STAT_IWS)) && (0U != timeout)){ + timeout--; + } + /* check exit initialize mode */ + if(0U != timeout){ + flag = SUCCESS; + } + } + return flag; +} + +/*! + \brief initialize CAN filter + \param[in] can_filter_parameter_init: struct for CAN filter initialization + \arg filter_list_high: 0x0000 - 0xFFFF + \arg filter_list_low: 0x0000 - 0xFFFF + \arg filter_mask_high: 0x0000 - 0xFFFF + \arg filter_mask_low: 0x0000 - 0xFFFF + \arg filter_fifo_number: CAN_FIFO0, CAN_FIFO1 + \arg filter_number: 0 - 27 + \arg filter_mode: CAN_FILTERMODE_MASK, CAN_FILTERMODE_LIST + \arg filter_bits: CAN_FILTERBITS_32BIT, CAN_FILTERBITS_16BIT + \arg filter_enable: ENABLE or DISABLE + \param[out] none + \retval none +*/ +void can_filter_init(can_filter_parameter_struct* can_filter_parameter_init) +{ + uint32_t val = 0U; + + val = ((uint32_t)1) << (can_filter_parameter_init->filter_number); + /* filter lock disable */ + CAN_FCTL(CAN0) |= CAN_FCTL_FLD; + /* disable filter */ + CAN_FW(CAN0) &= ~(uint32_t)val; + + /* filter 16 bits */ + if(CAN_FILTERBITS_16BIT == can_filter_parameter_init->filter_bits){ + /* set filter 16 bits */ + CAN_FSCFG(CAN0) &= ~(uint32_t)val; + /* first 16 bits list and first 16 bits mask or first 16 bits list and second 16 bits list */ + CAN_FDATA0(CAN0, can_filter_parameter_init->filter_number) = \ + FDATA_MASK_HIGH((can_filter_parameter_init->filter_mask_low) & CAN_FILTER_MASK_16BITS) | \ + FDATA_MASK_LOW((can_filter_parameter_init->filter_list_low) & CAN_FILTER_MASK_16BITS); + /* second 16 bits list and second 16 bits mask or third 16 bits list and fourth 16 bits list */ + CAN_FDATA1(CAN0, can_filter_parameter_init->filter_number) = \ + FDATA_MASK_HIGH((can_filter_parameter_init->filter_mask_high) & CAN_FILTER_MASK_16BITS) | \ + FDATA_MASK_LOW((can_filter_parameter_init->filter_list_high) & CAN_FILTER_MASK_16BITS); + } + /* filter 32 bits */ + if(CAN_FILTERBITS_32BIT == can_filter_parameter_init->filter_bits){ + /* set filter 32 bits */ + CAN_FSCFG(CAN0) |= (uint32_t)val; + /* 32 bits list or first 32 bits list */ + CAN_FDATA0(CAN0, can_filter_parameter_init->filter_number) = \ + FDATA_MASK_HIGH((can_filter_parameter_init->filter_list_high) & CAN_FILTER_MASK_16BITS) | + FDATA_MASK_LOW((can_filter_parameter_init->filter_list_low) & CAN_FILTER_MASK_16BITS); + /* 32 bits mask or second 32 bits list */ + CAN_FDATA1(CAN0, can_filter_parameter_init->filter_number) = \ + FDATA_MASK_HIGH((can_filter_parameter_init->filter_mask_high) & CAN_FILTER_MASK_16BITS) | + FDATA_MASK_LOW((can_filter_parameter_init->filter_mask_low) & CAN_FILTER_MASK_16BITS); + } + + /* filter mode */ + if(CAN_FILTERMODE_MASK == can_filter_parameter_init->filter_mode){ + /* mask mode */ + CAN_FMCFG(CAN0) &= ~(uint32_t)val; + }else{ + /* list mode */ + CAN_FMCFG(CAN0) |= (uint32_t)val; + } + + /* filter FIFO */ + if(CAN_FIFO0 == (can_filter_parameter_init->filter_fifo_number)){ + /* FIFO0 */ + CAN_FAFIFO(CAN0) &= ~(uint32_t)val; + }else{ + /* FIFO1 */ + CAN_FAFIFO(CAN0) |= (uint32_t)val; + } + + /* filter working */ + if(ENABLE == can_filter_parameter_init->filter_enable){ + + CAN_FW(CAN0) |= (uint32_t)val; + } + + /* filter lock enable */ + CAN_FCTL(CAN0) &= ~CAN_FCTL_FLD; +} + +/*! + \brief set CAN1 fliter start bank number + \param[in] start_bank: CAN1 start bank number + only one parameter can be selected which is shown as below: + \arg (1..27) + \param[out] none + \retval none +*/ +void can1_filter_start_bank(uint8_t start_bank) +{ + /* filter lock disable */ + CAN_FCTL(CAN0) |= CAN_FCTL_FLD; + /* set CAN1 filter start number */ + CAN_FCTL(CAN0) &= ~(uint32_t)CAN_FCTL_HBC1F; + CAN_FCTL(CAN0) |= FCTL_HBC1F(start_bank); + /* filter lock enaable */ + CAN_FCTL(CAN0) &= ~CAN_FCTL_FLD; +} + +/*! + \brief enable CAN debug freeze + \param[in] can_periph + \arg CANx(x=0,1) + \param[out] none + \retval none +*/ +void can_debug_freeze_enable(uint32_t can_periph) +{ + /* set DFZ bit */ + CAN_CTL(can_periph) |= CAN_CTL_DFZ; + if(CAN0 == can_periph){ + dbg_periph_enable(DBG_CAN0_HOLD); + }else{ + dbg_periph_enable(DBG_CAN1_HOLD); + } +} + +/*! + \brief disable CAN debug freeze + \param[in] can_periph + \arg CANx(x=0,1) + \param[out] none + \retval none +*/ +void can_debug_freeze_disable(uint32_t can_periph) +{ + /* set DFZ bit */ + CAN_CTL(can_periph) &= ~CAN_CTL_DFZ; + if(CAN0 == can_periph){ + dbg_periph_disable(DBG_CAN0_HOLD); + }else{ + dbg_periph_disable(DBG_CAN1_HOLD); + } +} + +/*! + \brief enable CAN time trigger mode + \param[in] can_periph + \arg CANx(x=0,1) + \param[out] none + \retval none +*/ +void can_time_trigger_mode_enable(uint32_t can_periph) +{ + uint8_t mailbox_number; + + /* enable the tcc mode */ + CAN_CTL(can_periph) |= CAN_CTL_TTC; + /* enable time stamp */ + for(mailbox_number = 0U; mailbox_number < 3U; mailbox_number++){ + CAN_TMP(can_periph, mailbox_number) |= CAN_TMP_TSEN; + } +} + +/*! + \brief disable CAN time trigger mode + \param[in] can_periph + \arg CANx(x=0,1) + \param[out] none + \retval none +*/ +void can_time_trigger_mode_disable(uint32_t can_periph) +{ + uint8_t mailbox_number; + + /* disable the TCC mode */ + CAN_CTL(can_periph) &= ~CAN_CTL_TTC; + /* reset TSEN bits */ + for(mailbox_number = 0U; mailbox_number < 3U; mailbox_number++){ + CAN_TMP(can_periph, mailbox_number) &= ~CAN_TMP_TSEN; + } +} + +/*! + \brief transmit CAN message + \param[in] can_periph + \arg CANx(x=0,1) + \param[in] transmit_message: struct for CAN transmit message + \arg tx_sfid: 0x00000000 - 0x000007FF + \arg tx_efid: 0x00000000 - 0x1FFFFFFF + \arg tx_ff: CAN_FF_STANDARD, CAN_FF_EXTENDED + \arg tx_ft: CAN_FT_DATA, CAN_FT_REMOTE + \arg tx_dlen: 0 - 8 + \arg tx_data[]: 0x00 - 0xFF + \param[out] none + \retval mailbox_number +*/ +uint8_t can_message_transmit(uint32_t can_periph, can_trasnmit_message_struct* transmit_message) +{ + uint8_t mailbox_number = CAN_MAILBOX0; + + /* select one empty mailbox */ + if(CAN_TSTAT_TME0 == (CAN_TSTAT(can_periph)&CAN_TSTAT_TME0)){ + mailbox_number = CAN_MAILBOX0; + }else if(CAN_TSTAT_TME1 == (CAN_TSTAT(can_periph)&CAN_TSTAT_TME1)){ + mailbox_number = CAN_MAILBOX1; + }else if(CAN_TSTAT_TME2 == (CAN_TSTAT(can_periph)&CAN_TSTAT_TME2)){ + mailbox_number = CAN_MAILBOX2; + }else{ + mailbox_number = CAN_NOMAILBOX; + } + /* return no mailbox empty */ + if(CAN_NOMAILBOX == mailbox_number){ + return CAN_NOMAILBOX; + } + + CAN_TMI(can_periph, mailbox_number) &= CAN_TMI_TEN; + if(CAN_FF_STANDARD == transmit_message->tx_ff){ + /* set transmit mailbox standard identifier */ + CAN_TMI(can_periph, mailbox_number) |= (uint32_t)(TMI_SFID(transmit_message->tx_sfid) | \ + transmit_message->tx_ft); + }else{ + /* set transmit mailbox extended identifier */ + CAN_TMI(can_periph, mailbox_number) |= (uint32_t)(TMI_EFID(transmit_message->tx_efid) | \ + transmit_message->tx_ff | \ + transmit_message->tx_ft); + } + /* set the data length */ + CAN_TMP(can_periph, mailbox_number) &= ~CAN_TMP_DLENC; + CAN_TMP(can_periph, mailbox_number) |= transmit_message->tx_dlen; + /* set the data */ + CAN_TMDATA0(can_periph, mailbox_number) = TMDATA0_DB3(transmit_message->tx_data[3]) | \ + TMDATA0_DB2(transmit_message->tx_data[2]) | \ + TMDATA0_DB1(transmit_message->tx_data[1]) | \ + TMDATA0_DB0(transmit_message->tx_data[0]); + CAN_TMDATA1(can_periph, mailbox_number) = TMDATA1_DB7(transmit_message->tx_data[7]) | \ + TMDATA1_DB6(transmit_message->tx_data[6]) | \ + TMDATA1_DB5(transmit_message->tx_data[5]) | \ + TMDATA1_DB4(transmit_message->tx_data[4]); + /* enable transmission */ + CAN_TMI(can_periph, mailbox_number) |= CAN_TMI_TEN; + + return mailbox_number; +} + +/*! + \brief get CAN transmit state + \param[in] can_periph + \arg CANx(x=0,1) + \param[in] mailbox_number + only one parameter can be selected which is shown as below: + \arg CAN_MAILBOX(x=0,1,2) + \param[out] none + \retval can_transmit_state_enum +*/ +can_transmit_state_enum can_transmit_states(uint32_t can_periph, uint8_t mailbox_number) +{ + can_transmit_state_enum state = CAN_TRANSMIT_FAILED; + uint32_t val = 0U; + + /* check selected mailbox state */ + switch(mailbox_number){ + /* mailbox0 */ + case CAN_MAILBOX0: + val = CAN_TSTAT(can_periph) & (CAN_TSTAT_MTF0 | CAN_TSTAT_MTFNERR0 | CAN_TSTAT_TME0); + break; + /* mailbox1 */ + case CAN_MAILBOX1: + val = CAN_TSTAT(can_periph) & (CAN_TSTAT_MTF1 | CAN_TSTAT_MTFNERR1 | CAN_TSTAT_TME1); + break; + /* mailbox2 */ + case CAN_MAILBOX2: + val = CAN_TSTAT(can_periph) & (CAN_TSTAT_MTF2 | CAN_TSTAT_MTFNERR2 | CAN_TSTAT_TME2); + break; + default: + val = CAN_TRANSMIT_FAILED; + break; + } + + switch(val){ + /* transmit pending */ + case (CAN_STATE_PENDING): + state = CAN_TRANSMIT_PENDING; + break; + /* mailbox0 transmit succeeded */ + case (CAN_TSTAT_MTF0 | CAN_TSTAT_MTFNERR0 | CAN_TSTAT_TME0): + state = CAN_TRANSMIT_OK; + break; + /* mailbox1 transmit succeeded */ + case (CAN_TSTAT_MTF1 | CAN_TSTAT_MTFNERR1 | CAN_TSTAT_TME1): + state = CAN_TRANSMIT_OK; + break; + /* mailbox2 transmit succeeded */ + case (CAN_TSTAT_MTF2 | CAN_TSTAT_MTFNERR2 | CAN_TSTAT_TME2): + state = CAN_TRANSMIT_OK; + break; + /* transmit failed */ + default: + state = CAN_TRANSMIT_FAILED; + break; + } + return state; +} + +/*! + \brief stop CAN transmission + \param[in] can_periph + \arg CANx(x=0,1) + \param[in] mailbox_number + only one parameter can be selected which is shown as below: + \arg CAN_MAILBOXx(x=0,1,2) + \param[out] none + \retval none +*/ +void can_transmission_stop(uint32_t can_periph, uint8_t mailbox_number) +{ + if(CAN_MAILBOX0 == mailbox_number){ + CAN_TSTAT(can_periph) |= CAN_TSTAT_MST0; + while(CAN_TSTAT_MST0 == (CAN_TSTAT(can_periph) & CAN_TSTAT_MST0)){ + } + }else if(CAN_MAILBOX1 == mailbox_number){ + CAN_TSTAT(can_periph) |= CAN_TSTAT_MST1; + while(CAN_TSTAT_MST1 == (CAN_TSTAT(can_periph) & CAN_TSTAT_MST1)){ + } + }else if(CAN_MAILBOX2 == mailbox_number){ + CAN_TSTAT(can_periph) |= CAN_TSTAT_MST2; + while(CAN_TSTAT_MST2 == (CAN_TSTAT(can_periph) & CAN_TSTAT_MST2)){ + } + }else{ + /* illegal parameters */ + } +} + +/*! + \brief CAN receive message + \param[in] can_periph + \arg CANx(x=0,1) + \param[in] fifo_number + \arg CAN_FIFOx(x=0,1) + \param[out] receive_message: struct for CAN receive message + \arg rx_sfid: 0x00000000 - 0x000007FF + \arg rx_efid: 0x00000000 - 0x1FFFFFFF + \arg rx_ff: CAN_FF_STANDARD, CAN_FF_EXTENDED + \arg rx_ft: CAN_FT_DATA, CAN_FT_REMOTE + \arg rx_dlen: 0 - 8 + \arg rx_data[]: 0x00 - 0xFF + \arg rx_fi: 0 - 27 + \retval none +*/ +void can_message_receive(uint32_t can_periph, uint8_t fifo_number, can_receive_message_struct* receive_message) +{ + /* get the frame format */ + receive_message->rx_ff = (uint8_t)(CAN_RFIFOMI_FF & CAN_RFIFOMI(can_periph, fifo_number)); + if(CAN_FF_STANDARD == receive_message->rx_ff){ + /* get standard identifier */ + receive_message->rx_sfid = (uint32_t)(GET_RFIFOMI_SFID(CAN_RFIFOMI(can_periph, fifo_number))); + }else{ + /* get extended identifier */ + receive_message->rx_efid = (uint32_t)(GET_RFIFOMI_EFID(CAN_RFIFOMI(can_periph, fifo_number))); + } + + /* get frame type */ + receive_message->rx_ft = (uint8_t)(CAN_RFIFOMI_FT & CAN_RFIFOMI(can_periph, fifo_number)); + /* filtering index */ + receive_message->rx_fi = (uint8_t)(GET_RFIFOMP_FI(CAN_RFIFOMP(can_periph, fifo_number))); + /* get recevie data length */ + receive_message->rx_dlen = (uint8_t)(GET_RFIFOMP_DLENC(CAN_RFIFOMP(can_periph, fifo_number))); + + /* receive data */ + receive_message -> rx_data[0] = (uint8_t)(GET_RFIFOMDATA0_DB0(CAN_RFIFOMDATA0(can_periph, fifo_number))); + receive_message -> rx_data[1] = (uint8_t)(GET_RFIFOMDATA0_DB1(CAN_RFIFOMDATA0(can_periph, fifo_number))); + receive_message -> rx_data[2] = (uint8_t)(GET_RFIFOMDATA0_DB2(CAN_RFIFOMDATA0(can_periph, fifo_number))); + receive_message -> rx_data[3] = (uint8_t)(GET_RFIFOMDATA0_DB3(CAN_RFIFOMDATA0(can_periph, fifo_number))); + receive_message -> rx_data[4] = (uint8_t)(GET_RFIFOMDATA1_DB4(CAN_RFIFOMDATA1(can_periph, fifo_number))); + receive_message -> rx_data[5] = (uint8_t)(GET_RFIFOMDATA1_DB5(CAN_RFIFOMDATA1(can_periph, fifo_number))); + receive_message -> rx_data[6] = (uint8_t)(GET_RFIFOMDATA1_DB6(CAN_RFIFOMDATA1(can_periph, fifo_number))); + receive_message -> rx_data[7] = (uint8_t)(GET_RFIFOMDATA1_DB7(CAN_RFIFOMDATA1(can_periph, fifo_number))); + + /* release FIFO */ + if(CAN_FIFO0 == fifo_number){ + CAN_RFIFO0(can_periph) |= CAN_RFIFO0_RFD0; + }else{ + CAN_RFIFO1(can_periph) |= CAN_RFIFO1_RFD1; + } +} + +/*! + \brief release FIFO0 + \param[in] can_periph + \arg CANx(x=0,1) + \param[in] fifo_number + only one parameter can be selected which is shown as below: + \arg CAN_FIFOx(x=0,1) + \param[out] none + \retval none +*/ +void can_fifo_release(uint32_t can_periph, uint8_t fifo_number) +{ + if(CAN_FIFO0 == fifo_number){ + CAN_RFIFO0(can_periph) |= CAN_RFIFO0_RFD0; + }else if(CAN_FIFO1 == fifo_number){ + CAN_RFIFO1(can_periph) |= CAN_RFIFO1_RFD1; + }else{ + /* illegal parameters */ + CAN_ERROR_HANDLE("CAN FIFO NUM is invalid \r\n"); + } +} + +/*! + \brief CAN receive message length + \param[in] can_periph + \arg CANx(x=0,1) + \param[in] fifo_number + only one parameter can be selected which is shown as below: + \arg CAN_FIFOx(x=0,1) + \param[out] none + \retval message length +*/ +uint8_t can_receive_message_length_get(uint32_t can_periph, uint8_t fifo_number) +{ + uint8_t val = 0U; + + if(CAN_FIFO0 == fifo_number){ + /* FIFO0 */ + val = (uint8_t)(CAN_RFIFO0(can_periph) & CAN_RFIF_RFL_MASK); + }else if(CAN_FIFO1 == fifo_number){ + /* FIFO1 */ + val = (uint8_t)(CAN_RFIFO1(can_periph) & CAN_RFIF_RFL_MASK); + }else{ + /* illegal parameters */ + } + return val; +} + +/*! + \brief set CAN working mode + \param[in] can_periph + \arg CANx(x=0,1) + \param[in] can_working_mode + only one parameter can be selected which is shown as below: + \arg CAN_MODE_INITIALIZE + \arg CAN_MODE_NORMAL + \arg CAN_MODE_SLEEP + \param[out] none + \retval ErrStatus: SUCCESS or ERROR +*/ +ErrStatus can_working_mode_set(uint32_t can_periph, uint8_t working_mode) +{ + ErrStatus flag = ERROR; + /* timeout for IWS or also for SLPWS bits */ + uint32_t timeout = CAN_TIMEOUT; + + if(CAN_MODE_INITIALIZE == working_mode){ + /* disable sleep mode */ + CAN_CTL(can_periph) &= (~(uint32_t)CAN_CTL_SLPWMOD); + /* set initialize mode */ + CAN_CTL(can_periph) |= (uint8_t)CAN_CTL_IWMOD; + /* wait the acknowledge */ + while((CAN_STAT_IWS != (CAN_STAT(can_periph) & CAN_STAT_IWS)) && (0U != timeout)){ + timeout--; + } + if(CAN_STAT_IWS != (CAN_STAT(can_periph) & CAN_STAT_IWS)){ + flag = ERROR; + }else{ + flag = SUCCESS; + } + }else if(CAN_MODE_NORMAL == working_mode){ + /* enter normal mode */ + CAN_CTL(can_periph) &= ~(uint32_t)(CAN_CTL_SLPWMOD | CAN_CTL_IWMOD); + /* wait the acknowledge */ + while((0U != (CAN_STAT(can_periph) & (CAN_STAT_IWS | CAN_STAT_SLPWS))) && (0U != timeout)){ + timeout--; + } + if(0U != (CAN_STAT(can_periph) & (CAN_STAT_IWS | CAN_STAT_SLPWS))){ + flag = ERROR; + }else{ + flag = SUCCESS; + } + }else if(CAN_MODE_SLEEP == working_mode){ + /* disable initialize mode */ + CAN_CTL(can_periph) &= (~(uint32_t)CAN_CTL_IWMOD); + /* set sleep mode */ + CAN_CTL(can_periph) |= (uint8_t)CAN_CTL_SLPWMOD; + /* wait the acknowledge */ + while((CAN_STAT_SLPWS != (CAN_STAT(can_periph) & CAN_STAT_SLPWS)) && (0U != timeout)){ + timeout--; + } + if(CAN_STAT_SLPWS != (CAN_STAT(can_periph) & CAN_STAT_SLPWS)){ + flag = ERROR; + }else{ + flag = SUCCESS; + } + }else{ + flag = ERROR; + } + return flag; +} + +/*! + \brief wake up CAN + \param[in] can_periph + \arg CANx(x=0,1) + \param[out] none + \retval ErrStatus: SUCCESS or ERROR +*/ +ErrStatus can_wakeup(uint32_t can_periph) +{ + ErrStatus flag = ERROR; + uint32_t timeout = CAN_TIMEOUT; + + /* wakeup */ + CAN_CTL(can_periph) &= ~CAN_CTL_SLPWMOD; + + while((0U != (CAN_STAT(can_periph) & CAN_STAT_SLPWS)) && (0x00U != timeout)){ + timeout--; + } + /* check state */ + if(0U != (CAN_STAT(can_periph) & CAN_STAT_SLPWS)){ + flag = ERROR; + }else{ + flag = SUCCESS; + } + return flag; +} + +/*! + \brief get CAN error type + \param[in] can_periph + \arg CANx(x=0,1) + \param[out] none + \retval can_error_enum + \arg CAN_ERROR_NONE: no error + \arg CAN_ERROR_FILL: fill error + \arg CAN_ERROR_FORMATE: format error + \arg CAN_ERROR_ACK: ACK error + \arg CAN_ERROR_BITRECESSIVE: bit recessive + \arg CAN_ERROR_BITDOMINANTER: bit dominant error + \arg CAN_ERROR_CRC: CRC error + \arg CAN_ERROR_SOFTWARECFG: software configure +*/ +can_error_enum can_error_get(uint32_t can_periph) +{ + can_error_enum error; + error = CAN_ERROR_NONE; + + /* get error type */ + error = (can_error_enum)(GET_ERR_ERRN(CAN_ERR(can_periph))); + return error; +} + +/*! + \brief get CAN receive error number + \param[in] can_periph + \arg CANx(x=0,1) + \param[out] none + \retval error number +*/ +uint8_t can_receive_error_number_get(uint32_t can_periph) +{ + uint8_t val; + + /* get error count */ + val = (uint8_t)(GET_ERR_RECNT(CAN_ERR(can_periph))); + return val; +} + +/*! + \brief get CAN transmit error number + \param[in] can_periph + \arg CANx(x=0,1) + \param[out] none + \retval error number +*/ +uint8_t can_transmit_error_number_get(uint32_t can_periph) +{ + uint8_t val; + + val = (uint8_t)(GET_ERR_TECNT(CAN_ERR(can_periph))); + return val; +} + +/*! + \brief enable CAN interrupt + \param[in] can_periph + \arg CANx(x=0,1) + \param[in] interrupt + one or more parameters can be selected which are shown as below: + \arg CAN_INT_TME: transmit mailbox empty interrupt enable + \arg CAN_INT_RFNE0: receive FIFO0 not empty interrupt enable + \arg CAN_INT_RFF0: receive FIFO0 full interrupt enable + \arg CAN_INT_RFO0: receive FIFO0 overfull interrupt enable + \arg CAN_INT_RFNE1: receive FIFO1 not empty interrupt enable + \arg CAN_INT_RFF1: receive FIFO1 full interrupt enable + \arg CAN_INT_RFO1: receive FIFO1 overfull interrupt enable + \arg CAN_INT_WERR: warning error interrupt enable + \arg CAN_INT_PERR: passive error interrupt enable + \arg CAN_INT_BO: bus-off interrupt enable + \arg CAN_INT_ERRN: error number interrupt enable + \arg CAN_INT_ERR: error interrupt enable + \arg CAN_INT_WU: wakeup interrupt enable + \arg CAN_INT_SLPW: sleep working interrupt enable + \param[out] none + \retval none +*/ +void can_interrupt_enable(uint32_t can_periph, uint32_t interrupt) +{ + CAN_INTEN(can_periph) |= interrupt; +} + +/*! + \brief disable CAN interrupt + \param[in] can_periph + \arg CANx(x=0,1) + \param[in] interrupt + one or more parameters can be selected which are shown as below: + \arg CAN_INT_TME: transmit mailbox empty interrupt enable + \arg CAN_INT_RFNE0: receive FIFO0 not empty interrupt enable + \arg CAN_INT_RFF0: receive FIFO0 full interrupt enable + \arg CAN_INT_RFO0: receive FIFO0 overfull interrupt enable + \arg CAN_INT_RFNE1: receive FIFO1 not empty interrupt enable + \arg CAN_INT_RFF1: receive FIFO1 full interrupt enable + \arg CAN_INT_RFO1: receive FIFO1 overfull interrupt enable + \arg CAN_INT_WERR: warning error interrupt enable + \arg CAN_INT_PERR: passive error interrupt enable + \arg CAN_INT_BO: bus-off interrupt enable + \arg CAN_INT_ERRN: error number interrupt enable + \arg CAN_INT_ERR: error interrupt enable + \arg CAN_INT_WU: wakeup interrupt enable + \arg CAN_INT_SLPW: sleep working interrupt enable + \param[out] none + \retval none +*/ +void can_interrupt_disable(uint32_t can_periph, uint32_t interrupt) +{ + CAN_INTEN(can_periph) &= ~interrupt; +} + +/*! + \brief get CAN flag state + \param[in] can_periph + \arg CANx(x=0,1) + \param[in] flag: CAN flags, refer to can_flag_enum + only one parameter can be selected which is shown as below: + \arg CAN_FLAG_RXL: RX level + \arg CAN_FLAG_LASTRX: last sample value of RX pin + \arg CAN_FLAG_RS: receiving state + \arg CAN_FLAG_TS: transmitting state + \arg CAN_FLAG_SLPIF: status change flag of entering sleep working mode + \arg CAN_FLAG_WUIF: status change flag of wakeup from sleep working mode + \arg CAN_FLAG_ERRIF: error flag + \arg CAN_FLAG_SLPWS: sleep working state + \arg CAN_FLAG_IWS: initial working state + \arg CAN_FLAG_TMLS2: transmit mailbox 2 last sending in Tx FIFO + \arg CAN_FLAG_TMLS1: transmit mailbox 1 last sending in Tx FIFO + \arg CAN_FLAG_TMLS0: transmit mailbox 0 last sending in Tx FIFO + \arg CAN_FLAG_TME2: transmit mailbox 2 empty + \arg CAN_FLAG_TME1: transmit mailbox 1 empty + \arg CAN_FLAG_TME0: transmit mailbox 0 empty + \arg CAN_FLAG_MTE2: mailbox 2 transmit error + \arg CAN_FLAG_MTE1: mailbox 1 transmit error + \arg CAN_FLAG_MTE0: mailbox 0 transmit error + \arg CAN_FLAG_MAL2: mailbox 2 arbitration lost + \arg CAN_FLAG_MAL1: mailbox 1 arbitration lost + \arg CAN_FLAG_MAL0: mailbox 0 arbitration lost + \arg CAN_FLAG_MTFNERR2: mailbox 2 transmit finished with no error + \arg CAN_FLAG_MTFNERR1: mailbox 1 transmit finished with no error + \arg CAN_FLAG_MTFNERR0: mailbox 0 transmit finished with no error + \arg CAN_FLAG_MTF2: mailbox 2 transmit finished + \arg CAN_FLAG_MTF1: mailbox 1 transmit finished + \arg CAN_FLAG_MTF0: mailbox 0 transmit finished + \arg CAN_FLAG_RFO0: receive FIFO0 overfull + \arg CAN_FLAG_RFF0: receive FIFO0 full + \arg CAN_FLAG_RFO1: receive FIFO1 overfull + \arg CAN_FLAG_RFF1: receive FIFO1 full + \arg CAN_FLAG_BOERR: bus-off error + \arg CAN_FLAG_PERR: passive error + \arg CAN_FLAG_WERR: warning error + \param[out] none + \retval FlagStatus: SET or RESET +*/ +FlagStatus can_flag_get(uint32_t can_periph, can_flag_enum flag) +{ + /* get flag and interrupt enable state */ + if(RESET != (CAN_REG_VAL(can_periph, flag) & BIT(CAN_BIT_POS(flag)))){ + return SET; + }else{ + return RESET; + } +} + +/*! + \brief clear CAN flag state + \param[in] can_periph + \arg CANx(x=0,1) + \param[in] flag: CAN flags, refer to can_flag_enum + only one parameter can be selected which is shown as below: + \arg CAN_FLAG_SLPIF: status change flag of entering sleep working mode + \arg CAN_FLAG_WUIF: status change flag of wakeup from sleep working mode + \arg CAN_FLAG_ERRIF: error flag + \arg CAN_FLAG_MTE2: mailbox 2 transmit error + \arg CAN_FLAG_MTE1: mailbox 1 transmit error + \arg CAN_FLAG_MTE0: mailbox 0 transmit error + \arg CAN_FLAG_MAL2: mailbox 2 arbitration lost + \arg CAN_FLAG_MAL1: mailbox 1 arbitration lost + \arg CAN_FLAG_MAL0: mailbox 0 arbitration lost + \arg CAN_FLAG_MTFNERR2: mailbox 2 transmit finished with no error + \arg CAN_FLAG_MTFNERR1: mailbox 1 transmit finished with no error + \arg CAN_FLAG_MTFNERR0: mailbox 0 transmit finished with no error + \arg CAN_FLAG_MTF2: mailbox 2 transmit finished + \arg CAN_FLAG_MTF1: mailbox 1 transmit finished + \arg CAN_FLAG_MTF0: mailbox 0 transmit finished + \arg CAN_FLAG_RFO0: receive FIFO0 overfull + \arg CAN_FLAG_RFF0: receive FIFO0 full + \arg CAN_FLAG_RFO1: receive FIFO1 overfull + \arg CAN_FLAG_RFF1: receive FIFO1 full + \param[out] none + \retval none +*/ +void can_flag_clear(uint32_t can_periph, can_flag_enum flag) +{ + CAN_REG_VAL(can_periph, flag) = BIT(CAN_BIT_POS(flag)); +} + +/*! + \brief get CAN interrupt flag state + \param[in] can_periph + \arg CANx(x=0,1) + \param[in] flag: CAN interrupt flags, refer to can_interrupt_flag_enum + only one parameter can be selected which is shown as below: + \arg CAN_INT_FLAG_SLPIF: status change interrupt flag of sleep working mode entering + \arg CAN_INT_FLAG_WUIF: status change interrupt flag of wakeup from sleep working mode + \arg CAN_INT_FLAG_ERRIF: error interrupt flag + \arg CAN_INT_FLAG_MTF2: mailbox 2 transmit finished interrupt flag + \arg CAN_INT_FLAG_MTF1: mailbox 1 transmit finished interrupt flag + \arg CAN_INT_FLAG_MTF0: mailbox 0 transmit finished interrupt flag + \arg CAN_INT_FLAG_RFO0: receive FIFO0 overfull interrupt flag + \arg CAN_INT_FLAG_RFF0: receive FIFO0 full interrupt flag + \arg CAN_INT_FLAG_RFL0: receive FIFO0 not empty interrupt flag + \arg CAN_INT_FLAG_RFO1: receive FIFO1 overfull interrupt flag + \arg CAN_INT_FLAG_RFF1: receive FIFO1 full interrupt flag + \arg CAN_INT_FLAG_RFL1: receive FIFO1 not empty interrupt flag + \arg CAN_INT_FLAG_ERRN: error number interrupt flag + \arg CAN_INT_FLAG_BOERR: bus-off error interrupt flag + \arg CAN_INT_FLAG_PERR: passive error interrupt flag + \arg CAN_INT_FLAG_WERR: warning error interrupt flag + \param[out] none + \retval FlagStatus: SET or RESET +*/ +FlagStatus can_interrupt_flag_get(uint32_t can_periph, can_interrupt_flag_enum flag) +{ + uint32_t ret1 = RESET; + uint32_t ret2 = RESET; + + /* get the staus of interrupt flag */ + if (flag == CAN_INT_FLAG_RFL0) { + ret1 = can_receive_message_length_get(can_periph, CAN_FIFO0); + } else if (flag == CAN_INT_FLAG_RFL1) { + ret1 = can_receive_message_length_get(can_periph, CAN_FIFO1); + } else if (flag == CAN_INT_FLAG_ERRN) { + ret1 = can_error_get(can_periph); + } else { + ret1 = CAN_REG_VALS(can_periph, flag) & BIT(CAN_BIT_POS0(flag)); + } + /* get the staus of interrupt enale bit */ + ret2 = CAN_INTEN(can_periph) & BIT(CAN_BIT_POS1(flag)); + if(ret1 && ret2){ + return SET; + }else{ + return RESET; + } +} + +/*! + \brief clear CAN interrupt flag state + \param[in] can_periph + \arg CANx(x=0,1) + \param[in] flag: CAN interrupt flags, refer to can_interrupt_flag_enum + only one parameter can be selected which is shown as below: + \arg CAN_INT_FLAG_SLPIF: status change interrupt flag of sleep working mode entering + \arg CAN_INT_FLAG_WUIF: status change interrupt flag of wakeup from sleep working mode + \arg CAN_INT_FLAG_ERRIF: error interrupt flag + \arg CAN_INT_FLAG_MTF2: mailbox 2 transmit finished interrupt flag + \arg CAN_INT_FLAG_MTF1: mailbox 1 transmit finished interrupt flag + \arg CAN_INT_FLAG_MTF0: mailbox 0 transmit finished interrupt flag + \arg CAN_INT_FLAG_RFO0: receive FIFO0 overfull interrupt flag + \arg CAN_INT_FLAG_RFF0: receive FIFO0 full interrupt flag + \arg CAN_INT_FLAG_RFO1: receive FIFO1 overfull interrupt flag + \arg CAN_INT_FLAG_RFF1: receive FIFO1 full interrupt flag + \param[out] none + \retval none +*/ +void can_interrupt_flag_clear(uint32_t can_periph, can_interrupt_flag_enum flag) +{ + CAN_REG_VALS(can_periph, flag) = BIT(CAN_BIT_POS0(flag)); +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_crc.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_crc.c new file mode 100644 index 0000000000..4559327ae4 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_crc.c @@ -0,0 +1,128 @@ +/*! + \file gd32vf103_crc.c + \brief CRC driver + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "gd32vf103_crc.h" + +#define CRC_DATA_RESET_VALUE ((uint32_t)0xFFFFFFFFU) +#define CRC_FDATA_RESET_VALUE ((uint32_t)0x00000000U) + +/*! + \brief deinit CRC calculation unit + \param[in] none + \param[out] none + \retval none +*/ +void crc_deinit(void) +{ + CRC_DATA = CRC_DATA_RESET_VALUE; + CRC_FDATA = CRC_FDATA_RESET_VALUE; + CRC_CTL = (uint32_t)CRC_CTL_RST; +} + +/*! + \brief reset data register(CRC_DATA) to the value of 0xFFFFFFFF + \param[in] none + \param[out] none + \retval none +*/ +void crc_data_register_reset(void) +{ + CRC_CTL |= (uint32_t)CRC_CTL_RST; +} + +/*! + \brief read the value of the data register + \param[in] none + \param[out] none + \retval 32-bit value of the data register +*/ +uint32_t crc_data_register_read(void) +{ + uint32_t data; + data = CRC_DATA; + return (data); +} + +/*! + \brief read the value of the free data register + \param[in] none + \param[out] none + \retval 8-bit value of the free data register +*/ +uint8_t crc_free_data_register_read(void) +{ + uint8_t fdata; + fdata = (uint8_t)CRC_FDATA; + return (fdata); +} + +/*! + \brief write data to the free data register + \param[in] free_data: specified 8-bit data + \param[out] none + \retval none +*/ +void crc_free_data_register_write(uint8_t free_data) +{ + CRC_FDATA = (uint32_t)free_data; +} + +/*! + \brief calculate the CRC value of a 32-bit data + \param[in] sdata: specified 32-bit data + \param[out] none + \retval 32-bit value calculated by CRC +*/ +uint32_t crc_single_data_calculate(uint32_t sdata) +{ + CRC_DATA = sdata; + return (CRC_DATA); +} + +/*! + \brief calculate the CRC value of an array of 32-bit values + \param[in] array: pointer to an array of 32-bit values + \param[in] size: size of the array + \param[out] none + \retval 32-bit value calculated by CRC +*/ +uint32_t crc_block_data_calculate(uint32_t array[], uint32_t size) +{ + uint32_t index; + for(index = 0U; index < size; index++){ + CRC_DATA = array[index]; + } + return (CRC_DATA); +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_dac.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_dac.c new file mode 100644 index 0000000000..7d505a0b06 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_dac.c @@ -0,0 +1,538 @@ +/*! + \file gd32vf103_dac.c + \brief DAC driver + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "gd32vf103_dac.h" + +/* DAC register bit offset */ +#define DAC1_REG_OFFSET ((uint32_t)16U) +#define DH_12BIT_OFFSET ((uint32_t)16U) +#define DH_8BIT_OFFSET ((uint32_t)8U) + +/*! + \brief deinitialize DAC + \param[in] none + \param[out] none + \retval none +*/ +void dac_deinit(void) +{ + rcu_periph_reset_enable(RCU_DACRST); + rcu_periph_reset_disable(RCU_DACRST); +} + +/*! + \brief enable DAC + \param[in] dac_periph: DACx(x = 0,1) + \param[out] none + \retval none +*/ +void dac_enable(uint32_t dac_periph) +{ + if(DAC0 == dac_periph){ + DAC_CTL |= DAC_CTL_DEN0; + }else{ + DAC_CTL |= DAC_CTL_DEN1; + } +} + +/*! + \brief disable DAC + \param[in] dac_periph: DACx(x = 0,1) + \param[out] none + \retval none +*/ +void dac_disable(uint32_t dac_periph) +{ + if(DAC0 == dac_periph){ + DAC_CTL &= ~DAC_CTL_DEN0; + }else{ + DAC_CTL &= ~DAC_CTL_DEN1; + } +} + +/*! + \brief enable DAC DMA function + \param[in] dac_periph: DACx(x = 0,1) + \param[out] none + \retval none +*/ +void dac_dma_enable(uint32_t dac_periph) +{ + if(DAC0 == dac_periph){ + DAC_CTL |= DAC_CTL_DDMAEN0; + }else{ + DAC_CTL |= DAC_CTL_DDMAEN1; + } +} + +/*! + \brief disable DAC DMA function + \param[in] dac_periph: DACx(x = 0,1) + \param[out] none + \retval none +*/ +void dac_dma_disable(uint32_t dac_periph) +{ + if(DAC0 == dac_periph){ + DAC_CTL &= ~DAC_CTL_DDMAEN0; + }else{ + DAC_CTL &= ~DAC_CTL_DDMAEN1; + } +} + +/*! + \brief enable DAC output buffer + \param[in] dac_periph: DACx(x = 0,1) + \param[out] none + \retval none +*/ +void dac_output_buffer_enable(uint32_t dac_periph) +{ + if(DAC0 == dac_periph){ + DAC_CTL &= ~DAC_CTL_DBOFF0; + }else{ + DAC_CTL &= ~DAC_CTL_DBOFF1; + } +} + +/*! + \brief disable DAC output buffer + \param[in] dac_periph: DACx(x = 0,1) + \param[out] none + \retval none +*/ +void dac_output_buffer_disable(uint32_t dac_periph) +{ + if(DAC0 == dac_periph){ + DAC_CTL |= DAC_CTL_DBOFF0; + }else{ + DAC_CTL |= DAC_CTL_DBOFF1; + } +} + +/*! + \brief get DAC output value + \param[in] dac_periph: DACx(x = 0,1) + \param[out] none + \retval DAC output data +*/ +uint16_t dac_output_value_get(uint32_t dac_periph) +{ + uint16_t data = 0U; + if(DAC0 == dac_periph){ + /* store the DAC0 output value */ + data = (uint16_t)DAC0_DO; + }else{ + /* store the DAC1 output value */ + data = (uint16_t)DAC1_DO; + } + return data; +} + +/*! + \brief set the DAC specified data holding register value + \param[in] dac_periph: DACx(x = 0,1) + \param[in] dac_align: data alignment + only one parameter can be selected which is shown as below: + \arg DAC_ALIGN_8B_R: data right 8 bit alignment + \arg DAC_ALIGN_12B_R: data right 12 bit alignment + \arg DAC_ALIGN_12B_L: data left 12 bit alignment + \param[in] data: data to be loaded + \param[out] none + \retval none +*/ +void dac_data_set(uint32_t dac_periph, uint32_t dac_align, uint16_t data) +{ + if(DAC0 == dac_periph){ + switch(dac_align){ + /* data right 12 bit alignment */ + case DAC_ALIGN_12B_R: + DAC0_R12DH = data; + break; + /* data left 12 bit alignment */ + case DAC_ALIGN_12B_L: + DAC0_L12DH = data; + break; + /* data right 8 bit alignment */ + case DAC_ALIGN_8B_R: + DAC0_R8DH = data; + break; + default: + break; + } + }else{ + switch(dac_align){ + /* data right 12 bit alignment */ + case DAC_ALIGN_12B_R: + DAC1_R12DH = data; + break; + /* data left 12 bit alignment */ + case DAC_ALIGN_12B_L: + DAC1_L12DH = data; + break; + /* data right 8 bit alignment */ + case DAC_ALIGN_8B_R: + DAC1_R8DH = data; + break; + default: + break; + } + } +} + +/*! + \brief enable DAC trigger + \param[in] dac_periph: DACx(x = 0,1) + \param[out] none + \retval none +*/ +void dac_trigger_enable(uint32_t dac_periph) +{ + if(DAC0 == dac_periph){ + DAC_CTL |= DAC_CTL_DTEN0; + }else{ + DAC_CTL |= DAC_CTL_DTEN1; + } +} + +/*! + \brief disable DAC trigger + \param[in] dac_periph: DACx(x = 0,1) + \param[out] none + \retval none +*/ +void dac_trigger_disable(uint32_t dac_periph) +{ + if(DAC0 == dac_periph){ + DAC_CTL &= ~DAC_CTL_DTEN0; + }else{ + DAC_CTL &= ~DAC_CTL_DTEN1; + } +} + +/*! + \brief set DAC trigger source + \param[in] dac_periph: DACx(x = 0,1) + \param[in] triggersource: external triggers of DAC + only one parameter can be selected which is shown as below: + \arg DAC_TRIGGER_T1_TRGO: TIMER1 TRGO + \arg DAC_TRIGGER_T2_TRGO: TIMER2 TRGO + \arg DAC_TRIGGER_T3_TRGO: TIMER3 TRGO + \arg DAC_TRIGGER_T4_TRGO: TIMER4 TRGO + \arg DAC_TRIGGER_T5_TRGO: TIMER5 TRGO + \arg DAC_TRIGGER_T6_TRGO: TIMER6 TRGO + \arg DAC_TRIGGER_EXTI_9: EXTI interrupt line9 event + \arg DAC_TRIGGER_SOFTWARE: software trigger + \param[out] none + \retval none +*/ +void dac_trigger_source_config(uint32_t dac_periph,uint32_t triggersource) +{ + if(DAC0 == dac_periph){ + /* configure DAC0 trigger source */ + DAC_CTL &= ~DAC_CTL_DTSEL0; + DAC_CTL |= triggersource; + }else{ + /* configure DAC1 trigger source */ + DAC_CTL &= ~DAC_CTL_DTSEL1; + DAC_CTL |= (triggersource << DAC1_REG_OFFSET); + } +} + +/*! + \brief enable DAC software trigger + \param[in] dac_periph: DACx(x = 0,1) + \retval none +*/ +void dac_software_trigger_enable(uint32_t dac_periph) +{ + if(DAC0 == dac_periph){ + DAC_SWT |= DAC_SWT_SWTR0; + }else{ + DAC_SWT |= DAC_SWT_SWTR1; + } +} + +/*! + \brief disable DAC software trigger + \param[in] dac_periph: DACx(x = 0,1) + \param[out] none + \retval none +*/ +void dac_software_trigger_disable(uint32_t dac_periph) +{ + if(DAC0 == dac_periph){ + DAC_SWT &= ~DAC_SWT_SWTR0; + }else{ + DAC_SWT &= ~DAC_SWT_SWTR1; + } +} + +/*! + \brief configure DAC wave mode + \param[in] dac_periph: DACx(x = 0,1) + \param[in] wave_mode: noise wave mode + only one parameter can be selected which is shown as below: + \arg DAC_WAVE_DISABLE: wave disable + \arg DAC_WAVE_MODE_LFSR: LFSR noise mode + \arg DAC_WAVE_MODE_TRIANGLE: triangle noise mode + \param[out] none + \retval none +*/ +void dac_wave_mode_config(uint32_t dac_periph, uint32_t wave_mode) +{ + if(DAC0 == dac_periph){ + /* configure DAC0 wave mode */ + DAC_CTL &= ~DAC_CTL_DWM0; + DAC_CTL |= wave_mode; + }else{ + /* configure DAC1 wave mode */ + DAC_CTL &= ~DAC_CTL_DWM1; + DAC_CTL |= (wave_mode << DAC1_REG_OFFSET); + } +} + +/*! + \brief configure DAC wave bit width + \param[in] dac_periph: DACx(x = 0,1) + \param[in] bit_width: noise wave bit width + only one parameter can be selected which is shown as below: + \arg DAC_WAVE_BIT_WIDTH_1: bit width of the wave signal is 1 + \arg DAC_WAVE_BIT_WIDTH_2: bit width of the wave signal is 2 + \arg DAC_WAVE_BIT_WIDTH_3: bit width of the wave signal is 3 + \arg DAC_WAVE_BIT_WIDTH_4: bit width of the wave signal is 4 + \arg DAC_WAVE_BIT_WIDTH_5: bit width of the wave signal is 5 + \arg DAC_WAVE_BIT_WIDTH_6: bit width of the wave signal is 6 + \arg DAC_WAVE_BIT_WIDTH_7: bit width of the wave signal is 7 + \arg DAC_WAVE_BIT_WIDTH_8: bit width of the wave signal is 8 + \arg DAC_WAVE_BIT_WIDTH_9: bit width of the wave signal is 9 + \arg DAC_WAVE_BIT_WIDTH_10: bit width of the wave signal is 10 + \arg DAC_WAVE_BIT_WIDTH_11: bit width of the wave signal is 11 + \arg DAC_WAVE_BIT_WIDTH_12: bit width of the wave signal is 12 + \param[out] none + \retval none +*/ +void dac_wave_bit_width_config(uint32_t dac_periph, uint32_t bit_width) +{ + if(DAC0 == dac_periph){ + /* configure DAC0 wave bit width */ + DAC_CTL &= ~DAC_CTL_DWBW0; + DAC_CTL |= bit_width; + }else{ + /* configure DAC1 wave bit width */ + DAC_CTL &= ~DAC_CTL_DWBW1; + DAC_CTL |= (bit_width << DAC1_REG_OFFSET); + } +} + +/*! + \brief configure DAC LFSR noise mode + \param[in] dac_periph: DACx(x = 0,1) + \param[in] unmask_bits: unmask LFSR bits in DAC LFSR noise mode + only one parameter can be selected which is shown as below: + \arg DAC_LFSR_BIT0: unmask the LFSR bit0 + \arg DAC_LFSR_BITS1_0: unmask the LFSR bits[1:0] + \arg DAC_LFSR_BITS2_0: unmask the LFSR bits[2:0] + \arg DAC_LFSR_BITS3_0: unmask the LFSR bits[3:0] + \arg DAC_LFSR_BITS4_0: unmask the LFSR bits[4:0] + \arg DAC_LFSR_BITS5_0: unmask the LFSR bits[5:0] + \arg DAC_LFSR_BITS6_0: unmask the LFSR bits[6:0] + \arg DAC_LFSR_BITS7_0: unmask the LFSR bits[7:0] + \arg DAC_LFSR_BITS8_0: unmask the LFSR bits[8:0] + \arg DAC_LFSR_BITS9_0: unmask the LFSR bits[9:0] + \arg DAC_LFSR_BITS10_0: unmask the LFSR bits[10:0] + \arg DAC_LFSR_BITS11_0: unmask the LFSR bits[11:0] + \param[out] none + \retval none +*/ +void dac_lfsr_noise_config(uint32_t dac_periph, uint32_t unmask_bits) +{ + if(DAC0 == dac_periph){ + /* configure DAC0 LFSR noise mode */ + DAC_CTL &= ~DAC_CTL_DWBW0; + DAC_CTL |= unmask_bits; + }else{ + /* configure DAC1 LFSR noise mode */ + DAC_CTL &= ~DAC_CTL_DWBW1; + DAC_CTL |= (unmask_bits << DAC1_REG_OFFSET); + } +} + +/*! + \brief configure DAC triangle noise mode + \param[in] dac_periph: DACx(x = 0,1) + \param[in] amplitude: triangle amplitude in DAC triangle noise mode + only one parameter can be selected which is shown as below: + \arg DAC_TRIANGLE_AMPLITUDE_1: triangle amplitude is 1 + \arg DAC_TRIANGLE_AMPLITUDE_3: triangle amplitude is 3 + \arg DAC_TRIANGLE_AMPLITUDE_7: triangle amplitude is 7 + \arg DAC_TRIANGLE_AMPLITUDE_15: triangle amplitude is 15 + \arg DAC_TRIANGLE_AMPLITUDE_31: triangle amplitude is 31 + \arg DAC_TRIANGLE_AMPLITUDE_63: triangle amplitude is 63 + \arg DAC_TRIANGLE_AMPLITUDE_127: triangle amplitude is 127 + \arg DAC_TRIANGLE_AMPLITUDE_255: triangle amplitude is 255 + \arg DAC_TRIANGLE_AMPLITUDE_511: triangle amplitude is 511 + \arg DAC_TRIANGLE_AMPLITUDE_1023: triangle amplitude is 1023 + \arg DAC_TRIANGLE_AMPLITUDE_2047: triangle amplitude is 2047 + \arg DAC_TRIANGLE_AMPLITUDE_4095: triangle amplitude is 4095 + \param[out] none + \retval none +*/ +void dac_triangle_noise_config(uint32_t dac_periph, uint32_t amplitude) +{ + if(DAC0 == dac_periph){ + /* configure DAC0 triangle noise mode */ + DAC_CTL &= ~DAC_CTL_DWBW0; + DAC_CTL |= amplitude; + }else{ + /* configure DAC1 triangle noise mode */ + DAC_CTL &= ~DAC_CTL_DWBW1; + DAC_CTL |= (amplitude << DAC1_REG_OFFSET); + } +} + +/*! + \brief enable DAC concurrent mode + \param[in] none + \param[out] none + \retval none +*/ +void dac_concurrent_enable(void) +{ + uint32_t ctl = 0U; + ctl = DAC_CTL_DEN0 | DAC_CTL_DEN1; + DAC_CTL |= (ctl); +} + +/*! + \brief disable DAC concurrent mode + \param[in] none + \param[out] none + \retval none +*/ +void dac_concurrent_disable(void) +{ + uint32_t ctl = 0U; + ctl = DAC_CTL_DEN0 | DAC_CTL_DEN1; + DAC_CTL &= (~ctl); +} + +/*! + \brief enable DAC concurrent software trigger function + \param[in] none + \param[out] none + \retval none +*/ +void dac_concurrent_software_trigger_enable(void) +{ + uint32_t swt = 0U; + swt = DAC_SWT_SWTR0 | DAC_SWT_SWTR1; + DAC_SWT |= (swt); +} + +/*! + \brief disable DAC concurrent software trigger function + \param[in] none + \param[out] none + \retval none +*/ +void dac_concurrent_software_trigger_disable(void) +{ + uint32_t swt = 0U; + swt = DAC_SWT_SWTR0 | DAC_SWT_SWTR1; + DAC_SWT &= (~swt); +} + +/*! + \brief enable DAC concurrent buffer function + \param[in] none + \param[out] none + \retval none +*/ +void dac_concurrent_output_buffer_enable(void) +{ + uint32_t ctl = 0U; + ctl = DAC_CTL_DBOFF0 | DAC_CTL_DBOFF1; + DAC_CTL &= (~ctl); +} + +/*! + \brief disable DAC concurrent buffer function + \param[in] none + \param[out] none + \retval none +*/ +void dac_concurrent_output_buffer_disable(void) +{ + uint32_t ctl = 0U; + ctl = DAC_CTL_DBOFF0 | DAC_CTL_DBOFF1; + DAC_CTL |= (ctl); +} + +/*! + \brief set DAC concurrent mode data holding register value + \param[in] dac_align: data alignment + only one parameter can be selected which is shown as below: + \arg DAC_ALIGN_8B_R: data right 8b alignment + \arg DAC_ALIGN_12B_R: data right 12b alignment + \arg DAC_ALIGN_12B_L: data left 12b alignment + \param[in] data0: data to be loaded + \param[in] data1: data to be loaded + \param[out] none + \retval none +*/ +void dac_concurrent_data_set(uint32_t dac_align, uint16_t data0, uint16_t data1) +{ + uint32_t data = 0U; + switch(dac_align){ + /* data right 12b alignment */ + case DAC_ALIGN_12B_R: + data = ((uint32_t)data1 << DH_12BIT_OFFSET) | data0; + DACC_R12DH = data; + break; + /* data left 12b alignment */ + case DAC_ALIGN_12B_L: + data = ((uint32_t)data1 << DH_12BIT_OFFSET) | data0; + DACC_L12DH = data; + break; + /* data right 8b alignment */ + case DAC_ALIGN_8B_R: + data = ((uint32_t)data1 << DH_8BIT_OFFSET) | data0; + DACC_R8DH = data; + break; + default: + break; + } +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_dbg.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_dbg.c new file mode 100644 index 0000000000..6db88961f2 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_dbg.c @@ -0,0 +1,111 @@ +/*! + \file gd32vf103_dbg.c + \brief DBG driver + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "gd32vf103_dbg.h" + +/*! + \brief read DBG_ID code register + \param[in] none + \param[out] none + \retval DBG_ID code +*/ +uint32_t dbg_id_get(void) +{ + return DBG_ID; +} + +/*! + \brief enable low power behavior when the mcu is in debug mode + \param[in] dbg_low_power: + one or more parameters can be selected which are shown as below: + \arg DBG_LOW_POWER_SLEEP: keep debugger connection during sleep mode + \arg DBG_LOW_POWER_DEEPSLEEP: keep debugger connection during deepsleep mode + \arg DBG_LOW_POWER_STANDBY: keep debugger connection during standby mode + \param[out] none + \retval none +*/ +void dbg_low_power_enable(uint32_t dbg_low_power) +{ + DBG_CTL |= dbg_low_power; +} + +/*! + \brief disable low power behavior when the mcu is in debug mode + \param[in] dbg_low_power: + one or more parameters can be selected which are shown as below: + \arg DBG_LOW_POWER_SLEEP: donot keep debugger connection during sleep mode + \arg DBG_LOW_POWER_DEEPSLEEP: donot keep debugger connection during deepsleep mode + \arg DBG_LOW_POWER_STANDBY: donot keep debugger connection during standby mode + \param[out] none + \retval none +*/ +void dbg_low_power_disable(uint32_t dbg_low_power) +{ + DBG_CTL &= ~dbg_low_power; +} + +/*! + \brief enable peripheral behavior when the mcu is in debug mode + \param[in] dbg_periph: refer to dbg_periph_enum + one or more parameters can be selected which are shown as below: + \arg DBG_FWDGT_HOLD : debug FWDGT kept when core is halted + \arg DBG_WWDGT_HOLD : debug WWDGT kept when core is halted + \arg DBG_CANx_HOLD (x=0,1): hold CANx counter when core is halted + \arg DBG_I2Cx_HOLD (x=0,1): hold I2Cx smbus when core is halted + \arg DBG_TIMERx_HOLD (x=0,1,2,3,4,5,6): hold TIMERx counter when core is halted + \param[out] none + \retval none +*/ +void dbg_periph_enable(dbg_periph_enum dbg_periph) +{ + DBG_CTL |= (uint32_t)dbg_periph; +} + +/*! + \brief disable peripheral behavior when the mcu is in debug mode + \param[in] dbg_periph: refer to dbg_periph_enum + one or more parameters can be selected which are shown as below: + \arg DBG_FWDGT_HOLD : debug FWDGT kept when core is halted + \arg DBG_WWDGT_HOLD : debug WWDGT kept when core is halted + \arg DBG_CANx_HOLD (x=0,1): hold CAN0 counter when core is halted + \arg DBG_I2Cx_HOLD (x=0,1): hold I2Cx smbus when core is halted + \arg DBG_TIMERx_HOLD (x=0,1,2,3,4,5,6): hold TIMERx counter when core is halted + \param[out] none + \retval none +*/ +void dbg_periph_disable(dbg_periph_enum dbg_periph) +{ + DBG_CTL &= ~(uint32_t)dbg_periph; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_dma.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_dma.c new file mode 100644 index 0000000000..e7e41ff7b0 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_dma.c @@ -0,0 +1,733 @@ +/*! + \file gd32vf103_dma.c + \brief DMA driver + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2019-10-30, V1.0.1, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "gd32vf103_dma.h" + +#define DMA_WRONG_HANDLE while(1){} + +/* check whether peripheral matches channels or not */ +static ErrStatus dma_periph_and_channel_check(uint32_t dma_periph, dma_channel_enum channelx); + +/*! + \brief deinitialize DMA a channel registers + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel is deinitialized + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[out] none + \retval none +*/ +void dma_deinit(uint32_t dma_periph, dma_channel_enum channelx) +{ + if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){ + DMA_WRONG_HANDLE + } + + /* disable DMA a channel */ + DMA_CHCTL(dma_periph, channelx) &= ~DMA_CHXCTL_CHEN; + /* reset DMA channel registers */ + DMA_CHCTL(dma_periph, channelx) = DMA_CHCTL_RESET_VALUE; + DMA_CHCNT(dma_periph, channelx) = DMA_CHCNT_RESET_VALUE; + DMA_CHPADDR(dma_periph, channelx) = DMA_CHPADDR_RESET_VALUE; + DMA_CHMADDR(dma_periph, channelx) = DMA_CHMADDR_RESET_VALUE; + DMA_INTC(dma_periph) |= DMA_FLAG_ADD(DMA_CHINTF_RESET_VALUE, (uint32_t)channelx); +} + +/*! + \brief initialize the parameters of DMA struct with the default values + \param[in] init_struct: the initialization data needed to initialize DMA channel + \param[out] none + \retval none +*/ +void dma_struct_para_init(dma_parameter_struct* init_struct) +{ + /* set the DMA struct with the default values */ + init_struct->periph_addr = 0U; + init_struct->periph_width = 0U; + init_struct->periph_inc = DMA_PERIPH_INCREASE_DISABLE; + init_struct->memory_addr = 0U; + init_struct->memory_width = 0U; + init_struct->memory_inc = DMA_MEMORY_INCREASE_DISABLE; + init_struct->number = 0U; + init_struct->direction = DMA_PERIPHERAL_TO_MEMORY; + init_struct->priority = DMA_PRIORITY_LOW; +} + +/*! + \brief initialize DMA channel + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel is initialized + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[in] init_struct: the data needed to initialize DMA channel + periph_addr: peripheral base address + periph_width: DMA_PERIPHERAL_WIDTH_8BIT, DMA_PERIPHERAL_WIDTH_16BIT, DMA_PERIPHERAL_WIDTH_32BIT + periph_inc: DMA_PERIPH_INCREASE_ENABLE, DMA_PERIPH_INCREASE_DISABLE + memory_addr: memory base address + memory_width: DMA_MEMORY_WIDTH_8BIT, DMA_MEMORY_WIDTH_16BIT, DMA_MEMORY_WIDTH_32BIT + memory_inc: DMA_MEMORY_INCREASE_ENABLE, DMA_MEMORY_INCREASE_DISABLE + direction: DMA_PERIPHERAL_TO_MEMORY, DMA_MEMORY_TO_PERIPHERAL + number: the number of remaining data to be transferred by the DMA + priority: DMA_PRIORITY_LOW, DMA_PRIORITY_MEDIUM, DMA_PRIORITY_HIGH, DMA_PRIORITY_ULTRA_HIGH + \param[out] none + \retval none +*/ +void dma_init(uint32_t dma_periph, dma_channel_enum channelx, dma_parameter_struct* init_struct) +{ + uint32_t ctl; + + if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){ + DMA_WRONG_HANDLE + } + + /* configure peripheral base address */ + DMA_CHPADDR(dma_periph, channelx) = init_struct->periph_addr; + + /* configure memory base address */ + DMA_CHMADDR(dma_periph, channelx) = init_struct->memory_addr; + + /* configure the number of remaining data to be transferred */ + DMA_CHCNT(dma_periph, channelx) = (init_struct->number & DMA_CHANNEL_CNT_MASK); + + /* configure peripheral transfer width,memory transfer width and priority */ + ctl = DMA_CHCTL(dma_periph, channelx); + ctl &= ~(DMA_CHXCTL_PWIDTH | DMA_CHXCTL_MWIDTH | DMA_CHXCTL_PRIO); + ctl |= (init_struct->periph_width | init_struct->memory_width | init_struct->priority); + DMA_CHCTL(dma_periph, channelx) = ctl; + + /* configure peripheral increasing mode */ + if(DMA_PERIPH_INCREASE_ENABLE == init_struct->periph_inc){ + DMA_CHCTL(dma_periph, channelx) |= DMA_CHXCTL_PNAGA; + }else{ + DMA_CHCTL(dma_periph, channelx) &= ~DMA_CHXCTL_PNAGA; + } + + /* configure memory increasing mode */ + if(DMA_MEMORY_INCREASE_ENABLE == init_struct->memory_inc){ + DMA_CHCTL(dma_periph, channelx) |= DMA_CHXCTL_MNAGA; + }else{ + DMA_CHCTL(dma_periph, channelx) &= ~DMA_CHXCTL_MNAGA; + } + + /* configure the direction of data transfer */ + if(DMA_PERIPHERAL_TO_MEMORY == init_struct->direction){ + DMA_CHCTL(dma_periph, channelx) &= ~DMA_CHXCTL_DIR; + }else{ + DMA_CHCTL(dma_periph, channelx) |= DMA_CHXCTL_DIR; + } +} + +/*! + \brief enable DMA circulation mode + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[out] none + \retval none +*/ +void dma_circulation_enable(uint32_t dma_periph, dma_channel_enum channelx) +{ + if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){ + DMA_WRONG_HANDLE + } + + DMA_CHCTL(dma_periph, channelx) |= DMA_CHXCTL_CMEN; +} + +/*! + \brief disable DMA circulation mode + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[out] none + \retval none +*/ +void dma_circulation_disable(uint32_t dma_periph, dma_channel_enum channelx) +{ + if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){ + DMA_WRONG_HANDLE + } + + DMA_CHCTL(dma_periph, channelx) &= ~DMA_CHXCTL_CMEN; +} + +/*! + \brief enable memory to memory mode + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[out] none + \retval none +*/ +void dma_memory_to_memory_enable(uint32_t dma_periph, dma_channel_enum channelx) +{ + if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){ + DMA_WRONG_HANDLE + } + + DMA_CHCTL(dma_periph, channelx) |= DMA_CHXCTL_M2M; +} + +/*! + \brief disable memory to memory mode + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[out] none + \retval none +*/ +void dma_memory_to_memory_disable(uint32_t dma_periph, dma_channel_enum channelx) +{ + if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){ + DMA_WRONG_HANDLE + } + + DMA_CHCTL(dma_periph, channelx) &= ~DMA_CHXCTL_M2M; +} + +/*! + \brief enable DMA channel + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[out] none + \retval none +*/ +void dma_channel_enable(uint32_t dma_periph, dma_channel_enum channelx) +{ + if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){ + DMA_WRONG_HANDLE + } + + DMA_CHCTL(dma_periph, channelx) |= DMA_CHXCTL_CHEN; +} + +/*! + \brief disable DMA channel + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[out] none + \retval none +*/ +void dma_channel_disable(uint32_t dma_periph, dma_channel_enum channelx) +{ + if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){ + DMA_WRONG_HANDLE + } + + DMA_CHCTL(dma_periph, channelx) &= ~DMA_CHXCTL_CHEN; +} + +/*! + \brief set DMA peripheral base address + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel to set peripheral base address + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[in] address: peripheral base address + \param[out] none + \retval none +*/ +void dma_periph_address_config(uint32_t dma_periph, dma_channel_enum channelx, uint32_t address) +{ + if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){ + DMA_WRONG_HANDLE + } + + DMA_CHPADDR(dma_periph, channelx) = address; +} + +/*! + \brief set DMA memory base address + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel to set memory base address + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[in] address: memory base address + \param[out] none + \retval none +*/ +void dma_memory_address_config(uint32_t dma_periph, dma_channel_enum channelx, uint32_t address) +{ + if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){ + DMA_WRONG_HANDLE + } + + DMA_CHMADDR(dma_periph, channelx) = address; +} + +/*! + \brief set the number of remaining data to be transferred by the DMA + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel to set number + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[in] number: the number of remaining data to be transferred by the DMA + \param[out] none + \retval none +*/ +void dma_transfer_number_config(uint32_t dma_periph, dma_channel_enum channelx, uint32_t number) +{ + if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){ + DMA_WRONG_HANDLE + } + + DMA_CHCNT(dma_periph, channelx) = (number & DMA_CHANNEL_CNT_MASK); +} + +/*! + \brief get the number of remaining data to be transferred by the DMA + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel to set number + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[out] none + \retval uint32_t: the number of remaining data to be transferred by the DMA +*/ +uint32_t dma_transfer_number_get(uint32_t dma_periph, dma_channel_enum channelx) +{ + if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){ + DMA_WRONG_HANDLE + } + + return (uint32_t)DMA_CHCNT(dma_periph, channelx); +} + +/*! + \brief configure priority level of DMA channel + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[in] priority: priority Level of this channel + only one parameter can be selected which is shown as below: + \arg DMA_PRIORITY_LOW: low priority + \arg DMA_PRIORITY_MEDIUM: medium priority + \arg DMA_PRIORITY_HIGH: high priority + \arg DMA_PRIORITY_ULTRA_HIGH: ultra high priority + \param[out] none + \retval none +*/ +void dma_priority_config(uint32_t dma_periph, dma_channel_enum channelx, uint32_t priority) +{ + uint32_t ctl; + + if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){ + DMA_WRONG_HANDLE + } + + /* acquire DMA_CHxCTL register */ + ctl = DMA_CHCTL(dma_periph, channelx); + /* assign regiser */ + ctl &= ~DMA_CHXCTL_PRIO; + ctl |= priority; + DMA_CHCTL(dma_periph, channelx) = ctl; +} + +/*! + \brief configure transfer data size of memory + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[in] mwidth: transfer data width of memory + only one parameter can be selected which is shown as below: + \arg DMA_MEMORY_WIDTH_8BIT: transfer data width of memory is 8-bit + \arg DMA_MEMORY_WIDTH_16BIT: transfer data width of memory is 16-bit + \arg DMA_MEMORY_WIDTH_32BIT: transfer data width of memory is 32-bit + \param[out] none + \retval none +*/ +void dma_memory_width_config(uint32_t dma_periph, dma_channel_enum channelx, uint32_t mwidth) +{ + uint32_t ctl; + + if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){ + DMA_WRONG_HANDLE + } + + /* acquire DMA_CHxCTL register */ + ctl = DMA_CHCTL(dma_periph, channelx); + /* assign regiser */ + ctl &= ~DMA_CHXCTL_MWIDTH; + ctl |= mwidth; + DMA_CHCTL(dma_periph, channelx) = ctl; +} + +/*! + \brief configure transfer data size of peripheral + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[in] pwidth: transfer data width of peripheral + only one parameter can be selected which is shown as below: + \arg DMA_PERIPHERAL_WIDTH_8BIT: transfer data width of peripheral is 8-bit + \arg DMA_PERIPHERAL_WIDTH_16BIT: transfer data width of peripheral is 16-bit + \arg DMA_PERIPHERAL_WIDTH_32BIT: transfer data width of peripheral is 32-bit + \param[out] none + \retval none +*/ +void dma_periph_width_config (uint32_t dma_periph, dma_channel_enum channelx, uint32_t pwidth) +{ + uint32_t ctl; + + if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){ + DMA_WRONG_HANDLE + } + + /* acquire DMA_CHxCTL register */ + ctl = DMA_CHCTL(dma_periph, channelx); + /* assign regiser */ + ctl &= ~DMA_CHXCTL_PWIDTH; + ctl |= pwidth; + DMA_CHCTL(dma_periph, channelx) = ctl; +} + +/*! + \brief enable next address increasement algorithm of memory + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[out] none + \retval none +*/ +void dma_memory_increase_enable(uint32_t dma_periph, dma_channel_enum channelx) +{ + if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){ + DMA_WRONG_HANDLE + } + + DMA_CHCTL(dma_periph, channelx) |= DMA_CHXCTL_MNAGA; +} + +/*! + \brief disable next address increasement algorithm of memory + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[out] none + \retval none +*/ +void dma_memory_increase_disable(uint32_t dma_periph, dma_channel_enum channelx) +{ + if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){ + DMA_WRONG_HANDLE + } + + DMA_CHCTL(dma_periph, channelx) &= ~DMA_CHXCTL_MNAGA; +} + +/*! + \brief enable next address increasement algorithm of peripheral + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[out] none + \retval none +*/ +void dma_periph_increase_enable(uint32_t dma_periph, dma_channel_enum channelx) +{ + if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){ + DMA_WRONG_HANDLE + } + + DMA_CHCTL(dma_periph, channelx) |= DMA_CHXCTL_PNAGA; +} + +/*! + \brief disable next address increasement algorithm of peripheral + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[out] none + \retval none +*/ +void dma_periph_increase_disable(uint32_t dma_periph, dma_channel_enum channelx) +{ + if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){ + DMA_WRONG_HANDLE + } + + DMA_CHCTL(dma_periph, channelx) &= ~DMA_CHXCTL_PNAGA; +} + +/*! + \brief configure the direction of data transfer on the channel + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[in] direction: specify the direction of data transfer + only one parameter can be selected which is shown as below: + \arg DMA_PERIPHERAL_TO_MEMORY: read from peripheral and write to memory + \arg DMA_MEMORY_TO_PERIPHERAL: read from memory and write to peripheral + \param[out] none + \retval none +*/ +void dma_transfer_direction_config(uint32_t dma_periph, dma_channel_enum channelx, uint8_t direction) +{ + if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){ + DMA_WRONG_HANDLE + } + + if(DMA_PERIPHERAL_TO_MEMORY == direction){ + DMA_CHCTL(dma_periph, channelx) &= ~DMA_CHXCTL_DIR; + } else { + DMA_CHCTL(dma_periph, channelx) |= DMA_CHXCTL_DIR; + } +} + +/*! + \brief check DMA flag is set or not + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel to get flag + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[in] flag: specify get which flag + only one parameter can be selected which is shown as below: + \arg DMA_FLAG_G: global interrupt flag of channel + \arg DMA_FLAG_FTF: full transfer finish flag of channel + \arg DMA_FLAG_HTF: half transfer finish flag of channel + \arg DMA_FLAG_ERR: error flag of channel + \param[out] none + \retval FlagStatus: SET or RESET +*/ +FlagStatus dma_flag_get(uint32_t dma_periph, dma_channel_enum channelx, uint32_t flag) +{ + FlagStatus reval; + + if(DMA_INTF(dma_periph) & DMA_FLAG_ADD(flag, (uint32_t)channelx)){ + reval = SET; + }else{ + reval = RESET; + } + + return reval; +} + +/*! + \brief clear DMA a channel flag + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel to clear flag + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[in] flag: specify get which flag + only one parameter can be selected which is shown as below: + \arg DMA_FLAG_G: global interrupt flag of channel + \arg DMA_FLAG_FTF: full transfer finish flag of channel + \arg DMA_FLAG_HTF: half transfer finish flag of channel + \arg DMA_FLAG_ERR: error flag of channel + \param[out] none + \retval none +*/ +void dma_flag_clear(uint32_t dma_periph, dma_channel_enum channelx, uint32_t flag) +{ + DMA_INTC(dma_periph) |= DMA_FLAG_ADD(flag, (uint32_t)channelx); +} + +/*! + \brief check DMA flag and interrupt enable bit is set or not + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel to get flag + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[in] flag: specify get which flag + only one parameter can be selected which is shown as below: + \arg DMA_INT_FLAG_FTF: full transfer finish interrupt flag of channel + \arg DMA_INT_FLAG_HTF: half transfer finish interrupt flag of channel + \arg DMA_INT_FLAG_ERR: error interrupt flag of channel + \param[out] none + \retval FlagStatus: SET or RESET +*/ +FlagStatus dma_interrupt_flag_get(uint32_t dma_periph, dma_channel_enum channelx, uint32_t flag) +{ + uint32_t interrupt_enable = 0U, interrupt_flag = 0U; + + switch(flag){ + case DMA_INT_FLAG_FTF: + /* check whether the full transfer finish interrupt flag is set and enabled */ + interrupt_flag = DMA_INTF(dma_periph) & DMA_FLAG_ADD(flag, (uint32_t)channelx); + interrupt_enable = DMA_CHCTL(dma_periph, (uint32_t)channelx) & DMA_CHXCTL_FTFIE; + break; + case DMA_INT_FLAG_HTF: + /* check whether the half transfer finish interrupt flag is set and enabled */ + interrupt_flag = DMA_INTF(dma_periph) & DMA_FLAG_ADD(flag, (uint32_t)channelx); + interrupt_enable = DMA_CHCTL(dma_periph, (uint32_t)channelx) & DMA_CHXCTL_HTFIE; + break; + case DMA_INT_FLAG_ERR: + /* check whether the error interrupt flag is set and enabled */ + interrupt_flag = DMA_INTF(dma_periph) & DMA_FLAG_ADD(flag, (uint32_t)channelx); + interrupt_enable = DMA_CHCTL(dma_periph, (uint32_t)channelx) & DMA_CHXCTL_ERRIE; + break; + default: + DMA_WRONG_HANDLE + } + + /* when the interrupt flag is set and enabled, return SET */ + if(interrupt_flag && interrupt_enable){ + return SET; + }else{ + return RESET; + } +} + +/*! + \brief clear DMA a channel flag + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel to clear flag + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[in] flag: specify get which flag + only one parameter can be selected which is shown as below: + \arg DMA_INT_FLAG_G: global interrupt flag of channel + \arg DMA_INT_FLAG_FTF: full transfer finish interrupt flag of channel + \arg DMA_INT_FLAG_HTF: half transfer finish interrupt flag of channel + \arg DMA_INT_FLAG_ERR: error interrupt flag of channel + \param[out] none + \retval none +*/ +void dma_interrupt_flag_clear(uint32_t dma_periph, dma_channel_enum channelx, uint32_t flag) +{ + DMA_INTC(dma_periph) |= DMA_FLAG_ADD(flag, (uint32_t)channelx); +} + +/*! + \brief enable DMA interrupt + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[in] source: specify which interrupt to enbale + one or more parameters can be selected which are shown as below + \arg DMA_INT_FTF: channel full transfer finish interrupt + \arg DMA_INT_HTF: channel half transfer finish interrupt + \arg DMA_INT_ERR: channel error interrupt + \param[out] none + \retval none +*/ +void dma_interrupt_enable(uint32_t dma_periph, dma_channel_enum channelx, uint32_t source) +{ + if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){ + DMA_WRONG_HANDLE + } + + DMA_CHCTL(dma_periph, channelx) |= source; +} + +/*! + \brief disable DMA interrupt + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel + only one parameter can be selected which is shown as below: + \arg DMA0: DMA_CHx(x=0..6), DMA1: DMA_CHx(x=0..4) + \param[in] source: specify which interrupt to disbale + one or more parameters can be selected which are shown as below + \arg DMA_INT_FTF: channel full transfer finish interrupt + \arg DMA_INT_HTF: channel half transfer finish interrupt + \arg DMA_INT_ERR: channel error interrupt + \param[out] none + \retval none +*/ +void dma_interrupt_disable(uint32_t dma_periph, dma_channel_enum channelx, uint32_t source) +{ + if(ERROR == dma_periph_and_channel_check(dma_periph, channelx)){ + DMA_WRONG_HANDLE + } + + DMA_CHCTL(dma_periph, channelx) &= ~source; +} + +/*! + \brief check whether peripheral and channels match + \param[in] dma_periph: DMAx(x=0,1) + \arg DMAx(x=0,1) + \param[in] channelx: specify which DMA channel + only one parameter can be selected which is shown as below: + \arg DMA_CHx(x=0..6) + \param[out] none + \retval none +*/ +static ErrStatus dma_periph_and_channel_check(uint32_t dma_periph, dma_channel_enum channelx) +{ + ErrStatus val = SUCCESS; + + if(DMA1 == dma_periph){ + /* for DMA1, the channel is from DMA_CH0 to DMA_CH4 */ + if(channelx > DMA_CH4){ + val = ERROR; + } + } + + return val; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_eclic.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_eclic.c new file mode 100644 index 0000000000..4ff0e21525 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_eclic.c @@ -0,0 +1,129 @@ +/*! + \file gd32vf103_eclic.c + \brief ECLIC(Enhancement Core-Local Interrupt Controller) driver + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "gd32vf103_eclic.h" +#include "riscv_encoding.h" + +#define REG_DBGMCU2 ((uint32_t)0xE0042008U) +#define REG_DBGMCU2EN ((uint32_t)0xE004200CU) + +/*! + \brief enable the global interrupt + \param[in] none + \param[out] none + \retval none +*/ +void eclic_global_interrupt_enable(void) +{ + /* set machine interrupt enable bit */ + set_csr(mstatus, MSTATUS_MIE); +} + +/*! + \brief disable the global interrupt + \param[in] none + \param[out] none + \retval none +*/ +void eclic_global_interrupt_disable(void) +{ + /* clear machine interrupt enable bit */ + clear_csr(mstatus, MSTATUS_MIE); +} + +/*! + \brief set the priority group + \param[in] prigroup: specify the priority group + \arg ECLIC_PRIGROUP_LEVEL0_PRIO4 + \arg ECLIC_PRIGROUP_LEVEL1_PRIO3 + \arg ECLIC_PRIGROUP_LEVEL2_PRIO2 + \arg ECLIC_PRIGROUP_LEVEL3_PRIO1 + \arg ECLIC_PRIGROUP_LEVEL4_PRIO0 + \param[out] none + \retval none +*/ +void eclic_priority_group_set(uint8_t prigroup) +{ + eclic_set_nlbits(prigroup); +} + +/*! + \brief enable the interrupt request + \param[in] source: interrupt request, detailed in IRQn_Type + \param[in] level: the level needed to set (maximum is 15, refer to the priority group) + \param[in] priority: the priority needed to set (maximum is 15, refer to the priority group) + \param[out] none + \retval none +*/ +void eclic_irq_enable(uint32_t source, uint8_t level, uint8_t priority) +{ + eclic_enable_interrupt(source); + eclic_set_irq_lvl_abs(source, level); + eclic_set_irq_priority(source, priority); +} + +/*! + \brief disable the interrupt request + \param[in] source: interrupt request, detailed in IRQn_Type + \param[out] none + \retval none +*/ +void eclic_irq_disable(uint32_t source) +{ + eclic_disable_interrupt(source); +} + +/*! + \brief reset system + \param[in] none + \param[out] none + \retval none +*/ +void eclic_system_reset(void) +{ + REG32(REG_DBGMCU2EN) = (uint32_t)0x4b5a6978U; + REG32(REG_DBGMCU2) = (uint32_t)0x1U; +} + +/*! + \brief send event(SEV) + \param[in] none + \param[out] none + \retval none +*/ +void eclic_send_event(void) +{ + set_csr(0x812U, 0x1U); +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_eclic.s b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_eclic.s new file mode 100644 index 0000000000..849ac58c82 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_eclic.s @@ -0,0 +1,21240 @@ + .file "gd32vf103_eclic.c" + .option nopic + .text +.Ltext0: + .cfi_sections .debug_frame + .align 1 + .globl eclic_global_interrupt_enable + .type eclic_global_interrupt_enable, @function +eclic_global_interrupt_enable: +.LFB2: + .file 1 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Source\\gd32vf103_eclic.c" + .loc 1 49 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 +.LBB2: + .loc 1 51 103 + #APP +# 51 "D:\rt-thread\bsp\gd32\risc-v\libraries\GD32VF103_Firmware_Library\GD32VF103_standard_peripheral\Source\gd32vf103_eclic.c" 1 + csrrs a5, mstatus, 8 +# 0 "" 2 + #NO_APP + sw a5,-20(s0) +.LBE2: + .loc 1 52 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE2: + .size eclic_global_interrupt_enable, .-eclic_global_interrupt_enable + .align 1 + .globl eclic_global_interrupt_disable + .type eclic_global_interrupt_disable, @function +eclic_global_interrupt_disable: +.LFB3: + .loc 1 61 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 +.LBB3: + .loc 1 63 103 + #APP +# 63 "D:\rt-thread\bsp\gd32\risc-v\libraries\GD32VF103_Firmware_Library\GD32VF103_standard_peripheral\Source\gd32vf103_eclic.c" 1 + csrrc a5, mstatus, 8 +# 0 "" 2 + #NO_APP + sw a5,-20(s0) +.LBE3: + .loc 1 64 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE3: + .size eclic_global_interrupt_disable, .-eclic_global_interrupt_disable + .align 1 + .globl eclic_priority_group_set + .type eclic_priority_group_set, @function +eclic_priority_group_set: +.LFB4: + .loc 1 78 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw ra,28(sp) + sw s0,24(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + mv a5,a0 + sb a5,-17(s0) + .loc 1 79 5 + lbu a5,-17(s0) + mv a0,a5 + call eclic_set_nlbits + .loc 1 80 1 + nop + lw ra,28(sp) + .cfi_restore 1 + lw s0,24(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE4: + .size eclic_priority_group_set, .-eclic_priority_group_set + .align 1 + .globl eclic_irq_enable + .type eclic_irq_enable, @function +eclic_irq_enable: +.LFB5: + .loc 1 91 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw ra,28(sp) + sw s0,24(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + mv a5,a1 + mv a4,a2 + sb a5,-21(s0) + mv a5,a4 + sb a5,-22(s0) + .loc 1 92 5 + lw a0,-20(s0) + call eclic_enable_interrupt + .loc 1 93 5 + lbu a5,-21(s0) + mv a1,a5 + lw a0,-20(s0) + call eclic_set_irq_lvl_abs + .loc 1 94 5 + lbu a5,-22(s0) + mv a1,a5 + lw a0,-20(s0) + call eclic_set_irq_priority + .loc 1 95 1 + nop + lw ra,28(sp) + .cfi_restore 1 + lw s0,24(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE5: + .size eclic_irq_enable, .-eclic_irq_enable + .align 1 + .globl eclic_irq_disable + .type eclic_irq_disable, @function +eclic_irq_disable: +.LFB6: + .loc 1 104 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw ra,28(sp) + sw s0,24(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 105 5 + lw a0,-20(s0) + call eclic_disable_interrupt + .loc 1 106 1 + nop + lw ra,28(sp) + .cfi_restore 1 + lw s0,24(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE6: + .size eclic_irq_disable, .-eclic_irq_disable + .align 1 + .globl eclic_system_reset + .type eclic_system_reset, @function +eclic_system_reset: +.LFB7: + .loc 1 115 1 + .cfi_startproc + addi sp,sp,-16 + .cfi_def_cfa_offset 16 + sw s0,12(sp) + .cfi_offset 8, -4 + addi s0,sp,16 + .cfi_def_cfa 8, 0 + .loc 1 116 6 + li a5,-536600576 + addi a5,a5,12 + .loc 1 116 65 + li a4,1264218112 + addi a4,a4,-1672 + sw a4,0(a5) + .loc 1 117 6 + li a5,-536600576 + addi a5,a5,8 + .loc 1 117 65 + li a4,1 + sw a4,0(a5) + .loc 1 118 1 + nop + lw s0,12(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 16 + addi sp,sp,16 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE7: + .size eclic_system_reset, .-eclic_system_reset + .align 1 + .globl eclic_send_event + .type eclic_send_event, @function +eclic_send_event: +.LFB8: + .loc 1 127 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 +.LBB4: + .loc 1 128 91 + #APP +# 128 "D:\rt-thread\bsp\gd32\risc-v\libraries\GD32VF103_Firmware_Library\GD32VF103_standard_peripheral\Source\gd32vf103_eclic.c" 1 + csrrs a5, 0x812U, 1 +# 0 "" 2 + #NO_APP + sw a5,-20(s0) +.LBE4: + .loc 1 129 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE8: + .size eclic_send_event, .-eclic_send_event +.Letext0: + .file 2 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\machine\\_default_types.h" + .file 3 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_stdint.h" + .section .debug_info,"",@progbits +.Ldebug_info0: + .4byte 0x1d1 + .2byte 0x4 + .4byte .Ldebug_abbrev0 + .byte 0x4 + .byte 0x1 + .4byte .LASF4022 + .byte 0xc + .4byte .LASF4023 + .4byte .LASF4024 + .4byte .Ltext0 + .4byte .Letext0-.Ltext0 + .4byte .Ldebug_line0 + .4byte .Ldebug_macro0 + .byte 0x2 + .byte 0x4 + .byte 0x7 + .4byte .LASF3998 + .byte 0x2 + .byte 0x1 + .byte 0x6 + .4byte .LASF3999 + .byte 0x3 + .4byte .LASF4004 + .byte 0x2 + .byte 0x2b + .byte 0x17 + .4byte 0x43 + .byte 0x2 + .byte 0x1 + .byte 0x8 + .4byte .LASF4000 + .byte 0x2 + .byte 0x2 + .byte 0x5 + .4byte .LASF4001 + .byte 0x2 + .byte 0x2 + .byte 0x7 + .4byte .LASF4002 + .byte 0x2 + .byte 0x4 + .byte 0x5 + .4byte .LASF4003 + .byte 0x3 + .4byte .LASF4005 + .byte 0x2 + .byte 0x4f + .byte 0x1b + .4byte 0x6b + .byte 0x2 + .byte 0x4 + .byte 0x7 + .4byte .LASF4006 + .byte 0x2 + .byte 0x8 + .byte 0x5 + .4byte .LASF4007 + .byte 0x2 + .byte 0x8 + .byte 0x7 + .4byte .LASF4008 + .byte 0x4 + .byte 0x4 + .byte 0x5 + .string "int" + .byte 0x3 + .4byte .LASF4009 + .byte 0x3 + .byte 0x18 + .byte 0x13 + .4byte 0x37 + .byte 0x3 + .4byte .LASF4010 + .byte 0x3 + .byte 0x30 + .byte 0x14 + .4byte 0x5f + .byte 0x2 + .byte 0x10 + .byte 0x4 + .4byte .LASF4011 + .byte 0x5 + .4byte .LASF4012 + .byte 0x1 + .byte 0x7e + .byte 0x6 + .4byte .LFB8 + .4byte .LFE8-.LFB8 + .byte 0x1 + .byte 0x9c + .4byte 0xd6 + .byte 0x6 + .4byte .LBB4 + .4byte .LBE4-.LBB4 + .byte 0x7 + .4byte .LASF4021 + .byte 0x1 + .byte 0x80 + .byte 0x16 + .4byte 0x6b + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0 + .byte 0x8 + .4byte .LASF4025 + .byte 0x1 + .byte 0x72 + .byte 0x6 + .4byte .LFB7 + .4byte .LFE7-.LFB7 + .byte 0x1 + .byte 0x9c + .byte 0x9 + .4byte .LASF4013 + .byte 0x1 + .byte 0x67 + .byte 0x6 + .4byte .LFB6 + .4byte .LFE6-.LFB6 + .byte 0x1 + .byte 0x9c + .4byte 0x10e + .byte 0xa + .4byte .LASF4015 + .byte 0x1 + .byte 0x67 + .byte 0x21 + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x9 + .4byte .LASF4014 + .byte 0x1 + .byte 0x5a + .byte 0x6 + .4byte .LFB5 + .4byte .LFE5-.LFB5 + .byte 0x1 + .byte 0x9c + .4byte 0x152 + .byte 0xa + .4byte .LASF4015 + .byte 0x1 + .byte 0x5a + .byte 0x20 + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0xa + .4byte .LASF4016 + .byte 0x1 + .byte 0x5a + .byte 0x30 + .4byte 0x87 + .byte 0x2 + .byte 0x91 + .byte 0x6b + .byte 0xa + .4byte .LASF4017 + .byte 0x1 + .byte 0x5a + .byte 0x3f + .4byte 0x87 + .byte 0x2 + .byte 0x91 + .byte 0x6a + .byte 0 + .byte 0x9 + .4byte .LASF4018 + .byte 0x1 + .byte 0x4d + .byte 0x6 + .4byte .LFB4 + .4byte .LFE4-.LFB4 + .byte 0x1 + .byte 0x9c + .4byte 0x178 + .byte 0xa + .4byte .LASF4019 + .byte 0x1 + .byte 0x4d + .byte 0x27 + .4byte 0x87 + .byte 0x2 + .byte 0x91 + .byte 0x6f + .byte 0 + .byte 0x5 + .4byte .LASF4020 + .byte 0x1 + .byte 0x3c + .byte 0x6 + .4byte .LFB3 + .4byte .LFE3-.LFB3 + .byte 0x1 + .byte 0x9c + .4byte 0x1a8 + .byte 0x6 + .4byte .LBB3 + .4byte .LBE3-.LBB3 + .byte 0x7 + .4byte .LASF4021 + .byte 0x1 + .byte 0x3f + .byte 0x16 + .4byte 0x6b + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0 + .byte 0xb + .4byte .LASF4026 + .byte 0x1 + .byte 0x30 + .byte 0x6 + .4byte .LFB2 + .4byte .LFE2-.LFB2 + .byte 0x1 + .byte 0x9c + .byte 0x6 + .4byte .LBB2 + .4byte .LBE2-.LBB2 + .byte 0x7 + .4byte .LASF4021 + .byte 0x1 + .byte 0x33 + .byte 0x16 + .4byte 0x6b + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0 + .byte 0 + .section .debug_abbrev,"",@progbits +.Ldebug_abbrev0: + .byte 0x1 + .byte 0x11 + .byte 0x1 + .byte 0x25 + .byte 0xe + .byte 0x13 + .byte 0xb + .byte 0x3 + .byte 0xe + .byte 0x1b + .byte 0xe + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x10 + .byte 0x17 + .byte 0x99,0x42 + .byte 0x17 + .byte 0 + .byte 0 + .byte 0x2 + .byte 0x24 + .byte 0 + .byte 0xb + .byte 0xb + .byte 0x3e + .byte 0xb + .byte 0x3 + .byte 0xe + .byte 0 + .byte 0 + .byte 0x3 + .byte 0x16 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x4 + .byte 0x24 + .byte 0 + .byte 0xb + .byte 0xb + .byte 0x3e + .byte 0xb + .byte 0x3 + .byte 0x8 + .byte 0 + .byte 0 + .byte 0x5 + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x6 + .byte 0xb + .byte 0x1 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0 + .byte 0 + .byte 0x7 + .byte 0x34 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0x8 + .byte 0x2e + .byte 0 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0 + .byte 0 + .byte 0x9 + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x96,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0xa + .byte 0x5 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0xb + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0 + .byte 0 + .byte 0 + .section .debug_aranges,"",@progbits + .4byte 0x1c + .2byte 0x2 + .4byte .Ldebug_info0 + .byte 0x4 + .byte 0 + .2byte 0 + .2byte 0 + .4byte .Ltext0 + .4byte .Letext0-.Ltext0 + .4byte 0 + .4byte 0 + .section .debug_macro,"",@progbits +.Ldebug_macro0: + .2byte 0x4 + .byte 0x2 + .4byte .Ldebug_line0 + .byte 0x3 + .byte 0 + .byte 0x1 + .byte 0x5 + .byte 0x1 + .4byte .LASF0 + .byte 0x5 + .byte 0x2 + .4byte .LASF1 + .byte 0x5 + .byte 0x3 + .4byte .LASF2 + .byte 0x5 + .byte 0x4 + .4byte .LASF3 + .byte 0x5 + .byte 0x5 + .4byte .LASF4 + .byte 0x5 + .byte 0x6 + .4byte .LASF5 + .byte 0x5 + .byte 0x7 + .4byte .LASF6 + .byte 0x5 + .byte 0x8 + .4byte .LASF7 + .byte 0x5 + .byte 0x9 + .4byte .LASF8 + .byte 0x5 + .byte 0xa + .4byte .LASF9 + .byte 0x5 + .byte 0xb + .4byte .LASF10 + .byte 0x5 + .byte 0xc + .4byte .LASF11 + .byte 0x5 + .byte 0xd + .4byte .LASF12 + .byte 0x5 + .byte 0xe + .4byte .LASF13 + .byte 0x5 + .byte 0xf + .4byte .LASF14 + .byte 0x5 + .byte 0x10 + .4byte .LASF15 + .byte 0x5 + .byte 0x11 + .4byte .LASF16 + .byte 0x5 + .byte 0x12 + .4byte .LASF17 + .byte 0x5 + .byte 0x13 + .4byte .LASF18 + .byte 0x5 + .byte 0x14 + .4byte .LASF19 + .byte 0x5 + .byte 0x15 + .4byte .LASF20 + .byte 0x5 + .byte 0x16 + .4byte .LASF21 + .byte 0x5 + .byte 0x17 + .4byte .LASF22 + .byte 0x5 + .byte 0x18 + .4byte .LASF23 + .byte 0x5 + .byte 0x19 + .4byte .LASF24 + .byte 0x5 + .byte 0x1a + .4byte .LASF25 + .byte 0x5 + .byte 0x1b + .4byte .LASF26 + .byte 0x5 + .byte 0x1c + .4byte .LASF27 + .byte 0x5 + .byte 0x1d + .4byte .LASF28 + .byte 0x5 + .byte 0x1e + .4byte .LASF29 + .byte 0x5 + .byte 0x1f + .4byte .LASF30 + .byte 0x5 + .byte 0x20 + .4byte .LASF31 + .byte 0x5 + .byte 0x21 + .4byte .LASF32 + .byte 0x5 + .byte 0x22 + .4byte .LASF33 + .byte 0x5 + .byte 0x23 + .4byte .LASF34 + .byte 0x5 + .byte 0x24 + .4byte .LASF35 + .byte 0x5 + .byte 0x25 + .4byte .LASF36 + .byte 0x5 + .byte 0x26 + .4byte .LASF37 + .byte 0x5 + .byte 0x27 + .4byte .LASF38 + .byte 0x5 + .byte 0x28 + .4byte .LASF39 + .byte 0x5 + .byte 0x29 + .4byte .LASF40 + .byte 0x5 + .byte 0x2a + .4byte .LASF41 + .byte 0x5 + .byte 0x2b + .4byte .LASF42 + .byte 0x5 + .byte 0x2c + .4byte .LASF43 + .byte 0x5 + .byte 0x2d + .4byte .LASF44 + .byte 0x5 + .byte 0x2e + .4byte .LASF45 + .byte 0x5 + .byte 0x2f + .4byte .LASF46 + .byte 0x5 + .byte 0x30 + .4byte .LASF47 + .byte 0x5 + .byte 0x31 + .4byte .LASF48 + .byte 0x5 + .byte 0x32 + .4byte .LASF49 + .byte 0x5 + .byte 0x33 + .4byte .LASF50 + .byte 0x5 + .byte 0x34 + .4byte .LASF51 + .byte 0x5 + .byte 0x35 + .4byte .LASF52 + .byte 0x5 + .byte 0x36 + .4byte .LASF53 + .byte 0x5 + .byte 0x37 + .4byte .LASF54 + .byte 0x5 + .byte 0x38 + .4byte .LASF55 + .byte 0x5 + .byte 0x39 + .4byte .LASF56 + .byte 0x5 + .byte 0x3a + .4byte .LASF57 + .byte 0x5 + .byte 0x3b + .4byte .LASF58 + .byte 0x5 + .byte 0x3c + .4byte .LASF59 + .byte 0x5 + .byte 0x3d + .4byte .LASF60 + .byte 0x5 + .byte 0x3e + .4byte .LASF61 + .byte 0x5 + .byte 0x3f + .4byte .LASF62 + .byte 0x5 + .byte 0x40 + .4byte .LASF63 + .byte 0x5 + .byte 0x41 + .4byte .LASF64 + .byte 0x5 + .byte 0x42 + .4byte .LASF65 + .byte 0x5 + .byte 0x43 + .4byte .LASF66 + .byte 0x5 + .byte 0x44 + .4byte .LASF67 + .byte 0x5 + .byte 0x45 + .4byte .LASF68 + .byte 0x5 + .byte 0x46 + .4byte .LASF69 + .byte 0x5 + .byte 0x47 + .4byte .LASF70 + .byte 0x5 + .byte 0x48 + .4byte .LASF71 + .byte 0x5 + .byte 0x49 + .4byte .LASF72 + .byte 0x5 + .byte 0x4a + .4byte .LASF73 + .byte 0x5 + .byte 0x4b + .4byte .LASF74 + .byte 0x5 + .byte 0x4c + .4byte .LASF75 + .byte 0x5 + .byte 0x4d + .4byte .LASF76 + .byte 0x5 + .byte 0x4e + .4byte .LASF77 + .byte 0x5 + .byte 0x4f + .4byte .LASF78 + .byte 0x5 + .byte 0x50 + .4byte .LASF79 + .byte 0x5 + .byte 0x51 + .4byte .LASF80 + .byte 0x5 + .byte 0x52 + .4byte .LASF81 + .byte 0x5 + .byte 0x53 + .4byte .LASF82 + .byte 0x5 + .byte 0x54 + .4byte .LASF83 + .byte 0x5 + .byte 0x55 + .4byte .LASF84 + .byte 0x5 + .byte 0x56 + .4byte .LASF85 + .byte 0x5 + .byte 0x57 + .4byte .LASF86 + .byte 0x5 + .byte 0x58 + .4byte .LASF87 + .byte 0x5 + .byte 0x59 + .4byte .LASF88 + .byte 0x5 + .byte 0x5a + .4byte .LASF89 + .byte 0x5 + .byte 0x5b + .4byte .LASF90 + .byte 0x5 + .byte 0x5c + .4byte .LASF91 + .byte 0x5 + .byte 0x5d + .4byte .LASF92 + .byte 0x5 + .byte 0x5e + .4byte .LASF93 + .byte 0x5 + .byte 0x5f + .4byte .LASF94 + .byte 0x5 + .byte 0x60 + .4byte .LASF95 + .byte 0x5 + .byte 0x61 + .4byte .LASF96 + .byte 0x5 + .byte 0x62 + .4byte .LASF97 + .byte 0x5 + .byte 0x63 + .4byte .LASF98 + .byte 0x5 + .byte 0x64 + .4byte .LASF99 + .byte 0x5 + .byte 0x65 + .4byte .LASF100 + .byte 0x5 + .byte 0x66 + .4byte .LASF101 + .byte 0x5 + .byte 0x67 + .4byte .LASF102 + .byte 0x5 + .byte 0x68 + .4byte .LASF103 + .byte 0x5 + .byte 0x69 + .4byte .LASF104 + .byte 0x5 + .byte 0x6a + .4byte .LASF105 + .byte 0x5 + .byte 0x6b + .4byte .LASF106 + .byte 0x5 + .byte 0x6c + .4byte .LASF107 + .byte 0x5 + .byte 0x6d + .4byte .LASF108 + .byte 0x5 + .byte 0x6e + .4byte .LASF109 + .byte 0x5 + .byte 0x6f + .4byte .LASF110 + .byte 0x5 + .byte 0x70 + .4byte .LASF111 + .byte 0x5 + .byte 0x71 + .4byte .LASF112 + .byte 0x5 + .byte 0x72 + .4byte .LASF113 + .byte 0x5 + .byte 0x73 + .4byte .LASF114 + .byte 0x5 + .byte 0x74 + .4byte .LASF115 + .byte 0x5 + .byte 0x75 + .4byte .LASF116 + .byte 0x5 + .byte 0x76 + .4byte .LASF117 + .byte 0x5 + .byte 0x77 + .4byte .LASF118 + .byte 0x5 + .byte 0x78 + .4byte .LASF119 + .byte 0x5 + .byte 0x79 + .4byte .LASF120 + .byte 0x5 + .byte 0x7a + .4byte .LASF121 + .byte 0x5 + .byte 0x7b + .4byte .LASF122 + .byte 0x5 + .byte 0x7c + .4byte .LASF123 + .byte 0x5 + .byte 0x7d + .4byte .LASF124 + .byte 0x5 + .byte 0x7e + .4byte .LASF125 + .byte 0x5 + .byte 0x7f + .4byte .LASF126 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF127 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF128 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF129 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF130 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF131 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF132 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF133 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF134 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF135 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF136 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF137 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF138 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF139 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF140 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF141 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF142 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF143 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF144 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF145 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF146 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF147 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF148 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF149 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF150 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF151 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF152 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF153 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF154 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF155 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF156 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF157 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF158 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF159 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF160 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF161 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF162 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF163 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF164 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF165 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF166 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF167 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF168 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF169 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF170 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF171 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF172 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF173 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF174 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF175 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF176 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF177 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF178 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF179 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF180 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF181 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF182 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF183 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF184 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF185 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF186 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF187 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF188 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF189 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF190 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF191 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF192 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF193 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF194 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF195 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF196 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF197 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF198 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF199 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF200 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF201 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF202 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF203 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF204 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF205 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF206 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF207 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF208 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF209 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF210 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF211 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF212 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF213 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF214 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF215 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF216 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF217 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF218 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF219 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF220 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF221 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF222 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF223 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF224 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF225 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF226 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF227 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF228 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF229 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF230 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF231 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF232 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF233 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF234 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF235 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF236 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF237 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF238 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF239 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF240 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF241 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF242 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF243 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF244 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF245 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF246 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF247 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF248 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF249 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF250 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF251 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF252 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF253 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF254 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF255 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF256 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF257 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF258 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF259 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF260 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF261 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF262 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF263 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF264 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF265 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF266 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF267 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF268 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF269 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF270 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF271 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF272 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF273 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF274 + .byte 0x5 + .byte 0x94,0x2 + .4byte .LASF275 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF276 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF277 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF278 + .byte 0x5 + .byte 0x98,0x2 + .4byte .LASF279 + .byte 0x5 + .byte 0x99,0x2 + .4byte .LASF280 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF281 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF282 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF283 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF284 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF285 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF286 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF287 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF288 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF289 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF290 + .byte 0x5 + .byte 0xa4,0x2 + .4byte .LASF291 + .byte 0x5 + .byte 0xa5,0x2 + .4byte .LASF292 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF293 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF294 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF295 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF296 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF297 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF298 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF299 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF300 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF301 + .byte 0x5 + .byte 0xaf,0x2 + .4byte .LASF302 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF303 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF304 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF305 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF306 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF307 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF308 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF309 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF310 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF311 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF312 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF313 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF314 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF315 + .byte 0x5 + .byte 0xbd,0x2 + .4byte .LASF316 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF317 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF318 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF319 + .byte 0x5 + .byte 0x1 + .4byte .LASF320 + .byte 0x5 + .byte 0x2 + .4byte .LASF321 + .byte 0x5 + .byte 0x3 + .4byte .LASF322 + .byte 0x5 + .byte 0x4 + .4byte .LASF323 + .byte 0x5 + .byte 0x5 + .4byte .LASF324 + .byte 0x5 + .byte 0x6 + .4byte .LASF325 + .byte 0x5 + .byte 0x7 + .4byte .LASF326 + .byte 0x5 + .byte 0x8 + .4byte .LASF327 + .byte 0x5 + .byte 0x9 + .4byte .LASF328 + .file 4 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_eclic.h" + .byte 0x3 + .byte 0x24 + .byte 0x4 + .byte 0x5 + .byte 0x25 + .4byte .LASF329 + .file 5 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral/gd32vf103.h" + .byte 0x3 + .byte 0x27 + .byte 0x5 + .byte 0x7 + .4byte .Ldebug_macro2 + .file 6 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral/system_gd32vf103.h" + .byte 0x3 + .byte 0xaf,0x1 + .byte 0x6 + .byte 0x5 + .byte 0x28 + .4byte .LASF341 + .file 7 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\stdint.h" + .byte 0x3 + .byte 0x2e + .byte 0x7 + .byte 0x5 + .byte 0xa + .4byte .LASF342 + .byte 0x3 + .byte 0xc + .byte 0x2 + .byte 0x5 + .byte 0x6 + .4byte .LASF343 + .file 8 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\features.h" + .byte 0x3 + .byte 0x8 + .byte 0x8 + .byte 0x5 + .byte 0x16 + .4byte .LASF344 + .file 9 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\_newlib_version.h" + .byte 0x3 + .byte 0x1c + .byte 0x9 + .byte 0x7 + .4byte .Ldebug_macro3 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro5 + .byte 0x4 + .file 10 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_intsup.h" + .byte 0x3 + .byte 0xd + .byte 0xa + .byte 0x7 + .4byte .Ldebug_macro6 + .byte 0x4 + .byte 0x3 + .byte 0xe + .byte 0x3 + .byte 0x7 + .4byte .Ldebug_macro7 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro8 + .byte 0x4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro9 + .file 11 "board/gd32vf103_libopt.h" + .byte 0x3 + .byte 0xec,0x1 + .byte 0xb + .byte 0x5 + .byte 0x25 + .4byte .LASF527 + .file 12 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_adc.h" + .byte 0x3 + .byte 0x27 + .byte 0xc + .byte 0x5 + .byte 0x25 + .4byte .LASF528 + .byte 0x3 + .byte 0x27 + .byte 0x5 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro10 + .byte 0x4 + .file 13 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_bkp.h" + .byte 0x3 + .byte 0x28 + .byte 0xd + .byte 0x7 + .4byte .Ldebug_macro11 + .byte 0x4 + .file 14 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_can.h" + .byte 0x3 + .byte 0x29 + .byte 0xe + .byte 0x7 + .4byte .Ldebug_macro12 + .byte 0x4 + .file 15 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_crc.h" + .byte 0x3 + .byte 0x2a + .byte 0xf + .byte 0x7 + .4byte .Ldebug_macro13 + .byte 0x4 + .file 16 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dac.h" + .byte 0x3 + .byte 0x2b + .byte 0x10 + .byte 0x7 + .4byte .Ldebug_macro14 + .byte 0x4 + .file 17 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dma.h" + .byte 0x3 + .byte 0x2c + .byte 0x11 + .byte 0x7 + .4byte .Ldebug_macro15 + .byte 0x4 + .byte 0x3 + .byte 0x2d + .byte 0x4 + .byte 0x4 + .file 18 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_exmc.h" + .byte 0x3 + .byte 0x2e + .byte 0x12 + .byte 0x7 + .4byte .Ldebug_macro16 + .byte 0x4 + .file 19 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_exti.h" + .byte 0x3 + .byte 0x2f + .byte 0x13 + .byte 0x7 + .4byte .Ldebug_macro17 + .byte 0x4 + .file 20 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_fmc.h" + .byte 0x3 + .byte 0x30 + .byte 0x14 + .byte 0x7 + .4byte .Ldebug_macro18 + .byte 0x4 + .file 21 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_gpio.h" + .byte 0x3 + .byte 0x31 + .byte 0x15 + .byte 0x7 + .4byte .Ldebug_macro19 + .byte 0x4 + .file 22 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_i2c.h" + .byte 0x3 + .byte 0x32 + .byte 0x16 + .byte 0x7 + .4byte .Ldebug_macro20 + .byte 0x4 + .file 23 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_fwdgt.h" + .byte 0x3 + .byte 0x33 + .byte 0x17 + .byte 0x7 + .4byte .Ldebug_macro21 + .byte 0x4 + .file 24 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dbg.h" + .byte 0x3 + .byte 0x34 + .byte 0x18 + .byte 0x7 + .4byte .Ldebug_macro22 + .byte 0x4 + .file 25 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_pmu.h" + .byte 0x3 + .byte 0x35 + .byte 0x19 + .byte 0x7 + .4byte .Ldebug_macro23 + .byte 0x4 + .file 26 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_rcu.h" + .byte 0x3 + .byte 0x36 + .byte 0x1a + .byte 0x7 + .4byte .Ldebug_macro24 + .byte 0x4 + .file 27 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_rtc.h" + .byte 0x3 + .byte 0x37 + .byte 0x1b + .byte 0x7 + .4byte .Ldebug_macro25 + .byte 0x4 + .file 28 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_spi.h" + .byte 0x3 + .byte 0x38 + .byte 0x1c + .byte 0x7 + .4byte .Ldebug_macro26 + .byte 0x4 + .file 29 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_timer.h" + .byte 0x3 + .byte 0x39 + .byte 0x1d + .byte 0x7 + .4byte .Ldebug_macro27 + .byte 0x4 + .file 30 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_usart.h" + .byte 0x3 + .byte 0x3a + .byte 0x1e + .byte 0x7 + .4byte .Ldebug_macro28 + .byte 0x4 + .file 31 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_wwdgt.h" + .byte 0x3 + .byte 0x3b + .byte 0x1f + .byte 0x7 + .4byte .Ldebug_macro29 + .byte 0x4 + .file 32 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_func.h" + .byte 0x3 + .byte 0x3c + .byte 0x20 + .byte 0x5 + .byte 0x4 + .4byte .LASF3068 + .file 33 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\lib\\gcc\\riscv-none-embed\\10.2.0\\include\\stddef.h" + .byte 0x3 + .byte 0x7 + .byte 0x21 + .byte 0x7 + .4byte .Ldebug_macro30 + .byte 0x4 + .file 34 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_timer.h" + .byte 0x3 + .byte 0x8 + .byte 0x22 + .byte 0x7 + .4byte .Ldebug_macro31 + .byte 0x4 + .file 35 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_eclic.h" + .byte 0x3 + .byte 0x9 + .byte 0x23 + .byte 0x5 + .byte 0x4 + .4byte .LASF3132 + .file 36 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/riscv_const.h" + .byte 0x3 + .byte 0x6 + .byte 0x24 + .byte 0x7 + .4byte .Ldebug_macro32 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro33 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro34 + .byte 0x4 + .byte 0x4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro35 + .byte 0x4 + .file 37 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/riscv_encoding.h" + .byte 0x3 + .byte 0x25 + .byte 0x25 + .byte 0x7 + .4byte .Ldebug_macro36 + .byte 0x4 + .byte 0x5 + .byte 0x27 + .4byte .LASF3996 + .byte 0x5 + .byte 0x28 + .4byte .LASF3997 + .byte 0x4 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103.h.37.6b141d903229e2235d36f2860fb69b6b,comdat +.Ldebug_macro2: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF330 + .byte 0x5 + .byte 0x35 + .4byte .LASF331 + .byte 0x5 + .byte 0x37 + .4byte .LASF332 + .byte 0x5 + .byte 0x38 + .4byte .LASF333 + .byte 0x5 + .byte 0x40 + .4byte .LASF334 + .byte 0x5 + .byte 0x41 + .4byte .LASF335 + .byte 0x5 + .byte 0x49 + .4byte .LASF336 + .byte 0x5 + .byte 0x4e + .4byte .LASF337 + .byte 0x5 + .byte 0x53 + .4byte .LASF338 + .byte 0x5 + .byte 0x58 + .4byte .LASF339 + .byte 0x5 + .byte 0x5d + .4byte .LASF340 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._newlib_version.h.4.bfdf54b0af045d4a71376ae00f63a22c,comdat +.Ldebug_macro3: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4 + .4byte .LASF345 + .byte 0x5 + .byte 0x6 + .4byte .LASF346 + .byte 0x5 + .byte 0x7 + .4byte .LASF347 + .byte 0x5 + .byte 0x8 + .4byte .LASF348 + .byte 0x5 + .byte 0x9 + .4byte .LASF349 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.features.h.33.4ac7543a40bbf4e11e60e29e36a3b28e,comdat +.Ldebug_macro4: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x21 + .4byte .LASF350 + .byte 0x5 + .byte 0x28 + .4byte .LASF351 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF352 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF353 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF354 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF355 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF356 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF357 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF358 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF359 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF360 + .byte 0x5 + .byte 0xca,0x2 + .4byte .LASF361 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._default_types.h.15.247e5cd201eca3442cbf5404108c4935,comdat +.Ldebug_macro5: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xf + .4byte .LASF362 + .byte 0x5 + .byte 0x1a + .4byte .LASF363 + .byte 0x5 + .byte 0x21 + .4byte .LASF364 + .byte 0x5 + .byte 0x2f + .4byte .LASF365 + .byte 0x5 + .byte 0x3d + .4byte .LASF366 + .byte 0x5 + .byte 0x53 + .4byte .LASF367 + .byte 0x5 + .byte 0x6d + .4byte .LASF368 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF369 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF370 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF371 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF372 + .byte 0x6 + .byte 0xf4,0x1 + .4byte .LASF373 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._intsup.h.10.48bafbb683905c4daa4565a85aeeb264,comdat +.Ldebug_macro6: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xa + .4byte .LASF374 + .byte 0x5 + .byte 0x10 + .4byte .LASF375 + .byte 0x6 + .byte 0x2b + .4byte .LASF376 + .byte 0x6 + .byte 0x2c + .4byte .LASF377 + .byte 0x6 + .byte 0x2d + .4byte .LASF378 + .byte 0x6 + .byte 0x2e + .4byte .LASF379 + .byte 0x2 + .byte 0x2f + .string "int" + .byte 0x6 + .byte 0x30 + .4byte .LASF380 + .byte 0x6 + .byte 0x31 + .4byte .LASF381 + .byte 0x6 + .byte 0x32 + .4byte .LASF382 + .byte 0x5 + .byte 0x33 + .4byte .LASF383 + .byte 0x5 + .byte 0x34 + .4byte .LASF384 + .byte 0x5 + .byte 0x35 + .4byte .LASF385 + .byte 0x5 + .byte 0x36 + .4byte .LASF386 + .byte 0x5 + .byte 0x37 + .4byte .LASF387 + .byte 0x5 + .byte 0x38 + .4byte .LASF388 + .byte 0x5 + .byte 0x39 + .4byte .LASF389 + .byte 0x5 + .byte 0x3a + .4byte .LASF390 + .byte 0x5 + .byte 0x43 + .4byte .LASF391 + .byte 0x5 + .byte 0x4a + .4byte .LASF392 + .byte 0x5 + .byte 0x52 + .4byte .LASF393 + .byte 0x5 + .byte 0x5d + .4byte .LASF394 + .byte 0x5 + .byte 0x68 + .4byte .LASF395 + .byte 0x5 + .byte 0x71 + .4byte .LASF396 + .byte 0x5 + .byte 0x78 + .4byte .LASF397 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF398 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF399 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF400 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF401 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF402 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF403 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF404 + .byte 0x6 + .byte 0xb8,0x1 + .4byte .LASF376 + .byte 0x6 + .byte 0xb9,0x1 + .4byte .LASF377 + .byte 0x6 + .byte 0xba,0x1 + .4byte .LASF378 + .byte 0x6 + .byte 0xbb,0x1 + .4byte .LASF379 + .byte 0x2 + .byte 0xbc,0x1 + .string "int" + .byte 0x6 + .byte 0xbd,0x1 + .4byte .LASF382 + .byte 0x6 + .byte 0xc2,0x1 + .4byte .LASF380 + .byte 0x6 + .byte 0xc3,0x1 + .4byte .LASF381 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._stdint.h.10.c24fa3af3bc1706662bb5593a907e841,comdat +.Ldebug_macro7: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xa + .4byte .LASF405 + .byte 0x5 + .byte 0x15 + .4byte .LASF406 + .byte 0x5 + .byte 0x19 + .4byte .LASF407 + .byte 0x5 + .byte 0x1b + .4byte .LASF408 + .byte 0x5 + .byte 0x21 + .4byte .LASF409 + .byte 0x5 + .byte 0x25 + .4byte .LASF410 + .byte 0x5 + .byte 0x27 + .4byte .LASF411 + .byte 0x5 + .byte 0x2d + .4byte .LASF412 + .byte 0x5 + .byte 0x31 + .4byte .LASF413 + .byte 0x5 + .byte 0x33 + .4byte .LASF414 + .byte 0x5 + .byte 0x39 + .4byte .LASF415 + .byte 0x5 + .byte 0x3d + .4byte .LASF416 + .byte 0x5 + .byte 0x3f + .4byte .LASF417 + .byte 0x5 + .byte 0x44 + .4byte .LASF418 + .byte 0x5 + .byte 0x49 + .4byte .LASF419 + .byte 0x5 + .byte 0x4e + .4byte .LASF420 + .byte 0x5 + .byte 0x53 + .4byte .LASF421 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stdint.h.23.d53047a68f4a85177f80b422d52785ed,comdat +.Ldebug_macro8: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x17 + .4byte .LASF422 + .byte 0x5 + .byte 0x1d + .4byte .LASF423 + .byte 0x5 + .byte 0x23 + .4byte .LASF424 + .byte 0x5 + .byte 0x29 + .4byte .LASF425 + .byte 0x5 + .byte 0x35 + .4byte .LASF426 + .byte 0x5 + .byte 0x3f + .4byte .LASF427 + .byte 0x5 + .byte 0x49 + .4byte .LASF428 + .byte 0x5 + .byte 0x53 + .4byte .LASF429 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF430 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF431 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF432 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF433 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF434 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF435 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF436 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF437 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF438 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF439 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF440 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF441 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF442 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF443 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF444 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF445 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF446 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF447 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF448 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF449 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF450 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF451 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF452 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF453 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF454 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF455 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF456 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF457 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF458 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF459 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF460 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF461 + .byte 0x5 + .byte 0x98,0x2 + .4byte .LASF462 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF463 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF464 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF465 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF466 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF467 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF468 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF469 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF470 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF471 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF472 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF473 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF474 + .byte 0x5 + .byte 0xe2,0x2 + .4byte .LASF475 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF476 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF477 + .byte 0x5 + .byte 0xf6,0x2 + .4byte .LASF478 + .byte 0x5 + .byte 0x80,0x3 + .4byte .LASF479 + .byte 0x5 + .byte 0x85,0x3 + .4byte .LASF480 + .byte 0x5 + .byte 0x8c,0x3 + .4byte .LASF481 + .byte 0x5 + .byte 0x8d,0x3 + .4byte .LASF482 + .byte 0x5 + .byte 0x98,0x3 + .4byte .LASF483 + .byte 0x5 + .byte 0x99,0x3 + .4byte .LASF484 + .byte 0x5 + .byte 0xa4,0x3 + .4byte .LASF485 + .byte 0x5 + .byte 0xa5,0x3 + .4byte .LASF486 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF487 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF488 + .byte 0x5 + .byte 0xc1,0x3 + .4byte .LASF489 + .byte 0x5 + .byte 0xc2,0x3 + .4byte .LASF490 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103.h.185.cffba7180870c0512d04c724c6463ab0,comdat +.Ldebug_macro9: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF491 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF492 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF493 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF494 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF495 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF496 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF497 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF498 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF499 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF500 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF501 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF502 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF503 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF504 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF505 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF506 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF507 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF508 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF509 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF510 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF511 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF512 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF513 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF514 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF515 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF516 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF517 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF518 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF519 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF520 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF521 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF522 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF523 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF524 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF525 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF526 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_adc.h.42.14cb8f90e4b5922f8a25d63c78535a21,comdat +.Ldebug_macro10: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x2a + .4byte .LASF529 + .byte 0x5 + .byte 0x2b + .4byte .LASF530 + .byte 0x5 + .byte 0x2e + .4byte .LASF531 + .byte 0x5 + .byte 0x2f + .4byte .LASF532 + .byte 0x5 + .byte 0x30 + .4byte .LASF533 + .byte 0x5 + .byte 0x31 + .4byte .LASF534 + .byte 0x5 + .byte 0x32 + .4byte .LASF535 + .byte 0x5 + .byte 0x33 + .4byte .LASF536 + .byte 0x5 + .byte 0x34 + .4byte .LASF537 + .byte 0x5 + .byte 0x35 + .4byte .LASF538 + .byte 0x5 + .byte 0x36 + .4byte .LASF539 + .byte 0x5 + .byte 0x37 + .4byte .LASF540 + .byte 0x5 + .byte 0x38 + .4byte .LASF541 + .byte 0x5 + .byte 0x39 + .4byte .LASF542 + .byte 0x5 + .byte 0x3a + .4byte .LASF543 + .byte 0x5 + .byte 0x3b + .4byte .LASF544 + .byte 0x5 + .byte 0x3c + .4byte .LASF545 + .byte 0x5 + .byte 0x3d + .4byte .LASF546 + .byte 0x5 + .byte 0x3e + .4byte .LASF547 + .byte 0x5 + .byte 0x3f + .4byte .LASF548 + .byte 0x5 + .byte 0x40 + .4byte .LASF549 + .byte 0x5 + .byte 0x41 + .4byte .LASF550 + .byte 0x5 + .byte 0x42 + .4byte .LASF551 + .byte 0x5 + .byte 0x46 + .4byte .LASF552 + .byte 0x5 + .byte 0x47 + .4byte .LASF553 + .byte 0x5 + .byte 0x48 + .4byte .LASF554 + .byte 0x5 + .byte 0x49 + .4byte .LASF555 + .byte 0x5 + .byte 0x4a + .4byte .LASF556 + .byte 0x5 + .byte 0x4d + .4byte .LASF557 + .byte 0x5 + .byte 0x4e + .4byte .LASF558 + .byte 0x5 + .byte 0x4f + .4byte .LASF559 + .byte 0x5 + .byte 0x50 + .4byte .LASF560 + .byte 0x5 + .byte 0x51 + .4byte .LASF561 + .byte 0x5 + .byte 0x52 + .4byte .LASF562 + .byte 0x5 + .byte 0x53 + .4byte .LASF563 + .byte 0x5 + .byte 0x54 + .4byte .LASF564 + .byte 0x5 + .byte 0x55 + .4byte .LASF565 + .byte 0x5 + .byte 0x56 + .4byte .LASF566 + .byte 0x5 + .byte 0x57 + .4byte .LASF567 + .byte 0x5 + .byte 0x58 + .4byte .LASF568 + .byte 0x5 + .byte 0x59 + .4byte .LASF569 + .byte 0x5 + .byte 0x5c + .4byte .LASF570 + .byte 0x5 + .byte 0x5d + .4byte .LASF571 + .byte 0x5 + .byte 0x5e + .4byte .LASF572 + .byte 0x5 + .byte 0x5f + .4byte .LASF573 + .byte 0x5 + .byte 0x60 + .4byte .LASF574 + .byte 0x5 + .byte 0x61 + .4byte .LASF575 + .byte 0x5 + .byte 0x62 + .4byte .LASF576 + .byte 0x5 + .byte 0x63 + .4byte .LASF577 + .byte 0x5 + .byte 0x64 + .4byte .LASF578 + .byte 0x5 + .byte 0x65 + .4byte .LASF579 + .byte 0x5 + .byte 0x66 + .4byte .LASF580 + .byte 0x5 + .byte 0x67 + .4byte .LASF581 + .byte 0x5 + .byte 0x68 + .4byte .LASF582 + .byte 0x5 + .byte 0x6b + .4byte .LASF583 + .byte 0x5 + .byte 0x6e + .4byte .LASF584 + .byte 0x5 + .byte 0x71 + .4byte .LASF585 + .byte 0x5 + .byte 0x74 + .4byte .LASF586 + .byte 0x5 + .byte 0x77 + .4byte .LASF587 + .byte 0x5 + .byte 0x78 + .4byte .LASF588 + .byte 0x5 + .byte 0x7b + .4byte .LASF589 + .byte 0x5 + .byte 0x7c + .4byte .LASF590 + .byte 0x5 + .byte 0x7f + .4byte .LASF591 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF592 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF593 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF594 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF595 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF596 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF597 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF598 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF599 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF600 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF601 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF602 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF603 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF604 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF605 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF606 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF607 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF608 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF609 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF610 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF611 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF612 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF613 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF614 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF615 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF616 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF617 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF618 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF619 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF620 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF621 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF622 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF623 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF624 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF625 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF626 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF627 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF628 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF629 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF630 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF631 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF632 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF633 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF634 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF635 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF636 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF637 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF638 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF639 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF640 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF641 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF642 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF643 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF644 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF645 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF646 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF647 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF648 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF649 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF650 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF651 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF652 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF653 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF654 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF655 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF656 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF657 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF658 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF659 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF660 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF661 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF662 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF663 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF664 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF665 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF666 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF667 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF668 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF669 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF670 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF671 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF672 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF673 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF674 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF675 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF676 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF677 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF678 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF679 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF680 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF681 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF682 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF683 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF684 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF685 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF686 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF687 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF688 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF689 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF690 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF691 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF692 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF693 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF694 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF695 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF696 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF697 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF698 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF699 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF700 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF701 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF702 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF703 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF704 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF705 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF706 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF707 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF708 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF709 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF710 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_bkp.h.37.565cdaf530a41cd40ed21e5fda39a6ed,comdat +.Ldebug_macro11: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF711 + .byte 0x5 + .byte 0x2a + .4byte .LASF712 + .byte 0x5 + .byte 0x2d + .4byte .LASF713 + .byte 0x5 + .byte 0x2e + .4byte .LASF714 + .byte 0x5 + .byte 0x2f + .4byte .LASF715 + .byte 0x5 + .byte 0x30 + .4byte .LASF716 + .byte 0x5 + .byte 0x31 + .4byte .LASF717 + .byte 0x5 + .byte 0x32 + .4byte .LASF718 + .byte 0x5 + .byte 0x33 + .4byte .LASF719 + .byte 0x5 + .byte 0x34 + .4byte .LASF720 + .byte 0x5 + .byte 0x35 + .4byte .LASF721 + .byte 0x5 + .byte 0x36 + .4byte .LASF722 + .byte 0x5 + .byte 0x37 + .4byte .LASF723 + .byte 0x5 + .byte 0x38 + .4byte .LASF724 + .byte 0x5 + .byte 0x39 + .4byte .LASF725 + .byte 0x5 + .byte 0x3a + .4byte .LASF726 + .byte 0x5 + .byte 0x3b + .4byte .LASF727 + .byte 0x5 + .byte 0x3c + .4byte .LASF728 + .byte 0x5 + .byte 0x3d + .4byte .LASF729 + .byte 0x5 + .byte 0x3e + .4byte .LASF730 + .byte 0x5 + .byte 0x3f + .4byte .LASF731 + .byte 0x5 + .byte 0x40 + .4byte .LASF732 + .byte 0x5 + .byte 0x41 + .4byte .LASF733 + .byte 0x5 + .byte 0x42 + .4byte .LASF734 + .byte 0x5 + .byte 0x43 + .4byte .LASF735 + .byte 0x5 + .byte 0x44 + .4byte .LASF736 + .byte 0x5 + .byte 0x45 + .4byte .LASF737 + .byte 0x5 + .byte 0x46 + .4byte .LASF738 + .byte 0x5 + .byte 0x47 + .4byte .LASF739 + .byte 0x5 + .byte 0x48 + .4byte .LASF740 + .byte 0x5 + .byte 0x49 + .4byte .LASF741 + .byte 0x5 + .byte 0x4a + .4byte .LASF742 + .byte 0x5 + .byte 0x4b + .4byte .LASF743 + .byte 0x5 + .byte 0x4c + .4byte .LASF744 + .byte 0x5 + .byte 0x4d + .4byte .LASF745 + .byte 0x5 + .byte 0x4e + .4byte .LASF746 + .byte 0x5 + .byte 0x4f + .4byte .LASF747 + .byte 0x5 + .byte 0x50 + .4byte .LASF748 + .byte 0x5 + .byte 0x51 + .4byte .LASF749 + .byte 0x5 + .byte 0x52 + .4byte .LASF750 + .byte 0x5 + .byte 0x53 + .4byte .LASF751 + .byte 0x5 + .byte 0x54 + .4byte .LASF752 + .byte 0x5 + .byte 0x55 + .4byte .LASF753 + .byte 0x5 + .byte 0x56 + .4byte .LASF754 + .byte 0x5 + .byte 0x57 + .4byte .LASF755 + .byte 0x5 + .byte 0x58 + .4byte .LASF756 + .byte 0x5 + .byte 0x59 + .4byte .LASF757 + .byte 0x5 + .byte 0x5d + .4byte .LASF758 + .byte 0x5 + .byte 0x60 + .4byte .LASF759 + .byte 0x5 + .byte 0x61 + .4byte .LASF760 + .byte 0x5 + .byte 0x62 + .4byte .LASF761 + .byte 0x5 + .byte 0x63 + .4byte .LASF762 + .byte 0x5 + .byte 0x66 + .4byte .LASF763 + .byte 0x5 + .byte 0x67 + .4byte .LASF764 + .byte 0x5 + .byte 0x6a + .4byte .LASF765 + .byte 0x5 + .byte 0x6b + .4byte .LASF766 + .byte 0x5 + .byte 0x6c + .4byte .LASF767 + .byte 0x5 + .byte 0x6d + .4byte .LASF768 + .byte 0x5 + .byte 0x6e + .4byte .LASF769 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF770 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF771 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF772 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF773 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF774 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF775 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF776 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF777 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF778 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF779 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_can.h.39.9380e444d8240972fa3c91ce629786a4,comdat +.Ldebug_macro12: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF780 + .byte 0x5 + .byte 0x2c + .4byte .LASF781 + .byte 0x5 + .byte 0x2d + .4byte .LASF782 + .byte 0x5 + .byte 0x30 + .4byte .LASF783 + .byte 0x5 + .byte 0x31 + .4byte .LASF784 + .byte 0x5 + .byte 0x32 + .4byte .LASF785 + .byte 0x5 + .byte 0x33 + .4byte .LASF786 + .byte 0x5 + .byte 0x34 + .4byte .LASF787 + .byte 0x5 + .byte 0x35 + .4byte .LASF788 + .byte 0x5 + .byte 0x36 + .4byte .LASF789 + .byte 0x5 + .byte 0x37 + .4byte .LASF790 + .byte 0x5 + .byte 0x38 + .4byte .LASF791 + .byte 0x5 + .byte 0x39 + .4byte .LASF792 + .byte 0x5 + .byte 0x3a + .4byte .LASF793 + .byte 0x5 + .byte 0x3b + .4byte .LASF794 + .byte 0x5 + .byte 0x3c + .4byte .LASF795 + .byte 0x5 + .byte 0x3d + .4byte .LASF796 + .byte 0x5 + .byte 0x3e + .4byte .LASF797 + .byte 0x5 + .byte 0x3f + .4byte .LASF798 + .byte 0x5 + .byte 0x40 + .4byte .LASF799 + .byte 0x5 + .byte 0x41 + .4byte .LASF800 + .byte 0x5 + .byte 0x42 + .4byte .LASF801 + .byte 0x5 + .byte 0x43 + .4byte .LASF802 + .byte 0x5 + .byte 0x44 + .4byte .LASF803 + .byte 0x5 + .byte 0x45 + .4byte .LASF804 + .byte 0x5 + .byte 0x46 + .4byte .LASF805 + .byte 0x5 + .byte 0x47 + .4byte .LASF806 + .byte 0x5 + .byte 0x48 + .4byte .LASF807 + .byte 0x5 + .byte 0x49 + .4byte .LASF808 + .byte 0x5 + .byte 0x4a + .4byte .LASF809 + .byte 0x5 + .byte 0x4b + .4byte .LASF810 + .byte 0x5 + .byte 0x4c + .4byte .LASF811 + .byte 0x5 + .byte 0x4d + .4byte .LASF812 + .byte 0x5 + .byte 0x4e + .4byte .LASF813 + .byte 0x5 + .byte 0x4f + .4byte .LASF814 + .byte 0x5 + .byte 0x50 + .4byte .LASF815 + .byte 0x5 + .byte 0x51 + .4byte .LASF816 + .byte 0x5 + .byte 0x52 + .4byte .LASF817 + .byte 0x5 + .byte 0x53 + .4byte .LASF818 + .byte 0x5 + .byte 0x54 + .4byte .LASF819 + .byte 0x5 + .byte 0x55 + .4byte .LASF820 + .byte 0x5 + .byte 0x56 + .4byte .LASF821 + .byte 0x5 + .byte 0x57 + .4byte .LASF822 + .byte 0x5 + .byte 0x58 + .4byte .LASF823 + .byte 0x5 + .byte 0x59 + .4byte .LASF824 + .byte 0x5 + .byte 0x5a + .4byte .LASF825 + .byte 0x5 + .byte 0x5b + .4byte .LASF826 + .byte 0x5 + .byte 0x5c + .4byte .LASF827 + .byte 0x5 + .byte 0x5d + .4byte .LASF828 + .byte 0x5 + .byte 0x5e + .4byte .LASF829 + .byte 0x5 + .byte 0x5f + .4byte .LASF830 + .byte 0x5 + .byte 0x60 + .4byte .LASF831 + .byte 0x5 + .byte 0x61 + .4byte .LASF832 + .byte 0x5 + .byte 0x62 + .4byte .LASF833 + .byte 0x5 + .byte 0x63 + .4byte .LASF834 + .byte 0x5 + .byte 0x64 + .4byte .LASF835 + .byte 0x5 + .byte 0x65 + .4byte .LASF836 + .byte 0x5 + .byte 0x66 + .4byte .LASF837 + .byte 0x5 + .byte 0x67 + .4byte .LASF838 + .byte 0x5 + .byte 0x68 + .4byte .LASF839 + .byte 0x5 + .byte 0x69 + .4byte .LASF840 + .byte 0x5 + .byte 0x6a + .4byte .LASF841 + .byte 0x5 + .byte 0x6b + .4byte .LASF842 + .byte 0x5 + .byte 0x6c + .4byte .LASF843 + .byte 0x5 + .byte 0x6d + .4byte .LASF844 + .byte 0x5 + .byte 0x6e + .4byte .LASF845 + .byte 0x5 + .byte 0x6f + .4byte .LASF846 + .byte 0x5 + .byte 0x70 + .4byte .LASF847 + .byte 0x5 + .byte 0x71 + .4byte .LASF848 + .byte 0x5 + .byte 0x72 + .4byte .LASF849 + .byte 0x5 + .byte 0x73 + .4byte .LASF850 + .byte 0x5 + .byte 0x74 + .4byte .LASF851 + .byte 0x5 + .byte 0x75 + .4byte .LASF852 + .byte 0x5 + .byte 0x76 + .4byte .LASF853 + .byte 0x5 + .byte 0x77 + .4byte .LASF854 + .byte 0x5 + .byte 0x78 + .4byte .LASF855 + .byte 0x5 + .byte 0x79 + .4byte .LASF856 + .byte 0x5 + .byte 0x7a + .4byte .LASF857 + .byte 0x5 + .byte 0x7b + .4byte .LASF858 + .byte 0x5 + .byte 0x7c + .4byte .LASF859 + .byte 0x5 + .byte 0x7d + .4byte .LASF860 + .byte 0x5 + .byte 0x7e + .4byte .LASF861 + .byte 0x5 + .byte 0x7f + .4byte .LASF862 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF863 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF864 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF865 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF866 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF867 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF868 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF869 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF870 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF871 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF872 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF873 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF874 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF875 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF876 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF877 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF878 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF879 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF880 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF881 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF882 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF883 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF884 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF885 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF886 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF887 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF888 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF889 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF890 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF891 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF892 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF893 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF894 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF895 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF896 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF897 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF898 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF899 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF900 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF901 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF902 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF903 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF904 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF905 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF906 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF907 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF908 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF909 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF910 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF911 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF912 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF913 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF914 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF915 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF916 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF917 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF918 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF919 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF920 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF921 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF922 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF923 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF924 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF925 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF926 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF927 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF928 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF929 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF930 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF931 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF932 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF933 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF934 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF935 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF936 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF937 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF938 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF939 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF940 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF941 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF942 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF943 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF944 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF945 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF946 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF947 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF948 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF949 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF950 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF951 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF952 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF953 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF954 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF955 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF956 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF957 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF958 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF959 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF960 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF961 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF962 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF963 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF964 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF965 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF966 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF967 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF968 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF969 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF970 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF971 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF972 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF973 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF974 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF975 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF976 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF977 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF978 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF979 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF980 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF981 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF982 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF983 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF984 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF985 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF986 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF987 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF988 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF989 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF990 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF991 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF992 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF993 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF994 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF995 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF996 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF997 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF998 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF999 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF1000 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF1001 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF1002 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF1003 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF1004 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF1005 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF1006 + .byte 0x5 + .byte 0xe4,0x3 + .4byte .LASF1007 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF1008 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF1009 + .byte 0x5 + .byte 0xed,0x3 + .4byte .LASF1010 + .byte 0x5 + .byte 0xf0,0x3 + .4byte .LASF1011 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF1012 + .byte 0x5 + .byte 0xf6,0x3 + .4byte .LASF1013 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF1014 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF1015 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF1016 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF1017 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF1018 + .byte 0x5 + .byte 0x88,0x4 + .4byte .LASF1019 + .byte 0x5 + .byte 0x8b,0x4 + .4byte .LASF1020 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF1021 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF1022 + .byte 0x5 + .byte 0x94,0x4 + .4byte .LASF1023 + .byte 0x5 + .byte 0x97,0x4 + .4byte .LASF1024 + .byte 0x5 + .byte 0x9a,0x4 + .4byte .LASF1025 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF1026 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF1027 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF1028 + .byte 0x5 + .byte 0xa6,0x4 + .4byte .LASF1029 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF1030 + .byte 0x5 + .byte 0xac,0x4 + .4byte .LASF1031 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF1032 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF1033 + .byte 0x5 + .byte 0xb5,0x4 + .4byte .LASF1034 + .byte 0x5 + .byte 0xb8,0x4 + .4byte .LASF1035 + .byte 0x5 + .byte 0xbb,0x4 + .4byte .LASF1036 + .byte 0x5 + .byte 0xbe,0x4 + .4byte .LASF1037 + .byte 0x5 + .byte 0xc1,0x4 + .4byte .LASF1038 + .byte 0x5 + .byte 0xc4,0x4 + .4byte .LASF1039 + .byte 0x5 + .byte 0xc7,0x4 + .4byte .LASF1040 + .byte 0x5 + .byte 0xc8,0x4 + .4byte .LASF1041 + .byte 0x5 + .byte 0xc9,0x4 + .4byte .LASF1042 + .byte 0x5 + .byte 0xca,0x4 + .4byte .LASF1043 + .byte 0x5 + .byte 0xcb,0x4 + .4byte .LASF1044 + .byte 0x5 + .byte 0xcc,0x4 + .4byte .LASF1045 + .byte 0x5 + .byte 0xcd,0x4 + .4byte .LASF1046 + .byte 0x5 + .byte 0xce,0x4 + .4byte .LASF1047 + .byte 0x5 + .byte 0xcf,0x4 + .4byte .LASF1048 + .byte 0x5 + .byte 0xd1,0x4 + .4byte .LASF1049 + .byte 0x5 + .byte 0xd4,0x4 + .4byte .LASF1050 + .byte 0x5 + .byte 0xd5,0x4 + .4byte .LASF1051 + .byte 0x5 + .byte 0xd6,0x4 + .4byte .LASF1052 + .byte 0x5 + .byte 0xd7,0x4 + .4byte .LASF1053 + .byte 0x5 + .byte 0xda,0x4 + .4byte .LASF1054 + .byte 0x5 + .byte 0xdb,0x4 + .4byte .LASF1055 + .byte 0x5 + .byte 0xdc,0x4 + .4byte .LASF1056 + .byte 0x5 + .byte 0xdd,0x4 + .4byte .LASF1057 + .byte 0x5 + .byte 0xe0,0x4 + .4byte .LASF1058 + .byte 0x5 + .byte 0xe1,0x4 + .4byte .LASF1059 + .byte 0x5 + .byte 0xe2,0x4 + .4byte .LASF1060 + .byte 0x5 + .byte 0xe3,0x4 + .4byte .LASF1061 + .byte 0x5 + .byte 0xe4,0x4 + .4byte .LASF1062 + .byte 0x5 + .byte 0xe5,0x4 + .4byte .LASF1063 + .byte 0x5 + .byte 0xe6,0x4 + .4byte .LASF1064 + .byte 0x5 + .byte 0xe7,0x4 + .4byte .LASF1065 + .byte 0x5 + .byte 0xe8,0x4 + .4byte .LASF1066 + .byte 0x5 + .byte 0xe9,0x4 + .4byte .LASF1067 + .byte 0x5 + .byte 0xea,0x4 + .4byte .LASF1068 + .byte 0x5 + .byte 0xeb,0x4 + .4byte .LASF1069 + .byte 0x5 + .byte 0xec,0x4 + .4byte .LASF1070 + .byte 0x5 + .byte 0xed,0x4 + .4byte .LASF1071 + .byte 0x5 + .byte 0xee,0x4 + .4byte .LASF1072 + .byte 0x5 + .byte 0xef,0x4 + .4byte .LASF1073 + .byte 0x5 + .byte 0xf2,0x4 + .4byte .LASF1074 + .byte 0x5 + .byte 0xf3,0x4 + .4byte .LASF1075 + .byte 0x5 + .byte 0xf4,0x4 + .4byte .LASF1076 + .byte 0x5 + .byte 0xf5,0x4 + .4byte .LASF1077 + .byte 0x5 + .byte 0xf6,0x4 + .4byte .LASF1078 + .byte 0x5 + .byte 0xf7,0x4 + .4byte .LASF1079 + .byte 0x5 + .byte 0xf8,0x4 + .4byte .LASF1080 + .byte 0x5 + .byte 0xf9,0x4 + .4byte .LASF1081 + .byte 0x5 + .byte 0xfc,0x4 + .4byte .LASF1082 + .byte 0x5 + .byte 0xfd,0x4 + .4byte .LASF1083 + .byte 0x5 + .byte 0xfe,0x4 + .4byte .LASF1084 + .byte 0x5 + .byte 0xff,0x4 + .4byte .LASF1085 + .byte 0x5 + .byte 0x82,0x5 + .4byte .LASF1086 + .byte 0x5 + .byte 0x83,0x5 + .4byte .LASF1087 + .byte 0x5 + .byte 0x86,0x5 + .4byte .LASF1088 + .byte 0x5 + .byte 0x87,0x5 + .4byte .LASF1089 + .byte 0x5 + .byte 0x8a,0x5 + .4byte .LASF1090 + .byte 0x5 + .byte 0x8c,0x5 + .4byte .LASF1091 + .byte 0x5 + .byte 0x8d,0x5 + .4byte .LASF1092 + .byte 0x5 + .byte 0x90,0x5 + .4byte .LASF1093 + .byte 0x5 + .byte 0x91,0x5 + .4byte .LASF1094 + .byte 0x5 + .byte 0x92,0x5 + .4byte .LASF1095 + .byte 0x5 + .byte 0x95,0x5 + .4byte .LASF1096 + .byte 0x5 + .byte 0x96,0x5 + .4byte .LASF1097 + .byte 0x5 + .byte 0x99,0x5 + .4byte .LASF1098 + .byte 0x5 + .byte 0x9a,0x5 + .4byte .LASF1099 + .byte 0x5 + .byte 0x9d,0x5 + .4byte .LASF1100 + .byte 0x5 + .byte 0xa0,0x5 + .4byte .LASF1101 + .byte 0x5 + .byte 0xa1,0x5 + .4byte .LASF1102 + .byte 0x5 + .byte 0xa4,0x5 + .4byte .LASF1103 + .byte 0x5 + .byte 0xa7,0x5 + .4byte .LASF1104 + .byte 0x5 + .byte 0xa8,0x5 + .4byte .LASF1105 + .byte 0x5 + .byte 0xa9,0x5 + .4byte .LASF1106 + .byte 0x5 + .byte 0xaa,0x5 + .4byte .LASF1107 + .byte 0x5 + .byte 0xab,0x5 + .4byte .LASF1108 + .byte 0x5 + .byte 0xac,0x5 + .4byte .LASF1109 + .byte 0x5 + .byte 0xad,0x5 + .4byte .LASF1110 + .byte 0x5 + .byte 0xae,0x5 + .4byte .LASF1111 + .byte 0x5 + .byte 0xaf,0x5 + .4byte .LASF1112 + .byte 0x5 + .byte 0xb0,0x5 + .4byte .LASF1113 + .byte 0x5 + .byte 0xb1,0x5 + .4byte .LASF1114 + .byte 0x5 + .byte 0xb2,0x5 + .4byte .LASF1115 + .byte 0x5 + .byte 0xb3,0x5 + .4byte .LASF1116 + .byte 0x5 + .byte 0xb4,0x5 + .4byte .LASF1117 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_crc.h.37.f77f53f1516fc65e49eac544ab82df8c,comdat +.Ldebug_macro13: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1118 + .byte 0x5 + .byte 0x2a + .4byte .LASF1119 + .byte 0x5 + .byte 0x2d + .4byte .LASF1120 + .byte 0x5 + .byte 0x2e + .4byte .LASF1121 + .byte 0x5 + .byte 0x2f + .4byte .LASF1122 + .byte 0x5 + .byte 0x33 + .4byte .LASF1123 + .byte 0x5 + .byte 0x36 + .4byte .LASF1124 + .byte 0x5 + .byte 0x39 + .4byte .LASF1125 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dac.h.37.c64e29f692c863eb577e59c8c0ad940a,comdat +.Ldebug_macro14: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1126 + .byte 0x5 + .byte 0x2a + .4byte .LASF1127 + .byte 0x5 + .byte 0x2b + .4byte .LASF1128 + .byte 0x5 + .byte 0x2c + .4byte .LASF1129 + .byte 0x5 + .byte 0x2f + .4byte .LASF1130 + .byte 0x5 + .byte 0x30 + .4byte .LASF1131 + .byte 0x5 + .byte 0x31 + .4byte .LASF1132 + .byte 0x5 + .byte 0x32 + .4byte .LASF1133 + .byte 0x5 + .byte 0x33 + .4byte .LASF1134 + .byte 0x5 + .byte 0x34 + .4byte .LASF1135 + .byte 0x5 + .byte 0x35 + .4byte .LASF1136 + .byte 0x5 + .byte 0x36 + .4byte .LASF1137 + .byte 0x5 + .byte 0x37 + .4byte .LASF1138 + .byte 0x5 + .byte 0x38 + .4byte .LASF1139 + .byte 0x5 + .byte 0x39 + .4byte .LASF1140 + .byte 0x5 + .byte 0x3a + .4byte .LASF1141 + .byte 0x5 + .byte 0x3b + .4byte .LASF1142 + .byte 0x5 + .byte 0x3f + .4byte .LASF1143 + .byte 0x5 + .byte 0x40 + .4byte .LASF1144 + .byte 0x5 + .byte 0x41 + .4byte .LASF1145 + .byte 0x5 + .byte 0x42 + .4byte .LASF1146 + .byte 0x5 + .byte 0x43 + .4byte .LASF1147 + .byte 0x5 + .byte 0x44 + .4byte .LASF1148 + .byte 0x5 + .byte 0x45 + .4byte .LASF1149 + .byte 0x5 + .byte 0x46 + .4byte .LASF1150 + .byte 0x5 + .byte 0x47 + .4byte .LASF1151 + .byte 0x5 + .byte 0x48 + .4byte .LASF1152 + .byte 0x5 + .byte 0x49 + .4byte .LASF1153 + .byte 0x5 + .byte 0x4a + .4byte .LASF1154 + .byte 0x5 + .byte 0x4b + .4byte .LASF1155 + .byte 0x5 + .byte 0x4c + .4byte .LASF1156 + .byte 0x5 + .byte 0x4f + .4byte .LASF1157 + .byte 0x5 + .byte 0x50 + .4byte .LASF1158 + .byte 0x5 + .byte 0x53 + .4byte .LASF1159 + .byte 0x5 + .byte 0x56 + .4byte .LASF1160 + .byte 0x5 + .byte 0x59 + .4byte .LASF1161 + .byte 0x5 + .byte 0x5c + .4byte .LASF1162 + .byte 0x5 + .byte 0x5f + .4byte .LASF1163 + .byte 0x5 + .byte 0x62 + .4byte .LASF1164 + .byte 0x5 + .byte 0x65 + .4byte .LASF1165 + .byte 0x5 + .byte 0x66 + .4byte .LASF1166 + .byte 0x5 + .byte 0x69 + .4byte .LASF1167 + .byte 0x5 + .byte 0x6a + .4byte .LASF1168 + .byte 0x5 + .byte 0x6d + .4byte .LASF1169 + .byte 0x5 + .byte 0x6e + .4byte .LASF1170 + .byte 0x5 + .byte 0x71 + .4byte .LASF1171 + .byte 0x5 + .byte 0x74 + .4byte .LASF1172 + .byte 0x5 + .byte 0x78 + .4byte .LASF1173 + .byte 0x5 + .byte 0x79 + .4byte .LASF1174 + .byte 0x5 + .byte 0x7a + .4byte .LASF1175 + .byte 0x5 + .byte 0x7b + .4byte .LASF1176 + .byte 0x5 + .byte 0x7c + .4byte .LASF1177 + .byte 0x5 + .byte 0x7d + .4byte .LASF1178 + .byte 0x5 + .byte 0x7e + .4byte .LASF1179 + .byte 0x5 + .byte 0x7f + .4byte .LASF1180 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF1181 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF1182 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF1183 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1184 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1185 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF1186 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1187 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1188 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF1189 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF1190 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1191 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1192 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1193 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF1194 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF1195 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF1196 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF1197 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1198 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1199 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1200 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1201 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1202 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF1203 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF1204 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1205 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1206 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1207 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1208 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1209 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1210 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1211 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1212 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1213 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1214 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF1215 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1216 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1217 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1218 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1219 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1220 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1221 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF1222 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF1223 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1224 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1225 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1226 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dma.h.38.2c314170096cba83b58f6eccfc84a5f7,comdat +.Ldebug_macro15: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x26 + .4byte .LASF1227 + .byte 0x5 + .byte 0x2b + .4byte .LASF1228 + .byte 0x5 + .byte 0x2c + .4byte .LASF1229 + .byte 0x5 + .byte 0x2f + .4byte .LASF1230 + .byte 0x5 + .byte 0x30 + .4byte .LASF1231 + .byte 0x5 + .byte 0x32 + .4byte .LASF1232 + .byte 0x5 + .byte 0x33 + .4byte .LASF1233 + .byte 0x5 + .byte 0x34 + .4byte .LASF1234 + .byte 0x5 + .byte 0x35 + .4byte .LASF1235 + .byte 0x5 + .byte 0x37 + .4byte .LASF1236 + .byte 0x5 + .byte 0x38 + .4byte .LASF1237 + .byte 0x5 + .byte 0x39 + .4byte .LASF1238 + .byte 0x5 + .byte 0x3a + .4byte .LASF1239 + .byte 0x5 + .byte 0x3c + .4byte .LASF1240 + .byte 0x5 + .byte 0x3d + .4byte .LASF1241 + .byte 0x5 + .byte 0x3e + .4byte .LASF1242 + .byte 0x5 + .byte 0x3f + .4byte .LASF1243 + .byte 0x5 + .byte 0x41 + .4byte .LASF1244 + .byte 0x5 + .byte 0x42 + .4byte .LASF1245 + .byte 0x5 + .byte 0x43 + .4byte .LASF1246 + .byte 0x5 + .byte 0x44 + .4byte .LASF1247 + .byte 0x5 + .byte 0x46 + .4byte .LASF1248 + .byte 0x5 + .byte 0x47 + .4byte .LASF1249 + .byte 0x5 + .byte 0x48 + .4byte .LASF1250 + .byte 0x5 + .byte 0x49 + .4byte .LASF1251 + .byte 0x5 + .byte 0x4b + .4byte .LASF1252 + .byte 0x5 + .byte 0x4c + .4byte .LASF1253 + .byte 0x5 + .byte 0x4d + .4byte .LASF1254 + .byte 0x5 + .byte 0x4e + .4byte .LASF1255 + .byte 0x5 + .byte 0x50 + .4byte .LASF1256 + .byte 0x5 + .byte 0x51 + .4byte .LASF1257 + .byte 0x5 + .byte 0x52 + .4byte .LASF1258 + .byte 0x5 + .byte 0x53 + .4byte .LASF1259 + .byte 0x5 + .byte 0x57 + .4byte .LASF1260 + .byte 0x5 + .byte 0x58 + .4byte .LASF1261 + .byte 0x5 + .byte 0x59 + .4byte .LASF1262 + .byte 0x5 + .byte 0x5a + .4byte .LASF1263 + .byte 0x5 + .byte 0x5d + .4byte .LASF1264 + .byte 0x5 + .byte 0x5e + .4byte .LASF1265 + .byte 0x5 + .byte 0x5f + .4byte .LASF1266 + .byte 0x5 + .byte 0x60 + .4byte .LASF1267 + .byte 0x5 + .byte 0x63 + .4byte .LASF1268 + .byte 0x5 + .byte 0x64 + .4byte .LASF1269 + .byte 0x5 + .byte 0x65 + .4byte .LASF1270 + .byte 0x5 + .byte 0x66 + .4byte .LASF1271 + .byte 0x5 + .byte 0x67 + .4byte .LASF1272 + .byte 0x5 + .byte 0x68 + .4byte .LASF1273 + .byte 0x5 + .byte 0x69 + .4byte .LASF1274 + .byte 0x5 + .byte 0x6a + .4byte .LASF1275 + .byte 0x5 + .byte 0x6b + .4byte .LASF1276 + .byte 0x5 + .byte 0x6c + .4byte .LASF1277 + .byte 0x5 + .byte 0x6d + .4byte .LASF1278 + .byte 0x5 + .byte 0x6e + .4byte .LASF1279 + .byte 0x5 + .byte 0x71 + .4byte .LASF1280 + .byte 0x5 + .byte 0x74 + .4byte .LASF1281 + .byte 0x5 + .byte 0x77 + .4byte .LASF1282 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1283 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1284 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1285 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1286 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1287 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1288 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1289 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1290 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1291 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1292 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1293 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1294 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1295 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1296 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1297 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1298 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1299 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1300 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1301 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1302 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1303 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF1304 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1305 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1306 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1307 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1308 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1309 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF1310 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF1311 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF1312 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF1313 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF1314 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1315 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF1316 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF1317 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1318 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1319 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF1320 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF1321 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1322 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF1323 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1324 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1325 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_exmc.h.37.96699be4b910beb81cdfd35650becbf1,comdat +.Ldebug_macro16: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1326 + .byte 0x5 + .byte 0x2a + .4byte .LASF1327 + .byte 0x5 + .byte 0x2e + .4byte .LASF1328 + .byte 0x5 + .byte 0x2f + .4byte .LASF1329 + .byte 0x5 + .byte 0x30 + .4byte .LASF1330 + .byte 0x5 + .byte 0x35 + .4byte .LASF1331 + .byte 0x5 + .byte 0x36 + .4byte .LASF1332 + .byte 0x5 + .byte 0x37 + .4byte .LASF1333 + .byte 0x5 + .byte 0x38 + .4byte .LASF1334 + .byte 0x5 + .byte 0x39 + .4byte .LASF1335 + .byte 0x5 + .byte 0x3a + .4byte .LASF1336 + .byte 0x5 + .byte 0x3b + .4byte .LASF1337 + .byte 0x5 + .byte 0x3c + .4byte .LASF1338 + .byte 0x5 + .byte 0x3d + .4byte .LASF1339 + .byte 0x5 + .byte 0x40 + .4byte .LASF1340 + .byte 0x5 + .byte 0x41 + .4byte .LASF1341 + .byte 0x5 + .byte 0x42 + .4byte .LASF1342 + .byte 0x5 + .byte 0x43 + .4byte .LASF1343 + .byte 0x5 + .byte 0x5e + .4byte .LASF1344 + .byte 0x5 + .byte 0x5f + .4byte .LASF1345 + .byte 0x5 + .byte 0x62 + .4byte .LASF1346 + .byte 0x5 + .byte 0x63 + .4byte .LASF1347 + .byte 0x5 + .byte 0x64 + .4byte .LASF1348 + .byte 0x5 + .byte 0x67 + .4byte .LASF1349 + .byte 0x5 + .byte 0x68 + .4byte .LASF1350 + .byte 0x5 + .byte 0x69 + .4byte .LASF1351 + .byte 0x5 + .byte 0x6a + .4byte .LASF1352 + .byte 0x5 + .byte 0x6d + .4byte .LASF1353 + .byte 0x5 + .byte 0x70 + .4byte .LASF1354 + .byte 0x5 + .byte 0x71 + .4byte .LASF1355 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_exti.h.37.a48547bbdeb43685ea30e1aa7e1bc0e9,comdat +.Ldebug_macro17: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1356 + .byte 0x5 + .byte 0x2a + .4byte .LASF1357 + .byte 0x5 + .byte 0x2d + .4byte .LASF1358 + .byte 0x5 + .byte 0x2e + .4byte .LASF1359 + .byte 0x5 + .byte 0x2f + .4byte .LASF1360 + .byte 0x5 + .byte 0x30 + .4byte .LASF1361 + .byte 0x5 + .byte 0x31 + .4byte .LASF1362 + .byte 0x5 + .byte 0x32 + .4byte .LASF1363 + .byte 0x5 + .byte 0x36 + .4byte .LASF1364 + .byte 0x5 + .byte 0x37 + .4byte .LASF1365 + .byte 0x5 + .byte 0x38 + .4byte .LASF1366 + .byte 0x5 + .byte 0x39 + .4byte .LASF1367 + .byte 0x5 + .byte 0x3a + .4byte .LASF1368 + .byte 0x5 + .byte 0x3b + .4byte .LASF1369 + .byte 0x5 + .byte 0x3c + .4byte .LASF1370 + .byte 0x5 + .byte 0x3d + .4byte .LASF1371 + .byte 0x5 + .byte 0x3e + .4byte .LASF1372 + .byte 0x5 + .byte 0x3f + .4byte .LASF1373 + .byte 0x5 + .byte 0x40 + .4byte .LASF1374 + .byte 0x5 + .byte 0x41 + .4byte .LASF1375 + .byte 0x5 + .byte 0x42 + .4byte .LASF1376 + .byte 0x5 + .byte 0x43 + .4byte .LASF1377 + .byte 0x5 + .byte 0x44 + .4byte .LASF1378 + .byte 0x5 + .byte 0x45 + .4byte .LASF1379 + .byte 0x5 + .byte 0x46 + .4byte .LASF1380 + .byte 0x5 + .byte 0x47 + .4byte .LASF1381 + .byte 0x5 + .byte 0x48 + .4byte .LASF1382 + .byte 0x5 + .byte 0x4b + .4byte .LASF1383 + .byte 0x5 + .byte 0x4c + .4byte .LASF1384 + .byte 0x5 + .byte 0x4d + .4byte .LASF1385 + .byte 0x5 + .byte 0x4e + .4byte .LASF1386 + .byte 0x5 + .byte 0x4f + .4byte .LASF1387 + .byte 0x5 + .byte 0x50 + .4byte .LASF1388 + .byte 0x5 + .byte 0x51 + .4byte .LASF1389 + .byte 0x5 + .byte 0x52 + .4byte .LASF1390 + .byte 0x5 + .byte 0x53 + .4byte .LASF1391 + .byte 0x5 + .byte 0x54 + .4byte .LASF1392 + .byte 0x5 + .byte 0x55 + .4byte .LASF1393 + .byte 0x5 + .byte 0x56 + .4byte .LASF1394 + .byte 0x5 + .byte 0x57 + .4byte .LASF1395 + .byte 0x5 + .byte 0x58 + .4byte .LASF1396 + .byte 0x5 + .byte 0x59 + .4byte .LASF1397 + .byte 0x5 + .byte 0x5a + .4byte .LASF1398 + .byte 0x5 + .byte 0x5b + .4byte .LASF1399 + .byte 0x5 + .byte 0x5c + .4byte .LASF1400 + .byte 0x5 + .byte 0x5d + .4byte .LASF1401 + .byte 0x5 + .byte 0x60 + .4byte .LASF1402 + .byte 0x5 + .byte 0x61 + .4byte .LASF1403 + .byte 0x5 + .byte 0x62 + .4byte .LASF1404 + .byte 0x5 + .byte 0x63 + .4byte .LASF1405 + .byte 0x5 + .byte 0x64 + .4byte .LASF1406 + .byte 0x5 + .byte 0x65 + .4byte .LASF1407 + .byte 0x5 + .byte 0x66 + .4byte .LASF1408 + .byte 0x5 + .byte 0x67 + .4byte .LASF1409 + .byte 0x5 + .byte 0x68 + .4byte .LASF1410 + .byte 0x5 + .byte 0x69 + .4byte .LASF1411 + .byte 0x5 + .byte 0x6a + .4byte .LASF1412 + .byte 0x5 + .byte 0x6b + .4byte .LASF1413 + .byte 0x5 + .byte 0x6c + .4byte .LASF1414 + .byte 0x5 + .byte 0x6d + .4byte .LASF1415 + .byte 0x5 + .byte 0x6e + .4byte .LASF1416 + .byte 0x5 + .byte 0x6f + .4byte .LASF1417 + .byte 0x5 + .byte 0x70 + .4byte .LASF1418 + .byte 0x5 + .byte 0x71 + .4byte .LASF1419 + .byte 0x5 + .byte 0x72 + .4byte .LASF1420 + .byte 0x5 + .byte 0x75 + .4byte .LASF1421 + .byte 0x5 + .byte 0x76 + .4byte .LASF1422 + .byte 0x5 + .byte 0x77 + .4byte .LASF1423 + .byte 0x5 + .byte 0x78 + .4byte .LASF1424 + .byte 0x5 + .byte 0x79 + .4byte .LASF1425 + .byte 0x5 + .byte 0x7a + .4byte .LASF1426 + .byte 0x5 + .byte 0x7b + .4byte .LASF1427 + .byte 0x5 + .byte 0x7c + .4byte .LASF1428 + .byte 0x5 + .byte 0x7d + .4byte .LASF1429 + .byte 0x5 + .byte 0x7e + .4byte .LASF1430 + .byte 0x5 + .byte 0x7f + .4byte .LASF1431 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF1432 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF1433 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF1434 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF1435 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF1436 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1437 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1438 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF1439 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1440 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1441 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF1442 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF1443 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1444 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1445 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1446 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF1447 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF1448 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF1449 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF1450 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1451 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF1452 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF1453 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1454 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1455 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1456 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1457 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF1458 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1459 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1460 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1461 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1462 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1463 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF1464 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF1465 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1466 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1467 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1468 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1469 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1470 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF1471 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1472 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1473 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1474 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1475 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1476 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1477 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_fmc.h.39.cad093dc97f9756dd7521b8e6602cd12,comdat +.Ldebug_macro18: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF1478 + .byte 0x5 + .byte 0x2c + .4byte .LASF1479 + .byte 0x5 + .byte 0x2d + .4byte .LASF1480 + .byte 0x5 + .byte 0x30 + .4byte .LASF1481 + .byte 0x5 + .byte 0x31 + .4byte .LASF1482 + .byte 0x5 + .byte 0x32 + .4byte .LASF1483 + .byte 0x5 + .byte 0x33 + .4byte .LASF1484 + .byte 0x5 + .byte 0x34 + .4byte .LASF1485 + .byte 0x5 + .byte 0x35 + .4byte .LASF1486 + .byte 0x5 + .byte 0x36 + .4byte .LASF1487 + .byte 0x5 + .byte 0x37 + .4byte .LASF1488 + .byte 0x5 + .byte 0x38 + .4byte .LASF1489 + .byte 0x5 + .byte 0x3a + .4byte .LASF1490 + .byte 0x5 + .byte 0x3b + .4byte .LASF1491 + .byte 0x5 + .byte 0x3c + .4byte .LASF1492 + .byte 0x5 + .byte 0x3d + .4byte .LASF1493 + .byte 0x5 + .byte 0x3e + .4byte .LASF1494 + .byte 0x5 + .byte 0x3f + .4byte .LASF1495 + .byte 0x5 + .byte 0x43 + .4byte .LASF1496 + .byte 0x5 + .byte 0x46 + .4byte .LASF1497 + .byte 0x5 + .byte 0x49 + .4byte .LASF1498 + .byte 0x5 + .byte 0x4c + .4byte .LASF1499 + .byte 0x5 + .byte 0x4d + .4byte .LASF1500 + .byte 0x5 + .byte 0x4e + .4byte .LASF1501 + .byte 0x5 + .byte 0x4f + .4byte .LASF1502 + .byte 0x5 + .byte 0x52 + .4byte .LASF1503 + .byte 0x5 + .byte 0x53 + .4byte .LASF1504 + .byte 0x5 + .byte 0x54 + .4byte .LASF1505 + .byte 0x5 + .byte 0x55 + .4byte .LASF1506 + .byte 0x5 + .byte 0x56 + .4byte .LASF1507 + .byte 0x5 + .byte 0x57 + .4byte .LASF1508 + .byte 0x5 + .byte 0x58 + .4byte .LASF1509 + .byte 0x5 + .byte 0x59 + .4byte .LASF1510 + .byte 0x5 + .byte 0x5a + .4byte .LASF1511 + .byte 0x5 + .byte 0x5b + .4byte .LASF1512 + .byte 0x5 + .byte 0x5e + .4byte .LASF1513 + .byte 0x5 + .byte 0x61 + .4byte .LASF1514 + .byte 0x5 + .byte 0x62 + .4byte .LASF1515 + .byte 0x5 + .byte 0x63 + .4byte .LASF1516 + .byte 0x5 + .byte 0x64 + .4byte .LASF1517 + .byte 0x5 + .byte 0x67 + .4byte .LASF1518 + .byte 0x5 + .byte 0x6a + .4byte .LASF1519 + .byte 0x5 + .byte 0x6d + .4byte .LASF1520 + .byte 0x5 + .byte 0x71 + .4byte .LASF1521 + .byte 0x5 + .byte 0x72 + .4byte .LASF1522 + .byte 0x5 + .byte 0x73 + .4byte .LASF1523 + .byte 0x5 + .byte 0x74 + .4byte .LASF1524 + .byte 0x5 + .byte 0x75 + .4byte .LASF1525 + .byte 0x5 + .byte 0x76 + .4byte .LASF1526 + .byte 0x5 + .byte 0x77 + .4byte .LASF1527 + .byte 0x5 + .byte 0x78 + .4byte .LASF1528 + .byte 0x5 + .byte 0x7b + .4byte .LASF1529 + .byte 0x5 + .byte 0x7c + .4byte .LASF1530 + .byte 0x5 + .byte 0x7d + .4byte .LASF1531 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1532 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1533 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1534 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1535 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1536 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1537 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1538 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1539 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1540 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1541 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1542 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1543 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF1544 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1545 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1546 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1547 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1548 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1549 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF1550 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF1551 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1552 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1553 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF1554 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1555 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1556 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF1557 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF1558 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF1559 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1560 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1561 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF1562 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF1563 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1564 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1565 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF1566 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF1567 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1568 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1569 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF1570 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF1571 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF1572 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1573 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF1574 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF1575 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1576 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1577 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF1578 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF1579 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF1580 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1581 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1582 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF1583 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF1584 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF1585 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF1586 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF1587 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF1588 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF1589 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1590 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1591 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_gpio.h.37.1c15e50fe61c140e18cbdcae4553472f,comdat +.Ldebug_macro19: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1592 + .byte 0x5 + .byte 0x2a + .4byte .LASF1593 + .byte 0x5 + .byte 0x2b + .4byte .LASF1594 + .byte 0x5 + .byte 0x2c + .4byte .LASF1595 + .byte 0x5 + .byte 0x2d + .4byte .LASF1596 + .byte 0x5 + .byte 0x2e + .4byte .LASF1597 + .byte 0x5 + .byte 0x31 + .4byte .LASF1598 + .byte 0x5 + .byte 0x36 + .4byte .LASF1599 + .byte 0x5 + .byte 0x37 + .4byte .LASF1600 + .byte 0x5 + .byte 0x38 + .4byte .LASF1601 + .byte 0x5 + .byte 0x39 + .4byte .LASF1602 + .byte 0x5 + .byte 0x3a + .4byte .LASF1603 + .byte 0x5 + .byte 0x3b + .4byte .LASF1604 + .byte 0x5 + .byte 0x3c + .4byte .LASF1605 + .byte 0x5 + .byte 0x3f + .4byte .LASF1606 + .byte 0x5 + .byte 0x40 + .4byte .LASF1607 + .byte 0x5 + .byte 0x41 + .4byte .LASF1608 + .byte 0x5 + .byte 0x42 + .4byte .LASF1609 + .byte 0x5 + .byte 0x43 + .4byte .LASF1610 + .byte 0x5 + .byte 0x44 + .4byte .LASF1611 + .byte 0x5 + .byte 0x45 + .4byte .LASF1612 + .byte 0x5 + .byte 0x49 + .4byte .LASF1613 + .byte 0x5 + .byte 0x4a + .4byte .LASF1614 + .byte 0x5 + .byte 0x4b + .4byte .LASF1615 + .byte 0x5 + .byte 0x4c + .4byte .LASF1616 + .byte 0x5 + .byte 0x4d + .4byte .LASF1617 + .byte 0x5 + .byte 0x4e + .4byte .LASF1618 + .byte 0x5 + .byte 0x4f + .4byte .LASF1619 + .byte 0x5 + .byte 0x50 + .4byte .LASF1620 + .byte 0x5 + .byte 0x51 + .4byte .LASF1621 + .byte 0x5 + .byte 0x52 + .4byte .LASF1622 + .byte 0x5 + .byte 0x53 + .4byte .LASF1623 + .byte 0x5 + .byte 0x54 + .4byte .LASF1624 + .byte 0x5 + .byte 0x55 + .4byte .LASF1625 + .byte 0x5 + .byte 0x56 + .4byte .LASF1626 + .byte 0x5 + .byte 0x57 + .4byte .LASF1627 + .byte 0x5 + .byte 0x58 + .4byte .LASF1628 + .byte 0x5 + .byte 0x5b + .4byte .LASF1629 + .byte 0x5 + .byte 0x5c + .4byte .LASF1630 + .byte 0x5 + .byte 0x5d + .4byte .LASF1631 + .byte 0x5 + .byte 0x5e + .4byte .LASF1632 + .byte 0x5 + .byte 0x5f + .4byte .LASF1633 + .byte 0x5 + .byte 0x60 + .4byte .LASF1634 + .byte 0x5 + .byte 0x61 + .4byte .LASF1635 + .byte 0x5 + .byte 0x62 + .4byte .LASF1636 + .byte 0x5 + .byte 0x63 + .4byte .LASF1637 + .byte 0x5 + .byte 0x64 + .4byte .LASF1638 + .byte 0x5 + .byte 0x65 + .4byte .LASF1639 + .byte 0x5 + .byte 0x66 + .4byte .LASF1640 + .byte 0x5 + .byte 0x67 + .4byte .LASF1641 + .byte 0x5 + .byte 0x68 + .4byte .LASF1642 + .byte 0x5 + .byte 0x69 + .4byte .LASF1643 + .byte 0x5 + .byte 0x6a + .4byte .LASF1644 + .byte 0x5 + .byte 0x6d + .4byte .LASF1645 + .byte 0x5 + .byte 0x6e + .4byte .LASF1646 + .byte 0x5 + .byte 0x6f + .4byte .LASF1647 + .byte 0x5 + .byte 0x70 + .4byte .LASF1648 + .byte 0x5 + .byte 0x71 + .4byte .LASF1649 + .byte 0x5 + .byte 0x72 + .4byte .LASF1650 + .byte 0x5 + .byte 0x73 + .4byte .LASF1651 + .byte 0x5 + .byte 0x74 + .4byte .LASF1652 + .byte 0x5 + .byte 0x75 + .4byte .LASF1653 + .byte 0x5 + .byte 0x76 + .4byte .LASF1654 + .byte 0x5 + .byte 0x77 + .4byte .LASF1655 + .byte 0x5 + .byte 0x78 + .4byte .LASF1656 + .byte 0x5 + .byte 0x79 + .4byte .LASF1657 + .byte 0x5 + .byte 0x7a + .4byte .LASF1658 + .byte 0x5 + .byte 0x7b + .4byte .LASF1659 + .byte 0x5 + .byte 0x7c + .4byte .LASF1660 + .byte 0x5 + .byte 0x7f + .4byte .LASF1661 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF1662 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF1663 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF1664 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF1665 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF1666 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1667 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1668 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF1669 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF1670 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF1671 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1672 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1673 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF1674 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF1675 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1676 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF1677 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF1678 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF1679 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF1680 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1681 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF1682 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF1683 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1684 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1685 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1686 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1687 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF1688 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF1689 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1690 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1691 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1692 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1693 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1694 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1695 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF1696 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF1697 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1698 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1699 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1700 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1701 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1702 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF1703 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1704 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1705 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1706 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1707 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1708 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF1709 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1710 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1711 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1712 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF1713 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF1714 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF1715 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1716 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF1717 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF1718 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1719 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1720 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF1721 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF1722 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1723 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1724 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF1725 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF1726 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF1727 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF1728 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1729 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF1730 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF1731 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1732 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF1733 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF1734 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF1735 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF1736 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1737 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1738 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF1739 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF1740 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1741 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF1742 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1743 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1744 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1745 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1746 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF1747 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF1748 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1749 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1750 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF1751 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF1752 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF1753 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1754 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF1755 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF1756 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1757 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1758 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF1759 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1760 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1761 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF1762 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF1763 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF1764 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF1765 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF1766 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF1767 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF1768 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1769 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1770 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF1771 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF1772 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF1773 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF1774 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF1775 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF1776 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF1777 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF1778 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF1779 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF1780 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF1781 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF1782 + .byte 0x5 + .byte 0x94,0x2 + .4byte .LASF1783 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF1784 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF1785 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF1786 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF1787 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF1788 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF1789 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF1790 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF1791 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF1792 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF1793 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF1794 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF1795 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF1796 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF1797 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF1798 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF1799 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF1800 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF1801 + .byte 0x5 + .byte 0xaf,0x2 + .4byte .LASF1802 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF1803 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF1804 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF1805 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF1806 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF1807 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF1808 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF1809 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF1810 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF1811 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF1812 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF1813 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF1814 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF1815 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF1816 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF1817 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF1818 + .byte 0x5 + .byte 0xc2,0x2 + .4byte .LASF1819 + .byte 0x5 + .byte 0xc3,0x2 + .4byte .LASF1820 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF1821 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF1822 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF1823 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF1824 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF1825 + .byte 0x5 + .byte 0xc9,0x2 + .4byte .LASF1826 + .byte 0x5 + .byte 0xca,0x2 + .4byte .LASF1827 + .byte 0x5 + .byte 0xcb,0x2 + .4byte .LASF1828 + .byte 0x5 + .byte 0xcc,0x2 + .4byte .LASF1829 + .byte 0x5 + .byte 0xcd,0x2 + .4byte .LASF1830 + .byte 0x5 + .byte 0xce,0x2 + .4byte .LASF1831 + .byte 0x5 + .byte 0xd1,0x2 + .4byte .LASF1832 + .byte 0x5 + .byte 0xd2,0x2 + .4byte .LASF1833 + .byte 0x5 + .byte 0xd3,0x2 + .4byte .LASF1834 + .byte 0x5 + .byte 0xd4,0x2 + .4byte .LASF1835 + .byte 0x5 + .byte 0xd5,0x2 + .4byte .LASF1836 + .byte 0x5 + .byte 0xd6,0x2 + .4byte .LASF1837 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF1838 + .byte 0x5 + .byte 0xd8,0x2 + .4byte .LASF1839 + .byte 0x5 + .byte 0xd9,0x2 + .4byte .LASF1840 + .byte 0x5 + .byte 0xda,0x2 + .4byte .LASF1841 + .byte 0x5 + .byte 0xdb,0x2 + .4byte .LASF1842 + .byte 0x5 + .byte 0xdc,0x2 + .4byte .LASF1843 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF1844 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF1845 + .byte 0x5 + .byte 0xdf,0x2 + .4byte .LASF1846 + .byte 0x5 + .byte 0xe0,0x2 + .4byte .LASF1847 + .byte 0x5 + .byte 0xe1,0x2 + .4byte .LASF1848 + .byte 0x5 + .byte 0xe4,0x2 + .4byte .LASF1849 + .byte 0x5 + .byte 0xe5,0x2 + .4byte .LASF1850 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF1851 + .byte 0x5 + .byte 0xe7,0x2 + .4byte .LASF1852 + .byte 0x5 + .byte 0xe8,0x2 + .4byte .LASF1853 + .byte 0x5 + .byte 0xe9,0x2 + .4byte .LASF1854 + .byte 0x5 + .byte 0xea,0x2 + .4byte .LASF1855 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF1856 + .byte 0x5 + .byte 0xec,0x2 + .4byte .LASF1857 + .byte 0x5 + .byte 0xed,0x2 + .4byte .LASF1858 + .byte 0x5 + .byte 0xee,0x2 + .4byte .LASF1859 + .byte 0x5 + .byte 0xef,0x2 + .4byte .LASF1860 + .byte 0x5 + .byte 0xf0,0x2 + .4byte .LASF1861 + .byte 0x5 + .byte 0xf1,0x2 + .4byte .LASF1862 + .byte 0x5 + .byte 0xf2,0x2 + .4byte .LASF1863 + .byte 0x5 + .byte 0xf3,0x2 + .4byte .LASF1864 + .byte 0x5 + .byte 0xf4,0x2 + .4byte .LASF1865 + .byte 0x5 + .byte 0xf5,0x2 + .4byte .LASF1866 + .byte 0x5 + .byte 0xf6,0x2 + .4byte .LASF1867 + .byte 0x5 + .byte 0xf7,0x2 + .4byte .LASF1868 + .byte 0x5 + .byte 0xf8,0x2 + .4byte .LASF1869 + .byte 0x5 + .byte 0xf9,0x2 + .4byte .LASF1870 + .byte 0x5 + .byte 0xfa,0x2 + .4byte .LASF1871 + .byte 0x5 + .byte 0xfb,0x2 + .4byte .LASF1872 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_i2c.h.37.9d7fb50529db8c5d4a0b10c3b5a1de79,comdat +.Ldebug_macro20: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1873 + .byte 0x5 + .byte 0x2a + .4byte .LASF1874 + .byte 0x5 + .byte 0x2b + .4byte .LASF1875 + .byte 0x5 + .byte 0x2e + .4byte .LASF1876 + .byte 0x5 + .byte 0x2f + .4byte .LASF1877 + .byte 0x5 + .byte 0x30 + .4byte .LASF1878 + .byte 0x5 + .byte 0x31 + .4byte .LASF1879 + .byte 0x5 + .byte 0x32 + .4byte .LASF1880 + .byte 0x5 + .byte 0x33 + .4byte .LASF1881 + .byte 0x5 + .byte 0x34 + .4byte .LASF1882 + .byte 0x5 + .byte 0x35 + .4byte .LASF1883 + .byte 0x5 + .byte 0x36 + .4byte .LASF1884 + .byte 0x5 + .byte 0x37 + .4byte .LASF1885 + .byte 0x5 + .byte 0x3a + .4byte .LASF1886 + .byte 0x5 + .byte 0x3b + .4byte .LASF1887 + .byte 0x5 + .byte 0x3c + .4byte .LASF1888 + .byte 0x5 + .byte 0x3d + .4byte .LASF1889 + .byte 0x5 + .byte 0x3e + .4byte .LASF1890 + .byte 0x5 + .byte 0x3f + .4byte .LASF1891 + .byte 0x5 + .byte 0x40 + .4byte .LASF1892 + .byte 0x5 + .byte 0x41 + .4byte .LASF1893 + .byte 0x5 + .byte 0x42 + .4byte .LASF1894 + .byte 0x5 + .byte 0x43 + .4byte .LASF1895 + .byte 0x5 + .byte 0x44 + .4byte .LASF1896 + .byte 0x5 + .byte 0x45 + .4byte .LASF1897 + .byte 0x5 + .byte 0x46 + .4byte .LASF1898 + .byte 0x5 + .byte 0x47 + .4byte .LASF1899 + .byte 0x5 + .byte 0x4a + .4byte .LASF1900 + .byte 0x5 + .byte 0x4b + .4byte .LASF1901 + .byte 0x5 + .byte 0x4c + .4byte .LASF1902 + .byte 0x5 + .byte 0x4d + .4byte .LASF1903 + .byte 0x5 + .byte 0x4e + .4byte .LASF1904 + .byte 0x5 + .byte 0x4f + .4byte .LASF1905 + .byte 0x5 + .byte 0x52 + .4byte .LASF1906 + .byte 0x5 + .byte 0x53 + .4byte .LASF1907 + .byte 0x5 + .byte 0x54 + .4byte .LASF1908 + .byte 0x5 + .byte 0x55 + .4byte .LASF1909 + .byte 0x5 + .byte 0x58 + .4byte .LASF1910 + .byte 0x5 + .byte 0x59 + .4byte .LASF1911 + .byte 0x5 + .byte 0x5c + .4byte .LASF1912 + .byte 0x5 + .byte 0x5f + .4byte .LASF1913 + .byte 0x5 + .byte 0x60 + .4byte .LASF1914 + .byte 0x5 + .byte 0x61 + .4byte .LASF1915 + .byte 0x5 + .byte 0x62 + .4byte .LASF1916 + .byte 0x5 + .byte 0x63 + .4byte .LASF1917 + .byte 0x5 + .byte 0x64 + .4byte .LASF1918 + .byte 0x5 + .byte 0x65 + .4byte .LASF1919 + .byte 0x5 + .byte 0x66 + .4byte .LASF1920 + .byte 0x5 + .byte 0x67 + .4byte .LASF1921 + .byte 0x5 + .byte 0x68 + .4byte .LASF1922 + .byte 0x5 + .byte 0x69 + .4byte .LASF1923 + .byte 0x5 + .byte 0x6a + .4byte .LASF1924 + .byte 0x5 + .byte 0x6b + .4byte .LASF1925 + .byte 0x5 + .byte 0x6c + .4byte .LASF1926 + .byte 0x5 + .byte 0x6f + .4byte .LASF1927 + .byte 0x5 + .byte 0x70 + .4byte .LASF1928 + .byte 0x5 + .byte 0x71 + .4byte .LASF1929 + .byte 0x5 + .byte 0x72 + .4byte .LASF1930 + .byte 0x5 + .byte 0x73 + .4byte .LASF1931 + .byte 0x5 + .byte 0x74 + .4byte .LASF1932 + .byte 0x5 + .byte 0x75 + .4byte .LASF1933 + .byte 0x5 + .byte 0x76 + .4byte .LASF1934 + .byte 0x5 + .byte 0x79 + .4byte .LASF1935 + .byte 0x5 + .byte 0x7a + .4byte .LASF1936 + .byte 0x5 + .byte 0x7b + .4byte .LASF1937 + .byte 0x5 + .byte 0x7e + .4byte .LASF1938 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF1939 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1940 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1941 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF1942 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF1943 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1944 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1945 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1946 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1947 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1948 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1949 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF1950 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF1951 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF1952 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1953 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1954 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1955 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF1956 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1957 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1958 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1959 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1960 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1961 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1962 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF1963 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1964 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1965 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1966 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1967 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1968 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF1969 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF1970 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF1971 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF1972 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1973 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1974 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF1975 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF1976 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF1977 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF1978 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF1979 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF1980 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF1981 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF1982 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF1983 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF1984 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_fwdgt.h.37.ec91e2ec679929e46ec494cd499250b4,comdat +.Ldebug_macro21: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1985 + .byte 0x5 + .byte 0x2a + .4byte .LASF1986 + .byte 0x5 + .byte 0x2d + .4byte .LASF1987 + .byte 0x5 + .byte 0x2e + .4byte .LASF1988 + .byte 0x5 + .byte 0x2f + .4byte .LASF1989 + .byte 0x5 + .byte 0x30 + .4byte .LASF1990 + .byte 0x5 + .byte 0x34 + .4byte .LASF1991 + .byte 0x5 + .byte 0x37 + .4byte .LASF1992 + .byte 0x5 + .byte 0x3a + .4byte .LASF1993 + .byte 0x5 + .byte 0x3d + .4byte .LASF1994 + .byte 0x5 + .byte 0x3e + .4byte .LASF1995 + .byte 0x5 + .byte 0x42 + .4byte .LASF1996 + .byte 0x5 + .byte 0x43 + .4byte .LASF1997 + .byte 0x5 + .byte 0x44 + .4byte .LASF1998 + .byte 0x5 + .byte 0x45 + .4byte .LASF1999 + .byte 0x5 + .byte 0x46 + .4byte .LASF2000 + .byte 0x5 + .byte 0x47 + .4byte .LASF2001 + .byte 0x5 + .byte 0x48 + .4byte .LASF2002 + .byte 0x5 + .byte 0x49 + .4byte .LASF2003 + .byte 0x5 + .byte 0x4c + .4byte .LASF2004 + .byte 0x5 + .byte 0x4d + .4byte .LASF2005 + .byte 0x5 + .byte 0x4e + .4byte .LASF2006 + .byte 0x5 + .byte 0x4f + .4byte .LASF2007 + .byte 0x5 + .byte 0x52 + .4byte .LASF2008 + .byte 0x5 + .byte 0x53 + .4byte .LASF2009 + .byte 0x5 + .byte 0x56 + .4byte .LASF2010 + .byte 0x5 + .byte 0x57 + .4byte .LASF2011 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dbg.h.37.c757ea48294705efe800a8cbb43f6f24,comdat +.Ldebug_macro22: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2012 + .byte 0x5 + .byte 0x2a + .4byte .LASF2013 + .byte 0x5 + .byte 0x2d + .4byte .LASF2014 + .byte 0x5 + .byte 0x2e + .4byte .LASF2015 + .byte 0x5 + .byte 0x32 + .4byte .LASF2016 + .byte 0x5 + .byte 0x35 + .4byte .LASF2017 + .byte 0x5 + .byte 0x36 + .4byte .LASF2018 + .byte 0x5 + .byte 0x37 + .4byte .LASF2019 + .byte 0x5 + .byte 0x38 + .4byte .LASF2020 + .byte 0x5 + .byte 0x39 + .4byte .LASF2021 + .byte 0x5 + .byte 0x3a + .4byte .LASF2022 + .byte 0x5 + .byte 0x3b + .4byte .LASF2023 + .byte 0x5 + .byte 0x3c + .4byte .LASF2024 + .byte 0x5 + .byte 0x3d + .4byte .LASF2025 + .byte 0x5 + .byte 0x3e + .4byte .LASF2026 + .byte 0x5 + .byte 0x3f + .4byte .LASF2027 + .byte 0x5 + .byte 0x40 + .4byte .LASF2028 + .byte 0x5 + .byte 0x41 + .4byte .LASF2029 + .byte 0x5 + .byte 0x42 + .4byte .LASF2030 + .byte 0x5 + .byte 0x43 + .4byte .LASF2031 + .byte 0x5 + .byte 0x44 + .4byte .LASF2032 + .byte 0x5 + .byte 0x5a + .4byte .LASF2033 + .byte 0x5 + .byte 0x5b + .4byte .LASF2034 + .byte 0x5 + .byte 0x5c + .4byte .LASF2035 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_pmu.h.37.edf842f53f3092f282c7bccaf9512833,comdat +.Ldebug_macro23: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2036 + .byte 0x5 + .byte 0x2a + .4byte .LASF2037 + .byte 0x5 + .byte 0x2d + .4byte .LASF2038 + .byte 0x5 + .byte 0x2e + .4byte .LASF2039 + .byte 0x5 + .byte 0x32 + .4byte .LASF2040 + .byte 0x5 + .byte 0x33 + .4byte .LASF2041 + .byte 0x5 + .byte 0x34 + .4byte .LASF2042 + .byte 0x5 + .byte 0x35 + .4byte .LASF2043 + .byte 0x5 + .byte 0x36 + .4byte .LASF2044 + .byte 0x5 + .byte 0x37 + .4byte .LASF2045 + .byte 0x5 + .byte 0x38 + .4byte .LASF2046 + .byte 0x5 + .byte 0x3b + .4byte .LASF2047 + .byte 0x5 + .byte 0x3c + .4byte .LASF2048 + .byte 0x5 + .byte 0x3d + .4byte .LASF2049 + .byte 0x5 + .byte 0x3e + .4byte .LASF2050 + .byte 0x5 + .byte 0x42 + .4byte .LASF2051 + .byte 0x5 + .byte 0x43 + .4byte .LASF2052 + .byte 0x5 + .byte 0x44 + .4byte .LASF2053 + .byte 0x5 + .byte 0x45 + .4byte .LASF2054 + .byte 0x5 + .byte 0x46 + .4byte .LASF2055 + .byte 0x5 + .byte 0x47 + .4byte .LASF2056 + .byte 0x5 + .byte 0x48 + .4byte .LASF2057 + .byte 0x5 + .byte 0x49 + .4byte .LASF2058 + .byte 0x5 + .byte 0x4a + .4byte .LASF2059 + .byte 0x5 + .byte 0x4d + .4byte .LASF2060 + .byte 0x5 + .byte 0x4e + .4byte .LASF2061 + .byte 0x5 + .byte 0x4f + .4byte .LASF2062 + .byte 0x5 + .byte 0x52 + .4byte .LASF2063 + .byte 0x5 + .byte 0x53 + .4byte .LASF2064 + .byte 0x5 + .byte 0x56 + .4byte .LASF2065 + .byte 0x5 + .byte 0x57 + .4byte .LASF2066 + .byte 0x5 + .byte 0x5a + .4byte .LASF2067 + .byte 0x5 + .byte 0x5b + .4byte .LASF2068 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_rcu.h.37.486a61f16467981517fe8072f0668f9d,comdat +.Ldebug_macro24: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2069 + .byte 0x5 + .byte 0x2a + .4byte .LASF2070 + .byte 0x5 + .byte 0x2e + .4byte .LASF2071 + .byte 0x5 + .byte 0x2f + .4byte .LASF2072 + .byte 0x5 + .byte 0x30 + .4byte .LASF2073 + .byte 0x5 + .byte 0x31 + .4byte .LASF2074 + .byte 0x5 + .byte 0x32 + .4byte .LASF2075 + .byte 0x5 + .byte 0x33 + .4byte .LASF2076 + .byte 0x5 + .byte 0x34 + .4byte .LASF2077 + .byte 0x5 + .byte 0x35 + .4byte .LASF2078 + .byte 0x5 + .byte 0x36 + .4byte .LASF2079 + .byte 0x5 + .byte 0x37 + .4byte .LASF2080 + .byte 0x5 + .byte 0x38 + .4byte .LASF2081 + .byte 0x5 + .byte 0x39 + .4byte .LASF2082 + .byte 0x5 + .byte 0x3a + .4byte .LASF2083 + .byte 0x5 + .byte 0x3f + .4byte .LASF2084 + .byte 0x5 + .byte 0x40 + .4byte .LASF2085 + .byte 0x5 + .byte 0x41 + .4byte .LASF2086 + .byte 0x5 + .byte 0x42 + .4byte .LASF2087 + .byte 0x5 + .byte 0x43 + .4byte .LASF2088 + .byte 0x5 + .byte 0x44 + .4byte .LASF2089 + .byte 0x5 + .byte 0x45 + .4byte .LASF2090 + .byte 0x5 + .byte 0x46 + .4byte .LASF2091 + .byte 0x5 + .byte 0x47 + .4byte .LASF2092 + .byte 0x5 + .byte 0x48 + .4byte .LASF2093 + .byte 0x5 + .byte 0x49 + .4byte .LASF2094 + .byte 0x5 + .byte 0x4a + .4byte .LASF2095 + .byte 0x5 + .byte 0x4b + .4byte .LASF2096 + .byte 0x5 + .byte 0x4c + .4byte .LASF2097 + .byte 0x5 + .byte 0x4f + .4byte .LASF2098 + .byte 0x5 + .byte 0x50 + .4byte .LASF2099 + .byte 0x5 + .byte 0x51 + .4byte .LASF2100 + .byte 0x5 + .byte 0x52 + .4byte .LASF2101 + .byte 0x5 + .byte 0x53 + .4byte .LASF2102 + .byte 0x5 + .byte 0x54 + .4byte .LASF2103 + .byte 0x5 + .byte 0x55 + .4byte .LASF2104 + .byte 0x5 + .byte 0x56 + .4byte .LASF2105 + .byte 0x5 + .byte 0x57 + .4byte .LASF2106 + .byte 0x5 + .byte 0x58 + .4byte .LASF2107 + .byte 0x5 + .byte 0x59 + .4byte .LASF2108 + .byte 0x5 + .byte 0x5a + .4byte .LASF2109 + .byte 0x5 + .byte 0x5b + .4byte .LASF2110 + .byte 0x5 + .byte 0x5e + .4byte .LASF2111 + .byte 0x5 + .byte 0x5f + .4byte .LASF2112 + .byte 0x5 + .byte 0x60 + .4byte .LASF2113 + .byte 0x5 + .byte 0x61 + .4byte .LASF2114 + .byte 0x5 + .byte 0x62 + .4byte .LASF2115 + .byte 0x5 + .byte 0x63 + .4byte .LASF2116 + .byte 0x5 + .byte 0x64 + .4byte .LASF2117 + .byte 0x5 + .byte 0x65 + .4byte .LASF2118 + .byte 0x5 + .byte 0x66 + .4byte .LASF2119 + .byte 0x5 + .byte 0x67 + .4byte .LASF2120 + .byte 0x5 + .byte 0x68 + .4byte .LASF2121 + .byte 0x5 + .byte 0x69 + .4byte .LASF2122 + .byte 0x5 + .byte 0x6a + .4byte .LASF2123 + .byte 0x5 + .byte 0x6b + .4byte .LASF2124 + .byte 0x5 + .byte 0x6c + .4byte .LASF2125 + .byte 0x5 + .byte 0x6d + .4byte .LASF2126 + .byte 0x5 + .byte 0x6e + .4byte .LASF2127 + .byte 0x5 + .byte 0x6f + .4byte .LASF2128 + .byte 0x5 + .byte 0x70 + .4byte .LASF2129 + .byte 0x5 + .byte 0x71 + .4byte .LASF2130 + .byte 0x5 + .byte 0x72 + .4byte .LASF2131 + .byte 0x5 + .byte 0x73 + .4byte .LASF2132 + .byte 0x5 + .byte 0x74 + .4byte .LASF2133 + .byte 0x5 + .byte 0x77 + .4byte .LASF2134 + .byte 0x5 + .byte 0x78 + .4byte .LASF2135 + .byte 0x5 + .byte 0x79 + .4byte .LASF2136 + .byte 0x5 + .byte 0x7a + .4byte .LASF2137 + .byte 0x5 + .byte 0x7b + .4byte .LASF2138 + .byte 0x5 + .byte 0x7c + .4byte .LASF2139 + .byte 0x5 + .byte 0x7d + .4byte .LASF2140 + .byte 0x5 + .byte 0x7e + .4byte .LASF2141 + .byte 0x5 + .byte 0x7f + .4byte .LASF2142 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF2143 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF2144 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF2145 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF2146 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF2147 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF2148 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF2149 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF2150 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF2151 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2152 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2153 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF2154 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF2155 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF2156 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2157 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF2158 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF2159 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF2160 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF2161 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2162 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2163 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF2164 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2165 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF2166 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF2167 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2168 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF2169 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF2170 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF2171 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF2172 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF2173 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF2174 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF2175 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2176 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2177 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2178 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2179 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF2180 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF2181 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF2182 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF2183 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF2184 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF2185 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF2186 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2187 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF2188 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF2189 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2190 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2191 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2192 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2193 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF2194 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF2195 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2196 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2197 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2198 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2199 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2200 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF2201 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF2202 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF2203 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF2204 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF2205 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF2206 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2207 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF2208 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF2209 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF2210 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF2211 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF2212 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF2213 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2214 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF2215 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF2216 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF2217 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF2218 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF2219 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF2220 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF2221 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2222 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2223 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF2224 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF2225 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2226 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2227 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2228 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF2229 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF2230 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF2231 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF2232 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF2233 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF2234 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF2235 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF2236 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF2237 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF2238 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF2239 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF2240 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF2241 + .byte 0x5 + .byte 0xaa,0x3 + .4byte .LASF2242 + .byte 0x5 + .byte 0xab,0x3 + .4byte .LASF2243 + .byte 0x5 + .byte 0xac,0x3 + .4byte .LASF2244 + .byte 0x5 + .byte 0xad,0x3 + .4byte .LASF2245 + .byte 0x5 + .byte 0xb0,0x3 + .4byte .LASF2246 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF2247 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF2248 + .byte 0x5 + .byte 0xb3,0x3 + .4byte .LASF2249 + .byte 0x5 + .byte 0xb6,0x3 + .4byte .LASF2250 + .byte 0x5 + .byte 0xb7,0x3 + .4byte .LASF2251 + .byte 0x5 + .byte 0xb8,0x3 + .4byte .LASF2252 + .byte 0x5 + .byte 0xb9,0x3 + .4byte .LASF2253 + .byte 0x5 + .byte 0xba,0x3 + .4byte .LASF2254 + .byte 0x5 + .byte 0xbb,0x3 + .4byte .LASF2255 + .byte 0x5 + .byte 0xbc,0x3 + .4byte .LASF2256 + .byte 0x5 + .byte 0xbd,0x3 + .4byte .LASF2257 + .byte 0x5 + .byte 0xbe,0x3 + .4byte .LASF2258 + .byte 0x5 + .byte 0xbf,0x3 + .4byte .LASF2259 + .byte 0x5 + .byte 0xc2,0x3 + .4byte .LASF2260 + .byte 0x5 + .byte 0xc3,0x3 + .4byte .LASF2261 + .byte 0x5 + .byte 0xc4,0x3 + .4byte .LASF2262 + .byte 0x5 + .byte 0xc5,0x3 + .4byte .LASF2263 + .byte 0x5 + .byte 0xc6,0x3 + .4byte .LASF2264 + .byte 0x5 + .byte 0xc7,0x3 + .4byte .LASF2265 + .byte 0x5 + .byte 0xca,0x3 + .4byte .LASF2266 + .byte 0x5 + .byte 0xcb,0x3 + .4byte .LASF2267 + .byte 0x5 + .byte 0xcc,0x3 + .4byte .LASF2268 + .byte 0x5 + .byte 0xcd,0x3 + .4byte .LASF2269 + .byte 0x5 + .byte 0xce,0x3 + .4byte .LASF2270 + .byte 0x5 + .byte 0xcf,0x3 + .4byte .LASF2271 + .byte 0x5 + .byte 0xd2,0x3 + .4byte .LASF2272 + .byte 0x5 + .byte 0xd3,0x3 + .4byte .LASF2273 + .byte 0x5 + .byte 0xd4,0x3 + .4byte .LASF2274 + .byte 0x5 + .byte 0xd5,0x3 + .4byte .LASF2275 + .byte 0x5 + .byte 0xd6,0x3 + .4byte .LASF2276 + .byte 0x5 + .byte 0xd7,0x3 + .4byte .LASF2277 + .byte 0x5 + .byte 0xda,0x3 + .4byte .LASF2278 + .byte 0x5 + .byte 0xdb,0x3 + .4byte .LASF2279 + .byte 0x5 + .byte 0xde,0x3 + .4byte .LASF2280 + .byte 0x5 + .byte 0xe0,0x3 + .4byte .LASF2281 + .byte 0x5 + .byte 0xe1,0x3 + .4byte .LASF2282 + .byte 0x5 + .byte 0xe2,0x3 + .4byte .LASF2283 + .byte 0x5 + .byte 0xe3,0x3 + .4byte .LASF2284 + .byte 0x5 + .byte 0xe4,0x3 + .4byte .LASF2285 + .byte 0x5 + .byte 0xe5,0x3 + .4byte .LASF2286 + .byte 0x5 + .byte 0xe6,0x3 + .4byte .LASF2287 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF2288 + .byte 0x5 + .byte 0xe8,0x3 + .4byte .LASF2289 + .byte 0x5 + .byte 0xe9,0x3 + .4byte .LASF2290 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF2291 + .byte 0x5 + .byte 0xeb,0x3 + .4byte .LASF2292 + .byte 0x5 + .byte 0xec,0x3 + .4byte .LASF2293 + .byte 0x5 + .byte 0xed,0x3 + .4byte .LASF2294 + .byte 0x5 + .byte 0xee,0x3 + .4byte .LASF2295 + .byte 0x5 + .byte 0xef,0x3 + .4byte .LASF2296 + .byte 0x5 + .byte 0xf0,0x3 + .4byte .LASF2297 + .byte 0x5 + .byte 0xf1,0x3 + .4byte .LASF2298 + .byte 0x5 + .byte 0xf2,0x3 + .4byte .LASF2299 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF2300 + .byte 0x5 + .byte 0xf4,0x3 + .4byte .LASF2301 + .byte 0x5 + .byte 0xf5,0x3 + .4byte .LASF2302 + .byte 0x5 + .byte 0xf6,0x3 + .4byte .LASF2303 + .byte 0x5 + .byte 0xf7,0x3 + .4byte .LASF2304 + .byte 0x5 + .byte 0xf8,0x3 + .4byte .LASF2305 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF2306 + .byte 0x5 + .byte 0xfa,0x3 + .4byte .LASF2307 + .byte 0x5 + .byte 0xfb,0x3 + .4byte .LASF2308 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF2309 + .byte 0x5 + .byte 0xfd,0x3 + .4byte .LASF2310 + .byte 0x5 + .byte 0xfe,0x3 + .4byte .LASF2311 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF2312 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF2313 + .byte 0x5 + .byte 0x83,0x4 + .4byte .LASF2314 + .byte 0x5 + .byte 0x84,0x4 + .4byte .LASF2315 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF2316 + .byte 0x5 + .byte 0x86,0x4 + .4byte .LASF2317 + .byte 0x5 + .byte 0x89,0x4 + .4byte .LASF2318 + .byte 0x5 + .byte 0x8a,0x4 + .4byte .LASF2319 + .byte 0x5 + .byte 0x8b,0x4 + .4byte .LASF2320 + .byte 0x5 + .byte 0x8c,0x4 + .4byte .LASF2321 + .byte 0x5 + .byte 0x8d,0x4 + .4byte .LASF2322 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF2323 + .byte 0x5 + .byte 0x8f,0x4 + .4byte .LASF2324 + .byte 0x5 + .byte 0x90,0x4 + .4byte .LASF2325 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF2326 + .byte 0x5 + .byte 0x92,0x4 + .4byte .LASF2327 + .byte 0x5 + .byte 0x95,0x4 + .4byte .LASF2328 + .byte 0x5 + .byte 0x96,0x4 + .4byte .LASF2329 + .byte 0x5 + .byte 0x97,0x4 + .4byte .LASF2330 + .byte 0x5 + .byte 0x98,0x4 + .4byte .LASF2331 + .byte 0x5 + .byte 0x99,0x4 + .4byte .LASF2332 + .byte 0x5 + .byte 0x9c,0x4 + .4byte .LASF2333 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF2334 + .byte 0x5 + .byte 0x9e,0x4 + .4byte .LASF2335 + .byte 0x5 + .byte 0x9f,0x4 + .4byte .LASF2336 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF2337 + .byte 0x5 + .byte 0xa1,0x4 + .4byte .LASF2338 + .byte 0x5 + .byte 0xa2,0x4 + .4byte .LASF2339 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF2340 + .byte 0x5 + .byte 0xa4,0x4 + .4byte .LASF2341 + .byte 0x5 + .byte 0xa5,0x4 + .4byte .LASF2342 + .byte 0x5 + .byte 0xa6,0x4 + .4byte .LASF2343 + .byte 0x5 + .byte 0xa7,0x4 + .4byte .LASF2344 + .byte 0x5 + .byte 0xa8,0x4 + .4byte .LASF2345 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF2346 + .byte 0x5 + .byte 0xaa,0x4 + .4byte .LASF2347 + .byte 0x5 + .byte 0xab,0x4 + .4byte .LASF2348 + .byte 0x5 + .byte 0xac,0x4 + .4byte .LASF2349 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF2350 + .byte 0x5 + .byte 0xb0,0x4 + .4byte .LASF2351 + .byte 0x5 + .byte 0xb1,0x4 + .4byte .LASF2352 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF2353 + .byte 0x5 + .byte 0xb3,0x4 + .4byte .LASF2354 + .byte 0x5 + .byte 0xb4,0x4 + .4byte .LASF2355 + .byte 0x5 + .byte 0xb5,0x4 + .4byte .LASF2356 + .byte 0x5 + .byte 0xb6,0x4 + .4byte .LASF2357 + .byte 0x5 + .byte 0xb7,0x4 + .4byte .LASF2358 + .byte 0x5 + .byte 0xb8,0x4 + .4byte .LASF2359 + .byte 0x5 + .byte 0xb9,0x4 + .4byte .LASF2360 + .byte 0x5 + .byte 0xba,0x4 + .4byte .LASF2361 + .byte 0x5 + .byte 0xbb,0x4 + .4byte .LASF2362 + .byte 0x5 + .byte 0xbc,0x4 + .4byte .LASF2363 + .byte 0x5 + .byte 0xbd,0x4 + .4byte .LASF2364 + .byte 0x5 + .byte 0xbe,0x4 + .4byte .LASF2365 + .byte 0x5 + .byte 0xbf,0x4 + .4byte .LASF2366 + .byte 0x5 + .byte 0xc2,0x4 + .4byte .LASF2367 + .byte 0x5 + .byte 0xc3,0x4 + .4byte .LASF2368 + .byte 0x5 + .byte 0xc4,0x4 + .4byte .LASF2369 + .byte 0x5 + .byte 0xc5,0x4 + .4byte .LASF2370 + .byte 0x5 + .byte 0xc6,0x4 + .4byte .LASF2371 + .byte 0x5 + .byte 0xc7,0x4 + .4byte .LASF2372 + .byte 0x5 + .byte 0xc8,0x4 + .4byte .LASF2373 + .byte 0x5 + .byte 0xc9,0x4 + .4byte .LASF2374 + .byte 0x5 + .byte 0xca,0x4 + .4byte .LASF2375 + .byte 0x5 + .byte 0xcb,0x4 + .4byte .LASF2376 + .byte 0x5 + .byte 0xcc,0x4 + .4byte .LASF2377 + .byte 0x5 + .byte 0xcf,0x4 + .4byte .LASF2378 + .byte 0x5 + .byte 0xd0,0x4 + .4byte .LASF2379 + .byte 0x5 + .byte 0xd1,0x4 + .4byte .LASF2380 + .byte 0x5 + .byte 0xd2,0x4 + .4byte .LASF2381 + .byte 0x5 + .byte 0xd3,0x4 + .4byte .LASF2382 + .byte 0x5 + .byte 0xd4,0x4 + .4byte .LASF2383 + .byte 0x5 + .byte 0xd5,0x4 + .4byte .LASF2384 + .byte 0x5 + .byte 0xd6,0x4 + .4byte .LASF2385 + .byte 0x5 + .byte 0xd7,0x4 + .4byte .LASF2386 + .byte 0x5 + .byte 0xd8,0x4 + .4byte .LASF2387 + .byte 0x5 + .byte 0xd9,0x4 + .4byte .LASF2388 + .byte 0x5 + .byte 0xdd,0x4 + .4byte .LASF2389 + .byte 0x5 + .byte 0xde,0x4 + .4byte .LASF2390 + .byte 0x5 + .byte 0xe1,0x4 + .4byte .LASF2391 + .byte 0x5 + .byte 0xe2,0x4 + .4byte .LASF2392 + .byte 0x5 + .byte 0xe5,0x4 + .4byte .LASF2393 + .byte 0x5 + .byte 0xe6,0x4 + .4byte .LASF2394 + .byte 0x5 + .byte 0xea,0x4 + .4byte .LASF2395 + .byte 0x5 + .byte 0xeb,0x4 + .4byte .LASF2396 + .byte 0x5 + .byte 0xec,0x4 + .4byte .LASF2397 + .byte 0x5 + .byte 0xed,0x4 + .4byte .LASF2398 + .byte 0x5 + .byte 0xee,0x4 + .4byte .LASF2399 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_rtc.h.37.3521dc979060c1ebaf2d43fd52b94dac,comdat +.Ldebug_macro25: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2400 + .byte 0x5 + .byte 0x2a + .4byte .LASF2401 + .byte 0x5 + .byte 0x2d + .4byte .LASF2402 + .byte 0x5 + .byte 0x2e + .4byte .LASF2403 + .byte 0x5 + .byte 0x2f + .4byte .LASF2404 + .byte 0x5 + .byte 0x30 + .4byte .LASF2405 + .byte 0x5 + .byte 0x31 + .4byte .LASF2406 + .byte 0x5 + .byte 0x32 + .4byte .LASF2407 + .byte 0x5 + .byte 0x33 + .4byte .LASF2408 + .byte 0x5 + .byte 0x34 + .4byte .LASF2409 + .byte 0x5 + .byte 0x35 + .4byte .LASF2410 + .byte 0x5 + .byte 0x36 + .4byte .LASF2411 + .byte 0x5 + .byte 0x3a + .4byte .LASF2412 + .byte 0x5 + .byte 0x3b + .4byte .LASF2413 + .byte 0x5 + .byte 0x3c + .4byte .LASF2414 + .byte 0x5 + .byte 0x3f + .4byte .LASF2415 + .byte 0x5 + .byte 0x40 + .4byte .LASF2416 + .byte 0x5 + .byte 0x41 + .4byte .LASF2417 + .byte 0x5 + .byte 0x42 + .4byte .LASF2418 + .byte 0x5 + .byte 0x43 + .4byte .LASF2419 + .byte 0x5 + .byte 0x44 + .4byte .LASF2420 + .byte 0x5 + .byte 0x47 + .4byte .LASF2421 + .byte 0x5 + .byte 0x4a + .4byte .LASF2422 + .byte 0x5 + .byte 0x4d + .4byte .LASF2423 + .byte 0x5 + .byte 0x50 + .4byte .LASF2424 + .byte 0x5 + .byte 0x53 + .4byte .LASF2425 + .byte 0x5 + .byte 0x56 + .4byte .LASF2426 + .byte 0x5 + .byte 0x59 + .4byte .LASF2427 + .byte 0x5 + .byte 0x5c + .4byte .LASF2428 + .byte 0x5 + .byte 0x60 + .4byte .LASF2429 + .byte 0x5 + .byte 0x61 + .4byte .LASF2430 + .byte 0x5 + .byte 0x62 + .4byte .LASF2431 + .byte 0x5 + .byte 0x65 + .4byte .LASF2432 + .byte 0x5 + .byte 0x66 + .4byte .LASF2433 + .byte 0x5 + .byte 0x67 + .4byte .LASF2434 + .byte 0x5 + .byte 0x6a + .4byte .LASF2435 + .byte 0x5 + .byte 0x6b + .4byte .LASF2436 + .byte 0x5 + .byte 0x6c + .4byte .LASF2437 + .byte 0x5 + .byte 0x6d + .4byte .LASF2438 + .byte 0x5 + .byte 0x6e + .4byte .LASF2439 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_spi.h.37.5b2da83109360bb35c1791b7dcc5009b,comdat +.Ldebug_macro26: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2440 + .byte 0x5 + .byte 0x2a + .4byte .LASF2441 + .byte 0x5 + .byte 0x2b + .4byte .LASF2442 + .byte 0x5 + .byte 0x2c + .4byte .LASF2443 + .byte 0x5 + .byte 0x2f + .4byte .LASF2444 + .byte 0x5 + .byte 0x30 + .4byte .LASF2445 + .byte 0x5 + .byte 0x31 + .4byte .LASF2446 + .byte 0x5 + .byte 0x32 + .4byte .LASF2447 + .byte 0x5 + .byte 0x33 + .4byte .LASF2448 + .byte 0x5 + .byte 0x34 + .4byte .LASF2449 + .byte 0x5 + .byte 0x35 + .4byte .LASF2450 + .byte 0x5 + .byte 0x36 + .4byte .LASF2451 + .byte 0x5 + .byte 0x37 + .4byte .LASF2452 + .byte 0x5 + .byte 0x3b + .4byte .LASF2453 + .byte 0x5 + .byte 0x3c + .4byte .LASF2454 + .byte 0x5 + .byte 0x3d + .4byte .LASF2455 + .byte 0x5 + .byte 0x3e + .4byte .LASF2456 + .byte 0x5 + .byte 0x3f + .4byte .LASF2457 + .byte 0x5 + .byte 0x40 + .4byte .LASF2458 + .byte 0x5 + .byte 0x41 + .4byte .LASF2459 + .byte 0x5 + .byte 0x42 + .4byte .LASF2460 + .byte 0x5 + .byte 0x43 + .4byte .LASF2461 + .byte 0x5 + .byte 0x44 + .4byte .LASF2462 + .byte 0x5 + .byte 0x45 + .4byte .LASF2463 + .byte 0x5 + .byte 0x46 + .4byte .LASF2464 + .byte 0x5 + .byte 0x47 + .4byte .LASF2465 + .byte 0x5 + .byte 0x48 + .4byte .LASF2466 + .byte 0x5 + .byte 0x4b + .4byte .LASF2467 + .byte 0x5 + .byte 0x4c + .4byte .LASF2468 + .byte 0x5 + .byte 0x4d + .4byte .LASF2469 + .byte 0x5 + .byte 0x4e + .4byte .LASF2470 + .byte 0x5 + .byte 0x4f + .4byte .LASF2471 + .byte 0x5 + .byte 0x50 + .4byte .LASF2472 + .byte 0x5 + .byte 0x51 + .4byte .LASF2473 + .byte 0x5 + .byte 0x52 + .4byte .LASF2474 + .byte 0x5 + .byte 0x55 + .4byte .LASF2475 + .byte 0x5 + .byte 0x56 + .4byte .LASF2476 + .byte 0x5 + .byte 0x57 + .4byte .LASF2477 + .byte 0x5 + .byte 0x58 + .4byte .LASF2478 + .byte 0x5 + .byte 0x59 + .4byte .LASF2479 + .byte 0x5 + .byte 0x5a + .4byte .LASF2480 + .byte 0x5 + .byte 0x5b + .4byte .LASF2481 + .byte 0x5 + .byte 0x5c + .4byte .LASF2482 + .byte 0x5 + .byte 0x5d + .4byte .LASF2483 + .byte 0x5 + .byte 0x60 + .4byte .LASF2484 + .byte 0x5 + .byte 0x63 + .4byte .LASF2485 + .byte 0x5 + .byte 0x66 + .4byte .LASF2486 + .byte 0x5 + .byte 0x69 + .4byte .LASF2487 + .byte 0x5 + .byte 0x6c + .4byte .LASF2488 + .byte 0x5 + .byte 0x6d + .4byte .LASF2489 + .byte 0x5 + .byte 0x6e + .4byte .LASF2490 + .byte 0x5 + .byte 0x6f + .4byte .LASF2491 + .byte 0x5 + .byte 0x70 + .4byte .LASF2492 + .byte 0x5 + .byte 0x71 + .4byte .LASF2493 + .byte 0x5 + .byte 0x72 + .4byte .LASF2494 + .byte 0x5 + .byte 0x73 + .4byte .LASF2495 + .byte 0x5 + .byte 0x76 + .4byte .LASF2496 + .byte 0x5 + .byte 0x77 + .4byte .LASF2497 + .byte 0x5 + .byte 0x78 + .4byte .LASF2498 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF2499 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF2500 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2501 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2502 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF2503 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2504 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF2505 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF2506 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2507 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2508 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF2509 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2510 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2511 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF2512 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF2513 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF2514 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF2515 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF2516 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2517 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2518 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2519 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2520 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF2521 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF2522 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF2523 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF2524 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF2525 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF2526 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF2527 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2528 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF2529 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF2530 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2531 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2532 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2533 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2534 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2535 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2536 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2537 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2538 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2539 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF2540 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF2541 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF2542 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF2543 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2544 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF2545 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF2546 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF2547 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF2548 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF2549 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF2550 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2551 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF2552 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF2553 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF2554 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF2555 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF2556 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2557 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2558 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF2559 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF2560 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2561 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF2562 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2563 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2564 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF2565 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF2566 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF2567 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF2568 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF2569 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF2570 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF2571 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF2572 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF2573 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF2574 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF2575 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF2576 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF2577 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF2578 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF2579 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF2580 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF2581 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF2582 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_timer.h.37.41e31e3c41519d549a8819d7a508d7a5,comdat +.Ldebug_macro27: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2583 + .byte 0x5 + .byte 0x2a + .4byte .LASF2584 + .byte 0x5 + .byte 0x2b + .4byte .LASF2585 + .byte 0x5 + .byte 0x2c + .4byte .LASF2586 + .byte 0x5 + .byte 0x2d + .4byte .LASF2587 + .byte 0x5 + .byte 0x2e + .4byte .LASF2588 + .byte 0x5 + .byte 0x2f + .4byte .LASF2589 + .byte 0x5 + .byte 0x30 + .4byte .LASF2590 + .byte 0x5 + .byte 0x33 + .4byte .LASF2591 + .byte 0x5 + .byte 0x34 + .4byte .LASF2592 + .byte 0x5 + .byte 0x35 + .4byte .LASF2593 + .byte 0x5 + .byte 0x36 + .4byte .LASF2594 + .byte 0x5 + .byte 0x37 + .4byte .LASF2595 + .byte 0x5 + .byte 0x38 + .4byte .LASF2596 + .byte 0x5 + .byte 0x39 + .4byte .LASF2597 + .byte 0x5 + .byte 0x3a + .4byte .LASF2598 + .byte 0x5 + .byte 0x3b + .4byte .LASF2599 + .byte 0x5 + .byte 0x3c + .4byte .LASF2600 + .byte 0x5 + .byte 0x3d + .4byte .LASF2601 + .byte 0x5 + .byte 0x3e + .4byte .LASF2602 + .byte 0x5 + .byte 0x3f + .4byte .LASF2603 + .byte 0x5 + .byte 0x40 + .4byte .LASF2604 + .byte 0x5 + .byte 0x41 + .4byte .LASF2605 + .byte 0x5 + .byte 0x42 + .4byte .LASF2606 + .byte 0x5 + .byte 0x43 + .4byte .LASF2607 + .byte 0x5 + .byte 0x44 + .4byte .LASF2608 + .byte 0x5 + .byte 0x45 + .4byte .LASF2609 + .byte 0x5 + .byte 0x46 + .4byte .LASF2610 + .byte 0x5 + .byte 0x4a + .4byte .LASF2611 + .byte 0x5 + .byte 0x4b + .4byte .LASF2612 + .byte 0x5 + .byte 0x4c + .4byte .LASF2613 + .byte 0x5 + .byte 0x4d + .4byte .LASF2614 + .byte 0x5 + .byte 0x4e + .4byte .LASF2615 + .byte 0x5 + .byte 0x4f + .4byte .LASF2616 + .byte 0x5 + .byte 0x50 + .4byte .LASF2617 + .byte 0x5 + .byte 0x51 + .4byte .LASF2618 + .byte 0x5 + .byte 0x54 + .4byte .LASF2619 + .byte 0x5 + .byte 0x55 + .4byte .LASF2620 + .byte 0x5 + .byte 0x56 + .4byte .LASF2621 + .byte 0x5 + .byte 0x57 + .4byte .LASF2622 + .byte 0x5 + .byte 0x58 + .4byte .LASF2623 + .byte 0x5 + .byte 0x59 + .4byte .LASF2624 + .byte 0x5 + .byte 0x5a + .4byte .LASF2625 + .byte 0x5 + .byte 0x5b + .4byte .LASF2626 + .byte 0x5 + .byte 0x5c + .4byte .LASF2627 + .byte 0x5 + .byte 0x5d + .4byte .LASF2628 + .byte 0x5 + .byte 0x5e + .4byte .LASF2629 + .byte 0x5 + .byte 0x5f + .4byte .LASF2630 + .byte 0x5 + .byte 0x62 + .4byte .LASF2631 + .byte 0x5 + .byte 0x63 + .4byte .LASF2632 + .byte 0x5 + .byte 0x64 + .4byte .LASF2633 + .byte 0x5 + .byte 0x65 + .4byte .LASF2634 + .byte 0x5 + .byte 0x66 + .4byte .LASF2635 + .byte 0x5 + .byte 0x67 + .4byte .LASF2636 + .byte 0x5 + .byte 0x68 + .4byte .LASF2637 + .byte 0x5 + .byte 0x6b + .4byte .LASF2638 + .byte 0x5 + .byte 0x6c + .4byte .LASF2639 + .byte 0x5 + .byte 0x6d + .4byte .LASF2640 + .byte 0x5 + .byte 0x6e + .4byte .LASF2641 + .byte 0x5 + .byte 0x6f + .4byte .LASF2642 + .byte 0x5 + .byte 0x70 + .4byte .LASF2643 + .byte 0x5 + .byte 0x71 + .4byte .LASF2644 + .byte 0x5 + .byte 0x72 + .4byte .LASF2645 + .byte 0x5 + .byte 0x73 + .4byte .LASF2646 + .byte 0x5 + .byte 0x74 + .4byte .LASF2647 + .byte 0x5 + .byte 0x75 + .4byte .LASF2648 + .byte 0x5 + .byte 0x76 + .4byte .LASF2649 + .byte 0x5 + .byte 0x77 + .4byte .LASF2650 + .byte 0x5 + .byte 0x78 + .4byte .LASF2651 + .byte 0x5 + .byte 0x79 + .4byte .LASF2652 + .byte 0x5 + .byte 0x7c + .4byte .LASF2653 + .byte 0x5 + .byte 0x7d + .4byte .LASF2654 + .byte 0x5 + .byte 0x7e + .4byte .LASF2655 + .byte 0x5 + .byte 0x7f + .4byte .LASF2656 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF2657 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF2658 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF2659 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF2660 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF2661 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF2662 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF2663 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF2664 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF2665 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF2666 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2667 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2668 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF2669 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF2670 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF2671 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2672 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF2673 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2674 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2675 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF2676 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF2677 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF2678 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2679 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF2680 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF2681 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2682 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF2683 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF2684 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF2685 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF2686 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF2687 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2688 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2689 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2690 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2691 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF2692 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF2693 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF2694 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF2695 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF2696 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF2697 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF2698 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF2699 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2700 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2701 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2702 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2703 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2704 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF2705 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF2706 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2707 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2708 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2709 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2710 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2711 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF2712 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF2713 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF2714 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF2715 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2716 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF2717 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF2718 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2719 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF2720 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF2721 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF2722 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2723 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2724 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF2725 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF2726 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF2727 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF2728 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2729 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF2730 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2731 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2732 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF2733 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF2734 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF2735 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF2736 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF2737 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF2738 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF2739 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF2740 + .byte 0x5 + .byte 0xa4,0x2 + .4byte .LASF2741 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF2742 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF2743 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF2744 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF2745 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF2746 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF2747 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF2748 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF2749 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF2750 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF2751 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF2752 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF2753 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF2754 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF2755 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF2756 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF2757 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF2758 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF2759 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF2760 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF2761 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF2762 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF2763 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF2764 + .byte 0x5 + .byte 0xc2,0x2 + .4byte .LASF2765 + .byte 0x5 + .byte 0xc3,0x2 + .4byte .LASF2766 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF2767 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF2768 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF2769 + .byte 0x5 + .byte 0xc9,0x2 + .4byte .LASF2770 + .byte 0x5 + .byte 0xcc,0x2 + .4byte .LASF2771 + .byte 0x5 + .byte 0xcd,0x2 + .4byte .LASF2772 + .byte 0x5 + .byte 0xce,0x2 + .4byte .LASF2773 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF2774 + .byte 0x5 + .byte 0xd0,0x2 + .4byte .LASF2775 + .byte 0x5 + .byte 0xd1,0x2 + .4byte .LASF2776 + .byte 0x5 + .byte 0xd2,0x2 + .4byte .LASF2777 + .byte 0x5 + .byte 0xd3,0x2 + .4byte .LASF2778 + .byte 0x5 + .byte 0xd4,0x2 + .4byte .LASF2779 + .byte 0x5 + .byte 0xd5,0x2 + .4byte .LASF2780 + .byte 0x5 + .byte 0xd6,0x2 + .4byte .LASF2781 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF2782 + .byte 0x5 + .byte 0xd8,0x2 + .4byte .LASF2783 + .byte 0x5 + .byte 0xd9,0x2 + .4byte .LASF2784 + .byte 0x5 + .byte 0xda,0x2 + .4byte .LASF2785 + .byte 0x5 + .byte 0xdb,0x2 + .4byte .LASF2786 + .byte 0x5 + .byte 0xdc,0x2 + .4byte .LASF2787 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF2788 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF2789 + .byte 0x5 + .byte 0xdf,0x2 + .4byte .LASF2790 + .byte 0x5 + .byte 0xe2,0x2 + .4byte .LASF2791 + .byte 0x5 + .byte 0xe3,0x2 + .4byte .LASF2792 + .byte 0x5 + .byte 0xe4,0x2 + .4byte .LASF2793 + .byte 0x5 + .byte 0xe5,0x2 + .4byte .LASF2794 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF2795 + .byte 0x5 + .byte 0xe7,0x2 + .4byte .LASF2796 + .byte 0x5 + .byte 0xe8,0x2 + .4byte .LASF2797 + .byte 0x5 + .byte 0xe9,0x2 + .4byte .LASF2798 + .byte 0x5 + .byte 0xea,0x2 + .4byte .LASF2799 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF2800 + .byte 0x5 + .byte 0xec,0x2 + .4byte .LASF2801 + .byte 0x5 + .byte 0xed,0x2 + .4byte .LASF2802 + .byte 0x5 + .byte 0xee,0x2 + .4byte .LASF2803 + .byte 0x5 + .byte 0xef,0x2 + .4byte .LASF2804 + .byte 0x5 + .byte 0xf0,0x2 + .4byte .LASF2805 + .byte 0x5 + .byte 0xf1,0x2 + .4byte .LASF2806 + .byte 0x5 + .byte 0xf2,0x2 + .4byte .LASF2807 + .byte 0x5 + .byte 0xf3,0x2 + .4byte .LASF2808 + .byte 0x5 + .byte 0xf4,0x2 + .4byte .LASF2809 + .byte 0x5 + .byte 0xf7,0x2 + .4byte .LASF2810 + .byte 0x5 + .byte 0xf8,0x2 + .4byte .LASF2811 + .byte 0x5 + .byte 0xf9,0x2 + .4byte .LASF2812 + .byte 0x5 + .byte 0xfa,0x2 + .4byte .LASF2813 + .byte 0x5 + .byte 0xfb,0x2 + .4byte .LASF2814 + .byte 0x5 + .byte 0xfc,0x2 + .4byte .LASF2815 + .byte 0x5 + .byte 0xfd,0x2 + .4byte .LASF2816 + .byte 0x5 + .byte 0xfe,0x2 + .4byte .LASF2817 + .byte 0x5 + .byte 0x81,0x3 + .4byte .LASF2818 + .byte 0x5 + .byte 0x82,0x3 + .4byte .LASF2819 + .byte 0x5 + .byte 0x83,0x3 + .4byte .LASF2820 + .byte 0x5 + .byte 0x84,0x3 + .4byte .LASF2821 + .byte 0x5 + .byte 0x85,0x3 + .4byte .LASF2822 + .byte 0x5 + .byte 0x88,0x3 + .4byte .LASF2823 + .byte 0x5 + .byte 0x89,0x3 + .4byte .LASF2824 + .byte 0x5 + .byte 0x8c,0x3 + .4byte .LASF2825 + .byte 0x5 + .byte 0x8d,0x3 + .4byte .LASF2826 + .byte 0x5 + .byte 0x90,0x3 + .4byte .LASF2827 + .byte 0x5 + .byte 0x91,0x3 + .4byte .LASF2828 + .byte 0x5 + .byte 0x92,0x3 + .4byte .LASF2829 + .byte 0x5 + .byte 0x93,0x3 + .4byte .LASF2830 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF2831 + .byte 0x5 + .byte 0x97,0x3 + .4byte .LASF2832 + .byte 0x5 + .byte 0x9a,0x3 + .4byte .LASF2833 + .byte 0x5 + .byte 0x9b,0x3 + .4byte .LASF2834 + .byte 0x5 + .byte 0x9e,0x3 + .4byte .LASF2835 + .byte 0x5 + .byte 0x9f,0x3 + .4byte .LASF2836 + .byte 0x5 + .byte 0xa3,0x3 + .4byte .LASF2837 + .byte 0x5 + .byte 0xa4,0x3 + .4byte .LASF2838 + .byte 0x5 + .byte 0xa7,0x3 + .4byte .LASF2839 + .byte 0x5 + .byte 0xa8,0x3 + .4byte .LASF2840 + .byte 0x5 + .byte 0xab,0x3 + .4byte .LASF2841 + .byte 0x5 + .byte 0xac,0x3 + .4byte .LASF2842 + .byte 0x5 + .byte 0xaf,0x3 + .4byte .LASF2843 + .byte 0x5 + .byte 0xb0,0x3 + .4byte .LASF2844 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF2845 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF2846 + .byte 0x5 + .byte 0xb3,0x3 + .4byte .LASF2847 + .byte 0x5 + .byte 0xb6,0x3 + .4byte .LASF2848 + .byte 0x5 + .byte 0xb7,0x3 + .4byte .LASF2849 + .byte 0x5 + .byte 0xba,0x3 + .4byte .LASF2850 + .byte 0x5 + .byte 0xbb,0x3 + .4byte .LASF2851 + .byte 0x5 + .byte 0xbc,0x3 + .4byte .LASF2852 + .byte 0x5 + .byte 0xbd,0x3 + .4byte .LASF2853 + .byte 0x5 + .byte 0xc0,0x3 + .4byte .LASF2854 + .byte 0x5 + .byte 0xc1,0x3 + .4byte .LASF2855 + .byte 0x5 + .byte 0xc4,0x3 + .4byte .LASF2856 + .byte 0x5 + .byte 0xc5,0x3 + .4byte .LASF2857 + .byte 0x5 + .byte 0xc8,0x3 + .4byte .LASF2858 + .byte 0x5 + .byte 0xc9,0x3 + .4byte .LASF2859 + .byte 0x5 + .byte 0xcc,0x3 + .4byte .LASF2860 + .byte 0x5 + .byte 0xcd,0x3 + .4byte .LASF2861 + .byte 0x5 + .byte 0xd0,0x3 + .4byte .LASF2862 + .byte 0x5 + .byte 0xd1,0x3 + .4byte .LASF2863 + .byte 0x5 + .byte 0xd4,0x3 + .4byte .LASF2864 + .byte 0x5 + .byte 0xd5,0x3 + .4byte .LASF2865 + .byte 0x5 + .byte 0xd8,0x3 + .4byte .LASF2866 + .byte 0x5 + .byte 0xd9,0x3 + .4byte .LASF2867 + .byte 0x5 + .byte 0xda,0x3 + .4byte .LASF2868 + .byte 0x5 + .byte 0xdb,0x3 + .4byte .LASF2869 + .byte 0x5 + .byte 0xdc,0x3 + .4byte .LASF2870 + .byte 0x5 + .byte 0xdd,0x3 + .4byte .LASF2871 + .byte 0x5 + .byte 0xde,0x3 + .4byte .LASF2872 + .byte 0x5 + .byte 0xdf,0x3 + .4byte .LASF2873 + .byte 0x5 + .byte 0xe2,0x3 + .4byte .LASF2874 + .byte 0x5 + .byte 0xe3,0x3 + .4byte .LASF2875 + .byte 0x5 + .byte 0xe6,0x3 + .4byte .LASF2876 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF2877 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF2878 + .byte 0x5 + .byte 0xeb,0x3 + .4byte .LASF2879 + .byte 0x5 + .byte 0xee,0x3 + .4byte .LASF2880 + .byte 0x5 + .byte 0xef,0x3 + .4byte .LASF2881 + .byte 0x5 + .byte 0xf2,0x3 + .4byte .LASF2882 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF2883 + .byte 0x5 + .byte 0xf4,0x3 + .4byte .LASF2884 + .byte 0x5 + .byte 0xf7,0x3 + .4byte .LASF2885 + .byte 0x5 + .byte 0xf8,0x3 + .4byte .LASF2886 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF2887 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF2888 + .byte 0x5 + .byte 0xfd,0x3 + .4byte .LASF2889 + .byte 0x5 + .byte 0xfe,0x3 + .4byte .LASF2890 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF2891 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF2892 + .byte 0x5 + .byte 0x83,0x4 + .4byte .LASF2893 + .byte 0x5 + .byte 0x84,0x4 + .4byte .LASF2894 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF2895 + .byte 0x5 + .byte 0x86,0x4 + .4byte .LASF2896 + .byte 0x5 + .byte 0x87,0x4 + .4byte .LASF2897 + .byte 0x5 + .byte 0x88,0x4 + .4byte .LASF2898 + .byte 0x5 + .byte 0x89,0x4 + .4byte .LASF2899 + .byte 0x5 + .byte 0x8a,0x4 + .4byte .LASF2900 + .byte 0x5 + .byte 0x8d,0x4 + .4byte .LASF2901 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF2902 + .byte 0x5 + .byte 0x8f,0x4 + .4byte .LASF2903 + .byte 0x5 + .byte 0x90,0x4 + .4byte .LASF2904 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF2905 + .byte 0x5 + .byte 0x92,0x4 + .4byte .LASF2906 + .byte 0x5 + .byte 0x93,0x4 + .4byte .LASF2907 + .byte 0x5 + .byte 0x94,0x4 + .4byte .LASF2908 + .byte 0x5 + .byte 0x95,0x4 + .4byte .LASF2909 + .byte 0x5 + .byte 0x98,0x4 + .4byte .LASF2910 + .byte 0x5 + .byte 0x99,0x4 + .4byte .LASF2911 + .byte 0x5 + .byte 0x9a,0x4 + .4byte .LASF2912 + .byte 0x5 + .byte 0x9b,0x4 + .4byte .LASF2913 + .byte 0x5 + .byte 0x9c,0x4 + .4byte .LASF2914 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF2915 + .byte 0x5 + .byte 0x9e,0x4 + .4byte .LASF2916 + .byte 0x5 + .byte 0x9f,0x4 + .4byte .LASF2917 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF2918 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF2919 + .byte 0x5 + .byte 0xa4,0x4 + .4byte .LASF2920 + .byte 0x5 + .byte 0xa7,0x4 + .4byte .LASF2921 + .byte 0x5 + .byte 0xa8,0x4 + .4byte .LASF2922 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF2923 + .byte 0x5 + .byte 0xaa,0x4 + .4byte .LASF2924 + .byte 0x5 + .byte 0xab,0x4 + .4byte .LASF2925 + .byte 0x5 + .byte 0xae,0x4 + .4byte .LASF2926 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF2927 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF2928 + .byte 0x5 + .byte 0xb3,0x4 + .4byte .LASF2929 + .byte 0x5 + .byte 0xb6,0x4 + .4byte .LASF2930 + .byte 0x5 + .byte 0xb7,0x4 + .4byte .LASF2931 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_usart.h.38.bd493dc3b9236603b2fca39bcddb0020,comdat +.Ldebug_macro28: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x26 + .4byte .LASF2932 + .byte 0x5 + .byte 0x2b + .4byte .LASF2933 + .byte 0x5 + .byte 0x2c + .4byte .LASF2934 + .byte 0x5 + .byte 0x2d + .4byte .LASF2935 + .byte 0x5 + .byte 0x2e + .4byte .LASF2936 + .byte 0x5 + .byte 0x2f + .4byte .LASF2937 + .byte 0x5 + .byte 0x32 + .4byte .LASF2938 + .byte 0x5 + .byte 0x33 + .4byte .LASF2939 + .byte 0x5 + .byte 0x34 + .4byte .LASF2940 + .byte 0x5 + .byte 0x35 + .4byte .LASF2941 + .byte 0x5 + .byte 0x36 + .4byte .LASF2942 + .byte 0x5 + .byte 0x37 + .4byte .LASF2943 + .byte 0x5 + .byte 0x38 + .4byte .LASF2944 + .byte 0x5 + .byte 0x3c + .4byte .LASF2945 + .byte 0x5 + .byte 0x3d + .4byte .LASF2946 + .byte 0x5 + .byte 0x3e + .4byte .LASF2947 + .byte 0x5 + .byte 0x3f + .4byte .LASF2948 + .byte 0x5 + .byte 0x40 + .4byte .LASF2949 + .byte 0x5 + .byte 0x41 + .4byte .LASF2950 + .byte 0x5 + .byte 0x42 + .4byte .LASF2951 + .byte 0x5 + .byte 0x43 + .4byte .LASF2952 + .byte 0x5 + .byte 0x44 + .4byte .LASF2953 + .byte 0x5 + .byte 0x45 + .4byte .LASF2954 + .byte 0x5 + .byte 0x48 + .4byte .LASF2955 + .byte 0x5 + .byte 0x4b + .4byte .LASF2956 + .byte 0x5 + .byte 0x4c + .4byte .LASF2957 + .byte 0x5 + .byte 0x4f + .4byte .LASF2958 + .byte 0x5 + .byte 0x50 + .4byte .LASF2959 + .byte 0x5 + .byte 0x51 + .4byte .LASF2960 + .byte 0x5 + .byte 0x52 + .4byte .LASF2961 + .byte 0x5 + .byte 0x53 + .4byte .LASF2962 + .byte 0x5 + .byte 0x54 + .4byte .LASF2963 + .byte 0x5 + .byte 0x55 + .4byte .LASF2964 + .byte 0x5 + .byte 0x56 + .4byte .LASF2965 + .byte 0x5 + .byte 0x57 + .4byte .LASF2966 + .byte 0x5 + .byte 0x58 + .4byte .LASF2967 + .byte 0x5 + .byte 0x59 + .4byte .LASF2968 + .byte 0x5 + .byte 0x5a + .4byte .LASF2969 + .byte 0x5 + .byte 0x5b + .4byte .LASF2970 + .byte 0x5 + .byte 0x5c + .4byte .LASF2971 + .byte 0x5 + .byte 0x5f + .4byte .LASF2972 + .byte 0x5 + .byte 0x60 + .4byte .LASF2973 + .byte 0x5 + .byte 0x61 + .4byte .LASF2974 + .byte 0x5 + .byte 0x62 + .4byte .LASF2975 + .byte 0x5 + .byte 0x63 + .4byte .LASF2976 + .byte 0x5 + .byte 0x64 + .4byte .LASF2977 + .byte 0x5 + .byte 0x65 + .4byte .LASF2978 + .byte 0x5 + .byte 0x66 + .4byte .LASF2979 + .byte 0x5 + .byte 0x67 + .4byte .LASF2980 + .byte 0x5 + .byte 0x6a + .4byte .LASF2981 + .byte 0x5 + .byte 0x6b + .4byte .LASF2982 + .byte 0x5 + .byte 0x6c + .4byte .LASF2983 + .byte 0x5 + .byte 0x6d + .4byte .LASF2984 + .byte 0x5 + .byte 0x6e + .4byte .LASF2985 + .byte 0x5 + .byte 0x6f + .4byte .LASF2986 + .byte 0x5 + .byte 0x70 + .4byte .LASF2987 + .byte 0x5 + .byte 0x71 + .4byte .LASF2988 + .byte 0x5 + .byte 0x72 + .4byte .LASF2989 + .byte 0x5 + .byte 0x73 + .4byte .LASF2990 + .byte 0x5 + .byte 0x74 + .4byte .LASF2991 + .byte 0x5 + .byte 0x77 + .4byte .LASF2992 + .byte 0x5 + .byte 0x78 + .4byte .LASF2993 + .byte 0x5 + .byte 0x7c + .4byte .LASF2994 + .byte 0x5 + .byte 0x7d + .4byte .LASF2995 + .byte 0x5 + .byte 0x7e + .4byte .LASF2996 + .byte 0x5 + .byte 0x7f + .4byte .LASF2997 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF2998 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF2999 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF3000 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF3001 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF3002 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF3003 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF3004 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF3005 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF3006 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF3007 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF3008 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF3009 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF3010 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF3011 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF3012 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF3013 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF3014 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF3015 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF3016 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF3017 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF3018 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF3019 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF3020 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF3021 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF3022 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF3023 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF3024 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF3025 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF3026 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF3027 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF3028 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF3029 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF3030 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF3031 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF3032 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF3033 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF3034 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF3035 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF3036 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF3037 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF3038 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF3039 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF3040 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF3041 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF3042 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF3043 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF3044 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF3045 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF3046 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF3047 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF3048 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF3049 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF3050 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF3051 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_wwdgt.h.37.3e64b838fd471007da900965463a8419,comdat +.Ldebug_macro29: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF3052 + .byte 0x5 + .byte 0x2a + .4byte .LASF3053 + .byte 0x5 + .byte 0x2d + .4byte .LASF3054 + .byte 0x5 + .byte 0x2e + .4byte .LASF3055 + .byte 0x5 + .byte 0x2f + .4byte .LASF3056 + .byte 0x5 + .byte 0x33 + .4byte .LASF3057 + .byte 0x5 + .byte 0x34 + .4byte .LASF3058 + .byte 0x5 + .byte 0x37 + .4byte .LASF3059 + .byte 0x5 + .byte 0x38 + .4byte .LASF3060 + .byte 0x5 + .byte 0x39 + .4byte .LASF3061 + .byte 0x5 + .byte 0x3c + .4byte .LASF3062 + .byte 0x5 + .byte 0x3f + .4byte .LASF3063 + .byte 0x5 + .byte 0x40 + .4byte .LASF3064 + .byte 0x5 + .byte 0x41 + .4byte .LASF3065 + .byte 0x5 + .byte 0x42 + .4byte .LASF3066 + .byte 0x5 + .byte 0x43 + .4byte .LASF3067 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stddef.h.39.144cf5ddcd53cbfdac30259dc1a6c87f,comdat +.Ldebug_macro30: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF3069 + .byte 0x5 + .byte 0x28 + .4byte .LASF3070 + .byte 0x5 + .byte 0x2a + .4byte .LASF3071 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF3072 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF3073 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF3074 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF3075 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF3076 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF3077 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF3078 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF3079 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF3080 + .byte 0x6 + .byte 0x9b,0x1 + .4byte .LASF3081 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF3082 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF3083 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF3084 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF3085 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF3086 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF3087 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF3088 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF3089 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF3090 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF3091 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF3092 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF3093 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF3094 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF3095 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF3096 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF3097 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF3098 + .byte 0x6 + .byte 0xe7,0x1 + .4byte .LASF3099 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF3100 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF3101 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF3102 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF3103 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF3104 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF3105 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF3106 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF3107 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF3108 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF3109 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF3110 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF3111 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF3112 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF3113 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF3114 + .byte 0x6 + .byte 0x9f,0x2 + .4byte .LASF3115 + .byte 0x6 + .byte 0xd4,0x2 + .4byte .LASF3116 + .byte 0x6 + .byte 0x86,0x3 + .4byte .LASF3117 + .byte 0x5 + .byte 0x8b,0x3 + .4byte .LASF3118 + .byte 0x6 + .byte 0x91,0x3 + .4byte .LASF3119 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF3120 + .byte 0x5 + .byte 0x9b,0x3 + .4byte .LASF3121 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_timer.h.4.7cbfcb0f457964ecd81bc2aaf47d8b32,comdat +.Ldebug_macro31: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4 + .4byte .LASF3122 + .byte 0x5 + .byte 0x6 + .4byte .LASF3123 + .byte 0x5 + .byte 0x7 + .4byte .LASF3124 + .byte 0x5 + .byte 0x8 + .4byte .LASF3125 + .byte 0x5 + .byte 0x9 + .4byte .LASF3126 + .byte 0x5 + .byte 0xa + .4byte .LASF3127 + .byte 0x5 + .byte 0xb + .4byte .LASF3128 + .byte 0x5 + .byte 0xd + .4byte .LASF3129 + .byte 0x5 + .byte 0xe + .4byte .LASF3130 + .byte 0x5 + .byte 0xf + .4byte .LASF3131 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.riscv_const.h.5.95ac0744d59bfc0d17f4e8adf85ccb42,comdat +.Ldebug_macro32: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x5 + .4byte .LASF3133 + .byte 0x5 + .byte 0xb + .4byte .LASF3134 + .byte 0x5 + .byte 0xc + .4byte .LASF3135 + .byte 0x5 + .byte 0xf + .4byte .LASF3136 + .byte 0x5 + .byte 0x10 + .4byte .LASF3137 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_eclic.h.8.88844f0cdf4d8e1ef4e06c0cb5147462,comdat +.Ldebug_macro33: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x8 + .4byte .LASF3138 + .byte 0x5 + .byte 0xd + .4byte .LASF3139 + .byte 0x5 + .byte 0xf + .4byte .LASF3140 + .byte 0x5 + .byte 0x11 + .4byte .LASF3141 + .byte 0x5 + .byte 0x14 + .4byte .LASF3142 + .byte 0x5 + .byte 0x16 + .4byte .LASF3143 + .byte 0x5 + .byte 0x18 + .4byte .LASF3144 + .byte 0x5 + .byte 0x1a + .4byte .LASF3145 + .byte 0x5 + .byte 0x1b + .4byte .LASF3146 + .byte 0x5 + .byte 0x1c + .4byte .LASF3147 + .byte 0x5 + .byte 0x1d + .4byte .LASF3148 + .byte 0x5 + .byte 0x1e + .4byte .LASF3149 + .byte 0x5 + .byte 0x21 + .4byte .LASF3150 + .byte 0x5 + .byte 0x23 + .4byte .LASF3151 + .byte 0x5 + .byte 0x26 + .4byte .LASF3152 + .byte 0x5 + .byte 0x27 + .4byte .LASF3153 + .byte 0x5 + .byte 0x29 + .4byte .LASF3154 + .byte 0x5 + .byte 0x2a + .4byte .LASF3155 + .byte 0x5 + .byte 0x2b + .4byte .LASF3156 + .byte 0x5 + .byte 0x2c + .4byte .LASF3157 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_func.h.11.5e6cb65336aea242ab47b239a06795e1,comdat +.Ldebug_macro34: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xb + .4byte .LASF3158 + .byte 0x5 + .byte 0xc + .4byte .LASF3159 + .byte 0x5 + .byte 0xd + .4byte .LASF3160 + .byte 0x5 + .byte 0xe + .4byte .LASF3161 + .byte 0x5 + .byte 0xf + .4byte .LASF3162 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_eclic.h.42.f7c52935c17a922f25617b31af8d4b9d,comdat +.Ldebug_macro35: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x2a + .4byte .LASF3163 + .byte 0x5 + .byte 0x2b + .4byte .LASF3164 + .byte 0x5 + .byte 0x2c + .4byte .LASF3165 + .byte 0x5 + .byte 0x2d + .4byte .LASF3166 + .byte 0x5 + .byte 0x2e + .4byte .LASF3167 + .byte 0x5 + .byte 0x30 + .4byte .LASF3168 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.riscv_encoding.h.4.141a3f782f9378c77348fd1925237eaf,comdat +.Ldebug_macro36: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4 + .4byte .LASF3169 + .byte 0x5 + .byte 0x6 + .4byte .LASF3170 + .byte 0x5 + .byte 0x7 + .4byte .LASF3171 + .byte 0x5 + .byte 0x8 + .4byte .LASF3172 + .byte 0x5 + .byte 0x9 + .4byte .LASF3173 + .byte 0x5 + .byte 0xa + .4byte .LASF3174 + .byte 0x5 + .byte 0xb + .4byte .LASF3175 + .byte 0x5 + .byte 0xc + .4byte .LASF3176 + .byte 0x5 + .byte 0xd + .4byte .LASF3177 + .byte 0x5 + .byte 0xe + .4byte .LASF3178 + .byte 0x5 + .byte 0xf + .4byte .LASF3179 + .byte 0x5 + .byte 0x10 + .4byte .LASF3180 + .byte 0x5 + .byte 0x11 + .4byte .LASF3181 + .byte 0x5 + .byte 0x12 + .4byte .LASF3182 + .byte 0x5 + .byte 0x13 + .4byte .LASF3183 + .byte 0x5 + .byte 0x14 + .4byte .LASF3184 + .byte 0x5 + .byte 0x15 + .4byte .LASF3185 + .byte 0x5 + .byte 0x16 + .4byte .LASF3186 + .byte 0x5 + .byte 0x17 + .4byte .LASF3187 + .byte 0x5 + .byte 0x1a + .4byte .LASF3188 + .byte 0x5 + .byte 0x1b + .4byte .LASF3189 + .byte 0x5 + .byte 0x1c + .4byte .LASF3190 + .byte 0x5 + .byte 0x1d + .4byte .LASF3191 + .byte 0x5 + .byte 0x1e + .4byte .LASF3192 + .byte 0x5 + .byte 0x1f + .4byte .LASF3193 + .byte 0x5 + .byte 0x20 + .4byte .LASF3194 + .byte 0x5 + .byte 0x21 + .4byte .LASF3195 + .byte 0x5 + .byte 0x22 + .4byte .LASF3196 + .byte 0x5 + .byte 0x23 + .4byte .LASF3197 + .byte 0x5 + .byte 0x25 + .4byte .LASF3198 + .byte 0x5 + .byte 0x26 + .4byte .LASF3199 + .byte 0x5 + .byte 0x27 + .4byte .LASF3200 + .byte 0x5 + .byte 0x28 + .4byte .LASF3201 + .byte 0x5 + .byte 0x29 + .4byte .LASF3202 + .byte 0x5 + .byte 0x2a + .4byte .LASF3203 + .byte 0x5 + .byte 0x2b + .4byte .LASF3204 + .byte 0x5 + .byte 0x2c + .4byte .LASF3205 + .byte 0x5 + .byte 0x2d + .4byte .LASF3206 + .byte 0x5 + .byte 0x2e + .4byte .LASF3207 + .byte 0x5 + .byte 0x2f + .4byte .LASF3208 + .byte 0x5 + .byte 0x30 + .4byte .LASF3209 + .byte 0x5 + .byte 0x31 + .4byte .LASF3210 + .byte 0x5 + .byte 0x32 + .4byte .LASF3211 + .byte 0x5 + .byte 0x34 + .4byte .LASF3212 + .byte 0x5 + .byte 0x35 + .4byte .LASF3213 + .byte 0x5 + .byte 0x36 + .4byte .LASF3214 + .byte 0x5 + .byte 0x37 + .4byte .LASF3215 + .byte 0x5 + .byte 0x38 + .4byte .LASF3216 + .byte 0x5 + .byte 0x39 + .4byte .LASF3217 + .byte 0x5 + .byte 0x3b + .4byte .LASF3218 + .byte 0x5 + .byte 0x3c + .4byte .LASF3219 + .byte 0x5 + .byte 0x3d + .4byte .LASF3220 + .byte 0x5 + .byte 0x3f + .4byte .LASF3221 + .byte 0x5 + .byte 0x40 + .4byte .LASF3222 + .byte 0x5 + .byte 0x41 + .4byte .LASF3223 + .byte 0x5 + .byte 0x42 + .4byte .LASF3224 + .byte 0x5 + .byte 0x43 + .4byte .LASF3225 + .byte 0x5 + .byte 0x44 + .4byte .LASF3226 + .byte 0x5 + .byte 0x45 + .4byte .LASF3227 + .byte 0x5 + .byte 0x46 + .4byte .LASF3228 + .byte 0x5 + .byte 0x47 + .4byte .LASF3229 + .byte 0x5 + .byte 0x48 + .4byte .LASF3230 + .byte 0x5 + .byte 0x49 + .4byte .LASF3231 + .byte 0x5 + .byte 0x4a + .4byte .LASF3232 + .byte 0x5 + .byte 0x4c + .4byte .LASF3233 + .byte 0x5 + .byte 0x4d + .4byte .LASF3234 + .byte 0x5 + .byte 0x4f + .4byte .LASF3235 + .byte 0x5 + .byte 0x50 + .4byte .LASF3236 + .byte 0x5 + .byte 0x51 + .4byte .LASF3237 + .byte 0x5 + .byte 0x52 + .4byte .LASF3238 + .byte 0x5 + .byte 0x53 + .4byte .LASF3239 + .byte 0x5 + .byte 0x55 + .4byte .LASF3240 + .byte 0x5 + .byte 0x56 + .4byte .LASF3241 + .byte 0x5 + .byte 0x57 + .4byte .LASF3242 + .byte 0x5 + .byte 0x58 + .4byte .LASF3243 + .byte 0x5 + .byte 0x59 + .4byte .LASF3244 + .byte 0x5 + .byte 0x5a + .4byte .LASF3245 + .byte 0x5 + .byte 0x5c + .4byte .LASF3246 + .byte 0x5 + .byte 0x5d + .4byte .LASF3247 + .byte 0x5 + .byte 0x5e + .4byte .LASF3248 + .byte 0x5 + .byte 0x5f + .4byte .LASF3249 + .byte 0x5 + .byte 0x60 + .4byte .LASF3250 + .byte 0x5 + .byte 0x61 + .4byte .LASF3251 + .byte 0x5 + .byte 0x62 + .4byte .LASF3252 + .byte 0x5 + .byte 0x63 + .4byte .LASF3253 + .byte 0x5 + .byte 0x64 + .4byte .LASF3254 + .byte 0x5 + .byte 0x66 + .4byte .LASF3255 + .byte 0x5 + .byte 0x67 + .4byte .LASF3256 + .byte 0x5 + .byte 0x68 + .4byte .LASF3257 + .byte 0x5 + .byte 0x69 + .4byte .LASF3258 + .byte 0x5 + .byte 0x6a + .4byte .LASF3259 + .byte 0x5 + .byte 0x6b + .4byte .LASF3260 + .byte 0x5 + .byte 0x6c + .4byte .LASF3261 + .byte 0x5 + .byte 0x6d + .4byte .LASF3262 + .byte 0x5 + .byte 0x6e + .4byte .LASF3263 + .byte 0x5 + .byte 0x70 + .4byte .LASF3264 + .byte 0x5 + .byte 0x71 + .4byte .LASF3265 + .byte 0x5 + .byte 0x73 + .4byte .LASF3266 + .byte 0x5 + .byte 0x74 + .4byte .LASF3267 + .byte 0x5 + .byte 0x75 + .4byte .LASF3268 + .byte 0x5 + .byte 0x76 + .4byte .LASF3269 + .byte 0x5 + .byte 0x78 + .4byte .LASF3270 + .byte 0x5 + .byte 0x79 + .4byte .LASF3271 + .byte 0x5 + .byte 0x7a + .4byte .LASF3272 + .byte 0x5 + .byte 0x7b + .4byte .LASF3273 + .byte 0x5 + .byte 0x7c + .4byte .LASF3274 + .byte 0x5 + .byte 0x7d + .4byte .LASF3275 + .byte 0x5 + .byte 0x7f + .4byte .LASF3276 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF3277 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF3278 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF3279 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF3280 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF3281 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF3282 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF3283 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF3284 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF3285 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF3286 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF3287 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF3288 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF3289 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF3290 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF3291 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF3292 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF3293 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF3294 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF3295 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF3296 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF3297 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF3298 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF3299 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF3300 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF3301 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF3302 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF3303 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF3304 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF3305 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF3306 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF3307 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF3308 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF3309 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF3310 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF3311 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF3312 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF3313 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF3314 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF3315 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF3316 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF3317 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF3318 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF3319 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF3320 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF3321 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF3322 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF3323 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF3324 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF3325 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF3326 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF3327 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF3328 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF3329 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF3330 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF3331 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF3332 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF3333 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF3334 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF3335 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF3336 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF3337 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF3338 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF3339 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF3340 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF3341 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF3342 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF3343 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF3344 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF3345 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF3346 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF3347 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF3348 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF3349 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF3350 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF3351 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF3352 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF3353 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF3354 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF3355 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF3356 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF3357 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF3358 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF3359 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF3360 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF3361 + .byte 0x5 + .byte 0x94,0x2 + .4byte .LASF3362 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF3363 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF3364 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF3365 + .byte 0x5 + .byte 0x98,0x2 + .4byte .LASF3366 + .byte 0x5 + .byte 0x99,0x2 + .4byte .LASF3367 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF3368 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF3369 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF3370 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF3371 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF3372 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF3373 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF3374 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF3375 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF3376 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF3377 + .byte 0x5 + .byte 0xa4,0x2 + .4byte .LASF3378 + .byte 0x5 + .byte 0xa5,0x2 + .4byte .LASF3379 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF3380 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF3381 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF3382 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF3383 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF3384 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF3385 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF3386 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF3387 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF3388 + .byte 0x5 + .byte 0xaf,0x2 + .4byte .LASF3389 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF3390 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF3391 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF3392 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF3393 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF3394 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF3395 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF3396 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF3397 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF3398 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF3399 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF3400 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF3401 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF3402 + .byte 0x5 + .byte 0xbd,0x2 + .4byte .LASF3403 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF3404 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF3405 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF3406 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF3407 + .byte 0x5 + .byte 0xc2,0x2 + .4byte .LASF3408 + .byte 0x5 + .byte 0xc3,0x2 + .4byte .LASF3409 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF3410 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF3411 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF3412 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF3413 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF3414 + .byte 0x5 + .byte 0xc9,0x2 + .4byte .LASF3415 + .byte 0x5 + .byte 0xca,0x2 + .4byte .LASF3416 + .byte 0x5 + .byte 0xcb,0x2 + .4byte .LASF3417 + .byte 0x5 + .byte 0xcc,0x2 + .4byte .LASF3418 + .byte 0x5 + .byte 0xcd,0x2 + .4byte .LASF3419 + .byte 0x5 + .byte 0xce,0x2 + .4byte .LASF3420 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF3421 + .byte 0x5 + .byte 0xd0,0x2 + .4byte .LASF3422 + .byte 0x5 + .byte 0xd1,0x2 + .4byte .LASF3423 + .byte 0x5 + .byte 0xd2,0x2 + .4byte .LASF3424 + .byte 0x5 + .byte 0xd3,0x2 + .4byte .LASF3425 + .byte 0x5 + .byte 0xd4,0x2 + .4byte .LASF3426 + .byte 0x5 + .byte 0xd5,0x2 + .4byte .LASF3427 + .byte 0x5 + .byte 0xd6,0x2 + .4byte .LASF3428 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF3429 + .byte 0x5 + .byte 0xd8,0x2 + .4byte .LASF3430 + .byte 0x5 + .byte 0xd9,0x2 + .4byte .LASF3431 + .byte 0x5 + .byte 0xda,0x2 + .4byte .LASF3432 + .byte 0x5 + .byte 0xdb,0x2 + .4byte .LASF3433 + .byte 0x5 + .byte 0xdc,0x2 + .4byte .LASF3434 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF3435 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF3436 + .byte 0x5 + .byte 0xdf,0x2 + .4byte .LASF3437 + .byte 0x5 + .byte 0xe0,0x2 + .4byte .LASF3438 + .byte 0x5 + .byte 0xe1,0x2 + .4byte .LASF3439 + .byte 0x5 + .byte 0xe2,0x2 + .4byte .LASF3440 + .byte 0x5 + .byte 0xe3,0x2 + .4byte .LASF3441 + .byte 0x5 + .byte 0xe4,0x2 + .4byte .LASF3442 + .byte 0x5 + .byte 0xe5,0x2 + .4byte .LASF3443 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF3444 + .byte 0x5 + .byte 0xe7,0x2 + .4byte .LASF3445 + .byte 0x5 + .byte 0xe8,0x2 + .4byte .LASF3446 + .byte 0x5 + .byte 0xe9,0x2 + .4byte .LASF3447 + .byte 0x5 + .byte 0xea,0x2 + .4byte .LASF3448 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF3449 + .byte 0x5 + .byte 0xec,0x2 + .4byte .LASF3450 + .byte 0x5 + .byte 0xed,0x2 + .4byte .LASF3451 + .byte 0x5 + .byte 0xee,0x2 + .4byte .LASF3452 + .byte 0x5 + .byte 0xef,0x2 + .4byte .LASF3453 + .byte 0x5 + .byte 0xf0,0x2 + .4byte .LASF3454 + .byte 0x5 + .byte 0xf1,0x2 + .4byte .LASF3455 + .byte 0x5 + .byte 0xf2,0x2 + .4byte .LASF3456 + .byte 0x5 + .byte 0xf3,0x2 + .4byte .LASF3457 + .byte 0x5 + .byte 0xf4,0x2 + .4byte .LASF3458 + .byte 0x5 + .byte 0xf5,0x2 + .4byte .LASF3459 + .byte 0x5 + .byte 0xf6,0x2 + .4byte .LASF3460 + .byte 0x5 + .byte 0xf7,0x2 + .4byte .LASF3461 + .byte 0x5 + .byte 0xf8,0x2 + .4byte .LASF3462 + .byte 0x5 + .byte 0xf9,0x2 + .4byte .LASF3463 + .byte 0x5 + .byte 0xfa,0x2 + .4byte .LASF3464 + .byte 0x5 + .byte 0xfb,0x2 + .4byte .LASF3465 + .byte 0x5 + .byte 0xfc,0x2 + .4byte .LASF3466 + .byte 0x5 + .byte 0xfd,0x2 + .4byte .LASF3467 + .byte 0x5 + .byte 0xfe,0x2 + .4byte .LASF3468 + .byte 0x5 + .byte 0xff,0x2 + .4byte .LASF3469 + .byte 0x5 + .byte 0x80,0x3 + .4byte .LASF3470 + .byte 0x5 + .byte 0x81,0x3 + .4byte .LASF3471 + .byte 0x5 + .byte 0x82,0x3 + .4byte .LASF3472 + .byte 0x5 + .byte 0x83,0x3 + .4byte .LASF3473 + .byte 0x5 + .byte 0x84,0x3 + .4byte .LASF3474 + .byte 0x5 + .byte 0x85,0x3 + .4byte .LASF3475 + .byte 0x5 + .byte 0x86,0x3 + .4byte .LASF3476 + .byte 0x5 + .byte 0x87,0x3 + .4byte .LASF3477 + .byte 0x5 + .byte 0x88,0x3 + .4byte .LASF3478 + .byte 0x5 + .byte 0x89,0x3 + .4byte .LASF3479 + .byte 0x5 + .byte 0x8a,0x3 + .4byte .LASF3480 + .byte 0x5 + .byte 0x8b,0x3 + .4byte .LASF3481 + .byte 0x5 + .byte 0x8c,0x3 + .4byte .LASF3482 + .byte 0x5 + .byte 0x8d,0x3 + .4byte .LASF3483 + .byte 0x5 + .byte 0x8e,0x3 + .4byte .LASF3484 + .byte 0x5 + .byte 0x8f,0x3 + .4byte .LASF3485 + .byte 0x5 + .byte 0x90,0x3 + .4byte .LASF3486 + .byte 0x5 + .byte 0x91,0x3 + .4byte .LASF3487 + .byte 0x5 + .byte 0x92,0x3 + .4byte .LASF3488 + .byte 0x5 + .byte 0x93,0x3 + .4byte .LASF3489 + .byte 0x5 + .byte 0x94,0x3 + .4byte .LASF3490 + .byte 0x5 + .byte 0x95,0x3 + .4byte .LASF3491 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF3492 + .byte 0x5 + .byte 0x97,0x3 + .4byte .LASF3493 + .byte 0x5 + .byte 0x98,0x3 + .4byte .LASF3494 + .byte 0x5 + .byte 0x99,0x3 + .4byte .LASF3495 + .byte 0x5 + .byte 0x9a,0x3 + .4byte .LASF3496 + .byte 0x5 + .byte 0x9b,0x3 + .4byte .LASF3497 + .byte 0x5 + .byte 0x9c,0x3 + .4byte .LASF3498 + .byte 0x5 + .byte 0x9d,0x3 + .4byte .LASF3499 + .byte 0x5 + .byte 0x9e,0x3 + .4byte .LASF3500 + .byte 0x5 + .byte 0x9f,0x3 + .4byte .LASF3501 + .byte 0x5 + .byte 0xa0,0x3 + .4byte .LASF3502 + .byte 0x5 + .byte 0xa1,0x3 + .4byte .LASF3503 + .byte 0x5 + .byte 0xa2,0x3 + .4byte .LASF3504 + .byte 0x5 + .byte 0xa3,0x3 + .4byte .LASF3505 + .byte 0x5 + .byte 0xa4,0x3 + .4byte .LASF3506 + .byte 0x5 + .byte 0xa5,0x3 + .4byte .LASF3507 + .byte 0x5 + .byte 0xa6,0x3 + .4byte .LASF3508 + .byte 0x5 + .byte 0xa7,0x3 + .4byte .LASF3509 + .byte 0x5 + .byte 0xa8,0x3 + .4byte .LASF3510 + .byte 0x5 + .byte 0xa9,0x3 + .4byte .LASF3511 + .byte 0x5 + .byte 0xaa,0x3 + .4byte .LASF3512 + .byte 0x5 + .byte 0xab,0x3 + .4byte .LASF3513 + .byte 0x5 + .byte 0xac,0x3 + .4byte .LASF3514 + .byte 0x5 + .byte 0xad,0x3 + .4byte .LASF3515 + .byte 0x5 + .byte 0xae,0x3 + .4byte .LASF3516 + .byte 0x5 + .byte 0xaf,0x3 + .4byte .LASF3517 + .byte 0x5 + .byte 0xb0,0x3 + .4byte .LASF3518 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF3519 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF3520 + .byte 0x5 + .byte 0xb3,0x3 + .4byte .LASF3521 + .byte 0x5 + .byte 0xb4,0x3 + .4byte .LASF3522 + .byte 0x5 + .byte 0xb5,0x3 + .4byte .LASF3523 + .byte 0x5 + .byte 0xb6,0x3 + .4byte .LASF3524 + .byte 0x5 + .byte 0xb7,0x3 + .4byte .LASF3525 + .byte 0x5 + .byte 0xb8,0x3 + .4byte .LASF3526 + .byte 0x5 + .byte 0xb9,0x3 + .4byte .LASF3527 + .byte 0x5 + .byte 0xba,0x3 + .4byte .LASF3528 + .byte 0x5 + .byte 0xbb,0x3 + .4byte .LASF3529 + .byte 0x5 + .byte 0xbc,0x3 + .4byte .LASF3530 + .byte 0x5 + .byte 0xbd,0x3 + .4byte .LASF3531 + .byte 0x5 + .byte 0xbe,0x3 + .4byte .LASF3532 + .byte 0x5 + .byte 0xbf,0x3 + .4byte .LASF3533 + .byte 0x5 + .byte 0xc0,0x3 + .4byte .LASF3534 + .byte 0x5 + .byte 0xc1,0x3 + .4byte .LASF3535 + .byte 0x5 + .byte 0xc2,0x3 + .4byte .LASF3536 + .byte 0x5 + .byte 0xc3,0x3 + .4byte .LASF3537 + .byte 0x5 + .byte 0xc4,0x3 + .4byte .LASF3538 + .byte 0x5 + .byte 0xc5,0x3 + .4byte .LASF3539 + .byte 0x5 + .byte 0xc6,0x3 + .4byte .LASF3540 + .byte 0x5 + .byte 0xc7,0x3 + .4byte .LASF3541 + .byte 0x5 + .byte 0xc8,0x3 + .4byte .LASF3542 + .byte 0x5 + .byte 0xc9,0x3 + .4byte .LASF3543 + .byte 0x5 + .byte 0xca,0x3 + .4byte .LASF3544 + .byte 0x5 + .byte 0xcb,0x3 + .4byte .LASF3545 + .byte 0x5 + .byte 0xcc,0x3 + .4byte .LASF3546 + .byte 0x5 + .byte 0xcd,0x3 + .4byte .LASF3547 + .byte 0x5 + .byte 0xce,0x3 + .4byte .LASF3548 + .byte 0x5 + .byte 0xcf,0x3 + .4byte .LASF3549 + .byte 0x5 + .byte 0xd0,0x3 + .4byte .LASF3550 + .byte 0x5 + .byte 0xd1,0x3 + .4byte .LASF3551 + .byte 0x5 + .byte 0xd2,0x3 + .4byte .LASF3552 + .byte 0x5 + .byte 0xd3,0x3 + .4byte .LASF3553 + .byte 0x5 + .byte 0xd4,0x3 + .4byte .LASF3554 + .byte 0x5 + .byte 0xd5,0x3 + .4byte .LASF3555 + .byte 0x5 + .byte 0xd6,0x3 + .4byte .LASF3556 + .byte 0x5 + .byte 0xd7,0x3 + .4byte .LASF3557 + .byte 0x5 + .byte 0xd8,0x3 + .4byte .LASF3558 + .byte 0x5 + .byte 0xd9,0x3 + .4byte .LASF3559 + .byte 0x5 + .byte 0xda,0x3 + .4byte .LASF3560 + .byte 0x5 + .byte 0xdb,0x3 + .4byte .LASF3561 + .byte 0x5 + .byte 0xdc,0x3 + .4byte .LASF3562 + .byte 0x5 + .byte 0xdd,0x3 + .4byte .LASF3563 + .byte 0x5 + .byte 0xde,0x3 + .4byte .LASF3564 + .byte 0x5 + .byte 0xdf,0x3 + .4byte .LASF3565 + .byte 0x5 + .byte 0xe0,0x3 + .4byte .LASF3566 + .byte 0x5 + .byte 0xe1,0x3 + .4byte .LASF3567 + .byte 0x5 + .byte 0xe2,0x3 + .4byte .LASF3568 + .byte 0x5 + .byte 0xe3,0x3 + .4byte .LASF3569 + .byte 0x5 + .byte 0xe4,0x3 + .4byte .LASF3570 + .byte 0x5 + .byte 0xe5,0x3 + .4byte .LASF3571 + .byte 0x5 + .byte 0xe6,0x3 + .4byte .LASF3572 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF3573 + .byte 0x5 + .byte 0xe8,0x3 + .4byte .LASF3574 + .byte 0x5 + .byte 0xe9,0x3 + .4byte .LASF3575 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF3576 + .byte 0x5 + .byte 0xeb,0x3 + .4byte .LASF3577 + .byte 0x5 + .byte 0xec,0x3 + .4byte .LASF3578 + .byte 0x5 + .byte 0xed,0x3 + .4byte .LASF3579 + .byte 0x5 + .byte 0xee,0x3 + .4byte .LASF3580 + .byte 0x5 + .byte 0xef,0x3 + .4byte .LASF3581 + .byte 0x5 + .byte 0xf0,0x3 + .4byte .LASF3582 + .byte 0x5 + .byte 0xf1,0x3 + .4byte .LASF3583 + .byte 0x5 + .byte 0xf2,0x3 + .4byte .LASF3584 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF3585 + .byte 0x5 + .byte 0xf4,0x3 + .4byte .LASF3586 + .byte 0x5 + .byte 0xf5,0x3 + .4byte .LASF3587 + .byte 0x5 + .byte 0xf6,0x3 + .4byte .LASF3588 + .byte 0x5 + .byte 0xf7,0x3 + .4byte .LASF3589 + .byte 0x5 + .byte 0xf8,0x3 + .4byte .LASF3590 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF3591 + .byte 0x5 + .byte 0xfa,0x3 + .4byte .LASF3592 + .byte 0x5 + .byte 0xfb,0x3 + .4byte .LASF3593 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF3594 + .byte 0x5 + .byte 0xfd,0x3 + .4byte .LASF3595 + .byte 0x5 + .byte 0xfe,0x3 + .4byte .LASF3596 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF3597 + .byte 0x5 + .byte 0x80,0x4 + .4byte .LASF3598 + .byte 0x5 + .byte 0x81,0x4 + .4byte .LASF3599 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF3600 + .byte 0x5 + .byte 0x83,0x4 + .4byte .LASF3601 + .byte 0x5 + .byte 0x84,0x4 + .4byte .LASF3602 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF3603 + .byte 0x5 + .byte 0x86,0x4 + .4byte .LASF3604 + .byte 0x5 + .byte 0x87,0x4 + .4byte .LASF3605 + .byte 0x5 + .byte 0x88,0x4 + .4byte .LASF3606 + .byte 0x5 + .byte 0x89,0x4 + .4byte .LASF3607 + .byte 0x5 + .byte 0x8a,0x4 + .4byte .LASF3608 + .byte 0x5 + .byte 0x8b,0x4 + .4byte .LASF3609 + .byte 0x5 + .byte 0x8c,0x4 + .4byte .LASF3610 + .byte 0x5 + .byte 0x8d,0x4 + .4byte .LASF3611 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF3612 + .byte 0x5 + .byte 0x8f,0x4 + .4byte .LASF3613 + .byte 0x5 + .byte 0x90,0x4 + .4byte .LASF3614 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF3615 + .byte 0x5 + .byte 0x92,0x4 + .4byte .LASF3616 + .byte 0x5 + .byte 0x93,0x4 + .4byte .LASF3617 + .byte 0x5 + .byte 0x94,0x4 + .4byte .LASF3618 + .byte 0x5 + .byte 0x95,0x4 + .4byte .LASF3619 + .byte 0x5 + .byte 0x96,0x4 + .4byte .LASF3620 + .byte 0x5 + .byte 0x97,0x4 + .4byte .LASF3621 + .byte 0x5 + .byte 0x98,0x4 + .4byte .LASF3622 + .byte 0x5 + .byte 0x99,0x4 + .4byte .LASF3623 + .byte 0x5 + .byte 0x9a,0x4 + .4byte .LASF3624 + .byte 0x5 + .byte 0x9b,0x4 + .4byte .LASF3625 + .byte 0x5 + .byte 0x9c,0x4 + .4byte .LASF3626 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF3627 + .byte 0x5 + .byte 0x9e,0x4 + .4byte .LASF3628 + .byte 0x5 + .byte 0x9f,0x4 + .4byte .LASF3629 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF3630 + .byte 0x5 + .byte 0xa1,0x4 + .4byte .LASF3631 + .byte 0x5 + .byte 0xa2,0x4 + .4byte .LASF3632 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF3633 + .byte 0x5 + .byte 0xa4,0x4 + .4byte .LASF3634 + .byte 0x5 + .byte 0xa5,0x4 + .4byte .LASF3635 + .byte 0x5 + .byte 0xa6,0x4 + .4byte .LASF3636 + .byte 0x5 + .byte 0xa7,0x4 + .4byte .LASF3637 + .byte 0x5 + .byte 0xa8,0x4 + .4byte .LASF3638 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF3639 + .byte 0x5 + .byte 0xaa,0x4 + .4byte .LASF3640 + .byte 0x5 + .byte 0xab,0x4 + .4byte .LASF3641 + .byte 0x5 + .byte 0xac,0x4 + .4byte .LASF3642 + .byte 0x5 + .byte 0xad,0x4 + .4byte .LASF3643 + .byte 0x5 + .byte 0xae,0x4 + .4byte .LASF3644 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF3645 + .byte 0x5 + .byte 0xb0,0x4 + .4byte .LASF3646 + .byte 0x5 + .byte 0xb1,0x4 + .4byte .LASF3647 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF3648 + .byte 0x5 + .byte 0xb3,0x4 + .4byte .LASF3649 + .byte 0x5 + .byte 0xb4,0x4 + .4byte .LASF3650 + .byte 0x5 + .byte 0xb5,0x4 + .4byte .LASF3651 + .byte 0x5 + .byte 0xb6,0x4 + .4byte .LASF3652 + .byte 0x5 + .byte 0xb7,0x4 + .4byte .LASF3653 + .byte 0x5 + .byte 0xb8,0x4 + .4byte .LASF3654 + .byte 0x5 + .byte 0xb9,0x4 + .4byte .LASF3655 + .byte 0x5 + .byte 0xba,0x4 + .4byte .LASF3656 + .byte 0x5 + .byte 0xbb,0x4 + .4byte .LASF3657 + .byte 0x5 + .byte 0xbc,0x4 + .4byte .LASF3658 + .byte 0x5 + .byte 0xbd,0x4 + .4byte .LASF3659 + .byte 0x5 + .byte 0xbe,0x4 + .4byte .LASF3660 + .byte 0x5 + .byte 0xbf,0x4 + .4byte .LASF3661 + .byte 0x5 + .byte 0xc0,0x4 + .4byte .LASF3662 + .byte 0x5 + .byte 0xc1,0x4 + .4byte .LASF3663 + .byte 0x5 + .byte 0xc2,0x4 + .4byte .LASF3664 + .byte 0x5 + .byte 0xc3,0x4 + .4byte .LASF3665 + .byte 0x5 + .byte 0xc4,0x4 + .4byte .LASF3666 + .byte 0x5 + .byte 0xc5,0x4 + .4byte .LASF3667 + .byte 0x5 + .byte 0xc6,0x4 + .4byte .LASF3668 + .byte 0x5 + .byte 0xc7,0x4 + .4byte .LASF3669 + .byte 0x5 + .byte 0xc8,0x4 + .4byte .LASF3670 + .byte 0x5 + .byte 0xc9,0x4 + .4byte .LASF3671 + .byte 0x5 + .byte 0xca,0x4 + .4byte .LASF3672 + .byte 0x5 + .byte 0xcb,0x4 + .4byte .LASF3673 + .byte 0x5 + .byte 0xcc,0x4 + .4byte .LASF3674 + .byte 0x5 + .byte 0xcd,0x4 + .4byte .LASF3675 + .byte 0x5 + .byte 0xce,0x4 + .4byte .LASF3676 + .byte 0x5 + .byte 0xcf,0x4 + .4byte .LASF3677 + .byte 0x5 + .byte 0xd0,0x4 + .4byte .LASF3678 + .byte 0x5 + .byte 0xd1,0x4 + .4byte .LASF3679 + .byte 0x5 + .byte 0xd2,0x4 + .4byte .LASF3680 + .byte 0x5 + .byte 0xd3,0x4 + .4byte .LASF3681 + .byte 0x5 + .byte 0xd4,0x4 + .4byte .LASF3682 + .byte 0x5 + .byte 0xd5,0x4 + .4byte .LASF3683 + .byte 0x5 + .byte 0xd6,0x4 + .4byte .LASF3684 + .byte 0x5 + .byte 0xd7,0x4 + .4byte .LASF3685 + .byte 0x5 + .byte 0xd8,0x4 + .4byte .LASF3686 + .byte 0x5 + .byte 0xd9,0x4 + .4byte .LASF3687 + .byte 0x5 + .byte 0xda,0x4 + .4byte .LASF3688 + .byte 0x5 + .byte 0xdb,0x4 + .4byte .LASF3689 + .byte 0x5 + .byte 0xdc,0x4 + .4byte .LASF3690 + .byte 0x5 + .byte 0xdd,0x4 + .4byte .LASF3691 + .byte 0x5 + .byte 0xde,0x4 + .4byte .LASF3692 + .byte 0x5 + .byte 0xdf,0x4 + .4byte .LASF3693 + .byte 0x5 + .byte 0xe0,0x4 + .4byte .LASF3694 + .byte 0x5 + .byte 0xe1,0x4 + .4byte .LASF3695 + .byte 0x5 + .byte 0xe2,0x4 + .4byte .LASF3696 + .byte 0x5 + .byte 0xe3,0x4 + .4byte .LASF3697 + .byte 0x5 + .byte 0xe4,0x4 + .4byte .LASF3698 + .byte 0x5 + .byte 0xe5,0x4 + .4byte .LASF3699 + .byte 0x5 + .byte 0xe6,0x4 + .4byte .LASF3700 + .byte 0x5 + .byte 0xe7,0x4 + .4byte .LASF3701 + .byte 0x5 + .byte 0xe8,0x4 + .4byte .LASF3702 + .byte 0x5 + .byte 0xe9,0x4 + .4byte .LASF3703 + .byte 0x5 + .byte 0xea,0x4 + .4byte .LASF3704 + .byte 0x5 + .byte 0xeb,0x4 + .4byte .LASF3705 + .byte 0x5 + .byte 0xec,0x4 + .4byte .LASF3706 + .byte 0x5 + .byte 0xed,0x4 + .4byte .LASF3707 + .byte 0x5 + .byte 0xee,0x4 + .4byte .LASF3708 + .byte 0x5 + .byte 0xef,0x4 + .4byte .LASF3709 + .byte 0x5 + .byte 0xf0,0x4 + .4byte .LASF3710 + .byte 0x5 + .byte 0xf1,0x4 + .4byte .LASF3711 + .byte 0x5 + .byte 0xf2,0x4 + .4byte .LASF3712 + .byte 0x5 + .byte 0xf3,0x4 + .4byte .LASF3713 + .byte 0x5 + .byte 0xf4,0x4 + .4byte .LASF3714 + .byte 0x5 + .byte 0xf5,0x4 + .4byte .LASF3715 + .byte 0x5 + .byte 0xf6,0x4 + .4byte .LASF3716 + .byte 0x5 + .byte 0xf7,0x4 + .4byte .LASF3717 + .byte 0x5 + .byte 0xf8,0x4 + .4byte .LASF3718 + .byte 0x5 + .byte 0xf9,0x4 + .4byte .LASF3719 + .byte 0x5 + .byte 0xfa,0x4 + .4byte .LASF3720 + .byte 0x5 + .byte 0xfb,0x4 + .4byte .LASF3721 + .byte 0x5 + .byte 0xfc,0x4 + .4byte .LASF3722 + .byte 0x5 + .byte 0xfd,0x4 + .4byte .LASF3723 + .byte 0x5 + .byte 0xfe,0x4 + .4byte .LASF3724 + .byte 0x5 + .byte 0xff,0x4 + .4byte .LASF3725 + .byte 0x5 + .byte 0x80,0x5 + .4byte .LASF3726 + .byte 0x5 + .byte 0x81,0x5 + .4byte .LASF3727 + .byte 0x5 + .byte 0x82,0x5 + .4byte .LASF3728 + .byte 0x5 + .byte 0x83,0x5 + .4byte .LASF3729 + .byte 0x5 + .byte 0x84,0x5 + .4byte .LASF3730 + .byte 0x5 + .byte 0x85,0x5 + .4byte .LASF3731 + .byte 0x5 + .byte 0x86,0x5 + .4byte .LASF3732 + .byte 0x5 + .byte 0x87,0x5 + .4byte .LASF3733 + .byte 0x5 + .byte 0x88,0x5 + .4byte .LASF3734 + .byte 0x5 + .byte 0x89,0x5 + .4byte .LASF3735 + .byte 0x5 + .byte 0x8a,0x5 + .4byte .LASF3736 + .byte 0x5 + .byte 0x8b,0x5 + .4byte .LASF3737 + .byte 0x5 + .byte 0x8c,0x5 + .4byte .LASF3738 + .byte 0x5 + .byte 0x8d,0x5 + .4byte .LASF3739 + .byte 0x5 + .byte 0x8e,0x5 + .4byte .LASF3740 + .byte 0x5 + .byte 0x8f,0x5 + .4byte .LASF3741 + .byte 0x5 + .byte 0x90,0x5 + .4byte .LASF3742 + .byte 0x5 + .byte 0x91,0x5 + .4byte .LASF3743 + .byte 0x5 + .byte 0x92,0x5 + .4byte .LASF3744 + .byte 0x5 + .byte 0x93,0x5 + .4byte .LASF3745 + .byte 0x5 + .byte 0x94,0x5 + .4byte .LASF3746 + .byte 0x5 + .byte 0x95,0x5 + .4byte .LASF3747 + .byte 0x5 + .byte 0x96,0x5 + .4byte .LASF3748 + .byte 0x5 + .byte 0x97,0x5 + .4byte .LASF3749 + .byte 0x5 + .byte 0x98,0x5 + .4byte .LASF3750 + .byte 0x5 + .byte 0x99,0x5 + .4byte .LASF3751 + .byte 0x5 + .byte 0x9a,0x5 + .4byte .LASF3752 + .byte 0x5 + .byte 0x9b,0x5 + .4byte .LASF3753 + .byte 0x5 + .byte 0x9c,0x5 + .4byte .LASF3754 + .byte 0x5 + .byte 0x9d,0x5 + .4byte .LASF3755 + .byte 0x5 + .byte 0x9e,0x5 + .4byte .LASF3756 + .byte 0x5 + .byte 0x9f,0x5 + .4byte .LASF3757 + .byte 0x5 + .byte 0xa0,0x5 + .4byte .LASF3758 + .byte 0x5 + .byte 0xa1,0x5 + .4byte .LASF3759 + .byte 0x5 + .byte 0xa2,0x5 + .4byte .LASF3760 + .byte 0x5 + .byte 0xa3,0x5 + .4byte .LASF3761 + .byte 0x5 + .byte 0xa4,0x5 + .4byte .LASF3762 + .byte 0x5 + .byte 0xa5,0x5 + .4byte .LASF3763 + .byte 0x5 + .byte 0xa6,0x5 + .4byte .LASF3764 + .byte 0x5 + .byte 0xa7,0x5 + .4byte .LASF3765 + .byte 0x5 + .byte 0xa8,0x5 + .4byte .LASF3766 + .byte 0x5 + .byte 0xa9,0x5 + .4byte .LASF3767 + .byte 0x5 + .byte 0xaa,0x5 + .4byte .LASF3768 + .byte 0x5 + .byte 0xab,0x5 + .4byte .LASF3769 + .byte 0x5 + .byte 0xac,0x5 + .4byte .LASF3770 + .byte 0x5 + .byte 0xad,0x5 + .4byte .LASF3771 + .byte 0x5 + .byte 0xae,0x5 + .4byte .LASF3772 + .byte 0x5 + .byte 0xaf,0x5 + .4byte .LASF3773 + .byte 0x5 + .byte 0xb0,0x5 + .4byte .LASF3774 + .byte 0x5 + .byte 0xb1,0x5 + .4byte .LASF3775 + .byte 0x5 + .byte 0xb2,0x5 + .4byte .LASF3776 + .byte 0x5 + .byte 0xb3,0x5 + .4byte .LASF3777 + .byte 0x5 + .byte 0xb4,0x5 + .4byte .LASF3778 + .byte 0x5 + .byte 0xb5,0x5 + .4byte .LASF3779 + .byte 0x5 + .byte 0xb6,0x5 + .4byte .LASF3780 + .byte 0x5 + .byte 0xb7,0x5 + .4byte .LASF3781 + .byte 0x5 + .byte 0xb8,0x5 + .4byte .LASF3782 + .byte 0x5 + .byte 0xb9,0x5 + .4byte .LASF3783 + .byte 0x5 + .byte 0xba,0x5 + .4byte .LASF3784 + .byte 0x5 + .byte 0xbb,0x5 + .4byte .LASF3785 + .byte 0x5 + .byte 0xbc,0x5 + .4byte .LASF3786 + .byte 0x5 + .byte 0xbd,0x5 + .4byte .LASF3787 + .byte 0x5 + .byte 0xbe,0x5 + .4byte .LASF3788 + .byte 0x5 + .byte 0xbf,0x5 + .4byte .LASF3789 + .byte 0x5 + .byte 0xc0,0x5 + .4byte .LASF3790 + .byte 0x5 + .byte 0xc1,0x5 + .4byte .LASF3791 + .byte 0x5 + .byte 0xc2,0x5 + .4byte .LASF3792 + .byte 0x5 + .byte 0xc3,0x5 + .4byte .LASF3793 + .byte 0x5 + .byte 0xc4,0x5 + .4byte .LASF3794 + .byte 0x5 + .byte 0xc5,0x5 + .4byte .LASF3795 + .byte 0x5 + .byte 0xc6,0x5 + .4byte .LASF3796 + .byte 0x5 + .byte 0xc7,0x5 + .4byte .LASF3797 + .byte 0x5 + .byte 0xc8,0x5 + .4byte .LASF3798 + .byte 0x5 + .byte 0xc9,0x5 + .4byte .LASF3799 + .byte 0x5 + .byte 0xca,0x5 + .4byte .LASF3800 + .byte 0x5 + .byte 0xcb,0x5 + .4byte .LASF3801 + .byte 0x5 + .byte 0xcc,0x5 + .4byte .LASF3802 + .byte 0x5 + .byte 0xcd,0x5 + .4byte .LASF3803 + .byte 0x5 + .byte 0xce,0x5 + .4byte .LASF3804 + .byte 0x5 + .byte 0xcf,0x5 + .4byte .LASF3805 + .byte 0x5 + .byte 0xd0,0x5 + .4byte .LASF3806 + .byte 0x5 + .byte 0xd1,0x5 + .4byte .LASF3807 + .byte 0x5 + .byte 0xd2,0x5 + .4byte .LASF3808 + .byte 0x5 + .byte 0xd3,0x5 + .4byte .LASF3809 + .byte 0x5 + .byte 0xd4,0x5 + .4byte .LASF3810 + .byte 0x5 + .byte 0xd5,0x5 + .4byte .LASF3811 + .byte 0x5 + .byte 0xd6,0x5 + .4byte .LASF3812 + .byte 0x5 + .byte 0xd7,0x5 + .4byte .LASF3813 + .byte 0x5 + .byte 0xd8,0x5 + .4byte .LASF3814 + .byte 0x5 + .byte 0xd9,0x5 + .4byte .LASF3815 + .byte 0x5 + .byte 0xda,0x5 + .4byte .LASF3816 + .byte 0x5 + .byte 0xdb,0x5 + .4byte .LASF3817 + .byte 0x5 + .byte 0xdc,0x5 + .4byte .LASF3818 + .byte 0x5 + .byte 0xdd,0x5 + .4byte .LASF3819 + .byte 0x5 + .byte 0xde,0x5 + .4byte .LASF3820 + .byte 0x5 + .byte 0xdf,0x5 + .4byte .LASF3821 + .byte 0x5 + .byte 0xe0,0x5 + .4byte .LASF3822 + .byte 0x5 + .byte 0xe1,0x5 + .4byte .LASF3823 + .byte 0x5 + .byte 0xe2,0x5 + .4byte .LASF3824 + .byte 0x5 + .byte 0xe3,0x5 + .4byte .LASF3825 + .byte 0x5 + .byte 0xe4,0x5 + .4byte .LASF3826 + .byte 0x5 + .byte 0xe5,0x5 + .4byte .LASF3827 + .byte 0x5 + .byte 0xe6,0x5 + .4byte .LASF3828 + .byte 0x5 + .byte 0xe7,0x5 + .4byte .LASF3829 + .byte 0x5 + .byte 0xe8,0x5 + .4byte .LASF3830 + .byte 0x5 + .byte 0xe9,0x5 + .4byte .LASF3831 + .byte 0x5 + .byte 0xea,0x5 + .4byte .LASF3832 + .byte 0x5 + .byte 0xeb,0x5 + .4byte .LASF3833 + .byte 0x5 + .byte 0xec,0x5 + .4byte .LASF3834 + .byte 0x5 + .byte 0xed,0x5 + .4byte .LASF3835 + .byte 0x5 + .byte 0xee,0x5 + .4byte .LASF3836 + .byte 0x5 + .byte 0xef,0x5 + .4byte .LASF3837 + .byte 0x5 + .byte 0xf0,0x5 + .4byte .LASF3838 + .byte 0x5 + .byte 0xf1,0x5 + .4byte .LASF3839 + .byte 0x5 + .byte 0xf2,0x5 + .4byte .LASF3840 + .byte 0x5 + .byte 0xf3,0x5 + .4byte .LASF3841 + .byte 0x5 + .byte 0xf4,0x5 + .4byte .LASF3842 + .byte 0x5 + .byte 0xf5,0x5 + .4byte .LASF3843 + .byte 0x5 + .byte 0xf6,0x5 + .4byte .LASF3844 + .byte 0x5 + .byte 0xf7,0x5 + .4byte .LASF3845 + .byte 0x5 + .byte 0xf8,0x5 + .4byte .LASF3846 + .byte 0x5 + .byte 0xf9,0x5 + .4byte .LASF3847 + .byte 0x5 + .byte 0xfa,0x5 + .4byte .LASF3848 + .byte 0x5 + .byte 0xfb,0x5 + .4byte .LASF3849 + .byte 0x5 + .byte 0xfc,0x5 + .4byte .LASF3850 + .byte 0x5 + .byte 0xfd,0x5 + .4byte .LASF3851 + .byte 0x5 + .byte 0xfe,0x5 + .4byte .LASF3852 + .byte 0x5 + .byte 0xff,0x5 + .4byte .LASF3853 + .byte 0x5 + .byte 0x80,0x6 + .4byte .LASF3854 + .byte 0x5 + .byte 0x81,0x6 + .4byte .LASF3855 + .byte 0x5 + .byte 0x82,0x6 + .4byte .LASF3856 + .byte 0x5 + .byte 0x83,0x6 + .4byte .LASF3857 + .byte 0x5 + .byte 0x84,0x6 + .4byte .LASF3858 + .byte 0x5 + .byte 0x85,0x6 + .4byte .LASF3859 + .byte 0x5 + .byte 0x86,0x6 + .4byte .LASF3860 + .byte 0x5 + .byte 0x87,0x6 + .4byte .LASF3861 + .byte 0x5 + .byte 0x88,0x6 + .4byte .LASF3862 + .byte 0x5 + .byte 0x89,0x6 + .4byte .LASF3863 + .byte 0x5 + .byte 0x8a,0x6 + .4byte .LASF3864 + .byte 0x5 + .byte 0x8b,0x6 + .4byte .LASF3865 + .byte 0x5 + .byte 0x8c,0x6 + .4byte .LASF3866 + .byte 0x5 + .byte 0x8d,0x6 + .4byte .LASF3867 + .byte 0x5 + .byte 0x8e,0x6 + .4byte .LASF3868 + .byte 0x5 + .byte 0x8f,0x6 + .4byte .LASF3869 + .byte 0x5 + .byte 0x90,0x6 + .4byte .LASF3870 + .byte 0x5 + .byte 0x91,0x6 + .4byte .LASF3871 + .byte 0x5 + .byte 0x92,0x6 + .4byte .LASF3872 + .byte 0x5 + .byte 0x93,0x6 + .4byte .LASF3873 + .byte 0x5 + .byte 0x94,0x6 + .4byte .LASF3874 + .byte 0x5 + .byte 0x95,0x6 + .4byte .LASF3875 + .byte 0x5 + .byte 0x96,0x6 + .4byte .LASF3876 + .byte 0x5 + .byte 0x97,0x6 + .4byte .LASF3877 + .byte 0x5 + .byte 0x98,0x6 + .4byte .LASF3878 + .byte 0x5 + .byte 0x99,0x6 + .4byte .LASF3879 + .byte 0x5 + .byte 0x9a,0x6 + .4byte .LASF3880 + .byte 0x5 + .byte 0x9b,0x6 + .4byte .LASF3881 + .byte 0x5 + .byte 0x9c,0x6 + .4byte .LASF3882 + .byte 0x5 + .byte 0x9d,0x6 + .4byte .LASF3883 + .byte 0x5 + .byte 0x9e,0x6 + .4byte .LASF3884 + .byte 0x5 + .byte 0x9f,0x6 + .4byte .LASF3885 + .byte 0x5 + .byte 0xa0,0x6 + .4byte .LASF3886 + .byte 0x5 + .byte 0xa1,0x6 + .4byte .LASF3887 + .byte 0x5 + .byte 0xa2,0x6 + .4byte .LASF3888 + .byte 0x5 + .byte 0xa3,0x6 + .4byte .LASF3889 + .byte 0x5 + .byte 0xa4,0x6 + .4byte .LASF3890 + .byte 0x5 + .byte 0xa5,0x6 + .4byte .LASF3891 + .byte 0x5 + .byte 0xa6,0x6 + .4byte .LASF3892 + .byte 0x5 + .byte 0xa7,0x6 + .4byte .LASF3893 + .byte 0x5 + .byte 0xa8,0x6 + .4byte .LASF3894 + .byte 0x5 + .byte 0xa9,0x6 + .4byte .LASF3895 + .byte 0x5 + .byte 0xaa,0x6 + .4byte .LASF3896 + .byte 0x5 + .byte 0xab,0x6 + .4byte .LASF3897 + .byte 0x5 + .byte 0xac,0x6 + .4byte .LASF3898 + .byte 0x5 + .byte 0xad,0x6 + .4byte .LASF3899 + .byte 0x5 + .byte 0xae,0x6 + .4byte .LASF3900 + .byte 0x5 + .byte 0xaf,0x6 + .4byte .LASF3901 + .byte 0x5 + .byte 0xb0,0x6 + .4byte .LASF3902 + .byte 0x5 + .byte 0xb1,0x6 + .4byte .LASF3903 + .byte 0x5 + .byte 0xb2,0x6 + .4byte .LASF3904 + .byte 0x5 + .byte 0xb3,0x6 + .4byte .LASF3905 + .byte 0x5 + .byte 0xb4,0x6 + .4byte .LASF3906 + .byte 0x5 + .byte 0xb5,0x6 + .4byte .LASF3907 + .byte 0x5 + .byte 0xb6,0x6 + .4byte .LASF3908 + .byte 0x5 + .byte 0xb7,0x6 + .4byte .LASF3909 + .byte 0x5 + .byte 0xb8,0x6 + .4byte .LASF3910 + .byte 0x5 + .byte 0xb9,0x6 + .4byte .LASF3911 + .byte 0x5 + .byte 0xba,0x6 + .4byte .LASF3912 + .byte 0x5 + .byte 0xbb,0x6 + .4byte .LASF3913 + .byte 0x5 + .byte 0xbc,0x6 + .4byte .LASF3914 + .byte 0x5 + .byte 0xbd,0x6 + .4byte .LASF3915 + .byte 0x5 + .byte 0xbe,0x6 + .4byte .LASF3916 + .byte 0x5 + .byte 0xbf,0x6 + .4byte .LASF3917 + .byte 0x5 + .byte 0xc0,0x6 + .4byte .LASF3918 + .byte 0x5 + .byte 0xc1,0x6 + .4byte .LASF3919 + .byte 0x5 + .byte 0xc2,0x6 + .4byte .LASF3920 + .byte 0x5 + .byte 0xc3,0x6 + .4byte .LASF3921 + .byte 0x5 + .byte 0xc4,0x6 + .4byte .LASF3922 + .byte 0x5 + .byte 0xc5,0x6 + .4byte .LASF3923 + .byte 0x5 + .byte 0xc6,0x6 + .4byte .LASF3924 + .byte 0x5 + .byte 0xc7,0x6 + .4byte .LASF3925 + .byte 0x5 + .byte 0xc8,0x6 + .4byte .LASF3926 + .byte 0x5 + .byte 0xc9,0x6 + .4byte .LASF3927 + .byte 0x5 + .byte 0xca,0x6 + .4byte .LASF3928 + .byte 0x5 + .byte 0xcb,0x6 + .4byte .LASF3929 + .byte 0x5 + .byte 0xcc,0x6 + .4byte .LASF3930 + .byte 0x5 + .byte 0xcd,0x6 + .4byte .LASF3931 + .byte 0x5 + .byte 0xce,0x6 + .4byte .LASF3932 + .byte 0x5 + .byte 0xcf,0x6 + .4byte .LASF3933 + .byte 0x5 + .byte 0xd0,0x6 + .4byte .LASF3934 + .byte 0x5 + .byte 0xd1,0x6 + .4byte .LASF3935 + .byte 0x5 + .byte 0xd2,0x6 + .4byte .LASF3936 + .byte 0x5 + .byte 0xd3,0x6 + .4byte .LASF3937 + .byte 0x5 + .byte 0xd4,0x6 + .4byte .LASF3938 + .byte 0x5 + .byte 0xd5,0x6 + .4byte .LASF3939 + .byte 0x5 + .byte 0xd6,0x6 + .4byte .LASF3940 + .byte 0x5 + .byte 0xd7,0x6 + .4byte .LASF3941 + .byte 0x5 + .byte 0xd8,0x6 + .4byte .LASF3942 + .byte 0x5 + .byte 0xd9,0x6 + .4byte .LASF3943 + .byte 0x5 + .byte 0xda,0x6 + .4byte .LASF3944 + .byte 0x5 + .byte 0xdb,0x6 + .4byte .LASF3945 + .byte 0x5 + .byte 0xdc,0x6 + .4byte .LASF3946 + .byte 0x5 + .byte 0xdd,0x6 + .4byte .LASF3947 + .byte 0x5 + .byte 0xde,0x6 + .4byte .LASF3948 + .byte 0x5 + .byte 0xdf,0x6 + .4byte .LASF3949 + .byte 0x5 + .byte 0xe0,0x6 + .4byte .LASF3950 + .byte 0x5 + .byte 0xe1,0x6 + .4byte .LASF3951 + .byte 0x5 + .byte 0xe2,0x6 + .4byte .LASF3952 + .byte 0x5 + .byte 0xe3,0x6 + .4byte .LASF3953 + .byte 0x5 + .byte 0xe4,0x6 + .4byte .LASF3954 + .byte 0x5 + .byte 0xe5,0x6 + .4byte .LASF3955 + .byte 0x5 + .byte 0xe6,0x6 + .4byte .LASF3956 + .byte 0x5 + .byte 0xe7,0x6 + .4byte .LASF3957 + .byte 0x5 + .byte 0xe8,0x6 + .4byte .LASF3958 + .byte 0x5 + .byte 0xe9,0x6 + .4byte .LASF3959 + .byte 0x5 + .byte 0xea,0x6 + .4byte .LASF3960 + .byte 0x5 + .byte 0xeb,0x6 + .4byte .LASF3961 + .byte 0x5 + .byte 0xec,0x6 + .4byte .LASF3962 + .byte 0x5 + .byte 0xed,0x6 + .4byte .LASF3963 + .byte 0x5 + .byte 0xee,0x6 + .4byte .LASF3964 + .byte 0x5 + .byte 0xef,0x6 + .4byte .LASF3965 + .byte 0x5 + .byte 0xf0,0x6 + .4byte .LASF3966 + .byte 0x5 + .byte 0xf1,0x6 + .4byte .LASF3967 + .byte 0x5 + .byte 0xf2,0x6 + .4byte .LASF3968 + .byte 0x5 + .byte 0xf3,0x6 + .4byte .LASF3969 + .byte 0x5 + .byte 0xf6,0x6 + .4byte .LASF3970 + .byte 0x5 + .byte 0xf7,0x6 + .4byte .LASF3971 + .byte 0x5 + .byte 0xf9,0x6 + .4byte .LASF3972 + .byte 0x5 + .byte 0xfb,0x6 + .4byte .LASF3973 + .byte 0x5 + .byte 0xfd,0x6 + .4byte .LASF3974 + .byte 0x5 + .byte 0xfe,0x6 + .4byte .LASF3975 + .byte 0x5 + .byte 0xff,0x6 + .4byte .LASF3976 + .byte 0x5 + .byte 0x80,0x7 + .4byte .LASF3977 + .byte 0x5 + .byte 0x81,0x7 + .4byte .LASF3978 + .byte 0x5 + .byte 0x83,0x7 + .4byte .LASF3979 + .byte 0x5 + .byte 0x84,0x7 + .4byte .LASF3980 + .byte 0x5 + .byte 0x85,0x7 + .4byte .LASF3981 + .byte 0x5 + .byte 0x87,0x7 + .4byte .LASF3982 + .byte 0x5 + .byte 0x88,0x7 + .4byte .LASF3983 + .byte 0x5 + .byte 0x8b,0x7 + .4byte .LASF3984 + .byte 0x5 + .byte 0x8c,0x7 + .4byte .LASF3985 + .byte 0x5 + .byte 0x8d,0x7 + .4byte .LASF3986 + .byte 0x5 + .byte 0x8e,0x7 + .4byte .LASF3987 + .byte 0x5 + .byte 0x8f,0x7 + .4byte .LASF3988 + .byte 0x5 + .byte 0x90,0x7 + .4byte .LASF3989 + .byte 0x5 + .byte 0x91,0x7 + .4byte .LASF3990 + .byte 0x5 + .byte 0x92,0x7 + .4byte .LASF3991 + .byte 0x5 + .byte 0x93,0x7 + .4byte .LASF3992 + .byte 0x5 + .byte 0x94,0x7 + .4byte .LASF3993 + .byte 0x5 + .byte 0x95,0x7 + .4byte .LASF3994 + .byte 0x5 + .byte 0x96,0x7 + .4byte .LASF3995 + .byte 0 + .section .debug_line,"",@progbits +.Ldebug_line0: + .section .debug_str,"MS",@progbits,1 +.LASF1190: + .string "DAC_WAVE_BIT_WIDTH_4 DWBW(3)" +.LASF328: + .string "_POSIX_C_SOURCE 1" +.LASF3997: + .string "REG_DBGMCU2EN ((uint32_t)0xE004200CU)" +.LASF2493: + .string "SPI_I2SCTL_I2SOPMOD BITS(8,9)" +.LASF1581: + .string "OB_WP_25 ((uint32_t)0x02000000U)" +.LASF3005: + .string "USART_RECEIVE_ENABLE CTL0_REN(1)" +.LASF366: + .string "___int16_t_defined 1" +.LASF2254: + .string "RCU_AHB_CKSYS_DIV8 CFG0_AHBPSC(10)" +.LASF758: + .string "BKP_DATA BITS(0,15)" +.LASF885: + .string "CAN_CTL_RFOD BIT(3)" +.LASF1930: + .string "I2C_STAT1_RXGC BIT(4)" +.LASF1625: + .string "GPIO_CTL0_MD6 BITS(24, 25)" +.LASF3602: + .string "MATCH_FCVT_S_W 0xd0000053" +.LASF3155: + .string "MTIME_HANDLER eclic_mtip_handler" +.LASF1711: + .string "GPIO_BC_CR2 BIT(2)" +.LASF3650: + .string "MATCH_C_JR 0x8002" +.LASF3977: + .string "CSR_PUSHMEPC 0x7EF" +.LASF2952: + .string "USART_STAT_TBE BIT(7)" +.LASF1394: + .string "EXTI_EVEN_EVEN11 BIT(11)" +.LASF835: + .string "CAN_F19DATA0(canx) REG32((canx) + 0x2D8U)" +.LASF1277: + .string "DMA_CHXCTL_MWIDTH BITS(10,11)" +.LASF2455: + .string "SPI_CTL0_MSTMOD BIT(2)" +.LASF2399: + .string "RCU_DEEPSLEEP_V_0_9 DSV_DSLPVS(3)" +.LASF1302: + .string "DMA_INT_HTF DMA_CHXCTL_HTFIE" +.LASF2133: + .string "RCU_INT_CKMIC BIT(23)" +.LASF3958: + .string "CSR_MHPMCOUNTER20H 0xb94" +.LASF2424: + .string "RTC_DIVL_DIV BITS(0,15)" +.LASF3104: + .string "_T_WCHAR " +.LASF1995: + .string "FWDGT_STAT_RUD BIT(1)" +.LASF537: + .string "ADC_IOFF1(adcx) REG32((adcx) + 0x18U)" +.LASF1608: + .string "AFIO_EXTISS0 REG32(AFIO + 0x08U)" +.LASF1968: + .string "I2C_DMA_OFF ((uint32_t)0x00000000U)" +.LASF2882: + .string "TIMER_IC_POLARITY_RISING ((uint16_t)0x0000U)" +.LASF2490: + .string "SPI_I2SCTL_CKPL BIT(3)" +.LASF827: + .string "CAN_F11DATA0(canx) REG32((canx) + 0x298U)" +.LASF3702: + .string "MATCH_C_SUBW 0x9c01" +.LASF150: + .string "__FLT_MAX_10_EXP__ 38" +.LASF2467: + .string "SPI_CTL1_DMAREN BIT(0)" +.LASF510: + .string "SPI_BASE (APB1_BUS_BASE + 0x00003800U)" +.LASF127: + .string "__INT_FAST16_WIDTH__ 32" +.LASF3895: + .string "CSR_MHPMEVENT24 0x338" +.LASF981: + .string "CAN_RFIFOMDATA0_DB1 BITS(8,15)" +.LASF3969: + .string "CSR_MHPMCOUNTER31H 0xb9f" +.LASF2709: + .string "TIMER_CHCTL2_CH2EN BIT(8)" +.LASF914: + .string "CAN_TSTAT_MTE2 BIT(19)" +.LASF3693: + .string "MASK_C_ANDI 0xec03" +.LASF2554: + .string "I2S_CKPL_HIGH SPI_I2SCTL_CKPL" +.LASF2196: + .string "RCU_APB1EN_I2C0EN BIT(21)" +.LASF3603: + .string "MASK_FCVT_S_W 0xfff0007f" +.LASF2444: + .string "SPI_CTL0(spix) REG32((spix) + 0x00U)" +.LASF2869: + .string "TIMER_OC_MODE_TOGGLE ((uint16_t)0x0030U)" +.LASF1465: + .string "EXTI_PD_PD6 BIT(6)" +.LASF1096: + .string "CAN_FILTERBITS_16BIT ((uint8_t)0x00U)" +.LASF4006: + .string "long unsigned int" +.LASF727: + .string "BKP_DATA14 REG16((BKP) + 0x50U)" +.LASF1762: + .string "AFIO_EXTI2_SS BITS(8, 11)" +.LASF2924: + .string "TIMER_EXT_TRI_PSC_DIV4 SMCFG_ETPSC(2)" +.LASF2404: + .string "RTC_PSCH REG32(RTC + 0x08U)" +.LASF3952: + .string "CSR_MHPMCOUNTER14H 0xb8e" +.LASF1770: + .string "AFIO_EXTI10_SS BITS(8, 11)" +.LASF3953: + .string "CSR_MHPMCOUNTER15H 0xb8f" +.LASF300: + .string "__SIZEOF_WCHAR_T__ 4" +.LASF3238: + .string "MCONTROL_ACTION_TRACE_STOP 3" +.LASF501: + .string "EXMC_BASE ((uint32_t)0xA0000000U)" +.LASF1664: + .string "GPIO_OCTL_OCTL3 BIT(3)" +.LASF1333: + .string "EXMC_SNCTL_NRTP BITS(2,3)" +.LASF307: + .string "__riscv_div 1" +.LASF3175: + .string "MSTATUS_SPIE 0x00000020" +.LASF3488: + .string "MATCH_LR_D 0x1000302f" +.LASF755: + .string "BKP_OCTL REG16((BKP) + 0x2CU)" +.LASF2768: + .string "TIMER_DMA_TRGD ((uint16_t)TIMER_DMAINTEN_TRGDEN)" +.LASF1401: + .string "EXTI_EVEN_EVEN18 BIT(18)" +.LASF3678: + .string "MATCH_C_FSW 0xe000" +.LASF2407: + .string "RTC_DIVL REG32(RTC + 0x14U)" +.LASF3280: + .string "IRQ_H_TIMER 6" +.LASF478: + .string "WCHAR_MAX (__WCHAR_MAX__)" +.LASF3502: + .string "MATCH_MRET 0x30200073" +.LASF1998: + .string "FWDGT_PSC_DIV8 ((uint8_t)PSC_PSC(1))" +.LASF1037: + .string "GET_ERR_ERRN(regval) GET_BITS((uint32_t)(regval), 4U, 6U)" +.LASF3263: + .string "MIE_MEIE MIP_MEIP" +.LASF2545: + .string "I2S_MODE_MASTERTX I2SCTL_I2SOPMOD(2)" +.LASF3097: + .string "_SIZET_ " +.LASF1332: + .string "EXMC_SNCTL_NRMUX BIT(1)" +.LASF3246: + .string "MIP_SSIP (1 << IRQ_S_SOFT)" +.LASF3165: + .string "ECLIC_PRIGROUP_LEVEL2_PRIO2 2" +.LASF2900: + .string "TIMER_SMCFG_TRGSEL_ETIFP SMCFG_TRGSEL(7)" +.LASF1116: + .string "CAN_INT_WAKEUP CAN_INTEN_WIE" +.LASF3981: + .string "CSR_TXEVT 0x812" +.LASF439: + .string "INT16_MIN (-__INT16_MAX__ - 1)" +.LASF1603: + .string "GPIO_BOP(gpiox) REG32((gpiox) + 0x10U)" +.LASF1714: + .string "GPIO_BC_CR5 BIT(5)" +.LASF2292: + .string "RCU_PLL_MUL12 CFG0_PLLMF(10)" +.LASF581: + .string "ADC_CTL1_SWRCST BIT(22)" +.LASF2949: + .string "USART_STAT_IDLEF BIT(4)" +.LASF3674: + .string "MATCH_C_FSD 0xa000" +.LASF1226: + .string "DAC_TRIANGLE_AMPLITUDE_4095 DAC_WAVE_BIT_WIDTH_12" +.LASF3157: + .string "PMOVI_HANDLER eclic_pmovi_handler" +.LASF3369: + .string "MASK_XOR 0xfe00707f" +.LASF3035: + .string "USART_CPL_LOW CTL1_CPL(0)" +.LASF1732: + .string "GPIO_LOCK_LK7 BIT(7)" +.LASF2057: + .string "PMU_LVDT_5 CTL_LVDT(5)" +.LASF341: + .string "SYSTEM_GD32VF103_H " +.LASF3513: + .string "MASK_CSRRS 0x707f" +.LASF1509: + .string "FMC_CTL_LK BIT(7)" +.LASF498: + .string "SRAM_BASE ((uint32_t)0x20000000U)" +.LASF3926: + .string "CSR_HPMCOUNTER19H 0xc93" +.LASF3845: + .string "CSR_MHPMCOUNTER5 0xb05" +.LASF623: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH1 CTL1_ETSRC(1)" +.LASF459: + .string "UINT_FAST8_MAX (__UINT_FAST8_MAX__)" +.LASF1048: + .string "CAN_ERRN_7 ERR_ERRN(7U)" +.LASF182: + .string "__LDBL_DECIMAL_DIG__ 36" +.LASF452: + .string "INT64_MAX (__INT64_MAX__)" +.LASF1766: + .string "AFIO_EXTI6_SS BITS(8, 11)" +.LASF1188: + .string "DAC_WAVE_BIT_WIDTH_2 DWBW(1)" +.LASF413: + .string "_UINT32_T_DECLARED " +.LASF1278: + .string "DMA_CHXCTL_PRIO BITS(12,13)" +.LASF784: + .string "CAN_STAT(canx) REG32((canx) + 0x04U)" +.LASF1774: + .string "AFIO_EXTI14_SS BITS(8, 11)" +.LASF674: + .string "ADC_CHANNEL_13 ((uint8_t)0x0DU)" +.LASF1800: + .string "GPIO_EVENT_PIN_0 ((uint8_t)0x00U)" +.LASF2422: + .string "RTC_PSCL_PSC BITS(0,15)" +.LASF278: + .string "__FLT64X_HAS_DENORM__ 1" +.LASF2970: + .string "USART_CTL0_WL BIT(12)" +.LASF435: + .string "UINT8_MAX (__UINT8_MAX__)" +.LASF1115: + .string "CAN_INT_ERR CAN_INTEN_ERRIE" +.LASF3557: + .string "MASK_FMIN_D 0xfe00707f" +.LASF1107: + .string "CAN_INT_RFO0 CAN_INTEN_RFOIE0" +.LASF3847: + .string "CSR_MHPMCOUNTER7 0xb07" +.LASF1546: + .string "FMC_NSPC ((uint8_t)0xA5U)" +.LASF1017: + .string "TMDATA0_DB0(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF993: + .string "CAN_FW_FW(regval) BIT(regval)" +.LASF3461: + .string "MASK_AMOMINU_W 0xf800707f" +.LASF1893: + .string "I2C_CTL0_START BIT(8)" +.LASF3811: + .string "CSR_HPMCOUNTER30 0xc1e" +.LASF2290: + .string "RCU_PLL_MUL10 CFG0_PLLMF(8)" +.LASF1719: + .string "GPIO_BC_CR10 BIT(10)" +.LASF386: + .string "short +1" +.LASF3921: + .string "CSR_HPMCOUNTER14H 0xc8e" +.LASF1866: + .string "GPIO_TIMER4CH3_IREMAP ((uint32_t)0x00200001U)" +.LASF1595: + .string "GPIOC (GPIO_BASE + 0x00000800U)" +.LASF3532: + .string "MATCH_FSGNJN_S 0x20001053" +.LASF2801: + .string "TIMER_DMACFG_DMATC_10TRANSFER DMACFG_DMATC(9)" +.LASF702: + .string "OVSCR_OVSR(regval) (BITS(2,4) & ((uint32_t)(regval) << 2))" +.LASF2997: + .string "USART_REGIDX_BIT2(regidx,bitpos,regidx2,bitpos2) (((uint32_t)(regidx2) << 22) | (uint32_t)((bitpos2) << 16) | (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos)))" +.LASF3757: + .string "MASK_CUSTOM2_RS1 0x707f" +.LASF2978: + .string "USART_CTL1_CKEN BIT(11)" +.LASF3686: + .string "MATCH_C_LUI 0x6001" +.LASF1014: + .string "FCTL_HBC1F(regval) (BITS(8,13) & ((uint32_t)(regval) << 8))" +.LASF3226: + .string "MCONTROL_M (1<<6)" +.LASF625: + .string "ADC0_1_EXTTRIG_REGULAR_T1_CH1 CTL1_ETSRC(3)" +.LASF678: + .string "ADC_CHANNEL_17 ((uint8_t)0x11U)" +.LASF2229: + .string "RCU_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF3903: + .string "CSR_MVENDORID 0xf11" +.LASF2570: + .string "SPI_FLAG_TBE SPI_STAT_TBE" +.LASF1045: + .string "CAN_ERRN_4 ERR_ERRN(4U)" +.LASF467: + .string "INT_FAST64_MAX (__INT_FAST64_MAX__)" +.LASF1816: + .string "GPIO_PIN_SOURCE_0 ((uint8_t)0x00U)" +.LASF3762: + .string "MATCH_CUSTOM2_RD_RS1 0x605b" +.LASF512: + .string "I2C_BASE (APB1_BUS_BASE + 0x00005400U)" +.LASF2983: + .string "USART_CTL2_IRLP BIT(2)" +.LASF2783: + .string "TIMER_DMACFG_DMATA_CAR DMACFG_DMATA(11)" +.LASF2777: + .string "TIMER_DMACFG_DMATA_SWEVG DMACFG_DMATA(5)" +.LASF3792: + .string "CSR_HPMCOUNTER11 0xc0b" +.LASF3262: + .string "MIE_HEIE MIP_HEIP" +.LASF2035: + .string "DBG_LOW_POWER_STANDBY DBG_CTL_STB_HOLD" +.LASF2833: + .string "TIMER_UPDATE_SRC_REGULAR TIMER_CTL0_UPS" +.LASF1757: + .string "AFIO_PCF0_SWJ_CFG BITS(24, 26)" +.LASF1548: + .string "OB_SPC_SPC ((uint32_t)0x000000FFU)" +.LASF511: + .string "USART_BASE (APB1_BUS_BASE + 0x00004400U)" +.LASF1030: + .string "GET_RFIFOMDATA0_DB1(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF1000: + .string "CAN_BIT_POS0(val) (((uint32_t)(val) >> 6) & 0x1FU)" +.LASF2551: + .string "I2S_STD_PCMSHORT I2SCTL_I2SSTD(3)" +.LASF2107: + .string "RCU_CFG0_USBFSPSC BITS(22,23)" +.LASF1487: + .string "FMC_OBSTAT REG32((FMC) + 0x1CU)" +.LASF1144: + .string "DAC_CTL_DBOFF0 BIT(1)" +.LASF1421: + .string "EXTI_FTEN_FTEN0 BIT(0)" +.LASF2237: + .string "CTL_REG_OFFSET 0x00U" +.LASF2976: + .string "USART_CTL1_CPH BIT(9)" +.LASF1374: + .string "EXTI_INTEN_INTEN10 BIT(10)" +.LASF3318: + .string "rdinstret() read_csr(instret)" +.LASF1506: + .string "FMC_CTL_OBPG BIT(4)" +.LASF421: + .string "_UINTPTR_T_DECLARED " +.LASF1698: + .string "GPIO_BOP_CR5 BIT(21)" +.LASF1747: + .string "AFIO_PCF0_USART0_REMAP BIT(2)" +.LASF2294: + .string "RCU_PLL_MUL14 CFG0_PLLMF(12)" +.LASF1725: + .string "GPIO_LOCK_LK0 BIT(0)" +.LASF3133: + .string "_RISCV_CONST_H " +.LASF2527: + .string "I2S_AUDIOSAMPLE_11K ((uint32_t)11025U)" +.LASF2418: + .string "RTC_CTL_RSYNF BIT(3)" +.LASF1176: + .string "DAC_TRIGGER_T6_TRGO CTL_DTSEL(2)" +.LASF3077: + .string "_BSD_PTRDIFF_T_ " +.LASF1042: + .string "CAN_ERRN_1 ERR_ERRN(1U)" +.LASF2601: + .string "TIMER_PSC(timerx) REG32((timerx) + 0x28U)" +.LASF1901: + .string "I2C_CTL1_ERRIE BIT(8)" +.LASF3776: + .string "MATCH_CUSTOM3_RD_RS1_RS2 0x707b" +.LASF2538: + .string "I2S_FRAMEFORMAT_DT24B_CH32B (I2SCTL_DTLEN(1) | SPI_I2SCTL_CHLEN)" +.LASF2140: + .string "RCU_APB2RST_ADC0RST BIT(9)" +.LASF2529: + .string "I2S_AUDIOSAMPLE_22K ((uint32_t)22050U)" +.LASF2525: + .string "SPI_PSC_256 CTL0_PSC(7)" +.LASF50: + .string "__INT_LEAST16_TYPE__ short int" +.LASF3716: + .string "MATCH_C_LWSP 0x4002" +.LASF2431: + .string "RTC_INT_OVERFLOW RTC_INTEN_OVIE" +.LASF1843: + .string "GPIO_PIN_11 BIT(11)" +.LASF1131: + .string "DAC_SWT REG32(DAC + 0x04U)" +.LASF2344: + .string "RCU_PREDV0_DIV11 CFG1_PREDV0(10)" +.LASF2090: + .string "RCU_CTL_HXTALBPS BIT(18)" +.LASF669: + .string "ADC_CHANNEL_8 ((uint8_t)0x08U)" +.LASF2549: + .string "I2S_STD_MSB I2SCTL_I2SSTD(1)" +.LASF3982: + .string "CSR_MMISC_CTL 0x7d0" +.LASF3306: + .string "RISCV_PGLEVEL_BITS 10" +.LASF305: + .string "__riscv_atomic 1" +.LASF4001: + .string "short int" +.LASF3338: + .string "MATCH_AUIPC 0x17" +.LASF1850: + .string "GPIO_I2C0_REMAP ((uint32_t)0x00000002U)" +.LASF551: + .string "ADC_OVSCR(adcx) REG32((adcx) + 0x80U)" +.LASF1230: + .string "DMA_INTF(dmax) REG32((dmax) + 0x00U)" +.LASF2125: + .string "RCU_INT_PLL2STBIE BIT(14)" +.LASF1884: + .string "I2C_RT(i2cx) REG32((i2cx) + 0x20U)" +.LASF3571: + .string "MASK_FEQ_S 0xfe00707f" +.LASF2579: + .string "I2S_FLAG_TXURERR SPI_STAT_TXURERR" +.LASF2572: + .string "SPI_FLAG_CONFERR SPI_STAT_CONFERR" +.LASF1335: + .string "EXMC_SNCTL_NREN BIT(6)" +.LASF1434: + .string "EXTI_FTEN_FTEN13 BIT(13)" +.LASF3630: + .string "MATCH_FMADD_S 0x43" +.LASF1635: + .string "GPIO_CTL1_MD11 BITS(12, 13)" +.LASF3281: + .string "IRQ_M_TIMER 7" +.LASF548: + .string "ADC_IDATA2(adcx) REG32((adcx) + 0x44U)" +.LASF350: + .string "__GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))" +.LASF2649: + .string "TIMER_DMAINTEN_CH2DEN BIT(11)" +.LASF3304: + .string "MSTATUS_SD MSTATUS32_SD" +.LASF1916: + .string "I2C_STAT0_ADD10SEND BIT(3)" +.LASF2751: + .string "TIMER_FLAG_CH0 TIMER_INTF_CH0IF" +.LASF2110: + .string "RCU_CFG0_PLLMF_4 BIT(29)" +.LASF227: + .string "__FLT64_DECIMAL_DIG__ 17" +.LASF3893: + .string "CSR_MHPMEVENT22 0x336" +.LASF3180: + .string "MSTATUS_FS 0x00006000" +.LASF899: + .string "CAN_STAT_LASTRX BIT(10)" +.LASF2273: + .string "RCU_CKADC_CKAPB2_DIV4 ((uint32_t)0x00000001U)" +.LASF2989: + .string "USART_CTL2_RTSEN BIT(8)" +.LASF1324: + .string "DMA_MEMORY_TO_MEMORY_ENABLE ((uint32_t)0x00000001U)" +.LASF1827: + .string "GPIO_PIN_SOURCE_11 ((uint8_t)0x0BU)" +.LASF759: + .string "BKP_OCTL_RCCV BITS(0,6)" +.LASF1258: + .string "DMA_CH6PADDR(dmax) REG32((dmax) + 0x88U)" +.LASF762: + .string "BKP_OCTL_ROSEL BIT(9)" +.LASF3928: + .string "CSR_HPMCOUNTER21H 0xc95" +.LASF1961: + .string "I2C_SCLSTRETCH_ENABLE ((uint32_t)0x00000000U)" +.LASF795: + .string "CAN_TMI1(canx) REG32((canx) + 0x190U)" +.LASF3732: + .string "MATCH_CUSTOM0_RS1 0x200b" +.LASF465: + .string "UINT_FAST32_MAX (__UINT_FAST32_MAX__)" +.LASF666: + .string "ADC_CHANNEL_5 ((uint8_t)0x05U)" +.LASF532: + .string "ADC_CTL0(adcx) REG32((adcx) + 0x04U)" +.LASF1237: + .string "DMA_CH1CNT(dmax) REG32((dmax) + 0x20U)" +.LASF946: + .string "CAN_ERR_PERR BIT(1)" +.LASF2369: + .string "RCU_PLL1_MUL9 CFG1_PLL1MF(7)" +.LASF927: + .string "CAN_RFIFO1_RFL1 BITS(0,1)" +.LASF40: + .string "__SIG_ATOMIC_TYPE__ int" +.LASF3043: + .string "CLT2_RTSEN(regval) (BIT(8) & ((uint32_t)(regval) << 8))" +.LASF958: + .string "CAN_TMI_FT BIT(1)" +.LASF2138: + .string "RCU_APB2RST_PDRST BIT(5)" +.LASF3980: + .string "CSR_SLEEPVALUE 0x811" +.LASF1056: + .string "CAN_BT_SJW_3TQ ((uint8_t)0x02U)" +.LASF2162: + .string "RCU_APB1RST_BKPIRST BIT(27)" +.LASF3406: + .string "MATCH_LHU 0x5003" +.LASF3374: + .string "MATCH_OR 0x6033" +.LASF2762: + .string "TIMER_DMA_UPD ((uint16_t)TIMER_DMAINTEN_UPDEN)" +.LASF451: + .string "INT64_MIN (-__INT64_MAX__ - 1)" +.LASF3506: + .string "MATCH_SFENCE_VM 0x10400073" +.LASF642: + .string "ADC_SAMPLETIME_13POINT5 SAMPTX_SPT(2)" +.LASF1216: + .string "DAC_TRIANGLE_AMPLITUDE_3 DAC_WAVE_BIT_WIDTH_2" +.LASF2205: + .string "RCU_BDCTL_LXTALBPS BIT(2)" +.LASF813: + .string "CAN_FSCFG(canx) REG32((canx) + 0x20CU)" +.LASF2469: + .string "SPI_CTL1_NSSDRV BIT(2)" +.LASF3149: + .string "ECLIC_INT_ATTR_TRIG_NEG 0x04" +.LASF2295: + .string "RCU_PLL_MUL6_5 CFG0_PLLMF(13)" +.LASF44: + .string "__INT64_TYPE__ long long int" +.LASF904: + .string "CAN_TSTAT_MTE0 BIT(3)" +.LASF639: + .string "SAMPTX_SPT(regval) (BITS(0,2) & ((uint32_t)(regval) << 0))" +.LASF1262: + .string "DMA_INTF_HTFIF BIT(2)" +.LASF2569: + .string "SPI_FLAG_RBNE SPI_STAT_RBNE" +.LASF3864: + .string "CSR_MHPMCOUNTER24 0xb18" +.LASF2906: + .string "TIMER_TRI_OUT_SRC_O0CPRE CTL1_MMC(4)" +.LASF62: + .string "__UINT_FAST16_TYPE__ unsigned int" +.LASF3640: + .string "MATCH_FMSUB_D 0x2000047" +.LASF2799: + .string "TIMER_DMACFG_DMATC_8TRANSFER DMACFG_DMATC(7)" +.LASF3918: + .string "CSR_HPMCOUNTER11H 0xc8b" +.LASF3719: + .string "MASK_C_FLWSP 0xe003" +.LASF3128: + .string "TIMER_MTIME_size 0x8" +.LASF1950: + .string "I2C_SMBUSMODE_ENABLE I2C_CTL0_SMBEN" +.LASF364: + .string "__have_long32 1" +.LASF1330: + .string "EXMC_SNWTCFG0 REG32(EXMC + 0x104U)" +.LASF1241: + .string "DMA_CH2CNT(dmax) REG32((dmax) + 0x34U)" +.LASF3093: + .string "_BSD_SIZE_T_DEFINED_ " +.LASF3781: + .string "CSR_CYCLE 0xc00" +.LASF1100: + .string "CAN_FILTER_MASK_16BITS ((uint32_t)0x0000FFFFU)" +.LASF801: + .string "CAN_TMDATA02(canx) REG32((canx) + 0x1A8U)" +.LASF2175: + .string "RCU_APB2EN_PCEN BIT(4)" +.LASF1849: + .string "GPIO_SPI0_REMAP ((uint32_t)0x00000001U)" +.LASF2071: + .string "RCU_CTL REG32(RCU + 0x00U)" +.LASF1957: + .string "I2C_ACKPOS_NEXT ((uint32_t)0x00000000U)" +.LASF948: + .string "CAN_ERR_ERRN BITS(4,6)" +.LASF3613: + .string "MASK_FCVT_D_W 0xfff0007f" +.LASF4010: + .string "uint32_t" +.LASF870: + .string "CAN_F26DATA1(canx) REG32((canx) + 0x314U)" +.LASF3031: + .string "CTL1_CPH(regval) (BIT(9) & ((uint32_t)(regval) << 9))" +.LASF1970: + .string "I2C_DMALST_OFF ((uint32_t)0x00000000U)" +.LASF3539: + .string "MASK_FMAX_S 0xfe00707f" +.LASF401: + .string "__LEAST8 \"hh\"" +.LASF1561: + .string "OB_WP_5 ((uint32_t)0x00000020U)" +.LASF204: + .string "__FLT16_HAS_INFINITY__ 1" +.LASF3357: + .string "MASK_ANDI 0x707f" +.LASF1263: + .string "DMA_INTF_ERRIF BIT(3)" +.LASF1149: + .string "DAC_CTL_DDMAEN0 BIT(12)" +.LASF2126: + .string "RCU_INT_IRC40KSTBIC BIT(16)" +.LASF1195: + .string "DAC_WAVE_BIT_WIDTH_9 DWBW(8)" +.LASF124: + .string "__INT_FAST8_MAX__ 0x7fffffff" +.LASF327: + .string "RT_USING_LIBC 1" +.LASF7: + .string "__GNUC_PATCHLEVEL__ 0" +.LASF2317: + .string "RCU_CKUSB_CKPLL_DIV2 CFG0_USBPSC(3)" +.LASF2759: + .string "TIMER_FLAG_CH1O TIMER_INTF_CH1OF" +.LASF2704: + .string "TIMER_CHCTL2_CH0NP BIT(3)" +.LASF3662: + .string "MATCH_C_LDSP 0x6002" +.LASF814: + .string "CAN_FAFIFO(canx) REG32((canx) + 0x214U)" +.LASF2586: + .string "TIMER2 (TIMER_BASE + 0x00000400U)" +.LASF1744: + .string "AFIO_EC_EOE BIT(7)" +.LASF2766: + .string "TIMER_DMA_CH3D ((uint16_t)TIMER_DMAINTEN_CH3DEN)" +.LASF3467: + .string "MASK_LR_W 0xf9f0707f" +.LASF3667: + .string "MASK_C_ADDI4SPN 0xe003" +.LASF3786: + .string "CSR_HPMCOUNTER5 0xc05" +.LASF39: + .string "__CHAR32_TYPE__ long unsigned int" +.LASF1980: + .string "DATA_RECV(regval) GET_BITS((uint32_t)(regval), 0, 7)" +.LASF2564: + .string "SPI_I2S_INT_FLAG_RXORERR ((uint8_t)0x02U)" +.LASF1156: + .string "DAC_CTL_DDMAEN1 BIT(28)" +.LASF1399: + .string "EXTI_EVEN_EVEN16 BIT(16)" +.LASF1387: + .string "EXTI_EVEN_EVEN4 BIT(4)" +.LASF3405: + .string "MASK_LBU 0x707f" +.LASF1063: + .string "CAN_BT_BS1_6TQ ((uint8_t)0x05U)" +.LASF2826: + .string "TIMER_COUNTER_DOWN ((uint16_t)TIMER_CTL0_DIR)" +.LASF3756: + .string "MATCH_CUSTOM2_RS1 0x205b" +.LASF294: + .string "__GCC_ATOMIC_LONG_LOCK_FREE 2" +.LASF2891: + .string "TIMER_IC_PSC_DIV8 ((uint16_t)0x000CU)" +.LASF25: + .string "__BIGGEST_ALIGNMENT__ 16" +.LASF3660: + .string "MATCH_C_ADDIW 0x2001" +.LASF2121: + .string "RCU_INT_IRC8MSTBIE BIT(10)" +.LASF2898: + .string "TIMER_SMCFG_TRGSEL_CI0FE0 SMCFG_TRGSEL(5)" +.LASF860: + .string "CAN_F16DATA1(canx) REG32((canx) + 0x2C4U)" +.LASF640: + .string "ADC_SAMPLETIME_1POINT5 SAMPTX_SPT(0)" +.LASF3227: + .string "MCONTROL_H (1<<5)" +.LASF2659: + .string "TIMER_INTF_TRGIF BIT(6)" +.LASF1170: + .string "DACC_R8DH_DAC1_DH BITS(8,15)" +.LASF2568: + .string "SPI_I2S_INT_FLAG_FERR ((uint8_t)0x06U)" +.LASF2443: + .string "SPI2 (SPI_BASE + 0x00000400U)" +.LASF2767: + .string "TIMER_DMA_CMTD ((uint16_t)TIMER_DMAINTEN_CMTDEN)" +.LASF3193: + .string "SSTATUS_FS 0x00006000" +.LASF1320: + .string "DMA_PRIORITY_MEDIUM CHCTL_PRIO(1U)" +.LASF3181: + .string "MSTATUS_XS 0x00018000" +.LASF1689: + .string "GPIO_BOP_BOP12 BIT(12)" +.LASF2003: + .string "FWDGT_PSC_DIV256 ((uint8_t)PSC_PSC(6))" +.LASF3079: + .string "_GCC_PTRDIFF_T " +.LASF3418: + .string "MATCH_FENCE 0xf" +.LASF1705: + .string "GPIO_BOP_CR12 BIT(28)" +.LASF3049: + .string "CTL2_IRLP(regval) (BIT(2) & ((uint32_t)(regval) << 2))" +.LASF1649: + .string "GPIO_ISTAT_ISTAT4 BIT(4)" +.LASF1454: + .string "EXTI_SWIEV_SWIEV14 BIT(14)" +.LASF2509: + .string "SPI_NSS_SOFT SPI_CTL0_SWNSSEN" +.LASF177: + .string "__LDBL_MIN_EXP__ (-16381)" +.LASF3456: + .string "MATCH_AMOMIN_W 0x8000202f" +.LASF312: + .string "__riscv_arch_test 1" +.LASF2542: + .string "I2SCTL_I2SOPMOD(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF1083: + .string "CAN_MAILBOX1 ((uint8_t)0x01U)" +.LASF829: + .string "CAN_F13DATA0(canx) REG32((canx) + 0x2A8U)" +.LASF2280: + .string "PLLMF_4 RCU_CFG0_PLLMF_4" +.LASF1527: + .string "FMC_BIT_POS1(val) ((uint32_t)(val) & 0x1FU)" +.LASF387: + .string "__int20 +2" +.LASF3746: + .string "MATCH_CUSTOM1_RS1_RS2 0x302b" +.LASF343: + .string "_MACHINE__DEFAULT_TYPES_H " +.LASF552: + .string "ADC_STAT_WDE BIT(0)" +.LASF3537: + .string "MASK_FMIN_S 0xfe00707f" +.LASF1907: + .string "I2C_SADDR0_ADDRESS BITS(1,7)" +.LASF3942: + .string "CSR_MHPMCOUNTER4H 0xb84" +.LASF2512: + .string "SPI_ENDIAN_LSB SPI_CTL0_LF" +.LASF1656: + .string "GPIO_ISTAT_ISTAT11 BIT(11)" +.LASF2474: + .string "SPI_CTL1_TBEIE BIT(7)" +.LASF3438: + .string "MATCH_MULW 0x200003b" +.LASF1823: + .string "GPIO_PIN_SOURCE_7 ((uint8_t)0x07U)" +.LASF1484: + .string "FMC_STAT REG32((FMC) + 0x0CU)" +.LASF2394: + .string "RCU_I2S2SRC_CKPLL2_MUL2 RCU_CFG1_I2S2SEL" +.LASF2631: + .string "TIMER_SMCFG_SMC BITS(0,2)" +.LASF627: + .string "ADC0_1_EXTTRIG_REGULAR_T3_CH3 CTL1_ETSRC(5)" +.LASF1351: + .string "EXMC_MEMORY_TYPE_PSRAM SNCTL_NRTP(1)" +.LASF2534: + .string "I2S_AUDIOSAMPLE_192K ((uint32_t)192000U)" +.LASF1805: + .string "GPIO_EVENT_PIN_5 ((uint8_t)0x05U)" +.LASF800: + .string "CAN_TMP2(canx) REG32((canx) + 0x1A4U)" +.LASF930: + .string "CAN_RFIFO1_RFD1 BIT(5)" +.LASF880: + .string "CAN_RFIFOMDATA0(canx,bank) REG32((canx) + 0x1B8U + ((bank) * 0x10U))" +.LASF3987: + .string "CAUSE_BREAKPOINT 0x3" +.LASF2192: + .string "RCU_APB1EN_USART1EN BIT(17)" +.LASF2960: + .string "USART_CTL0_REN BIT(2)" +.LASF3828: + .string "CSR_MCOUNTEREN 0x306" +.LASF1297: + .string "DMA_FLAG_G DMA_INTF_GIF" +.LASF1835: + .string "GPIO_PIN_3 BIT(3)" +.LASF3351: + .string "MASK_SRLI 0xfc00707f" +.LASF806: + .string "CAN_RFIFOMDATA10(canx) REG32((canx) + 0x1BCU)" +.LASF1020: + .string "TMDATA0_DB3(regval) (BITS(24,31) & ((uint32_t)(regval) << 24))" +.LASF2396: + .string "RCU_DEEPSLEEP_V_1_2 DSV_DSLPVS(0)" +.LASF166: + .string "__DBL_DECIMAL_DIG__ 17" +.LASF2605: + .string "TIMER_CH1CV(timerx) REG32((timerx) + 0x38U)" +.LASF3763: + .string "MASK_CUSTOM2_RD_RS1 0x707f" +.LASF3260: + .string "MIE_MTIE MIP_MTIP" +.LASF135: + .string "__UINT_FAST64_MAX__ 0xffffffffffffffffULL" +.LASF1920: + .string "I2C_STAT0_BERR BIT(8)" +.LASF2328: + .string "BDCTL_RTCSRC(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF2005: + .string "FWDGT_WRITEACCESS_DISABLE ((uint16_t)0x0000U)" +.LASF1409: + .string "EXTI_RTEN_RTEN7 BIT(7)" +.LASF1183: + .string "DAC_WAVE_DISABLE CTL_DWM(0)" +.LASF2807: + .string "TIMER_DMACFG_DMATC_16TRANSFER DMACFG_DMATC(15)" +.LASF3514: + .string "MATCH_CSRRC 0x3073" +.LASF1631: + .string "GPIO_CTL1_MD9 BITS(4, 5)" +.LASF2531: + .string "I2S_AUDIOSAMPLE_44K ((uint32_t)44100U)" +.LASF1754: + .string "AFIO_PCF0_CAN_REMAP BITS(13, 14)" +.LASF2559: + .string "SPI_I2S_INT_TBE ((uint8_t)0x00U)" +.LASF3884: + .string "CSR_MHPMEVENT13 0x32d" +.LASF1639: + .string "GPIO_CTL1_MD13 BITS(20, 21)" +.LASF3483: + .string "MASK_AMOMINU_D 0xf800707f" +.LASF323: + .string "HAVE_CCONFIG_H 1" +.LASF46: + .string "__UINT16_TYPE__ short unsigned int" +.LASF942: + .string "CAN_INTEN_ERRIE BIT(15)" +.LASF431: + .string "INTPTR_MAX (__INTPTR_MAX__)" +.LASF3538: + .string "MATCH_FMAX_S 0x28001053" +.LASF3156: + .string "BWEI_HANDLER eclic_bwei_handler" +.LASF2972: + .string "USART_CTL1_ADDR BITS(0,3)" +.LASF71: + .string "__LONG_MAX__ 0x7fffffffL" +.LASF2552: + .string "I2S_STD_PCMLONG (I2SCTL_I2SSTD(3) | SPI_I2SCTL_PCMSMOD)" +.LASF2723: + .string "TIMER_CCHP_DTCFG BITS(0,7)" +.LASF1969: + .string "I2C_DMALST_ON I2C_CTL1_DMALST" +.LASF3363: + .string "MASK_SLL 0xfe00707f" +.LASF488: + .string "UINT64_C(x) __UINT64_C(x)" +.LASF3269: + .string "PRV_M 3" +.LASF3971: + .string "CSR_MNXTI 0x345" +.LASF2334: + .string "RCU_PREDV0_DIV1 CFG1_PREDV0(0)" +.LASF296: + .string "__GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1" +.LASF2633: + .string "TIMER_SMCFG_MSM BIT(7)" +.LASF106: + .string "__INT_LEAST8_WIDTH__ 8" +.LASF2186: + .string "RCU_APB1EN_TIMER4EN BIT(3)" +.LASF3844: + .string "CSR_MHPMCOUNTER4 0xb04" +.LASF3793: + .string "CSR_HPMCOUNTER12 0xc0c" +.LASF3956: + .string "CSR_MHPMCOUNTER18H 0xb92" +.LASF55: + .string "__UINT_LEAST32_TYPE__ long unsigned int" +.LASF2022: + .string "DBG_CTL_TIMER0_HOLD BIT(10)" +.LASF3978: + .string "CSR_PUSHMSUBM 0x7EB" +.LASF1095: + .string "CAN_MODE_SLEEP ((uint8_t)0x04U)" +.LASF962: + .string "CAN_TMP_DLENC BITS(0,3)" +.LASF1085: + .string "CAN_NOMAILBOX ((uint8_t)0x03U)" +.LASF1338: + .string "EXMC_SNCTL_NRWTEN BIT(13)" +.LASF1788: + .string "GPIO_OSPEED_2MHZ ((uint8_t)0x02U)" +.LASF1133: + .string "DAC0_L12DH REG32(DAC + 0x0CU)" +.LASF3184: + .string "MSTATUS_MXR 0x00080000" +.LASF2740: + .string "TIMER_INT_TRG TIMER_DMAINTEN_TRGIE" +.LASF362: + .string "__EXP(x) __ ##x ##__" +.LASF1515: + .string "FMC_OBSTAT_SPC BIT(1)" +.LASF2149: + .string "RCU_APB1RST_TIMER5RST BIT(4)" +.LASF2835: + .string "TIMER_ROS_STATE_ENABLE ((uint16_t)TIMER_CCHP_ROS)" +.LASF283: + .string "__GNUC_STDC_INLINE__ 1" +.LASF3737: + .string "MASK_CUSTOM0_RD 0x707f" +.LASF427: + .string "__int_fast16_t_defined 1" +.LASF1604: + .string "GPIO_BC(gpiox) REG32((gpiox) + 0x14U)" +.LASF1080: + .string "CAN_BT_BS2_7TQ ((uint8_t)0x06U)" +.LASF284: + .string "__NO_INLINE__ 1" +.LASF2135: + .string "RCU_APB2RST_PARST BIT(2)" +.LASF1945: + .string "I2C_BIT_POS2(val) (((uint32_t)(val) & 0x1F0000U) >> 16)" +.LASF332: + .string "__O volatile" +.LASF2814: + .string "TIMER_EVENT_SRC_CH3G ((uint16_t)0x0010U)" +.LASF567: + .string "ADC_CTL0_SYNCM BITS(16,19)" +.LASF1948: + .string "I2C_STAT1_REG_OFFSET 0x18U" +.LASF869: + .string "CAN_F25DATA1(canx) REG32((canx) + 0x30CU)" +.LASF2628: + .string "TIMER_CTL1_ISO2 BIT(12)" +.LASF3342: + .string "MATCH_SLLI 0x1013" +.LASF970: + .string "CAN_TMDATA1_DB5 BITS(8,15)" +.LASF2470: + .string "SPI_CTL1_NSSP BIT(3)" +.LASF539: + .string "ADC_IOFF3(adcx) REG32((adcx) + 0x20U)" +.LASF2662: + .string "TIMER_INTF_CH1OF BIT(10)" +.LASF3778: + .string "CSR_FFLAGS 0x1" +.LASF2729: + .string "TIMER_CCHP_OAEN BIT(14)" +.LASF1426: + .string "EXTI_FTEN_FTEN5 BIT(5)" +.LASF3300: + .string "PTE_D 0x080" +.LASF198: + .string "__FLT16_MAX__ 6.55040000000000000000000000000000000e+4F16" +.LASF3261: + .string "MIE_SEIE MIP_SEIP" +.LASF363: + .string "__have_longlong64 1" +.LASF852: + .string "CAN_F8DATA1(canx) REG32((canx) + 0x284U)" +.LASF895: + .string "CAN_STAT_WUIF BIT(3)" +.LASF3990: + .string "CAUSE_MISALIGNED_STORE 0x6" +.LASF2981: + .string "USART_CTL2_ERRIE BIT(0)" +.LASF1379: + .string "EXTI_INTEN_INTEN15 BIT(15)" +.LASF2446: + .string "SPI_STAT(spix) REG32((spix) + 0x08U)" +.LASF404: + .string "__LEAST64 \"ll\"" +.LASF195: + .string "__FLT16_MAX_EXP__ 16" +.LASF1941: + .string "I2C_REG_VAL(i2cx,offset) (REG32((i2cx) + (((uint32_t)(offset) & 0xFFFFU) >> 6)))" +.LASF1634: + .string "GPIO_CTL1_CTL10 BITS(10, 11)" +.LASF1059: + .string "CAN_BT_BS1_2TQ ((uint8_t)0x01U)" +.LASF1184: + .string "DAC_WAVE_MODE_LFSR CTL_DWM(1)" +.LASF2441: + .string "SPI0 (SPI_BASE + 0x0000F800U)" +.LASF1147: + .string "DAC_CTL_DWM0 BITS(6,7)" +.LASF3573: + .string "MASK_FLE_D 0xfe00707f" +.LASF2437: + .string "RTC_FLAG_OVERFLOW RTC_CTL_OVIF" +.LASF2593: + .string "TIMER_SMCFG(timerx) REG32((timerx) + 0x08U)" +.LASF2958: + .string "USART_CTL0_SBKCMD BIT(0)" +.LASF704: + .string "ADC_OVERSAMPLING_RATIO_MUL4 OVSCR_OVSR(1)" +.LASF1316: + .string "DMA_MEMORY_WIDTH_16BIT CHCTL_MWIDTH(1U)" +.LASF3444: + .string "MATCH_REMW 0x200603b" +.LASF2002: + .string "FWDGT_PSC_DIV128 ((uint8_t)PSC_PSC(5))" +.LASF3821: + .string "CSR_SPTBR 0x180" +.LASF3524: + .string "MATCH_FSUB_S 0x8000053" +.LASF3064: + .string "WWDGT_CFG_PSC_DIV1 CFG_PSC(0)" +.LASF1496: + .string "FMC_WS_WSCNT BITS(0,2)" +.LASF2934: + .string "USART2 (USART_BASE+(0x00000400U))" +.LASF185: + .string "__LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L" +.LASF1175: + .string "DAC_TRIGGER_T2_TRGO CTL_DTSEL(1)" +.LASF1683: + .string "GPIO_BOP_BOP6 BIT(6)" +.LASF2716: + .string "TIMER_PSC_PSC BITS(0,15)" +.LASF1108: + .string "CAN_INT_RFNE1 CAN_INTEN_RFNEIE1" +.LASF821: + .string "CAN_F5DATA0(canx) REG32((canx) + 0x268U)" +.LASF3195: + .string "SSTATUS_PUM 0x00040000" +.LASF2847: + .string "TIMER_CCHP_PROT_2 CCHP_PROT(3)" +.LASF388: + .string "__int20__ +2" +.LASF3701: + .string "MASK_C_AND 0xfc63" +.LASF1310: + .string "CHCTL_PWIDTH(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF3301: + .string "PTE_SOFT 0x300" +.LASF1898: + .string "I2C_CTL0_SALT BIT(13)" +.LASF1914: + .string "I2C_STAT0_ADDSEND BIT(1)" +.LASF859: + .string "CAN_F15DATA1(canx) REG32((canx) + 0x2BCU)" +.LASF3376: + .string "MATCH_AND 0x7033" +.LASF1211: + .string "DATA_ALIGN(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF322: + .string "NO_INIT 1" +.LASF1514: + .string "FMC_OBSTAT_OBERR BIT(0)" +.LASF2299: + .string "RCU_PLL_MUL19 (PLLMF_4 | CFG0_PLLMF(2))" +.LASF1563: + .string "OB_WP_7 ((uint32_t)0x00000080U)" +.LASF3336: + .string "MATCH_LUI 0x37" +.LASF618: + .string "ADC_DATAALIGN_RIGHT ((uint32_t)0x00000000U)" +.LASF3831: + .string "CSR_MCAUSE 0x342" +.LASF2248: + .string "RCU_SCSS_HXTAL CFG0_SCSS(1)" +.LASF1715: + .string "GPIO_BC_CR6 BIT(6)" +.LASF1439: + .string "EXTI_FTEN_FTEN18 BIT(18)" +.LASF3463: + .string "MASK_AMOMAXU_W 0xf800707f" +.LASF1588: + .string "OB_WP_ALL ((uint32_t)0xFFFFFFFFU)" +.LASF1491: + .string "OB_USER REG16((OB) + 0x02U)" +.LASF2528: + .string "I2S_AUDIOSAMPLE_16K ((uint32_t)16000U)" +.LASF2664: + .string "TIMER_INTF_CH3OF BIT(12)" +.LASF2336: + .string "RCU_PREDV0_DIV3 CFG1_PREDV0(2)" +.LASF194: + .string "__FLT16_MIN_10_EXP__ (-4)" +.LASF605: + .string "ADC_SCAN_MODE ADC_CTL0_SM" +.LASF1895: + .string "I2C_CTL0_ACKEN BIT(10)" +.LASF2064: + .string "PMU_LDO_LOWPOWER PMU_CTL_LDOLP" +.LASF2128: + .string "RCU_INT_IRC8MSTBIC BIT(18)" +.LASF3472: + .string "MATCH_AMOXOR_D 0x2000302f" +.LASF2166: + .string "RCU_AHBEN_DMA1EN BIT(1)" +.LASF2409: + .string "RTC_CNTL REG32(RTC + 0x1CU)" +.LASF2010: + .string "FWDGT_FLAG_PUD FWDGT_STAT_PUD" +.LASF1760: + .string "AFIO_EXTI0_SS BITS(0, 3)" +.LASF3003: + .string "USART_CTL2_REG_OFFSET (0x00000014U)" +.LASF414: + .string "__int32_t_defined 1" +.LASF11: + .string "__ATOMIC_ACQUIRE 2" +.LASF2154: + .string "RCU_APB1RST_USART1RST BIT(17)" +.LASF540: + .string "ADC_WDHT(adcx) REG32((adcx) + 0x24U)" +.LASF3505: + .string "MASK_DRET 0xffffffff" +.LASF3029: + .string "USART_CLEN_NONE CTL1_CLEN(0)" +.LASF175: + .string "__LDBL_MANT_DIG__ 113" +.LASF2543: + .string "I2S_MODE_SLAVETX I2SCTL_I2SOPMOD(0)" +.LASF2620: + .string "TIMER_CTL1_CCUC BIT(2)" +.LASF2556: + .string "SPI_DMA_RECEIVE ((uint8_t)0x01U)" +.LASF223: + .string "__FLT64_MIN_EXP__ (-1021)" +.LASF3798: + .string "CSR_HPMCOUNTER17 0xc11" +.LASF3925: + .string "CSR_HPMCOUNTER18H 0xc92" +.LASF357: + .string "__MISC_VISIBLE 0" +.LASF18: + .string "__SIZEOF_LONG_LONG__ 8" +.LASF549: + .string "ADC_IDATA3(adcx) REG32((adcx) + 0x48U)" +.LASF905: + .string "CAN_TSTAT_MST0 BIT(7)" +.LASF830: + .string "CAN_F14DATA0(canx) REG32((canx) + 0x2B0U)" +.LASF3360: + .string "MATCH_SUB 0x40000033" +.LASF1472: + .string "EXTI_PD_PD13 BIT(13)" +.LASF1550: + .string "OB_USER_USER ((uint32_t)0x00FF0000U)" +.LASF214: + .string "__FLT32_NORM_MAX__ 3.40282346638528859811704183484516925e+38F32" +.LASF923: + .string "CAN_RFIFO0_RFL0 BITS(0,1)" +.LASF1308: + .string "DMA_MEMORY_INCREASE_DISABLE ((uint8_t)0x00U)" +.LASF232: + .string "__FLT64_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F64" +.LASF3474: + .string "MATCH_AMOOR_D 0x4000302f" +.LASF3770: + .string "MATCH_CUSTOM3_RS1_RS2 0x307b" +.LASF2284: + .string "RCU_PLL_MUL4 CFG0_PLLMF(2)" +.LASF2348: + .string "RCU_PREDV0_DIV15 CFG1_PREDV0(14)" +.LASF872: + .string "CAN_TMI(canx,bank) REG32((canx) + 0x180U + ((bank) * 0x10U))" +.LASF3892: + .string "CSR_MHPMEVENT21 0x335" +.LASF128: + .string "__INT_FAST32_MAX__ 0x7fffffff" +.LASF2214: + .string "RCU_RSTSCK_SWRSTF BIT(28)" +.LASF2298: + .string "RCU_PLL_MUL18 (PLLMF_4 | CFG0_PLLMF(1))" +.LASF1504: + .string "FMC_CTL_PER BIT(1)" +.LASF854: + .string "CAN_F10DATA1(canx) REG32((canx) + 0x294U)" +.LASF3274: + .string "VM_SV39 9" +.LASF1897: + .string "I2C_CTL0_PECTRANS BIT(12)" +.LASF2706: + .string "TIMER_CHCTL2_CH1P BIT(5)" +.LASF3017: + .string "CTL0_WL(regval) (BIT(12) & ((uint32_t)(regval) << 12))" +.LASF282: + .string "__USER_LABEL_PREFIX__ " +.LASF1415: + .string "EXTI_RTEN_RTEN13 BIT(13)" +.LASF1208: + .string "DAC_LFSR_BITS9_0 DAC_WAVE_BIT_WIDTH_10" +.LASF533: + .string "ADC_CTL1(adcx) REG32((adcx) + 0x08U)" +.LASF1675: + .string "GPIO_OCTL_OCTL14 BIT(14)" +.LASF3870: + .string "CSR_MHPMCOUNTER30 0xb1e" +.LASF3381: + .string "MASK_SLLIW 0xfe00707f" +.LASF3773: + .string "MASK_CUSTOM3_RD 0x707f" +.LASF3551: + .string "MASK_FSGNJ_D 0xfe00707f" +.LASF565: + .string "ADC_CTL0_DISIC BIT(12)" +.LASF1067: + .string "CAN_BT_BS1_10TQ ((uint8_t)0x09U)" +.LASF1859: + .string "GPIO_TIMER1_FULL_REMAP ((uint32_t)0x00180300U)" +.LASF2242: + .string "CFG0_SCS(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF2312: + .string "RCU_PLL_MUL32 (PLLMF_4 | CFG0_PLLMF(15))" +.LASF1255: + .string "DMA_CH5MADDR(dmax) REG32((dmax) + 0x78U)" +.LASF274: + .string "__FLT64X_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F64x" +.LASF3961: + .string "CSR_MHPMCOUNTER23H 0xb97" +.LASF3384: + .string "MATCH_SRAIW 0x4000501b" +.LASF1150: + .string "DAC_CTL_DEN1 BIT(16)" +.LASF2987: + .string "USART_CTL2_DENR BIT(6)" +.LASF1493: + .string "OB_WP1 REG16((OB) + 0x0AU)" +.LASF1125: + .string "CRC_CTL_RST BIT(0)" +.LASF3249: + .string "MIP_STIP (1 << IRQ_S_TIMER)" +.LASF995: + .string "CAN_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF180: + .string "__LDBL_MAX_10_EXP__ 4932" +.LASF2213: + .string "RCU_RSTSCK_PORRSTF BIT(27)" +.LASF85: + .string "__WINT_WIDTH__ 32" +.LASF1240: + .string "DMA_CH2CTL(dmax) REG32((dmax) + 0x30U)" +.LASF3119: + .string "__need_NULL" +.LASF2786: + .string "TIMER_DMACFG_DMATA_CH1CV DMACFG_DMATA(14)" +.LASF1531: + .string "FMC_OBSTAT_REG_OFFSET 0x1CU" +.LASF2713: + .string "TIMER_CHCTL2_CH3EN BIT(12)" +.LASF1668: + .string "GPIO_OCTL_OCTL7 BIT(7)" +.LASF2653: + .string "TIMER_INTF_UPIF BIT(0)" +.LASF2076: + .string "RCU_AHBEN REG32(RCU + 0x14U)" +.LASF2160: + .string "RCU_APB1RST_CAN0RST BIT(25)" +.LASF3795: + .string "CSR_HPMCOUNTER14 0xc0e" +.LASF542: + .string "ADC_RSQ0(adcx) REG32((adcx) + 0x2CU)" +.LASF2848: + .string "TIMER_BREAK_ENABLE ((uint16_t)TIMER_CCHP_BRKEN)" +.LASF2210: + .string "RCU_RSTSCK_IRC40KSTB BIT(1)" +.LASF2883: + .string "TIMER_IC_POLARITY_FALLING ((uint16_t)0x0002U)" +.LASF3896: + .string "CSR_MHPMEVENT25 0x339" +.LASF3863: + .string "CSR_MHPMCOUNTER23 0xb17" +.LASF989: + .string "CAN_FCTL_HBC1F BITS(8,13)" +.LASF2400: + .string "GD32VF103_RTC_H " +.LASF273: + .string "__FLT64X_MAX__ 1.18973149535723176508575932662800702e+4932F64x" +.LASF2810: + .string "TIMER_EVENT_SRC_UPG ((uint16_t)0x0001U)" +.LASF2491: + .string "SPI_I2SCTL_I2SSTD BITS(4,5)" +.LASF526: + .string "USE_STDPERIPH_DRIVER " +.LASF2198: + .string "RCU_APB1EN_CAN0EN BIT(25)" +.LASF3341: + .string "MASK_ADDI 0x707f" +.LASF2297: + .string "RCU_PLL_MUL17 (PLLMF_4 | CFG0_PLLMF(0))" +.LASF925: + .string "CAN_RFIFO0_RFO0 BIT(4)" +.LASF2338: + .string "RCU_PREDV0_DIV5 CFG1_PREDV0(4)" +.LASF2937: + .string "USART0 (USART_BASE+(0x0000F400U))" +.LASF2100: + .string "RCU_CFG0_AHBPSC BITS(4,7)" +.LASF2279: + .string "RCU_PLLSRC_HXTAL RCU_CFG0_PLLSEL" +.LASF665: + .string "ADC_CHANNEL_4 ((uint8_t)0x04U)" +.LASF2361: + .string "RCU_PREDV1_DIV11 CFG1_PREDV1(10)" +.LASF1441: + .string "EXTI_SWIEV_SWIEV1 BIT(1)" +.LASF2240: + .string "CFG0_REG_OFFSET 0x04U" +.LASF102: + .string "__UINT32_MAX__ 0xffffffffUL" +.LASF2885: + .string "TIMER_IC_SELECTION_DIRECTTI ((uint16_t)0x0001U)" +.LASF1368: + .string "EXTI_INTEN_INTEN4 BIT(4)" +.LASF2146: + .string "RCU_APB1RST_TIMER2RST BIT(1)" +.LASF1751: + .string "AFIO_PCF0_TIMER1_REMAP BITS(8, 9)" +.LASF3265: + .string "SIP_STIP MIP_STIP" +.LASF2287: + .string "RCU_PLL_MUL7 CFG0_PLLMF(5)" +.LASF3568: + .string "MATCH_FLT_S 0xa0001053" +.LASF606: + .string "ADC_INSERTED_CHANNEL_AUTO ADC_CTL0_ICA" +.LASF3451: + .string "MASK_AMOXOR_W 0xf800707f" +.LASF834: + .string "CAN_F18DATA0(canx) REG32((canx) + 0x2D0U)" +.LASF1165: + .string "DACC_R12DH_DAC0_DH BITS(0,11)" +.LASF3164: + .string "ECLIC_PRIGROUP_LEVEL1_PRIO3 1" +.LASF2765: + .string "TIMER_DMA_CH2D ((uint16_t)TIMER_DMAINTEN_CH2DEN)" +.LASF2267: + .string "RCU_APB2_CKAHB_DIV1 CFG0_APB2PSC(0)" +.LASF1132: + .string "DAC0_R12DH REG32(DAC + 0x08U)" +.LASF2673: + .string "TIMER_CHCTL0_CH0MS BITS(0,1)" +.LASF1904: + .string "I2C_CTL1_DMAON BIT(11)" +.LASF108: + .string "__INT16_C(c) c" +.LASF318: + .string "__riscv_zifencei 2000000" +.LASF3402: + .string "MATCH_LD 0x3003" +.LASF275: + .string "__FLT64X_MIN__ 3.36210314311209350626267781732175260e-4932F64x" +.LASF529: + .string "ADC0 ADC_BASE" +.LASF1508: + .string "FMC_CTL_START BIT(6)" +.LASF1076: + .string "CAN_BT_BS2_3TQ ((uint8_t)0x02U)" +.LASF1355: + .string "EXMC_NWAIT_POLARITY_HIGH ((uint32_t)0x00000200U)" +.LASF3510: + .string "MATCH_CSRRW 0x1073" +.LASF2021: + .string "DBG_CTL_WWDGT_HOLD BIT(9)" +.LASF3745: + .string "MASK_CUSTOM1_RS1 0x707f" +.LASF3503: + .string "MASK_MRET 0xffffffff" +.LASF165: + .string "__DBL_MAX_10_EXP__ 308" +.LASF37: + .string "__UINTMAX_TYPE__ long long unsigned int" +.LASF2612: + .string "TIMER_CTL0_UPDIS BIT(1)" +.LASF573: + .string "ADC_CTL1_RSTCLB BIT(3)" +.LASF3755: + .string "MASK_CUSTOM2 0x707f" +.LASF2351: + .string "RCU_PREDV1_DIV1 CFG1_PREDV1(0)" +.LASF3174: + .string "MSTATUS_UPIE 0x00000010" +.LASF1887: + .string "I2C_CTL0_SMBEN BIT(1)" +.LASF416: + .string "_UINT64_T_DECLARED " +.LASF504: + .string "AHB1_BUS_BASE ((uint32_t)0x40018000U)" +.LASF3930: + .string "CSR_HPMCOUNTER23H 0xc97" +.LASF3014: + .string "CTL0_WM(regval) (BIT(11) & ((uint32_t)(regval) << 11))" +.LASF3560: + .string "MATCH_FCVT_S_D 0x40100053" +.LASF2385: + .string "RCU_PLL2_MUL14 CFG1_PLL2MF(12)" +.LASF508: + .string "WWDGT_BASE (APB1_BUS_BASE + 0x00002C00U)" +.LASF1462: + .string "EXTI_PD_PD3 BIT(3)" +.LASF3131: + .string "TIMER_FREQ ((uint32_t)SystemCoreClock/4)" +.LASF1448: + .string "EXTI_SWIEV_SWIEV8 BIT(8)" +.LASF1623: + .string "GPIO_CTL0_MD5 BITS(20, 21)" +.LASF1791: + .string "GPIO_EVENT_PORT_GPIOB ((uint8_t)0x01U)" +.LASF2171: + .string "RCU_AHBEN_USBFSEN BIT(12)" +.LASF966: + .string "CAN_TMDATA0_DB1 BITS(8,15)" +.LASF1797: + .string "GPIO_PORT_SOURCE_GPIOC ((uint8_t)0x02U)" +.LASF3839: + .string "CSR_DPC 0x7b1" +.LASF430: + .string "INTPTR_MIN (-__INTPTR_MAX__ - 1)" +.LASF1661: + .string "GPIO_OCTL_OCTL0 BIT(0)" +.LASF2926: + .string "TIMER_ETP_FALLING TIMER_SMCFG_ETP" +.LASF2019: + .string "DBG_CTL_STB_HOLD BIT(2)" +.LASF2817: + .string "TIMER_EVENT_SRC_BRKG ((uint16_t)0x0080U)" +.LASF1971: + .string "I2C_PEC_ENABLE I2C_CTL0_PECEN" +.LASF3595: + .string "MASK_FCVT_L_D 0xfff0007f" +.LASF1959: + .string "I2C_DUADEN_DISABLE ((uint32_t)0x00000000U)" +.LASF2865: + .string "TIMER_OCN_IDLE_STATE_LOW ((uint16_t)0x0000U)" +.LASF56: + .string "__UINT_LEAST64_TYPE__ long long unsigned int" +.LASF1578: + .string "OB_WP_22 ((uint32_t)0x00400000U)" +.LASF1123: + .string "CRC_DATA_DATA BITS(0, 31)" +.LASF1953: + .string "I2C_RECEIVER ((uint32_t)0x00000001U)" +.LASF2094: + .string "RCU_CTL_PLL1EN BIT(26)" +.LASF241: + .string "__FLT128_MAX_10_EXP__ 4932" +.LASF1361: + .string "EXTI_FTEN REG32(EXTI + 0x0CU)" +.LASF2020: + .string "DBG_CTL_FWDGT_HOLD BIT(8)" +.LASF2985: + .string "USART_CTL2_NKEN BIT(4)" +.LASF1535: + .string "WS_WSCNT_0 WS_WSCNT(0)" +.LASF1283: + .string "DMA_FLAG_ADD(flag,shift) ((flag) << ((shift) * 4U))" +.LASF1737: + .string "GPIO_LOCK_LK12 BIT(12)" +.LASF683: + .string "ADC_INT_FLAG_EOC ADC_STAT_EOC" +.LASF51: + .string "__INT_LEAST32_TYPE__ long int" +.LASF866: + .string "CAN_F22DATA1(canx) REG32((canx) + 0x2F4U)" +.LASF2963: + .string "USART_CTL0_RBNEIE BIT(5)" +.LASF3371: + .string "MASK_SRL 0xfe00707f" +.LASF1583: + .string "OB_WP_27 ((uint32_t)0x08000000U)" +.LASF374: + .string "_SYS__INTSUP_H " +.LASF3681: + .string "MASK_C_ADDI 0xe003" +.LASF913: + .string "CAN_TSTAT_MAL2 BIT(18)" +.LASF2563: + .string "SPI_I2S_INT_FLAG_RBNE ((uint8_t)0x01U)" +.LASF3048: + .string "USART_CTS_DISABLE CLT2_CTSEN(0)" +.LASF2794: + .string "TIMER_DMACFG_DMATC_3TRANSFER DMACFG_DMATC(2)" +.LASF2340: + .string "RCU_PREDV0_DIV7 CFG1_PREDV0(6)" +.LASF2505: + .string "SPI_TRANSMODE_BDRECEIVE SPI_CTL0_BDEN" +.LASF2992: + .string "USART_GP_PSC BITS(0,7)" +.LASF799: + .string "CAN_TMI2(canx) REG32((canx) + 0x1A0U)" +.LASF2129: + .string "RCU_INT_HXTALSTBIC BIT(19)" +.LASF3801: + .string "CSR_HPMCOUNTER20 0xc14" +.LASF2462: + .string "SPI_CTL0_FF16 BIT(11)" +.LASF3398: + .string "MATCH_LH 0x1003" +.LASF3350: + .string "MATCH_SRLI 0x5013" +.LASF810: + .string "CAN_RFIFOMDATA11(canx) REG32((canx) + 0x1CCU)" +.LASF2074: + .string "RCU_APB2RST REG32(RCU + 0x0CU)" +.LASF3340: + .string "MATCH_ADDI 0x13" +.LASF1582: + .string "OB_WP_26 ((uint32_t)0x04000000U)" +.LASF2103: + .string "RCU_CFG0_ADCPSC BITS(14,15)" +.LASF1197: + .string "DAC_WAVE_BIT_WIDTH_11 DWBW(10)" +.LASF390: + .string "long +4" +.LASF1266: + .string "DMA_INTC_HTFIFC BIT(2)" +.LASF1072: + .string "CAN_BT_BS1_15TQ ((uint8_t)0x0EU)" +.LASF3000: + .string "USART_STAT_REG_OFFSET (0x00000000U)" +.LASF2141: + .string "RCU_APB2RST_ADC1RST BIT(10)" +.LASF2245: + .string "RCU_CKSYSSRC_PLL CFG0_SCS(2)" +.LASF1890: + .string "I2C_CTL0_PECEN BIT(5)" +.LASF159: + .string "__FLT_HAS_QUIET_NAN__ 1" +.LASF3788: + .string "CSR_HPMCOUNTER7 0xc07" +.LASF631: + .string "ADC0_1_EXTTRIG_INSERTED_T0_TRGO CTL1_ETSIC(0)" +.LASF3237: + .string "MCONTROL_ACTION_TRACE_START 2" +.LASF3302: + .string "PTE_PPN_SHIFT 10" +.LASF2216: + .string "RCU_RSTSCK_WWDGTRSTF BIT(30)" +.LASF3949: + .string "CSR_MHPMCOUNTER11H 0xb8b" +.LASF2935: + .string "UART3 (USART_BASE+(0x00000800U))" +.LASF3765: + .string "MASK_CUSTOM2_RD_RS1_RS2 0x707f" +.LASF2033: + .string "DBG_LOW_POWER_SLEEP DBG_CTL_SLP_HOLD" +.LASF590: + .string "ADC_ISQ_IL BITS(20,21)" +.LASF446: + .string "INT32_MAX (__INT32_MAX__)" +.LASF2367: + .string "CFG1_PLL1MF(regval) (BITS(8,11) & ((uint32_t)(regval) << 8))" +.LASF681: + .string "ADC_INT_EOIC ADC_STAT_EOIC" +.LASF2838: + .string "TIMER_IOS_STATE_DISABLE ((uint16_t)0x0000U)" +.LASF1: + .string "__STDC_VERSION__ 201710L" +.LASF2757: + .string "TIMER_FLAG_BRK TIMER_INTF_BRKIF" +.LASF912: + .string "CAN_TSTAT_MTFNERR2 BIT(17)" +.LASF2353: + .string "RCU_PREDV1_DIV3 CFG1_PREDV1(2)" +.LASF2844: + .string "TIMER_CCHP_PROT_OFF CCHP_PROT(0)" +.LASF3703: + .string "MASK_C_SUBW 0xfc63" +.LASF3970: + .string "CSR_MTVT 0x307" +.LASF3315: + .string "clear_csr(reg,bit) ({ unsigned long __tmp; if (__builtin_constant_p(bit) && (unsigned long)(bit) < 32) asm volatile (\"csrrc %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"i\"(bit)); else asm volatile (\"csrrc %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"r\"(bit)); __tmp; })" +.LASF658: + .string "ADC_INSERTED_CHANNEL_1 ((uint8_t)0x01U)" +.LASF136: + .string "__INTPTR_MAX__ 0x7fffffff" +.LASF889: + .string "CAN_CTL_TTC BIT(7)" +.LASF1296: + .string "DMA_INT_FLAG_ERR DMA_INTF_ERRIF" +.LASF2226: + .string "RCU_DSV_DSLPVS BITS(0,1)" +.LASF2051: + .string "CTL_LVDT(regval) (BITS(5,7)&((uint32_t)(regval) << 5))" +.LASF224: + .string "__FLT64_MIN_10_EXP__ (-307)" +.LASF1739: + .string "GPIO_LOCK_LK14 BIT(14)" +.LASF622: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH0 CTL1_ETSRC(0)" +.LASF2643: + .string "TIMER_DMAINTEN_CMTIE BIT(5)" +.LASF2101: + .string "RCU_CFG0_APB1PSC BITS(8,10)" +.LASF607: + .string "CTL0_SYNCM(regval) (BITS(16,19) & ((uint32_t)(regval) << 16))" +.LASF1524: + .string "FMC_REGIDX_BITS(regidx,bitpos0,bitpos1) (((uint32_t)(regidx) << 12) | ((uint32_t)(bitpos0) << 6) | (uint32_t)(bitpos1))" +.LASF1748: + .string "AFIO_PCF0_USART1_REMAP BIT(3)" +.LASF3601: + .string "MASK_FCLASS_D 0xfff0707f" +.LASF3883: + .string "CSR_MHPMEVENT12 0x32c" +.LASF2504: + .string "SPI_TRANSMODE_RECEIVEONLY SPI_CTL0_RO" +.LASF3843: + .string "CSR_MHPMCOUNTER3 0xb03" +.LASF3899: + .string "CSR_MHPMEVENT28 0x33c" +.LASF1814: + .string "GPIO_EVENT_PIN_14 ((uint8_t)0x0EU)" +.LASF3424: + .string "MATCH_MULH 0x2001033" +.LASF2843: + .string "CCHP_PROT(regval) ((uint16_t)(BITS(8, 9) & ((uint32_t)(regval) << 8U)))" +.LASF3728: + .string "MATCH_C_FSWSP 0xe002" +.LASF3001: + .string "USART_CTL0_REG_OFFSET (0x0000000CU)" +.LASF394: + .string "__INT16 \"h\"" +.LASF2748: + .string "TIMER_INT_FLAG_TRG TIMER_INT_TRG" +.LASF2319: + .string "RCU_CKOUT0SRC_NONE CFG0_CKOUT0SEL(0)" +.LASF4017: + .string "priority" +.LASF957: + .string "CAN_TMI_TEN BIT(0)" +.LASF4004: + .string "__uint8_t" +.LASF167: + .string "__DBL_MAX__ ((double)1.79769313486231570814527423731704357e+308L)" +.LASF2458: + .string "SPI_CTL0_LF BIT(7)" +.LASF601: + .string "ADC_FLAG_EOIC ADC_STAT_EOIC" +.LASF1129: + .string "DAC1 (1U)" +.LASF3636: + .string "MATCH_FNMADD_S 0x4f" +.LASF680: + .string "ADC_INT_EOC ADC_STAT_EOC" +.LASF3123: + .string "TIMER_MSIP 0xFFC" +.LASF3210: + .string "DCSR_STEP (1<<2)" +.LASF3117: + .string "NULL" +.LASF782: + .string "CAN1 (CAN0 + 0x00000400U)" +.LASF3200: + .string "DCSR_FULLRESET (1<<28)" +.LASF1340: + .string "EXMC_SNTCFG_ASET BITS(0,3)" +.LASF117: + .string "__UINT8_C(c) c" +.LASF3221: + .string "MCONTROL_SELECT (1<<19)" +.LASF331: + .string "__I volatile const" +.LASF1885: + .string "I2C_FMPCFG(i2cx) REG32((i2cx) + 0x90U)" +.LASF1003: + .string "TSTAT_REG_OFFSET ((uint8_t)0x08U)" +.LASF2841: + .string "TIMER_OUTAUTO_ENABLE ((uint16_t)TIMER_CCHP_OAEN)" +.LASF936: + .string "CAN_INTEN_RFFIE1 BIT(5)" +.LASF2260: + .string "CFG0_APB1PSC(regval) (BITS(8,10) & ((uint32_t)(regval) << 8))" +.LASF1707: + .string "GPIO_BOP_CR14 BIT(30)" +.LASF649: + .string "WDHT_WDHT(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF3099: + .string "__need_size_t" +.LASF1801: + .string "GPIO_EVENT_PIN_1 ((uint8_t)0x01U)" +.LASF228: + .string "__FLT64_MAX__ 1.79769313486231570814527423731704357e+308F64" +.LASF2247: + .string "RCU_SCSS_IRC8M CFG0_SCSS(0)" +.LASF176: + .string "__LDBL_DIG__ 33" +.LASF1093: + .string "CAN_MODE_INITIALIZE ((uint8_t)0x01U)" +.LASF1334: + .string "EXMC_SNCTL_NRW BITS(4,5)" +.LASF2980: + .string "USART_CTL1_LMEN BIT(14)" +.LASF34: + .string "__WCHAR_TYPE__ int" +.LASF978: + .string "CAN_RFIFOMP_FI BITS(8,15)" +.LASF1876: + .string "I2C_CTL0(i2cx) REG32((i2cx) + 0x00U)" +.LASF846: + .string "CAN_F2DATA1(canx) REG32((canx) + 0x254U)" +.LASF1630: + .string "GPIO_CTL1_CTL8 BITS(2, 3)" +.LASF1357: + .string "EXTI EXTI_BASE" +.LASF2032: + .string "DBG_CTL_CAN1_HOLD BIT(21)" +.LASF3782: + .string "CSR_TIME 0xc01" +.LASF1996: + .string "PSC_PSC(regval) (BITS(0,2) & ((uint32_t)(regval) << 0))" +.LASF1773: + .string "AFIO_EXTI13_SS BITS(4, 7)" +.LASF1391: + .string "EXTI_EVEN_EVEN8 BIT(8)" +.LASF324: + .string "GD32VF103V_EVAL 1" +.LASF1331: + .string "EXMC_SNCTL_NRBKEN BIT(0)" +.LASF2018: + .string "DBG_CTL_DSLP_HOLD BIT(1)" +.LASF643: + .string "ADC_SAMPLETIME_28POINT5 SAMPTX_SPT(3)" +.LASF3753: + .string "MASK_CUSTOM1_RD_RS1_RS2 0x707f" +.LASF2117: + .string "RCU_INT_PLL2STBIF BIT(6)" +.LASF84: + .string "__WCHAR_WIDTH__ 32" +.LASF2246: + .string "CFG0_SCSS(regval) (BITS(2,3) & ((uint32_t)(regval) << 2))" +.LASF688: + .string "ADC_RESOLUTION_8B OVSCR_DRES(2)" +.LASF514: + .string "BKP_BASE (APB1_BUS_BASE + 0x00006C00U)" +.LASF2314: + .string "RCU_CKUSB_CKPLL_DIV1_5 CFG0_USBPSC(0)" +.LASF689: + .string "ADC_RESOLUTION_6B OVSCR_DRES(3)" +.LASF3691: + .string "MASK_C_SRAI 0xec03" +.LASF3531: + .string "MASK_FSGNJ_S 0xfe00707f" +.LASF2333: + .string "CFG1_PREDV0(regval) (BITS(0,3) & ((uint32_t)(regval) << 0))" +.LASF773: + .string "OCTL_RCCV(regval) (BITS(0,6) & ((uint32_t)(regval) << 0))" +.LASF1938: + .string "I2C_RT_RISETIME BITS(0,5)" +.LASF2903: + .string "TIMER_TRI_OUT_SRC_ENABLE CTL1_MMC(1)" +.LASF2355: + .string "RCU_PREDV1_DIV5 CFG1_PREDV1(4)" +.LASF996: + .string "CAN_REG_VAL(canx,offset) (REG32((canx) + ((uint32_t)(offset) >> 6)))" +.LASF968: + .string "CAN_TMDATA0_DB3 BITS(24,31)" +.LASF2434: + .string "RTC_INT_FLAG_OVERFLOW RTC_CTL_OVIF" +.LASF2058: + .string "PMU_LVDT_6 CTL_LVDT(6)" +.LASF3673: + .string "MASK_C_FLW 0xe003" +.LASF1908: + .string "I2C_SADDR0_ADDRESS_H BITS(8,9)" +.LASF3305: + .string "SSTATUS_SD SSTATUS32_SD" +.LASF1103: + .string "CAN_TIMEOUT ((uint32_t)0x0000FFFFU)" +.LASF1106: + .string "CAN_INT_RFF0 CAN_INTEN_RFFIE0" +.LASF2697: + .string "TIMER_CHCTL1_CH2CAPPSC BITS(2,3)" +.LASF1567: + .string "OB_WP_11 ((uint32_t)0x00000800U)" +.LASF81: + .string "__INT_WIDTH__ 32" +.LASF766: + .string "BKP_TPCS_TIR BIT(1)" +.LASF3395: + .string "MASK_SRAW 0xfe00707f" +.LASF1477: + .string "EXTI_PD_PD18 BIT(18)" +.LASF202: + .string "__FLT16_DENORM_MIN__ 5.96046447753906250000000000000000000e-8F16" +.LASF3187: + .string "MSTATUS64_SD 0x8000000000000000" +.LASF613: + .string "ADC_DAUL_INSERTED_PARALLEL CTL0_SYNCM(5)" +.LASF438: + .string "UINT_LEAST8_MAX (__UINT_LEAST8_MAX__)" +.LASF1653: + .string "GPIO_ISTAT_ISTAT8 BIT(8)" +.LASF3468: + .string "MATCH_SC_W 0x1800202f" +.LASF781: + .string "CAN0 CAN_BASE" +.LASF400: + .string "__FAST64 \"ll\"" +.LASF1134: + .string "DAC0_R8DH REG32(DAC + 0x10U)" +.LASF1580: + .string "OB_WP_24 ((uint32_t)0x01000000U)" +.LASF173: + .string "__DBL_HAS_INFINITY__ 1" +.LASF1054: + .string "CAN_BT_SJW_1TQ ((uint8_t)0x00U)" +.LASF3191: + .string "SSTATUS_SPIE 0x00000020" +.LASF142: + .string "__FLT_EVAL_METHOD_TS_18661_3__ 0" +.LASF3334: + .string "MATCH_JAL 0x6f" +.LASF30: + .string "__FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__" +.LASF1915: + .string "I2C_STAT0_BTC BIT(2)" +.LASF33: + .string "__PTRDIFF_TYPE__ int" +.LASF2874: + .string "TIMER_OC_SHADOW_ENABLE ((uint16_t)0x0008U)" +.LASF988: + .string "CAN_FCTL_FLD BIT(0)" +.LASF1420: + .string "EXTI_RTEN_RTEN18 BIT(18)" +.LASF3002: + .string "USART_CTL1_REG_OFFSET (0x00000010U)" +.LASF1432: + .string "EXTI_FTEN_FTEN11 BIT(11)" +.LASF113: + .string "__INT_LEAST64_MAX__ 0x7fffffffffffffffLL" +.LASF93: + .string "__SIG_ATOMIC_MAX__ 0x7fffffff" +.LASF1891: + .string "I2C_CTL0_GCEN BIT(6)" +.LASF1040: + .string "ERR_ERRN(regval) (BITS(4,6) & ((uint32_t)(regval) << 4))" +.LASF3729: + .string "MASK_C_FSWSP 0xe003" +.LASF1989: + .string "FWDGT_RLD REG32((FWDGT) + 0x00000008U)" +.LASF2761: + .string "TIMER_FLAG_CH3O TIMER_INTF_CH3OF" +.LASF2851: + .string "TIMER_CH_1 ((uint16_t)0x0001U)" +.LASF1792: + .string "GPIO_EVENT_PORT_GPIOC ((uint8_t)0x02U)" +.LASF3247: + .string "MIP_HSIP (1 << IRQ_H_SOFT)" +.LASF1004: + .string "RFIFO0_REG_OFFSET ((uint8_t)0x0CU)" +.LASF3891: + .string "CSR_MHPMEVENT20 0x334" +.LASF624: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH2 CTL1_ETSRC(2)" +.LASF2362: + .string "RCU_PREDV1_DIV12 CFG1_PREDV1(11)" +.LASF1839: + .string "GPIO_PIN_7 BIT(7)" +.LASF959: + .string "CAN_TMI_FF BIT(2)" +.LASF2013: + .string "DBG DBG_BASE" +.LASF1599: + .string "GPIO_CTL0(gpiox) REG32((gpiox) + 0x00U)" +.LASF2781: + .string "TIMER_DMACFG_DMATA_CNT DMACFG_DMATA(9)" +.LASF2754: + .string "TIMER_FLAG_CH3 TIMER_INTF_CH3IF" +.LASF1384: + .string "EXTI_EVEN_EVEN1 BIT(1)" +.LASF977: + .string "CAN_RFIFOMP_DLENC BITS(0,3)" +.LASF3727: + .string "MASK_C_SWSP 0xe003" +.LASF3564: + .string "MATCH_FSQRT_D 0x5a000053" +.LASF1428: + .string "EXTI_FTEN_FTEN7 BIT(7)" +.LASF3092: + .string "_SIZE_T_DEFINED " +.LASF2773: + .string "TIMER_DMACFG_DMATA_CTL1 DMACFG_DMATA(1)" +.LASF437: + .string "INT_LEAST8_MAX (__INT_LEAST8_MAX__)" +.LASF1386: + .string "EXTI_EVEN_EVEN3 BIT(3)" +.LASF1566: + .string "OB_WP_10 ((uint32_t)0x00000400U)" +.LASF2271: + .string "RCU_APB2_CKAHB_DIV16 CFG0_APB2PSC(7)" +.LASF2014: + .string "DBG_ID REG32(DBG + 0x00U)" +.LASF17: + .string "__SIZEOF_LONG__ 4" +.LASF2000: + .string "FWDGT_PSC_DIV32 ((uint8_t)PSC_PSC(3))" +.LASF2714: + .string "TIMER_CHCTL2_CH3P BIT(13)" +.LASF2920: + .string "TIMER_MASTER_SLAVE_MODE_DISABLE ((uint32_t)0x00000000U)" +.LASF1585: + .string "OB_WP_29 ((uint32_t)0x20000000U)" +.LASF395: + .string "__INT32 \"l\"" +.LASF761: + .string "BKP_OCTL_ASOEN BIT(8)" +.LASF1293: + .string "DMA_INT_FLAG_G DMA_INTF_GIF" +.LASF3166: + .string "ECLIC_PRIGROUP_LEVEL3_PRIO1 3" +.LASF3946: + .string "CSR_MHPMCOUNTER8H 0xb88" +.LASF1555: + .string "OB_WP3_WP3 ((uint32_t)0xFF000000U)" +.LASF3576: + .string "MATCH_FEQ_D 0xa2002053" +.LASF3820: + .string "CSR_SIP 0x144" +.LASF2373: + .string "RCU_PLL1_MUL13 CFG1_PLL1MF(11)" +.LASF347: + .string "__NEWLIB__ 4" +.LASF3417: + .string "MASK_SD 0x707f" +.LASF1646: + .string "GPIO_ISTAT_ISTAT1 BIT(1)" +.LASF2717: + .string "TIMER_CAR_CARL BITS(0,15)" +.LASF3392: + .string "MATCH_SRLW 0x503b" +.LASF3113: + .string "_GCC_WCHAR_T " +.LASF3855: + .string "CSR_MHPMCOUNTER15 0xb0f" +.LASF1267: + .string "DMA_INTC_ERRIFC BIT(3)" +.LASF3815: + .string "CSR_STVEC 0x105" +.LASF1402: + .string "EXTI_RTEN_RTEN0 BIT(0)" +.LASF1157: + .string "DAC_SWT_SWTR0 BIT(0)" +.LASF2178: + .string "RCU_APB2EN_ADC0EN BIT(9)" +.LASF2075: + .string "RCU_APB1RST REG32(RCU + 0x10U)" +.LASF1743: + .string "AFIO_EC_PORT BITS(4, 6)" +.LASF351: + .string "__GNUC_PREREQ__(ma,mi) __GNUC_PREREQ(ma, mi)" +.LASF3480: + .string "MATCH_AMOMAX_D 0xa000302f" +.LASF259: + .string "__FLT32X_NORM_MAX__ 1.79769313486231570814527423731704357e+308F32x" +.LASF2712: + .string "TIMER_CHCTL2_CH2NP BIT(11)" +.LASF2764: + .string "TIMER_DMA_CH1D ((uint16_t)TIMER_DMAINTEN_CH1DEN)" +.LASF2955: + .string "USART_DATA_DATA BITS(0,8)" +.LASF365: + .string "___int8_t_defined 1" +.LASF4018: + .string "eclic_priority_group_set" +.LASF1453: + .string "EXTI_SWIEV_SWIEV13 BIT(13)" +.LASF3797: + .string "CSR_HPMCOUNTER16 0xc10" +.LASF2977: + .string "USART_CTL1_CPL BIT(10)" +.LASF1926: + .string "I2C_STAT0_SMBALT BIT(15)" +.LASF460: + .string "INT_FAST16_MIN (-__INT_FAST16_MAX__ - 1)" +.LASF2208: + .string "RCU_BDCTL_BKPRST BIT(16)" +.LASF932: + .string "CAN_INTEN_RFNEIE0 BIT(1)" +.LASF2639: + .string "TIMER_DMAINTEN_CH0IE BIT(1)" +.LASF954: + .string "CAN_BT_SJW BITS(24,25)" +.LASF2749: + .string "TIMER_INT_FLAG_BRK TIMER_INT_BRK" +.LASF2012: + .string "GD32VF103_DBG_H " +.LASF440: + .string "INT16_MAX (__INT16_MAX__)" +.LASF112: + .string "__INT_LEAST32_WIDTH__ 32" +.LASF2449: + .string "SPI_RCRC(spix) REG32((spix) + 0x14U)" +.LASF1430: + .string "EXTI_FTEN_FTEN9 BIT(9)" +.LASF1193: + .string "DAC_WAVE_BIT_WIDTH_7 DWBW(6)" +.LASF267: + .string "__FLT64X_DIG__ 33" +.LASF3027: + .string "USART_LBLEN_11B CTL1_LBLEN(1)" +.LASF3479: + .string "MASK_AMOMIN_D 0xf800707f" +.LASF1905: + .string "I2C_CTL1_DMALST BIT(12)" +.LASF1367: + .string "EXTI_INTEN_INTEN3 BIT(3)" +.LASF1832: + .string "GPIO_PIN_0 BIT(0)" +.LASF1097: + .string "CAN_FILTERBITS_32BIT ((uint8_t)0x01U)" +.LASF828: + .string "CAN_F12DATA0(canx) REG32((canx) + 0x2A0U)" +.LASF3705: + .string "MASK_C_ADDW 0xfc63" +.LASF1994: + .string "FWDGT_STAT_PUD BIT(0)" +.LASF3810: + .string "CSR_HPMCOUNTER29 0xc1d" +.LASF637: + .string "ADC0_1_EXTTRIG_INSERTED_EXTI_15 CTL1_ETSIC(6)" +.LASF2947: + .string "USART_STAT_NERR BIT(2)" +.LASF947: + .string "CAN_ERR_BOERR BIT(2)" +.LASF3635: + .string "MASK_FNMSUB_S 0x600007f" +.LASF845: + .string "CAN_F1DATA1(canx) REG32((canx) + 0x24CU)" +.LASF2690: + .string "TIMER_CHCTL1_CH2COMCTL BITS(4,6)" +.LASF261: + .string "__FLT32X_EPSILON__ 2.22044604925031308084726333618164062e-16F32x" +.LASF2218: + .string "RCU_AHBRST_USBFSRST BIT(12)" +.LASF4011: + .string "long double" +.LASF3078: + .string "___int_ptrdiff_t_h " +.LASF1492: + .string "OB_WP0 REG16((OB) + 0x08U)" +.LASF1575: + .string "OB_WP_19 ((uint32_t)0x00080000U)" +.LASF2495: + .string "SPI_I2SCTL_I2SSEL BIT(11)" +.LASF2043: + .string "PMU_CTL_STBRST BIT(3)" +.LASF1923: + .string "I2C_STAT0_OUERR BIT(11)" +.LASF2571: + .string "SPI_FLAG_CRCERR SPI_STAT_CRCERR" +.LASF3303: + .string "PTE_TABLE(PTE) (((PTE) & (PTE_V | PTE_R | PTE_W | PTE_X)) == PTE_V)" +.LASF2616: + .string "TIMER_CTL0_CAM BITS(5,6)" +.LASF1497: + .string "FMC_KEY_KEY BITS(0,31)" +.LASF1577: + .string "OB_WP_21 ((uint32_t)0x00200000U)" +.LASF3223: + .string "MCONTROL_ACTION (0x3f<<12)" +.LASF2381: + .string "RCU_PLL2_MUL10 CFG1_PLL2MF(8)" +.LASF340: + .string "LXTAL_VALUE ((uint32_t)32768)" +.LASF481: + .string "INT8_C(x) __INT8_C(x)" +.LASF3068: + .string "N200_FUNC_H " +.LASF3784: + .string "CSR_HPMCOUNTER3 0xc03" +.LASF3769: + .string "MASK_CUSTOM3_RS1 0x707f" +.LASF1687: + .string "GPIO_BOP_BOP10 BIT(10)" +.LASF788: + .string "CAN_INTEN(canx) REG32((canx) + 0x14U)" +.LASF1620: + .string "GPIO_CTL0_CTL3 BITS(14, 15)" +.LASF2875: + .string "TIMER_OC_SHADOW_DISABLE ((uint16_t)0x0000U)" +.LASF1703: + .string "GPIO_BOP_CR10 BIT(26)" +.LASF2614: + .string "TIMER_CTL0_SPM BIT(3)" +.LASF3751: + .string "MASK_CUSTOM1_RD_RS1 0x707f" +.LASF3095: + .string "___int_size_t_h " +.LASF2142: + .string "RCU_APB2RST_TIMER0RST BIT(11)" +.LASF3909: + .string "CSR_INSTRETH 0xc82" +.LASF1452: + .string "EXTI_SWIEV_SWIEV12 BIT(12)" +.LASF2829: + .string "TIMER_CKDIV_DIV2 CTL0_CKDIV(1)" +.LASF2705: + .string "TIMER_CHCTL2_CH1EN BIT(4)" +.LASF2435: + .string "RTC_FLAG_SECOND RTC_CTL_SCIF" +.LASF1557: + .string "OB_WP_1 ((uint32_t)0x00000002U)" +.LASF231: + .string "__FLT64_EPSILON__ 2.22044604925031308084726333618164062e-16F64" +.LASF3699: + .string "MASK_C_OR 0xfc63" +.LASF1868: + .string "GPIO_SWJ_NONJTRST_REMAP ((uint32_t)0x00300100U)" +.LASF3410: + .string "MATCH_SB 0x23" +.LASF4019: + .string "prigroup" +.LASF3718: + .string "MATCH_C_FLWSP 0x6002" +.LASF3366: + .string "MATCH_SLTU 0x3033" +.LASF2760: + .string "TIMER_FLAG_CH2O TIMER_INTF_CH2OF" +.LASF1808: + .string "GPIO_EVENT_PIN_8 ((uint8_t)0x08U)" +.LASF1196: + .string "DAC_WAVE_BIT_WIDTH_10 DWBW(9)" +.LASF809: + .string "CAN_RFIFOMDATA01(canx) REG32((canx) + 0x1C8U)" +.LASF3548: + .string "MATCH_FDIV_D 0x1a000053" +.LASF1573: + .string "OB_WP_17 ((uint32_t)0x00020000U)" +.LASF277: + .string "__FLT64X_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F64x" +.LASF2042: + .string "PMU_CTL_WURST BIT(2)" +.LASF3501: + .string "MASK_HRET 0xffffffff" +.LASF874: + .string "CAN_TMDATA0(canx,bank) REG32((canx) + 0x188U + ((bank) * 0x10U))" +.LASF158: + .string "__FLT_HAS_INFINITY__ 1" +.LASF3682: + .string "MATCH_C_JAL 0x2001" +.LASF3684: + .string "MATCH_C_LI 0x4001" +.LASF3536: + .string "MATCH_FMIN_S 0x28000053" +.LASF1423: + .string "EXTI_FTEN_FTEN2 BIT(2)" +.LASF3198: + .string "DCSR_XDEBUGVER (3U<<30)" +.LASF2557: + .string "SPI_CRC_TX ((uint8_t)0x00U)" +.LASF73: + .string "__WCHAR_MAX__ 0x7fffffff" +.LASF2359: + .string "RCU_PREDV1_DIV9 CFG1_PREDV1(8)" +.LASF3854: + .string "CSR_MHPMCOUNTER14 0xb0e" +.LASF3834: + .string "CSR_TSELECT 0x7a0" +.LASF3861: + .string "CSR_MHPMCOUNTER21 0xb15" +.LASF3707: + .string "MASK_C_J 0xe003" +.LASF3490: + .string "MATCH_SC_D 0x1800302f" +.LASF2860: + .string "TIMER_OCN_POLARITY_HIGH ((uint16_t)0x0000U)" +.LASF2357: + .string "RCU_PREDV1_DIV7 CFG1_PREDV1(6)" +.LASF3889: + .string "CSR_MHPMEVENT18 0x332" +.LASF1219: + .string "DAC_TRIANGLE_AMPLITUDE_31 DAC_WAVE_BIT_WIDTH_5" +.LASF2086: + .string "RCU_CTL_IRC8MADJ BITS(3,7)" +.LASF525: + .string "USBFS_BASE (AHB1_BUS_BASE + 0x0FFE8000U)" +.LASF2901: + .string "CTL1_MMC(regval) (BITS(4, 6) & ((uint32_t)(regval) << 4U))" +.LASF3407: + .string "MASK_LHU 0x707f" +.LASF2206: + .string "RCU_BDCTL_RTCSRC BITS(8,9)" +.LASF661: + .string "ADC_CHANNEL_0 ((uint8_t)0x00U)" +.LASF209: + .string "__FLT32_MIN_10_EXP__ (-37)" +.LASF122: + .string "__UINT_LEAST64_MAX__ 0xffffffffffffffffULL" +.LASF3422: + .string "MATCH_MUL 0x2000033" +.LASF2919: + .string "TIMER_MASTER_SLAVE_MODE_ENABLE TIMER_SMCFG_MSM" +.LASF2689: + .string "TIMER_CHCTL1_CH2COMSEN BIT(3)" +.LASF1944: + .string "I2C_REG_VAL2(i2cx,offset) (REG32((i2cx) + ((uint32_t)(offset) >> 22)))" +.LASF269: + .string "__FLT64X_MIN_10_EXP__ (-4931)" +.LASF602: + .string "ADC_FLAG_STIC ADC_STAT_STIC" +.LASF3159: + .string "ECLIC_GROUP_LEVEL1_PRIO3 1" +.LASF306: + .string "__riscv_mul 1" +.LASF2738: + .string "TIMER_INT_CH3 TIMER_DMAINTEN_CH3IE" +.LASF3052: + .string "GD32VF103_WWDGT_H " +.LASF3934: + .string "CSR_HPMCOUNTER27H 0xc9b" +.LASF64: + .string "__UINT_FAST64_TYPE__ long long unsigned int" +.LASF2998: + .string "USART_REG_VAL2(usartx,offset) (REG32((usartx) + ((uint32_t)(offset) >> 22)))" +.LASF922: + .string "CAN_TSTAT_TMLS2 BIT(31)" +.LASF2652: + .string "TIMER_DMAINTEN_TRGDEN BIT(14)" +.LASF146: + .string "__FLT_DIG__ 6" +.LASF455: + .string "INT_LEAST64_MAX (__INT_LEAST64_MAX__)" +.LASF937: + .string "CAN_INTEN_RFOIE1 BIT(6)" +.LASF276: + .string "__FLT64X_EPSILON__ 1.92592994438723585305597794258492732e-34F64x" +.LASF1836: + .string "GPIO_PIN_4 BIT(4)" +.LASF3283: + .string "IRQ_H_EXT 10" +.LASF1590: + .string "FMC_SIZE (*(uint16_t *)0x1FFFF7E0U)" +.LASF2577: + .string "I2S_FLAG_TBE SPI_STAT_TBE" +.LASF1749: + .string "AFIO_PCF0_USART2_REMAP BITS(4, 5)" +.LASF3487: + .string "MASK_AMOSWAP_D 0xf800707f" +.LASF1864: + .string "GPIO_CAN0_FULL_REMAP ((uint32_t)0x001D6000U)" +.LASF2515: + .string "SPI_CK_PL_LOW_PH_2EDGE SPI_CTL0_CKPH" +.LASF2276: + .string "RCU_CKADC_CKAPB2_DIV12 ((uint32_t)0x00000005U)" +.LASF911: + .string "CAN_TSTAT_MTF2 BIT(16)" +.LASF1559: + .string "OB_WP_3 ((uint32_t)0x00000008U)" +.LASF3814: + .string "CSR_SIE 0x104" +.LASF1309: + .string "DMA_MEMORY_INCREASE_ENABLE ((uint8_t)0x01U)" +.LASF918: + .string "CAN_TSTAT_TME1 BIT(27)" +.LASF3172: + .string "MSTATUS_HIE 0x00000004" +.LASF820: + .string "CAN_F4DATA0(canx) REG32((canx) + 0x260U)" +.LASF2108: + .string "RCU_CFG0_CKOUT0SEL BITS(24,27)" +.LASF3437: + .string "MASK_REMU 0xfe00707f" +.LASF2062: + .string "PMU_FLAG_LVD PMU_CS_LVDF" +.LASF490: + .string "UINTMAX_C(x) __UINTMAX_C(x)" +.LASF1352: + .string "EXMC_MEMORY_TYPE_NOR SNCTL_NRTP(2)" +.LASF2230: + .string "AHBEN_REG_OFFSET 0x14U" +.LASF596: + .string "ADC_OVSCR_OVSS BITS(5,8)" +.LASF1949: + .string "I2C_I2CMODE_ENABLE ((uint32_t)0x00000000U)" +.LASF314: + .string "__riscv_m 2000000" +.LASF1952: + .string "I2C_SMBUS_HOST I2C_CTL0_SMBSEL" +.LASF1955: + .string "I2C_ACK_DISABLE ((uint32_t)0x00000000U)" +.LASF3910: + .string "CSR_HPMCOUNTER3H 0xc83" +.LASF179: + .string "__LDBL_MAX_EXP__ 16384" +.LASF1553: + .string "OB_WP1_WP1 ((uint32_t)0x0000FF00U)" +.LASF23: + .string "__SIZEOF_SIZE_T__ 4" +.LASF338: + .string "IRC8M_STARTUP_TIMEOUT ((uint16_t)0x0500)" +.LASF3713: + .string "MASK_C_SLLI 0xe003" +.LASF1712: + .string "GPIO_BC_CR3 BIT(3)" +.LASF2283: + .string "RCU_PLL_MUL3 CFG0_PLLMF(1)" +.LASF1536: + .string "WS_WSCNT_1 WS_WSCNT(1)" +.LASF3777: + .string "MASK_CUSTOM3_RD_RS1_RS2 0x707f" +.LASF1102: + .string "CAN_FT_REMOTE ((uint32_t)0x00000002U)" +.LASF1242: + .string "DMA_CH2PADDR(dmax) REG32((dmax) + 0x38U)" +.LASF1505: + .string "FMC_CTL_MER BIT(2)" +.LASF1951: + .string "I2C_SMBUS_DEVICE ((uint32_t)0x00000000U)" +.LASF3651: + .string "MASK_C_JR 0xf07f" +.LASF1318: + .string "CHCTL_PRIO(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF2938: + .string "USART_STAT(usartx) REG32((usartx) + (0x00000000U))" +.LASF2156: + .string "RCU_APB1RST_UART3RST BIT(19)" +.LASF2769: + .string "TIMER_DMAREQUEST_UPDATEEVENT TIMER_CTL1_DMAS" +.LASF255: + .string "__FLT32X_MAX_EXP__ 1024" +.LASF629: + .string "ADC0_1_EXTTRIG_REGULAR_NONE CTL1_ETSRC(7)" +.LASF2668: + .string "TIMER_SWEVG_CH2G BIT(3)" +.LASF1701: + .string "GPIO_BOP_CR8 BIT(24)" +.LASF3584: + .string "MATCH_FCVT_LU_S 0xc0300053" +.LASF2153: + .string "RCU_APB1RST_SPI2RST BIT(15)" +.LASF1724: + .string "GPIO_BC_CR15 BIT(15)" +.LASF104: + .string "__INT_LEAST8_MAX__ 0x7f" +.LASF3109: + .string "_WCHAR_T_DEFINED " +.LASF2027: + .string "DBG_CTL_I2C0_HOLD BIT(15)" +.LASF382: + .string "long" +.LASF3129: + .string "TIMER_CTRL_ADDR 0xd1000000" +.LASF2815: + .string "TIMER_EVENT_SRC_CMTG ((uint16_t)0x0020U)" +.LASF2202: + .string "RCU_APB1EN_DACEN BIT(29)" +.LASF1274: + .string "DMA_CHXCTL_PNAGA BIT(6)" +.LASF2677: + .string "TIMER_CHCTL0_CH0COMCEN BIT(7)" +.LASF3370: + .string "MATCH_SRL 0x5033" +.LASF3523: + .string "MASK_FADD_S 0xfe00007f" +.LASF63: + .string "__UINT_FAST32_TYPE__ unsigned int" +.LASF3044: + .string "USART_RTS_ENABLE CLT2_RTSEN(1)" +.LASF356: + .string "__LARGEFILE_VISIBLE 0" +.LASF3286: + .string "IRQ_HOST 13" +.LASF3335: + .string "MASK_JAL 0x7f" +.LASF3988: + .string "CAUSE_MISALIGNED_LOAD 0x4" +.LASF1846: + .string "GPIO_PIN_14 BIT(14)" +.LASF1174: + .string "DAC_TRIGGER_T5_TRGO CTL_DTSEL(0)" +.LASF2401: + .string "RTC RTC_BASE" +.LASF952: + .string "CAN_BT_BS1 BITS(16,19)" +.LASF3415: + .string "MASK_SW 0x707f" +.LASF1466: + .string "EXTI_PD_PD7 BIT(7)" +.LASF1121: + .string "CRC_FDATA REG32(CRC + 0x04U)" +.LASF3393: + .string "MASK_SRLW 0xfe00707f" +.LASF3322: + .string "MATCH_BNE 0x1063" +.LASF2113: + .string "RCU_INT_IRC8MSTBIF BIT(2)" +.LASF1539: + .string "OB_FWDGT_HW ((uint8_t)0x00U)" +.LASF1544: + .string "OB_BOOT_B0 ((uint8_t)0x08U)" +.LASF1012: + .string "FDATA_MASK_HIGH(regval) (BITS(16,31) & ((uint32_t)(regval) << 16))" +.LASF2211: + .string "RCU_RSTSCK_RSTFC BIT(24)" +.LASF999: + .string "CAN_REG_VALS(canx,offset) (REG32((canx) + ((uint32_t)(offset) >> 12)))" +.LASF1665: + .string "GPIO_OCTL_OCTL4 BIT(4)" +.LASF49: + .string "__INT_LEAST8_TYPE__ signed char" +.LASF1437: + .string "EXTI_FTEN_FTEN16 BIT(16)" +.LASF1288: + .string "DMA_CHCTL_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF786: + .string "CAN_RFIFO0(canx) REG32((canx) + 0x0CU)" +.LASF3163: + .string "ECLIC_PRIGROUP_LEVEL0_PRIO4 0" +.LASF2984: + .string "USART_CTL2_HDEN BIT(3)" +.LASF1209: + .string "DAC_LFSR_BITS10_0 DAC_WAVE_BIT_WIDTH_11" +.LASF2219: + .string "RCU_CFG1_PREDV0 BITS(0,3)" +.LASF3202: + .string "DCSR_EBREAKH (1<<14)" +.LASF1446: + .string "EXTI_SWIEV_SWIEV6 BIT(6)" +.LASF1354: + .string "EXMC_NWAIT_POLARITY_LOW ((uint32_t)0x00000000U)" +.LASF253: + .string "__FLT32X_MIN_EXP__ (-1021)" +.LASF368: + .string "___int64_t_defined 1" +.LASF3779: + .string "CSR_FRM 0x2" +.LASF3367: + .string "MASK_SLTU 0xfe00707f" +.LASF2524: + .string "SPI_PSC_128 CTL0_PSC(6)" +.LASF196: + .string "__FLT16_MAX_10_EXP__ 4" +.LASF1057: + .string "CAN_BT_SJW_4TQ ((uint8_t)0x03U)" +.LASF3359: + .string "MASK_ADD 0xfe00707f" +.LASF3764: + .string "MATCH_CUSTOM2_RD_RS1_RS2 0x705b" +.LASF2239: + .string "INT_REG_OFFSET 0x08U" +.LASF229: + .string "__FLT64_NORM_MAX__ 1.79769313486231570814527423731704357e+308F64" +.LASF2052: + .string "PMU_LVDT_0 CTL_LVDT(0)" +.LASF3796: + .string "CSR_HPMCOUNTER15 0xc0f" +.LASF1260: + .string "DMA_INTF_GIF BIT(0)" +.LASF29: + .string "__BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__" +.LASF3364: + .string "MATCH_SLT 0x2033" +.LASF456: + .string "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)" +.LASF3886: + .string "CSR_MHPMEVENT15 0x32f" +.LASF3917: + .string "CSR_HPMCOUNTER10H 0xc8a" +.LASF1360: + .string "EXTI_RTEN REG32(EXTI + 0x08U)" +.LASF1291: + .string "DMA_CHMADDR_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF1733: + .string "GPIO_LOCK_LK8 BIT(8)" +.LASF3189: + .string "SSTATUS_SIE 0x00000002" +.LASF1470: + .string "EXTI_PD_PD11 BIT(11)" +.LASF2517: + .string "CTL0_PSC(regval) (BITS(3,5) & ((uint32_t)(regval) << 3))" +.LASF677: + .string "ADC_CHANNEL_16 ((uint8_t)0x10U)" +.LASF3607: + .string "MASK_FCVT_S_L 0xfff0007f" +.LASF3256: + .string "MIE_HSIE MIP_HSIP" +.LASF953: + .string "CAN_BT_BS2 BITS(20,22)" +.LASF1552: + .string "OB_WP0_WP0 ((uint32_t)0x000000FFU)" +.LASF226: + .string "__FLT64_MAX_10_EXP__ 308" +.LASF311: + .string "__riscv_cmodel_medany 1" +.LASF3822: + .string "CSR_MSTATUS 0x300" +.LASF2059: + .string "PMU_LVDT_7 CTL_LVDT(7)" +.LASF2366: + .string "RCU_PREDV1_DIV16 CFG1_PREDV1(15)" +.LASF2775: + .string "TIMER_DMACFG_DMATA_DMAINTEN DMACFG_DMATA(3)" +.LASF2244: + .string "RCU_CKSYSSRC_HXTAL CFG0_SCS(1)" +.LASF1326: + .string "GD32VF103_EXMC_H " +.LASF257: + .string "__FLT32X_DECIMAL_DIG__ 17" +.LASF2797: + .string "TIMER_DMACFG_DMATC_6TRANSFER DMACFG_DMATC(5)" +.LASF2904: + .string "TIMER_TRI_OUT_SRC_UPDATE CTL1_MMC(2)" +.LASF3040: + .string "CLT2_DENT(regval) (BIT(7) & ((uint32_t)(regval) << 7))" +.LASF2388: + .string "RCU_PLL2_MUL20 CFG1_PLL2MF(15)" +.LASF70: + .string "__INT_MAX__ 0x7fffffff" +.LASF2514: + .string "SPI_CK_PL_HIGH_PH_1EDGE SPI_CTL0_CKPL" +.LASF1447: + .string "EXTI_SWIEV_SWIEV7 BIT(7)" +.LASF1678: + .string "GPIO_BOP_BOP1 BIT(1)" +.LASF1413: + .string "EXTI_RTEN_RTEN11 BIT(11)" +.LASF1244: + .string "DMA_CH3CTL(dmax) REG32((dmax) + 0x44U)" +.LASF2511: + .string "SPI_ENDIAN_MSB ((uint32_t)0x00000000U)" +.LASF1217: + .string "DAC_TRIANGLE_AMPLITUDE_7 DAC_WAVE_BIT_WIDTH_3" +.LASF1673: + .string "GPIO_OCTL_OCTL12 BIT(12)" +.LASF3588: + .string "MATCH_FCLASS_S 0xe0001053" +.LASF3824: + .string "CSR_MEDELEG 0x302" +.LASF133: + .string "__UINT_FAST16_MAX__ 0xffffffffU" +.LASF1861: + .string "GPIO_TIMER2_FULL_REMAP ((uint32_t)0x001A0C00U)" +.LASF2007: + .string "FWDGT_KEY_ENABLE ((uint16_t)0xCCCCU)" +.LASF2755: + .string "TIMER_FLAG_CMT TIMER_INTF_CMTIF" +.LASF2471: + .string "SPI_CTL1_TMOD BIT(4)" +.LASF2763: + .string "TIMER_DMA_CH0D ((uint16_t)TIMER_DMAINTEN_CH0DEN)" +.LASF2109: + .string "RCU_CFG0_ADCPSC_2 BIT(28)" +.LASF1459: + .string "EXTI_PD_PD0 BIT(0)" +.LASF120: + .string "__UINT_LEAST32_MAX__ 0xffffffffUL" +.LASF1228: + .string "DMA0 (DMA_BASE)" +.LASF2660: + .string "TIMER_INTF_BRKIF BIT(7)" +.LASF556: + .string "ADC_STAT_STRC BIT(4)" +.LASF2253: + .string "RCU_AHB_CKSYS_DIV4 CFG0_AHBPSC(9)" +.LASF1910: + .string "I2C_SADDR1_DUADEN BIT(0)" +.LASF448: + .string "INT_LEAST32_MIN (-__INT_LEAST32_MAX__ - 1)" +.LASF1813: + .string "GPIO_EVENT_PIN_13 ((uint8_t)0x0DU)" +.LASF432: + .string "UINTPTR_MAX (__UINTPTR_MAX__)" +.LASF19: + .string "__SIZEOF_SHORT__ 2" +.LASF1280: + .string "DMA_CHXCNT_CNT BITS(0,15)" +.LASF3550: + .string "MATCH_FSGNJ_D 0x22000053" +.LASF3494: + .string "MATCH_EBREAK 0x100073" +.LASF1064: + .string "CAN_BT_BS1_7TQ ((uint8_t)0x06U)" +.LASF408: + .string "__int8_t_defined 1" +.LASF1254: + .string "DMA_CH5PADDR(dmax) REG32((dmax) + 0x74U)" +.LASF1758: + .string "AFIO_PCF0_SPI2_REMAP BIT(28)" +.LASF1299: + .string "DMA_FLAG_HTF DMA_INTF_HTFIF" +.LASF35: + .string "__WINT_TYPE__ unsigned int" +.LASF973: + .string "CAN_RFIFOMI_FT BIT(1)" +.LASF3232: + .string "MCONTROL_LOAD (1<<0)" +.LASF1347: + .string "EXMC_NOR_DATABUS_WIDTH_8B SNCTL_NRW(0)" +.LASF1112: + .string "CAN_INT_PERR CAN_INTEN_PERRIE" +.LASF110: + .string "__INT_LEAST32_MAX__ 0x7fffffffL" +.LASF1346: + .string "SNCTL_NRW(regval) (BITS(4,5) & ((uint32_t)(regval) << 4))" +.LASF2429: + .string "RTC_INT_SECOND RTC_INTEN_SCIE" +.LASF491: + .string "REG32(addr) (*(volatile uint32_t *)(uint32_t)(addr))" +.LASF2669: + .string "TIMER_SWEVG_CH3G BIT(4)" +.LASF3290: + .string "CONFIG_STRING_ADDR 0x0000100C" +.LASF3575: + .string "MASK_FLT_D 0xfe00707f" +.LASF3218: + .string "MCONTROL_TYPE(xlen) (0xfULL<<((xlen)-4))" +.LASF2263: + .string "RCU_APB1_CKAHB_DIV4 CFG0_APB1PSC(5)" +.LASF3720: + .string "MATCH_C_MV 0x8002" +.LASF148: + .string "__FLT_MIN_10_EXP__ (-37)" +.LASF3659: + .string "MASK_C_SD 0xe003" +.LASF1726: + .string "GPIO_LOCK_LK1 BIT(1)" +.LASF3197: + .string "SSTATUS64_SD 0x8000000000000000" +.LASF352: + .string "__ATFILE_VISIBLE 0" +.LASF3546: + .string "MATCH_FMUL_D 0x12000053" +.LASF3714: + .string "MATCH_C_FLDSP 0x2002" +.LASF2197: + .string "RCU_APB1EN_I2C1EN BIT(22)" +.LASF2496: + .string "SPI_I2SPSC_DIV BITS(0,7)" +.LASF668: + .string "ADC_CHANNEL_7 ((uint8_t)0x07U)" +.LASF1328: + .string "EXMC_SNCTL0 REG32(EXMC + 0x00U)" +.LASF1928: + .string "I2C_STAT1_I2CBSY BIT(1)" +.LASF3760: + .string "MATCH_CUSTOM2_RD 0x405b" +.LASF1695: + .string "GPIO_BOP_CR2 BIT(18)" +.LASF812: + .string "CAN_FMCFG(canx) REG32((canx) + 0x204U)" +.LASF892: + .string "CAN_STAT_IWS BIT(0)" +.LASF3974: + .string "CSR_MTVT2 0x7EC" +.LASF851: + .string "CAN_F7DATA1(canx) REG32((canx) + 0x27CU)" +.LASF3285: + .string "IRQ_COP 12" +.LASF1853: + .string "GPIO_USART2_PARTIAL_REMAP ((uint32_t)0x00140010U)" +.LASF3809: + .string "CSR_HPMCOUNTER28 0xc1c" +.LASF507: + .string "RTC_BASE (APB1_BUS_BASE + 0x00002800U)" +.LASF1140: + .string "DACC_R8DH REG32(DAC + 0x28U)" +.LASF1692: + .string "GPIO_BOP_BOP15 BIT(15)" +.LASF3708: + .string "MATCH_C_BEQZ 0xc001" +.LASF2861: + .string "TIMER_OCN_POLARITY_LOW ((uint16_t)0x0008U)" +.LASF979: + .string "CAN_RFIFOMP_TS BITS(16,31)" +.LASF574: + .string "ADC_CTL1_DMA BIT(8)" +.LASF2876: + .string "TIMER_OC_FAST_ENABLE ((uint16_t)0x0004)" +.LASF3217: + .string "DCSR_CAUSE_HALT 5" +.LASF1094: + .string "CAN_MODE_NORMAL ((uint8_t)0x02U)" +.LASF1261: + .string "DMA_INTF_FTFIF BIT(1)" +.LASF767: + .string "BKP_TPCS_TPIE BIT(2)" +.LASF1457: + .string "EXTI_SWIEV_SWIEV17 BIT(17)" +.LASF950: + .string "CAN_ERR_RECNT BITS(24,31)" +.LASF3307: + .string "RISCV_PGSHIFT 12" +.LASF1128: + .string "DAC0 (0U)" +.LASF969: + .string "CAN_TMDATA1_DB4 BITS(0,7)" +.LASF2408: + .string "RTC_CNTH REG32(RTC + 0x18U)" +.LASF2200: + .string "RCU_APB1EN_BKPIEN BIT(27)" +.LASF1556: + .string "OB_WP_0 ((uint32_t)0x00000001U)" +.LASF114: + .string "__INT64_C(c) c ## LL" +.LASF235: + .string "__FLT64_HAS_QUIET_NAN__ 1" +.LASF1647: + .string "GPIO_ISTAT_ISTAT2 BIT(2)" +.LASF205: + .string "__FLT16_HAS_QUIET_NAN__ 1" +.LASF3803: + .string "CSR_HPMCOUNTER22 0xc16" +.LASF3857: + .string "CSR_MHPMCOUNTER17 0xb11" +.LASF3947: + .string "CSR_MHPMCOUNTER9H 0xb89" +.LASF3235: + .string "MCONTROL_ACTION_DEBUG_EXCEPTION 0" +.LASF486: + .string "UINT32_C(x) __UINT32_C(x)" +.LASF237: + .string "__FLT128_DIG__ 33" +.LASF617: + .string "ADC_DAUL_INSERTED_TRIGGER_ROTATION CTL0_SYNCM(9)" +.LASF3299: + .string "PTE_A 0x040" +.LASF1659: + .string "GPIO_ISTAT_ISTAT14 BIT(14)" +.LASF3194: + .string "SSTATUS_XS 0x00018000" +.LASF2155: + .string "RCU_APB1RST_USART2RST BIT(18)" +.LASF3046: + .string "CLT2_CTSEN(regval) (BIT(9) & ((uint32_t)(regval) << 9))" +.LASF2902: + .string "TIMER_TRI_OUT_SRC_RESET CTL1_MMC(0)" +.LASF1570: + .string "OB_WP_14 ((uint32_t)0x00004000U)" +.LASF1397: + .string "EXTI_EVEN_EVEN14 BIT(14)" +.LASF3214: + .string "DCSR_CAUSE_HWBP 2" +.LASF2959: + .string "USART_CTL0_RWU BIT(1)" +.LASF768: + .string "BKP_TPCS_TEF BIT(8)" +.LASF2031: + .string "DBG_CTL_TIMER6_HOLD BIT(20)" +.LASF789: + .string "CAN_ERR(canx) REG32((canx) + 0x18U)" +.LASF1173: + .string "CTL_DTSEL(regval) (BITS(3,5) & ((uint32_t)(regval) << 3))" +.LASF2666: + .string "TIMER_SWEVG_CH0G BIT(1)" +.LASF570: + .string "ADC_CTL1_ADCON BIT(0)" +.LASF242: + .string "__FLT128_DECIMAL_DIG__ 36" +.LASF3750: + .string "MATCH_CUSTOM1_RD_RS1 0x602b" +.LASF325: + .string "__RTTHREAD__ 1" +.LASF2944: + .string "USART_GP(usartx) REG32((usartx) + (0x00000018U))" +.LASF2487: + .string "SPI_TCRC_TCRC BITS(0,15)" +.LASF2053: + .string "PMU_LVDT_1 CTL_LVDT(1)" +.LASF2816: + .string "TIMER_EVENT_SRC_TRGG ((uint16_t)0x0040U)" +.LASF189: + .string "__LDBL_HAS_INFINITY__ 1" +.LASF2274: + .string "RCU_CKADC_CKAPB2_DIV6 ((uint32_t)0x00000002U)" +.LASF2966: + .string "USART_CTL0_PERRIE BIT(8)" +.LASF1569: + .string "OB_WP_13 ((uint32_t)0x00002000U)" +.LASF3572: + .string "MATCH_FLE_D 0xa2000053" +.LASF2683: + .string "TIMER_CHCTL0_CH0CAPPSC BITS(2,3)" +.LASF3493: + .string "MASK_ECALL 0xffffffff" +.LASF3296: + .string "PTE_X 0x008" +.LASF2459: + .string "SPI_CTL0_SWNSS BIT(8)" +.LASF3927: + .string "CSR_HPMCOUNTER20H 0xc94" +.LASF1337: + .string "EXMC_SNCTL_WREN BIT(12)" +.LASF2403: + .string "RTC_CTL REG32(RTC + 0x04U)" +.LASF1113: + .string "CAN_INT_BO CAN_INTEN_BOIE" +.LASF2415: + .string "RTC_CTL_SCIF BIT(0)" +.LASF1591: + .string "SRAM_SIZE (*(uint16_t *)0x1FFFF7E2U)" +.LASF308: + .string "__riscv_muldiv 1" +.LASF2311: + .string "RCU_PLL_MUL31 (PLLMF_4 | CFG0_PLLMF(14))" +.LASF2724: + .string "TIMER_CCHP_PROT BITS(8,9)" +.LASF1490: + .string "OB_SPC REG16((OB) + 0x00U)" +.LASF330: + .string "GD32VF103_H " +.LASF563: + .string "ADC_CTL0_ICA BIT(10)" +.LASF497: + .string "FLASH_BASE ((uint32_t)0x08000000U)" +.LASF2853: + .string "TIMER_CH_3 ((uint16_t)0x0003U)" +.LASF68: + .string "__SCHAR_MAX__ 0x7f" +.LASF293: + .string "__GCC_ATOMIC_INT_LOCK_FREE 2" +.LASF258: + .string "__FLT32X_MAX__ 1.79769313486231570814527423731704357e+308F32x" +.LASF1098: + .string "CAN_FILTERMODE_MASK ((uint8_t)0x00U)" +.LASF38: + .string "__CHAR16_TYPE__ short unsigned int" +.LASF2: + .string "__STDC_UTF_16__ 1" +.LASF2024: + .string "DBG_CTL_TIMER2_HOLD BIT(12)" +.LASF3622: + .string "MATCH_FLW 0x2007" +.LASF2183: + .string "RCU_APB1EN_TIMER1EN BIT(0)" +.LASF2905: + .string "TIMER_TRI_OUT_SRC_CH0 CTL1_MMC(3)" +.LASF2607: + .string "TIMER_CH3CV(timerx) REG32((timerx) + 0x40U)" +.LASF101: + .string "__UINT16_MAX__ 0xffff" +.LASF2427: + .string "RTC_ALRMH_ALRM BITS(0,15)" +.LASF1880: + .string "I2C_DATA(i2cx) REG32((i2cx) + 0x10U)" +.LASF774: + .string "RTC_OUTPUT_ALARM_PULSE ((uint16_t)0x0000U)" +.LASF3858: + .string "CSR_MHPMCOUNTER18 0xb12" +.LASF3620: + .string "MATCH_FMV_D_X 0xf2000053" +.LASF1081: + .string "CAN_BT_BS2_8TQ ((uint8_t)0x07U)" +.LASF3888: + .string "CSR_MHPMEVENT17 0x331" +.LASF3050: + .string "USART_IRLP_LOW CTL2_IRLP(1)" +.LASF843: + .string "CAN_F27DATA0(canx) REG32((canx) + 0x318U)" +.LASF772: + .string "BKP_DATA_GET(regval) GET_BITS((uint32_t)(regval), 0, 15)" +.LASF270: + .string "__FLT64X_MAX_EXP__ 16384" +.LASF2072: + .string "RCU_CFG0 REG32(RCU + 0x04U)" +.LASF779: + .string "BKP_INT_FLAG_TAMPER BKP_TPCS_TIF" +.LASF960: + .string "CAN_TMI_EFID BITS(3,31)" +.LASF1783: + .string "GPIO_MODE_OUT_OD ((uint8_t)0x14U)" +.LASF2735: + .string "TIMER_INT_CH0 TIMER_DMAINTEN_CH0IE" +.LASF3610: + .string "MATCH_FMV_S_X 0xf0000053" +.LASF1047: + .string "CAN_ERRN_6 ERR_ERRN(6U)" +.LASF3: + .string "__STDC_UTF_32__ 1" +.LASF1290: + .string "DMA_CHPADDR_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF360: + .string "__XSI_VISIBLE 0" +.LASF3019: + .string "USART_WL_9BIT CTL0_WL(1)" +.LASF2532: + .string "I2S_AUDIOSAMPLE_48K ((uint32_t)48000U)" +.LASF1826: + .string "GPIO_PIN_SOURCE_10 ((uint8_t)0x0AU)" +.LASF2430: + .string "RTC_INT_ALARM RTC_INTEN_ALRMIE" +.LASF2209: + .string "RCU_RSTSCK_IRC40KEN BIT(0)" +.LASF2412: + .string "RTC_INTEN_SCIE BIT(0)" +.LASF1551: + .string "OB_USER_USER_N ((uint32_t)0xFF000000U)" +.LASF3291: + .string "EXT_IO_BASE 0x40000000" +.LASF1060: + .string "CAN_BT_BS1_3TQ ((uint8_t)0x02U)" +.LASF616: + .string "ADC_DAUL_REGULAL_FOLLOWUP_SLOW CTL0_SYNCM(8)" +.LASF2104: + .string "RCU_CFG0_PLLSEL BIT(16)" +.LASF566: + .string "ADC_CTL0_DISNUM BITS(13,15)" +.LASF2168: + .string "RCU_AHBEN_FMCSPEN BIT(4)" +.LASF2954: + .string "USART_STAT_CTSF BIT(9)" +.LASF694: + .string "ADC_OVERSAMPLING_SHIFT_1B OVSCR_OVSS(1)" +.LASF4012: + .string "eclic_send_event" +.LASF2558: + .string "SPI_CRC_RX ((uint8_t)0x01U)" +.LASF6: + .string "__GNUC_MINOR__ 2" +.LASF234: + .string "__FLT64_HAS_INFINITY__ 1" +.LASF2347: + .string "RCU_PREDV0_DIV14 CFG1_PREDV0(13)" +.LASF1082: + .string "CAN_MAILBOX0 ((uint8_t)0x00U)" +.LASF155: + .string "__FLT_EPSILON__ 1.19209289550781250000000000000000000e-7F" +.LASF593: + .string "ADC_RDATA_ADC1RDTR BITS(16,31)" +.LASF2600: + .string "TIMER_CNT(timerx) REG32((timerx) + 0x24U)" +.LASF2236: + .string "RSTSCK_REG_OFFSET 0x24U" +.LASF3038: + .string "USART_DENR_ENABLE CLT2_DENR(1)" +.LASF152: + .string "__FLT_MAX__ 3.40282346638528859811704183484516925e+38F" +.LASF3476: + .string "MATCH_AMOAND_D 0x6000302f" +.LASF833: + .string "CAN_F17DATA0(canx) REG32((canx) + 0x2C8U)" +.LASF371: + .string "___int_least32_t_defined 1" +.LASF1382: + .string "EXTI_INTEN_INTEN18 BIT(18)" +.LASF3518: + .string "MATCH_CSRRSI 0x6073" +.LASF1529: + .string "FMC_STAT_REG_OFFSET 0x0CU" +.LASF2169: + .string "RCU_AHBEN_CRCEN BIT(6)" +.LASF2519: + .string "SPI_PSC_4 CTL0_PSC(1)" +.LASF1406: + .string "EXTI_RTEN_RTEN4 BIT(4)" +.LASF41: + .string "__INT8_TYPE__ signed char" +.LASF557: + .string "ADC_CTL0_WDCHSEL BITS(0,4)" +.LASF1518: + .string "FMC_WP_WP BITS(0,31)" +.LASF1201: + .string "DAC_LFSR_BITS2_0 DAC_WAVE_BIT_WIDTH_3" +.LASF3132: + .string "N200_ECLIC_H " +.LASF2636: + .string "TIMER_SMCFG_SMC1 BIT(14)" +.LASF2819: + .string "TIMER_COUNTER_EDGE CTL0_CAM(0)" +.LASF1804: + .string "GPIO_EVENT_PIN_4 ((uint8_t)0x04U)" +.LASF2483: + .string "SPI_STAT_FERR BIT(8)" +.LASF3907: + .string "CSR_CYCLEH 0xc80" +.LASF3586: + .string "MATCH_FMV_X_S 0xe0000053" +.LASF3443: + .string "MASK_DIVUW 0xfe00707f" +.LASF2968: + .string "USART_CTL0_PCEN BIT(10)" +.LASF3878: + .string "CSR_MHPMEVENT7 0x327" +.LASF1621: + .string "GPIO_CTL0_MD4 BITS(16, 17)" +.LASF583: + .string "ADC_SAMPTX_SPTN BITS(0,2)" +.LASF3347: + .string "MASK_SLTIU 0x707f" +.LASF450: + .string "UINT_LEAST32_MAX (__UINT_LEAST32_MAX__)" +.LASF1650: + .string "GPIO_ISTAT_ISTAT5 BIT(5)" +.LASF3331: + .string "MASK_BGEU 0x707f" +.LASF2733: + .string "TIMER_DMATB_DMATB BITS(0,15)" +.LASF3154: + .string "MSIP_HANDLER eclic_msip_handler" +.LASF3273: + .string "VM_SV32 8" +.LASF3219: + .string "MCONTROL_DMODE(xlen) (1ULL<<((xlen)-5))" +.LASF2957: + .string "USART_BAUD_INTDIV BITS(4,15)" +.LASF3042: + .string "USART_DENT_DISABLE CLT2_DENT(0)" +.LASF1371: + .string "EXTI_INTEN_INTEN7 BIT(7)" +.LASF1528: + .string "FMC_REG_OFFSET_GET(flag) ((uint32_t)(flag) >> 12)" +.LASF1050: + .string "CAN_NORMAL_MODE ((uint8_t)0x00U)" +.LASF3712: + .string "MATCH_C_SLLI 0x2" +.LASF383: + .string "signed +0" +.LASF1322: + .string "DMA_PRIORITY_ULTRA_HIGH CHCTL_PRIO(3U)" +.LASF1822: + .string "GPIO_PIN_SOURCE_6 ((uint8_t)0x06U)" +.LASF685: + .string "OVSCR_DRES(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF2808: + .string "TIMER_DMACFG_DMATC_17TRANSFER DMACFG_DMATC(16)" +.LASF1142: + .string "DAC1_DO REG32(DAC + 0x30U)" +.LASF3520: + .string "MATCH_CSRRCI 0x7073" +.LASF1163: + .string "DAC1_L12DH_DAC1_DH BITS(4,15)" +.LASF1741: + .string "GPIO_LOCK_LKK BIT(16)" +.LASF107: + .string "__INT_LEAST16_MAX__ 0x7fff" +.LASF103: + .string "__UINT64_MAX__ 0xffffffffffffffffULL" +.LASF3936: + .string "CSR_HPMCOUNTER29H 0xc9d" +.LASF3562: + .string "MATCH_FCVT_D_S 0x42000053" +.LASF424: + .string "__int_least32_t_defined 1" +.LASF3519: + .string "MASK_CSRRSI 0x707f" +.LASF1249: + .string "DMA_CH4CNT(dmax) REG32((dmax) + 0x5CU)" +.LASF1245: + .string "DMA_CH3CNT(dmax) REG32((dmax) + 0x48U)" +.LASF412: + .string "_INT32_T_DECLARED " +.LASF1532: + .string "UNLOCK_KEY0 ((uint32_t)0x45670123U)" +.LASF3549: + .string "MASK_FDIV_D 0xfe00007f" +.LASF2676: + .string "TIMER_CHCTL0_CH0COMCTL BITS(4,6)" +.LASF411: + .string "__int16_t_defined 1" +.LASF2909: + .string "TIMER_TRI_OUT_SRC_O3CPRE CTL1_MMC(7)" +.LASF652: + .string "ISQ_IL(regval) (BITS(20,21) & ((uint32_t)(regval) << 20))" +.LASF1185: + .string "DAC_WAVE_MODE_TRIANGLE CTL_DWM(2)" +.LASF3653: + .string "MASK_C_JALR 0xf07f" +.LASF156: + .string "__FLT_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F" +.LASF2309: + .string "RCU_PLL_MUL29 (PLLMF_4 | CFG0_PLLMF(12))" +.LASF2618: + .string "TIMER_CTL0_CKDIV BITS(8,9)" +.LASF3827: + .string "CSR_MTVEC 0x305" +.LASF1041: + .string "CAN_ERRN_0 ERR_ERRN(0U)" +.LASF1475: + .string "EXTI_PD_PD16 BIT(16)" +.LASF522: + .string "RCU_BASE (AHB1_BUS_BASE + 0x00009000U)" +.LASF696: + .string "ADC_OVERSAMPLING_SHIFT_3B OVSCR_OVSS(3)" +.LASF3439: + .string "MASK_MULW 0xfe00707f" +.LASF1109: + .string "CAN_INT_RFF1 CAN_INTEN_RFFIE1" +.LASF3957: + .string "CSR_MHPMCOUNTER19H 0xb93" +.LASF1044: + .string "CAN_ERRN_3 ERR_ERRN(3U)" +.LASF2195: + .string "RCU_APB1EN_UART4EN BIT(20)" +.LASF3462: + .string "MATCH_AMOMAXU_W 0xe000202f" +.LASF2176: + .string "RCU_APB2EN_PDEN BIT(5)" +.LASF211: + .string "__FLT32_MAX_10_EXP__ 38" +.LASF2994: + .string "USART_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF3914: + .string "CSR_HPMCOUNTER7H 0xc87" +.LASF934: + .string "CAN_INTEN_RFOIE0 BIT(3)" +.LASF3025: + .string "CTL1_LBLEN(regval) (BIT(5) & ((uint32_t)(regval) << 5))" +.LASF3959: + .string "CSR_MHPMCOUNTER21H 0xb95" +.LASF3558: + .string "MATCH_FMAX_D 0x2a001053" +.LASF3913: + .string "CSR_HPMCOUNTER6H 0xc86" +.LASF3362: + .string "MATCH_SLL 0x1033" +.LASF69: + .string "__SHRT_MAX__ 0x7fff" +.LASF2684: + .string "TIMER_CHCTL0_CH0CAPFLT BITS(4,7)" +.LASF797: + .string "CAN_TMDATA01(canx) REG32((canx) + 0x198U)" +.LASF2452: + .string "SPI_I2SPSC(spix) REG32((spix) + 0x20U)" +.LASF1982: + .string "I2C_DTCY_16_9 I2C_CKCFG_DTCY" +.LASF3186: + .string "MSTATUS32_SD 0x80000000" +.LASF1418: + .string "EXTI_RTEN_RTEN16 BIT(16)" +.LASF2255: + .string "RCU_AHB_CKSYS_DIV16 CFG0_AHBPSC(11)" +.LASF3668: + .string "MATCH_C_FLD 0x2000" +.LASF2426: + .string "RTC_CNTL_CNT BITS(0,15)" +.LASF1921: + .string "I2C_STAT0_LOSTARB BIT(9)" +.LASF2849: + .string "TIMER_BREAK_DISABLE ((uint16_t)0x0000U)" +.LASF3579: + .string "MASK_FCVT_W_S 0xfff0007f" +.LASF558: + .string "ADC_CTL0_EOCIE BIT(5)" +.LASF72: + .string "__LONG_LONG_MAX__ 0x7fffffffffffffffLL" +.LASF2789: + .string "TIMER_DMACFG_DMATA_CCHP DMACFG_DMATA(17)" +.LASF83: + .string "__LONG_LONG_WIDTH__ 64" +.LASF2516: + .string "SPI_CK_PL_HIGH_PH_2EDGE (SPI_CTL0_CKPL | SPI_CTL0_CKPH)" +.LASF45: + .string "__UINT8_TYPE__ unsigned char" +.LASF2264: + .string "RCU_APB1_CKAHB_DIV8 CFG0_APB1PSC(6)" +.LASF105: + .string "__INT8_C(c) c" +.LASF398: + .string "__FAST16 " +.LASF3073: + .string "_T_PTRDIFF_ " +.LASF1077: + .string "CAN_BT_BS2_4TQ ((uint8_t)0x03U)" +.LASF805: + .string "CAN_RFIFOMDATA00(canx) REG32((canx) + 0x1B8U)" +.LASF2974: + .string "USART_CTL1_LBDIE BIT(6)" +.LASF129: + .string "__INT_FAST32_WIDTH__ 32" +.LASF1364: + .string "EXTI_INTEN_INTEN0 BIT(0)" +.LASF2060: + .string "PMU_FLAG_WAKEUP PMU_CS_WUF" +.LASF3380: + .string "MATCH_SLLIW 0x101b" +.LASF1753: + .string "AFIO_PCF0_TIMER3_REMAP BIT(12)" +.LASF2591: + .string "TIMER_CTL0(timerx) REG32((timerx) + 0x00U)" +.LASF315: + .string "__riscv_a 2000000" +.LASF1203: + .string "DAC_LFSR_BITS4_0 DAC_WAVE_BIT_WIDTH_5" +.LASF3387: + .string "MASK_ADDW 0xfe00707f" +.LASF500: + .string "DBG_BASE ((uint32_t)0xE0042000U)" +.LASF3580: + .string "MATCH_FCVT_WU_S 0xc0100053" +.LASF1110: + .string "CAN_INT_RFO1 CAN_INTEN_RFOIE1" +.LASF2063: + .string "PMU_LDO_NORMAL ((uint32_t)0x00000000U)" +.LASF2384: + .string "RCU_PLL2_MUL13 CFG1_PLL2MF(11)" +.LASF260: + .string "__FLT32X_MIN__ 2.22507385850720138309023271733240406e-308F32x" +.LASF243: + .string "__FLT128_MAX__ 1.18973149535723176508575932662800702e+4932F128" +.LASF3125: + .string "TIMER_MTIMECMP 0x8" +.LASF2433: + .string "RTC_INT_FLAG_ALARM RTC_CTL_ALRMIF" +.LASF949: + .string "CAN_ERR_TECNT BITS(16,23)" +.LASF75: + .string "__WINT_MAX__ 0xffffffffU" +.LASF534: + .string "ADC_SAMPT0(adcx) REG32((adcx) + 0x0CU)" +.LASF757: + .string "BKP_TPCS REG16((BKP) + 0x34U)" +.LASF2590: + .string "TIMER6 (TIMER_BASE + 0x00001400U)" +.LASF825: + .string "CAN_F9DATA0(canx) REG32((canx) + 0x288U)" +.LASF98: + .string "__INT32_MAX__ 0x7fffffffL" +.LASF1902: + .string "I2C_CTL1_EVIE BIT(9)" +.LASF1526: + .string "FMC_BIT_POS0(val) (((uint32_t)(val) >> 6) & 0x1FU)" +.LASF1958: + .string "I2C_ACKPOS_CURRENT ((uint32_t)0x00000001U)" +.LASF3993: + .string "CAUSE_SUPERVISOR_ECALL 0x9" +.LASF1495: + .string "OB_WP3 REG16((OB) + 0x0EU)" +.LASF1427: + .string "EXTI_FTEN_FTEN6 BIT(6)" +.LASF863: + .string "CAN_F19DATA1(canx) REG32((canx) + 0x2DCU)" +.LASF3989: + .string "CAUSE_FAULT_LOAD 0x5" +.LASF2539: + .string "I2S_FRAMEFORMAT_DT32B_CH32B (I2SCTL_DTLEN(2) | SPI_I2SCTL_CHLEN)" +.LASF3589: + .string "MASK_FCLASS_S 0xfff0707f" +.LASF3420: + .string "MATCH_FENCE_I 0x100f" +.LASF1628: + .string "GPIO_CTL0_CTL7 BITS(30, 31)" +.LASF2331: + .string "RCU_RTCSRC_IRC40K BDCTL_RTCSRC(2)" +.LASF3090: + .string "_BSD_SIZE_T_ " +.LASF2461: + .string "SPI_CTL0_RO BIT(10)" +.LASF1029: + .string "GET_RFIFOMDATA0_DB0(regval) GET_BITS((uint32_t)(regval), 0U, 7U)" +.LASF472: + .string "SIZE_MAX (__SIZE_MAX__)" +.LASF1311: + .string "DMA_PERIPHERAL_WIDTH_8BIT CHCTL_PWIDTH(0U)" +.LASF2068: + .string "WFE_CMD ((uint8_t)0x01U)" +.LASF42: + .string "__INT16_TYPE__ short int" +.LASF47: + .string "__UINT32_TYPE__ long unsigned int" +.LASF2438: + .string "RTC_FLAG_RSYN RTC_CTL_RSYNF" +.LASF3860: + .string "CSR_MHPMCOUNTER20 0xb14" +.LASF2316: + .string "RCU_CKUSB_CKPLL_DIV2_5 CFG0_USBPSC(2)" +.LASF76: + .string "__WINT_MIN__ 0U" +.LASF1939: + .string "I2C_FMPCFG_FMPEN BIT(0)" +.LASF2617: + .string "TIMER_CTL0_ARSE BIT(7)" +.LASF429: + .string "__int_fast64_t_defined 1" +.LASF1931: + .string "I2C_STAT1_DEFSMB BIT(5)" +.LASF938: + .string "CAN_INTEN_WERRIE BIT(8)" +.LASF3388: + .string "MATCH_SUBW 0x4000003b" +.LASF1684: + .string "GPIO_BOP_BOP7 BIT(7)" +.LASF3072: + .string "_PTRDIFF_T " +.LASF698: + .string "ADC_OVERSAMPLING_SHIFT_5B OVSCR_OVSS(5)" +.LASF3112: + .string "__INT_WCHAR_T_H " +.LASF2888: + .string "TIMER_IC_PSC_DIV1 ((uint16_t)0x0000U)" +.LASF2739: + .string "TIMER_INT_CMT TIMER_DMAINTEN_CMTIE" +.LASF577: + .string "ADC_CTL1_ETEIC BIT(15)" +.LASF1502: + .string "FMC_STAT_ENDF BIT(5)" +.LASF1287: + .string "DMA_CHMADDR(dma,channel) REG32(((dma) + 0x14U) + 0x14U * (uint32_t)(channel))" +.LASF2432: + .string "RTC_INT_FLAG_SECOND RTC_CTL_SCIF" +.LASF2859: + .string "TIMER_OC_POLARITY_LOW ((uint16_t)0x0002U)" +.LASF2329: + .string "RCU_RTCSRC_NONE BDCTL_RTCSRC(0)" +.LASF74: + .string "__WCHAR_MIN__ (-__WCHAR_MAX__ - 1)" +.LASF2028: + .string "DBG_CTL_I2C1_HOLD BIT(16)" +.LASF1329: + .string "EXMC_SNTCFG0 REG32(EXMC + 0x04U)" +.LASF3316: + .string "rdtime() read_csr(time)" +.LASF422: + .string "__int_least8_t_defined 1" +.LASF951: + .string "CAN_BT_BAUDPSC BITS(0,9)" +.LASF3807: + .string "CSR_HPMCOUNTER26 0xc1a" +.LASF1716: + .string "GPIO_BC_CR7 BIT(7)" +.LASF2661: + .string "TIMER_INTF_CH0OF BIT(9)" +.LASF1410: + .string "EXTI_RTEN_RTEN8 BIT(8)" +.LASF1191: + .string "DAC_WAVE_BIT_WIDTH_5 DWBW(4)" +.LASF245: + .string "__FLT128_MIN__ 3.36210314311209350626267781732175260e-4932F128" +.LASF3236: + .string "MCONTROL_ACTION_DEBUG_MODE 1" +.LASF609: + .string "ADC_DAUL_REGULAL_PARALLEL_INSERTED_PARALLEL CTL0_SYNCM(1)" +.LASF1005: + .string "RFIFO1_REG_OFFSET ((uint8_t)0x10U)" +.LASF3594: + .string "MATCH_FCVT_L_D 0xc2200053" +.LASF2193: + .string "RCU_APB1EN_USART2EN BIT(18)" +.LASF3254: + .string "MIP_MEIP (1 << IRQ_M_EXT)" +.LASF138: + .string "__UINTPTR_MAX__ 0xffffffffU" +.LASF418: + .string "_INTMAX_T_DECLARED " +.LASF109: + .string "__INT_LEAST16_WIDTH__ 16" +.LASF2986: + .string "USART_CTL2_SCEN BIT(5)" +.LASF635: + .string "ADC0_1_EXTTRIG_INSERTED_T2_CH3 CTL1_ETSIC(4)" +.LASF2489: + .string "SPI_I2SCTL_DTLEN BITS(1,2)" +.LASF3288: + .string "DEFAULT_NMIVEC 0x00001004" +.LASF2526: + .string "I2S_AUDIOSAMPLE_8K ((uint32_t)8000U)" +.LASF3201: + .string "DCSR_EBREAKM (1<<15)" +.LASF3365: + .string "MASK_SLT 0xfe00707f" +.LASF955: + .string "CAN_BT_LCMOD BIT(30)" +.LASF1395: + .string "EXTI_EVEN_EVEN12 BIT(12)" +.LASF406: + .string "_INT8_T_DECLARED " +.LASF147: + .string "__FLT_MIN_EXP__ (-125)" +.LASF3794: + .string "CSR_HPMCOUNTER13 0xc0d" +.LASF1137: + .string "DAC1_R8DH REG32(DAC + 0x1CU)" +.LASF2638: + .string "TIMER_DMAINTEN_UPIE BIT(0)" +.LASF1565: + .string "OB_WP_9 ((uint32_t)0x00000200U)" +.LASF3271: + .string "VM_MBB 1" +.LASF2771: + .string "DMACFG_DMATA(regval) (BITS(0, 4) & ((uint32_t)(regval) << 0U))" +.LASF2611: + .string "TIMER_CTL0_CEN BIT(0)" +.LASF1655: + .string "GPIO_ISTAT_ISTAT10 BIT(10)" +.LASF644: + .string "ADC_SAMPLETIME_41POINT5 SAMPTX_SPT(4)" +.LASF1178: + .string "DAC_TRIGGER_T1_TRGO CTL_DTSEL(4)" +.LASF1073: + .string "CAN_BT_BS1_16TQ ((uint8_t)0x0FU)" +.LASF883: + .string "CAN_CTL_SLPWMOD BIT(1)" +.LASF3851: + .string "CSR_MHPMCOUNTER11 0xb0b" +.LASF1239: + .string "DMA_CH1MADDR(dmax) REG32((dmax) + 0x28U)" +.LASF3962: + .string "CSR_MHPMCOUNTER24H 0xb98" +.LASF1979: + .string "DATA_TRANS(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF690: + .string "ADC_OVERSAMPLING_ALL_CONVERT 0" +.LASF188: + .string "__LDBL_HAS_DENORM__ 1" +.LASF945: + .string "CAN_ERR_WERR BIT(0)" +.LASF2584: + .string "TIMER0 (TIMER_BASE + 0x00012C00U)" +.LASF1359: + .string "EXTI_EVEN REG32(EXTI + 0x04U)" +.LASF1091: + .string "CAN_SFID_MASK ((uint32_t)0x000007FFU)" +.LASF3373: + .string "MASK_SRA 0xfe00707f" +.LASF2134: + .string "RCU_APB2RST_AFRST BIT(0)" +.LASF161: + .string "__DBL_DIG__ 15" +.LASF1688: + .string "GPIO_BOP_BOP11 BIT(11)" +.LASF1871: + .string "GPIO_TIMER1ITI1_REMAP ((uint32_t)0x00202000U)" +.LASF3282: + .string "IRQ_S_EXT 9" +.LASF2265: + .string "RCU_APB1_CKAHB_DIV16 CFG0_APB1PSC(7)" +.LASF1159: + .string "DAC0_R12DH_DAC0_DH BITS(0,11)" +.LASF3457: + .string "MASK_AMOMIN_W 0xf800707f" +.LASF183: + .string "__LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L" +.LASF764: + .string "BKP_TPCTL_TPAL BIT(1)" +.LASF1500: + .string "FMC_STAT_PGERR BIT(2)" +.LASF1613: + .string "GPIO_CTL0_MD0 BITS(0, 1)" +.LASF2918: + .string "TIMER_SLAVE_MODE_EXTERNAL0 SMCFG_SMC(7)" +.LASF2969: + .string "USART_CTL0_WM BIT(11)" +.LASF1987: + .string "FWDGT_CTL REG32((FWDGT) + 0x00000000U)" +.LASF2792: + .string "TIMER_DMACFG_DMATC_1TRANSFER DMACFG_DMATC(0)" +.LASF419: + .string "_UINTMAX_T_DECLARED " +.LASF1479: + .string "FMC FMC_BASE" +.LASF3654: + .string "MATCH_C_EBREAK 0x9002" +.LASF3922: + .string "CSR_HPMCOUNTER15H 0xc8f" +.LASF2780: + .string "TIMER_DMACFG_DMATA_CHCTL2 DMACFG_DMATA(8)" +.LASF1677: + .string "GPIO_BOP_BOP0 BIT(0)" +.LASF750: + .string "BKP_DATA37 REG16((BKP) + 0xACU)" +.LASF1934: + .string "I2C_STAT1_PECV BITS(8,15)" +.LASF3578: + .string "MATCH_FCVT_W_S 0xc0000053" +.LASF1917: + .string "I2C_STAT0_STPDET BIT(4)" +.LASF903: + .string "CAN_TSTAT_MAL0 BIT(2)" +.LASF3295: + .string "PTE_W 0x004" +.LASF3666: + .string "MATCH_C_ADDI4SPN 0x0" +.LASF96: + .string "__INT8_MAX__ 0x7f" +.LASF1205: + .string "DAC_LFSR_BITS6_0 DAC_WAVE_BIT_WIDTH_7" +.LASF317: + .string "__riscv_zicsr 2000000" +.LASF2644: + .string "TIMER_DMAINTEN_TRGIE BIT(6)" +.LASF95: + .string "__SIG_ATOMIC_WIDTH__ 32" +.LASF700: + .string "ADC_OVERSAMPLING_SHIFT_7B OVSCR_OVSS(7)" +.LASF3354: + .string "MATCH_ORI 0x6013" +.LASF2301: + .string "RCU_PLL_MUL21 (PLLMF_4 | CFG0_PLLMF(4))" +.LASF2136: + .string "RCU_APB2RST_PBRST BIT(3)" +.LASF2648: + .string "TIMER_DMAINTEN_CH1DEN BIT(10)" +.LASF1669: + .string "GPIO_OCTL_OCTL8 BIT(8)" +.LASF3706: + .string "MATCH_C_J 0xa001" +.LASF998: + .string "CAN_REGIDX_BITS(regidx,bitpos0,bitpos1) (((uint32_t)(regidx) << 12) | ((uint32_t)(bitpos0) << 6) | (uint32_t)(bitpos1))" +.LASF1947: + .string "I2C_STAT0_REG_OFFSET 0x14U" +.LASF1709: + .string "GPIO_BC_CR0 BIT(0)" +.LASF3011: + .string "USART_PM_NONE CTL0_PM(0)" +.LASF3875: + .string "CSR_MHPMEVENT4 0x324" +.LASF3434: + .string "MATCH_REM 0x2006033" +.LASF1035: + .string "GET_RFIFOMDATA1_DB6(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF3675: + .string "MASK_C_FSD 0xe003" +.LASF868: + .string "CAN_F24DATA1(canx) REG32((canx) + 0x304U)" +.LASF2700: + .string "TIMER_CHCTL1_CH3CAPFLT BITS(12,15)" +.LASF664: + .string "ADC_CHANNEL_3 ((uint8_t)0x03U)" +.LASF54: + .string "__UINT_LEAST16_TYPE__ short unsigned int" +.LASF1345: + .string "EXMC_SNTCFG(region) REG32(EXMC + 0x04U + 0x08U * (region))" +.LASF190: + .string "__LDBL_HAS_QUIET_NAN__ 1" +.LASF2323: + .string "RCU_CKOUT0SRC_CKPLL_DIV2 CFG0_CKOUT0SEL(7)" +.LASF3849: + .string "CSR_MHPMCOUNTER9 0xb09" +.LASF3621: + .string "MASK_FMV_D_X 0xfff0707f" +.LASF3887: + .string "CSR_MHPMEVENT16 0x330" +.LASF1972: + .string "I2C_PEC_DISABLE ((uint32_t)0x00000000U)" +.LASF2048: + .string "PMU_CS_STBF BIT(1)" +.LASF2397: + .string "RCU_DEEPSLEEP_V_1_1 DSV_DSLPVS(1)" +.LASF3767: + .string "MASK_CUSTOM3 0x707f" +.LASF3646: + .string "MATCH_C_NOP 0x1" +.LASF2699: + .string "TIMER_CHCTL1_CH3CAPPSC BITS(10,11)" +.LASF1761: + .string "AFIO_EXTI1_SS BITS(4, 7)" +.LASF1768: + .string "AFIO_EXTI8_SS BITS(0, 3)" +.LASF3879: + .string "CSR_MHPMEVENT8 0x328" +.LASF3931: + .string "CSR_HPMCOUNTER24H 0xc98" +.LASF2800: + .string "TIMER_DMACFG_DMATC_9TRANSFER DMACFG_DMATC(8)" +.LASF3859: + .string "CSR_MHPMCOUNTER19 0xb13" +.LASF1796: + .string "GPIO_PORT_SOURCE_GPIOB ((uint8_t)0x01U)" +.LASF3080: + .string "_PTRDIFF_T_DECLARED " +.LASF436: + .string "INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)" +.LASF965: + .string "CAN_TMDATA0_DB0 BITS(0,7)" +.LASF1463: + .string "EXTI_PD_PD4 BIT(4)" +.LASF2772: + .string "TIMER_DMACFG_DMATA_CTL0 DMACFG_DMATA(0)" +.LASF3790: + .string "CSR_HPMCOUNTER9 0xc09" +.LASF3361: + .string "MASK_SUB 0xfe00707f" +.LASF1207: + .string "DAC_LFSR_BITS8_0 DAC_WAVE_BIT_WIDTH_9" +.LASF2802: + .string "TIMER_DMACFG_DMATC_11TRANSFER DMACFG_DMATC(10)" +.LASF2950: + .string "USART_STAT_RBNE BIT(5)" +.LASF1554: + .string "OB_WP2_WP2 ((uint32_t)0x00FF0000U)" +.LASF215: + .string "__FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32" +.LASF3615: + .string "MASK_FCVT_D_WU 0xfff0007f" +.LASF858: + .string "CAN_F14DATA1(canx) REG32((canx) + 0x2B4U)" +.LASF2825: + .string "TIMER_COUNTER_UP ((uint16_t)0x0000U)" +.LASF4002: + .string "short unsigned int" +.LASF742: + .string "BKP_DATA29 REG16((BKP) + 0x8CU)" +.LASF3711: + .string "MASK_C_BNEZ 0xe003" +.LASF1323: + .string "DMA_MEMORY_TO_MEMORY_DISABLE ((uint32_t)0x00000000U)" +.LASF207: + .string "__FLT32_DIG__ 6" +.LASF901: + .string "CAN_TSTAT_MTF0 BIT(0)" +.LASF292: + .string "__GCC_ATOMIC_SHORT_LOCK_FREE 1" +.LASF1637: + .string "GPIO_CTL1_MD12 BITS(16, 17)" +.LASF1146: + .string "DAC_CTL_DTSEL0 BITS(3,5)" +.LASF2587: + .string "TIMER3 (TIMER_BASE + 0x00000800U)" +.LASF2785: + .string "TIMER_DMACFG_DMATA_CH0CV DMACFG_DMATA(13)" +.LASF3470: + .string "MATCH_AMOADD_D 0x302f" +.LASF3122: + .string "N200_TIMER_H " +.LASF1145: + .string "DAC_CTL_DTEN0 BIT(2)" +.LASF576: + .string "ADC_CTL1_ETSIC BITS(12,14)" +.LASF3124: + .string "TIMER_MSIP_size 0x4" +.LASF2044: + .string "PMU_CTL_LVDEN BIT(4)" +.LASF3067: + .string "WWDGT_CFG_PSC_DIV8 CFG_PSC(3)" +.LASF3239: + .string "MCONTROL_ACTION_TRACE_EMIT 4" +.LASF2912: + .string "TIMER_ENCODER_MODE0 SMCFG_SMC(1)" +.LASF3440: + .string "MATCH_DIVW 0x200403b" +.LASF1856: + .string "GPIO_TIMER0_FULL_REMAP ((uint32_t)0x001600C0U)" +.LASF2742: + .string "TIMER_INT_FLAG_UP TIMER_INT_UP" +.LASF3353: + .string "MASK_SRAI 0xfc00707f" +.LASF1321: + .string "DMA_PRIORITY_HIGH CHCTL_PRIO(2U)" +.LASF1540: + .string "OB_DEEPSLEEP_NRST ((uint8_t)0x02U)" +.LASF298: + .string "__GCC_HAVE_DWARF2_CFI_ASM 1" +.LASF897: + .string "CAN_STAT_TS BIT(8)" +.LASF1857: + .string "GPIO_TIMER1_PARTIAL_REMAP0 ((uint32_t)0x00180100U)" +.LASF1449: + .string "EXTI_SWIEV_SWIEV9 BIT(9)" +.LASF1662: + .string "GPIO_OCTL_OCTL1 BIT(1)" +.LASF2182: + .string "RCU_APB2EN_USART0EN BIT(14)" +.LASF3498: + .string "MATCH_SRET 0x10200073" +.LASF3780: + .string "CSR_FCSR 0x3" +.LASF1730: + .string "GPIO_LOCK_LK5 BIT(5)" +.LASF718: + .string "BKP_DATA5 REG16((BKP) + 0x18U)" +.LASF612: + .string "ADC_DAUL_INSERTED_PARALLEL_REGULAL_FOLLOWUP_SLOW CTL0_SYNCM(4)" +.LASF1275: + .string "DMA_CHXCTL_MNAGA BIT(7)" +.LASF2485: + .string "SPI_CRCPOLY_CRCPOLY BITS(0,15)" +.LASF2604: + .string "TIMER_CH0CV(timerx) REG32((timerx) + 0x34U)" +.LASF1894: + .string "I2C_CTL0_STOP BIT(9)" +.LASF399: + .string "__FAST32 " +.LASF1251: + .string "DMA_CH4MADDR(dmax) REG32((dmax) + 0x64U)" +.LASF1375: + .string "EXTI_INTEN_INTEN11 BIT(11)" +.LASF66: + .string "__UINTPTR_TYPE__ unsigned int" +.LASF730: + .string "BKP_DATA17 REG16((BKP) + 0x5CU)" +.LASF1699: + .string "GPIO_BOP_CR6 BIT(22)" +.LASF303: + .string "__riscv 1" +.LASF4024: + .string "D:\\\\rt-thread\\\\bsp\\\\gd32\\\\risc-v\\\\gd32vf103v-eval" +.LASF3203: + .string "DCSR_EBREAKS (1<<13)" +.LASF145: + .string "__FLT_MANT_DIG__ 24" +.LASF3813: + .string "CSR_SSTATUS 0x100" +.LASF468: + .string "UINT_FAST64_MAX (__UINT_FAST64_MAX__)" +.LASF2623: + .string "TIMER_CTL1_TI0S BIT(7)" +.LASF3004: + .string "CTL0_REN(regval) (BIT(2) & ((uint32_t)(regval) << 2))" +.LASF4016: + .string "level" +.LASF775: + .string "RTC_OUTPUT_SECOND_PULSE ((uint16_t)0x0200U)" +.LASF824: + .string "CAN_F8DATA0(canx) REG32((canx) + 0x280U)" +.LASF3721: + .string "MASK_C_MV 0xf003" +.LASF3950: + .string "CSR_MHPMCOUNTER12H 0xb8c" +.LASF2993: + .string "USART_GP_GUAT BITS(8,15)" +.LASF2420: + .string "RTC_CTL_LWOFF BIT(5)" +.LASF1745: + .string "AFIO_PCF0_SPI0_REMAP BIT(0)" +.LASF1069: + .string "CAN_BT_BS1_12TQ ((uint8_t)0x0BU)" +.LASF657: + .string "ADC_INSERTED_CHANNEL_0 ((uint8_t)0x00U)" +.LASF3452: + .string "MATCH_AMOOR_W 0x4000202f" +.LASF1879: + .string "I2C_SADDR1(i2cx) REG32((i2cx) + 0x0CU)" +.LASF578: + .string "ADC_CTL1_ETSRC BITS(17,19)" +.LASF2852: + .string "TIMER_CH_2 ((uint16_t)0x0002U)" +.LASF1052: + .string "CAN_SILENT_MODE ((uint8_t)0x02U)" +.LASF3485: + .string "MASK_AMOMAXU_D 0xf800707f" +.LASF2562: + .string "SPI_I2S_INT_FLAG_TBE ((uint8_t)0x00U)" +.LASF2840: + .string "TIMER_BREAK_POLARITY_HIGH ((uint16_t)TIMER_CCHP_BRKP)" +.LASF2615: + .string "TIMER_CTL0_DIR BIT(4)" +.LASF184: + .string "__LDBL_NORM_MAX__ 1.18973149535723176508575932662800702e+4932L" +.LASF376: + .string "signed" +.LASF3747: + .string "MASK_CUSTOM1_RS1_RS2 0x707f" +.LASF975: + .string "CAN_RFIFOMI_EFID BITS(3,31)" +.LASF2730: + .string "TIMER_CCHP_POEN BIT(15)" +.LASF2501: + .string "SPI_BIDIRECTIONAL_TRANSMIT SPI_CTL0_BDOEN" +.LASF553: + .string "ADC_STAT_EOC BIT(1)" +.LASF354: + .string "__GNU_VISIBLE 0" +.LASF2884: + .string "TIMER_IC_POLARITY_BOTH_EDGE ((uint16_t)0x000AU)" +.LASF2372: + .string "RCU_PLL1_MUL12 CFG1_PLL1MF(10)" +.LASF1632: + .string "GPIO_CTL1_CTL9 BITS(6, 7)" +.LASF1435: + .string "EXTI_FTEN_FTEN14 BIT(14)" +.LASF1537: + .string "WS_WSCNT_2 WS_WSCNT(2)" +.LASF2627: + .string "TIMER_CTL1_ISO1N BIT(11)" +.LASF1252: + .string "DMA_CH5CTL(dmax) REG32((dmax) + 0x6CU)" +.LASF2172: + .string "RCU_APB2EN_AFEN BIT(0)" +.LASF1273: + .string "DMA_CHXCTL_CMEN BIT(5)" +.LASF2179: + .string "RCU_APB2EN_ADC1EN BIT(10)" +.LASF3455: + .string "MASK_AMOAND_W 0xf800707f" +.LASF279: + .string "__FLT64X_HAS_INFINITY__ 1" +.LASF1181: + .string "DAC_TRIGGER_SOFTWARE CTL_DTSEL(7)" +.LASF1612: + .string "AFIO_PCF1 REG32(AFIO + 0x1CU)" +.LASF2343: + .string "RCU_PREDV0_DIV10 CFG1_PREDV0(9)" +.LASF2199: + .string "RCU_APB1EN_CAN1EN BIT(26)" +.LASF222: + .string "__FLT64_DIG__ 15" +.LASF3275: + .string "VM_SV48 10" +.LASF2782: + .string "TIMER_DMACFG_DMATA_PSC DMACFG_DMATA(10)" +.LASF2839: + .string "TIMER_BREAK_POLARITY_LOW ((uint16_t)0x0000U)" +.LASF3509: + .string "MASK_WFI 0xffffffff" +.LASF3644: + .string "MATCH_FNMADD_D 0x200004f" +.LASF4: + .string "__STDC_HOSTED__ 1" +.LASF3585: + .string "MASK_FCVT_LU_S 0xfff0007f" +.LASF3216: + .string "DCSR_CAUSE_STEP 4" +.LASF1358: + .string "EXTI_INTEN REG32(EXTI + 0x00U)" +.LASF676: + .string "ADC_CHANNEL_15 ((uint8_t)0x0FU)" +.LASF402: + .string "__LEAST16 \"h\"" +.LASF1534: + .string "WS_WSCNT(regval) (BITS(0,2) & ((uint32_t)(regval)))" +.LASF3986: + .string "CAUSE_ILLEGAL_INSTRUCTION 0x2" +.LASF3965: + .string "CSR_MHPMCOUNTER27H 0xb9b" +.LASF1442: + .string "EXTI_SWIEV_SWIEV2 BIT(2)" +.LASF3938: + .string "CSR_HPMCOUNTER31H 0xc9f" +.LASF2872: + .string "TIMER_OC_MODE_PWM0 ((uint16_t)0x0060U)" +.LASF2670: + .string "TIMER_SWEVG_CMTG BIT(5)" +.LASF2147: + .string "RCU_APB1RST_TIMER3RST BIT(2)" +.LASF3657: + .string "MASK_C_LD 0xe003" +.LASF1248: + .string "DMA_CH4CTL(dmax) REG32((dmax) + 0x58U)" +.LASF3016: + .string "USART_WM_ADDR CTL0_WM(1)" +.LASF1984: + .string "I2C_ADDFORMAT_10BITS I2C_SADDR0_ADDFORMAT" +.LASF1198: + .string "DAC_WAVE_BIT_WIDTH_12 DWBW(11)" +.LASF1618: + .string "GPIO_CTL0_CTL2 BITS(10, 11)" +.LASF3152: + .string "ECLIC_CFG_NLBITS_MASK _AC(0x1E,UL)" +.LASF2238: + .string "BDCTL_REG_OFFSET 0x20U" +.LASF1215: + .string "DAC_TRIANGLE_AMPLITUDE_1 DAC_WAVE_BIT_WIDTH_1" +.LASF3742: + .string "MATCH_CUSTOM1 0x2b" +.LASF1319: + .string "DMA_PRIORITY_LOW CHCTL_PRIO(0U)" +.LASF3023: + .string "USART_STB_2BIT CTL1_STB(2)" +.LASF3047: + .string "USART_CTS_ENABLE CLT2_CTSEN(1)" +.LASF2956: + .string "USART_BAUD_FRADIV BITS(0,3)" +.LASF2613: + .string "TIMER_CTL0_UPS BIT(2)" +.LASF1781: + .string "GPIO_MODE_IPD ((uint8_t)0x28U)" +.LASF4026: + .string "eclic_global_interrupt_enable" +.LASF476: + .string "PTRDIFF_MIN (-PTRDIFF_MAX - 1)" +.LASF2173: + .string "RCU_APB2EN_PAEN BIT(2)" +.LASF2163: + .string "RCU_APB1RST_PMURST BIT(28)" +.LASF1348: + .string "EXMC_NOR_DATABUS_WIDTH_16B SNCTL_NRW(1)" +.LASF3919: + .string "CSR_HPMCOUNTER12H 0xc8c" +.LASF924: + .string "CAN_RFIFO0_RFF0 BIT(3)" +.LASF2025: + .string "DBG_CTL_TIMER3_HOLD BIT(13)" +.LASF3741: + .string "MASK_CUSTOM0_RD_RS1_RS2 0x707f" +.LASF850: + .string "CAN_F6DATA1(canx) REG32((canx) + 0x274U)" +.LASF1545: + .string "OB_USER_MASK ((uint8_t)0xF0U)" +.LASF1513: + .string "FMC_ADDR0_ADDR BITS(0,31)" +.LASF1818: + .string "GPIO_PIN_SOURCE_2 ((uint8_t)0x02U)" +.LASF550: + .string "ADC_RDATA(adcx) REG32((adcx) + 0x4CU)" +.LASF1671: + .string "GPIO_OCTL_OCTL10 BIT(10)" +.LASF2592: + .string "TIMER_CTL1(timerx) REG32((timerx) + 0x04U)" +.LASF2286: + .string "RCU_PLL_MUL6 CFG0_PLLMF(4)" +.LASF3833: + .string "CSR_MIP 0x344" +.LASF1888: + .string "I2C_CTL0_SMBSEL BIT(3)" +.LASF2746: + .string "TIMER_INT_FLAG_CH3 TIMER_INT_CH3" +.LASF1313: + .string "DMA_PERIPHERAL_WIDTH_32BIT CHCTL_PWIDTH(2U)" +.LASF2965: + .string "USART_CTL0_TBEIE BIT(7)" +.LASF2741: + .string "TIMER_INT_BRK TIMER_DMAINTEN_BRKIE" +.LASF580: + .string "ADC_CTL1_SWICST BIT(21)" +.LASF2886: + .string "TIMER_IC_SELECTION_INDIRECTTI ((uint16_t)0x0002U)" +.LASF3866: + .string "CSR_MHPMCOUNTER26 0xb1a" +.LASF3972: + .string "CSR_MCOUNTINHIBIT 0x320" +.LASF888: + .string "CAN_CTL_ABOR BIT(6)" +.LASF26: + .string "__ORDER_LITTLE_ENDIAN__ 1234" +.LASF2464: + .string "SPI_CTL0_CRCEN BIT(13)" +.LASF3209: + .string "DCSR_HALT (1<<3)" +.LASF1124: + .string "CRC_FDATA_FDATA BITS(0, 7)" +.LASF3629: + .string "MASK_FSD 0x707f" +.LASF3672: + .string "MATCH_C_FLW 0x6000" +.LASF984: + .string "CAN_RFIFOMDATA1_DB4 BITS(0,7)" +.LASF819: + .string "CAN_F3DATA0(canx) REG32((canx) + 0x258U)" +.LASF3489: + .string "MASK_LR_D 0xf9f0707f" +.LASF1342: + .string "EXMC_SNTCFG_DSET BITS(8,15)" +.LASF4008: + .string "long long unsigned int" +.LASF2038: + .string "PMU_CTL REG32((PMU) + 0x00U)" +.LASF2258: + .string "RCU_AHB_CKSYS_DIV256 CFG0_AHBPSC(14)" +.LASF2609: + .string "TIMER_DMACFG(timerx) REG32((timerx) + 0x48U)" +.LASF171: + .string "__DBL_DENORM_MIN__ ((double)4.94065645841246544176568792868221372e-324L)" +.LASF987: + .string "CAN_RFIFOMDATA1_DB7 BITS(24,31)" +.LASF1314: + .string "CHCTL_MWIDTH(regval) (BITS(10,11) & ((uint32_t)(regval) << 10))" +.LASF857: + .string "CAN_F13DATA1(canx) REG32((canx) + 0x2ACU)" +.LASF3872: + .string "CSR_MUCOUNTEREN 0x320" +.LASF1120: + .string "CRC_DATA REG32(CRC + 0x00U)" +.LASF3543: + .string "MASK_FADD_D 0xfe00007f" +.LASF474: + .string "SIG_ATOMIC_MAX (__STDINT_EXP(INT_MAX))" +.LASF2069: + .string "GD32VF103_RCU_H " +.LASF785: + .string "CAN_TSTAT(canx) REG32((canx) + 0x08U)" +.LASF2269: + .string "RCU_APB2_CKAHB_DIV4 CFG0_APB2PSC(5)" +.LASF1512: + .string "FMC_CTL_ENDIE BIT(12)" +.LASF1392: + .string "EXTI_EVEN_EVEN9 BIT(9)" +.LASF1281: + .string "DMA_CHXPADDR_PADDR BITS(0,31)" +.LASF3850: + .string "CSR_MHPMCOUNTER10 0xb0a" +.LASF900: + .string "CAN_STAT_RXL BIT(11)" +.LASF3473: + .string "MASK_AMOXOR_D 0xf800707f" +.LASF1533: + .string "UNLOCK_KEY1 ((uint32_t)0xCDEF89ABU)" +.LASF1964: + .string "I2C_GCEN_DISABLE ((uint32_t)0x00000000U)" +.LASF2928: + .string "TIMER_HALLINTERFACE_ENABLE TIMER_CTL1_TI0S" +.LASF3292: + .string "DRAM_BASE 0x80000000" +.LASF3704: + .string "MATCH_C_ADDW 0x9c21" +.LASF941: + .string "CAN_INTEN_ERRNIE BIT(11)" +.LASF3647: + .string "MASK_C_NOP 0xffff" +.LASF725: + .string "BKP_DATA12 REG16((BKP) + 0x48U)" +.LASF3611: + .string "MASK_FMV_S_X 0xfff0707f" +.LASF4000: + .string "unsigned char" +.LASF1400: + .string "EXTI_EVEN_EVEN17 BIT(17)" +.LASF3022: + .string "USART_STB_0_5BIT CTL1_STB(1)" +.LASF2656: + .string "TIMER_INTF_CH2IF BIT(3)" +.LASF2508: + .string "SPI_FRAMESIZE_8BIT ((uint32_t)0x00000000U)" +.LASF248: + .string "__FLT128_HAS_DENORM__ 1" +.LASF3840: + .string "CSR_DSCRATCH 0x7b2" +.LASF3279: + .string "IRQ_S_TIMER 5" +.LASF1089: + .string "CAN_FIFO1 ((uint8_t)0x01U)" +.LASF2743: + .string "TIMER_INT_FLAG_CH0 TIMER_INT_CH0" +.LASF2831: + .string "TIMER_SP_MODE_SINGLE TIMER_CTL0_SPM" +.LASF3876: + .string "CSR_MHPMEVENT5 0x325" +.LASF787: + .string "CAN_RFIFO1(canx) REG32((canx) + 0x10U)" +.LASF1966: + .string "I2C_SRESET_RESET ((uint32_t)0x00000000U)" +.LASF2089: + .string "RCU_CTL_HXTALSTB BIT(17)" +.LASF1693: + .string "GPIO_BOP_CR0 BIT(16)" +.LASF1641: + .string "GPIO_CTL1_MD14 BITS(24, 25)" +.LASF2708: + .string "TIMER_CHCTL2_CH1NP BIT(7)" +.LASF1654: + .string "GPIO_ISTAT_ISTAT9 BIT(9)" +.LASF1946: + .string "I2C_CTL1_REG_OFFSET 0x04U" +.LASF2753: + .string "TIMER_FLAG_CH2 TIMER_INTF_CH2IF" +.LASF2915: + .string "TIMER_SLAVE_MODE_RESTART SMCFG_SMC(4)" +.LASF3867: + .string "CSR_MHPMCOUNTER27 0xb1b" +.LASF2573: + .string "SPI_FLAG_RXORERR SPI_STAT_RXORERR" +.LASF2289: + .string "RCU_PLL_MUL9 CFG0_PLLMF(7)" +.LASF706: + .string "ADC_OVERSAMPLING_RATIO_MUL16 OVSCR_OVSR(3)" +.LASF1925: + .string "I2C_STAT0_SMBTO BIT(14)" +.LASF1690: + .string "GPIO_BOP_BOP13 BIT(13)" +.LASF1225: + .string "DAC_TRIANGLE_AMPLITUDE_2047 DAC_WAVE_BIT_WIDTH_11" +.LASF3375: + .string "MASK_OR 0xfe00707f" +.LASF2858: + .string "TIMER_OC_POLARITY_HIGH ((uint16_t)0x0000U)" +.LASF1706: + .string "GPIO_BOP_CR13 BIT(29)" +.LASF3823: + .string "CSR_MISA 0x301" +.LASF2119: + .string "RCU_INT_IRC40KSTBIE BIT(8)" +.LASF1455: + .string "EXTI_SWIEV_SWIEV15 BIT(15)" +.LASF1729: + .string "GPIO_LOCK_LK4 BIT(4)" +.LASF1810: + .string "GPIO_EVENT_PIN_10 ((uint8_t)0x0AU)" +.LASF464: + .string "INT_FAST32_MAX (__INT_FAST32_MAX__)" +.LASF2703: + .string "TIMER_CHCTL2_CH0NEN BIT(2)" +.LASF3901: + .string "CSR_MHPMEVENT30 0x33e" +.LASF1992: + .string "FWDGT_PSC_PSC BITS(0,2)" +.LASF3389: + .string "MASK_SUBW 0xfe00707f" +.LASF3736: + .string "MATCH_CUSTOM0_RD 0x400b" +.LASF2580: + .string "I2S_FLAG_RXORERR SPI_STAT_RXORERR" +.LASF3554: + .string "MATCH_FSGNJX_D 0x22002053" +.LASF2687: + .string "TIMER_CHCTL1_CH2MS BITS(0,1)" +.LASF1975: + .string "I2C_SALTSEND_ENABLE I2C_CTL0_SALT" +.LASF1027: + .string "GET_RFIFOMP_DLENC(regval) GET_BITS((uint32_t)(regval), 0U, 3U)" +.LASF2537: + .string "I2S_FRAMEFORMAT_DT16B_CH32B (I2SCTL_DTLEN(0) | SPI_I2SCTL_CHLEN)" +.LASF2463: + .string "SPI_CTL0_CRCNT BIT(12)" +.LASF67: + .string "__GXX_ABI_VERSION 1014" +.LASF2897: + .string "TIMER_SMCFG_TRGSEL_CI0F_ED SMCFG_TRGSEL(4)" +.LASF3631: + .string "MASK_FMADD_S 0x600007f" +.LASF528: + .string "GD32VF103_ADC_H " +.LASF265: + .string "__FLT32X_HAS_QUIET_NAN__ 1" +.LASF842: + .string "CAN_F26DATA0(canx) REG32((canx) + 0x310U)" +.LASF348: + .string "__NEWLIB_MINOR__ 1" +.LASF1285: + .string "DMA_CHCNT(dma,channel) REG32(((dma) + 0x0CU) + 0x14U * (uint32_t)(channel))" +.LASF982: + .string "CAN_RFIFOMDATA0_DB2 BITS(16,23)" +.LASF2326: + .string "RCU_CKOUT0SRC_EXT1 CFG0_CKOUT0SEL(10)" +.LASF1385: + .string "EXTI_EVEN_EVEN2 BIT(2)" +.LASF186: + .string "__LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L" +.LASF579: + .string "ADC_CTL1_ETERC BIT(20)" +.LASF403: + .string "__LEAST32 \"l\"" +.LASF582: + .string "ADC_CTL1_TSVREN BIT(23)" +.LASF1501: + .string "FMC_STAT_WPERR BIT(4)" +.LASF271: + .string "__FLT64X_MAX_10_EXP__ 4932" +.LASF1362: + .string "EXTI_SWIEV REG32(EXTI + 0x10U)" +.LASF1503: + .string "FMC_CTL_PG BIT(0)" +.LASF2756: + .string "TIMER_FLAG_TRG TIMER_INTF_TRGIF" +.LASF3445: + .string "MASK_REMW 0xfe00707f" +.LASF2585: + .string "TIMER1 (TIMER_BASE + 0x00000000U)" +.LASF3293: + .string "PTE_V 0x001" +.LASF1403: + .string "EXTI_RTEN_RTEN1 BIT(1)" +.LASF1039: + .string "GET_ERR_RECNT(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF2507: + .string "SPI_FRAMESIZE_16BIT SPI_CTL0_FF16" +.LASF285: + .string "__CHAR_UNSIGNED__ 1" +.LASF597: + .string "ADC_OVSCR_TOVS BIT(9)" +.LASF2726: + .string "TIMER_CCHP_ROS BIT(11)" +.LASF1636: + .string "GPIO_CTL1_CTL11 BITS(14, 15)" +.LASF1962: + .string "I2C_SCLSTRETCH_DISABLE I2C_CTL0_SS" +.LASF3596: + .string "MATCH_FCVT_LU_D 0xc2300053" +.LASF894: + .string "CAN_STAT_ERRIF BIT(2)" +.LASF3436: + .string "MATCH_REMU 0x2007033" +.LASF1343: + .string "EXMC_SNTCFG_BUSLAT BITS(16,19)" +.LASF1315: + .string "DMA_MEMORY_WIDTH_8BIT CHCTL_MWIDTH(0U)" +.LASF2220: + .string "RCU_CFG1_PREDV1 BITS(4,7)" +.LASF123: + .string "__UINT64_C(c) c ## ULL" +.LASF3120: + .string "offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)" +.LASF2688: + .string "TIMER_CHCTL1_CH2COMFEN BIT(2)" +.LASF3127: + .string "TIMER_MTIME 0x0" +.LASF3694: + .string "MATCH_C_SUB 0x8c01" +.LASF1601: + .string "GPIO_ISTAT(gpiox) REG32((gpiox) + 0x08U)" +.LASF487: + .string "INT64_C(x) __INT64_C(x)" +.LASF972: + .string "CAN_TMDATA1_DB7 BITS(24,31)" +.LASF169: + .string "__DBL_MIN__ ((double)2.22507385850720138309023271733240406e-308L)" +.LASF2867: + .string "TIMER_OC_MODE_ACTIVE ((uint16_t)0x0010U)" +.LASF1295: + .string "DMA_INT_FLAG_HTF DMA_INTF_HTFIF" +.LASF3690: + .string "MATCH_C_SRAI 0x8401" +.LASF832: + .string "CAN_F16DATA0(canx) REG32((canx) + 0x2C0U)" +.LASF299: + .string "__PRAGMA_REDEFINE_EXTNAME 1" +.LASF656: + .string "ADC_CHANNEL_DISCON_DISABLE ((uint8_t)0x04U)" +.LASF3966: + .string "CSR_MHPMCOUNTER28H 0xb9c" +.LASF521: + .string "DMA_BASE (AHB1_BUS_BASE + 0x00008000U)" +.LASF1119: + .string "CRC CRC_BASE" +.LASF1388: + .string "EXTI_EVEN_EVEN5 BIT(5)" +.LASF849: + .string "CAN_F5DATA1(canx) REG32((canx) + 0x26CU)" +.LASF886: + .string "CAN_CTL_ARD BIT(4)" +.LASF2967: + .string "USART_CTL0_PM BIT(9)" +.LASF1633: + .string "GPIO_CTL1_MD10 BITS(8, 9)" +.LASF3394: + .string "MATCH_SRAW 0x4000503b" +.LASF560: + .string "ADC_CTL0_EOICIE BIT(7)" +.LASF3427: + .string "MASK_MULHSU 0xfe00707f" +.LASF3242: + .string "MCONTROL_MATCH_GE 2" +.LASF876: + .string "CAN_FDATA0(canx,bank) REG32((canx) + 0x240U + ((bank) * 0x8U) + 0x0U)" +.LASF915: + .string "CAN_TSTAT_MST2 BIT(23)" +.LASF3088: + .string "__SIZE_T " +.LASF3759: + .string "MASK_CUSTOM2_RS1_RS2 0x707f" +.LASF3837: + .string "CSR_TDATA3 0x7a3" +.LASF2480: + .string "SPI_STAT_CONFERR BIT(5)" +.LASF1867: + .string "GPIO_CAN1_REMAP ((uint32_t)0x00200040U)" +.LASF2310: + .string "RCU_PLL_MUL30 (PLLMF_4 | CFG0_PLLMF(13))" +.LASF349: + .string "__NEWLIB_PATCHLEVEL__ 0" +.LASF3148: + .string "ECLIC_INT_ATTR_TRIG_POS 0x00" +.LASF1735: + .string "GPIO_LOCK_LK10 BIT(10)" +.LASF1833: + .string "GPIO_PIN_1 BIT(1)" +.LASF345: + .string "_NEWLIB_VERSION_H__ 1" +.LASF1339: + .string "EXMC_SNCTL_ASYNCWAIT BIT(15)" +.LASF1614: + .string "GPIO_CTL0_CTL0 BITS(2, 3)" +.LASF3414: + .string "MATCH_SW 0x2023" +.LASF1101: + .string "CAN_FT_DATA ((uint32_t)0x00000000U)" +.LASF1829: + .string "GPIO_PIN_SOURCE_13 ((uint8_t)0x0DU)" +.LASF494: + .string "BIT(x) ((uint32_t)((uint32_t)0x01U<<(x)))" +.LASF291: + .string "__GCC_ATOMIC_WCHAR_T_LOCK_FREE 2" +.LASF2665: + .string "TIMER_SWEVG_UPG BIT(0)" +.LASF2093: + .string "RCU_CTL_PLLSTB BIT(25)" +.LASF2589: + .string "TIMER5 (TIMER_BASE + 0x00001000U)" +.LASF2951: + .string "USART_STAT_TC BIT(6)" +.LASF3643: + .string "MASK_FNMSUB_D 0x600007f" +.LASF1481: + .string "FMC_WS REG32((FMC) + 0x00U)" +.LASF2734: + .string "TIMER_INT_UP TIMER_DMAINTEN_UPIE" +.LASF3045: + .string "USART_RTS_DISABLE CLT2_RTSEN(0)" +.LASF2566: + .string "SPI_INT_FLAG_CRCERR ((uint8_t)0x04U)" +.LASF3656: + .string "MATCH_C_LD 0x6000" +.LASF1830: + .string "GPIO_PIN_SOURCE_14 ((uint8_t)0x0EU)" +.LASF1136: + .string "DAC1_L12DH REG32(DAC + 0x18U)" +.LASF2293: + .string "RCU_PLL_MUL13 CFG0_PLLMF(11)" +.LASF60: + .string "__INT_FAST64_TYPE__ long long int" +.LASF4014: + .string "eclic_irq_enable" +.LASF2645: + .string "TIMER_DMAINTEN_BRKIE BIT(7)" +.LASF2472: + .string "SPI_CTL1_ERRIE BIT(5)" +.LASF2927: + .string "TIMER_ETP_RISING ((uint32_t)0x00000000U)" +.LASF909: + .string "CAN_TSTAT_MTE1 BIT(11)" +.LASF197: + .string "__FLT16_DECIMAL_DIG__ 5" +.LASF499: + .string "OB_BASE ((uint32_t)0x1FFFF800U)" +.LASF1541: + .string "OB_DEEPSLEEP_RST ((uint8_t)0x00U)" +.LASF1609: + .string "AFIO_EXTISS1 REG32(AFIO + 0x0CU)" +.LASF2250: + .string "CFG0_AHBPSC(regval) (BITS(4,7) & ((uint32_t)(regval) << 4))" +.LASF247: + .string "__FLT128_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F128" +.LASF864: + .string "CAN_F20DATA1(canx) REG32((canx) + 0x2E4U)" +.LASF2973: + .string "USART_CTL1_LBLEN BIT(5)" +.LASF3396: + .string "MATCH_LB 0x3" +.LASF2067: + .string "WFI_CMD ((uint8_t)0x00U)" +.LASF2099: + .string "RCU_CFG0_SCSS BITS(2,3)" +.LASF22: + .string "__SIZEOF_LONG_DOUBLE__ 16" +.LASF21: + .string "__SIZEOF_DOUBLE__ 8" +.LASF149: + .string "__FLT_MAX_EXP__ 128" +.LASF816: + .string "CAN_F0DATA0(canx) REG32((canx) + 0x240U)" +.LASF2630: + .string "TIMER_CTL1_ISO3 BIT(14)" +.LASF620: + .string "ADC_CONTINUOUS_MODE ADC_CTL1_CTN" +.LASF3188: + .string "SSTATUS_UIE 0x00000001" +.LASF2365: + .string "RCU_PREDV1_DIV15 CFG1_PREDV1(14)" +.LASF1911: + .string "I2C_SADDR1_ADDRESS2 BITS(1,7)" +.LASF2498: + .string "SPI_I2SPSC_MCKOEN BIT(9)" +.LASF144: + .string "__FLT_RADIX__ 2" +.LASF1825: + .string "GPIO_PIN_SOURCE_9 ((uint8_t)0x09U)" +.LASF2878: + .string "TIMER_OC_CLEAR_ENABLE ((uint16_t)0x0080U)" +.LASF1956: + .string "I2C_ACK_ENABLE ((uint32_t)0x00000001U)" +.LASF1807: + .string "GPIO_EVENT_PIN_7 ((uint8_t)0x07U)" +.LASF2187: + .string "RCU_APB1EN_TIMER5EN BIT(4)" +.LASF967: + .string "CAN_TMDATA0_DB2 BITS(16,23)" +.LASF732: + .string "BKP_DATA19 REG16((BKP) + 0x64U)" +.LASF111: + .string "__INT32_C(c) c ## L" +.LASF935: + .string "CAN_INTEN_RFNEIE1 BIT(4)" +.LASF2092: + .string "RCU_CTL_PLLEN BIT(24)" +.LASF3432: + .string "MATCH_DIVU 0x2005033" +.LASF1336: + .string "EXMC_SNCTL_NRWTPOL BIT(9)" +.LASF1940: + .string "I2C_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF1270: + .string "DMA_CHXCTL_HTFIE BIT(2)" +.LASF2784: + .string "TIMER_DMACFG_DMATA_CREP DMACFG_DMATA(12)" +.LASF519: + .string "GPIO_BASE (APB2_BUS_BASE + 0x00000800U)" +.LASF2899: + .string "TIMER_SMCFG_TRGSEL_CI1FE1 SMCFG_TRGSEL(6)" +.LASF3171: + .string "MSTATUS_SIE 0x00000002" +.LASF1522: + .string "FMC_REG_VAL(offset) (REG32(FMC + ((uint32_t)(offset) >> 6)))" +.LASF82: + .string "__LONG_WIDTH__ 32" +.LASF2857: + .string "TIMER_CCXN_DISABLE ((uint16_t)0x0000U)" +.LASF738: + .string "BKP_DATA25 REG16((BKP) + 0x7CU)" +.LASF2640: + .string "TIMER_DMAINTEN_CH1IE BIT(2)" +.LASF3816: + .string "CSR_SSCRATCH 0x140" +.LASF3817: + .string "CSR_SEPC 0x141" +.LASF2227: + .string "RCU_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF14: + .string "__ATOMIC_CONSUME 1" +.LASF3403: + .string "MASK_LD 0x707f" +.LASF2320: + .string "RCU_CKOUT0SRC_CKSYS CFG0_CKOUT0SEL(4)" +.LASF3144: + .string "ECLIC_INT_ATTR_OFFSET _AC(0x1002,UL)" +.LASF3677: + .string "MASK_C_SW 0xe003" +.LASF216: + .string "__FLT32_EPSILON__ 1.19209289550781250000000000000000000e-7F32" +.LASF2788: + .string "TIMER_DMACFG_DMATA_CH3CV DMACFG_DMATA(16)" +.LASF342: + .string "_STDINT_H " +.LASF1424: + .string "EXTI_FTEN_FTEN3 BIT(3)" +.LASF420: + .string "_INTPTR_T_DECLARED " +.LASF1126: + .string "GD32VF103_DAC_H " +.LASF2837: + .string "TIMER_IOS_STATE_ENABLE ((uint16_t)TIMER_CCHP_IOS)" +.LASF1878: + .string "I2C_SADDR0(i2cx) REG32((i2cx) + 0x08U)" +.LASF1025: + .string "GET_RFIFOMI_EFID(regval) GET_BITS((uint32_t)(regval), 3U, 31U)" +.LASF2105: + .string "RCU_CFG0_PREDV0_LSB BIT(17)" +.LASF3733: + .string "MASK_CUSTOM0_RS1 0x707f" +.LASF355: + .string "__ISO_C_VISIBLE 2011" +.LASF2376: + .string "RCU_PLL1_MUL16 CFG1_PLL1MF(14)" +.LASF1033: + .string "GET_RFIFOMDATA1_DB4(regval) GET_BITS((uint32_t)(regval), 0U, 7U)" +.LASF3639: + .string "MASK_FMADD_D 0x600007f" +.LASF2642: + .string "TIMER_DMAINTEN_CH3IE BIT(4)" +.LASF3313: + .string "swap_csr(reg,val) ({ unsigned long __tmp; if (__builtin_constant_p(val) && (unsigned long)(val) < 32) asm volatile (\"csrrw %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"i\"(val)); else asm volatile (\"csrrw %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"r\"(val)); __tmp; })" +.LASF3555: + .string "MASK_FSGNJX_D 0xfe00707f" +.LASF3176: + .string "MSTATUS_HPIE 0x00000040" +.LASF2795: + .string "TIMER_DMACFG_DMATC_4TRANSFER DMACFG_DMATC(3)" +.LASF2368: + .string "RCU_PLL1_MUL8 CFG1_PLL1MF(6)" +.LASF3020: + .string "CTL1_STB(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF2774: + .string "TIMER_DMACFG_DMATA_SMCFG DMACFG_DMATA(2)" +.LASF1473: + .string "EXTI_PD_PD14 BIT(14)" +.LASF1214: + .string "DAC_ALIGN_8B_R DATA_ALIGN(2)" +.LASF2181: + .string "RCU_APB2EN_SPI0EN BIT(12)" +.LASF2962: + .string "USART_CTL0_IDLEIE BIT(4)" +.LASF2410: + .string "RTC_ALRMH REG32(RTC + 0x20U)" +.LASF1168: + .string "DACC_L12DH_DAC1_DH BITS(20,31)" +.LASF963: + .string "CAN_TMP_TSEN BIT(8)" +.LASF3486: + .string "MATCH_AMOSWAP_D 0x800302f" +.LASF178: + .string "__LDBL_MIN_10_EXP__ (-4931)" +.LASF3034: + .string "CTL1_CPL(regval) (BIT(10) & ((uint32_t)(regval) << 10))" +.LASF3151: + .string "ECLIC_ADDR_BASE 0xd2000000" +.LASF3526: + .string "MATCH_FMUL_S 0x10000053" +.LASF1976: + .string "I2C_SALTSEND_DISABLE ((uint32_t)0x00000000U)" +.LASF2513: + .string "SPI_CK_PL_LOW_PH_1EDGE ((uint32_t)0x00000000U)" +.LASF3906: + .string "CSR_MHARTID 0xf14" +.LASF213: + .string "__FLT32_MAX__ 3.40282346638528859811704183484516925e+38F32" +.LASF2371: + .string "RCU_PLL1_MUL11 CFG1_PLL1MF(9)" +.LASF726: + .string "BKP_DATA13 REG16((BKP) + 0x4CU)" +.LASF1872: + .string "GPIO_EXMC_NADV_REMAP ((uint32_t)0x80000400U)" +.LASF731: + .string "BKP_DATA18 REG16((BKP) + 0x60U)" +.LASF1009: + .string "BT_BS2(regval) (BITS(20,22) & ((uint32_t)(regval) << 20))" +.LASF2809: + .string "TIMER_DMACFG_DMATC_18TRANSFER DMACFG_DMATC(17)" +.LASF3954: + .string "CSR_MHPMCOUNTER16H 0xb90" +.LASF693: + .string "ADC_OVERSAMPLING_SHIFT_NONE OVSCR_OVSS(0)" +.LASF1986: + .string "FWDGT FWDGT_BASE" +.LASF1416: + .string "EXTI_RTEN_RTEN14 BIT(14)" +.LASF3345: + .string "MASK_SLTI 0x707f" +.LASF4005: + .string "__uint32_t" +.LASF116: + .string "__UINT_LEAST8_MAX__ 0xff" +.LASF1676: + .string "GPIO_OCTL_OCTL15 BIT(15)" +.LASF1927: + .string "I2C_STAT1_MASTER BIT(0)" +.LASF3053: + .string "WWDGT WWDGT_BASE" +.LASF3911: + .string "CSR_HPMCOUNTER4H 0xc84" +.LASF2995: + .string "USART_REG_VAL(usartx,offset) (REG32((usartx) + (((uint32_t)(offset) & (0x0000FFFFU)) >> 6)))" +.LASF2315: + .string "RCU_CKUSB_CKPLL_DIV1 CFG0_USBPSC(1)" +.LASF475: + .string "PTRDIFF_MAX (__PTRDIFF_MAX__)" +.LASF931: + .string "CAN_INTEN_TMEIE BIT(0)" +.LASF1271: + .string "DMA_CHXCTL_ERRIE BIT(3)" +.LASF2413: + .string "RTC_INTEN_ALRMIE BIT(1)" +.LASF2896: + .string "TIMER_SMCFG_TRGSEL_ITI3 SMCFG_TRGSEL(3)" +.LASF3192: + .string "SSTATUS_SPP 0x00000100" +.LASF2332: + .string "RCU_RTCSRC_HXTAL_DIV_128 BDCTL_RTCSRC(3)" +.LASF3277: + .string "IRQ_H_SOFT 2" +.LASF3783: + .string "CSR_INSTRET 0xc02" +.LASF2139: + .string "RCU_APB2RST_PERST BIT(6)" +.LASF3698: + .string "MATCH_C_OR 0x8c41" +.LASF256: + .string "__FLT32X_MAX_10_EXP__ 308" +.LASF1842: + .string "GPIO_PIN_10 BIT(10)" +.LASF877: + .string "CAN_FDATA1(canx,bank) REG32((canx) + 0x240U + ((bank) * 0x8U) + 0x4U)" +.LASF3768: + .string "MATCH_CUSTOM3_RS1 0x207b" +.LASF804: + .string "CAN_RFIFOMP0(canx) REG32((canx) + 0x1B4U)" +.LASF2161: + .string "RCU_APB1RST_CAN1RST BIT(26)" +.LASF3929: + .string "CSR_HPMCOUNTER22H 0xc96" +.LASF2917: + .string "TIMER_SLAVE_MODE_EVENT SMCFG_SMC(6)" +.LASF3516: + .string "MATCH_CSRRWI 0x5073" +.LASF3511: + .string "MASK_CSRRW 0x707f" +.LASF794: + .string "CAN_TMDATA10(canx) REG32((canx) + 0x18CU)" +.LASF162: + .string "__DBL_MIN_EXP__ (-1021)" +.LASF483: + .string "INT16_C(x) __INT16_C(x)" +.LASF10: + .string "__ATOMIC_SEQ_CST 5" +.LASF1640: + .string "GPIO_CTL1_CTL13 BITS(22, 23)" +.LASF3734: + .string "MATCH_CUSTOM0_RS1_RS2 0x300b" +.LASF3386: + .string "MATCH_ADDW 0x3b" +.LASF1865: + .string "GPIO_PD01_REMAP ((uint32_t)0x00008000U)" +.LASF2081: + .string "RCU_AHBRST REG32(RCU + 0x28U)" +.LASF929: + .string "CAN_RFIFO1_RFO1 BIT(4)" +.LASF1598: + .string "AFIO AFIO_BASE" +.LASF3842: + .string "CSR_MINSTRET 0xb02" +.LASF1349: + .string "SNCTL_NRTP(regval) (BITS(2,3) & ((uint32_t)(regval) << 2))" +.LASF844: + .string "CAN_F0DATA1(canx) REG32((canx) + 0x244U)" +.LASF1713: + .string "GPIO_BC_CR4 BIT(4)" +.LASF1222: + .string "DAC_TRIANGLE_AMPLITUDE_255 DAC_WAVE_BIT_WIDTH_8" +.LASF2624: + .string "TIMER_CTL1_ISO0 BIT(8)" +.LASF3110: + .string "_WCHAR_T_H " +.LASF2026: + .string "DBG_CTL_CAN0_HOLD BIT(14)" +.LASF3471: + .string "MASK_AMOADD_D 0xf800707f" +.LASF3841: + .string "CSR_MCYCLE 0xb00" +.LASF2913: + .string "TIMER_ENCODER_MODE1 SMCFG_SMC(2)" +.LASF250: + .string "__FLT128_HAS_QUIET_NAN__ 1" +.LASF2881: + .string "TIMER_UPDATECTL_CCUTRI TIMER_CTL1_CCUC" +.LASF545: + .string "ADC_ISQ(adcx) REG32((adcx) + 0x38U)" +.LASF2456: + .string "SPI_CTL0_PSC BITS(3,5)" +.LASF964: + .string "CAN_TMP_TS BITS(16,31)" +.LASF585: + .string "ADC_WDHT_WDHT BITS(0,11)" +.LASF3606: + .string "MATCH_FCVT_S_L 0xd0200053" +.LASF3507: + .string "MASK_SFENCE_VM 0xfff07fff" +.LASF3491: + .string "MASK_SC_D 0xf800707f" +.LASF2212: + .string "RCU_RSTSCK_EPRSTF BIT(26)" +.LASF3222: + .string "MCONTROL_TIMING (1<<18)" +.LASF3058: + .string "WWDGT_CTL_WDGTEN BIT(7)" +.LASF3012: + .string "USART_PM_EVEN CTL0_PM(2)" +.LASF3087: + .string "_T_SIZE " +.LASF482: + .string "UINT8_C(x) __UINT8_C(x)" +.LASF780: + .string "GD32VF103_CAN_H " +.LASF65: + .string "__INTPTR_TYPE__ int" +.LASF1963: + .string "I2C_GCEN_ENABLE I2C_CTL0_GCEN" +.LASF1765: + .string "AFIO_EXTI5_SS BITS(4, 7)" +.LASF2522: + .string "SPI_PSC_32 CTL0_PSC(4)" +.LASF1900: + .string "I2C_CTL1_I2CCLK BITS(0,5)" +.LASF509: + .string "FWDGT_BASE (APB1_BUS_BASE + 0x00003000U)" +.LASF647: + .string "ADC_SAMPLETIME_239POINT5 SAMPTX_SPT(7)" +.LASF1306: + .string "DMA_PERIPH_INCREASE_DISABLE ((uint8_t)0x00U)" +.LASF1777: + .string "GPIO_MODE_SET(n,mode) ((uint32_t)((uint32_t)(mode) << (4U * (n))))" +.LASF1153: + .string "DAC_CTL_DTSEL1 BITS(19,21)" +.LASF36: + .string "__INTMAX_TYPE__ long long int" +.LASF3735: + .string "MASK_CUSTOM0_RS1_RS2 0x707f" +.LASF1304: + .string "DMA_PERIPHERAL_TO_MEMORY ((uint8_t)0x00U)" +.LASF765: + .string "BKP_TPCS_TER BIT(0)" +.LASF3126: + .string "TIMER_MTIMECMP_size 0x8" +.LASF2916: + .string "TIMER_SLAVE_MODE_PAUSE SMCFG_SMC(5)" +.LASF2621: + .string "TIMER_CTL1_DMAS BIT(3)" +.LASF496: + .string "GET_BITS(regval,start,end) (((regval) & BITS((start),(end))) >> (start))" +.LASF2948: + .string "USART_STAT_ORERR BIT(3)" +.LASF826: + .string "CAN_F10DATA0(canx) REG32((canx) + 0x290U)" +.LASF2011: + .string "FWDGT_FLAG_RUD FWDGT_STAT_RUD" +.LASF2402: + .string "RTC_INTEN REG32(RTC + 0x00U)" +.LASF3553: + .string "MASK_FSGNJN_D 0xfe00707f" +.LASF462: + .string "UINT_FAST16_MAX (__UINT_FAST16_MAX__)" +.LASF1584: + .string "OB_WP_28 ((uint32_t)0x10000000U)" +.LASF2377: + .string "RCU_PLL1_MUL20 CFG1_PLL1MF(15)" +.LASF1990: + .string "FWDGT_STAT REG32((FWDGT) + 0x0000000CU)" +.LASF672: + .string "ADC_CHANNEL_11 ((uint8_t)0x0BU)" +.LASF1666: + .string "GPIO_OCTL_OCTL5 BIT(5)" +.LASF2710: + .string "TIMER_CHCTL2_CH2P BIT(9)" +.LASF811: + .string "CAN_FCTL(canx) REG32((canx) + 0x200U)" +.LASF1130: + .string "DAC_CTL REG32(DAC + 0x00U)" +.LASF1231: + .string "DMA_INTC(dmax) REG32((dmax) + 0x04U)" +.LASF2736: + .string "TIMER_INT_CH1 TIMER_DMAINTEN_CH1IE" +.LASF2828: + .string "TIMER_CKDIV_DIV1 CTL0_CKDIV(0)" +.LASF2931: + .string "TIMER_CHVSEL_DISABLE ((uint16_t)0x0000U)" +.LASF2674: + .string "TIMER_CHCTL0_CH0COMFEN BIT(2)" +.LASF1488: + .string "FMC_WP REG32((FMC) + 0x20U)" +.LASF89: + .string "__INTMAX_C(c) c ## LL" +.LASF2040: + .string "PMU_CTL_LDOLP BIT(0)" +.LASF3346: + .string "MATCH_SLTIU 0x3013" +.LASF865: + .string "CAN_F21DATA1(canx) REG32((canx) + 0x2ECU)" +.LASF3329: + .string "MASK_BLTU 0x707f" +.LASF3100: + .string "__wchar_t__ " +.LASF2308: + .string "RCU_PLL_MUL28 (PLLMF_4 | CFG0_PLLMF(11))" +.LASF3976: + .string "CSR_PUSHMCAUSE 0x7EE" +.LASF3923: + .string "CSR_HPMCOUNTER16H 0xc90" +.LASF2392: + .string "RCU_I2S1SRC_CKPLL2_MUL2 RCU_CFG1_I2S1SEL" +.LASF302: + .string "__SIZEOF_PTRDIFF_T__ 4" +.LASF2821: + .string "TIMER_COUNTER_CENTER_UP CTL0_CAM(2)" +.LASF3582: + .string "MATCH_FCVT_L_S 0xc0200053" +.LASF1510: + .string "FMC_CTL_OBWEN BIT(9)" +.LASF891: + .string "CAN_CTL_DFZ BIT(16)" +.LASF3252: + .string "MIP_SEIP (1 << IRQ_S_EXT)" +.LASF3276: + .string "IRQ_S_SOFT 1" +.LASF1393: + .string "EXTI_EVEN_EVEN10 BIT(10)" +.LASF980: + .string "CAN_RFIFOMDATA0_DB0 BITS(0,7)" +.LASF1670: + .string "GPIO_OCTL_OCTL9 BIT(9)" +.LASF910: + .string "CAN_TSTAT_MST1 BIT(15)" +.LASF3074: + .string "_T_PTRDIFF " +.LASF1854: + .string "GPIO_USART2_FULL_REMAP ((uint32_t)0x00140030U)" +.LASF645: + .string "ADC_SAMPLETIME_55POINT5 SAMPTX_SPT(5)" +.LASF503: + .string "APB2_BUS_BASE ((uint32_t)0x40010000U)" +.LASF535: + .string "ADC_SAMPT1(adcx) REG32((adcx) + 0x10U)" +.LASF3715: + .string "MASK_C_FLDSP 0xe003" +.LASF3529: + .string "MASK_FDIV_S 0xfe00007f" +.LASF2054: + .string "PMU_LVDT_2 CTL_LVDT(2)" +.LASF3605: + .string "MASK_FCVT_S_WU 0xfff0007f" +.LASF1734: + .string "GPIO_LOCK_LK9 BIT(9)" +.LASF3094: + .string "_SIZE_T_DECLARED " +.LASF2468: + .string "SPI_CTL1_DMATEN BIT(1)" +.LASF608: + .string "ADC_MODE_FREE CTL0_SYNCM(0)" +.LASF86: + .string "__PTRDIFF_WIDTH__ 32" +.LASF763: + .string "BKP_TPCTL_TPEN BIT(0)" +.LASF2342: + .string "RCU_PREDV0_DIV9 CFG1_PREDV0(8)" +.LASF3592: + .string "MATCH_FCVT_WU_D 0xc2100053" +.LASF3082: + .string "__size_t__ " +.LASF2582: + .string "I2S_FLAG_FERR SPI_STAT_FERR" +.LASF604: + .string "CTL0_DISNUM(regval) (BITS(13,15) & ((uint32_t)(regval) << 13))" +.LASF2830: + .string "TIMER_CKDIV_DIV4 CTL0_CKDIV(2)" +.LASF3692: + .string "MATCH_C_ANDI 0x8801" +.LASF2346: + .string "RCU_PREDV0_DIV13 CFG1_PREDV0(12)" +.LASF3416: + .string "MATCH_SD 0x3023" +.LASF776: + .string "TAMPER_PIN_ACTIVE_HIGH ((uint16_t)0x0000U)" +.LASF3183: + .string "MSTATUS_PUM 0x00040000" +.LASF3663: + .string "MASK_C_LDSP 0xe003" +.LASF1220: + .string "DAC_TRIANGLE_AMPLITUDE_63 DAC_WAVE_BIT_WIDTH_6" +.LASF691: + .string "ADC_OVERSAMPLING_ONE_CONVERT 1" +.LASF3885: + .string "CSR_MHPMEVENT14 0x32e" +.LASF2942: + .string "USART_CTL1(usartx) REG32((usartx) + (0x00000010U))" +.LASF1282: + .string "DMA_CHXMADDR_MADDR BITS(0,31)" +.LASF3413: + .string "MASK_SH 0x707f" +.LASF1238: + .string "DMA_CH1PADDR(dmax) REG32((dmax) + 0x24U)" +.LASF1965: + .string "I2C_SRESET_SET I2C_CTL0_SRESET" +.LASF506: + .string "TIMER_BASE (APB1_BUS_BASE + 0x00000000U)" +.LASF943: + .string "CAN_INTEN_WIE BIT(16)" +.LASF1377: + .string "EXTI_INTEN_INTEN13 BIT(13)" +.LASF1812: + .string "GPIO_EVENT_PIN_12 ((uint8_t)0x0CU)" +.LASF2834: + .string "TIMER_UPDATE_SRC_GLOBAL ((uint32_t)0x00000000U)" +.LASF1445: + .string "EXTI_SWIEV_SWIEV5 BIT(5)" +.LASF3383: + .string "MASK_SRLIW 0xfe00707f" +.LASF466: + .string "INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1)" +.LASF1460: + .string "EXTI_PD_PD1 BIT(1)" +.LASF3136: + .string "_BITUL(x) (_AC(1,UL) << (x))" +.LASF1061: + .string "CAN_BT_BS1_4TQ ((uint8_t)0x03U)" +.LASF3428: + .string "MATCH_MULHU 0x2003033" +.LASF3378: + .string "MATCH_ADDIW 0x1b" +.LASF1624: + .string "GPIO_CTL0_CTL5 BITS(22, 23)" +.LASF3819: + .string "CSR_SBADADDR 0x143" +.LASF2017: + .string "DBG_CTL_SLP_HOLD BIT(0)" +.LASF1899: + .string "I2C_CTL0_SRESET BIT(15)" +.LASF160: + .string "__DBL_MANT_DIG__ 53" +.LASF2194: + .string "RCU_APB1EN_UART3EN BIT(19)" +.LASF667: + .string "ADC_CHANNEL_6 ((uint8_t)0x06U)" +.LASF916: + .string "CAN_TSTAT_NUM BITS(24,25)" +.LASF3871: + .string "CSR_MHPMCOUNTER31 0xb1f" +.LASF790: + .string "CAN_BT(canx) REG32((canx) + 0x1CU)" +.LASF1985: + .string "GD32VF103_FWDGT_H " +.LASF1148: + .string "DAC_CTL_DWBW0 BITS(8,11)" +.LASF1380: + .string "EXTI_INTEN_INTEN16 BIT(16)" +.LASF426: + .string "__int_fast8_t_defined 1" +.LASF621: + .string "CTL1_ETSRC(regval) (BITS(17,19) & ((uint32_t)(regval) << 17))" +.LASF2895: + .string "TIMER_SMCFG_TRGSEL_ITI2 SMCFG_TRGSEL(2)" +.LASF2077: + .string "RCU_APB2EN REG32(RCU + 0x18U)" +.LASF2803: + .string "TIMER_DMACFG_DMATC_12TRANSFER DMACFG_DMATC(11)" +.LASF626: + .string "ADC0_1_EXTTRIG_REGULAR_T2_TRGO CTL1_ETSRC(4)" +.LASF1284: + .string "DMA_CHCTL(dma,channel) REG32(((dma) + 0x08U) + 0x14U * (uint32_t)(channel))" +.LASF118: + .string "__UINT_LEAST16_MAX__ 0xffff" +.LASF1605: + .string "GPIO_LOCK(gpiox) REG32((gpiox) + 0x18U)" +.LASF2581: + .string "I2S_FLAG_TRANS SPI_STAT_TRANS" +.LASF1026: + .string "GET_RFIFOMI_SFID(regval) GET_BITS((uint32_t)(regval), 21U, 31U)" +.LASF3071: + .string "_ANSI_STDDEF_H " +.LASF1740: + .string "GPIO_LOCK_LK15 BIT(15)" +.LASF3743: + .string "MASK_CUSTOM1 0x707f" +.LASF3297: + .string "PTE_U 0x010" +.LASF441: + .string "UINT16_MAX (__UINT16_MAX__)" +.LASF61: + .string "__UINT_FAST8_TYPE__ unsigned int" +.LASF3102: + .string "_WCHAR_T " +.LASF2417: + .string "RTC_CTL_OVIF BIT(2)" +.LASF839: + .string "CAN_F23DATA0(canx) REG32((canx) + 0x3F8U)" +.LASF3141: + .string "ECLIC_MTH_OFFSET 0xB" +.LASF1852: + .string "GPIO_USART1_REMAP ((uint32_t)0x00000008U)" +.LASF2095: + .string "RCU_CTL_PLL1STB BIT(27)" +.LASF1727: + .string "GPIO_LOCK_LK2 BIT(2)" +.LASF2548: + .string "I2S_STD_PHILLIPS I2SCTL_I2SSTD(0)" +.LASF1576: + .string "OB_WP_20 ((uint32_t)0x00100000U)" +.LASF492: + .string "REG16(addr) (*(volatile uint16_t *)(uint32_t)(addr))" +.LASF3168: + .string "__SEV eclic_send_event" +.LASF1034: + .string "GET_RFIFOMDATA1_DB5(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF1135: + .string "DAC1_R12DH REG32(DAC + 0x14U)" +.LASF838: + .string "CAN_F22DATA0(canx) REG32((canx) + 0x2F0U)" +.LASF2964: + .string "USART_CTL0_TCIE BIT(6)" +.LASF1021: + .string "TMDATA1_DB4(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF3731: + .string "MASK_CUSTOM0 0x707f" +.LASF1873: + .string "GD32VF103_I2C_H " +.LASF2414: + .string "RTC_INTEN_OVIE BIT(2)" +.LASF2836: + .string "TIMER_ROS_STATE_DISABLE ((uint16_t)0x0000U)" +.LASF3924: + .string "CSR_HPMCOUNTER17H 0xc91" +.LASF1344: + .string "EXMC_SNCTL(region) REG32(EXMC + 0x08U * (region))" +.LASF2378: + .string "CFG1_PLL2MF(regval) (BITS(12,15) & ((uint32_t)(regval) << 12))" +.LASF141: + .string "__FLT_EVAL_METHOD__ 0" +.LASF1720: + .string "GPIO_BC_CR11 BIT(11)" +.LASF3632: + .string "MATCH_FMSUB_S 0x47" +.LASF1799: + .string "GPIO_PORT_SOURCE_GPIOE ((uint8_t)0x04U)" +.LASF3935: + .string "CSR_HPMCOUNTER28H 0xc9c" +.LASF3836: + .string "CSR_TDATA2 0x7a2" +.LASF3598: + .string "MATCH_FMV_X_D 0xe2000053" +.LASF2390: + .string "RCU_PREDV0SRC_CKPLL1 RCU_CFG1_PREDV0SEL" +.LASF2306: + .string "RCU_PLL_MUL26 (PLLMF_4 | CFG0_PLLMF(9))" +.LASF2132: + .string "RCU_INT_PLL2STBIC BIT(22)" +.LASF3533: + .string "MASK_FSGNJN_S 0xfe00707f" +.LASF485: + .string "INT32_C(x) __INT32_C(x)" +.LASF264: + .string "__FLT32X_HAS_INFINITY__ 1" +.LASF1644: + .string "GPIO_CTL1_CTL15 BITS(30, 31)" +.LASF2523: + .string "SPI_PSC_64 CTL0_PSC(5)" +.LASF3637: + .string "MASK_FNMADD_S 0x600007f" +.LASF711: + .string "GD32VF103_BKP_H " +.LASF2252: + .string "RCU_AHB_CKSYS_DIV2 CFG0_AHBPSC(8)" +.LASF2473: + .string "SPI_CTL1_RBNEIE BIT(6)" +.LASF3257: + .string "MIE_MSIE MIP_MSIP" +.LASF78: + .string "__SIZE_MAX__ 0xffffffffU" +.LASF3856: + .string "CSR_MHPMCOUNTER16 0xb10" +.LASF1680: + .string "GPIO_BOP_BOP3 BIT(3)" +.LASF2102: + .string "RCU_CFG0_APB2PSC BITS(11,13)" +.LASF3091: + .string "_SIZE_T_DEFINED_ " +.LASF737: + .string "BKP_DATA24 REG16((BKP) + 0x78U)" +.LASF1723: + .string "GPIO_BC_CR14 BIT(14)" +.LASF2157: + .string "RCU_APB1RST_UART4RST BIT(20)" +.LASF3185: + .string "MSTATUS_VM 0x1F000000" +.LASF251: + .string "__FLT32X_MANT_DIG__ 53" +.LASF2603: + .string "TIMER_CREP(timerx) REG32((timerx) + 0x30U)" +.LASF2335: + .string "RCU_PREDV0_DIV2 CFG1_PREDV0(1)" +.LASF289: + .string "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 1" +.LASF3355: + .string "MASK_ORI 0x707f" +.LASF1250: + .string "DMA_CH4PADDR(dmax) REG32((dmax) + 0x60U)" +.LASF2651: + .string "TIMER_DMAINTEN_CMTDEN BIT(13)" +.LASF3251: + .string "MIP_MTIP (1 << IRQ_M_TIMER)" +.LASF353: + .string "__BSD_VISIBLE 0" +.LASF741: + .string "BKP_DATA28 REG16((BKP) + 0x88U)" +.LASF100: + .string "__UINT8_MAX__ 0xff" +.LASF2971: + .string "USART_CTL0_UEN BIT(13)" +.LASF3013: + .string "USART_PM_ODD CTL0_PM(3)" +.LASF9: + .string "__ATOMIC_RELAXED 0" +.LASF2275: + .string "RCU_CKADC_CKAPB2_DIV8 ((uint32_t)0x00000003U)" +.LASF653: + .string "ADC_REGULAR_CHANNEL ((uint8_t)0x01U)" +.LASF172: + .string "__DBL_HAS_DENORM__ 1" +.LASF3229: + .string "MCONTROL_U (1<<3)" +.LASF2982: + .string "USART_CTL2_IREN BIT(1)" +.LASF4015: + .string "source" +.LASF3051: + .string "USART_IRLP_NORMAL CTL2_IRLP(0)" +.LASF3508: + .string "MATCH_WFI 0x10500073" +.LASF1180: + .string "DAC_TRIGGER_EXTI_9 CTL_DTSEL(6)" +.LASF1697: + .string "GPIO_BOP_CR4 BIT(20)" +.LASF2832: + .string "TIMER_SP_MODE_REPETITIVE ((uint32_t)0x00000000U)" +.LASF3670: + .string "MATCH_C_LW 0x4000" +.LASF3898: + .string "CSR_MHPMEVENT27 0x33b" +.LASF3882: + .string "CSR_MHPMEVENT11 0x32b" +.LASF2383: + .string "RCU_PLL2_MUL12 CFG1_PLL2MF(10)" +.LASF2598: + .string "TIMER_CHCTL1(timerx) REG32((timerx) + 0x1CU)" +.LASF4013: + .string "eclic_irq_disable" +.LASF2222: + .string "RCU_CFG1_PLL2MF BITS(12,15)" +.LASF396: + .string "__INT64 \"ll\"" +.LASF1973: + .string "I2C_PECTRANS_ENABLE I2C_CTL0_PECTRANS" +.LASF3142: + .string "ECLIC_INT_IP_OFFSET _AC(0x1000,UL)" +.LASF1127: + .string "DAC DAC_BASE" +.LASF1467: + .string "EXTI_PD_PD8 BIT(8)" +.LASF3838: + .string "CSR_DCSR 0x7b0" +.LASF976: + .string "CAN_RFIFOMI_SFID BITS(21,31)" +.LASF407: + .string "_UINT8_T_DECLARED " +.LASF994: + .string "CAN_FDATA_FD(regval) BIT(regval)" +.LASF2486: + .string "SPI_RCRC_RCRC BITS(0,15)" +.LASF154: + .string "__FLT_MIN__ 1.17549435082228750796873653722224568e-38F" +.LASF1078: + .string "CAN_BT_BS2_5TQ ((uint8_t)0x04U)" +.LASF1264: + .string "DMA_INTC_GIFC BIT(0)" +.LASF2565: + .string "SPI_INT_FLAG_CONFERR ((uint8_t)0x03U)" +.LASF2029: + .string "DBG_CTL_TIMER4_HOLD BIT(18)" +.LASF2502: + .string "SPI_BIDIRECTIONAL_RECEIVE (~SPI_CTL0_BDOEN)" +.LASF1543: + .string "OB_STDBY_RST ((uint8_t)0x00U)" +.LASF2201: + .string "RCU_APB1EN_PMUEN BIT(28)" +.LASF3343: + .string "MASK_SLLI 0xfc00707f" +.LASF249: + .string "__FLT128_HAS_INFINITY__ 1" +.LASF3477: + .string "MASK_AMOAND_D 0xf800707f" +.LASF729: + .string "BKP_DATA16 REG16((BKP) + 0x58U)" +.LASF660: + .string "ADC_INSERTED_CHANNEL_3 ((uint8_t)0x03U)" +.LASF2718: + .string "TIMER_CREP_CREP BITS(0,7)" +.LASF1433: + .string "EXTI_FTEN_FTEN12 BIT(12)" +.LASF719: + .string "BKP_DATA6 REG16((BKP) + 0x1CU)" +.LASF1015: + .string "TMI_EFID(regval) (BITS(3,31) & ((uint32_t)(regval) << 3))" +.LASF584: + .string "ADC_IOFFX_IOFF BITS(0,11)" +.LASF1929: + .string "I2C_STAT1_TR BIT(2)" +.LASF2805: + .string "TIMER_DMACFG_DMATC_14TRANSFER DMACFG_DMATC(13)" +.LASF3697: + .string "MASK_C_XOR 0xfc63" +.LASF3390: + .string "MATCH_SLLW 0x103b" +.LASF803: + .string "CAN_RFIFOMI0(canx) REG32((canx) + 0x1B0U)" +.LASF447: + .string "UINT32_MAX (__UINT32_MAX__)" +.LASF1307: + .string "DMA_PERIPH_INCREASE_ENABLE ((uint8_t)0x01U)" +.LASF1006: + .string "ERR_REG_OFFSET ((uint8_t)0x18U)" +.LASF1991: + .string "FWDGT_CTL_CMD BITS(0,15)" +.LASF3245: + .string "MCONTROL_MATCH_MASK_HIGH 5" +.LASF610: + .string "ADC_DAUL_REGULAL_PARALLEL_INSERTED_ROTATION CTL0_SYNCM(2)" +.LASF740: + .string "BKP_DATA27 REG16((BKP) + 0x84U)" +.LASF218: + .string "__FLT32_HAS_DENORM__ 1" +.LASF301: + .string "__SIZEOF_WINT_T__ 4" +.LASF2873: + .string "TIMER_OC_MODE_PWM1 ((uint16_t)0x0070U)" +.LASF1983: + .string "I2C_ADDFORMAT_7BITS ((uint32_t)0x00000000U)" +.LASF991: + .string "CAN_FSCFG_FS(regval) BIT(regval)" +.LASF1579: + .string "OB_WP_23 ((uint32_t)0x00800000U)" +.LASF559: + .string "ADC_CTL0_WDEIE BIT(6)" +.LASF233: + .string "__FLT64_HAS_DENORM__ 1" +.LASF561: + .string "ADC_CTL0_SM BIT(8)" +.LASF1010: + .string "BT_SJW(regval) (BITS(24,25) & ((uint32_t)(regval) << 24))" +.LASF728: + .string "BKP_DATA15 REG16((BKP) + 0x54U)" +.LASF3190: + .string "SSTATUS_UPIE 0x00000010" +.LASF555: + .string "ADC_STAT_STIC BIT(3)" +.LASF2439: + .string "RTC_FLAG_LWOF RTC_CTL_LWOFF" +.LASF746: + .string "BKP_DATA33 REG16((BKP) + 0x9CU)" +.LASF3766: + .string "MATCH_CUSTOM3 0x7b" +.LASF3754: + .string "MATCH_CUSTOM2 0x5b" +.LASF818: + .string "CAN_F2DATA0(canx) REG32((canx) + 0x250U)" +.LASF2143: + .string "RCU_APB2RST_SPI0RST BIT(12)" +.LASF3150: + .string "ECLIC_INT_CTRL_OFFSET _AC(0x1003,UL)" +.LASF335: + .string "HXTAL_VALUE_25M HXTAL_VALUE" +.LASF1851: + .string "GPIO_USART0_REMAP ((uint32_t)0x00000004U)" +.LASF2423: + .string "RTC_DIVH_DIV BITS(0,3)" +.LASF599: + .string "ADC_FLAG_WDE ADC_STAT_WDE" +.LASF157: + .string "__FLT_HAS_DENORM__ 1" +.LASF1909: + .string "I2C_SADDR0_ADDFORMAT BIT(15)" +.LASF469: + .string "INTMAX_MAX (__INTMAX_MAX__)" +.LASF391: + .string "_INTPTR_EQ_INT " +.LASF2732: + .string "TIMER_DMACFG_DMATC BITS(8,12)" +.LASF201: + .string "__FLT16_EPSILON__ 9.76562500000000000000000000000000000e-4F16" +.LASF2337: + .string "RCU_PREDV0_DIV4 CFG1_PREDV0(3)" +.LASF2131: + .string "RCU_INT_PLL1STBIC BIT(21)" +.LASF898: + .string "CAN_STAT_RS BIT(9)" +.LASF3869: + .string "CSR_MHPMCOUNTER29 0xb1d" +.LASF1592: + .string "GD32VF103_GPIO_H " +.LASF3266: + .string "PRV_U 0" +.LASF1389: + .string "EXTI_EVEN_EVEN6 BIT(6)" +.LASF1821: + .string "GPIO_PIN_SOURCE_5 ((uint8_t)0x05U)" +.LASF3108: + .string "_WCHAR_T_DEFINED_ " +.LASF2325: + .string "RCU_CKOUT0SRC_CKPLL2_DIV2 CFG0_CKOUT0SEL(9)" +.LASF3908: + .string "CSR_TIMEH 0xc81" +.LASF1803: + .string "GPIO_EVENT_PIN_3 ((uint8_t)0x03U)" +.LASF1999: + .string "FWDGT_PSC_DIV16 ((uint8_t)PSC_PSC(2))" +.LASF692: + .string "OVSCR_OVSS(regval) (BITS(5,8) & ((uint32_t)(regval) << 5))" +.LASF316: + .string "__riscv_c 2000000" +.LASF1407: + .string "EXTI_RTEN_RTEN5 BIT(5)" +.LASF2189: + .string "RCU_APB1EN_WWDGTEN BIT(11)" +.LASF3399: + .string "MASK_LH 0x707f" +.LASF3204: + .string "DCSR_EBREAKU (1<<12)" +.LASF3121: + .string "_GCC_MAX_ALIGN_T " +.LASF2779: + .string "TIMER_DMACFG_DMATA_CHCTL1 DMACFG_DMATA(7)" +.LASF2991: + .string "USART_CTL2_CTSIE BIT(10)" +.LASF2806: + .string "TIMER_DMACFG_DMATC_15TRANSFER DMACFG_DMATC(14)" +.LASF380: + .string "__int20" +.LASF2892: + .string "SMCFG_TRGSEL(regval) (BITS(4, 6) & ((uint32_t)(regval) << 4U))" +.LASF2056: + .string "PMU_LVDT_4 CTL_LVDT(4)" +.LASF734: + .string "BKP_DATA21 REG16((BKP) + 0x6CU)" +.LASF739: + .string "BKP_DATA26 REG16((BKP) + 0x80U)" +.LASF313: + .string "__riscv_i 2000000" +.LASF1756: + .string "AFIO_PCF0_TIMER4CH3_IREMAP BIT(16)" +.LASF2389: + .string "RCU_PREDV0SRC_HXTAL ((uint32_t)0x00000000U)" +.LASF798: + .string "CAN_TMDATA11(canx) REG32((canx) + 0x19CU)" +.LASF1325: + .string "DMA_CHANNEL_CNT_MASK DMA_CHXCNT_CNT" +.LASF2184: + .string "RCU_APB1EN_TIMER2EN BIT(1)" +.LASF3284: + .string "IRQ_M_EXT 11" +.LASF3010: + .string "CTL0_PM(regval) (BITS(9,10) & ((uint32_t)(regval) << 9))" +.LASF3772: + .string "MATCH_CUSTOM3_RD 0x407b" +.LASF1086: + .string "CAN_FF_STANDARD ((uint32_t)0x00000000U)" +.LASF1651: + .string "GPIO_ISTAT_ISTAT6 BIT(6)" +.LASF2061: + .string "PMU_FLAG_STANDBY PMU_CS_STBF" +.LASF1253: + .string "DMA_CH5CNT(dmax) REG32((dmax) + 0x70U)" +.LASF79: + .string "__SCHAR_WIDTH__ 8" +.LASF2457: + .string "SPI_CTL0_SPIEN BIT(6)" +.LASF591: + .string "ADC_IDATAX_IDATAN BITS(0,15)" +.LASF2711: + .string "TIMER_CHCTL2_CH2NEN BIT(10)" +.LASF2015: + .string "DBG_CTL REG32(DBG + 0x04U)" +.LASF1139: + .string "DACC_L12DH REG32(DAC + 0x24U)" +.LASF1372: + .string "EXTI_INTEN_INTEN8 BIT(8)" +.LASF1837: + .string "GPIO_PIN_5 BIT(5)" +.LASF2695: + .string "TIMER_CHCTL1_CH3COMCTL BITS(12,14)" +.LASF3008: + .string "USART_TRANSMIT_ENABLE CTL0_TEN(1)" +.LASF523: + .string "FMC_BASE (AHB1_BUS_BASE + 0x0000A000U)" +.LASF3449: + .string "MASK_AMOADD_W 0xf800707f" +.LASF2482: + .string "SPI_STAT_TRANS BIT(7)" +.LASF3007: + .string "CTL0_TEN(regval) (BIT(3) & ((uint32_t)(regval) << 3))" +.LASF2440: + .string "GD32VF103_SPI_H " +.LASF333: + .string "__IO volatile" +.LASF3377: + .string "MASK_AND 0xfe00707f" +.LASF2118: + .string "RCU_INT_CKMIF BIT(7)" +.LASF3431: + .string "MASK_DIV 0xfe00707f" +.LASF1118: + .string "GD32VF103_CRC_H " +.LASF752: + .string "BKP_DATA39 REG16((BKP) + 0xB4U)" +.LASF1574: + .string "OB_WP_18 ((uint32_t)0x00040000U)" +.LASF1194: + .string "DAC_WAVE_BIT_WIDTH_8 DWBW(7)" +.LASF1279: + .string "DMA_CHXCTL_M2M BIT(14)" +.LASF3459: + .string "MASK_AMOMAX_W 0xf800707f" +.LASF3009: + .string "USART_TRANSMIT_DISABLE CTL0_TEN(0)" +.LASF2574: + .string "SPI_FLAG_TRANS SPI_STAT_TRANS" +.LASF1298: + .string "DMA_FLAG_FTF DMA_INTF_FTFIF" +.LASF1919: + .string "I2C_STAT0_TBE BIT(7)" +.LASF3915: + .string "CSR_HPMCOUNTER8H 0xc88" +.LASF1031: + .string "GET_RFIFOMDATA0_DB2(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF3272: + .string "VM_MBBID 2" +.LASF1568: + .string "OB_WP_12 ((uint32_t)0x00001000U)" +.LASF3400: + .string "MATCH_LW 0x2003" +.LASF1398: + .string "EXTI_EVEN_EVEN15 BIT(15)" +.LASF3115: + .string "_BSD_WCHAR_T_" +.LASF3528: + .string "MATCH_FDIV_S 0x18000053" +.LASF3448: + .string "MATCH_AMOADD_W 0x202f" +.LASF3107: + .string "_BSD_WCHAR_T_ " +.LASF2088: + .string "RCU_CTL_HXTALEN BIT(16)" +.LASF1802: + .string "GPIO_EVENT_PIN_2 ((uint8_t)0x02U)" +.LASF2180: + .string "RCU_APB2EN_TIMER0EN BIT(11)" +.LASF208: + .string "__FLT32_MIN_EXP__ (-125)" +.LASF1210: + .string "DAC_LFSR_BITS11_0 DAC_WAVE_BIT_WIDTH_12" +.LASF3805: + .string "CSR_HPMCOUNTER24 0xc18" +.LASF3083: + .string "__SIZE_T__ " +.LASF3738: + .string "MATCH_CUSTOM0_RD_RS1 0x600b" +.LASF1977: + .string "I2C_ARP_ENABLE I2C_CTL0_ARPEN" +.LASF1993: + .string "FWDGT_RLD_RLD BITS(0,11)" +.LASF1860: + .string "GPIO_TIMER2_PARTIAL_REMAP ((uint32_t)0x001A0800U)" +.LASF2203: + .string "RCU_BDCTL_LXTALEN BIT(0)" +.LASF3419: + .string "MASK_FENCE 0x707f" +.LASF2152: + .string "RCU_APB1RST_SPI1RST BIT(14)" +.LASF3433: + .string "MASK_DIVU 0xfe00707f" +.LASF2339: + .string "RCU_PREDV0_DIV6 CFG1_PREDV0(5)" +.LASF2177: + .string "RCU_APB2EN_PEEN BIT(6)" +.LASF1794: + .string "GPIO_EVENT_PORT_GPIOE ((uint8_t)0x04U)" +.LASF2478: + .string "SPI_STAT_TXURERR BIT(3)" +.LASF1327: + .string "EXMC (EXMC_BASE)" +.LASF1051: + .string "CAN_LOOPBACK_MODE ((uint8_t)0x01U)" +.LASF385: + .string "char +0" +.LASF3991: + .string "CAUSE_FAULT_STORE 0x7" +.LASF1704: + .string "GPIO_BOP_CR11 BIT(27)" +.LASF3162: + .string "ECLIC_GROUP_LEVEL4_PRIO0 4" +.LASF3454: + .string "MATCH_AMOAND_W 0x6000202f" +.LASF1008: + .string "BT_BS1(regval) (BITS(16,19) & ((uint32_t)(regval) << 16))" +.LASF3521: + .string "MASK_CSRRCI 0x707f" +.LASF445: + .string "INT32_MIN (-__INT32_MAX__ - 1)" +.LASF2650: + .string "TIMER_DMAINTEN_CH3DEN BIT(12)" +.LASF751: + .string "BKP_DATA38 REG16((BKP) + 0xB0U)" +.LASF513: + .string "CAN_BASE (APB1_BUS_BASE + 0x00006400U)" +.LASF2066: + .string "PMU_FLAG_RESET_STANDBY ((uint8_t)0x01U)" +.LASF2354: + .string "RCU_PREDV1_DIV4 CFG1_PREDV1(3)" +.LASF2466: + .string "SPI_CTL0_BDEN BIT(15)" +.LASF3749: + .string "MASK_CUSTOM1_RD 0x707f" +.LASF3057: + .string "WWDGT_CTL_CNT BITS(0,6)" +.LASF1405: + .string "EXTI_RTEN_RTEN3 BIT(3)" +.LASF2224: + .string "RCU_CFG1_I2S1SEL BIT(17)" +.LASF1793: + .string "GPIO_EVENT_PORT_GPIOD ((uint8_t)0x03U)" +.LASF1778: + .string "GPIO_MODE_MASK(n) (0xFU << (4U * (n)))" +.LASF2854: + .string "TIMER_CCX_ENABLE ((uint16_t)0x0001U)" +.LASF2550: + .string "I2S_STD_LSB I2SCTL_I2SSTD(2)" +.LASF568: + .string "ADC_CTL0_IWDEN BIT(22)" +.LASF3752: + .string "MATCH_CUSTOM1_RD_RS1_RS2 0x702b" +.LASF2855: + .string "TIMER_CCX_DISABLE ((uint16_t)0x0000U)" +.LASF1365: + .string "EXTI_INTEN_INTEN1 BIT(1)" +.LASF3600: + .string "MATCH_FCLASS_D 0xe2001053" +.LASF370: + .string "___int_least16_t_defined 1" +.LASF2862: + .string "TIMER_OC_IDLE_STATE_HIGH ((uint16_t)0x0100)" +.LASF703: + .string "ADC_OVERSAMPLING_RATIO_MUL2 OVSCR_OVSR(0)" +.LASF15: + .string "__FINITE_MATH_ONLY__ 0" +.LASF3540: + .string "MATCH_FSQRT_S 0x58000053" +.LASF3687: + .string "MASK_C_LUI 0xe003" +.LASF1259: + .string "DMA_CH6MADDR(dmax) REG32((dmax) + 0x8CU)" +.LASF2961: + .string "USART_CTL0_TEN BIT(3)" +.LASF2352: + .string "RCU_PREDV1_DIV2 CFG1_PREDV1(1)" +.LASF3146: + .string "ECLIC_INT_ATTR_TRIG_LEVEL 0x00" +.LASF3464: + .string "MATCH_AMOSWAP_W 0x800202f" +.LASF2868: + .string "TIMER_OC_MODE_INACTIVE ((uint16_t)0x0020U)" +.LASF1507: + .string "FMC_CTL_OBER BIT(5)" +.LASF1074: + .string "CAN_BT_BS2_1TQ ((uint8_t)0x00U)" +.LASF808: + .string "CAN_RFIFOMP1(canx) REG32((canx) + 0x1C4U)" +.LASF2049: + .string "PMU_CS_LVDF BIT(2)" +.LASF3320: + .string "MATCH_BEQ 0x63" +.LASF926: + .string "CAN_RFIFO0_RFD0 BIT(5)" +.LASF3018: + .string "USART_WL_8BIT CTL0_WL(0)" +.LASF3145: + .string "ECLIC_INT_ATTR_SHV 0x01" +.LASF3024: + .string "USART_STB_1_5BIT CTL1_STB(3)" +.LASF3225: + .string "MCONTROL_MATCH (0xf<<7)" +.LASF212: + .string "__FLT32_DECIMAL_DIG__ 9" +.LASF3114: + .string "_WCHAR_T_DECLARED " +.LASF2241: + .string "CFG1_REG_OFFSET 0x2CU" +.LASF3658: + .string "MATCH_C_SD 0xe000" +.LASF2798: + .string "TIMER_DMACFG_DMATC_7TRANSFER DMACFG_DMATC(6)" +.LASF562: + .string "ADC_CTL0_WDSC BIT(9)" +.LASF705: + .string "ADC_OVERSAMPLING_RATIO_MUL8 OVSCR_OVSR(2)" +.LASF367: + .string "___int32_t_defined 1" +.LASF2084: + .string "RCU_CTL_IRC8MEN BIT(0)" +.LASF1182: + .string "CTL_DWM(regval) (BITS(6,7) & ((uint32_t)(regval) << 6))" +.LASF3205: + .string "DCSR_STOPCYCLE (1<<10)" +.LASF230: + .string "__FLT64_MIN__ 2.22507385850720138309023271733240406e-308F64" +.LASF3744: + .string "MATCH_CUSTOM1_RS1 0x202b" +.LASF634: + .string "ADC0_1_EXTTRIG_INSERTED_T1_CH0 CTL1_ETSIC(3)" +.LASF1615: + .string "GPIO_CTL0_MD1 BITS(4, 5)" +.LASF3832: + .string "CSR_MBADADDR 0x343" +.LASF246: + .string "__FLT128_EPSILON__ 1.92592994438723585305597794258492732e-34F128" +.LASF2850: + .string "TIMER_CH_0 ((uint16_t)0x0000U)" +.LASF2158: + .string "RCU_APB1RST_I2C0RST BIT(21)" +.LASF2277: + .string "RCU_CKADC_CKAPB2_DIV16 ((uint32_t)0x00000007U)" +.LASF1482: + .string "FMC_KEY REG32((FMC) + 0x04U)" +.LASF2130: + .string "RCU_INT_PLLSTBIC BIT(20)" +.LASF1763: + .string "AFIO_EXTI3_SS BITS(12, 15)" +.LASF2887: + .string "TIMER_IC_SELECTION_ITS ((uint16_t)0x0003U)" +.LASF1607: + .string "AFIO_PCF0 REG32(AFIO + 0x04U)" +.LASF633: + .string "ADC0_1_EXTTRIG_INSERTED_T1_TRGO CTL1_ETSIC(2)" +.LASF3652: + .string "MATCH_C_JALR 0x9002" +.LASF3963: + .string "CSR_MHPMCOUNTER25H 0xb99" +.LASF1483: + .string "FMC_OBKEY REG32((FMC) + 0x08U)" +.LASF493: + .string "REG8(addr) (*(volatile uint8_t *)(uint32_t)(addr))" +.LASF3941: + .string "CSR_MHPMCOUNTER3H 0xb83" +.LASF907: + .string "CAN_TSTAT_MTFNERR1 BIT(9)" +.LASF2006: + .string "FWDGT_KEY_RELOAD ((uint16_t)0xAAAAU)" +.LASF1685: + .string "GPIO_BOP_BOP8 BIT(8)" +.LASF2503: + .string "SPI_TRANSMODE_FULLDUPLEX ((uint32_t)0x00000000U)" +.LASF2626: + .string "TIMER_CTL1_ISO1 BIT(10)" +.LASF2914: + .string "TIMER_ENCODER_MODE2 SMCFG_SMC(3)" +.LASF423: + .string "__int_least16_t_defined 1" +.LASF1169: + .string "DACC_R8DH_DAC0_DH BITS(0,7)" +.LASF2341: + .string "RCU_PREDV0_DIV8 CFG1_PREDV0(7)" +.LASF3105: + .string "__WCHAR_T " +.LASF3211: + .string "DCSR_PRV (3<<0)" +.LASF409: + .string "_INT16_T_DECLARED " +.LASF3634: + .string "MATCH_FNMSUB_S 0x4b" +.LASF88: + .string "__INTMAX_MAX__ 0x7fffffffffffffffLL" +.LASF1189: + .string "DAC_WAVE_BIT_WIDTH_3 DWBW(2)" +.LASF1046: + .string "CAN_ERRN_5 ERR_ERRN(5U)" +.LASF3761: + .string "MASK_CUSTOM2_RD 0x707f" +.LASF919: + .string "CAN_TSTAT_TME2 BIT(28)" +.LASF3955: + .string "CSR_MHPMCOUNTER17H 0xb91" +.LASF1717: + .string "GPIO_BC_CR8 BIT(8)" +.LASF2691: + .string "TIMER_CHCTL1_CH2COMCEN BIT(7)" +.LASF2270: + .string "RCU_APB2_CKAHB_DIV8 CFG0_APB2PSC(6)" +.LASF90: + .string "__UINTMAX_MAX__ 0xffffffffffffffffULL" +.LASF3671: + .string "MASK_C_LW 0xe003" +.LASF4003: + .string "long int" +.LASF615: + .string "ADC_DAUL_REGULAL_FOLLOWUP_FAST CTL0_SYNCM(7)" +.LASF2231: + .string "APB1EN_REG_OFFSET 0x1CU" +.LASF1883: + .string "I2C_CKCFG(i2cx) REG32((i2cx) + 0x1CU)" +.LASF2576: + .string "I2S_FLAG_RBNE SPI_STAT_RBNE" +.LASF3695: + .string "MASK_C_SUB 0xfc63" +.LASF3530: + .string "MATCH_FSGNJ_S 0x20000053" +.LASF2291: + .string "RCU_PLL_MUL11 CFG0_PLLMF(9)" +.LASF1356: + .string "GD32VF103_EXTI_H " +.LASF378: + .string "char" +.LASF1750: + .string "AFIO_PCF0_TIMER0_REMAP BITS(6, 7)" +.LASF3593: + .string "MASK_FCVT_WU_D 0xfff0007f" +.LASF2150: + .string "RCU_APB1RST_TIMER6RST BIT(5)" +.LASF32: + .string "__SIZE_TYPE__ unsigned int" +.LASF3228: + .string "MCONTROL_S (1<<4)" +.LASF2190: + .string "RCU_APB1EN_SPI1EN BIT(14)" +.LASF3835: + .string "CSR_TDATA1 0x7a1" +.LASF881: + .string "CAN_RFIFOMDATA1(canx,bank) REG32((canx) + 0x1BCU + ((bank) * 0x10U))" +.LASF2702: + .string "TIMER_CHCTL2_CH0P BIT(1)" +.LASF392: + .string "_INT32_EQ_LONG " +.LASF1070: + .string "CAN_BT_BS1_13TQ ((uint8_t)0x0CU)" +.LASF3626: + .string "MATCH_FSW 0x2027" +.LASF1840: + .string "GPIO_PIN_8 BIT(8)" +.LASF1922: + .string "I2C_STAT0_AERR BIT(10)" +.LASF2313: + .string "CFG0_USBPSC(regval) (BITS(22,23) & ((uint32_t)(regval) << 22))" +.LASF2863: + .string "TIMER_OC_IDLE_STATE_LOW ((uint16_t)0x0000)" +.LASF536: + .string "ADC_IOFF0(adcx) REG32((adcx) + 0x14U)" +.LASF1378: + .string "EXTI_INTEN_INTEN14 BIT(14)" +.LASF908: + .string "CAN_TSTAT_MAL1 BIT(10)" +.LASF31: + .string "__SIZEOF_POINTER__ 4" +.LASF2039: + .string "PMU_CS REG32((PMU) + 0x04U)" +.LASF3874: + .string "CSR_MHPMEVENT3 0x323" +.LASF598: + .string "ADC_OVSCR_DRES BITS(12,13)" +.LASF2370: + .string "RCU_PLL1_MUL10 CFG1_PLL1MF(8)" +.LASF217: + .string "__FLT32_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F32" +.LASF2082: + .string "RCU_CFG1 REG32(RCU + 0x2CU)" +.LASF1312: + .string "DMA_PERIPHERAL_WIDTH_16BIT CHCTL_PWIDTH(1U)" +.LASF2871: + .string "TIMER_OC_MODE_HIGH ((uint16_t)0x0050U)" +.LASF686: + .string "ADC_RESOLUTION_12B OVSCR_DRES(0)" +.LASF2877: + .string "TIMER_OC_FAST_DISABLE ((uint16_t)0x0000)" +.LASF3994: + .string "CAUSE_HYPERVISOR_ECALL 0xa" +.LASF1789: + .string "GPIO_OSPEED_50MHZ ((uint8_t)0x03U)" +.LASF687: + .string "ADC_RESOLUTION_10B OVSCR_DRES(1)" +.LASF2235: + .string "APB2RST_REG_OFFSET 0x0CU" +.LASF2988: + .string "USART_CTL2_DENT BIT(7)" +.LASF2790: + .string "TIMER_DMACFG_DMATA_DMACFG DMACFG_DMATA(18)" +.LASF2477: + .string "SPI_STAT_I2SCH BIT(2)" +.LASF3460: + .string "MATCH_AMOMINU_W 0xc000202f" +.LASF3006: + .string "USART_RECEIVE_DISABLE CTL0_REN(0)" +.LASF2625: + .string "TIMER_CTL1_ISO0N BIT(9)" +.LASF2679: + .string "TIMER_CHCTL0_CH1COMFEN BIT(10)" +.LASF2811: + .string "TIMER_EVENT_SRC_CH0G ((uint16_t)0x0002U)" +.LASF663: + .string "ADC_CHANNEL_2 ((uint8_t)0x02U)" +.LASF3061: + .string "WWDGT_CFG_EWIE BIT(9)" +.LASF1847: + .string "GPIO_PIN_15 BIT(15)" +.LASF3939: + .string "CSR_MCYCLEH 0xb80" +.LASF3446: + .string "MATCH_REMUW 0x200703b" +.LASF1521: + .string "FMC_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF3372: + .string "MATCH_SRA 0x40005033" +.LASF1104: + .string "CAN_INT_TME CAN_INTEN_TMEIE" +.LASF517: + .string "AFIO_BASE (APB2_BUS_BASE + 0x00000000U)" +.LASF1889: + .string "I2C_CTL0_ARPEN BIT(4)" +.LASF2356: + .string "RCU_PREDV1_DIV6 CFG1_PREDV1(5)" +.LASF2990: + .string "USART_CTL2_CTSEN BIT(9)" +.LASF1918: + .string "I2C_STAT0_RBNE BIT(6)" +.LASF2387: + .string "RCU_PLL2_MUL16 CFG1_PLL2MF(14)" +.LASF1011: + .string "BT_MODE(regval) (BITS(30,31) & ((uint32_t)(regval) << 30))" +.LASF2758: + .string "TIMER_FLAG_CH0O TIMER_INTF_CH0OF" +.LASF708: + .string "ADC_OVERSAMPLING_RATIO_MUL64 OVSCR_OVSR(5)" +.LASF1043: + .string "CAN_ERRN_2 ERR_ERRN(2U)" +.LASF1611: + .string "AFIO_EXTISS3 REG32(AFIO + 0x14U)" +.LASF1438: + .string "EXTI_FTEN_FTEN17 BIT(17)" +.LASF2281: + .string "CFG0_PLLMF(regval) (BITS(18,21) & ((uint32_t)(regval) << 18))" +.LASF2380: + .string "RCU_PLL2_MUL9 CFG1_PLL2MF(7)" +.LASF2111: + .string "RCU_INT_IRC40KSTBIF BIT(0)" +.LASF2583: + .string "GD32VF103_TIMER_H " +.LASF1018: + .string "TMDATA0_DB1(regval) (BITS(8,15) & ((uint32_t)(regval) << 8))" +.LASF2030: + .string "DBG_CTL_TIMER5_HOLD BIT(19)" +.LASF3070: + .string "_STDDEF_H_ " +.LASF3730: + .string "MATCH_CUSTOM0 0xb" +.LASF722: + .string "BKP_DATA9 REG16((BKP) + 0x28U)" +.LASF3207: + .string "DCSR_CAUSE (7<<6)" +.LASF3902: + .string "CSR_MHPMEVENT31 0x33f" +.LASF3158: + .string "ECLIC_GROUP_LEVEL0_PRIO4 0" +.LASF2680: + .string "TIMER_CHCTL0_CH1COMSEN BIT(11)" +.LASF841: + .string "CAN_F25DATA0(canx) REG32((canx) + 0x308U)" +.LASF3932: + .string "CSR_HPMCOUNTER25H 0xc99" +.LASF1710: + .string "GPIO_BC_CR1 BIT(1)" +.LASF2079: + .string "RCU_BDCTL REG32(RCU + 0x20U)" +.LASF990: + .string "CAN_FMCFG_FMOD(regval) BIT(regval)" +.LASF2073: + .string "RCU_INT REG32(RCU + 0x08U)" +.LASF3628: + .string "MATCH_FSD 0x3027" +.LASF2578: + .string "I2S_FLAG_CH SPI_STAT_I2SCH" +.LASF2191: + .string "RCU_APB1EN_SPI2EN BIT(15)" +.LASF3774: + .string "MATCH_CUSTOM3_RD_RS1 0x607b" +.LASF921: + .string "CAN_TSTAT_TMLS1 BIT(30)" +.LASF479: + .string "WINT_MAX (__WINT_MAX__)" +.LASF856: + .string "CAN_F12DATA1(canx) REG32((canx) + 0x2A4U)" +.LASF3391: + .string "MASK_SLLW 0xfe00707f" +.LASF3897: + .string "CSR_MHPMEVENT26 0x33a" +.LASF1016: + .string "TMI_SFID(regval) (BITS(21,31) & ((uint32_t)(regval) << 21))" +.LASF862: + .string "CAN_F18DATA1(canx) REG32((canx) + 0x2D4U)" +.LASF1558: + .string "OB_WP_2 ((uint32_t)0x00000004U)" +.LASF3062: + .string "WWDGT_STAT_EWIF BIT(0)" +.LASF1776: + .string "AFIO_PCF1_EXMC_NADV BIT(10)" +.LASF2215: + .string "RCU_RSTSCK_FWDGTRSTF BIT(29)" +.LASF1471: + .string "EXTI_PD_PD12 BIT(12)" +.LASF1023: + .string "TMDATA1_DB6(regval) (BITS(16,23) & ((uint32_t)(regval) << 16))" +.LASF1795: + .string "GPIO_PORT_SOURCE_GPIOA ((uint8_t)0x00U)" +.LASF200: + .string "__FLT16_MIN__ 6.10351562500000000000000000000000000e-5F16" +.LASF3264: + .string "SIP_SSIP MIP_SSIP" +.LASF2727: + .string "TIMER_CCHP_BRKEN BIT(12)" +.LASF2122: + .string "RCU_INT_HXTALSTBIE BIT(11)" +.LASF3566: + .string "MATCH_FLE_S 0xa0000053" +.LASF3569: + .string "MASK_FLT_S 0xfe00707f" +.LASF564: + .string "ADC_CTL0_DISRC BIT(11)" +.LASF3328: + .string "MATCH_BLTU 0x6063" +.LASF295: + .string "__GCC_ATOMIC_LLONG_LOCK_FREE 1" +.LASF2330: + .string "RCU_RTCSRC_LXTAL BDCTL_RTCSRC(1)" +.LASF3722: + .string "MATCH_C_ADD 0x9002" +.LASF1235: + .string "DMA_CH0MADDR(dmax) REG32((dmax) + 0x14U)" +.LASF815: + .string "CAN_FW(canx) REG32((canx) + 0x21CU)" +.LASF1746: + .string "AFIO_PCF0_I2C0_REMAP BIT(1)" +.LASF2599: + .string "TIMER_CHCTL2(timerx) REG32((timerx) + 0x20U)" +.LASF2930: + .string "TIMER_CHVSEL_ENABLE ((uint16_t)TIMER_CFG_OUTSEL)" +.LASF3565: + .string "MASK_FSQRT_D 0xfff0007f" +.LASF2324: + .string "RCU_CKOUT0SRC_CKPLL1 CFG0_CKOUT0SEL(8)" +.LASF2561: + .string "SPI_I2S_INT_ERR ((uint8_t)0x02U)" +.LASF807: + .string "CAN_RFIFOMI1(canx) REG32((canx) + 0x1C0U)" +.LASF1464: + .string "EXTI_PD_PD5 BIT(5)" +.LASF1414: + .string "EXTI_RTEN_RTEN12 BIT(12)" +.LASF831: + .string "CAN_F15DATA0(canx) REG32((canx) + 0x2B8U)" +.LASF3791: + .string "CSR_HPMCOUNTER10 0xc0a" +.LASF1674: + .string "GPIO_OCTL_OCTL13 BIT(13)" +.LASF3495: + .string "MASK_EBREAK 0xffffffff" +.LASF1933: + .string "I2C_STAT1_DUMODF BIT(7)" +.LASF531: + .string "ADC_STAT(adcx) REG32((adcx) + 0x00U)" +.LASF721: + .string "BKP_DATA8 REG16((BKP) + 0x24U)" +.LASF3026: + .string "USART_LBLEN_10B CTL1_LBLEN(0)" +.LASF1663: + .string "GPIO_OCTL_OCTL2 BIT(2)" +.LASF57: + .string "__INT_FAST8_TYPE__ int" +.LASF1587: + .string "OB_WP_31 ((uint32_t)0x80000000U)" +.LASF1167: + .string "DACC_L12DH_DAC0_DH BITS(4,15)" +.LASF3255: + .string "MIE_SSIE MIP_SSIP" +.LASF3616: + .string "MATCH_FCVT_D_L 0xd2200053" +.LASF3868: + .string "CSR_MHPMCOUNTER28 0xb1c" +.LASF3442: + .string "MATCH_DIVUW 0x200503b" +.LASF3968: + .string "CSR_MHPMCOUNTER30H 0xb9e" +.LASF956: + .string "CAN_BT_SCMOD BIT(31)" +.LASF3848: + .string "CSR_MHPMCOUNTER8 0xb08" +.LASF2685: + .string "TIMER_CHCTL0_CH1CAPPSC BITS(10,11)" +.LASF3429: + .string "MASK_MULHU 0xfe00707f" +.LASF2016: + .string "DBG_ID_ID_CODE BITS(0,31)" +.LASF650: + .string "WDLT_WDLT(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF3812: + .string "CSR_HPMCOUNTER31 0xc1f" +.LASF3447: + .string "MASK_REMUW 0xfe00707f" +.LASF1141: + .string "DAC0_DO REG32(DAC + 0x2CU)" +.LASF2421: + .string "RTC_PSCH_PSC BITS(0,3)" +.LASF1172: + .string "DAC1_DO_DAC1_DO BITS(0,11)" +.LASF1411: + .string "EXTI_RTEN_RTEN9 BIT(9)" +.LASF720: + .string "BKP_DATA7 REG16((BKP) + 0x20U)" +.LASF2251: + .string "RCU_AHB_CKSYS_DIV1 CFG0_AHBPSC(0)" +.LASF2055: + .string "PMU_LVDT_3 CTL_LVDT(3)" +.LASF1538: + .string "OB_FWDGT_SW ((uint8_t)0x01U)" +.LASF3951: + .string "CSR_MHPMCOUNTER13H 0xb8d" +.LASF3167: + .string "ECLIC_PRIGROUP_LEVEL4_PRIO0 4" +.LASF3880: + .string "CSR_MHPMEVENT9 0x329" +.LASF2635: + .string "TIMER_SMCFG_ETPSC BITS(12,13)" +.LASF453: + .string "UINT64_MAX (__UINT64_MAX__)" +.LASF1912: + .string "I2C_DATA_TRB BITS(0,7)" +.LASF1981: + .string "I2C_DTCY_2 ((uint32_t)0x00000000U)" +.LASF1572: + .string "OB_WP_16 ((uint32_t)0x00010000U)" +.LASF1731: + .string "GPIO_LOCK_LK6 BIT(6)" +.LASF736: + .string "BKP_DATA23 REG16((BKP) + 0x74U)" +.LASF3614: + .string "MATCH_FCVT_D_WU 0xd2100053" +.LASF3179: + .string "MSTATUS_MPP 0x00001800" +.LASF3709: + .string "MASK_C_BEQZ 0xe003" +.LASF3522: + .string "MATCH_FADD_S 0x53" +.LASF3920: + .string "CSR_HPMCOUNTER13H 0xc8d" +.LASF3140: + .string "ECLIC_INFO_OFFSET 0x4" +.LASF884: + .string "CAN_CTL_TFO BIT(2)" +.LASF3450: + .string "MATCH_AMOXOR_W 0x2000202f" +.LASF2256: + .string "RCU_AHB_CKSYS_DIV64 CFG0_AHBPSC(12)" +.LASF2725: + .string "TIMER_CCHP_IOS BIT(10)" +.LASF3134: + .string "_AC(X,Y) (X ##Y)" +.LASF1767: + .string "AFIO_EXTI7_SS BITS(12, 15)" +.LASF2518: + .string "SPI_PSC_2 CTL0_PSC(0)" +.LASF896: + .string "CAN_STAT_SLPIF BIT(4)" +.LASF3344: + .string "MATCH_SLTI 0x2013" +.LASF59: + .string "__INT_FAST32_TYPE__ int" +.LASF2941: + .string "USART_CTL0(usartx) REG32((usartx) + (0x0000000CU))" +.LASF710: + .string "ADC_OVERSAMPLING_RATIO_MUL256 OVSCR_OVSR(7)" +.LASF753: + .string "BKP_DATA40 REG16((BKP) + 0xB8U)" +.LASF1444: + .string "EXTI_SWIEV_SWIEV4 BIT(4)" +.LASF2824: + .string "TIMER_PSC_RELOAD_UPDATE ((uint32_t)0x00000000U)" +.LASF3547: + .string "MASK_FMUL_D 0xfe00007f" +.LASF2137: + .string "RCU_APB2RST_PCRST BIT(4)" +.LASF715: + .string "BKP_DATA2 REG16((BKP) + 0x0CU)" +.LASF1224: + .string "DAC_TRIANGLE_AMPLITUDE_1023 DAC_WAVE_BIT_WIDTH_10" +.LASF16: + .string "__SIZEOF_INT__ 4" +.LASF1602: + .string "GPIO_OCTL(gpiox) REG32((gpiox) + 0x0CU)" +.LASF1049: + .string "CAN_STATE_PENDING ((uint32_t)0x00000000U)" +.LASF384: + .string "unsigned +0" +.LASF28: + .string "__ORDER_PDP_ENDIAN__ 3412" +.LASF151: + .string "__FLT_DECIMAL_DIG__ 9" +.LASF1256: + .string "DMA_CH6CTL(dmax) REG32((dmax) + 0x80U)" +.LASF1696: + .string "GPIO_BOP_CR3 BIT(19)" +.LASF2479: + .string "SPI_STAT_CRCERR BIT(4)" +.LASF99: + .string "__INT64_MAX__ 0x7fffffffffffffffLL" +.LASF2120: + .string "RCU_INT_LXTALSTBIE BIT(9)" +.LASF2393: + .string "RCU_I2S2SRC_CKSYS ((uint32_t)0x00000000U)" +.LASF2999: + .string "USART_BIT_POS2(val) (((uint32_t)(val) & (0x001F0000U)) >> 16)" +.LASF3567: + .string "MASK_FLE_S 0xfe00707f" +.LASF879: + .string "CAN_RFIFOMP(canx,bank) REG32((canx) + 0x1B4U + ((bank) * 0x10U))" +.LASF3552: + .string "MATCH_FSGNJN_D 0x22001053" +.LASF675: + .string "ADC_CHANNEL_14 ((uint8_t)0x0EU)" +.LASF3624: + .string "MATCH_FLD 0x3007" +.LASF2167: + .string "RCU_AHBEN_SRAMSPEN BIT(2)" +.LASF594: + .string "ADC_OVSCR_OVSEN BIT(0)" +.LASF3545: + .string "MASK_FSUB_D 0xfe00007f" +.LASF2827: + .string "CTL0_CKDIV(regval) ((uint16_t)(BITS(8, 9) & ((uint32_t)(regval) << 8U)))" +.LASF2594: + .string "TIMER_DMAINTEN(timerx) REG32((timerx) + 0x0CU)" +.LASF3625: + .string "MASK_FLD 0x707f" +.LASF417: + .string "__int64_t_defined 1" +.LASF724: + .string "BKP_DATA11 REG16((BKP) + 0x44U)" +.LASF2097: + .string "RCU_CTL_PLL2STB BIT(29)" +.LASF4023: + .string "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Source\\gd32vf103_eclic.c" +.LASF2879: + .string "TIMER_OC_CLEAR_DISABLE ((uint16_t)0x0000U)" +.LASF3771: + .string "MASK_CUSTOM3_RS1_RS2 0x707f" +.LASF3665: + .string "MASK_C_SDSP 0xe003" +.LASF379: + .string "short" +.LASF1350: + .string "EXMC_MEMORY_TYPE_SRAM SNCTL_NRTP(0)" +.LASF1458: + .string "EXTI_SWIEV_SWIEV18 BIT(18)" +.LASF1517: + .string "FMC_OBSTAT_DATA BITS(10,25)" +.LASF1547: + .string "FMC_USPC ((uint8_t)0xBBU)" +.LASF2922: + .string "TIMER_EXT_TRI_PSC_OFF SMCFG_ETPSC(0)" +.LASF2358: + .string "RCU_PREDV1_DIV8 CFG1_PREDV1(7)" +.LASF992: + .string "CAN_FAFIFOR_FAF(regval) BIT(regval)" +.LASF3065: + .string "WWDGT_CFG_PSC_DIV2 CFG_PSC(1)" +.LASF3804: + .string "CSR_HPMCOUNTER23 0xc17" +.LASF4022: + .string "GNU C17 10.2.0 -march=rv32imac -mabi=ilp32 -mcmodel=medany -msmall-data-limit= 8 -march=rv32imac -g3 -O0" +.LASF1187: + .string "DAC_WAVE_BIT_WIDTH_1 DWBW(0)" +.LASF1511: + .string "FMC_CTL_ERRIE BIT(10)" +.LASF3983: + .string "CSR_MSUBM 0x7c4" +.LASF749: + .string "BKP_DATA36 REG16((BKP) + 0xA8U)" +.LASF871: + .string "CAN_F27DATA1(canx) REG32((canx) + 0x31CU)" +.LASF735: + .string "BKP_DATA22 REG16((BKP) + 0x70U)" +.LASF1013: + .string "FDATA_MASK_LOW(regval) (BITS(0,15) & ((uint32_t)(regval) << 0))" +.LASF193: + .string "__FLT16_MIN_EXP__ (-13)" +.LASF1817: + .string "GPIO_PIN_SOURCE_1 ((uint8_t)0x01U)" +.LASF2698: + .string "TIMER_CHCTL1_CH2CAPFLT BITS(4,7)" +.LASF1660: + .string "GPIO_ISTAT_ISTAT15 BIT(15)" +.LASF3583: + .string "MASK_FCVT_L_S 0xfff0007f" +.LASF2460: + .string "SPI_CTL0_SWNSSEN BIT(9)" +.LASF2540: + .string "I2S_MCKOUT_DISABLE ((uint32_t)0x00000000U)" +.LASF592: + .string "ADC_RDATA_RDATA BITS(0,15)" +.LASF939: + .string "CAN_INTEN_PERRIE BIT(9)" +.LASF1769: + .string "AFIO_EXTI9_SS BITS(4, 7)" +.LASF2114: + .string "RCU_INT_HXTALSTBIF BIT(3)" +.LASF359: + .string "__SVID_VISIBLE 0" +.LASF2098: + .string "RCU_CFG0_SCS BITS(0,1)" +.LASF2667: + .string "TIMER_SWEVG_CH1G BIT(2)" +.LASF1443: + .string "EXTI_SWIEV_SWIEV3 BIT(3)" +.LASF1657: + .string "GPIO_ISTAT_ISTAT12 BIT(12)" +.LASF748: + .string "BKP_DATA35 REG16((BKP) + 0xA4U)" +.LASF3937: + .string "CSR_HPMCOUNTER30H 0xc9e" +.LASF1247: + .string "DMA_CH3MADDR(dmax) REG32((dmax) + 0x50U)" +.LASF1099: + .string "CAN_FILTERMODE_LIST ((uint8_t)0x01U)" +.LASF3482: + .string "MATCH_AMOMINU_D 0xc000302f" +.LASF2234: + .string "APB1RST_REG_OFFSET 0x10U" +.LASF53: + .string "__UINT_LEAST8_TYPE__ unsigned char" +.LASF3535: + .string "MASK_FSGNJX_S 0xfe00707f" +.LASF3700: + .string "MATCH_C_AND 0x8c61" +.LASF1881: + .string "I2C_STAT0(i2cx) REG32((i2cx) + 0x14U)" +.LASF2693: + .string "TIMER_CHCTL1_CH3COMFEN BIT(10)" +.LASF2257: + .string "RCU_AHB_CKSYS_DIV128 CFG0_AHBPSC(13)" +.LASF823: + .string "CAN_F7DATA0(canx) REG32((canx) + 0x278U)" +.LASF2221: + .string "RCU_CFG1_PLL1MF BITS(8,11)" +.LASF27: + .string "__ORDER_BIG_ENDIAN__ 4321" +.LASF723: + .string "BKP_DATA10 REG16((BKP) + 0x40U)" +.LASF940: + .string "CAN_INTEN_BOIE BIT(10)" +.LASF3215: + .string "DCSR_CAUSE_DEBUGINT 3" +.LASF1815: + .string "GPIO_EVENT_PIN_15 ((uint8_t)0x0FU)" +.LASF3542: + .string "MATCH_FADD_D 0x2000053" +.LASF0: + .string "__STDC__ 1" +.LASF4025: + .string "eclic_system_reset" +.LASF3248: + .string "MIP_MSIP (1 << IRQ_M_SOFT)" +.LASF3775: + .string "MASK_CUSTOM3_RD_RS1 0x707f" +.LASF1227: + .string "GD32VF103_DMA_H " +.LASF3310: + .string "write_fpu(reg,val) ({ if (__builtin_constant_p(val) && (unsigned long)(val) < 32) asm volatile (\"fmv.w.x \" #reg \", %0\" :: \"i\"(val)); else asm volatile (\"fmv.w.x \" #reg \", %0\" :: \"r\"(val)); })" +.LASF3680: + .string "MATCH_C_ADDI 0x1" +.LASF221: + .string "__FLT64_MANT_DIG__ 53" +.LASF3056: + .string "WWDGT_STAT REG32((WWDGT) + 0x00000008U)" +.LASF1158: + .string "DAC_SWT_SWTR1 BIT(1)" +.LASF2008: + .string "FWDGT_PSC_TIMEOUT ((uint32_t)0x000FFFFFU)" +.LASF2596: + .string "TIMER_SWEVG(timerx) REG32((timerx) + 0x14U)" +.LASF3818: + .string "CSR_SCAUSE 0x142" +.LASF1088: + .string "CAN_FIFO0 ((uint8_t)0x00U)" +.LASF3348: + .string "MATCH_XORI 0x4013" +.LASF2004: + .string "FWDGT_WRITEACCESS_ENABLE ((uint16_t)0x5555U)" +.LASF2694: + .string "TIMER_CHCTL1_CH3COMSEN BIT(11)" +.LASF3401: + .string "MASK_LW 0x707f" +.LASF94: + .string "__SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)" +.LASF1943: + .string "I2C_REGIDX_BIT2(regidx,bitpos,regidx2,bitpos2) (((uint32_t)(regidx2) << 22) | (uint32_t)((bitpos2) << 16) | (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos)))" +.LASF3170: + .string "MSTATUS_UIE 0x00000001" +.LASF754: + .string "BKP_DATA41 REG16((BKP) + 0xBCU)" +.LASF2364: + .string "RCU_PREDV1_DIV14 CFG1_PREDV1(13)" +.LASF2070: + .string "RCU RCU_BASE" +.LASF2744: + .string "TIMER_INT_FLAG_CH1 TIMER_INT_CH1" +.LASF3825: + .string "CSR_MIDELEG 0x303" +.LASF252: + .string "__FLT32X_DIG__ 15" +.LASF2629: + .string "TIMER_CTL1_ISO2N BIT(13)" +.LASF2818: + .string "CTL0_CAM(regval) ((uint16_t)(BITS(5, 6) & ((uint32_t)(regval) << 5U)))" +.LASF2037: + .string "PMU PMU_BASE" +.LASF3739: + .string "MASK_CUSTOM0_RD_RS1 0x707f" +.LASF3944: + .string "CSR_MHPMCOUNTER6H 0xb86" +.LASF747: + .string "BKP_DATA34 REG16((BKP) + 0xA0U)" +.LASF2610: + .string "TIMER_DMATB(timerx) REG32((timerx) + 0x4CU)" +.LASF2541: + .string "I2S_MCKOUT_ENABLE SPI_I2SPSC_MCKOEN" +.LASF3475: + .string "MASK_AMOOR_D 0xf800707f" +.LASF619: + .string "ADC_DATAALIGN_LEFT ADC_CTL1_DAL" +.LASF369: + .string "___int_least8_t_defined 1" +.LASF2272: + .string "RCU_CKADC_CKAPB2_DIV2 ((uint32_t)0x00000000U)" +.LASF3230: + .string "MCONTROL_EXECUTE (1<<2)" +.LASF2174: + .string "RCU_APB2EN_PBEN BIT(3)" +.LASF802: + .string "CAN_TMDATA12(canx) REG32((canx) + 0x1ACU)" +.LASF670: + .string "ADC_CHANNEL_9 ((uint8_t)0x09U)" +.LASF1896: + .string "I2C_CTL0_POAP BIT(11)" +.LASF2555: + .string "SPI_DMA_TRANSMIT ((uint8_t)0x00U)" +.LASF174: + .string "__DBL_HAS_QUIET_NAN__ 1" +.LASF1738: + .string "GPIO_LOCK_LK13 BIT(13)" +.LASF397: + .string "__FAST8 " +.LASF2047: + .string "PMU_CS_WUF BIT(0)" +.LASF648: + .string "IOFFX_IOFF(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF1790: + .string "GPIO_EVENT_PORT_GPIOA ((uint8_t)0x00U)" +.LASF572: + .string "ADC_CTL1_CLB BIT(2)" +.LASF1702: + .string "GPIO_BOP_CR9 BIT(25)" +.LASF630: + .string "CTL1_ETSIC(regval) (BITS(12,14) & ((uint32_t)(regval) << 12))" +.LASF3484: + .string "MATCH_AMOMAXU_D 0xe000302f" +.LASF3512: + .string "MATCH_CSRRS 0x2073" +.LASF3683: + .string "MASK_C_JAL 0xe003" +.LASF2307: + .string "RCU_PLL_MUL27 (PLLMF_4 | CFG0_PLLMF(10))" +.LASF3213: + .string "DCSR_CAUSE_SWBP 1" +.LASF530: + .string "ADC1 (ADC_BASE + 0x400U)" +.LASF3574: + .string "MATCH_FLT_D 0xa2001053" +.LASF760: + .string "BKP_OCTL_COEN BIT(7)" +.LASF2481: + .string "SPI_STAT_RXORERR BIT(6)" +.LASF3308: + .string "RISCV_PGSIZE (1 << RISCV_PGSHIFT)" +.LASF1164: + .string "DAC1_R8DH_DAC1_DH BITS(0,7)" +.LASF2398: + .string "RCU_DEEPSLEEP_V_1_0 DSV_DSLPVS(2)" +.LASF2395: + .string "DSV_DSLPVS(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF2907: + .string "TIMER_TRI_OUT_SRC_O1CPRE CTL1_MMC(5)" +.LASF2752: + .string "TIMER_FLAG_CH1 TIMER_INTF_CH1IF" +.LASF3758: + .string "MATCH_CUSTOM2_RS1_RS2 0x305b" +.LASF1114: + .string "CAN_INT_ERRN CAN_INTEN_ERRNIE" +.LASF1065: + .string "CAN_BT_BS1_8TQ ((uint8_t)0x07U)" +.LASF310: + .string "__riscv_float_abi_soft 1" +.LASF2375: + .string "RCU_PLL1_MUL15 CFG1_PLL1MF(13)" +.LASF1233: + .string "DMA_CH0CNT(dmax) REG32((dmax) + 0x0CU)" +.LASF2946: + .string "USART_STAT_FERR BIT(1)" +.LASF3224: + .string "MCONTROL_CHAIN (1<<11)" +.LASF2908: + .string "TIMER_TRI_OUT_SRC_O2CPRE CTL1_MMC(6)" +.LASF1586: + .string "OB_WP_30 ((uint32_t)0x40000000U)" +.LASF2322: + .string "RCU_CKOUT0SRC_HXTAL CFG0_CKOUT0SEL(6)" +.LASF3581: + .string "MASK_FCVT_WU_S 0xfff0007f" +.LASF2023: + .string "DBG_CTL_TIMER1_HOLD BIT(11)" +.LASF239: + .string "__FLT128_MIN_10_EXP__ (-4931)" +.LASF1363: + .string "EXTI_PD REG32(EXTI + 0x14U)" +.LASF1752: + .string "AFIO_PCF0_TIMER2_REMAP BITS(10, 11)" +.LASF1954: + .string "I2C_TRANSMITTER ((uint32_t)0xFFFFFFFEU)" +.LASF3881: + .string "CSR_MHPMEVENT10 0x32a" +.LASF709: + .string "ADC_OVERSAMPLING_RATIO_MUL128 OVSCR_OVSR(6)" +.LASF1771: + .string "AFIO_EXTI11_SS BITS(12, 15)" +.LASF520: + .string "ADC_BASE (APB2_BUS_BASE + 0x00002400U)" +.LASF3826: + .string "CSR_MIE 0x304" +.LASF2428: + .string "RTC_ALRML_ALRM BITS(0,15)" +.LASF546: + .string "ADC_IDATA0(adcx) REG32((adcx) + 0x3CU)" +.LASF3945: + .string "CSR_MHPMCOUNTER7H 0xb87" +.LASF2451: + .string "SPI_I2SCTL(spix) REG32((spix) + 0x1CU)" +.LASF1764: + .string "AFIO_EXTI4_SS BITS(0, 3)" +.LASF3339: + .string "MASK_AUIPC 0x7f" +.LASF3527: + .string "MASK_FMUL_S 0xfe00007f" +.LASF3599: + .string "MASK_FMV_X_D 0xfff0707f" +.LASF1786: + .string "GPIO_MODE_AF_PP ((uint8_t)0x18U)" +.LASF2262: + .string "RCU_APB1_CKAHB_DIV2 CFG0_APB1PSC(4)" +.LASF3244: + .string "MCONTROL_MATCH_MASK_LOW 4" +.LASF906: + .string "CAN_TSTAT_MTF1 BIT(8)" +.LASF1779: + .string "GPIO_MODE_AIN ((uint8_t)0x00U)" +.LASF518: + .string "EXTI_BASE (APB2_BUS_BASE + 0x00000400U)" +.LASF2536: + .string "I2S_FRAMEFORMAT_DT16B_CH16B I2SCTL_DTLEN(0)" +.LASF3985: + .string "CAUSE_FAULT_FETCH 0x1" +.LASF1499: + .string "FMC_STAT_BUSY BIT(0)" +.LASF2411: + .string "RTC_ALRML REG32(RTC + 0x24U)" +.LASF3311: + .string "read_csr(reg) ({ unsigned long __tmp; asm volatile (\"csrr %0, \" #reg : \"=r\"(__tmp)); __tmp; })" +.LASF428: + .string "__int_fast32_t_defined 1" +.LASF1370: + .string "EXTI_INTEN_INTEN6 BIT(6)" +.LASF595: + .string "ADC_OVSCR_OVSR BITS(2,4)" +.LASF1616: + .string "GPIO_CTL0_CTL1 BITS(6, 7)" +.LASF2112: + .string "RCU_INT_LXTALSTBIF BIT(1)" +.LASF3725: + .string "MASK_C_FSDSP 0xe003" +.LASF3999: + .string "signed char" +.LASF163: + .string "__DBL_MIN_10_EXP__ (-307)" +.LASF2715: + .string "TIMER_CNT_CNT BITS(0,15)" +.LASF611: + .string "ADC_DAUL_INSERTED_PARALLEL_REGULAL_FOLLOWUP_FAST CTL0_SYNCM(3)" +.LASF3178: + .string "MSTATUS_SPP 0x00000100" +.LASF236: + .string "__FLT128_MANT_DIG__ 113" +.LASF1841: + .string "GPIO_PIN_9 BIT(9)" +.LASF134: + .string "__UINT_FAST32_MAX__ 0xffffffffU" +.LASF2148: + .string "RCU_APB1RST_TIMER4RST BIT(3)" +.LASF628: + .string "ADC0_1_EXTTRIG_REGULAR_EXTI_11 CTL1_ETSRC(6)" +.LASF2083: + .string "RCU_DSV REG32(RCU + 0x34U)" +.LASF1001: + .string "CAN_BIT_POS1(val) ((uint32_t)(val) & 0x1FU)" +.LASF3633: + .string "MASK_FMSUB_S 0x600007f" +.LASF43: + .string "__INT32_TYPE__ long int" +.LASF2655: + .string "TIMER_INTF_CH1IF BIT(2)" +.LASF393: + .string "__INT8 \"hh\"" +.LASF2282: + .string "RCU_PLL_MUL2 CFG0_PLLMF(0)" +.LASF1755: + .string "AFIO_PCF0_PD01_REMAP BIT(15)" +.LASF1480: + .string "OB OB_BASE" +.LASF4009: + .string "uint8_t" +.LASF3206: + .string "DCSR_STOPTIME (1<<9)" +.LASF3349: + .string "MASK_XORI 0x707f" +.LASF3478: + .string "MATCH_AMOMIN_D 0x8000302f" +.LASF244: + .string "__FLT128_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F128" +.LASF3904: + .string "CSR_MARCHID 0xf12" +.LASF3028: + .string "CTL1_CLEN(regval) (BIT(8) & ((uint32_t)(regval) << 8))" +.LASF853: + .string "CAN_F9DATA1(canx) REG32((canx) + 0x28CU)" +.LASF1143: + .string "DAC_CTL_DEN0 BIT(0)" +.LASF3967: + .string "CSR_MHPMCOUNTER29H 0xb9d" +.LASF2533: + .string "I2S_AUDIOSAMPLE_96K ((uint32_t)96000U)" +.LASF434: + .string "INT8_MAX (__INT8_MAX__)" +.LASF3421: + .string "MASK_FENCE_I 0x707f" +.LASF1476: + .string "EXTI_PD_PD17 BIT(17)" +.LASF541: + .string "ADC_WDLT(adcx) REG32((adcx) + 0x28U)" +.LASF1066: + .string "CAN_BT_BS1_9TQ ((uint8_t)0x08U)" +.LASF1708: + .string "GPIO_BOP_CR15 BIT(31)" +.LASF121: + .string "__UINT32_C(c) c ## UL" +.LASF1606: + .string "AFIO_EC REG32(AFIO + 0x00U)" +.LASF2567: + .string "I2S_INT_FLAG_TXURERR ((uint8_t)0x05U)" +.LASF3314: + .string "set_csr(reg,bit) ({ unsigned long __tmp; if (__builtin_constant_p(bit) && (unsigned long)(bit) < 32) asm volatile (\"csrrs %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"i\"(bit)); else asm volatile (\"csrrs %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"r\"(bit)); __tmp; })" +.LASF1742: + .string "AFIO_EC_PIN BITS(0, 3)" +.LASF77: + .string "__PTRDIFF_MAX__ 0x7fffffff" +.LASF2793: + .string "TIMER_DMACFG_DMATC_2TRANSFER DMACFG_DMATC(1)" +.LASF1681: + .string "GPIO_BOP_BOP4 BIT(4)" +.LASF3591: + .string "MASK_FCVT_W_D 0xfff0007f" +.LASF2045: + .string "PMU_CTL_LVDT BITS(5,7)" +.LASF3294: + .string "PTE_R 0x002" +.LASF3379: + .string "MASK_ADDIW 0x707f" +.LASF3453: + .string "MASK_AMOOR_W 0xf800707f" +.LASF2921: + .string "SMCFG_ETPSC(regval) (BITS(12, 13) & ((uint32_t)(regval) << 12U))" +.LASF1648: + .string "GPIO_ISTAT_ISTAT3 BIT(3)" +.LASF1419: + .string "EXTI_RTEN_RTEN17 BIT(17)" +.LASF2476: + .string "SPI_STAT_TBE BIT(1)" +.LASF3799: + .string "CSR_HPMCOUNTER18 0xc12" +.LASF1431: + .string "EXTI_FTEN_FTEN10 BIT(10)" +.LASF389: + .string "int +2" +.LASF13: + .string "__ATOMIC_ACQ_REL 4" +.LASF2382: + .string "RCU_PLL2_MUL11 CFG1_PLL2MF(9)" +.LASF3287: + .string "DEFAULT_RSTVEC 0x00001000" +.LASF3940: + .string "CSR_MINSTRETH 0xb82" +.LASF2278: + .string "RCU_PLLSRC_IRC8M_DIV2 ((uint32_t)0x00000000U)" +.LASF2500: + .string "SPI_SLAVE ((uint32_t)0x00000000U)" +.LASF3182: + .string "MSTATUS_MPRV 0x00020000" +.LASF3243: + .string "MCONTROL_MATCH_LT 3" +.LASF2597: + .string "TIMER_CHCTL0(timerx) REG32((timerx) + 0x18U)" +.LASF2405: + .string "RTC_PSCL REG32(RTC + 0x0CU)" +.LASF220: + .string "__FLT32_HAS_QUIET_NAN__ 1" +.LASF1084: + .string "CAN_MAILBOX2 ((uint8_t)0x02U)" +.LASF3740: + .string "MATCH_CUSTOM0_RD_RS1_RS2 0x700b" +.LASF8: + .string "__VERSION__ \"10.2.0\"" +.LASF48: + .string "__UINT64_TYPE__ long long unsigned int" +.LASF1062: + .string "CAN_BT_BS1_5TQ ((uint8_t)0x04U)" +.LASF875: + .string "CAN_TMDATA1(canx,bank) REG32((canx) + 0x18CU + ((bank) * 0x10U))" +.LASF461: + .string "INT_FAST16_MAX (__INT_FAST16_MAX__)" +.LASF997: + .string "CAN_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF2663: + .string "TIMER_INTF_CH2OF BIT(11)" +.LASF1530: + .string "FMC_CTL_REG_OFFSET 0x10U" +.LASF2822: + .string "TIMER_COUNTER_CENTER_BOTH CTL0_CAM(3)" +.LASF1772: + .string "AFIO_EXTI12_SS BITS(0, 3)" +.LASF1162: + .string "DAC1_R12DH_DAC1_DH BITS(0,11)" +.LASF1489: + .string "FMC_PID REG32((FMC) + 0x100U)" +.LASF3608: + .string "MATCH_FCVT_S_LU 0xd0300053" +.LASF3161: + .string "ECLIC_GROUP_LEVEL3_PRIO1 3" +.LASF1429: + .string "EXTI_FTEN_FTEN8 BIT(8)" +.LASF3298: + .string "PTE_G 0x020" +.LASF515: + .string "PMU_BASE (APB1_BUS_BASE + 0x00007000U)" +.LASF1369: + .string "EXTI_INTEN_INTEN5 BIT(5)" +.LASF1834: + .string "GPIO_PIN_2 BIT(2)" +.LASF2391: + .string "RCU_I2S1SRC_CKSYS ((uint32_t)0x00000000U)" +.LASF983: + .string "CAN_RFIFOMDATA0_DB3 BITS(24,31)" +.LASF2285: + .string "RCU_PLL_MUL5 CFG0_PLLMF(3)" +.LASF454: + .string "INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1)" +.LASF286: + .string "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1" +.LASF1806: + .string "GPIO_EVENT_PIN_6 ((uint8_t)0x06U)" +.LASF756: + .string "BKP_TPCTL REG16((BKP) + 0x30U)" +.LASF2001: + .string "FWDGT_PSC_DIV64 ((uint8_t)PSC_PSC(4))" +.LASF3041: + .string "USART_DENT_ENABLE CLT2_DENT(1)" +.LASF3808: + .string "CSR_HPMCOUNTER27 0xc1b" +.LASF443: + .string "INT_LEAST16_MAX (__INT_LEAST16_MAX__)" +.LASF2506: + .string "SPI_TRANSMODE_BDTRANSMIT (SPI_CTL0_BDEN | SPI_CTL0_BDOEN)" +.LASF309: + .string "__riscv_xlen 32" +.LASF2791: + .string "DMACFG_DMATC(regval) (BITS(8, 12) & ((uint32_t)(regval) << 8U))" +.LASF281: + .string "__REGISTER_PREFIX__ " +.LASF3612: + .string "MATCH_FCVT_D_W 0xd2000053" +.LASF1627: + .string "GPIO_CTL0_MD7 BITS(28, 29)" +.LASF20: + .string "__SIZEOF_FLOAT__ 4" +.LASF2943: + .string "USART_CTL2(usartx) REG32((usartx) + (0x00000014U))" +.LASF3517: + .string "MASK_CSRRWI 0x707f" +.LASF646: + .string "ADC_SAMPLETIME_71POINT5 SAMPTX_SPT(6)" +.LASF837: + .string "CAN_F21DATA0(canx) REG32((canx) + 0x2E8U)" +.LASF1422: + .string "EXTI_FTEN_FTEN1 BIT(1)" +.LASF2890: + .string "TIMER_IC_PSC_DIV4 ((uint16_t)0x0008U)" +.LASF986: + .string "CAN_RFIFOMDATA1_DB6 BITS(16,23)" +.LASF1269: + .string "DMA_CHXCTL_FTFIE BIT(1)" +.LASF1246: + .string "DMA_CH3PADDR(dmax) REG32((dmax) + 0x4CU)" +.LASF2925: + .string "TIMER_EXT_TRI_PSC_DIV8 SMCFG_ETPSC(3)" +.LASF1257: + .string "DMA_CH6CNT(dmax) REG32((dmax) + 0x84U)" +.LASF2953: + .string "USART_STAT_LBDF BIT(8)" +.LASF586: + .string "ADC_WDLT_WDLT BITS(0,11)" +.LASF855: + .string "CAN_F11DATA1(canx) REG32((canx) + 0x29CU)" +.LASF745: + .string "BKP_DATA32 REG16((BKP) + 0x98U)" +.LASF1824: + .string "GPIO_PIN_SOURCE_8 ((uint8_t)0x08U)" +.LASF3323: + .string "MASK_BNE 0x707f" +.LASF1055: + .string "CAN_BT_SJW_2TQ ((uint8_t)0x01U)" +.LASF377: + .string "unsigned" +.LASF477: + .string "WCHAR_MIN (__WCHAR_MIN__)" +.LASF1913: + .string "I2C_STAT0_SBSEND BIT(0)" +.LASF524: + .string "CRC_BASE (AHB1_BUS_BASE + 0x0000B000U)" +.LASF3789: + .string "CSR_HPMCOUNTER8 0xc08" +.LASF1155: + .string "DAC_CTL_DWBW1 BITS(24,27)" +.LASF2745: + .string "TIMER_INT_FLAG_CH2 TIMER_INT_CH2" +.LASF2602: + .string "TIMER_CAR(timerx) REG32((timerx) + 0x2CU)" +.LASF3033: + .string "USART_CPH_2CK CTL1_CPH(1)" +.LASF2345: + .string "RCU_PREDV0_DIV12 CFG1_PREDV0(11)" +.LASF1520: + .string "FMC_PID_PID BITS(0,31)" +.LASF3717: + .string "MASK_C_LWSP 0xe003" +.LASF140: + .string "__GCC_IEC_559_COMPLEX 0" +.LASF153: + .string "__FLT_NORM_MAX__ 3.40282346638528859811704183484516925e+38F" +.LASF219: + .string "__FLT32_HAS_INFINITY__ 1" +.LASF2288: + .string "RCU_PLL_MUL8 CFG0_PLLMF(6)" +.LASF1478: + .string "GD32VF103_FMC_H " +.LASF3382: + .string "MATCH_SRLIW 0x501b" +.LASF2682: + .string "TIMER_CHCTL0_CH1COMCEN BIT(15)" +.LASF3905: + .string "CSR_MIMPID 0xf13" +.LASF2932: + .string "GD32VF103_USART_H " +.LASF24: + .string "__CHAR_BIT__ 8" +.LASF2894: + .string "TIMER_SMCFG_TRGSEL_ITI1 SMCFG_TRGSEL(1)" +.LASF3231: + .string "MCONTROL_STORE (1<<1)" +.LASF3333: + .string "MASK_JALR 0x707f" +.LASF2880: + .string "TIMER_UPDATECTL_CCU ((uint32_t)0x00000000U)" +.LASF3597: + .string "MASK_FCVT_LU_D 0xfff0007f" +.LASF3036: + .string "USART_CPL_HIGH CTL1_CPL(1)" +.LASF717: + .string "BKP_DATA4 REG16((BKP) + 0x14U)" +.LASF203: + .string "__FLT16_HAS_DENORM__ 1" +.LASF1192: + .string "DAC_WAVE_BIT_WIDTH_6 DWBW(5)" +.LASF2419: + .string "RTC_CTL_CMF BIT(4)" +.LASF1171: + .string "DAC0_DO_DAC0_DO BITS(0,11)" +.LASF3525: + .string "MASK_FSUB_S 0xfe00007f" +.LASF3853: + .string "CSR_MHPMCOUNTER13 0xb0d" +.LASF480: + .string "WINT_MIN (__WINT_MIN__)" +.LASF733: + .string "BKP_DATA20 REG16((BKP) + 0x68U)" +.LASF2041: + .string "PMU_CTL_STBMOD BIT(1)" +.LASF1819: + .string "GPIO_PIN_SOURCE_3 ((uint8_t)0x03U)" +.LASF1924: + .string "I2C_STAT0_PECERR BIT(12)" +.LASF336: + .string "HXTAL_STARTUP_TIMEOUT ((uint16_t)0xFFFF)" +.LASF254: + .string "__FLT32X_MIN_10_EXP__ (-307)" +.LASF1022: + .string "TMDATA1_DB5(regval) (BITS(8,15) & ((uint32_t)(regval) << 8))" +.LASF1396: + .string "EXTI_EVEN_EVEN13 BIT(13)" +.LASF1425: + .string "EXTI_FTEN_FTEN4 BIT(4)" +.LASF638: + .string "ADC0_1_EXTTRIG_INSERTED_NONE CTL1_ETSIC(7)" +.LASF3469: + .string "MASK_SC_W 0xf800707f" +.LASF3995: + .string "CAUSE_MACHINE_ECALL 0xb" +.LASF543: + .string "ADC_RSQ1(adcx) REG32((adcx) + 0x30U)" +.LASF1787: + .string "GPIO_OSPEED_10MHZ ((uint8_t)0x01U)" +.LASF3648: + .string "MATCH_C_ADDI16SP 0x6101" +.LASF744: + .string "BKP_DATA31 REG16((BKP) + 0x94U)" +.LASF3688: + .string "MATCH_C_SRLI 0x8001" +.LASF3912: + .string "CSR_HPMCOUNTER5H 0xc85" +.LASF92: + .string "__INTMAX_WIDTH__ 64" +.LASF2484: + .string "SPI_DATA_DATA BITS(0,15)" +.LASF2165: + .string "RCU_AHBEN_DMA0EN BIT(0)" +.LASF287: + .string "__GCC_ATOMIC_BOOL_LOCK_FREE 1" +.LASF636: + .string "ADC0_1_EXTTRIG_INSERTED_T3_TRGO CTL1_ETSIC(5)" +.LASF3563: + .string "MASK_FCVT_D_S 0xfff0007f" +.LASF1882: + .string "I2C_STAT1(i2cx) REG32((i2cx) + 0x18U)" +.LASF339: + .string "IRC40K_VALUE ((uint32_t)40000)" +.LASF3327: + .string "MASK_BGE 0x707f" +.LASF2188: + .string "RCU_APB1EN_TIMER6EN BIT(5)" +.LASF3240: + .string "MCONTROL_MATCH_EQUAL 0" +.LASF671: + .string "ADC_CHANNEL_10 ((uint8_t)0x0AU)" +.LASF2488: + .string "SPI_I2SCTL_CHLEN BIT(0)" +.LASF2296: + .string "RCU_PLL_MUL16 CFG0_PLLMF(14)" +.LASF3106: + .string "_WCHAR_T_ " +.LASF2266: + .string "CFG0_APB2PSC(regval) (BITS(11,13) & ((uint32_t)(regval) << 11))" +.LASF1682: + .string "GPIO_BOP_BOP5 BIT(5)" +.LASF3996: + .string "REG_DBGMCU2 ((uint32_t)0xE0042008U)" +.LASF3076: + .string "_PTRDIFF_T_ " +.LASF2078: + .string "RCU_APB1EN REG32(RCU + 0x1CU)" +.LASF484: + .string "UINT16_C(x) __UINT16_C(x)" +.LASF1404: + .string "EXTI_RTEN_RTEN2 BIT(2)" +.LASF1629: + .string "GPIO_CTL1_MD8 BITS(0, 1)" +.LASF3577: + .string "MASK_FEQ_D 0xfe00707f" +.LASF3724: + .string "MATCH_C_FSDSP 0xa002" +.LASF651: + .string "RSQ0_RL(regval) (BITS(20,23) & ((uint32_t)(regval) << 20))" +.LASF3556: + .string "MATCH_FMIN_D 0x2a000053" +.LASF2641: + .string "TIMER_DMAINTEN_CH2IE BIT(3)" +.LASF3426: + .string "MATCH_MULHSU 0x2002033" +.LASF716: + .string "BKP_DATA3 REG16((BKP) + 0x10U)" +.LASF848: + .string "CAN_F4DATA1(canx) REG32((canx) + 0x264U)" +.LASF1122: + .string "CRC_CTL REG32(CRC + 0x08U)" +.LASF1877: + .string "I2C_CTL1(i2cx) REG32((i2cx) + 0x04U)" +.LASF1516: + .string "FMC_OBSTAT_USER BITS(2,9)" +.LASF3312: + .string "write_csr(reg,val) ({ if (__builtin_constant_p(val) && (unsigned long)(val) < 32) asm volatile (\"csrw \" #reg \", %0\" :: \"i\"(val)); else asm volatile (\"csrw \" #reg \", %0\" :: \"r\"(val)); })" +.LASF319: + .string "__ELF__ 1" +.LASF1775: + .string "AFIO_EXTI15_SS BITS(12, 15)" +.LASF238: + .string "__FLT128_MIN_EXP__ (-16381)" +.LASF130: + .string "__INT_FAST64_MAX__ 0x7fffffffffffffffLL" +.LASF2658: + .string "TIMER_INTF_CMTIF BIT(5)" +.LASF2453: + .string "SPI_CTL0_CKPH BIT(0)" +.LASF3685: + .string "MASK_C_LI 0xe003" +.LASF3992: + .string "CAUSE_USER_ECALL 0x8" +.LASF3627: + .string "MASK_FSW 0x707f" +.LASF2145: + .string "RCU_APB1RST_TIMER1RST BIT(0)" +.LASF2116: + .string "RCU_INT_PLL1STBIF BIT(5)" +.LASF2619: + .string "TIMER_CTL1_CCSE BIT(0)" +.LASF3411: + .string "MASK_SB 0x707f" +.LASF571: + .string "ADC_CTL1_CTN BIT(1)" +.LASF2856: + .string "TIMER_CCXN_ENABLE ((uint16_t)0x0004U)" +.LASF2707: + .string "TIMER_CHCTL2_CH1NEN BIT(6)" +.LASF2787: + .string "TIMER_DMACFG_DMATA_CH2CV DMACFG_DMATA(15)" +.LASF3515: + .string "MASK_CSRRC 0x707f" +.LASF743: + .string "BKP_DATA30 REG16((BKP) + 0x90U)" +.LASF817: + .string "CAN_F1DATA0(canx) REG32((canx) + 0x248U)" +.LASF3368: + .string "MATCH_XOR 0x4033" +.LASF3641: + .string "MASK_FMSUB_D 0x600007f" +.LASF2080: + .string "RCU_RSTSCK REG32(RCU + 0x24U)" +.LASF971: + .string "CAN_TMDATA1_DB6 BITS(16,23)" +.LASF1229: + .string "DMA1 (DMA_BASE + 0x0400U)" +.LASF3075: + .string "__PTRDIFF_T " +.LASF2447: + .string "SPI_DATA(spix) REG32((spix) + 0x0CU)" +.LASF2637: + .string "TIMER_SMCFG_ETP BIT(15)" +.LASF2945: + .string "USART_STAT_PERR BIT(0)" +.LASF1038: + .string "GET_ERR_TECNT(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF2046: + .string "PMU_CTL_BKPWEN BIT(8)" +.LASF2233: + .string "AHBRST_REG_OFFSET 0x28U" +.LASF433: + .string "INT8_MIN (-__INT8_MAX__ - 1)" +.LASF2622: + .string "TIMER_CTL1_MMC BITS(4,6)" +.LASF2436: + .string "RTC_FLAG_ALARM RTC_CTL_ALRMIF" +.LASF3173: + .string "MSTATUS_MIE 0x00000008" +.LASF1200: + .string "DAC_LFSR_BITS1_0 DAC_WAVE_BIT_WIDTH_2" +.LASF272: + .string "__FLT64X_DECIMAL_DIG__ 36" +.LASF654: + .string "ADC_INSERTED_CHANNEL ((uint8_t)0x02U)" +.LASF3649: + .string "MASK_C_ADDI16SP 0xef83" +.LASF1272: + .string "DMA_CHXCTL_DIR BIT(4)" +.LASF1450: + .string "EXTI_SWIEV_SWIEV10 BIT(10)" +.LASF867: + .string "CAN_F23DATA1(canx) REG32((canx) + 0x2FCU)" +.LASF587: + .string "ADC_RSQX_RSQN BITS(0,4)" +.LASF132: + .string "__UINT_FAST8_MAX__ 0xffffffffU" +.LASF2318: + .string "CFG0_CKOUT0SEL(regval) (BITS(24,27) & ((uint32_t)(regval) << 24))" +.LASF463: + .string "INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1)" +.LASF1974: + .string "I2C_PECTRANS_DISABLE ((uint32_t)0x00000000U)" +.LASF2243: + .string "RCU_CKSYSSRC_IRC8M CFG0_SCS(0)" +.LASF1353: + .string "EXMC_BANK0_NORSRAM_REGION0 ((uint32_t)0x00000000U)" +.LASF1002: + .string "STAT_REG_OFFSET ((uint8_t)0x04U)" +.LASF3055: + .string "WWDGT_CFG REG32((WWDGT) + 0x00000004U)" +.LASF3084: + .string "_SIZE_T " +.LASF1286: + .string "DMA_CHPADDR(dma,channel) REG32(((dma) + 0x10U) + 0x14U * (uint32_t)(channel))" +.LASF2300: + .string "RCU_PLL_MUL20 (PLLMF_4 | CFG0_PLLMF(3))" +.LASF3356: + .string "MATCH_ANDI 0x7013" +.LASF2106: + .string "RCU_CFG0_PLLMF BITS(18,21)" +.LASF2671: + .string "TIMER_SWEVG_TRGG BIT(6)" +.LASF575: + .string "ADC_CTL1_DAL BIT(11)" +.LASF2492: + .string "SPI_I2SCTL_PCMSMOD BIT(7)" +.LASF1152: + .string "DAC_CTL_DTEN1 BIT(18)" +.LASF2929: + .string "TIMER_HALLINTERFACE_DISABLE ((uint32_t)0x00000000U)" +.LASF3199: + .string "DCSR_NDRESET (1<<29)" +.LASF673: + .string "ADC_CHANNEL_12 ((uint8_t)0x0CU)" +.LASF2374: + .string "RCU_PLL1_MUL14 CFG1_PLL1MF(12)" +.LASF170: + .string "__DBL_EPSILON__ ((double)2.22044604925031308084726333618164062e-16L)" +.LASF346: + .string "_NEWLIB_VERSION \"4.1.0\"" +.LASF3877: + .string "CSR_MHPMEVENT6 0x326" +.LASF1942: + .string "I2C_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF793: + .string "CAN_TMDATA00(canx) REG32((canx) + 0x188U)" +.LASF882: + .string "CAN_CTL_IWMOD BIT(0)" +.LASF1780: + .string "GPIO_MODE_IN_FLOATING ((uint8_t)0x04U)" +.LASF1932: + .string "I2C_STAT1_HSTSMB BIT(6)" +.LASF1721: + .string "GPIO_BC_CR12 BIT(12)" +.LASF3037: + .string "CLT2_DENR(regval) (BIT(6) & ((uint32_t)(regval) << 6))" +.LASF1468: + .string "EXTI_PD_PD9 BIT(9)" +.LASF3973: + .string "CSR_MNVEC 0x7C3" +.LASF707: + .string "ADC_OVERSAMPLING_RATIO_MUL32 OVSCR_OVSR(4)" +.LASF410: + .string "_UINT16_T_DECLARED " +.LASF3324: + .string "MATCH_BLT 0x4063" +.LASF2127: + .string "RCU_INT_LXTALSTBIC BIT(17)" +.LASF887: + .string "CAN_CTL_AWU BIT(5)" +.LASF3873: + .string "CSR_MSCOUNTEREN 0x321" +.LASF3618: + .string "MATCH_FCVT_D_LU 0xd2300053" +.LASF3559: + .string "MASK_FMAX_D 0xfe00707f" +.LASF2747: + .string "TIMER_INT_FLAG_CMT TIMER_INT_CMT" +.LASF1667: + .string "GPIO_OCTL_OCTL6 BIT(6)" +.LASF3196: + .string "SSTATUS32_SD 0x80000000" +.LASF326: + .string "RT_USING_NEWLIB 1" +.LASF3241: + .string "MCONTROL_MATCH_NAPOT 1" +.LASF2675: + .string "TIMER_CHCTL0_CH0COMSEN BIT(3)" +.LASF902: + .string "CAN_TSTAT_MTFNERR0 BIT(1)" +.LASF2144: + .string "RCU_APB2RST_USART0RST BIT(14)" +.LASF457: + .string "INT_FAST8_MIN (-__INT_FAST8_MAX__ - 1)" +.LASF3385: + .string "MASK_SRAIW 0xfe00707f" +.LASF695: + .string "ADC_OVERSAMPLING_SHIFT_2B OVSCR_OVSS(2)" +.LASF3258: + .string "MIE_STIE MIP_STIP" +.LASF1600: + .string "GPIO_CTL1(gpiox) REG32((gpiox) + 0x04U)" +.LASF944: + .string "CAN_INTEN_SLPWIE BIT(17)" +.LASF3960: + .string "CSR_MHPMCOUNTER22H 0xb96" +.LASF1236: + .string "DMA_CH1CTL(dmax) REG32((dmax) + 0x1CU)" +.LASF1811: + .string "GPIO_EVENT_PIN_11 ((uint8_t)0x0BU)" +.LASF3504: + .string "MATCH_DRET 0x7b200073" +.LASF3332: + .string "MATCH_JALR 0x67" +.LASF131: + .string "__INT_FAST64_WIDTH__ 64" +.LASF2228: + .string "RCU_REG_VAL(periph) (REG32(RCU + ((uint32_t)(periph) >> 6)))" +.LASF2936: + .string "UART4 (USART_BASE+(0x00000C00U))" +.LASF3030: + .string "USART_CLEN_EN CTL1_CLEN(1)" +.LASF344: + .string "_SYS_FEATURES_H " +.LASF840: + .string "CAN_F24DATA0(canx) REG32((canx) + 0x300U)" +.LASF1700: + .string "GPIO_BOP_CR7 BIT(23)" +.LASF3604: + .string "MATCH_FCVT_S_WU 0xd0100053" +.LASF1079: + .string "CAN_BT_BS2_6TQ ((uint8_t)0x05U)" +.LASF600: + .string "ADC_FLAG_EOC ADC_STAT_EOC" +.LASF655: + .string "ADC_REGULAR_INSERTED_CHANNEL ((uint8_t)0x03U)" +.LASF2731: + .string "TIMER_DMACFG_DMATA BITS(0,4)" +.LASF3321: + .string "MASK_BEQ 0x707f" +.LASF3326: + .string "MATCH_BGE 0x5063" +.LASF3492: + .string "MATCH_ECALL 0x73" +.LASF2845: + .string "TIMER_CCHP_PROT_0 CCHP_PROT(1)" +.LASF449: + .string "INT_LEAST32_MAX (__INT_LEAST32_MAX__)" +.LASF2893: + .string "TIMER_SMCFG_TRGSEL_ITI0 SMCFG_TRGSEL(0)" +.LASF3111: + .string "___int_wchar_t_h " +.LASF1869: + .string "GPIO_SWJ_DISABLE_REMAP ((uint32_t)0x00300200U)" +.LASF3481: + .string "MASK_AMOMAX_D 0xf800707f" +.LASF2217: + .string "RCU_RSTSCK_LPRSTF BIT(31)" +.LASF3309: + .string "read_fpu(reg) ({ unsigned long __tmp; asm volatile (\"fmv.x.w %0, \" #reg : \"=r\"(__tmp)); __tmp; })" +.LASF3352: + .string "MATCH_SRAI 0x40005013" +.LASF3435: + .string "MASK_REM 0xfe00707f" +.LASF1562: + .string "OB_WP_6 ((uint32_t)0x00000040U)" +.LASF1845: + .string "GPIO_PIN_13 BIT(13)" +.LASF3130: + .string "TIMER_REG(offset) _REG32(TIMER_CTRL_ADDR, offset)" +.LASF4020: + .string "eclic_global_interrupt_disable" +.LASF712: + .string "BKP BKP_BASE" +.LASF1232: + .string "DMA_CH0CTL(dmax) REG32((dmax) + 0x08U)" +.LASF1166: + .string "DACC_R12DH_DAC1_DH BITS(16,27)" +.LASF1177: + .string "DAC_TRIGGER_T4_TRGO CTL_DTSEL(3)" +.LASF1058: + .string "CAN_BT_BS1_1TQ ((uint8_t)0x00U)" +.LASF2696: + .string "TIMER_CHCTL1_CH3COMCEN BIT(15)" +.LASF2521: + .string "SPI_PSC_16 CTL0_PSC(3)" +.LASF3153: + .string "ECLIC_CFG_NLBITS_LSB (1u)" +.LASF2416: + .string "RTC_CTL_ALRMIF BIT(1)" +.LASF2445: + .string "SPI_CTL1(spix) REG32((spix) + 0x04U)" +.LASF3233: + .string "MCONTROL_TYPE_NONE 0" +.LASF1202: + .string "DAC_LFSR_BITS3_0 DAC_WAVE_BIT_WIDTH_4" +.LASF3253: + .string "MIP_HEIP (1 << IRQ_H_EXT)" +.LASF126: + .string "__INT_FAST16_MAX__ 0x7fffffff" +.LASF603: + .string "ADC_FLAG_STRC ADC_STAT_STRC" +.LASF2778: + .string "TIMER_DMACFG_DMATA_CHCTL0 DMACFG_DMATA(6)" +.LASF1436: + .string "EXTI_FTEN_FTEN15 BIT(15)" +.LASF2065: + .string "PMU_FLAG_RESET_WAKEUP ((uint8_t)0x00U)" +.LASF3802: + .string "CSR_HPMCOUNTER21 0xc15" +.LASF381: + .string "__int20__" +.LASF262: + .string "__FLT32X_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F32x" +.LASF1461: + .string "EXTI_PD_PD2 BIT(2)" +.LASF1525: + .string "FMC_REG_VALS(offset) (REG32(FMC + ((uint32_t)(offset) >> 12)))" +.LASF489: + .string "INTMAX_C(x) __INTMAX_C(x)" +.LASF168: + .string "__DBL_NORM_MAX__ ((double)1.79769313486231570814527423731704357e+308L)" +.LASF3137: + .string "_BITULL(x) (_AC(1,ULL) << (x))" +.LASF1024: + .string "TMDATA1_DB7(regval) (BITS(24,31) & ((uint32_t)(regval) << 24))" +.LASF3063: + .string "CFG_PSC(regval) (BITS(7,8) & ((uint32_t)(regval) << 7))" +.LASF199: + .string "__FLT16_NORM_MAX__ 6.55040000000000000000000000000000000e+4F16" +.LASF2036: + .string "GD32VF103_PMU_H " +.LASF847: + .string "CAN_F3DATA1(canx) REG32((canx) + 0x25CU)" +.LASF1997: + .string "FWDGT_PSC_DIV4 ((uint8_t)PSC_PSC(0))" +.LASF3015: + .string "USART_WM_IDLE CTL0_WM(0)" +.LASF502: + .string "APB1_BUS_BASE ((uint32_t)0x40000000U)" +.LASF554: + .string "ADC_STAT_EOIC BIT(2)" +.LASF1870: + .string "GPIO_SPI2_REMAP ((uint32_t)0x00201100U)" +.LASF1988: + .string "FWDGT_PSC REG32((FWDGT) + 0x00000004U)" +.LASF1798: + .string "GPIO_PORT_SOURCE_GPIOD ((uint8_t)0x03U)" +.LASF1053: + .string "CAN_SILENT_LOOPBACK_MODE ((uint8_t)0x03U)" +.LASF2606: + .string "TIMER_CH2CV(timerx) REG32((timerx) + 0x3CU)" +.LASF3496: + .string "MATCH_URET 0x200073" +.LASF1782: + .string "GPIO_MODE_IPU ((uint8_t)0x48U)" +.LASF3570: + .string "MATCH_FEQ_S 0xa0002053" +.LASF3408: + .string "MATCH_LWU 0x6003" +.LASF1087: + .string "CAN_FF_EXTENDED ((uint32_t)0x00000004U)" +.LASF3118: + .string "NULL ((void *)0)" +.LASF444: + .string "UINT_LEAST16_MAX (__UINT_LEAST16_MAX__)" +.LASF1935: + .string "I2C_CKCFG_CLKC BITS(0,11)" +.LASF1469: + .string "EXTI_PD_PD10 BIT(10)" +.LASF1111: + .string "CAN_INT_WERR CAN_INTEN_WERRIE" +.LASF2085: + .string "RCU_CTL_IRC8MSTB BIT(1)" +.LASF1589: + .string "FMC_TIMEOUT_COUNT ((uint32_t)0x000F0000U)" +.LASF2465: + .string "SPI_CTL0_BDOEN BIT(14)" +.LASF2634: + .string "TIMER_SMCFG_ETFC BITS(8,11)" +.LASF3458: + .string "MATCH_AMOMAX_W 0xa000202f" +.LASF1317: + .string "DMA_MEMORY_WIDTH_32BIT CHCTL_MWIDTH(2U)" +.LASF697: + .string "ADC_OVERSAMPLING_SHIFT_4B OVSCR_OVSS(4)" +.LASF1199: + .string "DAC_LFSR_BIT0 DAC_WAVE_BIT_WIDTH_1" +.LASF614: + .string "ADC_DAUL_REGULAL_PARALLEL CTL0_SYNCM(6)" +.LASF3655: + .string "MASK_C_EBREAK 0xffff" +.LASF2588: + .string "TIMER4 (TIMER_BASE + 0x00000C00U)" +.LASF3441: + .string "MASK_DIVW 0xfe00707f" +.LASF3534: + .string "MATCH_FSGNJX_S 0x20002053" +.LASF928: + .string "CAN_RFIFO1_RFF1 BIT(3)" +.LASF1728: + .string "GPIO_LOCK_LK3 BIT(3)" +.LASF3409: + .string "MASK_LWU 0x707f" +.LASF792: + .string "CAN_TMP0(canx) REG32((canx) + 0x184U)" +.LASF1643: + .string "GPIO_CTL1_MD15 BITS(28, 29)" +.LASF1105: + .string "CAN_INT_RFNE0 CAN_INTEN_RFNEIE0" +.LASF1305: + .string "DMA_MEMORY_TO_PERIPHERAL ((uint8_t)0x01U)" +.LASF3984: + .string "CAUSE_MISALIGNED_FETCH 0x0" +.LASF1265: + .string "DMA_INTC_FTFIFC BIT(1)" +.LASF2646: + .string "TIMER_DMAINTEN_UPDEN BIT(8)" +.LASF1151: + .string "DAC_CTL_DBOFF1 BIT(17)" +.LASF1412: + .string "EXTI_RTEN_RTEN10 BIT(10)" +.LASF505: + .string "AHB3_BUS_BASE ((uint32_t)0x60000000U)" +.LASF3096: + .string "_GCC_SIZE_T " +.LASF1672: + .string "GPIO_OCTL_OCTL11 BIT(11)" +.LASF2939: + .string "USART_DATA(usartx) REG32((usartx) + (0x00000004U))" +.LASF3900: + .string "CSR_MHPMEVENT29 0x33d" +.LASF1564: + .string "OB_WP_8 ((uint32_t)0x00000100U)" +.LASF778: + .string "BKP_FLAG_TAMPER BKP_TPCS_TEF" +.LASF375: + .string "__STDINT_EXP(x) __ ##x ##__" +.LASF777: + .string "TAMPER_PIN_ACTIVE_LOW ((uint16_t)0x0002U)" +.LASF1234: + .string "DMA_CH0PADDR(dmax) REG32((dmax) + 0x10U)" +.LASF3423: + .string "MASK_MUL 0xfe00707f" +.LASF3116: + .string "__need_wchar_t" +.LASF1759: + .string "AFIO_PCF0_TIMER1_ITI1_REMAP BIT(29)" +.LASF974: + .string "CAN_RFIFOMI_FF BIT(2)" +.LASF3404: + .string "MATCH_LBU 0x4003" +.LASF3617: + .string "MASK_FCVT_D_L 0xfff0007f" +.LASF139: + .string "__GCC_IEC_559 0" +.LASF1844: + .string "GPIO_PIN_12 BIT(12)" +.LASF3499: + .string "MASK_SRET 0xffffffff" +.LASF3319: + .string "RISCV_ENCODING_H " +.LASF320: + .string "USE_PLIC 1" +.LASF3544: + .string "MATCH_FSUB_D 0xa000053" +.LASF206: + .string "__FLT32_MANT_DIG__ 24" +.LASF933: + .string "CAN_INTEN_RFFIE0 BIT(2)" +.LASF3497: + .string "MASK_URET 0xffffffff" +.LASF1863: + .string "GPIO_CAN0_PARTIAL_REMAP ((uint32_t)0x001D4000U)" +.LASF1498: + .string "FMC_OBKEY_OBKEY BITS(0,31)" +.LASF321: + .string "USE_M_TIME 1" +.LASF3250: + .string "MIP_HTIP (1 << IRQ_H_TIMER)" +.LASF1221: + .string "DAC_TRIANGLE_AMPLITUDE_127 DAC_WAVE_BIT_WIDTH_7" +.LASF2654: + .string "TIMER_INTF_CH0IF BIT(1)" +.LASF2979: + .string "USART_CTL1_STB BITS(12,13)" +.LASF1486: + .string "FMC_ADDR REG32((FMC) + 0x14U)" +.LASF2728: + .string "TIMER_CCHP_BRKP BIT(13)" +.LASF3069: + .string "_STDDEF_H " +.LASF1303: + .string "DMA_INT_ERR DMA_CHXCTL_ERRIE" +.LASF1960: + .string "I2C_DUADEN_ENABLE ((uint32_t)0x00000001U)" +.LASF1451: + .string "EXTI_SWIEV_SWIEV11 BIT(11)" +.LASF3085: + .string "_SYS_SIZE_T_H " +.LASF80: + .string "__SHRT_WIDTH__ 16" +.LASF2553: + .string "I2S_CKPL_LOW ((uint32_t)0x00000000U)" +.LASF3177: + .string "MSTATUS_MPIE 0x00000080" +.LASF3270: + .string "VM_MBARE 0" +.LASF1862: + .string "GPIO_TIMER3_REMAP ((uint32_t)0x00001000U)" +.LASF4021: + .string "__tmp" +.LASF1485: + .string "FMC_CTL REG32((FMC) + 0x10U)" +.LASF1440: + .string "EXTI_SWIEV_SWIEV0 BIT(0)" +.LASF684: + .string "ADC_INT_FLAG_EOIC ADC_STAT_EOIC" +.LASF3500: + .string "MATCH_HRET 0x20200073" +.LASF1019: + .string "TMDATA0_DB2(regval) (BITS(16,23) & ((uint32_t)(regval) << 16))" +.LASF361: + .string "__SSP_FORTIFY_LEVEL 0" +.LASF2442: + .string "SPI1 SPI_BASE" +.LASF2406: + .string "RTC_DIVH REG32(RTC + 0x10U)" +.LASF3089: + .string "_SIZE_T_ " +.LASF2349: + .string "RCU_PREDV0_DIV16 CFG1_PREDV0(15)" +.LASF659: + .string "ADC_INSERTED_CHANNEL_2 ((uint8_t)0x02U)" +.LASF2546: + .string "I2S_MODE_MASTERRX I2SCTL_I2SOPMOD(3)" +.LASF2804: + .string "TIMER_DMACFG_DMATC_13TRANSFER DMACFG_DMATC(12)" +.LASF3948: + .string "CSR_MHPMCOUNTER10H 0xb8a" +.LASF3268: + .string "PRV_H 2" +.LASF3748: + .string "MATCH_CUSTOM1_RD 0x402b" +.LASF288: + .string "__GCC_ATOMIC_CHAR_LOCK_FREE 1" +.LASF115: + .string "__INT_LEAST64_WIDTH__ 64" +.LASF1204: + .string "DAC_LFSR_BITS5_0 DAC_WAVE_BIT_WIDTH_6" +.LASF2350: + .string "CFG1_PREDV1(regval) (BITS(4,7) & ((uint32_t)(regval) << 4))" +.LASF2363: + .string "RCU_PREDV1_DIV13 CFG1_PREDV1(12)" +.LASF783: + .string "CAN_CTL(canx) REG32((canx) + 0x00U)" +.LASF3669: + .string "MASK_C_FLD 0xe003" +.LASF3661: + .string "MASK_C_ADDIW 0xe003" +.LASF280: + .string "__FLT64X_HAS_QUIET_NAN__ 1" +.LASF569: + .string "ADC_CTL0_RWDEN BIT(23)" +.LASF1638: + .string "GPIO_CTL1_CTL12 BITS(18, 19)" +.LASF2678: + .string "TIMER_CHCTL0_CH1MS BITS(8,9)" +.LASF2823: + .string "TIMER_PSC_RELOAD_NOW TIMER_SWEVG_UPG" +.LASF2866: + .string "TIMER_OC_MODE_TIMING ((uint16_t)0x0000U)" +.LASF3330: + .string "MATCH_BGEU 0x7063" +.LASF3430: + .string "MATCH_DIV 0x2004033" +.LASF1694: + .string "GPIO_BOP_CR1 BIT(17)" +.LASF58: + .string "__INT_FAST16_TYPE__ int" +.LASF3208: + .string "DCSR_DEBUGINT (1<<5)" +.LASF890: + .string "CAN_CTL_SWRST BIT(15)" +.LASF3609: + .string "MASK_FCVT_S_LU 0xfff0007f" +.LASF3890: + .string "CSR_MHPMEVENT19 0x333" +.LASF699: + .string "ADC_OVERSAMPLING_SHIFT_6B OVSCR_OVSS(6)" +.LASF641: + .string "ADC_SAMPLETIME_7POINT5 SAMPTX_SPT(1)" +.LASF2232: + .string "APB2EN_REG_OFFSET 0x18U" +.LASF268: + .string "__FLT64X_MIN_EXP__ (-16381)" +.LASF1906: + .string "I2C_SADDR0_ADDRESS0 BIT(0)" +.LASF2510: + .string "SPI_NSS_HARD ((uint32_t)0x00000000U)" +.LASF1691: + .string "GPIO_BOP_BOP14 BIT(14)" +.LASF2204: + .string "RCU_BDCTL_LXTALSTB BIT(1)" +.LASF2305: + .string "RCU_PLL_MUL25 (PLLMF_4 | CFG0_PLLMF(8))" +.LASF3830: + .string "CSR_MEPC 0x341" +.LASF822: + .string "CAN_F6DATA0(canx) REG32((canx) + 0x270U)" +.LASF3317: + .string "rdcycle() read_csr(cycle)" +.LASF544: + .string "ADC_RSQ2(adcx) REG32((adcx) + 0x34U)" +.LASF3101: + .string "__WCHAR_T__ " +.LASF337: + .string "IRC8M_VALUE ((uint32_t)8000000)" +.LASF1456: + .string "EXTI_SWIEV_SWIEV16 BIT(16)" +.LASF87: + .string "__SIZE_WIDTH__ 32" +.LASF1075: + .string "CAN_BT_BS2_2TQ ((uint8_t)0x01U)" +.LASF714: + .string "BKP_DATA1 REG16((BKP) + 0x08U)" +.LASF3086: + .string "_T_SIZE_ " +.LASF2520: + .string "SPI_PSC_8 CTL0_PSC(2)" +.LASF2870: + .string "TIMER_OC_MODE_LOW ((uint16_t)0x0040U)" +.LASF1593: + .string "GPIOA (GPIO_BASE + 0x00000000U)" +.LASF2259: + .string "RCU_AHB_CKSYS_DIV512 CFG0_AHBPSC(15)" +.LASF2159: + .string "RCU_APB1RST_I2C1RST BIT(22)" +.LASF473: + .string "SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)" +.LASF2737: + .string "TIMER_INT_CH2 TIMER_DMAINTEN_CH2IE" +.LASF1596: + .string "GPIOD (GPIO_BASE + 0x00000C00U)" +.LASF2933: + .string "USART1 USART_BASE" +.LASF1658: + .string "GPIO_ISTAT_ISTAT13 BIT(13)" +.LASF3169: + .string "RISCV_CSR_ENCODING_H " +.LASF3696: + .string "MATCH_C_XOR 0x8c21" +.LASF2544: + .string "I2S_MODE_SLAVERX I2SCTL_I2SOPMOD(1)" +.LASF442: + .string "INT_LEAST16_MIN (-__INT_LEAST16_MAX__ - 1)" +.LASF1848: + .string "GPIO_PIN_ALL BITS(0, 15)" +.LASF1212: + .string "DAC_ALIGN_12B_R DATA_ALIGN(0)" +.LASF538: + .string "ADC_IOFF2(adcx) REG32((adcx) + 0x1CU)" +.LASF3979: + .string "CSR_WFE 0x810" +.LASF2647: + .string "TIMER_DMAINTEN_CH0DEN BIT(9)" +.LASF52: + .string "__INT_LEAST64_TYPE__ long long int" +.LASF3337: + .string "MASK_LUI 0x7f" +.LASF3710: + .string "MATCH_C_BNEZ 0xe001" +.LASF713: + .string "BKP_DATA0 REG16((BKP) + 0x04U)" +.LASF1820: + .string "GPIO_PIN_SOURCE_4 ((uint8_t)0x04U)" +.LASF191: + .string "__FLT16_MANT_DIG__ 11" +.LASF1090: + .string "CAN_RFIF_RFL_MASK ((uint32_t)0x00000003U)" +.LASF2124: + .string "RCU_INT_PLL1STBIE BIT(13)" +.LASF1376: + .string "EXTI_INTEN_INTEN12 BIT(12)" +.LASF2379: + .string "RCU_PLL2_MUL8 CFG1_PLL2MF(6)" +.LASF1523: + .string "FMC_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF2657: + .string "TIMER_INTF_CH3IF BIT(4)" +.LASF1068: + .string "CAN_BT_BS1_11TQ ((uint8_t)0x0AU)" +.LASF770: + .string "BKP_DATA0_9(number) REG16((BKP) + 0x04U + (number) * 0x04U)" +.LASF1206: + .string "DAC_LFSR_BITS7_0 DAC_WAVE_BIT_WIDTH_8" +.LASF3138: + .string "ECLICINTCTLBITS 4" +.LASF1390: + .string "EXTI_EVEN_EVEN7 BIT(7)" +.LASF1892: + .string "I2C_CTL0_SS BIT(7)" +.LASF632: + .string "ADC0_1_EXTTRIG_INSERTED_T0_CH3 CTL1_ETSIC(1)" +.LASF3081: + .string "__need_ptrdiff_t" +.LASF1652: + .string "GPIO_ISTAT_ISTAT7 BIT(7)" +.LASF2530: + .string "I2S_AUDIOSAMPLE_32K ((uint32_t)32000U)" +.LASF2910: + .string "SMCFG_SMC(regval) (BITS(0, 2) & ((uint32_t)(regval) << 0U))" +.LASF3943: + .string "CSR_MHPMCOUNTER5H 0xb85" +.LASF240: + .string "__FLT128_MAX_EXP__ 16384" +.LASF3278: + .string "IRQ_M_SOFT 3" +.LASF1903: + .string "I2C_CTL1_BUFIE BIT(10)" +.LASF3234: + .string "MCONTROL_TYPE_MATCH 2" +.LASF2475: + .string "SPI_STAT_RBNE BIT(0)" +.LASF3723: + .string "MASK_C_ADD 0xf003" +.LASF3806: + .string "CSR_HPMCOUNTER25 0xc19" +.LASF1967: + .string "I2C_DMA_ON I2C_CTL1_DMAON" +.LASF1408: + .string "EXTI_RTEN_RTEN6 BIT(6)" +.LASF187: + .string "__LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L" +.LASF2796: + .string "TIMER_DMACFG_DMATC_5TRANSFER DMACFG_DMATC(4)" +.LASF1179: + .string "DAC_TRIGGER_T3_TRGO CTL_DTSEL(5)" +.LASF3933: + .string "CSR_HPMCOUNTER26H 0xc9a" +.LASF3541: + .string "MASK_FSQRT_S 0xfff0007f" +.LASF2494: + .string "SPI_I2SCTL_I2SEN BIT(10)" +.LASF1874: + .string "I2C0 I2C_BASE" +.LASF405: + .string "_SYS__STDINT_H " +.LASF1186: + .string "DWBW(regval) (BITS(8,11) & ((uint32_t)(regval) << 8))" +.LASF4007: + .string "long long int" +.LASF164: + .string "__DBL_MAX_EXP__ 1024" +.LASF3975: + .string "CSR_JALMNXTI 0x7ED" +.LASF2701: + .string "TIMER_CHCTL2_CH0EN BIT(0)" +.LASF91: + .string "__UINTMAX_C(c) c ## ULL" +.LASF2304: + .string "RCU_PLL_MUL24 (PLLMF_4 | CFG0_PLLMF(7))" +.LASF3916: + .string "CSR_HPMCOUNTER9H 0xc89" +.LASF2595: + .string "TIMER_INTF(timerx) REG32((timerx) + 0x10U)" +.LASF3846: + .string "CSR_MHPMCOUNTER6 0xb06" +.LASF2450: + .string "SPI_TCRC(spix) REG32((spix) + 0x18U)" +.LASF701: + .string "ADC_OVERSAMPLING_SHIFT_8B OVSCR_OVSS(8)" +.LASF3664: + .string "MATCH_C_SDSP 0xe002" +.LASF2889: + .string "TIMER_IC_PSC_DIV2 ((uint16_t)0x0004U)" +.LASF297: + .string "__GCC_ATOMIC_POINTER_LOCK_FREE 2" +.LASF3590: + .string "MATCH_FCVT_W_D 0xc2000053" +.LASF1373: + .string "EXTI_INTEN_INTEN9 BIT(9)" +.LASF1838: + .string "GPIO_PIN_6 BIT(6)" +.LASF3676: + .string "MATCH_C_SW 0xc000" +.LASF1071: + .string "CAN_BT_BS1_14TQ ((uint8_t)0x0DU)" +.LASF2223: + .string "RCU_CFG1_PREDV0SEL BIT(16)" +.LASF334: + .string "HXTAL_VALUE ((uint32_t)8000000)" +.LASF1610: + .string "AFIO_EXTISS2 REG32(AFIO + 0x10U)" +.LASF516: + .string "DAC_BASE (APB1_BUS_BASE + 0x00007400U)" +.LASF1519: + .string "FMC_WSEN_WSEN BIT(0)" +.LASF2386: + .string "RCU_PLL2_MUL15 CFG1_PLL2MF(13)" +.LASF2692: + .string "TIMER_CHCTL1_CH3MS BITS(8,9)" +.LASF873: + .string "CAN_TMP(canx,bank) REG32((canx) + 0x184U + ((bank) * 0x10U))" +.LASF1785: + .string "GPIO_MODE_AF_OD ((uint8_t)0x1CU)" +.LASF1383: + .string "EXTI_EVEN_EVEN0 BIT(0)" +.LASF878: + .string "CAN_RFIFOMI(canx,bank) REG32((canx) + 0x1B0U + ((bank) * 0x10U))" +.LASF3465: + .string "MASK_AMOSWAP_W 0xf800707f" +.LASF1223: + .string "DAC_TRIANGLE_AMPLITUDE_511 DAC_WAVE_BIT_WIDTH_9" +.LASF682: + .string "ADC_INT_FLAG_WDE ADC_STAT_WDE" +.LASF3039: + .string "USART_DENR_DISABLE CLT2_DENR(0)" +.LASF1736: + .string "GPIO_LOCK_LK11 BIT(11)" +.LASF137: + .string "__INTPTR_WIDTH__ 32" +.LASF2497: + .string "SPI_I2SPSC_OF BIT(8)" +.LASF12: + .string "__ATOMIC_RELEASE 3" +.LASF1138: + .string "DACC_R12DH REG32(DAC + 0x20U)" +.LASF1622: + .string "GPIO_CTL0_CTL4 BITS(18, 19)" +.LASF458: + .string "INT_FAST8_MAX (__INT_FAST8_MAX__)" +.LASF1294: + .string "DMA_INT_FLAG_FTF DMA_INTF_FTFIF" +.LASF2686: + .string "TIMER_CHCTL0_CH1CAPFLT BITS(12,15)" +.LASF589: + .string "ADC_ISQ_ISQN BITS(0,4)" +.LASF3412: + .string "MATCH_SH 0x1023" +.LASF1289: + .string "DMA_CHCNT_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF2425: + .string "RTC_CNTH_CNT BITS(0,15)" +.LASF2327: + .string "RCU_CKOUT0SRC_CKPLL2 CFG0_CKOUT0SEL(11)" +.LASF3147: + .string "ECLIC_INT_ATTR_TRIG_EDGE 0x02" +.LASF1549: + .string "OB_SPC_SPC_N ((uint32_t)0x0000FF00U)" +.LASF1617: + .string "GPIO_CTL0_MD2 BITS(8, 9)" +.LASF961: + .string "CAN_TMI_SFID BITS(21,31)" +.LASF1292: + .string "DMA_CHINTF_RESET_VALUE (DMA_INTF_GIF | DMA_INTF_FTFIF | DMA_INTF_HTFIF | DMA_INTF_ERRIF)" +.LASF1381: + .string "EXTI_INTEN_INTEN17 BIT(17)" +.LASF2560: + .string "SPI_I2S_INT_RBNE ((uint8_t)0x01U)" +.LASF1218: + .string "DAC_TRIANGLE_AMPLITUDE_15 DAC_WAVE_BIT_WIDTH_4" +.LASF3619: + .string "MASK_FCVT_D_LU 0xfff0007f" +.LASF2185: + .string "RCU_APB1EN_TIMER3EN BIT(2)" +.LASF3059: + .string "WWDGT_CFG_WIN BITS(0,6)" +.LASF2303: + .string "RCU_PLL_MUL23 (PLLMF_4 | CFG0_PLLMF(6))" +.LASF143: + .string "__DEC_EVAL_METHOD__ 2" +.LASF2842: + .string "TIMER_OUTAUTO_DISABLE ((uint16_t)0x0000U)" +.LASF1722: + .string "GPIO_BC_CR13 BIT(13)" +.LASF225: + .string "__FLT64_MAX_EXP__ 1024" +.LASF2170: + .string "RCU_AHBEN_EXMCEN BIT(8)" +.LASF1213: + .string "DAC_ALIGN_12B_L DATA_ALIGN(1)" +.LASF1645: + .string "GPIO_ISTAT_ISTAT0 BIT(0)" +.LASF3021: + .string "USART_STB_1BIT CTL1_STB(0)" +.LASF2164: + .string "RCU_APB1RST_DACRST BIT(29)" +.LASF3160: + .string "ECLIC_GROUP_LEVEL2_PRIO2 2" +.LASF1937: + .string "I2C_CKCFG_FAST BIT(15)" +.LASF3060: + .string "WWDGT_CFG_PSC BITS(7,8)" +.LASF893: + .string "CAN_STAT_SLPWS BIT(1)" +.LASF3032: + .string "USART_CPH_1CK CTL1_CPH(0)" +.LASF1243: + .string "DMA_CH2MADDR(dmax) REG32((dmax) + 0x3CU)" +.LASF1036: + .string "GET_RFIFOMDATA1_DB7(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF2454: + .string "SPI_CTL0_CKPL BIT(1)" +.LASF2864: + .string "TIMER_OCN_IDLE_STATE_HIGH ((uint16_t)0x0200U)" +.LASF1855: + .string "GPIO_TIMER0_PARTIAL_REMAP ((uint32_t)0x00160040U)" +.LASF1007: + .string "BT_BAUDPSC(regval) (BITS(0,9) & ((uint32_t)(regval) << 0))" +.LASF3852: + .string "CSR_MHPMCOUNTER12 0xb0c" +.LASF1494: + .string "OB_WP2 REG16((OB) + 0x0CU)" +.LASF1571: + .string "OB_WP_15 ((uint32_t)0x00008000U)" +.LASF3829: + .string "CSR_MSCRATCH 0x340" +.LASF2499: + .string "SPI_MASTER (SPI_CTL0_MSTMOD | SPI_CTL0_SWNSS)" +.LASF1032: + .string "GET_RFIFOMDATA0_DB3(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF588: + .string "ADC_RSQ0_RL BITS(20,23)" +.LASF5: + .string "__GNUC__ 10" +.LASF2681: + .string "TIMER_CHCTL0_CH1COMCTL BITS(12,14)" +.LASF2770: + .string "TIMER_DMAREQUEST_CHANNELEVENT ((uint32_t)0x00000000U)" +.LASF2575: + .string "SPI_FLAG_FERR SPI_STAT_FERR" +.LASF3689: + .string "MASK_C_SRLI 0xec03" +.LASF3325: + .string "MASK_BLT 0x707f" +.LASF3054: + .string "WWDGT_CTL REG32((WWDGT) + 0x00000000U)" +.LASF2091: + .string "RCU_CTL_CKMEN BIT(19)" +.LASF2268: + .string "RCU_APB2_CKAHB_DIV2 CFG0_APB2PSC(4)" +.LASF679: + .string "ADC_INT_WDE ADC_STAT_WDE" +.LASF1828: + .string "GPIO_PIN_SOURCE_12 ((uint8_t)0x0CU)" +.LASF1028: + .string "GET_RFIFOMP_FI(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF2672: + .string "TIMER_SWEVG_BRKG BIT(7)" +.LASF1301: + .string "DMA_INT_FTF DMA_CHXCTL_FTFIE" +.LASF2547: + .string "I2SCTL_I2SSTD(regval) (BITS(4,5) & ((uint32_t)(regval) << 4))" +.LASF1366: + .string "EXTI_INTEN_INTEN2 BIT(2)" +.LASF181: + .string "__DECIMAL_DIG__ 36" +.LASF97: + .string "__INT16_MAX__ 0x7fff" +.LASF3466: + .string "MATCH_LR_W 0x1000202f" +.LASF1642: + .string "GPIO_CTL1_CTL14 BITS(26, 27)" +.LASF3103: + .string "_T_WCHAR_ " +.LASF2034: + .string "DBG_LOW_POWER_DEEPSLEEP DBG_CTL_DSLP_HOLD" +.LASF2302: + .string "RCU_PLL_MUL22 (PLLMF_4 | CFG0_PLLMF(5))" +.LASF985: + .string "CAN_RFIFOMDATA1_DB5 BITS(8,15)" +.LASF2207: + .string "RCU_BDCTL_RTCEN BIT(15)" +.LASF3800: + .string "CSR_HPMCOUNTER19 0xc13" +.LASF2820: + .string "TIMER_COUNTER_CENTER_DOWN CTL0_CAM(1)" +.LASF329: + .string "GD32VF103_ECLIC_H " +.LASF1978: + .string "I2C_ARP_DISABLE ((uint32_t)0x00000000U)" +.LASF495: + .string "BITS(start,end) ((0xFFFFFFFFUL << (start)) & (0xFFFFFFFFUL >> (31U - (uint32_t)(end))))" +.LASF470: + .string "INTMAX_MIN (-INTMAX_MAX - 1)" +.LASF1474: + .string "EXTI_PD_PD15 BIT(15)" +.LASF3259: + .string "MIE_HTIE MIP_HTIP" +.LASF2050: + .string "PMU_CS_WUPEN BIT(8)" +.LASF791: + .string "CAN_TMI0(canx) REG32((canx) + 0x180U)" +.LASF2096: + .string "RCU_CTL_PLL2EN BIT(28)" +.LASF2115: + .string "RCU_INT_PLLSTBIF BIT(4)" +.LASF2321: + .string "RCU_CKOUT0SRC_IRC8M CFG0_CKOUT0SEL(5)" +.LASF1161: + .string "DAC0_R8DH_DAC0_DH BITS(0,7)" +.LASF3894: + .string "CSR_MHPMEVENT23 0x337" +.LASF3098: + .string "__size_t " +.LASF2535: + .string "I2SCTL_DTLEN(regval) (BITS(1,2) & ((uint32_t)(regval) << 1))" +.LASF3623: + .string "MASK_FLW 0x707f" +.LASF358: + .string "__POSIX_VISIBLE 199009" +.LASF3964: + .string "CSR_MHPMCOUNTER26H 0xb9a" +.LASF3862: + .string "CSR_MHPMCOUNTER22 0xb16" +.LASF3267: + .string "PRV_S 1" +.LASF2123: + .string "RCU_INT_PLLSTBIE BIT(12)" +.LASF2225: + .string "RCU_CFG1_I2S2SEL BIT(18)" +.LASF119: + .string "__UINT16_C(c) c" +.LASF1858: + .string "GPIO_TIMER1_PARTIAL_REMAP1 ((uint32_t)0x00180200U)" +.LASF1417: + .string "EXTI_RTEN_RTEN15 BIT(15)" +.LASF3143: + .string "ECLIC_INT_IE_OFFSET _AC(0x1001,UL)" +.LASF2719: + .string "TIMER_CH0CV_CH0VAL BITS(0,15)" +.LASF1619: + .string "GPIO_CTL0_MD3 BITS(12, 13)" +.LASF2975: + .string "USART_CTL1_CLEN BIT(8)" +.LASF836: + .string "CAN_F20DATA0(canx) REG32((canx) + 0x2E0U)" +.LASF1686: + .string "GPIO_BOP_BOP9 BIT(9)" +.LASF373: + .string "__EXP" +.LASF290: + .string "__GCC_ATOMIC_CHAR32_T_LOCK_FREE 2" +.LASF1875: + .string "I2C1 (I2C_BASE + 0x00000400U)" +.LASF796: + .string "CAN_TMP1(canx) REG32((canx) + 0x194U)" +.LASF3726: + .string "MATCH_C_SWSP 0xc002" +.LASF547: + .string "ADC_IDATA1(adcx) REG32((adcx) + 0x40U)" +.LASF2151: + .string "RCU_APB1RST_WWDGTRST BIT(11)" +.LASF263: + .string "__FLT32X_HAS_DENORM__ 1" +.LASF1594: + .string "GPIOB (GPIO_BASE + 0x00000400U)" +.LASF2911: + .string "TIMER_SLAVE_MODE_DISABLE SMCFG_SMC(0)" +.LASF2249: + .string "RCU_SCSS_PLL CFG0_SCSS(2)" +.LASF920: + .string "CAN_TSTAT_TMLS0 BIT(29)" +.LASF1831: + .string "GPIO_PIN_SOURCE_15 ((uint8_t)0x0FU)" +.LASF2996: + .string "USART_BIT_POS(val) ((uint32_t)(val) & (0x0000001FU))" +.LASF1276: + .string "DMA_CHXCTL_PWIDTH BITS(8,9)" +.LASF2776: + .string "TIMER_DMACFG_DMATA_INTF DMACFG_DMATA(4)" +.LASF769: + .string "BKP_TPCS_TIF BIT(9)" +.LASF527: + .string "GD32VF103_LIBOPT_H " +.LASF2632: + .string "TIMER_SMCFG_TRGS BITS(4,6)" +.LASF3785: + .string "CSR_HPMCOUNTER4 0xc04" +.LASF1718: + .string "GPIO_BC_CR9 BIT(9)" +.LASF2720: + .string "TIMER_CH1CV_CH1VAL BITS(0,15)" +.LASF372: + .string "___int_least64_t_defined 1" +.LASF3865: + .string "CSR_MHPMCOUNTER25 0xb19" +.LASF2940: + .string "USART_BAUD(usartx) REG32((usartx) + (0x00000008U))" +.LASF210: + .string "__FLT32_MAX_EXP__ 128" +.LASF3638: + .string "MATCH_FMADD_D 0x2000043" +.LASF3642: + .string "MATCH_FNMSUB_D 0x200004b" +.LASF3289: + .string "DEFAULT_MTVEC 0x00001010" +.LASF3220: + .string "MCONTROL_MASKMAX(xlen) (0x3fULL<<((xlen)-11))" +.LASF861: + .string "CAN_F17DATA1(canx) REG32((canx) + 0x24CU)" +.LASF1341: + .string "EXMC_SNTCFG_AHLD BITS(4,7)" +.LASF3212: + .string "DCSR_CAUSE_NONE 0" +.LASF3679: + .string "MASK_C_FSW 0xe003" +.LASF1784: + .string "GPIO_MODE_OUT_PP ((uint8_t)0x10U)" +.LASF3066: + .string "WWDGT_CFG_PSC_DIV4 CFG_PSC(2)" +.LASF1597: + .string "GPIOE (GPIO_BASE + 0x00001000U)" +.LASF125: + .string "__INT_FAST8_WIDTH__ 32" +.LASF3139: + .string "ECLIC_CFG_OFFSET 0x0" +.LASF3425: + .string "MASK_MULH 0xfe00707f" +.LASF2722: + .string "TIMER_CH3CV_CH3VAL BITS(0,15)" +.LASF2813: + .string "TIMER_EVENT_SRC_CH2G ((uint16_t)0x0008U)" +.LASF1092: + .string "CAN_EFID_MASK ((uint32_t)0x1FFFFFFFU)" +.LASF1117: + .string "CAN_INT_SLPW CAN_INTEN_SLPWIE" +.LASF2721: + .string "TIMER_CH2CV_CH2VAL BITS(0,15)" +.LASF304: + .string "__riscv_compressed 1" +.LASF266: + .string "__FLT64X_MANT_DIG__ 113" +.LASF1154: + .string "DAC_CTL_DWM1 BITS(22,23)" +.LASF2009: + .string "FWDGT_RLD_TIMEOUT ((uint32_t)0x000FFFFFU)" +.LASF1809: + .string "GPIO_EVENT_PIN_9 ((uint8_t)0x09U)" +.LASF1560: + .string "OB_WP_4 ((uint32_t)0x00000010U)" +.LASF471: + .string "UINTMAX_MAX (__UINTMAX_MAX__)" +.LASF917: + .string "CAN_TSTAT_TME0 BIT(26)" +.LASF662: + .string "ADC_CHANNEL_1 ((uint8_t)0x01U)" +.LASF1268: + .string "DMA_CHXCTL_CHEN BIT(0)" +.LASF2087: + .string "RCU_CTL_IRC8MCALIB BITS(8,15)" +.LASF2360: + .string "RCU_PREDV1_DIV10 CFG1_PREDV1(9)" +.LASF192: + .string "__FLT16_DIG__ 3" +.LASF3787: + .string "CSR_HPMCOUNTER6 0xc06" +.LASF2812: + .string "TIMER_EVENT_SRC_CH1G ((uint16_t)0x0004U)" +.LASF3135: + .string "_AT(T,X) ((T)(X))" +.LASF3998: + .string "unsigned int" +.LASF2448: + .string "SPI_CRCPOLY(spix) REG32((spix) + 0x10U)" +.LASF1936: + .string "I2C_CKCFG_DTCY BIT(14)" +.LASF2261: + .string "RCU_APB1_CKAHB_DIV1 CFG0_APB1PSC(0)" +.LASF425: + .string "__int_least64_t_defined 1" +.LASF1886: + .string "I2C_CTL0_I2CEN BIT(0)" +.LASF771: + .string "BKP_DATA10_41(number) REG16((BKP) + 0x40U + ((number)-10U) * 0x04U)" +.LASF2608: + .string "TIMER_CCHP(timerx) REG32((timerx) + 0x44U)" +.LASF415: + .string "_INT64_T_DECLARED " +.LASF2750: + .string "TIMER_FLAG_UP TIMER_INTF_UPIF" +.LASF3561: + .string "MASK_FCVT_S_D 0xfff0007f" +.LASF1679: + .string "GPIO_BOP_BOP2 BIT(2)" +.LASF2846: + .string "TIMER_CCHP_PROT_1 CCHP_PROT(2)" +.LASF3397: + .string "MASK_LB 0x707f" +.LASF3587: + .string "MASK_FMV_X_S 0xfff0707f" +.LASF2923: + .string "TIMER_EXT_TRI_PSC_DIV2 SMCFG_ETPSC(1)" +.LASF1160: + .string "DAC0_L12DH_DAC0_DH BITS(4,15)" +.LASF1626: + .string "GPIO_CTL0_CTL6 BITS(26, 27)" +.LASF1542: + .string "OB_STDBY_NRST ((uint8_t)0x04U)" +.LASF1300: + .string "DMA_FLAG_ERR DMA_INTF_ERRIF" +.LASF3645: + .string "MASK_FNMADD_D 0x600007f" +.LASF3358: + .string "MATCH_ADD 0x33" + .ident "GCC: (xPack GNU RISC-V Embedded GCC x86_64) 10.2.0" diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_exmc.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_exmc.c new file mode 100644 index 0000000000..8e1f807d9c --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_exmc.c @@ -0,0 +1,165 @@ +/*! + \file gd32vf103_exmc.c + \brief EXMC driver + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "gd32vf103_exmc.h" + +/* EXMC bank0 register reset value */ +#define BANK0_SNCTL0_REGION_RESET ((uint32_t)0x000030DAU) +#define BANK0_SNTCFG_RESET ((uint32_t)0x0FFFFFFFU) + +/* EXMC register bit offset */ +#define SNCTL_NRMUX_OFFSET ((uint32_t)1U) +#define SNCTL_WREN_OFFSET ((uint32_t)12U) +#define SNCTL_NRWTEN_OFFSET ((uint32_t)13U) +#define SNCTL_ASYNCWAIT_OFFSET ((uint32_t)15U) + +#define SNTCFG_AHLD_OFFSET ((uint32_t)4U) +#define SNTCFG_DSET_OFFSET ((uint32_t)8U) +#define SNTCFG_BUSLAT_OFFSET ((uint32_t)16U) + +/*! + \brief deinitialize EXMC NOR/SRAM region + \param[in] norsram_region: select the region of bank0 + \arg EXMC_BANK0_NORSRAM_REGIONx(x=0) + \param[out] none + \retval none +*/ +void exmc_norsram_deinit(uint32_t norsram_region) +{ + /* reset the registers */ + if(EXMC_BANK0_NORSRAM_REGION0 == norsram_region){ + EXMC_SNCTL(norsram_region) = BANK0_SNCTL0_REGION_RESET; + } + + EXMC_SNTCFG(norsram_region) = BANK0_SNTCFG_RESET; +} + +/*! + \brief initialize the structure exmc_norsram_parameter_struct + \param[in] none + \param[out] exmc_norsram_init_struct: the initialized structure exmc_norsram_parameter_struct pointer + \retval none +*/ +void exmc_norsram_struct_para_init(exmc_norsram_parameter_struct* exmc_norsram_init_struct) +{ + /* configure the structure with default value */ + exmc_norsram_init_struct->norsram_region = EXMC_BANK0_NORSRAM_REGION0; + exmc_norsram_init_struct->address_data_mux = ENABLE; + exmc_norsram_init_struct->memory_type = EXMC_MEMORY_TYPE_SRAM; + exmc_norsram_init_struct->databus_width = EXMC_NOR_DATABUS_WIDTH_16B; + exmc_norsram_init_struct->nwait_polarity = EXMC_NWAIT_POLARITY_LOW; + exmc_norsram_init_struct->memory_write = ENABLE; + exmc_norsram_init_struct->nwait_signal = ENABLE; + exmc_norsram_init_struct->asyn_wait = DISABLE; + + /* read/write timing configure */ + exmc_norsram_init_struct->read_write_timing->asyn_address_setuptime = 0xFU; + exmc_norsram_init_struct->read_write_timing->asyn_address_holdtime = 0xFU; + exmc_norsram_init_struct->read_write_timing->asyn_data_setuptime = 0xFFU; + exmc_norsram_init_struct->read_write_timing->bus_latency = 0xFU; +} + +/*! + \brief initialize EXMC NOR/SRAM region + \param[in] exmc_norsram_parameter_struct: configure the EXMC NOR/SRAM parameter + norsram_region: EXMC_BANK0_NORSRAM_REGIONx,x=0 + asyn_wait: ENABLE or DISABLE + nwait_signal: ENABLE or DISABLE + memory_write: ENABLE or DISABLE + nwait_polarity: EXMC_NWAIT_POLARITY_LOW,EXMC_NWAIT_POLARITY_HIGH + databus_width: EXMC_NOR_DATABUS_WIDTH_8B,EXMC_NOR_DATABUS_WIDTH_16B + memory_type: EXMC_MEMORY_TYPE_SRAM,EXMC_MEMORY_TYPE_PSRAM,EXMC_MEMORY_TYPE_NOR + address_data_mux: ENABLE + read_write_timing: structure exmc_norsram_timing_parameter_struct set the time + \param[out] none + \retval none +*/ +void exmc_norsram_init(exmc_norsram_parameter_struct* exmc_norsram_init_struct) +{ + uint32_t snctl = 0x00000000U, sntcfg = 0x00000000U; + + /* get the register value */ + snctl = EXMC_SNCTL(exmc_norsram_init_struct->norsram_region); + + /* clear relative bits */ + snctl &= ((uint32_t)~(EXMC_SNCTL_NREN | EXMC_SNCTL_NRTP | EXMC_SNCTL_NRW | EXMC_SNCTL_NRWTPOL | + EXMC_SNCTL_WREN | EXMC_SNCTL_NRWTEN | EXMC_SNCTL_ASYNCWAIT | EXMC_SNCTL_NRMUX)); + + snctl |= (uint32_t)((uint32_t)exmc_norsram_init_struct->address_data_mux << SNCTL_NRMUX_OFFSET) | + exmc_norsram_init_struct->memory_type | + exmc_norsram_init_struct->databus_width | + exmc_norsram_init_struct->nwait_polarity | + ((uint32_t)exmc_norsram_init_struct->memory_write << SNCTL_WREN_OFFSET) | + ((uint32_t)exmc_norsram_init_struct->nwait_signal << SNCTL_NRWTEN_OFFSET) | + ((uint32_t)exmc_norsram_init_struct->asyn_wait << SNCTL_ASYNCWAIT_OFFSET); + + sntcfg = (uint32_t)((exmc_norsram_init_struct->read_write_timing->asyn_address_setuptime - 1U ) & EXMC_SNTCFG_ASET )| + (((exmc_norsram_init_struct->read_write_timing->asyn_address_holdtime - 1U ) << SNTCFG_AHLD_OFFSET ) & EXMC_SNTCFG_AHLD ) | + (((exmc_norsram_init_struct->read_write_timing->asyn_data_setuptime - 1U ) << SNTCFG_DSET_OFFSET ) & EXMC_SNTCFG_DSET ) | + (((exmc_norsram_init_struct->read_write_timing->bus_latency - 1U ) << SNTCFG_BUSLAT_OFFSET ) & EXMC_SNTCFG_BUSLAT ); + + /* nor flash access enable */ + if(EXMC_MEMORY_TYPE_NOR == exmc_norsram_init_struct->memory_type){ + snctl |= (uint32_t)EXMC_SNCTL_NREN; + } + + /* configure the registers */ + EXMC_SNCTL(exmc_norsram_init_struct->norsram_region) = snctl; + EXMC_SNTCFG(exmc_norsram_init_struct->norsram_region) = sntcfg; +} + +/*! + \brief enable EXMC NOR/PSRAM bank region + \param[in] norsram_region: specify the region of NOR/PSRAM bank + \arg EXMC_BANK0_NORSRAM_REGIONx(x=0) + \param[out] none + \retval none +*/ +void exmc_norsram_enable(uint32_t norsram_region) +{ + EXMC_SNCTL(norsram_region) |= (uint32_t)EXMC_SNCTL_NRBKEN; +} + +/*! + \brief disable EXMC NOR/PSRAM bank region + \param[in] norsram_region: specify the region of NOR/PSRAM bank + \arg EXMC_BANK0_NORSRAM_REGIONx(x=0) + \param[out] none + \retval none +*/ +void exmc_norsram_disable(uint32_t norsram_region) +{ + EXMC_SNCTL(norsram_region) &= ~(uint32_t)EXMC_SNCTL_NRBKEN; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_exti.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_exti.c new file mode 100644 index 0000000000..4d84564352 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_exti.c @@ -0,0 +1,255 @@ +/*! + \file gd32vf103_exti.c + \brief EXTI driver + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "gd32vf103_exti.h" + +#define EXTI_REG_RESET_VALUE ((uint32_t)0x00000000U) + +/*! + \brief deinitialize the EXTI + \param[in] none + \param[out] none + \retval none + */ +void exti_deinit(void) +{ + /* reset the value of all the EXTI registers */ + EXTI_INTEN = EXTI_REG_RESET_VALUE; + EXTI_EVEN = EXTI_REG_RESET_VALUE; + EXTI_RTEN = EXTI_REG_RESET_VALUE; + EXTI_FTEN = EXTI_REG_RESET_VALUE; + EXTI_SWIEV = EXTI_REG_RESET_VALUE; +} + +/*! + \brief initialize the EXTI + \param[in] linex: EXTI line number, refer to exti_line_enum + only one parameter can be selected which is shown as below: + \arg EXTI_x (x=0..18): EXTI line x + \param[in] mode: interrupt or event mode, refer to exti_mode_enum + only one parameter can be selected which is shown as below: + \arg EXTI_INTERRUPT: interrupt mode + \arg EXTI_EVENT: event mode + \param[in] trig_type: trigger type, refer to exti_trig_type_enum + only one parameter can be selected which is shown as below: + \arg EXTI_TRIG_RISING: rising edge trigger + \arg EXTI_TRIG_FALLING: falling edge trigger + \arg EXTI_TRIG_BOTH: rising edge and falling edge trigger + \arg EXTI_TRIG_NONE: without rising edge or falling edge trigger + \param[out] none + \retval none + */ +void exti_init(exti_line_enum linex, exti_mode_enum mode, exti_trig_type_enum trig_type) +{ + /* reset the EXTI line x */ + EXTI_INTEN &= ~(uint32_t) linex; + EXTI_EVEN &= ~(uint32_t) linex; + EXTI_RTEN &= ~(uint32_t) linex; + EXTI_FTEN &= ~(uint32_t) linex; + + /* set the EXTI mode and enable the interrupts or events from EXTI line x */ + switch (mode) { + case EXTI_INTERRUPT: + EXTI_INTEN |= (uint32_t) linex; + break; + case EXTI_EVENT: + EXTI_EVEN |= (uint32_t) linex; + break; + default: + break; + } + + /* set the EXTI trigger type */ + switch (trig_type) { + case EXTI_TRIG_RISING: + EXTI_RTEN |= (uint32_t) linex; + EXTI_FTEN &= ~(uint32_t) linex; + break; + case EXTI_TRIG_FALLING: + EXTI_RTEN &= ~(uint32_t) linex; + EXTI_FTEN |= (uint32_t) linex; + break; + case EXTI_TRIG_BOTH: + EXTI_RTEN |= (uint32_t) linex; + EXTI_FTEN |= (uint32_t) linex; + break; + case EXTI_TRIG_NONE: + default: + break; + } +} + +/*! + \brief enable the interrupts from EXTI line x + \param[in] linex: EXTI line number, refer to exti_line_enum + only one parameter can be selected which is shown as below: + \arg EXTI_x (x=0..18): EXTI line x + \param[out] none + \retval none +*/ +void exti_interrupt_enable(exti_line_enum linex) +{ + EXTI_INTEN |= (uint32_t) linex; +} + +/*! + \brief enable the events from EXTI line x + \param[in] linex: EXTI line number, refer to exti_line_enum + only one parameter can be selected which is shown as below: + \arg EXTI_x (x=0..18): EXTI line x + \param[out] none + \retval none +*/ +void exti_event_enable(exti_line_enum linex) +{ + EXTI_EVEN |= (uint32_t) linex; +} + +/*! + \brief disable the interrupt from EXTI line x + \param[in] linex: EXTI line number, refer to exti_line_enum + only one parameter can be selected which is shown as below: + \arg EXTI_x (x=0..18): EXTI line x + \param[out] none + \retval none +*/ +void exti_interrupt_disable(exti_line_enum linex) +{ + EXTI_INTEN &= ~(uint32_t) linex; +} + +/*! + \brief disable the events from EXTI line x + \param[in] linex: EXTI line number, refer to exti_line_enum + only one parameter can be selected which is shown as below: + \arg EXTI_x (x=0..18): EXTI line x + \param[out] none + \retval none +*/ +void exti_event_disable(exti_line_enum linex) +{ + EXTI_EVEN &= ~(uint32_t) linex; +} + +/*! + \brief get EXTI lines flag + \param[in] linex: EXTI line number, refer to exti_line_enum + only one parameter can be selected which is shown as below: + \arg EXTI_x (x=0..18): EXTI line x + \param[out] none + \retval FlagStatus: status of flag (RESET or SET) +*/ +FlagStatus exti_flag_get(exti_line_enum linex) +{ + if (RESET != (EXTI_PD & (uint32_t) linex)) { + return SET; + } else { + return RESET; + } +} + +/*! + \brief clear EXTI lines pending flag + \param[in] linex: EXTI line number, refer to exti_line_enum + only one parameter can be selected which is shown as below: + \arg EXTI_x (x=0..18): EXTI line x + \param[out] none + \retval none +*/ +void exti_flag_clear(exti_line_enum linex) +{ + EXTI_PD = (uint32_t) linex; +} + +/*! + \brief get EXTI lines flag when the interrupt flag is set + \param[in] linex: EXTI line number, refer to exti_line_enum + only one parameter can be selected which is shown as below: + \arg EXTI_x (x=0..18): EXTI line x + \param[out] none + \retval FlagStatus: status of flag (RESET or SET) +*/ +FlagStatus exti_interrupt_flag_get(exti_line_enum linex) +{ + uint32_t flag_left, flag_right; + + flag_left = EXTI_PD & (uint32_t) linex; + flag_right = EXTI_INTEN & (uint32_t) linex; + + if ((RESET != flag_left) && (RESET != flag_right)) { + return SET; + } else { + return RESET; + } +} + +/*! + \brief clear EXTI lines pending flag + \param[in] linex: EXTI line number, refer to exti_line_enum + only one parameter can be selected which is shown as below: + \arg EXTI_x (x=0..18): EXTI line x + \param[out] none + \retval none +*/ +void exti_interrupt_flag_clear(exti_line_enum linex) +{ + EXTI_PD = (uint32_t) linex; +} + +/*! + \brief enable EXTI software interrupt event + \param[in] linex: EXTI line number, refer to exti_line_enum + only one parameter can be selected which is shown as below: + \arg EXTI_x (x=0..18): EXTI line x + \param[out] none + \retval none +*/ +void exti_software_interrupt_enable(exti_line_enum linex) +{ + EXTI_SWIEV |= (uint32_t) linex; +} + +/*! + \brief disable EXTI software interrupt event + \param[in] linex: EXTI line number, refer to exti_line_enum + only one parameter can be selected which is shown as below: + \arg EXTI_x (x=0..18): EXTI line x + \param[out] none + \retval none +*/ +void exti_software_interrupt_disable(exti_line_enum linex) +{ + EXTI_SWIEV &= ~(uint32_t) linex; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_exti.s b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_exti.s new file mode 100644 index 0000000000..917e05d1f9 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_exti.s @@ -0,0 +1,17780 @@ + .file "gd32vf103_exti.c" + .option nopic + .text +.Ltext0: + .cfi_sections .debug_frame + .align 1 + .globl exti_deinit + .type exti_deinit, @function +exti_deinit: +.LFB2: + .file 1 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Source\\gd32vf103_exti.c" + .loc 1 47 1 + .cfi_startproc + addi sp,sp,-16 + .cfi_def_cfa_offset 16 + sw s0,12(sp) + .cfi_offset 8, -4 + addi s0,sp,16 + .cfi_def_cfa 8, 0 + .loc 1 49 6 + li a5,1073807360 + addi a5,a5,1024 + .loc 1 49 89 + sw zero,0(a5) + .loc 1 50 6 + li a5,1073807360 + addi a5,a5,1028 + .loc 1 50 89 + sw zero,0(a5) + .loc 1 51 6 + li a5,1073807360 + addi a5,a5,1032 + .loc 1 51 89 + sw zero,0(a5) + .loc 1 52 6 + li a5,1073807360 + addi a5,a5,1036 + .loc 1 52 89 + sw zero,0(a5) + .loc 1 53 6 + li a5,1073807360 + addi a5,a5,1040 + .loc 1 53 89 + sw zero,0(a5) + .loc 1 54 1 + nop + lw s0,12(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 16 + addi sp,sp,16 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE2: + .size exti_deinit, .-exti_deinit + .align 1 + .globl exti_init + .type exti_init, @function +exti_init: +.LFB3: + .loc 1 75 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + sw a1,-24(s0) + sw a2,-28(s0) + .loc 1 77 89 + li a5,1073807360 + addi a5,a5,1024 + lw a3,0(a5) + .loc 1 77 92 + lw a5,-20(s0) + not a4,a5 + .loc 1 77 89 + li a5,1073807360 + addi a5,a5,1024 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 78 89 + li a5,1073807360 + addi a5,a5,1028 + lw a3,0(a5) + .loc 1 78 92 + lw a5,-20(s0) + not a4,a5 + .loc 1 78 89 + li a5,1073807360 + addi a5,a5,1028 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 79 89 + li a5,1073807360 + addi a5,a5,1032 + lw a3,0(a5) + .loc 1 79 92 + lw a5,-20(s0) + not a4,a5 + .loc 1 79 89 + li a5,1073807360 + addi a5,a5,1032 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 80 89 + li a5,1073807360 + addi a5,a5,1036 + lw a3,0(a5) + .loc 1 80 92 + lw a5,-20(s0) + not a4,a5 + .loc 1 80 89 + li a5,1073807360 + addi a5,a5,1036 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 83 5 + lw a5,-24(s0) + beq a5,zero,.L3 + lw a4,-24(s0) + li a5,1 + beq a4,a5,.L4 + .loc 1 91 9 + j .L6 +.L3: + .loc 1 85 93 + li a5,1073807360 + addi a5,a5,1024 + lw a3,0(a5) + li a5,1073807360 + addi a5,a5,1024 + lw a4,-20(s0) + or a4,a3,a4 + sw a4,0(a5) + .loc 1 86 9 + j .L6 +.L4: + .loc 1 88 93 + li a5,1073807360 + addi a5,a5,1028 + lw a3,0(a5) + li a5,1073807360 + addi a5,a5,1028 + lw a4,-20(s0) + or a4,a3,a4 + sw a4,0(a5) + .loc 1 89 9 + nop +.L6: + .loc 1 95 5 + lw a4,-28(s0) + li a5,2 + beq a4,a5,.L7 + lw a4,-28(s0) + li a5,2 + bgtu a4,a5,.L12 + lw a5,-28(s0) + beq a5,zero,.L9 + lw a4,-28(s0) + li a5,1 + beq a4,a5,.L10 + .loc 1 110 9 + j .L12 +.L9: + .loc 1 97 93 + li a5,1073807360 + addi a5,a5,1032 + lw a3,0(a5) + li a5,1073807360 + addi a5,a5,1032 + lw a4,-20(s0) + or a4,a3,a4 + sw a4,0(a5) + .loc 1 98 93 + li a5,1073807360 + addi a5,a5,1036 + lw a3,0(a5) + .loc 1 98 96 + lw a5,-20(s0) + not a4,a5 + .loc 1 98 93 + li a5,1073807360 + addi a5,a5,1036 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 99 9 + j .L11 +.L10: + .loc 1 101 93 + li a5,1073807360 + addi a5,a5,1032 + lw a3,0(a5) + .loc 1 101 96 + lw a5,-20(s0) + not a4,a5 + .loc 1 101 93 + li a5,1073807360 + addi a5,a5,1032 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 102 93 + li a5,1073807360 + addi a5,a5,1036 + lw a3,0(a5) + li a5,1073807360 + addi a5,a5,1036 + lw a4,-20(s0) + or a4,a3,a4 + sw a4,0(a5) + .loc 1 103 9 + j .L11 +.L7: + .loc 1 105 93 + li a5,1073807360 + addi a5,a5,1032 + lw a3,0(a5) + li a5,1073807360 + addi a5,a5,1032 + lw a4,-20(s0) + or a4,a3,a4 + sw a4,0(a5) + .loc 1 106 93 + li a5,1073807360 + addi a5,a5,1036 + lw a3,0(a5) + li a5,1073807360 + addi a5,a5,1036 + lw a4,-20(s0) + or a4,a3,a4 + sw a4,0(a5) + .loc 1 107 9 + j .L11 +.L12: + .loc 1 110 9 + nop +.L11: + .loc 1 112 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE3: + .size exti_init, .-exti_init + .align 1 + .globl exti_interrupt_enable + .type exti_interrupt_enable, @function +exti_interrupt_enable: +.LFB4: + .loc 1 123 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 124 89 + li a5,1073807360 + addi a5,a5,1024 + lw a3,0(a5) + li a5,1073807360 + addi a5,a5,1024 + lw a4,-20(s0) + or a4,a3,a4 + sw a4,0(a5) + .loc 1 125 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE4: + .size exti_interrupt_enable, .-exti_interrupt_enable + .align 1 + .globl exti_event_enable + .type exti_event_enable, @function +exti_event_enable: +.LFB5: + .loc 1 136 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 137 89 + li a5,1073807360 + addi a5,a5,1028 + lw a3,0(a5) + li a5,1073807360 + addi a5,a5,1028 + lw a4,-20(s0) + or a4,a3,a4 + sw a4,0(a5) + .loc 1 138 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE5: + .size exti_event_enable, .-exti_event_enable + .align 1 + .globl exti_interrupt_disable + .type exti_interrupt_disable, @function +exti_interrupt_disable: +.LFB6: + .loc 1 149 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 150 89 + li a5,1073807360 + addi a5,a5,1024 + lw a3,0(a5) + .loc 1 150 92 + lw a5,-20(s0) + not a4,a5 + .loc 1 150 89 + li a5,1073807360 + addi a5,a5,1024 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 151 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE6: + .size exti_interrupt_disable, .-exti_interrupt_disable + .align 1 + .globl exti_event_disable + .type exti_event_disable, @function +exti_event_disable: +.LFB7: + .loc 1 162 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 163 89 + li a5,1073807360 + addi a5,a5,1028 + lw a3,0(a5) + .loc 1 163 92 + lw a5,-20(s0) + not a4,a5 + .loc 1 163 89 + li a5,1073807360 + addi a5,a5,1028 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 164 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE7: + .size exti_event_disable, .-exti_event_disable + .align 1 + .globl exti_flag_get + .type exti_flag_get, @function +exti_flag_get: +.LFB8: + .loc 1 175 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 176 20 + li a5,1073807360 + addi a5,a5,1044 + lw a4,0(a5) + .loc 1 176 103 + lw a5,-20(s0) + and a5,a4,a5 + .loc 1 176 8 + beq a5,zero,.L18 + .loc 1 177 16 + li a5,1 + j .L19 +.L18: + .loc 1 179 16 + li a5,0 +.L19: + .loc 1 181 1 + mv a0,a5 + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE8: + .size exti_flag_get, .-exti_flag_get + .align 1 + .globl exti_flag_clear + .type exti_flag_clear, @function +exti_flag_clear: +.LFB9: + .loc 1 192 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 193 6 + li a5,1073807360 + addi a5,a5,1044 + .loc 1 193 89 + lw a4,-20(s0) + sw a4,0(a5) + .loc 1 194 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE9: + .size exti_flag_clear, .-exti_flag_clear + .align 1 + .globl exti_interrupt_flag_get + .type exti_interrupt_flag_get, @function +exti_interrupt_flag_get: +.LFB10: + .loc 1 205 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 208 18 + li a5,1073807360 + addi a5,a5,1044 + lw a5,0(a5) + .loc 1 208 15 + lw a4,-36(s0) + and a5,a4,a5 + sw a5,-20(s0) + .loc 1 209 19 + li a5,1073807360 + addi a5,a5,1024 + lw a5,0(a5) + .loc 1 209 16 + lw a4,-36(s0) + and a5,a4,a5 + sw a5,-24(s0) + .loc 1 211 8 + lw a5,-20(s0) + beq a5,zero,.L22 + .loc 1 211 30 discriminator 1 + lw a5,-24(s0) + beq a5,zero,.L22 + .loc 1 212 16 + li a5,1 + j .L23 +.L22: + .loc 1 214 16 + li a5,0 +.L23: + .loc 1 216 1 + mv a0,a5 + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE10: + .size exti_interrupt_flag_get, .-exti_interrupt_flag_get + .align 1 + .globl exti_interrupt_flag_clear + .type exti_interrupt_flag_clear, @function +exti_interrupt_flag_clear: +.LFB11: + .loc 1 227 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 228 6 + li a5,1073807360 + addi a5,a5,1044 + .loc 1 228 89 + lw a4,-20(s0) + sw a4,0(a5) + .loc 1 229 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE11: + .size exti_interrupt_flag_clear, .-exti_interrupt_flag_clear + .align 1 + .globl exti_software_interrupt_enable + .type exti_software_interrupt_enable, @function +exti_software_interrupt_enable: +.LFB12: + .loc 1 240 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 241 89 + li a5,1073807360 + addi a5,a5,1040 + lw a3,0(a5) + li a5,1073807360 + addi a5,a5,1040 + lw a4,-20(s0) + or a4,a3,a4 + sw a4,0(a5) + .loc 1 242 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE12: + .size exti_software_interrupt_enable, .-exti_software_interrupt_enable + .align 1 + .globl exti_software_interrupt_disable + .type exti_software_interrupt_disable, @function +exti_software_interrupt_disable: +.LFB13: + .loc 1 253 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 254 89 + li a5,1073807360 + addi a5,a5,1040 + lw a3,0(a5) + .loc 1 254 92 + lw a5,-20(s0) + not a4,a5 + .loc 1 254 89 + li a5,1073807360 + addi a5,a5,1040 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 255 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE13: + .size exti_software_interrupt_disable, .-exti_software_interrupt_disable +.Letext0: + .file 2 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\machine\\_default_types.h" + .file 3 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_stdint.h" + .file 4 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral/gd32vf103.h" + .file 5 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_exti.h" + .section .debug_info,"",@progbits +.Ldebug_info0: + .4byte 0x3a2 + .2byte 0x4 + .4byte .Ldebug_abbrev0 + .byte 0x4 + .byte 0x1 + .4byte .LASF3228 + .byte 0xc + .4byte .LASF3229 + .4byte .LASF3230 + .4byte .Ltext0 + .4byte .Letext0-.Ltext0 + .4byte .Ldebug_line0 + .4byte .Ldebug_macro0 + .byte 0x2 + .byte 0x4 + .byte 0x7 + .4byte .LASF3170 + .byte 0x2 + .byte 0x1 + .byte 0x6 + .4byte .LASF3171 + .byte 0x2 + .byte 0x1 + .byte 0x8 + .4byte .LASF3172 + .byte 0x2 + .byte 0x2 + .byte 0x5 + .4byte .LASF3173 + .byte 0x2 + .byte 0x2 + .byte 0x7 + .4byte .LASF3174 + .byte 0x2 + .byte 0x4 + .byte 0x5 + .4byte .LASF3175 + .byte 0x3 + .4byte .LASF3179 + .byte 0x2 + .byte 0x4f + .byte 0x1b + .4byte 0x5f + .byte 0x2 + .byte 0x4 + .byte 0x7 + .4byte .LASF3176 + .byte 0x2 + .byte 0x8 + .byte 0x5 + .4byte .LASF3177 + .byte 0x2 + .byte 0x8 + .byte 0x7 + .4byte .LASF3178 + .byte 0x4 + .byte 0x4 + .byte 0x5 + .string "int" + .byte 0x3 + .4byte .LASF3180 + .byte 0x3 + .byte 0x30 + .byte 0x14 + .4byte 0x53 + .byte 0x5 + .byte 0x7 + .byte 0x4 + .4byte 0x29 + .byte 0x4 + .byte 0xb5 + .byte 0xe + .4byte 0xa2 + .byte 0x6 + .4byte .LASF3181 + .byte 0 + .byte 0x7 + .string "SET" + .byte 0x1 + .byte 0 + .byte 0x3 + .4byte .LASF3182 + .byte 0x4 + .byte 0xb5 + .byte 0x28 + .4byte 0x87 + .byte 0x2 + .byte 0x10 + .byte 0x4 + .4byte .LASF3183 + .byte 0x5 + .byte 0x7 + .byte 0x4 + .4byte 0x29 + .byte 0x5 + .byte 0xb5 + .byte 0xe + .4byte 0x147 + .byte 0x6 + .4byte .LASF3184 + .byte 0x1 + .byte 0x6 + .4byte .LASF3185 + .byte 0x2 + .byte 0x6 + .4byte .LASF3186 + .byte 0x4 + .byte 0x6 + .4byte .LASF3187 + .byte 0x8 + .byte 0x6 + .4byte .LASF3188 + .byte 0x10 + .byte 0x6 + .4byte .LASF3189 + .byte 0x20 + .byte 0x6 + .4byte .LASF3190 + .byte 0x40 + .byte 0x6 + .4byte .LASF3191 + .byte 0x80 + .byte 0x8 + .4byte .LASF3192 + .2byte 0x100 + .byte 0x8 + .4byte .LASF3193 + .2byte 0x200 + .byte 0x8 + .4byte .LASF3194 + .2byte 0x400 + .byte 0x8 + .4byte .LASF3195 + .2byte 0x800 + .byte 0x8 + .4byte .LASF3196 + .2byte 0x1000 + .byte 0x8 + .4byte .LASF3197 + .2byte 0x2000 + .byte 0x8 + .4byte .LASF3198 + .2byte 0x4000 + .byte 0x8 + .4byte .LASF3199 + .2byte 0x8000 + .byte 0x9 + .4byte .LASF3200 + .4byte 0x10000 + .byte 0x9 + .4byte .LASF3201 + .4byte 0x20000 + .byte 0x9 + .4byte .LASF3202 + .4byte 0x40000 + .byte 0 + .byte 0x3 + .4byte .LASF3203 + .byte 0x5 + .byte 0xc9 + .byte 0x3 + .4byte 0xb5 + .byte 0x5 + .byte 0x7 + .byte 0x4 + .4byte 0x29 + .byte 0x5 + .byte 0xcc + .byte 0xe + .4byte 0x16e + .byte 0x6 + .4byte .LASF3204 + .byte 0 + .byte 0x6 + .4byte .LASF3205 + .byte 0x1 + .byte 0 + .byte 0x3 + .4byte .LASF3206 + .byte 0x5 + .byte 0xcf + .byte 0x3 + .4byte 0x153 + .byte 0x5 + .byte 0x7 + .byte 0x4 + .4byte 0x29 + .byte 0x5 + .byte 0xd2 + .byte 0xe + .4byte 0x1a1 + .byte 0x6 + .4byte .LASF3207 + .byte 0 + .byte 0x6 + .4byte .LASF3208 + .byte 0x1 + .byte 0x6 + .4byte .LASF3209 + .byte 0x2 + .byte 0x6 + .4byte .LASF3210 + .byte 0x3 + .byte 0 + .byte 0x3 + .4byte .LASF3211 + .byte 0x5 + .byte 0xd7 + .byte 0x3 + .4byte 0x17a + .byte 0xa + .4byte .LASF3212 + .byte 0x1 + .byte 0xfc + .byte 0x6 + .4byte .LFB13 + .4byte .LFE13-.LFB13 + .byte 0x1 + .byte 0x9c + .4byte 0x1d3 + .byte 0xb + .4byte .LASF3214 + .byte 0x1 + .byte 0xfc + .byte 0x35 + .4byte 0x147 + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3213 + .byte 0x1 + .byte 0xef + .byte 0x6 + .4byte .LFB12 + .4byte .LFE12-.LFB12 + .byte 0x1 + .byte 0x9c + .4byte 0x1f9 + .byte 0xb + .4byte .LASF3214 + .byte 0x1 + .byte 0xef + .byte 0x34 + .4byte 0x147 + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3215 + .byte 0x1 + .byte 0xe2 + .byte 0x6 + .4byte .LFB11 + .4byte .LFE11-.LFB11 + .byte 0x1 + .byte 0x9c + .4byte 0x21f + .byte 0xb + .4byte .LASF3214 + .byte 0x1 + .byte 0xe2 + .byte 0x2f + .4byte 0x147 + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xc + .4byte .LASF3219 + .byte 0x1 + .byte 0xcc + .byte 0xc + .4byte 0xa2 + .4byte .LFB10 + .4byte .LFE10-.LFB10 + .byte 0x1 + .byte 0x9c + .4byte 0x267 + .byte 0xb + .4byte .LASF3214 + .byte 0x1 + .byte 0xcc + .byte 0x33 + .4byte 0x147 + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xd + .4byte .LASF3216 + .byte 0x1 + .byte 0xce + .byte 0xe + .4byte 0x7b + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0xd + .4byte .LASF3217 + .byte 0x1 + .byte 0xce + .byte 0x19 + .4byte 0x7b + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0 + .byte 0xa + .4byte .LASF3218 + .byte 0x1 + .byte 0xbf + .byte 0x6 + .4byte .LFB9 + .4byte .LFE9-.LFB9 + .byte 0x1 + .byte 0x9c + .4byte 0x28d + .byte 0xb + .4byte .LASF3214 + .byte 0x1 + .byte 0xbf + .byte 0x25 + .4byte 0x147 + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xc + .4byte .LASF3220 + .byte 0x1 + .byte 0xae + .byte 0xc + .4byte 0xa2 + .4byte .LFB8 + .4byte .LFE8-.LFB8 + .byte 0x1 + .byte 0x9c + .4byte 0x2b7 + .byte 0xb + .4byte .LASF3214 + .byte 0x1 + .byte 0xae + .byte 0x29 + .4byte 0x147 + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3221 + .byte 0x1 + .byte 0xa1 + .byte 0x6 + .4byte .LFB7 + .4byte .LFE7-.LFB7 + .byte 0x1 + .byte 0x9c + .4byte 0x2dd + .byte 0xb + .4byte .LASF3214 + .byte 0x1 + .byte 0xa1 + .byte 0x28 + .4byte 0x147 + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3222 + .byte 0x1 + .byte 0x94 + .byte 0x6 + .4byte .LFB6 + .4byte .LFE6-.LFB6 + .byte 0x1 + .byte 0x9c + .4byte 0x303 + .byte 0xb + .4byte .LASF3214 + .byte 0x1 + .byte 0x94 + .byte 0x2c + .4byte 0x147 + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3223 + .byte 0x1 + .byte 0x87 + .byte 0x6 + .4byte .LFB5 + .4byte .LFE5-.LFB5 + .byte 0x1 + .byte 0x9c + .4byte 0x329 + .byte 0xb + .4byte .LASF3214 + .byte 0x1 + .byte 0x87 + .byte 0x27 + .4byte 0x147 + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3224 + .byte 0x1 + .byte 0x7a + .byte 0x6 + .4byte .LFB4 + .4byte .LFE4-.LFB4 + .byte 0x1 + .byte 0x9c + .4byte 0x34f + .byte 0xb + .4byte .LASF3214 + .byte 0x1 + .byte 0x7a + .byte 0x2b + .4byte 0x147 + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3225 + .byte 0x1 + .byte 0x4a + .byte 0x6 + .4byte .LFB3 + .4byte .LFE3-.LFB3 + .byte 0x1 + .byte 0x9c + .4byte 0x393 + .byte 0xb + .4byte .LASF3214 + .byte 0x1 + .byte 0x4a + .byte 0x1f + .4byte 0x147 + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0xb + .4byte .LASF3226 + .byte 0x1 + .byte 0x4a + .byte 0x35 + .4byte 0x16e + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0xb + .4byte .LASF3227 + .byte 0x1 + .byte 0x4a + .byte 0x4f + .4byte 0x1a1 + .byte 0x2 + .byte 0x91 + .byte 0x64 + .byte 0 + .byte 0xe + .4byte .LASF3231 + .byte 0x1 + .byte 0x2e + .byte 0x6 + .4byte .LFB2 + .4byte .LFE2-.LFB2 + .byte 0x1 + .byte 0x9c + .byte 0 + .section .debug_abbrev,"",@progbits +.Ldebug_abbrev0: + .byte 0x1 + .byte 0x11 + .byte 0x1 + .byte 0x25 + .byte 0xe + .byte 0x13 + .byte 0xb + .byte 0x3 + .byte 0xe + .byte 0x1b + .byte 0xe + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x10 + .byte 0x17 + .byte 0x99,0x42 + .byte 0x17 + .byte 0 + .byte 0 + .byte 0x2 + .byte 0x24 + .byte 0 + .byte 0xb + .byte 0xb + .byte 0x3e + .byte 0xb + .byte 0x3 + .byte 0xe + .byte 0 + .byte 0 + .byte 0x3 + .byte 0x16 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x4 + .byte 0x24 + .byte 0 + .byte 0xb + .byte 0xb + .byte 0x3e + .byte 0xb + .byte 0x3 + .byte 0x8 + .byte 0 + .byte 0 + .byte 0x5 + .byte 0x4 + .byte 0x1 + .byte 0x3e + .byte 0xb + .byte 0xb + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x6 + .byte 0x28 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x1c + .byte 0xb + .byte 0 + .byte 0 + .byte 0x7 + .byte 0x28 + .byte 0 + .byte 0x3 + .byte 0x8 + .byte 0x1c + .byte 0xb + .byte 0 + .byte 0 + .byte 0x8 + .byte 0x28 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x1c + .byte 0x5 + .byte 0 + .byte 0 + .byte 0x9 + .byte 0x28 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x1c + .byte 0x6 + .byte 0 + .byte 0 + .byte 0xa + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0xb + .byte 0x5 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0xc + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x49 + .byte 0x13 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0xd + .byte 0x34 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0xe + .byte 0x2e + .byte 0 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0 + .byte 0 + .byte 0 + .section .debug_aranges,"",@progbits + .4byte 0x1c + .2byte 0x2 + .4byte .Ldebug_info0 + .byte 0x4 + .byte 0 + .2byte 0 + .2byte 0 + .4byte .Ltext0 + .4byte .Letext0-.Ltext0 + .4byte 0 + .4byte 0 + .section .debug_macro,"",@progbits +.Ldebug_macro0: + .2byte 0x4 + .byte 0x2 + .4byte .Ldebug_line0 + .byte 0x3 + .byte 0 + .byte 0x1 + .byte 0x5 + .byte 0x1 + .4byte .LASF0 + .byte 0x5 + .byte 0x2 + .4byte .LASF1 + .byte 0x5 + .byte 0x3 + .4byte .LASF2 + .byte 0x5 + .byte 0x4 + .4byte .LASF3 + .byte 0x5 + .byte 0x5 + .4byte .LASF4 + .byte 0x5 + .byte 0x6 + .4byte .LASF5 + .byte 0x5 + .byte 0x7 + .4byte .LASF6 + .byte 0x5 + .byte 0x8 + .4byte .LASF7 + .byte 0x5 + .byte 0x9 + .4byte .LASF8 + .byte 0x5 + .byte 0xa + .4byte .LASF9 + .byte 0x5 + .byte 0xb + .4byte .LASF10 + .byte 0x5 + .byte 0xc + .4byte .LASF11 + .byte 0x5 + .byte 0xd + .4byte .LASF12 + .byte 0x5 + .byte 0xe + .4byte .LASF13 + .byte 0x5 + .byte 0xf + .4byte .LASF14 + .byte 0x5 + .byte 0x10 + .4byte .LASF15 + .byte 0x5 + .byte 0x11 + .4byte .LASF16 + .byte 0x5 + .byte 0x12 + .4byte .LASF17 + .byte 0x5 + .byte 0x13 + .4byte .LASF18 + .byte 0x5 + .byte 0x14 + .4byte .LASF19 + .byte 0x5 + .byte 0x15 + .4byte .LASF20 + .byte 0x5 + .byte 0x16 + .4byte .LASF21 + .byte 0x5 + .byte 0x17 + .4byte .LASF22 + .byte 0x5 + .byte 0x18 + .4byte .LASF23 + .byte 0x5 + .byte 0x19 + .4byte .LASF24 + .byte 0x5 + .byte 0x1a + .4byte .LASF25 + .byte 0x5 + .byte 0x1b + .4byte .LASF26 + .byte 0x5 + .byte 0x1c + .4byte .LASF27 + .byte 0x5 + .byte 0x1d + .4byte .LASF28 + .byte 0x5 + .byte 0x1e + .4byte .LASF29 + .byte 0x5 + .byte 0x1f + .4byte .LASF30 + .byte 0x5 + .byte 0x20 + .4byte .LASF31 + .byte 0x5 + .byte 0x21 + .4byte .LASF32 + .byte 0x5 + .byte 0x22 + .4byte .LASF33 + .byte 0x5 + .byte 0x23 + .4byte .LASF34 + .byte 0x5 + .byte 0x24 + .4byte .LASF35 + .byte 0x5 + .byte 0x25 + .4byte .LASF36 + .byte 0x5 + .byte 0x26 + .4byte .LASF37 + .byte 0x5 + .byte 0x27 + .4byte .LASF38 + .byte 0x5 + .byte 0x28 + .4byte .LASF39 + .byte 0x5 + .byte 0x29 + .4byte .LASF40 + .byte 0x5 + .byte 0x2a + .4byte .LASF41 + .byte 0x5 + .byte 0x2b + .4byte .LASF42 + .byte 0x5 + .byte 0x2c + .4byte .LASF43 + .byte 0x5 + .byte 0x2d + .4byte .LASF44 + .byte 0x5 + .byte 0x2e + .4byte .LASF45 + .byte 0x5 + .byte 0x2f + .4byte .LASF46 + .byte 0x5 + .byte 0x30 + .4byte .LASF47 + .byte 0x5 + .byte 0x31 + .4byte .LASF48 + .byte 0x5 + .byte 0x32 + .4byte .LASF49 + .byte 0x5 + .byte 0x33 + .4byte .LASF50 + .byte 0x5 + .byte 0x34 + .4byte .LASF51 + .byte 0x5 + .byte 0x35 + .4byte .LASF52 + .byte 0x5 + .byte 0x36 + .4byte .LASF53 + .byte 0x5 + .byte 0x37 + .4byte .LASF54 + .byte 0x5 + .byte 0x38 + .4byte .LASF55 + .byte 0x5 + .byte 0x39 + .4byte .LASF56 + .byte 0x5 + .byte 0x3a + .4byte .LASF57 + .byte 0x5 + .byte 0x3b + .4byte .LASF58 + .byte 0x5 + .byte 0x3c + .4byte .LASF59 + .byte 0x5 + .byte 0x3d + .4byte .LASF60 + .byte 0x5 + .byte 0x3e + .4byte .LASF61 + .byte 0x5 + .byte 0x3f + .4byte .LASF62 + .byte 0x5 + .byte 0x40 + .4byte .LASF63 + .byte 0x5 + .byte 0x41 + .4byte .LASF64 + .byte 0x5 + .byte 0x42 + .4byte .LASF65 + .byte 0x5 + .byte 0x43 + .4byte .LASF66 + .byte 0x5 + .byte 0x44 + .4byte .LASF67 + .byte 0x5 + .byte 0x45 + .4byte .LASF68 + .byte 0x5 + .byte 0x46 + .4byte .LASF69 + .byte 0x5 + .byte 0x47 + .4byte .LASF70 + .byte 0x5 + .byte 0x48 + .4byte .LASF71 + .byte 0x5 + .byte 0x49 + .4byte .LASF72 + .byte 0x5 + .byte 0x4a + .4byte .LASF73 + .byte 0x5 + .byte 0x4b + .4byte .LASF74 + .byte 0x5 + .byte 0x4c + .4byte .LASF75 + .byte 0x5 + .byte 0x4d + .4byte .LASF76 + .byte 0x5 + .byte 0x4e + .4byte .LASF77 + .byte 0x5 + .byte 0x4f + .4byte .LASF78 + .byte 0x5 + .byte 0x50 + .4byte .LASF79 + .byte 0x5 + .byte 0x51 + .4byte .LASF80 + .byte 0x5 + .byte 0x52 + .4byte .LASF81 + .byte 0x5 + .byte 0x53 + .4byte .LASF82 + .byte 0x5 + .byte 0x54 + .4byte .LASF83 + .byte 0x5 + .byte 0x55 + .4byte .LASF84 + .byte 0x5 + .byte 0x56 + .4byte .LASF85 + .byte 0x5 + .byte 0x57 + .4byte .LASF86 + .byte 0x5 + .byte 0x58 + .4byte .LASF87 + .byte 0x5 + .byte 0x59 + .4byte .LASF88 + .byte 0x5 + .byte 0x5a + .4byte .LASF89 + .byte 0x5 + .byte 0x5b + .4byte .LASF90 + .byte 0x5 + .byte 0x5c + .4byte .LASF91 + .byte 0x5 + .byte 0x5d + .4byte .LASF92 + .byte 0x5 + .byte 0x5e + .4byte .LASF93 + .byte 0x5 + .byte 0x5f + .4byte .LASF94 + .byte 0x5 + .byte 0x60 + .4byte .LASF95 + .byte 0x5 + .byte 0x61 + .4byte .LASF96 + .byte 0x5 + .byte 0x62 + .4byte .LASF97 + .byte 0x5 + .byte 0x63 + .4byte .LASF98 + .byte 0x5 + .byte 0x64 + .4byte .LASF99 + .byte 0x5 + .byte 0x65 + .4byte .LASF100 + .byte 0x5 + .byte 0x66 + .4byte .LASF101 + .byte 0x5 + .byte 0x67 + .4byte .LASF102 + .byte 0x5 + .byte 0x68 + .4byte .LASF103 + .byte 0x5 + .byte 0x69 + .4byte .LASF104 + .byte 0x5 + .byte 0x6a + .4byte .LASF105 + .byte 0x5 + .byte 0x6b + .4byte .LASF106 + .byte 0x5 + .byte 0x6c + .4byte .LASF107 + .byte 0x5 + .byte 0x6d + .4byte .LASF108 + .byte 0x5 + .byte 0x6e + .4byte .LASF109 + .byte 0x5 + .byte 0x6f + .4byte .LASF110 + .byte 0x5 + .byte 0x70 + .4byte .LASF111 + .byte 0x5 + .byte 0x71 + .4byte .LASF112 + .byte 0x5 + .byte 0x72 + .4byte .LASF113 + .byte 0x5 + .byte 0x73 + .4byte .LASF114 + .byte 0x5 + .byte 0x74 + .4byte .LASF115 + .byte 0x5 + .byte 0x75 + .4byte .LASF116 + .byte 0x5 + .byte 0x76 + .4byte .LASF117 + .byte 0x5 + .byte 0x77 + .4byte .LASF118 + .byte 0x5 + .byte 0x78 + .4byte .LASF119 + .byte 0x5 + .byte 0x79 + .4byte .LASF120 + .byte 0x5 + .byte 0x7a + .4byte .LASF121 + .byte 0x5 + .byte 0x7b + .4byte .LASF122 + .byte 0x5 + .byte 0x7c + .4byte .LASF123 + .byte 0x5 + .byte 0x7d + .4byte .LASF124 + .byte 0x5 + .byte 0x7e + .4byte .LASF125 + .byte 0x5 + .byte 0x7f + .4byte .LASF126 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF127 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF128 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF129 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF130 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF131 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF132 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF133 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF134 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF135 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF136 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF137 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF138 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF139 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF140 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF141 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF142 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF143 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF144 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF145 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF146 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF147 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF148 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF149 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF150 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF151 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF152 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF153 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF154 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF155 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF156 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF157 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF158 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF159 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF160 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF161 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF162 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF163 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF164 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF165 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF166 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF167 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF168 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF169 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF170 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF171 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF172 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF173 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF174 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF175 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF176 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF177 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF178 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF179 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF180 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF181 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF182 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF183 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF184 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF185 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF186 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF187 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF188 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF189 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF190 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF191 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF192 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF193 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF194 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF195 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF196 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF197 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF198 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF199 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF200 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF201 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF202 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF203 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF204 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF205 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF206 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF207 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF208 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF209 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF210 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF211 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF212 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF213 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF214 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF215 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF216 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF217 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF218 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF219 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF220 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF221 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF222 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF223 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF224 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF225 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF226 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF227 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF228 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF229 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF230 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF231 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF232 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF233 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF234 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF235 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF236 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF237 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF238 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF239 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF240 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF241 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF242 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF243 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF244 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF245 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF246 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF247 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF248 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF249 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF250 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF251 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF252 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF253 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF254 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF255 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF256 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF257 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF258 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF259 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF260 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF261 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF262 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF263 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF264 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF265 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF266 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF267 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF268 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF269 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF270 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF271 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF272 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF273 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF274 + .byte 0x5 + .byte 0x94,0x2 + .4byte .LASF275 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF276 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF277 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF278 + .byte 0x5 + .byte 0x98,0x2 + .4byte .LASF279 + .byte 0x5 + .byte 0x99,0x2 + .4byte .LASF280 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF281 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF282 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF283 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF284 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF285 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF286 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF287 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF288 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF289 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF290 + .byte 0x5 + .byte 0xa4,0x2 + .4byte .LASF291 + .byte 0x5 + .byte 0xa5,0x2 + .4byte .LASF292 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF293 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF294 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF295 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF296 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF297 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF298 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF299 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF300 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF301 + .byte 0x5 + .byte 0xaf,0x2 + .4byte .LASF302 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF303 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF304 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF305 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF306 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF307 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF308 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF309 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF310 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF311 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF312 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF313 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF314 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF315 + .byte 0x5 + .byte 0xbd,0x2 + .4byte .LASF316 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF317 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF318 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF319 + .byte 0x5 + .byte 0x1 + .4byte .LASF320 + .byte 0x5 + .byte 0x2 + .4byte .LASF321 + .byte 0x5 + .byte 0x3 + .4byte .LASF322 + .byte 0x5 + .byte 0x4 + .4byte .LASF323 + .byte 0x5 + .byte 0x5 + .4byte .LASF324 + .byte 0x5 + .byte 0x6 + .4byte .LASF325 + .byte 0x5 + .byte 0x7 + .4byte .LASF326 + .byte 0x5 + .byte 0x8 + .4byte .LASF327 + .byte 0x5 + .byte 0x9 + .4byte .LASF328 + .byte 0x3 + .byte 0x24 + .byte 0x5 + .byte 0x5 + .byte 0x25 + .4byte .LASF329 + .byte 0x3 + .byte 0x27 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro2 + .file 6 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral/system_gd32vf103.h" + .byte 0x3 + .byte 0xaf,0x1 + .byte 0x6 + .byte 0x5 + .byte 0x28 + .4byte .LASF341 + .file 7 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\stdint.h" + .byte 0x3 + .byte 0x2e + .byte 0x7 + .byte 0x5 + .byte 0xa + .4byte .LASF342 + .byte 0x3 + .byte 0xc + .byte 0x2 + .byte 0x5 + .byte 0x6 + .4byte .LASF343 + .file 8 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\features.h" + .byte 0x3 + .byte 0x8 + .byte 0x8 + .byte 0x5 + .byte 0x16 + .4byte .LASF344 + .file 9 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\_newlib_version.h" + .byte 0x3 + .byte 0x1c + .byte 0x9 + .byte 0x7 + .4byte .Ldebug_macro3 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro5 + .byte 0x4 + .file 10 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_intsup.h" + .byte 0x3 + .byte 0xd + .byte 0xa + .byte 0x7 + .4byte .Ldebug_macro6 + .byte 0x4 + .byte 0x3 + .byte 0xe + .byte 0x3 + .byte 0x7 + .4byte .Ldebug_macro7 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro8 + .byte 0x4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro9 + .file 11 "board/gd32vf103_libopt.h" + .byte 0x3 + .byte 0xec,0x1 + .byte 0xb + .byte 0x5 + .byte 0x25 + .4byte .LASF527 + .file 12 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_adc.h" + .byte 0x3 + .byte 0x27 + .byte 0xc + .byte 0x5 + .byte 0x25 + .4byte .LASF528 + .byte 0x3 + .byte 0x27 + .byte 0x4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro10 + .byte 0x4 + .file 13 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_bkp.h" + .byte 0x3 + .byte 0x28 + .byte 0xd + .byte 0x7 + .4byte .Ldebug_macro11 + .byte 0x4 + .file 14 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_can.h" + .byte 0x3 + .byte 0x29 + .byte 0xe + .byte 0x7 + .4byte .Ldebug_macro12 + .byte 0x4 + .file 15 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_crc.h" + .byte 0x3 + .byte 0x2a + .byte 0xf + .byte 0x7 + .4byte .Ldebug_macro13 + .byte 0x4 + .file 16 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dac.h" + .byte 0x3 + .byte 0x2b + .byte 0x10 + .byte 0x7 + .4byte .Ldebug_macro14 + .byte 0x4 + .file 17 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dma.h" + .byte 0x3 + .byte 0x2c + .byte 0x11 + .byte 0x7 + .4byte .Ldebug_macro15 + .byte 0x4 + .file 18 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_eclic.h" + .byte 0x3 + .byte 0x2d + .byte 0x12 + .byte 0x7 + .4byte .Ldebug_macro16 + .byte 0x4 + .file 19 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_exmc.h" + .byte 0x3 + .byte 0x2e + .byte 0x13 + .byte 0x7 + .4byte .Ldebug_macro17 + .byte 0x4 + .byte 0x3 + .byte 0x2f + .byte 0x5 + .byte 0x4 + .file 20 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_fmc.h" + .byte 0x3 + .byte 0x30 + .byte 0x14 + .byte 0x7 + .4byte .Ldebug_macro18 + .byte 0x4 + .file 21 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_gpio.h" + .byte 0x3 + .byte 0x31 + .byte 0x15 + .byte 0x7 + .4byte .Ldebug_macro19 + .byte 0x4 + .file 22 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_i2c.h" + .byte 0x3 + .byte 0x32 + .byte 0x16 + .byte 0x7 + .4byte .Ldebug_macro20 + .byte 0x4 + .file 23 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_fwdgt.h" + .byte 0x3 + .byte 0x33 + .byte 0x17 + .byte 0x7 + .4byte .Ldebug_macro21 + .byte 0x4 + .file 24 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dbg.h" + .byte 0x3 + .byte 0x34 + .byte 0x18 + .byte 0x7 + .4byte .Ldebug_macro22 + .byte 0x4 + .file 25 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_pmu.h" + .byte 0x3 + .byte 0x35 + .byte 0x19 + .byte 0x7 + .4byte .Ldebug_macro23 + .byte 0x4 + .file 26 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_rcu.h" + .byte 0x3 + .byte 0x36 + .byte 0x1a + .byte 0x7 + .4byte .Ldebug_macro24 + .byte 0x4 + .file 27 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_rtc.h" + .byte 0x3 + .byte 0x37 + .byte 0x1b + .byte 0x7 + .4byte .Ldebug_macro25 + .byte 0x4 + .file 28 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_spi.h" + .byte 0x3 + .byte 0x38 + .byte 0x1c + .byte 0x7 + .4byte .Ldebug_macro26 + .byte 0x4 + .file 29 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_timer.h" + .byte 0x3 + .byte 0x39 + .byte 0x1d + .byte 0x7 + .4byte .Ldebug_macro27 + .byte 0x4 + .file 30 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_usart.h" + .byte 0x3 + .byte 0x3a + .byte 0x1e + .byte 0x7 + .4byte .Ldebug_macro28 + .byte 0x4 + .file 31 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_wwdgt.h" + .byte 0x3 + .byte 0x3b + .byte 0x1f + .byte 0x7 + .4byte .Ldebug_macro29 + .byte 0x4 + .file 32 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_func.h" + .byte 0x3 + .byte 0x3c + .byte 0x20 + .byte 0x5 + .byte 0x4 + .4byte .LASF2953 + .file 33 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\lib\\gcc\\riscv-none-embed\\10.2.0\\include\\stddef.h" + .byte 0x3 + .byte 0x7 + .byte 0x21 + .byte 0x7 + .4byte .Ldebug_macro30 + .byte 0x4 + .file 34 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_timer.h" + .byte 0x3 + .byte 0x8 + .byte 0x22 + .byte 0x7 + .4byte .Ldebug_macro31 + .byte 0x4 + .file 35 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_eclic.h" + .byte 0x3 + .byte 0x9 + .byte 0x23 + .byte 0x5 + .byte 0x4 + .4byte .LASF3017 + .file 36 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/riscv_const.h" + .byte 0x3 + .byte 0x6 + .byte 0x24 + .byte 0x7 + .4byte .Ldebug_macro32 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro33 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro34 + .byte 0x4 + .byte 0x4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro35 + .byte 0x4 + .byte 0x5 + .byte 0x26 + .4byte .LASF3169 + .byte 0x4 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103.h.37.6b141d903229e2235d36f2860fb69b6b,comdat +.Ldebug_macro2: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF330 + .byte 0x5 + .byte 0x35 + .4byte .LASF331 + .byte 0x5 + .byte 0x37 + .4byte .LASF332 + .byte 0x5 + .byte 0x38 + .4byte .LASF333 + .byte 0x5 + .byte 0x40 + .4byte .LASF334 + .byte 0x5 + .byte 0x41 + .4byte .LASF335 + .byte 0x5 + .byte 0x49 + .4byte .LASF336 + .byte 0x5 + .byte 0x4e + .4byte .LASF337 + .byte 0x5 + .byte 0x53 + .4byte .LASF338 + .byte 0x5 + .byte 0x58 + .4byte .LASF339 + .byte 0x5 + .byte 0x5d + .4byte .LASF340 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._newlib_version.h.4.bfdf54b0af045d4a71376ae00f63a22c,comdat +.Ldebug_macro3: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4 + .4byte .LASF345 + .byte 0x5 + .byte 0x6 + .4byte .LASF346 + .byte 0x5 + .byte 0x7 + .4byte .LASF347 + .byte 0x5 + .byte 0x8 + .4byte .LASF348 + .byte 0x5 + .byte 0x9 + .4byte .LASF349 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.features.h.33.4ac7543a40bbf4e11e60e29e36a3b28e,comdat +.Ldebug_macro4: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x21 + .4byte .LASF350 + .byte 0x5 + .byte 0x28 + .4byte .LASF351 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF352 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF353 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF354 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF355 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF356 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF357 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF358 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF359 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF360 + .byte 0x5 + .byte 0xca,0x2 + .4byte .LASF361 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._default_types.h.15.247e5cd201eca3442cbf5404108c4935,comdat +.Ldebug_macro5: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xf + .4byte .LASF362 + .byte 0x5 + .byte 0x1a + .4byte .LASF363 + .byte 0x5 + .byte 0x21 + .4byte .LASF364 + .byte 0x5 + .byte 0x2f + .4byte .LASF365 + .byte 0x5 + .byte 0x3d + .4byte .LASF366 + .byte 0x5 + .byte 0x53 + .4byte .LASF367 + .byte 0x5 + .byte 0x6d + .4byte .LASF368 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF369 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF370 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF371 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF372 + .byte 0x6 + .byte 0xf4,0x1 + .4byte .LASF373 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._intsup.h.10.48bafbb683905c4daa4565a85aeeb264,comdat +.Ldebug_macro6: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xa + .4byte .LASF374 + .byte 0x5 + .byte 0x10 + .4byte .LASF375 + .byte 0x6 + .byte 0x2b + .4byte .LASF376 + .byte 0x6 + .byte 0x2c + .4byte .LASF377 + .byte 0x6 + .byte 0x2d + .4byte .LASF378 + .byte 0x6 + .byte 0x2e + .4byte .LASF379 + .byte 0x2 + .byte 0x2f + .string "int" + .byte 0x6 + .byte 0x30 + .4byte .LASF380 + .byte 0x6 + .byte 0x31 + .4byte .LASF381 + .byte 0x6 + .byte 0x32 + .4byte .LASF382 + .byte 0x5 + .byte 0x33 + .4byte .LASF383 + .byte 0x5 + .byte 0x34 + .4byte .LASF384 + .byte 0x5 + .byte 0x35 + .4byte .LASF385 + .byte 0x5 + .byte 0x36 + .4byte .LASF386 + .byte 0x5 + .byte 0x37 + .4byte .LASF387 + .byte 0x5 + .byte 0x38 + .4byte .LASF388 + .byte 0x5 + .byte 0x39 + .4byte .LASF389 + .byte 0x5 + .byte 0x3a + .4byte .LASF390 + .byte 0x5 + .byte 0x43 + .4byte .LASF391 + .byte 0x5 + .byte 0x4a + .4byte .LASF392 + .byte 0x5 + .byte 0x52 + .4byte .LASF393 + .byte 0x5 + .byte 0x5d + .4byte .LASF394 + .byte 0x5 + .byte 0x68 + .4byte .LASF395 + .byte 0x5 + .byte 0x71 + .4byte .LASF396 + .byte 0x5 + .byte 0x78 + .4byte .LASF397 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF398 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF399 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF400 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF401 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF402 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF403 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF404 + .byte 0x6 + .byte 0xb8,0x1 + .4byte .LASF376 + .byte 0x6 + .byte 0xb9,0x1 + .4byte .LASF377 + .byte 0x6 + .byte 0xba,0x1 + .4byte .LASF378 + .byte 0x6 + .byte 0xbb,0x1 + .4byte .LASF379 + .byte 0x2 + .byte 0xbc,0x1 + .string "int" + .byte 0x6 + .byte 0xbd,0x1 + .4byte .LASF382 + .byte 0x6 + .byte 0xc2,0x1 + .4byte .LASF380 + .byte 0x6 + .byte 0xc3,0x1 + .4byte .LASF381 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._stdint.h.10.c24fa3af3bc1706662bb5593a907e841,comdat +.Ldebug_macro7: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xa + .4byte .LASF405 + .byte 0x5 + .byte 0x15 + .4byte .LASF406 + .byte 0x5 + .byte 0x19 + .4byte .LASF407 + .byte 0x5 + .byte 0x1b + .4byte .LASF408 + .byte 0x5 + .byte 0x21 + .4byte .LASF409 + .byte 0x5 + .byte 0x25 + .4byte .LASF410 + .byte 0x5 + .byte 0x27 + .4byte .LASF411 + .byte 0x5 + .byte 0x2d + .4byte .LASF412 + .byte 0x5 + .byte 0x31 + .4byte .LASF413 + .byte 0x5 + .byte 0x33 + .4byte .LASF414 + .byte 0x5 + .byte 0x39 + .4byte .LASF415 + .byte 0x5 + .byte 0x3d + .4byte .LASF416 + .byte 0x5 + .byte 0x3f + .4byte .LASF417 + .byte 0x5 + .byte 0x44 + .4byte .LASF418 + .byte 0x5 + .byte 0x49 + .4byte .LASF419 + .byte 0x5 + .byte 0x4e + .4byte .LASF420 + .byte 0x5 + .byte 0x53 + .4byte .LASF421 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stdint.h.23.d53047a68f4a85177f80b422d52785ed,comdat +.Ldebug_macro8: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x17 + .4byte .LASF422 + .byte 0x5 + .byte 0x1d + .4byte .LASF423 + .byte 0x5 + .byte 0x23 + .4byte .LASF424 + .byte 0x5 + .byte 0x29 + .4byte .LASF425 + .byte 0x5 + .byte 0x35 + .4byte .LASF426 + .byte 0x5 + .byte 0x3f + .4byte .LASF427 + .byte 0x5 + .byte 0x49 + .4byte .LASF428 + .byte 0x5 + .byte 0x53 + .4byte .LASF429 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF430 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF431 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF432 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF433 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF434 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF435 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF436 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF437 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF438 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF439 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF440 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF441 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF442 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF443 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF444 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF445 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF446 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF447 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF448 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF449 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF450 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF451 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF452 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF453 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF454 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF455 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF456 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF457 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF458 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF459 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF460 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF461 + .byte 0x5 + .byte 0x98,0x2 + .4byte .LASF462 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF463 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF464 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF465 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF466 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF467 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF468 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF469 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF470 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF471 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF472 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF473 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF474 + .byte 0x5 + .byte 0xe2,0x2 + .4byte .LASF475 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF476 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF477 + .byte 0x5 + .byte 0xf6,0x2 + .4byte .LASF478 + .byte 0x5 + .byte 0x80,0x3 + .4byte .LASF479 + .byte 0x5 + .byte 0x85,0x3 + .4byte .LASF480 + .byte 0x5 + .byte 0x8c,0x3 + .4byte .LASF481 + .byte 0x5 + .byte 0x8d,0x3 + .4byte .LASF482 + .byte 0x5 + .byte 0x98,0x3 + .4byte .LASF483 + .byte 0x5 + .byte 0x99,0x3 + .4byte .LASF484 + .byte 0x5 + .byte 0xa4,0x3 + .4byte .LASF485 + .byte 0x5 + .byte 0xa5,0x3 + .4byte .LASF486 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF487 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF488 + .byte 0x5 + .byte 0xc1,0x3 + .4byte .LASF489 + .byte 0x5 + .byte 0xc2,0x3 + .4byte .LASF490 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103.h.185.cffba7180870c0512d04c724c6463ab0,comdat +.Ldebug_macro9: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF491 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF492 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF493 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF494 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF495 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF496 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF497 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF498 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF499 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF500 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF501 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF502 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF503 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF504 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF505 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF506 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF507 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF508 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF509 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF510 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF511 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF512 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF513 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF514 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF515 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF516 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF517 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF518 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF519 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF520 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF521 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF522 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF523 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF524 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF525 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF526 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_adc.h.42.14cb8f90e4b5922f8a25d63c78535a21,comdat +.Ldebug_macro10: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x2a + .4byte .LASF529 + .byte 0x5 + .byte 0x2b + .4byte .LASF530 + .byte 0x5 + .byte 0x2e + .4byte .LASF531 + .byte 0x5 + .byte 0x2f + .4byte .LASF532 + .byte 0x5 + .byte 0x30 + .4byte .LASF533 + .byte 0x5 + .byte 0x31 + .4byte .LASF534 + .byte 0x5 + .byte 0x32 + .4byte .LASF535 + .byte 0x5 + .byte 0x33 + .4byte .LASF536 + .byte 0x5 + .byte 0x34 + .4byte .LASF537 + .byte 0x5 + .byte 0x35 + .4byte .LASF538 + .byte 0x5 + .byte 0x36 + .4byte .LASF539 + .byte 0x5 + .byte 0x37 + .4byte .LASF540 + .byte 0x5 + .byte 0x38 + .4byte .LASF541 + .byte 0x5 + .byte 0x39 + .4byte .LASF542 + .byte 0x5 + .byte 0x3a + .4byte .LASF543 + .byte 0x5 + .byte 0x3b + .4byte .LASF544 + .byte 0x5 + .byte 0x3c + .4byte .LASF545 + .byte 0x5 + .byte 0x3d + .4byte .LASF546 + .byte 0x5 + .byte 0x3e + .4byte .LASF547 + .byte 0x5 + .byte 0x3f + .4byte .LASF548 + .byte 0x5 + .byte 0x40 + .4byte .LASF549 + .byte 0x5 + .byte 0x41 + .4byte .LASF550 + .byte 0x5 + .byte 0x42 + .4byte .LASF551 + .byte 0x5 + .byte 0x46 + .4byte .LASF552 + .byte 0x5 + .byte 0x47 + .4byte .LASF553 + .byte 0x5 + .byte 0x48 + .4byte .LASF554 + .byte 0x5 + .byte 0x49 + .4byte .LASF555 + .byte 0x5 + .byte 0x4a + .4byte .LASF556 + .byte 0x5 + .byte 0x4d + .4byte .LASF557 + .byte 0x5 + .byte 0x4e + .4byte .LASF558 + .byte 0x5 + .byte 0x4f + .4byte .LASF559 + .byte 0x5 + .byte 0x50 + .4byte .LASF560 + .byte 0x5 + .byte 0x51 + .4byte .LASF561 + .byte 0x5 + .byte 0x52 + .4byte .LASF562 + .byte 0x5 + .byte 0x53 + .4byte .LASF563 + .byte 0x5 + .byte 0x54 + .4byte .LASF564 + .byte 0x5 + .byte 0x55 + .4byte .LASF565 + .byte 0x5 + .byte 0x56 + .4byte .LASF566 + .byte 0x5 + .byte 0x57 + .4byte .LASF567 + .byte 0x5 + .byte 0x58 + .4byte .LASF568 + .byte 0x5 + .byte 0x59 + .4byte .LASF569 + .byte 0x5 + .byte 0x5c + .4byte .LASF570 + .byte 0x5 + .byte 0x5d + .4byte .LASF571 + .byte 0x5 + .byte 0x5e + .4byte .LASF572 + .byte 0x5 + .byte 0x5f + .4byte .LASF573 + .byte 0x5 + .byte 0x60 + .4byte .LASF574 + .byte 0x5 + .byte 0x61 + .4byte .LASF575 + .byte 0x5 + .byte 0x62 + .4byte .LASF576 + .byte 0x5 + .byte 0x63 + .4byte .LASF577 + .byte 0x5 + .byte 0x64 + .4byte .LASF578 + .byte 0x5 + .byte 0x65 + .4byte .LASF579 + .byte 0x5 + .byte 0x66 + .4byte .LASF580 + .byte 0x5 + .byte 0x67 + .4byte .LASF581 + .byte 0x5 + .byte 0x68 + .4byte .LASF582 + .byte 0x5 + .byte 0x6b + .4byte .LASF583 + .byte 0x5 + .byte 0x6e + .4byte .LASF584 + .byte 0x5 + .byte 0x71 + .4byte .LASF585 + .byte 0x5 + .byte 0x74 + .4byte .LASF586 + .byte 0x5 + .byte 0x77 + .4byte .LASF587 + .byte 0x5 + .byte 0x78 + .4byte .LASF588 + .byte 0x5 + .byte 0x7b + .4byte .LASF589 + .byte 0x5 + .byte 0x7c + .4byte .LASF590 + .byte 0x5 + .byte 0x7f + .4byte .LASF591 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF592 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF593 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF594 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF595 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF596 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF597 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF598 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF599 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF600 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF601 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF602 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF603 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF604 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF605 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF606 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF607 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF608 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF609 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF610 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF611 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF612 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF613 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF614 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF615 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF616 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF617 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF618 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF619 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF620 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF621 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF622 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF623 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF624 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF625 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF626 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF627 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF628 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF629 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF630 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF631 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF632 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF633 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF634 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF635 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF636 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF637 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF638 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF639 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF640 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF641 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF642 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF643 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF644 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF645 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF646 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF647 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF648 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF649 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF650 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF651 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF652 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF653 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF654 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF655 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF656 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF657 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF658 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF659 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF660 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF661 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF662 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF663 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF664 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF665 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF666 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF667 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF668 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF669 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF670 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF671 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF672 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF673 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF674 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF675 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF676 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF677 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF678 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF679 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF680 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF681 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF682 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF683 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF684 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF685 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF686 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF687 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF688 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF689 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF690 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF691 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF692 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF693 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF694 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF695 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF696 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF697 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF698 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF699 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF700 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF701 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF702 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF703 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF704 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF705 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF706 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF707 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF708 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF709 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF710 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_bkp.h.37.565cdaf530a41cd40ed21e5fda39a6ed,comdat +.Ldebug_macro11: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF711 + .byte 0x5 + .byte 0x2a + .4byte .LASF712 + .byte 0x5 + .byte 0x2d + .4byte .LASF713 + .byte 0x5 + .byte 0x2e + .4byte .LASF714 + .byte 0x5 + .byte 0x2f + .4byte .LASF715 + .byte 0x5 + .byte 0x30 + .4byte .LASF716 + .byte 0x5 + .byte 0x31 + .4byte .LASF717 + .byte 0x5 + .byte 0x32 + .4byte .LASF718 + .byte 0x5 + .byte 0x33 + .4byte .LASF719 + .byte 0x5 + .byte 0x34 + .4byte .LASF720 + .byte 0x5 + .byte 0x35 + .4byte .LASF721 + .byte 0x5 + .byte 0x36 + .4byte .LASF722 + .byte 0x5 + .byte 0x37 + .4byte .LASF723 + .byte 0x5 + .byte 0x38 + .4byte .LASF724 + .byte 0x5 + .byte 0x39 + .4byte .LASF725 + .byte 0x5 + .byte 0x3a + .4byte .LASF726 + .byte 0x5 + .byte 0x3b + .4byte .LASF727 + .byte 0x5 + .byte 0x3c + .4byte .LASF728 + .byte 0x5 + .byte 0x3d + .4byte .LASF729 + .byte 0x5 + .byte 0x3e + .4byte .LASF730 + .byte 0x5 + .byte 0x3f + .4byte .LASF731 + .byte 0x5 + .byte 0x40 + .4byte .LASF732 + .byte 0x5 + .byte 0x41 + .4byte .LASF733 + .byte 0x5 + .byte 0x42 + .4byte .LASF734 + .byte 0x5 + .byte 0x43 + .4byte .LASF735 + .byte 0x5 + .byte 0x44 + .4byte .LASF736 + .byte 0x5 + .byte 0x45 + .4byte .LASF737 + .byte 0x5 + .byte 0x46 + .4byte .LASF738 + .byte 0x5 + .byte 0x47 + .4byte .LASF739 + .byte 0x5 + .byte 0x48 + .4byte .LASF740 + .byte 0x5 + .byte 0x49 + .4byte .LASF741 + .byte 0x5 + .byte 0x4a + .4byte .LASF742 + .byte 0x5 + .byte 0x4b + .4byte .LASF743 + .byte 0x5 + .byte 0x4c + .4byte .LASF744 + .byte 0x5 + .byte 0x4d + .4byte .LASF745 + .byte 0x5 + .byte 0x4e + .4byte .LASF746 + .byte 0x5 + .byte 0x4f + .4byte .LASF747 + .byte 0x5 + .byte 0x50 + .4byte .LASF748 + .byte 0x5 + .byte 0x51 + .4byte .LASF749 + .byte 0x5 + .byte 0x52 + .4byte .LASF750 + .byte 0x5 + .byte 0x53 + .4byte .LASF751 + .byte 0x5 + .byte 0x54 + .4byte .LASF752 + .byte 0x5 + .byte 0x55 + .4byte .LASF753 + .byte 0x5 + .byte 0x56 + .4byte .LASF754 + .byte 0x5 + .byte 0x57 + .4byte .LASF755 + .byte 0x5 + .byte 0x58 + .4byte .LASF756 + .byte 0x5 + .byte 0x59 + .4byte .LASF757 + .byte 0x5 + .byte 0x5d + .4byte .LASF758 + .byte 0x5 + .byte 0x60 + .4byte .LASF759 + .byte 0x5 + .byte 0x61 + .4byte .LASF760 + .byte 0x5 + .byte 0x62 + .4byte .LASF761 + .byte 0x5 + .byte 0x63 + .4byte .LASF762 + .byte 0x5 + .byte 0x66 + .4byte .LASF763 + .byte 0x5 + .byte 0x67 + .4byte .LASF764 + .byte 0x5 + .byte 0x6a + .4byte .LASF765 + .byte 0x5 + .byte 0x6b + .4byte .LASF766 + .byte 0x5 + .byte 0x6c + .4byte .LASF767 + .byte 0x5 + .byte 0x6d + .4byte .LASF768 + .byte 0x5 + .byte 0x6e + .4byte .LASF769 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF770 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF771 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF772 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF773 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF774 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF775 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF776 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF777 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF778 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF779 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_can.h.39.9380e444d8240972fa3c91ce629786a4,comdat +.Ldebug_macro12: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF780 + .byte 0x5 + .byte 0x2c + .4byte .LASF781 + .byte 0x5 + .byte 0x2d + .4byte .LASF782 + .byte 0x5 + .byte 0x30 + .4byte .LASF783 + .byte 0x5 + .byte 0x31 + .4byte .LASF784 + .byte 0x5 + .byte 0x32 + .4byte .LASF785 + .byte 0x5 + .byte 0x33 + .4byte .LASF786 + .byte 0x5 + .byte 0x34 + .4byte .LASF787 + .byte 0x5 + .byte 0x35 + .4byte .LASF788 + .byte 0x5 + .byte 0x36 + .4byte .LASF789 + .byte 0x5 + .byte 0x37 + .4byte .LASF790 + .byte 0x5 + .byte 0x38 + .4byte .LASF791 + .byte 0x5 + .byte 0x39 + .4byte .LASF792 + .byte 0x5 + .byte 0x3a + .4byte .LASF793 + .byte 0x5 + .byte 0x3b + .4byte .LASF794 + .byte 0x5 + .byte 0x3c + .4byte .LASF795 + .byte 0x5 + .byte 0x3d + .4byte .LASF796 + .byte 0x5 + .byte 0x3e + .4byte .LASF797 + .byte 0x5 + .byte 0x3f + .4byte .LASF798 + .byte 0x5 + .byte 0x40 + .4byte .LASF799 + .byte 0x5 + .byte 0x41 + .4byte .LASF800 + .byte 0x5 + .byte 0x42 + .4byte .LASF801 + .byte 0x5 + .byte 0x43 + .4byte .LASF802 + .byte 0x5 + .byte 0x44 + .4byte .LASF803 + .byte 0x5 + .byte 0x45 + .4byte .LASF804 + .byte 0x5 + .byte 0x46 + .4byte .LASF805 + .byte 0x5 + .byte 0x47 + .4byte .LASF806 + .byte 0x5 + .byte 0x48 + .4byte .LASF807 + .byte 0x5 + .byte 0x49 + .4byte .LASF808 + .byte 0x5 + .byte 0x4a + .4byte .LASF809 + .byte 0x5 + .byte 0x4b + .4byte .LASF810 + .byte 0x5 + .byte 0x4c + .4byte .LASF811 + .byte 0x5 + .byte 0x4d + .4byte .LASF812 + .byte 0x5 + .byte 0x4e + .4byte .LASF813 + .byte 0x5 + .byte 0x4f + .4byte .LASF814 + .byte 0x5 + .byte 0x50 + .4byte .LASF815 + .byte 0x5 + .byte 0x51 + .4byte .LASF816 + .byte 0x5 + .byte 0x52 + .4byte .LASF817 + .byte 0x5 + .byte 0x53 + .4byte .LASF818 + .byte 0x5 + .byte 0x54 + .4byte .LASF819 + .byte 0x5 + .byte 0x55 + .4byte .LASF820 + .byte 0x5 + .byte 0x56 + .4byte .LASF821 + .byte 0x5 + .byte 0x57 + .4byte .LASF822 + .byte 0x5 + .byte 0x58 + .4byte .LASF823 + .byte 0x5 + .byte 0x59 + .4byte .LASF824 + .byte 0x5 + .byte 0x5a + .4byte .LASF825 + .byte 0x5 + .byte 0x5b + .4byte .LASF826 + .byte 0x5 + .byte 0x5c + .4byte .LASF827 + .byte 0x5 + .byte 0x5d + .4byte .LASF828 + .byte 0x5 + .byte 0x5e + .4byte .LASF829 + .byte 0x5 + .byte 0x5f + .4byte .LASF830 + .byte 0x5 + .byte 0x60 + .4byte .LASF831 + .byte 0x5 + .byte 0x61 + .4byte .LASF832 + .byte 0x5 + .byte 0x62 + .4byte .LASF833 + .byte 0x5 + .byte 0x63 + .4byte .LASF834 + .byte 0x5 + .byte 0x64 + .4byte .LASF835 + .byte 0x5 + .byte 0x65 + .4byte .LASF836 + .byte 0x5 + .byte 0x66 + .4byte .LASF837 + .byte 0x5 + .byte 0x67 + .4byte .LASF838 + .byte 0x5 + .byte 0x68 + .4byte .LASF839 + .byte 0x5 + .byte 0x69 + .4byte .LASF840 + .byte 0x5 + .byte 0x6a + .4byte .LASF841 + .byte 0x5 + .byte 0x6b + .4byte .LASF842 + .byte 0x5 + .byte 0x6c + .4byte .LASF843 + .byte 0x5 + .byte 0x6d + .4byte .LASF844 + .byte 0x5 + .byte 0x6e + .4byte .LASF845 + .byte 0x5 + .byte 0x6f + .4byte .LASF846 + .byte 0x5 + .byte 0x70 + .4byte .LASF847 + .byte 0x5 + .byte 0x71 + .4byte .LASF848 + .byte 0x5 + .byte 0x72 + .4byte .LASF849 + .byte 0x5 + .byte 0x73 + .4byte .LASF850 + .byte 0x5 + .byte 0x74 + .4byte .LASF851 + .byte 0x5 + .byte 0x75 + .4byte .LASF852 + .byte 0x5 + .byte 0x76 + .4byte .LASF853 + .byte 0x5 + .byte 0x77 + .4byte .LASF854 + .byte 0x5 + .byte 0x78 + .4byte .LASF855 + .byte 0x5 + .byte 0x79 + .4byte .LASF856 + .byte 0x5 + .byte 0x7a + .4byte .LASF857 + .byte 0x5 + .byte 0x7b + .4byte .LASF858 + .byte 0x5 + .byte 0x7c + .4byte .LASF859 + .byte 0x5 + .byte 0x7d + .4byte .LASF860 + .byte 0x5 + .byte 0x7e + .4byte .LASF861 + .byte 0x5 + .byte 0x7f + .4byte .LASF862 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF863 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF864 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF865 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF866 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF867 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF868 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF869 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF870 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF871 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF872 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF873 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF874 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF875 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF876 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF877 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF878 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF879 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF880 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF881 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF882 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF883 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF884 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF885 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF886 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF887 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF888 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF889 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF890 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF891 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF892 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF893 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF894 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF895 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF896 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF897 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF898 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF899 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF900 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF901 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF902 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF903 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF904 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF905 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF906 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF907 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF908 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF909 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF910 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF911 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF912 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF913 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF914 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF915 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF916 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF917 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF918 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF919 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF920 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF921 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF922 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF923 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF924 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF925 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF926 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF927 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF928 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF929 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF930 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF931 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF932 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF933 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF934 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF935 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF936 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF937 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF938 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF939 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF940 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF941 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF942 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF943 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF944 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF945 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF946 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF947 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF948 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF949 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF950 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF951 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF952 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF953 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF954 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF955 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF956 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF957 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF958 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF959 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF960 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF961 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF962 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF963 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF964 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF965 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF966 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF967 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF968 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF969 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF970 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF971 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF972 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF973 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF974 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF975 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF976 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF977 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF978 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF979 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF980 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF981 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF982 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF983 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF984 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF985 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF986 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF987 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF988 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF989 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF990 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF991 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF992 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF993 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF994 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF995 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF996 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF997 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF998 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF999 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF1000 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF1001 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF1002 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF1003 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF1004 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF1005 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF1006 + .byte 0x5 + .byte 0xe4,0x3 + .4byte .LASF1007 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF1008 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF1009 + .byte 0x5 + .byte 0xed,0x3 + .4byte .LASF1010 + .byte 0x5 + .byte 0xf0,0x3 + .4byte .LASF1011 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF1012 + .byte 0x5 + .byte 0xf6,0x3 + .4byte .LASF1013 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF1014 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF1015 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF1016 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF1017 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF1018 + .byte 0x5 + .byte 0x88,0x4 + .4byte .LASF1019 + .byte 0x5 + .byte 0x8b,0x4 + .4byte .LASF1020 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF1021 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF1022 + .byte 0x5 + .byte 0x94,0x4 + .4byte .LASF1023 + .byte 0x5 + .byte 0x97,0x4 + .4byte .LASF1024 + .byte 0x5 + .byte 0x9a,0x4 + .4byte .LASF1025 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF1026 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF1027 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF1028 + .byte 0x5 + .byte 0xa6,0x4 + .4byte .LASF1029 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF1030 + .byte 0x5 + .byte 0xac,0x4 + .4byte .LASF1031 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF1032 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF1033 + .byte 0x5 + .byte 0xb5,0x4 + .4byte .LASF1034 + .byte 0x5 + .byte 0xb8,0x4 + .4byte .LASF1035 + .byte 0x5 + .byte 0xbb,0x4 + .4byte .LASF1036 + .byte 0x5 + .byte 0xbe,0x4 + .4byte .LASF1037 + .byte 0x5 + .byte 0xc1,0x4 + .4byte .LASF1038 + .byte 0x5 + .byte 0xc4,0x4 + .4byte .LASF1039 + .byte 0x5 + .byte 0xc7,0x4 + .4byte .LASF1040 + .byte 0x5 + .byte 0xc8,0x4 + .4byte .LASF1041 + .byte 0x5 + .byte 0xc9,0x4 + .4byte .LASF1042 + .byte 0x5 + .byte 0xca,0x4 + .4byte .LASF1043 + .byte 0x5 + .byte 0xcb,0x4 + .4byte .LASF1044 + .byte 0x5 + .byte 0xcc,0x4 + .4byte .LASF1045 + .byte 0x5 + .byte 0xcd,0x4 + .4byte .LASF1046 + .byte 0x5 + .byte 0xce,0x4 + .4byte .LASF1047 + .byte 0x5 + .byte 0xcf,0x4 + .4byte .LASF1048 + .byte 0x5 + .byte 0xd1,0x4 + .4byte .LASF1049 + .byte 0x5 + .byte 0xd4,0x4 + .4byte .LASF1050 + .byte 0x5 + .byte 0xd5,0x4 + .4byte .LASF1051 + .byte 0x5 + .byte 0xd6,0x4 + .4byte .LASF1052 + .byte 0x5 + .byte 0xd7,0x4 + .4byte .LASF1053 + .byte 0x5 + .byte 0xda,0x4 + .4byte .LASF1054 + .byte 0x5 + .byte 0xdb,0x4 + .4byte .LASF1055 + .byte 0x5 + .byte 0xdc,0x4 + .4byte .LASF1056 + .byte 0x5 + .byte 0xdd,0x4 + .4byte .LASF1057 + .byte 0x5 + .byte 0xe0,0x4 + .4byte .LASF1058 + .byte 0x5 + .byte 0xe1,0x4 + .4byte .LASF1059 + .byte 0x5 + .byte 0xe2,0x4 + .4byte .LASF1060 + .byte 0x5 + .byte 0xe3,0x4 + .4byte .LASF1061 + .byte 0x5 + .byte 0xe4,0x4 + .4byte .LASF1062 + .byte 0x5 + .byte 0xe5,0x4 + .4byte .LASF1063 + .byte 0x5 + .byte 0xe6,0x4 + .4byte .LASF1064 + .byte 0x5 + .byte 0xe7,0x4 + .4byte .LASF1065 + .byte 0x5 + .byte 0xe8,0x4 + .4byte .LASF1066 + .byte 0x5 + .byte 0xe9,0x4 + .4byte .LASF1067 + .byte 0x5 + .byte 0xea,0x4 + .4byte .LASF1068 + .byte 0x5 + .byte 0xeb,0x4 + .4byte .LASF1069 + .byte 0x5 + .byte 0xec,0x4 + .4byte .LASF1070 + .byte 0x5 + .byte 0xed,0x4 + .4byte .LASF1071 + .byte 0x5 + .byte 0xee,0x4 + .4byte .LASF1072 + .byte 0x5 + .byte 0xef,0x4 + .4byte .LASF1073 + .byte 0x5 + .byte 0xf2,0x4 + .4byte .LASF1074 + .byte 0x5 + .byte 0xf3,0x4 + .4byte .LASF1075 + .byte 0x5 + .byte 0xf4,0x4 + .4byte .LASF1076 + .byte 0x5 + .byte 0xf5,0x4 + .4byte .LASF1077 + .byte 0x5 + .byte 0xf6,0x4 + .4byte .LASF1078 + .byte 0x5 + .byte 0xf7,0x4 + .4byte .LASF1079 + .byte 0x5 + .byte 0xf8,0x4 + .4byte .LASF1080 + .byte 0x5 + .byte 0xf9,0x4 + .4byte .LASF1081 + .byte 0x5 + .byte 0xfc,0x4 + .4byte .LASF1082 + .byte 0x5 + .byte 0xfd,0x4 + .4byte .LASF1083 + .byte 0x5 + .byte 0xfe,0x4 + .4byte .LASF1084 + .byte 0x5 + .byte 0xff,0x4 + .4byte .LASF1085 + .byte 0x5 + .byte 0x82,0x5 + .4byte .LASF1086 + .byte 0x5 + .byte 0x83,0x5 + .4byte .LASF1087 + .byte 0x5 + .byte 0x86,0x5 + .4byte .LASF1088 + .byte 0x5 + .byte 0x87,0x5 + .4byte .LASF1089 + .byte 0x5 + .byte 0x8a,0x5 + .4byte .LASF1090 + .byte 0x5 + .byte 0x8c,0x5 + .4byte .LASF1091 + .byte 0x5 + .byte 0x8d,0x5 + .4byte .LASF1092 + .byte 0x5 + .byte 0x90,0x5 + .4byte .LASF1093 + .byte 0x5 + .byte 0x91,0x5 + .4byte .LASF1094 + .byte 0x5 + .byte 0x92,0x5 + .4byte .LASF1095 + .byte 0x5 + .byte 0x95,0x5 + .4byte .LASF1096 + .byte 0x5 + .byte 0x96,0x5 + .4byte .LASF1097 + .byte 0x5 + .byte 0x99,0x5 + .4byte .LASF1098 + .byte 0x5 + .byte 0x9a,0x5 + .4byte .LASF1099 + .byte 0x5 + .byte 0x9d,0x5 + .4byte .LASF1100 + .byte 0x5 + .byte 0xa0,0x5 + .4byte .LASF1101 + .byte 0x5 + .byte 0xa1,0x5 + .4byte .LASF1102 + .byte 0x5 + .byte 0xa4,0x5 + .4byte .LASF1103 + .byte 0x5 + .byte 0xa7,0x5 + .4byte .LASF1104 + .byte 0x5 + .byte 0xa8,0x5 + .4byte .LASF1105 + .byte 0x5 + .byte 0xa9,0x5 + .4byte .LASF1106 + .byte 0x5 + .byte 0xaa,0x5 + .4byte .LASF1107 + .byte 0x5 + .byte 0xab,0x5 + .4byte .LASF1108 + .byte 0x5 + .byte 0xac,0x5 + .4byte .LASF1109 + .byte 0x5 + .byte 0xad,0x5 + .4byte .LASF1110 + .byte 0x5 + .byte 0xae,0x5 + .4byte .LASF1111 + .byte 0x5 + .byte 0xaf,0x5 + .4byte .LASF1112 + .byte 0x5 + .byte 0xb0,0x5 + .4byte .LASF1113 + .byte 0x5 + .byte 0xb1,0x5 + .4byte .LASF1114 + .byte 0x5 + .byte 0xb2,0x5 + .4byte .LASF1115 + .byte 0x5 + .byte 0xb3,0x5 + .4byte .LASF1116 + .byte 0x5 + .byte 0xb4,0x5 + .4byte .LASF1117 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_crc.h.37.f77f53f1516fc65e49eac544ab82df8c,comdat +.Ldebug_macro13: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1118 + .byte 0x5 + .byte 0x2a + .4byte .LASF1119 + .byte 0x5 + .byte 0x2d + .4byte .LASF1120 + .byte 0x5 + .byte 0x2e + .4byte .LASF1121 + .byte 0x5 + .byte 0x2f + .4byte .LASF1122 + .byte 0x5 + .byte 0x33 + .4byte .LASF1123 + .byte 0x5 + .byte 0x36 + .4byte .LASF1124 + .byte 0x5 + .byte 0x39 + .4byte .LASF1125 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dac.h.37.c64e29f692c863eb577e59c8c0ad940a,comdat +.Ldebug_macro14: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1126 + .byte 0x5 + .byte 0x2a + .4byte .LASF1127 + .byte 0x5 + .byte 0x2b + .4byte .LASF1128 + .byte 0x5 + .byte 0x2c + .4byte .LASF1129 + .byte 0x5 + .byte 0x2f + .4byte .LASF1130 + .byte 0x5 + .byte 0x30 + .4byte .LASF1131 + .byte 0x5 + .byte 0x31 + .4byte .LASF1132 + .byte 0x5 + .byte 0x32 + .4byte .LASF1133 + .byte 0x5 + .byte 0x33 + .4byte .LASF1134 + .byte 0x5 + .byte 0x34 + .4byte .LASF1135 + .byte 0x5 + .byte 0x35 + .4byte .LASF1136 + .byte 0x5 + .byte 0x36 + .4byte .LASF1137 + .byte 0x5 + .byte 0x37 + .4byte .LASF1138 + .byte 0x5 + .byte 0x38 + .4byte .LASF1139 + .byte 0x5 + .byte 0x39 + .4byte .LASF1140 + .byte 0x5 + .byte 0x3a + .4byte .LASF1141 + .byte 0x5 + .byte 0x3b + .4byte .LASF1142 + .byte 0x5 + .byte 0x3f + .4byte .LASF1143 + .byte 0x5 + .byte 0x40 + .4byte .LASF1144 + .byte 0x5 + .byte 0x41 + .4byte .LASF1145 + .byte 0x5 + .byte 0x42 + .4byte .LASF1146 + .byte 0x5 + .byte 0x43 + .4byte .LASF1147 + .byte 0x5 + .byte 0x44 + .4byte .LASF1148 + .byte 0x5 + .byte 0x45 + .4byte .LASF1149 + .byte 0x5 + .byte 0x46 + .4byte .LASF1150 + .byte 0x5 + .byte 0x47 + .4byte .LASF1151 + .byte 0x5 + .byte 0x48 + .4byte .LASF1152 + .byte 0x5 + .byte 0x49 + .4byte .LASF1153 + .byte 0x5 + .byte 0x4a + .4byte .LASF1154 + .byte 0x5 + .byte 0x4b + .4byte .LASF1155 + .byte 0x5 + .byte 0x4c + .4byte .LASF1156 + .byte 0x5 + .byte 0x4f + .4byte .LASF1157 + .byte 0x5 + .byte 0x50 + .4byte .LASF1158 + .byte 0x5 + .byte 0x53 + .4byte .LASF1159 + .byte 0x5 + .byte 0x56 + .4byte .LASF1160 + .byte 0x5 + .byte 0x59 + .4byte .LASF1161 + .byte 0x5 + .byte 0x5c + .4byte .LASF1162 + .byte 0x5 + .byte 0x5f + .4byte .LASF1163 + .byte 0x5 + .byte 0x62 + .4byte .LASF1164 + .byte 0x5 + .byte 0x65 + .4byte .LASF1165 + .byte 0x5 + .byte 0x66 + .4byte .LASF1166 + .byte 0x5 + .byte 0x69 + .4byte .LASF1167 + .byte 0x5 + .byte 0x6a + .4byte .LASF1168 + .byte 0x5 + .byte 0x6d + .4byte .LASF1169 + .byte 0x5 + .byte 0x6e + .4byte .LASF1170 + .byte 0x5 + .byte 0x71 + .4byte .LASF1171 + .byte 0x5 + .byte 0x74 + .4byte .LASF1172 + .byte 0x5 + .byte 0x78 + .4byte .LASF1173 + .byte 0x5 + .byte 0x79 + .4byte .LASF1174 + .byte 0x5 + .byte 0x7a + .4byte .LASF1175 + .byte 0x5 + .byte 0x7b + .4byte .LASF1176 + .byte 0x5 + .byte 0x7c + .4byte .LASF1177 + .byte 0x5 + .byte 0x7d + .4byte .LASF1178 + .byte 0x5 + .byte 0x7e + .4byte .LASF1179 + .byte 0x5 + .byte 0x7f + .4byte .LASF1180 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF1181 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF1182 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF1183 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1184 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1185 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF1186 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1187 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1188 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF1189 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF1190 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1191 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1192 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1193 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF1194 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF1195 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF1196 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF1197 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1198 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1199 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1200 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1201 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1202 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF1203 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF1204 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1205 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1206 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1207 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1208 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1209 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1210 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1211 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1212 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1213 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1214 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF1215 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1216 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1217 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1218 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1219 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1220 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1221 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF1222 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF1223 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1224 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1225 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1226 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dma.h.38.2c314170096cba83b58f6eccfc84a5f7,comdat +.Ldebug_macro15: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x26 + .4byte .LASF1227 + .byte 0x5 + .byte 0x2b + .4byte .LASF1228 + .byte 0x5 + .byte 0x2c + .4byte .LASF1229 + .byte 0x5 + .byte 0x2f + .4byte .LASF1230 + .byte 0x5 + .byte 0x30 + .4byte .LASF1231 + .byte 0x5 + .byte 0x32 + .4byte .LASF1232 + .byte 0x5 + .byte 0x33 + .4byte .LASF1233 + .byte 0x5 + .byte 0x34 + .4byte .LASF1234 + .byte 0x5 + .byte 0x35 + .4byte .LASF1235 + .byte 0x5 + .byte 0x37 + .4byte .LASF1236 + .byte 0x5 + .byte 0x38 + .4byte .LASF1237 + .byte 0x5 + .byte 0x39 + .4byte .LASF1238 + .byte 0x5 + .byte 0x3a + .4byte .LASF1239 + .byte 0x5 + .byte 0x3c + .4byte .LASF1240 + .byte 0x5 + .byte 0x3d + .4byte .LASF1241 + .byte 0x5 + .byte 0x3e + .4byte .LASF1242 + .byte 0x5 + .byte 0x3f + .4byte .LASF1243 + .byte 0x5 + .byte 0x41 + .4byte .LASF1244 + .byte 0x5 + .byte 0x42 + .4byte .LASF1245 + .byte 0x5 + .byte 0x43 + .4byte .LASF1246 + .byte 0x5 + .byte 0x44 + .4byte .LASF1247 + .byte 0x5 + .byte 0x46 + .4byte .LASF1248 + .byte 0x5 + .byte 0x47 + .4byte .LASF1249 + .byte 0x5 + .byte 0x48 + .4byte .LASF1250 + .byte 0x5 + .byte 0x49 + .4byte .LASF1251 + .byte 0x5 + .byte 0x4b + .4byte .LASF1252 + .byte 0x5 + .byte 0x4c + .4byte .LASF1253 + .byte 0x5 + .byte 0x4d + .4byte .LASF1254 + .byte 0x5 + .byte 0x4e + .4byte .LASF1255 + .byte 0x5 + .byte 0x50 + .4byte .LASF1256 + .byte 0x5 + .byte 0x51 + .4byte .LASF1257 + .byte 0x5 + .byte 0x52 + .4byte .LASF1258 + .byte 0x5 + .byte 0x53 + .4byte .LASF1259 + .byte 0x5 + .byte 0x57 + .4byte .LASF1260 + .byte 0x5 + .byte 0x58 + .4byte .LASF1261 + .byte 0x5 + .byte 0x59 + .4byte .LASF1262 + .byte 0x5 + .byte 0x5a + .4byte .LASF1263 + .byte 0x5 + .byte 0x5d + .4byte .LASF1264 + .byte 0x5 + .byte 0x5e + .4byte .LASF1265 + .byte 0x5 + .byte 0x5f + .4byte .LASF1266 + .byte 0x5 + .byte 0x60 + .4byte .LASF1267 + .byte 0x5 + .byte 0x63 + .4byte .LASF1268 + .byte 0x5 + .byte 0x64 + .4byte .LASF1269 + .byte 0x5 + .byte 0x65 + .4byte .LASF1270 + .byte 0x5 + .byte 0x66 + .4byte .LASF1271 + .byte 0x5 + .byte 0x67 + .4byte .LASF1272 + .byte 0x5 + .byte 0x68 + .4byte .LASF1273 + .byte 0x5 + .byte 0x69 + .4byte .LASF1274 + .byte 0x5 + .byte 0x6a + .4byte .LASF1275 + .byte 0x5 + .byte 0x6b + .4byte .LASF1276 + .byte 0x5 + .byte 0x6c + .4byte .LASF1277 + .byte 0x5 + .byte 0x6d + .4byte .LASF1278 + .byte 0x5 + .byte 0x6e + .4byte .LASF1279 + .byte 0x5 + .byte 0x71 + .4byte .LASF1280 + .byte 0x5 + .byte 0x74 + .4byte .LASF1281 + .byte 0x5 + .byte 0x77 + .4byte .LASF1282 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1283 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1284 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1285 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1286 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1287 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1288 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1289 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1290 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1291 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1292 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1293 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1294 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1295 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1296 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1297 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1298 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1299 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1300 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1301 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1302 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1303 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF1304 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1305 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1306 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1307 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1308 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1309 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF1310 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF1311 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF1312 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF1313 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF1314 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1315 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF1316 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF1317 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1318 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1319 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF1320 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF1321 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1322 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF1323 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1324 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1325 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_eclic.h.37.7db9f8893169694757dea82a4b9eed61,comdat +.Ldebug_macro16: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1326 + .byte 0x5 + .byte 0x2a + .4byte .LASF1327 + .byte 0x5 + .byte 0x2b + .4byte .LASF1328 + .byte 0x5 + .byte 0x2c + .4byte .LASF1329 + .byte 0x5 + .byte 0x2d + .4byte .LASF1330 + .byte 0x5 + .byte 0x2e + .4byte .LASF1331 + .byte 0x5 + .byte 0x30 + .4byte .LASF1332 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_exmc.h.37.96699be4b910beb81cdfd35650becbf1,comdat +.Ldebug_macro17: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1333 + .byte 0x5 + .byte 0x2a + .4byte .LASF1334 + .byte 0x5 + .byte 0x2e + .4byte .LASF1335 + .byte 0x5 + .byte 0x2f + .4byte .LASF1336 + .byte 0x5 + .byte 0x30 + .4byte .LASF1337 + .byte 0x5 + .byte 0x35 + .4byte .LASF1338 + .byte 0x5 + .byte 0x36 + .4byte .LASF1339 + .byte 0x5 + .byte 0x37 + .4byte .LASF1340 + .byte 0x5 + .byte 0x38 + .4byte .LASF1341 + .byte 0x5 + .byte 0x39 + .4byte .LASF1342 + .byte 0x5 + .byte 0x3a + .4byte .LASF1343 + .byte 0x5 + .byte 0x3b + .4byte .LASF1344 + .byte 0x5 + .byte 0x3c + .4byte .LASF1345 + .byte 0x5 + .byte 0x3d + .4byte .LASF1346 + .byte 0x5 + .byte 0x40 + .4byte .LASF1347 + .byte 0x5 + .byte 0x41 + .4byte .LASF1348 + .byte 0x5 + .byte 0x42 + .4byte .LASF1349 + .byte 0x5 + .byte 0x43 + .4byte .LASF1350 + .byte 0x5 + .byte 0x5e + .4byte .LASF1351 + .byte 0x5 + .byte 0x5f + .4byte .LASF1352 + .byte 0x5 + .byte 0x62 + .4byte .LASF1353 + .byte 0x5 + .byte 0x63 + .4byte .LASF1354 + .byte 0x5 + .byte 0x64 + .4byte .LASF1355 + .byte 0x5 + .byte 0x67 + .4byte .LASF1356 + .byte 0x5 + .byte 0x68 + .4byte .LASF1357 + .byte 0x5 + .byte 0x69 + .4byte .LASF1358 + .byte 0x5 + .byte 0x6a + .4byte .LASF1359 + .byte 0x5 + .byte 0x6d + .4byte .LASF1360 + .byte 0x5 + .byte 0x70 + .4byte .LASF1361 + .byte 0x5 + .byte 0x71 + .4byte .LASF1362 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_fmc.h.39.cad093dc97f9756dd7521b8e6602cd12,comdat +.Ldebug_macro18: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF1363 + .byte 0x5 + .byte 0x2c + .4byte .LASF1364 + .byte 0x5 + .byte 0x2d + .4byte .LASF1365 + .byte 0x5 + .byte 0x30 + .4byte .LASF1366 + .byte 0x5 + .byte 0x31 + .4byte .LASF1367 + .byte 0x5 + .byte 0x32 + .4byte .LASF1368 + .byte 0x5 + .byte 0x33 + .4byte .LASF1369 + .byte 0x5 + .byte 0x34 + .4byte .LASF1370 + .byte 0x5 + .byte 0x35 + .4byte .LASF1371 + .byte 0x5 + .byte 0x36 + .4byte .LASF1372 + .byte 0x5 + .byte 0x37 + .4byte .LASF1373 + .byte 0x5 + .byte 0x38 + .4byte .LASF1374 + .byte 0x5 + .byte 0x3a + .4byte .LASF1375 + .byte 0x5 + .byte 0x3b + .4byte .LASF1376 + .byte 0x5 + .byte 0x3c + .4byte .LASF1377 + .byte 0x5 + .byte 0x3d + .4byte .LASF1378 + .byte 0x5 + .byte 0x3e + .4byte .LASF1379 + .byte 0x5 + .byte 0x3f + .4byte .LASF1380 + .byte 0x5 + .byte 0x43 + .4byte .LASF1381 + .byte 0x5 + .byte 0x46 + .4byte .LASF1382 + .byte 0x5 + .byte 0x49 + .4byte .LASF1383 + .byte 0x5 + .byte 0x4c + .4byte .LASF1384 + .byte 0x5 + .byte 0x4d + .4byte .LASF1385 + .byte 0x5 + .byte 0x4e + .4byte .LASF1386 + .byte 0x5 + .byte 0x4f + .4byte .LASF1387 + .byte 0x5 + .byte 0x52 + .4byte .LASF1388 + .byte 0x5 + .byte 0x53 + .4byte .LASF1389 + .byte 0x5 + .byte 0x54 + .4byte .LASF1390 + .byte 0x5 + .byte 0x55 + .4byte .LASF1391 + .byte 0x5 + .byte 0x56 + .4byte .LASF1392 + .byte 0x5 + .byte 0x57 + .4byte .LASF1393 + .byte 0x5 + .byte 0x58 + .4byte .LASF1394 + .byte 0x5 + .byte 0x59 + .4byte .LASF1395 + .byte 0x5 + .byte 0x5a + .4byte .LASF1396 + .byte 0x5 + .byte 0x5b + .4byte .LASF1397 + .byte 0x5 + .byte 0x5e + .4byte .LASF1398 + .byte 0x5 + .byte 0x61 + .4byte .LASF1399 + .byte 0x5 + .byte 0x62 + .4byte .LASF1400 + .byte 0x5 + .byte 0x63 + .4byte .LASF1401 + .byte 0x5 + .byte 0x64 + .4byte .LASF1402 + .byte 0x5 + .byte 0x67 + .4byte .LASF1403 + .byte 0x5 + .byte 0x6a + .4byte .LASF1404 + .byte 0x5 + .byte 0x6d + .4byte .LASF1405 + .byte 0x5 + .byte 0x71 + .4byte .LASF1406 + .byte 0x5 + .byte 0x72 + .4byte .LASF1407 + .byte 0x5 + .byte 0x73 + .4byte .LASF1408 + .byte 0x5 + .byte 0x74 + .4byte .LASF1409 + .byte 0x5 + .byte 0x75 + .4byte .LASF1410 + .byte 0x5 + .byte 0x76 + .4byte .LASF1411 + .byte 0x5 + .byte 0x77 + .4byte .LASF1412 + .byte 0x5 + .byte 0x78 + .4byte .LASF1413 + .byte 0x5 + .byte 0x7b + .4byte .LASF1414 + .byte 0x5 + .byte 0x7c + .4byte .LASF1415 + .byte 0x5 + .byte 0x7d + .4byte .LASF1416 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1417 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1418 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1419 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1420 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1421 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1422 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1423 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1424 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1425 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1426 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1427 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1428 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF1429 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1430 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1431 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1432 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1433 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1434 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF1435 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF1436 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1437 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1438 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF1439 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1440 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1441 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF1442 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF1443 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF1444 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1445 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1446 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF1447 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF1448 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1449 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1450 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF1451 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF1452 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1453 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1454 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF1455 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF1456 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF1457 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1458 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF1459 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF1460 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1461 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1462 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF1463 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF1464 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF1465 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1466 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1467 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF1468 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF1469 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF1470 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF1471 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF1472 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF1473 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF1474 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1475 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1476 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_gpio.h.37.1c15e50fe61c140e18cbdcae4553472f,comdat +.Ldebug_macro19: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1477 + .byte 0x5 + .byte 0x2a + .4byte .LASF1478 + .byte 0x5 + .byte 0x2b + .4byte .LASF1479 + .byte 0x5 + .byte 0x2c + .4byte .LASF1480 + .byte 0x5 + .byte 0x2d + .4byte .LASF1481 + .byte 0x5 + .byte 0x2e + .4byte .LASF1482 + .byte 0x5 + .byte 0x31 + .4byte .LASF1483 + .byte 0x5 + .byte 0x36 + .4byte .LASF1484 + .byte 0x5 + .byte 0x37 + .4byte .LASF1485 + .byte 0x5 + .byte 0x38 + .4byte .LASF1486 + .byte 0x5 + .byte 0x39 + .4byte .LASF1487 + .byte 0x5 + .byte 0x3a + .4byte .LASF1488 + .byte 0x5 + .byte 0x3b + .4byte .LASF1489 + .byte 0x5 + .byte 0x3c + .4byte .LASF1490 + .byte 0x5 + .byte 0x3f + .4byte .LASF1491 + .byte 0x5 + .byte 0x40 + .4byte .LASF1492 + .byte 0x5 + .byte 0x41 + .4byte .LASF1493 + .byte 0x5 + .byte 0x42 + .4byte .LASF1494 + .byte 0x5 + .byte 0x43 + .4byte .LASF1495 + .byte 0x5 + .byte 0x44 + .4byte .LASF1496 + .byte 0x5 + .byte 0x45 + .4byte .LASF1497 + .byte 0x5 + .byte 0x49 + .4byte .LASF1498 + .byte 0x5 + .byte 0x4a + .4byte .LASF1499 + .byte 0x5 + .byte 0x4b + .4byte .LASF1500 + .byte 0x5 + .byte 0x4c + .4byte .LASF1501 + .byte 0x5 + .byte 0x4d + .4byte .LASF1502 + .byte 0x5 + .byte 0x4e + .4byte .LASF1503 + .byte 0x5 + .byte 0x4f + .4byte .LASF1504 + .byte 0x5 + .byte 0x50 + .4byte .LASF1505 + .byte 0x5 + .byte 0x51 + .4byte .LASF1506 + .byte 0x5 + .byte 0x52 + .4byte .LASF1507 + .byte 0x5 + .byte 0x53 + .4byte .LASF1508 + .byte 0x5 + .byte 0x54 + .4byte .LASF1509 + .byte 0x5 + .byte 0x55 + .4byte .LASF1510 + .byte 0x5 + .byte 0x56 + .4byte .LASF1511 + .byte 0x5 + .byte 0x57 + .4byte .LASF1512 + .byte 0x5 + .byte 0x58 + .4byte .LASF1513 + .byte 0x5 + .byte 0x5b + .4byte .LASF1514 + .byte 0x5 + .byte 0x5c + .4byte .LASF1515 + .byte 0x5 + .byte 0x5d + .4byte .LASF1516 + .byte 0x5 + .byte 0x5e + .4byte .LASF1517 + .byte 0x5 + .byte 0x5f + .4byte .LASF1518 + .byte 0x5 + .byte 0x60 + .4byte .LASF1519 + .byte 0x5 + .byte 0x61 + .4byte .LASF1520 + .byte 0x5 + .byte 0x62 + .4byte .LASF1521 + .byte 0x5 + .byte 0x63 + .4byte .LASF1522 + .byte 0x5 + .byte 0x64 + .4byte .LASF1523 + .byte 0x5 + .byte 0x65 + .4byte .LASF1524 + .byte 0x5 + .byte 0x66 + .4byte .LASF1525 + .byte 0x5 + .byte 0x67 + .4byte .LASF1526 + .byte 0x5 + .byte 0x68 + .4byte .LASF1527 + .byte 0x5 + .byte 0x69 + .4byte .LASF1528 + .byte 0x5 + .byte 0x6a + .4byte .LASF1529 + .byte 0x5 + .byte 0x6d + .4byte .LASF1530 + .byte 0x5 + .byte 0x6e + .4byte .LASF1531 + .byte 0x5 + .byte 0x6f + .4byte .LASF1532 + .byte 0x5 + .byte 0x70 + .4byte .LASF1533 + .byte 0x5 + .byte 0x71 + .4byte .LASF1534 + .byte 0x5 + .byte 0x72 + .4byte .LASF1535 + .byte 0x5 + .byte 0x73 + .4byte .LASF1536 + .byte 0x5 + .byte 0x74 + .4byte .LASF1537 + .byte 0x5 + .byte 0x75 + .4byte .LASF1538 + .byte 0x5 + .byte 0x76 + .4byte .LASF1539 + .byte 0x5 + .byte 0x77 + .4byte .LASF1540 + .byte 0x5 + .byte 0x78 + .4byte .LASF1541 + .byte 0x5 + .byte 0x79 + .4byte .LASF1542 + .byte 0x5 + .byte 0x7a + .4byte .LASF1543 + .byte 0x5 + .byte 0x7b + .4byte .LASF1544 + .byte 0x5 + .byte 0x7c + .4byte .LASF1545 + .byte 0x5 + .byte 0x7f + .4byte .LASF1546 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF1547 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF1548 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF1549 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF1550 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF1551 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1552 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1553 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF1554 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF1555 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF1556 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1557 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1558 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF1559 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF1560 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1561 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF1562 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF1563 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF1564 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF1565 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1566 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF1567 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF1568 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1569 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1570 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1571 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1572 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF1573 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF1574 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1575 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1576 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1577 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1578 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1579 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1580 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF1581 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF1582 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1583 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1584 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1585 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1586 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1587 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF1588 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1589 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1590 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1591 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1592 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1593 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF1594 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1595 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1596 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1597 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF1598 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF1599 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF1600 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1601 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF1602 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF1603 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1604 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1605 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF1606 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF1607 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1608 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1609 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF1610 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF1611 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF1612 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF1613 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1614 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF1615 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF1616 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1617 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF1618 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF1619 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF1620 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF1621 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1622 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1623 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF1624 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF1625 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1626 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF1627 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1628 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1629 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1630 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1631 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF1632 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF1633 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1634 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1635 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF1636 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF1637 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF1638 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1639 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF1640 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF1641 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1642 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1643 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF1644 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1645 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1646 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF1647 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF1648 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF1649 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF1650 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF1651 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF1652 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF1653 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1654 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1655 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF1656 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF1657 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF1658 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF1659 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF1660 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF1661 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF1662 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF1663 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF1664 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF1665 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF1666 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF1667 + .byte 0x5 + .byte 0x94,0x2 + .4byte .LASF1668 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF1669 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF1670 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF1671 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF1672 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF1673 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF1674 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF1675 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF1676 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF1677 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF1678 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF1679 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF1680 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF1681 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF1682 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF1683 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF1684 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF1685 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF1686 + .byte 0x5 + .byte 0xaf,0x2 + .4byte .LASF1687 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF1688 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF1689 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF1690 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF1691 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF1692 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF1693 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF1694 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF1695 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF1696 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF1697 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF1698 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF1699 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF1700 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF1701 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF1702 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF1703 + .byte 0x5 + .byte 0xc2,0x2 + .4byte .LASF1704 + .byte 0x5 + .byte 0xc3,0x2 + .4byte .LASF1705 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF1706 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF1707 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF1708 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF1709 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF1710 + .byte 0x5 + .byte 0xc9,0x2 + .4byte .LASF1711 + .byte 0x5 + .byte 0xca,0x2 + .4byte .LASF1712 + .byte 0x5 + .byte 0xcb,0x2 + .4byte .LASF1713 + .byte 0x5 + .byte 0xcc,0x2 + .4byte .LASF1714 + .byte 0x5 + .byte 0xcd,0x2 + .4byte .LASF1715 + .byte 0x5 + .byte 0xce,0x2 + .4byte .LASF1716 + .byte 0x5 + .byte 0xd1,0x2 + .4byte .LASF1717 + .byte 0x5 + .byte 0xd2,0x2 + .4byte .LASF1718 + .byte 0x5 + .byte 0xd3,0x2 + .4byte .LASF1719 + .byte 0x5 + .byte 0xd4,0x2 + .4byte .LASF1720 + .byte 0x5 + .byte 0xd5,0x2 + .4byte .LASF1721 + .byte 0x5 + .byte 0xd6,0x2 + .4byte .LASF1722 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF1723 + .byte 0x5 + .byte 0xd8,0x2 + .4byte .LASF1724 + .byte 0x5 + .byte 0xd9,0x2 + .4byte .LASF1725 + .byte 0x5 + .byte 0xda,0x2 + .4byte .LASF1726 + .byte 0x5 + .byte 0xdb,0x2 + .4byte .LASF1727 + .byte 0x5 + .byte 0xdc,0x2 + .4byte .LASF1728 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF1729 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF1730 + .byte 0x5 + .byte 0xdf,0x2 + .4byte .LASF1731 + .byte 0x5 + .byte 0xe0,0x2 + .4byte .LASF1732 + .byte 0x5 + .byte 0xe1,0x2 + .4byte .LASF1733 + .byte 0x5 + .byte 0xe4,0x2 + .4byte .LASF1734 + .byte 0x5 + .byte 0xe5,0x2 + .4byte .LASF1735 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF1736 + .byte 0x5 + .byte 0xe7,0x2 + .4byte .LASF1737 + .byte 0x5 + .byte 0xe8,0x2 + .4byte .LASF1738 + .byte 0x5 + .byte 0xe9,0x2 + .4byte .LASF1739 + .byte 0x5 + .byte 0xea,0x2 + .4byte .LASF1740 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF1741 + .byte 0x5 + .byte 0xec,0x2 + .4byte .LASF1742 + .byte 0x5 + .byte 0xed,0x2 + .4byte .LASF1743 + .byte 0x5 + .byte 0xee,0x2 + .4byte .LASF1744 + .byte 0x5 + .byte 0xef,0x2 + .4byte .LASF1745 + .byte 0x5 + .byte 0xf0,0x2 + .4byte .LASF1746 + .byte 0x5 + .byte 0xf1,0x2 + .4byte .LASF1747 + .byte 0x5 + .byte 0xf2,0x2 + .4byte .LASF1748 + .byte 0x5 + .byte 0xf3,0x2 + .4byte .LASF1749 + .byte 0x5 + .byte 0xf4,0x2 + .4byte .LASF1750 + .byte 0x5 + .byte 0xf5,0x2 + .4byte .LASF1751 + .byte 0x5 + .byte 0xf6,0x2 + .4byte .LASF1752 + .byte 0x5 + .byte 0xf7,0x2 + .4byte .LASF1753 + .byte 0x5 + .byte 0xf8,0x2 + .4byte .LASF1754 + .byte 0x5 + .byte 0xf9,0x2 + .4byte .LASF1755 + .byte 0x5 + .byte 0xfa,0x2 + .4byte .LASF1756 + .byte 0x5 + .byte 0xfb,0x2 + .4byte .LASF1757 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_i2c.h.37.9d7fb50529db8c5d4a0b10c3b5a1de79,comdat +.Ldebug_macro20: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1758 + .byte 0x5 + .byte 0x2a + .4byte .LASF1759 + .byte 0x5 + .byte 0x2b + .4byte .LASF1760 + .byte 0x5 + .byte 0x2e + .4byte .LASF1761 + .byte 0x5 + .byte 0x2f + .4byte .LASF1762 + .byte 0x5 + .byte 0x30 + .4byte .LASF1763 + .byte 0x5 + .byte 0x31 + .4byte .LASF1764 + .byte 0x5 + .byte 0x32 + .4byte .LASF1765 + .byte 0x5 + .byte 0x33 + .4byte .LASF1766 + .byte 0x5 + .byte 0x34 + .4byte .LASF1767 + .byte 0x5 + .byte 0x35 + .4byte .LASF1768 + .byte 0x5 + .byte 0x36 + .4byte .LASF1769 + .byte 0x5 + .byte 0x37 + .4byte .LASF1770 + .byte 0x5 + .byte 0x3a + .4byte .LASF1771 + .byte 0x5 + .byte 0x3b + .4byte .LASF1772 + .byte 0x5 + .byte 0x3c + .4byte .LASF1773 + .byte 0x5 + .byte 0x3d + .4byte .LASF1774 + .byte 0x5 + .byte 0x3e + .4byte .LASF1775 + .byte 0x5 + .byte 0x3f + .4byte .LASF1776 + .byte 0x5 + .byte 0x40 + .4byte .LASF1777 + .byte 0x5 + .byte 0x41 + .4byte .LASF1778 + .byte 0x5 + .byte 0x42 + .4byte .LASF1779 + .byte 0x5 + .byte 0x43 + .4byte .LASF1780 + .byte 0x5 + .byte 0x44 + .4byte .LASF1781 + .byte 0x5 + .byte 0x45 + .4byte .LASF1782 + .byte 0x5 + .byte 0x46 + .4byte .LASF1783 + .byte 0x5 + .byte 0x47 + .4byte .LASF1784 + .byte 0x5 + .byte 0x4a + .4byte .LASF1785 + .byte 0x5 + .byte 0x4b + .4byte .LASF1786 + .byte 0x5 + .byte 0x4c + .4byte .LASF1787 + .byte 0x5 + .byte 0x4d + .4byte .LASF1788 + .byte 0x5 + .byte 0x4e + .4byte .LASF1789 + .byte 0x5 + .byte 0x4f + .4byte .LASF1790 + .byte 0x5 + .byte 0x52 + .4byte .LASF1791 + .byte 0x5 + .byte 0x53 + .4byte .LASF1792 + .byte 0x5 + .byte 0x54 + .4byte .LASF1793 + .byte 0x5 + .byte 0x55 + .4byte .LASF1794 + .byte 0x5 + .byte 0x58 + .4byte .LASF1795 + .byte 0x5 + .byte 0x59 + .4byte .LASF1796 + .byte 0x5 + .byte 0x5c + .4byte .LASF1797 + .byte 0x5 + .byte 0x5f + .4byte .LASF1798 + .byte 0x5 + .byte 0x60 + .4byte .LASF1799 + .byte 0x5 + .byte 0x61 + .4byte .LASF1800 + .byte 0x5 + .byte 0x62 + .4byte .LASF1801 + .byte 0x5 + .byte 0x63 + .4byte .LASF1802 + .byte 0x5 + .byte 0x64 + .4byte .LASF1803 + .byte 0x5 + .byte 0x65 + .4byte .LASF1804 + .byte 0x5 + .byte 0x66 + .4byte .LASF1805 + .byte 0x5 + .byte 0x67 + .4byte .LASF1806 + .byte 0x5 + .byte 0x68 + .4byte .LASF1807 + .byte 0x5 + .byte 0x69 + .4byte .LASF1808 + .byte 0x5 + .byte 0x6a + .4byte .LASF1809 + .byte 0x5 + .byte 0x6b + .4byte .LASF1810 + .byte 0x5 + .byte 0x6c + .4byte .LASF1811 + .byte 0x5 + .byte 0x6f + .4byte .LASF1812 + .byte 0x5 + .byte 0x70 + .4byte .LASF1813 + .byte 0x5 + .byte 0x71 + .4byte .LASF1814 + .byte 0x5 + .byte 0x72 + .4byte .LASF1815 + .byte 0x5 + .byte 0x73 + .4byte .LASF1816 + .byte 0x5 + .byte 0x74 + .4byte .LASF1817 + .byte 0x5 + .byte 0x75 + .4byte .LASF1818 + .byte 0x5 + .byte 0x76 + .4byte .LASF1819 + .byte 0x5 + .byte 0x79 + .4byte .LASF1820 + .byte 0x5 + .byte 0x7a + .4byte .LASF1821 + .byte 0x5 + .byte 0x7b + .4byte .LASF1822 + .byte 0x5 + .byte 0x7e + .4byte .LASF1823 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF1824 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1825 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1826 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF1827 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF1828 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1829 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1830 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1831 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1832 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1833 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1834 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF1835 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF1836 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF1837 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1838 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1839 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1840 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF1841 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1842 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1843 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1844 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1845 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1846 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1847 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF1848 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1849 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1850 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1851 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1852 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1853 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF1854 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF1855 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF1856 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF1857 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1858 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1859 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF1860 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF1861 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF1862 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF1863 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF1864 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF1865 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF1866 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF1867 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF1868 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF1869 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_fwdgt.h.37.ec91e2ec679929e46ec494cd499250b4,comdat +.Ldebug_macro21: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1870 + .byte 0x5 + .byte 0x2a + .4byte .LASF1871 + .byte 0x5 + .byte 0x2d + .4byte .LASF1872 + .byte 0x5 + .byte 0x2e + .4byte .LASF1873 + .byte 0x5 + .byte 0x2f + .4byte .LASF1874 + .byte 0x5 + .byte 0x30 + .4byte .LASF1875 + .byte 0x5 + .byte 0x34 + .4byte .LASF1876 + .byte 0x5 + .byte 0x37 + .4byte .LASF1877 + .byte 0x5 + .byte 0x3a + .4byte .LASF1878 + .byte 0x5 + .byte 0x3d + .4byte .LASF1879 + .byte 0x5 + .byte 0x3e + .4byte .LASF1880 + .byte 0x5 + .byte 0x42 + .4byte .LASF1881 + .byte 0x5 + .byte 0x43 + .4byte .LASF1882 + .byte 0x5 + .byte 0x44 + .4byte .LASF1883 + .byte 0x5 + .byte 0x45 + .4byte .LASF1884 + .byte 0x5 + .byte 0x46 + .4byte .LASF1885 + .byte 0x5 + .byte 0x47 + .4byte .LASF1886 + .byte 0x5 + .byte 0x48 + .4byte .LASF1887 + .byte 0x5 + .byte 0x49 + .4byte .LASF1888 + .byte 0x5 + .byte 0x4c + .4byte .LASF1889 + .byte 0x5 + .byte 0x4d + .4byte .LASF1890 + .byte 0x5 + .byte 0x4e + .4byte .LASF1891 + .byte 0x5 + .byte 0x4f + .4byte .LASF1892 + .byte 0x5 + .byte 0x52 + .4byte .LASF1893 + .byte 0x5 + .byte 0x53 + .4byte .LASF1894 + .byte 0x5 + .byte 0x56 + .4byte .LASF1895 + .byte 0x5 + .byte 0x57 + .4byte .LASF1896 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dbg.h.37.c757ea48294705efe800a8cbb43f6f24,comdat +.Ldebug_macro22: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1897 + .byte 0x5 + .byte 0x2a + .4byte .LASF1898 + .byte 0x5 + .byte 0x2d + .4byte .LASF1899 + .byte 0x5 + .byte 0x2e + .4byte .LASF1900 + .byte 0x5 + .byte 0x32 + .4byte .LASF1901 + .byte 0x5 + .byte 0x35 + .4byte .LASF1902 + .byte 0x5 + .byte 0x36 + .4byte .LASF1903 + .byte 0x5 + .byte 0x37 + .4byte .LASF1904 + .byte 0x5 + .byte 0x38 + .4byte .LASF1905 + .byte 0x5 + .byte 0x39 + .4byte .LASF1906 + .byte 0x5 + .byte 0x3a + .4byte .LASF1907 + .byte 0x5 + .byte 0x3b + .4byte .LASF1908 + .byte 0x5 + .byte 0x3c + .4byte .LASF1909 + .byte 0x5 + .byte 0x3d + .4byte .LASF1910 + .byte 0x5 + .byte 0x3e + .4byte .LASF1911 + .byte 0x5 + .byte 0x3f + .4byte .LASF1912 + .byte 0x5 + .byte 0x40 + .4byte .LASF1913 + .byte 0x5 + .byte 0x41 + .4byte .LASF1914 + .byte 0x5 + .byte 0x42 + .4byte .LASF1915 + .byte 0x5 + .byte 0x43 + .4byte .LASF1916 + .byte 0x5 + .byte 0x44 + .4byte .LASF1917 + .byte 0x5 + .byte 0x5a + .4byte .LASF1918 + .byte 0x5 + .byte 0x5b + .4byte .LASF1919 + .byte 0x5 + .byte 0x5c + .4byte .LASF1920 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_pmu.h.37.edf842f53f3092f282c7bccaf9512833,comdat +.Ldebug_macro23: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1921 + .byte 0x5 + .byte 0x2a + .4byte .LASF1922 + .byte 0x5 + .byte 0x2d + .4byte .LASF1923 + .byte 0x5 + .byte 0x2e + .4byte .LASF1924 + .byte 0x5 + .byte 0x32 + .4byte .LASF1925 + .byte 0x5 + .byte 0x33 + .4byte .LASF1926 + .byte 0x5 + .byte 0x34 + .4byte .LASF1927 + .byte 0x5 + .byte 0x35 + .4byte .LASF1928 + .byte 0x5 + .byte 0x36 + .4byte .LASF1929 + .byte 0x5 + .byte 0x37 + .4byte .LASF1930 + .byte 0x5 + .byte 0x38 + .4byte .LASF1931 + .byte 0x5 + .byte 0x3b + .4byte .LASF1932 + .byte 0x5 + .byte 0x3c + .4byte .LASF1933 + .byte 0x5 + .byte 0x3d + .4byte .LASF1934 + .byte 0x5 + .byte 0x3e + .4byte .LASF1935 + .byte 0x5 + .byte 0x42 + .4byte .LASF1936 + .byte 0x5 + .byte 0x43 + .4byte .LASF1937 + .byte 0x5 + .byte 0x44 + .4byte .LASF1938 + .byte 0x5 + .byte 0x45 + .4byte .LASF1939 + .byte 0x5 + .byte 0x46 + .4byte .LASF1940 + .byte 0x5 + .byte 0x47 + .4byte .LASF1941 + .byte 0x5 + .byte 0x48 + .4byte .LASF1942 + .byte 0x5 + .byte 0x49 + .4byte .LASF1943 + .byte 0x5 + .byte 0x4a + .4byte .LASF1944 + .byte 0x5 + .byte 0x4d + .4byte .LASF1945 + .byte 0x5 + .byte 0x4e + .4byte .LASF1946 + .byte 0x5 + .byte 0x4f + .4byte .LASF1947 + .byte 0x5 + .byte 0x52 + .4byte .LASF1948 + .byte 0x5 + .byte 0x53 + .4byte .LASF1949 + .byte 0x5 + .byte 0x56 + .4byte .LASF1950 + .byte 0x5 + .byte 0x57 + .4byte .LASF1951 + .byte 0x5 + .byte 0x5a + .4byte .LASF1952 + .byte 0x5 + .byte 0x5b + .4byte .LASF1953 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_rcu.h.37.486a61f16467981517fe8072f0668f9d,comdat +.Ldebug_macro24: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1954 + .byte 0x5 + .byte 0x2a + .4byte .LASF1955 + .byte 0x5 + .byte 0x2e + .4byte .LASF1956 + .byte 0x5 + .byte 0x2f + .4byte .LASF1957 + .byte 0x5 + .byte 0x30 + .4byte .LASF1958 + .byte 0x5 + .byte 0x31 + .4byte .LASF1959 + .byte 0x5 + .byte 0x32 + .4byte .LASF1960 + .byte 0x5 + .byte 0x33 + .4byte .LASF1961 + .byte 0x5 + .byte 0x34 + .4byte .LASF1962 + .byte 0x5 + .byte 0x35 + .4byte .LASF1963 + .byte 0x5 + .byte 0x36 + .4byte .LASF1964 + .byte 0x5 + .byte 0x37 + .4byte .LASF1965 + .byte 0x5 + .byte 0x38 + .4byte .LASF1966 + .byte 0x5 + .byte 0x39 + .4byte .LASF1967 + .byte 0x5 + .byte 0x3a + .4byte .LASF1968 + .byte 0x5 + .byte 0x3f + .4byte .LASF1969 + .byte 0x5 + .byte 0x40 + .4byte .LASF1970 + .byte 0x5 + .byte 0x41 + .4byte .LASF1971 + .byte 0x5 + .byte 0x42 + .4byte .LASF1972 + .byte 0x5 + .byte 0x43 + .4byte .LASF1973 + .byte 0x5 + .byte 0x44 + .4byte .LASF1974 + .byte 0x5 + .byte 0x45 + .4byte .LASF1975 + .byte 0x5 + .byte 0x46 + .4byte .LASF1976 + .byte 0x5 + .byte 0x47 + .4byte .LASF1977 + .byte 0x5 + .byte 0x48 + .4byte .LASF1978 + .byte 0x5 + .byte 0x49 + .4byte .LASF1979 + .byte 0x5 + .byte 0x4a + .4byte .LASF1980 + .byte 0x5 + .byte 0x4b + .4byte .LASF1981 + .byte 0x5 + .byte 0x4c + .4byte .LASF1982 + .byte 0x5 + .byte 0x4f + .4byte .LASF1983 + .byte 0x5 + .byte 0x50 + .4byte .LASF1984 + .byte 0x5 + .byte 0x51 + .4byte .LASF1985 + .byte 0x5 + .byte 0x52 + .4byte .LASF1986 + .byte 0x5 + .byte 0x53 + .4byte .LASF1987 + .byte 0x5 + .byte 0x54 + .4byte .LASF1988 + .byte 0x5 + .byte 0x55 + .4byte .LASF1989 + .byte 0x5 + .byte 0x56 + .4byte .LASF1990 + .byte 0x5 + .byte 0x57 + .4byte .LASF1991 + .byte 0x5 + .byte 0x58 + .4byte .LASF1992 + .byte 0x5 + .byte 0x59 + .4byte .LASF1993 + .byte 0x5 + .byte 0x5a + .4byte .LASF1994 + .byte 0x5 + .byte 0x5b + .4byte .LASF1995 + .byte 0x5 + .byte 0x5e + .4byte .LASF1996 + .byte 0x5 + .byte 0x5f + .4byte .LASF1997 + .byte 0x5 + .byte 0x60 + .4byte .LASF1998 + .byte 0x5 + .byte 0x61 + .4byte .LASF1999 + .byte 0x5 + .byte 0x62 + .4byte .LASF2000 + .byte 0x5 + .byte 0x63 + .4byte .LASF2001 + .byte 0x5 + .byte 0x64 + .4byte .LASF2002 + .byte 0x5 + .byte 0x65 + .4byte .LASF2003 + .byte 0x5 + .byte 0x66 + .4byte .LASF2004 + .byte 0x5 + .byte 0x67 + .4byte .LASF2005 + .byte 0x5 + .byte 0x68 + .4byte .LASF2006 + .byte 0x5 + .byte 0x69 + .4byte .LASF2007 + .byte 0x5 + .byte 0x6a + .4byte .LASF2008 + .byte 0x5 + .byte 0x6b + .4byte .LASF2009 + .byte 0x5 + .byte 0x6c + .4byte .LASF2010 + .byte 0x5 + .byte 0x6d + .4byte .LASF2011 + .byte 0x5 + .byte 0x6e + .4byte .LASF2012 + .byte 0x5 + .byte 0x6f + .4byte .LASF2013 + .byte 0x5 + .byte 0x70 + .4byte .LASF2014 + .byte 0x5 + .byte 0x71 + .4byte .LASF2015 + .byte 0x5 + .byte 0x72 + .4byte .LASF2016 + .byte 0x5 + .byte 0x73 + .4byte .LASF2017 + .byte 0x5 + .byte 0x74 + .4byte .LASF2018 + .byte 0x5 + .byte 0x77 + .4byte .LASF2019 + .byte 0x5 + .byte 0x78 + .4byte .LASF2020 + .byte 0x5 + .byte 0x79 + .4byte .LASF2021 + .byte 0x5 + .byte 0x7a + .4byte .LASF2022 + .byte 0x5 + .byte 0x7b + .4byte .LASF2023 + .byte 0x5 + .byte 0x7c + .4byte .LASF2024 + .byte 0x5 + .byte 0x7d + .4byte .LASF2025 + .byte 0x5 + .byte 0x7e + .4byte .LASF2026 + .byte 0x5 + .byte 0x7f + .4byte .LASF2027 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF2028 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF2029 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF2030 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF2031 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF2032 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF2033 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF2034 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF2035 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF2036 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2037 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2038 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF2039 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF2040 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF2041 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2042 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF2043 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF2044 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF2045 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF2046 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2047 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2048 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF2049 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2050 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF2051 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF2052 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2053 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF2054 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF2055 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF2056 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF2057 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF2058 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF2059 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF2060 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2061 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2062 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2063 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2064 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF2065 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF2066 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF2067 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF2068 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF2069 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF2070 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF2071 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2072 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF2073 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF2074 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2075 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2076 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2077 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2078 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF2079 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF2080 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2081 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2082 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2083 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2084 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2085 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF2086 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF2087 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF2088 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF2089 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF2090 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF2091 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2092 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF2093 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF2094 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF2095 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF2096 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF2097 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF2098 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2099 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF2100 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF2101 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF2102 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF2103 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF2104 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF2105 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF2106 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2107 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2108 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF2109 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF2110 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2111 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2112 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2113 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF2114 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF2115 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF2116 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF2117 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF2118 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF2119 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF2120 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF2121 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF2122 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF2123 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF2124 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF2125 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF2126 + .byte 0x5 + .byte 0xaa,0x3 + .4byte .LASF2127 + .byte 0x5 + .byte 0xab,0x3 + .4byte .LASF2128 + .byte 0x5 + .byte 0xac,0x3 + .4byte .LASF2129 + .byte 0x5 + .byte 0xad,0x3 + .4byte .LASF2130 + .byte 0x5 + .byte 0xb0,0x3 + .4byte .LASF2131 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF2132 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF2133 + .byte 0x5 + .byte 0xb3,0x3 + .4byte .LASF2134 + .byte 0x5 + .byte 0xb6,0x3 + .4byte .LASF2135 + .byte 0x5 + .byte 0xb7,0x3 + .4byte .LASF2136 + .byte 0x5 + .byte 0xb8,0x3 + .4byte .LASF2137 + .byte 0x5 + .byte 0xb9,0x3 + .4byte .LASF2138 + .byte 0x5 + .byte 0xba,0x3 + .4byte .LASF2139 + .byte 0x5 + .byte 0xbb,0x3 + .4byte .LASF2140 + .byte 0x5 + .byte 0xbc,0x3 + .4byte .LASF2141 + .byte 0x5 + .byte 0xbd,0x3 + .4byte .LASF2142 + .byte 0x5 + .byte 0xbe,0x3 + .4byte .LASF2143 + .byte 0x5 + .byte 0xbf,0x3 + .4byte .LASF2144 + .byte 0x5 + .byte 0xc2,0x3 + .4byte .LASF2145 + .byte 0x5 + .byte 0xc3,0x3 + .4byte .LASF2146 + .byte 0x5 + .byte 0xc4,0x3 + .4byte .LASF2147 + .byte 0x5 + .byte 0xc5,0x3 + .4byte .LASF2148 + .byte 0x5 + .byte 0xc6,0x3 + .4byte .LASF2149 + .byte 0x5 + .byte 0xc7,0x3 + .4byte .LASF2150 + .byte 0x5 + .byte 0xca,0x3 + .4byte .LASF2151 + .byte 0x5 + .byte 0xcb,0x3 + .4byte .LASF2152 + .byte 0x5 + .byte 0xcc,0x3 + .4byte .LASF2153 + .byte 0x5 + .byte 0xcd,0x3 + .4byte .LASF2154 + .byte 0x5 + .byte 0xce,0x3 + .4byte .LASF2155 + .byte 0x5 + .byte 0xcf,0x3 + .4byte .LASF2156 + .byte 0x5 + .byte 0xd2,0x3 + .4byte .LASF2157 + .byte 0x5 + .byte 0xd3,0x3 + .4byte .LASF2158 + .byte 0x5 + .byte 0xd4,0x3 + .4byte .LASF2159 + .byte 0x5 + .byte 0xd5,0x3 + .4byte .LASF2160 + .byte 0x5 + .byte 0xd6,0x3 + .4byte .LASF2161 + .byte 0x5 + .byte 0xd7,0x3 + .4byte .LASF2162 + .byte 0x5 + .byte 0xda,0x3 + .4byte .LASF2163 + .byte 0x5 + .byte 0xdb,0x3 + .4byte .LASF2164 + .byte 0x5 + .byte 0xde,0x3 + .4byte .LASF2165 + .byte 0x5 + .byte 0xe0,0x3 + .4byte .LASF2166 + .byte 0x5 + .byte 0xe1,0x3 + .4byte .LASF2167 + .byte 0x5 + .byte 0xe2,0x3 + .4byte .LASF2168 + .byte 0x5 + .byte 0xe3,0x3 + .4byte .LASF2169 + .byte 0x5 + .byte 0xe4,0x3 + .4byte .LASF2170 + .byte 0x5 + .byte 0xe5,0x3 + .4byte .LASF2171 + .byte 0x5 + .byte 0xe6,0x3 + .4byte .LASF2172 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF2173 + .byte 0x5 + .byte 0xe8,0x3 + .4byte .LASF2174 + .byte 0x5 + .byte 0xe9,0x3 + .4byte .LASF2175 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF2176 + .byte 0x5 + .byte 0xeb,0x3 + .4byte .LASF2177 + .byte 0x5 + .byte 0xec,0x3 + .4byte .LASF2178 + .byte 0x5 + .byte 0xed,0x3 + .4byte .LASF2179 + .byte 0x5 + .byte 0xee,0x3 + .4byte .LASF2180 + .byte 0x5 + .byte 0xef,0x3 + .4byte .LASF2181 + .byte 0x5 + .byte 0xf0,0x3 + .4byte .LASF2182 + .byte 0x5 + .byte 0xf1,0x3 + .4byte .LASF2183 + .byte 0x5 + .byte 0xf2,0x3 + .4byte .LASF2184 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF2185 + .byte 0x5 + .byte 0xf4,0x3 + .4byte .LASF2186 + .byte 0x5 + .byte 0xf5,0x3 + .4byte .LASF2187 + .byte 0x5 + .byte 0xf6,0x3 + .4byte .LASF2188 + .byte 0x5 + .byte 0xf7,0x3 + .4byte .LASF2189 + .byte 0x5 + .byte 0xf8,0x3 + .4byte .LASF2190 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF2191 + .byte 0x5 + .byte 0xfa,0x3 + .4byte .LASF2192 + .byte 0x5 + .byte 0xfb,0x3 + .4byte .LASF2193 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF2194 + .byte 0x5 + .byte 0xfd,0x3 + .4byte .LASF2195 + .byte 0x5 + .byte 0xfe,0x3 + .4byte .LASF2196 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF2197 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF2198 + .byte 0x5 + .byte 0x83,0x4 + .4byte .LASF2199 + .byte 0x5 + .byte 0x84,0x4 + .4byte .LASF2200 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF2201 + .byte 0x5 + .byte 0x86,0x4 + .4byte .LASF2202 + .byte 0x5 + .byte 0x89,0x4 + .4byte .LASF2203 + .byte 0x5 + .byte 0x8a,0x4 + .4byte .LASF2204 + .byte 0x5 + .byte 0x8b,0x4 + .4byte .LASF2205 + .byte 0x5 + .byte 0x8c,0x4 + .4byte .LASF2206 + .byte 0x5 + .byte 0x8d,0x4 + .4byte .LASF2207 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF2208 + .byte 0x5 + .byte 0x8f,0x4 + .4byte .LASF2209 + .byte 0x5 + .byte 0x90,0x4 + .4byte .LASF2210 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF2211 + .byte 0x5 + .byte 0x92,0x4 + .4byte .LASF2212 + .byte 0x5 + .byte 0x95,0x4 + .4byte .LASF2213 + .byte 0x5 + .byte 0x96,0x4 + .4byte .LASF2214 + .byte 0x5 + .byte 0x97,0x4 + .4byte .LASF2215 + .byte 0x5 + .byte 0x98,0x4 + .4byte .LASF2216 + .byte 0x5 + .byte 0x99,0x4 + .4byte .LASF2217 + .byte 0x5 + .byte 0x9c,0x4 + .4byte .LASF2218 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF2219 + .byte 0x5 + .byte 0x9e,0x4 + .4byte .LASF2220 + .byte 0x5 + .byte 0x9f,0x4 + .4byte .LASF2221 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF2222 + .byte 0x5 + .byte 0xa1,0x4 + .4byte .LASF2223 + .byte 0x5 + .byte 0xa2,0x4 + .4byte .LASF2224 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF2225 + .byte 0x5 + .byte 0xa4,0x4 + .4byte .LASF2226 + .byte 0x5 + .byte 0xa5,0x4 + .4byte .LASF2227 + .byte 0x5 + .byte 0xa6,0x4 + .4byte .LASF2228 + .byte 0x5 + .byte 0xa7,0x4 + .4byte .LASF2229 + .byte 0x5 + .byte 0xa8,0x4 + .4byte .LASF2230 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF2231 + .byte 0x5 + .byte 0xaa,0x4 + .4byte .LASF2232 + .byte 0x5 + .byte 0xab,0x4 + .4byte .LASF2233 + .byte 0x5 + .byte 0xac,0x4 + .4byte .LASF2234 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF2235 + .byte 0x5 + .byte 0xb0,0x4 + .4byte .LASF2236 + .byte 0x5 + .byte 0xb1,0x4 + .4byte .LASF2237 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF2238 + .byte 0x5 + .byte 0xb3,0x4 + .4byte .LASF2239 + .byte 0x5 + .byte 0xb4,0x4 + .4byte .LASF2240 + .byte 0x5 + .byte 0xb5,0x4 + .4byte .LASF2241 + .byte 0x5 + .byte 0xb6,0x4 + .4byte .LASF2242 + .byte 0x5 + .byte 0xb7,0x4 + .4byte .LASF2243 + .byte 0x5 + .byte 0xb8,0x4 + .4byte .LASF2244 + .byte 0x5 + .byte 0xb9,0x4 + .4byte .LASF2245 + .byte 0x5 + .byte 0xba,0x4 + .4byte .LASF2246 + .byte 0x5 + .byte 0xbb,0x4 + .4byte .LASF2247 + .byte 0x5 + .byte 0xbc,0x4 + .4byte .LASF2248 + .byte 0x5 + .byte 0xbd,0x4 + .4byte .LASF2249 + .byte 0x5 + .byte 0xbe,0x4 + .4byte .LASF2250 + .byte 0x5 + .byte 0xbf,0x4 + .4byte .LASF2251 + .byte 0x5 + .byte 0xc2,0x4 + .4byte .LASF2252 + .byte 0x5 + .byte 0xc3,0x4 + .4byte .LASF2253 + .byte 0x5 + .byte 0xc4,0x4 + .4byte .LASF2254 + .byte 0x5 + .byte 0xc5,0x4 + .4byte .LASF2255 + .byte 0x5 + .byte 0xc6,0x4 + .4byte .LASF2256 + .byte 0x5 + .byte 0xc7,0x4 + .4byte .LASF2257 + .byte 0x5 + .byte 0xc8,0x4 + .4byte .LASF2258 + .byte 0x5 + .byte 0xc9,0x4 + .4byte .LASF2259 + .byte 0x5 + .byte 0xca,0x4 + .4byte .LASF2260 + .byte 0x5 + .byte 0xcb,0x4 + .4byte .LASF2261 + .byte 0x5 + .byte 0xcc,0x4 + .4byte .LASF2262 + .byte 0x5 + .byte 0xcf,0x4 + .4byte .LASF2263 + .byte 0x5 + .byte 0xd0,0x4 + .4byte .LASF2264 + .byte 0x5 + .byte 0xd1,0x4 + .4byte .LASF2265 + .byte 0x5 + .byte 0xd2,0x4 + .4byte .LASF2266 + .byte 0x5 + .byte 0xd3,0x4 + .4byte .LASF2267 + .byte 0x5 + .byte 0xd4,0x4 + .4byte .LASF2268 + .byte 0x5 + .byte 0xd5,0x4 + .4byte .LASF2269 + .byte 0x5 + .byte 0xd6,0x4 + .4byte .LASF2270 + .byte 0x5 + .byte 0xd7,0x4 + .4byte .LASF2271 + .byte 0x5 + .byte 0xd8,0x4 + .4byte .LASF2272 + .byte 0x5 + .byte 0xd9,0x4 + .4byte .LASF2273 + .byte 0x5 + .byte 0xdd,0x4 + .4byte .LASF2274 + .byte 0x5 + .byte 0xde,0x4 + .4byte .LASF2275 + .byte 0x5 + .byte 0xe1,0x4 + .4byte .LASF2276 + .byte 0x5 + .byte 0xe2,0x4 + .4byte .LASF2277 + .byte 0x5 + .byte 0xe5,0x4 + .4byte .LASF2278 + .byte 0x5 + .byte 0xe6,0x4 + .4byte .LASF2279 + .byte 0x5 + .byte 0xea,0x4 + .4byte .LASF2280 + .byte 0x5 + .byte 0xeb,0x4 + .4byte .LASF2281 + .byte 0x5 + .byte 0xec,0x4 + .4byte .LASF2282 + .byte 0x5 + .byte 0xed,0x4 + .4byte .LASF2283 + .byte 0x5 + .byte 0xee,0x4 + .4byte .LASF2284 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_rtc.h.37.3521dc979060c1ebaf2d43fd52b94dac,comdat +.Ldebug_macro25: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2285 + .byte 0x5 + .byte 0x2a + .4byte .LASF2286 + .byte 0x5 + .byte 0x2d + .4byte .LASF2287 + .byte 0x5 + .byte 0x2e + .4byte .LASF2288 + .byte 0x5 + .byte 0x2f + .4byte .LASF2289 + .byte 0x5 + .byte 0x30 + .4byte .LASF2290 + .byte 0x5 + .byte 0x31 + .4byte .LASF2291 + .byte 0x5 + .byte 0x32 + .4byte .LASF2292 + .byte 0x5 + .byte 0x33 + .4byte .LASF2293 + .byte 0x5 + .byte 0x34 + .4byte .LASF2294 + .byte 0x5 + .byte 0x35 + .4byte .LASF2295 + .byte 0x5 + .byte 0x36 + .4byte .LASF2296 + .byte 0x5 + .byte 0x3a + .4byte .LASF2297 + .byte 0x5 + .byte 0x3b + .4byte .LASF2298 + .byte 0x5 + .byte 0x3c + .4byte .LASF2299 + .byte 0x5 + .byte 0x3f + .4byte .LASF2300 + .byte 0x5 + .byte 0x40 + .4byte .LASF2301 + .byte 0x5 + .byte 0x41 + .4byte .LASF2302 + .byte 0x5 + .byte 0x42 + .4byte .LASF2303 + .byte 0x5 + .byte 0x43 + .4byte .LASF2304 + .byte 0x5 + .byte 0x44 + .4byte .LASF2305 + .byte 0x5 + .byte 0x47 + .4byte .LASF2306 + .byte 0x5 + .byte 0x4a + .4byte .LASF2307 + .byte 0x5 + .byte 0x4d + .4byte .LASF2308 + .byte 0x5 + .byte 0x50 + .4byte .LASF2309 + .byte 0x5 + .byte 0x53 + .4byte .LASF2310 + .byte 0x5 + .byte 0x56 + .4byte .LASF2311 + .byte 0x5 + .byte 0x59 + .4byte .LASF2312 + .byte 0x5 + .byte 0x5c + .4byte .LASF2313 + .byte 0x5 + .byte 0x60 + .4byte .LASF2314 + .byte 0x5 + .byte 0x61 + .4byte .LASF2315 + .byte 0x5 + .byte 0x62 + .4byte .LASF2316 + .byte 0x5 + .byte 0x65 + .4byte .LASF2317 + .byte 0x5 + .byte 0x66 + .4byte .LASF2318 + .byte 0x5 + .byte 0x67 + .4byte .LASF2319 + .byte 0x5 + .byte 0x6a + .4byte .LASF2320 + .byte 0x5 + .byte 0x6b + .4byte .LASF2321 + .byte 0x5 + .byte 0x6c + .4byte .LASF2322 + .byte 0x5 + .byte 0x6d + .4byte .LASF2323 + .byte 0x5 + .byte 0x6e + .4byte .LASF2324 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_spi.h.37.5b2da83109360bb35c1791b7dcc5009b,comdat +.Ldebug_macro26: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2325 + .byte 0x5 + .byte 0x2a + .4byte .LASF2326 + .byte 0x5 + .byte 0x2b + .4byte .LASF2327 + .byte 0x5 + .byte 0x2c + .4byte .LASF2328 + .byte 0x5 + .byte 0x2f + .4byte .LASF2329 + .byte 0x5 + .byte 0x30 + .4byte .LASF2330 + .byte 0x5 + .byte 0x31 + .4byte .LASF2331 + .byte 0x5 + .byte 0x32 + .4byte .LASF2332 + .byte 0x5 + .byte 0x33 + .4byte .LASF2333 + .byte 0x5 + .byte 0x34 + .4byte .LASF2334 + .byte 0x5 + .byte 0x35 + .4byte .LASF2335 + .byte 0x5 + .byte 0x36 + .4byte .LASF2336 + .byte 0x5 + .byte 0x37 + .4byte .LASF2337 + .byte 0x5 + .byte 0x3b + .4byte .LASF2338 + .byte 0x5 + .byte 0x3c + .4byte .LASF2339 + .byte 0x5 + .byte 0x3d + .4byte .LASF2340 + .byte 0x5 + .byte 0x3e + .4byte .LASF2341 + .byte 0x5 + .byte 0x3f + .4byte .LASF2342 + .byte 0x5 + .byte 0x40 + .4byte .LASF2343 + .byte 0x5 + .byte 0x41 + .4byte .LASF2344 + .byte 0x5 + .byte 0x42 + .4byte .LASF2345 + .byte 0x5 + .byte 0x43 + .4byte .LASF2346 + .byte 0x5 + .byte 0x44 + .4byte .LASF2347 + .byte 0x5 + .byte 0x45 + .4byte .LASF2348 + .byte 0x5 + .byte 0x46 + .4byte .LASF2349 + .byte 0x5 + .byte 0x47 + .4byte .LASF2350 + .byte 0x5 + .byte 0x48 + .4byte .LASF2351 + .byte 0x5 + .byte 0x4b + .4byte .LASF2352 + .byte 0x5 + .byte 0x4c + .4byte .LASF2353 + .byte 0x5 + .byte 0x4d + .4byte .LASF2354 + .byte 0x5 + .byte 0x4e + .4byte .LASF2355 + .byte 0x5 + .byte 0x4f + .4byte .LASF2356 + .byte 0x5 + .byte 0x50 + .4byte .LASF2357 + .byte 0x5 + .byte 0x51 + .4byte .LASF2358 + .byte 0x5 + .byte 0x52 + .4byte .LASF2359 + .byte 0x5 + .byte 0x55 + .4byte .LASF2360 + .byte 0x5 + .byte 0x56 + .4byte .LASF2361 + .byte 0x5 + .byte 0x57 + .4byte .LASF2362 + .byte 0x5 + .byte 0x58 + .4byte .LASF2363 + .byte 0x5 + .byte 0x59 + .4byte .LASF2364 + .byte 0x5 + .byte 0x5a + .4byte .LASF2365 + .byte 0x5 + .byte 0x5b + .4byte .LASF2366 + .byte 0x5 + .byte 0x5c + .4byte .LASF2367 + .byte 0x5 + .byte 0x5d + .4byte .LASF2368 + .byte 0x5 + .byte 0x60 + .4byte .LASF2369 + .byte 0x5 + .byte 0x63 + .4byte .LASF2370 + .byte 0x5 + .byte 0x66 + .4byte .LASF2371 + .byte 0x5 + .byte 0x69 + .4byte .LASF2372 + .byte 0x5 + .byte 0x6c + .4byte .LASF2373 + .byte 0x5 + .byte 0x6d + .4byte .LASF2374 + .byte 0x5 + .byte 0x6e + .4byte .LASF2375 + .byte 0x5 + .byte 0x6f + .4byte .LASF2376 + .byte 0x5 + .byte 0x70 + .4byte .LASF2377 + .byte 0x5 + .byte 0x71 + .4byte .LASF2378 + .byte 0x5 + .byte 0x72 + .4byte .LASF2379 + .byte 0x5 + .byte 0x73 + .4byte .LASF2380 + .byte 0x5 + .byte 0x76 + .4byte .LASF2381 + .byte 0x5 + .byte 0x77 + .4byte .LASF2382 + .byte 0x5 + .byte 0x78 + .4byte .LASF2383 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF2384 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF2385 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2386 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2387 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF2388 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2389 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF2390 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF2391 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2392 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2393 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF2394 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2395 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2396 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF2397 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF2398 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF2399 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF2400 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF2401 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2402 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2403 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2404 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2405 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF2406 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF2407 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF2408 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF2409 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF2410 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF2411 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF2412 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2413 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF2414 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF2415 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2416 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2417 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2418 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2419 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2420 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2421 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2422 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2423 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2424 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF2425 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF2426 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF2427 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF2428 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2429 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF2430 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF2431 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF2432 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF2433 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF2434 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF2435 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2436 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF2437 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF2438 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF2439 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF2440 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF2441 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2442 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2443 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF2444 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF2445 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2446 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF2447 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2448 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2449 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF2450 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF2451 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF2452 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF2453 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF2454 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF2455 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF2456 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF2457 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF2458 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF2459 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF2460 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF2461 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF2462 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF2463 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF2464 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF2465 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF2466 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF2467 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_timer.h.37.41e31e3c41519d549a8819d7a508d7a5,comdat +.Ldebug_macro27: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2468 + .byte 0x5 + .byte 0x2a + .4byte .LASF2469 + .byte 0x5 + .byte 0x2b + .4byte .LASF2470 + .byte 0x5 + .byte 0x2c + .4byte .LASF2471 + .byte 0x5 + .byte 0x2d + .4byte .LASF2472 + .byte 0x5 + .byte 0x2e + .4byte .LASF2473 + .byte 0x5 + .byte 0x2f + .4byte .LASF2474 + .byte 0x5 + .byte 0x30 + .4byte .LASF2475 + .byte 0x5 + .byte 0x33 + .4byte .LASF2476 + .byte 0x5 + .byte 0x34 + .4byte .LASF2477 + .byte 0x5 + .byte 0x35 + .4byte .LASF2478 + .byte 0x5 + .byte 0x36 + .4byte .LASF2479 + .byte 0x5 + .byte 0x37 + .4byte .LASF2480 + .byte 0x5 + .byte 0x38 + .4byte .LASF2481 + .byte 0x5 + .byte 0x39 + .4byte .LASF2482 + .byte 0x5 + .byte 0x3a + .4byte .LASF2483 + .byte 0x5 + .byte 0x3b + .4byte .LASF2484 + .byte 0x5 + .byte 0x3c + .4byte .LASF2485 + .byte 0x5 + .byte 0x3d + .4byte .LASF2486 + .byte 0x5 + .byte 0x3e + .4byte .LASF2487 + .byte 0x5 + .byte 0x3f + .4byte .LASF2488 + .byte 0x5 + .byte 0x40 + .4byte .LASF2489 + .byte 0x5 + .byte 0x41 + .4byte .LASF2490 + .byte 0x5 + .byte 0x42 + .4byte .LASF2491 + .byte 0x5 + .byte 0x43 + .4byte .LASF2492 + .byte 0x5 + .byte 0x44 + .4byte .LASF2493 + .byte 0x5 + .byte 0x45 + .4byte .LASF2494 + .byte 0x5 + .byte 0x46 + .4byte .LASF2495 + .byte 0x5 + .byte 0x4a + .4byte .LASF2496 + .byte 0x5 + .byte 0x4b + .4byte .LASF2497 + .byte 0x5 + .byte 0x4c + .4byte .LASF2498 + .byte 0x5 + .byte 0x4d + .4byte .LASF2499 + .byte 0x5 + .byte 0x4e + .4byte .LASF2500 + .byte 0x5 + .byte 0x4f + .4byte .LASF2501 + .byte 0x5 + .byte 0x50 + .4byte .LASF2502 + .byte 0x5 + .byte 0x51 + .4byte .LASF2503 + .byte 0x5 + .byte 0x54 + .4byte .LASF2504 + .byte 0x5 + .byte 0x55 + .4byte .LASF2505 + .byte 0x5 + .byte 0x56 + .4byte .LASF2506 + .byte 0x5 + .byte 0x57 + .4byte .LASF2507 + .byte 0x5 + .byte 0x58 + .4byte .LASF2508 + .byte 0x5 + .byte 0x59 + .4byte .LASF2509 + .byte 0x5 + .byte 0x5a + .4byte .LASF2510 + .byte 0x5 + .byte 0x5b + .4byte .LASF2511 + .byte 0x5 + .byte 0x5c + .4byte .LASF2512 + .byte 0x5 + .byte 0x5d + .4byte .LASF2513 + .byte 0x5 + .byte 0x5e + .4byte .LASF2514 + .byte 0x5 + .byte 0x5f + .4byte .LASF2515 + .byte 0x5 + .byte 0x62 + .4byte .LASF2516 + .byte 0x5 + .byte 0x63 + .4byte .LASF2517 + .byte 0x5 + .byte 0x64 + .4byte .LASF2518 + .byte 0x5 + .byte 0x65 + .4byte .LASF2519 + .byte 0x5 + .byte 0x66 + .4byte .LASF2520 + .byte 0x5 + .byte 0x67 + .4byte .LASF2521 + .byte 0x5 + .byte 0x68 + .4byte .LASF2522 + .byte 0x5 + .byte 0x6b + .4byte .LASF2523 + .byte 0x5 + .byte 0x6c + .4byte .LASF2524 + .byte 0x5 + .byte 0x6d + .4byte .LASF2525 + .byte 0x5 + .byte 0x6e + .4byte .LASF2526 + .byte 0x5 + .byte 0x6f + .4byte .LASF2527 + .byte 0x5 + .byte 0x70 + .4byte .LASF2528 + .byte 0x5 + .byte 0x71 + .4byte .LASF2529 + .byte 0x5 + .byte 0x72 + .4byte .LASF2530 + .byte 0x5 + .byte 0x73 + .4byte .LASF2531 + .byte 0x5 + .byte 0x74 + .4byte .LASF2532 + .byte 0x5 + .byte 0x75 + .4byte .LASF2533 + .byte 0x5 + .byte 0x76 + .4byte .LASF2534 + .byte 0x5 + .byte 0x77 + .4byte .LASF2535 + .byte 0x5 + .byte 0x78 + .4byte .LASF2536 + .byte 0x5 + .byte 0x79 + .4byte .LASF2537 + .byte 0x5 + .byte 0x7c + .4byte .LASF2538 + .byte 0x5 + .byte 0x7d + .4byte .LASF2539 + .byte 0x5 + .byte 0x7e + .4byte .LASF2540 + .byte 0x5 + .byte 0x7f + .4byte .LASF2541 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF2542 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF2543 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF2544 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF2545 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF2546 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF2547 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF2548 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF2549 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF2550 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF2551 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2552 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2553 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF2554 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF2555 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF2556 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2557 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF2558 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2559 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2560 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF2561 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF2562 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF2563 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2564 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF2565 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF2566 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2567 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF2568 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF2569 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF2570 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF2571 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF2572 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2573 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2574 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2575 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2576 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF2577 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF2578 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF2579 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF2580 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF2581 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF2582 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF2583 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF2584 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2585 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2586 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2587 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2588 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2589 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF2590 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF2591 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2592 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2593 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2594 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2595 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2596 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF2597 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF2598 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF2599 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF2600 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2601 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF2602 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF2603 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2604 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF2605 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF2606 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF2607 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2608 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2609 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF2610 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF2611 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF2612 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF2613 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2614 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF2615 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2616 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2617 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF2618 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF2619 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF2620 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF2621 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF2622 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF2623 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF2624 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF2625 + .byte 0x5 + .byte 0xa4,0x2 + .4byte .LASF2626 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF2627 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF2628 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF2629 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF2630 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF2631 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF2632 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF2633 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF2634 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF2635 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF2636 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF2637 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF2638 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF2639 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF2640 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF2641 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF2642 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF2643 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF2644 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF2645 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF2646 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF2647 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF2648 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF2649 + .byte 0x5 + .byte 0xc2,0x2 + .4byte .LASF2650 + .byte 0x5 + .byte 0xc3,0x2 + .4byte .LASF2651 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF2652 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF2653 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF2654 + .byte 0x5 + .byte 0xc9,0x2 + .4byte .LASF2655 + .byte 0x5 + .byte 0xcc,0x2 + .4byte .LASF2656 + .byte 0x5 + .byte 0xcd,0x2 + .4byte .LASF2657 + .byte 0x5 + .byte 0xce,0x2 + .4byte .LASF2658 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF2659 + .byte 0x5 + .byte 0xd0,0x2 + .4byte .LASF2660 + .byte 0x5 + .byte 0xd1,0x2 + .4byte .LASF2661 + .byte 0x5 + .byte 0xd2,0x2 + .4byte .LASF2662 + .byte 0x5 + .byte 0xd3,0x2 + .4byte .LASF2663 + .byte 0x5 + .byte 0xd4,0x2 + .4byte .LASF2664 + .byte 0x5 + .byte 0xd5,0x2 + .4byte .LASF2665 + .byte 0x5 + .byte 0xd6,0x2 + .4byte .LASF2666 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF2667 + .byte 0x5 + .byte 0xd8,0x2 + .4byte .LASF2668 + .byte 0x5 + .byte 0xd9,0x2 + .4byte .LASF2669 + .byte 0x5 + .byte 0xda,0x2 + .4byte .LASF2670 + .byte 0x5 + .byte 0xdb,0x2 + .4byte .LASF2671 + .byte 0x5 + .byte 0xdc,0x2 + .4byte .LASF2672 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF2673 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF2674 + .byte 0x5 + .byte 0xdf,0x2 + .4byte .LASF2675 + .byte 0x5 + .byte 0xe2,0x2 + .4byte .LASF2676 + .byte 0x5 + .byte 0xe3,0x2 + .4byte .LASF2677 + .byte 0x5 + .byte 0xe4,0x2 + .4byte .LASF2678 + .byte 0x5 + .byte 0xe5,0x2 + .4byte .LASF2679 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF2680 + .byte 0x5 + .byte 0xe7,0x2 + .4byte .LASF2681 + .byte 0x5 + .byte 0xe8,0x2 + .4byte .LASF2682 + .byte 0x5 + .byte 0xe9,0x2 + .4byte .LASF2683 + .byte 0x5 + .byte 0xea,0x2 + .4byte .LASF2684 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF2685 + .byte 0x5 + .byte 0xec,0x2 + .4byte .LASF2686 + .byte 0x5 + .byte 0xed,0x2 + .4byte .LASF2687 + .byte 0x5 + .byte 0xee,0x2 + .4byte .LASF2688 + .byte 0x5 + .byte 0xef,0x2 + .4byte .LASF2689 + .byte 0x5 + .byte 0xf0,0x2 + .4byte .LASF2690 + .byte 0x5 + .byte 0xf1,0x2 + .4byte .LASF2691 + .byte 0x5 + .byte 0xf2,0x2 + .4byte .LASF2692 + .byte 0x5 + .byte 0xf3,0x2 + .4byte .LASF2693 + .byte 0x5 + .byte 0xf4,0x2 + .4byte .LASF2694 + .byte 0x5 + .byte 0xf7,0x2 + .4byte .LASF2695 + .byte 0x5 + .byte 0xf8,0x2 + .4byte .LASF2696 + .byte 0x5 + .byte 0xf9,0x2 + .4byte .LASF2697 + .byte 0x5 + .byte 0xfa,0x2 + .4byte .LASF2698 + .byte 0x5 + .byte 0xfb,0x2 + .4byte .LASF2699 + .byte 0x5 + .byte 0xfc,0x2 + .4byte .LASF2700 + .byte 0x5 + .byte 0xfd,0x2 + .4byte .LASF2701 + .byte 0x5 + .byte 0xfe,0x2 + .4byte .LASF2702 + .byte 0x5 + .byte 0x81,0x3 + .4byte .LASF2703 + .byte 0x5 + .byte 0x82,0x3 + .4byte .LASF2704 + .byte 0x5 + .byte 0x83,0x3 + .4byte .LASF2705 + .byte 0x5 + .byte 0x84,0x3 + .4byte .LASF2706 + .byte 0x5 + .byte 0x85,0x3 + .4byte .LASF2707 + .byte 0x5 + .byte 0x88,0x3 + .4byte .LASF2708 + .byte 0x5 + .byte 0x89,0x3 + .4byte .LASF2709 + .byte 0x5 + .byte 0x8c,0x3 + .4byte .LASF2710 + .byte 0x5 + .byte 0x8d,0x3 + .4byte .LASF2711 + .byte 0x5 + .byte 0x90,0x3 + .4byte .LASF2712 + .byte 0x5 + .byte 0x91,0x3 + .4byte .LASF2713 + .byte 0x5 + .byte 0x92,0x3 + .4byte .LASF2714 + .byte 0x5 + .byte 0x93,0x3 + .4byte .LASF2715 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF2716 + .byte 0x5 + .byte 0x97,0x3 + .4byte .LASF2717 + .byte 0x5 + .byte 0x9a,0x3 + .4byte .LASF2718 + .byte 0x5 + .byte 0x9b,0x3 + .4byte .LASF2719 + .byte 0x5 + .byte 0x9e,0x3 + .4byte .LASF2720 + .byte 0x5 + .byte 0x9f,0x3 + .4byte .LASF2721 + .byte 0x5 + .byte 0xa3,0x3 + .4byte .LASF2722 + .byte 0x5 + .byte 0xa4,0x3 + .4byte .LASF2723 + .byte 0x5 + .byte 0xa7,0x3 + .4byte .LASF2724 + .byte 0x5 + .byte 0xa8,0x3 + .4byte .LASF2725 + .byte 0x5 + .byte 0xab,0x3 + .4byte .LASF2726 + .byte 0x5 + .byte 0xac,0x3 + .4byte .LASF2727 + .byte 0x5 + .byte 0xaf,0x3 + .4byte .LASF2728 + .byte 0x5 + .byte 0xb0,0x3 + .4byte .LASF2729 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF2730 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF2731 + .byte 0x5 + .byte 0xb3,0x3 + .4byte .LASF2732 + .byte 0x5 + .byte 0xb6,0x3 + .4byte .LASF2733 + .byte 0x5 + .byte 0xb7,0x3 + .4byte .LASF2734 + .byte 0x5 + .byte 0xba,0x3 + .4byte .LASF2735 + .byte 0x5 + .byte 0xbb,0x3 + .4byte .LASF2736 + .byte 0x5 + .byte 0xbc,0x3 + .4byte .LASF2737 + .byte 0x5 + .byte 0xbd,0x3 + .4byte .LASF2738 + .byte 0x5 + .byte 0xc0,0x3 + .4byte .LASF2739 + .byte 0x5 + .byte 0xc1,0x3 + .4byte .LASF2740 + .byte 0x5 + .byte 0xc4,0x3 + .4byte .LASF2741 + .byte 0x5 + .byte 0xc5,0x3 + .4byte .LASF2742 + .byte 0x5 + .byte 0xc8,0x3 + .4byte .LASF2743 + .byte 0x5 + .byte 0xc9,0x3 + .4byte .LASF2744 + .byte 0x5 + .byte 0xcc,0x3 + .4byte .LASF2745 + .byte 0x5 + .byte 0xcd,0x3 + .4byte .LASF2746 + .byte 0x5 + .byte 0xd0,0x3 + .4byte .LASF2747 + .byte 0x5 + .byte 0xd1,0x3 + .4byte .LASF2748 + .byte 0x5 + .byte 0xd4,0x3 + .4byte .LASF2749 + .byte 0x5 + .byte 0xd5,0x3 + .4byte .LASF2750 + .byte 0x5 + .byte 0xd8,0x3 + .4byte .LASF2751 + .byte 0x5 + .byte 0xd9,0x3 + .4byte .LASF2752 + .byte 0x5 + .byte 0xda,0x3 + .4byte .LASF2753 + .byte 0x5 + .byte 0xdb,0x3 + .4byte .LASF2754 + .byte 0x5 + .byte 0xdc,0x3 + .4byte .LASF2755 + .byte 0x5 + .byte 0xdd,0x3 + .4byte .LASF2756 + .byte 0x5 + .byte 0xde,0x3 + .4byte .LASF2757 + .byte 0x5 + .byte 0xdf,0x3 + .4byte .LASF2758 + .byte 0x5 + .byte 0xe2,0x3 + .4byte .LASF2759 + .byte 0x5 + .byte 0xe3,0x3 + .4byte .LASF2760 + .byte 0x5 + .byte 0xe6,0x3 + .4byte .LASF2761 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF2762 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF2763 + .byte 0x5 + .byte 0xeb,0x3 + .4byte .LASF2764 + .byte 0x5 + .byte 0xee,0x3 + .4byte .LASF2765 + .byte 0x5 + .byte 0xef,0x3 + .4byte .LASF2766 + .byte 0x5 + .byte 0xf2,0x3 + .4byte .LASF2767 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF2768 + .byte 0x5 + .byte 0xf4,0x3 + .4byte .LASF2769 + .byte 0x5 + .byte 0xf7,0x3 + .4byte .LASF2770 + .byte 0x5 + .byte 0xf8,0x3 + .4byte .LASF2771 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF2772 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF2773 + .byte 0x5 + .byte 0xfd,0x3 + .4byte .LASF2774 + .byte 0x5 + .byte 0xfe,0x3 + .4byte .LASF2775 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF2776 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF2777 + .byte 0x5 + .byte 0x83,0x4 + .4byte .LASF2778 + .byte 0x5 + .byte 0x84,0x4 + .4byte .LASF2779 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF2780 + .byte 0x5 + .byte 0x86,0x4 + .4byte .LASF2781 + .byte 0x5 + .byte 0x87,0x4 + .4byte .LASF2782 + .byte 0x5 + .byte 0x88,0x4 + .4byte .LASF2783 + .byte 0x5 + .byte 0x89,0x4 + .4byte .LASF2784 + .byte 0x5 + .byte 0x8a,0x4 + .4byte .LASF2785 + .byte 0x5 + .byte 0x8d,0x4 + .4byte .LASF2786 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF2787 + .byte 0x5 + .byte 0x8f,0x4 + .4byte .LASF2788 + .byte 0x5 + .byte 0x90,0x4 + .4byte .LASF2789 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF2790 + .byte 0x5 + .byte 0x92,0x4 + .4byte .LASF2791 + .byte 0x5 + .byte 0x93,0x4 + .4byte .LASF2792 + .byte 0x5 + .byte 0x94,0x4 + .4byte .LASF2793 + .byte 0x5 + .byte 0x95,0x4 + .4byte .LASF2794 + .byte 0x5 + .byte 0x98,0x4 + .4byte .LASF2795 + .byte 0x5 + .byte 0x99,0x4 + .4byte .LASF2796 + .byte 0x5 + .byte 0x9a,0x4 + .4byte .LASF2797 + .byte 0x5 + .byte 0x9b,0x4 + .4byte .LASF2798 + .byte 0x5 + .byte 0x9c,0x4 + .4byte .LASF2799 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF2800 + .byte 0x5 + .byte 0x9e,0x4 + .4byte .LASF2801 + .byte 0x5 + .byte 0x9f,0x4 + .4byte .LASF2802 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF2803 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF2804 + .byte 0x5 + .byte 0xa4,0x4 + .4byte .LASF2805 + .byte 0x5 + .byte 0xa7,0x4 + .4byte .LASF2806 + .byte 0x5 + .byte 0xa8,0x4 + .4byte .LASF2807 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF2808 + .byte 0x5 + .byte 0xaa,0x4 + .4byte .LASF2809 + .byte 0x5 + .byte 0xab,0x4 + .4byte .LASF2810 + .byte 0x5 + .byte 0xae,0x4 + .4byte .LASF2811 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF2812 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF2813 + .byte 0x5 + .byte 0xb3,0x4 + .4byte .LASF2814 + .byte 0x5 + .byte 0xb6,0x4 + .4byte .LASF2815 + .byte 0x5 + .byte 0xb7,0x4 + .4byte .LASF2816 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_usart.h.38.bd493dc3b9236603b2fca39bcddb0020,comdat +.Ldebug_macro28: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x26 + .4byte .LASF2817 + .byte 0x5 + .byte 0x2b + .4byte .LASF2818 + .byte 0x5 + .byte 0x2c + .4byte .LASF2819 + .byte 0x5 + .byte 0x2d + .4byte .LASF2820 + .byte 0x5 + .byte 0x2e + .4byte .LASF2821 + .byte 0x5 + .byte 0x2f + .4byte .LASF2822 + .byte 0x5 + .byte 0x32 + .4byte .LASF2823 + .byte 0x5 + .byte 0x33 + .4byte .LASF2824 + .byte 0x5 + .byte 0x34 + .4byte .LASF2825 + .byte 0x5 + .byte 0x35 + .4byte .LASF2826 + .byte 0x5 + .byte 0x36 + .4byte .LASF2827 + .byte 0x5 + .byte 0x37 + .4byte .LASF2828 + .byte 0x5 + .byte 0x38 + .4byte .LASF2829 + .byte 0x5 + .byte 0x3c + .4byte .LASF2830 + .byte 0x5 + .byte 0x3d + .4byte .LASF2831 + .byte 0x5 + .byte 0x3e + .4byte .LASF2832 + .byte 0x5 + .byte 0x3f + .4byte .LASF2833 + .byte 0x5 + .byte 0x40 + .4byte .LASF2834 + .byte 0x5 + .byte 0x41 + .4byte .LASF2835 + .byte 0x5 + .byte 0x42 + .4byte .LASF2836 + .byte 0x5 + .byte 0x43 + .4byte .LASF2837 + .byte 0x5 + .byte 0x44 + .4byte .LASF2838 + .byte 0x5 + .byte 0x45 + .4byte .LASF2839 + .byte 0x5 + .byte 0x48 + .4byte .LASF2840 + .byte 0x5 + .byte 0x4b + .4byte .LASF2841 + .byte 0x5 + .byte 0x4c + .4byte .LASF2842 + .byte 0x5 + .byte 0x4f + .4byte .LASF2843 + .byte 0x5 + .byte 0x50 + .4byte .LASF2844 + .byte 0x5 + .byte 0x51 + .4byte .LASF2845 + .byte 0x5 + .byte 0x52 + .4byte .LASF2846 + .byte 0x5 + .byte 0x53 + .4byte .LASF2847 + .byte 0x5 + .byte 0x54 + .4byte .LASF2848 + .byte 0x5 + .byte 0x55 + .4byte .LASF2849 + .byte 0x5 + .byte 0x56 + .4byte .LASF2850 + .byte 0x5 + .byte 0x57 + .4byte .LASF2851 + .byte 0x5 + .byte 0x58 + .4byte .LASF2852 + .byte 0x5 + .byte 0x59 + .4byte .LASF2853 + .byte 0x5 + .byte 0x5a + .4byte .LASF2854 + .byte 0x5 + .byte 0x5b + .4byte .LASF2855 + .byte 0x5 + .byte 0x5c + .4byte .LASF2856 + .byte 0x5 + .byte 0x5f + .4byte .LASF2857 + .byte 0x5 + .byte 0x60 + .4byte .LASF2858 + .byte 0x5 + .byte 0x61 + .4byte .LASF2859 + .byte 0x5 + .byte 0x62 + .4byte .LASF2860 + .byte 0x5 + .byte 0x63 + .4byte .LASF2861 + .byte 0x5 + .byte 0x64 + .4byte .LASF2862 + .byte 0x5 + .byte 0x65 + .4byte .LASF2863 + .byte 0x5 + .byte 0x66 + .4byte .LASF2864 + .byte 0x5 + .byte 0x67 + .4byte .LASF2865 + .byte 0x5 + .byte 0x6a + .4byte .LASF2866 + .byte 0x5 + .byte 0x6b + .4byte .LASF2867 + .byte 0x5 + .byte 0x6c + .4byte .LASF2868 + .byte 0x5 + .byte 0x6d + .4byte .LASF2869 + .byte 0x5 + .byte 0x6e + .4byte .LASF2870 + .byte 0x5 + .byte 0x6f + .4byte .LASF2871 + .byte 0x5 + .byte 0x70 + .4byte .LASF2872 + .byte 0x5 + .byte 0x71 + .4byte .LASF2873 + .byte 0x5 + .byte 0x72 + .4byte .LASF2874 + .byte 0x5 + .byte 0x73 + .4byte .LASF2875 + .byte 0x5 + .byte 0x74 + .4byte .LASF2876 + .byte 0x5 + .byte 0x77 + .4byte .LASF2877 + .byte 0x5 + .byte 0x78 + .4byte .LASF2878 + .byte 0x5 + .byte 0x7c + .4byte .LASF2879 + .byte 0x5 + .byte 0x7d + .4byte .LASF2880 + .byte 0x5 + .byte 0x7e + .4byte .LASF2881 + .byte 0x5 + .byte 0x7f + .4byte .LASF2882 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF2883 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF2884 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF2885 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF2886 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF2887 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF2888 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2889 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2890 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2891 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF2892 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF2893 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF2894 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF2895 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF2896 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF2897 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2898 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF2899 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF2900 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF2901 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF2902 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2903 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF2904 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF2905 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF2906 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF2907 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF2908 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF2909 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF2910 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2911 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2912 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF2913 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF2914 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2915 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF2916 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2917 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2918 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF2919 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF2920 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF2921 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF2922 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF2923 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF2924 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF2925 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF2926 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF2927 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF2928 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF2929 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF2930 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF2931 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF2932 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF2933 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF2934 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF2935 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF2936 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_wwdgt.h.37.3e64b838fd471007da900965463a8419,comdat +.Ldebug_macro29: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2937 + .byte 0x5 + .byte 0x2a + .4byte .LASF2938 + .byte 0x5 + .byte 0x2d + .4byte .LASF2939 + .byte 0x5 + .byte 0x2e + .4byte .LASF2940 + .byte 0x5 + .byte 0x2f + .4byte .LASF2941 + .byte 0x5 + .byte 0x33 + .4byte .LASF2942 + .byte 0x5 + .byte 0x34 + .4byte .LASF2943 + .byte 0x5 + .byte 0x37 + .4byte .LASF2944 + .byte 0x5 + .byte 0x38 + .4byte .LASF2945 + .byte 0x5 + .byte 0x39 + .4byte .LASF2946 + .byte 0x5 + .byte 0x3c + .4byte .LASF2947 + .byte 0x5 + .byte 0x3f + .4byte .LASF2948 + .byte 0x5 + .byte 0x40 + .4byte .LASF2949 + .byte 0x5 + .byte 0x41 + .4byte .LASF2950 + .byte 0x5 + .byte 0x42 + .4byte .LASF2951 + .byte 0x5 + .byte 0x43 + .4byte .LASF2952 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stddef.h.39.144cf5ddcd53cbfdac30259dc1a6c87f,comdat +.Ldebug_macro30: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF2954 + .byte 0x5 + .byte 0x28 + .4byte .LASF2955 + .byte 0x5 + .byte 0x2a + .4byte .LASF2956 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF2957 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF2958 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF2959 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF2960 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF2961 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF2962 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF2963 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF2964 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF2965 + .byte 0x6 + .byte 0x9b,0x1 + .4byte .LASF2966 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2967 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF2968 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF2969 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2970 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2971 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2972 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2973 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF2974 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF2975 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2976 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2977 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2978 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2979 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2980 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF2981 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF2982 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2983 + .byte 0x6 + .byte 0xe7,0x1 + .4byte .LASF2984 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF2985 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF2986 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF2987 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF2988 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF2989 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF2990 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF2991 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF2992 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF2993 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF2994 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF2995 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF2996 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF2997 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF2998 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF2999 + .byte 0x6 + .byte 0x9f,0x2 + .4byte .LASF3000 + .byte 0x6 + .byte 0xd4,0x2 + .4byte .LASF3001 + .byte 0x6 + .byte 0x86,0x3 + .4byte .LASF3002 + .byte 0x5 + .byte 0x8b,0x3 + .4byte .LASF3003 + .byte 0x6 + .byte 0x91,0x3 + .4byte .LASF3004 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF3005 + .byte 0x5 + .byte 0x9b,0x3 + .4byte .LASF3006 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_timer.h.4.7cbfcb0f457964ecd81bc2aaf47d8b32,comdat +.Ldebug_macro31: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4 + .4byte .LASF3007 + .byte 0x5 + .byte 0x6 + .4byte .LASF3008 + .byte 0x5 + .byte 0x7 + .4byte .LASF3009 + .byte 0x5 + .byte 0x8 + .4byte .LASF3010 + .byte 0x5 + .byte 0x9 + .4byte .LASF3011 + .byte 0x5 + .byte 0xa + .4byte .LASF3012 + .byte 0x5 + .byte 0xb + .4byte .LASF3013 + .byte 0x5 + .byte 0xd + .4byte .LASF3014 + .byte 0x5 + .byte 0xe + .4byte .LASF3015 + .byte 0x5 + .byte 0xf + .4byte .LASF3016 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.riscv_const.h.5.95ac0744d59bfc0d17f4e8adf85ccb42,comdat +.Ldebug_macro32: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x5 + .4byte .LASF3018 + .byte 0x5 + .byte 0xb + .4byte .LASF3019 + .byte 0x5 + .byte 0xc + .4byte .LASF3020 + .byte 0x5 + .byte 0xf + .4byte .LASF3021 + .byte 0x5 + .byte 0x10 + .4byte .LASF3022 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_eclic.h.8.88844f0cdf4d8e1ef4e06c0cb5147462,comdat +.Ldebug_macro33: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x8 + .4byte .LASF3023 + .byte 0x5 + .byte 0xd + .4byte .LASF3024 + .byte 0x5 + .byte 0xf + .4byte .LASF3025 + .byte 0x5 + .byte 0x11 + .4byte .LASF3026 + .byte 0x5 + .byte 0x14 + .4byte .LASF3027 + .byte 0x5 + .byte 0x16 + .4byte .LASF3028 + .byte 0x5 + .byte 0x18 + .4byte .LASF3029 + .byte 0x5 + .byte 0x1a + .4byte .LASF3030 + .byte 0x5 + .byte 0x1b + .4byte .LASF3031 + .byte 0x5 + .byte 0x1c + .4byte .LASF3032 + .byte 0x5 + .byte 0x1d + .4byte .LASF3033 + .byte 0x5 + .byte 0x1e + .4byte .LASF3034 + .byte 0x5 + .byte 0x21 + .4byte .LASF3035 + .byte 0x5 + .byte 0x23 + .4byte .LASF3036 + .byte 0x5 + .byte 0x26 + .4byte .LASF3037 + .byte 0x5 + .byte 0x27 + .4byte .LASF3038 + .byte 0x5 + .byte 0x29 + .4byte .LASF3039 + .byte 0x5 + .byte 0x2a + .4byte .LASF3040 + .byte 0x5 + .byte 0x2b + .4byte .LASF3041 + .byte 0x5 + .byte 0x2c + .4byte .LASF3042 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_func.h.11.5e6cb65336aea242ab47b239a06795e1,comdat +.Ldebug_macro34: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xb + .4byte .LASF3043 + .byte 0x5 + .byte 0xc + .4byte .LASF3044 + .byte 0x5 + .byte 0xd + .4byte .LASF3045 + .byte 0x5 + .byte 0xe + .4byte .LASF3046 + .byte 0x5 + .byte 0xf + .4byte .LASF3047 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_exti.h.42.52891d75061e5b2f67234aff30665892,comdat +.Ldebug_macro35: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x2a + .4byte .LASF3048 + .byte 0x5 + .byte 0x2d + .4byte .LASF3049 + .byte 0x5 + .byte 0x2e + .4byte .LASF3050 + .byte 0x5 + .byte 0x2f + .4byte .LASF3051 + .byte 0x5 + .byte 0x30 + .4byte .LASF3052 + .byte 0x5 + .byte 0x31 + .4byte .LASF3053 + .byte 0x5 + .byte 0x32 + .4byte .LASF3054 + .byte 0x5 + .byte 0x36 + .4byte .LASF3055 + .byte 0x5 + .byte 0x37 + .4byte .LASF3056 + .byte 0x5 + .byte 0x38 + .4byte .LASF3057 + .byte 0x5 + .byte 0x39 + .4byte .LASF3058 + .byte 0x5 + .byte 0x3a + .4byte .LASF3059 + .byte 0x5 + .byte 0x3b + .4byte .LASF3060 + .byte 0x5 + .byte 0x3c + .4byte .LASF3061 + .byte 0x5 + .byte 0x3d + .4byte .LASF3062 + .byte 0x5 + .byte 0x3e + .4byte .LASF3063 + .byte 0x5 + .byte 0x3f + .4byte .LASF3064 + .byte 0x5 + .byte 0x40 + .4byte .LASF3065 + .byte 0x5 + .byte 0x41 + .4byte .LASF3066 + .byte 0x5 + .byte 0x42 + .4byte .LASF3067 + .byte 0x5 + .byte 0x43 + .4byte .LASF3068 + .byte 0x5 + .byte 0x44 + .4byte .LASF3069 + .byte 0x5 + .byte 0x45 + .4byte .LASF3070 + .byte 0x5 + .byte 0x46 + .4byte .LASF3071 + .byte 0x5 + .byte 0x47 + .4byte .LASF3072 + .byte 0x5 + .byte 0x48 + .4byte .LASF3073 + .byte 0x5 + .byte 0x4b + .4byte .LASF3074 + .byte 0x5 + .byte 0x4c + .4byte .LASF3075 + .byte 0x5 + .byte 0x4d + .4byte .LASF3076 + .byte 0x5 + .byte 0x4e + .4byte .LASF3077 + .byte 0x5 + .byte 0x4f + .4byte .LASF3078 + .byte 0x5 + .byte 0x50 + .4byte .LASF3079 + .byte 0x5 + .byte 0x51 + .4byte .LASF3080 + .byte 0x5 + .byte 0x52 + .4byte .LASF3081 + .byte 0x5 + .byte 0x53 + .4byte .LASF3082 + .byte 0x5 + .byte 0x54 + .4byte .LASF3083 + .byte 0x5 + .byte 0x55 + .4byte .LASF3084 + .byte 0x5 + .byte 0x56 + .4byte .LASF3085 + .byte 0x5 + .byte 0x57 + .4byte .LASF3086 + .byte 0x5 + .byte 0x58 + .4byte .LASF3087 + .byte 0x5 + .byte 0x59 + .4byte .LASF3088 + .byte 0x5 + .byte 0x5a + .4byte .LASF3089 + .byte 0x5 + .byte 0x5b + .4byte .LASF3090 + .byte 0x5 + .byte 0x5c + .4byte .LASF3091 + .byte 0x5 + .byte 0x5d + .4byte .LASF3092 + .byte 0x5 + .byte 0x60 + .4byte .LASF3093 + .byte 0x5 + .byte 0x61 + .4byte .LASF3094 + .byte 0x5 + .byte 0x62 + .4byte .LASF3095 + .byte 0x5 + .byte 0x63 + .4byte .LASF3096 + .byte 0x5 + .byte 0x64 + .4byte .LASF3097 + .byte 0x5 + .byte 0x65 + .4byte .LASF3098 + .byte 0x5 + .byte 0x66 + .4byte .LASF3099 + .byte 0x5 + .byte 0x67 + .4byte .LASF3100 + .byte 0x5 + .byte 0x68 + .4byte .LASF3101 + .byte 0x5 + .byte 0x69 + .4byte .LASF3102 + .byte 0x5 + .byte 0x6a + .4byte .LASF3103 + .byte 0x5 + .byte 0x6b + .4byte .LASF3104 + .byte 0x5 + .byte 0x6c + .4byte .LASF3105 + .byte 0x5 + .byte 0x6d + .4byte .LASF3106 + .byte 0x5 + .byte 0x6e + .4byte .LASF3107 + .byte 0x5 + .byte 0x6f + .4byte .LASF3108 + .byte 0x5 + .byte 0x70 + .4byte .LASF3109 + .byte 0x5 + .byte 0x71 + .4byte .LASF3110 + .byte 0x5 + .byte 0x72 + .4byte .LASF3111 + .byte 0x5 + .byte 0x75 + .4byte .LASF3112 + .byte 0x5 + .byte 0x76 + .4byte .LASF3113 + .byte 0x5 + .byte 0x77 + .4byte .LASF3114 + .byte 0x5 + .byte 0x78 + .4byte .LASF3115 + .byte 0x5 + .byte 0x79 + .4byte .LASF3116 + .byte 0x5 + .byte 0x7a + .4byte .LASF3117 + .byte 0x5 + .byte 0x7b + .4byte .LASF3118 + .byte 0x5 + .byte 0x7c + .4byte .LASF3119 + .byte 0x5 + .byte 0x7d + .4byte .LASF3120 + .byte 0x5 + .byte 0x7e + .4byte .LASF3121 + .byte 0x5 + .byte 0x7f + .4byte .LASF3122 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF3123 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF3124 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF3125 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF3126 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF3127 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF3128 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF3129 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF3130 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF3131 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF3132 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF3133 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF3134 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF3135 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF3136 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF3137 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF3138 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF3139 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF3140 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF3141 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF3142 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF3143 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF3144 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF3145 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF3146 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF3147 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF3148 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF3149 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF3150 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF3151 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF3152 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF3153 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF3154 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF3155 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF3156 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF3157 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF3158 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF3159 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF3160 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF3161 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF3162 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF3163 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF3164 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF3165 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF3166 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF3167 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF3168 + .byte 0 + .section .debug_line,"",@progbits +.Ldebug_line0: + .section .debug_str,"MS",@progbits,1 +.LASF2749: + .string "TIMER_OCN_IDLE_STATE_HIGH ((uint16_t)0x0200U)" +.LASF1190: + .string "DAC_WAVE_BIT_WIDTH_4 DWBW(3)" +.LASF328: + .string "_POSIX_C_SOURCE 1" +.LASF2378: + .string "SPI_I2SCTL_I2SOPMOD BITS(8,9)" +.LASF1466: + .string "OB_WP_25 ((uint32_t)0x02000000U)" +.LASF2890: + .string "USART_RECEIVE_ENABLE CTL0_REN(1)" +.LASF366: + .string "___int16_t_defined 1" +.LASF2139: + .string "RCU_AHB_CKSYS_DIV8 CFG0_AHBPSC(10)" +.LASF758: + .string "BKP_DATA BITS(0,15)" +.LASF885: + .string "CAN_CTL_RFOD BIT(3)" +.LASF1815: + .string "I2C_STAT1_RXGC BIT(4)" +.LASF1510: + .string "GPIO_CTL0_MD6 BITS(24, 25)" +.LASF3040: + .string "MTIME_HANDLER eclic_mtip_handler" +.LASF1596: + .string "GPIO_BC_CR2 BIT(2)" +.LASF2837: + .string "USART_STAT_TBE BIT(7)" +.LASF189: + .string "__LDBL_HAS_INFINITY__ 1" +.LASF835: + .string "CAN_F19DATA0(canx) REG32((canx) + 0x2D8U)" +.LASF1277: + .string "DMA_CHXCTL_MWIDTH BITS(10,11)" +.LASF2340: + .string "SPI_CTL0_MSTMOD BIT(2)" +.LASF2048: + .string "RCU_APB1RST_PMURST BIT(28)" +.LASF1302: + .string "DMA_INT_HTF DMA_CHXCTL_HTFIE" +.LASF2018: + .string "RCU_INT_CKMIC BIT(23)" +.LASF2309: + .string "RTC_DIVL_DIV BITS(0,15)" +.LASF2989: + .string "_T_WCHAR " +.LASF1880: + .string "FWDGT_STAT_RUD BIT(1)" +.LASF537: + .string "ADC_IOFF1(adcx) REG32((adcx) + 0x18U)" +.LASF1493: + .string "AFIO_EXTISS0 REG32(AFIO + 0x08U)" +.LASF1853: + .string "I2C_DMA_OFF ((uint32_t)0x00000000U)" +.LASF2767: + .string "TIMER_IC_POLARITY_RISING ((uint16_t)0x0000U)" +.LASF2375: + .string "SPI_I2SCTL_CKPL BIT(3)" +.LASF2689: + .string "TIMER_DMACFG_DMATC_13TRANSFER DMACFG_DMATC(12)" +.LASF150: + .string "__FLT_MAX_10_EXP__ 38" +.LASF2352: + .string "SPI_CTL1_DMAREN BIT(0)" +.LASF510: + .string "SPI_BASE (APB1_BUS_BASE + 0x00003800U)" +.LASF127: + .string "__INT_FAST16_WIDTH__ 32" +.LASF981: + .string "CAN_RFIFOMDATA0_DB1 BITS(8,15)" +.LASF2594: + .string "TIMER_CHCTL2_CH2EN BIT(8)" +.LASF914: + .string "CAN_TSTAT_MTE2 BIT(19)" +.LASF2439: + .string "I2S_CKPL_HIGH SPI_I2SCTL_CKPL" +.LASF2081: + .string "RCU_APB1EN_I2C0EN BIT(21)" +.LASF2329: + .string "SPI_CTL0(spix) REG32((spix) + 0x00U)" +.LASF2754: + .string "TIMER_OC_MODE_TOGGLE ((uint16_t)0x0030U)" +.LASF3156: + .string "EXTI_PD_PD6 BIT(6)" +.LASF1096: + .string "CAN_FILTERBITS_16BIT ((uint8_t)0x00U)" +.LASF3176: + .string "long unsigned int" +.LASF727: + .string "BKP_DATA14 REG16((BKP) + 0x50U)" +.LASF1647: + .string "AFIO_EXTI2_SS BITS(8, 11)" +.LASF2985: + .string "__wchar_t__ " +.LASF2289: + .string "RTC_PSCH REG32(RTC + 0x08U)" +.LASF1655: + .string "AFIO_EXTI10_SS BITS(8, 11)" +.LASF300: + .string "__SIZEOF_WCHAR_T__ 4" +.LASF501: + .string "EXMC_BASE ((uint32_t)0xA0000000U)" +.LASF1549: + .string "GPIO_OCTL_OCTL3 BIT(3)" +.LASF1340: + .string "EXMC_SNCTL_NRTP BITS(2,3)" +.LASF307: + .string "__riscv_div 1" +.LASF755: + .string "BKP_OCTL REG16((BKP) + 0x2CU)" +.LASF2653: + .string "TIMER_DMA_TRGD ((uint16_t)TIMER_DMAINTEN_TRGDEN)" +.LASF3092: + .string "EXTI_EVEN_EVEN18 BIT(18)" +.LASF2292: + .string "RTC_DIVL REG32(RTC + 0x14U)" +.LASF478: + .string "WCHAR_MAX (__WCHAR_MAX__)" +.LASF1883: + .string "FWDGT_PSC_DIV8 ((uint8_t)PSC_PSC(1))" +.LASF1037: + .string "GET_ERR_ERRN(regval) GET_BITS((uint32_t)(regval), 4U, 6U)" +.LASF2430: + .string "I2S_MODE_MASTERTX I2SCTL_I2SOPMOD(2)" +.LASF2982: + .string "_SIZET_ " +.LASF1329: + .string "ECLIC_PRIGROUP_LEVEL2_PRIO2 2" +.LASF3213: + .string "exti_software_interrupt_enable" +.LASF2785: + .string "TIMER_SMCFG_TRGSEL_ETIFP SMCFG_TRGSEL(7)" +.LASF1116: + .string "CAN_INT_WAKEUP CAN_INTEN_WIE" +.LASF439: + .string "INT16_MIN (-__INT16_MAX__ - 1)" +.LASF1488: + .string "GPIO_BOP(gpiox) REG32((gpiox) + 0x10U)" +.LASF1599: + .string "GPIO_BC_CR5 BIT(5)" +.LASF2177: + .string "RCU_PLL_MUL12 CFG0_PLLMF(10)" +.LASF581: + .string "ADC_CTL1_SWRCST BIT(22)" +.LASF2834: + .string "USART_STAT_IDLEF BIT(4)" +.LASF1226: + .string "DAC_TRIANGLE_AMPLITUDE_4095 DAC_WAVE_BIT_WIDTH_12" +.LASF3042: + .string "PMOVI_HANDLER eclic_pmovi_handler" +.LASF2920: + .string "USART_CPL_LOW CTL1_CPL(0)" +.LASF1617: + .string "GPIO_LOCK_LK7 BIT(7)" +.LASF1942: + .string "PMU_LVDT_5 CTL_LVDT(5)" +.LASF341: + .string "SYSTEM_GD32VF103_H " +.LASF1394: + .string "FMC_CTL_LK BIT(7)" +.LASF623: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH1 CTL1_ETSRC(1)" +.LASF459: + .string "UINT_FAST8_MAX (__UINT_FAST8_MAX__)" +.LASF1048: + .string "CAN_ERRN_7 ERR_ERRN(7U)" +.LASF182: + .string "__LDBL_DECIMAL_DIG__ 36" +.LASF452: + .string "INT64_MAX (__INT64_MAX__)" +.LASF3053: + .string "EXTI_SWIEV REG32(EXTI + 0x10U)" +.LASF1651: + .string "AFIO_EXTI6_SS BITS(8, 11)" +.LASF2938: + .string "WWDGT WWDGT_BASE" +.LASF413: + .string "_UINT32_T_DECLARED " +.LASF1278: + .string "DMA_CHXCTL_PRIO BITS(12,13)" +.LASF784: + .string "CAN_STAT(canx) REG32((canx) + 0x04U)" +.LASF1659: + .string "AFIO_EXTI14_SS BITS(8, 11)" +.LASF674: + .string "ADC_CHANNEL_13 ((uint8_t)0x0DU)" +.LASF1685: + .string "GPIO_EVENT_PIN_0 ((uint8_t)0x00U)" +.LASF2307: + .string "RTC_PSCL_PSC BITS(0,15)" +.LASF2946: + .string "WWDGT_CFG_EWIE BIT(9)" +.LASF2855: + .string "USART_CTL0_WL BIT(12)" +.LASF435: + .string "UINT8_MAX (__UINT8_MAX__)" +.LASF1115: + .string "CAN_INT_ERR CAN_INTEN_ERRIE" +.LASF1107: + .string "CAN_INT_RFO0 CAN_INTEN_RFOIE0" +.LASF1431: + .string "FMC_NSPC ((uint8_t)0xA5U)" +.LASF1017: + .string "TMDATA0_DB0(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF993: + .string "CAN_FW_FW(regval) BIT(regval)" +.LASF1778: + .string "I2C_CTL0_START BIT(8)" +.LASF2175: + .string "RCU_PLL_MUL10 CFG0_PLLMF(8)" +.LASF1604: + .string "GPIO_BC_CR10 BIT(10)" +.LASF386: + .string "short +1" +.LASF1751: + .string "GPIO_TIMER4CH3_IREMAP ((uint32_t)0x00200001U)" +.LASF1480: + .string "GPIOC (GPIO_BASE + 0x00000800U)" +.LASF2686: + .string "TIMER_DMACFG_DMATC_10TRANSFER DMACFG_DMATC(9)" +.LASF702: + .string "OVSCR_OVSR(regval) (BITS(2,4) & ((uint32_t)(regval) << 2))" +.LASF2882: + .string "USART_REGIDX_BIT2(regidx,bitpos,regidx2,bitpos2) (((uint32_t)(regidx2) << 22) | (uint32_t)((bitpos2) << 16) | (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos)))" +.LASF2863: + .string "USART_CTL1_CKEN BIT(11)" +.LASF1014: + .string "FCTL_HBC1F(regval) (BITS(8,13) & ((uint32_t)(regval) << 8))" +.LASF625: + .string "ADC0_1_EXTTRIG_REGULAR_T1_CH1 CTL1_ETSRC(3)" +.LASF678: + .string "ADC_CHANNEL_17 ((uint8_t)0x11U)" +.LASF2114: + .string "RCU_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF2810: + .string "TIMER_EXT_TRI_PSC_DIV8 SMCFG_ETPSC(3)" +.LASF467: + .string "INT_FAST64_MAX (__INT_FAST64_MAX__)" +.LASF1701: + .string "GPIO_PIN_SOURCE_0 ((uint8_t)0x00U)" +.LASF512: + .string "I2C_BASE (APB1_BUS_BASE + 0x00005400U)" +.LASF2868: + .string "USART_CTL2_IRLP BIT(2)" +.LASF2668: + .string "TIMER_DMACFG_DMATA_CAR DMACFG_DMATA(11)" +.LASF2662: + .string "TIMER_DMACFG_DMATA_SWEVG DMACFG_DMATA(5)" +.LASF1920: + .string "DBG_LOW_POWER_STANDBY DBG_CTL_STB_HOLD" +.LASF2718: + .string "TIMER_UPDATE_SRC_REGULAR TIMER_CTL0_UPS" +.LASF1642: + .string "AFIO_PCF0_SWJ_CFG BITS(24, 26)" +.LASF1433: + .string "OB_SPC_SPC ((uint32_t)0x000000FFU)" +.LASF511: + .string "USART_BASE (APB1_BUS_BASE + 0x00004400U)" +.LASF1030: + .string "GET_RFIFOMDATA0_DB1(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF1000: + .string "CAN_BIT_POS0(val) (((uint32_t)(val) >> 6) & 0x1FU)" +.LASF2436: + .string "I2S_STD_PCMSHORT I2SCTL_I2SSTD(3)" +.LASF3215: + .string "exti_interrupt_flag_clear" +.LASF1992: + .string "RCU_CFG0_USBFSPSC BITS(22,23)" +.LASF1372: + .string "FMC_OBSTAT REG32((FMC) + 0x1CU)" +.LASF1144: + .string "DAC_CTL_DBOFF0 BIT(1)" +.LASF3112: + .string "EXTI_FTEN_FTEN0 BIT(0)" +.LASF2122: + .string "CTL_REG_OFFSET 0x00U" +.LASF2861: + .string "USART_CTL1_CPH BIT(9)" +.LASF3065: + .string "EXTI_INTEN_INTEN10 BIT(10)" +.LASF1391: + .string "FMC_CTL_OBPG BIT(4)" +.LASF421: + .string "_UINTPTR_T_DECLARED " +.LASF1583: + .string "GPIO_BOP_CR5 BIT(21)" +.LASF3006: + .string "_GCC_MAX_ALIGN_T " +.LASF2179: + .string "RCU_PLL_MUL14 CFG0_PLLMF(12)" +.LASF1610: + .string "GPIO_LOCK_LK0 BIT(0)" +.LASF3203: + .string "exti_line_enum" +.LASF3018: + .string "_RISCV_CONST_H " +.LASF2412: + .string "I2S_AUDIOSAMPLE_11K ((uint32_t)11025U)" +.LASF2303: + .string "RTC_CTL_RSYNF BIT(3)" +.LASF1176: + .string "DAC_TRIGGER_T6_TRGO CTL_DTSEL(2)" +.LASF2962: + .string "_BSD_PTRDIFF_T_ " +.LASF2925: + .string "CLT2_DENT(regval) (BIT(7) & ((uint32_t)(regval) << 7))" +.LASF2486: + .string "TIMER_PSC(timerx) REG32((timerx) + 0x28U)" +.LASF1786: + .string "I2C_CTL1_ERRIE BIT(8)" +.LASF2423: + .string "I2S_FRAMEFORMAT_DT24B_CH32B (I2SCTL_DTLEN(1) | SPI_I2SCTL_CHLEN)" +.LASF2025: + .string "RCU_APB2RST_ADC0RST BIT(9)" +.LASF2414: + .string "I2S_AUDIOSAMPLE_22K ((uint32_t)22050U)" +.LASF2410: + .string "SPI_PSC_256 CTL0_PSC(7)" +.LASF50: + .string "__INT_LEAST16_TYPE__ short int" +.LASF2316: + .string "RTC_INT_OVERFLOW RTC_INTEN_OVIE" +.LASF1728: + .string "GPIO_PIN_11 BIT(11)" +.LASF2615: + .string "TIMER_CCHP_POEN BIT(15)" +.LASF2229: + .string "RCU_PREDV0_DIV11 CFG1_PREDV0(10)" +.LASF1975: + .string "RCU_CTL_HXTALBPS BIT(18)" +.LASF669: + .string "ADC_CHANNEL_8 ((uint8_t)0x08U)" +.LASF2434: + .string "I2S_STD_MSB I2SCTL_I2SSTD(1)" +.LASF305: + .string "__riscv_atomic 1" +.LASF3173: + .string "short int" +.LASF1735: + .string "GPIO_I2C0_REMAP ((uint32_t)0x00000002U)" +.LASF551: + .string "ADC_OVSCR(adcx) REG32((adcx) + 0x80U)" +.LASF1230: + .string "DMA_INTF(dmax) REG32((dmax) + 0x00U)" +.LASF2010: + .string "RCU_INT_PLL2STBIE BIT(14)" +.LASF1769: + .string "I2C_RT(i2cx) REG32((i2cx) + 0x20U)" +.LASF2464: + .string "I2S_FLAG_TXURERR SPI_STAT_TXURERR" +.LASF2206: + .string "RCU_CKOUT0SRC_IRC8M CFG0_CKOUT0SEL(5)" +.LASF2400: + .string "SPI_CK_PL_LOW_PH_2EDGE SPI_CTL0_CKPH" +.LASF2457: + .string "SPI_FLAG_CONFERR SPI_STAT_CONFERR" +.LASF1342: + .string "EXMC_SNCTL_NREN BIT(6)" +.LASF3125: + .string "EXTI_FTEN_FTEN13 BIT(13)" +.LASF1520: + .string "GPIO_CTL1_MD11 BITS(12, 13)" +.LASF548: + .string "ADC_IDATA2(adcx) REG32((adcx) + 0x44U)" +.LASF350: + .string "__GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))" +.LASF2534: + .string "TIMER_DMAINTEN_CH2DEN BIT(11)" +.LASF1801: + .string "I2C_STAT0_ADD10SEND BIT(3)" +.LASF2636: + .string "TIMER_FLAG_CH0 TIMER_INTF_CH0IF" +.LASF2380: + .string "SPI_I2SCTL_I2SSEL BIT(11)" +.LASF1995: + .string "RCU_CFG0_PLLMF_4 BIT(29)" +.LASF3225: + .string "exti_init" +.LASF899: + .string "CAN_STAT_LASTRX BIT(10)" +.LASF274: + .string "__FLT64X_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F64x" +.LASF2874: + .string "USART_CTL2_RTSEN BIT(8)" +.LASF1324: + .string "DMA_MEMORY_TO_MEMORY_ENABLE ((uint32_t)0x00000001U)" +.LASF1712: + .string "GPIO_PIN_SOURCE_11 ((uint8_t)0x0BU)" +.LASF2373: + .string "SPI_I2SCTL_CHLEN BIT(0)" +.LASF759: + .string "BKP_OCTL_RCCV BITS(0,6)" +.LASF1258: + .string "DMA_CH6PADDR(dmax) REG32((dmax) + 0x88U)" +.LASF762: + .string "BKP_OCTL_ROSEL BIT(9)" +.LASF1846: + .string "I2C_SCLSTRETCH_ENABLE ((uint32_t)0x00000000U)" +.LASF795: + .string "CAN_TMI1(canx) REG32((canx) + 0x190U)" +.LASF465: + .string "UINT_FAST32_MAX (__UINT_FAST32_MAX__)" +.LASF666: + .string "ADC_CHANNEL_5 ((uint8_t)0x05U)" +.LASF532: + .string "ADC_CTL0(adcx) REG32((adcx) + 0x04U)" +.LASF1237: + .string "DMA_CH1CNT(dmax) REG32((dmax) + 0x20U)" +.LASF946: + .string "CAN_ERR_PERR BIT(1)" +.LASF2254: + .string "RCU_PLL1_MUL9 CFG1_PLL1MF(7)" +.LASF927: + .string "CAN_RFIFO1_RFL1 BITS(0,1)" +.LASF40: + .string "__SIG_ATOMIC_TYPE__ int" +.LASF958: + .string "CAN_TMI_FT BIT(1)" +.LASF2023: + .string "RCU_APB2RST_PDRST BIT(5)" +.LASF1056: + .string "CAN_BT_SJW_3TQ ((uint8_t)0x02U)" +.LASF2047: + .string "RCU_APB1RST_BKPIRST BIT(27)" +.LASF2647: + .string "TIMER_DMA_UPD ((uint16_t)TIMER_DMAINTEN_UPDEN)" +.LASF451: + .string "INT64_MIN (-__INT64_MAX__ - 1)" +.LASF642: + .string "ADC_SAMPLETIME_13POINT5 SAMPTX_SPT(2)" +.LASF1216: + .string "DAC_TRIANGLE_AMPLITUDE_3 DAC_WAVE_BIT_WIDTH_2" +.LASF2090: + .string "RCU_BDCTL_LXTALBPS BIT(2)" +.LASF813: + .string "CAN_FSCFG(canx) REG32((canx) + 0x20CU)" +.LASF2354: + .string "SPI_CTL1_NSSDRV BIT(2)" +.LASF3034: + .string "ECLIC_INT_ATTR_TRIG_NEG 0x04" +.LASF2180: + .string "RCU_PLL_MUL6_5 CFG0_PLLMF(13)" +.LASF44: + .string "__INT64_TYPE__ long long int" +.LASF904: + .string "CAN_TSTAT_MTE0 BIT(3)" +.LASF639: + .string "SAMPTX_SPT(regval) (BITS(0,2) & ((uint32_t)(regval) << 0))" +.LASF2288: + .string "RTC_CTL REG32(RTC + 0x04U)" +.LASF1262: + .string "DMA_INTF_HTFIF BIT(2)" +.LASF2454: + .string "SPI_FLAG_RBNE SPI_STAT_RBNE" +.LASF2791: + .string "TIMER_TRI_OUT_SRC_O0CPRE CTL1_MMC(4)" +.LASF62: + .string "__UINT_FAST16_TYPE__ unsigned int" +.LASF2684: + .string "TIMER_DMACFG_DMATC_8TRANSFER DMACFG_DMATC(7)" +.LASF3013: + .string "TIMER_MTIME_size 0x8" +.LASF1835: + .string "I2C_SMBUSMODE_ENABLE I2C_CTL0_SMBEN" +.LASF1337: + .string "EXMC_SNWTCFG0 REG32(EXMC + 0x104U)" +.LASF1241: + .string "DMA_CH2CNT(dmax) REG32((dmax) + 0x34U)" +.LASF2978: + .string "_BSD_SIZE_T_DEFINED_ " +.LASF1100: + .string "CAN_FILTER_MASK_16BITS ((uint32_t)0x0000FFFFU)" +.LASF801: + .string "CAN_TMDATA02(canx) REG32((canx) + 0x1A8U)" +.LASF2060: + .string "RCU_APB2EN_PCEN BIT(4)" +.LASF1734: + .string "GPIO_SPI0_REMAP ((uint32_t)0x00000001U)" +.LASF1956: + .string "RCU_CTL REG32(RCU + 0x00U)" +.LASF1632: + .string "AFIO_PCF0_USART0_REMAP BIT(2)" +.LASF948: + .string "CAN_ERR_ERRN BITS(4,6)" +.LASF3180: + .string "uint32_t" +.LASF870: + .string "CAN_F26DATA1(canx) REG32((canx) + 0x314U)" +.LASF2916: + .string "CTL1_CPH(regval) (BIT(9) & ((uint32_t)(regval) << 9))" +.LASF1855: + .string "I2C_DMALST_OFF ((uint32_t)0x00000000U)" +.LASF401: + .string "__LEAST8 \"hh\"" +.LASF1446: + .string "OB_WP_5 ((uint32_t)0x00000020U)" +.LASF204: + .string "__FLT16_HAS_INFINITY__ 1" +.LASF1263: + .string "DMA_INTF_ERRIF BIT(3)" +.LASF1149: + .string "DAC_CTL_DDMAEN0 BIT(12)" +.LASF2011: + .string "RCU_INT_IRC40KSTBIC BIT(16)" +.LASF1195: + .string "DAC_WAVE_BIT_WIDTH_9 DWBW(8)" +.LASF124: + .string "__INT_FAST8_MAX__ 0x7fffffff" +.LASF327: + .string "RT_USING_LIBC 1" +.LASF7: + .string "__GNUC_PATCHLEVEL__ 0" +.LASF1339: + .string "EXMC_SNCTL_NRMUX BIT(1)" +.LASF2644: + .string "TIMER_FLAG_CH1O TIMER_INTF_CH1OF" +.LASF2589: + .string "TIMER_CHCTL2_CH0NP BIT(3)" +.LASF814: + .string "CAN_FAFIFO(canx) REG32((canx) + 0x214U)" +.LASF2471: + .string "TIMER2 (TIMER_BASE + 0x00000400U)" +.LASF1629: + .string "AFIO_EC_EOE BIT(7)" +.LASF2651: + .string "TIMER_DMA_CH3D ((uint16_t)TIMER_DMAINTEN_CH3DEN)" +.LASF39: + .string "__CHAR32_TYPE__ long unsigned int" +.LASF1865: + .string "DATA_RECV(regval) GET_BITS((uint32_t)(regval), 0, 7)" +.LASF2449: + .string "SPI_I2S_INT_FLAG_RXORERR ((uint8_t)0x02U)" +.LASF1156: + .string "DAC_CTL_DDMAEN1 BIT(28)" +.LASF3090: + .string "EXTI_EVEN_EVEN16 BIT(16)" +.LASF3078: + .string "EXTI_EVEN_EVEN4 BIT(4)" +.LASF1063: + .string "CAN_BT_BS1_6TQ ((uint8_t)0x05U)" +.LASF2711: + .string "TIMER_COUNTER_DOWN ((uint16_t)TIMER_CTL0_DIR)" +.LASF294: + .string "__GCC_ATOMIC_LONG_LOCK_FREE 2" +.LASF2776: + .string "TIMER_IC_PSC_DIV8 ((uint16_t)0x000CU)" +.LASF25: + .string "__BIGGEST_ALIGNMENT__ 16" +.LASF2006: + .string "RCU_INT_IRC8MSTBIE BIT(10)" +.LASF3222: + .string "exti_interrupt_disable" +.LASF860: + .string "CAN_F16DATA1(canx) REG32((canx) + 0x2C4U)" +.LASF640: + .string "ADC_SAMPLETIME_1POINT5 SAMPTX_SPT(0)" +.LASF2544: + .string "TIMER_INTF_TRGIF BIT(6)" +.LASF1170: + .string "DACC_R8DH_DAC1_DH BITS(8,15)" +.LASF2453: + .string "SPI_I2S_INT_FLAG_FERR ((uint8_t)0x06U)" +.LASF2328: + .string "SPI2 (SPI_BASE + 0x00000400U)" +.LASF2652: + .string "TIMER_DMA_CMTD ((uint16_t)TIMER_DMAINTEN_CMTDEN)" +.LASF1320: + .string "DMA_PRIORITY_MEDIUM CHCTL_PRIO(1U)" +.LASF1574: + .string "GPIO_BOP_BOP12 BIT(12)" +.LASF1888: + .string "FWDGT_PSC_DIV256 ((uint8_t)PSC_PSC(6))" +.LASF2964: + .string "_GCC_PTRDIFF_T " +.LASF1590: + .string "GPIO_BOP_CR12 BIT(28)" +.LASF1534: + .string "GPIO_ISTAT_ISTAT4 BIT(4)" +.LASF3145: + .string "EXTI_SWIEV_SWIEV14 BIT(14)" +.LASF2394: + .string "SPI_NSS_SOFT SPI_CTL0_SWNSSEN" +.LASF177: + .string "__LDBL_MIN_EXP__ (-16381)" +.LASF312: + .string "__riscv_arch_test 1" +.LASF2427: + .string "I2SCTL_I2SOPMOD(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF1083: + .string "CAN_MAILBOX1 ((uint8_t)0x01U)" +.LASF829: + .string "CAN_F13DATA0(canx) REG32((canx) + 0x2A8U)" +.LASF2165: + .string "PLLMF_4 RCU_CFG0_PLLMF_4" +.LASF1412: + .string "FMC_BIT_POS1(val) ((uint32_t)(val) & 0x1FU)" +.LASF387: + .string "__int20 +2" +.LASF343: + .string "_MACHINE__DEFAULT_TYPES_H " +.LASF552: + .string "ADC_STAT_WDE BIT(0)" +.LASF1306: + .string "DMA_PERIPH_INCREASE_DISABLE ((uint8_t)0x00U)" +.LASF2397: + .string "SPI_ENDIAN_LSB SPI_CTL0_LF" +.LASF1541: + .string "GPIO_ISTAT_ISTAT11 BIT(11)" +.LASF2359: + .string "SPI_CTL1_TBEIE BIT(7)" +.LASF1708: + .string "GPIO_PIN_SOURCE_7 ((uint8_t)0x07U)" +.LASF1369: + .string "FMC_STAT REG32((FMC) + 0x0CU)" +.LASF2279: + .string "RCU_I2S2SRC_CKPLL2_MUL2 RCU_CFG1_I2S2SEL" +.LASF2516: + .string "TIMER_SMCFG_SMC BITS(0,2)" +.LASF627: + .string "ADC0_1_EXTTRIG_REGULAR_T3_CH3 CTL1_ETSRC(5)" +.LASF1358: + .string "EXMC_MEMORY_TYPE_PSRAM SNCTL_NRTP(1)" +.LASF2419: + .string "I2S_AUDIOSAMPLE_192K ((uint32_t)192000U)" +.LASF1690: + .string "GPIO_EVENT_PIN_5 ((uint8_t)0x05U)" +.LASF800: + .string "CAN_TMP2(canx) REG32((canx) + 0x1A4U)" +.LASF930: + .string "CAN_RFIFO1_RFD1 BIT(5)" +.LASF880: + .string "CAN_RFIFOMDATA0(canx,bank) REG32((canx) + 0x1B8U + ((bank) * 0x10U))" +.LASF3185: + .string "EXTI_1" +.LASF2845: + .string "USART_CTL0_REN BIT(2)" +.LASF1297: + .string "DMA_FLAG_G DMA_INTF_GIF" +.LASF1720: + .string "GPIO_PIN_3 BIT(3)" +.LASF806: + .string "CAN_RFIFOMDATA10(canx) REG32((canx) + 0x1BCU)" +.LASF1020: + .string "TMDATA0_DB3(regval) (BITS(24,31) & ((uint32_t)(regval) << 24))" +.LASF2281: + .string "RCU_DEEPSLEEP_V_1_2 DSV_DSLPVS(0)" +.LASF2490: + .string "TIMER_CH1CV(timerx) REG32((timerx) + 0x38U)" +.LASF135: + .string "__UINT_FAST64_MAX__ 0xffffffffffffffffULL" +.LASF1805: + .string "I2C_STAT0_BERR BIT(8)" +.LASF3077: + .string "EXTI_EVEN_EVEN3 BIT(3)" +.LASF2213: + .string "BDCTL_RTCSRC(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF3100: + .string "EXTI_RTEN_RTEN7 BIT(7)" +.LASF1183: + .string "DAC_WAVE_DISABLE CTL_DWM(0)" +.LASF2692: + .string "TIMER_DMACFG_DMATC_16TRANSFER DMACFG_DMATC(15)" +.LASF2875: + .string "USART_CTL2_CTSEN BIT(9)" +.LASF1516: + .string "GPIO_CTL1_MD9 BITS(4, 5)" +.LASF2416: + .string "I2S_AUDIOSAMPLE_44K ((uint32_t)44100U)" +.LASF1639: + .string "AFIO_PCF0_CAN_REMAP BITS(13, 14)" +.LASF2444: + .string "SPI_I2S_INT_TBE ((uint8_t)0x00U)" +.LASF2944: + .string "WWDGT_CFG_WIN BITS(0,6)" +.LASF323: + .string "HAVE_CCONFIG_H 1" +.LASF46: + .string "__UINT16_TYPE__ short unsigned int" +.LASF942: + .string "CAN_INTEN_ERRIE BIT(15)" +.LASF431: + .string "INTPTR_MAX (__INTPTR_MAX__)" +.LASF3041: + .string "BWEI_HANDLER eclic_bwei_handler" +.LASF2857: + .string "USART_CTL1_ADDR BITS(0,3)" +.LASF71: + .string "__LONG_MAX__ 0x7fffffffL" +.LASF2437: + .string "I2S_STD_PCMLONG (I2SCTL_I2SSTD(3) | SPI_I2SCTL_PCMSMOD)" +.LASF2608: + .string "TIMER_CCHP_DTCFG BITS(0,7)" +.LASF1854: + .string "I2C_DMALST_ON I2C_CTL1_DMALST" +.LASF488: + .string "UINT64_C(x) __UINT64_C(x)" +.LASF2219: + .string "RCU_PREDV0_DIV1 CFG1_PREDV0(0)" +.LASF296: + .string "__GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1" +.LASF2518: + .string "TIMER_SMCFG_MSM BIT(7)" +.LASF106: + .string "__INT_LEAST8_WIDTH__ 8" +.LASF2071: + .string "RCU_APB1EN_TIMER4EN BIT(3)" +.LASF55: + .string "__UINT_LEAST32_TYPE__ long unsigned int" +.LASF1907: + .string "DBG_CTL_TIMER0_HOLD BIT(10)" +.LASF1095: + .string "CAN_MODE_SLEEP ((uint8_t)0x04U)" +.LASF962: + .string "CAN_TMP_DLENC BITS(0,3)" +.LASF1085: + .string "CAN_NOMAILBOX ((uint8_t)0x03U)" +.LASF1345: + .string "EXMC_SNCTL_NRWTEN BIT(13)" +.LASF1673: + .string "GPIO_OSPEED_2MHZ ((uint8_t)0x02U)" +.LASF1133: + .string "DAC0_L12DH REG32(DAC + 0x0CU)" +.LASF2625: + .string "TIMER_INT_TRG TIMER_DMAINTEN_TRGIE" +.LASF362: + .string "__EXP(x) __ ##x ##__" +.LASF1400: + .string "FMC_OBSTAT_SPC BIT(1)" +.LASF2034: + .string "RCU_APB1RST_TIMER5RST BIT(4)" +.LASF330: + .string "GD32VF103_H " +.LASF2720: + .string "TIMER_ROS_STATE_ENABLE ((uint16_t)TIMER_CCHP_ROS)" +.LASF283: + .string "__GNUC_STDC_INLINE__ 1" +.LASF427: + .string "__int_fast16_t_defined 1" +.LASF1489: + .string "GPIO_BC(gpiox) REG32((gpiox) + 0x14U)" +.LASF1080: + .string "CAN_BT_BS2_7TQ ((uint8_t)0x06U)" +.LASF284: + .string "__NO_INLINE__ 1" +.LASF2020: + .string "RCU_APB2RST_PARST BIT(2)" +.LASF1830: + .string "I2C_BIT_POS2(val) (((uint32_t)(val) & 0x1F0000U) >> 16)" +.LASF332: + .string "__O volatile" +.LASF2699: + .string "TIMER_EVENT_SRC_CH3G ((uint16_t)0x0010U)" +.LASF567: + .string "ADC_CTL0_SYNCM BITS(16,19)" +.LASF1833: + .string "I2C_STAT1_REG_OFFSET 0x18U" +.LASF1367: + .string "FMC_KEY REG32((FMC) + 0x04U)" +.LASF2513: + .string "TIMER_CTL1_ISO2 BIT(12)" +.LASF970: + .string "CAN_TMDATA1_DB5 BITS(8,15)" +.LASF2355: + .string "SPI_CTL1_NSSP BIT(3)" +.LASF539: + .string "ADC_IOFF3(adcx) REG32((adcx) + 0x20U)" +.LASF2547: + .string "TIMER_INTF_CH1OF BIT(10)" +.LASF2614: + .string "TIMER_CCHP_OAEN BIT(14)" +.LASF3117: + .string "EXTI_FTEN_FTEN5 BIT(5)" +.LASF198: + .string "__FLT16_MAX__ 6.55040000000000000000000000000000000e+4F16" +.LASF363: + .string "__have_longlong64 1" +.LASF852: + .string "CAN_F8DATA1(canx) REG32((canx) + 0x284U)" +.LASF895: + .string "CAN_STAT_WUIF BIT(3)" +.LASF2866: + .string "USART_CTL2_ERRIE BIT(0)" +.LASF812: + .string "CAN_FMCFG(canx) REG32((canx) + 0x204U)" +.LASF2331: + .string "SPI_STAT(spix) REG32((spix) + 0x08U)" +.LASF404: + .string "__LEAST64 \"ll\"" +.LASF195: + .string "__FLT16_MAX_EXP__ 16" +.LASF1826: + .string "I2C_REG_VAL(i2cx,offset) (REG32((i2cx) + (((uint32_t)(offset) & 0xFFFFU) >> 6)))" +.LASF1519: + .string "GPIO_CTL1_CTL10 BITS(10, 11)" +.LASF1059: + .string "CAN_BT_BS1_2TQ ((uint8_t)0x01U)" +.LASF1184: + .string "DAC_WAVE_MODE_LFSR CTL_DWM(1)" +.LASF2326: + .string "SPI0 (SPI_BASE + 0x0000F800U)" +.LASF1147: + .string "DAC_CTL_DWM0 BITS(6,7)" +.LASF2322: + .string "RTC_FLAG_OVERFLOW RTC_CTL_OVIF" +.LASF2478: + .string "TIMER_SMCFG(timerx) REG32((timerx) + 0x08U)" +.LASF2843: + .string "USART_CTL0_SBKCMD BIT(0)" +.LASF1316: + .string "DMA_MEMORY_WIDTH_16BIT CHCTL_MWIDTH(1U)" +.LASF1887: + .string "FWDGT_PSC_DIV128 ((uint8_t)PSC_PSC(5))" +.LASF2949: + .string "WWDGT_CFG_PSC_DIV1 CFG_PSC(0)" +.LASF1381: + .string "FMC_WS_WSCNT BITS(0,2)" +.LASF2819: + .string "USART2 (USART_BASE+(0x00000400U))" +.LASF0: + .string "__STDC__ 1" +.LASF1175: + .string "DAC_TRIGGER_T2_TRGO CTL_DTSEL(1)" +.LASF1568: + .string "GPIO_BOP_BOP6 BIT(6)" +.LASF2601: + .string "TIMER_PSC_PSC BITS(0,15)" +.LASF1108: + .string "CAN_INT_RFNE1 CAN_INTEN_RFNEIE1" +.LASF821: + .string "CAN_F5DATA0(canx) REG32((canx) + 0x268U)" +.LASF2732: + .string "TIMER_CCHP_PROT_2 CCHP_PROT(3)" +.LASF388: + .string "__int20__ +2" +.LASF1310: + .string "CHCTL_PWIDTH(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF1783: + .string "I2C_CTL0_SALT BIT(13)" +.LASF1799: + .string "I2C_STAT0_ADDSEND BIT(1)" +.LASF859: + .string "CAN_F15DATA1(canx) REG32((canx) + 0x2BCU)" +.LASF1211: + .string "DATA_ALIGN(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF322: + .string "NO_INIT 1" +.LASF1399: + .string "FMC_OBSTAT_OBERR BIT(0)" +.LASF2184: + .string "RCU_PLL_MUL19 (PLLMF_4 | CFG0_PLLMF(2))" +.LASF1448: + .string "OB_WP_7 ((uint32_t)0x00000080U)" +.LASF618: + .string "ADC_DATAALIGN_RIGHT ((uint32_t)0x00000000U)" +.LASF2133: + .string "RCU_SCSS_HXTAL CFG0_SCSS(1)" +.LASF1600: + .string "GPIO_BC_CR6 BIT(6)" +.LASF3130: + .string "EXTI_FTEN_FTEN18 BIT(18)" +.LASF1473: + .string "OB_WP_ALL ((uint32_t)0xFFFFFFFFU)" +.LASF1376: + .string "OB_USER REG16((OB) + 0x02U)" +.LASF2413: + .string "I2S_AUDIOSAMPLE_16K ((uint32_t)16000U)" +.LASF2549: + .string "TIMER_INTF_CH3OF BIT(12)" +.LASF2221: + .string "RCU_PREDV0_DIV3 CFG1_PREDV0(2)" +.LASF194: + .string "__FLT16_MIN_10_EXP__ (-4)" +.LASF605: + .string "ADC_SCAN_MODE ADC_CTL0_SM" +.LASF1780: + .string "I2C_CTL0_ACKEN BIT(10)" +.LASF1949: + .string "PMU_LDO_LOWPOWER PMU_CTL_LDOLP" +.LASF2013: + .string "RCU_INT_IRC8MSTBIC BIT(18)" +.LASF2051: + .string "RCU_AHBEN_DMA1EN BIT(1)" +.LASF2294: + .string "RTC_CNTL REG32(RTC + 0x1CU)" +.LASF1895: + .string "FWDGT_FLAG_PUD FWDGT_STAT_PUD" +.LASF883: + .string "CAN_CTL_SLPWMOD BIT(1)" +.LASF2888: + .string "USART_CTL2_REG_OFFSET (0x00000014U)" +.LASF414: + .string "__int32_t_defined 1" +.LASF11: + .string "__ATOMIC_ACQUIRE 2" +.LASF1722: + .string "GPIO_PIN_5 BIT(5)" +.LASF540: + .string "ADC_WDHT(adcx) REG32((adcx) + 0x24U)" +.LASF2914: + .string "USART_CLEN_NONE CTL1_CLEN(0)" +.LASF175: + .string "__LDBL_MANT_DIG__ 113" +.LASF2428: + .string "I2S_MODE_SLAVETX I2SCTL_I2SOPMOD(0)" +.LASF2505: + .string "TIMER_CTL1_CCUC BIT(2)" +.LASF2441: + .string "SPI_DMA_RECEIVE ((uint8_t)0x01U)" +.LASF223: + .string "__FLT64_MIN_EXP__ (-1021)" +.LASF357: + .string "__MISC_VISIBLE 0" +.LASF18: + .string "__SIZEOF_LONG_LONG__ 8" +.LASF549: + .string "ADC_IDATA3(adcx) REG32((adcx) + 0x48U)" +.LASF905: + .string "CAN_TSTAT_MST0 BIT(7)" +.LASF830: + .string "CAN_F14DATA0(canx) REG32((canx) + 0x2B0U)" +.LASF3163: + .string "EXTI_PD_PD13 BIT(13)" +.LASF1435: + .string "OB_USER_USER ((uint32_t)0x00FF0000U)" +.LASF214: + .string "__FLT32_NORM_MAX__ 3.40282346638528859811704183484516925e+38F32" +.LASF923: + .string "CAN_RFIFO0_RFL0 BITS(0,1)" +.LASF1308: + .string "DMA_MEMORY_INCREASE_DISABLE ((uint8_t)0x00U)" +.LASF232: + .string "__FLT64_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F64" +.LASF2169: + .string "RCU_PLL_MUL4 CFG0_PLLMF(2)" +.LASF2233: + .string "RCU_PREDV0_DIV15 CFG1_PREDV0(14)" +.LASF872: + .string "CAN_TMI(canx,bank) REG32((canx) + 0x180U + ((bank) * 0x10U))" +.LASF3194: + .string "EXTI_10" +.LASF128: + .string "__INT_FAST32_MAX__ 0x7fffffff" +.LASF2099: + .string "RCU_RSTSCK_SWRSTF BIT(28)" +.LASF2183: + .string "RCU_PLL_MUL18 (PLLMF_4 | CFG0_PLLMF(1))" +.LASF1389: + .string "FMC_CTL_PER BIT(1)" +.LASF854: + .string "CAN_F10DATA1(canx) REG32((canx) + 0x294U)" +.LASF1782: + .string "I2C_CTL0_PECTRANS BIT(12)" +.LASF2591: + .string "TIMER_CHCTL2_CH1P BIT(5)" +.LASF2902: + .string "CTL0_WL(regval) (BIT(12) & ((uint32_t)(regval) << 12))" +.LASF282: + .string "__USER_LABEL_PREFIX__ " +.LASF3106: + .string "EXTI_RTEN_RTEN13 BIT(13)" +.LASF1208: + .string "DAC_LFSR_BITS9_0 DAC_WAVE_BIT_WIDTH_10" +.LASF533: + .string "ADC_CTL1(adcx) REG32((adcx) + 0x08U)" +.LASF1560: + .string "GPIO_OCTL_OCTL14 BIT(14)" +.LASF565: + .string "ADC_CTL0_DISIC BIT(12)" +.LASF1067: + .string "CAN_BT_BS1_10TQ ((uint8_t)0x09U)" +.LASF1744: + .string "GPIO_TIMER1_FULL_REMAP ((uint32_t)0x00180300U)" +.LASF2127: + .string "CFG0_SCS(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF2197: + .string "RCU_PLL_MUL32 (PLLMF_4 | CFG0_PLLMF(15))" +.LASF1255: + .string "DMA_CH5MADDR(dmax) REG32((dmax) + 0x78U)" +.LASF2458: + .string "SPI_FLAG_RXORERR SPI_STAT_RXORERR" +.LASF2872: + .string "USART_CTL2_DENR BIT(6)" +.LASF1021: + .string "TMDATA1_DB4(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF1125: + .string "CRC_CTL_RST BIT(0)" +.LASF995: + .string "CAN_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF180: + .string "__LDBL_MAX_10_EXP__ 4932" +.LASF2098: + .string "RCU_RSTSCK_PORRSTF BIT(27)" +.LASF85: + .string "__WINT_WIDTH__ 32" +.LASF1240: + .string "DMA_CH2CTL(dmax) REG32((dmax) + 0x30U)" +.LASF3004: + .string "__need_NULL" +.LASF2671: + .string "TIMER_DMACFG_DMATA_CH1CV DMACFG_DMATA(14)" +.LASF1416: + .string "FMC_OBSTAT_REG_OFFSET 0x1CU" +.LASF2598: + .string "TIMER_CHCTL2_CH3EN BIT(12)" +.LASF1553: + .string "GPIO_OCTL_OCTL7 BIT(7)" +.LASF2538: + .string "TIMER_INTF_UPIF BIT(0)" +.LASF1961: + .string "RCU_AHBEN REG32(RCU + 0x14U)" +.LASF2262: + .string "RCU_PLL1_MUL20 CFG1_PLL1MF(15)" +.LASF542: + .string "ADC_RSQ0(adcx) REG32((adcx) + 0x2CU)" +.LASF2733: + .string "TIMER_BREAK_ENABLE ((uint16_t)TIMER_CCHP_BRKEN)" +.LASF2095: + .string "RCU_RSTSCK_IRC40KSTB BIT(1)" +.LASF2768: + .string "TIMER_IC_POLARITY_FALLING ((uint16_t)0x0002U)" +.LASF3219: + .string "exti_interrupt_flag_get" +.LASF989: + .string "CAN_FCTL_HBC1F BITS(8,13)" +.LASF2285: + .string "GD32VF103_RTC_H " +.LASF273: + .string "__FLT64X_MAX__ 1.18973149535723176508575932662800702e+4932F64x" +.LASF2695: + .string "TIMER_EVENT_SRC_UPG ((uint16_t)0x0001U)" +.LASF2376: + .string "SPI_I2SCTL_I2SSTD BITS(4,5)" +.LASF526: + .string "USE_STDPERIPH_DRIVER " +.LASF2083: + .string "RCU_APB1EN_CAN0EN BIT(25)" +.LASF2182: + .string "RCU_PLL_MUL17 (PLLMF_4 | CFG0_PLLMF(0))" +.LASF925: + .string "CAN_RFIFO0_RFO0 BIT(4)" +.LASF2223: + .string "RCU_PREDV0_DIV5 CFG1_PREDV0(4)" +.LASF2822: + .string "USART0 (USART_BASE+(0x0000F400U))" +.LASF1985: + .string "RCU_CFG0_AHBPSC BITS(4,7)" +.LASF2164: + .string "RCU_PLLSRC_HXTAL RCU_CFG0_PLLSEL" +.LASF665: + .string "ADC_CHANNEL_4 ((uint8_t)0x04U)" +.LASF2246: + .string "RCU_PREDV1_DIV11 CFG1_PREDV1(10)" +.LASF3132: + .string "EXTI_SWIEV_SWIEV1 BIT(1)" +.LASF2125: + .string "CFG0_REG_OFFSET 0x04U" +.LASF102: + .string "__UINT32_MAX__ 0xffffffffUL" +.LASF2770: + .string "TIMER_IC_SELECTION_DIRECTTI ((uint16_t)0x0001U)" +.LASF3059: + .string "EXTI_INTEN_INTEN4 BIT(4)" +.LASF2031: + .string "RCU_APB1RST_TIMER2RST BIT(1)" +.LASF2172: + .string "RCU_PLL_MUL7 CFG0_PLLMF(5)" +.LASF606: + .string "ADC_INSERTED_CHANNEL_AUTO ADC_CTL0_ICA" +.LASF834: + .string "CAN_F18DATA0(canx) REG32((canx) + 0x2D0U)" +.LASF1165: + .string "DACC_R12DH_DAC0_DH BITS(0,11)" +.LASF1328: + .string "ECLIC_PRIGROUP_LEVEL1_PRIO3 1" +.LASF2650: + .string "TIMER_DMA_CH2D ((uint16_t)TIMER_DMAINTEN_CH2DEN)" +.LASF2152: + .string "RCU_APB2_CKAHB_DIV1 CFG0_APB2PSC(0)" +.LASF1132: + .string "DAC0_R12DH REG32(DAC + 0x08U)" +.LASF2558: + .string "TIMER_CHCTL0_CH0MS BITS(0,1)" +.LASF1789: + .string "I2C_CTL1_DMAON BIT(11)" +.LASF108: + .string "__INT16_C(c) c" +.LASF318: + .string "__riscv_zifencei 2000000" +.LASF275: + .string "__FLT64X_MIN__ 3.36210314311209350626267781732175260e-4932F64x" +.LASF529: + .string "ADC0 ADC_BASE" +.LASF1393: + .string "FMC_CTL_START BIT(6)" +.LASF2202: + .string "RCU_CKUSB_CKPLL_DIV2 CFG0_USBPSC(3)" +.LASF1076: + .string "CAN_BT_BS2_3TQ ((uint8_t)0x02U)" +.LASF1362: + .string "EXMC_NWAIT_POLARITY_HIGH ((uint32_t)0x00000200U)" +.LASF187: + .string "__LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L" +.LASF1090: + .string "CAN_RFIF_RFL_MASK ((uint32_t)0x00000003U)" +.LASF1906: + .string "DBG_CTL_WWDGT_HOLD BIT(9)" +.LASF165: + .string "__DBL_MAX_10_EXP__ 308" +.LASF37: + .string "__UINTMAX_TYPE__ long long unsigned int" +.LASF2497: + .string "TIMER_CTL0_UPDIS BIT(1)" +.LASF573: + .string "ADC_CTL1_RSTCLB BIT(3)" +.LASF2236: + .string "RCU_PREDV1_DIV1 CFG1_PREDV1(0)" +.LASF1772: + .string "I2C_CTL0_SMBEN BIT(1)" +.LASF416: + .string "_UINT64_T_DECLARED " +.LASF504: + .string "AHB1_BUS_BASE ((uint32_t)0x40018000U)" +.LASF2899: + .string "CTL0_WM(regval) (BIT(11) & ((uint32_t)(regval) << 11))" +.LASF2270: + .string "RCU_PLL2_MUL14 CFG1_PLL2MF(12)" +.LASF508: + .string "WWDGT_BASE (APB1_BUS_BASE + 0x00002C00U)" +.LASF1188: + .string "DAC_WAVE_BIT_WIDTH_2 DWBW(1)" +.LASF3016: + .string "TIMER_FREQ ((uint32_t)SystemCoreClock/4)" +.LASF3139: + .string "EXTI_SWIEV_SWIEV8 BIT(8)" +.LASF1508: + .string "GPIO_CTL0_MD5 BITS(20, 21)" +.LASF1676: + .string "GPIO_EVENT_PORT_GPIOB ((uint8_t)0x01U)" +.LASF2056: + .string "RCU_AHBEN_USBFSEN BIT(12)" +.LASF966: + .string "CAN_TMDATA0_DB1 BITS(8,15)" +.LASF1682: + .string "GPIO_PORT_SOURCE_GPIOC ((uint8_t)0x02U)" +.LASF1546: + .string "GPIO_OCTL_OCTL0 BIT(0)" +.LASF2811: + .string "TIMER_ETP_FALLING TIMER_SMCFG_ETP" +.LASF1904: + .string "DBG_CTL_STB_HOLD BIT(2)" +.LASF2702: + .string "TIMER_EVENT_SRC_BRKG ((uint16_t)0x0080U)" +.LASF1856: + .string "I2C_PEC_ENABLE I2C_CTL0_PECEN" +.LASF1844: + .string "I2C_DUADEN_DISABLE ((uint32_t)0x00000000U)" +.LASF2750: + .string "TIMER_OCN_IDLE_STATE_LOW ((uint16_t)0x0000U)" +.LASF56: + .string "__UINT_LEAST64_TYPE__ long long unsigned int" +.LASF1463: + .string "OB_WP_22 ((uint32_t)0x00400000U)" +.LASF1123: + .string "CRC_DATA_DATA BITS(0, 31)" +.LASF1838: + .string "I2C_RECEIVER ((uint32_t)0x00000001U)" +.LASF1979: + .string "RCU_CTL_PLL1EN BIT(26)" +.LASF241: + .string "__FLT128_MAX_10_EXP__ 4932" +.LASF3052: + .string "EXTI_FTEN REG32(EXTI + 0x0CU)" +.LASF1905: + .string "DBG_CTL_FWDGT_HOLD BIT(8)" +.LASF2870: + .string "USART_CTL2_NKEN BIT(4)" +.LASF1420: + .string "WS_WSCNT_0 WS_WSCNT(0)" +.LASF1283: + .string "DMA_FLAG_ADD(flag,shift) ((flag) << ((shift) * 4U))" +.LASF1622: + .string "GPIO_LOCK_LK12 BIT(12)" +.LASF683: + .string "ADC_INT_FLAG_EOC ADC_STAT_EOC" +.LASF51: + .string "__INT_LEAST32_TYPE__ long int" +.LASF866: + .string "CAN_F22DATA1(canx) REG32((canx) + 0x2F4U)" +.LASF3110: + .string "EXTI_RTEN_RTEN17 BIT(17)" +.LASF2848: + .string "USART_CTL0_RBNEIE BIT(5)" +.LASF1468: + .string "OB_WP_27 ((uint32_t)0x08000000U)" +.LASF374: + .string "_SYS__INTSUP_H " +.LASF2508: + .string "TIMER_CTL1_TI0S BIT(7)" +.LASF913: + .string "CAN_TSTAT_MAL2 BIT(18)" +.LASF2448: + .string "SPI_I2S_INT_FLAG_RBNE ((uint8_t)0x01U)" +.LASF2679: + .string "TIMER_DMACFG_DMATC_3TRANSFER DMACFG_DMATC(2)" +.LASF2225: + .string "RCU_PREDV0_DIV7 CFG1_PREDV0(6)" +.LASF2390: + .string "SPI_TRANSMODE_BDRECEIVE SPI_CTL0_BDEN" +.LASF2877: + .string "USART_GP_PSC BITS(0,7)" +.LASF799: + .string "CAN_TMI2(canx) REG32((canx) + 0x1A0U)" +.LASF2014: + .string "RCU_INT_HXTALSTBIC BIT(19)" +.LASF2347: + .string "SPI_CTL0_FF16 BIT(11)" +.LASF810: + .string "CAN_RFIFOMDATA11(canx) REG32((canx) + 0x1CCU)" +.LASF1959: + .string "RCU_APB2RST REG32(RCU + 0x0CU)" +.LASF1467: + .string "OB_WP_26 ((uint32_t)0x04000000U)" +.LASF1988: + .string "RCU_CFG0_ADCPSC BITS(14,15)" +.LASF1197: + .string "DAC_WAVE_BIT_WIDTH_11 DWBW(10)" +.LASF390: + .string "long +4" +.LASF1266: + .string "DMA_INTC_HTFIFC BIT(2)" +.LASF1072: + .string "CAN_BT_BS1_15TQ ((uint8_t)0x0EU)" +.LASF2885: + .string "USART_STAT_REG_OFFSET (0x00000000U)" +.LASF2026: + .string "RCU_APB2RST_ADC1RST BIT(10)" +.LASF2130: + .string "RCU_CKSYSSRC_PLL CFG0_SCS(2)" +.LASF1775: + .string "I2C_CTL0_PECEN BIT(5)" +.LASF159: + .string "__FLT_HAS_QUIET_NAN__ 1" +.LASF631: + .string "ADC0_1_EXTTRIG_INSERTED_T0_TRGO CTL1_ETSIC(0)" +.LASF2101: + .string "RCU_RSTSCK_WWDGTRSTF BIT(30)" +.LASF2820: + .string "UART3 (USART_BASE+(0x00000800U))" +.LASF1918: + .string "DBG_LOW_POWER_SLEEP DBG_CTL_SLP_HOLD" +.LASF590: + .string "ADC_ISQ_IL BITS(20,21)" +.LASF446: + .string "INT32_MAX (__INT32_MAX__)" +.LASF2252: + .string "CFG1_PLL1MF(regval) (BITS(8,11) & ((uint32_t)(regval) << 8))" +.LASF681: + .string "ADC_INT_EOIC ADC_STAT_EOIC" +.LASF2723: + .string "TIMER_IOS_STATE_DISABLE ((uint16_t)0x0000U)" +.LASF1: + .string "__STDC_VERSION__ 201710L" +.LASF2642: + .string "TIMER_FLAG_BRK TIMER_INTF_BRKIF" +.LASF912: + .string "CAN_TSTAT_MTFNERR2 BIT(17)" +.LASF2238: + .string "RCU_PREDV1_DIV3 CFG1_PREDV1(2)" +.LASF2729: + .string "TIMER_CCHP_PROT_OFF CCHP_PROT(0)" +.LASF658: + .string "ADC_INSERTED_CHANNEL_1 ((uint8_t)0x01U)" +.LASF136: + .string "__INTPTR_MAX__ 0x7fffffff" +.LASF889: + .string "CAN_CTL_TTC BIT(7)" +.LASF1296: + .string "DMA_INT_FLAG_ERR DMA_INTF_ERRIF" +.LASF2111: + .string "RCU_DSV_DSLPVS BITS(0,1)" +.LASF1936: + .string "CTL_LVDT(regval) (BITS(5,7)&((uint32_t)(regval) << 5))" +.LASF224: + .string "__FLT64_MIN_10_EXP__ (-307)" +.LASF1624: + .string "GPIO_LOCK_LK14 BIT(14)" +.LASF622: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH0 CTL1_ETSRC(0)" +.LASF2528: + .string "TIMER_DMAINTEN_CMTIE BIT(5)" +.LASF1986: + .string "RCU_CFG0_APB1PSC BITS(8,10)" +.LASF607: + .string "CTL0_SYNCM(regval) (BITS(16,19) & ((uint32_t)(regval) << 16))" +.LASF1409: + .string "FMC_REGIDX_BITS(regidx,bitpos0,bitpos1) (((uint32_t)(regidx) << 12) | ((uint32_t)(bitpos0) << 6) | (uint32_t)(bitpos1))" +.LASF1633: + .string "AFIO_PCF0_USART1_REMAP BIT(3)" +.LASF2389: + .string "SPI_TRANSMODE_RECEIVEONLY SPI_CTL0_RO" +.LASF1699: + .string "GPIO_EVENT_PIN_14 ((uint8_t)0x0EU)" +.LASF3054: + .string "EXTI_PD REG32(EXTI + 0x14U)" +.LASF2728: + .string "CCHP_PROT(regval) ((uint16_t)(BITS(8, 9) & ((uint32_t)(regval) << 8U)))" +.LASF2886: + .string "USART_CTL0_REG_OFFSET (0x0000000CU)" +.LASF394: + .string "__INT16 \"h\"" +.LASF2633: + .string "TIMER_INT_FLAG_TRG TIMER_INT_TRG" +.LASF2204: + .string "RCU_CKOUT0SRC_NONE CFG0_CKOUT0SEL(0)" +.LASF957: + .string "CAN_TMI_TEN BIT(0)" +.LASF2545: + .string "TIMER_INTF_BRKIF BIT(7)" +.LASF167: + .string "__DBL_MAX__ ((double)1.79769313486231570814527423731704357e+308L)" +.LASF2343: + .string "SPI_CTL0_LF BIT(7)" +.LASF2080: + .string "RCU_APB1EN_UART4EN BIT(20)" +.LASF601: + .string "ADC_FLAG_EOIC ADC_STAT_EOIC" +.LASF1129: + .string "DAC1 (1U)" +.LASF680: + .string "ADC_INT_EOC ADC_STAT_EOC" +.LASF3008: + .string "TIMER_MSIP 0xFFC" +.LASF3002: + .string "NULL" +.LASF782: + .string "CAN1 (CAN0 + 0x00000400U)" +.LASF1347: + .string "EXMC_SNTCFG_ASET BITS(0,3)" +.LASF117: + .string "__UINT8_C(c) c" +.LASF331: + .string "__I volatile const" +.LASF1770: + .string "I2C_FMPCFG(i2cx) REG32((i2cx) + 0x90U)" +.LASF1003: + .string "TSTAT_REG_OFFSET ((uint8_t)0x08U)" +.LASF2726: + .string "TIMER_OUTAUTO_ENABLE ((uint16_t)TIMER_CCHP_OAEN)" +.LASF936: + .string "CAN_INTEN_RFFIE1 BIT(5)" +.LASF2145: + .string "CFG0_APB1PSC(regval) (BITS(8,10) & ((uint32_t)(regval) << 8))" +.LASF1592: + .string "GPIO_BOP_CR14 BIT(30)" +.LASF649: + .string "WDHT_WDHT(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF1686: + .string "GPIO_EVENT_PIN_1 ((uint8_t)0x01U)" +.LASF228: + .string "__FLT64_MAX__ 1.79769313486231570814527423731704357e+308F64" +.LASF2132: + .string "RCU_SCSS_IRC8M CFG0_SCSS(0)" +.LASF176: + .string "__LDBL_DIG__ 33" +.LASF1093: + .string "CAN_MODE_INITIALIZE ((uint8_t)0x01U)" +.LASF2865: + .string "USART_CTL1_LMEN BIT(14)" +.LASF34: + .string "__WCHAR_TYPE__ int" +.LASF978: + .string "CAN_RFIFOMP_FI BITS(8,15)" +.LASF1761: + .string "I2C_CTL0(i2cx) REG32((i2cx) + 0x00U)" +.LASF846: + .string "CAN_F2DATA1(canx) REG32((canx) + 0x254U)" +.LASF1515: + .string "GPIO_CTL1_CTL8 BITS(2, 3)" +.LASF3048: + .string "EXTI EXTI_BASE" +.LASF1917: + .string "DBG_CTL_CAN1_HOLD BIT(21)" +.LASF1881: + .string "PSC_PSC(regval) (BITS(0,2) & ((uint32_t)(regval) << 0))" +.LASF1658: + .string "AFIO_EXTI13_SS BITS(4, 7)" +.LASF3082: + .string "EXTI_EVEN_EVEN8 BIT(8)" +.LASF324: + .string "GD32VF103V_EVAL 1" +.LASF1338: + .string "EXMC_SNCTL_NRBKEN BIT(0)" +.LASF1903: + .string "DBG_CTL_DSLP_HOLD BIT(1)" +.LASF643: + .string "ADC_SAMPLETIME_28POINT5 SAMPTX_SPT(3)" +.LASF2002: + .string "RCU_INT_PLL2STBIF BIT(6)" +.LASF84: + .string "__WCHAR_WIDTH__ 32" +.LASF2131: + .string "CFG0_SCSS(regval) (BITS(2,3) & ((uint32_t)(regval) << 2))" +.LASF688: + .string "ADC_RESOLUTION_8B OVSCR_DRES(2)" +.LASF514: + .string "BKP_BASE (APB1_BUS_BASE + 0x00006C00U)" +.LASF2199: + .string "RCU_CKUSB_CKPLL_DIV1_5 CFG0_USBPSC(0)" +.LASF689: + .string "ADC_RESOLUTION_6B OVSCR_DRES(3)" +.LASF2218: + .string "CFG1_PREDV0(regval) (BITS(0,3) & ((uint32_t)(regval) << 0))" +.LASF773: + .string "OCTL_RCCV(regval) (BITS(0,6) & ((uint32_t)(regval) << 0))" +.LASF2788: + .string "TIMER_TRI_OUT_SRC_ENABLE CTL1_MMC(1)" +.LASF2240: + .string "RCU_PREDV1_DIV5 CFG1_PREDV1(4)" +.LASF968: + .string "CAN_TMDATA0_DB3 BITS(24,31)" +.LASF2319: + .string "RTC_INT_FLAG_OVERFLOW RTC_CTL_OVIF" +.LASF1943: + .string "PMU_LVDT_6 CTL_LVDT(6)" +.LASF1793: + .string "I2C_SADDR0_ADDRESS_H BITS(8,9)" +.LASF1103: + .string "CAN_TIMEOUT ((uint32_t)0x0000FFFFU)" +.LASF1106: + .string "CAN_INT_RFF0 CAN_INTEN_RFFIE0" +.LASF2582: + .string "TIMER_CHCTL1_CH2CAPPSC BITS(2,3)" +.LASF1452: + .string "OB_WP_11 ((uint32_t)0x00000800U)" +.LASF81: + .string "__INT_WIDTH__ 32" +.LASF766: + .string "BKP_TPCS_TIR BIT(1)" +.LASF3168: + .string "EXTI_PD_PD18 BIT(18)" +.LASF202: + .string "__FLT16_DENORM_MIN__ 5.96046447753906250000000000000000000e-8F16" +.LASF613: + .string "ADC_DAUL_INSERTED_PARALLEL CTL0_SYNCM(5)" +.LASF438: + .string "UINT_LEAST8_MAX (__UINT_LEAST8_MAX__)" +.LASF1538: + .string "GPIO_ISTAT_ISTAT8 BIT(8)" +.LASF781: + .string "CAN0 CAN_BASE" +.LASF400: + .string "__FAST64 \"ll\"" +.LASF1134: + .string "DAC0_R8DH REG32(DAC + 0x10U)" +.LASF1465: + .string "OB_WP_24 ((uint32_t)0x01000000U)" +.LASF173: + .string "__DBL_HAS_INFINITY__ 1" +.LASF1054: + .string "CAN_BT_SJW_1TQ ((uint8_t)0x00U)" +.LASF142: + .string "__FLT_EVAL_METHOD_TS_18661_3__ 0" +.LASF30: + .string "__FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__" +.LASF1800: + .string "I2C_STAT0_BTC BIT(2)" +.LASF33: + .string "__PTRDIFF_TYPE__ int" +.LASF988: + .string "CAN_FCTL_FLD BIT(0)" +.LASF3111: + .string "EXTI_RTEN_RTEN18 BIT(18)" +.LASF2887: + .string "USART_CTL1_REG_OFFSET (0x00000010U)" +.LASF2658: + .string "TIMER_DMACFG_DMATA_CTL1 DMACFG_DMATA(1)" +.LASF113: + .string "__INT_LEAST64_MAX__ 0x7fffffffffffffffLL" +.LASF93: + .string "__SIG_ATOMIC_MAX__ 0x7fffffff" +.LASF2382: + .string "SPI_I2SPSC_OF BIT(8)" +.LASF1776: + .string "I2C_CTL0_GCEN BIT(6)" +.LASF1040: + .string "ERR_ERRN(regval) (BITS(4,6) & ((uint32_t)(regval) << 4))" +.LASF1874: + .string "FWDGT_RLD REG32((FWDGT) + 0x00000008U)" +.LASF2646: + .string "TIMER_FLAG_CH3O TIMER_INTF_CH3OF" +.LASF2736: + .string "TIMER_CH_1 ((uint16_t)0x0001U)" +.LASF1677: + .string "GPIO_EVENT_PORT_GPIOC ((uint8_t)0x02U)" +.LASF1004: + .string "RFIFO0_REG_OFFSET ((uint8_t)0x0CU)" +.LASF624: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH2 CTL1_ETSRC(2)" +.LASF2247: + .string "RCU_PREDV1_DIV12 CFG1_PREDV1(11)" +.LASF1724: + .string "GPIO_PIN_7 BIT(7)" +.LASF959: + .string "CAN_TMI_FF BIT(2)" +.LASF1898: + .string "DBG DBG_BASE" +.LASF1484: + .string "GPIO_CTL0(gpiox) REG32((gpiox) + 0x00U)" +.LASF1365: + .string "OB OB_BASE" +.LASF2666: + .string "TIMER_DMACFG_DMATA_CNT DMACFG_DMATA(9)" +.LASF2639: + .string "TIMER_FLAG_CH3 TIMER_INTF_CH3IF" +.LASF3075: + .string "EXTI_EVEN_EVEN1 BIT(1)" +.LASF977: + .string "CAN_RFIFOMP_DLENC BITS(0,3)" +.LASF3182: + .string "FlagStatus" +.LASF3119: + .string "EXTI_FTEN_FTEN7 BIT(7)" +.LASF2977: + .string "_SIZE_T_DEFINED " +.LASF437: + .string "INT_LEAST8_MAX (__INT_LEAST8_MAX__)" +.LASF1908: + .string "DBG_CTL_TIMER1_HOLD BIT(11)" +.LASF1451: + .string "OB_WP_10 ((uint32_t)0x00000400U)" +.LASF2156: + .string "RCU_APB2_CKAHB_DIV16 CFG0_APB2PSC(7)" +.LASF1899: + .string "DBG_ID REG32(DBG + 0x00U)" +.LASF17: + .string "__SIZEOF_LONG__ 4" +.LASF1885: + .string "FWDGT_PSC_DIV32 ((uint8_t)PSC_PSC(3))" +.LASF2599: + .string "TIMER_CHCTL2_CH3P BIT(13)" +.LASF2805: + .string "TIMER_MASTER_SLAVE_MODE_DISABLE ((uint32_t)0x00000000U)" +.LASF1470: + .string "OB_WP_29 ((uint32_t)0x20000000U)" +.LASF395: + .string "__INT32 \"l\"" +.LASF761: + .string "BKP_OCTL_ASOEN BIT(8)" +.LASF1293: + .string "DMA_INT_FLAG_G DMA_INTF_GIF" +.LASF1330: + .string "ECLIC_PRIGROUP_LEVEL3_PRIO1 3" +.LASF1440: + .string "OB_WP3_WP3 ((uint32_t)0xFF000000U)" +.LASF2258: + .string "RCU_PLL1_MUL13 CFG1_PLL1MF(11)" +.LASF347: + .string "__NEWLIB__ 4" +.LASF1531: + .string "GPIO_ISTAT_ISTAT1 BIT(1)" +.LASF2602: + .string "TIMER_CAR_CARL BITS(0,15)" +.LASF2998: + .string "_GCC_WCHAR_T " +.LASF1267: + .string "DMA_INTC_ERRIFC BIT(3)" +.LASF3093: + .string "EXTI_RTEN_RTEN0 BIT(0)" +.LASF1157: + .string "DAC_SWT_SWTR0 BIT(0)" +.LASF2063: + .string "RCU_APB2EN_ADC0EN BIT(9)" +.LASF1960: + .string "RCU_APB1RST REG32(RCU + 0x10U)" +.LASF1628: + .string "AFIO_EC_PORT BITS(4, 6)" +.LASF351: + .string "__GNUC_PREREQ__(ma,mi) __GNUC_PREREQ(ma, mi)" +.LASF259: + .string "__FLT32X_NORM_MAX__ 1.79769313486231570814527423731704357e+308F32x" +.LASF2597: + .string "TIMER_CHCTL2_CH2NP BIT(11)" +.LASF2649: + .string "TIMER_DMA_CH1D ((uint16_t)TIMER_DMAINTEN_CH1DEN)" +.LASF2840: + .string "USART_DATA_DATA BITS(0,8)" +.LASF365: + .string "___int8_t_defined 1" +.LASF3144: + .string "EXTI_SWIEV_SWIEV13 BIT(13)" +.LASF2862: + .string "USART_CTL1_CPL BIT(10)" +.LASF1811: + .string "I2C_STAT0_SMBALT BIT(15)" +.LASF460: + .string "INT_FAST16_MIN (-__INT_FAST16_MAX__ - 1)" +.LASF2093: + .string "RCU_BDCTL_BKPRST BIT(16)" +.LASF932: + .string "CAN_INTEN_RFNEIE0 BIT(1)" +.LASF2524: + .string "TIMER_DMAINTEN_CH0IE BIT(1)" +.LASF954: + .string "CAN_BT_SJW BITS(24,25)" +.LASF2634: + .string "TIMER_INT_FLAG_BRK TIMER_INT_BRK" +.LASF1897: + .string "GD32VF103_DBG_H " +.LASF440: + .string "INT16_MAX (__INT16_MAX__)" +.LASF112: + .string "__INT_LEAST32_WIDTH__ 32" +.LASF2334: + .string "SPI_RCRC(spix) REG32((spix) + 0x14U)" +.LASF3121: + .string "EXTI_FTEN_FTEN9 BIT(9)" +.LASF1193: + .string "DAC_WAVE_BIT_WIDTH_7 DWBW(6)" +.LASF267: + .string "__FLT64X_DIG__ 33" +.LASF2912: + .string "USART_LBLEN_11B CTL1_LBLEN(1)" +.LASF1790: + .string "I2C_CTL1_DMALST BIT(12)" +.LASF1217: + .string "DAC_TRIANGLE_AMPLITUDE_7 DAC_WAVE_BIT_WIDTH_3" +.LASF1717: + .string "GPIO_PIN_0 BIT(0)" +.LASF1097: + .string "CAN_FILTERBITS_32BIT ((uint8_t)0x01U)" +.LASF828: + .string "CAN_F12DATA0(canx) REG32((canx) + 0x2A0U)" +.LASF1879: + .string "FWDGT_STAT_PUD BIT(0)" +.LASF637: + .string "ADC0_1_EXTTRIG_INSERTED_EXTI_15 CTL1_ETSIC(6)" +.LASF2832: + .string "USART_STAT_NERR BIT(2)" +.LASF947: + .string "CAN_ERR_BOERR BIT(2)" +.LASF1823: + .string "I2C_RT_RISETIME BITS(0,5)" +.LASF2575: + .string "TIMER_CHCTL1_CH2COMCTL BITS(4,6)" +.LASF261: + .string "__FLT32X_EPSILON__ 2.22044604925031308084726333618164062e-16F32x" +.LASF2103: + .string "RCU_AHBRST_USBFSRST BIT(12)" +.LASF364: + .string "__have_long32 1" +.LASF2963: + .string "___int_ptrdiff_t_h " +.LASF1377: + .string "OB_WP0 REG16((OB) + 0x08U)" +.LASF1460: + .string "OB_WP_19 ((uint32_t)0x00080000U)" +.LASF2958: + .string "_T_PTRDIFF_ " +.LASF1928: + .string "PMU_CTL_STBRST BIT(3)" +.LASF1808: + .string "I2C_STAT0_OUERR BIT(11)" +.LASF2456: + .string "SPI_FLAG_CRCERR SPI_STAT_CRCERR" +.LASF2501: + .string "TIMER_CTL0_CAM BITS(5,6)" +.LASF1382: + .string "FMC_KEY_KEY BITS(0,31)" +.LASF1462: + .string "OB_WP_21 ((uint32_t)0x00200000U)" +.LASF2266: + .string "RCU_PLL2_MUL10 CFG1_PLL2MF(8)" +.LASF340: + .string "LXTAL_VALUE ((uint32_t)32768)" +.LASF481: + .string "INT8_C(x) __INT8_C(x)" +.LASF1171: + .string "DAC0_DO_DAC0_DO BITS(0,11)" +.LASF2953: + .string "N200_FUNC_H " +.LASF1572: + .string "GPIO_BOP_BOP10 BIT(10)" +.LASF788: + .string "CAN_INTEN(canx) REG32((canx) + 0x14U)" +.LASF1505: + .string "GPIO_CTL0_CTL3 BITS(14, 15)" +.LASF2760: + .string "TIMER_OC_SHADOW_DISABLE ((uint16_t)0x0000U)" +.LASF1588: + .string "GPIO_BOP_CR10 BIT(26)" +.LASF2499: + .string "TIMER_CTL0_SPM BIT(3)" +.LASF2980: + .string "___int_size_t_h " +.LASF2027: + .string "RCU_APB2RST_TIMER0RST BIT(11)" +.LASF3143: + .string "EXTI_SWIEV_SWIEV12 BIT(12)" +.LASF2714: + .string "TIMER_CKDIV_DIV2 CTL0_CKDIV(1)" +.LASF2590: + .string "TIMER_CHCTL2_CH1EN BIT(4)" +.LASF2320: + .string "RTC_FLAG_SECOND RTC_CTL_SCIF" +.LASF1442: + .string "OB_WP_1 ((uint32_t)0x00000002U)" +.LASF231: + .string "__FLT64_EPSILON__ 2.22044604925031308084726333618164062e-16F64" +.LASF1753: + .string "GPIO_SWJ_NONJTRST_REMAP ((uint32_t)0x00300100U)" +.LASF2645: + .string "TIMER_FLAG_CH2O TIMER_INTF_CH2OF" +.LASF1693: + .string "GPIO_EVENT_PIN_8 ((uint8_t)0x08U)" +.LASF1196: + .string "DAC_WAVE_BIT_WIDTH_10 DWBW(9)" +.LASF809: + .string "CAN_RFIFOMDATA01(canx) REG32((canx) + 0x1C8U)" +.LASF1458: + .string "OB_WP_17 ((uint32_t)0x00020000U)" +.LASF277: + .string "__FLT64X_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F64x" +.LASF1927: + .string "PMU_CTL_WURST BIT(2)" +.LASF874: + .string "CAN_TMDATA0(canx,bank) REG32((canx) + 0x188U + ((bank) * 0x10U))" +.LASF158: + .string "__FLT_HAS_INFINITY__ 1" +.LASF1890: + .string "FWDGT_WRITEACCESS_DISABLE ((uint16_t)0x0000U)" +.LASF2442: + .string "SPI_CRC_TX ((uint8_t)0x00U)" +.LASF73: + .string "__WCHAR_MAX__ 0x7fffffff" +.LASF2244: + .string "RCU_PREDV1_DIV9 CFG1_PREDV1(8)" +.LASF2743: + .string "TIMER_OC_POLARITY_HIGH ((uint16_t)0x0000U)" +.LASF2242: + .string "RCU_PREDV1_DIV7 CFG1_PREDV1(6)" +.LASF1219: + .string "DAC_TRIANGLE_AMPLITUDE_31 DAC_WAVE_BIT_WIDTH_5" +.LASF1971: + .string "RCU_CTL_IRC8MADJ BITS(3,7)" +.LASF525: + .string "USBFS_BASE (AHB1_BUS_BASE + 0x0FFE8000U)" +.LASF2786: + .string "CTL1_MMC(regval) (BITS(4, 6) & ((uint32_t)(regval) << 4U))" +.LASF2091: + .string "RCU_BDCTL_RTCSRC BITS(8,9)" +.LASF661: + .string "ADC_CHANNEL_0 ((uint8_t)0x00U)" +.LASF209: + .string "__FLT32_MIN_10_EXP__ (-37)" +.LASF122: + .string "__UINT_LEAST64_MAX__ 0xffffffffffffffffULL" +.LASF2804: + .string "TIMER_MASTER_SLAVE_MODE_ENABLE TIMER_SMCFG_MSM" +.LASF2574: + .string "TIMER_CHCTL1_CH2COMSEN BIT(3)" +.LASF1829: + .string "I2C_REG_VAL2(i2cx,offset) (REG32((i2cx) + ((uint32_t)(offset) >> 22)))" +.LASF269: + .string "__FLT64X_MIN_10_EXP__ (-4931)" +.LASF602: + .string "ADC_FLAG_STIC ADC_STAT_STIC" +.LASF3044: + .string "ECLIC_GROUP_LEVEL1_PRIO3 1" +.LASF306: + .string "__riscv_mul 1" +.LASF2623: + .string "TIMER_INT_CH3 TIMER_DMAINTEN_CH3IE" +.LASF2937: + .string "GD32VF103_WWDGT_H " +.LASF64: + .string "__UINT_FAST64_TYPE__ long long unsigned int" +.LASF2883: + .string "USART_REG_VAL2(usartx,offset) (REG32((usartx) + ((uint32_t)(offset) >> 22)))" +.LASF922: + .string "CAN_TSTAT_TMLS2 BIT(31)" +.LASF2537: + .string "TIMER_DMAINTEN_TRGDEN BIT(14)" +.LASF146: + .string "__FLT_DIG__ 6" +.LASF455: + .string "INT_LEAST64_MAX (__INT_LEAST64_MAX__)" +.LASF937: + .string "CAN_INTEN_RFOIE1 BIT(6)" +.LASF276: + .string "__FLT64X_EPSILON__ 1.92592994438723585305597794258492732e-34F64x" +.LASF1475: + .string "FMC_SIZE (*(uint16_t *)0x1FFFF7E0U)" +.LASF2462: + .string "I2S_FLAG_TBE SPI_STAT_TBE" +.LASF1634: + .string "AFIO_PCF0_USART2_REMAP BITS(4, 5)" +.LASF1749: + .string "GPIO_CAN0_FULL_REMAP ((uint32_t)0x001D6000U)" +.LASF123: + .string "__UINT64_C(c) c ## ULL" +.LASF2161: + .string "RCU_CKADC_CKAPB2_DIV12 ((uint32_t)0x00000005U)" +.LASF911: + .string "CAN_TSTAT_MTF2 BIT(16)" +.LASF1444: + .string "OB_WP_3 ((uint32_t)0x00000008U)" +.LASF1309: + .string "DMA_MEMORY_INCREASE_ENABLE ((uint8_t)0x01U)" +.LASF918: + .string "CAN_TSTAT_TME1 BIT(27)" +.LASF820: + .string "CAN_F4DATA0(canx) REG32((canx) + 0x260U)" +.LASF1993: + .string "RCU_CFG0_CKOUT0SEL BITS(24,27)" +.LASF1947: + .string "PMU_FLAG_LVD PMU_CS_LVDF" +.LASF490: + .string "UINTMAX_C(x) __UINTMAX_C(x)" +.LASF1359: + .string "EXMC_MEMORY_TYPE_NOR SNCTL_NRTP(2)" +.LASF2115: + .string "AHBEN_REG_OFFSET 0x14U" +.LASF596: + .string "ADC_OVSCR_OVSS BITS(5,8)" +.LASF1834: + .string "I2C_I2CMODE_ENABLE ((uint32_t)0x00000000U)" +.LASF314: + .string "__riscv_m 2000000" +.LASF1837: + .string "I2C_SMBUS_HOST I2C_CTL0_SMBSEL" +.LASF1840: + .string "I2C_ACK_DISABLE ((uint32_t)0x00000000U)" +.LASF179: + .string "__LDBL_MAX_EXP__ 16384" +.LASF1438: + .string "OB_WP1_WP1 ((uint32_t)0x0000FF00U)" +.LASF23: + .string "__SIZEOF_SIZE_T__ 4" +.LASF338: + .string "IRC8M_STARTUP_TIMEOUT ((uint16_t)0x0500)" +.LASF1597: + .string "GPIO_BC_CR3 BIT(3)" +.LASF2168: + .string "RCU_PLL_MUL3 CFG0_PLLMF(1)" +.LASF1421: + .string "WS_WSCNT_1 WS_WSCNT(1)" +.LASF1102: + .string "CAN_FT_REMOTE ((uint32_t)0x00000002U)" +.LASF1242: + .string "DMA_CH2PADDR(dmax) REG32((dmax) + 0x38U)" +.LASF1390: + .string "FMC_CTL_MER BIT(2)" +.LASF1836: + .string "I2C_SMBUS_DEVICE ((uint32_t)0x00000000U)" +.LASF1318: + .string "CHCTL_PRIO(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF2823: + .string "USART_STAT(usartx) REG32((usartx) + (0x00000000U))" +.LASF2041: + .string "RCU_APB1RST_UART3RST BIT(19)" +.LASF2654: + .string "TIMER_DMAREQUEST_UPDATEEVENT TIMER_CTL1_DMAS" +.LASF255: + .string "__FLT32X_MAX_EXP__ 1024" +.LASF629: + .string "ADC0_1_EXTTRIG_REGULAR_NONE CTL1_ETSRC(7)" +.LASF2553: + .string "TIMER_SWEVG_CH2G BIT(3)" +.LASF1586: + .string "GPIO_BOP_CR8 BIT(24)" +.LASF2038: + .string "RCU_APB1RST_SPI2RST BIT(15)" +.LASF1609: + .string "GPIO_BC_CR15 BIT(15)" +.LASF104: + .string "__INT_LEAST8_MAX__ 0x7f" +.LASF2876: + .string "USART_CTL2_CTSIE BIT(10)" +.LASF2994: + .string "_WCHAR_T_DEFINED " +.LASF1912: + .string "DBG_CTL_I2C0_HOLD BIT(15)" +.LASF382: + .string "long" +.LASF3014: + .string "TIMER_CTRL_ADDR 0xd1000000" +.LASF2700: + .string "TIMER_EVENT_SRC_CMTG ((uint16_t)0x0020U)" +.LASF2087: + .string "RCU_APB1EN_DACEN BIT(29)" +.LASF3166: + .string "EXTI_PD_PD16 BIT(16)" +.LASF1274: + .string "DMA_CHXCTL_PNAGA BIT(6)" +.LASF2562: + .string "TIMER_CHCTL0_CH0COMCEN BIT(7)" +.LASF63: + .string "__UINT_FAST32_TYPE__ unsigned int" +.LASF2929: + .string "USART_RTS_ENABLE CLT2_RTSEN(1)" +.LASF356: + .string "__LARGEFILE_VISIBLE 0" +.LASF3122: + .string "EXTI_FTEN_FTEN10 BIT(10)" +.LASF1731: + .string "GPIO_PIN_14 BIT(14)" +.LASF1174: + .string "DAC_TRIGGER_T5_TRGO CTL_DTSEL(0)" +.LASF2286: + .string "RTC RTC_BASE" +.LASF952: + .string "CAN_BT_BS1 BITS(16,19)" +.LASF3157: + .string "EXTI_PD_PD7 BIT(7)" +.LASF1121: + .string "CRC_FDATA REG32(CRC + 0x04U)" +.LASF1998: + .string "RCU_INT_IRC8MSTBIF BIT(2)" +.LASF787: + .string "CAN_RFIFO1(canx) REG32((canx) + 0x10U)" +.LASF1424: + .string "OB_FWDGT_HW ((uint8_t)0x00U)" +.LASF1847: + .string "I2C_SCLSTRETCH_DISABLE I2C_CTL0_SS" +.LASF1012: + .string "FDATA_MASK_HIGH(regval) (BITS(16,31) & ((uint32_t)(regval) << 16))" +.LASF2096: + .string "RCU_RSTSCK_RSTFC BIT(24)" +.LASF999: + .string "CAN_REG_VALS(canx,offset) (REG32((canx) + ((uint32_t)(offset) >> 12)))" +.LASF1550: + .string "GPIO_OCTL_OCTL4 BIT(4)" +.LASF49: + .string "__INT_LEAST8_TYPE__ signed char" +.LASF3128: + .string "EXTI_FTEN_FTEN16 BIT(16)" +.LASF2745: + .string "TIMER_OCN_POLARITY_HIGH ((uint16_t)0x0000U)" +.LASF1288: + .string "DMA_CHCTL_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF786: + .string "CAN_RFIFO0(canx) REG32((canx) + 0x0CU)" +.LASF1327: + .string "ECLIC_PRIGROUP_LEVEL0_PRIO4 0" +.LASF2869: + .string "USART_CTL2_HDEN BIT(3)" +.LASF1209: + .string "DAC_LFSR_BITS10_0 DAC_WAVE_BIT_WIDTH_11" +.LASF2104: + .string "RCU_CFG1_PREDV0 BITS(0,3)" +.LASF3137: + .string "EXTI_SWIEV_SWIEV6 BIT(6)" +.LASF1361: + .string "EXMC_NWAIT_POLARITY_LOW ((uint32_t)0x00000000U)" +.LASF253: + .string "__FLT32X_MIN_EXP__ (-1021)" +.LASF3058: + .string "EXTI_INTEN_INTEN3 BIT(3)" +.LASF368: + .string "___int64_t_defined 1" +.LASF2409: + .string "SPI_PSC_128 CTL0_PSC(6)" +.LASF196: + .string "__FLT16_MAX_10_EXP__ 4" +.LASF1057: + .string "CAN_BT_SJW_4TQ ((uint8_t)0x03U)" +.LASF2124: + .string "INT_REG_OFFSET 0x08U" +.LASF229: + .string "__FLT64_NORM_MAX__ 1.79769313486231570814527423731704357e+308F64" +.LASF1937: + .string "PMU_LVDT_0 CTL_LVDT(0)" +.LASF1260: + .string "DMA_INTF_GIF BIT(0)" +.LASF29: + .string "__BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__" +.LASF456: + .string "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)" +.LASF3051: + .string "EXTI_RTEN REG32(EXTI + 0x08U)" +.LASF1291: + .string "DMA_CHMADDR_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF1618: + .string "GPIO_LOCK_LK8 BIT(8)" +.LASF3161: + .string "EXTI_PD_PD11 BIT(11)" +.LASF2402: + .string "CTL0_PSC(regval) (BITS(3,5) & ((uint32_t)(regval) << 3))" +.LASF677: + .string "ADC_CHANNEL_16 ((uint8_t)0x10U)" +.LASF953: + .string "CAN_BT_BS2 BITS(20,22)" +.LASF1437: + .string "OB_WP0_WP0 ((uint32_t)0x000000FFU)" +.LASF226: + .string "__FLT64_MAX_10_EXP__ 308" +.LASF311: + .string "__riscv_cmodel_medany 1" +.LASF3220: + .string "exti_flag_get" +.LASF1944: + .string "PMU_LVDT_7 CTL_LVDT(7)" +.LASF2251: + .string "RCU_PREDV1_DIV16 CFG1_PREDV1(15)" +.LASF2660: + .string "TIMER_DMACFG_DMATA_DMAINTEN DMACFG_DMATA(3)" +.LASF2129: + .string "RCU_CKSYSSRC_HXTAL CFG0_SCS(1)" +.LASF1333: + .string "GD32VF103_EXMC_H " +.LASF257: + .string "__FLT32X_DECIMAL_DIG__ 17" +.LASF2682: + .string "TIMER_DMACFG_DMATC_6TRANSFER DMACFG_DMATC(5)" +.LASF2789: + .string "TIMER_TRI_OUT_SRC_UPDATE CTL1_MMC(2)" +.LASF2273: + .string "RCU_PLL2_MUL20 CFG1_PLL2MF(15)" +.LASF70: + .string "__INT_MAX__ 0x7fffffff" +.LASF2399: + .string "SPI_CK_PL_HIGH_PH_1EDGE SPI_CTL0_CKPL" +.LASF3138: + .string "EXTI_SWIEV_SWIEV7 BIT(7)" +.LASF1807: + .string "I2C_STAT0_AERR BIT(10)" +.LASF1244: + .string "DMA_CH3CTL(dmax) REG32((dmax) + 0x44U)" +.LASF2396: + .string "SPI_ENDIAN_MSB ((uint32_t)0x00000000U)" +.LASF1558: + .string "GPIO_OCTL_OCTL12 BIT(12)" +.LASF133: + .string "__UINT_FAST16_MAX__ 0xffffffffU" +.LASF1746: + .string "GPIO_TIMER2_FULL_REMAP ((uint32_t)0x001A0C00U)" +.LASF1892: + .string "FWDGT_KEY_ENABLE ((uint16_t)0xCCCCU)" +.LASF2640: + .string "TIMER_FLAG_CMT TIMER_INTF_CMTIF" +.LASF2356: + .string "SPI_CTL1_TMOD BIT(4)" +.LASF2648: + .string "TIMER_DMA_CH0D ((uint16_t)TIMER_DMAINTEN_CH0DEN)" +.LASF1994: + .string "RCU_CFG0_ADCPSC_2 BIT(28)" +.LASF3150: + .string "EXTI_PD_PD0 BIT(0)" +.LASF120: + .string "__UINT_LEAST32_MAX__ 0xffffffffUL" +.LASF1228: + .string "DMA0 (DMA_BASE)" +.LASF556: + .string "ADC_STAT_STRC BIT(4)" +.LASF2138: + .string "RCU_AHB_CKSYS_DIV4 CFG0_AHBPSC(9)" +.LASF1795: + .string "I2C_SADDR1_DUADEN BIT(0)" +.LASF448: + .string "INT_LEAST32_MIN (-__INT_LEAST32_MAX__ - 1)" +.LASF1698: + .string "GPIO_EVENT_PIN_13 ((uint8_t)0x0DU)" +.LASF432: + .string "UINTPTR_MAX (__UINTPTR_MAX__)" +.LASF19: + .string "__SIZEOF_SHORT__ 2" +.LASF1280: + .string "DMA_CHXCNT_CNT BITS(0,15)" +.LASF1064: + .string "CAN_BT_BS1_7TQ ((uint8_t)0x06U)" +.LASF408: + .string "__int8_t_defined 1" +.LASF1254: + .string "DMA_CH5PADDR(dmax) REG32((dmax) + 0x74U)" +.LASF1643: + .string "AFIO_PCF0_SPI2_REMAP BIT(28)" +.LASF1299: + .string "DMA_FLAG_HTF DMA_INTF_HTFIF" +.LASF35: + .string "__WINT_TYPE__ unsigned int" +.LASF973: + .string "CAN_RFIFOMI_FT BIT(1)" +.LASF1354: + .string "EXMC_NOR_DATABUS_WIDTH_8B SNCTL_NRW(0)" +.LASF1112: + .string "CAN_INT_PERR CAN_INTEN_PERRIE" +.LASF110: + .string "__INT_LEAST32_MAX__ 0x7fffffffL" +.LASF1353: + .string "SNCTL_NRW(regval) (BITS(4,5) & ((uint32_t)(regval) << 4))" +.LASF2314: + .string "RTC_INT_SECOND RTC_INTEN_SCIE" +.LASF491: + .string "REG32(addr) (*(volatile uint32_t *)(uint32_t)(addr))" +.LASF2148: + .string "RCU_APB1_CKAHB_DIV4 CFG0_APB1PSC(5)" +.LASF148: + .string "__FLT_MIN_10_EXP__ (-37)" +.LASF1611: + .string "GPIO_LOCK_LK1 BIT(1)" +.LASF352: + .string "__ATFILE_VISIBLE 0" +.LASF2082: + .string "RCU_APB1EN_I2C1EN BIT(22)" +.LASF2381: + .string "SPI_I2SPSC_DIV BITS(0,7)" +.LASF668: + .string "ADC_CHANNEL_7 ((uint8_t)0x07U)" +.LASF1335: + .string "EXMC_SNCTL0 REG32(EXMC + 0x00U)" +.LASF1813: + .string "I2C_STAT1_I2CBSY BIT(1)" +.LASF1580: + .string "GPIO_BOP_CR2 BIT(18)" +.LASF892: + .string "CAN_STAT_IWS BIT(0)" +.LASF851: + .string "CAN_F7DATA1(canx) REG32((canx) + 0x27CU)" +.LASF3212: + .string "exti_software_interrupt_disable" +.LASF1738: + .string "GPIO_USART2_PARTIAL_REMAP ((uint32_t)0x00140010U)" +.LASF507: + .string "RTC_BASE (APB1_BUS_BASE + 0x00002800U)" +.LASF1140: + .string "DACC_R8DH REG32(DAC + 0x28U)" +.LASF1577: + .string "GPIO_BOP_BOP15 BIT(15)" +.LASF2746: + .string "TIMER_OCN_POLARITY_LOW ((uint16_t)0x0008U)" +.LASF979: + .string "CAN_RFIFOMP_TS BITS(16,31)" +.LASF574: + .string "ADC_CTL1_DMA BIT(8)" +.LASF2761: + .string "TIMER_OC_FAST_ENABLE ((uint16_t)0x0004)" +.LASF1094: + .string "CAN_MODE_NORMAL ((uint8_t)0x02U)" +.LASF1261: + .string "DMA_INTF_FTFIF BIT(1)" +.LASF767: + .string "BKP_TPCS_TPIE BIT(2)" +.LASF1378: + .string "OB_WP1 REG16((OB) + 0x0AU)" +.LASF950: + .string "CAN_ERR_RECNT BITS(24,31)" +.LASF3085: + .string "EXTI_EVEN_EVEN11 BIT(11)" +.LASF1128: + .string "DAC0 (0U)" +.LASF969: + .string "CAN_TMDATA1_DB4 BITS(0,7)" +.LASF2293: + .string "RTC_CNTH REG32(RTC + 0x18U)" +.LASF2085: + .string "RCU_APB1EN_BKPIEN BIT(27)" +.LASF1441: + .string "OB_WP_0 ((uint32_t)0x00000001U)" +.LASF2984: + .string "__need_size_t" +.LASF235: + .string "__FLT64_HAS_QUIET_NAN__ 1" +.LASF1532: + .string "GPIO_ISTAT_ISTAT2 BIT(2)" +.LASF205: + .string "__FLT16_HAS_QUIET_NAN__ 1" +.LASF486: + .string "UINT32_C(x) __UINT32_C(x)" +.LASF237: + .string "__FLT128_DIG__ 33" +.LASF617: + .string "ADC_DAUL_INSERTED_TRIGGER_ROTATION CTL0_SYNCM(9)" +.LASF1544: + .string "GPIO_ISTAT_ISTAT14 BIT(14)" +.LASF2040: + .string "RCU_APB1RST_USART2RST BIT(18)" +.LASF2931: + .string "CLT2_CTSEN(regval) (BIT(9) & ((uint32_t)(regval) << 9))" +.LASF2787: + .string "TIMER_TRI_OUT_SRC_RESET CTL1_MMC(0)" +.LASF1455: + .string "OB_WP_14 ((uint32_t)0x00004000U)" +.LASF3088: + .string "EXTI_EVEN_EVEN14 BIT(14)" +.LASF2844: + .string "USART_CTL0_RWU BIT(1)" +.LASF768: + .string "BKP_TPCS_TEF BIT(8)" +.LASF1916: + .string "DBG_CTL_TIMER6_HOLD BIT(20)" +.LASF789: + .string "CAN_ERR(canx) REG32((canx) + 0x18U)" +.LASF1173: + .string "CTL_DTSEL(regval) (BITS(3,5) & ((uint32_t)(regval) << 3))" +.LASF2551: + .string "TIMER_SWEVG_CH0G BIT(1)" +.LASF570: + .string "ADC_CTL1_ADCON BIT(0)" +.LASF242: + .string "__FLT128_DECIMAL_DIG__ 36" +.LASF325: + .string "__RTTHREAD__ 1" +.LASF2829: + .string "USART_GP(usartx) REG32((usartx) + (0x00000018U))" +.LASF218: + .string "__FLT32_HAS_DENORM__ 1" +.LASF1938: + .string "PMU_LVDT_1 CTL_LVDT(1)" +.LASF2701: + .string "TIMER_EVENT_SRC_TRGG ((uint16_t)0x0040U)" +.LASF2159: + .string "RCU_CKADC_CKAPB2_DIV6 ((uint32_t)0x00000002U)" +.LASF2851: + .string "USART_CTL0_PERRIE BIT(8)" +.LASF1454: + .string "OB_WP_13 ((uint32_t)0x00002000U)" +.LASF2568: + .string "TIMER_CHCTL0_CH0CAPPSC BITS(2,3)" +.LASF301: + .string "__SIZEOF_WINT_T__ 4" +.LASF1344: + .string "EXMC_SNCTL_WREN BIT(12)" +.LASF2957: + .string "_PTRDIFF_T " +.LASF1113: + .string "CAN_INT_BO CAN_INTEN_BOIE" +.LASF2300: + .string "RTC_CTL_SCIF BIT(0)" +.LASF1476: + .string "SRAM_SIZE (*(uint16_t *)0x1FFFF7E2U)" +.LASF2991: + .string "_WCHAR_T_ " +.LASF2196: + .string "RCU_PLL_MUL31 (PLLMF_4 | CFG0_PLLMF(14))" +.LASF3195: + .string "EXTI_11" +.LASF3196: + .string "EXTI_12" +.LASF3197: + .string "EXTI_13" +.LASF3198: + .string "EXTI_14" +.LASF3199: + .string "EXTI_15" +.LASF1375: + .string "OB_SPC REG16((OB) + 0x00U)" +.LASF3201: + .string "EXTI_17" +.LASF3202: + .string "EXTI_18" +.LASF563: + .string "ADC_CTL0_ICA BIT(10)" +.LASF497: + .string "FLASH_BASE ((uint32_t)0x08000000U)" +.LASF2738: + .string "TIMER_CH_3 ((uint16_t)0x0003U)" +.LASF68: + .string "__SCHAR_MAX__ 0x7f" +.LASF293: + .string "__GCC_ATOMIC_INT_LOCK_FREE 2" +.LASF258: + .string "__FLT32X_MAX__ 1.79769313486231570814527423731704357e+308F32x" +.LASF1098: + .string "CAN_FILTERMODE_MASK ((uint8_t)0x00U)" +.LASF38: + .string "__CHAR16_TYPE__ short unsigned int" +.LASF2: + .string "__STDC_UTF_16__ 1" +.LASF1909: + .string "DBG_CTL_TIMER2_HOLD BIT(12)" +.LASF2068: + .string "RCU_APB1EN_TIMER1EN BIT(0)" +.LASF2790: + .string "TIMER_TRI_OUT_SRC_CH0 CTL1_MMC(3)" +.LASF2492: + .string "TIMER_CH3CV(timerx) REG32((timerx) + 0x40U)" +.LASF101: + .string "__UINT16_MAX__ 0xffff" +.LASF2312: + .string "RTC_ALRMH_ALRM BITS(0,15)" +.LASF1765: + .string "I2C_DATA(i2cx) REG32((i2cx) + 0x10U)" +.LASF774: + .string "RTC_OUTPUT_ALARM_PULSE ((uint16_t)0x0000U)" +.LASF1081: + .string "CAN_BT_BS2_8TQ ((uint8_t)0x07U)" +.LASF843: + .string "CAN_F27DATA0(canx) REG32((canx) + 0x318U)" +.LASF270: + .string "__FLT64X_MAX_EXP__ 16384" +.LASF278: + .string "__FLT64X_HAS_DENORM__ 1" +.LASF1957: + .string "RCU_CFG0 REG32(RCU + 0x04U)" +.LASF779: + .string "BKP_INT_FLAG_TAMPER BKP_TPCS_TIF" +.LASF960: + .string "CAN_TMI_EFID BITS(3,31)" +.LASF1668: + .string "GPIO_MODE_OUT_OD ((uint8_t)0x14U)" +.LASF2045: + .string "RCU_APB1RST_CAN0RST BIT(25)" +.LASF2620: + .string "TIMER_INT_CH0 TIMER_DMAINTEN_CH0IE" +.LASF1047: + .string "CAN_ERRN_6 ERR_ERRN(6U)" +.LASF3: + .string "__STDC_UTF_32__ 1" +.LASF1290: + .string "DMA_CHPADDR_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF360: + .string "__XSI_VISIBLE 0" +.LASF2904: + .string "USART_WL_9BIT CTL0_WL(1)" +.LASF2417: + .string "I2S_AUDIOSAMPLE_48K ((uint32_t)48000U)" +.LASF1711: + .string "GPIO_PIN_SOURCE_10 ((uint8_t)0x0AU)" +.LASF2315: + .string "RTC_INT_ALARM RTC_INTEN_ALRMIE" +.LASF2094: + .string "RCU_RSTSCK_IRC40KEN BIT(0)" +.LASF2297: + .string "RTC_INTEN_SCIE BIT(0)" +.LASF1436: + .string "OB_USER_USER_N ((uint32_t)0xFF000000U)" +.LASF1060: + .string "CAN_BT_BS1_3TQ ((uint8_t)0x02U)" +.LASF616: + .string "ADC_DAUL_REGULAL_FOLLOWUP_SLOW CTL0_SYNCM(8)" +.LASF1989: + .string "RCU_CFG0_PLLSEL BIT(16)" +.LASF566: + .string "ADC_CTL0_DISNUM BITS(13,15)" +.LASF2053: + .string "RCU_AHBEN_FMCSPEN BIT(4)" +.LASF2839: + .string "USART_STAT_CTSF BIT(9)" +.LASF694: + .string "ADC_OVERSAMPLING_SHIFT_1B OVSCR_OVSS(1)" +.LASF3216: + .string "flag_left" +.LASF1011: + .string "BT_MODE(regval) (BITS(30,31) & ((uint32_t)(regval) << 30))" +.LASF6: + .string "__GNUC_MINOR__ 2" +.LASF234: + .string "__FLT64_HAS_INFINITY__ 1" +.LASF2232: + .string "RCU_PREDV0_DIV14 CFG1_PREDV0(13)" +.LASF1082: + .string "CAN_MAILBOX0 ((uint8_t)0x00U)" +.LASF155: + .string "__FLT_EPSILON__ 1.19209289550781250000000000000000000e-7F" +.LASF593: + .string "ADC_RDATA_ADC1RDTR BITS(16,31)" +.LASF2485: + .string "TIMER_CNT(timerx) REG32((timerx) + 0x24U)" +.LASF2121: + .string "RSTSCK_REG_OFFSET 0x24U" +.LASF2923: + .string "USART_DENR_ENABLE CLT2_DENR(1)" +.LASF152: + .string "__FLT_MAX__ 3.40282346638528859811704183484516925e+38F" +.LASF833: + .string "CAN_F17DATA0(canx) REG32((canx) + 0x2C8U)" +.LASF371: + .string "___int_least32_t_defined 1" +.LASF3073: + .string "EXTI_INTEN_INTEN18 BIT(18)" +.LASF1414: + .string "FMC_STAT_REG_OFFSET 0x0CU" +.LASF2054: + .string "RCU_AHBEN_CRCEN BIT(6)" +.LASF2404: + .string "SPI_PSC_4 CTL0_PSC(1)" +.LASF3097: + .string "EXTI_RTEN_RTEN4 BIT(4)" +.LASF41: + .string "__INT8_TYPE__ signed char" +.LASF557: + .string "ADC_CTL0_WDCHSEL BITS(0,4)" +.LASF1403: + .string "FMC_WP_WP BITS(0,31)" +.LASF1201: + .string "DAC_LFSR_BITS2_0 DAC_WAVE_BIT_WIDTH_3" +.LASF3017: + .string "N200_ECLIC_H " +.LASF2521: + .string "TIMER_SMCFG_SMC1 BIT(14)" +.LASF2704: + .string "TIMER_COUNTER_EDGE CTL0_CAM(0)" +.LASF1689: + .string "GPIO_EVENT_PIN_4 ((uint8_t)0x04U)" +.LASF2368: + .string "SPI_STAT_FERR BIT(8)" +.LASF2853: + .string "USART_CTL0_PCEN BIT(10)" +.LASF1506: + .string "GPIO_CTL0_MD4 BITS(16, 17)" +.LASF583: + .string "ADC_SAMPTX_SPTN BITS(0,2)" +.LASF450: + .string "UINT_LEAST32_MAX (__UINT_LEAST32_MAX__)" +.LASF1535: + .string "GPIO_ISTAT_ISTAT5 BIT(5)" +.LASF2618: + .string "TIMER_DMATB_DMATB BITS(0,15)" +.LASF3039: + .string "MSIP_HANDLER eclic_msip_handler" +.LASF2842: + .string "USART_BAUD_INTDIV BITS(4,15)" +.LASF2927: + .string "USART_DENT_DISABLE CLT2_DENT(0)" +.LASF3062: + .string "EXTI_INTEN_INTEN7 BIT(7)" +.LASF1721: + .string "GPIO_PIN_4 BIT(4)" +.LASF1050: + .string "CAN_NORMAL_MODE ((uint8_t)0x00U)" +.LASF383: + .string "signed +0" +.LASF1322: + .string "DMA_PRIORITY_ULTRA_HIGH CHCTL_PRIO(3U)" +.LASF1707: + .string "GPIO_PIN_SOURCE_6 ((uint8_t)0x06U)" +.LASF685: + .string "OVSCR_DRES(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF1142: + .string "DAC1_DO REG32(DAC + 0x30U)" +.LASF1163: + .string "DAC1_L12DH_DAC1_DH BITS(4,15)" +.LASF1626: + .string "GPIO_LOCK_LKK BIT(16)" +.LASF107: + .string "__INT_LEAST16_MAX__ 0x7fff" +.LASF103: + .string "__UINT64_MAX__ 0xffffffffffffffffULL" +.LASF424: + .string "__int_least32_t_defined 1" +.LASF1249: + .string "DMA_CH4CNT(dmax) REG32((dmax) + 0x5CU)" +.LASF1245: + .string "DMA_CH3CNT(dmax) REG32((dmax) + 0x48U)" +.LASF412: + .string "_INT32_T_DECLARED " +.LASF1417: + .string "UNLOCK_KEY0 ((uint32_t)0x45670123U)" +.LASF2561: + .string "TIMER_CHCTL0_CH0COMCTL BITS(4,6)" +.LASF411: + .string "__int16_t_defined 1" +.LASF2794: + .string "TIMER_TRI_OUT_SRC_O3CPRE CTL1_MMC(7)" +.LASF652: + .string "ISQ_IL(regval) (BITS(20,21) & ((uint32_t)(regval) << 20))" +.LASF1185: + .string "DAC_WAVE_MODE_TRIANGLE CTL_DWM(2)" +.LASF156: + .string "__FLT_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F" +.LASF2194: + .string "RCU_PLL_MUL29 (PLLMF_4 | CFG0_PLLMF(12))" +.LASF2503: + .string "TIMER_CTL0_CKDIV BITS(8,9)" +.LASF1041: + .string "CAN_ERRN_0 ERR_ERRN(0U)" +.LASF996: + .string "CAN_REG_VAL(canx,offset) (REG32((canx) + ((uint32_t)(offset) >> 6)))" +.LASF522: + .string "RCU_BASE (AHB1_BUS_BASE + 0x00009000U)" +.LASF696: + .string "ADC_OVERSAMPLING_SHIFT_3B OVSCR_OVSS(3)" +.LASF1109: + .string "CAN_INT_RFF1 CAN_INTEN_RFFIE1" +.LASF1044: + .string "CAN_ERRN_3 ERR_ERRN(3U)" +.LASF3000: + .string "_BSD_WCHAR_T_" +.LASF2061: + .string "RCU_APB2EN_PDEN BIT(5)" +.LASF211: + .string "__FLT32_MAX_10_EXP__ 38" +.LASF2879: + .string "USART_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF934: + .string "CAN_INTEN_RFOIE0 BIT(3)" +.LASF2910: + .string "CTL1_LBLEN(regval) (BIT(5) & ((uint32_t)(regval) << 5))" +.LASF3116: + .string "EXTI_FTEN_FTEN4 BIT(4)" +.LASF69: + .string "__SHRT_MAX__ 0x7fff" +.LASF2569: + .string "TIMER_CHCTL0_CH0CAPFLT BITS(4,7)" +.LASF797: + .string "CAN_TMDATA01(canx) REG32((canx) + 0x198U)" +.LASF2337: + .string "SPI_I2SPSC(spix) REG32((spix) + 0x20U)" +.LASF1867: + .string "I2C_DTCY_16_9 I2C_CKCFG_DTCY" +.LASF3109: + .string "EXTI_RTEN_RTEN16 BIT(16)" +.LASF2140: + .string "RCU_AHB_CKSYS_DIV16 CFG0_AHBPSC(11)" +.LASF1806: + .string "I2C_STAT0_LOSTARB BIT(9)" +.LASF2734: + .string "TIMER_BREAK_DISABLE ((uint16_t)0x0000U)" +.LASF558: + .string "ADC_CTL0_EOCIE BIT(5)" +.LASF72: + .string "__LONG_LONG_MAX__ 0x7fffffffffffffffLL" +.LASF2674: + .string "TIMER_DMACFG_DMATA_CCHP DMACFG_DMATA(17)" +.LASF83: + .string "__LONG_LONG_WIDTH__ 64" +.LASF2401: + .string "SPI_CK_PL_HIGH_PH_2EDGE (SPI_CTL0_CKPL | SPI_CTL0_CKPH)" +.LASF45: + .string "__UINT8_TYPE__ unsigned char" +.LASF2149: + .string "RCU_APB1_CKAHB_DIV8 CFG0_APB1PSC(6)" +.LASF105: + .string "__INT8_C(c) c" +.LASF398: + .string "__FAST16 " +.LASF1077: + .string "CAN_BT_BS2_4TQ ((uint8_t)0x03U)" +.LASF805: + .string "CAN_RFIFOMDATA00(canx) REG32((canx) + 0x1B8U)" +.LASF2859: + .string "USART_CTL1_LBDIE BIT(6)" +.LASF129: + .string "__INT_FAST32_WIDTH__ 32" +.LASF3055: + .string "EXTI_INTEN_INTEN0 BIT(0)" +.LASF1945: + .string "PMU_FLAG_WAKEUP PMU_CS_WUF" +.LASF3205: + .string "EXTI_EVENT" +.LASF1638: + .string "AFIO_PCF0_TIMER3_REMAP BIT(12)" +.LASF2476: + .string "TIMER_CTL0(timerx) REG32((timerx) + 0x00U)" +.LASF315: + .string "__riscv_a 2000000" +.LASF1203: + .string "DAC_LFSR_BITS4_0 DAC_WAVE_BIT_WIDTH_5" +.LASF500: + .string "DBG_BASE ((uint32_t)0xE0042000U)" +.LASF1110: + .string "CAN_INT_RFO1 CAN_INTEN_RFOIE1" +.LASF1948: + .string "PMU_LDO_NORMAL ((uint32_t)0x00000000U)" +.LASF2269: + .string "RCU_PLL2_MUL13 CFG1_PLL2MF(11)" +.LASF260: + .string "__FLT32X_MIN__ 2.22507385850720138309023271733240406e-308F32x" +.LASF243: + .string "__FLT128_MAX__ 1.18973149535723176508575932662800702e+4932F128" +.LASF3010: + .string "TIMER_MTIMECMP 0x8" +.LASF2318: + .string "RTC_INT_FLAG_ALARM RTC_CTL_ALRMIF" +.LASF949: + .string "CAN_ERR_TECNT BITS(16,23)" +.LASF75: + .string "__WINT_MAX__ 0xffffffffU" +.LASF534: + .string "ADC_SAMPT0(adcx) REG32((adcx) + 0x0CU)" +.LASF757: + .string "BKP_TPCS REG16((BKP) + 0x34U)" +.LASF2475: + .string "TIMER6 (TIMER_BASE + 0x00001400U)" +.LASF3210: + .string "EXTI_TRIG_NONE" +.LASF825: + .string "CAN_F9DATA0(canx) REG32((canx) + 0x288U)" +.LASF98: + .string "__INT32_MAX__ 0x7fffffffL" +.LASF1787: + .string "I2C_CTL1_EVIE BIT(9)" +.LASF1411: + .string "FMC_BIT_POS0(val) (((uint32_t)(val) >> 6) & 0x1FU)" +.LASF1843: + .string "I2C_ACKPOS_CURRENT ((uint32_t)0x00000001U)" +.LASF1380: + .string "OB_WP3 REG16((OB) + 0x0EU)" +.LASF2295: + .string "RTC_ALRMH REG32(RTC + 0x20U)" +.LASF863: + .string "CAN_F19DATA1(canx) REG32((canx) + 0x2DCU)" +.LASF2424: + .string "I2S_FRAMEFORMAT_DT32B_CH32B (I2SCTL_DTLEN(2) | SPI_I2SCTL_CHLEN)" +.LASF1513: + .string "GPIO_CTL0_CTL7 BITS(30, 31)" +.LASF2216: + .string "RCU_RTCSRC_IRC40K BDCTL_RTCSRC(2)" +.LASF2975: + .string "_BSD_SIZE_T_ " +.LASF2346: + .string "SPI_CTL0_RO BIT(10)" +.LASF1029: + .string "GET_RFIFOMDATA0_DB0(regval) GET_BITS((uint32_t)(regval), 0U, 7U)" +.LASF472: + .string "SIZE_MAX (__SIZE_MAX__)" +.LASF1311: + .string "DMA_PERIPHERAL_WIDTH_8BIT CHCTL_PWIDTH(0U)" +.LASF1953: + .string "WFE_CMD ((uint8_t)0x01U)" +.LASF42: + .string "__INT16_TYPE__ short int" +.LASF47: + .string "__UINT32_TYPE__ long unsigned int" +.LASF2323: + .string "RTC_FLAG_RSYN RTC_CTL_RSYNF" +.LASF2201: + .string "RCU_CKUSB_CKPLL_DIV2_5 CFG0_USBPSC(2)" +.LASF2783: + .string "TIMER_SMCFG_TRGSEL_CI0FE0 SMCFG_TRGSEL(5)" +.LASF76: + .string "__WINT_MIN__ 0U" +.LASF1824: + .string "I2C_FMPCFG_FMPEN BIT(0)" +.LASF308: + .string "__riscv_muldiv 1" +.LASF2502: + .string "TIMER_CTL0_ARSE BIT(7)" +.LASF429: + .string "__int_fast64_t_defined 1" +.LASF1816: + .string "I2C_STAT1_DEFSMB BIT(5)" +.LASF938: + .string "CAN_INTEN_WERRIE BIT(8)" +.LASF1569: + .string "GPIO_BOP_BOP7 BIT(7)" +.LASF698: + .string "ADC_OVERSAMPLING_SHIFT_5B OVSCR_OVSS(5)" +.LASF2997: + .string "__INT_WCHAR_T_H " +.LASF2773: + .string "TIMER_IC_PSC_DIV1 ((uint16_t)0x0000U)" +.LASF2624: + .string "TIMER_INT_CMT TIMER_DMAINTEN_CMTIE" +.LASF577: + .string "ADC_CTL1_ETEIC BIT(15)" +.LASF1387: + .string "FMC_STAT_ENDF BIT(5)" +.LASF1287: + .string "DMA_CHMADDR(dma,channel) REG32(((dma) + 0x14U) + 0x14U * (uint32_t)(channel))" +.LASF2317: + .string "RTC_INT_FLAG_SECOND RTC_CTL_SCIF" +.LASF2744: + .string "TIMER_OC_POLARITY_LOW ((uint16_t)0x0002U)" +.LASF2214: + .string "RCU_RTCSRC_NONE BDCTL_RTCSRC(0)" +.LASF74: + .string "__WCHAR_MIN__ (-__WCHAR_MAX__ - 1)" +.LASF1913: + .string "DBG_CTL_I2C1_HOLD BIT(16)" +.LASF1336: + .string "EXMC_SNTCFG0 REG32(EXMC + 0x04U)" +.LASF422: + .string "__int_least8_t_defined 1" +.LASF951: + .string "CAN_BT_BAUDPSC BITS(0,9)" +.LASF1601: + .string "GPIO_BC_CR7 BIT(7)" +.LASF2546: + .string "TIMER_INTF_CH0OF BIT(9)" +.LASF3101: + .string "EXTI_RTEN_RTEN8 BIT(8)" +.LASF1191: + .string "DAC_WAVE_BIT_WIDTH_5 DWBW(4)" +.LASF245: + .string "__FLT128_MIN__ 3.36210314311209350626267781732175260e-4932F128" +.LASF609: + .string "ADC_DAUL_REGULAL_PARALLEL_INSERTED_PARALLEL CTL0_SYNCM(1)" +.LASF1005: + .string "RFIFO1_REG_OFFSET ((uint8_t)0x10U)" +.LASF2078: + .string "RCU_APB1EN_USART2EN BIT(18)" +.LASF138: + .string "__UINTPTR_MAX__ 0xffffffffU" +.LASF418: + .string "_INTMAX_T_DECLARED " +.LASF109: + .string "__INT_LEAST16_WIDTH__ 16" +.LASF2871: + .string "USART_CTL2_SCEN BIT(5)" +.LASF635: + .string "ADC0_1_EXTTRIG_INSERTED_T2_CH3 CTL1_ETSIC(4)" +.LASF2374: + .string "SPI_I2SCTL_DTLEN BITS(1,2)" +.LASF2411: + .string "I2S_AUDIOSAMPLE_8K ((uint32_t)8000U)" +.LASF955: + .string "CAN_BT_LCMOD BIT(30)" +.LASF3086: + .string "EXTI_EVEN_EVEN12 BIT(12)" +.LASF406: + .string "_INT8_T_DECLARED " +.LASF147: + .string "__FLT_MIN_EXP__ (-125)" +.LASF1137: + .string "DAC1_R8DH REG32(DAC + 0x1CU)" +.LASF2523: + .string "TIMER_DMAINTEN_UPIE BIT(0)" +.LASF1450: + .string "OB_WP_9 ((uint32_t)0x00000200U)" +.LASF2656: + .string "DMACFG_DMATA(regval) (BITS(0, 4) & ((uint32_t)(regval) << 0U))" +.LASF2496: + .string "TIMER_CTL0_CEN BIT(0)" +.LASF1540: + .string "GPIO_ISTAT_ISTAT10 BIT(10)" +.LASF644: + .string "ADC_SAMPLETIME_41POINT5 SAMPTX_SPT(4)" +.LASF1178: + .string "DAC_TRIGGER_T1_TRGO CTL_DTSEL(4)" +.LASF1073: + .string "CAN_BT_BS1_16TQ ((uint8_t)0x0FU)" +.LASF2035: + .string "RCU_APB1RST_TIMER6RST BIT(5)" +.LASF1239: + .string "DMA_CH1MADDR(dmax) REG32((dmax) + 0x28U)" +.LASF1864: + .string "DATA_TRANS(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF690: + .string "ADC_OVERSAMPLING_ALL_CONVERT 0" +.LASF188: + .string "__LDBL_HAS_DENORM__ 1" +.LASF945: + .string "CAN_ERR_WERR BIT(0)" +.LASF2469: + .string "TIMER0 (TIMER_BASE + 0x00012C00U)" +.LASF3050: + .string "EXTI_EVEN REG32(EXTI + 0x04U)" +.LASF1091: + .string "CAN_SFID_MASK ((uint32_t)0x000007FFU)" +.LASF2019: + .string "RCU_APB2RST_AFRST BIT(0)" +.LASF1573: + .string "GPIO_BOP_BOP11 BIT(11)" +.LASF1756: + .string "GPIO_TIMER1ITI1_REMAP ((uint32_t)0x00202000U)" +.LASF2150: + .string "RCU_APB1_CKAHB_DIV16 CFG0_APB1PSC(7)" +.LASF1159: + .string "DAC0_R12DH_DAC0_DH BITS(0,11)" +.LASF183: + .string "__LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L" +.LASF764: + .string "BKP_TPCTL_TPAL BIT(1)" +.LASF1385: + .string "FMC_STAT_PGERR BIT(2)" +.LASF1498: + .string "GPIO_CTL0_MD0 BITS(0, 1)" +.LASF2803: + .string "TIMER_SLAVE_MODE_EXTERNAL0 SMCFG_SMC(7)" +.LASF2854: + .string "USART_CTL0_WM BIT(11)" +.LASF1872: + .string "FWDGT_CTL REG32((FWDGT) + 0x00000000U)" +.LASF2677: + .string "TIMER_DMACFG_DMATC_1TRANSFER DMACFG_DMATC(0)" +.LASF419: + .string "_UINTMAX_T_DECLARED " +.LASF1364: + .string "FMC FMC_BASE" +.LASF2665: + .string "TIMER_DMACFG_DMATA_CHCTL2 DMACFG_DMATA(8)" +.LASF1562: + .string "GPIO_BOP_BOP0 BIT(0)" +.LASF750: + .string "BKP_DATA37 REG16((BKP) + 0xACU)" +.LASF1819: + .string "I2C_STAT1_PECV BITS(8,15)" +.LASF1802: + .string "I2C_STAT0_STPDET BIT(4)" +.LASF903: + .string "CAN_TSTAT_MAL0 BIT(2)" +.LASF2276: + .string "RCU_I2S1SRC_CKSYS ((uint32_t)0x00000000U)" +.LASF1205: + .string "DAC_LFSR_BITS6_0 DAC_WAVE_BIT_WIDTH_7" +.LASF317: + .string "__riscv_zicsr 2000000" +.LASF2529: + .string "TIMER_DMAINTEN_TRGIE BIT(6)" +.LASF95: + .string "__SIG_ATOMIC_WIDTH__ 32" +.LASF700: + .string "ADC_OVERSAMPLING_SHIFT_7B OVSCR_OVSS(7)" +.LASF3204: + .string "EXTI_INTERRUPT" +.LASF2186: + .string "RCU_PLL_MUL21 (PLLMF_4 | CFG0_PLLMF(4))" +.LASF2021: + .string "RCU_APB2RST_PBRST BIT(3)" +.LASF2533: + .string "TIMER_DMAINTEN_CH1DEN BIT(10)" +.LASF1554: + .string "GPIO_OCTL_OCTL8 BIT(8)" +.LASF998: + .string "CAN_REGIDX_BITS(regidx,bitpos0,bitpos1) (((uint32_t)(regidx) << 12) | ((uint32_t)(bitpos0) << 6) | (uint32_t)(bitpos1))" +.LASF1832: + .string "I2C_STAT0_REG_OFFSET 0x14U" +.LASF1594: + .string "GPIO_BC_CR0 BIT(0)" +.LASF2896: + .string "USART_PM_NONE CTL0_PM(0)" +.LASF1035: + .string "GET_RFIFOMDATA1_DB6(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF868: + .string "CAN_F24DATA1(canx) REG32((canx) + 0x304U)" +.LASF2585: + .string "TIMER_CHCTL1_CH3CAPFLT BITS(12,15)" +.LASF664: + .string "ADC_CHANNEL_3 ((uint8_t)0x03U)" +.LASF54: + .string "__UINT_LEAST16_TYPE__ short unsigned int" +.LASF1352: + .string "EXMC_SNTCFG(region) REG32(EXMC + 0x04U + 0x08U * (region))" +.LASF190: + .string "__LDBL_HAS_QUIET_NAN__ 1" +.LASF2208: + .string "RCU_CKOUT0SRC_CKPLL_DIV2 CFG0_CKOUT0SEL(7)" +.LASF1857: + .string "I2C_PEC_DISABLE ((uint32_t)0x00000000U)" +.LASF1933: + .string "PMU_CS_STBF BIT(1)" +.LASF2282: + .string "RCU_DEEPSLEEP_V_1_1 DSV_DSLPVS(1)" +.LASF2584: + .string "TIMER_CHCTL1_CH3CAPPSC BITS(10,11)" +.LASF1646: + .string "AFIO_EXTI1_SS BITS(4, 7)" +.LASF1653: + .string "AFIO_EXTI8_SS BITS(0, 3)" +.LASF2685: + .string "TIMER_DMACFG_DMATC_9TRANSFER DMACFG_DMATC(8)" +.LASF1681: + .string "GPIO_PORT_SOURCE_GPIOB ((uint8_t)0x01U)" +.LASF2965: + .string "_PTRDIFF_T_DECLARED " +.LASF436: + .string "INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)" +.LASF965: + .string "CAN_TMDATA0_DB0 BITS(0,7)" +.LASF3154: + .string "EXTI_PD_PD4 BIT(4)" +.LASF2657: + .string "TIMER_DMACFG_DMATA_CTL0 DMACFG_DMATA(0)" +.LASF3057: + .string "EXTI_INTEN_INTEN2 BIT(2)" +.LASF1207: + .string "DAC_LFSR_BITS8_0 DAC_WAVE_BIT_WIDTH_9" +.LASF2687: + .string "TIMER_DMACFG_DMATC_11TRANSFER DMACFG_DMATC(10)" +.LASF2835: + .string "USART_STAT_RBNE BIT(5)" +.LASF1439: + .string "OB_WP2_WP2 ((uint32_t)0x00FF0000U)" +.LASF215: + .string "__FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32" +.LASF858: + .string "CAN_F14DATA1(canx) REG32((canx) + 0x2B4U)" +.LASF2710: + .string "TIMER_COUNTER_UP ((uint16_t)0x0000U)" +.LASF3174: + .string "short unsigned int" +.LASF742: + .string "BKP_DATA29 REG16((BKP) + 0x8CU)" +.LASF1323: + .string "DMA_MEMORY_TO_MEMORY_DISABLE ((uint32_t)0x00000000U)" +.LASF207: + .string "__FLT32_DIG__ 6" +.LASF901: + .string "CAN_TSTAT_MTF0 BIT(0)" +.LASF292: + .string "__GCC_ATOMIC_SHORT_LOCK_FREE 1" +.LASF1522: + .string "GPIO_CTL1_MD12 BITS(16, 17)" +.LASF2350: + .string "SPI_CTL0_BDOEN BIT(14)" +.LASF2670: + .string "TIMER_DMACFG_DMATA_CH0CV DMACFG_DMATA(13)" +.LASF3007: + .string "N200_TIMER_H " +.LASF1145: + .string "DAC_CTL_DTEN0 BIT(2)" +.LASF576: + .string "ADC_CTL1_ETSIC BITS(12,14)" +.LASF3009: + .string "TIMER_MSIP_size 0x4" +.LASF1929: + .string "PMU_CTL_LVDEN BIT(4)" +.LASF2952: + .string "WWDGT_CFG_PSC_DIV8 CFG_PSC(3)" +.LASF2797: + .string "TIMER_ENCODER_MODE0 SMCFG_SMC(1)" +.LASF1741: + .string "GPIO_TIMER0_FULL_REMAP ((uint32_t)0x001600C0U)" +.LASF2627: + .string "TIMER_INT_FLAG_UP TIMER_INT_UP" +.LASF1321: + .string "DMA_PRIORITY_HIGH CHCTL_PRIO(2U)" +.LASF1425: + .string "OB_DEEPSLEEP_NRST ((uint8_t)0x02U)" +.LASF298: + .string "__GCC_HAVE_DWARF2_CFI_ASM 1" +.LASF897: + .string "CAN_STAT_TS BIT(8)" +.LASF1742: + .string "GPIO_TIMER1_PARTIAL_REMAP0 ((uint32_t)0x00180100U)" +.LASF3140: + .string "EXTI_SWIEV_SWIEV9 BIT(9)" +.LASF1547: + .string "GPIO_OCTL_OCTL1 BIT(1)" +.LASF2067: + .string "RCU_APB2EN_USART0EN BIT(14)" +.LASF1615: + .string "GPIO_LOCK_LK5 BIT(5)" +.LASF718: + .string "BKP_DATA5 REG16((BKP) + 0x18U)" +.LASF612: + .string "ADC_DAUL_INSERTED_PARALLEL_REGULAL_FOLLOWUP_SLOW CTL0_SYNCM(4)" +.LASF1275: + .string "DMA_CHXCTL_MNAGA BIT(7)" +.LASF2370: + .string "SPI_CRCPOLY_CRCPOLY BITS(0,15)" +.LASF2489: + .string "TIMER_CH0CV(timerx) REG32((timerx) + 0x34U)" +.LASF1779: + .string "I2C_CTL0_STOP BIT(9)" +.LASF3096: + .string "EXTI_RTEN_RTEN3 BIT(3)" +.LASF399: + .string "__FAST32 " +.LASF1251: + .string "DMA_CH4MADDR(dmax) REG32((dmax) + 0x64U)" +.LASF3066: + .string "EXTI_INTEN_INTEN11 BIT(11)" +.LASF66: + .string "__UINTPTR_TYPE__ unsigned int" +.LASF730: + .string "BKP_DATA17 REG16((BKP) + 0x5CU)" +.LASF1584: + .string "GPIO_BOP_CR6 BIT(22)" +.LASF303: + .string "__riscv 1" +.LASF3230: + .string "D:\\\\rt-thread\\\\bsp\\\\gd32\\\\risc-v\\\\gd32vf103v-eval" +.LASF145: + .string "__FLT_MANT_DIG__ 24" +.LASF468: + .string "UINT_FAST64_MAX (__UINT_FAST64_MAX__)" +.LASF869: + .string "CAN_F25DATA1(canx) REG32((canx) + 0x30CU)" +.LASF2889: + .string "CTL0_REN(regval) (BIT(2) & ((uint32_t)(regval) << 2))" +.LASF775: + .string "RTC_OUTPUT_SECOND_PULSE ((uint16_t)0x0200U)" +.LASF824: + .string "CAN_F8DATA0(canx) REG32((canx) + 0x280U)" +.LASF2878: + .string "USART_GP_GUAT BITS(8,15)" +.LASF2305: + .string "RTC_CTL_LWOFF BIT(5)" +.LASF1630: + .string "AFIO_PCF0_SPI0_REMAP BIT(0)" +.LASF1069: + .string "CAN_BT_BS1_12TQ ((uint8_t)0x0BU)" +.LASF657: + .string "ADC_INSERTED_CHANNEL_0 ((uint8_t)0x00U)" +.LASF1764: + .string "I2C_SADDR1(i2cx) REG32((i2cx) + 0x0CU)" +.LASF578: + .string "ADC_CTL1_ETSRC BITS(17,19)" +.LASF2737: + .string "TIMER_CH_2 ((uint16_t)0x0002U)" +.LASF1052: + .string "CAN_SILENT_MODE ((uint8_t)0x02U)" +.LASF2447: + .string "SPI_I2S_INT_FLAG_TBE ((uint8_t)0x00U)" +.LASF2725: + .string "TIMER_BREAK_POLARITY_HIGH ((uint16_t)TIMER_CCHP_BRKP)" +.LASF2500: + .string "TIMER_CTL0_DIR BIT(4)" +.LASF184: + .string "__LDBL_NORM_MAX__ 1.18973149535723176508575932662800702e+4932L" +.LASF376: + .string "signed" +.LASF975: + .string "CAN_RFIFOMI_EFID BITS(3,31)" +.LASF2386: + .string "SPI_BIDIRECTIONAL_TRANSMIT SPI_CTL0_BDOEN" +.LASF553: + .string "ADC_STAT_EOC BIT(1)" +.LASF354: + .string "__GNU_VISIBLE 0" +.LASF2769: + .string "TIMER_IC_POLARITY_BOTH_EDGE ((uint16_t)0x000AU)" +.LASF2257: + .string "RCU_PLL1_MUL12 CFG1_PLL1MF(10)" +.LASF1517: + .string "GPIO_CTL1_CTL9 BITS(6, 7)" +.LASF3126: + .string "EXTI_FTEN_FTEN14 BIT(14)" +.LASF1422: + .string "WS_WSCNT_2 WS_WSCNT(2)" +.LASF2512: + .string "TIMER_CTL1_ISO1N BIT(11)" +.LASF1252: + .string "DMA_CH5CTL(dmax) REG32((dmax) + 0x6CU)" +.LASF2057: + .string "RCU_APB2EN_AFEN BIT(0)" +.LASF1273: + .string "DMA_CHXCTL_CMEN BIT(5)" +.LASF2064: + .string "RCU_APB2EN_ADC1EN BIT(10)" +.LASF279: + .string "__FLT64X_HAS_INFINITY__ 1" +.LASF1181: + .string "DAC_TRIGGER_SOFTWARE CTL_DTSEL(7)" +.LASF1497: + .string "AFIO_PCF1 REG32(AFIO + 0x1CU)" +.LASF2228: + .string "RCU_PREDV0_DIV10 CFG1_PREDV0(9)" +.LASF2084: + .string "RCU_APB1EN_CAN1EN BIT(26)" +.LASF222: + .string "__FLT64_DIG__ 15" +.LASF2667: + .string "TIMER_DMACFG_DMATA_PSC DMACFG_DMATA(10)" +.LASF2724: + .string "TIMER_BREAK_POLARITY_LOW ((uint16_t)0x0000U)" +.LASF4: + .string "__STDC_HOSTED__ 1" +.LASF3049: + .string "EXTI_INTEN REG32(EXTI + 0x00U)" +.LASF676: + .string "ADC_CHANNEL_15 ((uint8_t)0x0FU)" +.LASF402: + .string "__LEAST16 \"h\"" +.LASF1419: + .string "WS_WSCNT(regval) (BITS(0,2) & ((uint32_t)(regval)))" +.LASF3133: + .string "EXTI_SWIEV_SWIEV2 BIT(2)" +.LASF2372: + .string "SPI_TCRC_TCRC BITS(0,15)" +.LASF2757: + .string "TIMER_OC_MODE_PWM0 ((uint16_t)0x0060U)" +.LASF2555: + .string "TIMER_SWEVG_CMTG BIT(5)" +.LASF2032: + .string "RCU_APB1RST_TIMER3RST BIT(2)" +.LASF1248: + .string "DMA_CH4CTL(dmax) REG32((dmax) + 0x58U)" +.LASF2901: + .string "USART_WM_ADDR CTL0_WM(1)" +.LASF1869: + .string "I2C_ADDFORMAT_10BITS I2C_SADDR0_ADDFORMAT" +.LASF1198: + .string "DAC_WAVE_BIT_WIDTH_12 DWBW(11)" +.LASF1503: + .string "GPIO_CTL0_CTL2 BITS(10, 11)" +.LASF3037: + .string "ECLIC_CFG_NLBITS_MASK _AC(0x1E,UL)" +.LASF2123: + .string "BDCTL_REG_OFFSET 0x20U" +.LASF1215: + .string "DAC_TRIANGLE_AMPLITUDE_1 DAC_WAVE_BIT_WIDTH_1" +.LASF1319: + .string "DMA_PRIORITY_LOW CHCTL_PRIO(0U)" +.LASF2908: + .string "USART_STB_2BIT CTL1_STB(2)" +.LASF2932: + .string "USART_CTS_ENABLE CLT2_CTSEN(1)" +.LASF2841: + .string "USART_BAUD_FRADIV BITS(0,3)" +.LASF2498: + .string "TIMER_CTL0_UPS BIT(2)" +.LASF1666: + .string "GPIO_MODE_IPD ((uint8_t)0x28U)" +.LASF3214: + .string "linex" +.LASF476: + .string "PTRDIFF_MIN (-PTRDIFF_MAX - 1)" +.LASF2058: + .string "RCU_APB2EN_PAEN BIT(2)" +.LASF2926: + .string "USART_DENT_ENABLE CLT2_DENT(1)" +.LASF924: + .string "CAN_RFIFO0_RFF0 BIT(3)" +.LASF1910: + .string "DBG_CTL_TIMER3_HOLD BIT(13)" +.LASF850: + .string "CAN_F6DATA1(canx) REG32((canx) + 0x274U)" +.LASF114: + .string "__INT64_C(c) c ## LL" +.LASF1398: + .string "FMC_ADDR0_ADDR BITS(0,31)" +.LASF1703: + .string "GPIO_PIN_SOURCE_2 ((uint8_t)0x02U)" +.LASF550: + .string "ADC_RDATA(adcx) REG32((adcx) + 0x4CU)" +.LASF1556: + .string "GPIO_OCTL_OCTL10 BIT(10)" +.LASF2477: + .string "TIMER_CTL1(timerx) REG32((timerx) + 0x04U)" +.LASF2171: + .string "RCU_PLL_MUL6 CFG0_PLLMF(4)" +.LASF1773: + .string "I2C_CTL0_SMBSEL BIT(3)" +.LASF2631: + .string "TIMER_INT_FLAG_CH3 TIMER_INT_CH3" +.LASF1313: + .string "DMA_PERIPHERAL_WIDTH_32BIT CHCTL_PWIDTH(2U)" +.LASF2850: + .string "USART_CTL0_TBEIE BIT(7)" +.LASF2626: + .string "TIMER_INT_BRK TIMER_DMAINTEN_BRKIE" +.LASF580: + .string "ADC_CTL1_SWICST BIT(21)" +.LASF2771: + .string "TIMER_IC_SELECTION_INDIRECTTI ((uint16_t)0x0002U)" +.LASF888: + .string "CAN_CTL_ABOR BIT(6)" +.LASF26: + .string "__ORDER_LITTLE_ENDIAN__ 1234" +.LASF2349: + .string "SPI_CTL0_CRCEN BIT(13)" +.LASF1124: + .string "CRC_FDATA_FDATA BITS(0, 7)" +.LASF984: + .string "CAN_RFIFOMDATA1_DB4 BITS(0,7)" +.LASF819: + .string "CAN_F3DATA0(canx) REG32((canx) + 0x258U)" +.LASF1349: + .string "EXMC_SNTCFG_DSET BITS(8,15)" +.LASF3159: + .string "EXTI_PD_PD9 BIT(9)" +.LASF3178: + .string "long long unsigned int" +.LASF1923: + .string "PMU_CTL REG32((PMU) + 0x00U)" +.LASF3217: + .string "flag_right" +.LASF2494: + .string "TIMER_DMACFG(timerx) REG32((timerx) + 0x48U)" +.LASF171: + .string "__DBL_DENORM_MIN__ ((double)4.94065645841246544176568792868221372e-324L)" +.LASF987: + .string "CAN_RFIFOMDATA1_DB7 BITS(24,31)" +.LASF1314: + .string "CHCTL_MWIDTH(regval) (BITS(10,11) & ((uint32_t)(regval) << 10))" +.LASF857: + .string "CAN_F13DATA1(canx) REG32((canx) + 0x2ACU)" +.LASF1120: + .string "CRC_DATA REG32(CRC + 0x00U)" +.LASF474: + .string "SIG_ATOMIC_MAX (__STDINT_EXP(INT_MAX))" +.LASF1954: + .string "GD32VF103_RCU_H " +.LASF785: + .string "CAN_TSTAT(canx) REG32((canx) + 0x08U)" +.LASF2154: + .string "RCU_APB2_CKAHB_DIV4 CFG0_APB2PSC(5)" +.LASF1397: + .string "FMC_CTL_ENDIE BIT(12)" +.LASF3083: + .string "EXTI_EVEN_EVEN9 BIT(9)" +.LASF1281: + .string "DMA_CHXPADDR_PADDR BITS(0,31)" +.LASF900: + .string "CAN_STAT_RXL BIT(11)" +.LASF1418: + .string "UNLOCK_KEY1 ((uint32_t)0xCDEF89ABU)" +.LASF1849: + .string "I2C_GCEN_DISABLE ((uint32_t)0x00000000U)" +.LASF2813: + .string "TIMER_HALLINTERFACE_ENABLE TIMER_CTL1_TI0S" +.LASF941: + .string "CAN_INTEN_ERRNIE BIT(11)" +.LASF725: + .string "BKP_DATA12 REG16((BKP) + 0x48U)" +.LASF3172: + .string "unsigned char" +.LASF3091: + .string "EXTI_EVEN_EVEN17 BIT(17)" +.LASF2907: + .string "USART_STB_0_5BIT CTL1_STB(1)" +.LASF2541: + .string "TIMER_INTF_CH2IF BIT(3)" +.LASF2393: + .string "SPI_FRAMESIZE_8BIT ((uint32_t)0x00000000U)" +.LASF248: + .string "__FLT128_HAS_DENORM__ 1" +.LASF1089: + .string "CAN_FIFO1 ((uint8_t)0x01U)" +.LASF3184: + .string "EXTI_0" +.LASF2628: + .string "TIMER_INT_FLAG_CH0 TIMER_INT_CH0" +.LASF3186: + .string "EXTI_2" +.LASF3187: + .string "EXTI_3" +.LASF3188: + .string "EXTI_4" +.LASF3189: + .string "EXTI_5" +.LASF3190: + .string "EXTI_6" +.LASF3191: + .string "EXTI_7" +.LASF3192: + .string "EXTI_8" +.LASF3193: + .string "EXTI_9" +.LASF3148: + .string "EXTI_SWIEV_SWIEV17 BIT(17)" +.LASF1851: + .string "I2C_SRESET_RESET ((uint32_t)0x00000000U)" +.LASF1974: + .string "RCU_CTL_HXTALSTB BIT(17)" +.LASF1578: + .string "GPIO_BOP_CR0 BIT(16)" +.LASF1526: + .string "GPIO_CTL1_MD14 BITS(24, 25)" +.LASF2593: + .string "TIMER_CHCTL2_CH1NP BIT(7)" +.LASF1539: + .string "GPIO_ISTAT_ISTAT9 BIT(9)" +.LASF3118: + .string "EXTI_FTEN_FTEN6 BIT(6)" +.LASF1831: + .string "I2C_CTL1_REG_OFFSET 0x04U" +.LASF2638: + .string "TIMER_FLAG_CH2 TIMER_INTF_CH2IF" +.LASF2800: + .string "TIMER_SLAVE_MODE_RESTART SMCFG_SMC(4)" +.LASF192: + .string "__FLT16_DIG__ 3" +.LASF2174: + .string "RCU_PLL_MUL9 CFG0_PLLMF(7)" +.LASF706: + .string "ADC_OVERSAMPLING_RATIO_MUL16 OVSCR_OVSR(3)" +.LASF1810: + .string "I2C_STAT0_SMBTO BIT(14)" +.LASF1575: + .string "GPIO_BOP_BOP13 BIT(13)" +.LASF1225: + .string "DAC_TRIANGLE_AMPLITUDE_2047 DAC_WAVE_BIT_WIDTH_11" +.LASF1591: + .string "GPIO_BOP_CR13 BIT(29)" +.LASF2004: + .string "RCU_INT_IRC40KSTBIE BIT(8)" +.LASF3146: + .string "EXTI_SWIEV_SWIEV15 BIT(15)" +.LASF1614: + .string "GPIO_LOCK_LK4 BIT(4)" +.LASF1695: + .string "GPIO_EVENT_PIN_10 ((uint8_t)0x0AU)" +.LASF464: + .string "INT_FAST32_MAX (__INT_FAST32_MAX__)" +.LASF2588: + .string "TIMER_CHCTL2_CH0NEN BIT(2)" +.LASF1877: + .string "FWDGT_PSC_PSC BITS(0,2)" +.LASF2465: + .string "I2S_FLAG_RXORERR SPI_STAT_RXORERR" +.LASF2572: + .string "TIMER_CHCTL1_CH2MS BITS(0,1)" +.LASF1860: + .string "I2C_SALTSEND_ENABLE I2C_CTL0_SALT" +.LASF1027: + .string "GET_RFIFOMP_DLENC(regval) GET_BITS((uint32_t)(regval), 0U, 3U)" +.LASF2422: + .string "I2S_FRAMEFORMAT_DT16B_CH32B (I2SCTL_DTLEN(0) | SPI_I2SCTL_CHLEN)" +.LASF2348: + .string "SPI_CTL0_CRCNT BIT(12)" +.LASF1725: + .string "GPIO_PIN_8 BIT(8)" +.LASF2782: + .string "TIMER_SMCFG_TRGSEL_CI0F_ED SMCFG_TRGSEL(4)" +.LASF528: + .string "GD32VF103_ADC_H " +.LASF265: + .string "__FLT32X_HAS_QUIET_NAN__ 1" +.LASF842: + .string "CAN_F26DATA0(canx) REG32((canx) + 0x310U)" +.LASF348: + .string "__NEWLIB_MINOR__ 1" +.LASF1285: + .string "DMA_CHCNT(dma,channel) REG32(((dma) + 0x0CU) + 0x14U * (uint32_t)(channel))" +.LASF982: + .string "CAN_RFIFOMDATA0_DB2 BITS(16,23)" +.LASF2211: + .string "RCU_CKOUT0SRC_EXT1 CFG0_CKOUT0SEL(10)" +.LASF3076: + .string "EXTI_EVEN_EVEN2 BIT(2)" +.LASF2158: + .string "RCU_CKADC_CKAPB2_DIV4 ((uint32_t)0x00000001U)" +.LASF579: + .string "ADC_CTL1_ETERC BIT(20)" +.LASF403: + .string "__LEAST32 \"l\"" +.LASF582: + .string "ADC_CTL1_TSVREN BIT(23)" +.LASF1386: + .string "FMC_STAT_WPERR BIT(4)" +.LASF271: + .string "__FLT64X_MAX_10_EXP__ 4932" +.LASF2759: + .string "TIMER_OC_SHADOW_ENABLE ((uint16_t)0x0008U)" +.LASF1388: + .string "FMC_CTL_PG BIT(0)" +.LASF2641: + .string "TIMER_FLAG_TRG TIMER_INTF_TRGIF" +.LASF2470: + .string "TIMER1 (TIMER_BASE + 0x00000000U)" +.LASF3094: + .string "EXTI_RTEN_RTEN1 BIT(1)" +.LASF1039: + .string "GET_ERR_RECNT(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF2392: + .string "SPI_FRAMESIZE_16BIT SPI_CTL0_FF16" +.LASF2999: + .string "_WCHAR_T_DECLARED " +.LASF597: + .string "ADC_OVSCR_TOVS BIT(9)" +.LASF2611: + .string "TIMER_CCHP_ROS BIT(11)" +.LASF1521: + .string "GPIO_CTL1_CTL11 BITS(14, 15)" +.LASF894: + .string "CAN_STAT_ERRIF BIT(2)" +.LASF1350: + .string "EXMC_SNTCFG_BUSLAT BITS(16,19)" +.LASF1315: + .string "DMA_MEMORY_WIDTH_8BIT CHCTL_MWIDTH(0U)" +.LASF2105: + .string "RCU_CFG1_PREDV1 BITS(4,7)" +.LASF2573: + .string "TIMER_CHCTL1_CH2COMFEN BIT(2)" +.LASF3012: + .string "TIMER_MTIME 0x0" +.LASF1486: + .string "GPIO_ISTAT(gpiox) REG32((gpiox) + 0x08U)" +.LASF487: + .string "INT64_C(x) __INT64_C(x)" +.LASF972: + .string "CAN_TMDATA1_DB7 BITS(24,31)" +.LASF169: + .string "__DBL_MIN__ ((double)2.22507385850720138309023271733240406e-308L)" +.LASF2752: + .string "TIMER_OC_MODE_ACTIVE ((uint16_t)0x0010U)" +.LASF1295: + .string "DMA_INT_FLAG_HTF DMA_INTF_HTFIF" +.LASF832: + .string "CAN_F16DATA0(canx) REG32((canx) + 0x2C0U)" +.LASF299: + .string "__PRAGMA_REDEFINE_EXTNAME 1" +.LASF656: + .string "ADC_CHANNEL_DISCON_DISABLE ((uint8_t)0x04U)" +.LASF521: + .string "DMA_BASE (AHB1_BUS_BASE + 0x00008000U)" +.LASF1119: + .string "CRC CRC_BASE" +.LASF3079: + .string "EXTI_EVEN_EVEN5 BIT(5)" +.LASF849: + .string "CAN_F5DATA1(canx) REG32((canx) + 0x26CU)" +.LASF886: + .string "CAN_CTL_ARD BIT(4)" +.LASF2852: + .string "USART_CTL0_PM BIT(9)" +.LASF1518: + .string "GPIO_CTL1_MD10 BITS(8, 9)" +.LASF560: + .string "ADC_CTL0_EOICIE BIT(7)" +.LASF876: + .string "CAN_FDATA0(canx,bank) REG32((canx) + 0x240U + ((bank) * 0x8U) + 0x0U)" +.LASF3231: + .string "exti_deinit" +.LASF915: + .string "CAN_TSTAT_MST2 BIT(23)" +.LASF2973: + .string "__SIZE_T " +.LASF2365: + .string "SPI_STAT_CONFERR BIT(5)" +.LASF1752: + .string "GPIO_CAN1_REMAP ((uint32_t)0x00200040U)" +.LASF2195: + .string "RCU_PLL_MUL30 (PLLMF_4 | CFG0_PLLMF(13))" +.LASF349: + .string "__NEWLIB_PATCHLEVEL__ 0" +.LASF3033: + .string "ECLIC_INT_ATTR_TRIG_POS 0x00" +.LASF1620: + .string "GPIO_LOCK_LK10 BIT(10)" +.LASF1718: + .string "GPIO_PIN_1 BIT(1)" +.LASF345: + .string "_NEWLIB_VERSION_H__ 1" +.LASF1346: + .string "EXMC_SNCTL_ASYNCWAIT BIT(15)" +.LASF1499: + .string "GPIO_CTL0_CTL0 BITS(2, 3)" +.LASF1842: + .string "I2C_ACKPOS_NEXT ((uint32_t)0x00000000U)" +.LASF1101: + .string "CAN_FT_DATA ((uint32_t)0x00000000U)" +.LASF1714: + .string "GPIO_PIN_SOURCE_13 ((uint8_t)0x0DU)" +.LASF494: + .string "BIT(x) ((uint32_t)((uint32_t)0x01U<<(x)))" +.LASF291: + .string "__GCC_ATOMIC_WCHAR_T_LOCK_FREE 2" +.LASF2550: + .string "TIMER_SWEVG_UPG BIT(0)" +.LASF1978: + .string "RCU_CTL_PLLSTB BIT(25)" +.LASF2474: + .string "TIMER5 (TIMER_BASE + 0x00001000U)" +.LASF2836: + .string "USART_STAT_TC BIT(6)" +.LASF1366: + .string "FMC_WS REG32((FMC) + 0x00U)" +.LASF2619: + .string "TIMER_INT_UP TIMER_DMAINTEN_UPIE" +.LASF2930: + .string "USART_RTS_DISABLE CLT2_RTSEN(0)" +.LASF2451: + .string "SPI_INT_FLAG_CRCERR ((uint8_t)0x04U)" +.LASF1715: + .string "GPIO_PIN_SOURCE_14 ((uint8_t)0x0EU)" +.LASF1136: + .string "DAC1_L12DH REG32(DAC + 0x18U)" +.LASF2178: + .string "RCU_PLL_MUL13 CFG0_PLLMF(11)" +.LASF60: + .string "__INT_FAST64_TYPE__ long long int" +.LASF1150: + .string "DAC_CTL_DEN1 BIT(16)" +.LASF2530: + .string "TIMER_DMAINTEN_BRKIE BIT(7)" +.LASF2357: + .string "SPI_CTL1_ERRIE BIT(5)" +.LASF2812: + .string "TIMER_ETP_RISING ((uint32_t)0x00000000U)" +.LASF909: + .string "CAN_TSTAT_MTE1 BIT(11)" +.LASF197: + .string "__FLT16_DECIMAL_DIG__ 5" +.LASF499: + .string "OB_BASE ((uint32_t)0x1FFFF800U)" +.LASF2143: + .string "RCU_AHB_CKSYS_DIV256 CFG0_AHBPSC(14)" +.LASF1494: + .string "AFIO_EXTISS1 REG32(AFIO + 0x0CU)" +.LASF2135: + .string "CFG0_AHBPSC(regval) (BITS(4,7) & ((uint32_t)(regval) << 4))" +.LASF247: + .string "__FLT128_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F128" +.LASF864: + .string "CAN_F20DATA1(canx) REG32((canx) + 0x2E4U)" +.LASF2858: + .string "USART_CTL1_LBLEN BIT(5)" +.LASF1952: + .string "WFI_CMD ((uint8_t)0x00U)" +.LASF1984: + .string "RCU_CFG0_SCSS BITS(2,3)" +.LASF2928: + .string "CLT2_RTSEN(regval) (BIT(8) & ((uint32_t)(regval) << 8))" +.LASF21: + .string "__SIZEOF_DOUBLE__ 8" +.LASF149: + .string "__FLT_MAX_EXP__ 128" +.LASF816: + .string "CAN_F0DATA0(canx) REG32((canx) + 0x240U)" +.LASF2515: + .string "TIMER_CTL1_ISO3 BIT(14)" +.LASF620: + .string "ADC_CONTINUOUS_MODE ADC_CTL1_CTN" +.LASF2250: + .string "RCU_PREDV1_DIV15 CFG1_PREDV1(14)" +.LASF1796: + .string "I2C_SADDR1_ADDRESS2 BITS(1,7)" +.LASF2383: + .string "SPI_I2SPSC_MCKOEN BIT(9)" +.LASF144: + .string "__FLT_RADIX__ 2" +.LASF1710: + .string "GPIO_PIN_SOURCE_9 ((uint8_t)0x09U)" +.LASF3224: + .string "exti_interrupt_enable" +.LASF2763: + .string "TIMER_OC_CLEAR_ENABLE ((uint16_t)0x0080U)" +.LASF1841: + .string "I2C_ACK_ENABLE ((uint32_t)0x00000001U)" +.LASF1692: + .string "GPIO_EVENT_PIN_7 ((uint8_t)0x07U)" +.LASF2072: + .string "RCU_APB1EN_TIMER5EN BIT(4)" +.LASF967: + .string "CAN_TMDATA0_DB2 BITS(16,23)" +.LASF732: + .string "BKP_DATA19 REG16((BKP) + 0x64U)" +.LASF111: + .string "__INT32_C(c) c ## L" +.LASF935: + .string "CAN_INTEN_RFNEIE1 BIT(4)" +.LASF1977: + .string "RCU_CTL_PLLEN BIT(24)" +.LASF1343: + .string "EXMC_SNCTL_NRWTPOL BIT(9)" +.LASF1825: + .string "I2C_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF1270: + .string "DMA_CHXCTL_HTFIE BIT(2)" +.LASF2669: + .string "TIMER_DMACFG_DMATA_CREP DMACFG_DMATA(12)" +.LASF519: + .string "GPIO_BASE (APB2_BUS_BASE + 0x00000800U)" +.LASF2784: + .string "TIMER_SMCFG_TRGSEL_CI1FE1 SMCFG_TRGSEL(6)" +.LASF1407: + .string "FMC_REG_VAL(offset) (REG32(FMC + ((uint32_t)(offset) >> 6)))" +.LASF2284: + .string "RCU_DEEPSLEEP_V_0_9 DSV_DSLPVS(3)" +.LASF82: + .string "__LONG_WIDTH__ 32" +.LASF2742: + .string "TIMER_CCXN_DISABLE ((uint16_t)0x0000U)" +.LASF738: + .string "BKP_DATA25 REG16((BKP) + 0x7CU)" +.LASF2525: + .string "TIMER_DMAINTEN_CH1IE BIT(2)" +.LASF2112: + .string "RCU_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF14: + .string "__ATOMIC_CONSUME 1" +.LASF2205: + .string "RCU_CKOUT0SRC_CKSYS CFG0_CKOUT0SEL(4)" +.LASF3029: + .string "ECLIC_INT_ATTR_OFFSET _AC(0x1002,UL)" +.LASF216: + .string "__FLT32_EPSILON__ 1.19209289550781250000000000000000000e-7F32" +.LASF2673: + .string "TIMER_DMACFG_DMATA_CH3CV DMACFG_DMATA(16)" +.LASF342: + .string "_STDINT_H " +.LASF3115: + .string "EXTI_FTEN_FTEN3 BIT(3)" +.LASF1126: + .string "GD32VF103_DAC_H " +.LASF2722: + .string "TIMER_IOS_STATE_ENABLE ((uint16_t)TIMER_CCHP_IOS)" +.LASF1763: + .string "I2C_SADDR0(i2cx) REG32((i2cx) + 0x08U)" +.LASF1025: + .string "GET_RFIFOMI_EFID(regval) GET_BITS((uint32_t)(regval), 3U, 31U)" +.LASF1990: + .string "RCU_CFG0_PREDV0_LSB BIT(17)" +.LASF355: + .string "__ISO_C_VISIBLE 2011" +.LASF2261: + .string "RCU_PLL1_MUL16 CFG1_PLL1MF(14)" +.LASF1033: + .string "GET_RFIFOMDATA1_DB4(regval) GET_BITS((uint32_t)(regval), 0U, 7U)" +.LASF2527: + .string "TIMER_DMAINTEN_CH3IE BIT(4)" +.LASF2680: + .string "TIMER_DMACFG_DMATC_4TRANSFER DMACFG_DMATC(3)" +.LASF2253: + .string "RCU_PLL1_MUL8 CFG1_PLL1MF(6)" +.LASF2905: + .string "CTL1_STB(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF2659: + .string "TIMER_DMACFG_DMATA_SMCFG DMACFG_DMATA(2)" +.LASF3164: + .string "EXTI_PD_PD14 BIT(14)" +.LASF1214: + .string "DAC_ALIGN_8B_R DATA_ALIGN(2)" +.LASF2066: + .string "RCU_APB2EN_SPI0EN BIT(12)" +.LASF2847: + .string "USART_CTL0_IDLEIE BIT(4)" +.LASF1168: + .string "DACC_L12DH_DAC1_DH BITS(20,31)" +.LASF963: + .string "CAN_TMP_TSEN BIT(8)" +.LASF178: + .string "__LDBL_MIN_10_EXP__ (-4931)" +.LASF2919: + .string "CTL1_CPL(regval) (BIT(10) & ((uint32_t)(regval) << 10))" +.LASF3036: + .string "ECLIC_ADDR_BASE 0xd2000000" +.LASF1861: + .string "I2C_SALTSEND_DISABLE ((uint32_t)0x00000000U)" +.LASF2398: + .string "SPI_CK_PL_LOW_PH_1EDGE ((uint32_t)0x00000000U)" +.LASF213: + .string "__FLT32_MAX__ 3.40282346638528859811704183484516925e+38F32" +.LASF2256: + .string "RCU_PLL1_MUL11 CFG1_PLL1MF(9)" +.LASF726: + .string "BKP_DATA13 REG16((BKP) + 0x4CU)" +.LASF1757: + .string "GPIO_EXMC_NADV_REMAP ((uint32_t)0x80000400U)" +.LASF731: + .string "BKP_DATA18 REG16((BKP) + 0x60U)" +.LASF2255: + .string "RCU_PLL1_MUL10 CFG1_PLL1MF(8)" +.LASF1009: + .string "BT_BS2(regval) (BITS(20,22) & ((uint32_t)(regval) << 20))" +.LASF2694: + .string "TIMER_DMACFG_DMATC_18TRANSFER DMACFG_DMATC(17)" +.LASF693: + .string "ADC_OVERSAMPLING_SHIFT_NONE OVSCR_OVSS(0)" +.LASF1871: + .string "FWDGT FWDGT_BASE" +.LASF3107: + .string "EXTI_RTEN_RTEN14 BIT(14)" +.LASF3179: + .string "__uint32_t" +.LASF116: + .string "__UINT_LEAST8_MAX__ 0xff" +.LASF1561: + .string "GPIO_OCTL_OCTL15 BIT(15)" +.LASF1812: + .string "I2C_STAT1_MASTER BIT(0)" +.LASF2880: + .string "USART_REG_VAL(usartx,offset) (REG32((usartx) + (((uint32_t)(offset) & (0x0000FFFFU)) >> 6)))" +.LASF2200: + .string "RCU_CKUSB_CKPLL_DIV1 CFG0_USBPSC(1)" +.LASF475: + .string "PTRDIFF_MAX (__PTRDIFF_MAX__)" +.LASF931: + .string "CAN_INTEN_TMEIE BIT(0)" +.LASF1271: + .string "DMA_CHXCTL_ERRIE BIT(3)" +.LASF2298: + .string "RTC_INTEN_ALRMIE BIT(1)" +.LASF2781: + .string "TIMER_SMCFG_TRGSEL_ITI3 SMCFG_TRGSEL(3)" +.LASF2217: + .string "RCU_RTCSRC_HXTAL_DIV_128 BDCTL_RTCSRC(3)" +.LASF2024: + .string "RCU_APB2RST_PERST BIT(6)" +.LASF256: + .string "__FLT32X_MAX_10_EXP__ 308" +.LASF1727: + .string "GPIO_PIN_10 BIT(10)" +.LASF877: + .string "CAN_FDATA1(canx,bank) REG32((canx) + 0x240U + ((bank) * 0x8U) + 0x4U)" +.LASF804: + .string "CAN_RFIFOMP0(canx) REG32((canx) + 0x1B4U)" +.LASF2046: + .string "RCU_APB1RST_CAN1RST BIT(26)" +.LASF2802: + .string "TIMER_SLAVE_MODE_EVENT SMCFG_SMC(6)" +.LASF794: + .string "CAN_TMDATA10(canx) REG32((canx) + 0x18CU)" +.LASF162: + .string "__DBL_MIN_EXP__ (-1021)" +.LASF483: + .string "INT16_C(x) __INT16_C(x)" +.LASF10: + .string "__ATOMIC_SEQ_CST 5" +.LASF1525: + .string "GPIO_CTL1_CTL13 BITS(22, 23)" +.LASF1750: + .string "GPIO_PD01_REMAP ((uint32_t)0x00008000U)" +.LASF1966: + .string "RCU_AHBRST REG32(RCU + 0x28U)" +.LASF929: + .string "CAN_RFIFO1_RFO1 BIT(4)" +.LASF1483: + .string "AFIO AFIO_BASE" +.LASF1356: + .string "SNCTL_NRTP(regval) (BITS(2,3) & ((uint32_t)(regval) << 2))" +.LASF844: + .string "CAN_F0DATA1(canx) REG32((canx) + 0x244U)" +.LASF1598: + .string "GPIO_BC_CR4 BIT(4)" +.LASF1222: + .string "DAC_TRIANGLE_AMPLITUDE_255 DAC_WAVE_BIT_WIDTH_8" +.LASF2509: + .string "TIMER_CTL1_ISO0 BIT(8)" +.LASF2995: + .string "_WCHAR_T_H " +.LASF1911: + .string "DBG_CTL_CAN0_HOLD BIT(14)" +.LASF2798: + .string "TIMER_ENCODER_MODE1 SMCFG_SMC(2)" +.LASF250: + .string "__FLT128_HAS_QUIET_NAN__ 1" +.LASF545: + .string "ADC_ISQ(adcx) REG32((adcx) + 0x38U)" +.LASF704: + .string "ADC_OVERSAMPLING_RATIO_MUL4 OVSCR_OVSR(1)" +.LASF964: + .string "CAN_TMP_TS BITS(16,31)" +.LASF585: + .string "ADC_WDHT_WDHT BITS(0,11)" +.LASF2097: + .string "RCU_RSTSCK_EPRSTF BIT(26)" +.LASF2943: + .string "WWDGT_CTL_WDGTEN BIT(7)" +.LASF2897: + .string "USART_PM_EVEN CTL0_PM(2)" +.LASF2972: + .string "_T_SIZE " +.LASF482: + .string "UINT8_C(x) __UINT8_C(x)" +.LASF780: + .string "GD32VF103_CAN_H " +.LASF65: + .string "__INTPTR_TYPE__ int" +.LASF1848: + .string "I2C_GCEN_ENABLE I2C_CTL0_GCEN" +.LASF1650: + .string "AFIO_EXTI5_SS BITS(4, 7)" +.LASF2407: + .string "SPI_PSC_32 CTL0_PSC(4)" +.LASF1785: + .string "I2C_CTL1_I2CCLK BITS(0,5)" +.LASF509: + .string "FWDGT_BASE (APB1_BUS_BASE + 0x00003000U)" +.LASF647: + .string "ADC_SAMPLETIME_239POINT5 SAMPTX_SPT(7)" +.LASF1164: + .string "DAC1_R8DH_DAC1_DH BITS(0,7)" +.LASF1662: + .string "GPIO_MODE_SET(n,mode) ((uint32_t)((uint32_t)(mode) << (4U * (n))))" +.LASF2960: + .string "__PTRDIFF_T " +.LASF36: + .string "__INTMAX_TYPE__ long long int" +.LASF1304: + .string "DMA_PERIPHERAL_TO_MEMORY ((uint8_t)0x00U)" +.LASF765: + .string "BKP_TPCS_TER BIT(0)" +.LASF3011: + .string "TIMER_MTIMECMP_size 0x8" +.LASF2801: + .string "TIMER_SLAVE_MODE_PAUSE SMCFG_SMC(5)" +.LASF2506: + .string "TIMER_CTL1_DMAS BIT(3)" +.LASF496: + .string "GET_BITS(regval,start,end) (((regval) & BITS((start),(end))) >> (start))" +.LASF2833: + .string "USART_STAT_ORERR BIT(3)" +.LASF826: + .string "CAN_F10DATA0(canx) REG32((canx) + 0x290U)" +.LASF1896: + .string "FWDGT_FLAG_RUD FWDGT_STAT_RUD" +.LASF2287: + .string "RTC_INTEN REG32(RTC + 0x00U)" +.LASF462: + .string "UINT_FAST16_MAX (__UINT_FAST16_MAX__)" +.LASF1469: + .string "OB_WP_28 ((uint32_t)0x10000000U)" +.LASF1875: + .string "FWDGT_STAT REG32((FWDGT) + 0x0000000CU)" +.LASF672: + .string "ADC_CHANNEL_11 ((uint8_t)0x0BU)" +.LASF3183: + .string "long double" +.LASF1551: + .string "GPIO_OCTL_OCTL5 BIT(5)" +.LASF2595: + .string "TIMER_CHCTL2_CH2P BIT(9)" +.LASF811: + .string "CAN_FCTL(canx) REG32((canx) + 0x200U)" +.LASF1130: + .string "DAC_CTL REG32(DAC + 0x00U)" +.LASF1231: + .string "DMA_INTC(dmax) REG32((dmax) + 0x04U)" +.LASF2621: + .string "TIMER_INT_CH1 TIMER_DMAINTEN_CH1IE" +.LASF2713: + .string "TIMER_CKDIV_DIV1 CTL0_CKDIV(0)" +.LASF2816: + .string "TIMER_CHVSEL_DISABLE ((uint16_t)0x0000U)" +.LASF2559: + .string "TIMER_CHCTL0_CH0COMFEN BIT(2)" +.LASF1373: + .string "FMC_WP REG32((FMC) + 0x20U)" +.LASF89: + .string "__INTMAX_C(c) c ## LL" +.LASF1925: + .string "PMU_CTL_LDOLP BIT(0)" +.LASF865: + .string "CAN_F21DATA1(canx) REG32((canx) + 0x2ECU)" +.LASF2193: + .string "RCU_PLL_MUL28 (PLLMF_4 | CFG0_PLLMF(11))" +.LASF2277: + .string "RCU_I2S1SRC_CKPLL2_MUL2 RCU_CFG1_I2S1SEL" +.LASF302: + .string "__SIZEOF_PTRDIFF_T__ 4" +.LASF3149: + .string "EXTI_SWIEV_SWIEV18 BIT(18)" +.LASF3105: + .string "EXTI_RTEN_RTEN12 BIT(12)" +.LASF2706: + .string "TIMER_COUNTER_CENTER_UP CTL0_CAM(2)" +.LASF1395: + .string "FMC_CTL_OBWEN BIT(9)" +.LASF891: + .string "CAN_CTL_DFZ BIT(16)" +.LASF3084: + .string "EXTI_EVEN_EVEN10 BIT(10)" +.LASF2630: + .string "TIMER_INT_FLAG_CH2 TIMER_INT_CH2" +.LASF980: + .string "CAN_RFIFOMDATA0_DB0 BITS(0,7)" +.LASF1555: + .string "GPIO_OCTL_OCTL9 BIT(9)" +.LASF910: + .string "CAN_TSTAT_MST1 BIT(15)" +.LASF2959: + .string "_T_PTRDIFF " +.LASF1739: + .string "GPIO_USART2_FULL_REMAP ((uint32_t)0x00140030U)" +.LASF645: + .string "ADC_SAMPLETIME_55POINT5 SAMPTX_SPT(5)" +.LASF503: + .string "APB2_BUS_BASE ((uint32_t)0x40010000U)" +.LASF535: + .string "ADC_SAMPT1(adcx) REG32((adcx) + 0x10U)" +.LASF1939: + .string "PMU_LVDT_2 CTL_LVDT(2)" +.LASF1619: + .string "GPIO_LOCK_LK9 BIT(9)" +.LASF2979: + .string "_SIZE_T_DECLARED " +.LASF2353: + .string "SPI_CTL1_DMATEN BIT(1)" +.LASF608: + .string "ADC_MODE_FREE CTL0_SYNCM(0)" +.LASF86: + .string "__PTRDIFF_WIDTH__ 32" +.LASF763: + .string "BKP_TPCTL_TPEN BIT(0)" +.LASF2227: + .string "RCU_PREDV0_DIV9 CFG1_PREDV0(8)" +.LASF827: + .string "CAN_F11DATA0(canx) REG32((canx) + 0x298U)" +.LASF2967: + .string "__size_t__ " +.LASF2467: + .string "I2S_FLAG_FERR SPI_STAT_FERR" +.LASF604: + .string "CTL0_DISNUM(regval) (BITS(13,15) & ((uint32_t)(regval) << 13))" +.LASF2715: + .string "TIMER_CKDIV_DIV4 CTL0_CKDIV(2)" +.LASF2231: + .string "RCU_PREDV0_DIV13 CFG1_PREDV0(12)" +.LASF1803: + .string "I2C_STAT0_RBNE BIT(6)" +.LASF776: + .string "TAMPER_PIN_ACTIVE_HIGH ((uint16_t)0x0000U)" +.LASF1220: + .string "DAC_TRIANGLE_AMPLITUDE_63 DAC_WAVE_BIT_WIDTH_6" +.LASF691: + .string "ADC_OVERSAMPLING_ONE_CONVERT 1" +.LASF2827: + .string "USART_CTL1(usartx) REG32((usartx) + (0x00000010U))" +.LASF1282: + .string "DMA_CHXMADDR_MADDR BITS(0,31)" +.LASF1238: + .string "DMA_CH1PADDR(dmax) REG32((dmax) + 0x24U)" +.LASF1850: + .string "I2C_SRESET_SET I2C_CTL0_SRESET" +.LASF506: + .string "TIMER_BASE (APB1_BUS_BASE + 0x00000000U)" +.LASF943: + .string "CAN_INTEN_WIE BIT(16)" +.LASF3068: + .string "EXTI_INTEN_INTEN13 BIT(13)" +.LASF1697: + .string "GPIO_EVENT_PIN_12 ((uint8_t)0x0CU)" +.LASF2719: + .string "TIMER_UPDATE_SRC_GLOBAL ((uint32_t)0x00000000U)" +.LASF3136: + .string "EXTI_SWIEV_SWIEV5 BIT(5)" +.LASF3103: + .string "EXTI_RTEN_RTEN10 BIT(10)" +.LASF466: + .string "INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1)" +.LASF3151: + .string "EXTI_PD_PD1 BIT(1)" +.LASF3021: + .string "_BITUL(x) (_AC(1,UL) << (x))" +.LASF1061: + .string "CAN_BT_BS1_4TQ ((uint8_t)0x03U)" +.LASF1404: + .string "FMC_WSEN_WSEN BIT(0)" +.LASF1509: + .string "GPIO_CTL0_CTL5 BITS(22, 23)" +.LASF1902: + .string "DBG_CTL_SLP_HOLD BIT(0)" +.LASF1784: + .string "I2C_CTL0_SRESET BIT(15)" +.LASF160: + .string "__DBL_MANT_DIG__ 53" +.LASF2079: + .string "RCU_APB1EN_UART3EN BIT(19)" +.LASF667: + .string "ADC_CHANNEL_6 ((uint8_t)0x06U)" +.LASF916: + .string "CAN_TSTAT_NUM BITS(24,25)" +.LASF790: + .string "CAN_BT(canx) REG32((canx) + 0x1CU)" +.LASF1870: + .string "GD32VF103_FWDGT_H " +.LASF1148: + .string "DAC_CTL_DWBW0 BITS(8,11)" +.LASF3071: + .string "EXTI_INTEN_INTEN16 BIT(16)" +.LASF426: + .string "__int_fast8_t_defined 1" +.LASF621: + .string "CTL1_ETSRC(regval) (BITS(17,19) & ((uint32_t)(regval) << 17))" +.LASF2780: + .string "TIMER_SMCFG_TRGSEL_ITI2 SMCFG_TRGSEL(2)" +.LASF1962: + .string "RCU_APB2EN REG32(RCU + 0x18U)" +.LASF2688: + .string "TIMER_DMACFG_DMATC_12TRANSFER DMACFG_DMATC(11)" +.LASF626: + .string "ADC0_1_EXTTRIG_REGULAR_T2_TRGO CTL1_ETSRC(4)" +.LASF1284: + .string "DMA_CHCTL(dma,channel) REG32(((dma) + 0x08U) + 0x14U * (uint32_t)(channel))" +.LASF118: + .string "__UINT_LEAST16_MAX__ 0xffff" +.LASF1490: + .string "GPIO_LOCK(gpiox) REG32((gpiox) + 0x18U)" +.LASF2466: + .string "I2S_FLAG_TRANS SPI_STAT_TRANS" +.LASF1026: + .string "GET_RFIFOMI_SFID(regval) GET_BITS((uint32_t)(regval), 21U, 31U)" +.LASF2956: + .string "_ANSI_STDDEF_H " +.LASF1625: + .string "GPIO_LOCK_LK15 BIT(15)" +.LASF441: + .string "UINT16_MAX (__UINT16_MAX__)" +.LASF61: + .string "__UINT_FAST8_TYPE__ unsigned int" +.LASF2987: + .string "_WCHAR_T " +.LASF2302: + .string "RTC_CTL_OVIF BIT(2)" +.LASF839: + .string "CAN_F23DATA0(canx) REG32((canx) + 0x3F8U)" +.LASF3026: + .string "ECLIC_MTH_OFFSET 0xB" +.LASF1737: + .string "GPIO_USART1_REMAP ((uint32_t)0x00000008U)" +.LASF1980: + .string "RCU_CTL_PLL1STB BIT(27)" +.LASF1612: + .string "GPIO_LOCK_LK2 BIT(2)" +.LASF2433: + .string "I2S_STD_PHILLIPS I2SCTL_I2SSTD(0)" +.LASF1461: + .string "OB_WP_20 ((uint32_t)0x00100000U)" +.LASF492: + .string "REG16(addr) (*(volatile uint16_t *)(uint32_t)(addr))" +.LASF1332: + .string "__SEV eclic_send_event" +.LASF1034: + .string "GET_RFIFOMDATA1_DB5(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF1135: + .string "DAC1_R12DH REG32(DAC + 0x14U)" +.LASF838: + .string "CAN_F22DATA0(canx) REG32((canx) + 0x2F0U)" +.LASF2849: + .string "USART_CTL0_TCIE BIT(6)" +.LASF1758: + .string "GD32VF103_I2C_H " +.LASF2299: + .string "RTC_INTEN_OVIE BIT(2)" +.LASF2721: + .string "TIMER_ROS_STATE_DISABLE ((uint16_t)0x0000U)" +.LASF1351: + .string "EXMC_SNCTL(region) REG32(EXMC + 0x08U * (region))" +.LASF2263: + .string "CFG1_PLL2MF(regval) (BITS(12,15) & ((uint32_t)(regval) << 12))" +.LASF141: + .string "__FLT_EVAL_METHOD__ 0" +.LASF1605: + .string "GPIO_BC_CR11 BIT(11)" +.LASF1684: + .string "GPIO_PORT_SOURCE_GPIOE ((uint8_t)0x04U)" +.LASF1042: + .string "CAN_ERRN_1 ERR_ERRN(1U)" +.LASF2275: + .string "RCU_PREDV0SRC_CKPLL1 RCU_CFG1_PREDV0SEL" +.LASF2191: + .string "RCU_PLL_MUL26 (PLLMF_4 | CFG0_PLLMF(9))" +.LASF2017: + .string "RCU_INT_PLL2STBIC BIT(22)" +.LASF485: + .string "INT32_C(x) __INT32_C(x)" +.LASF264: + .string "__FLT32X_HAS_INFINITY__ 1" +.LASF1529: + .string "GPIO_CTL1_CTL15 BITS(30, 31)" +.LASF2408: + .string "SPI_PSC_64 CTL0_PSC(5)" +.LASF711: + .string "GD32VF103_BKP_H " +.LASF2137: + .string "RCU_AHB_CKSYS_DIV2 CFG0_AHBPSC(8)" +.LASF2358: + .string "SPI_CTL1_RBNEIE BIT(6)" +.LASF78: + .string "__SIZE_MAX__ 0xffffffffU" +.LASF1565: + .string "GPIO_BOP_BOP3 BIT(3)" +.LASF1987: + .string "RCU_CFG0_APB2PSC BITS(11,13)" +.LASF2976: + .string "_SIZE_T_DEFINED_ " +.LASF737: + .string "BKP_DATA24 REG16((BKP) + 0x78U)" +.LASF1608: + .string "GPIO_BC_CR14 BIT(14)" +.LASF2042: + .string "RCU_APB1RST_UART4RST BIT(20)" +.LASF251: + .string "__FLT32X_MANT_DIG__ 53" +.LASF2488: + .string "TIMER_CREP(timerx) REG32((timerx) + 0x30U)" +.LASF2220: + .string "RCU_PREDV0_DIV2 CFG1_PREDV0(1)" +.LASF289: + .string "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 1" +.LASF3165: + .string "EXTI_PD_PD15 BIT(15)" +.LASF1250: + .string "DMA_CH4PADDR(dmax) REG32((dmax) + 0x60U)" +.LASF2536: + .string "TIMER_DMAINTEN_CMTDEN BIT(13)" +.LASF353: + .string "__BSD_VISIBLE 0" +.LASF741: + .string "BKP_DATA28 REG16((BKP) + 0x88U)" +.LASF100: + .string "__UINT8_MAX__ 0xff" +.LASF2856: + .string "USART_CTL0_UEN BIT(13)" +.LASF2898: + .string "USART_PM_ODD CTL0_PM(3)" +.LASF9: + .string "__ATOMIC_RELAXED 0" +.LASF2160: + .string "RCU_CKADC_CKAPB2_DIV8 ((uint32_t)0x00000003U)" +.LASF653: + .string "ADC_REGULAR_CHANNEL ((uint8_t)0x01U)" +.LASF1036: + .string "GET_RFIFOMDATA1_DB7(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF2867: + .string "USART_CTL2_IREN BIT(1)" +.LASF1180: + .string "DAC_TRIGGER_EXTI_9 CTL_DTSEL(6)" +.LASF1582: + .string "GPIO_BOP_CR4 BIT(20)" +.LASF2717: + .string "TIMER_SP_MODE_REPETITIVE ((uint32_t)0x00000000U)" +.LASF2268: + .string "RCU_PLL2_MUL12 CFG1_PLL2MF(10)" +.LASF2483: + .string "TIMER_CHCTL1(timerx) REG32((timerx) + 0x1CU)" +.LASF2107: + .string "RCU_CFG1_PLL2MF BITS(12,15)" +.LASF396: + .string "__INT64 \"ll\"" +.LASF1858: + .string "I2C_PECTRANS_ENABLE I2C_CTL0_PECTRANS" +.LASF3027: + .string "ECLIC_INT_IP_OFFSET _AC(0x1000,UL)" +.LASF1127: + .string "DAC DAC_BASE" +.LASF2992: + .string "_BSD_WCHAR_T_ " +.LASF976: + .string "CAN_RFIFOMI_SFID BITS(21,31)" +.LASF407: + .string "_UINT8_T_DECLARED " +.LASF227: + .string "__FLT64_DECIMAL_DIG__ 17" +.LASF994: + .string "CAN_FDATA_FD(regval) BIT(regval)" +.LASF2371: + .string "SPI_RCRC_RCRC BITS(0,15)" +.LASF2941: + .string "WWDGT_STAT REG32((WWDGT) + 0x00000008U)" +.LASF1078: + .string "CAN_BT_BS2_5TQ ((uint8_t)0x04U)" +.LASF1264: + .string "DMA_INTC_GIFC BIT(0)" +.LASF2936: + .string "USART_IRLP_NORMAL CTL2_IRLP(0)" +.LASF1914: + .string "DBG_CTL_TIMER4_HOLD BIT(18)" +.LASF2387: + .string "SPI_BIDIRECTIONAL_RECEIVE (~SPI_CTL0_BDOEN)" +.LASF1428: + .string "OB_STDBY_RST ((uint8_t)0x00U)" +.LASF2086: + .string "RCU_APB1EN_PMUEN BIT(28)" +.LASF249: + .string "__FLT128_HAS_INFINITY__ 1" +.LASF729: + .string "BKP_DATA16 REG16((BKP) + 0x58U)" +.LASF660: + .string "ADC_INSERTED_CHANNEL_3 ((uint8_t)0x03U)" +.LASF2603: + .string "TIMER_CREP_CREP BITS(0,7)" +.LASF3124: + .string "EXTI_FTEN_FTEN12 BIT(12)" +.LASF719: + .string "BKP_DATA6 REG16((BKP) + 0x1CU)" +.LASF1015: + .string "TMI_EFID(regval) (BITS(3,31) & ((uint32_t)(regval) << 3))" +.LASF584: + .string "ADC_IOFFX_IOFF BITS(0,11)" +.LASF2795: + .string "SMCFG_SMC(regval) (BITS(0, 2) & ((uint32_t)(regval) << 0U))" +.LASF2690: + .string "TIMER_DMACFG_DMATC_14TRANSFER DMACFG_DMATC(13)" +.LASF803: + .string "CAN_RFIFOMI0(canx) REG32((canx) + 0x1B0U)" +.LASF447: + .string "UINT32_MAX (__UINT32_MAX__)" +.LASF1307: + .string "DMA_PERIPH_INCREASE_ENABLE ((uint8_t)0x01U)" +.LASF1006: + .string "ERR_REG_OFFSET ((uint8_t)0x18U)" +.LASF1876: + .string "FWDGT_CTL_CMD BITS(0,15)" +.LASF610: + .string "ADC_DAUL_REGULAL_PARALLEL_INSERTED_ROTATION CTL0_SYNCM(2)" +.LASF740: + .string "BKP_DATA27 REG16((BKP) + 0x84U)" +.LASF2758: + .string "TIMER_OC_MODE_PWM1 ((uint16_t)0x0070U)" +.LASF1868: + .string "I2C_ADDFORMAT_7BITS ((uint32_t)0x00000000U)" +.LASF991: + .string "CAN_FSCFG_FS(regval) BIT(regval)" +.LASF1464: + .string "OB_WP_23 ((uint32_t)0x00800000U)" +.LASF559: + .string "ADC_CTL0_WDEIE BIT(6)" +.LASF233: + .string "__FLT64_HAS_DENORM__ 1" +.LASF561: + .string "ADC_CTL0_SM BIT(8)" +.LASF1010: + .string "BT_SJW(regval) (BITS(24,25) & ((uint32_t)(regval) << 24))" +.LASF728: + .string "BKP_DATA15 REG16((BKP) + 0x54U)" +.LASF555: + .string "ADC_STAT_STIC BIT(3)" +.LASF2324: + .string "RTC_FLAG_LWOF RTC_CTL_LWOFF" +.LASF746: + .string "BKP_DATA33 REG16((BKP) + 0x9CU)" +.LASF818: + .string "CAN_F2DATA0(canx) REG32((canx) + 0x250U)" +.LASF2028: + .string "RCU_APB2RST_SPI0RST BIT(12)" +.LASF3035: + .string "ECLIC_INT_CTRL_OFFSET _AC(0x1003,UL)" +.LASF335: + .string "HXTAL_VALUE_25M HXTAL_VALUE" +.LASF1736: + .string "GPIO_USART0_REMAP ((uint32_t)0x00000004U)" +.LASF2308: + .string "RTC_DIVH_DIV BITS(0,3)" +.LASF599: + .string "ADC_FLAG_WDE ADC_STAT_WDE" +.LASF157: + .string "__FLT_HAS_DENORM__ 1" +.LASF1794: + .string "I2C_SADDR0_ADDFORMAT BIT(15)" +.LASF469: + .string "INTMAX_MAX (__INTMAX_MAX__)" +.LASF391: + .string "_INTPTR_EQ_INT " +.LASF2617: + .string "TIMER_DMACFG_DMATC BITS(8,12)" +.LASF201: + .string "__FLT16_EPSILON__ 9.76562500000000000000000000000000000e-4F16" +.LASF2222: + .string "RCU_PREDV0_DIV4 CFG1_PREDV0(3)" +.LASF2016: + .string "RCU_INT_PLL1STBIC BIT(21)" +.LASF898: + .string "CAN_STAT_RS BIT(9)" +.LASF1477: + .string "GD32VF103_GPIO_H " +.LASF3080: + .string "EXTI_EVEN_EVEN6 BIT(6)" +.LASF1706: + .string "GPIO_PIN_SOURCE_5 ((uint8_t)0x05U)" +.LASF2993: + .string "_WCHAR_T_DEFINED_ " +.LASF2210: + .string "RCU_CKOUT0SRC_CKPLL2_DIV2 CFG0_CKOUT0SEL(9)" +.LASF1153: + .string "DAC_CTL_DTSEL1 BITS(19,21)" +.LASF22: + .string "__SIZEOF_LONG_DOUBLE__ 16" +.LASF1688: + .string "GPIO_EVENT_PIN_3 ((uint8_t)0x03U)" +.LASF1884: + .string "FWDGT_PSC_DIV16 ((uint8_t)PSC_PSC(2))" +.LASF692: + .string "OVSCR_OVSS(regval) (BITS(5,8) & ((uint32_t)(regval) << 5))" +.LASF316: + .string "__riscv_c 2000000" +.LASF3098: + .string "EXTI_RTEN_RTEN5 BIT(5)" +.LASF2074: + .string "RCU_APB1EN_WWDGTEN BIT(11)" +.LASF2664: + .string "TIMER_DMACFG_DMATA_CHCTL1 DMACFG_DMATA(7)" +.LASF1368: + .string "FMC_OBKEY REG32((FMC) + 0x08U)" +.LASF2691: + .string "TIMER_DMACFG_DMATC_15TRANSFER DMACFG_DMATC(14)" +.LASF380: + .string "__int20" +.LASF2777: + .string "SMCFG_TRGSEL(regval) (BITS(4, 6) & ((uint32_t)(regval) << 4U))" +.LASF1941: + .string "PMU_LVDT_4 CTL_LVDT(4)" +.LASF734: + .string "BKP_DATA21 REG16((BKP) + 0x6CU)" +.LASF739: + .string "BKP_DATA26 REG16((BKP) + 0x80U)" +.LASF313: + .string "__riscv_i 2000000" +.LASF1641: + .string "AFIO_PCF0_TIMER4CH3_IREMAP BIT(16)" +.LASF2274: + .string "RCU_PREDV0SRC_HXTAL ((uint32_t)0x00000000U)" +.LASF798: + .string "CAN_TMDATA11(canx) REG32((canx) + 0x19CU)" +.LASF1325: + .string "DMA_CHANNEL_CNT_MASK DMA_CHXCNT_CNT" +.LASF2069: + .string "RCU_APB1EN_TIMER2EN BIT(1)" +.LASF2895: + .string "CTL0_PM(regval) (BITS(9,10) & ((uint32_t)(regval) << 9))" +.LASF1086: + .string "CAN_FF_STANDARD ((uint32_t)0x00000000U)" +.LASF1536: + .string "GPIO_ISTAT_ISTAT6 BIT(6)" +.LASF760: + .string "BKP_OCTL_COEN BIT(7)" +.LASF1253: + .string "DMA_CH5CNT(dmax) REG32((dmax) + 0x70U)" +.LASF79: + .string "__SCHAR_WIDTH__ 8" +.LASF2342: + .string "SPI_CTL0_SPIEN BIT(6)" +.LASF591: + .string "ADC_IDATAX_IDATAN BITS(0,15)" +.LASF2596: + .string "TIMER_CHCTL2_CH2NEN BIT(10)" +.LASF1900: + .string "DBG_CTL REG32(DBG + 0x04U)" +.LASF1139: + .string "DACC_L12DH REG32(DAC + 0x24U)" +.LASF3063: + .string "EXTI_INTEN_INTEN8 BIT(8)" +.LASF3207: + .string "EXTI_TRIG_RISING" +.LASF2580: + .string "TIMER_CHCTL1_CH3COMCTL BITS(12,14)" +.LASF1683: + .string "GPIO_PORT_SOURCE_GPIOD ((uint8_t)0x03U)" +.LASF2893: + .string "USART_TRANSMIT_ENABLE CTL0_TEN(1)" +.LASF523: + .string "FMC_BASE (AHB1_BUS_BASE + 0x0000A000U)" +.LASF2367: + .string "SPI_STAT_TRANS BIT(7)" +.LASF2892: + .string "CTL0_TEN(regval) (BIT(3) & ((uint32_t)(regval) << 3))" +.LASF2325: + .string "GD32VF103_SPI_H " +.LASF333: + .string "__IO volatile" +.LASF2003: + .string "RCU_INT_CKMIF BIT(7)" +.LASF1118: + .string "GD32VF103_CRC_H " +.LASF752: + .string "BKP_DATA39 REG16((BKP) + 0xB4U)" +.LASF1459: + .string "OB_WP_18 ((uint32_t)0x00040000U)" +.LASF1194: + .string "DAC_WAVE_BIT_WIDTH_8 DWBW(7)" +.LASF1279: + .string "DMA_CHXCTL_M2M BIT(14)" +.LASF2894: + .string "USART_TRANSMIT_DISABLE CTL0_TEN(0)" +.LASF2459: + .string "SPI_FLAG_TRANS SPI_STAT_TRANS" +.LASF1298: + .string "DMA_FLAG_FTF DMA_INTF_FTFIF" +.LASF1804: + .string "I2C_STAT0_TBE BIT(7)" +.LASF1031: + .string "GET_RFIFOMDATA0_DB2(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF1453: + .string "OB_WP_12 ((uint32_t)0x00001000U)" +.LASF3089: + .string "EXTI_EVEN_EVEN15 BIT(15)" +.LASF1687: + .string "GPIO_EVENT_PIN_2 ((uint8_t)0x02U)" +.LASF2065: + .string "RCU_APB2EN_TIMER0EN BIT(11)" +.LASF208: + .string "__FLT32_MIN_EXP__ (-125)" +.LASF1210: + .string "DAC_LFSR_BITS11_0 DAC_WAVE_BIT_WIDTH_12" +.LASF2968: + .string "__SIZE_T__ " +.LASF1862: + .string "I2C_ARP_ENABLE I2C_CTL0_ARPEN" +.LASF1878: + .string "FWDGT_RLD_RLD BITS(0,11)" +.LASF1745: + .string "GPIO_TIMER2_PARTIAL_REMAP ((uint32_t)0x001A0800U)" +.LASF2088: + .string "RCU_BDCTL_LXTALEN BIT(0)" +.LASF2037: + .string "RCU_APB1RST_SPI1RST BIT(14)" +.LASF2224: + .string "RCU_PREDV0_DIV6 CFG1_PREDV0(5)" +.LASF2062: + .string "RCU_APB2EN_PEEN BIT(6)" +.LASF1679: + .string "GPIO_EVENT_PORT_GPIOE ((uint8_t)0x04U)" +.LASF2363: + .string "SPI_STAT_TXURERR BIT(3)" +.LASF1334: + .string "EXMC (EXMC_BASE)" +.LASF1051: + .string "CAN_LOOPBACK_MODE ((uint8_t)0x01U)" +.LASF385: + .string "char +0" +.LASF1589: + .string "GPIO_BOP_CR11 BIT(27)" +.LASF1155: + .string "DAC_CTL_DWBW1 BITS(24,27)" +.LASF1008: + .string "BT_BS1(regval) (BITS(16,19) & ((uint32_t)(regval) << 16))" +.LASF445: + .string "INT32_MIN (-__INT32_MAX__ - 1)" +.LASF2535: + .string "TIMER_DMAINTEN_CH3DEN BIT(12)" +.LASF751: + .string "BKP_DATA38 REG16((BKP) + 0xB0U)" +.LASF513: + .string "CAN_BASE (APB1_BUS_BASE + 0x00006400U)" +.LASF1951: + .string "PMU_FLAG_RESET_STANDBY ((uint8_t)0x01U)" +.LASF2239: + .string "RCU_PREDV1_DIV4 CFG1_PREDV1(3)" +.LASF2351: + .string "SPI_CTL0_BDEN BIT(15)" +.LASF3114: + .string "EXTI_FTEN_FTEN2 BIT(2)" +.LASF1426: + .string "OB_DEEPSLEEP_RST ((uint8_t)0x00U)" +.LASF2942: + .string "WWDGT_CTL_CNT BITS(0,6)" +.LASF1636: + .string "AFIO_PCF0_TIMER1_REMAP BITS(8, 9)" +.LASF2109: + .string "RCU_CFG1_I2S1SEL BIT(17)" +.LASF1678: + .string "GPIO_EVENT_PORT_GPIOD ((uint8_t)0x03U)" +.LASF1663: + .string "GPIO_MODE_MASK(n) (0xFU << (4U * (n)))" +.LASF2739: + .string "TIMER_CCX_ENABLE ((uint16_t)0x0001U)" +.LASF2435: + .string "I2S_STD_LSB I2SCTL_I2SSTD(2)" +.LASF568: + .string "ADC_CTL0_IWDEN BIT(22)" +.LASF2740: + .string "TIMER_CCX_DISABLE ((uint16_t)0x0000U)" +.LASF3056: + .string "EXTI_INTEN_INTEN1 BIT(1)" +.LASF370: + .string "___int_least16_t_defined 1" +.LASF2747: + .string "TIMER_OC_IDLE_STATE_HIGH ((uint16_t)0x0100)" +.LASF703: + .string "ADC_OVERSAMPLING_RATIO_MUL2 OVSCR_OVSR(0)" +.LASF15: + .string "__FINITE_MATH_ONLY__ 0" +.LASF1259: + .string "DMA_CH6MADDR(dmax) REG32((dmax) + 0x8CU)" +.LASF2846: + .string "USART_CTL0_TEN BIT(3)" +.LASF2237: + .string "RCU_PREDV1_DIV2 CFG1_PREDV1(1)" +.LASF3031: + .string "ECLIC_INT_ATTR_TRIG_LEVEL 0x00" +.LASF2753: + .string "TIMER_OC_MODE_INACTIVE ((uint16_t)0x0020U)" +.LASF1392: + .string "FMC_CTL_OBER BIT(5)" +.LASF1074: + .string "CAN_BT_BS2_1TQ ((uint8_t)0x00U)" +.LASF808: + .string "CAN_RFIFOMP1(canx) REG32((canx) + 0x1C4U)" +.LASF1934: + .string "PMU_CS_LVDF BIT(2)" +.LASF926: + .string "CAN_RFIFO0_RFD0 BIT(5)" +.LASF2903: + .string "USART_WL_8BIT CTL0_WL(0)" +.LASF3030: + .string "ECLIC_INT_ATTR_SHV 0x01" +.LASF2909: + .string "USART_STB_1_5BIT CTL1_STB(3)" +.LASF212: + .string "__FLT32_DECIMAL_DIG__ 9" +.LASF2126: + .string "CFG1_REG_OFFSET 0x2CU" +.LASF3158: + .string "EXTI_PD_PD8 BIT(8)" +.LASF2683: + .string "TIMER_DMACFG_DMATC_7TRANSFER DMACFG_DMATC(6)" +.LASF1429: + .string "OB_BOOT_B0 ((uint8_t)0x08U)" +.LASF562: + .string "ADC_CTL0_WDSC BIT(9)" +.LASF705: + .string "ADC_OVERSAMPLING_RATIO_MUL8 OVSCR_OVSR(2)" +.LASF367: + .string "___int32_t_defined 1" +.LASF1969: + .string "RCU_CTL_IRC8MEN BIT(0)" +.LASF1182: + .string "CTL_DWM(regval) (BITS(6,7) & ((uint32_t)(regval) << 6))" +.LASF230: + .string "__FLT64_MIN__ 2.22507385850720138309023271733240406e-308F64" +.LASF634: + .string "ADC0_1_EXTTRIG_INSERTED_T1_CH0 CTL1_ETSIC(3)" +.LASF1500: + .string "GPIO_CTL0_MD1 BITS(4, 5)" +.LASF246: + .string "__FLT128_EPSILON__ 1.92592994438723585305597794258492732e-34F128" +.LASF2735: + .string "TIMER_CH_0 ((uint16_t)0x0000U)" +.LASF3153: + .string "EXTI_PD_PD3 BIT(3)" +.LASF2043: + .string "RCU_APB1RST_I2C0RST BIT(21)" +.LASF2162: + .string "RCU_CKADC_CKAPB2_DIV16 ((uint32_t)0x00000007U)" +.LASF2015: + .string "RCU_INT_PLLSTBIC BIT(20)" +.LASF1648: + .string "AFIO_EXTI3_SS BITS(12, 15)" +.LASF2772: + .string "TIMER_IC_SELECTION_ITS ((uint16_t)0x0003U)" +.LASF1492: + .string "AFIO_PCF0 REG32(AFIO + 0x04U)" +.LASF633: + .string "ADC0_1_EXTTRIG_INSERTED_T1_TRGO CTL1_ETSIC(2)" +.LASF493: + .string "REG8(addr) (*(volatile uint8_t *)(uint32_t)(addr))" +.LASF2935: + .string "USART_IRLP_LOW CTL2_IRLP(1)" +.LASF1891: + .string "FWDGT_KEY_RELOAD ((uint16_t)0xAAAAU)" +.LASF1570: + .string "GPIO_BOP_BOP8 BIT(8)" +.LASF2388: + .string "SPI_TRANSMODE_FULLDUPLEX ((uint32_t)0x00000000U)" +.LASF2511: + .string "TIMER_CTL1_ISO1 BIT(10)" +.LASF2799: + .string "TIMER_ENCODER_MODE2 SMCFG_SMC(3)" +.LASF423: + .string "__int_least16_t_defined 1" +.LASF1169: + .string "DACC_R8DH_DAC0_DH BITS(0,7)" +.LASF2226: + .string "RCU_PREDV0_DIV8 CFG1_PREDV0(7)" +.LASF2990: + .string "__WCHAR_T " +.LASF409: + .string "_INT16_T_DECLARED " +.LASF88: + .string "__INTMAX_MAX__ 0x7fffffffffffffffLL" +.LASF1189: + .string "DAC_WAVE_BIT_WIDTH_3 DWBW(2)" +.LASF1046: + .string "CAN_ERRN_5 ERR_ERRN(5U)" +.LASF919: + .string "CAN_TSTAT_TME2 BIT(28)" +.LASF1602: + .string "GPIO_BC_CR8 BIT(8)" +.LASF2576: + .string "TIMER_CHCTL1_CH2COMCEN BIT(7)" +.LASF2155: + .string "RCU_APB2_CKAHB_DIV8 CFG0_APB2PSC(6)" +.LASF90: + .string "__UINTMAX_MAX__ 0xffffffffffffffffULL" +.LASF3175: + .string "long int" +.LASF615: + .string "ADC_DAUL_REGULAL_FOLLOWUP_FAST CTL0_SYNCM(7)" +.LASF2116: + .string "APB1EN_REG_OFFSET 0x1CU" +.LASF1768: + .string "I2C_CKCFG(i2cx) REG32((i2cx) + 0x1CU)" +.LASF2461: + .string "I2S_FLAG_RBNE SPI_STAT_RBNE" +.LASF2176: + .string "RCU_PLL_MUL11 CFG0_PLLMF(9)" +.LASF329: + .string "GD32VF103_EXTI_H " +.LASF378: + .string "char" +.LASF1635: + .string "AFIO_PCF0_TIMER0_REMAP BITS(6, 7)" +.LASF1341: + .string "EXMC_SNCTL_NRW BITS(4,5)" +.LASF32: + .string "__SIZE_TYPE__ unsigned int" +.LASF2075: + .string "RCU_APB1EN_SPI1EN BIT(14)" +.LASF881: + .string "CAN_RFIFOMDATA1(canx,bank) REG32((canx) + 0x1BCU + ((bank) * 0x10U))" +.LASF2587: + .string "TIMER_CHCTL2_CH0P BIT(1)" +.LASF392: + .string "_INT32_EQ_LONG " +.LASF2344: + .string "SPI_CTL0_SWNSS BIT(8)" +.LASF1070: + .string "CAN_BT_BS1_13TQ ((uint8_t)0x0CU)" +.LASF2198: + .string "CFG0_USBPSC(regval) (BITS(22,23) & ((uint32_t)(regval) << 22))" +.LASF2748: + .string "TIMER_OC_IDLE_STATE_LOW ((uint16_t)0x0000)" +.LASF3069: + .string "EXTI_INTEN_INTEN14 BIT(14)" +.LASF908: + .string "CAN_TSTAT_MAL1 BIT(10)" +.LASF31: + .string "__SIZEOF_POINTER__ 4" +.LASF1924: + .string "PMU_CS REG32((PMU) + 0x04U)" +.LASF598: + .string "ADC_OVSCR_DRES BITS(12,13)" +.LASF3221: + .string "exti_event_disable" +.LASF217: + .string "__FLT32_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F32" +.LASF1967: + .string "RCU_CFG1 REG32(RCU + 0x2CU)" +.LASF1312: + .string "DMA_PERIPHERAL_WIDTH_16BIT CHCTL_PWIDTH(1U)" +.LASF2756: + .string "TIMER_OC_MODE_HIGH ((uint16_t)0x0050U)" +.LASF686: + .string "ADC_RESOLUTION_12B OVSCR_DRES(0)" +.LASF2762: + .string "TIMER_OC_FAST_DISABLE ((uint16_t)0x0000)" +.LASF1674: + .string "GPIO_OSPEED_50MHZ ((uint8_t)0x03U)" +.LASF687: + .string "ADC_RESOLUTION_10B OVSCR_DRES(1)" +.LASF2120: + .string "APB2RST_REG_OFFSET 0x0CU" +.LASF2873: + .string "USART_CTL2_DENT BIT(7)" +.LASF2675: + .string "TIMER_DMACFG_DMATA_DMACFG DMACFG_DMATA(18)" +.LASF2362: + .string "SPI_STAT_I2SCH BIT(2)" +.LASF2891: + .string "USART_RECEIVE_DISABLE CTL0_REN(0)" +.LASF2510: + .string "TIMER_CTL1_ISO0N BIT(9)" +.LASF2564: + .string "TIMER_CHCTL0_CH1COMFEN BIT(10)" +.LASF2696: + .string "TIMER_EVENT_SRC_CH0G ((uint16_t)0x0002U)" +.LASF663: + .string "ADC_CHANNEL_2 ((uint8_t)0x02U)" +.LASF1732: + .string "GPIO_PIN_15 BIT(15)" +.LASF1406: + .string "FMC_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF1104: + .string "CAN_INT_TME CAN_INTEN_TMEIE" +.LASF517: + .string "AFIO_BASE (APB2_BUS_BASE + 0x00000000U)" +.LASF1774: + .string "I2C_CTL0_ARPEN BIT(4)" +.LASF2039: + .string "RCU_APB1RST_USART1RST BIT(17)" +.LASF2986: + .string "__WCHAR_T__ " +.LASF2272: + .string "RCU_PLL2_MUL16 CFG1_PLL2MF(14)" +.LASF1563: + .string "GPIO_BOP_BOP1 BIT(1)" +.LASF2643: + .string "TIMER_FLAG_CH0O TIMER_INTF_CH0OF" +.LASF708: + .string "ADC_OVERSAMPLING_RATIO_MUL64 OVSCR_OVSR(5)" +.LASF1043: + .string "CAN_ERRN_2 ERR_ERRN(2U)" +.LASF1496: + .string "AFIO_EXTISS3 REG32(AFIO + 0x14U)" +.LASF3129: + .string "EXTI_FTEN_FTEN17 BIT(17)" +.LASF2166: + .string "CFG0_PLLMF(regval) (BITS(18,21) & ((uint32_t)(regval) << 18))" +.LASF2265: + .string "RCU_PLL2_MUL9 CFG1_PLL2MF(7)" +.LASF1996: + .string "RCU_INT_IRC40KSTBIF BIT(0)" +.LASF2468: + .string "GD32VF103_TIMER_H " +.LASF1018: + .string "TMDATA0_DB1(regval) (BITS(8,15) & ((uint32_t)(regval) << 8))" +.LASF1915: + .string "DBG_CTL_TIMER5_HOLD BIT(19)" +.LASF2955: + .string "_STDDEF_H_ " +.LASF722: + .string "BKP_DATA9 REG16((BKP) + 0x28U)" +.LASF3043: + .string "ECLIC_GROUP_LEVEL0_PRIO4 0" +.LASF2565: + .string "TIMER_CHCTL0_CH1COMSEN BIT(11)" +.LASF841: + .string "CAN_F25DATA0(canx) REG32((canx) + 0x308U)" +.LASF172: + .string "__DBL_HAS_DENORM__ 1" +.LASF1595: + .string "GPIO_BC_CR1 BIT(1)" +.LASF1964: + .string "RCU_BDCTL REG32(RCU + 0x20U)" +.LASF990: + .string "CAN_FMCFG_FMOD(regval) BIT(regval)" +.LASF1958: + .string "RCU_INT REG32(RCU + 0x08U)" +.LASF2077: + .string "RCU_APB1EN_USART1EN BIT(17)" +.LASF2463: + .string "I2S_FLAG_CH SPI_STAT_I2SCH" +.LASF2076: + .string "RCU_APB1EN_SPI2EN BIT(15)" +.LASF921: + .string "CAN_TSTAT_TMLS1 BIT(30)" +.LASF479: + .string "WINT_MAX (__WINT_MAX__)" +.LASF856: + .string "CAN_F12DATA1(canx) REG32((canx) + 0x2A4U)" +.LASF1016: + .string "TMI_SFID(regval) (BITS(21,31) & ((uint32_t)(regval) << 21))" +.LASF862: + .string "CAN_F18DATA1(canx) REG32((canx) + 0x2D4U)" +.LASF1443: + .string "OB_WP_2 ((uint32_t)0x00000004U)" +.LASF2947: + .string "WWDGT_STAT_EWIF BIT(0)" +.LASF1661: + .string "AFIO_PCF1_EXMC_NADV BIT(10)" +.LASF2100: + .string "RCU_RSTSCK_FWDGTRSTF BIT(29)" +.LASF3162: + .string "EXTI_PD_PD12 BIT(12)" +.LASF1023: + .string "TMDATA1_DB6(regval) (BITS(16,23) & ((uint32_t)(regval) << 16))" +.LASF1680: + .string "GPIO_PORT_SOURCE_GPIOA ((uint8_t)0x00U)" +.LASF200: + .string "__FLT16_MIN__ 6.10351562500000000000000000000000000e-5F16" +.LASF2612: + .string "TIMER_CCHP_BRKEN BIT(12)" +.LASF2007: + .string "RCU_INT_HXTALSTBIE BIT(11)" +.LASF564: + .string "ADC_CTL0_DISRC BIT(11)" +.LASF2215: + .string "RCU_RTCSRC_LXTAL BDCTL_RTCSRC(1)" +.LASF1235: + .string "DMA_CH0MADDR(dmax) REG32((dmax) + 0x14U)" +.LASF815: + .string "CAN_FW(canx) REG32((canx) + 0x21CU)" +.LASF1631: + .string "AFIO_PCF0_I2C0_REMAP BIT(1)" +.LASF2484: + .string "TIMER_CHCTL2(timerx) REG32((timerx) + 0x20U)" +.LASF2815: + .string "TIMER_CHVSEL_ENABLE ((uint16_t)TIMER_CFG_OUTSEL)" +.LASF2209: + .string "RCU_CKOUT0SRC_CKPLL1 CFG0_CKOUT0SEL(8)" +.LASF2446: + .string "SPI_I2S_INT_ERR ((uint8_t)0x02U)" +.LASF807: + .string "CAN_RFIFOMI1(canx) REG32((canx) + 0x1C0U)" +.LASF3155: + .string "EXTI_PD_PD5 BIT(5)" +.LASF2241: + .string "RCU_PREDV1_DIV6 CFG1_PREDV1(5)" +.LASF831: + .string "CAN_F15DATA0(canx) REG32((canx) + 0x2B8U)" +.LASF1559: + .string "GPIO_OCTL_OCTL13 BIT(13)" +.LASF1818: + .string "I2C_STAT1_DUMODF BIT(7)" +.LASF531: + .string "ADC_STAT(adcx) REG32((adcx) + 0x00U)" +.LASF721: + .string "BKP_DATA8 REG16((BKP) + 0x24U)" +.LASF2911: + .string "USART_LBLEN_10B CTL1_LBLEN(0)" +.LASF428: + .string "__int_fast32_t_defined 1" +.LASF1548: + .string "GPIO_OCTL_OCTL2 BIT(2)" +.LASF57: + .string "__INT_FAST8_TYPE__ int" +.LASF1472: + .string "OB_WP_31 ((uint32_t)0x80000000U)" +.LASF1814: + .string "I2C_STAT1_TR BIT(2)" +.LASF1167: + .string "DACC_L12DH_DAC0_DH BITS(4,15)" +.LASF186: + .string "__LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L" +.LASF1045: + .string "CAN_ERRN_4 ERR_ERRN(4U)" +.LASF956: + .string "CAN_BT_SCMOD BIT(31)" +.LASF2570: + .string "TIMER_CHCTL0_CH1CAPPSC BITS(10,11)" +.LASF1901: + .string "DBG_ID_ID_CODE BITS(0,31)" +.LASF650: + .string "WDLT_WDLT(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF1141: + .string "DAC0_DO REG32(DAC + 0x2CU)" +.LASF2306: + .string "RTC_PSCH_PSC BITS(0,3)" +.LASF1172: + .string "DAC1_DO_DAC1_DO BITS(0,11)" +.LASF3102: + .string "EXTI_RTEN_RTEN9 BIT(9)" +.LASF720: + .string "BKP_DATA7 REG16((BKP) + 0x20U)" +.LASF2136: + .string "RCU_AHB_CKSYS_DIV1 CFG0_AHBPSC(0)" +.LASF1940: + .string "PMU_LVDT_3 CTL_LVDT(3)" +.LASF887: + .string "CAN_CTL_AWU BIT(5)" +.LASF1423: + .string "OB_FWDGT_SW ((uint8_t)0x01U)" +.LASF1331: + .string "ECLIC_PRIGROUP_LEVEL4_PRIO0 4" +.LASF2520: + .string "TIMER_SMCFG_ETPSC BITS(12,13)" +.LASF453: + .string "UINT64_MAX (__UINT64_MAX__)" +.LASF1797: + .string "I2C_DATA_TRB BITS(0,7)" +.LASF1866: + .string "I2C_DTCY_2 ((uint32_t)0x00000000U)" +.LASF1457: + .string "OB_WP_16 ((uint32_t)0x00010000U)" +.LASF1616: + .string "GPIO_LOCK_LK6 BIT(6)" +.LASF736: + .string "BKP_DATA23 REG16((BKP) + 0x74U)" +.LASF3025: + .string "ECLIC_INFO_OFFSET 0x4" +.LASF884: + .string "CAN_CTL_TFO BIT(2)" +.LASF2141: + .string "RCU_AHB_CKSYS_DIV64 CFG0_AHBPSC(12)" +.LASF2610: + .string "TIMER_CCHP_IOS BIT(10)" +.LASF3019: + .string "_AC(X,Y) (X ##Y)" +.LASF1652: + .string "AFIO_EXTI7_SS BITS(12, 15)" +.LASF2403: + .string "SPI_PSC_2 CTL0_PSC(0)" +.LASF896: + .string "CAN_STAT_SLPIF BIT(4)" +.LASF59: + .string "__INT_FAST32_TYPE__ int" +.LASF2826: + .string "USART_CTL0(usartx) REG32((usartx) + (0x0000000CU))" +.LASF710: + .string "ADC_OVERSAMPLING_RATIO_MUL256 OVSCR_OVSR(7)" +.LASF753: + .string "BKP_DATA40 REG16((BKP) + 0xB8U)" +.LASF3135: + .string "EXTI_SWIEV_SWIEV4 BIT(4)" +.LASF2709: + .string "TIMER_PSC_RELOAD_UPDATE ((uint32_t)0x00000000U)" +.LASF1432: + .string "FMC_USPC ((uint8_t)0xBBU)" +.LASF2022: + .string "RCU_APB2RST_PCRST BIT(4)" +.LASF715: + .string "BKP_DATA2 REG16((BKP) + 0x0CU)" +.LASF1224: + .string "DAC_TRIANGLE_AMPLITUDE_1023 DAC_WAVE_BIT_WIDTH_10" +.LASF16: + .string "__SIZEOF_INT__ 4" +.LASF1487: + .string "GPIO_OCTL(gpiox) REG32((gpiox) + 0x0CU)" +.LASF1049: + .string "CAN_STATE_PENDING ((uint32_t)0x00000000U)" +.LASF384: + .string "unsigned +0" +.LASF28: + .string "__ORDER_PDP_ENDIAN__ 3412" +.LASF151: + .string "__FLT_DECIMAL_DIG__ 9" +.LASF1256: + .string "DMA_CH6CTL(dmax) REG32((dmax) + 0x80U)" +.LASF1581: + .string "GPIO_BOP_CR3 BIT(19)" +.LASF3200: + .string "EXTI_16" +.LASF99: + .string "__INT64_MAX__ 0x7fffffffffffffffLL" +.LASF2005: + .string "RCU_INT_LXTALSTBIE BIT(9)" +.LASF2278: + .string "RCU_I2S2SRC_CKSYS ((uint32_t)0x00000000U)" +.LASF2884: + .string "USART_BIT_POS2(val) (((uint32_t)(val) & (0x001F0000U)) >> 16)" +.LASF879: + .string "CAN_RFIFOMP(canx,bank) REG32((canx) + 0x1B4U + ((bank) * 0x10U))" +.LASF675: + .string "ADC_CHANNEL_14 ((uint8_t)0x0EU)" +.LASF2052: + .string "RCU_AHBEN_SRAMSPEN BIT(2)" +.LASF594: + .string "ADC_OVSCR_OVSEN BIT(0)" +.LASF2712: + .string "CTL0_CKDIV(regval) ((uint16_t)(BITS(8, 9) & ((uint32_t)(regval) << 8U)))" +.LASF2479: + .string "TIMER_DMAINTEN(timerx) REG32((timerx) + 0x0CU)" +.LASF417: + .string "__int64_t_defined 1" +.LASF724: + .string "BKP_DATA11 REG16((BKP) + 0x44U)" +.LASF1982: + .string "RCU_CTL_PLL2STB BIT(29)" +.LASF2764: + .string "TIMER_OC_CLEAR_DISABLE ((uint16_t)0x0000U)" +.LASF379: + .string "short" +.LASF1357: + .string "EXMC_MEMORY_TYPE_SRAM SNCTL_NRTP(0)" +.LASF1146: + .string "DAC_CTL_DTSEL0 BITS(3,5)" +.LASF1402: + .string "FMC_OBSTAT_DATA BITS(10,25)" +.LASF772: + .string "BKP_DATA_GET(regval) GET_BITS((uint32_t)(regval), 0, 15)" +.LASF2807: + .string "TIMER_EXT_TRI_PSC_OFF SMCFG_ETPSC(0)" +.LASF2243: + .string "RCU_PREDV1_DIV8 CFG1_PREDV1(7)" +.LASF992: + .string "CAN_FAFIFOR_FAF(regval) BIT(regval)" +.LASF2950: + .string "WWDGT_CFG_PSC_DIV2 CFG_PSC(1)" +.LASF3228: + .string "GNU C17 10.2.0 -march=rv32imac -mabi=ilp32 -mcmodel=medany -msmall-data-limit= 8 -march=rv32imac -g3 -O0" +.LASF1187: + .string "DAC_WAVE_BIT_WIDTH_1 DWBW(0)" +.LASF1396: + .string "FMC_CTL_ERRIE BIT(10)" +.LASF749: + .string "BKP_DATA36 REG16((BKP) + 0xA8U)" +.LASF871: + .string "CAN_F27DATA1(canx) REG32((canx) + 0x31CU)" +.LASF735: + .string "BKP_DATA22 REG16((BKP) + 0x70U)" +.LASF1013: + .string "FDATA_MASK_LOW(regval) (BITS(0,15) & ((uint32_t)(regval) << 0))" +.LASF193: + .string "__FLT16_MIN_EXP__ (-13)" +.LASF1702: + .string "GPIO_PIN_SOURCE_1 ((uint8_t)0x01U)" +.LASF2583: + .string "TIMER_CHCTL1_CH2CAPFLT BITS(4,7)" +.LASF1545: + .string "GPIO_ISTAT_ISTAT15 BIT(15)" +.LASF2345: + .string "SPI_CTL0_SWNSSEN BIT(9)" +.LASF2425: + .string "I2S_MCKOUT_DISABLE ((uint32_t)0x00000000U)" +.LASF592: + .string "ADC_RDATA_RDATA BITS(0,15)" +.LASF939: + .string "CAN_INTEN_PERRIE BIT(9)" +.LASF1654: + .string "AFIO_EXTI9_SS BITS(4, 7)" +.LASF1999: + .string "RCU_INT_HXTALSTBIF BIT(3)" +.LASF359: + .string "__SVID_VISIBLE 0" +.LASF1983: + .string "RCU_CFG0_SCS BITS(0,1)" +.LASF2552: + .string "TIMER_SWEVG_CH1G BIT(2)" +.LASF3134: + .string "EXTI_SWIEV_SWIEV3 BIT(3)" +.LASF1542: + .string "GPIO_ISTAT_ISTAT12 BIT(12)" +.LASF748: + .string "BKP_DATA35 REG16((BKP) + 0xA4U)" +.LASF1247: + .string "DMA_CH3MADDR(dmax) REG32((dmax) + 0x50U)" +.LASF420: + .string "_INTPTR_T_DECLARED " +.LASF2119: + .string "APB1RST_REG_OFFSET 0x10U" +.LASF53: + .string "__UINT_LEAST8_TYPE__ unsigned char" +.LASF1766: + .string "I2C_STAT0(i2cx) REG32((i2cx) + 0x14U)" +.LASF2578: + .string "TIMER_CHCTL1_CH3COMFEN BIT(10)" +.LASF2142: + .string "RCU_AHB_CKSYS_DIV128 CFG0_AHBPSC(13)" +.LASF823: + .string "CAN_F7DATA0(canx) REG32((canx) + 0x278U)" +.LASF2106: + .string "RCU_CFG1_PLL1MF BITS(8,11)" +.LASF27: + .string "__ORDER_BIG_ENDIAN__ 4321" +.LASF723: + .string "BKP_DATA10 REG16((BKP) + 0x40U)" +.LASF940: + .string "CAN_INTEN_BOIE BIT(10)" +.LASF1700: + .string "GPIO_EVENT_PIN_15 ((uint8_t)0x0FU)" +.LASF1671: + .string "GPIO_MODE_AF_PP ((uint8_t)0x18U)" +.LASF2609: + .string "TIMER_CCHP_PROT BITS(8,9)" +.LASF1227: + .string "GD32VF103_DMA_H " +.LASF221: + .string "__FLT64_MANT_DIG__ 53" +.LASF1158: + .string "DAC_SWT_SWTR1 BIT(1)" +.LASF1893: + .string "FWDGT_PSC_TIMEOUT ((uint32_t)0x000FFFFFU)" +.LASF2481: + .string "TIMER_SWEVG(timerx) REG32((timerx) + 0x14U)" +.LASF1088: + .string "CAN_FIFO0 ((uint8_t)0x00U)" +.LASF1889: + .string "FWDGT_WRITEACCESS_ENABLE ((uint16_t)0x5555U)" +.LASF2579: + .string "TIMER_CHCTL1_CH3COMSEN BIT(11)" +.LASF94: + .string "__SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)" +.LASF1828: + .string "I2C_REGIDX_BIT2(regidx,bitpos,regidx2,bitpos2) (((uint32_t)(regidx2) << 22) | (uint32_t)((bitpos2) << 16) | (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos)))" +.LASF754: + .string "BKP_DATA41 REG16((BKP) + 0xBCU)" +.LASF2249: + .string "RCU_PREDV1_DIV14 CFG1_PREDV1(13)" +.LASF1955: + .string "RCU RCU_BASE" +.LASF2629: + .string "TIMER_INT_FLAG_CH1 TIMER_INT_CH1" +.LASF252: + .string "__FLT32X_DIG__ 15" +.LASF2514: + .string "TIMER_CTL1_ISO2N BIT(13)" +.LASF2703: + .string "CTL0_CAM(regval) ((uint16_t)(BITS(5, 6) & ((uint32_t)(regval) << 5U)))" +.LASF2364: + .string "SPI_STAT_CRCERR BIT(4)" +.LASF1922: + .string "PMU PMU_BASE" +.LASF747: + .string "BKP_DATA34 REG16((BKP) + 0xA0U)" +.LASF2495: + .string "TIMER_DMATB(timerx) REG32((timerx) + 0x4CU)" +.LASF2426: + .string "I2S_MCKOUT_ENABLE SPI_I2SPSC_MCKOEN" +.LASF619: + .string "ADC_DATAALIGN_LEFT ADC_CTL1_DAL" +.LASF369: + .string "___int_least8_t_defined 1" +.LASF2157: + .string "RCU_CKADC_CKAPB2_DIV2 ((uint32_t)0x00000000U)" +.LASF2059: + .string "RCU_APB2EN_PBEN BIT(3)" +.LASF802: + .string "CAN_TMDATA12(canx) REG32((canx) + 0x1ACU)" +.LASF670: + .string "ADC_CHANNEL_9 ((uint8_t)0x09U)" +.LASF1781: + .string "I2C_CTL0_POAP BIT(11)" +.LASF2440: + .string "SPI_DMA_TRANSMIT ((uint8_t)0x00U)" +.LASF174: + .string "__DBL_HAS_QUIET_NAN__ 1" +.LASF1623: + .string "GPIO_LOCK_LK13 BIT(13)" +.LASF397: + .string "__FAST8 " +.LASF1932: + .string "PMU_CS_WUF BIT(0)" +.LASF648: + .string "IOFFX_IOFF(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF1675: + .string "GPIO_EVENT_PORT_GPIOA ((uint8_t)0x00U)" +.LASF572: + .string "ADC_CTL1_CLB BIT(2)" +.LASF1587: + .string "GPIO_BOP_CR9 BIT(25)" +.LASF630: + .string "CTL1_ETSIC(regval) (BITS(12,14) & ((uint32_t)(regval) << 12))" +.LASF2192: + .string "RCU_PLL_MUL27 (PLLMF_4 | CFG0_PLLMF(10))" +.LASF530: + .string "ADC1 (ADC_BASE + 0x400U)" +.LASF2366: + .string "SPI_STAT_RXORERR BIT(6)" +.LASF154: + .string "__FLT_MIN__ 1.17549435082228750796873653722224568e-38F" +.LASF2283: + .string "RCU_DEEPSLEEP_V_1_0 DSV_DSLPVS(2)" +.LASF2280: + .string "DSV_DSLPVS(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF2792: + .string "TIMER_TRI_OUT_SRC_O1CPRE CTL1_MMC(5)" +.LASF3208: + .string "EXTI_TRIG_FALLING" +.LASF2637: + .string "TIMER_FLAG_CH1 TIMER_INTF_CH1IF" +.LASF1114: + .string "CAN_INT_ERRN CAN_INTEN_ERRNIE" +.LASF1065: + .string "CAN_BT_BS1_8TQ ((uint8_t)0x07U)" +.LASF310: + .string "__riscv_float_abi_soft 1" +.LASF2260: + .string "RCU_PLL1_MUL15 CFG1_PLL1MF(13)" +.LASF1233: + .string "DMA_CH0CNT(dmax) REG32((dmax) + 0x0CU)" +.LASF2831: + .string "USART_STAT_FERR BIT(1)" +.LASF2793: + .string "TIMER_TRI_OUT_SRC_O2CPRE CTL1_MMC(6)" +.LASF1471: + .string "OB_WP_30 ((uint32_t)0x40000000U)" +.LASF2207: + .string "RCU_CKOUT0SRC_HXTAL CFG0_CKOUT0SEL(6)" +.LASF2716: + .string "TIMER_SP_MODE_SINGLE TIMER_CTL0_SPM" +.LASF239: + .string "__FLT128_MIN_10_EXP__ (-4931)" +.LASF430: + .string "INTPTR_MIN (-__INTPTR_MAX__ - 1)" +.LASF1637: + .string "AFIO_PCF0_TIMER2_REMAP BITS(10, 11)" +.LASF1839: + .string "I2C_TRANSMITTER ((uint32_t)0xFFFFFFFEU)" +.LASF96: + .string "__INT8_MAX__ 0x7f" +.LASF709: + .string "ADC_OVERSAMPLING_RATIO_MUL128 OVSCR_OVSR(6)" +.LASF2778: + .string "TIMER_SMCFG_TRGSEL_ITI0 SMCFG_TRGSEL(0)" +.LASF1656: + .string "AFIO_EXTI11_SS BITS(12, 15)" +.LASF520: + .string "ADC_BASE (APB2_BUS_BASE + 0x00002400U)" +.LASF2313: + .string "RTC_ALRML_ALRM BITS(0,15)" +.LASF546: + .string "ADC_IDATA0(adcx) REG32((adcx) + 0x3CU)" +.LASF2336: + .string "SPI_I2SCTL(spix) REG32((spix) + 0x1CU)" +.LASF1649: + .string "AFIO_EXTI4_SS BITS(0, 3)" +.LASF2147: + .string "RCU_APB1_CKAHB_DIV2 CFG0_APB1PSC(4)" +.LASF906: + .string "CAN_TSTAT_MTF1 BIT(8)" +.LASF1664: + .string "GPIO_MODE_AIN ((uint8_t)0x00U)" +.LASF518: + .string "EXTI_BASE (APB2_BUS_BASE + 0x00000400U)" +.LASF2421: + .string "I2S_FRAMEFORMAT_DT16B_CH16B I2SCTL_DTLEN(0)" +.LASF1071: + .string "CAN_BT_BS1_14TQ ((uint8_t)0x0DU)" +.LASF1384: + .string "FMC_STAT_BUSY BIT(0)" +.LASF2296: + .string "RTC_ALRML REG32(RTC + 0x24U)" +.LASF2542: + .string "TIMER_INTF_CH3IF BIT(4)" +.LASF3061: + .string "EXTI_INTEN_INTEN6 BIT(6)" +.LASF595: + .string "ADC_OVSCR_OVSR BITS(2,4)" +.LASF1501: + .string "GPIO_CTL0_CTL1 BITS(6, 7)" +.LASF1997: + .string "RCU_INT_LXTALSTBIF BIT(1)" +.LASF3171: + .string "signed char" +.LASF163: + .string "__DBL_MIN_10_EXP__ (-307)" +.LASF2600: + .string "TIMER_CNT_CNT BITS(0,15)" +.LASF611: + .string "ADC_DAUL_INSERTED_PARALLEL_REGULAL_FOLLOWUP_FAST CTL0_SYNCM(3)" +.LASF236: + .string "__FLT128_MANT_DIG__ 113" +.LASF1726: + .string "GPIO_PIN_9 BIT(9)" +.LASF134: + .string "__UINT_FAST32_MAX__ 0xffffffffU" +.LASF2033: + .string "RCU_APB1RST_TIMER4RST BIT(3)" +.LASF628: + .string "ADC0_1_EXTTRIG_REGULAR_EXTI_11 CTL1_ETSRC(6)" +.LASF1968: + .string "RCU_DSV REG32(RCU + 0x34U)" +.LASF1001: + .string "CAN_BIT_POS1(val) ((uint32_t)(val) & 0x1FU)" +.LASF43: + .string "__INT32_TYPE__ long int" +.LASF2540: + .string "TIMER_INTF_CH1IF BIT(2)" +.LASF393: + .string "__INT8 \"hh\"" +.LASF2167: + .string "RCU_PLL_MUL2 CFG0_PLLMF(0)" +.LASF1640: + .string "AFIO_PCF0_PD01_REMAP BIT(15)" +.LASF2809: + .string "TIMER_EXT_TRI_PSC_DIV4 SMCFG_ETPSC(2)" +.LASF498: + .string "SRAM_BASE ((uint32_t)0x20000000U)" +.LASF244: + .string "__FLT128_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F128" +.LASF2913: + .string "CTL1_CLEN(regval) (BIT(8) & ((uint32_t)(regval) << 8))" +.LASF853: + .string "CAN_F9DATA1(canx) REG32((canx) + 0x28CU)" +.LASF1143: + .string "DAC_CTL_DEN0 BIT(0)" +.LASF2418: + .string "I2S_AUDIOSAMPLE_96K ((uint32_t)96000U)" +.LASF434: + .string "INT8_MAX (__INT8_MAX__)" +.LASF3167: + .string "EXTI_PD_PD17 BIT(17)" +.LASF541: + .string "ADC_WDLT(adcx) REG32((adcx) + 0x28U)" +.LASF1066: + .string "CAN_BT_BS1_9TQ ((uint8_t)0x08U)" +.LASF1593: + .string "GPIO_BOP_CR15 BIT(31)" +.LASF121: + .string "__UINT32_C(c) c ## UL" +.LASF1491: + .string "AFIO_EC REG32(AFIO + 0x00U)" +.LASF2452: + .string "I2S_INT_FLAG_TXURERR ((uint8_t)0x05U)" +.LASF1627: + .string "AFIO_EC_PIN BITS(0, 3)" +.LASF77: + .string "__PTRDIFF_MAX__ 0x7fffffff" +.LASF2678: + .string "TIMER_DMACFG_DMATC_2TRANSFER DMACFG_DMATC(1)" +.LASF1566: + .string "GPIO_BOP_BOP4 BIT(4)" +.LASF1930: + .string "PMU_CTL_LVDT BITS(5,7)" +.LASF2806: + .string "SMCFG_ETPSC(regval) (BITS(12, 13) & ((uint32_t)(regval) << 12U))" +.LASF1533: + .string "GPIO_ISTAT_ISTAT3 BIT(3)" +.LASF1713: + .string "GPIO_PIN_SOURCE_12 ((uint8_t)0x0CU)" +.LASF2361: + .string "SPI_STAT_TBE BIT(1)" +.LASF3181: + .string "RESET" +.LASF389: + .string "int +2" +.LASF13: + .string "__ATOMIC_ACQ_REL 4" +.LASF2267: + .string "RCU_PLL2_MUL11 CFG1_PLL2MF(9)" +.LASF2163: + .string "RCU_PLLSRC_IRC8M_DIV2 ((uint32_t)0x00000000U)" +.LASF2385: + .string "SPI_SLAVE ((uint32_t)0x00000000U)" +.LASF2482: + .string "TIMER_CHCTL0(timerx) REG32((timerx) + 0x18U)" +.LASF2290: + .string "RTC_PSCL REG32(RTC + 0x0CU)" +.LASF220: + .string "__FLT32_HAS_QUIET_NAN__ 1" +.LASF1084: + .string "CAN_MAILBOX2 ((uint8_t)0x02U)" +.LASF8: + .string "__VERSION__ \"10.2.0\"" +.LASF185: + .string "__LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L" +.LASF48: + .string "__UINT64_TYPE__ long long unsigned int" +.LASF1062: + .string "CAN_BT_BS1_5TQ ((uint8_t)0x04U)" +.LASF875: + .string "CAN_TMDATA1(canx,bank) REG32((canx) + 0x18CU + ((bank) * 0x10U))" +.LASF461: + .string "INT_FAST16_MAX (__INT_FAST16_MAX__)" +.LASF997: + .string "CAN_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF2548: + .string "TIMER_INTF_CH2OF BIT(11)" +.LASF1415: + .string "FMC_CTL_REG_OFFSET 0x10U" +.LASF2707: + .string "TIMER_COUNTER_CENTER_BOTH CTL0_CAM(3)" +.LASF1657: + .string "AFIO_EXTI12_SS BITS(0, 3)" +.LASF1162: + .string "DAC1_R12DH_DAC1_DH BITS(0,11)" +.LASF1374: + .string "FMC_PID REG32((FMC) + 0x100U)" +.LASF3046: + .string "ECLIC_GROUP_LEVEL3_PRIO1 3" +.LASF3120: + .string "EXTI_FTEN_FTEN8 BIT(8)" +.LASF515: + .string "PMU_BASE (APB1_BUS_BASE + 0x00007000U)" +.LASF3060: + .string "EXTI_INTEN_INTEN5 BIT(5)" +.LASF1719: + .string "GPIO_PIN_2 BIT(2)" +.LASF983: + .string "CAN_RFIFOMDATA0_DB3 BITS(24,31)" +.LASF2170: + .string "RCU_PLL_MUL5 CFG0_PLLMF(3)" +.LASF454: + .string "INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1)" +.LASF286: + .string "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1" +.LASF1691: + .string "GPIO_EVENT_PIN_6 ((uint8_t)0x06U)" +.LASF756: + .string "BKP_TPCTL REG16((BKP) + 0x30U)" +.LASF1886: + .string "FWDGT_PSC_DIV64 ((uint8_t)PSC_PSC(4))" +.LASF443: + .string "INT_LEAST16_MAX (__INT_LEAST16_MAX__)" +.LASF2391: + .string "SPI_TRANSMODE_BDTRANSMIT (SPI_CTL0_BDEN | SPI_CTL0_BDOEN)" +.LASF309: + .string "__riscv_xlen 32" +.LASF2676: + .string "DMACFG_DMATC(regval) (BITS(8, 12) & ((uint32_t)(regval) << 8U))" +.LASF281: + .string "__REGISTER_PREFIX__ " +.LASF1512: + .string "GPIO_CTL0_MD7 BITS(28, 29)" +.LASF20: + .string "__SIZEOF_FLOAT__ 4" +.LASF2828: + .string "USART_CTL2(usartx) REG32((usartx) + (0x00000014U))" +.LASF646: + .string "ADC_SAMPLETIME_71POINT5 SAMPTX_SPT(6)" +.LASF837: + .string "CAN_F21DATA0(canx) REG32((canx) + 0x2E8U)" +.LASF3113: + .string "EXTI_FTEN_FTEN1 BIT(1)" +.LASF2775: + .string "TIMER_IC_PSC_DIV4 ((uint16_t)0x0008U)" +.LASF986: + .string "CAN_RFIFOMDATA1_DB6 BITS(16,23)" +.LASF1269: + .string "DMA_CHXCTL_FTFIE BIT(1)" +.LASF1246: + .string "DMA_CH3PADDR(dmax) REG32((dmax) + 0x4CU)" +.LASF3095: + .string "EXTI_RTEN_RTEN2 BIT(2)" +.LASF1257: + .string "DMA_CH6CNT(dmax) REG32((dmax) + 0x84U)" +.LASF2838: + .string "USART_STAT_LBDF BIT(8)" +.LASF3227: + .string "trig_type" +.LASF586: + .string "ADC_WDLT_WDLT BITS(0,11)" +.LASF855: + .string "CAN_F11DATA1(canx) REG32((canx) + 0x29CU)" +.LASF745: + .string "BKP_DATA32 REG16((BKP) + 0x98U)" +.LASF1709: + .string "GPIO_PIN_SOURCE_8 ((uint8_t)0x08U)" +.LASF1055: + .string "CAN_BT_SJW_2TQ ((uint8_t)0x01U)" +.LASF377: + .string "unsigned" +.LASF477: + .string "WCHAR_MIN (__WCHAR_MIN__)" +.LASF1798: + .string "I2C_STAT0_SBSEND BIT(0)" +.LASF524: + .string "CRC_BASE (AHB1_BUS_BASE + 0x0000B000U)" +.LASF2443: + .string "SPI_CRC_RX ((uint8_t)0x01U)" +.LASF3209: + .string "EXTI_TRIG_BOTH" +.LASF2487: + .string "TIMER_CAR(timerx) REG32((timerx) + 0x2CU)" +.LASF2918: + .string "USART_CPH_2CK CTL1_CPH(1)" +.LASF2230: + .string "RCU_PREDV0_DIV12 CFG1_PREDV0(11)" +.LASF1405: + .string "FMC_PID_PID BITS(0,31)" +.LASF140: + .string "__GCC_IEC_559_COMPLEX 0" +.LASF153: + .string "__FLT_NORM_MAX__ 3.40282346638528859811704183484516925e+38F" +.LASF219: + .string "__FLT32_HAS_INFINITY__ 1" +.LASF2173: + .string "RCU_PLL_MUL8 CFG0_PLLMF(6)" +.LASF1363: + .string "GD32VF103_FMC_H " +.LASF2567: + .string "TIMER_CHCTL0_CH1COMCEN BIT(15)" +.LASF2817: + .string "GD32VF103_USART_H " +.LASF24: + .string "__CHAR_BIT__ 8" +.LASF2779: + .string "TIMER_SMCFG_TRGSEL_ITI1 SMCFG_TRGSEL(1)" +.LASF2765: + .string "TIMER_UPDATECTL_CCU ((uint32_t)0x00000000U)" +.LASF2921: + .string "USART_CPL_HIGH CTL1_CPL(1)" +.LASF717: + .string "BKP_DATA4 REG16((BKP) + 0x14U)" +.LASF203: + .string "__FLT16_HAS_DENORM__ 1" +.LASF1099: + .string "CAN_FILTERMODE_LIST ((uint8_t)0x01U)" +.LASF1192: + .string "DAC_WAVE_BIT_WIDTH_6 DWBW(5)" +.LASF2304: + .string "RTC_CTL_CMF BIT(4)" +.LASF2693: + .string "TIMER_DMACFG_DMATC_17TRANSFER DMACFG_DMATC(16)" +.LASF480: + .string "WINT_MIN (__WINT_MIN__)" +.LASF733: + .string "BKP_DATA20 REG16((BKP) + 0x68U)" +.LASF1926: + .string "PMU_CTL_STBMOD BIT(1)" +.LASF1704: + .string "GPIO_PIN_SOURCE_3 ((uint8_t)0x03U)" +.LASF1809: + .string "I2C_STAT0_PECERR BIT(12)" +.LASF336: + .string "HXTAL_STARTUP_TIMEOUT ((uint16_t)0xFFFF)" +.LASF254: + .string "__FLT32X_MIN_10_EXP__ (-307)" +.LASF1355: + .string "EXMC_NOR_DATABUS_WIDTH_16B SNCTL_NRW(1)" +.LASF3087: + .string "EXTI_EVEN_EVEN13 BIT(13)" +.LASF2766: + .string "TIMER_UPDATECTL_CCUTRI TIMER_CTL1_CCUC" +.LASF638: + .string "ADC0_1_EXTTRIG_INSERTED_NONE CTL1_ETSIC(7)" +.LASF1413: + .string "FMC_REG_OFFSET_GET(flag) ((uint32_t)(flag) >> 12)" +.LASF543: + .string "ADC_RSQ1(adcx) REG32((adcx) + 0x30U)" +.LASF1672: + .string "GPIO_OSPEED_10MHZ ((uint8_t)0x01U)" +.LASF744: + .string "BKP_DATA31 REG16((BKP) + 0x94U)" +.LASF92: + .string "__INTMAX_WIDTH__ 64" +.LASF2369: + .string "SPI_DATA_DATA BITS(0,15)" +.LASF2050: + .string "RCU_AHBEN_DMA0EN BIT(0)" +.LASF287: + .string "__GCC_ATOMIC_BOOL_LOCK_FREE 1" +.LASF636: + .string "ADC0_1_EXTTRIG_INSERTED_T3_TRGO CTL1_ETSIC(5)" +.LASF1767: + .string "I2C_STAT1(i2cx) REG32((i2cx) + 0x18U)" +.LASF339: + .string "IRC40K_VALUE ((uint32_t)40000)" +.LASF2073: + .string "RCU_APB1EN_TIMER6EN BIT(5)" +.LASF907: + .string "CAN_TSTAT_MTFNERR1 BIT(9)" +.LASF671: + .string "ADC_CHANNEL_10 ((uint8_t)0x0AU)" +.LASF1022: + .string "TMDATA1_DB5(regval) (BITS(8,15) & ((uint32_t)(regval) << 8))" +.LASF2181: + .string "RCU_PLL_MUL16 CFG0_PLLMF(14)" +.LASF2151: + .string "CFG0_APB2PSC(regval) (BITS(11,13) & ((uint32_t)(regval) << 11))" +.LASF1567: + .string "GPIO_BOP_BOP5 BIT(5)" +.LASF2961: + .string "_PTRDIFF_T_ " +.LASF1963: + .string "RCU_APB1EN REG32(RCU + 0x1CU)" +.LASF484: + .string "UINT16_C(x) __UINT16_C(x)" +.LASF1514: + .string "GPIO_CTL1_MD8 BITS(0, 1)" +.LASF651: + .string "RSQ0_RL(regval) (BITS(20,23) & ((uint32_t)(regval) << 20))" +.LASF2526: + .string "TIMER_DMAINTEN_CH2IE BIT(3)" +.LASF1524: + .string "GPIO_CTL1_MD13 BITS(20, 21)" +.LASF716: + .string "BKP_DATA3 REG16((BKP) + 0x10U)" +.LASF848: + .string "CAN_F4DATA1(canx) REG32((canx) + 0x264U)" +.LASF1122: + .string "CRC_CTL REG32(CRC + 0x08U)" +.LASF1762: + .string "I2C_CTL1(i2cx) REG32((i2cx) + 0x04U)" +.LASF1401: + .string "FMC_OBSTAT_USER BITS(2,9)" +.LASF319: + .string "__ELF__ 1" +.LASF1660: + .string "AFIO_EXTI15_SS BITS(12, 15)" +.LASF238: + .string "__FLT128_MIN_EXP__ (-16381)" +.LASF130: + .string "__INT_FAST64_MAX__ 0x7fffffffffffffffLL" +.LASF2543: + .string "TIMER_INTF_CMTIF BIT(5)" +.LASF2338: + .string "SPI_CTL0_CKPH BIT(0)" +.LASF2030: + .string "RCU_APB1RST_TIMER1RST BIT(0)" +.LASF2001: + .string "RCU_INT_PLL1STBIF BIT(5)" +.LASF2504: + .string "TIMER_CTL1_CCSE BIT(0)" +.LASF571: + .string "ADC_CTL1_CTN BIT(1)" +.LASF2741: + .string "TIMER_CCXN_ENABLE ((uint16_t)0x0004U)" +.LASF2592: + .string "TIMER_CHCTL2_CH1NEN BIT(6)" +.LASF2672: + .string "TIMER_DMACFG_DMATA_CH2CV DMACFG_DMATA(15)" +.LASF743: + .string "BKP_DATA30 REG16((BKP) + 0x90U)" +.LASF817: + .string "CAN_F1DATA0(canx) REG32((canx) + 0x248U)" +.LASF1965: + .string "RCU_RSTSCK REG32(RCU + 0x24U)" +.LASF971: + .string "CAN_TMDATA1_DB6 BITS(16,23)" +.LASF1229: + .string "DMA1 (DMA_BASE + 0x0400U)" +.LASF2332: + .string "SPI_DATA(spix) REG32((spix) + 0x0CU)" +.LASF2522: + .string "TIMER_SMCFG_ETP BIT(15)" +.LASF2830: + .string "USART_STAT_PERR BIT(0)" +.LASF1038: + .string "GET_ERR_TECNT(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF1931: + .string "PMU_CTL_BKPWEN BIT(8)" +.LASF2118: + .string "AHBRST_REG_OFFSET 0x28U" +.LASF433: + .string "INT8_MIN (-__INT8_MAX__ - 1)" +.LASF2507: + .string "TIMER_CTL1_MMC BITS(4,6)" +.LASF2321: + .string "RTC_FLAG_ALARM RTC_CTL_ALRMIF" +.LASF1200: + .string "DAC_LFSR_BITS1_0 DAC_WAVE_BIT_WIDTH_2" +.LASF272: + .string "__FLT64X_DECIMAL_DIG__ 36" +.LASF654: + .string "ADC_INSERTED_CHANNEL ((uint8_t)0x02U)" +.LASF1272: + .string "DMA_CHXCTL_DIR BIT(4)" +.LASF3141: + .string "EXTI_SWIEV_SWIEV10 BIT(10)" +.LASF867: + .string "CAN_F23DATA1(canx) REG32((canx) + 0x2FCU)" +.LASF587: + .string "ADC_RSQX_RSQN BITS(0,4)" +.LASF132: + .string "__UINT_FAST8_MAX__ 0xffffffffU" +.LASF2203: + .string "CFG0_CKOUT0SEL(regval) (BITS(24,27) & ((uint32_t)(regval) << 24))" +.LASF463: + .string "INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1)" +.LASF1859: + .string "I2C_PECTRANS_DISABLE ((uint32_t)0x00000000U)" +.LASF2128: + .string "RCU_CKSYSSRC_IRC8M CFG0_SCS(0)" +.LASF1360: + .string "EXMC_BANK0_NORSRAM_REGION0 ((uint32_t)0x00000000U)" +.LASF1002: + .string "STAT_REG_OFFSET ((uint8_t)0x04U)" +.LASF2940: + .string "WWDGT_CFG REG32((WWDGT) + 0x00000004U)" +.LASF2969: + .string "_SIZE_T " +.LASF1286: + .string "DMA_CHPADDR(dma,channel) REG32(((dma) + 0x10U) + 0x14U * (uint32_t)(channel))" +.LASF2185: + .string "RCU_PLL_MUL20 (PLLMF_4 | CFG0_PLLMF(3))" +.LASF1991: + .string "RCU_CFG0_PLLMF BITS(18,21)" +.LASF2556: + .string "TIMER_SWEVG_TRGG BIT(6)" +.LASF575: + .string "ADC_CTL1_DAL BIT(11)" +.LASF2377: + .string "SPI_I2SCTL_PCMSMOD BIT(7)" +.LASF1152: + .string "DAC_CTL_DTEN1 BIT(18)" +.LASF2814: + .string "TIMER_HALLINTERFACE_DISABLE ((uint32_t)0x00000000U)" +.LASF673: + .string "ADC_CHANNEL_12 ((uint8_t)0x0CU)" +.LASF2259: + .string "RCU_PLL1_MUL14 CFG1_PLL1MF(12)" +.LASF170: + .string "__DBL_EPSILON__ ((double)2.22044604925031308084726333618164062e-16L)" +.LASF346: + .string "_NEWLIB_VERSION \"4.1.0\"" +.LASF1827: + .string "I2C_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF793: + .string "CAN_TMDATA00(canx) REG32((canx) + 0x188U)" +.LASF882: + .string "CAN_CTL_IWMOD BIT(0)" +.LASF1665: + .string "GPIO_MODE_IN_FLOATING ((uint8_t)0x04U)" +.LASF1817: + .string "I2C_STAT1_HSTSMB BIT(6)" +.LASF1606: + .string "GPIO_BC_CR12 BIT(12)" +.LASF2922: + .string "CLT2_DENR(regval) (BIT(6) & ((uint32_t)(regval) << 6))" +.LASF1294: + .string "DMA_INT_FLAG_FTF DMA_INTF_FTFIF" +.LASF707: + .string "ADC_OVERSAMPLING_RATIO_MUL32 OVSCR_OVSR(4)" +.LASF410: + .string "_UINT16_T_DECLARED " +.LASF2012: + .string "RCU_INT_LXTALSTBIC BIT(17)" +.LASF3211: + .string "exti_trig_type_enum" +.LASF3169: + .string "EXTI_REG_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF1131: + .string "DAC_SWT REG32(DAC + 0x04U)" +.LASF2632: + .string "TIMER_INT_FLAG_CMT TIMER_INT_CMT" +.LASF1552: + .string "GPIO_OCTL_OCTL6 BIT(6)" +.LASF3229: + .string "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Source\\gd32vf103_exti.c" +.LASF326: + .string "RT_USING_NEWLIB 1" +.LASF2560: + .string "TIMER_CHCTL0_CH0COMSEN BIT(3)" +.LASF902: + .string "CAN_TSTAT_MTFNERR0 BIT(1)" +.LASF2029: + .string "RCU_APB2RST_USART0RST BIT(14)" +.LASF457: + .string "INT_FAST8_MIN (-__INT_FAST8_MAX__ - 1)" +.LASF695: + .string "ADC_OVERSAMPLING_SHIFT_2B OVSCR_OVSS(2)" +.LASF1485: + .string "GPIO_CTL1(gpiox) REG32((gpiox) + 0x04U)" +.LASF944: + .string "CAN_INTEN_SLPWIE BIT(17)" +.LASF1236: + .string "DMA_CH1CTL(dmax) REG32((dmax) + 0x1CU)" +.LASF1696: + .string "GPIO_EVENT_PIN_11 ((uint8_t)0x0BU)" +.LASF131: + .string "__INT_FAST64_WIDTH__ 64" +.LASF2113: + .string "RCU_REG_VAL(periph) (REG32(RCU + ((uint32_t)(periph) >> 6)))" +.LASF2821: + .string "UART4 (USART_BASE+(0x00000C00U))" +.LASF2915: + .string "USART_CLEN_EN CTL1_CLEN(1)" +.LASF344: + .string "_SYS_FEATURES_H " +.LASF840: + .string "CAN_F24DATA0(canx) REG32((canx) + 0x300U)" +.LASF1585: + .string "GPIO_BOP_CR7 BIT(23)" +.LASF1079: + .string "CAN_BT_BS2_6TQ ((uint8_t)0x05U)" +.LASF600: + .string "ADC_FLAG_EOC ADC_STAT_EOC" +.LASF655: + .string "ADC_REGULAR_INSERTED_CHANNEL ((uint8_t)0x03U)" +.LASF2616: + .string "TIMER_DMACFG_DMATA BITS(0,4)" +.LASF2730: + .string "TIMER_CCHP_PROT_0 CCHP_PROT(1)" +.LASF449: + .string "INT_LEAST32_MAX (__INT_LEAST32_MAX__)" +.LASF2933: + .string "USART_CTS_DISABLE CLT2_CTSEN(0)" +.LASF2996: + .string "___int_wchar_t_h " +.LASF1754: + .string "GPIO_SWJ_DISABLE_REMAP ((uint32_t)0x00300200U)" +.LASF2102: + .string "RCU_RSTSCK_LPRSTF BIT(31)" +.LASF1447: + .string "OB_WP_6 ((uint32_t)0x00000040U)" +.LASF1730: + .string "GPIO_PIN_13 BIT(13)" +.LASF3015: + .string "TIMER_REG(offset) _REG32(TIMER_CTRL_ADDR, offset)" +.LASF712: + .string "BKP BKP_BASE" +.LASF1232: + .string "DMA_CH0CTL(dmax) REG32((dmax) + 0x08U)" +.LASF1166: + .string "DACC_R12DH_DAC1_DH BITS(16,27)" +.LASF1177: + .string "DAC_TRIGGER_T4_TRGO CTL_DTSEL(3)" +.LASF1058: + .string "CAN_BT_BS1_1TQ ((uint8_t)0x00U)" +.LASF2581: + .string "TIMER_CHCTL1_CH3COMCEN BIT(15)" +.LASF2406: + .string "SPI_PSC_16 CTL0_PSC(3)" +.LASF3038: + .string "ECLIC_CFG_NLBITS_LSB (1u)" +.LASF2301: + .string "RTC_CTL_ALRMIF BIT(1)" +.LASF2330: + .string "SPI_CTL1(spix) REG32((spix) + 0x04U)" +.LASF1202: + .string "DAC_LFSR_BITS3_0 DAC_WAVE_BIT_WIDTH_4" +.LASF126: + .string "__INT_FAST16_MAX__ 0x7fffffff" +.LASF603: + .string "ADC_FLAG_STRC ADC_STAT_STRC" +.LASF2663: + .string "TIMER_DMACFG_DMATA_CHCTL0 DMACFG_DMATA(6)" +.LASF3127: + .string "EXTI_FTEN_FTEN15 BIT(15)" +.LASF1950: + .string "PMU_FLAG_RESET_WAKEUP ((uint8_t)0x00U)" +.LASF381: + .string "__int20__" +.LASF262: + .string "__FLT32X_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F32x" +.LASF3152: + .string "EXTI_PD_PD2 BIT(2)" +.LASF1410: + .string "FMC_REG_VALS(offset) (REG32(FMC + ((uint32_t)(offset) >> 12)))" +.LASF489: + .string "INTMAX_C(x) __INTMAX_C(x)" +.LASF168: + .string "__DBL_NORM_MAX__ ((double)1.79769313486231570814527423731704357e+308L)" +.LASF3022: + .string "_BITULL(x) (_AC(1,ULL) << (x))" +.LASF1024: + .string "TMDATA1_DB7(regval) (BITS(24,31) & ((uint32_t)(regval) << 24))" +.LASF2948: + .string "CFG_PSC(regval) (BITS(7,8) & ((uint32_t)(regval) << 7))" +.LASF199: + .string "__FLT16_NORM_MAX__ 6.55040000000000000000000000000000000e+4F16" +.LASF1921: + .string "GD32VF103_PMU_H " +.LASF847: + .string "CAN_F3DATA1(canx) REG32((canx) + 0x25CU)" +.LASF1882: + .string "FWDGT_PSC_DIV4 ((uint8_t)PSC_PSC(0))" +.LASF2900: + .string "USART_WM_IDLE CTL0_WM(0)" +.LASF502: + .string "APB1_BUS_BASE ((uint32_t)0x40000000U)" +.LASF554: + .string "ADC_STAT_EOIC BIT(2)" +.LASF1755: + .string "GPIO_SPI2_REMAP ((uint32_t)0x00201100U)" +.LASF1873: + .string "FWDGT_PSC REG32((FWDGT) + 0x00000004U)" +.LASF2455: + .string "SPI_FLAG_TBE SPI_STAT_TBE" +.LASF1053: + .string "CAN_SILENT_LOOPBACK_MODE ((uint8_t)0x03U)" +.LASF2491: + .string "TIMER_CH2CV(timerx) REG32((timerx) + 0x3CU)" +.LASF1667: + .string "GPIO_MODE_IPU ((uint8_t)0x48U)" +.LASF1087: + .string "CAN_FF_EXTENDED ((uint32_t)0x00000004U)" +.LASF3003: + .string "NULL ((void *)0)" +.LASF444: + .string "UINT_LEAST16_MAX (__UINT_LEAST16_MAX__)" +.LASF1820: + .string "I2C_CKCFG_CLKC BITS(0,11)" +.LASF3160: + .string "EXTI_PD_PD10 BIT(10)" +.LASF1111: + .string "CAN_INT_WERR CAN_INTEN_WERRIE" +.LASF1970: + .string "RCU_CTL_IRC8MSTB BIT(1)" +.LASF1474: + .string "FMC_TIMEOUT_COUNT ((uint32_t)0x000F0000U)" +.LASF2519: + .string "TIMER_SMCFG_ETFC BITS(8,11)" +.LASF1317: + .string "DMA_MEMORY_WIDTH_32BIT CHCTL_MWIDTH(2U)" +.LASF697: + .string "ADC_OVERSAMPLING_SHIFT_4B OVSCR_OVSS(4)" +.LASF1199: + .string "DAC_LFSR_BIT0 DAC_WAVE_BIT_WIDTH_1" +.LASF614: + .string "ADC_DAUL_REGULAL_PARALLEL CTL0_SYNCM(6)" +.LASF2473: + .string "TIMER4 (TIMER_BASE + 0x00000C00U)" +.LASF845: + .string "CAN_F1DATA1(canx) REG32((canx) + 0x24CU)" +.LASF285: + .string "__CHAR_UNSIGNED__ 1" +.LASF928: + .string "CAN_RFIFO1_RFF1 BIT(3)" +.LASF1613: + .string "GPIO_LOCK_LK3 BIT(3)" +.LASF792: + .string "CAN_TMP0(canx) REG32((canx) + 0x184U)" +.LASF1528: + .string "GPIO_CTL1_MD15 BITS(28, 29)" +.LASF1105: + .string "CAN_INT_RFNE0 CAN_INTEN_RFNEIE0" +.LASF1305: + .string "DMA_MEMORY_TO_PERIPHERAL ((uint8_t)0x01U)" +.LASF1265: + .string "DMA_INTC_FTFIFC BIT(1)" +.LASF2531: + .string "TIMER_DMAINTEN_UPDEN BIT(8)" +.LASF1151: + .string "DAC_CTL_DBOFF1 BIT(17)" +.LASF295: + .string "__GCC_ATOMIC_LLONG_LOCK_FREE 1" +.LASF505: + .string "AHB3_BUS_BASE ((uint32_t)0x60000000U)" +.LASF2981: + .string "_GCC_SIZE_T " +.LASF1557: + .string "GPIO_OCTL_OCTL11 BIT(11)" +.LASF2824: + .string "USART_DATA(usartx) REG32((usartx) + (0x00000004U))" +.LASF1449: + .string "OB_WP_8 ((uint32_t)0x00000100U)" +.LASF778: + .string "BKP_FLAG_TAMPER BKP_TPCS_TEF" +.LASF375: + .string "__STDINT_EXP(x) __ ##x ##__" +.LASF777: + .string "TAMPER_PIN_ACTIVE_LOW ((uint16_t)0x0002U)" +.LASF1234: + .string "DMA_CH0PADDR(dmax) REG32((dmax) + 0x10U)" +.LASF3001: + .string "__need_wchar_t" +.LASF1644: + .string "AFIO_PCF0_TIMER1_ITI1_REMAP BIT(29)" +.LASF974: + .string "CAN_RFIFOMI_FF BIT(2)" +.LASF139: + .string "__GCC_IEC_559 0" +.LASF1729: + .string "GPIO_PIN_12 BIT(12)" +.LASF320: + .string "USE_PLIC 1" +.LASF206: + .string "__FLT32_MANT_DIG__ 24" +.LASF933: + .string "CAN_INTEN_RFFIE0 BIT(2)" +.LASF1748: + .string "GPIO_CAN0_PARTIAL_REMAP ((uint32_t)0x001D4000U)" +.LASF1383: + .string "FMC_OBKEY_OBKEY BITS(0,31)" +.LASF321: + .string "USE_M_TIME 1" +.LASF1221: + .string "DAC_TRIANGLE_AMPLITUDE_127 DAC_WAVE_BIT_WIDTH_7" +.LASF2539: + .string "TIMER_INTF_CH0IF BIT(1)" +.LASF2864: + .string "USART_CTL1_STB BITS(12,13)" +.LASF1371: + .string "FMC_ADDR REG32((FMC) + 0x14U)" +.LASF2613: + .string "TIMER_CCHP_BRKP BIT(13)" +.LASF2954: + .string "_STDDEF_H " +.LASF1303: + .string "DMA_INT_ERR DMA_CHXCTL_ERRIE" +.LASF1845: + .string "I2C_DUADEN_ENABLE ((uint32_t)0x00000001U)" +.LASF3142: + .string "EXTI_SWIEV_SWIEV11 BIT(11)" +.LASF2970: + .string "_SYS_SIZE_T_H " +.LASF80: + .string "__SHRT_WIDTH__ 16" +.LASF2438: + .string "I2S_CKPL_LOW ((uint32_t)0x00000000U)" +.LASF1747: + .string "GPIO_TIMER3_REMAP ((uint32_t)0x00001000U)" +.LASF67: + .string "__GXX_ABI_VERSION 1014" +.LASF1370: + .string "FMC_CTL REG32((FMC) + 0x10U)" +.LASF3131: + .string "EXTI_SWIEV_SWIEV0 BIT(0)" +.LASF684: + .string "ADC_INT_FLAG_EOIC ADC_STAT_EOIC" +.LASF361: + .string "__SSP_FORTIFY_LEVEL 0" +.LASF2327: + .string "SPI1 SPI_BASE" +.LASF2291: + .string "RTC_DIVH REG32(RTC + 0x10U)" +.LASF2974: + .string "_SIZE_T_ " +.LASF2234: + .string "RCU_PREDV0_DIV16 CFG1_PREDV0(15)" +.LASF659: + .string "ADC_INSERTED_CHANNEL_2 ((uint8_t)0x02U)" +.LASF2431: + .string "I2S_MODE_MASTERRX I2SCTL_I2SOPMOD(3)" +.LASF166: + .string "__DBL_DECIMAL_DIG__ 17" +.LASF3223: + .string "exti_event_enable" +.LASF288: + .string "__GCC_ATOMIC_CHAR_LOCK_FREE 1" +.LASF115: + .string "__INT_LEAST64_WIDTH__ 64" +.LASF1204: + .string "DAC_LFSR_BITS5_0 DAC_WAVE_BIT_WIDTH_6" +.LASF2235: + .string "CFG1_PREDV1(regval) (BITS(4,7) & ((uint32_t)(regval) << 4))" +.LASF2248: + .string "RCU_PREDV1_DIV13 CFG1_PREDV1(12)" +.LASF783: + .string "CAN_CTL(canx) REG32((canx) + 0x00U)" +.LASF1946: + .string "PMU_FLAG_STANDBY PMU_CS_STBF" +.LASF280: + .string "__FLT64X_HAS_QUIET_NAN__ 1" +.LASF569: + .string "ADC_CTL0_RWDEN BIT(23)" +.LASF1523: + .string "GPIO_CTL1_CTL12 BITS(18, 19)" +.LASF2563: + .string "TIMER_CHCTL0_CH1MS BITS(8,9)" +.LASF2708: + .string "TIMER_PSC_RELOAD_NOW TIMER_SWEVG_UPG" +.LASF2751: + .string "TIMER_OC_MODE_TIMING ((uint16_t)0x0000U)" +.LASF1579: + .string "GPIO_BOP_CR1 BIT(17)" +.LASF890: + .string "CAN_CTL_SWRST BIT(15)" +.LASF699: + .string "ADC_OVERSAMPLING_SHIFT_6B OVSCR_OVSS(6)" +.LASF641: + .string "ADC_SAMPLETIME_7POINT5 SAMPTX_SPT(1)" +.LASF3104: + .string "EXTI_RTEN_RTEN11 BIT(11)" +.LASF2117: + .string "APB2EN_REG_OFFSET 0x18U" +.LASF268: + .string "__FLT64X_MIN_EXP__ (-16381)" +.LASF1791: + .string "I2C_SADDR0_ADDRESS0 BIT(0)" +.LASF2395: + .string "SPI_NSS_HARD ((uint32_t)0x00000000U)" +.LASF1576: + .string "GPIO_BOP_BOP14 BIT(14)" +.LASF2089: + .string "RCU_BDCTL_LXTALSTB BIT(1)" +.LASF2190: + .string "RCU_PLL_MUL25 (PLLMF_4 | CFG0_PLLMF(8))" +.LASF822: + .string "CAN_F6DATA0(canx) REG32((canx) + 0x270U)" +.LASF544: + .string "ADC_RSQ2(adcx) REG32((adcx) + 0x34U)" +.LASF337: + .string "IRC8M_VALUE ((uint32_t)8000000)" +.LASF3147: + .string "EXTI_SWIEV_SWIEV16 BIT(16)" +.LASF87: + .string "__SIZE_WIDTH__ 32" +.LASF1075: + .string "CAN_BT_BS2_2TQ ((uint8_t)0x01U)" +.LASF714: + .string "BKP_DATA1 REG16((BKP) + 0x08U)" +.LASF2971: + .string "_T_SIZE_ " +.LASF2405: + .string "SPI_PSC_8 CTL0_PSC(2)" +.LASF2755: + .string "TIMER_OC_MODE_LOW ((uint16_t)0x0040U)" +.LASF1478: + .string "GPIOA (GPIO_BASE + 0x00000000U)" +.LASF2144: + .string "RCU_AHB_CKSYS_DIV512 CFG0_AHBPSC(15)" +.LASF2044: + .string "RCU_APB1RST_I2C1RST BIT(22)" +.LASF473: + .string "SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)" +.LASF2622: + .string "TIMER_INT_CH2 TIMER_DMAINTEN_CH2IE" +.LASF1481: + .string "GPIOD (GPIO_BASE + 0x00000C00U)" +.LASF2818: + .string "USART1 USART_BASE" +.LASF1543: + .string "GPIO_ISTAT_ISTAT13 BIT(13)" +.LASF2429: + .string "I2S_MODE_SLAVERX I2SCTL_I2SOPMOD(1)" +.LASF442: + .string "INT_LEAST16_MIN (-__INT_LEAST16_MAX__ - 1)" +.LASF1733: + .string "GPIO_PIN_ALL BITS(0, 15)" +.LASF1212: + .string "DAC_ALIGN_12B_R DATA_ALIGN(0)" +.LASF538: + .string "ADC_IOFF2(adcx) REG32((adcx) + 0x1CU)" +.LASF2532: + .string "TIMER_DMAINTEN_CH0DEN BIT(9)" +.LASF52: + .string "__INT_LEAST64_TYPE__ long long int" +.LASF3226: + .string "mode" +.LASF713: + .string "BKP_DATA0 REG16((BKP) + 0x04U)" +.LASF1705: + .string "GPIO_PIN_SOURCE_4 ((uint8_t)0x04U)" +.LASF191: + .string "__FLT16_MANT_DIG__ 11" +.LASF1019: + .string "TMDATA0_DB2(regval) (BITS(16,23) & ((uint32_t)(regval) << 16))" +.LASF2009: + .string "RCU_INT_PLL1STBIE BIT(13)" +.LASF536: + .string "ADC_IOFF0(adcx) REG32((adcx) + 0x14U)" +.LASF2264: + .string "RCU_PLL2_MUL8 CFG1_PLL2MF(6)" +.LASF1408: + .string "FMC_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF1068: + .string "CAN_BT_BS1_11TQ ((uint8_t)0x0AU)" +.LASF770: + .string "BKP_DATA0_9(number) REG16((BKP) + 0x04U + (number) * 0x04U)" +.LASF1206: + .string "DAC_LFSR_BITS7_0 DAC_WAVE_BIT_WIDTH_8" +.LASF3023: + .string "ECLICINTCTLBITS 4" +.LASF3081: + .string "EXTI_EVEN_EVEN7 BIT(7)" +.LASF1777: + .string "I2C_CTL0_SS BIT(7)" +.LASF632: + .string "ADC0_1_EXTTRIG_INSERTED_T0_CH3 CTL1_ETSIC(1)" +.LASF2966: + .string "__need_ptrdiff_t" +.LASF1537: + .string "GPIO_ISTAT_ISTAT7 BIT(7)" +.LASF2415: + .string "I2S_AUDIOSAMPLE_32K ((uint32_t)32000U)" +.LASF240: + .string "__FLT128_MAX_EXP__ 16384" +.LASF1788: + .string "I2C_CTL1_BUFIE BIT(10)" +.LASF2360: + .string "SPI_STAT_RBNE BIT(0)" +.LASF1852: + .string "I2C_DMA_ON I2C_CTL1_DMAON" +.LASF3099: + .string "EXTI_RTEN_RTEN6 BIT(6)" +.LASF2934: + .string "CTL2_IRLP(regval) (BIT(2) & ((uint32_t)(regval) << 2))" +.LASF2681: + .string "TIMER_DMACFG_DMATC_5TRANSFER DMACFG_DMATC(4)" +.LASF3070: + .string "EXTI_INTEN_INTEN15 BIT(15)" +.LASF2341: + .string "SPI_CTL0_PSC BITS(3,5)" +.LASF2379: + .string "SPI_I2SCTL_I2SEN BIT(10)" +.LASF1759: + .string "I2C0 I2C_BASE" +.LASF405: + .string "_SYS__STDINT_H " +.LASF1186: + .string "DWBW(regval) (BITS(8,11) & ((uint32_t)(regval) << 8))" +.LASF3177: + .string "long long int" +.LASF164: + .string "__DBL_MAX_EXP__ 1024" +.LASF2586: + .string "TIMER_CHCTL2_CH0EN BIT(0)" +.LASF91: + .string "__UINTMAX_C(c) c ## ULL" +.LASF2189: + .string "RCU_PLL_MUL24 (PLLMF_4 | CFG0_PLLMF(7))" +.LASF2480: + .string "TIMER_INTF(timerx) REG32((timerx) + 0x10U)" +.LASF701: + .string "ADC_OVERSAMPLING_SHIFT_8B OVSCR_OVSS(8)" +.LASF2774: + .string "TIMER_IC_PSC_DIV2 ((uint16_t)0x0004U)" +.LASF297: + .string "__GCC_ATOMIC_POINTER_LOCK_FREE 2" +.LASF3064: + .string "EXTI_INTEN_INTEN9 BIT(9)" +.LASF1723: + .string "GPIO_PIN_6 BIT(6)" +.LASF3047: + .string "ECLIC_GROUP_LEVEL4_PRIO0 4" +.LASF2335: + .string "SPI_TCRC(spix) REG32((spix) + 0x18U)" +.LASF2108: + .string "RCU_CFG1_PREDV0SEL BIT(16)" +.LASF334: + .string "HXTAL_VALUE ((uint32_t)8000000)" +.LASF1495: + .string "AFIO_EXTISS2 REG32(AFIO + 0x10U)" +.LASF516: + .string "DAC_BASE (APB1_BUS_BASE + 0x00007400U)" +.LASF2472: + .string "TIMER3 (TIMER_BASE + 0x00000800U)" +.LASF2271: + .string "RCU_PLL2_MUL15 CFG1_PLL2MF(13)" +.LASF2577: + .string "TIMER_CHCTL1_CH3MS BITS(8,9)" +.LASF873: + .string "CAN_TMP(canx,bank) REG32((canx) + 0x184U + ((bank) * 0x10U))" +.LASF1670: + .string "GPIO_MODE_AF_OD ((uint8_t)0x1CU)" +.LASF3074: + .string "EXTI_EVEN_EVEN0 BIT(0)" +.LASF878: + .string "CAN_RFIFOMI(canx,bank) REG32((canx) + 0x1B0U + ((bank) * 0x10U))" +.LASF1223: + .string "DAC_TRIANGLE_AMPLITUDE_511 DAC_WAVE_BIT_WIDTH_9" +.LASF682: + .string "ADC_INT_FLAG_WDE ADC_STAT_WDE" +.LASF2924: + .string "USART_DENR_DISABLE CLT2_DENR(0)" +.LASF1621: + .string "GPIO_LOCK_LK11 BIT(11)" +.LASF137: + .string "__INTPTR_WIDTH__ 32" +.LASF1973: + .string "RCU_CTL_HXTALEN BIT(16)" +.LASF12: + .string "__ATOMIC_RELEASE 3" +.LASF1138: + .string "DACC_R12DH REG32(DAC + 0x20U)" +.LASF1507: + .string "GPIO_CTL0_CTL4 BITS(18, 19)" +.LASF458: + .string "INT_FAST8_MAX (__INT_FAST8_MAX__)" +.LASF2571: + .string "TIMER_CHCTL0_CH1CAPFLT BITS(12,15)" +.LASF589: + .string "ADC_ISQ_ISQN BITS(0,4)" +.LASF1289: + .string "DMA_CHCNT_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF2310: + .string "RTC_CNTH_CNT BITS(0,15)" +.LASF2212: + .string "RCU_CKOUT0SRC_CKPLL2 CFG0_CKOUT0SEL(11)" +.LASF3032: + .string "ECLIC_INT_ATTR_TRIG_EDGE 0x02" +.LASF1434: + .string "OB_SPC_SPC_N ((uint32_t)0x0000FF00U)" +.LASF1502: + .string "GPIO_CTL0_MD2 BITS(8, 9)" +.LASF961: + .string "CAN_TMI_SFID BITS(21,31)" +.LASF1292: + .string "DMA_CHINTF_RESET_VALUE (DMA_INTF_GIF | DMA_INTF_FTFIF | DMA_INTF_HTFIF | DMA_INTF_ERRIF)" +.LASF3072: + .string "EXTI_INTEN_INTEN17 BIT(17)" +.LASF2445: + .string "SPI_I2S_INT_RBNE ((uint8_t)0x01U)" +.LASF1218: + .string "DAC_TRIANGLE_AMPLITUDE_15 DAC_WAVE_BIT_WIDTH_4" +.LASF2070: + .string "RCU_APB1EN_TIMER3EN BIT(2)" +.LASF2188: + .string "RCU_PLL_MUL23 (PLLMF_4 | CFG0_PLLMF(6))" +.LASF143: + .string "__DEC_EVAL_METHOD__ 2" +.LASF1645: + .string "AFIO_EXTI0_SS BITS(0, 3)" +.LASF2727: + .string "TIMER_OUTAUTO_DISABLE ((uint16_t)0x0000U)" +.LASF1607: + .string "GPIO_BC_CR13 BIT(13)" +.LASF225: + .string "__FLT64_MAX_EXP__ 1024" +.LASF2055: + .string "RCU_AHBEN_EXMCEN BIT(8)" +.LASF1213: + .string "DAC_ALIGN_12B_L DATA_ALIGN(1)" +.LASF1530: + .string "GPIO_ISTAT_ISTAT0 BIT(0)" +.LASF2906: + .string "USART_STB_1BIT CTL1_STB(0)" +.LASF2049: + .string "RCU_APB1RST_DACRST BIT(29)" +.LASF3045: + .string "ECLIC_GROUP_LEVEL2_PRIO2 2" +.LASF1822: + .string "I2C_CKCFG_FAST BIT(15)" +.LASF2945: + .string "WWDGT_CFG_PSC BITS(7,8)" +.LASF3206: + .string "exti_mode_enum" +.LASF893: + .string "CAN_STAT_SLPWS BIT(1)" +.LASF2917: + .string "USART_CPH_1CK CTL1_CPH(0)" +.LASF1243: + .string "DMA_CH2MADDR(dmax) REG32((dmax) + 0x3CU)" +.LASF2339: + .string "SPI_CTL0_CKPL BIT(1)" +.LASF2554: + .string "TIMER_SWEVG_CH3G BIT(4)" +.LASF1740: + .string "GPIO_TIMER0_PARTIAL_REMAP ((uint32_t)0x00160040U)" +.LASF1007: + .string "BT_BAUDPSC(regval) (BITS(0,9) & ((uint32_t)(regval) << 0))" +.LASF1379: + .string "OB_WP2 REG16((OB) + 0x0CU)" +.LASF1456: + .string "OB_WP_15 ((uint32_t)0x00008000U)" +.LASF2384: + .string "SPI_MASTER (SPI_CTL0_MSTMOD | SPI_CTL0_SWNSS)" +.LASF1032: + .string "GET_RFIFOMDATA0_DB3(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF588: + .string "ADC_RSQ0_RL BITS(20,23)" +.LASF5: + .string "__GNUC__ 10" +.LASF2566: + .string "TIMER_CHCTL0_CH1COMCTL BITS(12,14)" +.LASF2655: + .string "TIMER_DMAREQUEST_CHANNELEVENT ((uint32_t)0x00000000U)" +.LASF2460: + .string "SPI_FLAG_FERR SPI_STAT_FERR" +.LASF2939: + .string "WWDGT_CTL REG32((WWDGT) + 0x00000000U)" +.LASF1976: + .string "RCU_CTL_CKMEN BIT(19)" +.LASF2153: + .string "RCU_APB2_CKAHB_DIV2 CFG0_APB2PSC(4)" +.LASF679: + .string "ADC_INT_WDE ADC_STAT_WDE" +.LASF161: + .string "__DBL_DIG__ 15" +.LASF1028: + .string "GET_RFIFOMP_FI(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF2557: + .string "TIMER_SWEVG_BRKG BIT(7)" +.LASF1301: + .string "DMA_INT_FTF DMA_CHXCTL_FTFIE" +.LASF2432: + .string "I2SCTL_I2SSTD(regval) (BITS(4,5) & ((uint32_t)(regval) << 4))" +.LASF3123: + .string "EXTI_FTEN_FTEN11 BIT(11)" +.LASF2311: + .string "RTC_CNTL_CNT BITS(0,15)" +.LASF181: + .string "__DECIMAL_DIG__ 36" +.LASF97: + .string "__INT16_MAX__ 0x7fff" +.LASF1527: + .string "GPIO_CTL1_CTL14 BITS(26, 27)" +.LASF2988: + .string "_T_WCHAR_ " +.LASF1919: + .string "DBG_LOW_POWER_DEEPSLEEP DBG_CTL_DSLP_HOLD" +.LASF2187: + .string "RCU_PLL_MUL22 (PLLMF_4 | CFG0_PLLMF(5))" +.LASF985: + .string "CAN_RFIFOMDATA1_DB5 BITS(8,15)" +.LASF2092: + .string "RCU_BDCTL_RTCEN BIT(15)" +.LASF2705: + .string "TIMER_COUNTER_CENTER_DOWN CTL0_CAM(1)" +.LASF1326: + .string "GD32VF103_ECLIC_H " +.LASF1863: + .string "I2C_ARP_DISABLE ((uint32_t)0x00000000U)" +.LASF495: + .string "BITS(start,end) ((0xFFFFFFFFUL << (start)) & (0xFFFFFFFFUL >> (31U - (uint32_t)(end))))" +.LASF3218: + .string "exti_flag_clear" +.LASF470: + .string "INTMAX_MIN (-INTMAX_MAX - 1)" +.LASF58: + .string "__INT_FAST16_TYPE__ int" +.LASF1935: + .string "PMU_CS_WUPEN BIT(8)" +.LASF791: + .string "CAN_TMI0(canx) REG32((canx) + 0x180U)" +.LASF1981: + .string "RCU_CTL_PLL2EN BIT(28)" +.LASF2000: + .string "RCU_INT_PLLSTBIF BIT(4)" +.LASF3005: + .string "offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)" +.LASF1161: + .string "DAC0_R8DH_DAC0_DH BITS(0,7)" +.LASF2983: + .string "__size_t " +.LASF2420: + .string "I2SCTL_DTLEN(regval) (BITS(1,2) & ((uint32_t)(regval) << 1))" +.LASF358: + .string "__POSIX_VISIBLE 199009" +.LASF2008: + .string "RCU_INT_PLLSTBIE BIT(12)" +.LASF2110: + .string "RCU_CFG1_I2S2SEL BIT(18)" +.LASF119: + .string "__UINT16_C(c) c" +.LASF1743: + .string "GPIO_TIMER1_PARTIAL_REMAP1 ((uint32_t)0x00180200U)" +.LASF3108: + .string "EXTI_RTEN_RTEN15 BIT(15)" +.LASF3028: + .string "ECLIC_INT_IE_OFFSET _AC(0x1001,UL)" +.LASF2604: + .string "TIMER_CH0CV_CH0VAL BITS(0,15)" +.LASF1504: + .string "GPIO_CTL0_MD3 BITS(12, 13)" +.LASF2860: + .string "USART_CTL1_CLEN BIT(8)" +.LASF836: + .string "CAN_F20DATA0(canx) REG32((canx) + 0x2E0U)" +.LASF1571: + .string "GPIO_BOP_BOP9 BIT(9)" +.LASF373: + .string "__EXP" +.LASF290: + .string "__GCC_ATOMIC_CHAR32_T_LOCK_FREE 2" +.LASF1760: + .string "I2C1 (I2C_BASE + 0x00000400U)" +.LASF796: + .string "CAN_TMP1(canx) REG32((canx) + 0x194U)" +.LASF547: + .string "ADC_IDATA1(adcx) REG32((adcx) + 0x40U)" +.LASF2036: + .string "RCU_APB1RST_WWDGTRST BIT(11)" +.LASF263: + .string "__FLT32X_HAS_DENORM__ 1" +.LASF1479: + .string "GPIOB (GPIO_BASE + 0x00000400U)" +.LASF2796: + .string "TIMER_SLAVE_MODE_DISABLE SMCFG_SMC(0)" +.LASF2134: + .string "RCU_SCSS_PLL CFG0_SCSS(2)" +.LASF920: + .string "CAN_TSTAT_TMLS0 BIT(29)" +.LASF1716: + .string "GPIO_PIN_SOURCE_15 ((uint8_t)0x0FU)" +.LASF2881: + .string "USART_BIT_POS(val) ((uint32_t)(val) & (0x0000001FU))" +.LASF1276: + .string "DMA_CHXCTL_PWIDTH BITS(8,9)" +.LASF2661: + .string "TIMER_DMACFG_DMATA_INTF DMACFG_DMATA(4)" +.LASF769: + .string "BKP_TPCS_TIF BIT(9)" +.LASF527: + .string "GD32VF103_LIBOPT_H " +.LASF2517: + .string "TIMER_SMCFG_TRGS BITS(4,6)" +.LASF1603: + .string "GPIO_BC_CR9 BIT(9)" +.LASF2605: + .string "TIMER_CH1CV_CH1VAL BITS(0,15)" +.LASF372: + .string "___int_least64_t_defined 1" +.LASF2825: + .string "USART_BAUD(usartx) REG32((usartx) + (0x00000008U))" +.LASF210: + .string "__FLT32_MAX_EXP__ 128" +.LASF1792: + .string "I2C_SADDR0_ADDRESS BITS(1,7)" +.LASF861: + .string "CAN_F17DATA1(canx) REG32((canx) + 0x24CU)" +.LASF1348: + .string "EXMC_SNTCFG_AHLD BITS(4,7)" +.LASF1669: + .string "GPIO_MODE_OUT_PP ((uint8_t)0x10U)" +.LASF2951: + .string "WWDGT_CFG_PSC_DIV4 CFG_PSC(2)" +.LASF1482: + .string "GPIOE (GPIO_BASE + 0x00001000U)" +.LASF125: + .string "__INT_FAST8_WIDTH__ 32" +.LASF3024: + .string "ECLIC_CFG_OFFSET 0x0" +.LASF2607: + .string "TIMER_CH3CV_CH3VAL BITS(0,15)" +.LASF3067: + .string "EXTI_INTEN_INTEN12 BIT(12)" +.LASF2698: + .string "TIMER_EVENT_SRC_CH2G ((uint16_t)0x0008U)" +.LASF1092: + .string "CAN_EFID_MASK ((uint32_t)0x1FFFFFFFU)" +.LASF1117: + .string "CAN_INT_SLPW CAN_INTEN_SLPWIE" +.LASF2606: + .string "TIMER_CH2CV_CH2VAL BITS(0,15)" +.LASF304: + .string "__riscv_compressed 1" +.LASF266: + .string "__FLT64X_MANT_DIG__ 113" +.LASF1179: + .string "DAC_TRIGGER_T3_TRGO CTL_DTSEL(5)" +.LASF1154: + .string "DAC_CTL_DWM1 BITS(22,23)" +.LASF1894: + .string "FWDGT_RLD_TIMEOUT ((uint32_t)0x000FFFFFU)" +.LASF1694: + .string "GPIO_EVENT_PIN_9 ((uint8_t)0x09U)" +.LASF1445: + .string "OB_WP_4 ((uint32_t)0x00000010U)" +.LASF471: + .string "UINTMAX_MAX (__UINTMAX_MAX__)" +.LASF917: + .string "CAN_TSTAT_TME0 BIT(26)" +.LASF662: + .string "ADC_CHANNEL_1 ((uint8_t)0x01U)" +.LASF1268: + .string "DMA_CHXCTL_CHEN BIT(0)" +.LASF2450: + .string "SPI_INT_FLAG_CONFERR ((uint8_t)0x03U)" +.LASF1972: + .string "RCU_CTL_IRC8MCALIB BITS(8,15)" +.LASF2245: + .string "RCU_PREDV1_DIV10 CFG1_PREDV1(9)" +.LASF1430: + .string "OB_USER_MASK ((uint8_t)0xF0U)" +.LASF2697: + .string "TIMER_EVENT_SRC_CH1G ((uint16_t)0x0004U)" +.LASF3020: + .string "_AT(T,X) ((T)(X))" +.LASF3170: + .string "unsigned int" +.LASF2333: + .string "SPI_CRCPOLY(spix) REG32((spix) + 0x10U)" +.LASF1821: + .string "I2C_CKCFG_DTCY BIT(14)" +.LASF2146: + .string "RCU_APB1_CKAHB_DIV1 CFG0_APB1PSC(0)" +.LASF425: + .string "__int_least64_t_defined 1" +.LASF1771: + .string "I2C_CTL0_I2CEN BIT(0)" +.LASF771: + .string "BKP_DATA10_41(number) REG16((BKP) + 0x40U + ((number)-10U) * 0x04U)" +.LASF2493: + .string "TIMER_CCHP(timerx) REG32((timerx) + 0x44U)" +.LASF415: + .string "_INT64_T_DECLARED " +.LASF2635: + .string "TIMER_FLAG_UP TIMER_INTF_UPIF" +.LASF1564: + .string "GPIO_BOP_BOP2 BIT(2)" +.LASF2731: + .string "TIMER_CCHP_PROT_1 CCHP_PROT(2)" +.LASF2808: + .string "TIMER_EXT_TRI_PSC_DIV2 SMCFG_ETPSC(1)" +.LASF1160: + .string "DAC0_L12DH_DAC0_DH BITS(4,15)" +.LASF1511: + .string "GPIO_CTL0_CTL6 BITS(26, 27)" +.LASF1427: + .string "OB_STDBY_NRST ((uint8_t)0x04U)" +.LASF1300: + .string "DMA_FLAG_ERR DMA_INTF_ERRIF" + .ident "GCC: (xPack GNU RISC-V Embedded GCC x86_64) 10.2.0" diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_fmc.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_fmc.c new file mode 100644 index 0000000000..d7b130a0c6 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_fmc.c @@ -0,0 +1,648 @@ +/*! + \file gd32vf103_fmc.c + \brief FMC driver + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2019-09-18, V1.0.1, firmware for GD32VF103 + \version 2020-02-20, V1.0.2, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "gd32vf103_fmc.h" + +/*! + \brief set the FMC wait state counter + \param[in] wscnt£ºwait state counter value + \arg WS_WSCNT_0: FMC 0 wait state + \arg WS_WSCNT_1: FMC 1 wait state + \arg WS_WSCNT_2: FMC 2 wait state + \param[out] none + \retval none + */ +void fmc_wscnt_set(uint32_t wscnt) +{ + uint32_t reg; + + reg = FMC_WS; + /* set the wait state counter value */ + reg &= ~FMC_WS_WSCNT; + FMC_WS = (reg | wscnt); +} + +/*! + \brief unlock the main FMC operation + \param[in] none + \param[out] none + \retval none + */ +void fmc_unlock(void) +{ + if((RESET != (FMC_CTL & FMC_CTL_LK))){ + /* write the FMC unlock key */ + FMC_KEY = UNLOCK_KEY0; + FMC_KEY = UNLOCK_KEY1; + } +} + +/*! + \brief lock the main FMC operation + \param[in] none + \param[out] none + \retval none + */ +void fmc_lock(void) +{ + /* set the LK bit */ + FMC_CTL |= FMC_CTL_LK; +} + + +/*! + \brief FMC erase page + \param[in] page_address: the page address to be erased. + \param[out] none + \retval state of FMC, refer to fmc_state_enum + */ +fmc_state_enum fmc_page_erase(uint32_t page_address) +{ + fmc_state_enum fmc_state; + fmc_state = fmc_ready_wait(FMC_TIMEOUT_COUNT); + /* if the last operation is completed, start page erase */ + if (FMC_READY == fmc_state) { + FMC_CTL |= FMC_CTL_PER; + FMC_ADDR = page_address; + FMC_CTL |= FMC_CTL_START; + /* wait for the FMC ready */ + fmc_state = fmc_ready_wait(FMC_TIMEOUT_COUNT); + /* reset the PER bit */ + FMC_CTL &= ~FMC_CTL_PER; + } + /* return the FMC state */ + return fmc_state; +} + +/*! + \brief FMC erase whole chip + \param[in] none + \param[out] none + \retval state of FMC, refer to fmc_state_enum + */ +fmc_state_enum fmc_mass_erase(void) +{ + fmc_state_enum fmc_state; + fmc_state = fmc_ready_wait(FMC_TIMEOUT_COUNT); + + if(FMC_READY == fmc_state){ + /* start whole chip erase */ + FMC_CTL |= FMC_CTL_MER; + FMC_CTL |= FMC_CTL_START; + /* wait for the FMC ready */ + fmc_state = fmc_ready_wait(FMC_TIMEOUT_COUNT); + /* reset the MER bit */ + FMC_CTL &= ~FMC_CTL_MER; + } + /* return the FMC state */ + return fmc_state; +} + +/*! + \brief FMC program a word at the corresponding address + \param[in] address: address to program + \param[in] data: word to program + \param[out] none + \retval state of FMC, refer to fmc_state_enum + */ +fmc_state_enum fmc_word_program(uint32_t address, uint32_t data) +{ + fmc_state_enum fmc_state = FMC_READY; + fmc_state = fmc_ready_wait(FMC_TIMEOUT_COUNT); + + if(FMC_READY == fmc_state){ + /* set the PG bit to start program */ + FMC_CTL |= FMC_CTL_PG; + REG32(address) = data; + /* wait for the FMC ready */ + fmc_state = fmc_ready_wait(FMC_TIMEOUT_COUNT); + /* reset the PG bit */ + FMC_CTL &= ~FMC_CTL_PG; + } + /* return the FMC state */ + return fmc_state; +} +/* + \brief FMC program a half word at the corresponding address + \param[in] address: address to program + \param[in] data: halfword to program + \param[out] none + \retval state of FMC, refer to fmc_state_enum +*/ +fmc_state_enum fmc_halfword_program(uint32_t address, uint16_t data) +{ + fmc_state_enum fmc_state = FMC_READY; + fmc_state = fmc_ready_wait(FMC_TIMEOUT_COUNT); + + if(FMC_READY == fmc_state){ + /* set the PG bit to start program */ + FMC_CTL |= FMC_CTL_PG; + REG16(address) = data; + /* wait for the FMC ready */ + fmc_state = fmc_ready_wait(FMC_TIMEOUT_COUNT); + /* reset the PG bit */ + FMC_CTL &= ~FMC_CTL_PG; + } + /* return the FMC state */ + return fmc_state; +} + +/*! + \brief unlock the option byte operation + \param[in] none + \param[out] none + \retval none + */ +void ob_unlock(void) +{ + if(RESET == (FMC_CTL & FMC_CTL_OBWEN)){ + /* write the FMC key */ + FMC_OBKEY = UNLOCK_KEY0; + FMC_OBKEY = UNLOCK_KEY1; + } + + /* wait until OBWEN bit is set by hardware */ + while (RESET == (FMC_CTL & FMC_CTL_OBWEN)){ + } +} + +/*! + \brief lock the option byte operation + \param[in] none + \param[out] none + \retval none + */ +void ob_lock(void) +{ + /* reset the OBWEN bit */ + FMC_CTL &= ~FMC_CTL_OBWEN; +} + +/*! + \brief erase the FMC option byte + unlock the FMC_CTL and option byte before calling this function + \param[in] none + \param[out] none + \retval state of FMC, refer to fmc_state_enum + */ +fmc_state_enum ob_erase(void) +{ + uint16_t temp_spc = FMC_NSPC; + + fmc_state_enum fmc_state = fmc_ready_wait(FMC_TIMEOUT_COUNT); + + /* check the option byte security protection value */ + if(RESET != ob_spc_get()){ + temp_spc = FMC_USPC; + } + + if(FMC_READY == fmc_state){ + + /* start erase the option byte */ + FMC_CTL |= FMC_CTL_OBER; + FMC_CTL |= FMC_CTL_START; + + /* wait for the FMC ready */ + fmc_state = fmc_ready_wait(FMC_TIMEOUT_COUNT); + + if(FMC_READY == fmc_state){ + /* reset the OBER bit */ + FMC_CTL &= ~FMC_CTL_OBER; + /* set the OBPG bit */ + FMC_CTL |= FMC_CTL_OBPG; + /* no security protection */ + OB_SPC = (uint16_t) temp_spc; + /* wait for the FMC ready */ + fmc_state = fmc_ready_wait(FMC_TIMEOUT_COUNT); + if (FMC_TOERR != fmc_state) { + /* reset the OBPG bit */ + FMC_CTL &= ~FMC_CTL_OBPG; + } + }else{ + if(FMC_TOERR != fmc_state){ + /* reset the OBPG bit */ + FMC_CTL &= ~FMC_CTL_OBPG; + } + } + } + /* return the FMC state */ + return fmc_state; +} + +/*! + \brief enable write protection + \param[in] ob_wp: specify sector to be write protected, set the bit to 1 if + you want to protect the corresponding pages. meanwhile, sector + macro could used to set specific sector write protected. + one or more parameters can be selected which are shown as below: + \arg OB_WP_x(x = 0..31): write protect specify sector + \arg OB_WP_ALL: write protect all sector + \param[out] none + \retval state of FMC, refer to fmc_state_enum + */ +fmc_state_enum ob_write_protection_enable(uint32_t ob_wp) +{ + uint16_t temp_wp0, temp_wp1, temp_wp2, temp_wp3; + + fmc_state_enum fmc_state = fmc_ready_wait(FMC_TIMEOUT_COUNT); + + ob_wp = (uint32_t) (~ob_wp); + temp_wp0 = (uint16_t) (ob_wp & OB_WP0_WP0); + temp_wp1 = (uint16_t) ((ob_wp & OB_WP1_WP1) >> 8U); + temp_wp2 = (uint16_t) ((ob_wp & OB_WP2_WP2) >> 16U); + temp_wp3 = (uint16_t) ((ob_wp & OB_WP3_WP3) >> 24U); + + if(FMC_READY == fmc_state){ + + /* set the OBPG bit*/ + FMC_CTL |= FMC_CTL_OBPG; + + if(0xFFU != temp_wp0){ + OB_WP0 = temp_wp0; + + /* wait for the FMC ready */ + fmc_state = fmc_ready_wait(FMC_TIMEOUT_COUNT); + } + if((FMC_READY == fmc_state) && (0xFFU != temp_wp1)){ + OB_WP1 = temp_wp1; + + /* wait for the FMC ready */ + fmc_state = fmc_ready_wait(FMC_TIMEOUT_COUNT); + } + if((FMC_READY == fmc_state) && (0xFFU != temp_wp2)){ + OB_WP2 = temp_wp2; + + /* wait for the FMC ready */ + fmc_state = fmc_ready_wait(FMC_TIMEOUT_COUNT); + } + if((FMC_READY == fmc_state) && (0xFFU != temp_wp3)){ + OB_WP3 = temp_wp3; + + /* wait for the FMC ready */ + fmc_state = fmc_ready_wait(FMC_TIMEOUT_COUNT); + } + if(FMC_TOERR != fmc_state){ + /* reset the OBPG bit */ + FMC_CTL &= ~FMC_CTL_OBPG; + } + } + /* return the FMC state */ + return fmc_state; +} + +/*! + \brief configure security protection + \param[in] ob_spc: specify security protection + only one parameter can be selected which is shown as below: + \arg FMC_NSPC: no security protection + \arg FMC_USPC: under security protection + \param[out] none + \retval state of FMC, refer to fmc_state_enum + */ +fmc_state_enum ob_security_protection_config(uint8_t ob_spc) +{ + fmc_state_enum fmc_state = fmc_ready_wait(FMC_TIMEOUT_COUNT); + + if(FMC_READY == fmc_state){ + FMC_CTL |= FMC_CTL_OBER; + FMC_CTL |= FMC_CTL_START; + + /* wait for the FMC ready */ + fmc_state = fmc_ready_wait(FMC_TIMEOUT_COUNT); + + if(FMC_READY == fmc_state){ + /* reset the OBER bit */ + FMC_CTL &= ~FMC_CTL_OBER; + + /* start the option byte program */ + FMC_CTL |= FMC_CTL_OBPG; + + OB_SPC = (uint16_t) ob_spc; + + /* wait for the FMC ready */ + fmc_state = fmc_ready_wait(FMC_TIMEOUT_COUNT); + + if (FMC_TOERR != fmc_state) { + /* reset the OBPG bit */ + FMC_CTL &= ~FMC_CTL_OBPG; + } + }else{ + if (FMC_TOERR != fmc_state) { + /* reset the OBER bit */ + FMC_CTL &= ~FMC_CTL_OBER; + } + } + } + /* return the FMC state */ + return fmc_state; +} + +/*! + \brief program the FMC user option byte + \param[in] ob_fwdgt: option byte watchdog value + \arg OB_FWDGT_SW: software free watchdog + \arg OB_FWDGT_HW: hardware free watchdog + \param[in] ob_deepsleep: option byte deepsleep reset value + \arg OB_DEEPSLEEP_NRST: no reset when entering deepsleep mode + \arg OB_DEEPSLEEP_RST: generate a reset instead of entering deepsleep mode + \param[in] ob_stdby:option byte standby reset value + \arg OB_STDBY_NRST: no reset when entering standby mode + \arg OB_STDBY_RST: generate a reset instead of entering standby mode + \param[in] ob_boot: specifies the option byte boot bank value + \arg OB_BOOT_B0: boot from bank0 + \param[out] none + \retval state of FMC, refer to fmc_state_enum + */ +fmc_state_enum ob_user_write(uint8_t ob_fwdgt, uint8_t ob_deepsleep, uint8_t ob_stdby, uint8_t ob_boot) +{ + fmc_state_enum fmc_state = FMC_READY; + uint8_t temp; + + /* wait for the FMC ready */ + fmc_state = fmc_ready_wait(FMC_TIMEOUT_COUNT); + + if(FMC_READY == fmc_state){ + /* set the OBPG bit*/ + FMC_CTL |= FMC_CTL_OBPG; + + temp = ((uint8_t)((uint8_t)((uint8_t)(ob_boot | ob_fwdgt) | ob_deepsleep) | ob_stdby) | OB_USER_MASK); + OB_USER = (uint16_t) temp; + + /* wait for the FMC ready */ + fmc_state = fmc_ready_wait(FMC_TIMEOUT_COUNT); + + if(FMC_TOERR != fmc_state){ + /* reset the OBPG bit */ + FMC_CTL &= ~FMC_CTL_OBPG; + } + } + /* return the FMC state */ + return fmc_state; +} + +/*! + \brief program the FMC data option byte + \param[in] address: the option bytes address to be programmed + \param[in] data: the byte to be programmed + \param[out] none + \retval state of FMC, refer to fmc_state_enum + */ +fmc_state_enum ob_data_program(uint32_t address, uint8_t data) +{ + fmc_state_enum fmc_state = fmc_ready_wait(FMC_TIMEOUT_COUNT); + + if(FMC_READY == fmc_state){ + /* set the OBPG bit */ + FMC_CTL |= FMC_CTL_OBPG; + REG16(address) = data; + + /* wait for the FMC ready */ + fmc_state = fmc_ready_wait(FMC_TIMEOUT_COUNT); + + if(FMC_TOERR != fmc_state){ + /* reset the OBPG bit */ + FMC_CTL &= ~FMC_CTL_OBPG; + } + } + /* return the FMC state */ + return fmc_state; +} + +/*! + \brief get OB_USER in register FMC_OBSTAT + \param[in] none + \param[out] none + \retval the FMC user option byte values + */ +uint8_t ob_user_get(void) +{ + /* return the FMC user option byte value */ + return (uint8_t) (FMC_OBSTAT >> 2U); +} + +/*! + \brief get OB_DATA in register FMC_OBSTAT + \param[in] none + \param[out] none + \retval ob_data + */ +uint16_t ob_data_get(void) +{ + return (uint16_t) (FMC_OBSTAT >> 10U); +} + +/*! + \brief get the FMC option byte write protection + \param[in] none + \param[out] none + \retval the FMC write protection option byte value + */ +uint32_t ob_write_protection_get(void) +{ + /* return the FMC write protection option byte value */ + return FMC_WP; +} + +/*! + \brief get FMC option byte security protection state + \param[in] none + \param[out] none + \retval FlagStatus: SET or RESET + */ +FlagStatus ob_spc_get(void) +{ + FlagStatus spc_state = RESET; + + if(RESET != (FMC_OBSTAT & FMC_OBSTAT_SPC)){ + spc_state = SET; + }else{ + spc_state = RESET; + } + return spc_state; +} + +/*! + \brief enable FMC interrupt + \param[in] interrupt: the FMC interrupt source + only one parameter can be selected which is shown as below: + \arg FMC_INT_END: enable FMC end of program interrupt + \arg FMC_INT_ERR: enable FMC error interrupt + \param[out] none + \retval none + */ +void fmc_interrupt_enable(fmc_int_enum interrupt) +{ + FMC_CTL |= (uint32_t)interrupt; +} + +/*! + \brief disable FMC interrupt + \param[in] interrupt: the FMC interrupt source + only one parameter can be selected which is shown as below: + \arg FMC_INT_END: enable FMC end of program interrupt + \arg FMC_INT_ERR: enable FMC error interrupt + \param[out] none + \retval none + */ +void fmc_interrupt_disable(fmc_int_enum interrupt) +{ + FMC_CTL &= ~(uint32_t)interrupt; +} + +/*! + \brief check flag is set or not + \param[in] flag: check FMC flag + only one parameter can be selected which is shown as below: + \arg FMC_FLAG_BUSY: FMC busy flag + \arg FMC_FLAG_PGERR: FMC operation error flag + \arg FMC_FLAG_WPERR: FMC erase/program protection error flag + \arg FMC_FLAG_END: FMC end of operation flag + \param[out] none + \retval FlagStatus: SET or RESET + */ +FlagStatus fmc_flag_get(fmc_flag_enum flag) +{ + FlagStatus status = RESET; + + if(FMC_STAT & flag){ + status = SET; + } + /* return the state of corresponding FMC flag */ + return status; +} + +/*! + \brief clear the FMC flag + \param[in] flag: clear FMC flag + only one parameter can be selected which is shown as below: + \arg FMC_FLAG_PGERR: FMC operation error flag + \arg FMC_FLAG_WPERR: FMC erase/program protection error flag + \arg FMC_FLAG_END: FMC end of operation flag + \param[out] none + \retval none + */ +void fmc_flag_clear(fmc_flag_enum flag) +{ + /* clear the flags */ + FMC_STAT = flag; +} + +/*! + \brief get FMC interrupt flag state + \param[in] flag: FMC interrupt flags, refer to fmc_interrupt_flag_enum + only one parameter can be selected which is shown as below: + \arg FMC_INT_FLAG_PGERR: FMC operation error interrupt flag + \arg FMC_INT_FLAG_WPERR: FMC erase/program protection error interrupt flag + \arg FMC_INT_FLAG_END: FMC end of operation interrupt flag + \param[out] none + \retval FlagStatus: SET or RESET + */ +FlagStatus fmc_interrupt_flag_get(fmc_interrupt_flag_enum flag) +{ + FlagStatus status = RESET; + + if(FMC_STAT & flag){ + status = SET; + } + /* return the state of corresponding FMC flag */ + return status; +} + +/*! + \brief clear FMC interrupt flag state + \param[in] flag: FMC interrupt flags, refer to can_interrupt_flag_enum + only one parameter can be selected which is shown as below: + \arg FMC_INT_FLAG_PGERR: FMC operation error interrupt flag + \arg FMC_INT_FLAG_WPERR: FMC erase/program protection error interrupt flag + \arg FMC_INT_FLAG_END: FMC end of operation interrupt flag + \param[out] none + \retval none + */ +void fmc_interrupt_flag_clear(fmc_interrupt_flag_enum flag) +{ + /* clear the flags */ + FMC_STAT = flag; +} + +/*! + \brief get the FMC state + \param[in] none + \param[out] none + \retval state of FMC, refer to fmc_state_enum + */ +fmc_state_enum fmc_state_get(void) +{ + fmc_state_enum fmc_state = FMC_READY; + + if((uint32_t) 0x00U != (FMC_STAT & FMC_STAT_BUSY)){ + fmc_state = FMC_BUSY; + }else{ + if((uint32_t) 0x00U != (FMC_STAT & FMC_STAT_WPERR)){ + fmc_state = FMC_WPERR; + }else{ + if((uint32_t) 0x00U != (FMC_STAT & (FMC_STAT_PGERR))){ + fmc_state = FMC_PGERR; + } + } + } + /* return the FMC state */ + return fmc_state; +} + +/*! + \brief check whether FMC is ready or not + \param[in] timeout: count of loop + \param[out] none + \retval state of FMC, refer to fmc_state_enum + */ +fmc_state_enum fmc_ready_wait(uint32_t timeout) +{ + fmc_state_enum fmc_state = FMC_BUSY; + + /* wait for FMC ready */ + do{ + /* get FMC state */ + fmc_state = fmc_state_get(); + timeout--; + }while((FMC_BUSY == fmc_state) && (0x00U != timeout)); + + if(FMC_BUSY == fmc_state){ + fmc_state = FMC_TOERR; + } + /* return the FMC state */ + return fmc_state; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_fwdgt.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_fwdgt.c new file mode 100644 index 0000000000..c46b5b14c7 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_fwdgt.c @@ -0,0 +1,152 @@ +/*! + \file gd32vf103_fwdgt.c + \brief FWDGT driver + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "gd32vf103_fwdgt.h" + +/* write value to FWDGT_CTL_CMD bit field */ +#define CTL_CMD(regval) (BITS(0,15) & ((uint32_t)(regval) << 0)) +/* write value to FWDGT_RLD_RLD bit field */ +#define RLD_RLD(regval) (BITS(0,11) & ((uint32_t)(regval) << 0)) + +/*! + \brief enable write access to FWDGT_PSC and FWDGT_RLD + \param[in] none + \param[out] none + \retval none +*/ +void fwdgt_write_enable(void) +{ + FWDGT_CTL = FWDGT_WRITEACCESS_ENABLE; +} + +/*! + \brief disable write access to FWDGT_PSC and FWDGT_RLD + \param[in] none + \param[out] none + \retval none +*/ +void fwdgt_write_disable(void) +{ + FWDGT_CTL = FWDGT_WRITEACCESS_DISABLE; +} + +/*! + \brief start the free watchdog timer counter + \param[in] none + \param[out] none + \retval none +*/ +void fwdgt_enable(void) +{ + FWDGT_CTL = FWDGT_KEY_ENABLE; +} + +/*! + \brief reload the counter of FWDGT + \param[in] none + \param[out] none + \retval none +*/ +void fwdgt_counter_reload(void) +{ + FWDGT_CTL = FWDGT_KEY_RELOAD; +} + +/*! + \brief configure counter reload value, and prescaler divider value + \param[in] reload_value: specify reload value(0x0000 - 0x0FFF) + \param[in] prescaler_div: FWDGT prescaler value + only one parameter can be selected which is shown as below: + \arg FWDGT_PSC_DIV4: FWDGT prescaler set to 4 + \arg FWDGT_PSC_DIV8: FWDGT prescaler set to 8 + \arg FWDGT_PSC_DIV16: FWDGT prescaler set to 16 + \arg FWDGT_PSC_DIV32: FWDGT prescaler set to 32 + \arg FWDGT_PSC_DIV64: FWDGT prescaler set to 64 + \arg FWDGT_PSC_DIV128: FWDGT prescaler set to 128 + \arg FWDGT_PSC_DIV256: FWDGT prescaler set to 256 + \param[out] none + \retval ErrStatus: ERROR or SUCCESS +*/ +ErrStatus fwdgt_config(uint16_t reload_value, uint8_t prescaler_div) +{ + uint32_t timeout = FWDGT_PSC_TIMEOUT; + uint32_t flag_status = RESET; + + /* enable write access to FWDGT_PSC,and FWDGT_RLD */ + FWDGT_CTL = FWDGT_WRITEACCESS_ENABLE; + /* wait until the PUD flag to be reset */ + do{ + flag_status = FWDGT_STAT & FWDGT_STAT_PUD; + }while((--timeout > 0U) && ((uint32_t)RESET != flag_status)); + + if((uint32_t)RESET != flag_status){ + return ERROR; + } + /* configure FWDGT */ + FWDGT_PSC = (uint32_t)prescaler_div; + + timeout = FWDGT_RLD_TIMEOUT; + /* wait until the RUD flag to be reset */ + do{ + flag_status = FWDGT_STAT & FWDGT_STAT_RUD; + }while((--timeout > 0U) && ((uint32_t)RESET != flag_status)); + + if((uint32_t)RESET != flag_status){ + return ERROR; + } + FWDGT_RLD = RLD_RLD(reload_value); + /* reload the counter */ + FWDGT_CTL = FWDGT_KEY_RELOAD; + + return SUCCESS; +} + +/*! + \brief get flag state of FWDGT + \param[in] flag: flag to get + only one parameter can be selected which is shown as below: + \arg FWDGT_FLAG_PUD: a write operation to FWDGT_PSC register is on going + \arg FWDGT_FLAG_RUD: a write operation to FWDGT_RLD register is on going + \param[out] none + \retval FlagStatus: SET or RESET +*/ +FlagStatus fwdgt_flag_get(uint16_t flag) +{ + if(FWDGT_STAT & flag){ + return SET; + } + + return RESET; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_gpio.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_gpio.c new file mode 100644 index 0000000000..9b151282be --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_gpio.c @@ -0,0 +1,503 @@ +/*! + \file gd32vf103_gpio.c + \brief GPIO driver + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "gd32vf103_gpio.h" + +#define AFIO_EXTI_SOURCE_MASK ((uint8_t)0x03U) /*!< AFIO exti source selection mask*/ +#define AFIO_EXTI_SOURCE_FIELDS ((uint8_t)0x04U) /*!< select AFIO exti source registers */ +#define LSB_16BIT_MASK ((uint16_t)0xFFFFU) /*!< LSB 16-bit mask */ +#define PCF_POSITION_MASK ((uint32_t)0x000F0000U) /*!< AFIO_PCF register position mask */ +#define PCF_SWJCFG_MASK ((uint32_t)0xF0FFFFFFU) /*!< AFIO_PCF register SWJCFG mask */ +#define PCF_LOCATION1_MASK ((uint32_t)0x00200000U) /*!< AFIO_PCF register location1 mask */ +#define PCF_LOCATION2_MASK ((uint32_t)0x00100000U) /*!< AFIO_PCF register location2 mask */ +#define AFIO_PCF1_FIELDS ((uint32_t)0x80000000U) /*!< select AFIO_PCF1 register */ +#define GPIO_OUTPUT_PORT_OFFSET ((uint32_t)4U) /*!< GPIO event output port offset*/ + +/*! + \brief reset GPIO port + \param[in] gpio_periph: GPIOx(x = A,B,C,D,E) + \param[out] none + \retval none +*/ +void gpio_deinit(uint32_t gpio_periph) +{ + switch (gpio_periph) { + case GPIOA: + /* reset GPIOA */ + rcu_periph_reset_enable(RCU_GPIOARST); + rcu_periph_reset_disable(RCU_GPIOARST); + break; + case GPIOB: + /* reset GPIOB */ + rcu_periph_reset_enable(RCU_GPIOBRST); + rcu_periph_reset_disable(RCU_GPIOBRST); + break; + case GPIOC: + /* reset GPIOC */ + rcu_periph_reset_enable(RCU_GPIOCRST); + rcu_periph_reset_disable(RCU_GPIOCRST); + break; + case GPIOD: + /* reset GPIOD */ + rcu_periph_reset_enable(RCU_GPIODRST); + rcu_periph_reset_disable(RCU_GPIODRST); + break; + case GPIOE: + /* reset GPIOE */ + rcu_periph_reset_enable(RCU_GPIOERST); + rcu_periph_reset_disable(RCU_GPIOERST); + break; + default: + break; + } +} + +/*! + \brief reset alternate function I/O(AFIO) + \param[in] none + \param[out] none + \retval none +*/ +void gpio_afio_deinit(void) +{ + rcu_periph_reset_enable(RCU_AFRST); + rcu_periph_reset_disable(RCU_AFRST); +} + +/*! + \brief GPIO parameter initialization + \param[in] gpio_periph: GPIOx(x = A,B,C,D,E) + \param[in] mode: gpio pin mode + only one parameter can be selected which is shown as below: + \arg GPIO_MODE_AIN: analog input mode + \arg GPIO_MODE_IN_FLOATING: floating input mode + \arg GPIO_MODE_IPD: pull-down input mode + \arg GPIO_MODE_IPU: pull-up input mode + \arg GPIO_MODE_OUT_OD: GPIO output with open-drain + \arg GPIO_MODE_OUT_PP: GPIO output with push-pull + \arg GPIO_MODE_AF_OD: AFIO output with open-drain + \arg GPIO_MODE_AF_PP: AFIO output with push-pull + \param[in] speed: gpio output max speed value + only one parameter can be selected which is shown as below: + \arg GPIO_OSPEED_10MHZ: output max speed 10MHz + \arg GPIO_OSPEED_2MHZ: output max speed 2MHz + \arg GPIO_OSPEED_50MHZ: output max speed 50MHz + \param[in] pin: GPIO pin + one or more parameters can be selected which are shown as below: + \arg GPIO_PIN_x(x=0..15), GPIO_PIN_ALL + + \param[out] none + \retval none +*/ +void gpio_init(uint32_t gpio_periph, uint32_t mode, uint32_t speed, + uint32_t pin) +{ + uint16_t i; + uint32_t temp_mode = 0U; + uint32_t reg = 0U; + + /* GPIO mode configuration */ + temp_mode = (uint32_t) (mode & ((uint32_t) 0x0FU)); + + /* GPIO speed configuration */ + if (((uint32_t) 0x00U) != ((uint32_t) mode & ((uint32_t) 0x10U))) { + /* output mode max speed:10MHz,2MHz,50MHz */ + temp_mode |= (uint32_t) speed; + } + + /* configure the eight low port pins with GPIO_CTL0 */ + for (i = 0U; i < 8U; i++) { + if ((1U << i) & pin) { + reg = GPIO_CTL0(gpio_periph); + + /* clear the specified pin mode bits */ + reg &= ~GPIO_MODE_MASK(i); + /* set the specified pin mode bits */ + reg |= GPIO_MODE_SET(i, temp_mode); + + /* set IPD or IPU */ + if (GPIO_MODE_IPD == mode) { + /* reset the corresponding OCTL bit */ + GPIO_BC(gpio_periph) = (uint32_t) ((1U << i) & pin); + } else { + /* set the corresponding OCTL bit */ + if (GPIO_MODE_IPU == mode) { + GPIO_BOP(gpio_periph) = (uint32_t) ((1U << i) & pin); + } + } + /* set GPIO_CTL0 register */ + GPIO_CTL0(gpio_periph) = reg; + } + } + /* configure the eight high port pins with GPIO_CTL1 */ + for (i = 8U; i < 16U; i++) { + if ((1U << i) & pin) { + reg = GPIO_CTL1(gpio_periph); + + /* clear the specified pin mode bits */ + reg &= ~GPIO_MODE_MASK(i - 8U); + /* set the specified pin mode bits */ + reg |= GPIO_MODE_SET(i - 8U, temp_mode); + + /* set IPD or IPU */ + if (GPIO_MODE_IPD == mode) { + /* reset the corresponding OCTL bit */ + GPIO_BC(gpio_periph) = (uint32_t) ((1U << i) & pin); + } else { + /* set the corresponding OCTL bit */ + if (GPIO_MODE_IPU == mode) { + GPIO_BOP(gpio_periph) = (uint32_t) ((1U << i) & pin); + } + } + /* set GPIO_CTL1 register */ + GPIO_CTL1(gpio_periph) = reg; + } + } +} + +/*! + \brief set GPIO pin + \param[in] gpio_periph: GPIOx(x = A,B,C,D,E) + \param[in] pin: GPIO pin + one or more parameters can be selected which are shown as below: + \arg GPIO_PIN_x(x=0..15), GPIO_PIN_ALL + \param[out] none + \retval none +*/ +void gpio_bit_set(uint32_t gpio_periph, uint32_t pin) +{ + GPIO_BOP(gpio_periph) = (uint32_t) pin; +} + +/*! + \brief reset GPIO pin + \param[in] gpio_periph: GPIOx(x = A,B,C,D,E) + \param[in] pin: GPIO pin + one or more parameters can be selected which are shown as below: + \arg GPIO_PIN_x(x=0..15), GPIO_PIN_ALL + \param[out] none + \retval none +*/ +void gpio_bit_reset(uint32_t gpio_periph, uint32_t pin) +{ + GPIO_BC(gpio_periph) = (uint32_t) pin; +} + +/*! + \brief write data to the specified GPIO pin + \param[in] gpio_periph: GPIOx(x = A,B,C,D,E) + \param[in] pin: GPIO pin + one or more parameters can be selected which are shown as below: + \arg GPIO_PIN_x(x=0..15), GPIO_PIN_ALL + \param[in] bit_value: SET or RESET + only one parameter can be selected which is shown as below: + \arg RESET: clear the port pin + \arg SET: set the port pin + \param[out] none + \retval none +*/ +void gpio_bit_write(uint32_t gpio_periph, uint32_t pin, bit_status bit_value) +{ + if (RESET != bit_value) { + GPIO_BOP(gpio_periph) = (uint32_t) pin; + } else { + GPIO_BC(gpio_periph) = (uint32_t) pin; + } +} + +/*! + \brief write data to the specified GPIO port + \param[in] gpio_periph: GPIOx(x = A,B,C,D,E) + \param[in] data: specify the value to be written to the port output data register + \param[out] none + \retval none +*/ +void gpio_port_write(uint32_t gpio_periph, uint16_t data) +{ + GPIO_OCTL(gpio_periph) = (uint32_t) data; +} + +/*! + \brief get GPIO pin input status + \param[in] gpio_periph: GPIOx(x = A,B,C,D,E) + \param[in] pin: GPIO pin + only one parameter can be selected which are shown as below: + \arg GPIO_PIN_x(x=0..15), GPIO_PIN_ALL + \param[out] none + \retval input status of gpio pin: SET or RESET +*/ +FlagStatus gpio_input_bit_get(uint32_t gpio_periph, uint32_t pin) +{ + if ((uint32_t) RESET != (GPIO_ISTAT(gpio_periph) & (pin))) { + return SET; + } else { + return RESET; + } +} + +/*! + \brief get GPIO port input status + \param[in] gpio_periph: GPIOx(x = A,B,C,D,E) + \param[out] none + \retval input status of gpio all pins +*/ +uint16_t gpio_input_port_get(uint32_t gpio_periph) +{ + return (uint16_t) (GPIO_ISTAT(gpio_periph)); +} + +/*! + \brief get GPIO pin output status + \param[in] gpio_periph: GPIOx(x = A,B,C,D,E) + \param[in] pin: GPIO pin + only one parameter can be selected which are shown as below: + \arg GPIO_PIN_x(x=0..15), GPIO_PIN_ALL + \param[out] none + \retval output status of gpio pin: SET or RESET +*/ +FlagStatus gpio_output_bit_get(uint32_t gpio_periph, uint32_t pin) +{ + if ((uint32_t) RESET != (GPIO_OCTL(gpio_periph) & (pin))) { + return SET; + } else { + return RESET; + } +} + +/*! + \brief get GPIO port output status + \param[in] gpio_periph: GPIOx(x = A,B,C,D,E) + \param[out] none + \retval output status of gpio all pins +*/ +uint16_t gpio_output_port_get(uint32_t gpio_periph) +{ + return ((uint16_t) GPIO_OCTL(gpio_periph)); +} + +/*! + \brief configure GPIO pin remap + \param[in] gpio_remap: select the pin to remap + only one parameter can be selected which are shown as below: + \arg GPIO_SPI0_REMAP: SPI0 remapping + \arg GPIO_I2C0_REMAP: I2C0 remapping + \arg GPIO_USART0_REMAP: USART0 remapping + \arg GPIO_USART1_REMAP: USART1 remapping + \arg GPIO_USART2_PARTIAL_REMAP: USART2 partial remapping + \arg GPIO_USART2_FULL_REMAP: USART2 full remapping + \arg GPIO_TIMER0_PARTIAL_REMAP: TIMER0 partial remapping + \arg GPIO_TIMER0_FULL_REMAP: TIMER0 full remapping + \arg GPIO_TIMER1_PARTIAL_REMAP0: TIMER1 partial remapping + \arg GPIO_TIMER1_PARTIAL_REMAP1: TIMER1 partial remapping + \arg GPIO_TIMER1_FULL_REMAP: TIMER1 full remapping + \arg GPIO_TIMER2_PARTIAL_REMAP: TIMER2 partial remapping + \arg GPIO_TIMER2_FULL_REMAP: TIMER2 full remapping + \arg GPIO_TIMER3_REMAP: TIMER3 remapping + \arg GPIO_CAN0_PARTIAL_REMAP: CAN0 partial remapping + \arg GPIO_CAN0_FULL_REMAP: CAN0 full remapping + \arg GPIO_PD01_REMAP: PD01 remapping + \arg GPIO_TIMER4CH3_IREMAP: TIMER4 channel3 internal remapping + \arg GPIO_CAN1_REMAP: CAN1 remapping + \arg GPIO_SWJ_NONJTRST_REMAP: JTAG-DP,but without NJTRST + \arg GPIO_SWJ_DISABLE_REMAP: JTAG-DP disabled + \arg GPIO_SPI2_REMAP: SPI2 remapping + \arg GPIO_TIMER1ITI1_REMAP: TIMER1 internal trigger 1 remapping + \arg GPIO_EXMC_NADV_REMAP: EXMC_NADV connect/disconnect + \param[in] newvalue: ENABLE or DISABLE + \param[out] none + \retval none +*/ +void gpio_pin_remap_config(uint32_t remap, ControlStatus newvalue) +{ + uint32_t remap1 = 0U, remap2 = 0U, temp_reg = 0U, temp_mask = 0U; + + if (AFIO_PCF1_FIELDS == (remap & AFIO_PCF1_FIELDS)) { + /* get AFIO_PCF1 regiter value */ + temp_reg = AFIO_PCF1; + } else { + /* get AFIO_PCF0 regiter value */ + temp_reg = AFIO_PCF0; + } + + temp_mask = (remap & PCF_POSITION_MASK) >> 0x10U; + remap1 = remap & LSB_16BIT_MASK; + + /* judge pin remap type */ + if ((PCF_LOCATION1_MASK | PCF_LOCATION2_MASK) + == (remap & (PCF_LOCATION1_MASK | PCF_LOCATION2_MASK))) { + temp_reg &= PCF_SWJCFG_MASK; + AFIO_PCF0 &= PCF_SWJCFG_MASK; + } else if (PCF_LOCATION2_MASK == (remap & PCF_LOCATION2_MASK)) { + remap2 = ((uint32_t) 0x03U) << temp_mask; + temp_reg &= ~remap2; + temp_reg |= ~PCF_SWJCFG_MASK; + } else { + temp_reg &= ~(remap1 << ((remap >> 0x15U) * 0x10U)); + temp_reg |= ~PCF_SWJCFG_MASK; + } + + /* set pin remap value */ + if (DISABLE != newvalue) { + temp_reg |= (remap1 << ((remap >> 0x15U) * 0x10U)); + } + + if (AFIO_PCF1_FIELDS == (remap & AFIO_PCF1_FIELDS)) { + /* set AFIO_PCF1 regiter value */ + AFIO_PCF1 = temp_reg; + } else { + /* set AFIO_PCF0 regiter value */ + AFIO_PCF0 = temp_reg; + } +} + +/*! + \brief select GPIO pin exti sources + \param[in] gpio_outputport: gpio event output port + only one parameter can be selected which are shown as below: + \arg GPIO_PORT_SOURCE_GPIOA: output port source A + \arg GPIO_PORT_SOURCE_GPIOB: output port source B + \arg GPIO_PORT_SOURCE_GPIOC: output port source C + \arg GPIO_PORT_SOURCE_GPIOD: output port source D + \arg GPIO_PORT_SOURCE_GPIOE: output port source E + \param[in] gpio_outputpin: GPIO_PIN_SOURCE_x(x=0..15) + \param[out] none + \retval none +*/ +void gpio_exti_source_select(uint8_t output_port, uint8_t output_pin) +{ + uint32_t source = 0U; + source = ((uint32_t) 0x0FU) + << (AFIO_EXTI_SOURCE_FIELDS * (output_pin & AFIO_EXTI_SOURCE_MASK)); + + /* select EXTI sources */ + if (GPIO_PIN_SOURCE_4 > output_pin) { + /* select EXTI0/EXTI1/EXTI2/EXTI3 */ + AFIO_EXTISS0 &= ~source; + AFIO_EXTISS0 |= (((uint32_t) output_port) + << (AFIO_EXTI_SOURCE_FIELDS + * (output_pin & AFIO_EXTI_SOURCE_MASK))); + } else if (GPIO_PIN_SOURCE_8 > output_pin) { + /* select EXTI4/EXTI5/EXTI6/EXTI7 */ + AFIO_EXTISS1 &= ~source; + AFIO_EXTISS1 |= (((uint32_t) output_port) + << (AFIO_EXTI_SOURCE_FIELDS + * (output_pin & AFIO_EXTI_SOURCE_MASK))); + } else if (GPIO_PIN_SOURCE_12 > output_pin) { + /* select EXTI8/EXTI9/EXTI10/EXTI11 */ + AFIO_EXTISS2 &= ~source; + AFIO_EXTISS2 |= (((uint32_t) output_port) + << (AFIO_EXTI_SOURCE_FIELDS + * (output_pin & AFIO_EXTI_SOURCE_MASK))); + } else { + /* select EXTI12/EXTI13/EXTI14/EXTI15 */ + AFIO_EXTISS3 &= ~source; + AFIO_EXTISS3 |= (((uint32_t) output_port) + << (AFIO_EXTI_SOURCE_FIELDS + * (output_pin & AFIO_EXTI_SOURCE_MASK))); + } +} + +/*! + \brief configure GPIO pin event output + \param[in] output_port: gpio event output port + only one parameter can be selected which are shown as below: + \arg GPIO_EVENT_PORT_GPIOA: event output port A + \arg GPIO_EVENT_PORT_GPIOB: event output port B + \arg GPIO_EVENT_PORT_GPIOC: event output port C + \arg GPIO_EVENT_PORT_GPIOD: event output port D + \arg GPIO_EVENT_PORT_GPIOE: event output port E + \param[in] output_pin: + only one parameter can be selected which are shown as below: + \arg GPIO_EVENT_PIN_x(x=0..15) + \param[out] none + \retval none +*/ +void gpio_event_output_config(uint8_t output_port, uint8_t output_pin) +{ + uint32_t reg = 0U; + reg = AFIO_EC; + + /* clear AFIO_EC_PORT and AFIO_EC_PIN bits */ + reg &= (uint32_t) (~(AFIO_EC_PORT | AFIO_EC_PIN)); + + reg |= (uint32_t) ((uint32_t) output_port << GPIO_OUTPUT_PORT_OFFSET); + reg |= (uint32_t) output_pin; + + AFIO_EC = reg; +} + +/*! + \brief enable GPIO pin event output + \param[in] none + \param[out] none + \retval none +*/ +void gpio_event_output_enable(void) +{ + AFIO_EC |= AFIO_EC_EOE; +} + +/*! + \brief disable GPIO pin event output + \param[in] none + \param[out] none + \retval none +*/ +void gpio_event_output_disable(void) +{ + AFIO_EC &= (uint32_t) (~AFIO_EC_EOE); +} + +/*! + \brief lock GPIO pin + \param[in] gpio_periph: GPIOx(x = A,B,C,D,E) + \param[in] pin: GPIO pin + one or more parameters can be selected which are shown as below: + \arg GPIO_PIN_x(x=0..15), GPIO_PIN_ALL + \param[out] none + \retval none +*/ +void gpio_pin_lock(uint32_t gpio_periph, uint32_t pin) +{ + uint32_t lock = 0x00010000U; + lock |= pin; + + /* lock key writing sequence: write 1 -> write 0 -> write 1 -> read 0 -> read 1 */ + GPIO_LOCK(gpio_periph) = (uint32_t) lock; + GPIO_LOCK(gpio_periph) = (uint32_t) pin; + GPIO_LOCK(gpio_periph) = (uint32_t) lock; + lock = GPIO_LOCK(gpio_periph); + lock = GPIO_LOCK(gpio_periph); +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_gpio.s b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_gpio.s new file mode 100644 index 0000000000..e607efad1d --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_gpio.s @@ -0,0 +1,19001 @@ + .file "gd32vf103_gpio.c" + .option nopic + .text +.Ltext0: + .cfi_sections .debug_frame + .align 1 + .globl gpio_deinit + .type gpio_deinit, @function +gpio_deinit: +.LFB2: + .file 1 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Source\\gd32vf103_gpio.c" + .loc 1 55 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw ra,28(sp) + sw s0,24(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 56 5 + lw a4,-20(s0) + li a5,1073815552 + addi a5,a5,-2048 + beq a4,a5,.L2 + lw a4,-20(s0) + li a5,1073815552 + addi a5,a5,-2048 + bgtu a4,a5,.L9 + lw a4,-20(s0) + li a5,1073811456 + addi a5,a5,1024 + beq a4,a5,.L4 + lw a4,-20(s0) + li a5,1073811456 + addi a5,a5,1024 + bgtu a4,a5,.L9 + lw a4,-20(s0) + li a5,1073811456 + beq a4,a5,.L5 + lw a4,-20(s0) + li a5,1073811456 + bgtu a4,a5,.L9 + lw a4,-20(s0) + li a5,1073811456 + addi a5,a5,-2048 + beq a4,a5,.L6 + lw a4,-20(s0) + li a5,1073811456 + addi a5,a5,-1024 + beq a4,a5,.L7 + .loc 1 83 9 + j .L9 +.L6: + .loc 1 59 9 + li a0,770 + call rcu_periph_reset_enable + .loc 1 60 9 + li a0,770 + call rcu_periph_reset_disable + .loc 1 61 9 + j .L8 +.L7: + .loc 1 64 9 + li a0,771 + call rcu_periph_reset_enable + .loc 1 65 9 + li a0,771 + call rcu_periph_reset_disable + .loc 1 66 9 + j .L8 +.L5: + .loc 1 69 9 + li a0,772 + call rcu_periph_reset_enable + .loc 1 70 9 + li a0,772 + call rcu_periph_reset_disable + .loc 1 71 9 + j .L8 +.L4: + .loc 1 74 9 + li a0,773 + call rcu_periph_reset_enable + .loc 1 75 9 + li a0,773 + call rcu_periph_reset_disable + .loc 1 76 9 + j .L8 +.L2: + .loc 1 79 9 + li a0,774 + call rcu_periph_reset_enable + .loc 1 80 9 + li a0,774 + call rcu_periph_reset_disable + .loc 1 81 9 + j .L8 +.L9: + .loc 1 83 9 + nop +.L8: + .loc 1 85 1 + nop + lw ra,28(sp) + .cfi_restore 1 + lw s0,24(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE2: + .size gpio_deinit, .-gpio_deinit + .align 1 + .globl gpio_afio_deinit + .type gpio_afio_deinit, @function +gpio_afio_deinit: +.LFB3: + .loc 1 94 1 + .cfi_startproc + addi sp,sp,-16 + .cfi_def_cfa_offset 16 + sw ra,12(sp) + sw s0,8(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,16 + .cfi_def_cfa 8, 0 + .loc 1 95 5 + li a0,768 + call rcu_periph_reset_enable + .loc 1 96 5 + li a0,768 + call rcu_periph_reset_disable + .loc 1 97 1 + nop + lw ra,12(sp) + .cfi_restore 1 + lw s0,8(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 16 + addi sp,sp,16 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE3: + .size gpio_afio_deinit, .-gpio_afio_deinit + .align 1 + .globl gpio_init + .type gpio_init, @function +gpio_init: +.LFB4: + .loc 1 126 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + sw a1,-40(s0) + sw a2,-44(s0) + sw a3,-48(s0) + .loc 1 128 14 + sw zero,-24(s0) + .loc 1 129 14 + sw zero,-28(s0) + .loc 1 132 15 + lw a5,-40(s0) + andi a5,a5,15 + sw a5,-24(s0) + .loc 1 135 48 + lw a5,-40(s0) + andi a5,a5,16 + .loc 1 135 8 + beq a5,zero,.L12 + .loc 1 137 19 + lw a4,-24(s0) + lw a5,-44(s0) + or a5,a4,a5 + sw a5,-24(s0) +.L12: + .loc 1 141 12 + sh zero,-18(s0) + .loc 1 141 5 + j .L13 +.L17: + .loc 1 142 17 + lhu a5,-18(s0) + li a4,1 + sll a4,a4,a5 + .loc 1 142 23 + lw a5,-48(s0) + and a5,a4,a5 + .loc 1 142 12 + beq a5,zero,.L14 + .loc 1 143 21 + lw a5,-36(s0) + .loc 1 143 17 + lw a5,0(a5) + sw a5,-28(s0) + .loc 1 146 34 + lhu a5,-18(s0) + slli a5,a5,2 + .loc 1 146 27 + li a4,15 + sll a5,a4,a5 + .loc 1 146 20 + not a5,a5 + .loc 1 146 17 + lw a4,-28(s0) + and a5,a4,a5 + sw a5,-28(s0) + .loc 1 148 61 + lhu a5,-18(s0) + slli a5,a5,2 + .loc 1 148 21 + lw a4,-24(s0) + sll a5,a4,a5 + .loc 1 148 17 + lw a4,-28(s0) + or a5,a4,a5 + sw a5,-28(s0) + .loc 1 151 16 + lw a4,-40(s0) + li a5,40 + bne a4,a5,.L15 + .loc 1 153 93 + lhu a5,-18(s0) + li a4,1 + sll a4,a4,a5 + .loc 1 153 40 + lw a5,-36(s0) + addi a5,a5,20 + .loc 1 153 19 + mv a3,a5 + .loc 1 153 77 + lw a5,-48(s0) + and a5,a4,a5 + .loc 1 153 75 + sw a5,0(a3) + j .L16 +.L15: + .loc 1 156 20 + lw a4,-40(s0) + li a5,72 + bne a4,a5,.L16 + .loc 1 157 97 + lhu a5,-18(s0) + li a4,1 + sll a4,a4,a5 + .loc 1 157 44 + lw a5,-36(s0) + addi a5,a5,16 + .loc 1 157 23 + mv a3,a5 + .loc 1 157 81 + lw a5,-48(s0) + and a5,a4,a5 + .loc 1 157 79 + sw a5,0(a3) +.L16: + .loc 1 161 15 + lw a5,-36(s0) + .loc 1 161 71 + lw a4,-28(s0) + sw a4,0(a5) +.L14: + .loc 1 141 27 discriminator 2 + lhu a5,-18(s0) + addi a5,a5,1 + sh a5,-18(s0) +.L13: + .loc 1 141 5 discriminator 1 + lhu a4,-18(s0) + li a5,7 + bleu a4,a5,.L17 + .loc 1 165 12 + li a5,8 + sh a5,-18(s0) + .loc 1 165 5 + j .L18 +.L22: + .loc 1 166 17 + lhu a5,-18(s0) + li a4,1 + sll a4,a4,a5 + .loc 1 166 23 + lw a5,-48(s0) + and a5,a4,a5 + .loc 1 166 12 + beq a5,zero,.L19 + .loc 1 167 42 + lw a5,-36(s0) + addi a5,a5,4 + .loc 1 167 17 + lw a5,0(a5) + sw a5,-28(s0) + .loc 1 170 39 + lhu a5,-18(s0) + addi a5,a5,-8 + .loc 1 170 34 + slli a5,a5,2 + .loc 1 170 27 + li a4,15 + sll a5,a4,a5 + .loc 1 170 20 + not a5,a5 + .loc 1 170 17 + lw a4,-28(s0) + and a5,a4,a5 + sw a5,-28(s0) + .loc 1 172 66 + lhu a5,-18(s0) + addi a5,a5,-8 + .loc 1 172 61 + slli a5,a5,2 + .loc 1 172 21 + lw a4,-24(s0) + sll a5,a4,a5 + .loc 1 172 17 + lw a4,-28(s0) + or a5,a4,a5 + sw a5,-28(s0) + .loc 1 175 16 + lw a4,-40(s0) + li a5,40 + bne a4,a5,.L20 + .loc 1 177 93 + lhu a5,-18(s0) + li a4,1 + sll a4,a4,a5 + .loc 1 177 40 + lw a5,-36(s0) + addi a5,a5,20 + .loc 1 177 19 + mv a3,a5 + .loc 1 177 77 + lw a5,-48(s0) + and a5,a4,a5 + .loc 1 177 75 + sw a5,0(a3) + j .L21 +.L20: + .loc 1 180 20 + lw a4,-40(s0) + li a5,72 + bne a4,a5,.L21 + .loc 1 181 97 + lhu a5,-18(s0) + li a4,1 + sll a4,a4,a5 + .loc 1 181 44 + lw a5,-36(s0) + addi a5,a5,16 + .loc 1 181 23 + mv a3,a5 + .loc 1 181 81 + lw a5,-48(s0) + and a5,a4,a5 + .loc 1 181 79 + sw a5,0(a3) +.L21: + .loc 1 185 36 + lw a5,-36(s0) + addi a5,a5,4 + .loc 1 185 15 + mv a4,a5 + .loc 1 185 71 + lw a5,-28(s0) + sw a5,0(a4) +.L19: + .loc 1 165 28 discriminator 2 + lhu a5,-18(s0) + addi a5,a5,1 + sh a5,-18(s0) +.L18: + .loc 1 165 5 discriminator 1 + lhu a4,-18(s0) + li a5,15 + bleu a4,a5,.L22 + .loc 1 188 1 + nop + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE4: + .size gpio_init, .-gpio_init + .align 1 + .globl gpio_bit_set + .type gpio_bit_set, @function +gpio_bit_set: +.LFB5: + .loc 1 200 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + sw a1,-24(s0) + .loc 1 201 28 + lw a5,-20(s0) + addi a5,a5,16 + .loc 1 201 7 + mv a4,a5 + .loc 1 201 63 + lw a5,-24(s0) + sw a5,0(a4) + .loc 1 202 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE5: + .size gpio_bit_set, .-gpio_bit_set + .align 1 + .globl gpio_bit_reset + .type gpio_bit_reset, @function +gpio_bit_reset: +.LFB6: + .loc 1 214 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + sw a1,-24(s0) + .loc 1 215 28 + lw a5,-20(s0) + addi a5,a5,20 + .loc 1 215 7 + mv a4,a5 + .loc 1 215 63 + lw a5,-24(s0) + sw a5,0(a4) + .loc 1 216 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE6: + .size gpio_bit_reset, .-gpio_bit_reset + .align 1 + .globl gpio_bit_write + .type gpio_bit_write, @function +gpio_bit_write: +.LFB7: + .loc 1 232 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + sw a1,-24(s0) + sw a2,-28(s0) + .loc 1 233 8 + lw a5,-28(s0) + beq a5,zero,.L26 + .loc 1 234 32 + lw a5,-20(s0) + addi a5,a5,16 + .loc 1 234 11 + mv a4,a5 + .loc 1 234 67 + lw a5,-24(s0) + sw a5,0(a4) + .loc 1 238 1 + j .L28 +.L26: + .loc 1 236 32 + lw a5,-20(s0) + addi a5,a5,20 + .loc 1 236 11 + mv a4,a5 + .loc 1 236 67 + lw a5,-24(s0) + sw a5,0(a4) +.L28: + .loc 1 238 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE7: + .size gpio_bit_write, .-gpio_bit_write + .align 1 + .globl gpio_port_write + .type gpio_port_write, @function +gpio_port_write: +.LFB8: + .loc 1 248 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + mv a5,a1 + sh a5,-22(s0) + .loc 1 249 28 + lw a5,-20(s0) + addi a5,a5,12 + .loc 1 249 7 + mv a4,a5 + .loc 1 249 65 + lhu a5,-22(s0) + .loc 1 249 63 + sw a5,0(a4) + .loc 1 250 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE8: + .size gpio_port_write, .-gpio_port_write + .align 1 + .globl gpio_input_bit_get + .type gpio_input_bit_get, @function +gpio_input_bit_get: +.LFB9: + .loc 1 262 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + sw a1,-24(s0) + .loc 1 263 53 + lw a5,-20(s0) + addi a5,a5,8 + .loc 1 263 31 + lw a4,0(a5) + .loc 1 263 88 + lw a5,-24(s0) + and a5,a4,a5 + .loc 1 263 8 + beq a5,zero,.L31 + .loc 1 264 16 + li a5,1 + j .L32 +.L31: + .loc 1 266 16 + li a5,0 +.L32: + .loc 1 268 1 + mv a0,a5 + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE9: + .size gpio_input_bit_get, .-gpio_input_bit_get + .align 1 + .globl gpio_input_port_get + .type gpio_input_port_get, @function +gpio_input_port_get: +.LFB10: + .loc 1 277 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 278 47 + lw a5,-20(s0) + addi a5,a5,8 + .loc 1 278 25 + lw a5,0(a5) + .loc 1 278 12 + slli a5,a5,16 + srli a5,a5,16 + .loc 1 279 1 + mv a0,a5 + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE10: + .size gpio_input_port_get, .-gpio_input_port_get + .align 1 + .globl gpio_output_bit_get + .type gpio_output_bit_get, @function +gpio_output_bit_get: +.LFB11: + .loc 1 291 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + sw a1,-24(s0) + .loc 1 292 53 + lw a5,-20(s0) + addi a5,a5,12 + .loc 1 292 31 + lw a4,0(a5) + .loc 1 292 88 + lw a5,-24(s0) + and a5,a4,a5 + .loc 1 292 8 + beq a5,zero,.L36 + .loc 1 293 16 + li a5,1 + j .L37 +.L36: + .loc 1 295 16 + li a5,0 +.L37: + .loc 1 297 1 + mv a0,a5 + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE11: + .size gpio_output_bit_get, .-gpio_output_bit_get + .align 1 + .globl gpio_output_port_get + .type gpio_output_port_get, @function +gpio_output_port_get: +.LFB12: + .loc 1 306 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 307 47 + lw a5,-20(s0) + addi a5,a5,12 + .loc 1 307 25 + lw a5,0(a5) + .loc 1 307 13 + slli a5,a5,16 + srli a5,a5,16 + .loc 1 308 1 + mv a0,a5 + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE12: + .size gpio_output_port_get, .-gpio_output_port_get + .align 1 + .globl gpio_pin_remap_config + .type gpio_pin_remap_config, @function +gpio_pin_remap_config: +.LFB13: + .loc 1 343 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + sw a1,-40(s0) + .loc 1 344 14 + sw zero,-24(s0) + .loc 1 344 27 + sw zero,-28(s0) + .loc 1 344 40 + sw zero,-20(s0) + .loc 1 344 55 + sw zero,-32(s0) + .loc 1 346 33 + lw a5,-36(s0) + .loc 1 346 8 + bge a5,zero,.L41 + .loc 1 348 21 + li a5,1073807360 + addi a5,a5,28 + .loc 1 348 18 + lw a5,0(a5) + sw a5,-20(s0) + j .L42 +.L41: + .loc 1 351 21 + li a5,1073807360 + addi a5,a5,4 + .loc 1 351 18 + lw a5,0(a5) + sw a5,-20(s0) +.L42: + .loc 1 354 51 + lw a5,-36(s0) + srli a5,a5,16 + .loc 1 354 15 + andi a5,a5,15 + sw a5,-32(s0) + .loc 1 355 12 + lw a4,-36(s0) + li a5,65536 + addi a5,a5,-1 + and a5,a4,a5 + sw a5,-24(s0) + .loc 1 359 23 + lw a4,-36(s0) + li a5,3145728 + and a4,a4,a5 + .loc 1 358 8 + li a5,3145728 + bne a4,a5,.L43 + .loc 1 360 18 + lw a4,-20(s0) + li a5,-251658240 + addi a5,a5,-1 + and a5,a4,a5 + sw a5,-20(s0) + .loc 1 361 93 + li a5,1073807360 + addi a5,a5,4 + lw a3,0(a5) + li a5,1073807360 + addi a5,a5,4 + li a4,-251658240 + addi a4,a4,-1 + and a4,a3,a4 + sw a4,0(a5) + j .L44 +.L43: + .loc 1 362 50 + lw a4,-36(s0) + li a5,1048576 + and a5,a4,a5 + .loc 1 362 15 + beq a5,zero,.L45 + .loc 1 363 16 + lw a5,-32(s0) + li a4,3 + sll a5,a4,a5 + sw a5,-28(s0) + .loc 1 364 21 + lw a5,-28(s0) + not a5,a5 + .loc 1 364 18 + lw a4,-20(s0) + and a5,a4,a5 + sw a5,-20(s0) + .loc 1 365 18 + lw a4,-20(s0) + li a5,251658240 + or a5,a4,a5 + sw a5,-20(s0) + j .L44 +.L45: + .loc 1 367 41 + lw a5,-36(s0) + srli a5,a5,21 + .loc 1 367 51 + slli a5,a5,4 + .loc 1 367 30 + lw a4,-24(s0) + sll a5,a4,a5 + .loc 1 367 21 + not a5,a5 + .loc 1 367 18 + lw a4,-20(s0) + and a5,a4,a5 + sw a5,-20(s0) + .loc 1 368 18 + lw a4,-20(s0) + li a5,251658240 + or a5,a4,a5 + sw a5,-20(s0) +.L44: + .loc 1 372 8 + lw a5,-40(s0) + beq a5,zero,.L46 + .loc 1 373 40 + lw a5,-36(s0) + srli a5,a5,21 + .loc 1 373 50 + slli a5,a5,4 + .loc 1 373 29 + lw a4,-24(s0) + sll a5,a4,a5 + .loc 1 373 18 + lw a4,-20(s0) + or a5,a4,a5 + sw a5,-20(s0) +.L46: + .loc 1 376 33 + lw a5,-36(s0) + .loc 1 376 8 + bge a5,zero,.L47 + .loc 1 378 10 + li a5,1073807360 + addi a5,a5,28 + .loc 1 378 93 + lw a4,-20(s0) + sw a4,0(a5) + .loc 1 383 1 + j .L49 +.L47: + .loc 1 381 10 + li a5,1073807360 + addi a5,a5,4 + .loc 1 381 93 + lw a4,-20(s0) + sw a4,0(a5) +.L49: + .loc 1 383 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE13: + .size gpio_pin_remap_config, .-gpio_pin_remap_config + .align 1 + .globl gpio_exti_source_select + .type gpio_exti_source_select, @function +gpio_exti_source_select: +.LFB14: + .loc 1 399 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + mv a5,a0 + mv a4,a1 + sb a5,-33(s0) + mv a5,a4 + sb a5,-34(s0) + .loc 1 400 14 + sw zero,-20(s0) + .loc 1 402 48 + lbu a5,-34(s0) + andi a5,a5,3 + .loc 1 402 34 + slli a5,a5,2 + .loc 1 401 12 + li a4,15 + sll a5,a4,a5 + sw a5,-20(s0) + .loc 1 405 8 + lbu a4,-34(s0) + li a5,3 + bgtu a4,a5,.L51 + .loc 1 407 93 + li a5,1073807360 + addi a5,a5,8 + lw a3,0(a5) + .loc 1 407 96 + lw a5,-20(s0) + not a4,a5 + .loc 1 407 93 + li a5,1073807360 + addi a5,a5,8 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 408 93 + li a5,1073807360 + addi a5,a5,8 + lw a3,0(a5) + .loc 1 408 98 + lbu a4,-33(s0) + .loc 1 410 39 + lbu a5,-34(s0) + andi a5,a5,3 + .loc 1 410 25 + slli a5,a5,2 + .loc 1 409 17 + sll a4,a4,a5 + .loc 1 408 93 + li a5,1073807360 + addi a5,a5,8 + or a4,a3,a4 + sw a4,0(a5) + .loc 1 430 1 + j .L55 +.L51: + .loc 1 411 15 + lbu a4,-34(s0) + li a5,7 + bgtu a4,a5,.L53 + .loc 1 413 93 + li a5,1073807360 + addi a5,a5,12 + lw a3,0(a5) + .loc 1 413 96 + lw a5,-20(s0) + not a4,a5 + .loc 1 413 93 + li a5,1073807360 + addi a5,a5,12 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 414 93 + li a5,1073807360 + addi a5,a5,12 + lw a3,0(a5) + .loc 1 414 98 + lbu a4,-33(s0) + .loc 1 416 39 + lbu a5,-34(s0) + andi a5,a5,3 + .loc 1 416 25 + slli a5,a5,2 + .loc 1 415 17 + sll a4,a4,a5 + .loc 1 414 93 + li a5,1073807360 + addi a5,a5,12 + or a4,a3,a4 + sw a4,0(a5) + .loc 1 430 1 + j .L55 +.L53: + .loc 1 417 15 + lbu a4,-34(s0) + li a5,11 + bgtu a4,a5,.L54 + .loc 1 419 93 + li a5,1073807360 + addi a5,a5,16 + lw a3,0(a5) + .loc 1 419 96 + lw a5,-20(s0) + not a4,a5 + .loc 1 419 93 + li a5,1073807360 + addi a5,a5,16 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 420 93 + li a5,1073807360 + addi a5,a5,16 + lw a3,0(a5) + .loc 1 420 98 + lbu a4,-33(s0) + .loc 1 422 39 + lbu a5,-34(s0) + andi a5,a5,3 + .loc 1 422 25 + slli a5,a5,2 + .loc 1 421 17 + sll a4,a4,a5 + .loc 1 420 93 + li a5,1073807360 + addi a5,a5,16 + or a4,a3,a4 + sw a4,0(a5) + .loc 1 430 1 + j .L55 +.L54: + .loc 1 425 93 + li a5,1073807360 + addi a5,a5,20 + lw a3,0(a5) + .loc 1 425 96 + lw a5,-20(s0) + not a4,a5 + .loc 1 425 93 + li a5,1073807360 + addi a5,a5,20 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 426 93 + li a5,1073807360 + addi a5,a5,20 + lw a3,0(a5) + .loc 1 426 98 + lbu a4,-33(s0) + .loc 1 428 39 + lbu a5,-34(s0) + andi a5,a5,3 + .loc 1 428 25 + slli a5,a5,2 + .loc 1 427 17 + sll a4,a4,a5 + .loc 1 426 93 + li a5,1073807360 + addi a5,a5,20 + or a4,a3,a4 + sw a4,0(a5) +.L55: + .loc 1 430 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE14: + .size gpio_exti_source_select, .-gpio_exti_source_select + .align 1 + .globl gpio_event_output_config + .type gpio_event_output_config, @function +gpio_event_output_config: +.LFB15: + .loc 1 448 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + mv a5,a0 + mv a4,a1 + sb a5,-33(s0) + mv a5,a4 + sb a5,-34(s0) + .loc 1 449 14 + sw zero,-20(s0) + .loc 1 450 12 + li a5,1073807360 + .loc 1 450 9 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 453 9 + lw a5,-20(s0) + andi a5,a5,-128 + sw a5,-20(s0) + .loc 1 455 24 + lbu a5,-33(s0) + .loc 1 455 12 + slli a5,a5,4 + .loc 1 455 9 + lw a4,-20(s0) + or a5,a4,a5 + sw a5,-20(s0) + .loc 1 456 12 + lbu a5,-34(s0) + .loc 1 456 9 + lw a4,-20(s0) + or a5,a4,a5 + sw a5,-20(s0) + .loc 1 458 6 + li a5,1073807360 + .loc 1 458 89 + lw a4,-20(s0) + sw a4,0(a5) + .loc 1 459 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE15: + .size gpio_event_output_config, .-gpio_event_output_config + .align 1 + .globl gpio_event_output_enable + .type gpio_event_output_enable, @function +gpio_event_output_enable: +.LFB16: + .loc 1 468 1 + .cfi_startproc + addi sp,sp,-16 + .cfi_def_cfa_offset 16 + sw s0,12(sp) + .cfi_offset 8, -4 + addi s0,sp,16 + .cfi_def_cfa 8, 0 + .loc 1 469 89 + li a5,1073807360 + lw a4,0(a5) + li a5,1073807360 + ori a4,a4,128 + sw a4,0(a5) + .loc 1 470 1 + nop + lw s0,12(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 16 + addi sp,sp,16 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE16: + .size gpio_event_output_enable, .-gpio_event_output_enable + .align 1 + .globl gpio_event_output_disable + .type gpio_event_output_disable, @function +gpio_event_output_disable: +.LFB17: + .loc 1 479 1 + .cfi_startproc + addi sp,sp,-16 + .cfi_def_cfa_offset 16 + sw s0,12(sp) + .cfi_offset 8, -4 + addi s0,sp,16 + .cfi_def_cfa 8, 0 + .loc 1 480 89 + li a5,1073807360 + lw a4,0(a5) + li a5,1073807360 + andi a4,a4,-129 + sw a4,0(a5) + .loc 1 481 1 + nop + lw s0,12(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 16 + addi sp,sp,16 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE17: + .size gpio_event_output_disable, .-gpio_event_output_disable + .align 1 + .globl gpio_pin_lock + .type gpio_pin_lock, @function +gpio_pin_lock: +.LFB18: + .loc 1 493 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + sw a1,-40(s0) + .loc 1 494 14 + li a5,65536 + sw a5,-20(s0) + .loc 1 495 10 + lw a4,-20(s0) + lw a5,-40(s0) + or a5,a4,a5 + sw a5,-20(s0) + .loc 1 498 28 + lw a5,-36(s0) + addi a5,a5,24 + .loc 1 498 7 + mv a4,a5 + .loc 1 498 63 + lw a5,-20(s0) + sw a5,0(a4) + .loc 1 499 28 + lw a5,-36(s0) + addi a5,a5,24 + .loc 1 499 7 + mv a4,a5 + .loc 1 499 63 + lw a5,-40(s0) + sw a5,0(a4) + .loc 1 500 28 + lw a5,-36(s0) + addi a5,a5,24 + .loc 1 500 7 + mv a4,a5 + .loc 1 500 63 + lw a5,-20(s0) + sw a5,0(a4) + .loc 1 501 35 + lw a5,-36(s0) + addi a5,a5,24 + .loc 1 501 10 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 502 35 + lw a5,-36(s0) + addi a5,a5,24 + .loc 1 502 10 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 503 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE18: + .size gpio_pin_lock, .-gpio_pin_lock +.Letext0: + .file 2 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\machine\\_default_types.h" + .file 3 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_stdint.h" + .file 4 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral/gd32vf103.h" + .file 5 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_rcu.h" + .file 6 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_gpio.h" + .section .debug_info,"",@progbits +.Ldebug_info0: + .4byte 0x5e1 + .2byte 0x4 + .4byte .Ldebug_abbrev0 + .byte 0x4 + .byte 0x1 + .4byte .LASF3264 + .byte 0xc + .4byte .LASF3265 + .4byte .LASF3266 + .4byte .Ltext0 + .4byte .Letext0-.Ltext0 + .4byte .Ldebug_line0 + .4byte .Ldebug_macro0 + .byte 0x2 + .byte 0x4 + .byte 0x7 + .4byte .LASF3178 + .byte 0x2 + .byte 0x1 + .byte 0x6 + .4byte .LASF3179 + .byte 0x3 + .4byte .LASF3182 + .byte 0x2 + .byte 0x2b + .byte 0x17 + .4byte 0x43 + .byte 0x2 + .byte 0x1 + .byte 0x8 + .4byte .LASF3180 + .byte 0x2 + .byte 0x2 + .byte 0x5 + .4byte .LASF3181 + .byte 0x3 + .4byte .LASF3183 + .byte 0x2 + .byte 0x39 + .byte 0x1c + .4byte 0x5d + .byte 0x2 + .byte 0x2 + .byte 0x7 + .4byte .LASF3184 + .byte 0x2 + .byte 0x4 + .byte 0x5 + .4byte .LASF3185 + .byte 0x3 + .4byte .LASF3186 + .byte 0x2 + .byte 0x4f + .byte 0x1b + .4byte 0x77 + .byte 0x2 + .byte 0x4 + .byte 0x7 + .4byte .LASF3187 + .byte 0x2 + .byte 0x8 + .byte 0x5 + .4byte .LASF3188 + .byte 0x2 + .byte 0x8 + .byte 0x7 + .4byte .LASF3189 + .byte 0x4 + .byte 0x4 + .byte 0x5 + .string "int" + .byte 0x3 + .4byte .LASF3190 + .byte 0x3 + .byte 0x18 + .byte 0x13 + .4byte 0x37 + .byte 0x3 + .4byte .LASF3191 + .byte 0x3 + .byte 0x24 + .byte 0x14 + .4byte 0x51 + .byte 0x3 + .4byte .LASF3192 + .byte 0x3 + .byte 0x30 + .byte 0x14 + .4byte 0x6b + .byte 0x5 + .byte 0x7 + .byte 0x4 + .4byte 0x29 + .byte 0x4 + .byte 0xb3 + .byte 0xe + .4byte 0xd2 + .byte 0x6 + .4byte .LASF3193 + .byte 0 + .byte 0x6 + .4byte .LASF3194 + .byte 0x1 + .byte 0 + .byte 0x3 + .4byte .LASF3195 + .byte 0x4 + .byte 0xb3 + .byte 0x3c + .4byte 0xb7 + .byte 0x5 + .byte 0x7 + .byte 0x4 + .4byte 0x29 + .byte 0x4 + .byte 0xb5 + .byte 0xe + .4byte 0xf9 + .byte 0x6 + .4byte .LASF3196 + .byte 0 + .byte 0x7 + .string "SET" + .byte 0x1 + .byte 0 + .byte 0x3 + .4byte .LASF3197 + .byte 0x4 + .byte 0xb5 + .byte 0x28 + .4byte 0xde + .byte 0x8 + .byte 0x7 + .byte 0x4 + .4byte 0x29 + .byte 0x5 + .2byte 0x139 + .byte 0xe + .4byte 0x1f5 + .byte 0x9 + .4byte .LASF3198 + .2byte 0xa0c + .byte 0x9 + .4byte .LASF3199 + .2byte 0x400 + .byte 0x9 + .4byte .LASF3200 + .2byte 0x401 + .byte 0x9 + .4byte .LASF3201 + .2byte 0x402 + .byte 0x9 + .4byte .LASF3202 + .2byte 0x403 + .byte 0x9 + .4byte .LASF3203 + .2byte 0x404 + .byte 0x9 + .4byte .LASF3204 + .2byte 0x405 + .byte 0x9 + .4byte .LASF3205 + .2byte 0x40b + .byte 0x9 + .4byte .LASF3206 + .2byte 0x40e + .byte 0x9 + .4byte .LASF3207 + .2byte 0x40f + .byte 0x9 + .4byte .LASF3208 + .2byte 0x411 + .byte 0x9 + .4byte .LASF3209 + .2byte 0x412 + .byte 0x9 + .4byte .LASF3210 + .2byte 0x413 + .byte 0x9 + .4byte .LASF3211 + .2byte 0x414 + .byte 0x9 + .4byte .LASF3212 + .2byte 0x415 + .byte 0x9 + .4byte .LASF3213 + .2byte 0x416 + .byte 0x9 + .4byte .LASF3214 + .2byte 0x419 + .byte 0x9 + .4byte .LASF3215 + .2byte 0x41a + .byte 0x9 + .4byte .LASF3216 + .2byte 0x41b + .byte 0x9 + .4byte .LASF3217 + .2byte 0x41c + .byte 0x9 + .4byte .LASF3218 + .2byte 0x41d + .byte 0x9 + .4byte .LASF3219 + .2byte 0x300 + .byte 0x9 + .4byte .LASF3220 + .2byte 0x302 + .byte 0x9 + .4byte .LASF3221 + .2byte 0x303 + .byte 0x9 + .4byte .LASF3222 + .2byte 0x304 + .byte 0x9 + .4byte .LASF3223 + .2byte 0x305 + .byte 0x9 + .4byte .LASF3224 + .2byte 0x306 + .byte 0x9 + .4byte .LASF3225 + .2byte 0x309 + .byte 0x9 + .4byte .LASF3226 + .2byte 0x30a + .byte 0x9 + .4byte .LASF3227 + .2byte 0x30b + .byte 0x9 + .4byte .LASF3228 + .2byte 0x30c + .byte 0x9 + .4byte .LASF3229 + .2byte 0x30e + .byte 0 + .byte 0x2 + .byte 0x10 + .byte 0x4 + .4byte .LASF3230 + .byte 0xa + .4byte .LASF3231 + .byte 0x6 + .2byte 0x109 + .byte 0x14 + .4byte 0xf9 + .byte 0xb + .4byte .LASF3235 + .byte 0x1 + .2byte 0x1ec + .byte 0x6 + .4byte .LFB18 + .4byte .LFE18-.LFB18 + .byte 0x1 + .byte 0x9c + .4byte 0x251 + .byte 0xc + .4byte .LASF3232 + .byte 0x1 + .2byte 0x1ec + .byte 0x1d + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xd + .string "pin" + .byte 0x1 + .2byte 0x1ec + .byte 0x33 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x58 + .byte 0xe + .4byte .LASF3239 + .byte 0x1 + .2byte 0x1ee + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xf + .4byte .LASF3233 + .byte 0x1 + .2byte 0x1de + .byte 0x6 + .4byte .LFB17 + .4byte .LFE17-.LFB17 + .byte 0x1 + .byte 0x9c + .byte 0xf + .4byte .LASF3234 + .byte 0x1 + .2byte 0x1d3 + .byte 0x6 + .4byte .LFB16 + .4byte .LFE16-.LFB16 + .byte 0x1 + .byte 0x9c + .byte 0xb + .4byte .LASF3236 + .byte 0x1 + .2byte 0x1bf + .byte 0x6 + .4byte .LFB15 + .4byte .LFE15-.LFB15 + .byte 0x1 + .byte 0x9c + .4byte 0x2bf + .byte 0xc + .4byte .LASF3237 + .byte 0x1 + .2byte 0x1bf + .byte 0x27 + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x5f + .byte 0xc + .4byte .LASF3238 + .byte 0x1 + .2byte 0x1bf + .byte 0x3c + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x5e + .byte 0x10 + .string "reg" + .byte 0x1 + .2byte 0x1c1 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xb + .4byte .LASF3240 + .byte 0x1 + .2byte 0x18e + .byte 0x6 + .4byte .LFB14 + .4byte .LFE14-.LFB14 + .byte 0x1 + .byte 0x9c + .4byte 0x307 + .byte 0xc + .4byte .LASF3237 + .byte 0x1 + .2byte 0x18e + .byte 0x26 + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x5f + .byte 0xc + .4byte .LASF3238 + .byte 0x1 + .2byte 0x18e + .byte 0x3b + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x5e + .byte 0xe + .4byte .LASF3241 + .byte 0x1 + .2byte 0x190 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xb + .4byte .LASF3242 + .byte 0x1 + .2byte 0x156 + .byte 0x6 + .4byte .LFB13 + .4byte .LFE13-.LFB13 + .byte 0x1 + .byte 0x9c + .4byte 0x37f + .byte 0xc + .4byte .LASF3243 + .byte 0x1 + .2byte 0x156 + .byte 0x25 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xc + .4byte .LASF3244 + .byte 0x1 + .2byte 0x156 + .byte 0x3a + .4byte 0xd2 + .byte 0x2 + .byte 0x91 + .byte 0x58 + .byte 0xe + .4byte .LASF3245 + .byte 0x1 + .2byte 0x158 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0xe + .4byte .LASF3246 + .byte 0x1 + .2byte 0x158 + .byte 0x1b + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x64 + .byte 0xe + .4byte .LASF3247 + .byte 0x1 + .2byte 0x158 + .byte 0x28 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0xe + .4byte .LASF3248 + .byte 0x1 + .2byte 0x158 + .byte 0x37 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x60 + .byte 0 + .byte 0x11 + .4byte .LASF3249 + .byte 0x1 + .2byte 0x131 + .byte 0xa + .4byte 0x9f + .4byte .LFB12 + .4byte .LFE12-.LFB12 + .byte 0x1 + .byte 0x9c + .4byte 0x3ab + .byte 0xc + .4byte .LASF3232 + .byte 0x1 + .2byte 0x131 + .byte 0x28 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x11 + .4byte .LASF3250 + .byte 0x1 + .2byte 0x122 + .byte 0xc + .4byte 0xf9 + .4byte .LFB11 + .4byte .LFE11-.LFB11 + .byte 0x1 + .byte 0x9c + .4byte 0x3e7 + .byte 0xc + .4byte .LASF3232 + .byte 0x1 + .2byte 0x122 + .byte 0x29 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0xd + .string "pin" + .byte 0x1 + .2byte 0x122 + .byte 0x3f + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0 + .byte 0x11 + .4byte .LASF3251 + .byte 0x1 + .2byte 0x114 + .byte 0xa + .4byte 0x9f + .4byte .LFB10 + .4byte .LFE10-.LFB10 + .byte 0x1 + .byte 0x9c + .4byte 0x413 + .byte 0xc + .4byte .LASF3232 + .byte 0x1 + .2byte 0x114 + .byte 0x27 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x11 + .4byte .LASF3252 + .byte 0x1 + .2byte 0x105 + .byte 0xc + .4byte 0xf9 + .4byte .LFB9 + .4byte .LFE9-.LFB9 + .byte 0x1 + .byte 0x9c + .4byte 0x44f + .byte 0xc + .4byte .LASF3232 + .byte 0x1 + .2byte 0x105 + .byte 0x28 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0xd + .string "pin" + .byte 0x1 + .2byte 0x105 + .byte 0x3e + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0 + .byte 0x12 + .4byte .LASF3253 + .byte 0x1 + .byte 0xf7 + .byte 0x6 + .4byte .LFB8 + .4byte .LFE8-.LFB8 + .byte 0x1 + .byte 0x9c + .4byte 0x484 + .byte 0x13 + .4byte .LASF3232 + .byte 0x1 + .byte 0xf7 + .byte 0x1f + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0x13 + .4byte .LASF3254 + .byte 0x1 + .byte 0xf7 + .byte 0x35 + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x6a + .byte 0 + .byte 0x12 + .4byte .LASF3255 + .byte 0x1 + .byte 0xe7 + .byte 0x6 + .4byte .LFB7 + .4byte .LFE7-.LFB7 + .byte 0x1 + .byte 0x9c + .4byte 0x4c8 + .byte 0x13 + .4byte .LASF3232 + .byte 0x1 + .byte 0xe7 + .byte 0x1e + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0x14 + .string "pin" + .byte 0x1 + .byte 0xe7 + .byte 0x34 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0x13 + .4byte .LASF3256 + .byte 0x1 + .byte 0xe7 + .byte 0x44 + .4byte 0x1fc + .byte 0x2 + .byte 0x91 + .byte 0x64 + .byte 0 + .byte 0x12 + .4byte .LASF3257 + .byte 0x1 + .byte 0xd5 + .byte 0x6 + .4byte .LFB6 + .4byte .LFE6-.LFB6 + .byte 0x1 + .byte 0x9c + .4byte 0x4fd + .byte 0x13 + .4byte .LASF3232 + .byte 0x1 + .byte 0xd5 + .byte 0x1e + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0x14 + .string "pin" + .byte 0x1 + .byte 0xd5 + .byte 0x34 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0 + .byte 0x12 + .4byte .LASF3258 + .byte 0x1 + .byte 0xc7 + .byte 0x6 + .4byte .LFB5 + .4byte .LFE5-.LFB5 + .byte 0x1 + .byte 0x9c + .4byte 0x532 + .byte 0x13 + .4byte .LASF3232 + .byte 0x1 + .byte 0xc7 + .byte 0x1c + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0x14 + .string "pin" + .byte 0x1 + .byte 0xc7 + .byte 0x32 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0 + .byte 0x12 + .4byte .LASF3259 + .byte 0x1 + .byte 0x7c + .byte 0x6 + .4byte .LFB4 + .4byte .LFE4-.LFB4 + .byte 0x1 + .byte 0x9c + .4byte 0x5b0 + .byte 0x13 + .4byte .LASF3232 + .byte 0x1 + .byte 0x7c + .byte 0x19 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0x13 + .4byte .LASF3260 + .byte 0x1 + .byte 0x7c + .byte 0x2f + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x58 + .byte 0x13 + .4byte .LASF3261 + .byte 0x1 + .byte 0x7c + .byte 0x3e + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x54 + .byte 0x14 + .string "pin" + .byte 0x1 + .byte 0x7d + .byte 0x12 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x50 + .byte 0x15 + .string "i" + .byte 0x1 + .byte 0x7f + .byte 0xe + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x6e + .byte 0x16 + .4byte .LASF3262 + .byte 0x1 + .byte 0x80 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0x15 + .string "reg" + .byte 0x1 + .byte 0x81 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x64 + .byte 0 + .byte 0x17 + .4byte .LASF3263 + .byte 0x1 + .byte 0x5d + .byte 0x6 + .4byte .LFB3 + .4byte .LFE3-.LFB3 + .byte 0x1 + .byte 0x9c + .byte 0x18 + .4byte .LASF3267 + .byte 0x1 + .byte 0x36 + .byte 0x6 + .4byte .LFB2 + .4byte .LFE2-.LFB2 + .byte 0x1 + .byte 0x9c + .byte 0x13 + .4byte .LASF3232 + .byte 0x1 + .byte 0x36 + .byte 0x1b + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0 + .section .debug_abbrev,"",@progbits +.Ldebug_abbrev0: + .byte 0x1 + .byte 0x11 + .byte 0x1 + .byte 0x25 + .byte 0xe + .byte 0x13 + .byte 0xb + .byte 0x3 + .byte 0xe + .byte 0x1b + .byte 0xe + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x10 + .byte 0x17 + .byte 0x99,0x42 + .byte 0x17 + .byte 0 + .byte 0 + .byte 0x2 + .byte 0x24 + .byte 0 + .byte 0xb + .byte 0xb + .byte 0x3e + .byte 0xb + .byte 0x3 + .byte 0xe + .byte 0 + .byte 0 + .byte 0x3 + .byte 0x16 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x4 + .byte 0x24 + .byte 0 + .byte 0xb + .byte 0xb + .byte 0x3e + .byte 0xb + .byte 0x3 + .byte 0x8 + .byte 0 + .byte 0 + .byte 0x5 + .byte 0x4 + .byte 0x1 + .byte 0x3e + .byte 0xb + .byte 0xb + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x6 + .byte 0x28 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x1c + .byte 0xb + .byte 0 + .byte 0 + .byte 0x7 + .byte 0x28 + .byte 0 + .byte 0x3 + .byte 0x8 + .byte 0x1c + .byte 0xb + .byte 0 + .byte 0 + .byte 0x8 + .byte 0x4 + .byte 0x1 + .byte 0x3e + .byte 0xb + .byte 0xb + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x9 + .byte 0x28 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x1c + .byte 0x5 + .byte 0 + .byte 0 + .byte 0xa + .byte 0x16 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0xb + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0xc + .byte 0x5 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0xd + .byte 0x5 + .byte 0 + .byte 0x3 + .byte 0x8 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0xe + .byte 0x34 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0xf + .byte 0x2e + .byte 0 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0 + .byte 0 + .byte 0x10 + .byte 0x34 + .byte 0 + .byte 0x3 + .byte 0x8 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0x11 + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x49 + .byte 0x13 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x12 + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x13 + .byte 0x5 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0x14 + .byte 0x5 + .byte 0 + .byte 0x3 + .byte 0x8 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0x15 + .byte 0x34 + .byte 0 + .byte 0x3 + .byte 0x8 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0x16 + .byte 0x34 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0x17 + .byte 0x2e + .byte 0 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x96,0x42 + .byte 0x19 + .byte 0 + .byte 0 + .byte 0x18 + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x96,0x42 + .byte 0x19 + .byte 0 + .byte 0 + .byte 0 + .section .debug_aranges,"",@progbits + .4byte 0x1c + .2byte 0x2 + .4byte .Ldebug_info0 + .byte 0x4 + .byte 0 + .2byte 0 + .2byte 0 + .4byte .Ltext0 + .4byte .Letext0-.Ltext0 + .4byte 0 + .4byte 0 + .section .debug_macro,"",@progbits +.Ldebug_macro0: + .2byte 0x4 + .byte 0x2 + .4byte .Ldebug_line0 + .byte 0x3 + .byte 0 + .byte 0x1 + .byte 0x5 + .byte 0x1 + .4byte .LASF0 + .byte 0x5 + .byte 0x2 + .4byte .LASF1 + .byte 0x5 + .byte 0x3 + .4byte .LASF2 + .byte 0x5 + .byte 0x4 + .4byte .LASF3 + .byte 0x5 + .byte 0x5 + .4byte .LASF4 + .byte 0x5 + .byte 0x6 + .4byte .LASF5 + .byte 0x5 + .byte 0x7 + .4byte .LASF6 + .byte 0x5 + .byte 0x8 + .4byte .LASF7 + .byte 0x5 + .byte 0x9 + .4byte .LASF8 + .byte 0x5 + .byte 0xa + .4byte .LASF9 + .byte 0x5 + .byte 0xb + .4byte .LASF10 + .byte 0x5 + .byte 0xc + .4byte .LASF11 + .byte 0x5 + .byte 0xd + .4byte .LASF12 + .byte 0x5 + .byte 0xe + .4byte .LASF13 + .byte 0x5 + .byte 0xf + .4byte .LASF14 + .byte 0x5 + .byte 0x10 + .4byte .LASF15 + .byte 0x5 + .byte 0x11 + .4byte .LASF16 + .byte 0x5 + .byte 0x12 + .4byte .LASF17 + .byte 0x5 + .byte 0x13 + .4byte .LASF18 + .byte 0x5 + .byte 0x14 + .4byte .LASF19 + .byte 0x5 + .byte 0x15 + .4byte .LASF20 + .byte 0x5 + .byte 0x16 + .4byte .LASF21 + .byte 0x5 + .byte 0x17 + .4byte .LASF22 + .byte 0x5 + .byte 0x18 + .4byte .LASF23 + .byte 0x5 + .byte 0x19 + .4byte .LASF24 + .byte 0x5 + .byte 0x1a + .4byte .LASF25 + .byte 0x5 + .byte 0x1b + .4byte .LASF26 + .byte 0x5 + .byte 0x1c + .4byte .LASF27 + .byte 0x5 + .byte 0x1d + .4byte .LASF28 + .byte 0x5 + .byte 0x1e + .4byte .LASF29 + .byte 0x5 + .byte 0x1f + .4byte .LASF30 + .byte 0x5 + .byte 0x20 + .4byte .LASF31 + .byte 0x5 + .byte 0x21 + .4byte .LASF32 + .byte 0x5 + .byte 0x22 + .4byte .LASF33 + .byte 0x5 + .byte 0x23 + .4byte .LASF34 + .byte 0x5 + .byte 0x24 + .4byte .LASF35 + .byte 0x5 + .byte 0x25 + .4byte .LASF36 + .byte 0x5 + .byte 0x26 + .4byte .LASF37 + .byte 0x5 + .byte 0x27 + .4byte .LASF38 + .byte 0x5 + .byte 0x28 + .4byte .LASF39 + .byte 0x5 + .byte 0x29 + .4byte .LASF40 + .byte 0x5 + .byte 0x2a + .4byte .LASF41 + .byte 0x5 + .byte 0x2b + .4byte .LASF42 + .byte 0x5 + .byte 0x2c + .4byte .LASF43 + .byte 0x5 + .byte 0x2d + .4byte .LASF44 + .byte 0x5 + .byte 0x2e + .4byte .LASF45 + .byte 0x5 + .byte 0x2f + .4byte .LASF46 + .byte 0x5 + .byte 0x30 + .4byte .LASF47 + .byte 0x5 + .byte 0x31 + .4byte .LASF48 + .byte 0x5 + .byte 0x32 + .4byte .LASF49 + .byte 0x5 + .byte 0x33 + .4byte .LASF50 + .byte 0x5 + .byte 0x34 + .4byte .LASF51 + .byte 0x5 + .byte 0x35 + .4byte .LASF52 + .byte 0x5 + .byte 0x36 + .4byte .LASF53 + .byte 0x5 + .byte 0x37 + .4byte .LASF54 + .byte 0x5 + .byte 0x38 + .4byte .LASF55 + .byte 0x5 + .byte 0x39 + .4byte .LASF56 + .byte 0x5 + .byte 0x3a + .4byte .LASF57 + .byte 0x5 + .byte 0x3b + .4byte .LASF58 + .byte 0x5 + .byte 0x3c + .4byte .LASF59 + .byte 0x5 + .byte 0x3d + .4byte .LASF60 + .byte 0x5 + .byte 0x3e + .4byte .LASF61 + .byte 0x5 + .byte 0x3f + .4byte .LASF62 + .byte 0x5 + .byte 0x40 + .4byte .LASF63 + .byte 0x5 + .byte 0x41 + .4byte .LASF64 + .byte 0x5 + .byte 0x42 + .4byte .LASF65 + .byte 0x5 + .byte 0x43 + .4byte .LASF66 + .byte 0x5 + .byte 0x44 + .4byte .LASF67 + .byte 0x5 + .byte 0x45 + .4byte .LASF68 + .byte 0x5 + .byte 0x46 + .4byte .LASF69 + .byte 0x5 + .byte 0x47 + .4byte .LASF70 + .byte 0x5 + .byte 0x48 + .4byte .LASF71 + .byte 0x5 + .byte 0x49 + .4byte .LASF72 + .byte 0x5 + .byte 0x4a + .4byte .LASF73 + .byte 0x5 + .byte 0x4b + .4byte .LASF74 + .byte 0x5 + .byte 0x4c + .4byte .LASF75 + .byte 0x5 + .byte 0x4d + .4byte .LASF76 + .byte 0x5 + .byte 0x4e + .4byte .LASF77 + .byte 0x5 + .byte 0x4f + .4byte .LASF78 + .byte 0x5 + .byte 0x50 + .4byte .LASF79 + .byte 0x5 + .byte 0x51 + .4byte .LASF80 + .byte 0x5 + .byte 0x52 + .4byte .LASF81 + .byte 0x5 + .byte 0x53 + .4byte .LASF82 + .byte 0x5 + .byte 0x54 + .4byte .LASF83 + .byte 0x5 + .byte 0x55 + .4byte .LASF84 + .byte 0x5 + .byte 0x56 + .4byte .LASF85 + .byte 0x5 + .byte 0x57 + .4byte .LASF86 + .byte 0x5 + .byte 0x58 + .4byte .LASF87 + .byte 0x5 + .byte 0x59 + .4byte .LASF88 + .byte 0x5 + .byte 0x5a + .4byte .LASF89 + .byte 0x5 + .byte 0x5b + .4byte .LASF90 + .byte 0x5 + .byte 0x5c + .4byte .LASF91 + .byte 0x5 + .byte 0x5d + .4byte .LASF92 + .byte 0x5 + .byte 0x5e + .4byte .LASF93 + .byte 0x5 + .byte 0x5f + .4byte .LASF94 + .byte 0x5 + .byte 0x60 + .4byte .LASF95 + .byte 0x5 + .byte 0x61 + .4byte .LASF96 + .byte 0x5 + .byte 0x62 + .4byte .LASF97 + .byte 0x5 + .byte 0x63 + .4byte .LASF98 + .byte 0x5 + .byte 0x64 + .4byte .LASF99 + .byte 0x5 + .byte 0x65 + .4byte .LASF100 + .byte 0x5 + .byte 0x66 + .4byte .LASF101 + .byte 0x5 + .byte 0x67 + .4byte .LASF102 + .byte 0x5 + .byte 0x68 + .4byte .LASF103 + .byte 0x5 + .byte 0x69 + .4byte .LASF104 + .byte 0x5 + .byte 0x6a + .4byte .LASF105 + .byte 0x5 + .byte 0x6b + .4byte .LASF106 + .byte 0x5 + .byte 0x6c + .4byte .LASF107 + .byte 0x5 + .byte 0x6d + .4byte .LASF108 + .byte 0x5 + .byte 0x6e + .4byte .LASF109 + .byte 0x5 + .byte 0x6f + .4byte .LASF110 + .byte 0x5 + .byte 0x70 + .4byte .LASF111 + .byte 0x5 + .byte 0x71 + .4byte .LASF112 + .byte 0x5 + .byte 0x72 + .4byte .LASF113 + .byte 0x5 + .byte 0x73 + .4byte .LASF114 + .byte 0x5 + .byte 0x74 + .4byte .LASF115 + .byte 0x5 + .byte 0x75 + .4byte .LASF116 + .byte 0x5 + .byte 0x76 + .4byte .LASF117 + .byte 0x5 + .byte 0x77 + .4byte .LASF118 + .byte 0x5 + .byte 0x78 + .4byte .LASF119 + .byte 0x5 + .byte 0x79 + .4byte .LASF120 + .byte 0x5 + .byte 0x7a + .4byte .LASF121 + .byte 0x5 + .byte 0x7b + .4byte .LASF122 + .byte 0x5 + .byte 0x7c + .4byte .LASF123 + .byte 0x5 + .byte 0x7d + .4byte .LASF124 + .byte 0x5 + .byte 0x7e + .4byte .LASF125 + .byte 0x5 + .byte 0x7f + .4byte .LASF126 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF127 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF128 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF129 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF130 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF131 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF132 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF133 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF134 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF135 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF136 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF137 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF138 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF139 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF140 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF141 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF142 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF143 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF144 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF145 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF146 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF147 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF148 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF149 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF150 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF151 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF152 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF153 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF154 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF155 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF156 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF157 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF158 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF159 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF160 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF161 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF162 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF163 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF164 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF165 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF166 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF167 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF168 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF169 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF170 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF171 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF172 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF173 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF174 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF175 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF176 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF177 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF178 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF179 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF180 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF181 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF182 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF183 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF184 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF185 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF186 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF187 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF188 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF189 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF190 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF191 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF192 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF193 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF194 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF195 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF196 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF197 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF198 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF199 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF200 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF201 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF202 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF203 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF204 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF205 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF206 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF207 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF208 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF209 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF210 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF211 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF212 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF213 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF214 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF215 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF216 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF217 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF218 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF219 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF220 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF221 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF222 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF223 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF224 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF225 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF226 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF227 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF228 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF229 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF230 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF231 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF232 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF233 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF234 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF235 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF236 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF237 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF238 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF239 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF240 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF241 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF242 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF243 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF244 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF245 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF246 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF247 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF248 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF249 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF250 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF251 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF252 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF253 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF254 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF255 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF256 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF257 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF258 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF259 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF260 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF261 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF262 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF263 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF264 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF265 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF266 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF267 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF268 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF269 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF270 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF271 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF272 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF273 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF274 + .byte 0x5 + .byte 0x94,0x2 + .4byte .LASF275 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF276 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF277 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF278 + .byte 0x5 + .byte 0x98,0x2 + .4byte .LASF279 + .byte 0x5 + .byte 0x99,0x2 + .4byte .LASF280 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF281 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF282 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF283 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF284 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF285 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF286 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF287 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF288 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF289 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF290 + .byte 0x5 + .byte 0xa4,0x2 + .4byte .LASF291 + .byte 0x5 + .byte 0xa5,0x2 + .4byte .LASF292 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF293 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF294 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF295 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF296 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF297 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF298 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF299 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF300 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF301 + .byte 0x5 + .byte 0xaf,0x2 + .4byte .LASF302 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF303 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF304 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF305 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF306 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF307 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF308 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF309 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF310 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF311 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF312 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF313 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF314 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF315 + .byte 0x5 + .byte 0xbd,0x2 + .4byte .LASF316 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF317 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF318 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF319 + .byte 0x5 + .byte 0x1 + .4byte .LASF320 + .byte 0x5 + .byte 0x2 + .4byte .LASF321 + .byte 0x5 + .byte 0x3 + .4byte .LASF322 + .byte 0x5 + .byte 0x4 + .4byte .LASF323 + .byte 0x5 + .byte 0x5 + .4byte .LASF324 + .byte 0x5 + .byte 0x6 + .4byte .LASF325 + .byte 0x5 + .byte 0x7 + .4byte .LASF326 + .byte 0x5 + .byte 0x8 + .4byte .LASF327 + .byte 0x5 + .byte 0x9 + .4byte .LASF328 + .byte 0x3 + .byte 0x24 + .byte 0x6 + .byte 0x5 + .byte 0x25 + .4byte .LASF329 + .byte 0x3 + .byte 0x27 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro2 + .file 7 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral/system_gd32vf103.h" + .byte 0x3 + .byte 0xaf,0x1 + .byte 0x7 + .byte 0x5 + .byte 0x28 + .4byte .LASF341 + .file 8 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\stdint.h" + .byte 0x3 + .byte 0x2e + .byte 0x8 + .byte 0x5 + .byte 0xa + .4byte .LASF342 + .byte 0x3 + .byte 0xc + .byte 0x2 + .byte 0x5 + .byte 0x6 + .4byte .LASF343 + .file 9 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\features.h" + .byte 0x3 + .byte 0x8 + .byte 0x9 + .byte 0x5 + .byte 0x16 + .4byte .LASF344 + .file 10 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\_newlib_version.h" + .byte 0x3 + .byte 0x1c + .byte 0xa + .byte 0x7 + .4byte .Ldebug_macro3 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro5 + .byte 0x4 + .file 11 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_intsup.h" + .byte 0x3 + .byte 0xd + .byte 0xb + .byte 0x7 + .4byte .Ldebug_macro6 + .byte 0x4 + .byte 0x3 + .byte 0xe + .byte 0x3 + .byte 0x7 + .4byte .Ldebug_macro7 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro8 + .byte 0x4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro9 + .file 12 "board/gd32vf103_libopt.h" + .byte 0x3 + .byte 0xec,0x1 + .byte 0xc + .byte 0x5 + .byte 0x25 + .4byte .LASF527 + .file 13 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_adc.h" + .byte 0x3 + .byte 0x27 + .byte 0xd + .byte 0x5 + .byte 0x25 + .4byte .LASF528 + .byte 0x3 + .byte 0x27 + .byte 0x4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro10 + .byte 0x4 + .file 14 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_bkp.h" + .byte 0x3 + .byte 0x28 + .byte 0xe + .byte 0x7 + .4byte .Ldebug_macro11 + .byte 0x4 + .file 15 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_can.h" + .byte 0x3 + .byte 0x29 + .byte 0xf + .byte 0x7 + .4byte .Ldebug_macro12 + .byte 0x4 + .file 16 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_crc.h" + .byte 0x3 + .byte 0x2a + .byte 0x10 + .byte 0x7 + .4byte .Ldebug_macro13 + .byte 0x4 + .file 17 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dac.h" + .byte 0x3 + .byte 0x2b + .byte 0x11 + .byte 0x7 + .4byte .Ldebug_macro14 + .byte 0x4 + .file 18 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dma.h" + .byte 0x3 + .byte 0x2c + .byte 0x12 + .byte 0x7 + .4byte .Ldebug_macro15 + .byte 0x4 + .file 19 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_eclic.h" + .byte 0x3 + .byte 0x2d + .byte 0x13 + .byte 0x7 + .4byte .Ldebug_macro16 + .byte 0x4 + .file 20 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_exmc.h" + .byte 0x3 + .byte 0x2e + .byte 0x14 + .byte 0x7 + .4byte .Ldebug_macro17 + .byte 0x4 + .file 21 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_exti.h" + .byte 0x3 + .byte 0x2f + .byte 0x15 + .byte 0x7 + .4byte .Ldebug_macro18 + .byte 0x4 + .file 22 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_fmc.h" + .byte 0x3 + .byte 0x30 + .byte 0x16 + .byte 0x7 + .4byte .Ldebug_macro19 + .byte 0x4 + .byte 0x3 + .byte 0x31 + .byte 0x6 + .byte 0x4 + .file 23 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_i2c.h" + .byte 0x3 + .byte 0x32 + .byte 0x17 + .byte 0x7 + .4byte .Ldebug_macro20 + .byte 0x4 + .file 24 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_fwdgt.h" + .byte 0x3 + .byte 0x33 + .byte 0x18 + .byte 0x7 + .4byte .Ldebug_macro21 + .byte 0x4 + .file 25 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dbg.h" + .byte 0x3 + .byte 0x34 + .byte 0x19 + .byte 0x7 + .4byte .Ldebug_macro22 + .byte 0x4 + .file 26 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_pmu.h" + .byte 0x3 + .byte 0x35 + .byte 0x1a + .byte 0x7 + .4byte .Ldebug_macro23 + .byte 0x4 + .byte 0x3 + .byte 0x36 + .byte 0x5 + .byte 0x7 + .4byte .Ldebug_macro24 + .byte 0x4 + .file 27 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_rtc.h" + .byte 0x3 + .byte 0x37 + .byte 0x1b + .byte 0x7 + .4byte .Ldebug_macro25 + .byte 0x4 + .file 28 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_spi.h" + .byte 0x3 + .byte 0x38 + .byte 0x1c + .byte 0x7 + .4byte .Ldebug_macro26 + .byte 0x4 + .file 29 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_timer.h" + .byte 0x3 + .byte 0x39 + .byte 0x1d + .byte 0x7 + .4byte .Ldebug_macro27 + .byte 0x4 + .file 30 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_usart.h" + .byte 0x3 + .byte 0x3a + .byte 0x1e + .byte 0x7 + .4byte .Ldebug_macro28 + .byte 0x4 + .file 31 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_wwdgt.h" + .byte 0x3 + .byte 0x3b + .byte 0x1f + .byte 0x7 + .4byte .Ldebug_macro29 + .byte 0x4 + .file 32 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_func.h" + .byte 0x3 + .byte 0x3c + .byte 0x20 + .byte 0x5 + .byte 0x4 + .4byte .LASF2794 + .file 33 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\lib\\gcc\\riscv-none-embed\\10.2.0\\include\\stddef.h" + .byte 0x3 + .byte 0x7 + .byte 0x21 + .byte 0x7 + .4byte .Ldebug_macro30 + .byte 0x4 + .file 34 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_timer.h" + .byte 0x3 + .byte 0x8 + .byte 0x22 + .byte 0x7 + .4byte .Ldebug_macro31 + .byte 0x4 + .file 35 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_eclic.h" + .byte 0x3 + .byte 0x9 + .byte 0x23 + .byte 0x5 + .byte 0x4 + .4byte .LASF2858 + .file 36 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/riscv_const.h" + .byte 0x3 + .byte 0x6 + .byte 0x24 + .byte 0x7 + .4byte .Ldebug_macro32 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro33 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro34 + .byte 0x4 + .byte 0x4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro35 + .byte 0x4 + .byte 0x5 + .byte 0x26 + .4byte .LASF3169 + .byte 0x5 + .byte 0x27 + .4byte .LASF3170 + .byte 0x5 + .byte 0x28 + .4byte .LASF3171 + .byte 0x5 + .byte 0x29 + .4byte .LASF3172 + .byte 0x5 + .byte 0x2a + .4byte .LASF3173 + .byte 0x5 + .byte 0x2b + .4byte .LASF3174 + .byte 0x5 + .byte 0x2c + .4byte .LASF3175 + .byte 0x5 + .byte 0x2d + .4byte .LASF3176 + .byte 0x5 + .byte 0x2e + .4byte .LASF3177 + .byte 0x4 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103.h.37.6b141d903229e2235d36f2860fb69b6b,comdat +.Ldebug_macro2: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF330 + .byte 0x5 + .byte 0x35 + .4byte .LASF331 + .byte 0x5 + .byte 0x37 + .4byte .LASF332 + .byte 0x5 + .byte 0x38 + .4byte .LASF333 + .byte 0x5 + .byte 0x40 + .4byte .LASF334 + .byte 0x5 + .byte 0x41 + .4byte .LASF335 + .byte 0x5 + .byte 0x49 + .4byte .LASF336 + .byte 0x5 + .byte 0x4e + .4byte .LASF337 + .byte 0x5 + .byte 0x53 + .4byte .LASF338 + .byte 0x5 + .byte 0x58 + .4byte .LASF339 + .byte 0x5 + .byte 0x5d + .4byte .LASF340 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._newlib_version.h.4.bfdf54b0af045d4a71376ae00f63a22c,comdat +.Ldebug_macro3: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4 + .4byte .LASF345 + .byte 0x5 + .byte 0x6 + .4byte .LASF346 + .byte 0x5 + .byte 0x7 + .4byte .LASF347 + .byte 0x5 + .byte 0x8 + .4byte .LASF348 + .byte 0x5 + .byte 0x9 + .4byte .LASF349 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.features.h.33.4ac7543a40bbf4e11e60e29e36a3b28e,comdat +.Ldebug_macro4: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x21 + .4byte .LASF350 + .byte 0x5 + .byte 0x28 + .4byte .LASF351 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF352 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF353 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF354 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF355 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF356 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF357 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF358 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF359 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF360 + .byte 0x5 + .byte 0xca,0x2 + .4byte .LASF361 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._default_types.h.15.247e5cd201eca3442cbf5404108c4935,comdat +.Ldebug_macro5: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xf + .4byte .LASF362 + .byte 0x5 + .byte 0x1a + .4byte .LASF363 + .byte 0x5 + .byte 0x21 + .4byte .LASF364 + .byte 0x5 + .byte 0x2f + .4byte .LASF365 + .byte 0x5 + .byte 0x3d + .4byte .LASF366 + .byte 0x5 + .byte 0x53 + .4byte .LASF367 + .byte 0x5 + .byte 0x6d + .4byte .LASF368 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF369 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF370 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF371 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF372 + .byte 0x6 + .byte 0xf4,0x1 + .4byte .LASF373 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._intsup.h.10.48bafbb683905c4daa4565a85aeeb264,comdat +.Ldebug_macro6: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xa + .4byte .LASF374 + .byte 0x5 + .byte 0x10 + .4byte .LASF375 + .byte 0x6 + .byte 0x2b + .4byte .LASF376 + .byte 0x6 + .byte 0x2c + .4byte .LASF377 + .byte 0x6 + .byte 0x2d + .4byte .LASF378 + .byte 0x6 + .byte 0x2e + .4byte .LASF379 + .byte 0x2 + .byte 0x2f + .string "int" + .byte 0x6 + .byte 0x30 + .4byte .LASF380 + .byte 0x6 + .byte 0x31 + .4byte .LASF381 + .byte 0x6 + .byte 0x32 + .4byte .LASF382 + .byte 0x5 + .byte 0x33 + .4byte .LASF383 + .byte 0x5 + .byte 0x34 + .4byte .LASF384 + .byte 0x5 + .byte 0x35 + .4byte .LASF385 + .byte 0x5 + .byte 0x36 + .4byte .LASF386 + .byte 0x5 + .byte 0x37 + .4byte .LASF387 + .byte 0x5 + .byte 0x38 + .4byte .LASF388 + .byte 0x5 + .byte 0x39 + .4byte .LASF389 + .byte 0x5 + .byte 0x3a + .4byte .LASF390 + .byte 0x5 + .byte 0x43 + .4byte .LASF391 + .byte 0x5 + .byte 0x4a + .4byte .LASF392 + .byte 0x5 + .byte 0x52 + .4byte .LASF393 + .byte 0x5 + .byte 0x5d + .4byte .LASF394 + .byte 0x5 + .byte 0x68 + .4byte .LASF395 + .byte 0x5 + .byte 0x71 + .4byte .LASF396 + .byte 0x5 + .byte 0x78 + .4byte .LASF397 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF398 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF399 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF400 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF401 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF402 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF403 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF404 + .byte 0x6 + .byte 0xb8,0x1 + .4byte .LASF376 + .byte 0x6 + .byte 0xb9,0x1 + .4byte .LASF377 + .byte 0x6 + .byte 0xba,0x1 + .4byte .LASF378 + .byte 0x6 + .byte 0xbb,0x1 + .4byte .LASF379 + .byte 0x2 + .byte 0xbc,0x1 + .string "int" + .byte 0x6 + .byte 0xbd,0x1 + .4byte .LASF382 + .byte 0x6 + .byte 0xc2,0x1 + .4byte .LASF380 + .byte 0x6 + .byte 0xc3,0x1 + .4byte .LASF381 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._stdint.h.10.c24fa3af3bc1706662bb5593a907e841,comdat +.Ldebug_macro7: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xa + .4byte .LASF405 + .byte 0x5 + .byte 0x15 + .4byte .LASF406 + .byte 0x5 + .byte 0x19 + .4byte .LASF407 + .byte 0x5 + .byte 0x1b + .4byte .LASF408 + .byte 0x5 + .byte 0x21 + .4byte .LASF409 + .byte 0x5 + .byte 0x25 + .4byte .LASF410 + .byte 0x5 + .byte 0x27 + .4byte .LASF411 + .byte 0x5 + .byte 0x2d + .4byte .LASF412 + .byte 0x5 + .byte 0x31 + .4byte .LASF413 + .byte 0x5 + .byte 0x33 + .4byte .LASF414 + .byte 0x5 + .byte 0x39 + .4byte .LASF415 + .byte 0x5 + .byte 0x3d + .4byte .LASF416 + .byte 0x5 + .byte 0x3f + .4byte .LASF417 + .byte 0x5 + .byte 0x44 + .4byte .LASF418 + .byte 0x5 + .byte 0x49 + .4byte .LASF419 + .byte 0x5 + .byte 0x4e + .4byte .LASF420 + .byte 0x5 + .byte 0x53 + .4byte .LASF421 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stdint.h.23.d53047a68f4a85177f80b422d52785ed,comdat +.Ldebug_macro8: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x17 + .4byte .LASF422 + .byte 0x5 + .byte 0x1d + .4byte .LASF423 + .byte 0x5 + .byte 0x23 + .4byte .LASF424 + .byte 0x5 + .byte 0x29 + .4byte .LASF425 + .byte 0x5 + .byte 0x35 + .4byte .LASF426 + .byte 0x5 + .byte 0x3f + .4byte .LASF427 + .byte 0x5 + .byte 0x49 + .4byte .LASF428 + .byte 0x5 + .byte 0x53 + .4byte .LASF429 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF430 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF431 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF432 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF433 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF434 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF435 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF436 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF437 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF438 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF439 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF440 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF441 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF442 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF443 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF444 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF445 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF446 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF447 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF448 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF449 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF450 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF451 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF452 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF453 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF454 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF455 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF456 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF457 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF458 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF459 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF460 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF461 + .byte 0x5 + .byte 0x98,0x2 + .4byte .LASF462 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF463 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF464 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF465 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF466 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF467 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF468 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF469 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF470 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF471 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF472 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF473 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF474 + .byte 0x5 + .byte 0xe2,0x2 + .4byte .LASF475 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF476 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF477 + .byte 0x5 + .byte 0xf6,0x2 + .4byte .LASF478 + .byte 0x5 + .byte 0x80,0x3 + .4byte .LASF479 + .byte 0x5 + .byte 0x85,0x3 + .4byte .LASF480 + .byte 0x5 + .byte 0x8c,0x3 + .4byte .LASF481 + .byte 0x5 + .byte 0x8d,0x3 + .4byte .LASF482 + .byte 0x5 + .byte 0x98,0x3 + .4byte .LASF483 + .byte 0x5 + .byte 0x99,0x3 + .4byte .LASF484 + .byte 0x5 + .byte 0xa4,0x3 + .4byte .LASF485 + .byte 0x5 + .byte 0xa5,0x3 + .4byte .LASF486 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF487 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF488 + .byte 0x5 + .byte 0xc1,0x3 + .4byte .LASF489 + .byte 0x5 + .byte 0xc2,0x3 + .4byte .LASF490 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103.h.185.cffba7180870c0512d04c724c6463ab0,comdat +.Ldebug_macro9: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF491 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF492 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF493 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF494 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF495 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF496 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF497 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF498 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF499 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF500 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF501 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF502 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF503 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF504 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF505 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF506 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF507 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF508 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF509 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF510 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF511 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF512 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF513 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF514 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF515 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF516 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF517 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF518 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF519 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF520 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF521 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF522 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF523 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF524 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF525 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF526 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_adc.h.42.14cb8f90e4b5922f8a25d63c78535a21,comdat +.Ldebug_macro10: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x2a + .4byte .LASF529 + .byte 0x5 + .byte 0x2b + .4byte .LASF530 + .byte 0x5 + .byte 0x2e + .4byte .LASF531 + .byte 0x5 + .byte 0x2f + .4byte .LASF532 + .byte 0x5 + .byte 0x30 + .4byte .LASF533 + .byte 0x5 + .byte 0x31 + .4byte .LASF534 + .byte 0x5 + .byte 0x32 + .4byte .LASF535 + .byte 0x5 + .byte 0x33 + .4byte .LASF536 + .byte 0x5 + .byte 0x34 + .4byte .LASF537 + .byte 0x5 + .byte 0x35 + .4byte .LASF538 + .byte 0x5 + .byte 0x36 + .4byte .LASF539 + .byte 0x5 + .byte 0x37 + .4byte .LASF540 + .byte 0x5 + .byte 0x38 + .4byte .LASF541 + .byte 0x5 + .byte 0x39 + .4byte .LASF542 + .byte 0x5 + .byte 0x3a + .4byte .LASF543 + .byte 0x5 + .byte 0x3b + .4byte .LASF544 + .byte 0x5 + .byte 0x3c + .4byte .LASF545 + .byte 0x5 + .byte 0x3d + .4byte .LASF546 + .byte 0x5 + .byte 0x3e + .4byte .LASF547 + .byte 0x5 + .byte 0x3f + .4byte .LASF548 + .byte 0x5 + .byte 0x40 + .4byte .LASF549 + .byte 0x5 + .byte 0x41 + .4byte .LASF550 + .byte 0x5 + .byte 0x42 + .4byte .LASF551 + .byte 0x5 + .byte 0x46 + .4byte .LASF552 + .byte 0x5 + .byte 0x47 + .4byte .LASF553 + .byte 0x5 + .byte 0x48 + .4byte .LASF554 + .byte 0x5 + .byte 0x49 + .4byte .LASF555 + .byte 0x5 + .byte 0x4a + .4byte .LASF556 + .byte 0x5 + .byte 0x4d + .4byte .LASF557 + .byte 0x5 + .byte 0x4e + .4byte .LASF558 + .byte 0x5 + .byte 0x4f + .4byte .LASF559 + .byte 0x5 + .byte 0x50 + .4byte .LASF560 + .byte 0x5 + .byte 0x51 + .4byte .LASF561 + .byte 0x5 + .byte 0x52 + .4byte .LASF562 + .byte 0x5 + .byte 0x53 + .4byte .LASF563 + .byte 0x5 + .byte 0x54 + .4byte .LASF564 + .byte 0x5 + .byte 0x55 + .4byte .LASF565 + .byte 0x5 + .byte 0x56 + .4byte .LASF566 + .byte 0x5 + .byte 0x57 + .4byte .LASF567 + .byte 0x5 + .byte 0x58 + .4byte .LASF568 + .byte 0x5 + .byte 0x59 + .4byte .LASF569 + .byte 0x5 + .byte 0x5c + .4byte .LASF570 + .byte 0x5 + .byte 0x5d + .4byte .LASF571 + .byte 0x5 + .byte 0x5e + .4byte .LASF572 + .byte 0x5 + .byte 0x5f + .4byte .LASF573 + .byte 0x5 + .byte 0x60 + .4byte .LASF574 + .byte 0x5 + .byte 0x61 + .4byte .LASF575 + .byte 0x5 + .byte 0x62 + .4byte .LASF576 + .byte 0x5 + .byte 0x63 + .4byte .LASF577 + .byte 0x5 + .byte 0x64 + .4byte .LASF578 + .byte 0x5 + .byte 0x65 + .4byte .LASF579 + .byte 0x5 + .byte 0x66 + .4byte .LASF580 + .byte 0x5 + .byte 0x67 + .4byte .LASF581 + .byte 0x5 + .byte 0x68 + .4byte .LASF582 + .byte 0x5 + .byte 0x6b + .4byte .LASF583 + .byte 0x5 + .byte 0x6e + .4byte .LASF584 + .byte 0x5 + .byte 0x71 + .4byte .LASF585 + .byte 0x5 + .byte 0x74 + .4byte .LASF586 + .byte 0x5 + .byte 0x77 + .4byte .LASF587 + .byte 0x5 + .byte 0x78 + .4byte .LASF588 + .byte 0x5 + .byte 0x7b + .4byte .LASF589 + .byte 0x5 + .byte 0x7c + .4byte .LASF590 + .byte 0x5 + .byte 0x7f + .4byte .LASF591 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF592 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF593 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF594 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF595 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF596 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF597 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF598 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF599 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF600 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF601 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF602 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF603 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF604 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF605 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF606 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF607 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF608 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF609 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF610 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF611 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF612 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF613 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF614 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF615 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF616 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF617 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF618 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF619 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF620 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF621 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF622 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF623 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF624 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF625 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF626 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF627 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF628 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF629 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF630 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF631 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF632 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF633 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF634 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF635 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF636 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF637 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF638 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF639 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF640 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF641 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF642 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF643 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF644 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF645 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF646 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF647 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF648 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF649 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF650 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF651 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF652 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF653 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF654 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF655 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF656 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF657 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF658 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF659 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF660 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF661 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF662 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF663 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF664 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF665 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF666 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF667 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF668 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF669 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF670 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF671 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF672 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF673 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF674 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF675 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF676 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF677 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF678 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF679 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF680 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF681 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF682 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF683 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF684 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF685 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF686 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF687 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF688 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF689 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF690 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF691 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF692 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF693 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF694 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF695 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF696 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF697 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF698 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF699 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF700 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF701 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF702 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF703 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF704 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF705 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF706 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF707 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF708 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF709 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF710 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_bkp.h.37.565cdaf530a41cd40ed21e5fda39a6ed,comdat +.Ldebug_macro11: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF711 + .byte 0x5 + .byte 0x2a + .4byte .LASF712 + .byte 0x5 + .byte 0x2d + .4byte .LASF713 + .byte 0x5 + .byte 0x2e + .4byte .LASF714 + .byte 0x5 + .byte 0x2f + .4byte .LASF715 + .byte 0x5 + .byte 0x30 + .4byte .LASF716 + .byte 0x5 + .byte 0x31 + .4byte .LASF717 + .byte 0x5 + .byte 0x32 + .4byte .LASF718 + .byte 0x5 + .byte 0x33 + .4byte .LASF719 + .byte 0x5 + .byte 0x34 + .4byte .LASF720 + .byte 0x5 + .byte 0x35 + .4byte .LASF721 + .byte 0x5 + .byte 0x36 + .4byte .LASF722 + .byte 0x5 + .byte 0x37 + .4byte .LASF723 + .byte 0x5 + .byte 0x38 + .4byte .LASF724 + .byte 0x5 + .byte 0x39 + .4byte .LASF725 + .byte 0x5 + .byte 0x3a + .4byte .LASF726 + .byte 0x5 + .byte 0x3b + .4byte .LASF727 + .byte 0x5 + .byte 0x3c + .4byte .LASF728 + .byte 0x5 + .byte 0x3d + .4byte .LASF729 + .byte 0x5 + .byte 0x3e + .4byte .LASF730 + .byte 0x5 + .byte 0x3f + .4byte .LASF731 + .byte 0x5 + .byte 0x40 + .4byte .LASF732 + .byte 0x5 + .byte 0x41 + .4byte .LASF733 + .byte 0x5 + .byte 0x42 + .4byte .LASF734 + .byte 0x5 + .byte 0x43 + .4byte .LASF735 + .byte 0x5 + .byte 0x44 + .4byte .LASF736 + .byte 0x5 + .byte 0x45 + .4byte .LASF737 + .byte 0x5 + .byte 0x46 + .4byte .LASF738 + .byte 0x5 + .byte 0x47 + .4byte .LASF739 + .byte 0x5 + .byte 0x48 + .4byte .LASF740 + .byte 0x5 + .byte 0x49 + .4byte .LASF741 + .byte 0x5 + .byte 0x4a + .4byte .LASF742 + .byte 0x5 + .byte 0x4b + .4byte .LASF743 + .byte 0x5 + .byte 0x4c + .4byte .LASF744 + .byte 0x5 + .byte 0x4d + .4byte .LASF745 + .byte 0x5 + .byte 0x4e + .4byte .LASF746 + .byte 0x5 + .byte 0x4f + .4byte .LASF747 + .byte 0x5 + .byte 0x50 + .4byte .LASF748 + .byte 0x5 + .byte 0x51 + .4byte .LASF749 + .byte 0x5 + .byte 0x52 + .4byte .LASF750 + .byte 0x5 + .byte 0x53 + .4byte .LASF751 + .byte 0x5 + .byte 0x54 + .4byte .LASF752 + .byte 0x5 + .byte 0x55 + .4byte .LASF753 + .byte 0x5 + .byte 0x56 + .4byte .LASF754 + .byte 0x5 + .byte 0x57 + .4byte .LASF755 + .byte 0x5 + .byte 0x58 + .4byte .LASF756 + .byte 0x5 + .byte 0x59 + .4byte .LASF757 + .byte 0x5 + .byte 0x5d + .4byte .LASF758 + .byte 0x5 + .byte 0x60 + .4byte .LASF759 + .byte 0x5 + .byte 0x61 + .4byte .LASF760 + .byte 0x5 + .byte 0x62 + .4byte .LASF761 + .byte 0x5 + .byte 0x63 + .4byte .LASF762 + .byte 0x5 + .byte 0x66 + .4byte .LASF763 + .byte 0x5 + .byte 0x67 + .4byte .LASF764 + .byte 0x5 + .byte 0x6a + .4byte .LASF765 + .byte 0x5 + .byte 0x6b + .4byte .LASF766 + .byte 0x5 + .byte 0x6c + .4byte .LASF767 + .byte 0x5 + .byte 0x6d + .4byte .LASF768 + .byte 0x5 + .byte 0x6e + .4byte .LASF769 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF770 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF771 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF772 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF773 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF774 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF775 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF776 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF777 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF778 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF779 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_can.h.39.9380e444d8240972fa3c91ce629786a4,comdat +.Ldebug_macro12: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF780 + .byte 0x5 + .byte 0x2c + .4byte .LASF781 + .byte 0x5 + .byte 0x2d + .4byte .LASF782 + .byte 0x5 + .byte 0x30 + .4byte .LASF783 + .byte 0x5 + .byte 0x31 + .4byte .LASF784 + .byte 0x5 + .byte 0x32 + .4byte .LASF785 + .byte 0x5 + .byte 0x33 + .4byte .LASF786 + .byte 0x5 + .byte 0x34 + .4byte .LASF787 + .byte 0x5 + .byte 0x35 + .4byte .LASF788 + .byte 0x5 + .byte 0x36 + .4byte .LASF789 + .byte 0x5 + .byte 0x37 + .4byte .LASF790 + .byte 0x5 + .byte 0x38 + .4byte .LASF791 + .byte 0x5 + .byte 0x39 + .4byte .LASF792 + .byte 0x5 + .byte 0x3a + .4byte .LASF793 + .byte 0x5 + .byte 0x3b + .4byte .LASF794 + .byte 0x5 + .byte 0x3c + .4byte .LASF795 + .byte 0x5 + .byte 0x3d + .4byte .LASF796 + .byte 0x5 + .byte 0x3e + .4byte .LASF797 + .byte 0x5 + .byte 0x3f + .4byte .LASF798 + .byte 0x5 + .byte 0x40 + .4byte .LASF799 + .byte 0x5 + .byte 0x41 + .4byte .LASF800 + .byte 0x5 + .byte 0x42 + .4byte .LASF801 + .byte 0x5 + .byte 0x43 + .4byte .LASF802 + .byte 0x5 + .byte 0x44 + .4byte .LASF803 + .byte 0x5 + .byte 0x45 + .4byte .LASF804 + .byte 0x5 + .byte 0x46 + .4byte .LASF805 + .byte 0x5 + .byte 0x47 + .4byte .LASF806 + .byte 0x5 + .byte 0x48 + .4byte .LASF807 + .byte 0x5 + .byte 0x49 + .4byte .LASF808 + .byte 0x5 + .byte 0x4a + .4byte .LASF809 + .byte 0x5 + .byte 0x4b + .4byte .LASF810 + .byte 0x5 + .byte 0x4c + .4byte .LASF811 + .byte 0x5 + .byte 0x4d + .4byte .LASF812 + .byte 0x5 + .byte 0x4e + .4byte .LASF813 + .byte 0x5 + .byte 0x4f + .4byte .LASF814 + .byte 0x5 + .byte 0x50 + .4byte .LASF815 + .byte 0x5 + .byte 0x51 + .4byte .LASF816 + .byte 0x5 + .byte 0x52 + .4byte .LASF817 + .byte 0x5 + .byte 0x53 + .4byte .LASF818 + .byte 0x5 + .byte 0x54 + .4byte .LASF819 + .byte 0x5 + .byte 0x55 + .4byte .LASF820 + .byte 0x5 + .byte 0x56 + .4byte .LASF821 + .byte 0x5 + .byte 0x57 + .4byte .LASF822 + .byte 0x5 + .byte 0x58 + .4byte .LASF823 + .byte 0x5 + .byte 0x59 + .4byte .LASF824 + .byte 0x5 + .byte 0x5a + .4byte .LASF825 + .byte 0x5 + .byte 0x5b + .4byte .LASF826 + .byte 0x5 + .byte 0x5c + .4byte .LASF827 + .byte 0x5 + .byte 0x5d + .4byte .LASF828 + .byte 0x5 + .byte 0x5e + .4byte .LASF829 + .byte 0x5 + .byte 0x5f + .4byte .LASF830 + .byte 0x5 + .byte 0x60 + .4byte .LASF831 + .byte 0x5 + .byte 0x61 + .4byte .LASF832 + .byte 0x5 + .byte 0x62 + .4byte .LASF833 + .byte 0x5 + .byte 0x63 + .4byte .LASF834 + .byte 0x5 + .byte 0x64 + .4byte .LASF835 + .byte 0x5 + .byte 0x65 + .4byte .LASF836 + .byte 0x5 + .byte 0x66 + .4byte .LASF837 + .byte 0x5 + .byte 0x67 + .4byte .LASF838 + .byte 0x5 + .byte 0x68 + .4byte .LASF839 + .byte 0x5 + .byte 0x69 + .4byte .LASF840 + .byte 0x5 + .byte 0x6a + .4byte .LASF841 + .byte 0x5 + .byte 0x6b + .4byte .LASF842 + .byte 0x5 + .byte 0x6c + .4byte .LASF843 + .byte 0x5 + .byte 0x6d + .4byte .LASF844 + .byte 0x5 + .byte 0x6e + .4byte .LASF845 + .byte 0x5 + .byte 0x6f + .4byte .LASF846 + .byte 0x5 + .byte 0x70 + .4byte .LASF847 + .byte 0x5 + .byte 0x71 + .4byte .LASF848 + .byte 0x5 + .byte 0x72 + .4byte .LASF849 + .byte 0x5 + .byte 0x73 + .4byte .LASF850 + .byte 0x5 + .byte 0x74 + .4byte .LASF851 + .byte 0x5 + .byte 0x75 + .4byte .LASF852 + .byte 0x5 + .byte 0x76 + .4byte .LASF853 + .byte 0x5 + .byte 0x77 + .4byte .LASF854 + .byte 0x5 + .byte 0x78 + .4byte .LASF855 + .byte 0x5 + .byte 0x79 + .4byte .LASF856 + .byte 0x5 + .byte 0x7a + .4byte .LASF857 + .byte 0x5 + .byte 0x7b + .4byte .LASF858 + .byte 0x5 + .byte 0x7c + .4byte .LASF859 + .byte 0x5 + .byte 0x7d + .4byte .LASF860 + .byte 0x5 + .byte 0x7e + .4byte .LASF861 + .byte 0x5 + .byte 0x7f + .4byte .LASF862 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF863 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF864 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF865 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF866 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF867 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF868 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF869 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF870 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF871 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF872 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF873 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF874 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF875 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF876 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF877 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF878 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF879 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF880 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF881 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF882 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF883 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF884 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF885 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF886 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF887 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF888 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF889 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF890 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF891 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF892 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF893 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF894 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF895 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF896 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF897 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF898 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF899 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF900 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF901 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF902 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF903 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF904 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF905 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF906 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF907 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF908 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF909 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF910 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF911 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF912 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF913 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF914 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF915 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF916 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF917 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF918 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF919 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF920 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF921 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF922 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF923 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF924 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF925 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF926 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF927 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF928 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF929 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF930 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF931 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF932 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF933 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF934 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF935 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF936 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF937 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF938 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF939 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF940 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF941 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF942 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF943 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF944 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF945 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF946 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF947 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF948 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF949 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF950 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF951 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF952 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF953 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF954 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF955 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF956 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF957 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF958 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF959 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF960 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF961 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF962 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF963 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF964 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF965 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF966 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF967 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF968 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF969 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF970 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF971 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF972 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF973 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF974 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF975 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF976 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF977 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF978 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF979 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF980 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF981 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF982 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF983 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF984 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF985 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF986 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF987 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF988 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF989 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF990 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF991 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF992 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF993 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF994 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF995 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF996 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF997 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF998 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF999 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF1000 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF1001 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF1002 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF1003 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF1004 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF1005 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF1006 + .byte 0x5 + .byte 0xe4,0x3 + .4byte .LASF1007 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF1008 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF1009 + .byte 0x5 + .byte 0xed,0x3 + .4byte .LASF1010 + .byte 0x5 + .byte 0xf0,0x3 + .4byte .LASF1011 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF1012 + .byte 0x5 + .byte 0xf6,0x3 + .4byte .LASF1013 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF1014 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF1015 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF1016 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF1017 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF1018 + .byte 0x5 + .byte 0x88,0x4 + .4byte .LASF1019 + .byte 0x5 + .byte 0x8b,0x4 + .4byte .LASF1020 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF1021 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF1022 + .byte 0x5 + .byte 0x94,0x4 + .4byte .LASF1023 + .byte 0x5 + .byte 0x97,0x4 + .4byte .LASF1024 + .byte 0x5 + .byte 0x9a,0x4 + .4byte .LASF1025 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF1026 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF1027 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF1028 + .byte 0x5 + .byte 0xa6,0x4 + .4byte .LASF1029 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF1030 + .byte 0x5 + .byte 0xac,0x4 + .4byte .LASF1031 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF1032 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF1033 + .byte 0x5 + .byte 0xb5,0x4 + .4byte .LASF1034 + .byte 0x5 + .byte 0xb8,0x4 + .4byte .LASF1035 + .byte 0x5 + .byte 0xbb,0x4 + .4byte .LASF1036 + .byte 0x5 + .byte 0xbe,0x4 + .4byte .LASF1037 + .byte 0x5 + .byte 0xc1,0x4 + .4byte .LASF1038 + .byte 0x5 + .byte 0xc4,0x4 + .4byte .LASF1039 + .byte 0x5 + .byte 0xc7,0x4 + .4byte .LASF1040 + .byte 0x5 + .byte 0xc8,0x4 + .4byte .LASF1041 + .byte 0x5 + .byte 0xc9,0x4 + .4byte .LASF1042 + .byte 0x5 + .byte 0xca,0x4 + .4byte .LASF1043 + .byte 0x5 + .byte 0xcb,0x4 + .4byte .LASF1044 + .byte 0x5 + .byte 0xcc,0x4 + .4byte .LASF1045 + .byte 0x5 + .byte 0xcd,0x4 + .4byte .LASF1046 + .byte 0x5 + .byte 0xce,0x4 + .4byte .LASF1047 + .byte 0x5 + .byte 0xcf,0x4 + .4byte .LASF1048 + .byte 0x5 + .byte 0xd1,0x4 + .4byte .LASF1049 + .byte 0x5 + .byte 0xd4,0x4 + .4byte .LASF1050 + .byte 0x5 + .byte 0xd5,0x4 + .4byte .LASF1051 + .byte 0x5 + .byte 0xd6,0x4 + .4byte .LASF1052 + .byte 0x5 + .byte 0xd7,0x4 + .4byte .LASF1053 + .byte 0x5 + .byte 0xda,0x4 + .4byte .LASF1054 + .byte 0x5 + .byte 0xdb,0x4 + .4byte .LASF1055 + .byte 0x5 + .byte 0xdc,0x4 + .4byte .LASF1056 + .byte 0x5 + .byte 0xdd,0x4 + .4byte .LASF1057 + .byte 0x5 + .byte 0xe0,0x4 + .4byte .LASF1058 + .byte 0x5 + .byte 0xe1,0x4 + .4byte .LASF1059 + .byte 0x5 + .byte 0xe2,0x4 + .4byte .LASF1060 + .byte 0x5 + .byte 0xe3,0x4 + .4byte .LASF1061 + .byte 0x5 + .byte 0xe4,0x4 + .4byte .LASF1062 + .byte 0x5 + .byte 0xe5,0x4 + .4byte .LASF1063 + .byte 0x5 + .byte 0xe6,0x4 + .4byte .LASF1064 + .byte 0x5 + .byte 0xe7,0x4 + .4byte .LASF1065 + .byte 0x5 + .byte 0xe8,0x4 + .4byte .LASF1066 + .byte 0x5 + .byte 0xe9,0x4 + .4byte .LASF1067 + .byte 0x5 + .byte 0xea,0x4 + .4byte .LASF1068 + .byte 0x5 + .byte 0xeb,0x4 + .4byte .LASF1069 + .byte 0x5 + .byte 0xec,0x4 + .4byte .LASF1070 + .byte 0x5 + .byte 0xed,0x4 + .4byte .LASF1071 + .byte 0x5 + .byte 0xee,0x4 + .4byte .LASF1072 + .byte 0x5 + .byte 0xef,0x4 + .4byte .LASF1073 + .byte 0x5 + .byte 0xf2,0x4 + .4byte .LASF1074 + .byte 0x5 + .byte 0xf3,0x4 + .4byte .LASF1075 + .byte 0x5 + .byte 0xf4,0x4 + .4byte .LASF1076 + .byte 0x5 + .byte 0xf5,0x4 + .4byte .LASF1077 + .byte 0x5 + .byte 0xf6,0x4 + .4byte .LASF1078 + .byte 0x5 + .byte 0xf7,0x4 + .4byte .LASF1079 + .byte 0x5 + .byte 0xf8,0x4 + .4byte .LASF1080 + .byte 0x5 + .byte 0xf9,0x4 + .4byte .LASF1081 + .byte 0x5 + .byte 0xfc,0x4 + .4byte .LASF1082 + .byte 0x5 + .byte 0xfd,0x4 + .4byte .LASF1083 + .byte 0x5 + .byte 0xfe,0x4 + .4byte .LASF1084 + .byte 0x5 + .byte 0xff,0x4 + .4byte .LASF1085 + .byte 0x5 + .byte 0x82,0x5 + .4byte .LASF1086 + .byte 0x5 + .byte 0x83,0x5 + .4byte .LASF1087 + .byte 0x5 + .byte 0x86,0x5 + .4byte .LASF1088 + .byte 0x5 + .byte 0x87,0x5 + .4byte .LASF1089 + .byte 0x5 + .byte 0x8a,0x5 + .4byte .LASF1090 + .byte 0x5 + .byte 0x8c,0x5 + .4byte .LASF1091 + .byte 0x5 + .byte 0x8d,0x5 + .4byte .LASF1092 + .byte 0x5 + .byte 0x90,0x5 + .4byte .LASF1093 + .byte 0x5 + .byte 0x91,0x5 + .4byte .LASF1094 + .byte 0x5 + .byte 0x92,0x5 + .4byte .LASF1095 + .byte 0x5 + .byte 0x95,0x5 + .4byte .LASF1096 + .byte 0x5 + .byte 0x96,0x5 + .4byte .LASF1097 + .byte 0x5 + .byte 0x99,0x5 + .4byte .LASF1098 + .byte 0x5 + .byte 0x9a,0x5 + .4byte .LASF1099 + .byte 0x5 + .byte 0x9d,0x5 + .4byte .LASF1100 + .byte 0x5 + .byte 0xa0,0x5 + .4byte .LASF1101 + .byte 0x5 + .byte 0xa1,0x5 + .4byte .LASF1102 + .byte 0x5 + .byte 0xa4,0x5 + .4byte .LASF1103 + .byte 0x5 + .byte 0xa7,0x5 + .4byte .LASF1104 + .byte 0x5 + .byte 0xa8,0x5 + .4byte .LASF1105 + .byte 0x5 + .byte 0xa9,0x5 + .4byte .LASF1106 + .byte 0x5 + .byte 0xaa,0x5 + .4byte .LASF1107 + .byte 0x5 + .byte 0xab,0x5 + .4byte .LASF1108 + .byte 0x5 + .byte 0xac,0x5 + .4byte .LASF1109 + .byte 0x5 + .byte 0xad,0x5 + .4byte .LASF1110 + .byte 0x5 + .byte 0xae,0x5 + .4byte .LASF1111 + .byte 0x5 + .byte 0xaf,0x5 + .4byte .LASF1112 + .byte 0x5 + .byte 0xb0,0x5 + .4byte .LASF1113 + .byte 0x5 + .byte 0xb1,0x5 + .4byte .LASF1114 + .byte 0x5 + .byte 0xb2,0x5 + .4byte .LASF1115 + .byte 0x5 + .byte 0xb3,0x5 + .4byte .LASF1116 + .byte 0x5 + .byte 0xb4,0x5 + .4byte .LASF1117 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_crc.h.37.f77f53f1516fc65e49eac544ab82df8c,comdat +.Ldebug_macro13: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1118 + .byte 0x5 + .byte 0x2a + .4byte .LASF1119 + .byte 0x5 + .byte 0x2d + .4byte .LASF1120 + .byte 0x5 + .byte 0x2e + .4byte .LASF1121 + .byte 0x5 + .byte 0x2f + .4byte .LASF1122 + .byte 0x5 + .byte 0x33 + .4byte .LASF1123 + .byte 0x5 + .byte 0x36 + .4byte .LASF1124 + .byte 0x5 + .byte 0x39 + .4byte .LASF1125 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dac.h.37.c64e29f692c863eb577e59c8c0ad940a,comdat +.Ldebug_macro14: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1126 + .byte 0x5 + .byte 0x2a + .4byte .LASF1127 + .byte 0x5 + .byte 0x2b + .4byte .LASF1128 + .byte 0x5 + .byte 0x2c + .4byte .LASF1129 + .byte 0x5 + .byte 0x2f + .4byte .LASF1130 + .byte 0x5 + .byte 0x30 + .4byte .LASF1131 + .byte 0x5 + .byte 0x31 + .4byte .LASF1132 + .byte 0x5 + .byte 0x32 + .4byte .LASF1133 + .byte 0x5 + .byte 0x33 + .4byte .LASF1134 + .byte 0x5 + .byte 0x34 + .4byte .LASF1135 + .byte 0x5 + .byte 0x35 + .4byte .LASF1136 + .byte 0x5 + .byte 0x36 + .4byte .LASF1137 + .byte 0x5 + .byte 0x37 + .4byte .LASF1138 + .byte 0x5 + .byte 0x38 + .4byte .LASF1139 + .byte 0x5 + .byte 0x39 + .4byte .LASF1140 + .byte 0x5 + .byte 0x3a + .4byte .LASF1141 + .byte 0x5 + .byte 0x3b + .4byte .LASF1142 + .byte 0x5 + .byte 0x3f + .4byte .LASF1143 + .byte 0x5 + .byte 0x40 + .4byte .LASF1144 + .byte 0x5 + .byte 0x41 + .4byte .LASF1145 + .byte 0x5 + .byte 0x42 + .4byte .LASF1146 + .byte 0x5 + .byte 0x43 + .4byte .LASF1147 + .byte 0x5 + .byte 0x44 + .4byte .LASF1148 + .byte 0x5 + .byte 0x45 + .4byte .LASF1149 + .byte 0x5 + .byte 0x46 + .4byte .LASF1150 + .byte 0x5 + .byte 0x47 + .4byte .LASF1151 + .byte 0x5 + .byte 0x48 + .4byte .LASF1152 + .byte 0x5 + .byte 0x49 + .4byte .LASF1153 + .byte 0x5 + .byte 0x4a + .4byte .LASF1154 + .byte 0x5 + .byte 0x4b + .4byte .LASF1155 + .byte 0x5 + .byte 0x4c + .4byte .LASF1156 + .byte 0x5 + .byte 0x4f + .4byte .LASF1157 + .byte 0x5 + .byte 0x50 + .4byte .LASF1158 + .byte 0x5 + .byte 0x53 + .4byte .LASF1159 + .byte 0x5 + .byte 0x56 + .4byte .LASF1160 + .byte 0x5 + .byte 0x59 + .4byte .LASF1161 + .byte 0x5 + .byte 0x5c + .4byte .LASF1162 + .byte 0x5 + .byte 0x5f + .4byte .LASF1163 + .byte 0x5 + .byte 0x62 + .4byte .LASF1164 + .byte 0x5 + .byte 0x65 + .4byte .LASF1165 + .byte 0x5 + .byte 0x66 + .4byte .LASF1166 + .byte 0x5 + .byte 0x69 + .4byte .LASF1167 + .byte 0x5 + .byte 0x6a + .4byte .LASF1168 + .byte 0x5 + .byte 0x6d + .4byte .LASF1169 + .byte 0x5 + .byte 0x6e + .4byte .LASF1170 + .byte 0x5 + .byte 0x71 + .4byte .LASF1171 + .byte 0x5 + .byte 0x74 + .4byte .LASF1172 + .byte 0x5 + .byte 0x78 + .4byte .LASF1173 + .byte 0x5 + .byte 0x79 + .4byte .LASF1174 + .byte 0x5 + .byte 0x7a + .4byte .LASF1175 + .byte 0x5 + .byte 0x7b + .4byte .LASF1176 + .byte 0x5 + .byte 0x7c + .4byte .LASF1177 + .byte 0x5 + .byte 0x7d + .4byte .LASF1178 + .byte 0x5 + .byte 0x7e + .4byte .LASF1179 + .byte 0x5 + .byte 0x7f + .4byte .LASF1180 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF1181 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF1182 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF1183 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1184 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1185 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF1186 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1187 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1188 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF1189 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF1190 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1191 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1192 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1193 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF1194 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF1195 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF1196 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF1197 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1198 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1199 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1200 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1201 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1202 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF1203 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF1204 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1205 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1206 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1207 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1208 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1209 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1210 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1211 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1212 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1213 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1214 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF1215 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1216 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1217 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1218 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1219 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1220 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1221 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF1222 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF1223 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1224 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1225 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1226 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dma.h.38.2c314170096cba83b58f6eccfc84a5f7,comdat +.Ldebug_macro15: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x26 + .4byte .LASF1227 + .byte 0x5 + .byte 0x2b + .4byte .LASF1228 + .byte 0x5 + .byte 0x2c + .4byte .LASF1229 + .byte 0x5 + .byte 0x2f + .4byte .LASF1230 + .byte 0x5 + .byte 0x30 + .4byte .LASF1231 + .byte 0x5 + .byte 0x32 + .4byte .LASF1232 + .byte 0x5 + .byte 0x33 + .4byte .LASF1233 + .byte 0x5 + .byte 0x34 + .4byte .LASF1234 + .byte 0x5 + .byte 0x35 + .4byte .LASF1235 + .byte 0x5 + .byte 0x37 + .4byte .LASF1236 + .byte 0x5 + .byte 0x38 + .4byte .LASF1237 + .byte 0x5 + .byte 0x39 + .4byte .LASF1238 + .byte 0x5 + .byte 0x3a + .4byte .LASF1239 + .byte 0x5 + .byte 0x3c + .4byte .LASF1240 + .byte 0x5 + .byte 0x3d + .4byte .LASF1241 + .byte 0x5 + .byte 0x3e + .4byte .LASF1242 + .byte 0x5 + .byte 0x3f + .4byte .LASF1243 + .byte 0x5 + .byte 0x41 + .4byte .LASF1244 + .byte 0x5 + .byte 0x42 + .4byte .LASF1245 + .byte 0x5 + .byte 0x43 + .4byte .LASF1246 + .byte 0x5 + .byte 0x44 + .4byte .LASF1247 + .byte 0x5 + .byte 0x46 + .4byte .LASF1248 + .byte 0x5 + .byte 0x47 + .4byte .LASF1249 + .byte 0x5 + .byte 0x48 + .4byte .LASF1250 + .byte 0x5 + .byte 0x49 + .4byte .LASF1251 + .byte 0x5 + .byte 0x4b + .4byte .LASF1252 + .byte 0x5 + .byte 0x4c + .4byte .LASF1253 + .byte 0x5 + .byte 0x4d + .4byte .LASF1254 + .byte 0x5 + .byte 0x4e + .4byte .LASF1255 + .byte 0x5 + .byte 0x50 + .4byte .LASF1256 + .byte 0x5 + .byte 0x51 + .4byte .LASF1257 + .byte 0x5 + .byte 0x52 + .4byte .LASF1258 + .byte 0x5 + .byte 0x53 + .4byte .LASF1259 + .byte 0x5 + .byte 0x57 + .4byte .LASF1260 + .byte 0x5 + .byte 0x58 + .4byte .LASF1261 + .byte 0x5 + .byte 0x59 + .4byte .LASF1262 + .byte 0x5 + .byte 0x5a + .4byte .LASF1263 + .byte 0x5 + .byte 0x5d + .4byte .LASF1264 + .byte 0x5 + .byte 0x5e + .4byte .LASF1265 + .byte 0x5 + .byte 0x5f + .4byte .LASF1266 + .byte 0x5 + .byte 0x60 + .4byte .LASF1267 + .byte 0x5 + .byte 0x63 + .4byte .LASF1268 + .byte 0x5 + .byte 0x64 + .4byte .LASF1269 + .byte 0x5 + .byte 0x65 + .4byte .LASF1270 + .byte 0x5 + .byte 0x66 + .4byte .LASF1271 + .byte 0x5 + .byte 0x67 + .4byte .LASF1272 + .byte 0x5 + .byte 0x68 + .4byte .LASF1273 + .byte 0x5 + .byte 0x69 + .4byte .LASF1274 + .byte 0x5 + .byte 0x6a + .4byte .LASF1275 + .byte 0x5 + .byte 0x6b + .4byte .LASF1276 + .byte 0x5 + .byte 0x6c + .4byte .LASF1277 + .byte 0x5 + .byte 0x6d + .4byte .LASF1278 + .byte 0x5 + .byte 0x6e + .4byte .LASF1279 + .byte 0x5 + .byte 0x71 + .4byte .LASF1280 + .byte 0x5 + .byte 0x74 + .4byte .LASF1281 + .byte 0x5 + .byte 0x77 + .4byte .LASF1282 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1283 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1284 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1285 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1286 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1287 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1288 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1289 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1290 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1291 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1292 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1293 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1294 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1295 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1296 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1297 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1298 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1299 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1300 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1301 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1302 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1303 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF1304 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1305 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1306 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1307 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1308 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1309 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF1310 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF1311 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF1312 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF1313 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF1314 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1315 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF1316 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF1317 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1318 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1319 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF1320 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF1321 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1322 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF1323 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1324 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1325 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_eclic.h.37.7db9f8893169694757dea82a4b9eed61,comdat +.Ldebug_macro16: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1326 + .byte 0x5 + .byte 0x2a + .4byte .LASF1327 + .byte 0x5 + .byte 0x2b + .4byte .LASF1328 + .byte 0x5 + .byte 0x2c + .4byte .LASF1329 + .byte 0x5 + .byte 0x2d + .4byte .LASF1330 + .byte 0x5 + .byte 0x2e + .4byte .LASF1331 + .byte 0x5 + .byte 0x30 + .4byte .LASF1332 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_exmc.h.37.96699be4b910beb81cdfd35650becbf1,comdat +.Ldebug_macro17: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1333 + .byte 0x5 + .byte 0x2a + .4byte .LASF1334 + .byte 0x5 + .byte 0x2e + .4byte .LASF1335 + .byte 0x5 + .byte 0x2f + .4byte .LASF1336 + .byte 0x5 + .byte 0x30 + .4byte .LASF1337 + .byte 0x5 + .byte 0x35 + .4byte .LASF1338 + .byte 0x5 + .byte 0x36 + .4byte .LASF1339 + .byte 0x5 + .byte 0x37 + .4byte .LASF1340 + .byte 0x5 + .byte 0x38 + .4byte .LASF1341 + .byte 0x5 + .byte 0x39 + .4byte .LASF1342 + .byte 0x5 + .byte 0x3a + .4byte .LASF1343 + .byte 0x5 + .byte 0x3b + .4byte .LASF1344 + .byte 0x5 + .byte 0x3c + .4byte .LASF1345 + .byte 0x5 + .byte 0x3d + .4byte .LASF1346 + .byte 0x5 + .byte 0x40 + .4byte .LASF1347 + .byte 0x5 + .byte 0x41 + .4byte .LASF1348 + .byte 0x5 + .byte 0x42 + .4byte .LASF1349 + .byte 0x5 + .byte 0x43 + .4byte .LASF1350 + .byte 0x5 + .byte 0x5e + .4byte .LASF1351 + .byte 0x5 + .byte 0x5f + .4byte .LASF1352 + .byte 0x5 + .byte 0x62 + .4byte .LASF1353 + .byte 0x5 + .byte 0x63 + .4byte .LASF1354 + .byte 0x5 + .byte 0x64 + .4byte .LASF1355 + .byte 0x5 + .byte 0x67 + .4byte .LASF1356 + .byte 0x5 + .byte 0x68 + .4byte .LASF1357 + .byte 0x5 + .byte 0x69 + .4byte .LASF1358 + .byte 0x5 + .byte 0x6a + .4byte .LASF1359 + .byte 0x5 + .byte 0x6d + .4byte .LASF1360 + .byte 0x5 + .byte 0x70 + .4byte .LASF1361 + .byte 0x5 + .byte 0x71 + .4byte .LASF1362 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_exti.h.37.a48547bbdeb43685ea30e1aa7e1bc0e9,comdat +.Ldebug_macro18: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1363 + .byte 0x5 + .byte 0x2a + .4byte .LASF1364 + .byte 0x5 + .byte 0x2d + .4byte .LASF1365 + .byte 0x5 + .byte 0x2e + .4byte .LASF1366 + .byte 0x5 + .byte 0x2f + .4byte .LASF1367 + .byte 0x5 + .byte 0x30 + .4byte .LASF1368 + .byte 0x5 + .byte 0x31 + .4byte .LASF1369 + .byte 0x5 + .byte 0x32 + .4byte .LASF1370 + .byte 0x5 + .byte 0x36 + .4byte .LASF1371 + .byte 0x5 + .byte 0x37 + .4byte .LASF1372 + .byte 0x5 + .byte 0x38 + .4byte .LASF1373 + .byte 0x5 + .byte 0x39 + .4byte .LASF1374 + .byte 0x5 + .byte 0x3a + .4byte .LASF1375 + .byte 0x5 + .byte 0x3b + .4byte .LASF1376 + .byte 0x5 + .byte 0x3c + .4byte .LASF1377 + .byte 0x5 + .byte 0x3d + .4byte .LASF1378 + .byte 0x5 + .byte 0x3e + .4byte .LASF1379 + .byte 0x5 + .byte 0x3f + .4byte .LASF1380 + .byte 0x5 + .byte 0x40 + .4byte .LASF1381 + .byte 0x5 + .byte 0x41 + .4byte .LASF1382 + .byte 0x5 + .byte 0x42 + .4byte .LASF1383 + .byte 0x5 + .byte 0x43 + .4byte .LASF1384 + .byte 0x5 + .byte 0x44 + .4byte .LASF1385 + .byte 0x5 + .byte 0x45 + .4byte .LASF1386 + .byte 0x5 + .byte 0x46 + .4byte .LASF1387 + .byte 0x5 + .byte 0x47 + .4byte .LASF1388 + .byte 0x5 + .byte 0x48 + .4byte .LASF1389 + .byte 0x5 + .byte 0x4b + .4byte .LASF1390 + .byte 0x5 + .byte 0x4c + .4byte .LASF1391 + .byte 0x5 + .byte 0x4d + .4byte .LASF1392 + .byte 0x5 + .byte 0x4e + .4byte .LASF1393 + .byte 0x5 + .byte 0x4f + .4byte .LASF1394 + .byte 0x5 + .byte 0x50 + .4byte .LASF1395 + .byte 0x5 + .byte 0x51 + .4byte .LASF1396 + .byte 0x5 + .byte 0x52 + .4byte .LASF1397 + .byte 0x5 + .byte 0x53 + .4byte .LASF1398 + .byte 0x5 + .byte 0x54 + .4byte .LASF1399 + .byte 0x5 + .byte 0x55 + .4byte .LASF1400 + .byte 0x5 + .byte 0x56 + .4byte .LASF1401 + .byte 0x5 + .byte 0x57 + .4byte .LASF1402 + .byte 0x5 + .byte 0x58 + .4byte .LASF1403 + .byte 0x5 + .byte 0x59 + .4byte .LASF1404 + .byte 0x5 + .byte 0x5a + .4byte .LASF1405 + .byte 0x5 + .byte 0x5b + .4byte .LASF1406 + .byte 0x5 + .byte 0x5c + .4byte .LASF1407 + .byte 0x5 + .byte 0x5d + .4byte .LASF1408 + .byte 0x5 + .byte 0x60 + .4byte .LASF1409 + .byte 0x5 + .byte 0x61 + .4byte .LASF1410 + .byte 0x5 + .byte 0x62 + .4byte .LASF1411 + .byte 0x5 + .byte 0x63 + .4byte .LASF1412 + .byte 0x5 + .byte 0x64 + .4byte .LASF1413 + .byte 0x5 + .byte 0x65 + .4byte .LASF1414 + .byte 0x5 + .byte 0x66 + .4byte .LASF1415 + .byte 0x5 + .byte 0x67 + .4byte .LASF1416 + .byte 0x5 + .byte 0x68 + .4byte .LASF1417 + .byte 0x5 + .byte 0x69 + .4byte .LASF1418 + .byte 0x5 + .byte 0x6a + .4byte .LASF1419 + .byte 0x5 + .byte 0x6b + .4byte .LASF1420 + .byte 0x5 + .byte 0x6c + .4byte .LASF1421 + .byte 0x5 + .byte 0x6d + .4byte .LASF1422 + .byte 0x5 + .byte 0x6e + .4byte .LASF1423 + .byte 0x5 + .byte 0x6f + .4byte .LASF1424 + .byte 0x5 + .byte 0x70 + .4byte .LASF1425 + .byte 0x5 + .byte 0x71 + .4byte .LASF1426 + .byte 0x5 + .byte 0x72 + .4byte .LASF1427 + .byte 0x5 + .byte 0x75 + .4byte .LASF1428 + .byte 0x5 + .byte 0x76 + .4byte .LASF1429 + .byte 0x5 + .byte 0x77 + .4byte .LASF1430 + .byte 0x5 + .byte 0x78 + .4byte .LASF1431 + .byte 0x5 + .byte 0x79 + .4byte .LASF1432 + .byte 0x5 + .byte 0x7a + .4byte .LASF1433 + .byte 0x5 + .byte 0x7b + .4byte .LASF1434 + .byte 0x5 + .byte 0x7c + .4byte .LASF1435 + .byte 0x5 + .byte 0x7d + .4byte .LASF1436 + .byte 0x5 + .byte 0x7e + .4byte .LASF1437 + .byte 0x5 + .byte 0x7f + .4byte .LASF1438 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF1439 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF1440 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF1441 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF1442 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF1443 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1444 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1445 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF1446 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1447 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1448 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF1449 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF1450 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1451 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1452 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1453 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF1454 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF1455 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF1456 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF1457 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1458 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF1459 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF1460 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1461 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1462 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1463 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1464 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF1465 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1466 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1467 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1468 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1469 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1470 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF1471 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF1472 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1473 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1474 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1475 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1476 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1477 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF1478 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1479 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1480 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1481 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1482 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1483 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1484 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_fmc.h.39.cad093dc97f9756dd7521b8e6602cd12,comdat +.Ldebug_macro19: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF1485 + .byte 0x5 + .byte 0x2c + .4byte .LASF1486 + .byte 0x5 + .byte 0x2d + .4byte .LASF1487 + .byte 0x5 + .byte 0x30 + .4byte .LASF1488 + .byte 0x5 + .byte 0x31 + .4byte .LASF1489 + .byte 0x5 + .byte 0x32 + .4byte .LASF1490 + .byte 0x5 + .byte 0x33 + .4byte .LASF1491 + .byte 0x5 + .byte 0x34 + .4byte .LASF1492 + .byte 0x5 + .byte 0x35 + .4byte .LASF1493 + .byte 0x5 + .byte 0x36 + .4byte .LASF1494 + .byte 0x5 + .byte 0x37 + .4byte .LASF1495 + .byte 0x5 + .byte 0x38 + .4byte .LASF1496 + .byte 0x5 + .byte 0x3a + .4byte .LASF1497 + .byte 0x5 + .byte 0x3b + .4byte .LASF1498 + .byte 0x5 + .byte 0x3c + .4byte .LASF1499 + .byte 0x5 + .byte 0x3d + .4byte .LASF1500 + .byte 0x5 + .byte 0x3e + .4byte .LASF1501 + .byte 0x5 + .byte 0x3f + .4byte .LASF1502 + .byte 0x5 + .byte 0x43 + .4byte .LASF1503 + .byte 0x5 + .byte 0x46 + .4byte .LASF1504 + .byte 0x5 + .byte 0x49 + .4byte .LASF1505 + .byte 0x5 + .byte 0x4c + .4byte .LASF1506 + .byte 0x5 + .byte 0x4d + .4byte .LASF1507 + .byte 0x5 + .byte 0x4e + .4byte .LASF1508 + .byte 0x5 + .byte 0x4f + .4byte .LASF1509 + .byte 0x5 + .byte 0x52 + .4byte .LASF1510 + .byte 0x5 + .byte 0x53 + .4byte .LASF1511 + .byte 0x5 + .byte 0x54 + .4byte .LASF1512 + .byte 0x5 + .byte 0x55 + .4byte .LASF1513 + .byte 0x5 + .byte 0x56 + .4byte .LASF1514 + .byte 0x5 + .byte 0x57 + .4byte .LASF1515 + .byte 0x5 + .byte 0x58 + .4byte .LASF1516 + .byte 0x5 + .byte 0x59 + .4byte .LASF1517 + .byte 0x5 + .byte 0x5a + .4byte .LASF1518 + .byte 0x5 + .byte 0x5b + .4byte .LASF1519 + .byte 0x5 + .byte 0x5e + .4byte .LASF1520 + .byte 0x5 + .byte 0x61 + .4byte .LASF1521 + .byte 0x5 + .byte 0x62 + .4byte .LASF1522 + .byte 0x5 + .byte 0x63 + .4byte .LASF1523 + .byte 0x5 + .byte 0x64 + .4byte .LASF1524 + .byte 0x5 + .byte 0x67 + .4byte .LASF1525 + .byte 0x5 + .byte 0x6a + .4byte .LASF1526 + .byte 0x5 + .byte 0x6d + .4byte .LASF1527 + .byte 0x5 + .byte 0x71 + .4byte .LASF1528 + .byte 0x5 + .byte 0x72 + .4byte .LASF1529 + .byte 0x5 + .byte 0x73 + .4byte .LASF1530 + .byte 0x5 + .byte 0x74 + .4byte .LASF1531 + .byte 0x5 + .byte 0x75 + .4byte .LASF1532 + .byte 0x5 + .byte 0x76 + .4byte .LASF1533 + .byte 0x5 + .byte 0x77 + .4byte .LASF1534 + .byte 0x5 + .byte 0x78 + .4byte .LASF1535 + .byte 0x5 + .byte 0x7b + .4byte .LASF1536 + .byte 0x5 + .byte 0x7c + .4byte .LASF1537 + .byte 0x5 + .byte 0x7d + .4byte .LASF1538 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1539 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1540 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1541 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1542 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1543 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1544 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1545 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1546 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1547 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1548 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1549 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1550 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF1551 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1552 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1553 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1554 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1555 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1556 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF1557 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF1558 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1559 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1560 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF1561 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1562 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1563 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF1564 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF1565 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF1566 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1567 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1568 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF1569 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF1570 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1571 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1572 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF1573 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF1574 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1575 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1576 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF1577 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF1578 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF1579 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1580 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF1581 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF1582 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1583 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1584 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF1585 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF1586 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF1587 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1588 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1589 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF1590 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF1591 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF1592 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF1593 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF1594 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF1595 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF1596 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1597 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1598 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_i2c.h.37.9d7fb50529db8c5d4a0b10c3b5a1de79,comdat +.Ldebug_macro20: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1599 + .byte 0x5 + .byte 0x2a + .4byte .LASF1600 + .byte 0x5 + .byte 0x2b + .4byte .LASF1601 + .byte 0x5 + .byte 0x2e + .4byte .LASF1602 + .byte 0x5 + .byte 0x2f + .4byte .LASF1603 + .byte 0x5 + .byte 0x30 + .4byte .LASF1604 + .byte 0x5 + .byte 0x31 + .4byte .LASF1605 + .byte 0x5 + .byte 0x32 + .4byte .LASF1606 + .byte 0x5 + .byte 0x33 + .4byte .LASF1607 + .byte 0x5 + .byte 0x34 + .4byte .LASF1608 + .byte 0x5 + .byte 0x35 + .4byte .LASF1609 + .byte 0x5 + .byte 0x36 + .4byte .LASF1610 + .byte 0x5 + .byte 0x37 + .4byte .LASF1611 + .byte 0x5 + .byte 0x3a + .4byte .LASF1612 + .byte 0x5 + .byte 0x3b + .4byte .LASF1613 + .byte 0x5 + .byte 0x3c + .4byte .LASF1614 + .byte 0x5 + .byte 0x3d + .4byte .LASF1615 + .byte 0x5 + .byte 0x3e + .4byte .LASF1616 + .byte 0x5 + .byte 0x3f + .4byte .LASF1617 + .byte 0x5 + .byte 0x40 + .4byte .LASF1618 + .byte 0x5 + .byte 0x41 + .4byte .LASF1619 + .byte 0x5 + .byte 0x42 + .4byte .LASF1620 + .byte 0x5 + .byte 0x43 + .4byte .LASF1621 + .byte 0x5 + .byte 0x44 + .4byte .LASF1622 + .byte 0x5 + .byte 0x45 + .4byte .LASF1623 + .byte 0x5 + .byte 0x46 + .4byte .LASF1624 + .byte 0x5 + .byte 0x47 + .4byte .LASF1625 + .byte 0x5 + .byte 0x4a + .4byte .LASF1626 + .byte 0x5 + .byte 0x4b + .4byte .LASF1627 + .byte 0x5 + .byte 0x4c + .4byte .LASF1628 + .byte 0x5 + .byte 0x4d + .4byte .LASF1629 + .byte 0x5 + .byte 0x4e + .4byte .LASF1630 + .byte 0x5 + .byte 0x4f + .4byte .LASF1631 + .byte 0x5 + .byte 0x52 + .4byte .LASF1632 + .byte 0x5 + .byte 0x53 + .4byte .LASF1633 + .byte 0x5 + .byte 0x54 + .4byte .LASF1634 + .byte 0x5 + .byte 0x55 + .4byte .LASF1635 + .byte 0x5 + .byte 0x58 + .4byte .LASF1636 + .byte 0x5 + .byte 0x59 + .4byte .LASF1637 + .byte 0x5 + .byte 0x5c + .4byte .LASF1638 + .byte 0x5 + .byte 0x5f + .4byte .LASF1639 + .byte 0x5 + .byte 0x60 + .4byte .LASF1640 + .byte 0x5 + .byte 0x61 + .4byte .LASF1641 + .byte 0x5 + .byte 0x62 + .4byte .LASF1642 + .byte 0x5 + .byte 0x63 + .4byte .LASF1643 + .byte 0x5 + .byte 0x64 + .4byte .LASF1644 + .byte 0x5 + .byte 0x65 + .4byte .LASF1645 + .byte 0x5 + .byte 0x66 + .4byte .LASF1646 + .byte 0x5 + .byte 0x67 + .4byte .LASF1647 + .byte 0x5 + .byte 0x68 + .4byte .LASF1648 + .byte 0x5 + .byte 0x69 + .4byte .LASF1649 + .byte 0x5 + .byte 0x6a + .4byte .LASF1650 + .byte 0x5 + .byte 0x6b + .4byte .LASF1651 + .byte 0x5 + .byte 0x6c + .4byte .LASF1652 + .byte 0x5 + .byte 0x6f + .4byte .LASF1653 + .byte 0x5 + .byte 0x70 + .4byte .LASF1654 + .byte 0x5 + .byte 0x71 + .4byte .LASF1655 + .byte 0x5 + .byte 0x72 + .4byte .LASF1656 + .byte 0x5 + .byte 0x73 + .4byte .LASF1657 + .byte 0x5 + .byte 0x74 + .4byte .LASF1658 + .byte 0x5 + .byte 0x75 + .4byte .LASF1659 + .byte 0x5 + .byte 0x76 + .4byte .LASF1660 + .byte 0x5 + .byte 0x79 + .4byte .LASF1661 + .byte 0x5 + .byte 0x7a + .4byte .LASF1662 + .byte 0x5 + .byte 0x7b + .4byte .LASF1663 + .byte 0x5 + .byte 0x7e + .4byte .LASF1664 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF1665 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1666 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1667 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF1668 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF1669 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1670 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1671 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1672 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1673 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1674 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1675 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF1676 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF1677 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF1678 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1679 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1680 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1681 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF1682 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1683 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1684 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1685 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1686 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1687 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1688 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF1689 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1690 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1691 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1692 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1693 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1694 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF1695 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF1696 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF1697 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF1698 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1699 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1700 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF1701 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF1702 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF1703 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF1704 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF1705 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF1706 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF1707 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF1708 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF1709 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF1710 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_fwdgt.h.37.ec91e2ec679929e46ec494cd499250b4,comdat +.Ldebug_macro21: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1711 + .byte 0x5 + .byte 0x2a + .4byte .LASF1712 + .byte 0x5 + .byte 0x2d + .4byte .LASF1713 + .byte 0x5 + .byte 0x2e + .4byte .LASF1714 + .byte 0x5 + .byte 0x2f + .4byte .LASF1715 + .byte 0x5 + .byte 0x30 + .4byte .LASF1716 + .byte 0x5 + .byte 0x34 + .4byte .LASF1717 + .byte 0x5 + .byte 0x37 + .4byte .LASF1718 + .byte 0x5 + .byte 0x3a + .4byte .LASF1719 + .byte 0x5 + .byte 0x3d + .4byte .LASF1720 + .byte 0x5 + .byte 0x3e + .4byte .LASF1721 + .byte 0x5 + .byte 0x42 + .4byte .LASF1722 + .byte 0x5 + .byte 0x43 + .4byte .LASF1723 + .byte 0x5 + .byte 0x44 + .4byte .LASF1724 + .byte 0x5 + .byte 0x45 + .4byte .LASF1725 + .byte 0x5 + .byte 0x46 + .4byte .LASF1726 + .byte 0x5 + .byte 0x47 + .4byte .LASF1727 + .byte 0x5 + .byte 0x48 + .4byte .LASF1728 + .byte 0x5 + .byte 0x49 + .4byte .LASF1729 + .byte 0x5 + .byte 0x4c + .4byte .LASF1730 + .byte 0x5 + .byte 0x4d + .4byte .LASF1731 + .byte 0x5 + .byte 0x4e + .4byte .LASF1732 + .byte 0x5 + .byte 0x4f + .4byte .LASF1733 + .byte 0x5 + .byte 0x52 + .4byte .LASF1734 + .byte 0x5 + .byte 0x53 + .4byte .LASF1735 + .byte 0x5 + .byte 0x56 + .4byte .LASF1736 + .byte 0x5 + .byte 0x57 + .4byte .LASF1737 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dbg.h.37.c757ea48294705efe800a8cbb43f6f24,comdat +.Ldebug_macro22: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1738 + .byte 0x5 + .byte 0x2a + .4byte .LASF1739 + .byte 0x5 + .byte 0x2d + .4byte .LASF1740 + .byte 0x5 + .byte 0x2e + .4byte .LASF1741 + .byte 0x5 + .byte 0x32 + .4byte .LASF1742 + .byte 0x5 + .byte 0x35 + .4byte .LASF1743 + .byte 0x5 + .byte 0x36 + .4byte .LASF1744 + .byte 0x5 + .byte 0x37 + .4byte .LASF1745 + .byte 0x5 + .byte 0x38 + .4byte .LASF1746 + .byte 0x5 + .byte 0x39 + .4byte .LASF1747 + .byte 0x5 + .byte 0x3a + .4byte .LASF1748 + .byte 0x5 + .byte 0x3b + .4byte .LASF1749 + .byte 0x5 + .byte 0x3c + .4byte .LASF1750 + .byte 0x5 + .byte 0x3d + .4byte .LASF1751 + .byte 0x5 + .byte 0x3e + .4byte .LASF1752 + .byte 0x5 + .byte 0x3f + .4byte .LASF1753 + .byte 0x5 + .byte 0x40 + .4byte .LASF1754 + .byte 0x5 + .byte 0x41 + .4byte .LASF1755 + .byte 0x5 + .byte 0x42 + .4byte .LASF1756 + .byte 0x5 + .byte 0x43 + .4byte .LASF1757 + .byte 0x5 + .byte 0x44 + .4byte .LASF1758 + .byte 0x5 + .byte 0x5a + .4byte .LASF1759 + .byte 0x5 + .byte 0x5b + .4byte .LASF1760 + .byte 0x5 + .byte 0x5c + .4byte .LASF1761 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_pmu.h.37.edf842f53f3092f282c7bccaf9512833,comdat +.Ldebug_macro23: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1762 + .byte 0x5 + .byte 0x2a + .4byte .LASF1763 + .byte 0x5 + .byte 0x2d + .4byte .LASF1764 + .byte 0x5 + .byte 0x2e + .4byte .LASF1765 + .byte 0x5 + .byte 0x32 + .4byte .LASF1766 + .byte 0x5 + .byte 0x33 + .4byte .LASF1767 + .byte 0x5 + .byte 0x34 + .4byte .LASF1768 + .byte 0x5 + .byte 0x35 + .4byte .LASF1769 + .byte 0x5 + .byte 0x36 + .4byte .LASF1770 + .byte 0x5 + .byte 0x37 + .4byte .LASF1771 + .byte 0x5 + .byte 0x38 + .4byte .LASF1772 + .byte 0x5 + .byte 0x3b + .4byte .LASF1773 + .byte 0x5 + .byte 0x3c + .4byte .LASF1774 + .byte 0x5 + .byte 0x3d + .4byte .LASF1775 + .byte 0x5 + .byte 0x3e + .4byte .LASF1776 + .byte 0x5 + .byte 0x42 + .4byte .LASF1777 + .byte 0x5 + .byte 0x43 + .4byte .LASF1778 + .byte 0x5 + .byte 0x44 + .4byte .LASF1779 + .byte 0x5 + .byte 0x45 + .4byte .LASF1780 + .byte 0x5 + .byte 0x46 + .4byte .LASF1781 + .byte 0x5 + .byte 0x47 + .4byte .LASF1782 + .byte 0x5 + .byte 0x48 + .4byte .LASF1783 + .byte 0x5 + .byte 0x49 + .4byte .LASF1784 + .byte 0x5 + .byte 0x4a + .4byte .LASF1785 + .byte 0x5 + .byte 0x4d + .4byte .LASF1786 + .byte 0x5 + .byte 0x4e + .4byte .LASF1787 + .byte 0x5 + .byte 0x4f + .4byte .LASF1788 + .byte 0x5 + .byte 0x52 + .4byte .LASF1789 + .byte 0x5 + .byte 0x53 + .4byte .LASF1790 + .byte 0x5 + .byte 0x56 + .4byte .LASF1791 + .byte 0x5 + .byte 0x57 + .4byte .LASF1792 + .byte 0x5 + .byte 0x5a + .4byte .LASF1793 + .byte 0x5 + .byte 0x5b + .4byte .LASF1794 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_rcu.h.37.486a61f16467981517fe8072f0668f9d,comdat +.Ldebug_macro24: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1795 + .byte 0x5 + .byte 0x2a + .4byte .LASF1796 + .byte 0x5 + .byte 0x2e + .4byte .LASF1797 + .byte 0x5 + .byte 0x2f + .4byte .LASF1798 + .byte 0x5 + .byte 0x30 + .4byte .LASF1799 + .byte 0x5 + .byte 0x31 + .4byte .LASF1800 + .byte 0x5 + .byte 0x32 + .4byte .LASF1801 + .byte 0x5 + .byte 0x33 + .4byte .LASF1802 + .byte 0x5 + .byte 0x34 + .4byte .LASF1803 + .byte 0x5 + .byte 0x35 + .4byte .LASF1804 + .byte 0x5 + .byte 0x36 + .4byte .LASF1805 + .byte 0x5 + .byte 0x37 + .4byte .LASF1806 + .byte 0x5 + .byte 0x38 + .4byte .LASF1807 + .byte 0x5 + .byte 0x39 + .4byte .LASF1808 + .byte 0x5 + .byte 0x3a + .4byte .LASF1809 + .byte 0x5 + .byte 0x3f + .4byte .LASF1810 + .byte 0x5 + .byte 0x40 + .4byte .LASF1811 + .byte 0x5 + .byte 0x41 + .4byte .LASF1812 + .byte 0x5 + .byte 0x42 + .4byte .LASF1813 + .byte 0x5 + .byte 0x43 + .4byte .LASF1814 + .byte 0x5 + .byte 0x44 + .4byte .LASF1815 + .byte 0x5 + .byte 0x45 + .4byte .LASF1816 + .byte 0x5 + .byte 0x46 + .4byte .LASF1817 + .byte 0x5 + .byte 0x47 + .4byte .LASF1818 + .byte 0x5 + .byte 0x48 + .4byte .LASF1819 + .byte 0x5 + .byte 0x49 + .4byte .LASF1820 + .byte 0x5 + .byte 0x4a + .4byte .LASF1821 + .byte 0x5 + .byte 0x4b + .4byte .LASF1822 + .byte 0x5 + .byte 0x4c + .4byte .LASF1823 + .byte 0x5 + .byte 0x4f + .4byte .LASF1824 + .byte 0x5 + .byte 0x50 + .4byte .LASF1825 + .byte 0x5 + .byte 0x51 + .4byte .LASF1826 + .byte 0x5 + .byte 0x52 + .4byte .LASF1827 + .byte 0x5 + .byte 0x53 + .4byte .LASF1828 + .byte 0x5 + .byte 0x54 + .4byte .LASF1829 + .byte 0x5 + .byte 0x55 + .4byte .LASF1830 + .byte 0x5 + .byte 0x56 + .4byte .LASF1831 + .byte 0x5 + .byte 0x57 + .4byte .LASF1832 + .byte 0x5 + .byte 0x58 + .4byte .LASF1833 + .byte 0x5 + .byte 0x59 + .4byte .LASF1834 + .byte 0x5 + .byte 0x5a + .4byte .LASF1835 + .byte 0x5 + .byte 0x5b + .4byte .LASF1836 + .byte 0x5 + .byte 0x5e + .4byte .LASF1837 + .byte 0x5 + .byte 0x5f + .4byte .LASF1838 + .byte 0x5 + .byte 0x60 + .4byte .LASF1839 + .byte 0x5 + .byte 0x61 + .4byte .LASF1840 + .byte 0x5 + .byte 0x62 + .4byte .LASF1841 + .byte 0x5 + .byte 0x63 + .4byte .LASF1842 + .byte 0x5 + .byte 0x64 + .4byte .LASF1843 + .byte 0x5 + .byte 0x65 + .4byte .LASF1844 + .byte 0x5 + .byte 0x66 + .4byte .LASF1845 + .byte 0x5 + .byte 0x67 + .4byte .LASF1846 + .byte 0x5 + .byte 0x68 + .4byte .LASF1847 + .byte 0x5 + .byte 0x69 + .4byte .LASF1848 + .byte 0x5 + .byte 0x6a + .4byte .LASF1849 + .byte 0x5 + .byte 0x6b + .4byte .LASF1850 + .byte 0x5 + .byte 0x6c + .4byte .LASF1851 + .byte 0x5 + .byte 0x6d + .4byte .LASF1852 + .byte 0x5 + .byte 0x6e + .4byte .LASF1853 + .byte 0x5 + .byte 0x6f + .4byte .LASF1854 + .byte 0x5 + .byte 0x70 + .4byte .LASF1855 + .byte 0x5 + .byte 0x71 + .4byte .LASF1856 + .byte 0x5 + .byte 0x72 + .4byte .LASF1857 + .byte 0x5 + .byte 0x73 + .4byte .LASF1858 + .byte 0x5 + .byte 0x74 + .4byte .LASF1859 + .byte 0x5 + .byte 0x77 + .4byte .LASF1860 + .byte 0x5 + .byte 0x78 + .4byte .LASF1861 + .byte 0x5 + .byte 0x79 + .4byte .LASF1862 + .byte 0x5 + .byte 0x7a + .4byte .LASF1863 + .byte 0x5 + .byte 0x7b + .4byte .LASF1864 + .byte 0x5 + .byte 0x7c + .4byte .LASF1865 + .byte 0x5 + .byte 0x7d + .4byte .LASF1866 + .byte 0x5 + .byte 0x7e + .4byte .LASF1867 + .byte 0x5 + .byte 0x7f + .4byte .LASF1868 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF1869 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF1870 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF1871 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1872 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1873 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF1874 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF1875 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF1876 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1877 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF1878 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF1879 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1880 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1881 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1882 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF1883 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF1884 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF1885 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF1886 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1887 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF1888 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF1889 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1890 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1891 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF1892 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF1893 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1894 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1895 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1896 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1897 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF1898 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF1899 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1900 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1901 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1902 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1903 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1904 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF1905 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1906 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1907 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1908 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1909 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF1910 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF1911 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1912 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1913 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1914 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF1915 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF1916 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF1917 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1918 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF1919 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF1920 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1921 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1922 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF1923 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF1924 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1925 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1926 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF1927 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF1928 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF1929 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF1930 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1931 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF1932 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF1933 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1934 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF1935 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF1936 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1937 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1938 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF1939 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF1940 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1941 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF1942 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF1943 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1944 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1945 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1946 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF1947 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF1948 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1949 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1950 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF1951 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1952 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1953 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF1954 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF1955 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF1956 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF1957 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF1958 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF1959 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF1960 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF1961 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF1962 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1963 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1964 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF1965 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF1966 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF1967 + .byte 0x5 + .byte 0xaa,0x3 + .4byte .LASF1968 + .byte 0x5 + .byte 0xab,0x3 + .4byte .LASF1969 + .byte 0x5 + .byte 0xac,0x3 + .4byte .LASF1970 + .byte 0x5 + .byte 0xad,0x3 + .4byte .LASF1971 + .byte 0x5 + .byte 0xb0,0x3 + .4byte .LASF1972 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF1973 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF1974 + .byte 0x5 + .byte 0xb3,0x3 + .4byte .LASF1975 + .byte 0x5 + .byte 0xb6,0x3 + .4byte .LASF1976 + .byte 0x5 + .byte 0xb7,0x3 + .4byte .LASF1977 + .byte 0x5 + .byte 0xb8,0x3 + .4byte .LASF1978 + .byte 0x5 + .byte 0xb9,0x3 + .4byte .LASF1979 + .byte 0x5 + .byte 0xba,0x3 + .4byte .LASF1980 + .byte 0x5 + .byte 0xbb,0x3 + .4byte .LASF1981 + .byte 0x5 + .byte 0xbc,0x3 + .4byte .LASF1982 + .byte 0x5 + .byte 0xbd,0x3 + .4byte .LASF1983 + .byte 0x5 + .byte 0xbe,0x3 + .4byte .LASF1984 + .byte 0x5 + .byte 0xbf,0x3 + .4byte .LASF1985 + .byte 0x5 + .byte 0xc2,0x3 + .4byte .LASF1986 + .byte 0x5 + .byte 0xc3,0x3 + .4byte .LASF1987 + .byte 0x5 + .byte 0xc4,0x3 + .4byte .LASF1988 + .byte 0x5 + .byte 0xc5,0x3 + .4byte .LASF1989 + .byte 0x5 + .byte 0xc6,0x3 + .4byte .LASF1990 + .byte 0x5 + .byte 0xc7,0x3 + .4byte .LASF1991 + .byte 0x5 + .byte 0xca,0x3 + .4byte .LASF1992 + .byte 0x5 + .byte 0xcb,0x3 + .4byte .LASF1993 + .byte 0x5 + .byte 0xcc,0x3 + .4byte .LASF1994 + .byte 0x5 + .byte 0xcd,0x3 + .4byte .LASF1995 + .byte 0x5 + .byte 0xce,0x3 + .4byte .LASF1996 + .byte 0x5 + .byte 0xcf,0x3 + .4byte .LASF1997 + .byte 0x5 + .byte 0xd2,0x3 + .4byte .LASF1998 + .byte 0x5 + .byte 0xd3,0x3 + .4byte .LASF1999 + .byte 0x5 + .byte 0xd4,0x3 + .4byte .LASF2000 + .byte 0x5 + .byte 0xd5,0x3 + .4byte .LASF2001 + .byte 0x5 + .byte 0xd6,0x3 + .4byte .LASF2002 + .byte 0x5 + .byte 0xd7,0x3 + .4byte .LASF2003 + .byte 0x5 + .byte 0xda,0x3 + .4byte .LASF2004 + .byte 0x5 + .byte 0xdb,0x3 + .4byte .LASF2005 + .byte 0x5 + .byte 0xde,0x3 + .4byte .LASF2006 + .byte 0x5 + .byte 0xe0,0x3 + .4byte .LASF2007 + .byte 0x5 + .byte 0xe1,0x3 + .4byte .LASF2008 + .byte 0x5 + .byte 0xe2,0x3 + .4byte .LASF2009 + .byte 0x5 + .byte 0xe3,0x3 + .4byte .LASF2010 + .byte 0x5 + .byte 0xe4,0x3 + .4byte .LASF2011 + .byte 0x5 + .byte 0xe5,0x3 + .4byte .LASF2012 + .byte 0x5 + .byte 0xe6,0x3 + .4byte .LASF2013 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF2014 + .byte 0x5 + .byte 0xe8,0x3 + .4byte .LASF2015 + .byte 0x5 + .byte 0xe9,0x3 + .4byte .LASF2016 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF2017 + .byte 0x5 + .byte 0xeb,0x3 + .4byte .LASF2018 + .byte 0x5 + .byte 0xec,0x3 + .4byte .LASF2019 + .byte 0x5 + .byte 0xed,0x3 + .4byte .LASF2020 + .byte 0x5 + .byte 0xee,0x3 + .4byte .LASF2021 + .byte 0x5 + .byte 0xef,0x3 + .4byte .LASF2022 + .byte 0x5 + .byte 0xf0,0x3 + .4byte .LASF2023 + .byte 0x5 + .byte 0xf1,0x3 + .4byte .LASF2024 + .byte 0x5 + .byte 0xf2,0x3 + .4byte .LASF2025 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF2026 + .byte 0x5 + .byte 0xf4,0x3 + .4byte .LASF2027 + .byte 0x5 + .byte 0xf5,0x3 + .4byte .LASF2028 + .byte 0x5 + .byte 0xf6,0x3 + .4byte .LASF2029 + .byte 0x5 + .byte 0xf7,0x3 + .4byte .LASF2030 + .byte 0x5 + .byte 0xf8,0x3 + .4byte .LASF2031 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF2032 + .byte 0x5 + .byte 0xfa,0x3 + .4byte .LASF2033 + .byte 0x5 + .byte 0xfb,0x3 + .4byte .LASF2034 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF2035 + .byte 0x5 + .byte 0xfd,0x3 + .4byte .LASF2036 + .byte 0x5 + .byte 0xfe,0x3 + .4byte .LASF2037 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF2038 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF2039 + .byte 0x5 + .byte 0x83,0x4 + .4byte .LASF2040 + .byte 0x5 + .byte 0x84,0x4 + .4byte .LASF2041 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF2042 + .byte 0x5 + .byte 0x86,0x4 + .4byte .LASF2043 + .byte 0x5 + .byte 0x89,0x4 + .4byte .LASF2044 + .byte 0x5 + .byte 0x8a,0x4 + .4byte .LASF2045 + .byte 0x5 + .byte 0x8b,0x4 + .4byte .LASF2046 + .byte 0x5 + .byte 0x8c,0x4 + .4byte .LASF2047 + .byte 0x5 + .byte 0x8d,0x4 + .4byte .LASF2048 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF2049 + .byte 0x5 + .byte 0x8f,0x4 + .4byte .LASF2050 + .byte 0x5 + .byte 0x90,0x4 + .4byte .LASF2051 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF2052 + .byte 0x5 + .byte 0x92,0x4 + .4byte .LASF2053 + .byte 0x5 + .byte 0x95,0x4 + .4byte .LASF2054 + .byte 0x5 + .byte 0x96,0x4 + .4byte .LASF2055 + .byte 0x5 + .byte 0x97,0x4 + .4byte .LASF2056 + .byte 0x5 + .byte 0x98,0x4 + .4byte .LASF2057 + .byte 0x5 + .byte 0x99,0x4 + .4byte .LASF2058 + .byte 0x5 + .byte 0x9c,0x4 + .4byte .LASF2059 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF2060 + .byte 0x5 + .byte 0x9e,0x4 + .4byte .LASF2061 + .byte 0x5 + .byte 0x9f,0x4 + .4byte .LASF2062 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF2063 + .byte 0x5 + .byte 0xa1,0x4 + .4byte .LASF2064 + .byte 0x5 + .byte 0xa2,0x4 + .4byte .LASF2065 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF2066 + .byte 0x5 + .byte 0xa4,0x4 + .4byte .LASF2067 + .byte 0x5 + .byte 0xa5,0x4 + .4byte .LASF2068 + .byte 0x5 + .byte 0xa6,0x4 + .4byte .LASF2069 + .byte 0x5 + .byte 0xa7,0x4 + .4byte .LASF2070 + .byte 0x5 + .byte 0xa8,0x4 + .4byte .LASF2071 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF2072 + .byte 0x5 + .byte 0xaa,0x4 + .4byte .LASF2073 + .byte 0x5 + .byte 0xab,0x4 + .4byte .LASF2074 + .byte 0x5 + .byte 0xac,0x4 + .4byte .LASF2075 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF2076 + .byte 0x5 + .byte 0xb0,0x4 + .4byte .LASF2077 + .byte 0x5 + .byte 0xb1,0x4 + .4byte .LASF2078 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF2079 + .byte 0x5 + .byte 0xb3,0x4 + .4byte .LASF2080 + .byte 0x5 + .byte 0xb4,0x4 + .4byte .LASF2081 + .byte 0x5 + .byte 0xb5,0x4 + .4byte .LASF2082 + .byte 0x5 + .byte 0xb6,0x4 + .4byte .LASF2083 + .byte 0x5 + .byte 0xb7,0x4 + .4byte .LASF2084 + .byte 0x5 + .byte 0xb8,0x4 + .4byte .LASF2085 + .byte 0x5 + .byte 0xb9,0x4 + .4byte .LASF2086 + .byte 0x5 + .byte 0xba,0x4 + .4byte .LASF2087 + .byte 0x5 + .byte 0xbb,0x4 + .4byte .LASF2088 + .byte 0x5 + .byte 0xbc,0x4 + .4byte .LASF2089 + .byte 0x5 + .byte 0xbd,0x4 + .4byte .LASF2090 + .byte 0x5 + .byte 0xbe,0x4 + .4byte .LASF2091 + .byte 0x5 + .byte 0xbf,0x4 + .4byte .LASF2092 + .byte 0x5 + .byte 0xc2,0x4 + .4byte .LASF2093 + .byte 0x5 + .byte 0xc3,0x4 + .4byte .LASF2094 + .byte 0x5 + .byte 0xc4,0x4 + .4byte .LASF2095 + .byte 0x5 + .byte 0xc5,0x4 + .4byte .LASF2096 + .byte 0x5 + .byte 0xc6,0x4 + .4byte .LASF2097 + .byte 0x5 + .byte 0xc7,0x4 + .4byte .LASF2098 + .byte 0x5 + .byte 0xc8,0x4 + .4byte .LASF2099 + .byte 0x5 + .byte 0xc9,0x4 + .4byte .LASF2100 + .byte 0x5 + .byte 0xca,0x4 + .4byte .LASF2101 + .byte 0x5 + .byte 0xcb,0x4 + .4byte .LASF2102 + .byte 0x5 + .byte 0xcc,0x4 + .4byte .LASF2103 + .byte 0x5 + .byte 0xcf,0x4 + .4byte .LASF2104 + .byte 0x5 + .byte 0xd0,0x4 + .4byte .LASF2105 + .byte 0x5 + .byte 0xd1,0x4 + .4byte .LASF2106 + .byte 0x5 + .byte 0xd2,0x4 + .4byte .LASF2107 + .byte 0x5 + .byte 0xd3,0x4 + .4byte .LASF2108 + .byte 0x5 + .byte 0xd4,0x4 + .4byte .LASF2109 + .byte 0x5 + .byte 0xd5,0x4 + .4byte .LASF2110 + .byte 0x5 + .byte 0xd6,0x4 + .4byte .LASF2111 + .byte 0x5 + .byte 0xd7,0x4 + .4byte .LASF2112 + .byte 0x5 + .byte 0xd8,0x4 + .4byte .LASF2113 + .byte 0x5 + .byte 0xd9,0x4 + .4byte .LASF2114 + .byte 0x5 + .byte 0xdd,0x4 + .4byte .LASF2115 + .byte 0x5 + .byte 0xde,0x4 + .4byte .LASF2116 + .byte 0x5 + .byte 0xe1,0x4 + .4byte .LASF2117 + .byte 0x5 + .byte 0xe2,0x4 + .4byte .LASF2118 + .byte 0x5 + .byte 0xe5,0x4 + .4byte .LASF2119 + .byte 0x5 + .byte 0xe6,0x4 + .4byte .LASF2120 + .byte 0x5 + .byte 0xea,0x4 + .4byte .LASF2121 + .byte 0x5 + .byte 0xeb,0x4 + .4byte .LASF2122 + .byte 0x5 + .byte 0xec,0x4 + .4byte .LASF2123 + .byte 0x5 + .byte 0xed,0x4 + .4byte .LASF2124 + .byte 0x5 + .byte 0xee,0x4 + .4byte .LASF2125 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_rtc.h.37.3521dc979060c1ebaf2d43fd52b94dac,comdat +.Ldebug_macro25: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2126 + .byte 0x5 + .byte 0x2a + .4byte .LASF2127 + .byte 0x5 + .byte 0x2d + .4byte .LASF2128 + .byte 0x5 + .byte 0x2e + .4byte .LASF2129 + .byte 0x5 + .byte 0x2f + .4byte .LASF2130 + .byte 0x5 + .byte 0x30 + .4byte .LASF2131 + .byte 0x5 + .byte 0x31 + .4byte .LASF2132 + .byte 0x5 + .byte 0x32 + .4byte .LASF2133 + .byte 0x5 + .byte 0x33 + .4byte .LASF2134 + .byte 0x5 + .byte 0x34 + .4byte .LASF2135 + .byte 0x5 + .byte 0x35 + .4byte .LASF2136 + .byte 0x5 + .byte 0x36 + .4byte .LASF2137 + .byte 0x5 + .byte 0x3a + .4byte .LASF2138 + .byte 0x5 + .byte 0x3b + .4byte .LASF2139 + .byte 0x5 + .byte 0x3c + .4byte .LASF2140 + .byte 0x5 + .byte 0x3f + .4byte .LASF2141 + .byte 0x5 + .byte 0x40 + .4byte .LASF2142 + .byte 0x5 + .byte 0x41 + .4byte .LASF2143 + .byte 0x5 + .byte 0x42 + .4byte .LASF2144 + .byte 0x5 + .byte 0x43 + .4byte .LASF2145 + .byte 0x5 + .byte 0x44 + .4byte .LASF2146 + .byte 0x5 + .byte 0x47 + .4byte .LASF2147 + .byte 0x5 + .byte 0x4a + .4byte .LASF2148 + .byte 0x5 + .byte 0x4d + .4byte .LASF2149 + .byte 0x5 + .byte 0x50 + .4byte .LASF2150 + .byte 0x5 + .byte 0x53 + .4byte .LASF2151 + .byte 0x5 + .byte 0x56 + .4byte .LASF2152 + .byte 0x5 + .byte 0x59 + .4byte .LASF2153 + .byte 0x5 + .byte 0x5c + .4byte .LASF2154 + .byte 0x5 + .byte 0x60 + .4byte .LASF2155 + .byte 0x5 + .byte 0x61 + .4byte .LASF2156 + .byte 0x5 + .byte 0x62 + .4byte .LASF2157 + .byte 0x5 + .byte 0x65 + .4byte .LASF2158 + .byte 0x5 + .byte 0x66 + .4byte .LASF2159 + .byte 0x5 + .byte 0x67 + .4byte .LASF2160 + .byte 0x5 + .byte 0x6a + .4byte .LASF2161 + .byte 0x5 + .byte 0x6b + .4byte .LASF2162 + .byte 0x5 + .byte 0x6c + .4byte .LASF2163 + .byte 0x5 + .byte 0x6d + .4byte .LASF2164 + .byte 0x5 + .byte 0x6e + .4byte .LASF2165 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_spi.h.37.5b2da83109360bb35c1791b7dcc5009b,comdat +.Ldebug_macro26: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2166 + .byte 0x5 + .byte 0x2a + .4byte .LASF2167 + .byte 0x5 + .byte 0x2b + .4byte .LASF2168 + .byte 0x5 + .byte 0x2c + .4byte .LASF2169 + .byte 0x5 + .byte 0x2f + .4byte .LASF2170 + .byte 0x5 + .byte 0x30 + .4byte .LASF2171 + .byte 0x5 + .byte 0x31 + .4byte .LASF2172 + .byte 0x5 + .byte 0x32 + .4byte .LASF2173 + .byte 0x5 + .byte 0x33 + .4byte .LASF2174 + .byte 0x5 + .byte 0x34 + .4byte .LASF2175 + .byte 0x5 + .byte 0x35 + .4byte .LASF2176 + .byte 0x5 + .byte 0x36 + .4byte .LASF2177 + .byte 0x5 + .byte 0x37 + .4byte .LASF2178 + .byte 0x5 + .byte 0x3b + .4byte .LASF2179 + .byte 0x5 + .byte 0x3c + .4byte .LASF2180 + .byte 0x5 + .byte 0x3d + .4byte .LASF2181 + .byte 0x5 + .byte 0x3e + .4byte .LASF2182 + .byte 0x5 + .byte 0x3f + .4byte .LASF2183 + .byte 0x5 + .byte 0x40 + .4byte .LASF2184 + .byte 0x5 + .byte 0x41 + .4byte .LASF2185 + .byte 0x5 + .byte 0x42 + .4byte .LASF2186 + .byte 0x5 + .byte 0x43 + .4byte .LASF2187 + .byte 0x5 + .byte 0x44 + .4byte .LASF2188 + .byte 0x5 + .byte 0x45 + .4byte .LASF2189 + .byte 0x5 + .byte 0x46 + .4byte .LASF2190 + .byte 0x5 + .byte 0x47 + .4byte .LASF2191 + .byte 0x5 + .byte 0x48 + .4byte .LASF2192 + .byte 0x5 + .byte 0x4b + .4byte .LASF2193 + .byte 0x5 + .byte 0x4c + .4byte .LASF2194 + .byte 0x5 + .byte 0x4d + .4byte .LASF2195 + .byte 0x5 + .byte 0x4e + .4byte .LASF2196 + .byte 0x5 + .byte 0x4f + .4byte .LASF2197 + .byte 0x5 + .byte 0x50 + .4byte .LASF2198 + .byte 0x5 + .byte 0x51 + .4byte .LASF2199 + .byte 0x5 + .byte 0x52 + .4byte .LASF2200 + .byte 0x5 + .byte 0x55 + .4byte .LASF2201 + .byte 0x5 + .byte 0x56 + .4byte .LASF2202 + .byte 0x5 + .byte 0x57 + .4byte .LASF2203 + .byte 0x5 + .byte 0x58 + .4byte .LASF2204 + .byte 0x5 + .byte 0x59 + .4byte .LASF2205 + .byte 0x5 + .byte 0x5a + .4byte .LASF2206 + .byte 0x5 + .byte 0x5b + .4byte .LASF2207 + .byte 0x5 + .byte 0x5c + .4byte .LASF2208 + .byte 0x5 + .byte 0x5d + .4byte .LASF2209 + .byte 0x5 + .byte 0x60 + .4byte .LASF2210 + .byte 0x5 + .byte 0x63 + .4byte .LASF2211 + .byte 0x5 + .byte 0x66 + .4byte .LASF2212 + .byte 0x5 + .byte 0x69 + .4byte .LASF2213 + .byte 0x5 + .byte 0x6c + .4byte .LASF2214 + .byte 0x5 + .byte 0x6d + .4byte .LASF2215 + .byte 0x5 + .byte 0x6e + .4byte .LASF2216 + .byte 0x5 + .byte 0x6f + .4byte .LASF2217 + .byte 0x5 + .byte 0x70 + .4byte .LASF2218 + .byte 0x5 + .byte 0x71 + .4byte .LASF2219 + .byte 0x5 + .byte 0x72 + .4byte .LASF2220 + .byte 0x5 + .byte 0x73 + .4byte .LASF2221 + .byte 0x5 + .byte 0x76 + .4byte .LASF2222 + .byte 0x5 + .byte 0x77 + .4byte .LASF2223 + .byte 0x5 + .byte 0x78 + .4byte .LASF2224 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF2225 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF2226 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2227 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2228 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF2229 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2230 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF2231 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF2232 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2233 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2234 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF2235 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2236 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2237 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF2238 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF2239 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF2240 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF2241 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF2242 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2243 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2244 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2245 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2246 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF2247 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF2248 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF2249 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF2250 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF2251 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF2252 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF2253 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2254 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF2255 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF2256 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2257 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2258 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2259 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2260 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2261 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2262 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2263 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2264 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2265 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF2266 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF2267 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF2268 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF2269 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2270 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF2271 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF2272 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF2273 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF2274 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF2275 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF2276 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2277 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF2278 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF2279 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF2280 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF2281 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF2282 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2283 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2284 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF2285 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF2286 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2287 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF2288 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2289 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2290 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF2291 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF2292 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF2293 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF2294 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF2295 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF2296 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF2297 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF2298 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF2299 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF2300 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF2301 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF2302 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF2303 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF2304 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF2305 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF2306 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF2307 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF2308 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_timer.h.37.41e31e3c41519d549a8819d7a508d7a5,comdat +.Ldebug_macro27: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2309 + .byte 0x5 + .byte 0x2a + .4byte .LASF2310 + .byte 0x5 + .byte 0x2b + .4byte .LASF2311 + .byte 0x5 + .byte 0x2c + .4byte .LASF2312 + .byte 0x5 + .byte 0x2d + .4byte .LASF2313 + .byte 0x5 + .byte 0x2e + .4byte .LASF2314 + .byte 0x5 + .byte 0x2f + .4byte .LASF2315 + .byte 0x5 + .byte 0x30 + .4byte .LASF2316 + .byte 0x5 + .byte 0x33 + .4byte .LASF2317 + .byte 0x5 + .byte 0x34 + .4byte .LASF2318 + .byte 0x5 + .byte 0x35 + .4byte .LASF2319 + .byte 0x5 + .byte 0x36 + .4byte .LASF2320 + .byte 0x5 + .byte 0x37 + .4byte .LASF2321 + .byte 0x5 + .byte 0x38 + .4byte .LASF2322 + .byte 0x5 + .byte 0x39 + .4byte .LASF2323 + .byte 0x5 + .byte 0x3a + .4byte .LASF2324 + .byte 0x5 + .byte 0x3b + .4byte .LASF2325 + .byte 0x5 + .byte 0x3c + .4byte .LASF2326 + .byte 0x5 + .byte 0x3d + .4byte .LASF2327 + .byte 0x5 + .byte 0x3e + .4byte .LASF2328 + .byte 0x5 + .byte 0x3f + .4byte .LASF2329 + .byte 0x5 + .byte 0x40 + .4byte .LASF2330 + .byte 0x5 + .byte 0x41 + .4byte .LASF2331 + .byte 0x5 + .byte 0x42 + .4byte .LASF2332 + .byte 0x5 + .byte 0x43 + .4byte .LASF2333 + .byte 0x5 + .byte 0x44 + .4byte .LASF2334 + .byte 0x5 + .byte 0x45 + .4byte .LASF2335 + .byte 0x5 + .byte 0x46 + .4byte .LASF2336 + .byte 0x5 + .byte 0x4a + .4byte .LASF2337 + .byte 0x5 + .byte 0x4b + .4byte .LASF2338 + .byte 0x5 + .byte 0x4c + .4byte .LASF2339 + .byte 0x5 + .byte 0x4d + .4byte .LASF2340 + .byte 0x5 + .byte 0x4e + .4byte .LASF2341 + .byte 0x5 + .byte 0x4f + .4byte .LASF2342 + .byte 0x5 + .byte 0x50 + .4byte .LASF2343 + .byte 0x5 + .byte 0x51 + .4byte .LASF2344 + .byte 0x5 + .byte 0x54 + .4byte .LASF2345 + .byte 0x5 + .byte 0x55 + .4byte .LASF2346 + .byte 0x5 + .byte 0x56 + .4byte .LASF2347 + .byte 0x5 + .byte 0x57 + .4byte .LASF2348 + .byte 0x5 + .byte 0x58 + .4byte .LASF2349 + .byte 0x5 + .byte 0x59 + .4byte .LASF2350 + .byte 0x5 + .byte 0x5a + .4byte .LASF2351 + .byte 0x5 + .byte 0x5b + .4byte .LASF2352 + .byte 0x5 + .byte 0x5c + .4byte .LASF2353 + .byte 0x5 + .byte 0x5d + .4byte .LASF2354 + .byte 0x5 + .byte 0x5e + .4byte .LASF2355 + .byte 0x5 + .byte 0x5f + .4byte .LASF2356 + .byte 0x5 + .byte 0x62 + .4byte .LASF2357 + .byte 0x5 + .byte 0x63 + .4byte .LASF2358 + .byte 0x5 + .byte 0x64 + .4byte .LASF2359 + .byte 0x5 + .byte 0x65 + .4byte .LASF2360 + .byte 0x5 + .byte 0x66 + .4byte .LASF2361 + .byte 0x5 + .byte 0x67 + .4byte .LASF2362 + .byte 0x5 + .byte 0x68 + .4byte .LASF2363 + .byte 0x5 + .byte 0x6b + .4byte .LASF2364 + .byte 0x5 + .byte 0x6c + .4byte .LASF2365 + .byte 0x5 + .byte 0x6d + .4byte .LASF2366 + .byte 0x5 + .byte 0x6e + .4byte .LASF2367 + .byte 0x5 + .byte 0x6f + .4byte .LASF2368 + .byte 0x5 + .byte 0x70 + .4byte .LASF2369 + .byte 0x5 + .byte 0x71 + .4byte .LASF2370 + .byte 0x5 + .byte 0x72 + .4byte .LASF2371 + .byte 0x5 + .byte 0x73 + .4byte .LASF2372 + .byte 0x5 + .byte 0x74 + .4byte .LASF2373 + .byte 0x5 + .byte 0x75 + .4byte .LASF2374 + .byte 0x5 + .byte 0x76 + .4byte .LASF2375 + .byte 0x5 + .byte 0x77 + .4byte .LASF2376 + .byte 0x5 + .byte 0x78 + .4byte .LASF2377 + .byte 0x5 + .byte 0x79 + .4byte .LASF2378 + .byte 0x5 + .byte 0x7c + .4byte .LASF2379 + .byte 0x5 + .byte 0x7d + .4byte .LASF2380 + .byte 0x5 + .byte 0x7e + .4byte .LASF2381 + .byte 0x5 + .byte 0x7f + .4byte .LASF2382 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF2383 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF2384 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF2385 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF2386 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF2387 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF2388 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF2389 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF2390 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF2391 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF2392 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2393 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2394 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF2395 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF2396 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF2397 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2398 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF2399 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2400 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2401 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF2402 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF2403 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF2404 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2405 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF2406 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF2407 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2408 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF2409 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF2410 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF2411 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF2412 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF2413 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2414 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2415 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2416 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2417 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF2418 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF2419 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF2420 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF2421 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF2422 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF2423 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF2424 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF2425 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2426 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2427 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2428 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2429 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2430 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF2431 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF2432 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2433 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2434 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2435 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2436 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2437 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF2438 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF2439 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF2440 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF2441 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2442 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF2443 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF2444 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2445 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF2446 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF2447 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF2448 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2449 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2450 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF2451 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF2452 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF2453 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF2454 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2455 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF2456 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2457 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2458 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF2459 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF2460 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF2461 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF2462 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF2463 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF2464 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF2465 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF2466 + .byte 0x5 + .byte 0xa4,0x2 + .4byte .LASF2467 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF2468 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF2469 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF2470 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF2471 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF2472 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF2473 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF2474 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF2475 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF2476 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF2477 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF2478 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF2479 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF2480 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF2481 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF2482 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF2483 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF2484 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF2485 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF2486 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF2487 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF2488 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF2489 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF2490 + .byte 0x5 + .byte 0xc2,0x2 + .4byte .LASF2491 + .byte 0x5 + .byte 0xc3,0x2 + .4byte .LASF2492 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF2493 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF2494 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF2495 + .byte 0x5 + .byte 0xc9,0x2 + .4byte .LASF2496 + .byte 0x5 + .byte 0xcc,0x2 + .4byte .LASF2497 + .byte 0x5 + .byte 0xcd,0x2 + .4byte .LASF2498 + .byte 0x5 + .byte 0xce,0x2 + .4byte .LASF2499 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF2500 + .byte 0x5 + .byte 0xd0,0x2 + .4byte .LASF2501 + .byte 0x5 + .byte 0xd1,0x2 + .4byte .LASF2502 + .byte 0x5 + .byte 0xd2,0x2 + .4byte .LASF2503 + .byte 0x5 + .byte 0xd3,0x2 + .4byte .LASF2504 + .byte 0x5 + .byte 0xd4,0x2 + .4byte .LASF2505 + .byte 0x5 + .byte 0xd5,0x2 + .4byte .LASF2506 + .byte 0x5 + .byte 0xd6,0x2 + .4byte .LASF2507 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF2508 + .byte 0x5 + .byte 0xd8,0x2 + .4byte .LASF2509 + .byte 0x5 + .byte 0xd9,0x2 + .4byte .LASF2510 + .byte 0x5 + .byte 0xda,0x2 + .4byte .LASF2511 + .byte 0x5 + .byte 0xdb,0x2 + .4byte .LASF2512 + .byte 0x5 + .byte 0xdc,0x2 + .4byte .LASF2513 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF2514 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF2515 + .byte 0x5 + .byte 0xdf,0x2 + .4byte .LASF2516 + .byte 0x5 + .byte 0xe2,0x2 + .4byte .LASF2517 + .byte 0x5 + .byte 0xe3,0x2 + .4byte .LASF2518 + .byte 0x5 + .byte 0xe4,0x2 + .4byte .LASF2519 + .byte 0x5 + .byte 0xe5,0x2 + .4byte .LASF2520 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF2521 + .byte 0x5 + .byte 0xe7,0x2 + .4byte .LASF2522 + .byte 0x5 + .byte 0xe8,0x2 + .4byte .LASF2523 + .byte 0x5 + .byte 0xe9,0x2 + .4byte .LASF2524 + .byte 0x5 + .byte 0xea,0x2 + .4byte .LASF2525 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF2526 + .byte 0x5 + .byte 0xec,0x2 + .4byte .LASF2527 + .byte 0x5 + .byte 0xed,0x2 + .4byte .LASF2528 + .byte 0x5 + .byte 0xee,0x2 + .4byte .LASF2529 + .byte 0x5 + .byte 0xef,0x2 + .4byte .LASF2530 + .byte 0x5 + .byte 0xf0,0x2 + .4byte .LASF2531 + .byte 0x5 + .byte 0xf1,0x2 + .4byte .LASF2532 + .byte 0x5 + .byte 0xf2,0x2 + .4byte .LASF2533 + .byte 0x5 + .byte 0xf3,0x2 + .4byte .LASF2534 + .byte 0x5 + .byte 0xf4,0x2 + .4byte .LASF2535 + .byte 0x5 + .byte 0xf7,0x2 + .4byte .LASF2536 + .byte 0x5 + .byte 0xf8,0x2 + .4byte .LASF2537 + .byte 0x5 + .byte 0xf9,0x2 + .4byte .LASF2538 + .byte 0x5 + .byte 0xfa,0x2 + .4byte .LASF2539 + .byte 0x5 + .byte 0xfb,0x2 + .4byte .LASF2540 + .byte 0x5 + .byte 0xfc,0x2 + .4byte .LASF2541 + .byte 0x5 + .byte 0xfd,0x2 + .4byte .LASF2542 + .byte 0x5 + .byte 0xfe,0x2 + .4byte .LASF2543 + .byte 0x5 + .byte 0x81,0x3 + .4byte .LASF2544 + .byte 0x5 + .byte 0x82,0x3 + .4byte .LASF2545 + .byte 0x5 + .byte 0x83,0x3 + .4byte .LASF2546 + .byte 0x5 + .byte 0x84,0x3 + .4byte .LASF2547 + .byte 0x5 + .byte 0x85,0x3 + .4byte .LASF2548 + .byte 0x5 + .byte 0x88,0x3 + .4byte .LASF2549 + .byte 0x5 + .byte 0x89,0x3 + .4byte .LASF2550 + .byte 0x5 + .byte 0x8c,0x3 + .4byte .LASF2551 + .byte 0x5 + .byte 0x8d,0x3 + .4byte .LASF2552 + .byte 0x5 + .byte 0x90,0x3 + .4byte .LASF2553 + .byte 0x5 + .byte 0x91,0x3 + .4byte .LASF2554 + .byte 0x5 + .byte 0x92,0x3 + .4byte .LASF2555 + .byte 0x5 + .byte 0x93,0x3 + .4byte .LASF2556 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF2557 + .byte 0x5 + .byte 0x97,0x3 + .4byte .LASF2558 + .byte 0x5 + .byte 0x9a,0x3 + .4byte .LASF2559 + .byte 0x5 + .byte 0x9b,0x3 + .4byte .LASF2560 + .byte 0x5 + .byte 0x9e,0x3 + .4byte .LASF2561 + .byte 0x5 + .byte 0x9f,0x3 + .4byte .LASF2562 + .byte 0x5 + .byte 0xa3,0x3 + .4byte .LASF2563 + .byte 0x5 + .byte 0xa4,0x3 + .4byte .LASF2564 + .byte 0x5 + .byte 0xa7,0x3 + .4byte .LASF2565 + .byte 0x5 + .byte 0xa8,0x3 + .4byte .LASF2566 + .byte 0x5 + .byte 0xab,0x3 + .4byte .LASF2567 + .byte 0x5 + .byte 0xac,0x3 + .4byte .LASF2568 + .byte 0x5 + .byte 0xaf,0x3 + .4byte .LASF2569 + .byte 0x5 + .byte 0xb0,0x3 + .4byte .LASF2570 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF2571 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF2572 + .byte 0x5 + .byte 0xb3,0x3 + .4byte .LASF2573 + .byte 0x5 + .byte 0xb6,0x3 + .4byte .LASF2574 + .byte 0x5 + .byte 0xb7,0x3 + .4byte .LASF2575 + .byte 0x5 + .byte 0xba,0x3 + .4byte .LASF2576 + .byte 0x5 + .byte 0xbb,0x3 + .4byte .LASF2577 + .byte 0x5 + .byte 0xbc,0x3 + .4byte .LASF2578 + .byte 0x5 + .byte 0xbd,0x3 + .4byte .LASF2579 + .byte 0x5 + .byte 0xc0,0x3 + .4byte .LASF2580 + .byte 0x5 + .byte 0xc1,0x3 + .4byte .LASF2581 + .byte 0x5 + .byte 0xc4,0x3 + .4byte .LASF2582 + .byte 0x5 + .byte 0xc5,0x3 + .4byte .LASF2583 + .byte 0x5 + .byte 0xc8,0x3 + .4byte .LASF2584 + .byte 0x5 + .byte 0xc9,0x3 + .4byte .LASF2585 + .byte 0x5 + .byte 0xcc,0x3 + .4byte .LASF2586 + .byte 0x5 + .byte 0xcd,0x3 + .4byte .LASF2587 + .byte 0x5 + .byte 0xd0,0x3 + .4byte .LASF2588 + .byte 0x5 + .byte 0xd1,0x3 + .4byte .LASF2589 + .byte 0x5 + .byte 0xd4,0x3 + .4byte .LASF2590 + .byte 0x5 + .byte 0xd5,0x3 + .4byte .LASF2591 + .byte 0x5 + .byte 0xd8,0x3 + .4byte .LASF2592 + .byte 0x5 + .byte 0xd9,0x3 + .4byte .LASF2593 + .byte 0x5 + .byte 0xda,0x3 + .4byte .LASF2594 + .byte 0x5 + .byte 0xdb,0x3 + .4byte .LASF2595 + .byte 0x5 + .byte 0xdc,0x3 + .4byte .LASF2596 + .byte 0x5 + .byte 0xdd,0x3 + .4byte .LASF2597 + .byte 0x5 + .byte 0xde,0x3 + .4byte .LASF2598 + .byte 0x5 + .byte 0xdf,0x3 + .4byte .LASF2599 + .byte 0x5 + .byte 0xe2,0x3 + .4byte .LASF2600 + .byte 0x5 + .byte 0xe3,0x3 + .4byte .LASF2601 + .byte 0x5 + .byte 0xe6,0x3 + .4byte .LASF2602 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF2603 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF2604 + .byte 0x5 + .byte 0xeb,0x3 + .4byte .LASF2605 + .byte 0x5 + .byte 0xee,0x3 + .4byte .LASF2606 + .byte 0x5 + .byte 0xef,0x3 + .4byte .LASF2607 + .byte 0x5 + .byte 0xf2,0x3 + .4byte .LASF2608 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF2609 + .byte 0x5 + .byte 0xf4,0x3 + .4byte .LASF2610 + .byte 0x5 + .byte 0xf7,0x3 + .4byte .LASF2611 + .byte 0x5 + .byte 0xf8,0x3 + .4byte .LASF2612 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF2613 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF2614 + .byte 0x5 + .byte 0xfd,0x3 + .4byte .LASF2615 + .byte 0x5 + .byte 0xfe,0x3 + .4byte .LASF2616 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF2617 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF2618 + .byte 0x5 + .byte 0x83,0x4 + .4byte .LASF2619 + .byte 0x5 + .byte 0x84,0x4 + .4byte .LASF2620 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF2621 + .byte 0x5 + .byte 0x86,0x4 + .4byte .LASF2622 + .byte 0x5 + .byte 0x87,0x4 + .4byte .LASF2623 + .byte 0x5 + .byte 0x88,0x4 + .4byte .LASF2624 + .byte 0x5 + .byte 0x89,0x4 + .4byte .LASF2625 + .byte 0x5 + .byte 0x8a,0x4 + .4byte .LASF2626 + .byte 0x5 + .byte 0x8d,0x4 + .4byte .LASF2627 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF2628 + .byte 0x5 + .byte 0x8f,0x4 + .4byte .LASF2629 + .byte 0x5 + .byte 0x90,0x4 + .4byte .LASF2630 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF2631 + .byte 0x5 + .byte 0x92,0x4 + .4byte .LASF2632 + .byte 0x5 + .byte 0x93,0x4 + .4byte .LASF2633 + .byte 0x5 + .byte 0x94,0x4 + .4byte .LASF2634 + .byte 0x5 + .byte 0x95,0x4 + .4byte .LASF2635 + .byte 0x5 + .byte 0x98,0x4 + .4byte .LASF2636 + .byte 0x5 + .byte 0x99,0x4 + .4byte .LASF2637 + .byte 0x5 + .byte 0x9a,0x4 + .4byte .LASF2638 + .byte 0x5 + .byte 0x9b,0x4 + .4byte .LASF2639 + .byte 0x5 + .byte 0x9c,0x4 + .4byte .LASF2640 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF2641 + .byte 0x5 + .byte 0x9e,0x4 + .4byte .LASF2642 + .byte 0x5 + .byte 0x9f,0x4 + .4byte .LASF2643 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF2644 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF2645 + .byte 0x5 + .byte 0xa4,0x4 + .4byte .LASF2646 + .byte 0x5 + .byte 0xa7,0x4 + .4byte .LASF2647 + .byte 0x5 + .byte 0xa8,0x4 + .4byte .LASF2648 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF2649 + .byte 0x5 + .byte 0xaa,0x4 + .4byte .LASF2650 + .byte 0x5 + .byte 0xab,0x4 + .4byte .LASF2651 + .byte 0x5 + .byte 0xae,0x4 + .4byte .LASF2652 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF2653 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF2654 + .byte 0x5 + .byte 0xb3,0x4 + .4byte .LASF2655 + .byte 0x5 + .byte 0xb6,0x4 + .4byte .LASF2656 + .byte 0x5 + .byte 0xb7,0x4 + .4byte .LASF2657 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_usart.h.38.bd493dc3b9236603b2fca39bcddb0020,comdat +.Ldebug_macro28: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x26 + .4byte .LASF2658 + .byte 0x5 + .byte 0x2b + .4byte .LASF2659 + .byte 0x5 + .byte 0x2c + .4byte .LASF2660 + .byte 0x5 + .byte 0x2d + .4byte .LASF2661 + .byte 0x5 + .byte 0x2e + .4byte .LASF2662 + .byte 0x5 + .byte 0x2f + .4byte .LASF2663 + .byte 0x5 + .byte 0x32 + .4byte .LASF2664 + .byte 0x5 + .byte 0x33 + .4byte .LASF2665 + .byte 0x5 + .byte 0x34 + .4byte .LASF2666 + .byte 0x5 + .byte 0x35 + .4byte .LASF2667 + .byte 0x5 + .byte 0x36 + .4byte .LASF2668 + .byte 0x5 + .byte 0x37 + .4byte .LASF2669 + .byte 0x5 + .byte 0x38 + .4byte .LASF2670 + .byte 0x5 + .byte 0x3c + .4byte .LASF2671 + .byte 0x5 + .byte 0x3d + .4byte .LASF2672 + .byte 0x5 + .byte 0x3e + .4byte .LASF2673 + .byte 0x5 + .byte 0x3f + .4byte .LASF2674 + .byte 0x5 + .byte 0x40 + .4byte .LASF2675 + .byte 0x5 + .byte 0x41 + .4byte .LASF2676 + .byte 0x5 + .byte 0x42 + .4byte .LASF2677 + .byte 0x5 + .byte 0x43 + .4byte .LASF2678 + .byte 0x5 + .byte 0x44 + .4byte .LASF2679 + .byte 0x5 + .byte 0x45 + .4byte .LASF2680 + .byte 0x5 + .byte 0x48 + .4byte .LASF2681 + .byte 0x5 + .byte 0x4b + .4byte .LASF2682 + .byte 0x5 + .byte 0x4c + .4byte .LASF2683 + .byte 0x5 + .byte 0x4f + .4byte .LASF2684 + .byte 0x5 + .byte 0x50 + .4byte .LASF2685 + .byte 0x5 + .byte 0x51 + .4byte .LASF2686 + .byte 0x5 + .byte 0x52 + .4byte .LASF2687 + .byte 0x5 + .byte 0x53 + .4byte .LASF2688 + .byte 0x5 + .byte 0x54 + .4byte .LASF2689 + .byte 0x5 + .byte 0x55 + .4byte .LASF2690 + .byte 0x5 + .byte 0x56 + .4byte .LASF2691 + .byte 0x5 + .byte 0x57 + .4byte .LASF2692 + .byte 0x5 + .byte 0x58 + .4byte .LASF2693 + .byte 0x5 + .byte 0x59 + .4byte .LASF2694 + .byte 0x5 + .byte 0x5a + .4byte .LASF2695 + .byte 0x5 + .byte 0x5b + .4byte .LASF2696 + .byte 0x5 + .byte 0x5c + .4byte .LASF2697 + .byte 0x5 + .byte 0x5f + .4byte .LASF2698 + .byte 0x5 + .byte 0x60 + .4byte .LASF2699 + .byte 0x5 + .byte 0x61 + .4byte .LASF2700 + .byte 0x5 + .byte 0x62 + .4byte .LASF2701 + .byte 0x5 + .byte 0x63 + .4byte .LASF2702 + .byte 0x5 + .byte 0x64 + .4byte .LASF2703 + .byte 0x5 + .byte 0x65 + .4byte .LASF2704 + .byte 0x5 + .byte 0x66 + .4byte .LASF2705 + .byte 0x5 + .byte 0x67 + .4byte .LASF2706 + .byte 0x5 + .byte 0x6a + .4byte .LASF2707 + .byte 0x5 + .byte 0x6b + .4byte .LASF2708 + .byte 0x5 + .byte 0x6c + .4byte .LASF2709 + .byte 0x5 + .byte 0x6d + .4byte .LASF2710 + .byte 0x5 + .byte 0x6e + .4byte .LASF2711 + .byte 0x5 + .byte 0x6f + .4byte .LASF2712 + .byte 0x5 + .byte 0x70 + .4byte .LASF2713 + .byte 0x5 + .byte 0x71 + .4byte .LASF2714 + .byte 0x5 + .byte 0x72 + .4byte .LASF2715 + .byte 0x5 + .byte 0x73 + .4byte .LASF2716 + .byte 0x5 + .byte 0x74 + .4byte .LASF2717 + .byte 0x5 + .byte 0x77 + .4byte .LASF2718 + .byte 0x5 + .byte 0x78 + .4byte .LASF2719 + .byte 0x5 + .byte 0x7c + .4byte .LASF2720 + .byte 0x5 + .byte 0x7d + .4byte .LASF2721 + .byte 0x5 + .byte 0x7e + .4byte .LASF2722 + .byte 0x5 + .byte 0x7f + .4byte .LASF2723 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF2724 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF2725 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF2726 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF2727 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF2728 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF2729 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2730 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2731 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2732 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF2733 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF2734 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF2735 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF2736 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF2737 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF2738 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2739 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF2740 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF2741 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF2742 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF2743 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2744 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF2745 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF2746 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF2747 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF2748 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF2749 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF2750 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF2751 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2752 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2753 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF2754 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF2755 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2756 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF2757 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2758 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2759 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF2760 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF2761 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF2762 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF2763 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF2764 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF2765 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF2766 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF2767 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF2768 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF2769 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF2770 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF2771 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF2772 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF2773 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF2774 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF2775 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF2776 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF2777 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_wwdgt.h.37.3e64b838fd471007da900965463a8419,comdat +.Ldebug_macro29: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2778 + .byte 0x5 + .byte 0x2a + .4byte .LASF2779 + .byte 0x5 + .byte 0x2d + .4byte .LASF2780 + .byte 0x5 + .byte 0x2e + .4byte .LASF2781 + .byte 0x5 + .byte 0x2f + .4byte .LASF2782 + .byte 0x5 + .byte 0x33 + .4byte .LASF2783 + .byte 0x5 + .byte 0x34 + .4byte .LASF2784 + .byte 0x5 + .byte 0x37 + .4byte .LASF2785 + .byte 0x5 + .byte 0x38 + .4byte .LASF2786 + .byte 0x5 + .byte 0x39 + .4byte .LASF2787 + .byte 0x5 + .byte 0x3c + .4byte .LASF2788 + .byte 0x5 + .byte 0x3f + .4byte .LASF2789 + .byte 0x5 + .byte 0x40 + .4byte .LASF2790 + .byte 0x5 + .byte 0x41 + .4byte .LASF2791 + .byte 0x5 + .byte 0x42 + .4byte .LASF2792 + .byte 0x5 + .byte 0x43 + .4byte .LASF2793 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stddef.h.39.144cf5ddcd53cbfdac30259dc1a6c87f,comdat +.Ldebug_macro30: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF2795 + .byte 0x5 + .byte 0x28 + .4byte .LASF2796 + .byte 0x5 + .byte 0x2a + .4byte .LASF2797 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF2798 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF2799 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF2800 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF2801 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF2802 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF2803 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF2804 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF2805 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF2806 + .byte 0x6 + .byte 0x9b,0x1 + .4byte .LASF2807 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2808 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF2809 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF2810 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2811 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2812 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2813 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2814 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF2815 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF2816 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2817 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2818 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2819 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2820 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2821 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF2822 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF2823 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2824 + .byte 0x6 + .byte 0xe7,0x1 + .4byte .LASF2825 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF2826 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF2827 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF2828 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF2829 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF2830 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF2831 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF2832 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF2833 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF2834 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF2835 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF2836 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF2837 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF2838 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF2839 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF2840 + .byte 0x6 + .byte 0x9f,0x2 + .4byte .LASF2841 + .byte 0x6 + .byte 0xd4,0x2 + .4byte .LASF2842 + .byte 0x6 + .byte 0x86,0x3 + .4byte .LASF2843 + .byte 0x5 + .byte 0x8b,0x3 + .4byte .LASF2844 + .byte 0x6 + .byte 0x91,0x3 + .4byte .LASF2845 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF2846 + .byte 0x5 + .byte 0x9b,0x3 + .4byte .LASF2847 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_timer.h.4.7cbfcb0f457964ecd81bc2aaf47d8b32,comdat +.Ldebug_macro31: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4 + .4byte .LASF2848 + .byte 0x5 + .byte 0x6 + .4byte .LASF2849 + .byte 0x5 + .byte 0x7 + .4byte .LASF2850 + .byte 0x5 + .byte 0x8 + .4byte .LASF2851 + .byte 0x5 + .byte 0x9 + .4byte .LASF2852 + .byte 0x5 + .byte 0xa + .4byte .LASF2853 + .byte 0x5 + .byte 0xb + .4byte .LASF2854 + .byte 0x5 + .byte 0xd + .4byte .LASF2855 + .byte 0x5 + .byte 0xe + .4byte .LASF2856 + .byte 0x5 + .byte 0xf + .4byte .LASF2857 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.riscv_const.h.5.95ac0744d59bfc0d17f4e8adf85ccb42,comdat +.Ldebug_macro32: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x5 + .4byte .LASF2859 + .byte 0x5 + .byte 0xb + .4byte .LASF2860 + .byte 0x5 + .byte 0xc + .4byte .LASF2861 + .byte 0x5 + .byte 0xf + .4byte .LASF2862 + .byte 0x5 + .byte 0x10 + .4byte .LASF2863 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_eclic.h.8.88844f0cdf4d8e1ef4e06c0cb5147462,comdat +.Ldebug_macro33: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x8 + .4byte .LASF2864 + .byte 0x5 + .byte 0xd + .4byte .LASF2865 + .byte 0x5 + .byte 0xf + .4byte .LASF2866 + .byte 0x5 + .byte 0x11 + .4byte .LASF2867 + .byte 0x5 + .byte 0x14 + .4byte .LASF2868 + .byte 0x5 + .byte 0x16 + .4byte .LASF2869 + .byte 0x5 + .byte 0x18 + .4byte .LASF2870 + .byte 0x5 + .byte 0x1a + .4byte .LASF2871 + .byte 0x5 + .byte 0x1b + .4byte .LASF2872 + .byte 0x5 + .byte 0x1c + .4byte .LASF2873 + .byte 0x5 + .byte 0x1d + .4byte .LASF2874 + .byte 0x5 + .byte 0x1e + .4byte .LASF2875 + .byte 0x5 + .byte 0x21 + .4byte .LASF2876 + .byte 0x5 + .byte 0x23 + .4byte .LASF2877 + .byte 0x5 + .byte 0x26 + .4byte .LASF2878 + .byte 0x5 + .byte 0x27 + .4byte .LASF2879 + .byte 0x5 + .byte 0x29 + .4byte .LASF2880 + .byte 0x5 + .byte 0x2a + .4byte .LASF2881 + .byte 0x5 + .byte 0x2b + .4byte .LASF2882 + .byte 0x5 + .byte 0x2c + .4byte .LASF2883 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_func.h.11.5e6cb65336aea242ab47b239a06795e1,comdat +.Ldebug_macro34: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xb + .4byte .LASF2884 + .byte 0x5 + .byte 0xc + .4byte .LASF2885 + .byte 0x5 + .byte 0xd + .4byte .LASF2886 + .byte 0x5 + .byte 0xe + .4byte .LASF2887 + .byte 0x5 + .byte 0xf + .4byte .LASF2888 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_gpio.h.42.a27b53988a6e293185a2067f74a5a061,comdat +.Ldebug_macro35: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x2a + .4byte .LASF2889 + .byte 0x5 + .byte 0x2b + .4byte .LASF2890 + .byte 0x5 + .byte 0x2c + .4byte .LASF2891 + .byte 0x5 + .byte 0x2d + .4byte .LASF2892 + .byte 0x5 + .byte 0x2e + .4byte .LASF2893 + .byte 0x5 + .byte 0x31 + .4byte .LASF2894 + .byte 0x5 + .byte 0x36 + .4byte .LASF2895 + .byte 0x5 + .byte 0x37 + .4byte .LASF2896 + .byte 0x5 + .byte 0x38 + .4byte .LASF2897 + .byte 0x5 + .byte 0x39 + .4byte .LASF2898 + .byte 0x5 + .byte 0x3a + .4byte .LASF2899 + .byte 0x5 + .byte 0x3b + .4byte .LASF2900 + .byte 0x5 + .byte 0x3c + .4byte .LASF2901 + .byte 0x5 + .byte 0x3f + .4byte .LASF2902 + .byte 0x5 + .byte 0x40 + .4byte .LASF2903 + .byte 0x5 + .byte 0x41 + .4byte .LASF2904 + .byte 0x5 + .byte 0x42 + .4byte .LASF2905 + .byte 0x5 + .byte 0x43 + .4byte .LASF2906 + .byte 0x5 + .byte 0x44 + .4byte .LASF2907 + .byte 0x5 + .byte 0x45 + .4byte .LASF2908 + .byte 0x5 + .byte 0x49 + .4byte .LASF2909 + .byte 0x5 + .byte 0x4a + .4byte .LASF2910 + .byte 0x5 + .byte 0x4b + .4byte .LASF2911 + .byte 0x5 + .byte 0x4c + .4byte .LASF2912 + .byte 0x5 + .byte 0x4d + .4byte .LASF2913 + .byte 0x5 + .byte 0x4e + .4byte .LASF2914 + .byte 0x5 + .byte 0x4f + .4byte .LASF2915 + .byte 0x5 + .byte 0x50 + .4byte .LASF2916 + .byte 0x5 + .byte 0x51 + .4byte .LASF2917 + .byte 0x5 + .byte 0x52 + .4byte .LASF2918 + .byte 0x5 + .byte 0x53 + .4byte .LASF2919 + .byte 0x5 + .byte 0x54 + .4byte .LASF2920 + .byte 0x5 + .byte 0x55 + .4byte .LASF2921 + .byte 0x5 + .byte 0x56 + .4byte .LASF2922 + .byte 0x5 + .byte 0x57 + .4byte .LASF2923 + .byte 0x5 + .byte 0x58 + .4byte .LASF2924 + .byte 0x5 + .byte 0x5b + .4byte .LASF2925 + .byte 0x5 + .byte 0x5c + .4byte .LASF2926 + .byte 0x5 + .byte 0x5d + .4byte .LASF2927 + .byte 0x5 + .byte 0x5e + .4byte .LASF2928 + .byte 0x5 + .byte 0x5f + .4byte .LASF2929 + .byte 0x5 + .byte 0x60 + .4byte .LASF2930 + .byte 0x5 + .byte 0x61 + .4byte .LASF2931 + .byte 0x5 + .byte 0x62 + .4byte .LASF2932 + .byte 0x5 + .byte 0x63 + .4byte .LASF2933 + .byte 0x5 + .byte 0x64 + .4byte .LASF2934 + .byte 0x5 + .byte 0x65 + .4byte .LASF2935 + .byte 0x5 + .byte 0x66 + .4byte .LASF2936 + .byte 0x5 + .byte 0x67 + .4byte .LASF2937 + .byte 0x5 + .byte 0x68 + .4byte .LASF2938 + .byte 0x5 + .byte 0x69 + .4byte .LASF2939 + .byte 0x5 + .byte 0x6a + .4byte .LASF2940 + .byte 0x5 + .byte 0x6d + .4byte .LASF2941 + .byte 0x5 + .byte 0x6e + .4byte .LASF2942 + .byte 0x5 + .byte 0x6f + .4byte .LASF2943 + .byte 0x5 + .byte 0x70 + .4byte .LASF2944 + .byte 0x5 + .byte 0x71 + .4byte .LASF2945 + .byte 0x5 + .byte 0x72 + .4byte .LASF2946 + .byte 0x5 + .byte 0x73 + .4byte .LASF2947 + .byte 0x5 + .byte 0x74 + .4byte .LASF2948 + .byte 0x5 + .byte 0x75 + .4byte .LASF2949 + .byte 0x5 + .byte 0x76 + .4byte .LASF2950 + .byte 0x5 + .byte 0x77 + .4byte .LASF2951 + .byte 0x5 + .byte 0x78 + .4byte .LASF2952 + .byte 0x5 + .byte 0x79 + .4byte .LASF2953 + .byte 0x5 + .byte 0x7a + .4byte .LASF2954 + .byte 0x5 + .byte 0x7b + .4byte .LASF2955 + .byte 0x5 + .byte 0x7c + .4byte .LASF2956 + .byte 0x5 + .byte 0x7f + .4byte .LASF2957 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF2958 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF2959 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF2960 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF2961 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF2962 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF2963 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF2964 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF2965 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF2966 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF2967 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF2968 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF2969 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2970 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2971 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF2972 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2973 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF2974 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF2975 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF2976 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF2977 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2978 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2979 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF2980 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF2981 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF2982 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2983 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF2984 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF2985 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2986 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF2987 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF2988 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF2989 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF2990 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF2991 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF2992 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF2993 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF2994 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF2995 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2996 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2997 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2998 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2999 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF3000 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF3001 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF3002 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF3003 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF3004 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF3005 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF3006 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF3007 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF3008 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF3009 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF3010 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF3011 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF3012 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF3013 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF3014 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF3015 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF3016 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF3017 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF3018 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF3019 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF3020 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF3021 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF3022 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF3023 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF3024 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF3025 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF3026 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF3027 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF3028 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF3029 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF3030 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF3031 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF3032 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF3033 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF3034 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF3035 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF3036 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF3037 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF3038 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF3039 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF3040 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF3041 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF3042 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF3043 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF3044 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF3045 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF3046 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF3047 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF3048 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF3049 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF3050 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF3051 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF3052 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF3053 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF3054 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF3055 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF3056 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF3057 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF3058 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF3059 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF3060 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF3061 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF3062 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF3063 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF3064 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF3065 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF3066 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF3067 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF3068 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF3069 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF3070 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF3071 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF3072 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF3073 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF3074 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF3075 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF3076 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF3077 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF3078 + .byte 0x5 + .byte 0x94,0x2 + .4byte .LASF3079 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF3080 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF3081 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF3082 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF3083 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF3084 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF3085 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF3086 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF3087 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF3088 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF3089 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF3090 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF3091 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF3092 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF3093 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF3094 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF3095 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF3096 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF3097 + .byte 0x5 + .byte 0xaf,0x2 + .4byte .LASF3098 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF3099 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF3100 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF3101 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF3102 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF3103 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF3104 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF3105 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF3106 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF3107 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF3108 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF3109 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF3110 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF3111 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF3112 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF3113 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF3114 + .byte 0x5 + .byte 0xc2,0x2 + .4byte .LASF3115 + .byte 0x5 + .byte 0xc3,0x2 + .4byte .LASF3116 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF3117 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF3118 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF3119 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF3120 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF3121 + .byte 0x5 + .byte 0xc9,0x2 + .4byte .LASF3122 + .byte 0x5 + .byte 0xca,0x2 + .4byte .LASF3123 + .byte 0x5 + .byte 0xcb,0x2 + .4byte .LASF3124 + .byte 0x5 + .byte 0xcc,0x2 + .4byte .LASF3125 + .byte 0x5 + .byte 0xcd,0x2 + .4byte .LASF3126 + .byte 0x5 + .byte 0xce,0x2 + .4byte .LASF3127 + .byte 0x5 + .byte 0xd1,0x2 + .4byte .LASF3128 + .byte 0x5 + .byte 0xd2,0x2 + .4byte .LASF3129 + .byte 0x5 + .byte 0xd3,0x2 + .4byte .LASF3130 + .byte 0x5 + .byte 0xd4,0x2 + .4byte .LASF3131 + .byte 0x5 + .byte 0xd5,0x2 + .4byte .LASF3132 + .byte 0x5 + .byte 0xd6,0x2 + .4byte .LASF3133 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF3134 + .byte 0x5 + .byte 0xd8,0x2 + .4byte .LASF3135 + .byte 0x5 + .byte 0xd9,0x2 + .4byte .LASF3136 + .byte 0x5 + .byte 0xda,0x2 + .4byte .LASF3137 + .byte 0x5 + .byte 0xdb,0x2 + .4byte .LASF3138 + .byte 0x5 + .byte 0xdc,0x2 + .4byte .LASF3139 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF3140 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF3141 + .byte 0x5 + .byte 0xdf,0x2 + .4byte .LASF3142 + .byte 0x5 + .byte 0xe0,0x2 + .4byte .LASF3143 + .byte 0x5 + .byte 0xe1,0x2 + .4byte .LASF3144 + .byte 0x5 + .byte 0xe4,0x2 + .4byte .LASF3145 + .byte 0x5 + .byte 0xe5,0x2 + .4byte .LASF3146 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF3147 + .byte 0x5 + .byte 0xe7,0x2 + .4byte .LASF3148 + .byte 0x5 + .byte 0xe8,0x2 + .4byte .LASF3149 + .byte 0x5 + .byte 0xe9,0x2 + .4byte .LASF3150 + .byte 0x5 + .byte 0xea,0x2 + .4byte .LASF3151 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF3152 + .byte 0x5 + .byte 0xec,0x2 + .4byte .LASF3153 + .byte 0x5 + .byte 0xed,0x2 + .4byte .LASF3154 + .byte 0x5 + .byte 0xee,0x2 + .4byte .LASF3155 + .byte 0x5 + .byte 0xef,0x2 + .4byte .LASF3156 + .byte 0x5 + .byte 0xf0,0x2 + .4byte .LASF3157 + .byte 0x5 + .byte 0xf1,0x2 + .4byte .LASF3158 + .byte 0x5 + .byte 0xf2,0x2 + .4byte .LASF3159 + .byte 0x5 + .byte 0xf3,0x2 + .4byte .LASF3160 + .byte 0x5 + .byte 0xf4,0x2 + .4byte .LASF3161 + .byte 0x5 + .byte 0xf5,0x2 + .4byte .LASF3162 + .byte 0x5 + .byte 0xf6,0x2 + .4byte .LASF3163 + .byte 0x5 + .byte 0xf7,0x2 + .4byte .LASF3164 + .byte 0x5 + .byte 0xf8,0x2 + .4byte .LASF3165 + .byte 0x5 + .byte 0xf9,0x2 + .4byte .LASF3166 + .byte 0x5 + .byte 0xfa,0x2 + .4byte .LASF3167 + .byte 0x5 + .byte 0xfb,0x2 + .4byte .LASF3168 + .byte 0 + .section .debug_line,"",@progbits +.Ldebug_line0: + .section .debug_str,"MS",@progbits,1 +.LASF1190: + .string "DAC_WAVE_BIT_WIDTH_4 DWBW(3)" +.LASF2026: + .string "RCU_PLL_MUL20 (PLLMF_4 | CFG0_PLLMF(3))" +.LASF2219: + .string "SPI_I2SCTL_I2SOPMOD BITS(8,9)" +.LASF1588: + .string "OB_WP_25 ((uint32_t)0x02000000U)" +.LASF2731: + .string "USART_RECEIVE_ENABLE CTL0_REN(1)" +.LASF366: + .string "___int16_t_defined 1" +.LASF1980: + .string "RCU_AHB_CKSYS_DIV8 CFG0_AHBPSC(10)" +.LASF758: + .string "BKP_DATA BITS(0,15)" +.LASF885: + .string "CAN_CTL_RFOD BIT(3)" +.LASF1656: + .string "I2C_STAT1_RXGC BIT(4)" +.LASF2881: + .string "MTIME_HANDLER eclic_mtip_handler" +.LASF3007: + .string "GPIO_BC_CR2 BIT(2)" +.LASF2641: + .string "TIMER_SLAVE_MODE_RESTART SMCFG_SMC(4)" +.LASF2678: + .string "USART_STAT_TBE BIT(7)" +.LASF1401: + .string "EXTI_EVEN_EVEN11 BIT(11)" +.LASF835: + .string "CAN_F19DATA0(canx) REG32((canx) + 0x2D8U)" +.LASF1277: + .string "DMA_CHXCTL_MWIDTH BITS(10,11)" +.LASF2181: + .string "SPI_CTL0_MSTMOD BIT(2)" +.LASF1889: + .string "RCU_APB1RST_PMURST BIT(28)" +.LASF1302: + .string "DMA_INT_HTF DMA_CHXCTL_HTFIE" +.LASF3267: + .string "gpio_deinit" +.LASF1859: + .string "RCU_INT_CKMIC BIT(23)" +.LASF2150: + .string "RTC_DIVL_DIV BITS(0,15)" +.LASF2830: + .string "_T_WCHAR " +.LASF1721: + .string "FWDGT_STAT_RUD BIT(1)" +.LASF537: + .string "ADC_IOFF1(adcx) REG32((adcx) + 0x18U)" +.LASF1694: + .string "I2C_DMA_OFF ((uint32_t)0x00000000U)" +.LASF2608: + .string "TIMER_IC_POLARITY_RISING ((uint16_t)0x0000U)" +.LASF2216: + .string "SPI_I2SCTL_CKPL BIT(3)" +.LASF827: + .string "CAN_F11DATA0(canx) REG32((canx) + 0x298U)" +.LASF150: + .string "__FLT_MAX_10_EXP__ 38" +.LASF2193: + .string "SPI_CTL1_DMAREN BIT(0)" +.LASF510: + .string "SPI_BASE (APB1_BUS_BASE + 0x00003800U)" +.LASF127: + .string "__INT_FAST16_WIDTH__ 32" +.LASF981: + .string "CAN_RFIFOMDATA0_DB1 BITS(8,15)" +.LASF2435: + .string "TIMER_CHCTL2_CH2EN BIT(8)" +.LASF914: + .string "CAN_TSTAT_MTE2 BIT(19)" +.LASF2280: + .string "I2S_CKPL_HIGH SPI_I2SCTL_CKPL" +.LASF1922: + .string "RCU_APB1EN_I2C0EN BIT(21)" +.LASF2170: + .string "SPI_CTL0(spix) REG32((spix) + 0x00U)" +.LASF2595: + .string "TIMER_OC_MODE_TOGGLE ((uint16_t)0x0030U)" +.LASF1472: + .string "EXTI_PD_PD6 BIT(6)" +.LASF1096: + .string "CAN_FILTERBITS_16BIT ((uint8_t)0x00U)" +.LASF3187: + .string "long unsigned int" +.LASF727: + .string "BKP_DATA14 REG16((BKP) + 0x50U)" +.LASF2157: + .string "RTC_INT_OVERFLOW RTC_INTEN_OVIE" +.LASF3228: + .string "RCU_SPI0RST" +.LASF2130: + .string "RTC_PSCH REG32(RTC + 0x08U)" +.LASF3066: + .string "AFIO_EXTI10_SS BITS(8, 11)" +.LASF300: + .string "__SIZEOF_WCHAR_T__ 4" +.LASF501: + .string "EXMC_BASE ((uint32_t)0xA0000000U)" +.LASF2960: + .string "GPIO_OCTL_OCTL3 BIT(3)" +.LASF1340: + .string "EXMC_SNCTL_NRTP BITS(2,3)" +.LASF307: + .string "__riscv_div 1" +.LASF755: + .string "BKP_OCTL REG16((BKP) + 0x2CU)" +.LASF2494: + .string "TIMER_DMA_TRGD ((uint16_t)TIMER_DMAINTEN_TRGDEN)" +.LASF1408: + .string "EXTI_EVEN_EVEN18 BIT(18)" +.LASF2133: + .string "RTC_DIVL REG32(RTC + 0x14U)" +.LASF478: + .string "WCHAR_MAX (__WCHAR_MAX__)" +.LASF1724: + .string "FWDGT_PSC_DIV8 ((uint8_t)PSC_PSC(1))" +.LASF1037: + .string "GET_ERR_ERRN(regval) GET_BITS((uint32_t)(regval), 4U, 6U)" +.LASF2271: + .string "I2S_MODE_MASTERTX I2SCTL_I2SOPMOD(2)" +.LASF2823: + .string "_SIZET_ " +.LASF1339: + .string "EXMC_SNCTL_NRMUX BIT(1)" +.LASF1329: + .string "ECLIC_PRIGROUP_LEVEL2_PRIO2 2" +.LASF2626: + .string "TIMER_SMCFG_TRGSEL_ETIFP SMCFG_TRGSEL(7)" +.LASF1116: + .string "CAN_INT_WAKEUP CAN_INTEN_WIE" +.LASF439: + .string "INT16_MIN (-__INT16_MAX__ - 1)" +.LASF2899: + .string "GPIO_BOP(gpiox) REG32((gpiox) + 0x10U)" +.LASF258: + .string "__FLT32X_MAX__ 1.79769313486231570814527423731704357e+308F32x" +.LASF2018: + .string "RCU_PLL_MUL12 CFG0_PLLMF(10)" +.LASF581: + .string "ADC_CTL1_SWRCST BIT(22)" +.LASF2675: + .string "USART_STAT_IDLEF BIT(4)" +.LASF1226: + .string "DAC_TRIANGLE_AMPLITUDE_4095 DAC_WAVE_BIT_WIDTH_12" +.LASF3195: + .string "ControlStatus" +.LASF2761: + .string "USART_CPL_LOW CTL1_CPL(0)" +.LASF1531: + .string "FMC_REGIDX_BITS(regidx,bitpos0,bitpos1) (((uint32_t)(regidx) << 12) | ((uint32_t)(bitpos0) << 6) | (uint32_t)(bitpos1))" +.LASF1783: + .string "PMU_LVDT_5 CTL_LVDT(5)" +.LASF341: + .string "SYSTEM_GD32VF103_H " +.LASF1516: + .string "FMC_CTL_LK BIT(7)" +.LASF498: + .string "SRAM_BASE ((uint32_t)0x20000000U)" +.LASF623: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH1 CTL1_ETSRC(1)" +.LASF459: + .string "UINT_FAST8_MAX (__UINT_FAST8_MAX__)" +.LASF2919: + .string "GPIO_CTL0_MD5 BITS(20, 21)" +.LASF182: + .string "__LDBL_DECIMAL_DIG__ 36" +.LASF452: + .string "INT64_MAX (__INT64_MAX__)" +.LASF2273: + .string "I2SCTL_I2SSTD(regval) (BITS(4,5) & ((uint32_t)(regval) << 4))" +.LASF2779: + .string "WWDGT WWDGT_BASE" +.LASF413: + .string "_UINT32_T_DECLARED " +.LASF1278: + .string "DMA_CHXCTL_PRIO BITS(12,13)" +.LASF2785: + .string "WWDGT_CFG_WIN BITS(0,6)" +.LASF3070: + .string "AFIO_EXTI14_SS BITS(8, 11)" +.LASF674: + .string "ADC_CHANNEL_13 ((uint8_t)0x0DU)" +.LASF3096: + .string "GPIO_EVENT_PIN_0 ((uint8_t)0x00U)" +.LASF2148: + .string "RTC_PSCL_PSC BITS(0,15)" +.LASF2787: + .string "WWDGT_CFG_EWIE BIT(9)" +.LASF2696: + .string "USART_CTL0_WL BIT(12)" +.LASF3123: + .string "GPIO_PIN_SOURCE_11 ((uint8_t)0x0BU)" +.LASF435: + .string "UINT8_MAX (__UINT8_MAX__)" +.LASF1115: + .string "CAN_INT_ERR CAN_INTEN_ERRIE" +.LASF1553: + .string "FMC_NSPC ((uint8_t)0xA5U)" +.LASF3257: + .string "gpio_bit_reset" +.LASF1017: + .string "TMDATA0_DB0(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF993: + .string "CAN_FW_FW(regval) BIT(regval)" +.LASF1619: + .string "I2C_CTL0_START BIT(8)" +.LASF2016: + .string "RCU_PLL_MUL10 CFG0_PLLMF(8)" +.LASF3015: + .string "GPIO_BC_CR10 BIT(10)" +.LASF386: + .string "short +1" +.LASF3162: + .string "GPIO_TIMER4CH3_IREMAP ((uint32_t)0x00200001U)" +.LASF2891: + .string "GPIOC (GPIO_BASE + 0x00000800U)" +.LASF2527: + .string "TIMER_DMACFG_DMATC_10TRANSFER DMACFG_DMATC(9)" +.LASF702: + .string "OVSCR_OVSR(regval) (BITS(2,4) & ((uint32_t)(regval) << 2))" +.LASF2723: + .string "USART_REGIDX_BIT2(regidx,bitpos,regidx2,bitpos2) (((uint32_t)(regidx2) << 22) | (uint32_t)((bitpos2) << 16) | (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos)))" +.LASF2704: + .string "USART_CTL1_CKEN BIT(11)" +.LASF1014: + .string "FCTL_HBC1F(regval) (BITS(8,13) & ((uint32_t)(regval) << 8))" +.LASF625: + .string "ADC0_1_EXTTRIG_REGULAR_T1_CH1 CTL1_ETSRC(3)" +.LASF678: + .string "ADC_CHANNEL_17 ((uint8_t)0x11U)" +.LASF1955: + .string "RCU_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF2651: + .string "TIMER_EXT_TRI_PSC_DIV8 SMCFG_ETPSC(3)" +.LASF467: + .string "INT_FAST64_MAX (__INT_FAST64_MAX__)" +.LASF3112: + .string "GPIO_PIN_SOURCE_0 ((uint8_t)0x00U)" +.LASF512: + .string "I2C_BASE (APB1_BUS_BASE + 0x00005400U)" +.LASF2709: + .string "USART_CTL2_IRLP BIT(2)" +.LASF2509: + .string "TIMER_DMACFG_DMATA_CAR DMACFG_DMATA(11)" +.LASF1761: + .string "DBG_LOW_POWER_STANDBY DBG_CTL_STB_HOLD" +.LASF2559: + .string "TIMER_UPDATE_SRC_REGULAR TIMER_CTL0_UPS" +.LASF3053: + .string "AFIO_PCF0_SWJ_CFG BITS(24, 26)" +.LASF1555: + .string "OB_SPC_SPC ((uint32_t)0x000000FFU)" +.LASF511: + .string "USART_BASE (APB1_BUS_BASE + 0x00004400U)" +.LASF1030: + .string "GET_RFIFOMDATA0_DB1(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF1000: + .string "CAN_BIT_POS0(val) (((uint32_t)(val) >> 6) & 0x1FU)" +.LASF2277: + .string "I2S_STD_PCMSHORT I2SCTL_I2SSTD(3)" +.LASF1833: + .string "RCU_CFG0_USBFSPSC BITS(22,23)" +.LASF1144: + .string "DAC_CTL_DBOFF0 BIT(1)" +.LASF1428: + .string "EXTI_FTEN_FTEN0 BIT(0)" +.LASF1963: + .string "CTL_REG_OFFSET 0x00U" +.LASF2702: + .string "USART_CTL1_CPH BIT(9)" +.LASF1381: + .string "EXTI_INTEN_INTEN10 BIT(10)" +.LASF1513: + .string "FMC_CTL_OBPG BIT(4)" +.LASF421: + .string "_UINTPTR_T_DECLARED " +.LASF2994: + .string "GPIO_BOP_CR5 BIT(21)" +.LASF3043: + .string "AFIO_PCF0_USART0_REMAP BIT(2)" +.LASF2020: + .string "RCU_PLL_MUL14 CFG0_PLLMF(12)" +.LASF424: + .string "__int_least32_t_defined 1" +.LASF2859: + .string "_RISCV_CONST_H " +.LASF2253: + .string "I2S_AUDIOSAMPLE_11K ((uint32_t)11025U)" +.LASF3116: + .string "GPIO_PIN_SOURCE_4 ((uint8_t)0x04U)" +.LASF2144: + .string "RTC_CTL_RSYNF BIT(3)" +.LASF1176: + .string "DAC_TRIGGER_T6_TRGO CTL_DTSEL(2)" +.LASF2803: + .string "_BSD_PTRDIFF_T_ " +.LASF1042: + .string "CAN_ERRN_1 ERR_ERRN(1U)" +.LASF2327: + .string "TIMER_PSC(timerx) REG32((timerx) + 0x28U)" +.LASF1627: + .string "I2C_CTL1_ERRIE BIT(8)" +.LASF2264: + .string "I2S_FRAMEFORMAT_DT24B_CH32B (I2SCTL_DTLEN(1) | SPI_I2SCTL_CHLEN)" +.LASF1866: + .string "RCU_APB2RST_ADC0RST BIT(9)" +.LASF2255: + .string "I2S_AUDIOSAMPLE_22K ((uint32_t)22050U)" +.LASF2251: + .string "SPI_PSC_256 CTL0_PSC(7)" +.LASF50: + .string "__INT_LEAST16_TYPE__ short int" +.LASF3139: + .string "GPIO_PIN_11 BIT(11)" +.LASF2456: + .string "TIMER_CCHP_POEN BIT(15)" +.LASF2070: + .string "RCU_PREDV0_DIV11 CFG1_PREDV0(10)" +.LASF1816: + .string "RCU_CTL_HXTALBPS BIT(18)" +.LASF669: + .string "ADC_CHANNEL_8 ((uint8_t)0x08U)" +.LASF3127: + .string "GPIO_PIN_SOURCE_15 ((uint8_t)0x0FU)" +.LASF2275: + .string "I2S_STD_MSB I2SCTL_I2SSTD(1)" +.LASF305: + .string "__riscv_atomic 1" +.LASF3181: + .string "short int" +.LASF3146: + .string "GPIO_I2C0_REMAP ((uint32_t)0x00000002U)" +.LASF551: + .string "ADC_OVSCR(adcx) REG32((adcx) + 0x80U)" +.LASF1230: + .string "DMA_INTF(dmax) REG32((dmax) + 0x00U)" +.LASF1851: + .string "RCU_INT_PLL2STBIE BIT(14)" +.LASF1610: + .string "I2C_RT(i2cx) REG32((i2cx) + 0x20U)" +.LASF2305: + .string "I2S_FLAG_TXURERR SPI_STAT_TXURERR" +.LASF2047: + .string "RCU_CKOUT0SRC_IRC8M CFG0_CKOUT0SEL(5)" +.LASF2298: + .string "SPI_FLAG_CONFERR SPI_STAT_CONFERR" +.LASF1342: + .string "EXMC_SNCTL_NREN BIT(6)" +.LASF1441: + .string "EXTI_FTEN_FTEN13 BIT(13)" +.LASF2931: + .string "GPIO_CTL1_MD11 BITS(12, 13)" +.LASF548: + .string "ADC_IDATA2(adcx) REG32((adcx) + 0x44U)" +.LASF3174: + .string "PCF_LOCATION1_MASK ((uint32_t)0x00200000U)" +.LASF350: + .string "__GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))" +.LASF2375: + .string "TIMER_DMAINTEN_CH2DEN BIT(11)" +.LASF3233: + .string "gpio_event_output_disable" +.LASF1642: + .string "I2C_STAT0_ADD10SEND BIT(3)" +.LASF2477: + .string "TIMER_FLAG_CH0 TIMER_INTF_CH0IF" +.LASF2221: + .string "SPI_I2SCTL_I2SSEL BIT(11)" +.LASF1836: + .string "RCU_CFG0_PLLMF_4 BIT(29)" +.LASF227: + .string "__FLT64_DECIMAL_DIG__ 17" +.LASF899: + .string "CAN_STAT_LASTRX BIT(10)" +.LASF1999: + .string "RCU_CKADC_CKAPB2_DIV4 ((uint32_t)0x00000001U)" +.LASF2715: + .string "USART_CTL2_RTSEN BIT(8)" +.LASF1324: + .string "DMA_MEMORY_TO_MEMORY_ENABLE ((uint32_t)0x00000001U)" +.LASF1034: + .string "GET_RFIFOMDATA1_DB5(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF759: + .string "BKP_OCTL_RCCV BITS(0,6)" +.LASF1258: + .string "DMA_CH6PADDR(dmax) REG32((dmax) + 0x88U)" +.LASF762: + .string "BKP_OCTL_ROSEL BIT(9)" +.LASF1687: + .string "I2C_SCLSTRETCH_ENABLE ((uint32_t)0x00000000U)" +.LASF795: + .string "CAN_TMI1(canx) REG32((canx) + 0x190U)" +.LASF465: + .string "UINT_FAST32_MAX (__UINT_FAST32_MAX__)" +.LASF666: + .string "ADC_CHANNEL_5 ((uint8_t)0x05U)" +.LASF532: + .string "ADC_CTL0(adcx) REG32((adcx) + 0x04U)" +.LASF1237: + .string "DMA_CH1CNT(dmax) REG32((dmax) + 0x20U)" +.LASF946: + .string "CAN_ERR_PERR BIT(1)" +.LASF2095: + .string "RCU_PLL1_MUL9 CFG1_PLL1MF(7)" +.LASF927: + .string "CAN_RFIFO1_RFL1 BITS(0,1)" +.LASF40: + .string "__SIG_ATOMIC_TYPE__ int" +.LASF1491: + .string "FMC_STAT REG32((FMC) + 0x0CU)" +.LASF958: + .string "CAN_TMI_FT BIT(1)" +.LASF1864: + .string "RCU_APB2RST_PDRST BIT(5)" +.LASF1056: + .string "CAN_BT_SJW_3TQ ((uint8_t)0x02U)" +.LASF1888: + .string "RCU_APB1RST_BKPIRST BIT(27)" +.LASF2488: + .string "TIMER_DMA_UPD ((uint16_t)TIMER_DMAINTEN_UPDEN)" +.LASF1603: + .string "I2C_CTL1(i2cx) REG32((i2cx) + 0x04U)" +.LASF642: + .string "ADC_SAMPLETIME_13POINT5 SAMPTX_SPT(2)" +.LASF1216: + .string "DAC_TRIANGLE_AMPLITUDE_3 DAC_WAVE_BIT_WIDTH_2" +.LASF1931: + .string "RCU_BDCTL_LXTALBPS BIT(2)" +.LASF813: + .string "CAN_FSCFG(canx) REG32((canx) + 0x20CU)" +.LASF2195: + .string "SPI_CTL1_NSSDRV BIT(2)" +.LASF2875: + .string "ECLIC_INT_ATTR_TRIG_NEG 0x04" +.LASF2021: + .string "RCU_PLL_MUL6_5 CFG0_PLLMF(13)" +.LASF44: + .string "__INT64_TYPE__ long long int" +.LASF904: + .string "CAN_TSTAT_MTE0 BIT(3)" +.LASF639: + .string "SAMPTX_SPT(regval) (BITS(0,2) & ((uint32_t)(regval) << 0))" +.LASF2129: + .string "RTC_CTL REG32(RTC + 0x04U)" +.LASF1262: + .string "DMA_INTF_HTFIF BIT(2)" +.LASF2295: + .string "SPI_FLAG_RBNE SPI_STAT_RBNE" +.LASF2632: + .string "TIMER_TRI_OUT_SRC_O0CPRE CTL1_MMC(4)" +.LASF62: + .string "__UINT_FAST16_TYPE__ unsigned int" +.LASF2525: + .string "TIMER_DMACFG_DMATC_8TRANSFER DMACFG_DMATC(7)" +.LASF2854: + .string "TIMER_MTIME_size 0x8" +.LASF1676: + .string "I2C_SMBUSMODE_ENABLE I2C_CTL0_SMBEN" +.LASF364: + .string "__have_long32 1" +.LASF892: + .string "CAN_STAT_IWS BIT(0)" +.LASF1337: + .string "EXMC_SNWTCFG0 REG32(EXMC + 0x104U)" +.LASF1241: + .string "DMA_CH2CNT(dmax) REG32((dmax) + 0x34U)" +.LASF2819: + .string "_BSD_SIZE_T_DEFINED_ " +.LASF1100: + .string "CAN_FILTER_MASK_16BITS ((uint32_t)0x0000FFFFU)" +.LASF801: + .string "CAN_TMDATA02(canx) REG32((canx) + 0x1A8U)" +.LASF1901: + .string "RCU_APB2EN_PCEN BIT(4)" +.LASF3145: + .string "GPIO_SPI0_REMAP ((uint32_t)0x00000001U)" +.LASF1958: + .string "APB2EN_REG_OFFSET 0x18U" +.LASF1797: + .string "RCU_CTL REG32(RCU + 0x00U)" +.LASF1683: + .string "I2C_ACKPOS_NEXT ((uint32_t)0x00000000U)" +.LASF948: + .string "CAN_ERR_ERRN BITS(4,6)" +.LASF3192: + .string "uint32_t" +.LASF3176: + .string "AFIO_PCF1_FIELDS ((uint32_t)0x80000000U)" +.LASF195: + .string "__FLT16_MAX_EXP__ 16" +.LASF2757: + .string "CTL1_CPH(regval) (BIT(9) & ((uint32_t)(regval) << 9))" +.LASF1696: + .string "I2C_DMALST_OFF ((uint32_t)0x00000000U)" +.LASF401: + .string "__LEAST8 \"hh\"" +.LASF1568: + .string "OB_WP_5 ((uint32_t)0x00000020U)" +.LASF204: + .string "__FLT16_HAS_INFINITY__ 1" +.LASF1263: + .string "DMA_INTF_ERRIF BIT(3)" +.LASF1149: + .string "DAC_CTL_DDMAEN0 BIT(12)" +.LASF1852: + .string "RCU_INT_IRC40KSTBIC BIT(16)" +.LASF1195: + .string "DAC_WAVE_BIT_WIDTH_9 DWBW(8)" +.LASF124: + .string "__INT_FAST8_MAX__ 0x7fffffff" +.LASF327: + .string "RT_USING_LIBC 1" +.LASF7: + .string "__GNUC_PATCHLEVEL__ 0" +.LASF2043: + .string "RCU_CKUSB_CKPLL_DIV2 CFG0_USBPSC(3)" +.LASF2485: + .string "TIMER_FLAG_CH1O TIMER_INTF_CH1OF" +.LASF2430: + .string "TIMER_CHCTL2_CH0NP BIT(3)" +.LASF814: + .string "CAN_FAFIFO(canx) REG32((canx) + 0x214U)" +.LASF2312: + .string "TIMER2 (TIMER_BASE + 0x00000400U)" +.LASF3040: + .string "AFIO_EC_EOE BIT(7)" +.LASF2492: + .string "TIMER_DMA_CH3D ((uint16_t)TIMER_DMAINTEN_CH3DEN)" +.LASF39: + .string "__CHAR32_TYPE__ long unsigned int" +.LASF2290: + .string "SPI_I2S_INT_FLAG_RXORERR ((uint8_t)0x02U)" +.LASF1156: + .string "DAC_CTL_DDMAEN1 BIT(28)" +.LASF1406: + .string "EXTI_EVEN_EVEN16 BIT(16)" +.LASF1394: + .string "EXTI_EVEN_EVEN4 BIT(4)" +.LASF1063: + .string "CAN_BT_BS1_6TQ ((uint8_t)0x05U)" +.LASF2552: + .string "TIMER_COUNTER_DOWN ((uint16_t)TIMER_CTL0_DIR)" +.LASF3093: + .string "GPIO_PORT_SOURCE_GPIOC ((uint8_t)0x02U)" +.LASF294: + .string "__GCC_ATOMIC_LONG_LOCK_FREE 2" +.LASF2617: + .string "TIMER_IC_PSC_DIV8 ((uint16_t)0x000CU)" +.LASF25: + .string "__BIGGEST_ALIGNMENT__ 16" +.LASF1847: + .string "RCU_INT_IRC8MSTBIE BIT(10)" +.LASF2624: + .string "TIMER_SMCFG_TRGSEL_CI0FE0 SMCFG_TRGSEL(5)" +.LASF860: + .string "CAN_F16DATA1(canx) REG32((canx) + 0x2C4U)" +.LASF2982: + .string "GPIO_BOP_BOP9 BIT(9)" +.LASF2385: + .string "TIMER_INTF_TRGIF BIT(6)" +.LASF1170: + .string "DACC_R8DH_DAC1_DH BITS(8,15)" +.LASF2294: + .string "SPI_I2S_INT_FLAG_FERR ((uint8_t)0x06U)" +.LASF2169: + .string "SPI2 (SPI_BASE + 0x00000400U)" +.LASF2493: + .string "TIMER_DMA_CMTD ((uint16_t)TIMER_DMAINTEN_CMTDEN)" +.LASF1320: + .string "DMA_PRIORITY_MEDIUM CHCTL_PRIO(1U)" +.LASF2985: + .string "GPIO_BOP_BOP12 BIT(12)" +.LASF1729: + .string "FWDGT_PSC_DIV256 ((uint8_t)PSC_PSC(6))" +.LASF2805: + .string "_GCC_PTRDIFF_T " +.LASF3001: + .string "GPIO_BOP_CR12 BIT(28)" +.LASF2945: + .string "GPIO_ISTAT_ISTAT4 BIT(4)" +.LASF1461: + .string "EXTI_SWIEV_SWIEV14 BIT(14)" +.LASF2235: + .string "SPI_NSS_SOFT SPI_CTL0_SWNSSEN" +.LASF177: + .string "__LDBL_MIN_EXP__ (-16381)" +.LASF312: + .string "__riscv_arch_test 1" +.LASF2268: + .string "I2SCTL_I2SOPMOD(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF1083: + .string "CAN_MAILBOX1 ((uint8_t)0x01U)" +.LASF829: + .string "CAN_F13DATA0(canx) REG32((canx) + 0x2A8U)" +.LASF2006: + .string "PLLMF_4 RCU_CFG0_PLLMF_4" +.LASF1534: + .string "FMC_BIT_POS1(val) ((uint32_t)(val) & 0x1FU)" +.LASF387: + .string "__int20 +2" +.LASF343: + .string "_MACHINE__DEFAULT_TYPES_H " +.LASF552: + .string "ADC_STAT_WDE BIT(0)" +.LASF1633: + .string "I2C_SADDR0_ADDRESS BITS(1,7)" +.LASF2238: + .string "SPI_ENDIAN_LSB SPI_CTL0_LF" +.LASF2952: + .string "GPIO_ISTAT_ISTAT11 BIT(11)" +.LASF2200: + .string "SPI_CTL1_TBEIE BIT(7)" +.LASF3119: + .string "GPIO_PIN_SOURCE_7 ((uint8_t)0x07U)" +.LASF2885: + .string "ECLIC_GROUP_LEVEL1_PRIO3 1" +.LASF2120: + .string "RCU_I2S2SRC_CKPLL2_MUL2 RCU_CFG1_I2S2SEL" +.LASF2357: + .string "TIMER_SMCFG_SMC BITS(0,2)" +.LASF2913: + .string "GPIO_CTL0_MD2 BITS(8, 9)" +.LASF627: + .string "ADC0_1_EXTTRIG_REGULAR_T3_CH3 CTL1_ETSRC(5)" +.LASF1358: + .string "EXMC_MEMORY_TYPE_PSRAM SNCTL_NRTP(1)" +.LASF2260: + .string "I2S_AUDIOSAMPLE_192K ((uint32_t)192000U)" +.LASF3101: + .string "GPIO_EVENT_PIN_5 ((uint8_t)0x05U)" +.LASF800: + .string "CAN_TMP2(canx) REG32((canx) + 0x1A4U)" +.LASF930: + .string "CAN_RFIFO1_RFD1 BIT(5)" +.LASF880: + .string "CAN_RFIFOMDATA0(canx,bank) REG32((canx) + 0x1B8U + ((bank) * 0x10U))" +.LASF1918: + .string "RCU_APB1EN_USART1EN BIT(17)" +.LASF2686: + .string "USART_CTL0_REN BIT(2)" +.LASF1297: + .string "DMA_FLAG_G DMA_INTF_GIF" +.LASF3131: + .string "GPIO_PIN_3 BIT(3)" +.LASF806: + .string "CAN_RFIFOMDATA10(canx) REG32((canx) + 0x1BCU)" +.LASF1020: + .string "TMDATA0_DB3(regval) (BITS(24,31) & ((uint32_t)(regval) << 24))" +.LASF2122: + .string "RCU_DEEPSLEEP_V_1_2 DSV_DSLPVS(0)" +.LASF3234: + .string "gpio_event_output_enable" +.LASF166: + .string "__DBL_DECIMAL_DIG__ 17" +.LASF2331: + .string "TIMER_CH1CV(timerx) REG32((timerx) + 0x38U)" +.LASF135: + .string "__UINT_FAST64_MAX__ 0xffffffffffffffffULL" +.LASF1646: + .string "I2C_STAT0_BERR BIT(8)" +.LASF1731: + .string "FWDGT_WRITEACCESS_DISABLE ((uint16_t)0x0000U)" +.LASF1416: + .string "EXTI_RTEN_RTEN7 BIT(7)" +.LASF1183: + .string "DAC_WAVE_DISABLE CTL_DWM(0)" +.LASF2533: + .string "TIMER_DMACFG_DMATC_16TRANSFER DMACFG_DMATC(15)" +.LASF2927: + .string "GPIO_CTL1_MD9 BITS(4, 5)" +.LASF2257: + .string "I2S_AUDIOSAMPLE_44K ((uint32_t)44100U)" +.LASF3050: + .string "AFIO_PCF0_CAN_REMAP BITS(13, 14)" +.LASF2285: + .string "SPI_I2S_INT_TBE ((uint8_t)0x00U)" +.LASF2935: + .string "GPIO_CTL1_MD13 BITS(20, 21)" +.LASF3229: + .string "RCU_USART0RST" +.LASF323: + .string "HAVE_CCONFIG_H 1" +.LASF46: + .string "__UINT16_TYPE__ short unsigned int" +.LASF942: + .string "CAN_INTEN_ERRIE BIT(15)" +.LASF431: + .string "INTPTR_MAX (__INTPTR_MAX__)" +.LASF2882: + .string "BWEI_HANDLER eclic_bwei_handler" +.LASF2698: + .string "USART_CTL1_ADDR BITS(0,3)" +.LASF71: + .string "__LONG_MAX__ 0x7fffffffL" +.LASF2278: + .string "I2S_STD_PCMLONG (I2SCTL_I2SSTD(3) | SPI_I2SCTL_PCMSMOD)" +.LASF3084: + .string "GPIO_OSPEED_2MHZ ((uint8_t)0x02U)" +.LASF2449: + .string "TIMER_CCHP_DTCFG BITS(0,7)" +.LASF1695: + .string "I2C_DMALST_ON I2C_CTL1_DMALST" +.LASF784: + .string "CAN_STAT(canx) REG32((canx) + 0x04U)" +.LASF2060: + .string "RCU_PREDV0_DIV1 CFG1_PREDV0(0)" +.LASF296: + .string "__GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1" +.LASF2359: + .string "TIMER_SMCFG_MSM BIT(7)" +.LASF106: + .string "__INT_LEAST8_WIDTH__ 8" +.LASF1912: + .string "RCU_APB1EN_TIMER4EN BIT(3)" +.LASF3255: + .string "gpio_bit_write" +.LASF55: + .string "__UINT_LEAST32_TYPE__ long unsigned int" +.LASF1748: + .string "DBG_CTL_TIMER0_HOLD BIT(10)" +.LASF1095: + .string "CAN_MODE_SLEEP ((uint8_t)0x04U)" +.LASF962: + .string "CAN_TMP_DLENC BITS(0,3)" +.LASF1085: + .string "CAN_NOMAILBOX ((uint8_t)0x03U)" +.LASF1345: + .string "EXMC_SNCTL_NRWTEN BIT(13)" +.LASF3262: + .string "temp_mode" +.LASF1133: + .string "DAC0_L12DH REG32(DAC + 0x0CU)" +.LASF2466: + .string "TIMER_INT_TRG TIMER_DMAINTEN_TRGIE" +.LASF362: + .string "__EXP(x) __ ##x ##__" +.LASF1522: + .string "FMC_OBSTAT_SPC BIT(1)" +.LASF1875: + .string "RCU_APB1RST_TIMER5RST BIT(4)" +.LASF2561: + .string "TIMER_ROS_STATE_ENABLE ((uint16_t)TIMER_CCHP_ROS)" +.LASF283: + .string "__GNUC_STDC_INLINE__ 1" +.LASF427: + .string "__int_fast16_t_defined 1" +.LASF2900: + .string "GPIO_BC(gpiox) REG32((gpiox) + 0x14U)" +.LASF1080: + .string "CAN_BT_BS2_7TQ ((uint8_t)0x06U)" +.LASF284: + .string "__NO_INLINE__ 1" +.LASF1861: + .string "RCU_APB2RST_PARST BIT(2)" +.LASF1671: + .string "I2C_BIT_POS2(val) (((uint32_t)(val) & 0x1F0000U) >> 16)" +.LASF2540: + .string "TIMER_EVENT_SRC_CH3G ((uint16_t)0x0010U)" +.LASF567: + .string "ADC_CTL0_SYNCM BITS(16,19)" +.LASF1674: + .string "I2C_STAT1_REG_OFFSET 0x18U" +.LASF869: + .string "CAN_F25DATA1(canx) REG32((canx) + 0x30CU)" +.LASF2354: + .string "TIMER_CTL1_ISO2 BIT(12)" +.LASF970: + .string "CAN_TMDATA1_DB5 BITS(8,15)" +.LASF2196: + .string "SPI_CTL1_NSSP BIT(3)" +.LASF539: + .string "ADC_IOFF3(adcx) REG32((adcx) + 0x20U)" +.LASF2388: + .string "TIMER_INTF_CH1OF BIT(10)" +.LASF2455: + .string "TIMER_CCHP_OAEN BIT(14)" +.LASF1433: + .string "EXTI_FTEN_FTEN5 BIT(5)" +.LASF3224: + .string "RCU_GPIOERST" +.LASF198: + .string "__FLT16_MAX__ 6.55040000000000000000000000000000000e+4F16" +.LASF363: + .string "__have_longlong64 1" +.LASF852: + .string "CAN_F8DATA1(canx) REG32((canx) + 0x284U)" +.LASF3097: + .string "GPIO_EVENT_PIN_1 ((uint8_t)0x01U)" +.LASF895: + .string "CAN_STAT_WUIF BIT(3)" +.LASF2707: + .string "USART_CTL2_ERRIE BIT(0)" +.LASF1386: + .string "EXTI_INTEN_INTEN15 BIT(15)" +.LASF2172: + .string "SPI_STAT(spix) REG32((spix) + 0x08U)" +.LASF1667: + .string "I2C_REG_VAL(i2cx,offset) (REG32((i2cx) + (((uint32_t)(offset) & 0xFFFFU) >> 6)))" +.LASF2930: + .string "GPIO_CTL1_CTL10 BITS(10, 11)" +.LASF1059: + .string "CAN_BT_BS1_2TQ ((uint8_t)0x01U)" +.LASF1184: + .string "DAC_WAVE_MODE_LFSR CTL_DWM(1)" +.LASF2167: + .string "SPI0 (SPI_BASE + 0x0000F800U)" +.LASF1821: + .string "RCU_CTL_PLL1STB BIT(27)" +.LASF2163: + .string "RTC_FLAG_OVERFLOW RTC_CTL_OVIF" +.LASF2319: + .string "TIMER_SMCFG(timerx) REG32((timerx) + 0x08U)" +.LASF2684: + .string "USART_CTL0_SBKCMD BIT(0)" +.LASF704: + .string "ADC_OVERSAMPLING_RATIO_MUL4 OVSCR_OVSR(1)" +.LASF1316: + .string "DMA_MEMORY_WIDTH_16BIT CHCTL_MWIDTH(1U)" +.LASF1728: + .string "FWDGT_PSC_DIV128 ((uint8_t)PSC_PSC(5))" +.LASF2790: + .string "WWDGT_CFG_PSC_DIV1 CFG_PSC(0)" +.LASF1503: + .string "FMC_WS_WSCNT BITS(0,2)" +.LASF2660: + .string "USART2 (USART_BASE+(0x00000400U))" +.LASF0: + .string "__STDC__ 1" +.LASF1175: + .string "DAC_TRIGGER_T2_TRGO CTL_DTSEL(1)" +.LASF1966: + .string "CFG0_REG_OFFSET 0x04U" +.LASF2979: + .string "GPIO_BOP_BOP6 BIT(6)" +.LASF2442: + .string "TIMER_PSC_PSC BITS(0,15)" +.LASF1108: + .string "CAN_INT_RFNE1 CAN_INTEN_RFNEIE1" +.LASF821: + .string "CAN_F5DATA0(canx) REG32((canx) + 0x268U)" +.LASF2573: + .string "TIMER_CCHP_PROT_2 CCHP_PROT(3)" +.LASF388: + .string "__int20__ +2" +.LASF1310: + .string "CHCTL_PWIDTH(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF3238: + .string "output_pin" +.LASF1624: + .string "I2C_CTL0_SALT BIT(13)" +.LASF1640: + .string "I2C_STAT0_ADDSEND BIT(1)" +.LASF859: + .string "CAN_F15DATA1(canx) REG32((canx) + 0x2BCU)" +.LASF1211: + .string "DATA_ALIGN(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF322: + .string "NO_INIT 1" +.LASF1521: + .string "FMC_OBSTAT_OBERR BIT(0)" +.LASF2025: + .string "RCU_PLL_MUL19 (PLLMF_4 | CFG0_PLLMF(2))" +.LASF1570: + .string "OB_WP_7 ((uint32_t)0x00000080U)" +.LASF618: + .string "ADC_DATAALIGN_RIGHT ((uint32_t)0x00000000U)" +.LASF1974: + .string "RCU_SCSS_HXTAL CFG0_SCSS(1)" +.LASF3011: + .string "GPIO_BC_CR6 BIT(6)" +.LASF156: + .string "__FLT_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F" +.LASF1446: + .string "EXTI_FTEN_FTEN18 BIT(18)" +.LASF1595: + .string "OB_WP_ALL ((uint32_t)0xFFFFFFFFU)" +.LASF1498: + .string "OB_USER REG16((OB) + 0x02U)" +.LASF2254: + .string "I2S_AUDIOSAMPLE_16K ((uint32_t)16000U)" +.LASF2390: + .string "TIMER_INTF_CH3OF BIT(12)" +.LASF2062: + .string "RCU_PREDV0_DIV3 CFG1_PREDV0(2)" +.LASF194: + .string "__FLT16_MIN_10_EXP__ (-4)" +.LASF654: + .string "ADC_INSERTED_CHANNEL ((uint8_t)0x02U)" +.LASF1621: + .string "I2C_CTL0_ACKEN BIT(10)" +.LASF1790: + .string "PMU_LDO_LOWPOWER PMU_CTL_LDOLP" +.LASF1854: + .string "RCU_INT_IRC8MSTBIC BIT(18)" +.LASF1892: + .string "RCU_AHBEN_DMA1EN BIT(1)" +.LASF2135: + .string "RTC_CNTL REG32(RTC + 0x1CU)" +.LASF1736: + .string "FWDGT_FLAG_PUD FWDGT_STAT_PUD" +.LASF883: + .string "CAN_CTL_SLPWMOD BIT(1)" +.LASF2867: + .string "ECLIC_MTH_OFFSET 0xB" +.LASF414: + .string "__int32_t_defined 1" +.LASF11: + .string "__ATOMIC_ACQUIRE 2" +.LASF1880: + .string "RCU_APB1RST_USART1RST BIT(17)" +.LASF540: + .string "ADC_WDHT(adcx) REG32((adcx) + 0x24U)" +.LASF2755: + .string "USART_CLEN_NONE CTL1_CLEN(0)" +.LASF175: + .string "__LDBL_MANT_DIG__ 113" +.LASF2269: + .string "I2S_MODE_SLAVETX I2SCTL_I2SOPMOD(0)" +.LASF2346: + .string "TIMER_CTL1_CCUC BIT(2)" +.LASF2282: + .string "SPI_DMA_RECEIVE ((uint8_t)0x01U)" +.LASF223: + .string "__FLT64_MIN_EXP__ (-1021)" +.LASF357: + .string "__MISC_VISIBLE 0" +.LASF18: + .string "__SIZEOF_LONG_LONG__ 8" +.LASF549: + .string "ADC_IDATA3(adcx) REG32((adcx) + 0x48U)" +.LASF905: + .string "CAN_TSTAT_MST0 BIT(7)" +.LASF830: + .string "CAN_F14DATA0(canx) REG32((canx) + 0x2B0U)" +.LASF1479: + .string "EXTI_PD_PD13 BIT(13)" +.LASF2368: + .string "TIMER_DMAINTEN_CH3IE BIT(4)" +.LASF214: + .string "__FLT32_NORM_MAX__ 3.40282346638528859811704183484516925e+38F32" +.LASF923: + .string "CAN_RFIFO0_RFL0 BITS(0,1)" +.LASF1308: + .string "DMA_MEMORY_INCREASE_DISABLE ((uint8_t)0x00U)" +.LASF3058: + .string "AFIO_EXTI2_SS BITS(8, 11)" +.LASF232: + .string "__FLT64_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F64" +.LASF2010: + .string "RCU_PLL_MUL4 CFG0_PLLMF(2)" +.LASF2074: + .string "RCU_PREDV0_DIV15 CFG1_PREDV0(14)" +.LASF872: + .string "CAN_TMI(canx,bank) REG32((canx) + 0x180U + ((bank) * 0x10U))" +.LASF128: + .string "__INT_FAST32_MAX__ 0x7fffffff" +.LASF1940: + .string "RCU_RSTSCK_SWRSTF BIT(28)" +.LASF2024: + .string "RCU_PLL_MUL18 (PLLMF_4 | CFG0_PLLMF(1))" +.LASF1511: + .string "FMC_CTL_PER BIT(1)" +.LASF854: + .string "CAN_F10DATA1(canx) REG32((canx) + 0x294U)" +.LASF1623: + .string "I2C_CTL0_PECTRANS BIT(12)" +.LASF2432: + .string "TIMER_CHCTL2_CH1P BIT(5)" +.LASF2743: + .string "CTL0_WL(regval) (BIT(12) & ((uint32_t)(regval) << 12))" +.LASF282: + .string "__USER_LABEL_PREFIX__ " +.LASF1422: + .string "EXTI_RTEN_RTEN13 BIT(13)" +.LASF1208: + .string "DAC_LFSR_BITS9_0 DAC_WAVE_BIT_WIDTH_10" +.LASF533: + .string "ADC_CTL1(adcx) REG32((adcx) + 0x08U)" +.LASF2971: + .string "GPIO_OCTL_OCTL14 BIT(14)" +.LASF565: + .string "ADC_CTL0_DISIC BIT(12)" +.LASF3089: + .string "GPIO_EVENT_PORT_GPIOD ((uint8_t)0x03U)" +.LASF1067: + .string "CAN_BT_BS1_10TQ ((uint8_t)0x09U)" +.LASF3155: + .string "GPIO_TIMER1_FULL_REMAP ((uint32_t)0x00180300U)" +.LASF1968: + .string "CFG0_SCS(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF2038: + .string "RCU_PLL_MUL32 (PLLMF_4 | CFG0_PLLMF(15))" +.LASF3062: + .string "AFIO_EXTI6_SS BITS(8, 11)" +.LASF1255: + .string "DMA_CH5MADDR(dmax) REG32((dmax) + 0x78U)" +.LASF274: + .string "__FLT64X_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F64x" +.LASF3203: + .string "RCU_TIMER5RST" +.LASF2650: + .string "TIMER_EXT_TRI_PSC_DIV4 SMCFG_ETPSC(2)" +.LASF1150: + .string "DAC_CTL_DEN1 BIT(16)" +.LASF2713: + .string "USART_CTL2_DENR BIT(6)" +.LASF1500: + .string "OB_WP1 REG16((OB) + 0x0AU)" +.LASF3175: + .string "PCF_LOCATION2_MASK ((uint32_t)0x00100000U)" +.LASF995: + .string "CAN_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF180: + .string "__LDBL_MAX_10_EXP__ 4932" +.LASF1939: + .string "RCU_RSTSCK_PORRSTF BIT(27)" +.LASF85: + .string "__WINT_WIDTH__ 32" +.LASF1240: + .string "DMA_CH2CTL(dmax) REG32((dmax) + 0x30U)" +.LASF2845: + .string "__need_NULL" +.LASF2512: + .string "TIMER_DMACFG_DMATA_CH1CV DMACFG_DMATA(14)" +.LASF1538: + .string "FMC_OBSTAT_REG_OFFSET 0x1CU" +.LASF2439: + .string "TIMER_CHCTL2_CH3EN BIT(12)" +.LASF2964: + .string "GPIO_OCTL_OCTL7 BIT(7)" +.LASF2379: + .string "TIMER_INTF_UPIF BIT(0)" +.LASF1802: + .string "RCU_AHBEN REG32(RCU + 0x14U)" +.LASF2103: + .string "RCU_PLL1_MUL20 CFG1_PLL1MF(15)" +.LASF542: + .string "ADC_RSQ0(adcx) REG32((adcx) + 0x2CU)" +.LASF2574: + .string "TIMER_BREAK_ENABLE ((uint16_t)TIMER_CCHP_BRKEN)" +.LASF1936: + .string "RCU_RSTSCK_IRC40KSTB BIT(1)" +.LASF2609: + .string "TIMER_IC_POLARITY_FALLING ((uint16_t)0x0002U)" +.LASF3102: + .string "GPIO_EVENT_PIN_6 ((uint8_t)0x06U)" +.LASF360: + .string "__XSI_VISIBLE 0" +.LASF2126: + .string "GD32VF103_RTC_H " +.LASF273: + .string "__FLT64X_MAX__ 1.18973149535723176508575932662800702e+4932F64x" +.LASF2536: + .string "TIMER_EVENT_SRC_UPG ((uint16_t)0x0001U)" +.LASF2217: + .string "SPI_I2SCTL_I2SSTD BITS(4,5)" +.LASF526: + .string "USE_STDPERIPH_DRIVER " +.LASF1924: + .string "RCU_APB1EN_CAN0EN BIT(25)" +.LASF2023: + .string "RCU_PLL_MUL17 (PLLMF_4 | CFG0_PLLMF(0))" +.LASF925: + .string "CAN_RFIFO0_RFO0 BIT(4)" +.LASF2064: + .string "RCU_PREDV0_DIV5 CFG1_PREDV0(4)" +.LASF2663: + .string "USART0 (USART_BASE+(0x0000F400U))" +.LASF1826: + .string "RCU_CFG0_AHBPSC BITS(4,7)" +.LASF2005: + .string "RCU_PLLSRC_HXTAL RCU_CFG0_PLLSEL" +.LASF665: + .string "ADC_CHANNEL_4 ((uint8_t)0x04U)" +.LASF2087: + .string "RCU_PREDV1_DIV11 CFG1_PREDV1(10)" +.LASF1448: + .string "EXTI_SWIEV_SWIEV1 BIT(1)" +.LASF2892: + .string "GPIOD (GPIO_BASE + 0x00000C00U)" +.LASF2611: + .string "TIMER_IC_SELECTION_DIRECTTI ((uint16_t)0x0001U)" +.LASF1872: + .string "RCU_APB1RST_TIMER2RST BIT(1)" +.LASF3047: + .string "AFIO_PCF0_TIMER1_REMAP BITS(8, 9)" +.LASF3021: + .string "GPIO_LOCK_LK0 BIT(0)" +.LASF2013: + .string "RCU_PLL_MUL7 CFG0_PLLMF(5)" +.LASF606: + .string "ADC_INSERTED_CHANNEL_AUTO ADC_CTL0_ICA" +.LASF834: + .string "CAN_F18DATA0(canx) REG32((canx) + 0x2D0U)" +.LASF1165: + .string "DACC_R12DH_DAC0_DH BITS(0,11)" +.LASF1328: + .string "ECLIC_PRIGROUP_LEVEL1_PRIO3 1" +.LASF2491: + .string "TIMER_DMA_CH2D ((uint16_t)TIMER_DMAINTEN_CH2DEN)" +.LASF1993: + .string "RCU_APB2_CKAHB_DIV1 CFG0_APB2PSC(0)" +.LASF1132: + .string "DAC0_R12DH REG32(DAC + 0x08U)" +.LASF2399: + .string "TIMER_CHCTL0_CH0MS BITS(0,1)" +.LASF1630: + .string "I2C_CTL1_DMAON BIT(11)" +.LASF108: + .string "__INT16_C(c) c" +.LASF318: + .string "__riscv_zifencei 2000000" +.LASF275: + .string "__FLT64X_MIN__ 3.36210314311209350626267781732175260e-4932F64x" +.LASF529: + .string "ADC0 ADC_BASE" +.LASF1515: + .string "FMC_CTL_START BIT(6)" +.LASF1076: + .string "CAN_BT_BS2_3TQ ((uint8_t)0x02U)" +.LASF1362: + .string "EXMC_NWAIT_POLARITY_HIGH ((uint32_t)0x00000200U)" +.LASF187: + .string "__LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L" +.LASF1747: + .string "DBG_CTL_WWDGT_HOLD BIT(9)" +.LASF165: + .string "__DBL_MAX_10_EXP__ 308" +.LASF37: + .string "__UINTMAX_TYPE__ long long unsigned int" +.LASF2338: + .string "TIMER_CTL0_UPDIS BIT(1)" +.LASF573: + .string "ADC_CTL1_RSTCLB BIT(3)" +.LASF2077: + .string "RCU_PREDV1_DIV1 CFG1_PREDV1(0)" +.LASF2951: + .string "GPIO_ISTAT_ISTAT10 BIT(10)" +.LASF1613: + .string "I2C_CTL0_SMBEN BIT(1)" +.LASF416: + .string "_UINT64_T_DECLARED " +.LASF504: + .string "AHB1_BUS_BASE ((uint32_t)0x40018000U)" +.LASF2740: + .string "CTL0_WM(regval) (BIT(11) & ((uint32_t)(regval) << 11))" +.LASF2111: + .string "RCU_PLL2_MUL14 CFG1_PLL2MF(12)" +.LASF508: + .string "WWDGT_BASE (APB1_BUS_BASE + 0x00002C00U)" +.LASF1469: + .string "EXTI_PD_PD3 BIT(3)" +.LASF1455: + .string "EXTI_SWIEV_SWIEV8 BIT(8)" +.LASF3087: + .string "GPIO_EVENT_PORT_GPIOB ((uint8_t)0x01U)" +.LASF1897: + .string "RCU_AHBEN_USBFSEN BIT(12)" +.LASF966: + .string "CAN_TMDATA0_DB1 BITS(8,15)" +.LASF2904: + .string "AFIO_EXTISS0 REG32(AFIO + 0x08U)" +.LASF3177: + .string "GPIO_OUTPUT_PORT_OFFSET ((uint32_t)4U)" +.LASF2957: + .string "GPIO_OCTL_OCTL0 BIT(0)" +.LASF2652: + .string "TIMER_ETP_FALLING TIMER_SMCFG_ETP" +.LASF1745: + .string "DBG_CTL_STB_HOLD BIT(2)" +.LASF2543: + .string "TIMER_EVENT_SRC_BRKG ((uint16_t)0x0080U)" +.LASF1697: + .string "I2C_PEC_ENABLE I2C_CTL0_PECEN" +.LASF1685: + .string "I2C_DUADEN_DISABLE ((uint32_t)0x00000000U)" +.LASF2591: + .string "TIMER_OCN_IDLE_STATE_LOW ((uint16_t)0x0000U)" +.LASF56: + .string "__UINT_LEAST64_TYPE__ long long unsigned int" +.LASF1585: + .string "OB_WP_22 ((uint32_t)0x00400000U)" +.LASF1123: + .string "CRC_DATA_DATA BITS(0, 31)" +.LASF1679: + .string "I2C_RECEIVER ((uint32_t)0x00000001U)" +.LASF241: + .string "__FLT128_MAX_10_EXP__ 4932" +.LASF1368: + .string "EXTI_FTEN REG32(EXTI + 0x0CU)" +.LASF1746: + .string "DBG_CTL_FWDGT_HOLD BIT(8)" +.LASF2847: + .string "_GCC_MAX_ALIGN_T " +.LASF1542: + .string "WS_WSCNT_0 WS_WSCNT(0)" +.LASF1283: + .string "DMA_FLAG_ADD(flag,shift) ((flag) << ((shift) * 4U))" +.LASF3033: + .string "GPIO_LOCK_LK12 BIT(12)" +.LASF683: + .string "ADC_INT_FLAG_EOC ADC_STAT_EOC" +.LASF51: + .string "__INT_LEAST32_TYPE__ long int" +.LASF866: + .string "CAN_F22DATA1(canx) REG32((canx) + 0x2F4U)" +.LASF136: + .string "__INTPTR_MAX__ 0x7fffffff" +.LASF3028: + .string "GPIO_LOCK_LK7 BIT(7)" +.LASF1626: + .string "I2C_CTL1_I2CCLK BITS(0,5)" +.LASF374: + .string "_SYS__INTSUP_H " +.LASF913: + .string "CAN_TSTAT_MAL2 BIT(18)" +.LASF2289: + .string "SPI_I2S_INT_FLAG_RBNE ((uint8_t)0x01U)" +.LASF2520: + .string "TIMER_DMACFG_DMATC_3TRANSFER DMACFG_DMATC(2)" +.LASF2066: + .string "RCU_PREDV0_DIV7 CFG1_PREDV0(6)" +.LASF2231: + .string "SPI_TRANSMODE_BDRECEIVE SPI_CTL0_BDEN" +.LASF2718: + .string "USART_GP_PSC BITS(0,7)" +.LASF799: + .string "CAN_TMI2(canx) REG32((canx) + 0x1A0U)" +.LASF1855: + .string "RCU_INT_HXTALSTBIC BIT(19)" +.LASF2188: + .string "SPI_CTL0_FF16 BIT(11)" +.LASF3193: + .string "DISABLE" +.LASF1800: + .string "RCU_APB2RST REG32(RCU + 0x0CU)" +.LASF1589: + .string "OB_WP_26 ((uint32_t)0x04000000U)" +.LASF1829: + .string "RCU_CFG0_ADCPSC BITS(14,15)" +.LASF1197: + .string "DAC_WAVE_BIT_WIDTH_11 DWBW(10)" +.LASF390: + .string "long +4" +.LASF1266: + .string "DMA_INTC_HTFIFC BIT(2)" +.LASF1072: + .string "CAN_BT_BS1_15TQ ((uint8_t)0x0EU)" +.LASF2970: + .string "GPIO_OCTL_OCTL13 BIT(13)" +.LASF2726: + .string "USART_STAT_REG_OFFSET (0x00000000U)" +.LASF1867: + .string "RCU_APB2RST_ADC1RST BIT(10)" +.LASF1971: + .string "RCU_CKSYSSRC_PLL CFG0_SCS(2)" +.LASF1616: + .string "I2C_CTL0_PECEN BIT(5)" +.LASF159: + .string "__FLT_HAS_QUIET_NAN__ 1" +.LASF631: + .string "ADC0_1_EXTTRIG_INSERTED_T0_TRGO CTL1_ETSIC(0)" +.LASF1130: + .string "DAC_CTL REG32(DAC + 0x00U)" +.LASF1942: + .string "RCU_RSTSCK_WWDGTRSTF BIT(30)" +.LASF2661: + .string "UART3 (USART_BASE+(0x00000800U))" +.LASF1759: + .string "DBG_LOW_POWER_SLEEP DBG_CTL_SLP_HOLD" +.LASF590: + .string "ADC_ISQ_IL BITS(20,21)" +.LASF446: + .string "INT32_MAX (__INT32_MAX__)" +.LASF404: + .string "__LEAST64 \"ll\"" +.LASF681: + .string "ADC_INT_EOIC ADC_STAT_EOIC" +.LASF2564: + .string "TIMER_IOS_STATE_DISABLE ((uint16_t)0x0000U)" +.LASF1: + .string "__STDC_VERSION__ 201710L" +.LASF2483: + .string "TIMER_FLAG_BRK TIMER_INTF_BRKIF" +.LASF912: + .string "CAN_TSTAT_MTFNERR2 BIT(17)" +.LASF2079: + .string "RCU_PREDV1_DIV3 CFG1_PREDV1(2)" +.LASF2570: + .string "TIMER_CCHP_PROT_OFF CCHP_PROT(0)" +.LASF658: + .string "ADC_INSERTED_CHANNEL_1 ((uint8_t)0x01U)" +.LASF889: + .string "CAN_CTL_TTC BIT(7)" +.LASF1296: + .string "DMA_INT_FLAG_ERR DMA_INTF_ERRIF" +.LASF1952: + .string "RCU_DSV_DSLPVS BITS(0,1)" +.LASF1777: + .string "CTL_LVDT(regval) (BITS(5,7)&((uint32_t)(regval) << 5))" +.LASF224: + .string "__FLT64_MIN_10_EXP__ (-307)" +.LASF3035: + .string "GPIO_LOCK_LK14 BIT(14)" +.LASF622: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH0 CTL1_ETSRC(0)" +.LASF2369: + .string "TIMER_DMAINTEN_CMTIE BIT(5)" +.LASF607: + .string "CTL0_SYNCM(regval) (BITS(16,19) & ((uint32_t)(regval) << 16))" +.LASF3044: + .string "AFIO_PCF0_USART1_REMAP BIT(3)" +.LASF2230: + .string "SPI_TRANSMODE_RECEIVEONLY SPI_CTL0_RO" +.LASF558: + .string "ADC_CTL0_EOCIE BIT(5)" +.LASF3010: + .string "GPIO_BC_CR5 BIT(5)" +.LASF582: + .string "ADC_CTL1_TSVREN BIT(23)" +.LASF2569: + .string "CCHP_PROT(regval) ((uint16_t)(BITS(8, 9) & ((uint32_t)(regval) << 8U)))" +.LASF2727: + .string "USART_CTL0_REG_OFFSET (0x0000000CU)" +.LASF394: + .string "__INT16 \"h\"" +.LASF2474: + .string "TIMER_INT_FLAG_TRG TIMER_INT_TRG" +.LASF2045: + .string "RCU_CKOUT0SRC_NONE CFG0_CKOUT0SEL(0)" +.LASF3198: + .string "RCU_USBFSRST" +.LASF957: + .string "CAN_TMI_TEN BIT(0)" +.LASF3182: + .string "__uint8_t" +.LASF167: + .string "__DBL_MAX__ ((double)1.79769313486231570814527423731704357e+308L)" +.LASF2184: + .string "SPI_CTL0_LF BIT(7)" +.LASF601: + .string "ADC_FLAG_EOIC ADC_STAT_EOIC" +.LASF1129: + .string "DAC1 (1U)" +.LASF680: + .string "ADC_INT_EOC ADC_STAT_EOC" +.LASF2849: + .string "TIMER_MSIP 0xFFC" +.LASF2843: + .string "NULL" +.LASF782: + .string "CAN1 (CAN0 + 0x00000400U)" +.LASF1347: + .string "EXMC_SNTCFG_ASET BITS(0,3)" +.LASF117: + .string "__UINT8_C(c) c" +.LASF2292: + .string "SPI_INT_FLAG_CRCERR ((uint8_t)0x04U)" +.LASF331: + .string "__I volatile const" +.LASF1611: + .string "I2C_FMPCFG(i2cx) REG32((i2cx) + 0x90U)" +.LASF1003: + .string "TSTAT_REG_OFFSET ((uint8_t)0x08U)" +.LASF2567: + .string "TIMER_OUTAUTO_ENABLE ((uint16_t)TIMER_CCHP_OAEN)" +.LASF936: + .string "CAN_INTEN_RFFIE1 BIT(5)" +.LASF2877: + .string "ECLIC_ADDR_BASE 0xd2000000" +.LASF3003: + .string "GPIO_BOP_CR14 BIT(30)" +.LASF649: + .string "WDHT_WDHT(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF2826: + .string "__wchar_t__ " +.LASF228: + .string "__FLT64_MAX__ 1.79769313486231570814527423731704357e+308F64" +.LASF1973: + .string "RCU_SCSS_IRC8M CFG0_SCSS(0)" +.LASF176: + .string "__LDBL_DIG__ 33" +.LASF1093: + .string "CAN_MODE_INITIALIZE ((uint8_t)0x01U)" +.LASF3249: + .string "gpio_output_port_get" +.LASF2706: + .string "USART_CTL1_LMEN BIT(14)" +.LASF34: + .string "__WCHAR_TYPE__ int" +.LASF978: + .string "CAN_RFIFOMP_FI BITS(8,15)" +.LASF1602: + .string "I2C_CTL0(i2cx) REG32((i2cx) + 0x00U)" +.LASF846: + .string "CAN_F2DATA1(canx) REG32((canx) + 0x254U)" +.LASF2926: + .string "GPIO_CTL1_CTL8 BITS(2, 3)" +.LASF1364: + .string "EXTI EXTI_BASE" +.LASF1758: + .string "DBG_CTL_CAN1_HOLD BIT(21)" +.LASF1722: + .string "PSC_PSC(regval) (BITS(0,2) & ((uint32_t)(regval) << 0))" +.LASF3069: + .string "AFIO_EXTI13_SS BITS(4, 7)" +.LASF1398: + .string "EXTI_EVEN_EVEN8 BIT(8)" +.LASF324: + .string "GD32VF103V_EVAL 1" +.LASF1338: + .string "EXMC_SNCTL_NRBKEN BIT(0)" +.LASF1744: + .string "DBG_CTL_DSLP_HOLD BIT(1)" +.LASF643: + .string "ADC_SAMPLETIME_28POINT5 SAMPTX_SPT(3)" +.LASF793: + .string "CAN_TMDATA00(canx) REG32((canx) + 0x188U)" +.LASF1843: + .string "RCU_INT_PLL2STBIF BIT(6)" +.LASF84: + .string "__WCHAR_WIDTH__ 32" +.LASF1972: + .string "CFG0_SCSS(regval) (BITS(2,3) & ((uint32_t)(regval) << 2))" +.LASF688: + .string "ADC_RESOLUTION_8B OVSCR_DRES(2)" +.LASF3172: + .string "PCF_POSITION_MASK ((uint32_t)0x000F0000U)" +.LASF514: + .string "BKP_BASE (APB1_BUS_BASE + 0x00006C00U)" +.LASF2040: + .string "RCU_CKUSB_CKPLL_DIV1_5 CFG0_USBPSC(0)" +.LASF689: + .string "ADC_RESOLUTION_6B OVSCR_DRES(3)" +.LASF2059: + .string "CFG1_PREDV0(regval) (BITS(0,3) & ((uint32_t)(regval) << 0))" +.LASF773: + .string "OCTL_RCCV(regval) (BITS(0,6) & ((uint32_t)(regval) << 0))" +.LASF1664: + .string "I2C_RT_RISETIME BITS(0,5)" +.LASF2629: + .string "TIMER_TRI_OUT_SRC_ENABLE CTL1_MMC(1)" +.LASF2081: + .string "RCU_PREDV1_DIV5 CFG1_PREDV1(4)" +.LASF968: + .string "CAN_TMDATA0_DB3 BITS(24,31)" +.LASF2160: + .string "RTC_INT_FLAG_OVERFLOW RTC_CTL_OVIF" +.LASF1784: + .string "PMU_LVDT_6 CTL_LVDT(6)" +.LASF1634: + .string "I2C_SADDR0_ADDRESS_H BITS(8,9)" +.LASF1103: + .string "CAN_TIMEOUT ((uint32_t)0x0000FFFFU)" +.LASF1106: + .string "CAN_INT_RFF0 CAN_INTEN_RFFIE0" +.LASF2423: + .string "TIMER_CHCTL1_CH2CAPPSC BITS(2,3)" +.LASF1574: + .string "OB_WP_11 ((uint32_t)0x00000800U)" +.LASF81: + .string "__INT_WIDTH__ 32" +.LASF766: + .string "BKP_TPCS_TIR BIT(1)" +.LASF1484: + .string "EXTI_PD_PD18 BIT(18)" +.LASF202: + .string "__FLT16_DENORM_MIN__ 5.96046447753906250000000000000000000e-8F16" +.LASF613: + .string "ADC_DAUL_INSERTED_PARALLEL CTL0_SYNCM(5)" +.LASF438: + .string "UINT_LEAST8_MAX (__UINT_LEAST8_MAX__)" +.LASF2949: + .string "GPIO_ISTAT_ISTAT8 BIT(8)" +.LASF781: + .string "CAN0 CAN_BASE" +.LASF400: + .string "__FAST64 \"ll\"" +.LASF1134: + .string "DAC0_R8DH REG32(DAC + 0x10U)" +.LASF1587: + .string "OB_WP_24 ((uint32_t)0x01000000U)" +.LASF173: + .string "__DBL_HAS_INFINITY__ 1" +.LASF1054: + .string "CAN_BT_SJW_1TQ ((uint8_t)0x00U)" +.LASF142: + .string "__FLT_EVAL_METHOD_TS_18661_3__ 0" +.LASF1641: + .string "I2C_STAT0_BTC BIT(2)" +.LASF33: + .string "__PTRDIFF_TYPE__ int" +.LASF2600: + .string "TIMER_OC_SHADOW_ENABLE ((uint16_t)0x0008U)" +.LASF988: + .string "CAN_FCTL_FLD BIT(0)" +.LASF1427: + .string "EXTI_RTEN_RTEN18 BIT(18)" +.LASF2728: + .string "USART_CTL1_REG_OFFSET (0x00000010U)" +.LASF1439: + .string "EXTI_FTEN_FTEN11 BIT(11)" +.LASF113: + .string "__INT_LEAST64_MAX__ 0x7fffffffffffffffLL" +.LASF93: + .string "__SIG_ATOMIC_MAX__ 0x7fffffff" +.LASF1617: + .string "I2C_CTL0_GCEN BIT(6)" +.LASF1040: + .string "ERR_ERRN(regval) (BITS(4,6) & ((uint32_t)(regval) << 4))" +.LASF1715: + .string "FWDGT_RLD REG32((FWDGT) + 0x00000008U)" +.LASF2487: + .string "TIMER_FLAG_CH3O TIMER_INTF_CH3OF" +.LASF2093: + .string "CFG1_PLL1MF(regval) (BITS(8,11) & ((uint32_t)(regval) << 8))" +.LASF1004: + .string "RFIFO0_REG_OFFSET ((uint8_t)0x0CU)" +.LASF624: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH2 CTL1_ETSRC(2)" +.LASF2088: + .string "RCU_PREDV1_DIV12 CFG1_PREDV1(11)" +.LASF1107: + .string "CAN_INT_RFO0 CAN_INTEN_RFOIE0" +.LASF959: + .string "CAN_TMI_FF BIT(2)" +.LASF3167: + .string "GPIO_TIMER1ITI1_REMAP ((uint32_t)0x00202000U)" +.LASF2895: + .string "GPIO_CTL0(gpiox) REG32((gpiox) + 0x00U)" +.LASF2507: + .string "TIMER_DMACFG_DMATA_CNT DMACFG_DMATA(9)" +.LASF2480: + .string "TIMER_FLAG_CH3 TIMER_INTF_CH3IF" +.LASF1391: + .string "EXTI_EVEN_EVEN1 BIT(1)" +.LASF977: + .string "CAN_RFIFOMP_DLENC BITS(0,3)" +.LASF3197: + .string "FlagStatus" +.LASF2818: + .string "_SIZE_T_DEFINED " +.LASF2499: + .string "TIMER_DMACFG_DMATA_CTL1 DMACFG_DMATA(1)" +.LASF437: + .string "INT_LEAST8_MAX (__INT_LEAST8_MAX__)" +.LASF1393: + .string "EXTI_EVEN_EVEN3 BIT(3)" +.LASF1573: + .string "OB_WP_10 ((uint32_t)0x00000400U)" +.LASF1997: + .string "RCU_APB2_CKAHB_DIV16 CFG0_APB2PSC(7)" +.LASF1740: + .string "DBG_ID REG32(DBG + 0x00U)" +.LASF17: + .string "__SIZEOF_LONG__ 4" +.LASF1726: + .string "FWDGT_PSC_DIV32 ((uint8_t)PSC_PSC(3))" +.LASF2646: + .string "TIMER_MASTER_SLAVE_MODE_DISABLE ((uint32_t)0x00000000U)" +.LASF1592: + .string "OB_WP_29 ((uint32_t)0x20000000U)" +.LASF395: + .string "__INT32 \"l\"" +.LASF761: + .string "BKP_OCTL_ASOEN BIT(8)" +.LASF1293: + .string "DMA_INT_FLAG_G DMA_INTF_GIF" +.LASF1330: + .string "ECLIC_PRIGROUP_LEVEL3_PRIO1 3" +.LASF1562: + .string "OB_WP3_WP3 ((uint32_t)0xFF000000U)" +.LASF2099: + .string "RCU_PLL1_MUL13 CFG1_PLL1MF(11)" +.LASF347: + .string "__NEWLIB__ 4" +.LASF2942: + .string "GPIO_ISTAT_ISTAT1 BIT(1)" +.LASF2443: + .string "TIMER_CAR_CARL BITS(0,15)" +.LASF2839: + .string "_GCC_WCHAR_T " +.LASF1267: + .string "DMA_INTC_ERRIFC BIT(3)" +.LASF1409: + .string "EXTI_RTEN_RTEN0 BIT(0)" +.LASF1157: + .string "DAC_SWT_SWTR0 BIT(0)" +.LASF1904: + .string "RCU_APB2EN_ADC0EN BIT(9)" +.LASF1801: + .string "RCU_APB1RST REG32(RCU + 0x10U)" +.LASF3039: + .string "AFIO_EC_PORT BITS(4, 6)" +.LASF351: + .string "__GNUC_PREREQ__(ma,mi) __GNUC_PREREQ(ma, mi)" +.LASF259: + .string "__FLT32X_NORM_MAX__ 1.79769313486231570814527423731704357e+308F32x" +.LASF2438: + .string "TIMER_CHCTL2_CH2NP BIT(11)" +.LASF2490: + .string "TIMER_DMA_CH1D ((uint16_t)TIMER_DMAINTEN_CH1DEN)" +.LASF2681: + .string "USART_DATA_DATA BITS(0,8)" +.LASF365: + .string "___int8_t_defined 1" +.LASF3083: + .string "GPIO_OSPEED_10MHZ ((uint8_t)0x01U)" +.LASF2703: + .string "USART_CTL1_CPL BIT(10)" +.LASF3220: + .string "RCU_GPIOARST" +.LASF460: + .string "INT_FAST16_MIN (-__INT_FAST16_MAX__ - 1)" +.LASF932: + .string "CAN_INTEN_RFNEIE0 BIT(1)" +.LASF2365: + .string "TIMER_DMAINTEN_CH0IE BIT(1)" +.LASF954: + .string "CAN_BT_SJW BITS(24,25)" +.LASF2475: + .string "TIMER_INT_FLAG_BRK TIMER_INT_BRK" +.LASF1738: + .string "GD32VF103_DBG_H " +.LASF440: + .string "INT16_MAX (__INT16_MAX__)" +.LASF112: + .string "__INT_LEAST32_WIDTH__ 32" +.LASF2175: + .string "SPI_RCRC(spix) REG32((spix) + 0x14U)" +.LASF1437: + .string "EXTI_FTEN_FTEN9 BIT(9)" +.LASF1193: + .string "DAC_WAVE_BIT_WIDTH_7 DWBW(6)" +.LASF267: + .string "__FLT64X_DIG__ 33" +.LASF2753: + .string "USART_LBLEN_11B CTL1_LBLEN(1)" +.LASF1374: + .string "EXTI_INTEN_INTEN3 BIT(3)" +.LASF3128: + .string "GPIO_PIN_0 BIT(0)" +.LASF1097: + .string "CAN_FILTERBITS_32BIT ((uint8_t)0x01U)" +.LASF828: + .string "CAN_F12DATA0(canx) REG32((canx) + 0x2A0U)" +.LASF1720: + .string "FWDGT_STAT_PUD BIT(0)" +.LASF637: + .string "ADC0_1_EXTTRIG_INSERTED_EXTI_15 CTL1_ETSIC(6)" +.LASF2673: + .string "USART_STAT_NERR BIT(2)" +.LASF947: + .string "CAN_ERR_BOERR BIT(2)" +.LASF845: + .string "CAN_F1DATA1(canx) REG32((canx) + 0x24CU)" +.LASF2416: + .string "TIMER_CHCTL1_CH2COMCTL BITS(4,6)" +.LASF261: + .string "__FLT32X_EPSILON__ 2.22044604925031308084726333618164062e-16F32x" +.LASF1944: + .string "RCU_AHBRST_USBFSRST BIT(12)" +.LASF3230: + .string "long double" +.LASF2804: + .string "___int_ptrdiff_t_h " +.LASF1499: + .string "OB_WP0 REG16((OB) + 0x08U)" +.LASF1582: + .string "OB_WP_19 ((uint32_t)0x00080000U)" +.LASF2799: + .string "_T_PTRDIFF_ " +.LASF1769: + .string "PMU_CTL_STBRST BIT(3)" +.LASF1649: + .string "I2C_STAT0_OUERR BIT(11)" +.LASF2297: + .string "SPI_FLAG_CRCERR SPI_STAT_CRCERR" +.LASF2342: + .string "TIMER_CTL0_CAM BITS(5,6)" +.LASF1504: + .string "FMC_KEY_KEY BITS(0,31)" +.LASF1584: + .string "OB_WP_21 ((uint32_t)0x00200000U)" +.LASF2107: + .string "RCU_PLL2_MUL10 CFG1_PLL2MF(8)" +.LASF340: + .string "LXTAL_VALUE ((uint32_t)32768)" +.LASF481: + .string "INT8_C(x) __INT8_C(x)" +.LASF2794: + .string "N200_FUNC_H " +.LASF2983: + .string "GPIO_BOP_BOP10 BIT(10)" +.LASF788: + .string "CAN_INTEN(canx) REG32((canx) + 0x14U)" +.LASF2916: + .string "GPIO_CTL0_CTL3 BITS(14, 15)" +.LASF2601: + .string "TIMER_OC_SHADOW_DISABLE ((uint16_t)0x0000U)" +.LASF1739: + .string "DBG DBG_BASE" +.LASF2340: + .string "TIMER_CTL0_SPM BIT(3)" +.LASF2821: + .string "___int_size_t_h " +.LASF1868: + .string "RCU_APB2RST_TIMER0RST BIT(11)" +.LASF1459: + .string "EXTI_SWIEV_SWIEV12 BIT(12)" +.LASF2555: + .string "TIMER_CKDIV_DIV2 CTL0_CKDIV(1)" +.LASF2431: + .string "TIMER_CHCTL2_CH1EN BIT(4)" +.LASF2161: + .string "RTC_FLAG_SECOND RTC_CTL_SCIF" +.LASF1564: + .string "OB_WP_1 ((uint32_t)0x00000002U)" +.LASF231: + .string "__FLT64_EPSILON__ 2.22044604925031308084726333618164062e-16F64" +.LASF1125: + .string "CRC_CTL_RST BIT(0)" +.LASF2486: + .string "TIMER_FLAG_CH2O TIMER_INTF_CH2OF" +.LASF3104: + .string "GPIO_EVENT_PIN_8 ((uint8_t)0x08U)" +.LASF1196: + .string "DAC_WAVE_BIT_WIDTH_10 DWBW(9)" +.LASF809: + .string "CAN_RFIFOMDATA01(canx) REG32((canx) + 0x1C8U)" +.LASF1580: + .string "OB_WP_17 ((uint32_t)0x00020000U)" +.LASF277: + .string "__FLT64X_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F64x" +.LASF1768: + .string "PMU_CTL_WURST BIT(2)" +.LASF874: + .string "CAN_TMDATA0(canx,bank) REG32((canx) + 0x188U + ((bank) * 0x10U))" +.LASF158: + .string "__FLT_HAS_INFINITY__ 1" +.LASF1430: + .string "EXTI_FTEN_FTEN2 BIT(2)" +.LASF1147: + .string "DAC_CTL_DWM0 BITS(6,7)" +.LASF2283: + .string "SPI_CRC_TX ((uint8_t)0x00U)" +.LASF73: + .string "__WCHAR_MAX__ 0x7fffffff" +.LASF2085: + .string "RCU_PREDV1_DIV9 CFG1_PREDV1(8)" +.LASF2586: + .string "TIMER_OCN_POLARITY_HIGH ((uint16_t)0x0000U)" +.LASF2083: + .string "RCU_PREDV1_DIV7 CFG1_PREDV1(6)" +.LASF1219: + .string "DAC_TRIANGLE_AMPLITUDE_31 DAC_WAVE_BIT_WIDTH_5" +.LASF1812: + .string "RCU_CTL_IRC8MADJ BITS(3,7)" +.LASF525: + .string "USBFS_BASE (AHB1_BUS_BASE + 0x0FFE8000U)" +.LASF2627: + .string "CTL1_MMC(regval) (BITS(4, 6) & ((uint32_t)(regval) << 4U))" +.LASF1932: + .string "RCU_BDCTL_RTCSRC BITS(8,9)" +.LASF661: + .string "ADC_CHANNEL_0 ((uint8_t)0x00U)" +.LASF209: + .string "__FLT32_MIN_10_EXP__ (-37)" +.LASF122: + .string "__UINT_LEAST64_MAX__ 0xffffffffffffffffULL" +.LASF2645: + .string "TIMER_MASTER_SLAVE_MODE_ENABLE TIMER_SMCFG_MSM" +.LASF3199: + .string "RCU_TIMER1RST" +.LASF1670: + .string "I2C_REG_VAL2(i2cx,offset) (REG32((i2cx) + ((uint32_t)(offset) >> 22)))" +.LASF269: + .string "__FLT64X_MIN_10_EXP__ (-4931)" +.LASF602: + .string "ADC_FLAG_STIC ADC_STAT_STIC" +.LASF306: + .string "__riscv_mul 1" +.LASF2464: + .string "TIMER_INT_CH3 TIMER_DMAINTEN_CH3IE" +.LASF2778: + .string "GD32VF103_WWDGT_H " +.LASF64: + .string "__UINT_FAST64_TYPE__ long long unsigned int" +.LASF2724: + .string "USART_REG_VAL2(usartx,offset) (REG32((usartx) + ((uint32_t)(offset) >> 22)))" +.LASF922: + .string "CAN_TSTAT_TMLS2 BIT(31)" +.LASF2378: + .string "TIMER_DMAINTEN_TRGDEN BIT(14)" +.LASF146: + .string "__FLT_DIG__ 6" +.LASF933: + .string "CAN_INTEN_RFFIE0 BIT(2)" +.LASF455: + .string "INT_LEAST64_MAX (__INT_LEAST64_MAX__)" +.LASF937: + .string "CAN_INTEN_RFOIE1 BIT(6)" +.LASF276: + .string "__FLT64X_EPSILON__ 1.92592994438723585305597794258492732e-34F64x" +.LASF3132: + .string "GPIO_PIN_4 BIT(4)" +.LASF1597: + .string "FMC_SIZE (*(uint16_t *)0x1FFFF7E0U)" +.LASF2303: + .string "I2S_FLAG_TBE SPI_STAT_TBE" +.LASF3045: + .string "AFIO_PCF0_USART2_REMAP BITS(4, 5)" +.LASF3160: + .string "GPIO_CAN0_FULL_REMAP ((uint32_t)0x001D6000U)" +.LASF2241: + .string "SPI_CK_PL_LOW_PH_2EDGE SPI_CTL0_CKPH" +.LASF2002: + .string "RCU_CKADC_CKAPB2_DIV12 ((uint32_t)0x00000005U)" +.LASF911: + .string "CAN_TSTAT_MTF2 BIT(16)" +.LASF1566: + .string "OB_WP_3 ((uint32_t)0x00000008U)" +.LASF1309: + .string "DMA_MEMORY_INCREASE_ENABLE ((uint8_t)0x01U)" +.LASF918: + .string "CAN_TSTAT_TME1 BIT(27)" +.LASF820: + .string "CAN_F4DATA0(canx) REG32((canx) + 0x260U)" +.LASF1834: + .string "RCU_CFG0_CKOUT0SEL BITS(24,27)" +.LASF1788: + .string "PMU_FLAG_LVD PMU_CS_LVDF" +.LASF490: + .string "UINTMAX_C(x) __UINTMAX_C(x)" +.LASF1359: + .string "EXMC_MEMORY_TYPE_NOR SNCTL_NRTP(2)" +.LASF1956: + .string "AHBEN_REG_OFFSET 0x14U" +.LASF596: + .string "ADC_OVSCR_OVSS BITS(5,8)" +.LASF1675: + .string "I2C_I2CMODE_ENABLE ((uint32_t)0x00000000U)" +.LASF2323: + .string "TIMER_CHCTL0(timerx) REG32((timerx) + 0x18U)" +.LASF314: + .string "__riscv_m 2000000" +.LASF1678: + .string "I2C_SMBUS_HOST I2C_CTL0_SMBSEL" +.LASF1681: + .string "I2C_ACK_DISABLE ((uint32_t)0x00000000U)" +.LASF179: + .string "__LDBL_MAX_EXP__ 16384" +.LASF1560: + .string "OB_WP1_WP1 ((uint32_t)0x0000FF00U)" +.LASF23: + .string "__SIZEOF_SIZE_T__ 4" +.LASF338: + .string "IRC8M_STARTUP_TIMEOUT ((uint16_t)0x0500)" +.LASF3008: + .string "GPIO_BC_CR3 BIT(3)" +.LASF2009: + .string "RCU_PLL_MUL3 CFG0_PLLMF(1)" +.LASF1543: + .string "WS_WSCNT_1 WS_WSCNT(1)" +.LASF1102: + .string "CAN_FT_REMOTE ((uint32_t)0x00000002U)" +.LASF1242: + .string "DMA_CH2PADDR(dmax) REG32((dmax) + 0x38U)" +.LASF1512: + .string "FMC_CTL_MER BIT(2)" +.LASF1677: + .string "I2C_SMBUS_DEVICE ((uint32_t)0x00000000U)" +.LASF1318: + .string "CHCTL_PRIO(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF2664: + .string "USART_STAT(usartx) REG32((usartx) + (0x00000000U))" +.LASF2495: + .string "TIMER_DMAREQUEST_UPDATEEVENT TIMER_CTL1_DMAS" +.LASF255: + .string "__FLT32X_MAX_EXP__ 1024" +.LASF629: + .string "ADC0_1_EXTTRIG_REGULAR_NONE CTL1_ETSRC(7)" +.LASF2394: + .string "TIMER_SWEVG_CH2G BIT(3)" +.LASF3215: + .string "RCU_CAN1RST" +.LASF2997: + .string "GPIO_BOP_CR8 BIT(24)" +.LASF1879: + .string "RCU_APB1RST_SPI2RST BIT(15)" +.LASF3020: + .string "GPIO_BC_CR15 BIT(15)" +.LASF104: + .string "__INT_LEAST8_MAX__ 0x7f" +.LASF2717: + .string "USART_CTL2_CTSIE BIT(10)" +.LASF2835: + .string "_WCHAR_T_DEFINED " +.LASF1753: + .string "DBG_CTL_I2C0_HOLD BIT(15)" +.LASF382: + .string "long" +.LASF2855: + .string "TIMER_CTRL_ADDR 0xd1000000" +.LASF2541: + .string "TIMER_EVENT_SRC_CMTG ((uint16_t)0x0020U)" +.LASF1928: + .string "RCU_APB1EN_DACEN BIT(29)" +.LASF1274: + .string "DMA_CHXCTL_PNAGA BIT(6)" +.LASF2403: + .string "TIMER_CHCTL0_CH0COMCEN BIT(7)" +.LASF63: + .string "__UINT_FAST32_TYPE__ unsigned int" +.LASF2770: + .string "USART_RTS_ENABLE CLT2_RTSEN(1)" +.LASF356: + .string "__LARGEFILE_VISIBLE 0" +.LASF1438: + .string "EXTI_FTEN_FTEN10 BIT(10)" +.LASF3142: + .string "GPIO_PIN_14 BIT(14)" +.LASF1174: + .string "DAC_TRIGGER_T5_TRGO CTL_DTSEL(0)" +.LASF2127: + .string "RTC RTC_BASE" +.LASF952: + .string "CAN_BT_BS1 BITS(16,19)" +.LASF3071: + .string "AFIO_EXTI15_SS BITS(12, 15)" +.LASF1473: + .string "EXTI_PD_PD7 BIT(7)" +.LASF1121: + .string "CRC_FDATA REG32(CRC + 0x04U)" +.LASF1546: + .string "OB_FWDGT_HW ((uint8_t)0x00U)" +.LASF1839: + .string "RCU_INT_IRC8MSTBIF BIT(2)" +.LASF1012: + .string "FDATA_MASK_HIGH(regval) (BITS(16,31) & ((uint32_t)(regval) << 16))" +.LASF1937: + .string "RCU_RSTSCK_RSTFC BIT(24)" +.LASF999: + .string "CAN_REG_VALS(canx,offset) (REG32((canx) + ((uint32_t)(offset) >> 12)))" +.LASF2961: + .string "GPIO_OCTL_OCTL4 BIT(4)" +.LASF49: + .string "__INT_LEAST8_TYPE__ signed char" +.LASF1444: + .string "EXTI_FTEN_FTEN16 BIT(16)" +.LASF1288: + .string "DMA_CHCTL_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF786: + .string "CAN_RFIFO0(canx) REG32((canx) + 0x0CU)" +.LASF1327: + .string "ECLIC_PRIGROUP_LEVEL0_PRIO4 0" +.LASF2710: + .string "USART_CTL2_HDEN BIT(3)" +.LASF1209: + .string "DAC_LFSR_BITS10_0 DAC_WAVE_BIT_WIDTH_11" +.LASF1945: + .string "RCU_CFG1_PREDV0 BITS(0,3)" +.LASF1453: + .string "EXTI_SWIEV_SWIEV6 BIT(6)" +.LASF1361: + .string "EXMC_NWAIT_POLARITY_LOW ((uint32_t)0x00000000U)" +.LASF253: + .string "__FLT32X_MIN_EXP__ (-1021)" +.LASF368: + .string "___int64_t_defined 1" +.LASF2250: + .string "SPI_PSC_128 CTL0_PSC(6)" +.LASF196: + .string "__FLT16_MAX_10_EXP__ 4" +.LASF1057: + .string "CAN_BT_SJW_4TQ ((uint8_t)0x03U)" +.LASF1965: + .string "INT_REG_OFFSET 0x08U" +.LASF229: + .string "__FLT64_NORM_MAX__ 1.79769313486231570814527423731704357e+308F64" +.LASF1778: + .string "PMU_LVDT_0 CTL_LVDT(0)" +.LASF3074: + .string "GPIO_MODE_MASK(n) (0xFU << (4U * (n)))" +.LASF1260: + .string "DMA_INTF_GIF BIT(0)" +.LASF29: + .string "__BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__" +.LASF456: + .string "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)" +.LASF1367: + .string "EXTI_RTEN REG32(EXTI + 0x08U)" +.LASF1291: + .string "DMA_CHMADDR_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF3029: + .string "GPIO_LOCK_LK8 BIT(8)" +.LASF1477: + .string "EXTI_PD_PD11 BIT(11)" +.LASF2243: + .string "CTL0_PSC(regval) (BITS(3,5) & ((uint32_t)(regval) << 3))" +.LASF677: + .string "ADC_CHANNEL_16 ((uint8_t)0x10U)" +.LASF953: + .string "CAN_BT_BS2 BITS(20,22)" +.LASF1559: + .string "OB_WP0_WP0 ((uint32_t)0x000000FFU)" +.LASF226: + .string "__FLT64_MAX_10_EXP__ 308" +.LASF311: + .string "__riscv_cmodel_medany 1" +.LASF1785: + .string "PMU_LVDT_7 CTL_LVDT(7)" +.LASF2092: + .string "RCU_PREDV1_DIV16 CFG1_PREDV1(15)" +.LASF2501: + .string "TIMER_DMACFG_DMATA_DMAINTEN DMACFG_DMATA(3)" +.LASF1970: + .string "RCU_CKSYSSRC_HXTAL CFG0_SCS(1)" +.LASF1333: + .string "GD32VF103_EXMC_H " +.LASF257: + .string "__FLT32X_DECIMAL_DIG__ 17" +.LASF2523: + .string "TIMER_DMACFG_DMATC_6TRANSFER DMACFG_DMATC(5)" +.LASF2630: + .string "TIMER_TRI_OUT_SRC_UPDATE CTL1_MMC(2)" +.LASF2766: + .string "CLT2_DENT(regval) (BIT(7) & ((uint32_t)(regval) << 7))" +.LASF2114: + .string "RCU_PLL2_MUL20 CFG1_PLL2MF(15)" +.LASF70: + .string "__INT_MAX__ 0x7fffffff" +.LASF2240: + .string "SPI_CK_PL_HIGH_PH_1EDGE SPI_CTL0_CKPL" +.LASF2974: + .string "GPIO_BOP_BOP1 BIT(1)" +.LASF1420: + .string "EXTI_RTEN_RTEN11 BIT(11)" +.LASF1244: + .string "DMA_CH3CTL(dmax) REG32((dmax) + 0x44U)" +.LASF2237: + .string "SPI_ENDIAN_MSB ((uint32_t)0x00000000U)" +.LASF1217: + .string "DAC_TRIANGLE_AMPLITUDE_7 DAC_WAVE_BIT_WIDTH_3" +.LASF1557: + .string "OB_USER_USER ((uint32_t)0x00FF0000U)" +.LASF3183: + .string "__uint16_t" +.LASF133: + .string "__UINT_FAST16_MAX__ 0xffffffffU" +.LASF3157: + .string "GPIO_TIMER2_FULL_REMAP ((uint32_t)0x001A0C00U)" +.LASF1733: + .string "FWDGT_KEY_ENABLE ((uint16_t)0xCCCCU)" +.LASF2481: + .string "TIMER_FLAG_CMT TIMER_INTF_CMTIF" +.LASF2197: + .string "SPI_CTL1_TMOD BIT(4)" +.LASF2489: + .string "TIMER_DMA_CH0D ((uint16_t)TIMER_DMAINTEN_CH0DEN)" +.LASF1466: + .string "EXTI_PD_PD0 BIT(0)" +.LASF120: + .string "__UINT_LEAST32_MAX__ 0xffffffffUL" +.LASF1228: + .string "DMA0 (DMA_BASE)" +.LASF2386: + .string "TIMER_INTF_BRKIF BIT(7)" +.LASF556: + .string "ADC_STAT_STRC BIT(4)" +.LASF1979: + .string "RCU_AHB_CKSYS_DIV4 CFG0_AHBPSC(9)" +.LASF1636: + .string "I2C_SADDR1_DUADEN BIT(0)" +.LASF448: + .string "INT_LEAST32_MIN (-__INT_LEAST32_MAX__ - 1)" +.LASF189: + .string "__LDBL_HAS_INFINITY__ 1" +.LASF425: + .string "__int_least64_t_defined 1" +.LASF432: + .string "UINTPTR_MAX (__UINTPTR_MAX__)" +.LASF19: + .string "__SIZEOF_SHORT__ 2" +.LASF1280: + .string "DMA_CHXCNT_CNT BITS(0,15)" +.LASF1064: + .string "CAN_BT_BS1_7TQ ((uint8_t)0x06U)" +.LASF408: + .string "__int8_t_defined 1" +.LASF1254: + .string "DMA_CH5PADDR(dmax) REG32((dmax) + 0x74U)" +.LASF3054: + .string "AFIO_PCF0_SPI2_REMAP BIT(28)" +.LASF1299: + .string "DMA_FLAG_HTF DMA_INTF_HTFIF" +.LASF35: + .string "__WINT_TYPE__ unsigned int" +.LASF973: + .string "CAN_RFIFOMI_FT BIT(1)" +.LASF1354: + .string "EXMC_NOR_DATABUS_WIDTH_8B SNCTL_NRW(0)" +.LASF1112: + .string "CAN_INT_PERR CAN_INTEN_PERRIE" +.LASF110: + .string "__INT_LEAST32_MAX__ 0x7fffffffL" +.LASF451: + .string "INT64_MIN (-__INT64_MAX__ - 1)" +.LASF1353: + .string "SNCTL_NRW(regval) (BITS(4,5) & ((uint32_t)(regval) << 4))" +.LASF2155: + .string "RTC_INT_SECOND RTC_INTEN_SCIE" +.LASF491: + .string "REG32(addr) (*(volatile uint32_t *)(uint32_t)(addr))" +.LASF2395: + .string "TIMER_SWEVG_CH3G BIT(4)" +.LASF1989: + .string "RCU_APB1_CKAHB_DIV4 CFG0_APB1PSC(5)" +.LASF148: + .string "__FLT_MIN_10_EXP__ (-37)" +.LASF3022: + .string "GPIO_LOCK_LK1 BIT(1)" +.LASF352: + .string "__ATFILE_VISIBLE 0" +.LASF1923: + .string "RCU_APB1EN_I2C1EN BIT(22)" +.LASF2222: + .string "SPI_I2SPSC_DIV BITS(0,7)" +.LASF668: + .string "ADC_CHANNEL_7 ((uint8_t)0x07U)" +.LASF1335: + .string "EXMC_SNCTL0 REG32(EXMC + 0x00U)" +.LASF1654: + .string "I2C_STAT1_I2CBSY BIT(1)" +.LASF2991: + .string "GPIO_BOP_CR2 BIT(18)" +.LASF812: + .string "CAN_FMCFG(canx) REG32((canx) + 0x204U)" +.LASF3263: + .string "gpio_afio_deinit" +.LASF851: + .string "CAN_F7DATA1(canx) REG32((canx) + 0x27CU)" +.LASF3149: + .string "GPIO_USART2_PARTIAL_REMAP ((uint32_t)0x00140010U)" +.LASF507: + .string "RTC_BASE (APB1_BUS_BASE + 0x00002800U)" +.LASF1140: + .string "DACC_R8DH REG32(DAC + 0x28U)" +.LASF1550: + .string "OB_STDBY_RST ((uint8_t)0x00U)" +.LASF2587: + .string "TIMER_OCN_POLARITY_LOW ((uint16_t)0x0008U)" +.LASF979: + .string "CAN_RFIFOMP_TS BITS(16,31)" +.LASF574: + .string "ADC_CTL1_DMA BIT(8)" +.LASF2602: + .string "TIMER_OC_FAST_ENABLE ((uint16_t)0x0004)" +.LASF1261: + .string "DMA_INTF_FTFIF BIT(1)" +.LASF767: + .string "BKP_TPCS_TPIE BIT(2)" +.LASF1464: + .string "EXTI_SWIEV_SWIEV17 BIT(17)" +.LASF950: + .string "CAN_ERR_RECNT BITS(24,31)" +.LASF1128: + .string "DAC0 (0U)" +.LASF969: + .string "CAN_TMDATA1_DB4 BITS(0,7)" +.LASF2134: + .string "RTC_CNTH REG32(RTC + 0x18U)" +.LASF1926: + .string "RCU_APB1EN_BKPIEN BIT(27)" +.LASF1563: + .string "OB_WP_0 ((uint32_t)0x00000001U)" +.LASF2825: + .string "__need_size_t" +.LASF235: + .string "__FLT64_HAS_QUIET_NAN__ 1" +.LASF2943: + .string "GPIO_ISTAT_ISTAT2 BIT(2)" +.LASF205: + .string "__FLT16_HAS_QUIET_NAN__ 1" +.LASF486: + .string "UINT32_C(x) __UINT32_C(x)" +.LASF237: + .string "__FLT128_DIG__ 33" +.LASF1986: + .string "CFG0_APB1PSC(regval) (BITS(8,10) & ((uint32_t)(regval) << 8))" +.LASF617: + .string "ADC_DAUL_INSERTED_TRIGGER_ROTATION CTL0_SYNCM(9)" +.LASF2955: + .string "GPIO_ISTAT_ISTAT14 BIT(14)" +.LASF1881: + .string "RCU_APB1RST_USART2RST BIT(18)" +.LASF2772: + .string "CLT2_CTSEN(regval) (BIT(9) & ((uint32_t)(regval) << 9))" +.LASF2628: + .string "TIMER_TRI_OUT_SRC_RESET CTL1_MMC(0)" +.LASF1577: + .string "OB_WP_14 ((uint32_t)0x00004000U)" +.LASF1404: + .string "EXTI_EVEN_EVEN14 BIT(14)" +.LASF2685: + .string "USART_CTL0_RWU BIT(1)" +.LASF768: + .string "BKP_TPCS_TEF BIT(8)" +.LASF1757: + .string "DBG_CTL_TIMER6_HOLD BIT(20)" +.LASF789: + .string "CAN_ERR(canx) REG32((canx) + 0x18U)" +.LASF1173: + .string "CTL_DTSEL(regval) (BITS(3,5) & ((uint32_t)(regval) << 3))" +.LASF2392: + .string "TIMER_SWEVG_CH0G BIT(1)" +.LASF570: + .string "ADC_CTL1_ADCON BIT(0)" +.LASF242: + .string "__FLT128_DECIMAL_DIG__ 36" +.LASF325: + .string "__RTTHREAD__ 1" +.LASF2670: + .string "USART_GP(usartx) REG32((usartx) + (0x00000018U))" +.LASF2213: + .string "SPI_TCRC_TCRC BITS(0,15)" +.LASF2542: + .string "TIMER_EVENT_SRC_TRGG ((uint16_t)0x0040U)" +.LASF2000: + .string "RCU_CKADC_CKAPB2_DIV6 ((uint32_t)0x00000002U)" +.LASF2692: + .string "USART_CTL0_PERRIE BIT(8)" +.LASF1576: + .string "OB_WP_13 ((uint32_t)0x00002000U)" +.LASF2409: + .string "TIMER_CHCTL0_CH0CAPPSC BITS(2,3)" +.LASF2185: + .string "SPI_CTL0_SWNSS BIT(8)" +.LASF1344: + .string "EXMC_SNCTL_WREN BIT(12)" +.LASF3124: + .string "GPIO_PIN_SOURCE_12 ((uint8_t)0x0CU)" +.LASF2798: + .string "_PTRDIFF_T " +.LASF1113: + .string "CAN_INT_BO CAN_INTEN_BOIE" +.LASF2141: + .string "RTC_CTL_SCIF BIT(0)" +.LASF1598: + .string "SRAM_SIZE (*(uint16_t *)0x1FFFF7E2U)" +.LASF2832: + .string "_WCHAR_T_ " +.LASF2037: + .string "RCU_PLL_MUL31 (PLLMF_4 | CFG0_PLLMF(14))" +.LASF2450: + .string "TIMER_CCHP_PROT BITS(8,9)" +.LASF1497: + .string "OB_SPC REG16((OB) + 0x00U)" +.LASF330: + .string "GD32VF103_H " +.LASF563: + .string "ADC_CTL0_ICA BIT(10)" +.LASF497: + .string "FLASH_BASE ((uint32_t)0x08000000U)" +.LASF2579: + .string "TIMER_CH_3 ((uint16_t)0x0003U)" +.LASF68: + .string "__SCHAR_MAX__ 0x7f" +.LASF293: + .string "__GCC_ATOMIC_INT_LOCK_FREE 2" +.LASF1098: + .string "CAN_FILTERMODE_MASK ((uint8_t)0x00U)" +.LASF38: + .string "__CHAR16_TYPE__ short unsigned int" +.LASF2: + .string "__STDC_UTF_16__ 1" +.LASF1750: + .string "DBG_CTL_TIMER2_HOLD BIT(12)" +.LASF1909: + .string "RCU_APB1EN_TIMER1EN BIT(0)" +.LASF2631: + .string "TIMER_TRI_OUT_SRC_CH0 CTL1_MMC(3)" +.LASF2333: + .string "TIMER_CH3CV(timerx) REG32((timerx) + 0x40U)" +.LASF101: + .string "__UINT16_MAX__ 0xffff" +.LASF2153: + .string "RTC_ALRMH_ALRM BITS(0,15)" +.LASF1606: + .string "I2C_DATA(i2cx) REG32((i2cx) + 0x10U)" +.LASF774: + .string "RTC_OUTPUT_ALARM_PULSE ((uint16_t)0x0000U)" +.LASF154: + .string "__FLT_MIN__ 1.17549435082228750796873653722224568e-38F" +.LASF1081: + .string "CAN_BT_BS2_8TQ ((uint8_t)0x07U)" +.LASF3222: + .string "RCU_GPIOCRST" +.LASF843: + .string "CAN_F27DATA0(canx) REG32((canx) + 0x318U)" +.LASF270: + .string "__FLT64X_MAX_EXP__ 16384" +.LASF278: + .string "__FLT64X_HAS_DENORM__ 1" +.LASF1798: + .string "RCU_CFG0 REG32(RCU + 0x04U)" +.LASF779: + .string "BKP_INT_FLAG_TAMPER BKP_TPCS_TIF" +.LASF960: + .string "CAN_TMI_EFID BITS(3,31)" +.LASF1934: + .string "RCU_BDCTL_BKPRST BIT(16)" +.LASF2461: + .string "TIMER_INT_CH0 TIMER_DMAINTEN_CH0IE" +.LASF1047: + .string "CAN_ERRN_6 ERR_ERRN(6U)" +.LASF3: + .string "__STDC_UTF_32__ 1" +.LASF1290: + .string "DMA_CHPADDR_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF2745: + .string "USART_WL_9BIT CTL0_WL(1)" +.LASF2258: + .string "I2S_AUDIOSAMPLE_48K ((uint32_t)48000U)" +.LASF3122: + .string "GPIO_PIN_SOURCE_10 ((uint8_t)0x0AU)" +.LASF2156: + .string "RTC_INT_ALARM RTC_INTEN_ALRMIE" +.LASF1935: + .string "RCU_RSTSCK_IRC40KEN BIT(0)" +.LASF2138: + .string "RTC_INTEN_SCIE BIT(0)" +.LASF1558: + .string "OB_USER_USER_N ((uint32_t)0xFF000000U)" +.LASF1060: + .string "CAN_BT_BS1_3TQ ((uint8_t)0x02U)" +.LASF616: + .string "ADC_DAUL_REGULAL_FOLLOWUP_SLOW CTL0_SYNCM(8)" +.LASF1830: + .string "RCU_CFG0_PLLSEL BIT(16)" +.LASF3173: + .string "PCF_SWJCFG_MASK ((uint32_t)0xF0FFFFFFU)" +.LASF566: + .string "ADC_CTL0_DISNUM BITS(13,15)" +.LASF1894: + .string "RCU_AHBEN_FMCSPEN BIT(4)" +.LASF2680: + .string "USART_STAT_CTSF BIT(9)" +.LASF694: + .string "ADC_OVERSAMPLING_SHIFT_1B OVSCR_OVSS(1)" +.LASF2284: + .string "SPI_CRC_RX ((uint8_t)0x01U)" +.LASF6: + .string "__GNUC_MINOR__ 2" +.LASF234: + .string "__FLT64_HAS_INFINITY__ 1" +.LASF2073: + .string "RCU_PREDV0_DIV14 CFG1_PREDV0(13)" +.LASF1082: + .string "CAN_MAILBOX0 ((uint8_t)0x00U)" +.LASF155: + .string "__FLT_EPSILON__ 1.19209289550781250000000000000000000e-7F" +.LASF593: + .string "ADC_RDATA_ADC1RDTR BITS(16,31)" +.LASF2326: + .string "TIMER_CNT(timerx) REG32((timerx) + 0x24U)" +.LASF1962: + .string "RSTSCK_REG_OFFSET 0x24U" +.LASF2764: + .string "USART_DENR_ENABLE CLT2_DENR(1)" +.LASF152: + .string "__FLT_MAX__ 3.40282346638528859811704183484516925e+38F" +.LASF833: + .string "CAN_F17DATA0(canx) REG32((canx) + 0x2C8U)" +.LASF371: + .string "___int_least32_t_defined 1" +.LASF1389: + .string "EXTI_INTEN_INTEN18 BIT(18)" +.LASF1536: + .string "FMC_STAT_REG_OFFSET 0x0CU" +.LASF1895: + .string "RCU_AHBEN_CRCEN BIT(6)" +.LASF2245: + .string "SPI_PSC_4 CTL0_PSC(1)" +.LASF1413: + .string "EXTI_RTEN_RTEN4 BIT(4)" +.LASF41: + .string "__INT8_TYPE__ signed char" +.LASF557: + .string "ADC_CTL0_WDCHSEL BITS(0,4)" +.LASF1525: + .string "FMC_WP_WP BITS(0,31)" +.LASF1201: + .string "DAC_LFSR_BITS2_0 DAC_WAVE_BIT_WIDTH_3" +.LASF2858: + .string "N200_ECLIC_H " +.LASF2362: + .string "TIMER_SMCFG_SMC1 BIT(14)" +.LASF2545: + .string "TIMER_COUNTER_EDGE CTL0_CAM(0)" +.LASF3100: + .string "GPIO_EVENT_PIN_4 ((uint8_t)0x04U)" +.LASF571: + .string "ADC_CTL1_CTN BIT(1)" +.LASF2694: + .string "USART_CTL0_PCEN BIT(10)" +.LASF2917: + .string "GPIO_CTL0_MD4 BITS(16, 17)" +.LASF583: + .string "ADC_SAMPTX_SPTN BITS(0,2)" +.LASF3013: + .string "GPIO_BC_CR8 BIT(8)" +.LASF2980: + .string "GPIO_BOP_BOP7 BIT(7)" +.LASF450: + .string "UINT_LEAST32_MAX (__UINT_LEAST32_MAX__)" +.LASF2946: + .string "GPIO_ISTAT_ISTAT5 BIT(5)" +.LASF2459: + .string "TIMER_DMATB_DMATB BITS(0,15)" +.LASF2683: + .string "USART_BAUD_INTDIV BITS(4,15)" +.LASF2768: + .string "USART_DENT_DISABLE CLT2_DENT(0)" +.LASF1378: + .string "EXTI_INTEN_INTEN7 BIT(7)" +.LASF1535: + .string "FMC_REG_OFFSET_GET(flag) ((uint32_t)(flag) >> 12)" +.LASF1050: + .string "CAN_NORMAL_MODE ((uint8_t)0x00U)" +.LASF383: + .string "signed +0" +.LASF1322: + .string "DMA_PRIORITY_ULTRA_HIGH CHCTL_PRIO(3U)" +.LASF430: + .string "INTPTR_MIN (-__INTPTR_MAX__ - 1)" +.LASF1541: + .string "WS_WSCNT(regval) (BITS(0,2) & ((uint32_t)(regval)))" +.LASF685: + .string "OVSCR_DRES(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF2534: + .string "TIMER_DMACFG_DMATC_17TRANSFER DMACFG_DMATC(16)" +.LASF1142: + .string "DAC1_DO REG32(DAC + 0x30U)" +.LASF1163: + .string "DAC1_L12DH_DAC1_DH BITS(4,15)" +.LASF3037: + .string "GPIO_LOCK_LKK BIT(16)" +.LASF107: + .string "__INT_LEAST16_MAX__ 0x7fff" +.LASF103: + .string "__UINT64_MAX__ 0xffffffffffffffffULL" +.LASF353: + .string "__BSD_VISIBLE 0" +.LASF1249: + .string "DMA_CH4CNT(dmax) REG32((dmax) + 0x5CU)" +.LASF1245: + .string "DMA_CH3CNT(dmax) REG32((dmax) + 0x48U)" +.LASF1865: + .string "RCU_APB2RST_PERST BIT(6)" +.LASF1539: + .string "UNLOCK_KEY0 ((uint32_t)0x45670123U)" +.LASF2402: + .string "TIMER_CHCTL0_CH0COMCTL BITS(4,6)" +.LASF411: + .string "__int16_t_defined 1" +.LASF2635: + .string "TIMER_TRI_OUT_SRC_O3CPRE CTL1_MMC(7)" +.LASF652: + .string "ISQ_IL(regval) (BITS(20,21) & ((uint32_t)(regval) << 20))" +.LASF1185: + .string "DAC_WAVE_MODE_TRIANGLE CTL_DWM(2)" +.LASF3256: + .string "bit_value" +.LASF2035: + .string "RCU_PLL_MUL29 (PLLMF_4 | CFG0_PLLMF(12))" +.LASF2344: + .string "TIMER_CTL0_CKDIV BITS(8,9)" +.LASF1041: + .string "CAN_ERRN_0 ERR_ERRN(0U)" +.LASF1482: + .string "EXTI_PD_PD16 BIT(16)" +.LASF696: + .string "ADC_OVERSAMPLING_SHIFT_3B OVSCR_OVSS(3)" +.LASF1109: + .string "CAN_INT_RFF1 CAN_INTEN_RFFIE1" +.LASF2465: + .string "TIMER_INT_CMT TIMER_DMAINTEN_CMTIE" +.LASF1044: + .string "CAN_ERRN_3 ERR_ERRN(3U)" +.LASF1921: + .string "RCU_APB1EN_UART4EN BIT(20)" +.LASF1902: + .string "RCU_APB2EN_PDEN BIT(5)" +.LASF211: + .string "__FLT32_MAX_10_EXP__ 38" +.LASF2720: + .string "USART_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF2751: + .string "CTL1_LBLEN(regval) (BIT(5) & ((uint32_t)(regval) << 5))" +.LASF1432: + .string "EXTI_FTEN_FTEN4 BIT(4)" +.LASF3118: + .string "GPIO_PIN_SOURCE_6 ((uint8_t)0x06U)" +.LASF69: + .string "__SHRT_MAX__ 0x7fff" +.LASF2410: + .string "TIMER_CHCTL0_CH0CAPFLT BITS(4,7)" +.LASF797: + .string "CAN_TMDATA01(canx) REG32((canx) + 0x198U)" +.LASF2178: + .string "SPI_I2SPSC(spix) REG32((spix) + 0x20U)" +.LASF1708: + .string "I2C_DTCY_16_9 I2C_CKCFG_DTCY" +.LASF1425: + .string "EXTI_RTEN_RTEN16 BIT(16)" +.LASF1981: + .string "RCU_AHB_CKSYS_DIV16 CFG0_AHBPSC(11)" +.LASF2030: + .string "RCU_PLL_MUL24 (PLLMF_4 | CFG0_PLLMF(7))" +.LASF1647: + .string "I2C_STAT0_LOSTARB BIT(9)" +.LASF2575: + .string "TIMER_BREAK_DISABLE ((uint16_t)0x0000U)" +.LASF2863: + .string "_BITULL(x) (_AC(1,ULL) << (x))" +.LASF72: + .string "__LONG_LONG_MAX__ 0x7fffffffffffffffLL" +.LASF2515: + .string "TIMER_DMACFG_DMATA_CCHP DMACFG_DMATA(17)" +.LASF83: + .string "__LONG_LONG_WIDTH__ 64" +.LASF2242: + .string "SPI_CK_PL_HIGH_PH_2EDGE (SPI_CTL0_CKPL | SPI_CTL0_CKPH)" +.LASF45: + .string "__UINT8_TYPE__ unsigned char" +.LASF1990: + .string "RCU_APB1_CKAHB_DIV8 CFG0_APB1PSC(6)" +.LASF105: + .string "__INT8_C(c) c" +.LASF398: + .string "__FAST16 " +.LASF1077: + .string "CAN_BT_BS2_4TQ ((uint8_t)0x03U)" +.LASF805: + .string "CAN_RFIFOMDATA00(canx) REG32((canx) + 0x1B8U)" +.LASF2700: + .string "USART_CTL1_LBDIE BIT(6)" +.LASF129: + .string "__INT_FAST32_WIDTH__ 32" +.LASF1371: + .string "EXTI_INTEN_INTEN0 BIT(0)" +.LASF1786: + .string "PMU_FLAG_WAKEUP PMU_CS_WUF" +.LASF1631: + .string "I2C_CTL1_DMALST BIT(12)" +.LASF2317: + .string "TIMER_CTL0(timerx) REG32((timerx) + 0x00U)" +.LASF1590: + .string "OB_WP_27 ((uint32_t)0x08000000U)" +.LASF315: + .string "__riscv_a 2000000" +.LASF1203: + .string "DAC_LFSR_BITS4_0 DAC_WAVE_BIT_WIDTH_5" +.LASF500: + .string "DBG_BASE ((uint32_t)0xE0042000U)" +.LASF1110: + .string "CAN_INT_RFO1 CAN_INTEN_RFOIE1" +.LASF1789: + .string "PMU_LDO_NORMAL ((uint32_t)0x00000000U)" +.LASF2110: + .string "RCU_PLL2_MUL13 CFG1_PLL2MF(11)" +.LASF260: + .string "__FLT32X_MIN__ 2.22507385850720138309023271733240406e-308F32x" +.LASF243: + .string "__FLT128_MAX__ 1.18973149535723176508575932662800702e+4932F128" +.LASF2159: + .string "RTC_INT_FLAG_ALARM RTC_CTL_ALRMIF" +.LASF949: + .string "CAN_ERR_TECNT BITS(16,23)" +.LASF75: + .string "__WINT_MAX__ 0xffffffffU" +.LASF534: + .string "ADC_SAMPT0(adcx) REG32((adcx) + 0x0CU)" +.LASF757: + .string "BKP_TPCS REG16((BKP) + 0x34U)" +.LASF3223: + .string "RCU_GPIODRST" +.LASF2316: + .string "TIMER6 (TIMER_BASE + 0x00001400U)" +.LASF825: + .string "CAN_F9DATA0(canx) REG32((canx) + 0x288U)" +.LASF98: + .string "__INT32_MAX__ 0x7fffffffL" +.LASF1628: + .string "I2C_CTL1_EVIE BIT(9)" +.LASF1533: + .string "FMC_BIT_POS0(val) (((uint32_t)(val) >> 6) & 0x1FU)" +.LASF1684: + .string "I2C_ACKPOS_CURRENT ((uint32_t)0x00000001U)" +.LASF1502: + .string "OB_WP3 REG16((OB) + 0x0EU)" +.LASF1434: + .string "EXTI_FTEN_FTEN6 BIT(6)" +.LASF863: + .string "CAN_F19DATA1(canx) REG32((canx) + 0x2DCU)" +.LASF2265: + .string "I2S_FRAMEFORMAT_DT32B_CH32B (I2SCTL_DTLEN(2) | SPI_I2SCTL_CHLEN)" +.LASF3125: + .string "GPIO_PIN_SOURCE_13 ((uint8_t)0x0DU)" +.LASF2924: + .string "GPIO_CTL0_CTL7 BITS(30, 31)" +.LASF2057: + .string "RCU_RTCSRC_IRC40K BDCTL_RTCSRC(2)" +.LASF2816: + .string "_BSD_SIZE_T_ " +.LASF2187: + .string "SPI_CTL0_RO BIT(10)" +.LASF1029: + .string "GET_RFIFOMDATA0_DB0(regval) GET_BITS((uint32_t)(regval), 0U, 7U)" +.LASF472: + .string "SIZE_MAX (__SIZE_MAX__)" +.LASF1311: + .string "DMA_PERIPHERAL_WIDTH_8BIT CHCTL_PWIDTH(0U)" +.LASF1794: + .string "WFE_CMD ((uint8_t)0x01U)" +.LASF42: + .string "__INT16_TYPE__ short int" +.LASF47: + .string "__UINT32_TYPE__ long unsigned int" +.LASF355: + .string "__ISO_C_VISIBLE 2011" +.LASF2164: + .string "RTC_FLAG_RSYN RTC_CTL_RSYNF" +.LASF2042: + .string "RCU_CKUSB_CKPLL_DIV2_5 CFG0_USBPSC(2)" +.LASF76: + .string "__WINT_MIN__ 0U" +.LASF1665: + .string "I2C_FMPCFG_FMPEN BIT(0)" +.LASF308: + .string "__riscv_muldiv 1" +.LASF429: + .string "__int_fast64_t_defined 1" +.LASF1657: + .string "I2C_STAT1_DEFSMB BIT(5)" +.LASF938: + .string "CAN_INTEN_WERRIE BIT(8)" +.LASF1820: + .string "RCU_CTL_PLL1EN BIT(26)" +.LASF698: + .string "ADC_OVERSAMPLING_SHIFT_5B OVSCR_OVSS(5)" +.LASF2838: + .string "__INT_WCHAR_T_H " +.LASF304: + .string "__riscv_compressed 1" +.LASF2807: + .string "__need_ptrdiff_t" +.LASF577: + .string "ADC_CTL1_ETEIC BIT(15)" +.LASF1509: + .string "FMC_STAT_ENDF BIT(5)" +.LASF3169: + .string "AFIO_EXTI_SOURCE_MASK ((uint8_t)0x03U)" +.LASF1287: + .string "DMA_CHMADDR(dma,channel) REG32(((dma) + 0x14U) + 0x14U * (uint32_t)(channel))" +.LASF2158: + .string "RTC_INT_FLAG_SECOND RTC_CTL_SCIF" +.LASF2585: + .string "TIMER_OC_POLARITY_LOW ((uint16_t)0x0002U)" +.LASF2055: + .string "RCU_RTCSRC_NONE BDCTL_RTCSRC(0)" +.LASF74: + .string "__WCHAR_MIN__ (-__WCHAR_MAX__ - 1)" +.LASF1754: + .string "DBG_CTL_I2C1_HOLD BIT(16)" +.LASF1336: + .string "EXMC_SNTCFG0 REG32(EXMC + 0x04U)" +.LASF1651: + .string "I2C_STAT0_SMBTO BIT(14)" +.LASF422: + .string "__int_least8_t_defined 1" +.LASF951: + .string "CAN_BT_BAUDPSC BITS(0,9)" +.LASF3012: + .string "GPIO_BC_CR7 BIT(7)" +.LASF2387: + .string "TIMER_INTF_CH0OF BIT(9)" +.LASF1417: + .string "EXTI_RTEN_RTEN8 BIT(8)" +.LASF1191: + .string "DAC_WAVE_BIT_WIDTH_5 DWBW(4)" +.LASF245: + .string "__FLT128_MIN__ 3.36210314311209350626267781732175260e-4932F128" +.LASF609: + .string "ADC_DAUL_REGULAL_PARALLEL_INSERTED_PARALLEL CTL0_SYNCM(1)" +.LASF1005: + .string "RFIFO1_REG_OFFSET ((uint8_t)0x10U)" +.LASF1919: + .string "RCU_APB1EN_USART2EN BIT(18)" +.LASF138: + .string "__UINTPTR_MAX__ 0xffffffffU" +.LASF418: + .string "_INTMAX_T_DECLARED " +.LASF109: + .string "__INT_LEAST16_WIDTH__ 16" +.LASF2712: + .string "USART_CTL2_SCEN BIT(5)" +.LASF635: + .string "ADC0_1_EXTTRIG_INSERTED_T2_CH3 CTL1_ETSIC(4)" +.LASF2215: + .string "SPI_I2SCTL_DTLEN BITS(1,2)" +.LASF2252: + .string "I2S_AUDIOSAMPLE_8K ((uint32_t)8000U)" +.LASF955: + .string "CAN_BT_LCMOD BIT(30)" +.LASF1402: + .string "EXTI_EVEN_EVEN12 BIT(12)" +.LASF406: + .string "_INT8_T_DECLARED " +.LASF147: + .string "__FLT_MIN_EXP__ (-125)" +.LASF1137: + .string "DAC1_R8DH REG32(DAC + 0x1CU)" +.LASF2364: + .string "TIMER_DMAINTEN_UPIE BIT(0)" +.LASF1572: + .string "OB_WP_9 ((uint32_t)0x00000200U)" +.LASF2497: + .string "DMACFG_DMATA(regval) (BITS(0, 4) & ((uint32_t)(regval) << 0U))" +.LASF2337: + .string "TIMER_CTL0_CEN BIT(0)" +.LASF2921: + .string "GPIO_CTL0_MD6 BITS(24, 25)" +.LASF2615: + .string "TIMER_IC_PSC_DIV2 ((uint16_t)0x0004U)" +.LASF644: + .string "ADC_SAMPLETIME_41POINT5 SAMPTX_SPT(4)" +.LASF1178: + .string "DAC_TRIGGER_T1_TRGO CTL_DTSEL(4)" +.LASF1073: + .string "CAN_BT_BS1_16TQ ((uint8_t)0x0FU)" +.LASF1876: + .string "RCU_APB1RST_TIMER6RST BIT(5)" +.LASF1239: + .string "DMA_CH1MADDR(dmax) REG32((dmax) + 0x28U)" +.LASF1705: + .string "DATA_TRANS(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF690: + .string "ADC_OVERSAMPLING_ALL_CONVERT 0" +.LASF188: + .string "__LDBL_HAS_DENORM__ 1" +.LASF945: + .string "CAN_ERR_WERR BIT(0)" +.LASF2310: + .string "TIMER0 (TIMER_BASE + 0x00012C00U)" +.LASF1366: + .string "EXTI_EVEN REG32(EXTI + 0x04U)" +.LASF1091: + .string "CAN_SFID_MASK ((uint32_t)0x000007FFU)" +.LASF1860: + .string "RCU_APB2RST_AFRST BIT(0)" +.LASF2984: + .string "GPIO_BOP_BOP11 BIT(11)" +.LASF1205: + .string "DAC_LFSR_BITS6_0 DAC_WAVE_BIT_WIDTH_7" +.LASF1991: + .string "RCU_APB1_CKAHB_DIV16 CFG0_APB1PSC(7)" +.LASF1159: + .string "DAC0_R12DH_DAC0_DH BITS(0,11)" +.LASF183: + .string "__LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L" +.LASF764: + .string "BKP_TPCTL_TPAL BIT(1)" +.LASF1507: + .string "FMC_STAT_PGERR BIT(2)" +.LASF2909: + .string "GPIO_CTL0_MD0 BITS(0, 1)" +.LASF3236: + .string "gpio_event_output_config" +.LASF2644: + .string "TIMER_SLAVE_MODE_EXTERNAL0 SMCFG_SMC(7)" +.LASF2695: + .string "USART_CTL0_WM BIT(11)" +.LASF1713: + .string "FWDGT_CTL REG32((FWDGT) + 0x00000000U)" +.LASF2518: + .string "TIMER_DMACFG_DMATC_1TRANSFER DMACFG_DMATC(0)" +.LASF419: + .string "_UINTMAX_T_DECLARED " +.LASF1486: + .string "FMC FMC_BASE" +.LASF3202: + .string "RCU_TIMER4RST" +.LASF2506: + .string "TIMER_DMACFG_DMATA_CHCTL2 DMACFG_DMATA(8)" +.LASF2973: + .string "GPIO_BOP_BOP0 BIT(0)" +.LASF750: + .string "BKP_DATA37 REG16((BKP) + 0xACU)" +.LASF1660: + .string "I2C_STAT1_PECV BITS(8,15)" +.LASF1643: + .string "I2C_STAT0_STPDET BIT(4)" +.LASF1815: + .string "RCU_CTL_HXTALSTB BIT(17)" +.LASF903: + .string "CAN_TSTAT_MAL0 BIT(2)" +.LASF96: + .string "__INT8_MAX__ 0x7f" +.LASF317: + .string "__riscv_zicsr 2000000" +.LASF2370: + .string "TIMER_DMAINTEN_TRGIE BIT(6)" +.LASF95: + .string "__SIG_ATOMIC_WIDTH__ 32" +.LASF700: + .string "ADC_OVERSAMPLING_SHIFT_7B OVSCR_OVSS(7)" +.LASF2027: + .string "RCU_PLL_MUL21 (PLLMF_4 | CFG0_PLLMF(4))" +.LASF1862: + .string "RCU_APB2RST_PBRST BIT(3)" +.LASF2374: + .string "TIMER_DMAINTEN_CH1DEN BIT(10)" +.LASF2965: + .string "GPIO_OCTL_OCTL8 BIT(8)" +.LASF998: + .string "CAN_REGIDX_BITS(regidx,bitpos0,bitpos1) (((uint32_t)(regidx) << 12) | ((uint32_t)(bitpos0) << 6) | (uint32_t)(bitpos1))" +.LASF1673: + .string "I2C_STAT0_REG_OFFSET 0x14U" +.LASF3005: + .string "GPIO_BC_CR0 BIT(0)" +.LASF2737: + .string "USART_PM_NONE CTL0_PM(0)" +.LASF1035: + .string "GET_RFIFOMDATA1_DB6(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF868: + .string "CAN_F24DATA1(canx) REG32((canx) + 0x304U)" +.LASF2426: + .string "TIMER_CHCTL1_CH3CAPFLT BITS(12,15)" +.LASF664: + .string "ADC_CHANNEL_3 ((uint8_t)0x03U)" +.LASF54: + .string "__UINT_LEAST16_TYPE__ short unsigned int" +.LASF1352: + .string "EXMC_SNTCFG(region) REG32(EXMC + 0x04U + 0x08U * (region))" +.LASF190: + .string "__LDBL_HAS_QUIET_NAN__ 1" +.LASF2049: + .string "RCU_CKOUT0SRC_CKPLL_DIV2 CFG0_CKOUT0SEL(7)" +.LASF1698: + .string "I2C_PEC_DISABLE ((uint32_t)0x00000000U)" +.LASF1774: + .string "PMU_CS_STBF BIT(1)" +.LASF2123: + .string "RCU_DEEPSLEEP_V_1_1 DSV_DSLPVS(1)" +.LASF2425: + .string "TIMER_CHCTL1_CH3CAPPSC BITS(10,11)" +.LASF3057: + .string "AFIO_EXTI1_SS BITS(4, 7)" +.LASF3064: + .string "AFIO_EXTI8_SS BITS(0, 3)" +.LASF2526: + .string "TIMER_DMACFG_DMATC_9TRANSFER DMACFG_DMATC(8)" +.LASF1779: + .string "PMU_LVDT_1 CTL_LVDT(1)" +.LASF2806: + .string "_PTRDIFF_T_DECLARED " +.LASF436: + .string "INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)" +.LASF965: + .string "CAN_TMDATA0_DB0 BITS(0,7)" +.LASF1470: + .string "EXTI_PD_PD4 BIT(4)" +.LASF2498: + .string "TIMER_DMACFG_DMATA_CTL0 DMACFG_DMATA(0)" +.LASF1373: + .string "EXTI_INTEN_INTEN2 BIT(2)" +.LASF1207: + .string "DAC_LFSR_BITS8_0 DAC_WAVE_BIT_WIDTH_9" +.LASF2528: + .string "TIMER_DMACFG_DMATC_11TRANSFER DMACFG_DMATC(10)" +.LASF2676: + .string "USART_STAT_RBNE BIT(5)" +.LASF1561: + .string "OB_WP2_WP2 ((uint32_t)0x00FF0000U)" +.LASF215: + .string "__FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32" +.LASF858: + .string "CAN_F14DATA1(canx) REG32((canx) + 0x2B4U)" +.LASF2551: + .string "TIMER_COUNTER_UP ((uint16_t)0x0000U)" +.LASF3184: + .string "short unsigned int" +.LASF742: + .string "BKP_DATA29 REG16((BKP) + 0x8CU)" +.LASF1323: + .string "DMA_MEMORY_TO_MEMORY_DISABLE ((uint32_t)0x00000000U)" +.LASF207: + .string "__FLT32_DIG__ 6" +.LASF901: + .string "CAN_TSTAT_MTF0 BIT(0)" +.LASF292: + .string "__GCC_ATOMIC_SHORT_LOCK_FREE 1" +.LASF2933: + .string "GPIO_CTL1_MD12 BITS(16, 17)" +.LASF1146: + .string "DAC_CTL_DTSEL0 BITS(3,5)" +.LASF2313: + .string "TIMER3 (TIMER_BASE + 0x00000800U)" +.LASF2511: + .string "TIMER_DMACFG_DMATA_CH0CV DMACFG_DMATA(13)" +.LASF2848: + .string "N200_TIMER_H " +.LASF1145: + .string "DAC_CTL_DTEN0 BIT(2)" +.LASF576: + .string "ADC_CTL1_ETSIC BITS(12,14)" +.LASF2850: + .string "TIMER_MSIP_size 0x4" +.LASF3207: + .string "RCU_SPI2RST" +.LASF2793: + .string "WWDGT_CFG_PSC_DIV8 CFG_PSC(3)" +.LASF2638: + .string "TIMER_ENCODER_MODE0 SMCFG_SMC(1)" +.LASF3152: + .string "GPIO_TIMER0_FULL_REMAP ((uint32_t)0x001600C0U)" +.LASF2468: + .string "TIMER_INT_FLAG_UP TIMER_INT_UP" +.LASF1321: + .string "DMA_PRIORITY_HIGH CHCTL_PRIO(2U)" +.LASF1547: + .string "OB_DEEPSLEEP_NRST ((uint8_t)0x02U)" +.LASF298: + .string "__GCC_HAVE_DWARF2_CFI_ASM 1" +.LASF897: + .string "CAN_STAT_TS BIT(8)" +.LASF3153: + .string "GPIO_TIMER1_PARTIAL_REMAP0 ((uint32_t)0x00180100U)" +.LASF412: + .string "_INT32_T_DECLARED " +.LASF1456: + .string "EXTI_SWIEV_SWIEV9 BIT(9)" +.LASF2958: + .string "GPIO_OCTL_OCTL1 BIT(1)" +.LASF1908: + .string "RCU_APB2EN_USART0EN BIT(14)" +.LASF3026: + .string "GPIO_LOCK_LK5 BIT(5)" +.LASF718: + .string "BKP_DATA5 REG16((BKP) + 0x18U)" +.LASF612: + .string "ADC_DAUL_INSERTED_PARALLEL_REGULAL_FOLLOWUP_SLOW CTL0_SYNCM(4)" +.LASF1275: + .string "DMA_CHXCTL_MNAGA BIT(7)" +.LASF2211: + .string "SPI_CRCPOLY_CRCPOLY BITS(0,15)" +.LASF2330: + .string "TIMER_CH0CV(timerx) REG32((timerx) + 0x34U)" +.LASF1620: + .string "I2C_CTL0_STOP BIT(9)" +.LASF1412: + .string "EXTI_RTEN_RTEN3 BIT(3)" +.LASF399: + .string "__FAST32 " +.LASF1251: + .string "DMA_CH4MADDR(dmax) REG32((dmax) + 0x64U)" +.LASF1382: + .string "EXTI_INTEN_INTEN11 BIT(11)" +.LASF66: + .string "__UINTPTR_TYPE__ unsigned int" +.LASF730: + .string "BKP_DATA17 REG16((BKP) + 0x5CU)" +.LASF2995: + .string "GPIO_BOP_CR6 BIT(22)" +.LASF303: + .string "__riscv 1" +.LASF3266: + .string "D:\\\\rt-thread\\\\bsp\\\\gd32\\\\risc-v\\\\gd32vf103v-eval" +.LASF145: + .string "__FLT_MANT_DIG__ 24" +.LASF468: + .string "UINT_FAST64_MAX (__UINT_FAST64_MAX__)" +.LASF2349: + .string "TIMER_CTL1_TI0S BIT(7)" +.LASF775: + .string "RTC_OUTPUT_SECOND_PULSE ((uint16_t)0x0200U)" +.LASF824: + .string "CAN_F8DATA0(canx) REG32((canx) + 0x280U)" +.LASF3214: + .string "RCU_CAN0RST" +.LASF2719: + .string "USART_GP_GUAT BITS(8,15)" +.LASF2146: + .string "RTC_CTL_LWOFF BIT(5)" +.LASF3041: + .string "AFIO_PCF0_SPI0_REMAP BIT(0)" +.LASF1069: + .string "CAN_BT_BS1_12TQ ((uint8_t)0x0BU)" +.LASF657: + .string "ADC_INSERTED_CHANNEL_0 ((uint8_t)0x00U)" +.LASF1605: + .string "I2C_SADDR1(i2cx) REG32((i2cx) + 0x0CU)" +.LASF578: + .string "ADC_CTL1_ETSRC BITS(17,19)" +.LASF2578: + .string "TIMER_CH_2 ((uint16_t)0x0002U)" +.LASF1052: + .string "CAN_SILENT_MODE ((uint8_t)0x02U)" +.LASF2288: + .string "SPI_I2S_INT_FLAG_TBE ((uint8_t)0x00U)" +.LASF2566: + .string "TIMER_BREAK_POLARITY_HIGH ((uint16_t)TIMER_CCHP_BRKP)" +.LASF2341: + .string "TIMER_CTL0_DIR BIT(4)" +.LASF184: + .string "__LDBL_NORM_MAX__ 1.18973149535723176508575932662800702e+4932L" +.LASF376: + .string "signed" +.LASF975: + .string "CAN_RFIFOMI_EFID BITS(3,31)" +.LASF2227: + .string "SPI_BIDIRECTIONAL_TRANSMIT SPI_CTL0_BDOEN" +.LASF553: + .string "ADC_STAT_EOC BIT(1)" +.LASF354: + .string "__GNU_VISIBLE 0" +.LASF2610: + .string "TIMER_IC_POLARITY_BOTH_EDGE ((uint16_t)0x000AU)" +.LASF2098: + .string "RCU_PLL1_MUL12 CFG1_PLL1MF(10)" +.LASF2928: + .string "GPIO_CTL1_CTL9 BITS(6, 7)" +.LASF1442: + .string "EXTI_FTEN_FTEN14 BIT(14)" +.LASF1544: + .string "WS_WSCNT_2 WS_WSCNT(2)" +.LASF2353: + .string "TIMER_CTL1_ISO1N BIT(11)" +.LASF2879: + .string "ECLIC_CFG_NLBITS_LSB (1u)" +.LASF1898: + .string "RCU_APB2EN_AFEN BIT(0)" +.LASF1273: + .string "DMA_CHXCTL_CMEN BIT(5)" +.LASF1905: + .string "RCU_APB2EN_ADC1EN BIT(10)" +.LASF3251: + .string "gpio_input_port_get" +.LASF279: + .string "__FLT64X_HAS_INFINITY__ 1" +.LASF1181: + .string "DAC_TRIGGER_SOFTWARE CTL_DTSEL(7)" +.LASF2908: + .string "AFIO_PCF1 REG32(AFIO + 0x1CU)" +.LASF2069: + .string "RCU_PREDV0_DIV10 CFG1_PREDV0(9)" +.LASF1925: + .string "RCU_APB1EN_CAN1EN BIT(26)" +.LASF222: + .string "__FLT64_DIG__ 15" +.LASF328: + .string "_POSIX_C_SOURCE 1" +.LASF2565: + .string "TIMER_BREAK_POLARITY_LOW ((uint16_t)0x0000U)" +.LASF4: + .string "__STDC_HOSTED__ 1" +.LASF1365: + .string "EXTI_INTEN REG32(EXTI + 0x00U)" +.LASF676: + .string "ADC_CHANNEL_15 ((uint8_t)0x0FU)" +.LASF402: + .string "__LEAST16 \"h\"" +.LASF2502: + .string "TIMER_DMACFG_DMATA_INTF DMACFG_DMATA(4)" +.LASF1449: + .string "EXTI_SWIEV_SWIEV2 BIT(2)" +.LASF2598: + .string "TIMER_OC_MODE_PWM0 ((uint16_t)0x0060U)" +.LASF2396: + .string "TIMER_SWEVG_CMTG BIT(5)" +.LASF1873: + .string "RCU_APB1RST_TIMER3RST BIT(2)" +.LASF1248: + .string "DMA_CH4CTL(dmax) REG32((dmax) + 0x58U)" +.LASF2742: + .string "USART_WM_ADDR CTL0_WM(1)" +.LASF1710: + .string "I2C_ADDFORMAT_10BITS I2C_SADDR0_ADDFORMAT" +.LASF1198: + .string "DAC_WAVE_BIT_WIDTH_12 DWBW(11)" +.LASF2914: + .string "GPIO_CTL0_CTL2 BITS(10, 11)" +.LASF2878: + .string "ECLIC_CFG_NLBITS_MASK _AC(0x1E,UL)" +.LASF1964: + .string "BDCTL_REG_OFFSET 0x20U" +.LASF1215: + .string "DAC_TRIANGLE_AMPLITUDE_1 DAC_WAVE_BIT_WIDTH_1" +.LASF1319: + .string "DMA_PRIORITY_LOW CHCTL_PRIO(0U)" +.LASF2749: + .string "USART_STB_2BIT CTL1_STB(2)" +.LASF2773: + .string "USART_CTS_ENABLE CLT2_CTSEN(1)" +.LASF2682: + .string "USART_BAUD_FRADIV BITS(0,3)" +.LASF2339: + .string "TIMER_CTL0_UPS BIT(2)" +.LASF2978: + .string "GPIO_BOP_BOP5 BIT(5)" +.LASF102: + .string "__UINT32_MAX__ 0xffffffffUL" +.LASF476: + .string "PTRDIFF_MIN (-PTRDIFF_MAX - 1)" +.LASF1899: + .string "RCU_APB2EN_PAEN BIT(2)" +.LASF1355: + .string "EXMC_NOR_DATABUS_WIDTH_16B SNCTL_NRW(1)" +.LASF924: + .string "CAN_RFIFO0_RFF0 BIT(3)" +.LASF1751: + .string "DBG_CTL_TIMER3_HOLD BIT(13)" +.LASF850: + .string "CAN_F6DATA1(canx) REG32((canx) + 0x274U)" +.LASF114: + .string "__INT64_C(c) c ## LL" +.LASF1520: + .string "FMC_ADDR0_ADDR BITS(0,31)" +.LASF2343: + .string "TIMER_CTL0_ARSE BIT(7)" +.LASF550: + .string "ADC_RDATA(adcx) REG32((adcx) + 0x4CU)" +.LASF2967: + .string "GPIO_OCTL_OCTL10 BIT(10)" +.LASF2318: + .string "TIMER_CTL1(timerx) REG32((timerx) + 0x04U)" +.LASF2012: + .string "RCU_PLL_MUL6 CFG0_PLLMF(4)" +.LASF1614: + .string "I2C_CTL0_SMBSEL BIT(3)" +.LASF2472: + .string "TIMER_INT_FLAG_CH3 TIMER_INT_CH3" +.LASF1313: + .string "DMA_PERIPHERAL_WIDTH_32BIT CHCTL_PWIDTH(2U)" +.LASF2691: + .string "USART_CTL0_TBEIE BIT(7)" +.LASF2467: + .string "TIMER_INT_BRK TIMER_DMAINTEN_BRKIE" +.LASF580: + .string "ADC_CTL1_SWICST BIT(21)" +.LASF2612: + .string "TIMER_IC_SELECTION_INDIRECTTI ((uint16_t)0x0002U)" +.LASF888: + .string "CAN_CTL_ABOR BIT(6)" +.LASF2550: + .string "TIMER_PSC_RELOAD_UPDATE ((uint32_t)0x00000000U)" +.LASF26: + .string "__ORDER_LITTLE_ENDIAN__ 1234" +.LASF2190: + .string "SPI_CTL0_CRCEN BIT(13)" +.LASF3259: + .string "gpio_init" +.LASF1124: + .string "CRC_FDATA_FDATA BITS(0, 7)" +.LASF984: + .string "CAN_RFIFOMDATA1_DB4 BITS(0,7)" +.LASF819: + .string "CAN_F3DATA0(canx) REG32((canx) + 0x258U)" +.LASF1349: + .string "EXMC_SNTCFG_DSET BITS(8,15)" +.LASF3189: + .string "long long unsigned int" +.LASF1764: + .string "PMU_CTL REG32((PMU) + 0x00U)" +.LASF1984: + .string "RCU_AHB_CKSYS_DIV256 CFG0_AHBPSC(14)" +.LASF2335: + .string "TIMER_DMACFG(timerx) REG32((timerx) + 0x48U)" +.LASF171: + .string "__DBL_DENORM_MIN__ ((double)4.94065645841246544176568792868221372e-324L)" +.LASF987: + .string "CAN_RFIFOMDATA1_DB7 BITS(24,31)" +.LASF1314: + .string "CHCTL_MWIDTH(regval) (BITS(10,11) & ((uint32_t)(regval) << 10))" +.LASF857: + .string "CAN_F13DATA1(canx) REG32((canx) + 0x2ACU)" +.LASF1120: + .string "CRC_DATA REG32(CRC + 0x00U)" +.LASF474: + .string "SIG_ATOMIC_MAX (__STDINT_EXP(INT_MAX))" +.LASF785: + .string "CAN_TSTAT(canx) REG32((canx) + 0x08U)" +.LASF1995: + .string "RCU_APB2_CKAHB_DIV4 CFG0_APB2PSC(5)" +.LASF1519: + .string "FMC_CTL_ENDIE BIT(12)" +.LASF1399: + .string "EXTI_EVEN_EVEN9 BIT(9)" +.LASF1281: + .string "DMA_CHXPADDR_PADDR BITS(0,31)" +.LASF900: + .string "CAN_STAT_RXL BIT(11)" +.LASF1540: + .string "UNLOCK_KEY1 ((uint32_t)0xCDEF89ABU)" +.LASF1690: + .string "I2C_GCEN_DISABLE ((uint32_t)0x00000000U)" +.LASF3110: + .string "GPIO_EVENT_PIN_14 ((uint8_t)0x0EU)" +.LASF2654: + .string "TIMER_HALLINTERFACE_ENABLE TIMER_CTL1_TI0S" +.LASF941: + .string "CAN_INTEN_ERRNIE BIT(11)" +.LASF725: + .string "BKP_DATA12 REG16((BKP) + 0x48U)" +.LASF3180: + .string "unsigned char" +.LASF1407: + .string "EXTI_EVEN_EVEN17 BIT(17)" +.LASF2748: + .string "USART_STB_0_5BIT CTL1_STB(1)" +.LASF2382: + .string "TIMER_INTF_CH2IF BIT(3)" +.LASF2234: + .string "SPI_FRAMESIZE_8BIT ((uint32_t)0x00000000U)" +.LASF248: + .string "__FLT128_HAS_DENORM__ 1" +.LASF1089: + .string "CAN_FIFO1 ((uint8_t)0x01U)" +.LASF332: + .string "__O volatile" +.LASF2557: + .string "TIMER_SP_MODE_SINGLE TIMER_CTL0_SPM" +.LASF787: + .string "CAN_RFIFO1(canx) REG32((canx) + 0x10U)" +.LASF3250: + .string "gpio_output_bit_get" +.LASF2989: + .string "GPIO_BOP_CR0 BIT(16)" +.LASF2937: + .string "GPIO_CTL1_MD14 BITS(24, 25)" +.LASF2434: + .string "TIMER_CHCTL2_CH1NP BIT(7)" +.LASF2950: + .string "GPIO_ISTAT_ISTAT9 BIT(9)" +.LASF1672: + .string "I2C_CTL1_REG_OFFSET 0x04U" +.LASF2479: + .string "TIMER_FLAG_CH2 TIMER_INTF_CH2IF" +.LASF640: + .string "ADC_SAMPLETIME_1POINT5 SAMPTX_SPT(0)" +.LASF3237: + .string "output_port" +.LASF2299: + .string "SPI_FLAG_RXORERR SPI_STAT_RXORERR" +.LASF2015: + .string "RCU_PLL_MUL9 CFG0_PLLMF(7)" +.LASF706: + .string "ADC_OVERSAMPLING_RATIO_MUL16 OVSCR_OVSR(3)" +.LASF2874: + .string "ECLIC_INT_ATTR_TRIG_POS 0x00" +.LASF2986: + .string "GPIO_BOP_BOP13 BIT(13)" +.LASF1225: + .string "DAC_TRIANGLE_AMPLITUDE_2047 DAC_WAVE_BIT_WIDTH_11" +.LASF2584: + .string "TIMER_OC_POLARITY_HIGH ((uint16_t)0x0000U)" +.LASF3002: + .string "GPIO_BOP_CR13 BIT(29)" +.LASF1845: + .string "RCU_INT_IRC40KSTBIE BIT(8)" +.LASF1462: + .string "EXTI_SWIEV_SWIEV15 BIT(15)" +.LASF3144: + .string "GPIO_PIN_ALL BITS(0, 15)" +.LASF3025: + .string "GPIO_LOCK_LK4 BIT(4)" +.LASF3106: + .string "GPIO_EVENT_PIN_10 ((uint8_t)0x0AU)" +.LASF3099: + .string "GPIO_EVENT_PIN_3 ((uint8_t)0x03U)" +.LASF464: + .string "INT_FAST32_MAX (__INT_FAST32_MAX__)" +.LASF2429: + .string "TIMER_CHCTL2_CH0NEN BIT(2)" +.LASF1718: + .string "FWDGT_PSC_PSC BITS(0,2)" +.LASF2306: + .string "I2S_FLAG_RXORERR SPI_STAT_RXORERR" +.LASF2413: + .string "TIMER_CHCTL1_CH2MS BITS(0,1)" +.LASF1701: + .string "I2C_SALTSEND_ENABLE I2C_CTL0_SALT" +.LASF1027: + .string "GET_RFIFOMP_DLENC(regval) GET_BITS((uint32_t)(regval), 0U, 3U)" +.LASF2263: + .string "I2S_FRAMEFORMAT_DT16B_CH32B (I2SCTL_DTLEN(0) | SPI_I2SCTL_CHLEN)" +.LASF2189: + .string "SPI_CTL0_CRCNT BIT(12)" +.LASF3136: + .string "GPIO_PIN_8 BIT(8)" +.LASF2623: + .string "TIMER_SMCFG_TRGSEL_CI0F_ED SMCFG_TRGSEL(4)" +.LASF265: + .string "__FLT32X_HAS_QUIET_NAN__ 1" +.LASF842: + .string "CAN_F26DATA0(canx) REG32((canx) + 0x310U)" +.LASF348: + .string "__NEWLIB_MINOR__ 1" +.LASF1285: + .string "DMA_CHCNT(dma,channel) REG32(((dma) + 0x0CU) + 0x14U * (uint32_t)(channel))" +.LASF982: + .string "CAN_RFIFOMDATA0_DB2 BITS(16,23)" +.LASF2052: + .string "RCU_CKOUT0SRC_EXT1 CFG0_CKOUT0SEL(10)" +.LASF1392: + .string "EXTI_EVEN_EVEN2 BIT(2)" +.LASF186: + .string "__LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L" +.LASF579: + .string "ADC_CTL1_ETERC BIT(20)" +.LASF403: + .string "__LEAST32 \"l\"" +.LASF1508: + .string "FMC_STAT_WPERR BIT(4)" +.LASF271: + .string "__FLT64X_MAX_10_EXP__ 4932" +.LASF1369: + .string "EXTI_SWIEV REG32(EXTI + 0x10U)" +.LASF1510: + .string "FMC_CTL_PG BIT(0)" +.LASF2969: + .string "GPIO_OCTL_OCTL12 BIT(12)" +.LASF2482: + .string "TIMER_FLAG_TRG TIMER_INTF_TRGIF" +.LASF2311: + .string "TIMER1 (TIMER_BASE + 0x00000000U)" +.LASF1410: + .string "EXTI_RTEN_RTEN1 BIT(1)" +.LASF1039: + .string "GET_ERR_RECNT(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF2233: + .string "SPI_FRAMESIZE_16BIT SPI_CTL0_FF16" +.LASF2840: + .string "_WCHAR_T_DECLARED " +.LASF597: + .string "ADC_OVSCR_TOVS BIT(9)" +.LASF2452: + .string "TIMER_CCHP_ROS BIT(11)" +.LASF2932: + .string "GPIO_CTL1_CTL11 BITS(14, 15)" +.LASF1688: + .string "I2C_SCLSTRETCH_DISABLE I2C_CTL0_SS" +.LASF894: + .string "CAN_STAT_ERRIF BIT(2)" +.LASF1350: + .string "EXMC_SNTCFG_BUSLAT BITS(16,19)" +.LASF1315: + .string "DMA_MEMORY_WIDTH_8BIT CHCTL_MWIDTH(0U)" +.LASF1946: + .string "RCU_CFG1_PREDV1 BITS(4,7)" +.LASF123: + .string "__UINT64_C(c) c ## ULL" +.LASF2414: + .string "TIMER_CHCTL1_CH2COMFEN BIT(2)" +.LASF2853: + .string "TIMER_MTIME 0x0" +.LASF2897: + .string "GPIO_ISTAT(gpiox) REG32((gpiox) + 0x08U)" +.LASF487: + .string "INT64_C(x) __INT64_C(x)" +.LASF972: + .string "CAN_TMDATA1_DB7 BITS(24,31)" +.LASF169: + .string "__DBL_MIN__ ((double)2.22507385850720138309023271733240406e-308L)" +.LASF2593: + .string "TIMER_OC_MODE_ACTIVE ((uint16_t)0x0010U)" +.LASF1295: + .string "DMA_INT_FLAG_HTF DMA_INTF_HTFIF" +.LASF832: + .string "CAN_F16DATA0(canx) REG32((canx) + 0x2C0U)" +.LASF299: + .string "__PRAGMA_REDEFINE_EXTNAME 1" +.LASF656: + .string "ADC_CHANNEL_DISCON_DISABLE ((uint8_t)0x04U)" +.LASF521: + .string "DMA_BASE (AHB1_BUS_BASE + 0x00008000U)" +.LASF1119: + .string "CRC CRC_BASE" +.LASF1395: + .string "EXTI_EVEN_EVEN5 BIT(5)" +.LASF849: + .string "CAN_F5DATA1(canx) REG32((canx) + 0x26CU)" +.LASF886: + .string "CAN_CTL_ARD BIT(4)" +.LASF2693: + .string "USART_CTL0_PM BIT(9)" +.LASF2929: + .string "GPIO_CTL1_MD10 BITS(8, 9)" +.LASF560: + .string "ADC_CTL0_EOICIE BIT(7)" +.LASF876: + .string "CAN_FDATA0(canx,bank) REG32((canx) + 0x240U + ((bank) * 0x8U) + 0x0U)" +.LASF915: + .string "CAN_TSTAT_MST2 BIT(23)" +.LASF2814: + .string "__SIZE_T " +.LASF2206: + .string "SPI_STAT_CONFERR BIT(5)" +.LASF3163: + .string "GPIO_CAN1_REMAP ((uint32_t)0x00200040U)" +.LASF349: + .string "__NEWLIB_PATCHLEVEL__ 0" +.LASF1375: + .string "EXTI_INTEN_INTEN4 BIT(4)" +.LASF3129: + .string "GPIO_PIN_1 BIT(1)" +.LASF345: + .string "_NEWLIB_VERSION_H__ 1" +.LASF1346: + .string "EXMC_SNCTL_ASYNCWAIT BIT(15)" +.LASF2910: + .string "GPIO_CTL0_CTL0 BITS(2, 3)" +.LASF1101: + .string "CAN_FT_DATA ((uint32_t)0x00000000U)" +.LASF3232: + .string "gpio_periph" +.LASF494: + .string "BIT(x) ((uint32_t)((uint32_t)0x01U<<(x)))" +.LASF291: + .string "__GCC_ATOMIC_WCHAR_T_LOCK_FREE 2" +.LASF2391: + .string "TIMER_SWEVG_UPG BIT(0)" +.LASF1819: + .string "RCU_CTL_PLLSTB BIT(25)" +.LASF2315: + .string "TIMER5 (TIMER_BASE + 0x00001000U)" +.LASF2677: + .string "USART_STAT_TC BIT(6)" +.LASF1488: + .string "FMC_WS REG32((FMC) + 0x00U)" +.LASF2460: + .string "TIMER_INT_UP TIMER_DMAINTEN_UPIE" +.LASF2771: + .string "USART_RTS_DISABLE CLT2_RTSEN(0)" +.LASF1882: + .string "RCU_APB1RST_UART3RST BIT(19)" +.LASF3126: + .string "GPIO_PIN_SOURCE_14 ((uint8_t)0x0EU)" +.LASF1136: + .string "DAC1_L12DH REG32(DAC + 0x18U)" +.LASF2019: + .string "RCU_PLL_MUL13 CFG0_PLLMF(11)" +.LASF60: + .string "__INT_FAST64_TYPE__ long long int" +.LASF2851: + .string "TIMER_MTIMECMP 0x8" +.LASF2371: + .string "TIMER_DMAINTEN_BRKIE BIT(7)" +.LASF2198: + .string "SPI_CTL1_ERRIE BIT(5)" +.LASF2653: + .string "TIMER_ETP_RISING ((uint32_t)0x00000000U)" +.LASF909: + .string "CAN_TSTAT_MTE1 BIT(11)" +.LASF197: + .string "__FLT16_DECIMAL_DIG__ 5" +.LASF499: + .string "OB_BASE ((uint32_t)0x1FFFF800U)" +.LASF1548: + .string "OB_DEEPSLEEP_RST ((uint8_t)0x00U)" +.LASF2905: + .string "AFIO_EXTISS1 REG32(AFIO + 0x0CU)" +.LASF3079: + .string "GPIO_MODE_OUT_OD ((uint8_t)0x14U)" +.LASF1976: + .string "CFG0_AHBPSC(regval) (BITS(4,7) & ((uint32_t)(regval) << 4))" +.LASF247: + .string "__FLT128_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F128" +.LASF864: + .string "CAN_F20DATA1(canx) REG32((canx) + 0x2E4U)" +.LASF2699: + .string "USART_CTL1_LBLEN BIT(5)" +.LASF1793: + .string "WFI_CMD ((uint8_t)0x00U)" +.LASF1825: + .string "RCU_CFG0_SCSS BITS(2,3)" +.LASF2769: + .string "CLT2_RTSEN(regval) (BIT(8) & ((uint32_t)(regval) << 8))" +.LASF21: + .string "__SIZEOF_DOUBLE__ 8" +.LASF149: + .string "__FLT_MAX_EXP__ 128" +.LASF816: + .string "CAN_F0DATA0(canx) REG32((canx) + 0x240U)" +.LASF2356: + .string "TIMER_CTL1_ISO3 BIT(14)" +.LASF620: + .string "ADC_CONTINUOUS_MODE ADC_CTL1_CTN" +.LASF2091: + .string "RCU_PREDV1_DIV15 CFG1_PREDV1(14)" +.LASF191: + .string "__FLT16_MANT_DIG__ 11" +.LASF2224: + .string "SPI_I2SPSC_MCKOEN BIT(9)" +.LASF144: + .string "__FLT_RADIX__ 2" +.LASF3240: + .string "gpio_exti_source_select" +.LASF3121: + .string "GPIO_PIN_SOURCE_9 ((uint8_t)0x09U)" +.LASF2948: + .string "GPIO_ISTAT_ISTAT7 BIT(7)" +.LASF2604: + .string "TIMER_OC_CLEAR_ENABLE ((uint16_t)0x0080U)" +.LASF1682: + .string "I2C_ACK_ENABLE ((uint32_t)0x00000001U)" +.LASF445: + .string "INT32_MIN (-__INT32_MAX__ - 1)" +.LASF3103: + .string "GPIO_EVENT_PIN_7 ((uint8_t)0x07U)" +.LASF1913: + .string "RCU_APB1EN_TIMER5EN BIT(4)" +.LASF967: + .string "CAN_TMDATA0_DB2 BITS(16,23)" +.LASF732: + .string "BKP_DATA19 REG16((BKP) + 0x64U)" +.LASF111: + .string "__INT32_C(c) c ## L" +.LASF935: + .string "CAN_INTEN_RFNEIE1 BIT(4)" +.LASF1818: + .string "RCU_CTL_PLLEN BIT(24)" +.LASF1343: + .string "EXMC_SNCTL_NRWTPOL BIT(9)" +.LASF3088: + .string "GPIO_EVENT_PORT_GPIOC ((uint8_t)0x02U)" +.LASF1666: + .string "I2C_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF1270: + .string "DMA_CHXCTL_HTFIE BIT(2)" +.LASF2510: + .string "TIMER_DMACFG_DMATA_CREP DMACFG_DMATA(12)" +.LASF519: + .string "GPIO_BASE (APB2_BUS_BASE + 0x00000800U)" +.LASF2625: + .string "TIMER_SMCFG_TRGSEL_CI1FE1 SMCFG_TRGSEL(6)" +.LASF1529: + .string "FMC_REG_VAL(offset) (REG32(FMC + ((uint32_t)(offset) >> 6)))" +.LASF2125: + .string "RCU_DEEPSLEEP_V_0_9 DSV_DSLPVS(3)" +.LASF82: + .string "__LONG_WIDTH__ 32" +.LASF2583: + .string "TIMER_CCXN_DISABLE ((uint16_t)0x0000U)" +.LASF738: + .string "BKP_DATA25 REG16((BKP) + 0x7CU)" +.LASF2366: + .string "TIMER_DMAINTEN_CH1IE BIT(2)" +.LASF3147: + .string "GPIO_USART0_REMAP ((uint32_t)0x00000004U)" +.LASF1953: + .string "RCU_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF870: + .string "CAN_F26DATA1(canx) REG32((canx) + 0x314U)" +.LASF14: + .string "__ATOMIC_CONSUME 1" +.LASF2046: + .string "RCU_CKOUT0SRC_CKSYS CFG0_CKOUT0SEL(4)" +.LASF2870: + .string "ECLIC_INT_ATTR_OFFSET _AC(0x1002,UL)" +.LASF216: + .string "__FLT32_EPSILON__ 1.19209289550781250000000000000000000e-7F32" +.LASF2514: + .string "TIMER_DMACFG_DMATA_CH3CV DMACFG_DMATA(16)" +.LASF342: + .string "_STDINT_H " +.LASF1431: + .string "EXTI_FTEN_FTEN3 BIT(3)" +.LASF420: + .string "_INTPTR_T_DECLARED " +.LASF1126: + .string "GD32VF103_DAC_H " +.LASF2563: + .string "TIMER_IOS_STATE_ENABLE ((uint16_t)TIMER_CCHP_IOS)" +.LASF1604: + .string "I2C_SADDR0(i2cx) REG32((i2cx) + 0x08U)" +.LASF1025: + .string "GET_RFIFOMI_EFID(regval) GET_BITS((uint32_t)(regval), 3U, 31U)" +.LASF2036: + .string "RCU_PLL_MUL30 (PLLMF_4 | CFG0_PLLMF(13))" +.LASF2102: + .string "RCU_PLL1_MUL16 CFG1_PLL1MF(14)" +.LASF1033: + .string "GET_RFIFOMDATA1_DB4(regval) GET_BITS((uint32_t)(regval), 0U, 7U)" +.LASF2521: + .string "TIMER_DMACFG_DMATC_4TRANSFER DMACFG_DMATC(3)" +.LASF2094: + .string "RCU_PLL1_MUL8 CFG1_PLL1MF(6)" +.LASF2746: + .string "CTL1_STB(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF2500: + .string "TIMER_DMACFG_DMATA_SMCFG DMACFG_DMATA(2)" +.LASF1480: + .string "EXTI_PD_PD14 BIT(14)" +.LASF1214: + .string "DAC_ALIGN_8B_R DATA_ALIGN(2)" +.LASF1907: + .string "RCU_APB2EN_SPI0EN BIT(12)" +.LASF2688: + .string "USART_CTL0_IDLEIE BIT(4)" +.LASF2136: + .string "RTC_ALRMH REG32(RTC + 0x20U)" +.LASF1168: + .string "DACC_L12DH_DAC1_DH BITS(20,31)" +.LASF963: + .string "CAN_TMP_TSEN BIT(8)" +.LASF1006: + .string "ERR_REG_OFFSET ((uint8_t)0x18U)" +.LASF178: + .string "__LDBL_MIN_10_EXP__ (-4931)" +.LASF2760: + .string "CTL1_CPL(regval) (BIT(10) & ((uint32_t)(regval) << 10))" +.LASF1702: + .string "I2C_SALTSEND_DISABLE ((uint32_t)0x00000000U)" +.LASF2239: + .string "SPI_CK_PL_LOW_PH_1EDGE ((uint32_t)0x00000000U)" +.LASF213: + .string "__FLT32_MAX__ 3.40282346638528859811704183484516925e+38F32" +.LASF2097: + .string "RCU_PLL1_MUL11 CFG1_PLL1MF(9)" +.LASF726: + .string "BKP_DATA13 REG16((BKP) + 0x4CU)" +.LASF3168: + .string "GPIO_EXMC_NADV_REMAP ((uint32_t)0x80000400U)" +.LASF731: + .string "BKP_DATA18 REG16((BKP) + 0x60U)" +.LASF1009: + .string "BT_BS2(regval) (BITS(20,22) & ((uint32_t)(regval) << 20))" +.LASF2535: + .string "TIMER_DMACFG_DMATC_18TRANSFER DMACFG_DMATC(17)" +.LASF693: + .string "ADC_OVERSAMPLING_SHIFT_NONE OVSCR_OVSS(0)" +.LASF1712: + .string "FWDGT FWDGT_BASE" +.LASF1423: + .string "EXTI_RTEN_RTEN14 BIT(14)" +.LASF3186: + .string "__uint32_t" +.LASF116: + .string "__UINT_LEAST8_MAX__ 0xff" +.LASF2972: + .string "GPIO_OCTL_OCTL15 BIT(15)" +.LASF1653: + .string "I2C_STAT1_MASTER BIT(0)" +.LASF2721: + .string "USART_REG_VAL(usartx,offset) (REG32((usartx) + (((uint32_t)(offset) & (0x0000FFFFU)) >> 6)))" +.LASF2041: + .string "RCU_CKUSB_CKPLL_DIV1 CFG0_USBPSC(1)" +.LASF475: + .string "PTRDIFF_MAX (__PTRDIFF_MAX__)" +.LASF931: + .string "CAN_INTEN_TMEIE BIT(0)" +.LASF1271: + .string "DMA_CHXCTL_ERRIE BIT(3)" +.LASF2139: + .string "RTC_INTEN_ALRMIE BIT(1)" +.LASF2622: + .string "TIMER_SMCFG_TRGSEL_ITI3 SMCFG_TRGSEL(3)" +.LASF3248: + .string "temp_mask" +.LASF2058: + .string "RCU_RTCSRC_HXTAL_DIV_128 BDCTL_RTCSRC(3)" +.LASF256: + .string "__FLT32X_MAX_10_EXP__ 308" +.LASF3138: + .string "GPIO_PIN_10 BIT(10)" +.LASF877: + .string "CAN_FDATA1(canx,bank) REG32((canx) + 0x240U + ((bank) * 0x8U) + 0x4U)" +.LASF804: + .string "CAN_RFIFOMP0(canx) REG32((canx) + 0x1B4U)" +.LASF1887: + .string "RCU_APB1RST_CAN1RST BIT(26)" +.LASF2508: + .string "TIMER_DMACFG_DMATA_PSC DMACFG_DMATA(10)" +.LASF3213: + .string "RCU_I2C1RST" +.LASF2643: + .string "TIMER_SLAVE_MODE_EVENT SMCFG_SMC(6)" +.LASF794: + .string "CAN_TMDATA10(canx) REG32((canx) + 0x18CU)" +.LASF162: + .string "__DBL_MIN_EXP__ (-1021)" +.LASF483: + .string "INT16_C(x) __INT16_C(x)" +.LASF10: + .string "__ATOMIC_SEQ_CST 5" +.LASF2936: + .string "GPIO_CTL1_CTL13 BITS(22, 23)" +.LASF3161: + .string "GPIO_PD01_REMAP ((uint32_t)0x00008000U)" +.LASF1807: + .string "RCU_AHBRST REG32(RCU + 0x28U)" +.LASF929: + .string "CAN_RFIFO1_RFO1 BIT(4)" +.LASF2894: + .string "AFIO AFIO_BASE" +.LASF1356: + .string "SNCTL_NRTP(regval) (BITS(2,3) & ((uint32_t)(regval) << 2))" +.LASF844: + .string "CAN_F0DATA1(canx) REG32((canx) + 0x244U)" +.LASF3009: + .string "GPIO_BC_CR4 BIT(4)" +.LASF1222: + .string "DAC_TRIANGLE_AMPLITUDE_255 DAC_WAVE_BIT_WIDTH_8" +.LASF2350: + .string "TIMER_CTL1_ISO0 BIT(8)" +.LASF2836: + .string "_WCHAR_T_H " +.LASF2469: + .string "TIMER_INT_FLAG_CH0 TIMER_INT_CH0" +.LASF1752: + .string "DBG_CTL_CAN0_HOLD BIT(14)" +.LASF2209: + .string "SPI_STAT_FERR BIT(8)" +.LASF2639: + .string "TIMER_ENCODER_MODE1 SMCFG_SMC(2)" +.LASF250: + .string "__FLT128_HAS_QUIET_NAN__ 1" +.LASF545: + .string "ADC_ISQ(adcx) REG32((adcx) + 0x38U)" +.LASF2182: + .string "SPI_CTL0_PSC BITS(3,5)" +.LASF964: + .string "CAN_TMP_TS BITS(16,31)" +.LASF585: + .string "ADC_WDHT_WDHT BITS(0,11)" +.LASF1938: + .string "RCU_RSTSCK_EPRSTF BIT(26)" +.LASF2738: + .string "USART_PM_EVEN CTL0_PM(2)" +.LASF2813: + .string "_T_SIZE " +.LASF482: + .string "UINT8_C(x) __UINT8_C(x)" +.LASF65: + .string "__INTPTR_TYPE__ int" +.LASF1689: + .string "I2C_GCEN_ENABLE I2C_CTL0_GCEN" +.LASF3061: + .string "AFIO_EXTI5_SS BITS(4, 7)" +.LASF2248: + .string "SPI_PSC_32 CTL0_PSC(4)" +.LASF509: + .string "FWDGT_BASE (APB1_BUS_BASE + 0x00003000U)" +.LASF647: + .string "ADC_SAMPLETIME_239POINT5 SAMPTX_SPT(7)" +.LASF1306: + .string "DMA_PERIPH_INCREASE_DISABLE ((uint8_t)0x00U)" +.LASF2577: + .string "TIMER_CH_1 ((uint16_t)0x0001U)" +.LASF2801: + .string "__PTRDIFF_T " +.LASF36: + .string "__INTMAX_TYPE__ long long int" +.LASF1304: + .string "DMA_PERIPHERAL_TO_MEMORY ((uint8_t)0x00U)" +.LASF765: + .string "BKP_TPCS_TER BIT(0)" +.LASF2642: + .string "TIMER_SLAVE_MODE_PAUSE SMCFG_SMC(5)" +.LASF2347: + .string "TIMER_CTL1_DMAS BIT(3)" +.LASF496: + .string "GET_BITS(regval,start,end) (((regval) & BITS((start),(end))) >> (start))" +.LASF3212: + .string "RCU_I2C0RST" +.LASF2674: + .string "USART_STAT_ORERR BIT(3)" +.LASF826: + .string "CAN_F10DATA0(canx) REG32((canx) + 0x290U)" +.LASF1737: + .string "FWDGT_FLAG_RUD FWDGT_STAT_RUD" +.LASF2128: + .string "RTC_INTEN REG32(RTC + 0x00U)" +.LASF810: + .string "CAN_RFIFOMDATA11(canx) REG32((canx) + 0x1CCU)" +.LASF462: + .string "UINT_FAST16_MAX (__UINT_FAST16_MAX__)" +.LASF1591: + .string "OB_WP_28 ((uint32_t)0x10000000U)" +.LASF1716: + .string "FWDGT_STAT REG32((FWDGT) + 0x0000000CU)" +.LASF672: + .string "ADC_CHANNEL_11 ((uint8_t)0x0BU)" +.LASF2962: + .string "GPIO_OCTL_OCTL5 BIT(5)" +.LASF2436: + .string "TIMER_CHCTL2_CH2P BIT(9)" +.LASF811: + .string "CAN_FCTL(canx) REG32((canx) + 0x200U)" +.LASF1846: + .string "RCU_INT_LXTALSTBIE BIT(9)" +.LASF1231: + .string "DMA_INTC(dmax) REG32((dmax) + 0x04U)" +.LASF2462: + .string "TIMER_INT_CH1 TIMER_DMAINTEN_CH1IE" +.LASF2554: + .string "TIMER_CKDIV_DIV1 CTL0_CKDIV(0)" +.LASF2657: + .string "TIMER_CHVSEL_DISABLE ((uint16_t)0x0000U)" +.LASF1495: + .string "FMC_WP REG32((FMC) + 0x20U)" +.LASF89: + .string "__INTMAX_C(c) c ## LL" +.LASF1766: + .string "PMU_CTL_LDOLP BIT(0)" +.LASF865: + .string "CAN_F21DATA1(canx) REG32((canx) + 0x2ECU)" +.LASF2034: + .string "RCU_PLL_MUL28 (PLLMF_4 | CFG0_PLLMF(11))" +.LASF2118: + .string "RCU_I2S1SRC_CKPLL2_MUL2 RCU_CFG1_I2S1SEL" +.LASF302: + .string "__SIZEOF_PTRDIFF_T__ 4" +.LASF2547: + .string "TIMER_COUNTER_CENTER_UP CTL0_CAM(2)" +.LASF1517: + .string "FMC_CTL_OBWEN BIT(9)" +.LASF891: + .string "CAN_CTL_DFZ BIT(16)" +.LASF1400: + .string "EXTI_EVEN_EVEN10 BIT(10)" +.LASF980: + .string "CAN_RFIFOMDATA0_DB0 BITS(0,7)" +.LASF910: + .string "CAN_TSTAT_MST1 BIT(15)" +.LASF3150: + .string "GPIO_USART2_FULL_REMAP ((uint32_t)0x00140030U)" +.LASF645: + .string "ADC_SAMPLETIME_55POINT5 SAMPTX_SPT(5)" +.LASF3073: + .string "GPIO_MODE_SET(n,mode) ((uint32_t)((uint32_t)(mode) << (4U * (n))))" +.LASF503: + .string "APB2_BUS_BASE ((uint32_t)0x40010000U)" +.LASF535: + .string "ADC_SAMPT1(adcx) REG32((adcx) + 0x10U)" +.LASF1780: + .string "PMU_LVDT_2 CTL_LVDT(2)" +.LASF3030: + .string "GPIO_LOCK_LK9 BIT(9)" +.LASF2820: + .string "_SIZE_T_DECLARED " +.LASF2440: + .string "TIMER_CHCTL2_CH3P BIT(13)" +.LASF608: + .string "ADC_MODE_FREE CTL0_SYNCM(0)" +.LASF86: + .string "__PTRDIFF_WIDTH__ 32" +.LASF763: + .string "BKP_TPCTL_TPEN BIT(0)" +.LASF2068: + .string "RCU_PREDV0_DIV9 CFG1_PREDV0(8)" +.LASF2808: + .string "__size_t__ " +.LASF2308: + .string "I2S_FLAG_FERR SPI_STAT_FERR" +.LASF604: + .string "CTL0_DISNUM(regval) (BITS(13,15) & ((uint32_t)(regval) << 13))" +.LASF2556: + .string "TIMER_CKDIV_DIV4 CTL0_CKDIV(2)" +.LASF2072: + .string "RCU_PREDV0_DIV13 CFG1_PREDV0(12)" +.LASF1644: + .string "I2C_STAT0_RBNE BIT(6)" +.LASF776: + .string "TAMPER_PIN_ACTIVE_HIGH ((uint16_t)0x0000U)" +.LASF2915: + .string "GPIO_CTL0_MD3 BITS(12, 13)" +.LASF1220: + .string "DAC_TRIANGLE_AMPLITUDE_63 DAC_WAVE_BIT_WIDTH_6" +.LASF691: + .string "ADC_OVERSAMPLING_ONE_CONVERT 1" +.LASF2999: + .string "GPIO_BOP_CR10 BIT(26)" +.LASF2668: + .string "USART_CTL1(usartx) REG32((usartx) + (0x00000010U))" +.LASF1282: + .string "DMA_CHXMADDR_MADDR BITS(0,31)" +.LASF1238: + .string "DMA_CH1PADDR(dmax) REG32((dmax) + 0x24U)" +.LASF2301: + .string "SPI_FLAG_FERR SPI_STAT_FERR" +.LASF1691: + .string "I2C_SRESET_SET I2C_CTL0_SRESET" +.LASF506: + .string "TIMER_BASE (APB1_BUS_BASE + 0x00000000U)" +.LASF943: + .string "CAN_INTEN_WIE BIT(16)" +.LASF1384: + .string "EXTI_INTEN_INTEN13 BIT(13)" +.LASF3108: + .string "GPIO_EVENT_PIN_12 ((uint8_t)0x0CU)" +.LASF2560: + .string "TIMER_UPDATE_SRC_GLOBAL ((uint32_t)0x00000000U)" +.LASF1452: + .string "EXTI_SWIEV_SWIEV5 BIT(5)" +.LASF466: + .string "INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1)" +.LASF1467: + .string "EXTI_PD_PD1 BIT(1)" +.LASF2862: + .string "_BITUL(x) (_AC(1,UL) << (x))" +.LASF1061: + .string "CAN_BT_BS1_4TQ ((uint8_t)0x03U)" +.LASF3226: + .string "RCU_ADC1RST" +.LASF2920: + .string "GPIO_CTL0_CTL5 BITS(22, 23)" +.LASF1743: + .string "DBG_CTL_SLP_HOLD BIT(0)" +.LASF1625: + .string "I2C_CTL0_SRESET BIT(15)" +.LASF160: + .string "__DBL_MANT_DIG__ 53" +.LASF1920: + .string "RCU_APB1EN_UART3EN BIT(19)" +.LASF667: + .string "ADC_CHANNEL_6 ((uint8_t)0x06U)" +.LASF916: + .string "CAN_TSTAT_NUM BITS(24,25)" +.LASF3243: + .string "remap" +.LASF790: + .string "CAN_BT(canx) REG32((canx) + 0x1CU)" +.LASF1711: + .string "GD32VF103_FWDGT_H " +.LASF3211: + .string "RCU_UART4RST" +.LASF1148: + .string "DAC_CTL_DWBW0 BITS(8,11)" +.LASF1387: + .string "EXTI_INTEN_INTEN16 BIT(16)" +.LASF426: + .string "__int_fast8_t_defined 1" +.LASF621: + .string "CTL1_ETSRC(regval) (BITS(17,19) & ((uint32_t)(regval) << 17))" +.LASF2621: + .string "TIMER_SMCFG_TRGSEL_ITI2 SMCFG_TRGSEL(2)" +.LASF1803: + .string "RCU_APB2EN REG32(RCU + 0x18U)" +.LASF2529: + .string "TIMER_DMACFG_DMATC_12TRANSFER DMACFG_DMATC(11)" +.LASF626: + .string "ADC0_1_EXTTRIG_REGULAR_T2_TRGO CTL1_ETSRC(4)" +.LASF1284: + .string "DMA_CHCTL(dma,channel) REG32(((dma) + 0x08U) + 0x14U * (uint32_t)(channel))" +.LASF118: + .string "__UINT_LEAST16_MAX__ 0xffff" +.LASF2901: + .string "GPIO_LOCK(gpiox) REG32((gpiox) + 0x18U)" +.LASF2307: + .string "I2S_FLAG_TRANS SPI_STAT_TRANS" +.LASF1026: + .string "GET_RFIFOMI_SFID(regval) GET_BITS((uint32_t)(regval), 21U, 31U)" +.LASF2797: + .string "_ANSI_STDDEF_H " +.LASF3036: + .string "GPIO_LOCK_LK15 BIT(15)" +.LASF441: + .string "UINT16_MAX (__UINT16_MAX__)" +.LASF61: + .string "__UINT_FAST8_TYPE__ unsigned int" +.LASF2828: + .string "_WCHAR_T " +.LASF3235: + .string "gpio_pin_lock" +.LASF2143: + .string "RTC_CTL_OVIF BIT(2)" +.LASF839: + .string "CAN_F23DATA0(canx) REG32((canx) + 0x3F8U)" +.LASF3148: + .string "GPIO_USART1_REMAP ((uint32_t)0x00000008U)" +.LASF3023: + .string "GPIO_LOCK_LK2 BIT(2)" +.LASF2274: + .string "I2S_STD_PHILLIPS I2SCTL_I2SSTD(0)" +.LASF1583: + .string "OB_WP_20 ((uint32_t)0x00100000U)" +.LASF1332: + .string "__SEV eclic_send_event" +.LASF1135: + .string "DAC1_R12DH REG32(DAC + 0x14U)" +.LASF838: + .string "CAN_F22DATA0(canx) REG32((canx) + 0x2F0U)" +.LASF2690: + .string "USART_CTL0_TCIE BIT(6)" +.LASF1021: + .string "TMDATA1_DB4(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF1599: + .string "GD32VF103_I2C_H " +.LASF2140: + .string "RTC_INTEN_OVIE BIT(2)" +.LASF2562: + .string "TIMER_ROS_STATE_DISABLE ((uint16_t)0x0000U)" +.LASF1351: + .string "EXMC_SNCTL(region) REG32(EXMC + 0x08U * (region))" +.LASF2104: + .string "CFG1_PLL2MF(regval) (BITS(12,15) & ((uint32_t)(regval) << 12))" +.LASF141: + .string "__FLT_EVAL_METHOD__ 0" +.LASF3016: + .string "GPIO_BC_CR11 BIT(11)" +.LASF3095: + .string "GPIO_PORT_SOURCE_GPIOE ((uint8_t)0x04U)" +.LASF2116: + .string "RCU_PREDV0SRC_CKPLL1 RCU_CFG1_PREDV0SEL" +.LASF2032: + .string "RCU_PLL_MUL26 (PLLMF_4 | CFG0_PLLMF(9))" +.LASF1858: + .string "RCU_INT_PLL2STBIC BIT(22)" +.LASF485: + .string "INT32_C(x) __INT32_C(x)" +.LASF264: + .string "__FLT32X_HAS_INFINITY__ 1" +.LASF2940: + .string "GPIO_CTL1_CTL15 BITS(30, 31)" +.LASF2249: + .string "SPI_PSC_64 CTL0_PSC(5)" +.LASF333: + .string "__IO volatile" +.LASF711: + .string "GD32VF103_BKP_H " +.LASF1978: + .string "RCU_AHB_CKSYS_DIV2 CFG0_AHBPSC(8)" +.LASF2199: + .string "SPI_CTL1_RBNEIE BIT(6)" +.LASF78: + .string "__SIZE_MAX__ 0xffffffffU" +.LASF2976: + .string "GPIO_BOP_BOP3 BIT(3)" +.LASF1828: + .string "RCU_CFG0_APB2PSC BITS(11,13)" +.LASF2817: + .string "_SIZE_T_DEFINED_ " +.LASF737: + .string "BKP_DATA24 REG16((BKP) + 0x78U)" +.LASF3019: + .string "GPIO_BC_CR14 BIT(14)" +.LASF1883: + .string "RCU_APB1RST_UART4RST BIT(20)" +.LASF251: + .string "__FLT32X_MANT_DIG__ 53" +.LASF2329: + .string "TIMER_CREP(timerx) REG32((timerx) + 0x30U)" +.LASF2061: + .string "RCU_PREDV0_DIV2 CFG1_PREDV0(1)" +.LASF289: + .string "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 1" +.LASF1250: + .string "DMA_CH4PADDR(dmax) REG32((dmax) + 0x60U)" +.LASF1842: + .string "RCU_INT_PLL1STBIF BIT(5)" +.LASF2377: + .string "TIMER_DMAINTEN_CMTDEN BIT(13)" +.LASF2883: + .string "PMOVI_HANDLER eclic_pmovi_handler" +.LASF741: + .string "BKP_DATA28 REG16((BKP) + 0x88U)" +.LASF100: + .string "__UINT8_MAX__ 0xff" +.LASF2697: + .string "USART_CTL0_UEN BIT(13)" +.LASF2739: + .string "USART_PM_ODD CTL0_PM(3)" +.LASF9: + .string "__ATOMIC_RELAXED 0" +.LASF2001: + .string "RCU_CKADC_CKAPB2_DIV8 ((uint32_t)0x00000003U)" +.LASF653: + .string "ADC_REGULAR_CHANNEL ((uint8_t)0x01U)" +.LASF172: + .string "__DBL_HAS_DENORM__ 1" +.LASF2708: + .string "USART_CTL2_IREN BIT(1)" +.LASF3241: + .string "source" +.LASF2777: + .string "USART_IRLP_NORMAL CTL2_IRLP(0)" +.LASF1180: + .string "DAC_TRIGGER_EXTI_9 CTL_DTSEL(6)" +.LASF2993: + .string "GPIO_BOP_CR4 BIT(20)" +.LASF249: + .string "__FLT128_HAS_INFINITY__ 1" +.LASF2109: + .string "RCU_PLL2_MUL12 CFG1_PLL2MF(10)" +.LASF2324: + .string "TIMER_CHCTL1(timerx) REG32((timerx) + 0x1CU)" +.LASF1948: + .string "RCU_CFG1_PLL2MF BITS(12,15)" +.LASF396: + .string "__INT64 \"ll\"" +.LASF1699: + .string "I2C_PECTRANS_ENABLE I2C_CTL0_PECTRANS" +.LASF2868: + .string "ECLIC_INT_IP_OFFSET _AC(0x1000,UL)" +.LASF1127: + .string "DAC DAC_BASE" +.LASF2833: + .string "_BSD_WCHAR_T_ " +.LASF976: + .string "CAN_RFIFOMI_SFID BITS(21,31)" +.LASF407: + .string "_UINT8_T_DECLARED " +.LASF3158: + .string "GPIO_TIMER3_REMAP ((uint32_t)0x00001000U)" +.LASF994: + .string "CAN_FDATA_FD(regval) BIT(regval)" +.LASF2212: + .string "SPI_RCRC_RCRC BITS(0,15)" +.LASF2782: + .string "WWDGT_STAT REG32((WWDGT) + 0x00000008U)" +.LASF1078: + .string "CAN_BT_BS2_5TQ ((uint8_t)0x04U)" +.LASF1264: + .string "DMA_INTC_GIFC BIT(0)" +.LASF2291: + .string "SPI_INT_FLAG_CONFERR ((uint8_t)0x03U)" +.LASF1755: + .string "DBG_CTL_TIMER4_HOLD BIT(18)" +.LASF2228: + .string "SPI_BIDIRECTIONAL_RECEIVE (~SPI_CTL0_BDOEN)" +.LASF1927: + .string "RCU_APB1EN_PMUEN BIT(28)" +.LASF729: + .string "BKP_DATA16 REG16((BKP) + 0x58U)" +.LASF660: + .string "ADC_INSERTED_CHANNEL_3 ((uint8_t)0x03U)" +.LASF2444: + .string "TIMER_CREP_CREP BITS(0,7)" +.LASF1440: + .string "EXTI_FTEN_FTEN12 BIT(12)" +.LASF719: + .string "BKP_DATA6 REG16((BKP) + 0x1CU)" +.LASF1015: + .string "TMI_EFID(regval) (BITS(3,31) & ((uint32_t)(regval) << 3))" +.LASF584: + .string "ADC_IOFFX_IOFF BITS(0,11)" +.LASF1655: + .string "I2C_STAT1_TR BIT(2)" +.LASF2531: + .string "TIMER_DMACFG_DMATC_14TRANSFER DMACFG_DMATC(13)" +.LASF803: + .string "CAN_RFIFOMI0(canx) REG32((canx) + 0x1B0U)" +.LASF447: + .string "UINT32_MAX (__UINT32_MAX__)" +.LASF1307: + .string "DMA_PERIPH_INCREASE_ENABLE ((uint8_t)0x01U)" +.LASF3265: + .string "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Source\\gd32vf103_gpio.c" +.LASF1717: + .string "FWDGT_CTL_CMD BITS(0,15)" +.LASF3221: + .string "RCU_GPIOBRST" +.LASF610: + .string "ADC_DAUL_REGULAL_PARALLEL_INSERTED_ROTATION CTL0_SYNCM(2)" +.LASF740: + .string "BKP_DATA27 REG16((BKP) + 0x84U)" +.LASF218: + .string "__FLT32_HAS_DENORM__ 1" +.LASF3244: + .string "newvalue" +.LASF301: + .string "__SIZEOF_WINT_T__ 4" +.LASF2599: + .string "TIMER_OC_MODE_PWM1 ((uint16_t)0x0070U)" +.LASF1709: + .string "I2C_ADDFORMAT_7BITS ((uint32_t)0x00000000U)" +.LASF991: + .string "CAN_FSCFG_FS(regval) BIT(regval)" +.LASF1586: + .string "OB_WP_23 ((uint32_t)0x00800000U)" +.LASF559: + .string "ADC_CTL0_WDEIE BIT(6)" +.LASF233: + .string "__FLT64_HAS_DENORM__ 1" +.LASF561: + .string "ADC_CTL0_SM BIT(8)" +.LASF1010: + .string "BT_SJW(regval) (BITS(24,25) & ((uint32_t)(regval) << 24))" +.LASF3239: + .string "lock" +.LASF728: + .string "BKP_DATA15 REG16((BKP) + 0x54U)" +.LASF555: + .string "ADC_STAT_STIC BIT(3)" +.LASF2165: + .string "RTC_FLAG_LWOF RTC_CTL_LWOFF" +.LASF746: + .string "BKP_DATA33 REG16((BKP) + 0x9CU)" +.LASF818: + .string "CAN_F2DATA0(canx) REG32((canx) + 0x250U)" +.LASF1869: + .string "RCU_APB2RST_SPI0RST BIT(12)" +.LASF2876: + .string "ECLIC_INT_CTRL_OFFSET _AC(0x1003,UL)" +.LASF335: + .string "HXTAL_VALUE_25M HXTAL_VALUE" +.LASF94: + .string "__SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)" +.LASF2149: + .string "RTC_DIVH_DIV BITS(0,3)" +.LASF599: + .string "ADC_FLAG_WDE ADC_STAT_WDE" +.LASF157: + .string "__FLT_HAS_DENORM__ 1" +.LASF1635: + .string "I2C_SADDR0_ADDFORMAT BIT(15)" +.LASF469: + .string "INTMAX_MAX (__INTMAX_MAX__)" +.LASF391: + .string "_INTPTR_EQ_INT " +.LASF2458: + .string "TIMER_DMACFG_DMATC BITS(8,12)" +.LASF201: + .string "__FLT16_EPSILON__ 9.76562500000000000000000000000000000e-4F16" +.LASF2063: + .string "RCU_PREDV0_DIV4 CFG1_PREDV0(3)" +.LASF1857: + .string "RCU_INT_PLL1STBIC BIT(21)" +.LASF898: + .string "CAN_STAT_RS BIT(9)" +.LASF329: + .string "GD32VF103_GPIO_H " +.LASF1396: + .string "EXTI_EVEN_EVEN6 BIT(6)" +.LASF3117: + .string "GPIO_PIN_SOURCE_5 ((uint8_t)0x05U)" +.LASF2834: + .string "_WCHAR_T_DEFINED_ " +.LASF2051: + .string "RCU_CKOUT0SRC_CKPLL2_DIV2 CFG0_CKOUT0SEL(9)" +.LASF1153: + .string "DAC_CTL_DTSEL1 BITS(19,21)" +.LASF22: + .string "__SIZEOF_LONG_DOUBLE__ 16" +.LASF522: + .string "RCU_BASE (AHB1_BUS_BASE + 0x00009000U)" +.LASF1725: + .string "FWDGT_PSC_DIV16 ((uint8_t)PSC_PSC(2))" +.LASF692: + .string "OVSCR_OVSS(regval) (BITS(5,8) & ((uint32_t)(regval) << 5))" +.LASF316: + .string "__riscv_c 2000000" +.LASF3227: + .string "RCU_TIMER0RST" +.LASF1414: + .string "EXTI_RTEN_RTEN5 BIT(5)" +.LASF1915: + .string "RCU_APB1EN_WWDGTEN BIT(11)" +.LASF2505: + .string "TIMER_DMACFG_DMATA_CHCTL1 DMACFG_DMATA(7)" +.LASF1490: + .string "FMC_OBKEY REG32((FMC) + 0x08U)" +.LASF2532: + .string "TIMER_DMACFG_DMATC_15TRANSFER DMACFG_DMATC(14)" +.LASF2194: + .string "SPI_CTL1_DMATEN BIT(1)" +.LASF380: + .string "__int20" +.LASF2618: + .string "SMCFG_TRGSEL(regval) (BITS(4, 6) & ((uint32_t)(regval) << 4U))" +.LASF1782: + .string "PMU_LVDT_4 CTL_LVDT(4)" +.LASF734: + .string "BKP_DATA21 REG16((BKP) + 0x6CU)" +.LASF739: + .string "BKP_DATA26 REG16((BKP) + 0x80U)" +.LASF313: + .string "__riscv_i 2000000" +.LASF3052: + .string "AFIO_PCF0_TIMER4CH3_IREMAP BIT(16)" +.LASF2115: + .string "RCU_PREDV0SRC_HXTAL ((uint32_t)0x00000000U)" +.LASF798: + .string "CAN_TMDATA11(canx) REG32((canx) + 0x19CU)" +.LASF1325: + .string "DMA_CHANNEL_CNT_MASK DMA_CHXCNT_CNT" +.LASF1910: + .string "RCU_APB1EN_TIMER2EN BIT(1)" +.LASF2736: + .string "CTL0_PM(regval) (BITS(9,10) & ((uint32_t)(regval) << 9))" +.LASF1086: + .string "CAN_FF_STANDARD ((uint32_t)0x00000000U)" +.LASF2947: + .string "GPIO_ISTAT_ISTAT6 BIT(6)" +.LASF1787: + .string "PMU_FLAG_STANDBY PMU_CS_STBF" +.LASF1253: + .string "DMA_CH5CNT(dmax) REG32((dmax) + 0x70U)" +.LASF79: + .string "__SCHAR_WIDTH__ 8" +.LASF2183: + .string "SPI_CTL0_SPIEN BIT(6)" +.LASF591: + .string "ADC_IDATAX_IDATAN BITS(0,15)" +.LASF2437: + .string "TIMER_CHCTL2_CH2NEN BIT(10)" +.LASF2415: + .string "TIMER_CHCTL1_CH2COMSEN BIT(3)" +.LASF1139: + .string "DACC_L12DH REG32(DAC + 0x24U)" +.LASF1379: + .string "EXTI_INTEN_INTEN8 BIT(8)" +.LASF3133: + .string "GPIO_PIN_5 BIT(5)" +.LASF2421: + .string "TIMER_CHCTL1_CH3COMCTL BITS(12,14)" +.LASF3094: + .string "GPIO_PORT_SOURCE_GPIOD ((uint8_t)0x03U)" +.LASF2734: + .string "USART_TRANSMIT_ENABLE CTL0_TEN(1)" +.LASF523: + .string "FMC_BASE (AHB1_BUS_BASE + 0x0000A000U)" +.LASF2208: + .string "SPI_STAT_TRANS BIT(7)" +.LASF2733: + .string "CTL0_TEN(regval) (BIT(3) & ((uint32_t)(regval) << 3))" +.LASF2166: + .string "GD32VF103_SPI_H " +.LASF30: + .string "__FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__" +.LASF1844: + .string "RCU_INT_CKMIF BIT(7)" +.LASF1118: + .string "GD32VF103_CRC_H " +.LASF752: + .string "BKP_DATA39 REG16((BKP) + 0xB4U)" +.LASF1581: + .string "OB_WP_18 ((uint32_t)0x00040000U)" +.LASF1194: + .string "DAC_WAVE_BIT_WIDTH_8 DWBW(7)" +.LASF1279: + .string "DMA_CHXCTL_M2M BIT(14)" +.LASF1637: + .string "I2C_SADDR1_ADDRESS2 BITS(1,7)" +.LASF2735: + .string "USART_TRANSMIT_DISABLE CTL0_TEN(0)" +.LASF2300: + .string "SPI_FLAG_TRANS SPI_STAT_TRANS" +.LASF1298: + .string "DMA_FLAG_FTF DMA_INTF_FTFIF" +.LASF1645: + .string "I2C_STAT0_TBE BIT(7)" +.LASF1031: + .string "GET_RFIFOMDATA0_DB2(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF1575: + .string "OB_WP_12 ((uint32_t)0x00001000U)" +.LASF1405: + .string "EXTI_EVEN_EVEN15 BIT(15)" +.LASF2841: + .string "_BSD_WCHAR_T_" +.LASF1814: + .string "RCU_CTL_HXTALEN BIT(16)" +.LASF3098: + .string "GPIO_EVENT_PIN_2 ((uint8_t)0x02U)" +.LASF1906: + .string "RCU_APB2EN_TIMER0EN BIT(11)" +.LASF208: + .string "__FLT32_MIN_EXP__ (-125)" +.LASF1210: + .string "DAC_LFSR_BITS11_0 DAC_WAVE_BIT_WIDTH_12" +.LASF2809: + .string "__SIZE_T__ " +.LASF1703: + .string "I2C_ARP_ENABLE I2C_CTL0_ARPEN" +.LASF1719: + .string "FWDGT_RLD_RLD BITS(0,11)" +.LASF3156: + .string "GPIO_TIMER2_PARTIAL_REMAP ((uint32_t)0x001A0800U)" +.LASF1929: + .string "RCU_BDCTL_LXTALEN BIT(0)" +.LASF1878: + .string "RCU_APB1RST_SPI1RST BIT(14)" +.LASF2065: + .string "RCU_PREDV0_DIV6 CFG1_PREDV0(5)" +.LASF1903: + .string "RCU_APB2EN_PEEN BIT(6)" +.LASF3090: + .string "GPIO_EVENT_PORT_GPIOE ((uint8_t)0x04U)" +.LASF2204: + .string "SPI_STAT_TXURERR BIT(3)" +.LASF1334: + .string "EXMC (EXMC_BASE)" +.LASF1051: + .string "CAN_LOOPBACK_MODE ((uint8_t)0x01U)" +.LASF385: + .string "char +0" +.LASF3000: + .string "GPIO_BOP_CR11 BIT(27)" +.LASF2888: + .string "ECLIC_GROUP_LEVEL4_PRIO0 4" +.LASF1008: + .string "BT_BS1(regval) (BITS(16,19) & ((uint32_t)(regval) << 16))" +.LASF1460: + .string "EXTI_SWIEV_SWIEV13 BIT(13)" +.LASF2376: + .string "TIMER_DMAINTEN_CH3DEN BIT(12)" +.LASF751: + .string "BKP_DATA38 REG16((BKP) + 0xB0U)" +.LASF513: + .string "CAN_BASE (APB1_BUS_BASE + 0x00006400U)" +.LASF1792: + .string "PMU_FLAG_RESET_STANDBY ((uint8_t)0x01U)" +.LASF2080: + .string "RCU_PREDV1_DIV4 CFG1_PREDV1(3)" +.LASF2192: + .string "SPI_CTL0_BDEN BIT(15)" +.LASF3171: + .string "LSB_16BIT_MASK ((uint16_t)0xFFFFU)" +.LASF2783: + .string "WWDGT_CTL_CNT BITS(0,6)" +.LASF1813: + .string "RCU_CTL_IRC8MCALIB BITS(8,15)" +.LASF1950: + .string "RCU_CFG1_I2S1SEL BIT(17)" +.LASF1494: + .string "FMC_OBSTAT REG32((FMC) + 0x1CU)" +.LASF934: + .string "CAN_INTEN_RFOIE0 BIT(3)" +.LASF2580: + .string "TIMER_CCX_ENABLE ((uint16_t)0x0001U)" +.LASF2276: + .string "I2S_STD_LSB I2SCTL_I2SSTD(2)" +.LASF568: + .string "ADC_CTL0_IWDEN BIT(22)" +.LASF2581: + .string "TIMER_CCX_DISABLE ((uint16_t)0x0000U)" +.LASF1372: + .string "EXTI_INTEN_INTEN1 BIT(1)" +.LASF370: + .string "___int_least16_t_defined 1" +.LASF2588: + .string "TIMER_OC_IDLE_STATE_HIGH ((uint16_t)0x0100)" +.LASF703: + .string "ADC_OVERSAMPLING_RATIO_MUL2 OVSCR_OVSR(0)" +.LASF15: + .string "__FINITE_MATH_ONLY__ 0" +.LASF1259: + .string "DMA_CH6MADDR(dmax) REG32((dmax) + 0x8CU)" +.LASF2687: + .string "USART_CTL0_TEN BIT(3)" +.LASF2078: + .string "RCU_PREDV1_DIV2 CFG1_PREDV1(1)" +.LASF2872: + .string "ECLIC_INT_ATTR_TRIG_LEVEL 0x00" +.LASF2594: + .string "TIMER_OC_MODE_INACTIVE ((uint16_t)0x0020U)" +.LASF1514: + .string "FMC_CTL_OBER BIT(5)" +.LASF1074: + .string "CAN_BT_BS2_1TQ ((uint8_t)0x00U)" +.LASF808: + .string "CAN_RFIFOMP1(canx) REG32((canx) + 0x1C4U)" +.LASF1775: + .string "PMU_CS_LVDF BIT(2)" +.LASF926: + .string "CAN_RFIFO0_RFD0 BIT(5)" +.LASF2744: + .string "USART_WL_8BIT CTL0_WL(0)" +.LASF2871: + .string "ECLIC_INT_ATTR_SHV 0x01" +.LASF2750: + .string "USART_STB_1_5BIT CTL1_STB(3)" +.LASF212: + .string "__FLT32_DECIMAL_DIG__ 9" +.LASF1967: + .string "CFG1_REG_OFFSET 0x2CU" +.LASF1474: + .string "EXTI_PD_PD8 BIT(8)" +.LASF2524: + .string "TIMER_DMACFG_DMATC_7TRANSFER DMACFG_DMATC(6)" +.LASF3216: + .string "RCU_BKPIRST" +.LASF562: + .string "ADC_CTL0_WDSC BIT(9)" +.LASF705: + .string "ADC_OVERSAMPLING_RATIO_MUL8 OVSCR_OVSR(2)" +.LASF367: + .string "___int32_t_defined 1" +.LASF1810: + .string "RCU_CTL_IRC8MEN BIT(0)" +.LASF1182: + .string "CTL_DWM(regval) (BITS(6,7) & ((uint32_t)(regval) << 6))" +.LASF230: + .string "__FLT64_MIN__ 2.22507385850720138309023271733240406e-308F64" +.LASF634: + .string "ADC0_1_EXTTRIG_INSERTED_T1_CH0 CTL1_ETSIC(3)" +.LASF2911: + .string "GPIO_CTL0_MD1 BITS(4, 5)" +.LASF246: + .string "__FLT128_EPSILON__ 1.92592994438723585305597794258492732e-34F128" +.LASF2576: + .string "TIMER_CH_0 ((uint16_t)0x0000U)" +.LASF1884: + .string "RCU_APB1RST_I2C0RST BIT(21)" +.LASF2003: + .string "RCU_CKADC_CKAPB2_DIV16 ((uint32_t)0x00000007U)" +.LASF1489: + .string "FMC_KEY REG32((FMC) + 0x04U)" +.LASF1856: + .string "RCU_INT_PLLSTBIC BIT(20)" +.LASF3059: + .string "AFIO_EXTI3_SS BITS(12, 15)" +.LASF2613: + .string "TIMER_IC_SELECTION_ITS ((uint16_t)0x0003U)" +.LASF2903: + .string "AFIO_PCF0 REG32(AFIO + 0x04U)" +.LASF633: + .string "ADC0_1_EXTTRIG_INSERTED_T1_TRGO CTL1_ETSIC(2)" +.LASF493: + .string "REG8(addr) (*(volatile uint8_t *)(uint32_t)(addr))" +.LASF2776: + .string "USART_IRLP_LOW CTL2_IRLP(1)" +.LASF1732: + .string "FWDGT_KEY_RELOAD ((uint16_t)0xAAAAU)" +.LASF2981: + .string "GPIO_BOP_BOP8 BIT(8)" +.LASF2229: + .string "SPI_TRANSMODE_FULLDUPLEX ((uint32_t)0x00000000U)" +.LASF2352: + .string "TIMER_CTL1_ISO1 BIT(10)" +.LASF2640: + .string "TIMER_ENCODER_MODE2 SMCFG_SMC(3)" +.LASF423: + .string "__int_least16_t_defined 1" +.LASF1169: + .string "DACC_R8DH_DAC0_DH BITS(0,7)" +.LASF2067: + .string "RCU_PREDV0_DIV8 CFG1_PREDV0(7)" +.LASF2831: + .string "__WCHAR_T " +.LASF409: + .string "_INT16_T_DECLARED " +.LASF88: + .string "__INTMAX_MAX__ 0x7fffffffffffffffLL" +.LASF1189: + .string "DAC_WAVE_BIT_WIDTH_3 DWBW(2)" +.LASF1046: + .string "CAN_ERRN_5 ERR_ERRN(5U)" +.LASF919: + .string "CAN_TSTAT_TME2 BIT(28)" +.LASF528: + .string "GD32VF103_ADC_H " +.LASF2417: + .string "TIMER_CHCTL1_CH2COMCEN BIT(7)" +.LASF1996: + .string "RCU_APB2_CKAHB_DIV8 CFG0_APB2PSC(6)" +.LASF90: + .string "__UINTMAX_MAX__ 0xffffffffffffffffULL" +.LASF3185: + .string "long int" +.LASF615: + .string "ADC_DAUL_REGULAL_FOLLOWUP_FAST CTL0_SYNCM(7)" +.LASF1957: + .string "APB1EN_REG_OFFSET 0x1CU" +.LASF1609: + .string "I2C_CKCFG(i2cx) REG32((i2cx) + 0x1CU)" +.LASF2302: + .string "I2S_FLAG_RBNE SPI_STAT_RBNE" +.LASF2017: + .string "RCU_PLL_MUL11 CFG0_PLLMF(9)" +.LASF1363: + .string "GD32VF103_EXTI_H " +.LASF378: + .string "char" +.LASF3046: + .string "AFIO_PCF0_TIMER0_REMAP BITS(6, 7)" +.LASF1341: + .string "EXMC_SNCTL_NRW BITS(4,5)" +.LASF32: + .string "__SIZE_TYPE__ unsigned int" +.LASF3209: + .string "RCU_USART2RST" +.LASF1916: + .string "RCU_APB1EN_SPI1EN BIT(14)" +.LASF881: + .string "CAN_RFIFOMDATA1(canx,bank) REG32((canx) + 0x1BCU + ((bank) * 0x10U))" +.LASF2428: + .string "TIMER_CHCTL2_CH0P BIT(1)" +.LASF392: + .string "_INT32_EQ_LONG " +.LASF1070: + .string "CAN_BT_BS1_13TQ ((uint8_t)0x0CU)" +.LASF1648: + .string "I2C_STAT0_AERR BIT(10)" +.LASF2039: + .string "CFG0_USBPSC(regval) (BITS(22,23) & ((uint32_t)(regval) << 22))" +.LASF2589: + .string "TIMER_OC_IDLE_STATE_LOW ((uint16_t)0x0000)" +.LASF536: + .string "ADC_IOFF0(adcx) REG32((adcx) + 0x14U)" +.LASF1385: + .string "EXTI_INTEN_INTEN14 BIT(14)" +.LASF908: + .string "CAN_TSTAT_MAL1 BIT(10)" +.LASF31: + .string "__SIZEOF_POINTER__ 4" +.LASF1765: + .string "PMU_CS REG32((PMU) + 0x04U)" +.LASF598: + .string "ADC_OVSCR_DRES BITS(12,13)" +.LASF2096: + .string "RCU_PLL1_MUL10 CFG1_PLL1MF(8)" +.LASF217: + .string "__FLT32_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F32" +.LASF1808: + .string "RCU_CFG1 REG32(RCU + 0x2CU)" +.LASF1312: + .string "DMA_PERIPHERAL_WIDTH_16BIT CHCTL_PWIDTH(1U)" +.LASF2597: + .string "TIMER_OC_MODE_HIGH ((uint16_t)0x0050U)" +.LASF3017: + .string "GPIO_BC_CR12 BIT(12)" +.LASF686: + .string "ADC_RESOLUTION_12B OVSCR_DRES(0)" +.LASF2603: + .string "TIMER_OC_FAST_DISABLE ((uint16_t)0x0000)" +.LASF3085: + .string "GPIO_OSPEED_50MHZ ((uint8_t)0x03U)" +.LASF687: + .string "ADC_RESOLUTION_10B OVSCR_DRES(1)" +.LASF1961: + .string "APB2RST_REG_OFFSET 0x0CU" +.LASF2714: + .string "USART_CTL2_DENT BIT(7)" +.LASF2516: + .string "TIMER_DMACFG_DMATA_DMACFG DMACFG_DMATA(18)" +.LASF2203: + .string "SPI_STAT_I2SCH BIT(2)" +.LASF2732: + .string "USART_RECEIVE_DISABLE CTL0_REN(0)" +.LASF2351: + .string "TIMER_CTL1_ISO0N BIT(9)" +.LASF2405: + .string "TIMER_CHCTL0_CH1COMFEN BIT(10)" +.LASF2537: + .string "TIMER_EVENT_SRC_CH0G ((uint16_t)0x0002U)" +.LASF663: + .string "ADC_CHANNEL_2 ((uint8_t)0x02U)" +.LASF3143: + .string "GPIO_PIN_15 BIT(15)" +.LASF3201: + .string "RCU_TIMER3RST" +.LASF1528: + .string "FMC_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF1104: + .string "CAN_INT_TME CAN_INTEN_TMEIE" +.LASF517: + .string "AFIO_BASE (APB2_BUS_BASE + 0x00000000U)" +.LASF1615: + .string "I2C_CTL0_ARPEN BIT(4)" +.LASF2082: + .string "RCU_PREDV1_DIV6 CFG1_PREDV1(5)" +.LASF2716: + .string "USART_CTL2_CTSEN BIT(9)" +.LASF2827: + .string "__WCHAR_T__ " +.LASF2113: + .string "RCU_PLL2_MUL16 CFG1_PLL2MF(14)" +.LASF1011: + .string "BT_MODE(regval) (BITS(30,31) & ((uint32_t)(regval) << 30))" +.LASF2484: + .string "TIMER_FLAG_CH0O TIMER_INTF_CH0OF" +.LASF708: + .string "ADC_OVERSAMPLING_RATIO_MUL64 OVSCR_OVSR(5)" +.LASF1043: + .string "CAN_ERRN_2 ERR_ERRN(2U)" +.LASF2907: + .string "AFIO_EXTISS3 REG32(AFIO + 0x14U)" +.LASF1445: + .string "EXTI_FTEN_FTEN17 BIT(17)" +.LASF2007: + .string "CFG0_PLLMF(regval) (BITS(18,21) & ((uint32_t)(regval) << 18))" +.LASF2106: + .string "RCU_PLL2_MUL9 CFG1_PLL2MF(7)" +.LASF1837: + .string "RCU_INT_IRC40KSTBIF BIT(0)" +.LASF2309: + .string "GD32VF103_TIMER_H " +.LASF1018: + .string "TMDATA0_DB1(regval) (BITS(8,15) & ((uint32_t)(regval) << 8))" +.LASF1756: + .string "DBG_CTL_TIMER5_HOLD BIT(19)" +.LASF2796: + .string "_STDDEF_H_ " +.LASF722: + .string "BKP_DATA9 REG16((BKP) + 0x28U)" +.LASF2884: + .string "ECLIC_GROUP_LEVEL0_PRIO4 0" +.LASF2406: + .string "TIMER_CHCTL0_CH1COMSEN BIT(11)" +.LASF2966: + .string "GPIO_OCTL_OCTL9 BIT(9)" +.LASF3006: + .string "GPIO_BC_CR1 BIT(1)" +.LASF1805: + .string "RCU_BDCTL REG32(RCU + 0x20U)" +.LASF990: + .string "CAN_FMCFG_FMOD(regval) BIT(regval)" +.LASF1799: + .string "RCU_INT REG32(RCU + 0x08U)" +.LASF2304: + .string "I2S_FLAG_CH SPI_STAT_I2SCH" +.LASF1917: + .string "RCU_APB1EN_SPI2EN BIT(15)" +.LASF921: + .string "CAN_TSTAT_TMLS1 BIT(30)" +.LASF479: + .string "WINT_MAX (__WINT_MAX__)" +.LASF856: + .string "CAN_F12DATA1(canx) REG32((canx) + 0x2A4U)" +.LASF1016: + .string "TMI_SFID(regval) (BITS(21,31) & ((uint32_t)(regval) << 21))" +.LASF862: + .string "CAN_F18DATA1(canx) REG32((canx) + 0x2D4U)" +.LASF1565: + .string "OB_WP_2 ((uint32_t)0x00000004U)" +.LASF2788: + .string "WWDGT_STAT_EWIF BIT(0)" +.LASF3072: + .string "AFIO_PCF1_EXMC_NADV BIT(10)" +.LASF1941: + .string "RCU_RSTSCK_FWDGTRSTF BIT(29)" +.LASF1478: + .string "EXTI_PD_PD12 BIT(12)" +.LASF1023: + .string "TMDATA1_DB6(regval) (BITS(16,23) & ((uint32_t)(regval) << 16))" +.LASF3091: + .string "GPIO_PORT_SOURCE_GPIOA ((uint8_t)0x00U)" +.LASF200: + .string "__FLT16_MIN__ 6.10351562500000000000000000000000000e-5F16" +.LASF2453: + .string "TIMER_CCHP_BRKEN BIT(12)" +.LASF2054: + .string "BDCTL_RTCSRC(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF564: + .string "ADC_CTL0_DISRC BIT(11)" +.LASF295: + .string "__GCC_ATOMIC_LLONG_LOCK_FREE 1" +.LASF2056: + .string "RCU_RTCSRC_LXTAL BDCTL_RTCSRC(1)" +.LASF1235: + .string "DMA_CH0MADDR(dmax) REG32((dmax) + 0x14U)" +.LASF815: + .string "CAN_FW(canx) REG32((canx) + 0x21CU)" +.LASF3042: + .string "AFIO_PCF0_I2C0_REMAP BIT(1)" +.LASF2325: + .string "TIMER_CHCTL2(timerx) REG32((timerx) + 0x20U)" +.LASF2656: + .string "TIMER_CHVSEL_ENABLE ((uint16_t)TIMER_CFG_OUTSEL)" +.LASF2050: + .string "RCU_CKOUT0SRC_CKPLL1 CFG0_CKOUT0SEL(8)" +.LASF2287: + .string "SPI_I2S_INT_ERR ((uint8_t)0x02U)" +.LASF807: + .string "CAN_RFIFOMI1(canx) REG32((canx) + 0x1C0U)" +.LASF1471: + .string "EXTI_PD_PD5 BIT(5)" +.LASF1421: + .string "EXTI_RTEN_RTEN12 BIT(12)" +.LASF831: + .string "CAN_F15DATA0(canx) REG32((canx) + 0x2B8U)" +.LASF996: + .string "CAN_REG_VAL(canx,offset) (REG32((canx) + ((uint32_t)(offset) >> 6)))" +.LASF1659: + .string "I2C_STAT1_DUMODF BIT(7)" +.LASF531: + .string "ADC_STAT(adcx) REG32((adcx) + 0x00U)" +.LASF721: + .string "BKP_DATA8 REG16((BKP) + 0x24U)" +.LASF2752: + .string "USART_LBLEN_10B CTL1_LBLEN(0)" +.LASF2959: + .string "GPIO_OCTL_OCTL2 BIT(2)" +.LASF57: + .string "__INT_FAST8_TYPE__ int" +.LASF1594: + .string "OB_WP_31 ((uint32_t)0x80000000U)" +.LASF1167: + .string "DACC_L12DH_DAC0_DH BITS(4,15)" +.LASF2689: + .string "USART_CTL0_RBNEIE BIT(5)" +.LASF3206: + .string "RCU_SPI1RST" +.LASF1045: + .string "CAN_ERRN_4 ERR_ERRN(4U)" +.LASF956: + .string "CAN_BT_SCMOD BIT(31)" +.LASF2411: + .string "TIMER_CHCTL0_CH1CAPPSC BITS(10,11)" +.LASF3164: + .string "GPIO_SWJ_NONJTRST_REMAP ((uint32_t)0x00300100U)" +.LASF1742: + .string "DBG_ID_ID_CODE BITS(0,31)" +.LASF650: + .string "WDLT_WDLT(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF1141: + .string "DAC0_DO REG32(DAC + 0x2CU)" +.LASF2147: + .string "RTC_PSCH_PSC BITS(0,3)" +.LASF1172: + .string "DAC1_DO_DAC1_DO BITS(0,11)" +.LASF1418: + .string "EXTI_RTEN_RTEN9 BIT(9)" +.LASF720: + .string "BKP_DATA7 REG16((BKP) + 0x20U)" +.LASF1977: + .string "RCU_AHB_CKSYS_DIV1 CFG0_AHBPSC(0)" +.LASF1781: + .string "PMU_LVDT_3 CTL_LVDT(3)" +.LASF1552: + .string "OB_USER_MASK ((uint8_t)0xF0U)" +.LASF1331: + .string "ECLIC_PRIGROUP_LEVEL4_PRIO0 4" +.LASF2361: + .string "TIMER_SMCFG_ETPSC BITS(12,13)" +.LASF453: + .string "UINT64_MAX (__UINT64_MAX__)" +.LASF1638: + .string "I2C_DATA_TRB BITS(0,7)" +.LASF1707: + .string "I2C_DTCY_2 ((uint32_t)0x00000000U)" +.LASF1579: + .string "OB_WP_16 ((uint32_t)0x00010000U)" +.LASF3027: + .string "GPIO_LOCK_LK6 BIT(6)" +.LASF736: + .string "BKP_DATA23 REG16((BKP) + 0x74U)" +.LASF2866: + .string "ECLIC_INFO_OFFSET 0x4" +.LASF884: + .string "CAN_CTL_TFO BIT(2)" +.LASF1982: + .string "RCU_AHB_CKSYS_DIV64 CFG0_AHBPSC(12)" +.LASF2451: + .string "TIMER_CCHP_IOS BIT(10)" +.LASF2860: + .string "_AC(X,Y) (X ##Y)" +.LASF3063: + .string "AFIO_EXTI7_SS BITS(12, 15)" +.LASF2244: + .string "SPI_PSC_2 CTL0_PSC(0)" +.LASF896: + .string "CAN_STAT_SLPIF BIT(4)" +.LASF2667: + .string "USART_CTL0(usartx) REG32((usartx) + (0x0000000CU))" +.LASF710: + .string "ADC_OVERSAMPLING_RATIO_MUL256 OVSCR_OVSR(7)" +.LASF753: + .string "BKP_DATA40 REG16((BKP) + 0xB8U)" +.LASF1451: + .string "EXTI_SWIEV_SWIEV4 BIT(4)" +.LASF2784: + .string "WWDGT_CTL_WDGTEN BIT(7)" +.LASF1554: + .string "FMC_USPC ((uint8_t)0xBBU)" +.LASF1863: + .string "RCU_APB2RST_PCRST BIT(4)" +.LASF715: + .string "BKP_DATA2 REG16((BKP) + 0x0CU)" +.LASF1224: + .string "DAC_TRIANGLE_AMPLITUDE_1023 DAC_WAVE_BIT_WIDTH_10" +.LASF16: + .string "__SIZEOF_INT__ 4" +.LASF2898: + .string "GPIO_OCTL(gpiox) REG32((gpiox) + 0x0CU)" +.LASF1049: + .string "CAN_STATE_PENDING ((uint32_t)0x00000000U)" +.LASF384: + .string "unsigned +0" +.LASF28: + .string "__ORDER_PDP_ENDIAN__ 3412" +.LASF151: + .string "__FLT_DECIMAL_DIG__ 9" +.LASF1256: + .string "DMA_CH6CTL(dmax) REG32((dmax) + 0x80U)" +.LASF2992: + .string "GPIO_BOP_CR3 BIT(19)" +.LASF2205: + .string "SPI_STAT_CRCERR BIT(4)" +.LASF99: + .string "__INT64_MAX__ 0x7fffffffffffffffLL" +.LASF2119: + .string "RCU_I2S2SRC_CKSYS ((uint32_t)0x00000000U)" +.LASF2725: + .string "USART_BIT_POS2(val) (((uint32_t)(val) & (0x001F0000U)) >> 16)" +.LASF879: + .string "CAN_RFIFOMP(canx,bank) REG32((canx) + 0x1B4U + ((bank) * 0x10U))" +.LASF675: + .string "ADC_CHANNEL_14 ((uint8_t)0x0EU)" +.LASF1893: + .string "RCU_AHBEN_SRAMSPEN BIT(2)" +.LASF594: + .string "ADC_OVSCR_OVSEN BIT(0)" +.LASF2553: + .string "CTL0_CKDIV(regval) ((uint16_t)(BITS(8, 9) & ((uint32_t)(regval) << 8U)))" +.LASF3194: + .string "ENABLE" +.LASF1202: + .string "DAC_LFSR_BITS3_0 DAC_WAVE_BIT_WIDTH_4" +.LASF2320: + .string "TIMER_DMAINTEN(timerx) REG32((timerx) + 0x0CU)" +.LASF417: + .string "__int64_t_defined 1" +.LASF724: + .string "BKP_DATA11 REG16((BKP) + 0x44U)" +.LASF1823: + .string "RCU_CTL_PLL2STB BIT(29)" +.LASF2605: + .string "TIMER_OC_CLEAR_DISABLE ((uint16_t)0x0000U)" +.LASF379: + .string "short" +.LASF1357: + .string "EXMC_MEMORY_TYPE_SRAM SNCTL_NRTP(0)" +.LASF1465: + .string "EXTI_SWIEV_SWIEV18 BIT(18)" +.LASF1524: + .string "FMC_OBSTAT_DATA BITS(10,25)" +.LASF772: + .string "BKP_DATA_GET(regval) GET_BITS((uint32_t)(regval), 0, 15)" +.LASF2648: + .string "TIMER_EXT_TRI_PSC_OFF SMCFG_ETPSC(0)" +.LASF2084: + .string "RCU_PREDV1_DIV8 CFG1_PREDV1(7)" +.LASF992: + .string "CAN_FAFIFOR_FAF(regval) BIT(regval)" +.LASF2791: + .string "WWDGT_CFG_PSC_DIV2 CFG_PSC(1)" +.LASF3264: + .string "GNU C17 10.2.0 -march=rv32imac -mabi=ilp32 -mcmodel=medany -msmall-data-limit= 8 -march=rv32imac -g3 -O0" +.LASF1187: + .string "DAC_WAVE_BIT_WIDTH_1 DWBW(0)" +.LASF1518: + .string "FMC_CTL_ERRIE BIT(10)" +.LASF2503: + .string "TIMER_DMACFG_DMATA_SWEVG DMACFG_DMATA(5)" +.LASF871: + .string "CAN_F27DATA1(canx) REG32((canx) + 0x31CU)" +.LASF735: + .string "BKP_DATA22 REG16((BKP) + 0x70U)" +.LASF1013: + .string "FDATA_MASK_LOW(regval) (BITS(0,15) & ((uint32_t)(regval) << 0))" +.LASF193: + .string "__FLT16_MIN_EXP__ (-13)" +.LASF1741: + .string "DBG_CTL REG32(DBG + 0x04U)" +.LASF3113: + .string "GPIO_PIN_SOURCE_1 ((uint8_t)0x01U)" +.LASF2424: + .string "TIMER_CHCTL1_CH2CAPFLT BITS(4,7)" +.LASF2956: + .string "GPIO_ISTAT_ISTAT15 BIT(15)" +.LASF2186: + .string "SPI_CTL0_SWNSSEN BIT(9)" +.LASF2266: + .string "I2S_MCKOUT_DISABLE ((uint32_t)0x00000000U)" +.LASF592: + .string "ADC_RDATA_RDATA BITS(0,15)" +.LASF939: + .string "CAN_INTEN_PERRIE BIT(9)" +.LASF3065: + .string "AFIO_EXTI9_SS BITS(4, 7)" +.LASF1840: + .string "RCU_INT_HXTALSTBIF BIT(3)" +.LASF359: + .string "__SVID_VISIBLE 0" +.LASF1824: + .string "RCU_CFG0_SCS BITS(0,1)" +.LASF2393: + .string "TIMER_SWEVG_CH1G BIT(2)" +.LASF1450: + .string "EXTI_SWIEV_SWIEV3 BIT(3)" +.LASF2953: + .string "GPIO_ISTAT_ISTAT12 BIT(12)" +.LASF748: + .string "BKP_DATA35 REG16((BKP) + 0xA4U)" +.LASF1247: + .string "DMA_CH3MADDR(dmax) REG32((dmax) + 0x50U)" +.LASF1099: + .string "CAN_FILTERMODE_LIST ((uint8_t)0x01U)" +.LASF1960: + .string "APB1RST_REG_OFFSET 0x10U" +.LASF53: + .string "__UINT_LEAST8_TYPE__ unsigned char" +.LASF1607: + .string "I2C_STAT0(i2cx) REG32((i2cx) + 0x14U)" +.LASF2419: + .string "TIMER_CHCTL1_CH3COMFEN BIT(10)" +.LASF1983: + .string "RCU_AHB_CKSYS_DIV128 CFG0_AHBPSC(13)" +.LASF823: + .string "CAN_F7DATA0(canx) REG32((canx) + 0x278U)" +.LASF1947: + .string "RCU_CFG1_PLL1MF BITS(8,11)" +.LASF27: + .string "__ORDER_BIG_ENDIAN__ 4321" +.LASF723: + .string "BKP_DATA10 REG16((BKP) + 0x40U)" +.LASF940: + .string "CAN_INTEN_BOIE BIT(10)" +.LASF3231: + .string "bit_status" +.LASF3111: + .string "GPIO_EVENT_PIN_15 ((uint8_t)0x0FU)" +.LASF3082: + .string "GPIO_MODE_AF_PP ((uint8_t)0x18U)" +.LASF1227: + .string "GD32VF103_DMA_H " +.LASF221: + .string "__FLT64_MANT_DIG__ 53" +.LASF1158: + .string "DAC_SWT_SWTR1 BIT(1)" +.LASF1734: + .string "FWDGT_PSC_TIMEOUT ((uint32_t)0x000FFFFFU)" +.LASF2322: + .string "TIMER_SWEVG(timerx) REG32((timerx) + 0x14U)" +.LASF1088: + .string "CAN_FIFO0 ((uint8_t)0x00U)" +.LASF1730: + .string "FWDGT_WRITEACCESS_ENABLE ((uint16_t)0x5555U)" +.LASF2420: + .string "TIMER_CHCTL1_CH3COMSEN BIT(11)" +.LASF1669: + .string "I2C_REGIDX_BIT2(regidx,bitpos,regidx2,bitpos2) (((uint32_t)(regidx2) << 22) | (uint32_t)((bitpos2) << 16) | (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos)))" +.LASF754: + .string "BKP_DATA41 REG16((BKP) + 0xBCU)" +.LASF2090: + .string "RCU_PREDV1_DIV14 CFG1_PREDV1(13)" +.LASF1796: + .string "RCU RCU_BASE" +.LASF2470: + .string "TIMER_INT_FLAG_CH1 TIMER_INT_CH1" +.LASF252: + .string "__FLT32X_DIG__ 15" +.LASF2355: + .string "TIMER_CTL1_ISO2N BIT(13)" +.LASF2544: + .string "CTL0_CAM(regval) ((uint16_t)(BITS(5, 6) & ((uint32_t)(regval) << 5U)))" +.LASF3048: + .string "AFIO_PCF0_TIMER2_REMAP BITS(10, 11)" +.LASF1763: + .string "PMU PMU_BASE" +.LASF747: + .string "BKP_DATA34 REG16((BKP) + 0xA0U)" +.LASF2336: + .string "TIMER_DMATB(timerx) REG32((timerx) + 0x4CU)" +.LASF2267: + .string "I2S_MCKOUT_ENABLE SPI_I2SPSC_MCKOEN" +.LASF619: + .string "ADC_DATAALIGN_LEFT ADC_CTL1_DAL" +.LASF369: + .string "___int_least8_t_defined 1" +.LASF1998: + .string "RCU_CKADC_CKAPB2_DIV2 ((uint32_t)0x00000000U)" +.LASF1900: + .string "RCU_APB2EN_PBEN BIT(3)" +.LASF802: + .string "CAN_TMDATA12(canx) REG32((canx) + 0x1ACU)" +.LASF670: + .string "ADC_CHANNEL_9 ((uint8_t)0x09U)" +.LASF1622: + .string "I2C_CTL0_POAP BIT(11)" +.LASF2281: + .string "SPI_DMA_TRANSMIT ((uint8_t)0x00U)" +.LASF174: + .string "__DBL_HAS_QUIET_NAN__ 1" +.LASF3034: + .string "GPIO_LOCK_LK13 BIT(13)" +.LASF397: + .string "__FAST8 " +.LASF1773: + .string "PMU_CS_WUF BIT(0)" +.LASF648: + .string "IOFFX_IOFF(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF3086: + .string "GPIO_EVENT_PORT_GPIOA ((uint8_t)0x00U)" +.LASF572: + .string "ADC_CTL1_CLB BIT(2)" +.LASF2998: + .string "GPIO_BOP_CR9 BIT(25)" +.LASF630: + .string "CTL1_ETSIC(regval) (BITS(12,14) & ((uint32_t)(regval) << 12))" +.LASF3049: + .string "AFIO_PCF0_TIMER3_REMAP BIT(12)" +.LASF2033: + .string "RCU_PLL_MUL27 (PLLMF_4 | CFG0_PLLMF(10))" +.LASF530: + .string "ADC1 (ADC_BASE + 0x400U)" +.LASF760: + .string "BKP_OCTL_COEN BIT(7)" +.LASF2207: + .string "SPI_STAT_RXORERR BIT(6)" +.LASF1164: + .string "DAC1_R8DH_DAC1_DH BITS(0,7)" +.LASF2124: + .string "RCU_DEEPSLEEP_V_1_0 DSV_DSLPVS(2)" +.LASF2121: + .string "DSV_DSLPVS(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF2633: + .string "TIMER_TRI_OUT_SRC_O1CPRE CTL1_MMC(5)" +.LASF2478: + .string "TIMER_FLAG_CH1 TIMER_INTF_CH1IF" +.LASF1114: + .string "CAN_INT_ERRN CAN_INTEN_ERRNIE" +.LASF1065: + .string "CAN_BT_BS1_8TQ ((uint8_t)0x07U)" +.LASF310: + .string "__riscv_float_abi_soft 1" +.LASF2101: + .string "RCU_PLL1_MUL15 CFG1_PLL1MF(13)" +.LASF1233: + .string "DMA_CH0CNT(dmax) REG32((dmax) + 0x0CU)" +.LASF2672: + .string "USART_STAT_FERR BIT(1)" +.LASF2634: + .string "TIMER_TRI_OUT_SRC_O2CPRE CTL1_MMC(6)" +.LASF1593: + .string "OB_WP_30 ((uint32_t)0x40000000U)" +.LASF2048: + .string "RCU_CKOUT0SRC_HXTAL CFG0_CKOUT0SEL(6)" +.LASF1749: + .string "DBG_CTL_TIMER1_HOLD BIT(11)" +.LASF239: + .string "__FLT128_MIN_10_EXP__ (-4931)" +.LASF1370: + .string "EXTI_PD REG32(EXTI + 0x14U)" +.LASF2108: + .string "RCU_PLL2_MUL11 CFG1_PLL2MF(9)" +.LASF1680: + .string "I2C_TRANSMITTER ((uint32_t)0xFFFFFFFEU)" +.LASF709: + .string "ADC_OVERSAMPLING_RATIO_MUL128 OVSCR_OVSR(6)" +.LASF2619: + .string "TIMER_SMCFG_TRGSEL_ITI0 SMCFG_TRGSEL(0)" +.LASF3067: + .string "AFIO_EXTI11_SS BITS(12, 15)" +.LASF520: + .string "ADC_BASE (APB2_BUS_BASE + 0x00002400U)" +.LASF2154: + .string "RTC_ALRML_ALRM BITS(0,15)" +.LASF546: + .string "ADC_IDATA0(adcx) REG32((adcx) + 0x3CU)" +.LASF2177: + .string "SPI_I2SCTL(spix) REG32((spix) + 0x1CU)" +.LASF3060: + .string "AFIO_EXTI4_SS BITS(0, 3)" +.LASF1988: + .string "RCU_APB1_CKAHB_DIV2 CFG0_APB1PSC(4)" +.LASF906: + .string "CAN_TSTAT_MTF1 BIT(8)" +.LASF3075: + .string "GPIO_MODE_AIN ((uint8_t)0x00U)" +.LASF518: + .string "EXTI_BASE (APB2_BUS_BASE + 0x00000400U)" +.LASF2262: + .string "I2S_FRAMEFORMAT_DT16B_CH16B I2SCTL_DTLEN(0)" +.LASF1506: + .string "FMC_STAT_BUSY BIT(0)" +.LASF2137: + .string "RTC_ALRML REG32(RTC + 0x24U)" +.LASF428: + .string "__int_fast32_t_defined 1" +.LASF1377: + .string "EXTI_INTEN_INTEN6 BIT(6)" +.LASF595: + .string "ADC_OVSCR_OVSR BITS(2,4)" +.LASF2912: + .string "GPIO_CTL0_CTL1 BITS(6, 7)" +.LASF1838: + .string "RCU_INT_LXTALSTBIF BIT(1)" +.LASF3179: + .string "signed char" +.LASF163: + .string "__DBL_MIN_10_EXP__ (-307)" +.LASF334: + .string "HXTAL_VALUE ((uint32_t)8000000)" +.LASF611: + .string "ADC_DAUL_INSERTED_PARALLEL_REGULAL_FOLLOWUP_FAST CTL0_SYNCM(3)" +.LASF236: + .string "__FLT128_MANT_DIG__ 113" +.LASF3137: + .string "GPIO_PIN_9 BIT(9)" +.LASF134: + .string "__UINT_FAST32_MAX__ 0xffffffffU" +.LASF1874: + .string "RCU_APB1RST_TIMER4RST BIT(3)" +.LASF628: + .string "ADC0_1_EXTTRIG_REGULAR_EXTI_11 CTL1_ETSRC(6)" +.LASF1809: + .string "RCU_DSV REG32(RCU + 0x34U)" +.LASF1001: + .string "CAN_BIT_POS1(val) ((uint32_t)(val) & 0x1FU)" +.LASF43: + .string "__INT32_TYPE__ long int" +.LASF2381: + .string "TIMER_INTF_CH1IF BIT(2)" +.LASF393: + .string "__INT8 \"hh\"" +.LASF2008: + .string "RCU_PLL_MUL2 CFG0_PLLMF(0)" +.LASF2864: + .string "ECLICINTCTLBITS 4" +.LASF1487: + .string "OB OB_BASE" +.LASF3190: + .string "uint8_t" +.LASF244: + .string "__FLT128_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F128" +.LASF2754: + .string "CTL1_CLEN(regval) (BIT(8) & ((uint32_t)(regval) << 8))" +.LASF853: + .string "CAN_F9DATA1(canx) REG32((canx) + 0x28CU)" +.LASF1143: + .string "DAC_CTL_DEN0 BIT(0)" +.LASF2259: + .string "I2S_AUDIOSAMPLE_96K ((uint32_t)96000U)" +.LASF434: + .string "INT8_MAX (__INT8_MAX__)" +.LASF1483: + .string "EXTI_PD_PD17 BIT(17)" +.LASF541: + .string "ADC_WDLT(adcx) REG32((adcx) + 0x28U)" +.LASF3258: + .string "gpio_bit_set" +.LASF1066: + .string "CAN_BT_BS1_9TQ ((uint8_t)0x08U)" +.LASF3004: + .string "GPIO_BOP_CR15 BIT(31)" +.LASF121: + .string "__UINT32_C(c) c ## UL" +.LASF2902: + .string "AFIO_EC REG32(AFIO + 0x00U)" +.LASF2293: + .string "I2S_INT_FLAG_TXURERR ((uint8_t)0x05U)" +.LASF3038: + .string "AFIO_EC_PIN BITS(0, 3)" +.LASF1770: + .string "PMU_CTL_LVDEN BIT(4)" +.LASF77: + .string "__PTRDIFF_MAX__ 0x7fffffff" +.LASF2519: + .string "TIMER_DMACFG_DMATC_2TRANSFER DMACFG_DMATC(1)" +.LASF2977: + .string "GPIO_BOP_BOP4 BIT(4)" +.LASF1771: + .string "PMU_CTL_LVDT BITS(5,7)" +.LASF2647: + .string "SMCFG_ETPSC(regval) (BITS(12, 13) & ((uint32_t)(regval) << 12U))" +.LASF2944: + .string "GPIO_ISTAT_ISTAT3 BIT(3)" +.LASF1426: + .string "EXTI_RTEN_RTEN17 BIT(17)" +.LASF2202: + .string "SPI_STAT_TBE BIT(1)" +.LASF3196: + .string "RESET" +.LASF389: + .string "int +2" +.LASF13: + .string "__ATOMIC_ACQ_REL 4" +.LASF1762: + .string "GD32VF103_PMU_H " +.LASF3245: + .string "remap1" +.LASF3246: + .string "remap2" +.LASF2004: + .string "RCU_PLLSRC_IRC8M_DIV2 ((uint32_t)0x00000000U)" +.LASF2226: + .string "SPI_SLAVE ((uint32_t)0x00000000U)" +.LASF2730: + .string "CTL0_REN(regval) (BIT(2) & ((uint32_t)(regval) << 2))" +.LASF2131: + .string "RTC_PSCL REG32(RTC + 0x0CU)" +.LASF220: + .string "__FLT32_HAS_QUIET_NAN__ 1" +.LASF1084: + .string "CAN_MAILBOX2 ((uint8_t)0x02U)" +.LASF8: + .string "__VERSION__ \"10.2.0\"" +.LASF185: + .string "__LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L" +.LASF48: + .string "__UINT64_TYPE__ long long unsigned int" +.LASF1062: + .string "CAN_BT_BS1_5TQ ((uint8_t)0x04U)" +.LASF875: + .string "CAN_TMDATA1(canx,bank) REG32((canx) + 0x18CU + ((bank) * 0x10U))" +.LASF461: + .string "INT_FAST16_MAX (__INT_FAST16_MAX__)" +.LASF997: + .string "CAN_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF2389: + .string "TIMER_INTF_CH2OF BIT(11)" +.LASF2548: + .string "TIMER_COUNTER_CENTER_BOTH CTL0_CAM(3)" +.LASF3068: + .string "AFIO_EXTI12_SS BITS(0, 3)" +.LASF1162: + .string "DAC1_R12DH_DAC1_DH BITS(0,11)" +.LASF1496: + .string "FMC_PID REG32((FMC) + 0x100U)" +.LASF2887: + .string "ECLIC_GROUP_LEVEL3_PRIO1 3" +.LASF1436: + .string "EXTI_FTEN_FTEN8 BIT(8)" +.LASF515: + .string "PMU_BASE (APB1_BUS_BASE + 0x00007000U)" +.LASF1376: + .string "EXTI_INTEN_INTEN5 BIT(5)" +.LASF3130: + .string "GPIO_PIN_2 BIT(2)" +.LASF2117: + .string "RCU_I2S1SRC_CKSYS ((uint32_t)0x00000000U)" +.LASF983: + .string "CAN_RFIFOMDATA0_DB3 BITS(24,31)" +.LASF2011: + .string "RCU_PLL_MUL5 CFG0_PLLMF(3)" +.LASF454: + .string "INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1)" +.LASF286: + .string "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1" +.LASF1835: + .string "RCU_CFG0_ADCPSC_2 BIT(28)" +.LASF756: + .string "BKP_TPCTL REG16((BKP) + 0x30U)" +.LASF1727: + .string "FWDGT_PSC_DIV64 ((uint8_t)PSC_PSC(4))" +.LASF2767: + .string "USART_DENT_ENABLE CLT2_DENT(1)" +.LASF443: + .string "INT_LEAST16_MAX (__INT_LEAST16_MAX__)" +.LASF2232: + .string "SPI_TRANSMODE_BDTRANSMIT (SPI_CTL0_BDEN | SPI_CTL0_BDOEN)" +.LASF309: + .string "__riscv_xlen 32" +.LASF2517: + .string "DMACFG_DMATC(regval) (BITS(8, 12) & ((uint32_t)(regval) << 8U))" +.LASF281: + .string "__REGISTER_PREFIX__ " +.LASF2923: + .string "GPIO_CTL0_MD7 BITS(28, 29)" +.LASF20: + .string "__SIZEOF_FLOAT__ 4" +.LASF2669: + .string "USART_CTL2(usartx) REG32((usartx) + (0x00000014U))" +.LASF646: + .string "ADC_SAMPLETIME_71POINT5 SAMPTX_SPT(6)" +.LASF837: + .string "CAN_F21DATA0(canx) REG32((canx) + 0x2E8U)" +.LASF1429: + .string "EXTI_FTEN_FTEN1 BIT(1)" +.LASF2616: + .string "TIMER_IC_PSC_DIV4 ((uint16_t)0x0008U)" +.LASF986: + .string "CAN_RFIFOMDATA1_DB6 BITS(16,23)" +.LASF1269: + .string "DMA_CHXCTL_FTFIE BIT(1)" +.LASF1246: + .string "DMA_CH3PADDR(dmax) REG32((dmax) + 0x4CU)" +.LASF1411: + .string "EXTI_RTEN_RTEN2 BIT(2)" +.LASF1257: + .string "DMA_CH6CNT(dmax) REG32((dmax) + 0x84U)" +.LASF2679: + .string "USART_STAT_LBDF BIT(8)" +.LASF586: + .string "ADC_WDLT_WDLT BITS(0,11)" +.LASF855: + .string "CAN_F11DATA1(canx) REG32((canx) + 0x29CU)" +.LASF745: + .string "BKP_DATA32 REG16((BKP) + 0x98U)" +.LASF3120: + .string "GPIO_PIN_SOURCE_8 ((uint8_t)0x08U)" +.LASF1055: + .string "CAN_BT_SJW_2TQ ((uint8_t)0x01U)" +.LASF3208: + .string "RCU_USART1RST" +.LASF377: + .string "unsigned" +.LASF477: + .string "WCHAR_MIN (__WCHAR_MIN__)" +.LASF1639: + .string "I2C_STAT0_SBSEND BIT(0)" +.LASF524: + .string "CRC_BASE (AHB1_BUS_BASE + 0x0000B000U)" +.LASF1155: + .string "DAC_CTL_DWBW1 BITS(24,27)" +.LASF2471: + .string "TIMER_INT_FLAG_CH2 TIMER_INT_CH2" +.LASF2328: + .string "TIMER_CAR(timerx) REG32((timerx) + 0x2CU)" +.LASF2759: + .string "USART_CPH_2CK CTL1_CPH(1)" +.LASF2071: + .string "RCU_PREDV0_DIV12 CFG1_PREDV0(11)" +.LASF1527: + .string "FMC_PID_PID BITS(0,31)" +.LASF140: + .string "__GCC_IEC_559_COMPLEX 0" +.LASF153: + .string "__FLT_NORM_MAX__ 3.40282346638528859811704183484516925e+38F" +.LASF219: + .string "__FLT32_HAS_INFINITY__ 1" +.LASF2014: + .string "RCU_PLL_MUL8 CFG0_PLLMF(6)" +.LASF1485: + .string "GD32VF103_FMC_H " +.LASF2408: + .string "TIMER_CHCTL0_CH1COMCEN BIT(15)" +.LASF2658: + .string "GD32VF103_USART_H " +.LASF24: + .string "__CHAR_BIT__ 8" +.LASF3191: + .string "uint16_t" +.LASF2620: + .string "TIMER_SMCFG_TRGSEL_ITI1 SMCFG_TRGSEL(1)" +.LASF2606: + .string "TIMER_UPDATECTL_CCU ((uint32_t)0x00000000U)" +.LASF2762: + .string "USART_CPL_HIGH CTL1_CPL(1)" +.LASF717: + .string "BKP_DATA4 REG16((BKP) + 0x14U)" +.LASF203: + .string "__FLT16_HAS_DENORM__ 1" +.LASF1192: + .string "DAC_WAVE_BIT_WIDTH_6 DWBW(5)" +.LASF2145: + .string "RTC_CTL_CMF BIT(4)" +.LASF1171: + .string "DAC0_DO_DAC0_DO BITS(0,11)" +.LASF480: + .string "WINT_MIN (__WINT_MIN__)" +.LASF733: + .string "BKP_DATA20 REG16((BKP) + 0x68U)" +.LASF1767: + .string "PMU_CTL_STBMOD BIT(1)" +.LASF3115: + .string "GPIO_PIN_SOURCE_3 ((uint8_t)0x03U)" +.LASF1650: + .string "I2C_STAT0_PECERR BIT(12)" +.LASF336: + .string "HXTAL_STARTUP_TIMEOUT ((uint16_t)0xFFFF)" +.LASF254: + .string "__FLT32X_MIN_10_EXP__ (-307)" +.LASF1022: + .string "TMDATA1_DB5(regval) (BITS(8,15) & ((uint32_t)(regval) << 8))" +.LASF1403: + .string "EXTI_EVEN_EVEN13 BIT(13)" +.LASF2607: + .string "TIMER_UPDATECTL_CCUTRI TIMER_CTL1_CCUC" +.LASF638: + .string "ADC0_1_EXTTRIG_INSERTED_NONE CTL1_ETSIC(7)" +.LASF543: + .string "ADC_RSQ1(adcx) REG32((adcx) + 0x30U)" +.LASF59: + .string "__INT_FAST32_TYPE__ int" +.LASF744: + .string "BKP_DATA31 REG16((BKP) + 0x94U)" +.LASF92: + .string "__INTMAX_WIDTH__ 64" +.LASF2210: + .string "SPI_DATA_DATA BITS(0,15)" +.LASF1891: + .string "RCU_AHBEN_DMA0EN BIT(0)" +.LASF287: + .string "__GCC_ATOMIC_BOOL_LOCK_FREE 1" +.LASF636: + .string "ADC0_1_EXTTRIG_INSERTED_T3_TRGO CTL1_ETSIC(5)" +.LASF3031: + .string "GPIO_LOCK_LK10 BIT(10)" +.LASF1608: + .string "I2C_STAT1(i2cx) REG32((i2cx) + 0x18U)" +.LASF339: + .string "IRC40K_VALUE ((uint32_t)40000)" +.LASF1914: + .string "RCU_APB1EN_TIMER6EN BIT(5)" +.LASF907: + .string "CAN_TSTAT_MTFNERR1 BIT(9)" +.LASF671: + .string "ADC_CHANNEL_10 ((uint8_t)0x0AU)" +.LASF2214: + .string "SPI_I2SCTL_CHLEN BIT(0)" +.LASF2022: + .string "RCU_PLL_MUL16 CFG0_PLLMF(14)" +.LASF1992: + .string "CFG0_APB2PSC(regval) (BITS(11,13) & ((uint32_t)(regval) << 11))" +.LASF1545: + .string "OB_FWDGT_SW ((uint8_t)0x01U)" +.LASF2802: + .string "_PTRDIFF_T_ " +.LASF1804: + .string "RCU_APB1EN REG32(RCU + 0x1CU)" +.LASF484: + .string "UINT16_C(x) __UINT16_C(x)" +.LASF2925: + .string "GPIO_CTL1_MD8 BITS(0, 1)" +.LASF651: + .string "RSQ0_RL(regval) (BITS(20,23) & ((uint32_t)(regval) << 20))" +.LASF2367: + .string "TIMER_DMAINTEN_CH2IE BIT(3)" +.LASF716: + .string "BKP_DATA3 REG16((BKP) + 0x10U)" +.LASF848: + .string "CAN_F4DATA1(canx) REG32((canx) + 0x264U)" +.LASF1122: + .string "CRC_CTL REG32(CRC + 0x08U)" +.LASF1523: + .string "FMC_OBSTAT_USER BITS(2,9)" +.LASF319: + .string "__ELF__ 1" +.LASF1094: + .string "CAN_MODE_NORMAL ((uint8_t)0x02U)" +.LASF238: + .string "__FLT128_MIN_EXP__ (-16381)" +.LASF130: + .string "__INT_FAST64_MAX__ 0x7fffffffffffffffLL" +.LASF2384: + .string "TIMER_INTF_CMTIF BIT(5)" +.LASF2179: + .string "SPI_CTL0_CKPH BIT(0)" +.LASF3135: + .string "GPIO_PIN_7 BIT(7)" +.LASF1871: + .string "RCU_APB1RST_TIMER1RST BIT(0)" +.LASF2711: + .string "USART_CTL2_NKEN BIT(4)" +.LASF2614: + .string "TIMER_IC_PSC_DIV1 ((uint16_t)0x0000U)" +.LASF1048: + .string "CAN_ERRN_7 ERR_ERRN(7U)" +.LASF2345: + .string "TIMER_CTL1_CCSE BIT(0)" +.LASF2400: + .string "TIMER_CHCTL0_CH0COMFEN BIT(2)" +.LASF2582: + .string "TIMER_CCXN_ENABLE ((uint16_t)0x0004U)" +.LASF2433: + .string "TIMER_CHCTL2_CH1NEN BIT(6)" +.LASF2513: + .string "TIMER_DMACFG_DMATA_CH2CV DMACFG_DMATA(15)" +.LASF743: + .string "BKP_DATA30 REG16((BKP) + 0x90U)" +.LASF817: + .string "CAN_F1DATA0(canx) REG32((canx) + 0x248U)" +.LASF1806: + .string "RCU_RSTSCK REG32(RCU + 0x24U)" +.LASF971: + .string "CAN_TMDATA1_DB6 BITS(16,23)" +.LASF1229: + .string "DMA1 (DMA_BASE + 0x0400U)" +.LASF2173: + .string "SPI_DATA(spix) REG32((spix) + 0x0CU)" +.LASF2363: + .string "TIMER_SMCFG_ETP BIT(15)" +.LASF2671: + .string "USART_STAT_PERR BIT(0)" +.LASF1038: + .string "GET_ERR_TECNT(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF1772: + .string "PMU_CTL_BKPWEN BIT(8)" +.LASF1959: + .string "AHBRST_REG_OFFSET 0x28U" +.LASF433: + .string "INT8_MIN (-__INT8_MAX__ - 1)" +.LASF2348: + .string "TIMER_CTL1_MMC BITS(4,6)" +.LASF2162: + .string "RTC_FLAG_ALARM RTC_CTL_ALRMIF" +.LASF1200: + .string "DAC_LFSR_BITS1_0 DAC_WAVE_BIT_WIDTH_2" +.LASF272: + .string "__FLT64X_DECIMAL_DIG__ 36" +.LASF2852: + .string "TIMER_MTIMECMP_size 0x8" +.LASF1272: + .string "DMA_CHXCTL_DIR BIT(4)" +.LASF1457: + .string "EXTI_SWIEV_SWIEV10 BIT(10)" +.LASF867: + .string "CAN_F23DATA1(canx) REG32((canx) + 0x2FCU)" +.LASF587: + .string "ADC_RSQX_RSQN BITS(0,4)" +.LASF132: + .string "__UINT_FAST8_MAX__ 0xffffffffU" +.LASF2044: + .string "CFG0_CKOUT0SEL(regval) (BITS(24,27) & ((uint32_t)(regval) << 24))" +.LASF463: + .string "INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1)" +.LASF1700: + .string "I2C_PECTRANS_DISABLE ((uint32_t)0x00000000U)" +.LASF1969: + .string "RCU_CKSYSSRC_IRC8M CFG0_SCS(0)" +.LASF1360: + .string "EXMC_BANK0_NORSRAM_REGION0 ((uint32_t)0x00000000U)" +.LASF1002: + .string "STAT_REG_OFFSET ((uint8_t)0x04U)" +.LASF2781: + .string "WWDGT_CFG REG32((WWDGT) + 0x00000004U)" +.LASF2810: + .string "_SIZE_T " +.LASF1286: + .string "DMA_CHPADDR(dma,channel) REG32(((dma) + 0x10U) + 0x14U * (uint32_t)(channel))" +.LASF1832: + .string "RCU_CFG0_PLLMF BITS(18,21)" +.LASF2397: + .string "TIMER_SWEVG_TRGG BIT(6)" +.LASF575: + .string "ADC_CTL1_DAL BIT(11)" +.LASF2218: + .string "SPI_I2SCTL_PCMSMOD BIT(7)" +.LASF1152: + .string "DAC_CTL_DTEN1 BIT(18)" +.LASF2655: + .string "TIMER_HALLINTERFACE_DISABLE ((uint32_t)0x00000000U)" +.LASF796: + .string "CAN_TMP1(canx) REG32((canx) + 0x194U)" +.LASF673: + .string "ADC_CHANNEL_12 ((uint8_t)0x0CU)" +.LASF2100: + .string "RCU_PLL1_MUL14 CFG1_PLL1MF(12)" +.LASF170: + .string "__DBL_EPSILON__ ((double)2.22044604925031308084726333618164062e-16L)" +.LASF346: + .string "_NEWLIB_VERSION \"4.1.0\"" +.LASF1668: + .string "I2C_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF2441: + .string "TIMER_CNT_CNT BITS(0,15)" +.LASF882: + .string "CAN_CTL_IWMOD BIT(0)" +.LASF3076: + .string "GPIO_MODE_IN_FLOATING ((uint8_t)0x04U)" +.LASF1658: + .string "I2C_STAT1_HSTSMB BIT(6)" +.LASF989: + .string "CAN_FCTL_HBC1F BITS(8,13)" +.LASF2763: + .string "CLT2_DENR(regval) (BIT(6) & ((uint32_t)(regval) << 6))" +.LASF1475: + .string "EXTI_PD_PD9 BIT(9)" +.LASF707: + .string "ADC_OVERSAMPLING_RATIO_MUL32 OVSCR_OVSR(4)" +.LASF410: + .string "_UINT16_T_DECLARED " +.LASF1853: + .string "RCU_INT_LXTALSTBIC BIT(17)" +.LASF887: + .string "CAN_CTL_AWU BIT(5)" +.LASF2988: + .string "GPIO_BOP_BOP15 BIT(15)" +.LASF1131: + .string "DAC_SWT REG32(DAC + 0x04U)" +.LASF2963: + .string "GPIO_OCTL_OCTL6 BIT(6)" +.LASF3204: + .string "RCU_TIMER6RST" +.LASF326: + .string "RT_USING_NEWLIB 1" +.LASF2407: + .string "TIMER_CHCTL0_CH1COMCTL BITS(12,14)" +.LASF2401: + .string "TIMER_CHCTL0_CH0COMSEN BIT(3)" +.LASF902: + .string "CAN_TSTAT_MTFNERR0 BIT(1)" +.LASF1870: + .string "RCU_APB2RST_USART0RST BIT(14)" +.LASF125: + .string "__INT_FAST8_WIDTH__ 32" +.LASF457: + .string "INT_FAST8_MIN (-__INT_FAST8_MAX__ - 1)" +.LASF695: + .string "ADC_OVERSAMPLING_SHIFT_2B OVSCR_OVSS(2)" +.LASF2896: + .string "GPIO_CTL1(gpiox) REG32((gpiox) + 0x04U)" +.LASF944: + .string "CAN_INTEN_SLPWIE BIT(17)" +.LASF1236: + .string "DMA_CH1CTL(dmax) REG32((dmax) + 0x1CU)" +.LASF3107: + .string "GPIO_EVENT_PIN_11 ((uint8_t)0x0BU)" +.LASF605: + .string "ADC_SCAN_MODE ADC_CTL0_SM" +.LASF131: + .string "__INT_FAST64_WIDTH__ 64" +.LASF1954: + .string "RCU_REG_VAL(periph) (REG32(RCU + ((uint32_t)(periph) >> 6)))" +.LASF2662: + .string "UART4 (USART_BASE+(0x00000C00U))" +.LASF2756: + .string "USART_CLEN_EN CTL1_CLEN(1)" +.LASF344: + .string "_SYS_FEATURES_H " +.LASF840: + .string "CAN_F24DATA0(canx) REG32((canx) + 0x300U)" +.LASF2996: + .string "GPIO_BOP_CR7 BIT(23)" +.LASF1079: + .string "CAN_BT_BS2_6TQ ((uint8_t)0x05U)" +.LASF600: + .string "ADC_FLAG_EOC ADC_STAT_EOC" +.LASF655: + .string "ADC_REGULAR_INSERTED_CHANNEL ((uint8_t)0x03U)" +.LASF2457: + .string "TIMER_DMACFG_DMATA BITS(0,4)" +.LASF778: + .string "BKP_FLAG_TAMPER BKP_TPCS_TEF" +.LASF2571: + .string "TIMER_CCHP_PROT_0 CCHP_PROT(1)" +.LASF449: + .string "INT_LEAST32_MAX (__INT_LEAST32_MAX__)" +.LASF2774: + .string "USART_CTS_DISABLE CLT2_CTSEN(0)" +.LASF2837: + .string "___int_wchar_t_h " +.LASF3165: + .string "GPIO_SWJ_DISABLE_REMAP ((uint32_t)0x00300200U)" +.LASF1943: + .string "RCU_RSTSCK_LPRSTF BIT(31)" +.LASF1569: + .string "OB_WP_6 ((uint32_t)0x00000040U)" +.LASF3141: + .string "GPIO_PIN_13 BIT(13)" +.LASF2856: + .string "TIMER_REG(offset) _REG32(TIMER_CTRL_ADDR, offset)" +.LASF712: + .string "BKP BKP_BASE" +.LASF1232: + .string "DMA_CH0CTL(dmax) REG32((dmax) + 0x08U)" +.LASF1166: + .string "DACC_R12DH_DAC1_DH BITS(16,27)" +.LASF1177: + .string "DAC_TRIGGER_T4_TRGO CTL_DTSEL(3)" +.LASF1058: + .string "CAN_BT_BS1_1TQ ((uint8_t)0x00U)" +.LASF2422: + .string "TIMER_CHCTL1_CH3COMCEN BIT(15)" +.LASF2247: + .string "SPI_PSC_16 CTL0_PSC(3)" +.LASF2142: + .string "RTC_CTL_ALRMIF BIT(1)" +.LASF2171: + .string "SPI_CTL1(spix) REG32((spix) + 0x04U)" +.LASF3225: + .string "RCU_ADC0RST" +.LASF126: + .string "__INT_FAST16_MAX__ 0x7fffffff" +.LASF603: + .string "ADC_FLAG_STRC ADC_STAT_STRC" +.LASF2504: + .string "TIMER_DMACFG_DMATA_CHCTL0 DMACFG_DMATA(6)" +.LASF1443: + .string "EXTI_FTEN_FTEN15 BIT(15)" +.LASF1791: + .string "PMU_FLAG_RESET_WAKEUP ((uint8_t)0x00U)" +.LASF381: + .string "__int20__" +.LASF262: + .string "__FLT32X_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F32x" +.LASF1468: + .string "EXTI_PD_PD2 BIT(2)" +.LASF1532: + .string "FMC_REG_VALS(offset) (REG32(FMC + ((uint32_t)(offset) >> 12)))" +.LASF489: + .string "INTMAX_C(x) __INTMAX_C(x)" +.LASF168: + .string "__DBL_NORM_MAX__ ((double)1.79769313486231570814527423731704357e+308L)" +.LASF3210: + .string "RCU_UART3RST" +.LASF1024: + .string "TMDATA1_DB7(regval) (BITS(24,31) & ((uint32_t)(regval) << 24))" +.LASF2789: + .string "CFG_PSC(regval) (BITS(7,8) & ((uint32_t)(regval) << 7))" +.LASF199: + .string "__FLT16_NORM_MAX__ 6.55040000000000000000000000000000000e+4F16" +.LASF488: + .string "UINT64_C(x) __UINT64_C(x)" +.LASF1188: + .string "DAC_WAVE_BIT_WIDTH_2 DWBW(1)" +.LASF847: + .string "CAN_F3DATA1(canx) REG32((canx) + 0x25CU)" +.LASF1723: + .string "FWDGT_PSC_DIV4 ((uint8_t)PSC_PSC(0))" +.LASF2741: + .string "USART_WM_IDLE CTL0_WM(0)" +.LASF502: + .string "APB1_BUS_BASE ((uint32_t)0x40000000U)" +.LASF3051: + .string "AFIO_PCF0_PD01_REMAP BIT(15)" +.LASF554: + .string "ADC_STAT_EOIC BIT(2)" +.LASF3166: + .string "GPIO_SPI2_REMAP ((uint32_t)0x00201100U)" +.LASF1714: + .string "FWDGT_PSC REG32((FWDGT) + 0x00000004U)" +.LASF2296: + .string "SPI_FLAG_TBE SPI_STAT_TBE" +.LASF1053: + .string "CAN_SILENT_LOOPBACK_MODE ((uint8_t)0x03U)" +.LASF2332: + .string "TIMER_CH2CV(timerx) REG32((timerx) + 0x3CU)" +.LASF3078: + .string "GPIO_MODE_IPU ((uint8_t)0x48U)" +.LASF1087: + .string "CAN_FF_EXTENDED ((uint32_t)0x00000004U)" +.LASF2844: + .string "NULL ((void *)0)" +.LASF444: + .string "UINT_LEAST16_MAX (__UINT_LEAST16_MAX__)" +.LASF1661: + .string "I2C_CKCFG_CLKC BITS(0,11)" +.LASF1476: + .string "EXTI_PD_PD10 BIT(10)" +.LASF1111: + .string "CAN_INT_WERR CAN_INTEN_WERRIE" +.LASF1811: + .string "RCU_CTL_IRC8MSTB BIT(1)" +.LASF1596: + .string "FMC_TIMEOUT_COUNT ((uint32_t)0x000F0000U)" +.LASF2191: + .string "SPI_CTL0_BDOEN BIT(14)" +.LASF2360: + .string "TIMER_SMCFG_ETFC BITS(8,11)" +.LASF1317: + .string "DMA_MEMORY_WIDTH_32BIT CHCTL_MWIDTH(2U)" +.LASF697: + .string "ADC_OVERSAMPLING_SHIFT_4B OVSCR_OVSS(4)" +.LASF1199: + .string "DAC_LFSR_BIT0 DAC_WAVE_BIT_WIDTH_1" +.LASF614: + .string "ADC_DAUL_REGULAL_PARALLEL CTL0_SYNCM(6)" +.LASF3170: + .string "AFIO_EXTI_SOURCE_FIELDS ((uint8_t)0x04U)" +.LASF1454: + .string "EXTI_SWIEV_SWIEV7 BIT(7)" +.LASF285: + .string "__CHAR_UNSIGNED__ 1" +.LASF928: + .string "CAN_RFIFO1_RFF1 BIT(3)" +.LASF3024: + .string "GPIO_LOCK_LK3 BIT(3)" +.LASF792: + .string "CAN_TMP0(canx) REG32((canx) + 0x184U)" +.LASF2939: + .string "GPIO_CTL1_MD15 BITS(28, 29)" +.LASF1105: + .string "CAN_INT_RFNE0 CAN_INTEN_RFNEIE0" +.LASF1305: + .string "DMA_MEMORY_TO_PERIPHERAL ((uint8_t)0x01U)" +.LASF1265: + .string "DMA_INTC_FTFIFC BIT(1)" +.LASF2372: + .string "TIMER_DMAINTEN_UPDEN BIT(8)" +.LASF1151: + .string "DAC_CTL_DBOFF1 BIT(17)" +.LASF1419: + .string "EXTI_RTEN_RTEN10 BIT(10)" +.LASF505: + .string "AHB3_BUS_BASE ((uint32_t)0x60000000U)" +.LASF2822: + .string "_GCC_SIZE_T " +.LASF2968: + .string "GPIO_OCTL_OCTL11 BIT(11)" +.LASF2665: + .string "USART_DATA(usartx) REG32((usartx) + (0x00000004U))" +.LASF1571: + .string "OB_WP_8 ((uint32_t)0x00000100U)" +.LASF2880: + .string "MSIP_HANDLER eclic_msip_handler" +.LASF375: + .string "__STDINT_EXP(x) __ ##x ##__" +.LASF777: + .string "TAMPER_PIN_ACTIVE_LOW ((uint16_t)0x0002U)" +.LASF1234: + .string "DMA_CH0PADDR(dmax) REG32((dmax) + 0x10U)" +.LASF2842: + .string "__need_wchar_t" +.LASF3055: + .string "AFIO_PCF0_TIMER1_ITI1_REMAP BIT(29)" +.LASF974: + .string "CAN_RFIFOMI_FF BIT(2)" +.LASF139: + .string "__GCC_IEC_559 0" +.LASF3140: + .string "GPIO_PIN_12 BIT(12)" +.LASF320: + .string "USE_PLIC 1" +.LASF206: + .string "__FLT32_MANT_DIG__ 24" +.LASF3205: + .string "RCU_WWDGTRST" +.LASF3159: + .string "GPIO_CAN0_PARTIAL_REMAP ((uint32_t)0x001D4000U)" +.LASF1505: + .string "FMC_OBKEY_OBKEY BITS(0,31)" +.LASF321: + .string "USE_M_TIME 1" +.LASF1221: + .string "DAC_TRIANGLE_AMPLITUDE_127 DAC_WAVE_BIT_WIDTH_7" +.LASF2380: + .string "TIMER_INTF_CH0IF BIT(1)" +.LASF2705: + .string "USART_CTL1_STB BITS(12,13)" +.LASF1493: + .string "FMC_ADDR REG32((FMC) + 0x14U)" +.LASF2454: + .string "TIMER_CCHP_BRKP BIT(13)" +.LASF2795: + .string "_STDDEF_H " +.LASF1303: + .string "DMA_INT_ERR DMA_CHXCTL_ERRIE" +.LASF1686: + .string "I2C_DUADEN_ENABLE ((uint32_t)0x00000001U)" +.LASF1458: + .string "EXTI_SWIEV_SWIEV11 BIT(11)" +.LASF2811: + .string "_SYS_SIZE_T_H " +.LASF80: + .string "__SHRT_WIDTH__ 16" +.LASF2279: + .string "I2S_CKPL_LOW ((uint32_t)0x00000000U)" +.LASF2800: + .string "_T_PTRDIFF " +.LASF67: + .string "__GXX_ABI_VERSION 1014" +.LASF1492: + .string "FMC_CTL REG32((FMC) + 0x10U)" +.LASF1447: + .string "EXTI_SWIEV_SWIEV0 BIT(0)" +.LASF684: + .string "ADC_INT_FLAG_EOIC ADC_STAT_EOIC" +.LASF1019: + .string "TMDATA0_DB2(regval) (BITS(16,23) & ((uint32_t)(regval) << 16))" +.LASF361: + .string "__SSP_FORTIFY_LEVEL 0" +.LASF2168: + .string "SPI1 SPI_BASE" +.LASF2132: + .string "RTC_DIVH REG32(RTC + 0x10U)" +.LASF2815: + .string "_SIZE_T_ " +.LASF2075: + .string "RCU_PREDV0_DIV16 CFG1_PREDV0(15)" +.LASF659: + .string "ADC_INSERTED_CHANNEL_2 ((uint8_t)0x02U)" +.LASF2272: + .string "I2S_MODE_MASTERRX I2SCTL_I2SOPMOD(3)" +.LASF2530: + .string "TIMER_DMACFG_DMATC_13TRANSFER DMACFG_DMATC(12)" +.LASF288: + .string "__GCC_ATOMIC_CHAR_LOCK_FREE 1" +.LASF115: + .string "__INT_LEAST64_WIDTH__ 64" +.LASF1204: + .string "DAC_LFSR_BITS5_0 DAC_WAVE_BIT_WIDTH_6" +.LASF2076: + .string "CFG1_PREDV1(regval) (BITS(4,7) & ((uint32_t)(regval) << 4))" +.LASF2089: + .string "RCU_PREDV1_DIV13 CFG1_PREDV1(12)" +.LASF783: + .string "CAN_CTL(canx) REG32((canx) + 0x00U)" +.LASF3261: + .string "speed" +.LASF280: + .string "__FLT64X_HAS_QUIET_NAN__ 1" +.LASF569: + .string "ADC_CTL0_RWDEN BIT(23)" +.LASF2934: + .string "GPIO_CTL1_CTL12 BITS(18, 19)" +.LASF2404: + .string "TIMER_CHCTL0_CH1MS BITS(8,9)" +.LASF2549: + .string "TIMER_PSC_RELOAD_NOW TIMER_SWEVG_UPG" +.LASF2592: + .string "TIMER_OC_MODE_TIMING ((uint16_t)0x0000U)" +.LASF2990: + .string "GPIO_BOP_CR1 BIT(17)" +.LASF58: + .string "__INT_FAST16_TYPE__ int" +.LASF890: + .string "CAN_CTL_SWRST BIT(15)" +.LASF2558: + .string "TIMER_SP_MODE_REPETITIVE ((uint32_t)0x00000000U)" +.LASF699: + .string "ADC_OVERSAMPLING_SHIFT_6B OVSCR_OVSS(6)" +.LASF641: + .string "ADC_SAMPLETIME_7POINT5 SAMPTX_SPT(1)" +.LASF3254: + .string "data" +.LASF3114: + .string "GPIO_PIN_SOURCE_2 ((uint8_t)0x02U)" +.LASF268: + .string "__FLT64X_MIN_EXP__ (-16381)" +.LASF1632: + .string "I2C_SADDR0_ADDRESS0 BIT(0)" +.LASF2236: + .string "SPI_NSS_HARD ((uint32_t)0x00000000U)" +.LASF2987: + .string "GPIO_BOP_BOP14 BIT(14)" +.LASF1930: + .string "RCU_BDCTL_LXTALSTB BIT(1)" +.LASF2031: + .string "RCU_PLL_MUL25 (PLLMF_4 | CFG0_PLLMF(8))" +.LASF822: + .string "CAN_F6DATA0(canx) REG32((canx) + 0x270U)" +.LASF544: + .string "ADC_RSQ2(adcx) REG32((adcx) + 0x34U)" +.LASF337: + .string "IRC8M_VALUE ((uint32_t)8000000)" +.LASF1463: + .string "EXTI_SWIEV_SWIEV16 BIT(16)" +.LASF87: + .string "__SIZE_WIDTH__ 32" +.LASF1252: + .string "DMA_CH5CTL(dmax) REG32((dmax) + 0x6CU)" +.LASF1075: + .string "CAN_BT_BS2_2TQ ((uint8_t)0x01U)" +.LASF714: + .string "BKP_DATA1 REG16((BKP) + 0x08U)" +.LASF2812: + .string "_T_SIZE_ " +.LASF2246: + .string "SPI_PSC_8 CTL0_PSC(2)" +.LASF2729: + .string "USART_CTL2_REG_OFFSET (0x00000014U)" +.LASF2596: + .string "TIMER_OC_MODE_LOW ((uint16_t)0x0040U)" +.LASF2889: + .string "GPIOA (GPIO_BASE + 0x00000000U)" +.LASF1985: + .string "RCU_AHB_CKSYS_DIV512 CFG0_AHBPSC(15)" +.LASF1885: + .string "RCU_APB1RST_I2C1RST BIT(22)" +.LASF473: + .string "SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)" +.LASF2463: + .string "TIMER_INT_CH2 TIMER_DMAINTEN_CH2IE" +.LASF492: + .string "REG16(addr) (*(volatile uint16_t *)(uint32_t)(addr))" +.LASF2659: + .string "USART1 USART_BASE" +.LASF2954: + .string "GPIO_ISTAT_ISTAT13 BIT(13)" +.LASF2270: + .string "I2S_MODE_SLAVERX I2SCTL_I2SOPMOD(1)" +.LASF442: + .string "INT_LEAST16_MIN (-__INT_LEAST16_MAX__ - 1)" +.LASF1831: + .string "RCU_CFG0_PREDV0_LSB BIT(17)" +.LASF1212: + .string "DAC_ALIGN_12B_R DATA_ALIGN(0)" +.LASF538: + .string "ADC_IOFF2(adcx) REG32((adcx) + 0x1CU)" +.LASF2373: + .string "TIMER_DMAINTEN_CH0DEN BIT(9)" +.LASF52: + .string "__INT_LEAST64_TYPE__ long long int" +.LASF3260: + .string "mode" +.LASF713: + .string "BKP_DATA0 REG16((BKP) + 0x04U)" +.LASF1848: + .string "RCU_INT_HXTALSTBIE BIT(11)" +.LASF1090: + .string "CAN_RFIF_RFL_MASK ((uint32_t)0x00000003U)" +.LASF3092: + .string "GPIO_PORT_SOURCE_GPIOB ((uint8_t)0x01U)" +.LASF1850: + .string "RCU_INT_PLL1STBIE BIT(13)" +.LASF1383: + .string "EXTI_INTEN_INTEN12 BIT(12)" +.LASF2105: + .string "RCU_PLL2_MUL8 CFG1_PLL2MF(6)" +.LASF1530: + .string "FMC_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF2383: + .string "TIMER_INTF_CH3IF BIT(4)" +.LASF1068: + .string "CAN_BT_BS1_11TQ ((uint8_t)0x0AU)" +.LASF770: + .string "BKP_DATA0_9(number) REG16((BKP) + 0x04U + (number) * 0x04U)" +.LASF1206: + .string "DAC_LFSR_BITS7_0 DAC_WAVE_BIT_WIDTH_8" +.LASF1397: + .string "EXTI_EVEN_EVEN7 BIT(7)" +.LASF1618: + .string "I2C_CTL0_SS BIT(7)" +.LASF632: + .string "ADC0_1_EXTTRIG_INSERTED_T0_CH3 CTL1_ETSIC(1)" +.LASF2857: + .string "TIMER_FREQ ((uint32_t)SystemCoreClock/4)" +.LASF2256: + .string "I2S_AUDIOSAMPLE_32K ((uint32_t)32000U)" +.LASF2636: + .string "SMCFG_SMC(regval) (BITS(0, 2) & ((uint32_t)(regval) << 0U))" +.LASF240: + .string "__FLT128_MAX_EXP__ 16384" +.LASF1629: + .string "I2C_CTL1_BUFIE BIT(10)" +.LASF2201: + .string "SPI_STAT_RBNE BIT(0)" +.LASF1693: + .string "I2C_DMA_ON I2C_CTL1_DMAON" +.LASF1415: + .string "EXTI_RTEN_RTEN6 BIT(6)" +.LASF3081: + .string "GPIO_MODE_AF_OD ((uint8_t)0x1CU)" +.LASF2775: + .string "CTL2_IRLP(regval) (BIT(2) & ((uint32_t)(regval) << 2))" +.LASF2522: + .string "TIMER_DMACFG_DMATC_5TRANSFER DMACFG_DMATC(4)" +.LASF1179: + .string "DAC_TRIGGER_T3_TRGO CTL_DTSEL(5)" +.LASF2220: + .string "SPI_I2SCTL_I2SEN BIT(10)" +.LASF1600: + .string "I2C0 I2C_BASE" +.LASF405: + .string "_SYS__STDINT_H " +.LASF1186: + .string "DWBW(regval) (BITS(8,11) & ((uint32_t)(regval) << 8))" +.LASF3188: + .string "long long int" +.LASF164: + .string "__DBL_MAX_EXP__ 1024" +.LASF2427: + .string "TIMER_CHCTL2_CH0EN BIT(0)" +.LASF91: + .string "__UINTMAX_C(c) c ## ULL" +.LASF1706: + .string "DATA_RECV(regval) GET_BITS((uint32_t)(regval), 0, 7)" +.LASF2321: + .string "TIMER_INTF(timerx) REG32((timerx) + 0x10U)" +.LASF2176: + .string "SPI_TCRC(spix) REG32((spix) + 0x18U)" +.LASF701: + .string "ADC_OVERSAMPLING_SHIFT_8B OVSCR_OVSS(8)" +.LASF1692: + .string "I2C_SRESET_RESET ((uint32_t)0x00000000U)" +.LASF297: + .string "__GCC_ATOMIC_POINTER_LOCK_FREE 2" +.LASF1380: + .string "EXTI_INTEN_INTEN9 BIT(9)" +.LASF3134: + .string "GPIO_PIN_6 BIT(6)" +.LASF1071: + .string "CAN_BT_BS1_14TQ ((uint8_t)0x0DU)" +.LASF1949: + .string "RCU_CFG1_PREDV0SEL BIT(16)" +.LASF2906: + .string "AFIO_EXTISS2 REG32(AFIO + 0x10U)" +.LASF516: + .string "DAC_BASE (APB1_BUS_BASE + 0x00007400U)" +.LASF1526: + .string "FMC_WSEN_WSEN BIT(0)" +.LASF2112: + .string "RCU_PLL2_MUL15 CFG1_PLL2MF(13)" +.LASF2418: + .string "TIMER_CHCTL1_CH3MS BITS(8,9)" +.LASF873: + .string "CAN_TMP(canx,bank) REG32((canx) + 0x184U + ((bank) * 0x10U))" +.LASF3218: + .string "RCU_DACRST" +.LASF1886: + .string "RCU_APB1RST_CAN0RST BIT(25)" +.LASF3151: + .string "GPIO_TIMER0_PARTIAL_REMAP ((uint32_t)0x00160040U)" +.LASF3077: + .string "GPIO_MODE_IPD ((uint8_t)0x28U)" +.LASF1390: + .string "EXTI_EVEN_EVEN0 BIT(0)" +.LASF878: + .string "CAN_RFIFOMI(canx,bank) REG32((canx) + 0x1B0U + ((bank) * 0x10U))" +.LASF1223: + .string "DAC_TRIANGLE_AMPLITUDE_511 DAC_WAVE_BIT_WIDTH_9" +.LASF682: + .string "ADC_INT_FLAG_WDE ADC_STAT_WDE" +.LASF2765: + .string "USART_DENR_DISABLE CLT2_DENR(0)" +.LASF3032: + .string "GPIO_LOCK_LK11 BIT(11)" +.LASF137: + .string "__INTPTR_WIDTH__ 32" +.LASF2223: + .string "SPI_I2SPSC_OF BIT(8)" +.LASF12: + .string "__ATOMIC_RELEASE 3" +.LASF1138: + .string "DACC_R12DH REG32(DAC + 0x20U)" +.LASF2918: + .string "GPIO_CTL0_CTL4 BITS(18, 19)" +.LASF458: + .string "INT_FAST8_MAX (__INT_FAST8_MAX__)" +.LASF1294: + .string "DMA_INT_FLAG_FTF DMA_INTF_FTFIF" +.LASF2412: + .string "TIMER_CHCTL0_CH1CAPFLT BITS(12,15)" +.LASF589: + .string "ADC_ISQ_ISQN BITS(0,4)" +.LASF1289: + .string "DMA_CHCNT_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF2151: + .string "RTC_CNTH_CNT BITS(0,15)" +.LASF2053: + .string "RCU_CKOUT0SRC_CKPLL2 CFG0_CKOUT0SEL(11)" +.LASF2873: + .string "ECLIC_INT_ATTR_TRIG_EDGE 0x02" +.LASF1556: + .string "OB_SPC_SPC_N ((uint32_t)0x0000FF00U)" +.LASF780: + .string "GD32VF103_CAN_H " +.LASF961: + .string "CAN_TMI_SFID BITS(21,31)" +.LASF1292: + .string "DMA_CHINTF_RESET_VALUE (DMA_INTF_GIF | DMA_INTF_FTFIF | DMA_INTF_HTFIF | DMA_INTF_ERRIF)" +.LASF1388: + .string "EXTI_INTEN_INTEN17 BIT(17)" +.LASF749: + .string "BKP_DATA36 REG16((BKP) + 0xA8U)" +.LASF1652: + .string "I2C_STAT0_SMBALT BIT(15)" +.LASF2286: + .string "SPI_I2S_INT_RBNE ((uint8_t)0x01U)" +.LASF1218: + .string "DAC_TRIANGLE_AMPLITUDE_15 DAC_WAVE_BIT_WIDTH_4" +.LASF1911: + .string "RCU_APB1EN_TIMER3EN BIT(2)" +.LASF2029: + .string "RCU_PLL_MUL23 (PLLMF_4 | CFG0_PLLMF(6))" +.LASF143: + .string "__DEC_EVAL_METHOD__ 2" +.LASF3056: + .string "AFIO_EXTI0_SS BITS(0, 3)" +.LASF2568: + .string "TIMER_OUTAUTO_DISABLE ((uint16_t)0x0000U)" +.LASF3018: + .string "GPIO_BC_CR13 BIT(13)" +.LASF225: + .string "__FLT64_MAX_EXP__ 1024" +.LASF1896: + .string "RCU_AHBEN_EXMCEN BIT(8)" +.LASF1213: + .string "DAC_ALIGN_12B_L DATA_ALIGN(1)" +.LASF2941: + .string "GPIO_ISTAT_ISTAT0 BIT(0)" +.LASF2747: + .string "USART_STB_1BIT CTL1_STB(0)" +.LASF1890: + .string "RCU_APB1RST_DACRST BIT(29)" +.LASF2886: + .string "ECLIC_GROUP_LEVEL2_PRIO2 2" +.LASF1663: + .string "I2C_CKCFG_FAST BIT(15)" +.LASF2786: + .string "WWDGT_CFG_PSC BITS(7,8)" +.LASF893: + .string "CAN_STAT_SLPWS BIT(1)" +.LASF2758: + .string "USART_CPH_1CK CTL1_CPH(0)" +.LASF1243: + .string "DMA_CH2MADDR(dmax) REG32((dmax) + 0x3CU)" +.LASF1036: + .string "GET_RFIFOMDATA1_DB7(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF2180: + .string "SPI_CTL0_CKPL BIT(1)" +.LASF2590: + .string "TIMER_OCN_IDLE_STATE_HIGH ((uint16_t)0x0200U)" +.LASF1435: + .string "EXTI_FTEN_FTEN7 BIT(7)" +.LASF1007: + .string "BT_BAUDPSC(regval) (BITS(0,9) & ((uint32_t)(regval) << 0))" +.LASF1501: + .string "OB_WP2 REG16((OB) + 0x0CU)" +.LASF1578: + .string "OB_WP_15 ((uint32_t)0x00008000U)" +.LASF2225: + .string "SPI_MASTER (SPI_CTL0_MSTMOD | SPI_CTL0_SWNSS)" +.LASF1032: + .string "GET_RFIFOMDATA0_DB3(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF588: + .string "ADC_RSQ0_RL BITS(20,23)" +.LASF5: + .string "__GNUC__ 10" +.LASF841: + .string "CAN_F25DATA0(canx) REG32((canx) + 0x308U)" +.LASF2496: + .string "TIMER_DMAREQUEST_CHANNELEVENT ((uint32_t)0x00000000U)" +.LASF3247: + .string "temp_reg" +.LASF2780: + .string "WWDGT_CTL REG32((WWDGT) + 0x00000000U)" +.LASF1817: + .string "RCU_CTL_CKMEN BIT(19)" +.LASF1994: + .string "RCU_APB2_CKAHB_DIV2 CFG0_APB2PSC(4)" +.LASF679: + .string "ADC_INT_WDE ADC_STAT_WDE" +.LASF161: + .string "__DBL_DIG__ 15" +.LASF1028: + .string "GET_RFIFOMP_FI(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF2398: + .string "TIMER_SWEVG_BRKG BIT(7)" +.LASF1301: + .string "DMA_INT_FTF DMA_CHXCTL_FTFIE" +.LASF2152: + .string "RTC_CNTL_CNT BITS(0,15)" +.LASF181: + .string "__DECIMAL_DIG__ 36" +.LASF97: + .string "__INT16_MAX__ 0x7fff" +.LASF2938: + .string "GPIO_CTL1_CTL14 BITS(26, 27)" +.LASF2829: + .string "_T_WCHAR_ " +.LASF1760: + .string "DBG_LOW_POWER_DEEPSLEEP DBG_CTL_DSLP_HOLD" +.LASF2028: + .string "RCU_PLL_MUL22 (PLLMF_4 | CFG0_PLLMF(5))" +.LASF985: + .string "CAN_RFIFOMDATA1_DB5 BITS(8,15)" +.LASF1933: + .string "RCU_BDCTL_RTCEN BIT(15)" +.LASF2546: + .string "TIMER_COUNTER_CENTER_DOWN CTL0_CAM(1)" +.LASF1326: + .string "GD32VF103_ECLIC_H " +.LASF1704: + .string "I2C_ARP_DISABLE ((uint32_t)0x00000000U)" +.LASF495: + .string "BITS(start,end) ((0xFFFFFFFFUL << (start)) & (0xFFFFFFFFUL >> (31U - (uint32_t)(end))))" +.LASF470: + .string "INTMAX_MIN (-INTMAX_MAX - 1)" +.LASF1481: + .string "EXTI_PD_PD15 BIT(15)" +.LASF1776: + .string "PMU_CS_WUPEN BIT(8)" +.LASF791: + .string "CAN_TMI0(canx) REG32((canx) + 0x180U)" +.LASF1822: + .string "RCU_CTL_PLL2EN BIT(28)" +.LASF1841: + .string "RCU_INT_PLLSTBIF BIT(4)" +.LASF2846: + .string "offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)" +.LASF1161: + .string "DAC0_R8DH_DAC0_DH BITS(0,7)" +.LASF2824: + .string "__size_t " +.LASF2261: + .string "I2SCTL_DTLEN(regval) (BITS(1,2) & ((uint32_t)(regval) << 1))" +.LASF358: + .string "__POSIX_VISIBLE 199009" +.LASF3253: + .string "gpio_port_write" +.LASF1849: + .string "RCU_INT_PLLSTBIE BIT(12)" +.LASF1951: + .string "RCU_CFG1_I2S2SEL BIT(18)" +.LASF119: + .string "__UINT16_C(c) c" +.LASF3154: + .string "GPIO_TIMER1_PARTIAL_REMAP1 ((uint32_t)0x00180200U)" +.LASF1424: + .string "EXTI_RTEN_RTEN15 BIT(15)" +.LASF2869: + .string "ECLIC_INT_IE_OFFSET _AC(0x1001,UL)" +.LASF2445: + .string "TIMER_CH0CV_CH0VAL BITS(0,15)" +.LASF2473: + .string "TIMER_INT_FLAG_CMT TIMER_INT_CMT" +.LASF2701: + .string "USART_CTL1_CLEN BIT(8)" +.LASF836: + .string "CAN_F20DATA0(canx) REG32((canx) + 0x2E0U)" +.LASF1795: + .string "GD32VF103_RCU_H " +.LASF2314: + .string "TIMER4 (TIMER_BASE + 0x00000C00U)" +.LASF373: + .string "__EXP" +.LASF290: + .string "__GCC_ATOMIC_CHAR32_T_LOCK_FREE 2" +.LASF1601: + .string "I2C1 (I2C_BASE + 0x00000400U)" +.LASF1827: + .string "RCU_CFG0_APB1PSC BITS(8,10)" +.LASF3217: + .string "RCU_PMURST" +.LASF547: + .string "ADC_IDATA1(adcx) REG32((adcx) + 0x40U)" +.LASF1877: + .string "RCU_APB1RST_WWDGTRST BIT(11)" +.LASF3242: + .string "gpio_pin_remap_config" +.LASF263: + .string "__FLT32X_HAS_DENORM__ 1" +.LASF2890: + .string "GPIOB (GPIO_BASE + 0x00000400U)" +.LASF2637: + .string "TIMER_SLAVE_MODE_DISABLE SMCFG_SMC(0)" +.LASF1975: + .string "RCU_SCSS_PLL CFG0_SCSS(2)" +.LASF920: + .string "CAN_TSTAT_TMLS0 BIT(29)" +.LASF1537: + .string "FMC_CTL_REG_OFFSET 0x10U" +.LASF2722: + .string "USART_BIT_POS(val) ((uint32_t)(val) & (0x0000001FU))" +.LASF1276: + .string "DMA_CHXCTL_PWIDTH BITS(8,9)" +.LASF769: + .string "BKP_TPCS_TIF BIT(9)" +.LASF527: + .string "GD32VF103_LIBOPT_H " +.LASF2358: + .string "TIMER_SMCFG_TRGS BITS(4,6)" +.LASF3014: + .string "GPIO_BC_CR9 BIT(9)" +.LASF2446: + .string "TIMER_CH1CV_CH1VAL BITS(0,15)" +.LASF372: + .string "___int_least64_t_defined 1" +.LASF2666: + .string "USART_BAUD(usartx) REG32((usartx) + (0x00000008U))" +.LASF210: + .string "__FLT32_MAX_EXP__ 128" +.LASF3109: + .string "GPIO_EVENT_PIN_13 ((uint8_t)0x0DU)" +.LASF861: + .string "CAN_F17DATA1(canx) REG32((canx) + 0x24CU)" +.LASF1348: + .string "EXMC_SNTCFG_AHLD BITS(4,7)" +.LASF3080: + .string "GPIO_MODE_OUT_PP ((uint8_t)0x10U)" +.LASF2792: + .string "WWDGT_CFG_PSC_DIV4 CFG_PSC(2)" +.LASF2893: + .string "GPIOE (GPIO_BASE + 0x00001000U)" +.LASF3219: + .string "RCU_AFRST" +.LASF2865: + .string "ECLIC_CFG_OFFSET 0x0" +.LASF2448: + .string "TIMER_CH3CV_CH3VAL BITS(0,15)" +.LASF2539: + .string "TIMER_EVENT_SRC_CH2G ((uint16_t)0x0008U)" +.LASF1092: + .string "CAN_EFID_MASK ((uint32_t)0x1FFFFFFFU)" +.LASF1117: + .string "CAN_INT_SLPW CAN_INTEN_SLPWIE" +.LASF2447: + .string "TIMER_CH2CV_CH2VAL BITS(0,15)" +.LASF266: + .string "__FLT64X_MANT_DIG__ 113" +.LASF1154: + .string "DAC_CTL_DWM1 BITS(22,23)" +.LASF1735: + .string "FWDGT_RLD_TIMEOUT ((uint32_t)0x000FFFFFU)" +.LASF3105: + .string "GPIO_EVENT_PIN_9 ((uint8_t)0x09U)" +.LASF1567: + .string "OB_WP_4 ((uint32_t)0x00000010U)" +.LASF471: + .string "UINTMAX_MAX (__UINTMAX_MAX__)" +.LASF917: + .string "CAN_TSTAT_TME0 BIT(26)" +.LASF662: + .string "ADC_CHANNEL_1 ((uint8_t)0x01U)" +.LASF1268: + .string "DMA_CHXCTL_CHEN BIT(0)" +.LASF1551: + .string "OB_BOOT_B0 ((uint8_t)0x08U)" +.LASF3200: + .string "RCU_TIMER2RST" +.LASF2086: + .string "RCU_PREDV1_DIV10 CFG1_PREDV1(9)" +.LASF192: + .string "__FLT16_DIG__ 3" +.LASF2538: + .string "TIMER_EVENT_SRC_CH1G ((uint16_t)0x0004U)" +.LASF2861: + .string "_AT(T,X) ((T)(X))" +.LASF3178: + .string "unsigned int" +.LASF2174: + .string "SPI_CRCPOLY(spix) REG32((spix) + 0x10U)" +.LASF1662: + .string "I2C_CKCFG_DTCY BIT(14)" +.LASF1987: + .string "RCU_APB1_CKAHB_DIV1 CFG0_APB1PSC(0)" +.LASF3252: + .string "gpio_input_bit_get" +.LASF1612: + .string "I2C_CTL0_I2CEN BIT(0)" +.LASF771: + .string "BKP_DATA10_41(number) REG16((BKP) + 0x40U + ((number)-10U) * 0x04U)" +.LASF2334: + .string "TIMER_CCHP(timerx) REG32((timerx) + 0x44U)" +.LASF415: + .string "_INT64_T_DECLARED " +.LASF2476: + .string "TIMER_FLAG_UP TIMER_INTF_UPIF" +.LASF2975: + .string "GPIO_BOP_BOP2 BIT(2)" +.LASF2572: + .string "TIMER_CCHP_PROT_1 CCHP_PROT(2)" +.LASF2649: + .string "TIMER_EXT_TRI_PSC_DIV2 SMCFG_ETPSC(1)" +.LASF1160: + .string "DAC0_L12DH_DAC0_DH BITS(4,15)" +.LASF2922: + .string "GPIO_CTL0_CTL6 BITS(26, 27)" +.LASF1549: + .string "OB_STDBY_NRST ((uint8_t)0x04U)" +.LASF1300: + .string "DMA_FLAG_ERR DMA_INTF_ERRIF" + .ident "GCC: (xPack GNU RISC-V Embedded GCC x86_64) 10.2.0" diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_i2c.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_i2c.c new file mode 100644 index 0000000000..3eee3dab7e --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_i2c.c @@ -0,0 +1,728 @@ +/*! + \file gd32vf103_i2c.c + \brief I2C driver + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "gd32vf103_i2c.h" + +/* I2C register bit mask */ +#define I2CCLK_MAX ((uint32_t)0x00000036U) /*!< i2cclk maximum value */ +#define I2CCLK_MIN ((uint32_t)0x00000002U) /*!< i2cclk minimum value */ +#define I2C_FLAG_MASK ((uint32_t)0x0000FFFFU) /*!< i2c flag mask */ +#define I2C_ADDRESS_MASK ((uint32_t)0x000003FFU) /*!< i2c address mask */ +#define I2C_ADDRESS2_MASK ((uint32_t)0x000000FEU) /*!< the second i2c address mask */ + +/* I2C register bit offset */ +#define STAT1_PECV_OFFSET ((uint32_t)8U) /* bit offset of PECV in I2C_STAT1 */ + +/*! + \brief reset I2C + \param[in] i2c_periph: I2Cx(x=0,1) + \param[out] none + \retval none + */ +void i2c_deinit(uint32_t i2c_periph) +{ + switch (i2c_periph) { + case I2C0: + /* reset I2C0 */ + rcu_periph_reset_enable(RCU_I2C0RST); + rcu_periph_reset_disable(RCU_I2C0RST); + break; + case I2C1: + /* reset I2C1 */ + rcu_periph_reset_enable(RCU_I2C1RST); + rcu_periph_reset_disable(RCU_I2C1RST); + break; + default: + break; + } +} + +/*! + \brief configure I2C clock + \param[in] i2c_periph: I2Cx(x=0,1) + \param[in] clkspeed: I2C clock speed, supports standard mode (up to 100 kHz), fast mode (up to 400 kHz) + and fast mode plus (up to 1MHz) + \param[in] dutycyc: duty cycle in fast mode or fast mode plus + only one parameter can be selected which is shown as below: + \arg I2C_DTCY_2: T_low/T_high=2 + \arg I2C_DTCY_16_9: T_low/T_high=16/9 + \param[out] none + \retval none + */ +void i2c_clock_config(uint32_t i2c_periph, uint32_t clkspeed, uint32_t dutycyc) +{ + uint32_t pclk1, clkc, freq, risetime; + uint32_t temp; + + pclk1 = rcu_clock_freq_get(CK_APB1); + /* I2C peripheral clock frequency */ + freq = (uint32_t) (pclk1 / 1000000U); + if (freq >= I2CCLK_MAX) { + freq = I2CCLK_MAX; + } + temp = I2C_CTL1(i2c_periph); + temp &= ~I2C_CTL1_I2CCLK; + temp |= freq; + + I2C_CTL1(i2c_periph) = temp; + + if (100000U >= clkspeed) { + /* the maximum SCL rise time is 1000ns in standard mode */ + risetime = (uint32_t) ((pclk1 / 1000000U) + 1U); + if (risetime >= I2CCLK_MAX) { + I2C_RT(i2c_periph) = I2CCLK_MAX; + } else if (risetime <= I2CCLK_MIN) { + I2C_RT(i2c_periph) = I2CCLK_MIN; + } else { + I2C_RT(i2c_periph) = risetime; + } + clkc = (uint32_t) (pclk1 / (clkspeed * 2U)); + if (clkc < 0x04U) { + /* the CLKC in standard mode minmum value is 4 */ + clkc = 0x04U; + } + I2C_CKCFG(i2c_periph) |= (I2C_CKCFG_CLKC & clkc); + + } else if (400000U >= clkspeed) { + /* the maximum SCL rise time is 300ns in fast mode */ + I2C_RT(i2c_periph) = (uint32_t) (((freq * (uint32_t) 300U)/(uint32_t)1000U)+(uint32_t)1U); + if (I2C_DTCY_2 == dutycyc){ + /* I2C duty cycle is 2 */ + clkc = (uint32_t) (pclk1 / (clkspeed * 3U)); + I2C_CKCFG(i2c_periph) &= ~I2C_CKCFG_DTCY; + } else { + /* I2C duty cycle is 16/9 */ + clkc = (uint32_t) (pclk1 / (clkspeed * 25U)); + I2C_CKCFG(i2c_periph) |= I2C_CKCFG_DTCY; + } + if (0U == (clkc & I2C_CKCFG_CLKC)) { + /* the CLKC in fast mode minmum value is 1 */ + clkc |= 0x0001U; + } + I2C_CKCFG(i2c_periph) |= I2C_CKCFG_FAST; + I2C_CKCFG(i2c_periph) |= clkc; + } else { + /* fast mode plus, the maximum SCL rise time is 120ns */ + I2C_RT (i2c_periph) = (uint32_t) (((freq * (uint32_t) 120U) / (uint32_t) 1000U)+(uint32_t) 1U); + if (I2C_DTCY_2 == dutycyc) { + /* I2C duty cycle is 2 */ + clkc = (uint32_t) (pclk1 / (clkspeed * 3U)); + I2C_CKCFG(i2c_periph) &= ~I2C_CKCFG_DTCY; + } else { + /* I2C duty cycle is 16/9 */ + clkc = (uint32_t) (pclk1 / (clkspeed * 25U)); + I2C_CKCFG(i2c_periph) |= I2C_CKCFG_DTCY; + } + /* enable fast mode */ + I2C_CKCFG(i2c_periph) |= I2C_CKCFG_FAST; + I2C_CKCFG(i2c_periph) |= clkc; + /* enable I2C fast mode plus */ + I2C_FMPCFG(i2c_periph) |= I2C_FMPCFG_FMPEN; + } +} + +/*! + \brief configure I2C address + \param[in] i2c_periph: I2Cx(x=0,1) + \param[in] mode: + only one parameter can be selected which is shown as below: + \arg I2C_I2CMODE_ENABLE: I2C mode + \arg I2C_SMBUSMODE_ENABLE: SMBus mode + \param[in] addformat: 7bits or 10bits + only one parameter can be selected which is shown as below: + \arg I2C_ADDFORMAT_7BITS: 7bits + \arg I2C_ADDFORMAT_10BITS: 10bits + \param[in] addr: I2C address + \param[out] none + \retval none + */ +void i2c_mode_addr_config(uint32_t i2c_periph, uint32_t mode,uint32_t addformat, uint32_t addr) +{ + /* SMBus/I2C mode selected */ + uint32_t ctl = 0U; + + ctl = I2C_CTL0(i2c_periph); + ctl &= ~(I2C_CTL0_SMBEN); + ctl |= mode; + I2C_CTL0(i2c_periph) = ctl; + /* configure address */ + addr = addr & I2C_ADDRESS_MASK; + I2C_SADDR0(i2c_periph) = (addformat | addr); +} + +/*! + \brief SMBus type selection + \param[in] i2c_periph: I2Cx(x=0,1) + \param[in] type: + only one parameter can be selected which is shown as below: + \arg I2C_SMBUS_DEVICE: device + \arg I2C_SMBUS_HOST: host + \param[out] none + \retval none + */ +void i2c_smbus_type_config(uint32_t i2c_periph, uint32_t type) +{ + if (I2C_SMBUS_HOST == type) { + I2C_CTL0(i2c_periph) |= I2C_CTL0_SMBSEL; + } else { + I2C_CTL0(i2c_periph) &= ~(I2C_CTL0_SMBSEL); + } +} + +/*! + \brief whether or not to send an ACK + \param[in] i2c_periph: I2Cx(x=0,1) + \param[in] ack: + only one parameter can be selected which is shown as below: + \arg I2C_ACK_ENABLE: ACK will be sent + \arg I2C_ACK_DISABLE: ACK will not be sent + \param[out] none + \retval none + */ +void i2c_ack_config(uint32_t i2c_periph, uint32_t ack) +{ + if (I2C_ACK_ENABLE == ack) { + I2C_CTL0(i2c_periph) |= I2C_CTL0_ACKEN; + } else { + I2C_CTL0(i2c_periph) &= ~(I2C_CTL0_ACKEN); + } +} + +/*! + \brief configure I2C POAP position + \param[in] i2c_periph: I2Cx(x=0,1) + \param[in] pos: + only one parameter can be selected which is shown as below: + \arg I2C_ACKPOS_CURRENT: whether to send ACK or not for the current + \arg I2C_ACKPOS_NEXT: whether to send ACK or not for the next byte + \param[out] none + \retval none + */ +void i2c_ackpos_config(uint32_t i2c_periph, uint32_t pos) +{ + /* configure I2C POAP position */ + if (I2C_ACKPOS_NEXT == pos) { + I2C_CTL0(i2c_periph) |= I2C_CTL0_POAP; + } else { + I2C_CTL0(i2c_periph) &= ~(I2C_CTL0_POAP); + } +} + +/*! + \brief master sends slave address + \param[in] i2c_periph: I2Cx(x=0,1) + \param[in] addr: slave address + \param[in] trandirection: transmitter or receiver + only one parameter can be selected which is shown as below: + \arg I2C_TRANSMITTER: transmitter + \arg I2C_RECEIVER: receiver + \param[out] none + \retval none + */ +void i2c_master_addressing(uint32_t i2c_periph, uint32_t addr,uint32_t trandirection) +{ + /* master is a transmitter or a receiver */ + if (I2C_TRANSMITTER == trandirection) { + addr = addr & I2C_TRANSMITTER; + } else { + addr = addr | I2C_RECEIVER; + } + /* send slave address */ + I2C_DATA(i2c_periph) = addr; +} + +/*! + \brief enable dual-address mode + \param[in] i2c_periph: I2Cx(x=0,1) + \param[in] dualaddr: the second address in dual-address mode + \param[out] none + \retval none +*/ +void i2c_dualaddr_enable(uint32_t i2c_periph, uint32_t dualaddr) +{ + /* configure address */ + dualaddr = dualaddr & I2C_ADDRESS2_MASK; + I2C_SADDR1(i2c_periph) = (I2C_SADDR1_DUADEN | dualaddr); +} + +/*! + \brief disable dual-address mode + \param[in] i2c_periph: I2Cx(x=0,1) + \param[out] none + \retval none +*/ +void i2c_dualaddr_disable(uint32_t i2c_periph) +{ + I2C_SADDR1(i2c_periph) &= ~(I2C_SADDR1_DUADEN); +} + +/*! + \brief enable I2C + \param[in] i2c_periph: I2Cx(x=0,1) + \param[out] none + \retval none + */ +void i2c_enable(uint32_t i2c_periph) +{ + I2C_CTL0(i2c_periph) |= I2C_CTL0_I2CEN; +} + +/*! + \brief disable I2C + \param[in] i2c_periph: I2Cx(x=0,1) + \param[out] none + \retval none + */ +void i2c_disable(uint32_t i2c_periph) +{ + I2C_CTL0(i2c_periph) &= ~(I2C_CTL0_I2CEN); +} + +/*! + \brief generate a START condition on I2C bus + \param[in] i2c_periph: I2Cx(x=0,1) + \param[out] none + \retval none + */ +void i2c_start_on_bus(uint32_t i2c_periph) +{ + I2C_CTL0(i2c_periph) |= I2C_CTL0_START; +} + +/*! + \brief generate a STOP condition on I2C bus + \param[in] i2c_periph: I2Cx(x=0,1) + \param[out] none + \retval none + */ +void i2c_stop_on_bus(uint32_t i2c_periph) +{ + I2C_CTL0(i2c_periph) |= I2C_CTL0_STOP; +} + +/*! + \brief I2C transmit data function + \param[in] i2c_periph: I2Cx(x=0,1) + \param[in] data: data of transmission + \param[out] none + \retval none + */ +void i2c_data_transmit(uint32_t i2c_periph, uint8_t data) +{ + I2C_DATA(i2c_periph) = DATA_TRANS(data); +} + +/*! + \brief I2C receive data function + \param[in] i2c_periph: I2Cx(x=0,1) + \param[out] none + \retval data of received + */ +uint8_t i2c_data_receive(uint32_t i2c_periph) +{ + return (uint8_t) DATA_RECV(I2C_DATA(i2c_periph)); +} + +/*! + \brief enable I2C DMA mode + \param[in] i2c_periph: I2Cx(x=0,1) + \param[in] dmastate: + only one parameter can be selected which is shown as below: + \arg I2C_DMA_ON: DMA mode enable + \arg I2C_DMA_OFF: DMA mode disable + \param[out] none + \retval none + */ +void i2c_dma_enable(uint32_t i2c_periph, uint32_t dmastate) +{ + /* configure I2C DMA function */ + uint32_t ctl = 0U; + + ctl = I2C_CTL1(i2c_periph); + ctl &= ~(I2C_CTL1_DMAON); + ctl |= dmastate; + I2C_CTL1(i2c_periph) = ctl; +} + +/*! + \brief configure whether next DMA EOT is DMA last transfer or not + \param[in] i2c_periph: I2Cx(x=0,1) + \param[in] dmalast: + only one parameter can be selected which is shown as below: + \arg I2C_DMALST_ON: next DMA EOT is the last transfer + \arg I2C_DMALST_OFF: next DMA EOT is not the last transfer + \param[out] none + \retval none + */ +void i2c_dma_last_transfer_config(uint32_t i2c_periph, uint32_t dmalast) +{ + /* configure DMA last transfer */ + uint32_t ctl = 0U; + + ctl = I2C_CTL1(i2c_periph); + ctl &= ~(I2C_CTL1_DMALST); + ctl |= dmalast; + I2C_CTL1(i2c_periph) = ctl; +} + +/*! + \brief whether to stretch SCL low when data is not ready in slave mode + \param[in] i2c_periph: I2Cx(x=0,1) + \param[in] stretchpara: + only one parameter can be selected which is shown as below: + \arg I2C_SCLSTRETCH_ENABLE: SCL stretching is enabled + \arg I2C_SCLSTRETCH_DISABLE: SCL stretching is disabled + \param[out] none + \retval none + */ +void i2c_stretch_scl_low_config(uint32_t i2c_periph, uint32_t stretchpara) +{ + /* configure I2C SCL strerching enable or disable */ + uint32_t ctl = 0U; + + ctl = I2C_CTL0(i2c_periph); + ctl &= ~(I2C_CTL0_SS); + ctl |= stretchpara; + I2C_CTL0(i2c_periph) = ctl; +} + +/*! + \brief whether or not to response to a general call + \param[in] i2c_periph: I2Cx(x=0,1) + \param[in] gcallpara: + only one parameter can be selected which is shown as below: + \arg I2C_GCEN_ENABLE: slave will response to a general call + \arg I2C_GCEN_DISABLE: slave will not response to a general call + \param[out] none + \retval none + */ +void i2c_slave_response_to_gcall_config(uint32_t i2c_periph, uint32_t gcallpara) +{ + /* configure slave response to a general call enable or disable */ + uint32_t ctl = 0U; + + ctl = I2C_CTL0(i2c_periph); + ctl &= ~(I2C_CTL0_GCEN); + ctl |= gcallpara; + I2C_CTL0(i2c_periph) = ctl; +} + +/*! + \brief software reset I2C + \param[in] i2c_periph: I2Cx(x=0,1) + \param[in] sreset: + only one parameter can be selected which is shown as below: + \arg I2C_SRESET_SET: I2C is under reset + \arg I2C_SRESET_RESET: I2C is not under reset + \param[out] none + \retval none + */ +void i2c_software_reset_config(uint32_t i2c_periph, uint32_t sreset) +{ + /* modify CTL0 and configure software reset I2C state */ + uint32_t ctl = 0U; + + ctl = I2C_CTL0(i2c_periph); + ctl &= ~(I2C_CTL0_SRESET); + ctl |= sreset; + I2C_CTL0(i2c_periph) = ctl; +} + +/*! + \brief I2C PEC calculation on or off + \param[in] i2c_periph: I2Cx(x=0,1) + \param[in] pecpara: + only one parameter can be selected which is shown as below: + \arg I2C_PEC_ENABLE: PEC calculation on + \arg I2C_PEC_DISABLE: PEC calculation off + \param[out] none + \retval none + */ +void i2c_pec_enable(uint32_t i2c_periph, uint32_t pecstate) +{ + /* on/off PEC calculation */ + uint32_t ctl = 0U; + + ctl = I2C_CTL0(i2c_periph); + ctl &= ~(I2C_CTL0_PECEN); + ctl |= pecstate; + I2C_CTL0(i2c_periph) = ctl; +} + +/*! + \brief I2C whether to transfer PEC value + \param[in] i2c_periph: I2Cx(x=0,1) + \param[in] pecpara: + only one parameter can be selected which is shown as below: + \arg I2C_PECTRANS_ENABLE: transfer PEC + \arg I2C_PECTRANS_DISABLE: not transfer PEC + \param[out] none + \retval none + */ +void i2c_pec_transfer_enable(uint32_t i2c_periph, uint32_t pecpara) +{ + /* whether to transfer PEC */ + uint32_t ctl = 0U; + + ctl = I2C_CTL0(i2c_periph); + ctl &= ~(I2C_CTL0_PECTRANS); + ctl |= pecpara; + I2C_CTL0(i2c_periph) = ctl; +} + +/*! + \brief get packet error checking value + \param[in] i2c_periph: I2Cx(x=0,1) + \param[out] none + \retval PEC value + */ +uint8_t i2c_pec_value_get(uint32_t i2c_periph) +{ + return (uint8_t) ((I2C_STAT1(i2c_periph) & I2C_STAT1_PECV)>> STAT1_PECV_OFFSET); +} + +/*! + \brief I2C issue alert through SMBA pin + \param[in] i2c_periph: I2Cx(x=0,1) + \param[in] smbuspara: + only one parameter can be selected which is shown as below: + \arg I2C_SALTSEND_ENABLE: issue alert through SMBA pin + \arg I2C_SALTSEND_DISABLE: not issue alert through SMBA pin + \param[out] none + \retval none + */ +void i2c_smbus_issue_alert(uint32_t i2c_periph, uint32_t smbuspara) +{ + /* issue alert through SMBA pin configure*/ + uint32_t ctl = 0U; + + ctl = I2C_CTL0(i2c_periph); + ctl &= ~(I2C_CTL0_SALT); + ctl |= smbuspara; + I2C_CTL0(i2c_periph) = ctl; +} + +/*! + \brief enable or disable I2C ARP protocol in SMBus switch + \param[in] i2c_periph: I2Cx(x=0,1) + \param[in] arpstate: + only one parameter can be selected which is shown as below: + \arg I2C_ARP_ENABLE: enable ARP + \arg I2C_ARP_DISABLE: disable ARP + \param[out] none + \retval none + */ +void i2c_smbus_arp_enable(uint32_t i2c_periph, uint32_t arpstate) +{ + /* enable or disable I2C ARP protocol*/ + uint32_t ctl = 0U; + + ctl = I2C_CTL0(i2c_periph); + ctl &= ~(I2C_CTL0_ARPEN); + ctl |= arpstate; + I2C_CTL0(i2c_periph) = ctl; +} + +/*! + \brief check I2C flag is set or not + \param[in] i2c_periph: I2Cx(x=0,1) + \param[in] flag: I2C flags, refer to i2c_flag_enum + only one parameter can be selected which is shown as below: + \arg I2C_FLAG_SBSEND: start condition send out + \arg I2C_FLAG_ADDSEND: address is sent in master mode or received and matches in slave mode + \arg I2C_FLAG_BTC: byte transmission finishes + \arg I2C_FLAG_ADD10SEND: header of 10-bit address is sent in master mode + \arg I2C_FLAG_STPDET: stop condition detected in slave mode + \arg I2C_FLAG_RBNE: I2C_DATA is not Empty during receiving + \arg I2C_FLAG_TBE: I2C_DATA is empty during transmitting + \arg I2C_FLAG_BERR: a bus error occurs indication a unexpected start or stop condition on I2C bus + \arg I2C_FLAG_LOSTARB: arbitration lost in master mode + \arg I2C_FLAG_AERR: acknowledge error + \arg I2C_FLAG_OUERR: overrun or underrun situation occurs in slave mode + \arg I2C_FLAG_PECERR: PEC error when receiving data + \arg I2C_FLAG_SMBTO: timeout signal in SMBus mode + \arg I2C_FLAG_SMBALT: SMBus alert status + \arg I2C_FLAG_MASTER: a flag indicating whether I2C block is in master or slave mode + \arg I2C_FLAG_I2CBSY: busy flag + \arg I2C_FLAG_TR: whether the I2C is a transmitter or a receiver + \arg I2C_FLAG_RXGC: general call address (00h) received + \arg I2C_FLAG_DEFSMB: default address of SMBus device + \arg I2C_FLAG_HSTSMB: SMBus host header detected in slave mode + \arg I2C_FLAG_DUMODF: dual flag in slave mode indicating which address is matched in dual-address mode + \param[out] none + \retval FlagStatus: SET or RESET + */ +FlagStatus i2c_flag_get(uint32_t i2c_periph, i2c_flag_enum flag) +{ + if (RESET != (I2C_REG_VAL(i2c_periph, flag) & BIT(I2C_BIT_POS(flag)))) { + return SET; + } else { + return RESET; + } +} + +/*! + \brief clear I2C flag + \param[in] i2c_periph: I2Cx(x=0,1) + \param[in] flag: I2C flags, refer to i2c_flag_enum + only one parameter can be selected which is shown as below: + \arg I2C_FLAG_SMBALT: SMBus Alert status + \arg I2C_FLAG_SMBTO: timeout signal in SMBus mode + \arg I2C_FLAG_PECERR: PEC error when receiving data + \arg I2C_FLAG_OUERR: over-run or under-run situation occurs in slave mode + \arg I2C_FLAG_AERR: acknowledge error + \arg I2C_FLAG_LOSTARB: arbitration lost in master mode + \arg I2C_FLAG_BERR: a bus error + \arg I2C_FLAG_ADDSEND: cleared by reading I2C_STAT0 and reading I2C_STAT1 + \param[out] none + \retval none + */ +void i2c_flag_clear(uint32_t i2c_periph, i2c_flag_enum flag) +{ + if (I2C_FLAG_ADDSEND == flag) { + /* read I2C_STAT0 and then read I2C_STAT1 to clear ADDSEND */ + I2C_STAT0(i2c_periph); + I2C_STAT1(i2c_periph); + } else { + I2C_REG_VAL(i2c_periph, flag) &= ~BIT(I2C_BIT_POS(flag)); + } +} + +/*! + \brief enable I2C interrupt + \param[in] i2c_periph: I2Cx(x=0,1) + \param[in] interrupt: I2C interrupts, refer to i2c_interrupt_enum + only one parameter can be selected which is shown as below: + \arg I2C_INT_ERR: error interrupt enable + \arg I2C_INT_EV: event interrupt enable + \arg I2C_INT_BUF: buffer interrupt enable + \param[out] none + \retval none + */ +void i2c_interrupt_enable(uint32_t i2c_periph, i2c_interrupt_enum interrupt) +{ + I2C_REG_VAL(i2c_periph, interrupt) |= BIT(I2C_BIT_POS(interrupt)); +} + +/*! + \brief disable I2C interrupt + \param[in] i2c_periph: I2Cx(x=0,1) + \param[in] interrupt: I2C interrupts, refer to i2c_flag_enum + only one parameter can be selected which is shown as below: + \arg I2C_INT_ERR: error interrupt enable + \arg I2C_INT_EV: event interrupt enable + \arg I2C_INT_BUF: buffer interrupt enable + \param[out] none + \retval none + */ +void i2c_interrupt_disable(uint32_t i2c_periph, i2c_interrupt_enum interrupt) +{ + I2C_REG_VAL(i2c_periph, interrupt) &= ~BIT(I2C_BIT_POS(interrupt)); +} + +/*! + \brief check I2C interrupt flag + \param[in] i2c_periph: I2Cx(x=0,1) + \param[in] int_flag: I2C interrupt flags, refer to i2c_interrupt_flag_enum + only one parameter can be selected which is shown as below: + \arg I2C_INT_FLAG_SBSEND: start condition sent out in master mode interrupt flag + \arg I2C_INT_FLAG_ADDSEND: address is sent in master mode or received and matches in slave mode interrupt flag + \arg I2C_INT_FLAG_BTC: byte transmission finishes + \arg I2C_INT_FLAG_ADD10SEND: header of 10-bit address is sent in master mode interrupt flag + \arg I2C_INT_FLAG_STPDET: stop condition detected in slave mode interrupt flag + \arg I2C_INT_FLAG_RBNE: I2C_DATA is not Empty during receiving interrupt flag + \arg I2C_INT_FLAG_TBE: I2C_DATA is empty during transmitting interrupt flag + \arg I2C_INT_FLAG_BERR: a bus error occurs indication a unexpected start or stop condition on I2C bus interrupt flag + \arg I2C_INT_FLAG_LOSTARB: arbitration lost in master mode interrupt flag + \arg I2C_INT_FLAG_AERR: acknowledge error interrupt flag + \arg I2C_INT_FLAG_OUERR: over-run or under-run situation occurs in slave mode interrupt flag + \arg I2C_INT_FLAG_PECERR: PEC error when receiving data interrupt flag + \arg I2C_INT_FLAG_SMBTO: timeout signal in SMBus mode interrupt flag + \arg I2C_INT_FLAG_SMBALT: SMBus Alert status interrupt flag + \param[out] none + \retval FlagStatus: SET or RESET + */ +FlagStatus i2c_interrupt_flag_get(uint32_t i2c_periph,i2c_interrupt_flag_enum int_flag) +{ + uint32_t intenable = 0U, flagstatus = 0U, bufie; + + /* check BUFIE */ + bufie = I2C_CTL1(i2c_periph) & I2C_CTL1_BUFIE; + + /* get the interrupt enable bit status */ + intenable = (I2C_REG_VAL(i2c_periph, int_flag) & BIT(I2C_BIT_POS(int_flag))); + /* get the corresponding flag bit status */ + flagstatus = (I2C_REG_VAL2(i2c_periph, int_flag)& BIT(I2C_BIT_POS2(int_flag))); + + if ((I2C_INT_FLAG_RBNE == int_flag) || (I2C_INT_FLAG_TBE == int_flag)) { + if (intenable && bufie) { + intenable = 1U; + } else { + intenable = 0U; + } + } + if ((0U != flagstatus) && (0U != intenable)) { + return SET; + } else { + return RESET; + } +} + +/*! + \brief clear I2C interrupt flag + \param[in] i2c_periph: I2Cx(x=0,1) + \param[in] int_flag: I2C interrupt flags, refer to i2c_interrupt_flag_enum + only one parameter can be selected which is shown as below: + \arg I2C_INT_FLAG_ADDSEND: address is sent in master mode or received and matches in slave mode interrupt flag + \arg I2C_INT_FLAG_BERR: a bus error occurs indication a unexpected start or stop condition on I2C bus interrupt flag + \arg I2C_INT_FLAG_LOSTARB: arbitration lost in master mode interrupt flag + \arg I2C_INT_FLAG_AERR: acknowledge error interrupt flag + \arg I2C_INT_FLAG_OUERR: over-run or under-run situation occurs in slave mode interrupt flag + \arg I2C_INT_FLAG_PECERR: PEC error when receiving data interrupt flag + \arg I2C_INT_FLAG_SMBTO: timeout signal in SMBus mode interrupt flag + \arg I2C_INT_FLAG_SMBALT: SMBus Alert status interrupt flag + \param[out] none + \retval none + */ +void i2c_interrupt_flag_clear(uint32_t i2c_periph,i2c_interrupt_flag_enum int_flag) +{ + if (I2C_INT_FLAG_ADDSEND == int_flag) { + /* read I2C_STAT0 and then read I2C_STAT1 to clear ADDSEND */ + I2C_STAT0(i2c_periph); + I2C_STAT1(i2c_periph); + } else { + I2C_REG_VAL2(i2c_periph, int_flag) &= ~BIT(I2C_BIT_POS2(int_flag)); + } +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_pmu.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_pmu.c new file mode 100644 index 0000000000..458e64223a --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_pmu.c @@ -0,0 +1,271 @@ +/*! + \file gd32vf103_pmu.c + \brief PMU driver + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "gd32vf103_pmu.h" +#include "riscv_encoding.h" + +/*! + \brief reset PMU register + \param[in] none + \param[out] none + \retval none +*/ +void pmu_deinit(void) +{ + /* reset PMU */ + rcu_periph_reset_enable(RCU_PMURST); + rcu_periph_reset_disable(RCU_PMURST); +} + +/*! + \brief select low voltage detector threshold + \param[in] lvdt_n: + only one parameter can be selected which is shown as below: + \arg PMU_LVDT_0: voltage threshold is 2.2V + \arg PMU_LVDT_1: voltage threshold is 2.3V + \arg PMU_LVDT_2: voltage threshold is 2.4V + \arg PMU_LVDT_3: voltage threshold is 2.5V + \arg PMU_LVDT_4: voltage threshold is 2.6V + \arg PMU_LVDT_5: voltage threshold is 2.7V + \arg PMU_LVDT_6: voltage threshold is 2.8V + \arg PMU_LVDT_7: voltage threshold is 2.9V + \param[out] none + \retval none +*/ +void pmu_lvd_select(uint32_t lvdt_n) +{ + /* disable LVD */ + PMU_CTL &= ~PMU_CTL_LVDEN; + /* clear LVDT bits */ + PMU_CTL &= ~PMU_CTL_LVDT; + /* set LVDT bits according to lvdt_n */ + PMU_CTL |= lvdt_n; + /* enable LVD */ + PMU_CTL |= PMU_CTL_LVDEN; +} + +/*! + \brief disable PMU lvd + \param[in] none + \param[out] none + \retval none +*/ +void pmu_lvd_disable(void) +{ + /* disable LVD */ + PMU_CTL &= ~PMU_CTL_LVDEN; +} + +/*! + \brief PMU work at sleep mode + \param[in] sleepmodecmd: + only one parameter can be selected which is shown as below: + \arg WFI_CMD: use WFI command + \arg WFE_CMD: use WFE command + \param[out] none + \retval none +*/ +void pmu_to_sleepmode(uint8_t sleepmodecmd) +{ + /* clear sleepdeep bit of RISC-V system control register */ + clear_csr(0x811U, 0x1U); + + /* select WFI or WFE command to enter sleep mode */ + if(WFI_CMD == sleepmodecmd){ + __WFI(); + }else{ + clear_csr(mstatus, MSTATUS_MIE); + set_csr(0x810U, 0x1U); + __WFI(); + clear_csr(0x810U, 0x1U); + set_csr(mstatus, MSTATUS_MIE); + } +} + +/*! + \brief PMU work at deepsleep mode + \param[in] ldo: + only one parameter can be selected which is shown as below: + \arg PMU_LDO_NORMAL: LDO work at normal power mode when pmu enter deepsleep mode + \arg PMU_LDO_LOWPOWER: LDO work at low power mode when pmu enter deepsleep mode + \param[in] deepsleepmodecmd: + only one parameter can be selected which is shown as below: + \arg WFI_CMD: use WFI command + \arg WFE_CMD: use WFE command + \param[out] none + \retval none +*/ +void pmu_to_deepsleepmode(uint32_t ldo,uint8_t deepsleepmodecmd) +{ + /* clear stbmod and ldolp bits */ + PMU_CTL &= ~((uint32_t)(PMU_CTL_STBMOD | PMU_CTL_LDOLP)); + /* set ldolp bit according to pmu_ldo */ + PMU_CTL |= ldo; + /* set CSR_SLEEPVALUE bit of RISC-V system control register */ + set_csr(0x811U, 0x1U); + /* select WFI or WFE command to enter deepsleep mode */ + if(WFI_CMD == deepsleepmodecmd){ + __WFI(); + }else{ + clear_csr(mstatus, MSTATUS_MIE); + set_csr(0x810U, 0x1U); + __WFI(); + clear_csr(0x810U, 0x1U); + set_csr(mstatus, MSTATUS_MIE); + } + /* reset sleepdeep bit of RISC-V system control register */ + clear_csr(0x811U, 0x1U); +} + +/*! + \brief pmu work at standby mode + \param[in] standbymodecmd: + only one parameter can be selected which is shown as below: + \arg WFI_CMD: use WFI command + \arg WFE_CMD: use WFE command + \param[out] none + \retval none +*/ +void pmu_to_standbymode(uint8_t standbymodecmd) +{ + /* set CSR_SLEEPVALUE bit of RISC-V system control register */ + set_csr(0x811U, 0x1U); + + /* set stbmod bit */ + PMU_CTL |= PMU_CTL_STBMOD; + + /* reset wakeup flag */ + PMU_CTL |= PMU_CTL_WURST; + + /* select WFI or WFE command to enter standby mode */ + if(WFI_CMD == standbymodecmd){ + __WFI(); + }else{ + clear_csr(mstatus, MSTATUS_MIE); + set_csr(0x810U, 0x1U); + __WFI(); + clear_csr(0x810U, 0x1U); + set_csr(mstatus, MSTATUS_MIE); + } + clear_csr(0x811U, 0x1U); +} + +/*! + \brief enable wakeup pin + \param[in] none + \param[out] none + \retval none +*/ +void pmu_wakeup_pin_enable(void) +{ + PMU_CS |= PMU_CS_WUPEN; +} + +/*! + \brief disable wakeup pin + \param[in] none + \param[out] none + \retval none +*/ +void pmu_wakeup_pin_disable(void) +{ + PMU_CS &= ~PMU_CS_WUPEN; +} + +/*! + \brief enable write access to the registers in backup domain + \param[in] none + \param[out] none + \retval none +*/ +void pmu_backup_write_enable(void) +{ + PMU_CTL |= PMU_CTL_BKPWEN; +} + +/*! + \brief disable write access to the registers in backup domain + \param[in] none + \param[out] none + \retval none +*/ +void pmu_backup_write_disable(void) +{ + PMU_CTL &= ~PMU_CTL_BKPWEN; +} + +/*! + \brief get flag state + \param[in] flag: + only one parameter can be selected which is shown as below: + \arg PMU_FLAG_WAKEUP: wakeup flag + \arg PMU_FLAG_STANDBY: standby flag + \arg PMU_FLAG_LVD: lvd flag + \param[out] none + \retval FlagStatus SET or RESET +*/ +FlagStatus pmu_flag_get(uint32_t flag) +{ + if(PMU_CS & flag){ + return SET; + }else{ + return RESET; + } +} + +/*! + \brief clear flag bit + \param[in] flag_reset: + only one parameter can be selected which is shown as below: + \arg PMU_FLAG_RESET_WAKEUP: reset wakeup flag + \arg PMU_FLAG_RESET_STANDBY: reset standby flag + \param[out] none + \retval none +*/ +void pmu_flag_clear(uint32_t flag_reset) +{ + switch(flag_reset){ + case PMU_FLAG_RESET_WAKEUP: + /* reset wakeup flag */ + PMU_CTL |= PMU_CTL_WURST; + break; + case PMU_FLAG_RESET_STANDBY: + /* reset standby flag */ + PMU_CTL |= PMU_CTL_STBRST; + break; + default : + break; + } +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_rcu.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_rcu.c new file mode 100644 index 0000000000..e2248a1e5b --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_rcu.c @@ -0,0 +1,1111 @@ +/*! + \file gd32vf103_rcu.c + \brief RCU driver + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "gd32vf103_rcu.h" + +/* define clock source */ +#define SEL_IRC8M ((uint16_t)0U) +#define SEL_HXTAL ((uint16_t)1U) +#define SEL_PLL ((uint16_t)2U) + +/* define startup timeout count */ +#define OSC_STARTUP_TIMEOUT ((uint32_t)0xFFFFFU) +#define LXTAL_STARTUP_TIMEOUT ((uint32_t)0x3FFFFFFU) + +/*! + \brief deinitialize the RCU + \param[in] none + \param[out] none + \retval none +*/ +void rcu_deinit(void) +{ + /* enable IRC8M */ + RCU_CTL |= RCU_CTL_IRC8MEN; + rcu_osci_stab_wait(RCU_IRC8M); + /* reset CTL register */ + RCU_CTL &= ~(RCU_CTL_HXTALEN | RCU_CTL_CKMEN | RCU_CTL_PLLEN); + RCU_CTL &= ~RCU_CTL_HXTALBPS; + RCU_CTL &= ~(RCU_CTL_PLL1EN | RCU_CTL_PLL2EN); + /* reset CFG0 register */ + RCU_CFG0 &= ~(RCU_CFG0_SCS | RCU_CFG0_AHBPSC | RCU_CFG0_APB1PSC | RCU_CFG0_APB2PSC | + RCU_CFG0_ADCPSC | RCU_CFG0_PLLSEL | RCU_CFG0_PREDV0_LSB | RCU_CFG0_PLLMF | + RCU_CFG0_USBFSPSC | RCU_CFG0_CKOUT0SEL | RCU_CFG0_ADCPSC_2 | RCU_CFG0_PLLMF_4); + /* reset INT and CFG1 register */ + RCU_INT = 0x00ff0000U; + RCU_CFG1 &= ~(RCU_CFG1_PREDV0 | RCU_CFG1_PREDV1 | RCU_CFG1_PLL1MF | RCU_CFG1_PLL2MF | + RCU_CFG1_PREDV0SEL | RCU_CFG1_I2S1SEL | RCU_CFG1_I2S2SEL); +} + +/*! + \brief enable the peripherals clock + \param[in] periph: RCU peripherals, refer to rcu_periph_enum + only one parameter can be selected which is shown as below: + \arg RCU_GPIOx (x=A,B,C,D,E): GPIO ports clock + \arg RCU_AF : alternate function clock + \arg RCU_CRC: CRC clock + \arg RCU_DMAx (x=0,1): DMA clock + \arg RCU_USBFS: USBFS clock + \arg RCU_EXMC: EXMC clock + \arg RCU_TIMERx (x=0,1,2,3,4,5,6): TIMER clock + \arg RCU_WWDGT: WWDGT clock + \arg RCU_SPIx (x=0,1,2): SPI clock + \arg RCU_USARTx (x=0,1,2): USART clock + \arg RCU_UARTx (x=3,4): UART clock + \arg RCU_I2Cx (x=0,1): I2C clock + \arg RCU_CANx (x=0,1): CAN clock + \arg RCU_PMU: PMU clock + \arg RCU_DAC: DAC clock + \arg RCU_RTC: RTC clock + \arg RCU_ADCx (x=0,1): ADC clock + \arg RCU_BKPI: BKP interface clock + \param[out] none + \retval none +*/ +void rcu_periph_clock_enable(rcu_periph_enum periph) +{ + RCU_REG_VAL(periph) |= BIT(RCU_BIT_POS(periph)); +} + +/*! + \brief disable the peripherals clock + \param[in] periph: RCU peripherals, refer to rcu_periph_enum + only one parameter can be selected which is shown as below: + \arg RCU_GPIOx (x=A,B,C,D,E): GPIO ports clock + \arg RCU_AF: alternate function clock + \arg RCU_CRC: CRC clock + \arg RCU_DMAx (x=0,1): DMA clock + \arg RCU_USBFS: USBFS clock + \arg RCU_EXMC: EXMC clock + \arg RCU_TIMERx (x=0,1,2,3,4,5,6): TIMER clock + \arg RCU_WWDGT: WWDGT clock + \arg RCU_SPIx (x=0,1,2): SPI clock + \arg RCU_USARTx (x=0,1,2): USART clock + \arg RCU_UARTx (x=3,4): UART clock + \arg RCU_I2Cx (x=0,1): I2C clock + \arg RCU_CANx (x=0,1): CAN clock + \arg RCU_PMU: PMU clock + \arg RCU_DAC: DAC clock + \arg RCU_RTC: RTC clock + \arg RCU_ADCx (x=0,1): ADC clock + \arg RCU_BKPI: BKP interface clock + \param[out] none + \retval none +*/ +void rcu_periph_clock_disable(rcu_periph_enum periph) +{ + RCU_REG_VAL(periph) &= ~BIT(RCU_BIT_POS(periph)); +} + +/*! + \brief enable the peripherals clock when sleep mode + \param[in] periph: RCU peripherals, refer to rcu_periph_sleep_enum + only one parameter can be selected which is shown as below: + \arg RCU_FMC_SLP: FMC clock + \arg RCU_SRAM_SLP: SRAM clock + \param[out] none + \retval none +*/ +void rcu_periph_clock_sleep_enable(rcu_periph_sleep_enum periph) +{ + RCU_REG_VAL(periph) |= BIT(RCU_BIT_POS(periph)); +} + +/*! + \brief disable the peripherals clock when sleep mode + \param[in] periph: RCU peripherals, refer to rcu_periph_sleep_enum + only one parameter can be selected which is shown as below: + \arg RCU_FMC_SLP: FMC clock + \arg RCU_SRAM_SLP: SRAM clock + \param[out] none + \retval none +*/ +void rcu_periph_clock_sleep_disable(rcu_periph_sleep_enum periph) +{ + RCU_REG_VAL(periph) &= ~BIT(RCU_BIT_POS(periph)); +} + +/*! + \brief reset the peripherals + \param[in] periph_reset: RCU peripherals reset, refer to rcu_periph_reset_enum + only one parameter can be selected which is shown as below: + \arg RCU_GPIOxRST (x=A,B,C,D,E): reset GPIO ports + \arg RCU_AFRST : reset alternate function clock + \arg RCU_USBFSRST: reset USBFS + \arg RCU_TIMERxRST (x=0,1,2,3,4,5,6): reset TIMER + \arg RCU_WWDGTRST: reset WWDGT + \arg RCU_SPIxRST (x=0,1,2): reset SPI + \arg RCU_USARTxRST (x=0,1,2): reset USART + \arg RCU_UARTxRST (x=3,4): reset UART + \arg RCU_I2CxRST (x=0,1): reset I2C + \arg RCU_CANxRST (x=0,1): reset CAN + \arg RCU_PMURST: reset PMU + \arg RCU_DACRST: reset DAC + \arg RCU_ADCxRST (x=0,1): reset ADC + \arg RCU_BKPIRST: reset BKPI + \param[out] none + \retval none +*/ +void rcu_periph_reset_enable(rcu_periph_reset_enum periph_reset) +{ + RCU_REG_VAL(periph_reset) |= BIT(RCU_BIT_POS(periph_reset)); +} + +/*! + \brief disable reset the peripheral + \param[in] periph_reset: RCU peripherals reset, refer to rcu_periph_reset_enum + only one parameter can be selected which is shown as below: + \arg RCU_GPIOxRST (x=A,B,C,D,E): reset GPIO ports + \arg RCU_AFRST : reset alternate function clock + \arg RCU_USBFSRST: reset USBFS + \arg RCU_TIMERxRST (x=0,1,2,3,4,5,6): reset TIMER + \arg RCU_WWDGTRST: reset WWDGT + \arg RCU_SPIxRST (x=0,1,2): reset SPI + \arg RCU_USARTxRST (x=0,1,2): reset USART + \arg RCU_UARTxRST (x=3,4): reset UART + \arg RCU_I2CxRST (x=0,1): reset I2C + \arg RCU_CANxRST (x=0,1): reset CAN + \arg RCU_PMURST: reset PMU + \arg RCU_DACRST: reset DAC + \arg RCU_ADCxRST (x=0,1): reset ADC + \arg RCU_BKPIRST: reset BKPI + \param[out] none + \retval none +*/ +void rcu_periph_reset_disable(rcu_periph_reset_enum periph_reset) +{ + RCU_REG_VAL(periph_reset) &= ~BIT(RCU_BIT_POS(periph_reset)); +} + +/*! + \brief reset the BKP domain + \param[in] none + \param[out] none + \retval none +*/ +void rcu_bkp_reset_enable(void) +{ + RCU_BDCTL |= RCU_BDCTL_BKPRST; +} + +/*! + \brief disable the BKP domain reset + \param[in] none + \param[out] none + \retval none +*/ +void rcu_bkp_reset_disable(void) +{ + RCU_BDCTL &= ~RCU_BDCTL_BKPRST; +} + +/*! + \brief configure the system clock source + \param[in] ck_sys: system clock source select + only one parameter can be selected which is shown as below: + \arg RCU_CKSYSSRC_IRC8M: select CK_IRC8M as the CK_SYS source + \arg RCU_CKSYSSRC_HXTAL: select CK_HXTAL as the CK_SYS source + \arg RCU_CKSYSSRC_PLL: select CK_PLL as the CK_SYS source + \param[out] none + \retval none +*/ +void rcu_system_clock_source_config(uint32_t ck_sys) +{ + uint32_t reg; + + reg = RCU_CFG0; + /* reset the SCS bits and set according to ck_sys */ + reg &= ~RCU_CFG0_SCS; + RCU_CFG0 = (reg | ck_sys); +} + +/*! + \brief get the system clock source + \param[in] none + \param[out] none + \retval which clock is selected as CK_SYS source + \arg RCU_SCSS_IRC8M: CK_IRC8M is selected as the CK_SYS source + \arg RCU_SCSS_HXTAL: CK_HXTAL is selected as the CK_SYS source + \arg RCU_SCSS_PLL: CK_PLL is selected as the CK_SYS source +*/ +uint32_t rcu_system_clock_source_get(void) +{ + return (RCU_CFG0 & RCU_CFG0_SCSS); +} + +/*! + \brief configure the AHB clock prescaler selection + \param[in] ck_ahb: AHB clock prescaler selection + only one parameter can be selected which is shown as below: + \arg RCU_AHB_CKSYS_DIVx, x=1, 2, 4, 8, 16, 64, 128, 256, 512 + \param[out] none + \retval none +*/ +void rcu_ahb_clock_config(uint32_t ck_ahb) +{ + uint32_t reg; + + reg = RCU_CFG0; + + /* reset the AHBPSC bits and set according to ck_ahb */ + reg &= ~RCU_CFG0_AHBPSC; + RCU_CFG0 = (reg | ck_ahb); +} + +/*! + \brief configure the APB1 clock prescaler selection + \param[in] ck_apb1: APB1 clock prescaler selection + only one parameter can be selected which is shown as below: + \arg RCU_APB1_CKAHB_DIV1: select CK_AHB as CK_APB1 + \arg RCU_APB1_CKAHB_DIV2: select CK_AHB/2 as CK_APB1 + \arg RCU_APB1_CKAHB_DIV4: select CK_AHB/4 as CK_APB1 + \arg RCU_APB1_CKAHB_DIV8: select CK_AHB/8 as CK_APB1 + \arg RCU_APB1_CKAHB_DIV16: select CK_AHB/16 as CK_APB1 + \param[out] none + \retval none +*/ +void rcu_apb1_clock_config(uint32_t ck_apb1) +{ + uint32_t reg; + + reg = RCU_CFG0; + + /* reset the APB1PSC and set according to ck_apb1 */ + reg &= ~RCU_CFG0_APB1PSC; + RCU_CFG0 = (reg | ck_apb1); +} + +/*! + \brief configure the APB2 clock prescaler selection + \param[in] ck_apb2: APB2 clock prescaler selection + only one parameter can be selected which is shown as below: + \arg RCU_APB2_CKAHB_DIV1: select CK_AHB as CK_APB2 + \arg RCU_APB2_CKAHB_DIV2: select CK_AHB/2 as CK_APB2 + \arg RCU_APB2_CKAHB_DIV4: select CK_AHB/4 as CK_APB2 + \arg RCU_APB2_CKAHB_DIV8: select CK_AHB/8 as CK_APB2 + \arg RCU_APB2_CKAHB_DIV16: select CK_AHB/16 as CK_APB2 + \param[out] none + \retval none +*/ +void rcu_apb2_clock_config(uint32_t ck_apb2) +{ + uint32_t reg; + + reg = RCU_CFG0; + + /* reset the APB2PSC and set according to ck_apb2 */ + reg &= ~RCU_CFG0_APB2PSC; + RCU_CFG0 = (reg | ck_apb2); +} + +/*! + \brief configure the CK_OUT0 clock source + \param[in] ckout0_src: CK_OUT0 clock source selection + only one parameter can be selected which is shown as below: + \arg RCU_CKOUT0SRC_NONE: no clock selected + \arg RCU_CKOUT0SRC_CKSYS: system clock selected + \arg RCU_CKOUT0SRC_IRC8M: high speed 8M internal oscillator clock selected + \arg RCU_CKOUT0SRC_HXTAL: HXTAL selected + \arg RCU_CKOUT0SRC_CKPLL_DIV2: CK_PLL/2 selected + \arg RCU_CKOUT0SRC_CKPLL1: CK_PLL1 selected + \arg RCU_CKOUT0SRC_CKPLL2_DIV2: CK_PLL2/2 selected + \arg RCU_CKOUT0SRC_EXT1: EXT1 selected + \arg RCU_CKOUT0SRC_CKPLL2: PLL2 selected + \param[out] none + \retval none +*/ +void rcu_ckout0_config(uint32_t ckout0_src) +{ + uint32_t reg; + + reg = RCU_CFG0; + + /* reset the CKOUT0SRC, set according to ckout0_src */ + reg &= ~RCU_CFG0_CKOUT0SEL; + RCU_CFG0 = (reg | ckout0_src); +} + +/*! + \brief configure the main PLL clock + \param[in] pll_src: PLL clock source selection + only one parameter can be selected which is shown as below: + \arg RCU_PLLSRC_IRC8M_DIV2: IRC8M/2 clock selected as source clock of PLL + \arg RCU_PLLSRC_HXTAL: HXTAL selected as source clock of PLL + \param[in] pll_mul: PLL clock multiplication factor + only one parameter can be selected which is shown as below: + \arg RCU_PLL_MULx (x = 2..14, 6.5, 16..32) + \param[out] none + \retval none +*/ +void rcu_pll_config(uint32_t pll_src, uint32_t pll_mul) +{ + uint32_t reg = 0U; + + reg = RCU_CFG0; + + /* PLL clock source and multiplication factor configuration */ + reg &= ~(RCU_CFG0_PLLSEL | RCU_CFG0_PLLMF | RCU_CFG0_PLLMF_4); + reg |= (pll_src | pll_mul); + + RCU_CFG0 = reg; +} + +/*! + \brief configure the PREDV0 division factor and clock source + \param[in] predv0_source: PREDV0 input clock source selection + only one parameter can be selected which is shown as below: + \arg RCU_PREDV0SRC_HXTAL: HXTAL selected as PREDV0 input source clock + \arg RCU_PREDV0SRC_CKPLL1: CK_PLL1 selected as PREDV0 input source clock + \param[in] predv0_div: PREDV0 division factor + only one parameter can be selected which is shown as below: + \arg RCU_PREDV0_DIVx, x = 1..16 + \param[out] none + \retval none +*/ +void rcu_predv0_config(uint32_t predv0_source, uint32_t predv0_div) +{ + uint32_t reg = 0U; + + reg = RCU_CFG1; + /* reset PREDV0SEL and PREDV0 bits */ + reg &= ~(RCU_CFG1_PREDV0SEL | RCU_CFG1_PREDV0); + /* set the PREDV0SEL and PREDV0 division factor */ + reg |= (predv0_source | predv0_div); + + RCU_CFG1 = reg; +} + +/*! + \brief configure the PREDV1 division factor + \param[in] predv1_div: PREDV1 division factor + only one parameter can be selected which is shown as below: + \arg RCU_PREDV1_DIVx, x = 1..16 + \param[out] none + \retval none +*/ +void rcu_predv1_config(uint32_t predv1_div) +{ + uint32_t reg = 0U; + + reg = RCU_CFG1; + /* reset the PREDV1 bits */ + reg &= ~RCU_CFG1_PREDV1; + /* set the PREDV1 division factor */ + reg |= predv1_div; + + RCU_CFG1 = reg; +} + +/*! + \brief configure the PLL1 clock + \param[in] pll_mul: PLL clock multiplication factor + only one parameter can be selected which is shown as below: + \arg RCU_PLL1_MULx (x = 8..16, 20) + \param[out] none + \retval none +*/ +void rcu_pll1_config(uint32_t pll_mul) +{ + RCU_CFG1 &= ~RCU_CFG1_PLL1MF; + RCU_CFG1 |= pll_mul; +} + +/*! + \brief configure the PLL2 clock + \param[in] pll_mul: PLL clock multiplication factor + only one parameter can be selected which is shown as below: + \arg RCU_PLL2_MULx (x = 8..16, 20) + \param[out] none + \retval none +*/ +void rcu_pll2_config(uint32_t pll_mul) +{ + RCU_CFG1 &= ~RCU_CFG1_PLL2MF; + RCU_CFG1 |= pll_mul; +} + +/*! + \brief configure the ADC prescaler factor + \param[in] adc_psc: ADC prescaler factor + only one parameter can be selected which is shown as below: + \arg RCU_CKADC_CKAPB2_DIV2: ADC prescaler select CK_APB2/2 + \arg RCU_CKADC_CKAPB2_DIV4: ADC prescaler select CK_APB2/4 + \arg RCU_CKADC_CKAPB2_DIV6: ADC prescaler select CK_APB2/6 + \arg RCU_CKADC_CKAPB2_DIV8: ADC prescaler select CK_APB2/8 + \arg RCU_CKADC_CKAPB2_DIV12: ADC prescaler select CK_APB2/12 + \arg RCU_CKADC_CKAPB2_DIV16: ADC prescaler select CK_APB2/16 + \param[out] none + \retval none +*/ +void rcu_adc_clock_config(uint32_t adc_psc) +{ + uint32_t reg0; + + /* reset the ADCPSC bits */ + reg0 = RCU_CFG0; + reg0 &= ~(RCU_CFG0_ADCPSC_2 | RCU_CFG0_ADCPSC); + + /* set the ADC prescaler factor */ + switch(adc_psc){ + case RCU_CKADC_CKAPB2_DIV2: + case RCU_CKADC_CKAPB2_DIV4: + case RCU_CKADC_CKAPB2_DIV6: + case RCU_CKADC_CKAPB2_DIV8: + reg0 |= (adc_psc << 14); + break; + + case RCU_CKADC_CKAPB2_DIV12: + case RCU_CKADC_CKAPB2_DIV16: + adc_psc &= ~BIT(2); + reg0 |= (adc_psc << 14 | RCU_CFG0_ADCPSC_2); + break; + + default: + break; + } + + /* set the register */ + RCU_CFG0 = reg0; +} + +/*! + \brief configure the USBFS prescaler factor + \param[in] usb_psc: USB prescaler factor + only one parameter can be selected which is shown as below: + \arg RCU_CKUSB_CKPLL_DIV1_5: USBFS prescaler select CK_PLL/1.5 + \arg RCU_CKUSB_CKPLL_DIV1: USBFS prescaler select CK_PLL/1 + \arg RCU_CKUSB_CKPLL_DIV2_5: USBFS prescaler select CK_PLL/2.5 + \arg RCU_CKUSB_CKPLL_DIV2: USBFS prescaler select CK_PLL/2 + \param[out] none + \retval none +*/ +void rcu_usb_clock_config(uint32_t usb_psc) +{ + uint32_t reg; + + reg = RCU_CFG0; + + /* configure the USBFS prescaler factor */ + reg &= ~RCU_CFG0_USBFSPSC; + RCU_CFG0 = (reg | usb_psc); +} + +/*! + \brief configure the RTC clock source selection + \param[in] rtc_clock_source: RTC clock source selection + only one parameter can be selected which is shown as below: + \arg RCU_RTCSRC_NONE: no clock selected + \arg RCU_RTCSRC_LXTAL: CK_LXTAL selected as RTC source clock + \arg RCU_RTCSRC_IRC40K: CK_IRC40K selected as RTC source clock + \arg RCU_RTCSRC_HXTAL_DIV_128: CK_HXTAL/128 selected as RTC source clock + \param[out] none + \retval none +*/ +void rcu_rtc_clock_config(uint32_t rtc_clock_source) +{ + uint32_t reg; + + reg = RCU_BDCTL; + /* reset the RTCSRC bits and set according to rtc_clock_source */ + reg &= ~RCU_BDCTL_RTCSRC; + RCU_BDCTL = (reg | rtc_clock_source); +} + +/*! + \brief configure the I2S1 clock source selection + \param[in] i2s_clock_source: I2S1 clock source selection + only one parameter can be selected which is shown as below: + \arg RCU_I2S1SRC_CKSYS: System clock selected as I2S1 source clock + \arg RCU_I2S1SRC_CKPLL2_MUL2: CK_PLL2x2 selected as I2S1 source clock + \param[out] none + \retval none +*/ +void rcu_i2s1_clock_config(uint32_t i2s_clock_source) +{ + uint32_t reg; + + reg = RCU_CFG1; + /* reset the I2S1SEL bit and set according to i2s_clock_source */ + reg &= ~RCU_CFG1_I2S1SEL; + RCU_CFG1 = (reg | i2s_clock_source); +} + +/*! + \brief configure the I2S2 clock source selection + \param[in] i2s_clock_source: I2S2 clock source selection + only one parameter can be selected which is shown as below: + \arg RCU_I2S2SRC_CKSYS: system clock selected as I2S2 source clock + \arg RCU_I2S2SRC_CKPLL2_MUL2: CK_PLL2x2 selected as I2S2 source clock + \param[out] none + \retval none +*/ +void rcu_i2s2_clock_config(uint32_t i2s_clock_source) +{ + uint32_t reg; + + reg = RCU_CFG1; + /* reset the I2S2SEL bit and set according to i2s_clock_source */ + reg &= ~RCU_CFG1_I2S2SEL; + RCU_CFG1 = (reg | i2s_clock_source); +} + +/*! + \brief get the clock stabilization and periphral reset flags + \param[in] flag: the clock stabilization and periphral reset flags, refer to rcu_flag_enum + only one parameter can be selected which is shown as below: + \arg RCU_FLAG_IRC8MSTB: IRC8M stabilization flag + \arg RCU_FLAG_HXTALSTB: HXTAL stabilization flag + \arg RCU_FLAG_PLLSTB: PLL stabilization flag + \arg RCU_FLAG_PLL1STB: PLL1 stabilization flag + \arg RCU_FLAG_PLL2STB: PLL2 stabilization flag + \arg RCU_FLAG_LXTALSTB: LXTAL stabilization flag + \arg RCU_FLAG_IRC40KSTB: IRC40K stabilization flag + \arg RCU_FLAG_EPRST: external PIN reset flag + \arg RCU_FLAG_PORRST: power reset flag + \arg RCU_FLAG_SWRST: software reset flag + \arg RCU_FLAG_FWDGTRST: free watchdog timer reset flag + \arg RCU_FLAG_WWDGTRST: window watchdog timer reset flag + \arg RCU_FLAG_LPRST: low-power reset flag + \param[out] none + \retval FlagStatus: SET or RESET +*/ +FlagStatus rcu_flag_get(rcu_flag_enum flag) +{ + /* get the rcu flag */ + if(RESET != (RCU_REG_VAL(flag) & BIT(RCU_BIT_POS(flag)))){ + return SET; + }else{ + return RESET; + } +} + +/*! + \brief clear all the reset flag + \param[in] none + \param[out] none + \retval none +*/ +void rcu_all_reset_flag_clear(void) +{ + RCU_RSTSCK |= RCU_RSTSCK_RSTFC; +} + +/*! + \brief get the clock stabilization interrupt and ckm flags + \param[in] int_flag: interrupt and ckm flags, refer to rcu_int_flag_enum + only one parameter can be selected which is shown as below: + \arg RCU_INT_FLAG_IRC40KSTB: IRC40K stabilization interrupt flag + \arg RCU_INT_FLAG_LXTALSTB: LXTAL stabilization interrupt flag + \arg RCU_INT_FLAG_IRC8MSTB: IRC8M stabilization interrupt flag + \arg RCU_INT_FLAG_HXTALSTB: HXTAL stabilization interrupt flag + \arg RCU_INT_FLAG_PLLSTB: PLL stabilization interrupt flag + \arg RCU_INT_FLAG_PLL1STB: PLL1 stabilization interrupt flag + \arg RCU_INT_FLAG_PLL2STB: PLL2 stabilization interrupt flag + \arg RCU_INT_FLAG_CKM: HXTAL clock stuck interrupt flag + \param[out] none + \retval FlagStatus: SET or RESET +*/ +FlagStatus rcu_interrupt_flag_get(rcu_int_flag_enum int_flag) +{ + /* get the rcu interrupt flag */ + if(RESET != (RCU_REG_VAL(int_flag) & BIT(RCU_BIT_POS(int_flag)))){ + return SET; + }else{ + return RESET; + } +} + +/*! + \brief clear the interrupt flags + \param[in] int_flag_clear: clock stabilization and stuck interrupt flags clear, refer to rcu_int_flag_clear_enum + only one parameter can be selected which is shown as below: + \arg RCU_INT_FLAG_IRC40KSTB_CLR: IRC40K stabilization interrupt flag clear + \arg RCU_INT_FLAG_LXTALSTB_CLR: LXTAL stabilization interrupt flag clear + \arg RCU_INT_FLAG_IRC8MSTB_CLR: IRC8M stabilization interrupt flag clear + \arg RCU_INT_FLAG_HXTALSTB_CLR: HXTAL stabilization interrupt flag clear + \arg RCU_INT_FLAG_PLLSTB_CLR: PLL stabilization interrupt flag clear + \arg RCU_INT_FLAG_PLL1STB_CLR: PLL1 stabilization interrupt flag clear + \arg RCU_INT_FLAG_PLL2STB_CLR: PLL2 stabilization interrupt flag clear + \arg RCU_INT_FLAG_CKM_CLR: clock stuck interrupt flag clear + \param[out] none + \retval none +*/ +void rcu_interrupt_flag_clear(rcu_int_flag_clear_enum int_flag_clear) +{ + RCU_REG_VAL(int_flag_clear) |= BIT(RCU_BIT_POS(int_flag_clear)); +} + +/*! + \brief enable the stabilization interrupt + \param[in] stab_int: clock stabilization interrupt, refer to rcu_int_enum + Only one parameter can be selected which is shown as below: + \arg RCU_INT_IRC40KSTB: IRC40K stabilization interrupt enable + \arg RCU_INT_LXTALSTB: LXTAL stabilization interrupt enable + \arg RCU_INT_IRC8MSTB: IRC8M stabilization interrupt enable + \arg RCU_INT_HXTALSTB: HXTAL stabilization interrupt enable + \arg RCU_INT_PLLSTB: PLL stabilization interrupt enable + \arg RCU_INT_PLL1STB: PLL1 stabilization interrupt enable + \arg RCU_INT_PLL2STB: PLL2 stabilization interrupt enable + \param[out] none + \retval none +*/ +void rcu_interrupt_enable(rcu_int_enum stab_int) +{ + RCU_REG_VAL(stab_int) |= BIT(RCU_BIT_POS(stab_int)); +} + +/*! + \brief disable the stabilization interrupt + \param[in] stab_int: clock stabilization interrupt, refer to rcu_int_enum + only one parameter can be selected which is shown as below: + \arg RCU_INT_IRC40KSTB: IRC40K stabilization interrupt enable + \arg RCU_INT_LXTALSTB: LXTAL stabilization interrupt enable + \arg RCU_INT_IRC8MSTB: IRC8M stabilization interrupt enable + \arg RCU_INT_HXTALSTB: HXTAL stabilization interrupt enable + \arg RCU_INT_PLLSTB: PLL stabilization interrupt enable + \arg RCU_INT_PLL1STB: PLL1 stabilization interrupt enable + \arg RCU_INT_PLL2STB: PLL2 stabilization interrupt enable + \param[out] none + \retval none +*/ +void rcu_interrupt_disable(rcu_int_enum stab_int) +{ + RCU_REG_VAL(stab_int) &= ~BIT(RCU_BIT_POS(stab_int)); +} + +/*! + \brief wait for oscillator stabilization flags is SET or oscillator startup is timeout + \param[in] osci: oscillator types, refer to rcu_osci_type_enum + only one parameter can be selected which is shown as below: + \arg RCU_HXTAL: high speed crystal oscillator(HXTAL) + \arg RCU_LXTAL: low speed crystal oscillator(LXTAL) + \arg RCU_IRC8M: internal 8M RC oscillators(IRC8M) + \arg RCU_IRC40K: internal 40K RC oscillator(IRC40K) + \arg RCU_PLL_CK: phase locked loop(PLL) + \arg RCU_PLL1_CK: phase locked loop 1 + \arg RCU_PLL2_CK: phase locked loop 2 + \param[out] none + \retval ErrStatus: SUCCESS or ERROR +*/ +ErrStatus rcu_osci_stab_wait(rcu_osci_type_enum osci) +{ + uint32_t stb_cnt = 0U; + ErrStatus reval = ERROR; + FlagStatus osci_stat = RESET; + + switch(osci){ + /* wait HXTAL stable */ + case RCU_HXTAL: + while((RESET == osci_stat) && (HXTAL_STARTUP_TIMEOUT != stb_cnt)){ + osci_stat = rcu_flag_get(RCU_FLAG_HXTALSTB); + stb_cnt++; + } + + /* check whether flag is set or not */ + if(RESET != rcu_flag_get(RCU_FLAG_HXTALSTB)){ + reval = SUCCESS; + } + break; + + /* wait LXTAL stable */ + case RCU_LXTAL: + while((RESET == osci_stat) && (LXTAL_STARTUP_TIMEOUT != stb_cnt)){ + osci_stat = rcu_flag_get(RCU_FLAG_LXTALSTB); + stb_cnt++; + } + + /* check whether flag is set or not */ + if(RESET != rcu_flag_get(RCU_FLAG_LXTALSTB)){ + reval = SUCCESS; + } + break; + + /* wait IRC8M stable */ + case RCU_IRC8M: + while((RESET == osci_stat) && (IRC8M_STARTUP_TIMEOUT != stb_cnt)){ + osci_stat = rcu_flag_get(RCU_FLAG_IRC8MSTB); + stb_cnt++; + } + + /* check whether flag is set or not */ + if(RESET != rcu_flag_get(RCU_FLAG_IRC8MSTB)){ + reval = SUCCESS; + } + break; + + /* wait IRC40K stable */ + case RCU_IRC40K: + while((RESET == osci_stat) && (OSC_STARTUP_TIMEOUT != stb_cnt)){ + osci_stat = rcu_flag_get(RCU_FLAG_IRC40KSTB); + stb_cnt++; + } + + /* check whether flag is set or not */ + if(RESET != rcu_flag_get(RCU_FLAG_IRC40KSTB)){ + reval = SUCCESS; + } + break; + + /* wait PLL stable */ + case RCU_PLL_CK: + while((RESET == osci_stat) && (OSC_STARTUP_TIMEOUT != stb_cnt)){ + osci_stat = rcu_flag_get(RCU_FLAG_PLLSTB); + stb_cnt++; + } + + /* check whether flag is set or not */ + if(RESET != rcu_flag_get(RCU_FLAG_PLLSTB)){ + reval = SUCCESS; + } + break; + /* wait PLL1 stable */ + case RCU_PLL1_CK: + while((RESET == osci_stat) && (OSC_STARTUP_TIMEOUT != stb_cnt)){ + osci_stat = rcu_flag_get(RCU_FLAG_PLL1STB); + stb_cnt++; + } + + /* check whether flag is set or not */ + if(RESET != rcu_flag_get(RCU_FLAG_PLL1STB)){ + reval = SUCCESS; + } + break; + /* wait PLL2 stable */ + case RCU_PLL2_CK: + while((RESET == osci_stat) && (OSC_STARTUP_TIMEOUT != stb_cnt)){ + osci_stat = rcu_flag_get(RCU_FLAG_PLL2STB); + stb_cnt++; + } + + /* check whether flag is set or not */ + if(RESET != rcu_flag_get(RCU_FLAG_PLL2STB)){ + reval = SUCCESS; + } + break; + + default: + break; + } + + /* return value */ + return reval; +} + +/*! + \brief turn on the oscillator + \param[in] osci: oscillator types, refer to rcu_osci_type_enum + only one parameter can be selected which is shown as below: + \arg RCU_HXTAL: high speed crystal oscillator(HXTAL) + \arg RCU_LXTAL: low speed crystal oscillator(LXTAL) + \arg RCU_IRC8M: internal 8M RC oscillators(IRC8M) + \arg RCU_IRC40K: internal 40K RC oscillator(IRC40K) + \arg RCU_PLL_CK: phase locked loop(PLL) + \arg RCU_PLL1_CK: phase locked loop 1 + \arg RCU_PLL2_CK: phase locked loop 2 + \param[out] none + \retval none +*/ +void rcu_osci_on(rcu_osci_type_enum osci) +{ + RCU_REG_VAL(osci) |= BIT(RCU_BIT_POS(osci)); +} + +/*! + \brief turn off the oscillator + \param[in] osci: oscillator types, refer to rcu_osci_type_enum + only one parameter can be selected which is shown as below: + \arg RCU_HXTAL: high speed crystal oscillator(HXTAL) + \arg RCU_LXTAL: low speed crystal oscillator(LXTAL) + \arg RCU_IRC8M: internal 8M RC oscillators(IRC8M) + \arg RCU_IRC40K: internal 40K RC oscillator(IRC40K) + \arg RCU_PLL_CK: phase locked loop(PLL) + \arg RCU_PLL1_CK: phase locked loop 1 + \arg RCU_PLL2_CK: phase locked loop 2 + \param[out] none + \retval none +*/ +void rcu_osci_off(rcu_osci_type_enum osci) +{ + RCU_REG_VAL(osci) &= ~BIT(RCU_BIT_POS(osci)); +} + +/*! + \brief enable the oscillator bypass mode, HXTALEN or LXTALEN must be reset before it + \param[in] osci: oscillator types, refer to rcu_osci_type_enum + only one parameter can be selected which is shown as below: + \arg RCU_HXTAL: high speed crystal oscillator(HXTAL) + \arg RCU_LXTAL: low speed crystal oscillator(LXTAL) + \param[out] none + \retval none +*/ +void rcu_osci_bypass_mode_enable(rcu_osci_type_enum osci) +{ + uint32_t reg; + + switch(osci){ + /* enable HXTAL to bypass mode */ + case RCU_HXTAL: + reg = RCU_CTL; + RCU_CTL &= ~RCU_CTL_HXTALEN; + RCU_CTL = (reg | RCU_CTL_HXTALBPS); + break; + /* enable LXTAL to bypass mode */ + case RCU_LXTAL: + reg = RCU_BDCTL; + RCU_BDCTL &= ~RCU_BDCTL_LXTALEN; + RCU_BDCTL = (reg | RCU_BDCTL_LXTALBPS); + break; + case RCU_IRC8M: + case RCU_IRC40K: + case RCU_PLL_CK: + case RCU_PLL1_CK: + case RCU_PLL2_CK: + break; + default: + break; + } +} + +/*! + \brief disable the oscillator bypass mode, HXTALEN or LXTALEN must be reset before it + \param[in] osci: oscillator types, refer to rcu_osci_type_enum + only one parameter can be selected which is shown as below: + \arg RCU_HXTAL: high speed crystal oscillator(HXTAL) + \arg RCU_LXTAL: low speed crystal oscillator(LXTAL) + \param[out] none + \retval none +*/ +void rcu_osci_bypass_mode_disable(rcu_osci_type_enum osci) +{ + uint32_t reg; + + switch(osci){ + /* disable HXTAL to bypass mode */ + case RCU_HXTAL: + reg = RCU_CTL; + RCU_CTL &= ~RCU_CTL_HXTALEN; + RCU_CTL = (reg & ~RCU_CTL_HXTALBPS); + break; + /* disable LXTAL to bypass mode */ + case RCU_LXTAL: + reg = RCU_BDCTL; + RCU_BDCTL &= ~RCU_BDCTL_LXTALEN; + RCU_BDCTL = (reg & ~RCU_BDCTL_LXTALBPS); + break; + case RCU_IRC8M: + case RCU_IRC40K: + case RCU_PLL_CK: + case RCU_PLL1_CK: + case RCU_PLL2_CK: + break; + default: + break; + } +} + +/*! + \brief enable the HXTAL clock monitor + \param[in] none + \param[out] none + \retval none +*/ + +void rcu_hxtal_clock_monitor_enable(void) +{ + RCU_CTL |= RCU_CTL_CKMEN; +} + +/*! + \brief disable the HXTAL clock monitor + \param[in] none + \param[out] none + \retval none +*/ +void rcu_hxtal_clock_monitor_disable(void) +{ + RCU_CTL &= ~RCU_CTL_CKMEN; +} + +/*! + \brief set the IRC8M adjust value + \param[in] irc8m_adjval: IRC8M adjust value, must be between 0 and 0x1F + \param[out] none + \retval none +*/ +void rcu_irc8m_adjust_value_set(uint32_t irc8m_adjval) +{ + uint32_t reg; + + reg = RCU_CTL; + /* reset the IRC8MADJ bits and set according to irc8m_adjval */ + reg &= ~RCU_CTL_IRC8MADJ; + RCU_CTL = (reg | ((irc8m_adjval & 0x1FU) << 3)); +} + +/*! + \brief deep-sleep mode voltage select + \param[in] dsvol: deep sleep mode voltage + only one parameter can be selected which is shown as below: + \arg RCU_DEEPSLEEP_V_1_2: the core voltage is 1.2V + \arg RCU_DEEPSLEEP_V_1_1: the core voltage is 1.1V + \arg RCU_DEEPSLEEP_V_1_0: the core voltage is 1.0V + \arg RCU_DEEPSLEEP_V_0_9: the core voltage is 0.9V + \param[out] none + \retval none +*/ +void rcu_deepsleep_voltage_set(uint32_t dsvol) +{ + dsvol &= RCU_DSV_DSLPVS; + RCU_DSV = dsvol; +} + +/*! + \brief get the system clock, bus and peripheral clock frequency + \param[in] clock: the clock frequency which to get + only one parameter can be selected which is shown as below: + \arg CK_SYS: system clock frequency + \arg CK_AHB: AHB clock frequency + \arg CK_APB1: APB1 clock frequency + \arg CK_APB2: APB2 clock frequency + \param[out] none + \retval clock frequency of system, AHB, APB1, APB2 +*/ +uint32_t rcu_clock_freq_get(rcu_clock_freq_enum clock) +{ + uint32_t sws, ck_freq = 0U; + uint32_t cksys_freq, ahb_freq, apb1_freq, apb2_freq; + uint32_t pllsel, predv0sel, pllmf,ck_src, idx, clk_exp; + uint32_t predv0, predv1, pll1mf; + + /* exponent of AHB, APB1 and APB2 clock divider */ + uint8_t ahb_exp[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; + uint8_t apb1_exp[8] = {0, 0, 0, 0, 1, 2, 3, 4}; + uint8_t apb2_exp[8] = {0, 0, 0, 0, 1, 2, 3, 4}; + + sws = GET_BITS(RCU_CFG0, 2, 3); + switch(sws){ + /* IRC8M is selected as CK_SYS */ + case SEL_IRC8M: + cksys_freq = IRC8M_VALUE; + break; + /* HXTAL is selected as CK_SYS */ + case SEL_HXTAL: + cksys_freq = HXTAL_VALUE; + break; + /* PLL is selected as CK_SYS */ + case SEL_PLL: + /* PLL clock source selection, HXTAL or IRC8M/2 */ + pllsel = (RCU_CFG0 & RCU_CFG0_PLLSEL); + + if(RCU_PLLSRC_HXTAL == pllsel) { + /* PLL clock source is HXTAL */ + ck_src = HXTAL_VALUE; + + predv0sel = (RCU_CFG1 & RCU_CFG1_PREDV0SEL); + /* source clock use PLL1 */ + if(RCU_PREDV0SRC_CKPLL1 == predv0sel){ + predv1 = (uint32_t)((RCU_CFG1 & RCU_CFG1_PREDV1) >> 4) + 1U; + pll1mf = (uint32_t)((RCU_CFG1 & RCU_CFG1_PLL1MF) >> 8) + 2U; + if(17U == pll1mf){ + pll1mf = 20U; + } + ck_src = (ck_src / predv1) * pll1mf; + } + predv0 = (RCU_CFG1 & RCU_CFG1_PREDV0) + 1U; + ck_src /= predv0; + }else{ + /* PLL clock source is IRC8M/2 */ + ck_src = IRC8M_VALUE/2U; + } + + /* PLL multiplication factor */ + pllmf = GET_BITS(RCU_CFG0, 18, 21); + if((RCU_CFG0 & RCU_CFG0_PLLMF_4)){ + pllmf |= 0x10U; + } + if(pllmf < 15U){ + pllmf += 2U; + }else{ + pllmf += 1U; + } + + cksys_freq = ck_src * pllmf; + + if(15U == pllmf){ + /* PLL source clock multiply by 6.5 */ + cksys_freq = ck_src * 6U + ck_src / 2U; + } + + break; + /* IRC8M is selected as CK_SYS */ + default: + cksys_freq = IRC8M_VALUE; + break; + } + + /* calculate AHB clock frequency */ + idx = GET_BITS(RCU_CFG0, 4, 7); + clk_exp = ahb_exp[idx]; + ahb_freq = cksys_freq >> clk_exp; + + /* calculate APB1 clock frequency */ + idx = GET_BITS(RCU_CFG0, 8, 10); + clk_exp = apb1_exp[idx]; + apb1_freq = ahb_freq >> clk_exp; + + /* calculate APB2 clock frequency */ + idx = GET_BITS(RCU_CFG0, 11, 13); + clk_exp = apb2_exp[idx]; + apb2_freq = ahb_freq >> clk_exp; + + /* return the clocks frequency */ + switch(clock){ + case CK_SYS: + ck_freq = cksys_freq; + break; + case CK_AHB: + ck_freq = ahb_freq; + break; + case CK_APB1: + ck_freq = apb1_freq; + break; + case CK_APB2: + ck_freq = apb2_freq; + break; + default: + break; + } + return ck_freq; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_rcu.s b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_rcu.s new file mode 100644 index 0000000000..422603f91a --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_rcu.s @@ -0,0 +1,21714 @@ + .file "gd32vf103_rcu.c" + .option nopic + .text +.Ltext0: + .cfi_sections .debug_frame + .align 1 + .globl rcu_deinit + .type rcu_deinit, @function +rcu_deinit: +.LFB2: + .file 1 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Source\\gd32vf103_rcu.c" + .loc 1 54 1 + .cfi_startproc + addi sp,sp,-16 + .cfi_def_cfa_offset 16 + sw ra,12(sp) + sw s0,8(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,16 + .cfi_def_cfa 8, 0 + .loc 1 56 89 + li a5,1073876992 + lw a4,0(a5) + li a5,1073876992 + ori a4,a4,1 + sw a4,0(a5) + .loc 1 57 5 + li a0,0 + call rcu_osci_stab_wait + .loc 1 59 89 + li a5,1073876992 + lw a3,0(a5) + li a5,1073876992 + li a4,-17367040 + addi a4,a4,-1 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 60 89 + li a5,1073876992 + lw a3,0(a5) + li a5,1073876992 + li a4,-262144 + addi a4,a4,-1 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 61 89 + li a5,1073876992 + lw a3,0(a5) + li a5,1073876992 + li a4,-335544320 + addi a4,a4,-1 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 63 89 + li a5,1073876992 + addi a5,a5,4 + lw a3,0(a5) + li a5,1073876992 + addi a5,a5,4 + li a4,-1073741824 + addi a4,a4,12 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 67 6 + li a5,1073876992 + addi a5,a5,8 + .loc 1 67 89 + li a4,16711680 + sw a4,0(a5) + .loc 1 68 89 + li a5,1073876992 + addi a5,a5,44 + lw a3,0(a5) + li a5,1073876992 + addi a5,a5,44 + li a4,-524288 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 70 1 + nop + lw ra,12(sp) + .cfi_restore 1 + lw s0,8(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 16 + addi sp,sp,16 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE2: + .size rcu_deinit, .-rcu_deinit + .align 1 + .globl rcu_periph_clock_enable + .type rcu_periph_clock_enable, @function +rcu_periph_clock_enable: +.LFB3: + .loc 1 98 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 99 111 + lw a5,-20(s0) + srli a4,a5,6 + li a5,1073876992 + add a5,a4,a5 + lw a4,0(a5) + .loc 1 99 164 + lw a5,-20(s0) + andi a5,a5,31 + .loc 1 99 115 + li a3,1 + sll a5,a3,a5 + .loc 1 99 111 + lw a3,-20(s0) + srli a2,a3,6 + li a3,1073876992 + add a3,a2,a3 + or a5,a4,a5 + sw a5,0(a3) + .loc 1 100 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE3: + .size rcu_periph_clock_enable, .-rcu_periph_clock_enable + .align 1 + .globl rcu_periph_clock_disable + .type rcu_periph_clock_disable, @function +rcu_periph_clock_disable: +.LFB4: + .loc 1 128 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 129 111 + lw a5,-20(s0) + srli a4,a5,6 + li a5,1073876992 + add a5,a4,a5 + lw a4,0(a5) + .loc 1 129 165 + lw a5,-20(s0) + andi a5,a5,31 + .loc 1 129 116 + li a3,1 + sll a5,a3,a5 + .loc 1 129 114 + not a5,a5 + .loc 1 129 111 + lw a3,-20(s0) + srli a2,a3,6 + li a3,1073876992 + add a3,a2,a3 + and a5,a4,a5 + sw a5,0(a3) + .loc 1 130 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE4: + .size rcu_periph_clock_disable, .-rcu_periph_clock_disable + .align 1 + .globl rcu_periph_clock_sleep_enable + .type rcu_periph_clock_sleep_enable, @function +rcu_periph_clock_sleep_enable: +.LFB5: + .loc 1 142 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 143 111 + lw a5,-20(s0) + srli a4,a5,6 + li a5,1073876992 + add a5,a4,a5 + lw a4,0(a5) + .loc 1 143 164 + lw a5,-20(s0) + andi a5,a5,31 + .loc 1 143 115 + li a3,1 + sll a5,a3,a5 + .loc 1 143 111 + lw a3,-20(s0) + srli a2,a3,6 + li a3,1073876992 + add a3,a2,a3 + or a5,a4,a5 + sw a5,0(a3) + .loc 1 144 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE5: + .size rcu_periph_clock_sleep_enable, .-rcu_periph_clock_sleep_enable + .align 1 + .globl rcu_periph_clock_sleep_disable + .type rcu_periph_clock_sleep_disable, @function +rcu_periph_clock_sleep_disable: +.LFB6: + .loc 1 156 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 157 111 + lw a5,-20(s0) + srli a4,a5,6 + li a5,1073876992 + add a5,a4,a5 + lw a4,0(a5) + .loc 1 157 165 + lw a5,-20(s0) + andi a5,a5,31 + .loc 1 157 116 + li a3,1 + sll a5,a3,a5 + .loc 1 157 114 + not a5,a5 + .loc 1 157 111 + lw a3,-20(s0) + srli a2,a3,6 + li a3,1073876992 + add a3,a2,a3 + and a5,a4,a5 + sw a5,0(a3) + .loc 1 158 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE6: + .size rcu_periph_clock_sleep_disable, .-rcu_periph_clock_sleep_disable + .align 1 + .globl rcu_periph_reset_enable + .type rcu_periph_reset_enable, @function +rcu_periph_reset_enable: +.LFB7: + .loc 1 182 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 183 117 + lw a5,-20(s0) + srli a4,a5,6 + li a5,1073876992 + add a5,a4,a5 + lw a4,0(a5) + .loc 1 183 176 + lw a5,-20(s0) + andi a5,a5,31 + .loc 1 183 121 + li a3,1 + sll a5,a3,a5 + .loc 1 183 117 + lw a3,-20(s0) + srli a2,a3,6 + li a3,1073876992 + add a3,a2,a3 + or a5,a4,a5 + sw a5,0(a3) + .loc 1 184 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE7: + .size rcu_periph_reset_enable, .-rcu_periph_reset_enable + .align 1 + .globl rcu_periph_reset_disable + .type rcu_periph_reset_disable, @function +rcu_periph_reset_disable: +.LFB8: + .loc 1 208 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 209 117 + lw a5,-20(s0) + srli a4,a5,6 + li a5,1073876992 + add a5,a4,a5 + lw a4,0(a5) + .loc 1 209 177 + lw a5,-20(s0) + andi a5,a5,31 + .loc 1 209 122 + li a3,1 + sll a5,a3,a5 + .loc 1 209 120 + not a5,a5 + .loc 1 209 117 + lw a3,-20(s0) + srli a2,a3,6 + li a3,1073876992 + add a3,a2,a3 + and a5,a4,a5 + sw a5,0(a3) + .loc 1 210 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE8: + .size rcu_periph_reset_disable, .-rcu_periph_reset_disable + .align 1 + .globl rcu_bkp_reset_enable + .type rcu_bkp_reset_enable, @function +rcu_bkp_reset_enable: +.LFB9: + .loc 1 219 1 + .cfi_startproc + addi sp,sp,-16 + .cfi_def_cfa_offset 16 + sw s0,12(sp) + .cfi_offset 8, -4 + addi s0,sp,16 + .cfi_def_cfa 8, 0 + .loc 1 220 89 + li a5,1073876992 + addi a5,a5,32 + lw a3,0(a5) + li a5,1073876992 + addi a5,a5,32 + li a4,65536 + or a4,a3,a4 + sw a4,0(a5) + .loc 1 221 1 + nop + lw s0,12(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 16 + addi sp,sp,16 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE9: + .size rcu_bkp_reset_enable, .-rcu_bkp_reset_enable + .align 1 + .globl rcu_bkp_reset_disable + .type rcu_bkp_reset_disable, @function +rcu_bkp_reset_disable: +.LFB10: + .loc 1 230 1 + .cfi_startproc + addi sp,sp,-16 + .cfi_def_cfa_offset 16 + sw s0,12(sp) + .cfi_offset 8, -4 + addi s0,sp,16 + .cfi_def_cfa 8, 0 + .loc 1 231 89 + li a5,1073876992 + addi a5,a5,32 + lw a3,0(a5) + li a5,1073876992 + addi a5,a5,32 + li a4,-65536 + addi a4,a4,-1 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 232 1 + nop + lw s0,12(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 16 + addi sp,sp,16 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE10: + .size rcu_bkp_reset_disable, .-rcu_bkp_reset_disable + .align 1 + .globl rcu_system_clock_source_config + .type rcu_system_clock_source_config, @function +rcu_system_clock_source_config: +.LFB11: + .loc 1 245 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 248 12 + li a5,1073876992 + addi a5,a5,4 + .loc 1 248 9 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 250 9 + lw a5,-20(s0) + andi a5,a5,-4 + sw a5,-20(s0) + .loc 1 251 6 + li a5,1073876992 + addi a5,a5,4 + .loc 1 251 96 + lw a3,-20(s0) + lw a4,-36(s0) + or a4,a3,a4 + .loc 1 251 89 + sw a4,0(a5) + .loc 1 252 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE11: + .size rcu_system_clock_source_config, .-rcu_system_clock_source_config + .align 1 + .globl rcu_system_clock_source_get + .type rcu_system_clock_source_get, @function +rcu_system_clock_source_get: +.LFB12: + .loc 1 264 1 + .cfi_startproc + addi sp,sp,-16 + .cfi_def_cfa_offset 16 + sw s0,12(sp) + .cfi_offset 8, -4 + addi s0,sp,16 + .cfi_def_cfa 8, 0 + .loc 1 265 97 + li a5,1073876992 + addi a5,a5,4 + lw a5,0(a5) + andi a5,a5,12 + .loc 1 266 1 + mv a0,a5 + lw s0,12(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 16 + addi sp,sp,16 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE12: + .size rcu_system_clock_source_get, .-rcu_system_clock_source_get + .align 1 + .globl rcu_ahb_clock_config + .type rcu_ahb_clock_config, @function +rcu_ahb_clock_config: +.LFB13: + .loc 1 277 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 280 12 + li a5,1073876992 + addi a5,a5,4 + .loc 1 280 9 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 283 9 + lw a5,-20(s0) + andi a5,a5,-241 + sw a5,-20(s0) + .loc 1 284 6 + li a5,1073876992 + addi a5,a5,4 + .loc 1 284 96 + lw a3,-20(s0) + lw a4,-36(s0) + or a4,a3,a4 + .loc 1 284 89 + sw a4,0(a5) + .loc 1 285 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE13: + .size rcu_ahb_clock_config, .-rcu_ahb_clock_config + .align 1 + .globl rcu_apb1_clock_config + .type rcu_apb1_clock_config, @function +rcu_apb1_clock_config: +.LFB14: + .loc 1 300 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 303 12 + li a5,1073876992 + addi a5,a5,4 + .loc 1 303 9 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 306 9 + lw a5,-20(s0) + andi a5,a5,-1793 + sw a5,-20(s0) + .loc 1 307 6 + li a5,1073876992 + addi a5,a5,4 + .loc 1 307 96 + lw a3,-20(s0) + lw a4,-36(s0) + or a4,a3,a4 + .loc 1 307 89 + sw a4,0(a5) + .loc 1 308 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE14: + .size rcu_apb1_clock_config, .-rcu_apb1_clock_config + .align 1 + .globl rcu_apb2_clock_config + .type rcu_apb2_clock_config, @function +rcu_apb2_clock_config: +.LFB15: + .loc 1 323 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 326 12 + li a5,1073876992 + addi a5,a5,4 + .loc 1 326 9 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 329 9 + lw a4,-20(s0) + li a5,-16384 + addi a5,a5,2047 + and a5,a4,a5 + sw a5,-20(s0) + .loc 1 330 6 + li a5,1073876992 + addi a5,a5,4 + .loc 1 330 96 + lw a3,-20(s0) + lw a4,-36(s0) + or a4,a3,a4 + .loc 1 330 89 + sw a4,0(a5) + .loc 1 331 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE15: + .size rcu_apb2_clock_config, .-rcu_apb2_clock_config + .align 1 + .globl rcu_ckout0_config + .type rcu_ckout0_config, @function +rcu_ckout0_config: +.LFB16: + .loc 1 350 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 353 12 + li a5,1073876992 + addi a5,a5,4 + .loc 1 353 9 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 356 9 + lw a4,-20(s0) + li a5,-251658240 + addi a5,a5,-1 + and a5,a4,a5 + sw a5,-20(s0) + .loc 1 357 6 + li a5,1073876992 + addi a5,a5,4 + .loc 1 357 96 + lw a3,-20(s0) + lw a4,-36(s0) + or a4,a3,a4 + .loc 1 357 89 + sw a4,0(a5) + .loc 1 358 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE16: + .size rcu_ckout0_config, .-rcu_ckout0_config + .align 1 + .globl rcu_pll_config + .type rcu_pll_config, @function +rcu_pll_config: +.LFB17: + .loc 1 373 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + sw a1,-40(s0) + .loc 1 374 14 + sw zero,-20(s0) + .loc 1 376 12 + li a5,1073876992 + addi a5,a5,4 + .loc 1 376 9 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 379 9 + lw a4,-20(s0) + li a5,-540868608 + addi a5,a5,-1 + and a5,a4,a5 + sw a5,-20(s0) + .loc 1 380 21 + lw a4,-36(s0) + lw a5,-40(s0) + or a5,a4,a5 + .loc 1 380 9 + lw a4,-20(s0) + or a5,a4,a5 + sw a5,-20(s0) + .loc 1 382 6 + li a5,1073876992 + addi a5,a5,4 + .loc 1 382 89 + lw a4,-20(s0) + sw a4,0(a5) + .loc 1 383 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE17: + .size rcu_pll_config, .-rcu_pll_config + .align 1 + .globl rcu_predv0_config + .type rcu_predv0_config, @function +rcu_predv0_config: +.LFB18: + .loc 1 398 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + sw a1,-40(s0) + .loc 1 399 14 + sw zero,-20(s0) + .loc 1 401 12 + li a5,1073876992 + addi a5,a5,44 + .loc 1 401 9 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 403 9 + lw a4,-20(s0) + li a5,-65536 + addi a5,a5,-16 + and a5,a4,a5 + sw a5,-20(s0) + .loc 1 405 27 + lw a4,-36(s0) + lw a5,-40(s0) + or a5,a4,a5 + .loc 1 405 9 + lw a4,-20(s0) + or a5,a4,a5 + sw a5,-20(s0) + .loc 1 407 6 + li a5,1073876992 + addi a5,a5,44 + .loc 1 407 89 + lw a4,-20(s0) + sw a4,0(a5) + .loc 1 408 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE18: + .size rcu_predv0_config, .-rcu_predv0_config + .align 1 + .globl rcu_predv1_config + .type rcu_predv1_config, @function +rcu_predv1_config: +.LFB19: + .loc 1 419 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 420 14 + sw zero,-20(s0) + .loc 1 422 12 + li a5,1073876992 + addi a5,a5,44 + .loc 1 422 9 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 424 9 + lw a5,-20(s0) + andi a5,a5,-241 + sw a5,-20(s0) + .loc 1 426 9 + lw a4,-20(s0) + lw a5,-36(s0) + or a5,a4,a5 + sw a5,-20(s0) + .loc 1 428 6 + li a5,1073876992 + addi a5,a5,44 + .loc 1 428 89 + lw a4,-20(s0) + sw a4,0(a5) + .loc 1 429 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE19: + .size rcu_predv1_config, .-rcu_predv1_config + .align 1 + .globl rcu_pll1_config + .type rcu_pll1_config, @function +rcu_pll1_config: +.LFB20: + .loc 1 440 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 441 89 + li a5,1073876992 + addi a5,a5,44 + lw a3,0(a5) + li a5,1073876992 + addi a5,a5,44 + li a4,-4096 + addi a4,a4,255 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 442 89 + li a5,1073876992 + addi a5,a5,44 + lw a3,0(a5) + li a5,1073876992 + addi a5,a5,44 + lw a4,-20(s0) + or a4,a3,a4 + sw a4,0(a5) + .loc 1 443 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE20: + .size rcu_pll1_config, .-rcu_pll1_config + .align 1 + .globl rcu_pll2_config + .type rcu_pll2_config, @function +rcu_pll2_config: +.LFB21: + .loc 1 454 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 455 89 + li a5,1073876992 + addi a5,a5,44 + lw a3,0(a5) + li a5,1073876992 + addi a5,a5,44 + li a4,-61440 + addi a4,a4,-1 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 456 89 + li a5,1073876992 + addi a5,a5,44 + lw a3,0(a5) + li a5,1073876992 + addi a5,a5,44 + lw a4,-20(s0) + or a4,a3,a4 + sw a4,0(a5) + .loc 1 457 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE21: + .size rcu_pll2_config, .-rcu_pll2_config + .align 1 + .globl rcu_adc_clock_config + .type rcu_adc_clock_config, @function +rcu_adc_clock_config: +.LFB22: + .loc 1 473 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 477 13 + li a5,1073876992 + addi a5,a5,4 + .loc 1 477 10 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 478 10 + lw a4,-20(s0) + li a5,-268484608 + addi a5,a5,-1 + and a5,a4,a5 + sw a5,-20(s0) + .loc 1 481 5 + lw a4,-36(s0) + li a5,7 + beq a4,a5,.L23 + lw a4,-36(s0) + li a5,7 + bgtu a4,a5,.L27 + lw a4,-36(s0) + li a5,3 + bleu a4,a5,.L25 + lw a4,-36(s0) + li a5,5 + beq a4,a5,.L23 + .loc 1 496 13 + j .L27 +.L25: + .loc 1 486 30 + lw a5,-36(s0) + slli a5,a5,14 + .loc 1 486 18 + lw a4,-20(s0) + or a5,a4,a5 + sw a5,-20(s0) + .loc 1 487 13 + j .L26 +.L23: + .loc 1 491 21 + lw a5,-36(s0) + andi a5,a5,-5 + sw a5,-36(s0) + .loc 1 492 30 + lw a5,-36(s0) + slli a4,a5,14 + .loc 1 492 18 + lw a5,-20(s0) + or a4,a4,a5 + li a5,268435456 + or a5,a4,a5 + sw a5,-20(s0) + .loc 1 493 13 + j .L26 +.L27: + .loc 1 496 13 + nop +.L26: + .loc 1 500 6 + li a5,1073876992 + addi a5,a5,4 + .loc 1 500 89 + lw a4,-20(s0) + sw a4,0(a5) + .loc 1 501 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE22: + .size rcu_adc_clock_config, .-rcu_adc_clock_config + .align 1 + .globl rcu_usb_clock_config + .type rcu_usb_clock_config, @function +rcu_usb_clock_config: +.LFB23: + .loc 1 515 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 518 12 + li a5,1073876992 + addi a5,a5,4 + .loc 1 518 9 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 521 9 + lw a4,-20(s0) + li a5,-12582912 + addi a5,a5,-1 + and a5,a4,a5 + sw a5,-20(s0) + .loc 1 522 6 + li a5,1073876992 + addi a5,a5,4 + .loc 1 522 96 + lw a3,-20(s0) + lw a4,-36(s0) + or a4,a3,a4 + .loc 1 522 89 + sw a4,0(a5) + .loc 1 523 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE23: + .size rcu_usb_clock_config, .-rcu_usb_clock_config + .align 1 + .globl rcu_rtc_clock_config + .type rcu_rtc_clock_config, @function +rcu_rtc_clock_config: +.LFB24: + .loc 1 537 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 540 12 + li a5,1073876992 + addi a5,a5,32 + .loc 1 540 9 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 542 9 + lw a5,-20(s0) + andi a5,a5,-769 + sw a5,-20(s0) + .loc 1 543 6 + li a5,1073876992 + addi a5,a5,32 + .loc 1 543 96 + lw a3,-20(s0) + lw a4,-36(s0) + or a4,a3,a4 + .loc 1 543 89 + sw a4,0(a5) + .loc 1 544 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE24: + .size rcu_rtc_clock_config, .-rcu_rtc_clock_config + .align 1 + .globl rcu_i2s1_clock_config + .type rcu_i2s1_clock_config, @function +rcu_i2s1_clock_config: +.LFB25: + .loc 1 556 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 559 12 + li a5,1073876992 + addi a5,a5,44 + .loc 1 559 9 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 561 9 + lw a4,-20(s0) + li a5,-131072 + addi a5,a5,-1 + and a5,a4,a5 + sw a5,-20(s0) + .loc 1 562 6 + li a5,1073876992 + addi a5,a5,44 + .loc 1 562 96 + lw a3,-20(s0) + lw a4,-36(s0) + or a4,a3,a4 + .loc 1 562 89 + sw a4,0(a5) + .loc 1 563 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE25: + .size rcu_i2s1_clock_config, .-rcu_i2s1_clock_config + .align 1 + .globl rcu_i2s2_clock_config + .type rcu_i2s2_clock_config, @function +rcu_i2s2_clock_config: +.LFB26: + .loc 1 575 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 578 12 + li a5,1073876992 + addi a5,a5,44 + .loc 1 578 9 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 580 9 + lw a4,-20(s0) + li a5,-262144 + addi a5,a5,-1 + and a5,a4,a5 + sw a5,-20(s0) + .loc 1 581 6 + li a5,1073876992 + addi a5,a5,44 + .loc 1 581 96 + lw a3,-20(s0) + lw a4,-36(s0) + or a4,a3,a4 + .loc 1 581 89 + sw a4,0(a5) + .loc 1 582 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE26: + .size rcu_i2s2_clock_config, .-rcu_i2s2_clock_config + .align 1 + .globl rcu_flag_get + .type rcu_flag_get, @function +rcu_flag_get: +.LFB27: + .loc 1 605 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 607 113 + lw a5,-20(s0) + srli a4,a5,6 + .loc 1 607 42 + li a5,1073876992 + add a5,a4,a5 + .loc 1 607 20 + lw a4,0(a5) + .loc 1 607 172 + lw a5,-20(s0) + andi a5,a5,31 + .loc 1 607 14 + srl a5,a4,a5 + andi a5,a5,1 + .loc 1 607 7 + beq a5,zero,.L33 + .loc 1 608 16 + li a5,1 + j .L34 +.L33: + .loc 1 610 16 + li a5,0 +.L34: + .loc 1 612 1 + mv a0,a5 + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE27: + .size rcu_flag_get, .-rcu_flag_get + .align 1 + .globl rcu_all_reset_flag_clear + .type rcu_all_reset_flag_clear, @function +rcu_all_reset_flag_clear: +.LFB28: + .loc 1 621 1 + .cfi_startproc + addi sp,sp,-16 + .cfi_def_cfa_offset 16 + sw s0,12(sp) + .cfi_offset 8, -4 + addi s0,sp,16 + .cfi_def_cfa 8, 0 + .loc 1 622 89 + li a5,1073876992 + addi a5,a5,36 + lw a3,0(a5) + li a5,1073876992 + addi a5,a5,36 + li a4,16777216 + or a4,a3,a4 + sw a4,0(a5) + .loc 1 623 1 + nop + lw s0,12(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 16 + addi sp,sp,16 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE28: + .size rcu_all_reset_flag_clear, .-rcu_all_reset_flag_clear + .align 1 + .globl rcu_interrupt_flag_get + .type rcu_interrupt_flag_get, @function +rcu_interrupt_flag_get: +.LFB29: + .loc 1 641 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 643 117 + lw a5,-20(s0) + srli a4,a5,6 + .loc 1 643 42 + li a5,1073876992 + add a5,a4,a5 + .loc 1 643 20 + lw a4,0(a5) + .loc 1 643 180 + lw a5,-20(s0) + andi a5,a5,31 + .loc 1 643 14 + srl a5,a4,a5 + andi a5,a5,1 + .loc 1 643 7 + beq a5,zero,.L37 + .loc 1 644 16 + li a5,1 + j .L38 +.L37: + .loc 1 646 16 + li a5,0 +.L38: + .loc 1 648 1 + mv a0,a5 + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE29: + .size rcu_interrupt_flag_get, .-rcu_interrupt_flag_get + .align 1 + .globl rcu_interrupt_flag_clear + .type rcu_interrupt_flag_clear, @function +rcu_interrupt_flag_clear: +.LFB30: + .loc 1 666 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 667 119 + lw a5,-20(s0) + srli a4,a5,6 + li a5,1073876992 + add a5,a4,a5 + lw a4,0(a5) + .loc 1 667 180 + lw a5,-20(s0) + andi a5,a5,31 + .loc 1 667 123 + li a3,1 + sll a5,a3,a5 + .loc 1 667 119 + lw a3,-20(s0) + srli a2,a3,6 + li a3,1073876992 + add a3,a2,a3 + or a5,a4,a5 + sw a5,0(a3) + .loc 1 668 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE30: + .size rcu_interrupt_flag_clear, .-rcu_interrupt_flag_clear + .align 1 + .globl rcu_interrupt_enable + .type rcu_interrupt_enable, @function +rcu_interrupt_enable: +.LFB31: + .loc 1 685 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 686 113 + lw a5,-20(s0) + srli a4,a5,6 + li a5,1073876992 + add a5,a4,a5 + lw a4,0(a5) + .loc 1 686 168 + lw a5,-20(s0) + andi a5,a5,31 + .loc 1 686 117 + li a3,1 + sll a5,a3,a5 + .loc 1 686 113 + lw a3,-20(s0) + srli a2,a3,6 + li a3,1073876992 + add a3,a2,a3 + or a5,a4,a5 + sw a5,0(a3) + .loc 1 687 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE31: + .size rcu_interrupt_enable, .-rcu_interrupt_enable + .align 1 + .globl rcu_interrupt_disable + .type rcu_interrupt_disable, @function +rcu_interrupt_disable: +.LFB32: + .loc 1 704 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 705 113 + lw a5,-20(s0) + srli a4,a5,6 + li a5,1073876992 + add a5,a4,a5 + lw a4,0(a5) + .loc 1 705 169 + lw a5,-20(s0) + andi a5,a5,31 + .loc 1 705 118 + li a3,1 + sll a5,a3,a5 + .loc 1 705 116 + not a5,a5 + .loc 1 705 113 + lw a3,-20(s0) + srli a2,a3,6 + li a3,1073876992 + add a3,a2,a3 + and a5,a4,a5 + sw a5,0(a3) + .loc 1 706 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE32: + .size rcu_interrupt_disable, .-rcu_interrupt_disable + .align 1 + .globl rcu_osci_stab_wait + .type rcu_osci_stab_wait, @function +rcu_osci_stab_wait: +.LFB33: + .loc 1 723 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw ra,44(sp) + sw s0,40(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 724 14 + sw zero,-20(s0) + .loc 1 725 15 + sw zero,-24(s0) + .loc 1 726 16 + sw zero,-28(s0) + .loc 1 728 5 + lw a4,-36(s0) + li a5,4096 + addi a5,a5,-1792 + beq a4,a5,.L66 + lw a4,-36(s0) + li a5,4096 + addi a5,a5,-1792 + bgtu a4,a5,.L83 + lw a4,-36(s0) + li a5,28 + bgtu a4,a5,.L45 + lw a4,-36(s0) + li a5,28 + bgtu a4,a5,.L83 + lw a5,-36(s0) + slli a4,a5,2 + lla a5,.L47 + add a5,a4,a5 + lw a4,0(a5) + lla a5,.L47 + add a5,a4,a5 + jr a5 + .section .rodata + .align 2 + .align 2 +.L47: + .word .L62-.L47 + .word .L83-.L47 + .word .L83-.L47 + .word .L83-.L47 + .word .L83-.L47 + .word .L83-.L47 + .word .L83-.L47 + .word .L83-.L47 + .word .L83-.L47 + .word .L83-.L47 + .word .L83-.L47 + .word .L83-.L47 + .word .L83-.L47 + .word .L83-.L47 + .word .L83-.L47 + .word .L83-.L47 + .word .L53-.L47 + .word .L83-.L47 + .word .L83-.L47 + .word .L83-.L47 + .word .L83-.L47 + .word .L83-.L47 + .word .L83-.L47 + .word .L83-.L47 + .word .L70-.L47 + .word .L83-.L47 + .word .L74-.L47 + .word .L83-.L47 + .word .L78-.L47 + .text +.L45: + lw a5,-36(s0) + addi a5,a5,-2048 + beq a5,zero,.L58 + .loc 1 819 9 + j .L83 +.L55: + .loc 1 732 25 + li a0,17 + call rcu_flag_get + sw a0,-28(s0) + .loc 1 733 20 + lw a5,-20(s0) + addi a5,a5,1 + sw a5,-20(s0) +.L53: + .loc 1 731 14 + lw a5,-28(s0) + bne a5,zero,.L54 + .loc 1 731 36 discriminator 1 + lw a4,-20(s0) + li a5,65536 + addi a5,a5,-1 + bne a4,a5,.L55 +.L54: + .loc 1 737 21 + li a0,17 + call rcu_flag_get + mv a5,a0 + .loc 1 737 11 + beq a5,zero,.L84 + .loc 1 738 19 + li a5,1 + sw a5,-24(s0) + .loc 1 740 9 + j .L84 +.L60: + .loc 1 745 25 + li a5,4096 + addi a0,a5,-2047 + call rcu_flag_get + sw a0,-28(s0) + .loc 1 746 20 + lw a5,-20(s0) + addi a5,a5,1 + sw a5,-20(s0) +.L58: + .loc 1 744 14 + lw a5,-28(s0) + bne a5,zero,.L59 + .loc 1 744 36 discriminator 1 + lw a4,-20(s0) + li a5,67108864 + addi a5,a5,-1 + bne a4,a5,.L60 +.L59: + .loc 1 750 21 + li a5,4096 + addi a0,a5,-2047 + call rcu_flag_get + mv a5,a0 + .loc 1 750 11 + beq a5,zero,.L85 + .loc 1 751 19 + li a5,1 + sw a5,-24(s0) + .loc 1 753 9 + j .L85 +.L64: + .loc 1 758 25 + li a0,1 + call rcu_flag_get + sw a0,-28(s0) + .loc 1 759 20 + lw a5,-20(s0) + addi a5,a5,1 + sw a5,-20(s0) +.L62: + .loc 1 757 14 + lw a5,-28(s0) + bne a5,zero,.L63 + .loc 1 757 36 discriminator 1 + lw a4,-20(s0) + li a5,1280 + bne a4,a5,.L64 +.L63: + .loc 1 763 21 + li a0,1 + call rcu_flag_get + mv a5,a0 + .loc 1 763 11 + beq a5,zero,.L86 + .loc 1 764 19 + li a5,1 + sw a5,-24(s0) + .loc 1 766 9 + j .L86 +.L68: + .loc 1 771 25 + li a5,4096 + addi a0,a5,-1791 + call rcu_flag_get + sw a0,-28(s0) + .loc 1 772 20 + lw a5,-20(s0) + addi a5,a5,1 + sw a5,-20(s0) +.L66: + .loc 1 770 14 + lw a5,-28(s0) + bne a5,zero,.L67 + .loc 1 770 36 discriminator 1 + lw a4,-20(s0) + li a5,1048576 + addi a5,a5,-1 + bne a4,a5,.L68 +.L67: + .loc 1 776 21 + li a5,4096 + addi a0,a5,-1791 + call rcu_flag_get + mv a5,a0 + .loc 1 776 11 + beq a5,zero,.L87 + .loc 1 777 19 + li a5,1 + sw a5,-24(s0) + .loc 1 779 9 + j .L87 +.L72: + .loc 1 784 25 + li a0,25 + call rcu_flag_get + sw a0,-28(s0) + .loc 1 785 20 + lw a5,-20(s0) + addi a5,a5,1 + sw a5,-20(s0) +.L70: + .loc 1 783 14 + lw a5,-28(s0) + bne a5,zero,.L71 + .loc 1 783 36 discriminator 1 + lw a4,-20(s0) + li a5,1048576 + addi a5,a5,-1 + bne a4,a5,.L72 +.L71: + .loc 1 789 21 + li a0,25 + call rcu_flag_get + mv a5,a0 + .loc 1 789 11 + beq a5,zero,.L88 + .loc 1 790 19 + li a5,1 + sw a5,-24(s0) + .loc 1 792 9 + j .L88 +.L76: + .loc 1 796 25 + li a0,27 + call rcu_flag_get + sw a0,-28(s0) + .loc 1 797 20 + lw a5,-20(s0) + addi a5,a5,1 + sw a5,-20(s0) +.L74: + .loc 1 795 14 + lw a5,-28(s0) + bne a5,zero,.L75 + .loc 1 795 36 discriminator 1 + lw a4,-20(s0) + li a5,1048576 + addi a5,a5,-1 + bne a4,a5,.L76 +.L75: + .loc 1 801 21 + li a0,27 + call rcu_flag_get + mv a5,a0 + .loc 1 801 11 + beq a5,zero,.L89 + .loc 1 802 19 + li a5,1 + sw a5,-24(s0) + .loc 1 804 9 + j .L89 +.L80: + .loc 1 808 25 + li a0,29 + call rcu_flag_get + sw a0,-28(s0) + .loc 1 809 20 + lw a5,-20(s0) + addi a5,a5,1 + sw a5,-20(s0) +.L78: + .loc 1 807 14 + lw a5,-28(s0) + bne a5,zero,.L79 + .loc 1 807 36 discriminator 1 + lw a4,-20(s0) + li a5,1048576 + addi a5,a5,-1 + bne a4,a5,.L80 +.L79: + .loc 1 813 21 + li a0,29 + call rcu_flag_get + mv a5,a0 + .loc 1 813 11 + beq a5,zero,.L90 + .loc 1 814 19 + li a5,1 + sw a5,-24(s0) + .loc 1 816 9 + j .L90 +.L83: + .loc 1 819 9 + nop + j .L57 +.L84: + .loc 1 740 9 + nop + j .L57 +.L85: + .loc 1 753 9 + nop + j .L57 +.L86: + .loc 1 766 9 + nop + j .L57 +.L87: + .loc 1 779 9 + nop + j .L57 +.L88: + .loc 1 792 9 + nop + j .L57 +.L89: + .loc 1 804 9 + nop + j .L57 +.L90: + .loc 1 816 9 + nop +.L57: + .loc 1 823 12 + lw a5,-24(s0) + .loc 1 824 1 + mv a0,a5 + lw ra,44(sp) + .cfi_restore 1 + lw s0,40(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE33: + .size rcu_osci_stab_wait, .-rcu_osci_stab_wait + .align 1 + .globl rcu_osci_on + .type rcu_osci_on, @function +rcu_osci_on: +.LFB34: + .loc 1 841 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 842 109 + lw a5,-20(s0) + srli a4,a5,6 + li a5,1073876992 + add a5,a4,a5 + lw a4,0(a5) + .loc 1 842 160 + lw a5,-20(s0) + andi a5,a5,31 + .loc 1 842 113 + li a3,1 + sll a5,a3,a5 + .loc 1 842 109 + lw a3,-20(s0) + srli a2,a3,6 + li a3,1073876992 + add a3,a2,a3 + or a5,a4,a5 + sw a5,0(a3) + .loc 1 843 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE34: + .size rcu_osci_on, .-rcu_osci_on + .align 1 + .globl rcu_osci_off + .type rcu_osci_off, @function +rcu_osci_off: +.LFB35: + .loc 1 860 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 861 109 + lw a5,-20(s0) + srli a4,a5,6 + li a5,1073876992 + add a5,a4,a5 + lw a4,0(a5) + .loc 1 861 161 + lw a5,-20(s0) + andi a5,a5,31 + .loc 1 861 114 + li a3,1 + sll a5,a3,a5 + .loc 1 861 112 + not a5,a5 + .loc 1 861 109 + lw a3,-20(s0) + srli a2,a3,6 + li a3,1073876992 + add a3,a2,a3 + and a5,a4,a5 + sw a5,0(a3) + .loc 1 862 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE35: + .size rcu_osci_off, .-rcu_osci_off + .align 1 + .globl rcu_osci_bypass_mode_enable + .type rcu_osci_bypass_mode_enable, @function +rcu_osci_bypass_mode_enable: +.LFB36: + .loc 1 874 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 877 5 + lw a4,-36(s0) + li a5,4096 + addi a5,a5,-1792 + beq a4,a5,.L101 + lw a4,-36(s0) + li a5,4096 + addi a5,a5,-1792 + bgtu a4,a5,.L102 + lw a4,-36(s0) + li a5,28 + bgtu a4,a5,.L96 + lw a4,-36(s0) + li a5,28 + bgtu a4,a5,.L102 + lw a5,-36(s0) + slli a4,a5,2 + lla a5,.L97 + add a5,a4,a5 + lw a4,0(a5) + lla a5,.L97 + add a5,a4,a5 + jr a5 + .section .rodata + .align 2 + .align 2 +.L97: + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L98-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .word .L102-.L97 + .text +.L96: + lw a5,-36(s0) + addi a5,a5,-2048 + beq a5,zero,.L99 + .loc 1 897 9 + j .L102 +.L98: + .loc 1 880 16 + li a5,1073876992 + .loc 1 880 13 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 881 93 + li a5,1073876992 + lw a3,0(a5) + li a5,1073876992 + li a4,-65536 + addi a4,a4,-1 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 882 10 + li a5,1073876992 + .loc 1 882 100 + lw a3,-20(s0) + li a4,262144 + or a4,a3,a4 + .loc 1 882 93 + sw a4,0(a5) + .loc 1 883 9 + j .L100 +.L99: + .loc 1 886 16 + li a5,1073876992 + addi a5,a5,32 + .loc 1 886 13 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 887 93 + li a5,1073876992 + addi a5,a5,32 + lw a4,0(a5) + li a5,1073876992 + addi a5,a5,32 + andi a4,a4,-2 + sw a4,0(a5) + .loc 1 888 10 + li a5,1073876992 + addi a5,a5,32 + .loc 1 888 100 + lw a4,-20(s0) + ori a4,a4,4 + .loc 1 888 93 + sw a4,0(a5) + .loc 1 889 9 + j .L100 +.L101: + .loc 1 895 9 + nop + j .L103 +.L102: + .loc 1 897 9 + nop +.L100: +.L103: + .loc 1 899 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE36: + .size rcu_osci_bypass_mode_enable, .-rcu_osci_bypass_mode_enable + .align 1 + .globl rcu_osci_bypass_mode_disable + .type rcu_osci_bypass_mode_disable, @function +rcu_osci_bypass_mode_disable: +.LFB37: + .loc 1 911 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 914 5 + lw a4,-36(s0) + li a5,4096 + addi a5,a5,-1792 + beq a4,a5,.L112 + lw a4,-36(s0) + li a5,4096 + addi a5,a5,-1792 + bgtu a4,a5,.L113 + lw a4,-36(s0) + li a5,28 + bgtu a4,a5,.L107 + lw a4,-36(s0) + li a5,28 + bgtu a4,a5,.L113 + lw a5,-36(s0) + slli a4,a5,2 + lla a5,.L108 + add a5,a4,a5 + lw a4,0(a5) + lla a5,.L108 + add a5,a4,a5 + jr a5 + .section .rodata + .align 2 + .align 2 +.L108: + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L109-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .word .L113-.L108 + .text +.L107: + lw a5,-36(s0) + addi a5,a5,-2048 + beq a5,zero,.L110 + .loc 1 934 9 + j .L113 +.L109: + .loc 1 917 16 + li a5,1073876992 + .loc 1 917 13 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 918 93 + li a5,1073876992 + lw a3,0(a5) + li a5,1073876992 + li a4,-65536 + addi a4,a4,-1 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 919 10 + li a5,1073876992 + .loc 1 919 100 + lw a3,-20(s0) + li a4,-262144 + addi a4,a4,-1 + and a4,a3,a4 + .loc 1 919 93 + sw a4,0(a5) + .loc 1 920 9 + j .L111 +.L110: + .loc 1 923 16 + li a5,1073876992 + addi a5,a5,32 + .loc 1 923 13 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 924 93 + li a5,1073876992 + addi a5,a5,32 + lw a4,0(a5) + li a5,1073876992 + addi a5,a5,32 + andi a4,a4,-2 + sw a4,0(a5) + .loc 1 925 10 + li a5,1073876992 + addi a5,a5,32 + .loc 1 925 100 + lw a4,-20(s0) + andi a4,a4,-5 + .loc 1 925 93 + sw a4,0(a5) + .loc 1 926 9 + j .L111 +.L112: + .loc 1 932 9 + nop + j .L114 +.L113: + .loc 1 934 9 + nop +.L111: +.L114: + .loc 1 936 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE37: + .size rcu_osci_bypass_mode_disable, .-rcu_osci_bypass_mode_disable + .align 1 + .globl rcu_hxtal_clock_monitor_enable + .type rcu_hxtal_clock_monitor_enable, @function +rcu_hxtal_clock_monitor_enable: +.LFB38: + .loc 1 946 1 + .cfi_startproc + addi sp,sp,-16 + .cfi_def_cfa_offset 16 + sw s0,12(sp) + .cfi_offset 8, -4 + addi s0,sp,16 + .cfi_def_cfa 8, 0 + .loc 1 947 89 + li a5,1073876992 + lw a3,0(a5) + li a5,1073876992 + li a4,524288 + or a4,a3,a4 + sw a4,0(a5) + .loc 1 948 1 + nop + lw s0,12(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 16 + addi sp,sp,16 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE38: + .size rcu_hxtal_clock_monitor_enable, .-rcu_hxtal_clock_monitor_enable + .align 1 + .globl rcu_hxtal_clock_monitor_disable + .type rcu_hxtal_clock_monitor_disable, @function +rcu_hxtal_clock_monitor_disable: +.LFB39: + .loc 1 957 1 + .cfi_startproc + addi sp,sp,-16 + .cfi_def_cfa_offset 16 + sw s0,12(sp) + .cfi_offset 8, -4 + addi s0,sp,16 + .cfi_def_cfa 8, 0 + .loc 1 958 89 + li a5,1073876992 + lw a3,0(a5) + li a5,1073876992 + li a4,-524288 + addi a4,a4,-1 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 959 1 + nop + lw s0,12(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 16 + addi sp,sp,16 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE39: + .size rcu_hxtal_clock_monitor_disable, .-rcu_hxtal_clock_monitor_disable + .align 1 + .globl rcu_irc8m_adjust_value_set + .type rcu_irc8m_adjust_value_set, @function +rcu_irc8m_adjust_value_set: +.LFB40: + .loc 1 968 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 971 12 + li a5,1073876992 + .loc 1 971 9 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 973 9 + lw a5,-20(s0) + andi a5,a5,-249 + sw a5,-20(s0) + .loc 1 974 122 + lw a5,-36(s0) + slli a5,a5,3 + andi a3,a5,255 + .loc 1 974 6 + li a5,1073876992 + .loc 1 974 96 + lw a4,-20(s0) + or a4,a3,a4 + .loc 1 974 89 + sw a4,0(a5) + .loc 1 975 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE40: + .size rcu_irc8m_adjust_value_set, .-rcu_irc8m_adjust_value_set + .align 1 + .globl rcu_deepsleep_voltage_set + .type rcu_deepsleep_voltage_set, @function +rcu_deepsleep_voltage_set: +.LFB41: + .loc 1 989 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 990 11 + lw a5,-20(s0) + andi a5,a5,3 + sw a5,-20(s0) + .loc 1 991 6 + li a5,1073876992 + addi a5,a5,52 + .loc 1 991 89 + lw a4,-20(s0) + sw a4,0(a5) + .loc 1 992 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE41: + .size rcu_deepsleep_voltage_set, .-rcu_deepsleep_voltage_set + .section .rodata + .align 2 +.LC0: + .string "" + .string "" + .string "" + .string "" + .string "" + .string "" + .string "" + .string "" + .ascii "\001\002\003\004\006\007\b\t" + .text + .align 1 + .globl rcu_clock_freq_get + .type rcu_clock_freq_get, @function +rcu_clock_freq_get: +.LFB42: + .loc 1 1006 1 + .cfi_startproc + addi sp,sp,-128 + .cfi_def_cfa_offset 128 + sw s0,124(sp) + .cfi_offset 8, -4 + addi s0,sp,128 + .cfi_def_cfa 8, 0 + sw a0,-116(s0) + .loc 1 1007 19 + sw zero,-20(s0) + .loc 1 1013 13 + lla a5,.LC0 + lw a2,0(a5) + lw a3,4(a5) + lw a4,8(a5) + lw a5,12(a5) + sw a2,-92(s0) + sw a3,-88(s0) + sw a4,-84(s0) + sw a5,-80(s0) + .loc 1 1014 13 + sw zero,-100(s0) + li a5,67305472 + addi a5,a5,513 + sw a5,-96(s0) + .loc 1 1015 13 + sw zero,-108(s0) + li a5,67305472 + addi a5,a5,513 + sw a5,-104(s0) + .loc 1 1017 15 + li a5,1073876992 + addi a5,a5,4 + lw a5,0(a5) + .loc 1 1017 172 + srli a5,a5,2 + .loc 1 1017 9 + andi a5,a5,3 + sw a5,-40(s0) + .loc 1 1018 5 + lw a4,-40(s0) + li a5,2 + beq a4,a5,.L120 + lw a4,-40(s0) + li a5,2 + bgtu a4,a5,.L121 + lw a5,-40(s0) + beq a5,zero,.L122 + lw a4,-40(s0) + li a5,1 + beq a4,a5,.L123 + j .L121 +.L122: + .loc 1 1021 20 + li a5,7999488 + addi a5,a5,512 + sw a5,-24(s0) + .loc 1 1022 9 + j .L124 +.L123: + .loc 1 1025 20 + li a5,7999488 + addi a5,a5,512 + sw a5,-24(s0) + .loc 1 1026 9 + j .L124 +.L120: + .loc 1 1030 20 + li a5,1073876992 + addi a5,a5,4 + lw a4,0(a5) + .loc 1 1030 16 + li a5,65536 + and a5,a4,a5 + sw a5,-44(s0) + .loc 1 1032 11 + lw a4,-44(s0) + li a5,65536 + bne a4,a5,.L125 + .loc 1 1034 20 + li a5,7999488 + addi a5,a5,512 + sw a5,-32(s0) + .loc 1 1036 27 + li a5,1073876992 + addi a5,a5,44 + lw a4,0(a5) + .loc 1 1036 23 + li a5,65536 + and a5,a4,a5 + sw a5,-48(s0) + .loc 1 1038 15 + lw a4,-48(s0) + li a5,65536 + bne a4,a5,.L126 + .loc 1 1039 39 + li a5,1073876992 + addi a5,a5,44 + lw a5,0(a5) + .loc 1 1039 26 + srli a5,a5,4 + andi a5,a5,15 + .loc 1 1039 24 + addi a5,a5,1 + sw a5,-52(s0) + .loc 1 1040 39 + li a5,1073876992 + addi a5,a5,44 + lw a5,0(a5) + .loc 1 1040 26 + srli a5,a5,8 + andi a5,a5,15 + .loc 1 1040 24 + addi a5,a5,2 + sw a5,-36(s0) + .loc 1 1041 19 + lw a4,-36(s0) + li a5,17 + bne a4,a5,.L127 + .loc 1 1042 28 + li a5,20 + sw a5,-36(s0) +.L127: + .loc 1 1044 34 + lw a4,-32(s0) + lw a5,-52(s0) + divu a5,a4,a5 + .loc 1 1044 24 + lw a4,-36(s0) + mul a5,a4,a5 + sw a5,-32(s0) +.L126: + .loc 1 1046 24 + li a5,1073876992 + addi a5,a5,44 + lw a5,0(a5) + .loc 1 1046 107 + andi a5,a5,15 + .loc 1 1046 20 + addi a5,a5,1 + sw a5,-56(s0) + .loc 1 1047 20 + lw a4,-32(s0) + lw a5,-56(s0) + divu a5,a4,a5 + sw a5,-32(s0) + j .L128 +.L125: + .loc 1 1050 20 + li a5,4001792 + addi a5,a5,-1792 + sw a5,-32(s0) +.L128: + .loc 1 1054 21 + li a5,1073876992 + addi a5,a5,4 + lw a5,0(a5) + .loc 1 1054 180 + srli a5,a5,18 + .loc 1 1054 15 + andi a5,a5,15 + sw a5,-28(s0) + .loc 1 1055 14 + li a5,1073876992 + addi a5,a5,4 + lw a4,0(a5) + .loc 1 1055 97 + li a5,536870912 + and a5,a4,a5 + .loc 1 1055 11 + beq a5,zero,.L129 + .loc 1 1056 19 + lw a5,-28(s0) + ori a5,a5,16 + sw a5,-28(s0) +.L129: + .loc 1 1058 11 + lw a4,-28(s0) + li a5,14 + bgtu a4,a5,.L130 + .loc 1 1059 19 + lw a5,-28(s0) + addi a5,a5,2 + sw a5,-28(s0) + j .L131 +.L130: + .loc 1 1061 19 + lw a5,-28(s0) + addi a5,a5,1 + sw a5,-28(s0) +.L131: + .loc 1 1064 20 + lw a4,-32(s0) + lw a5,-28(s0) + mul a5,a4,a5 + sw a5,-24(s0) + .loc 1 1066 11 + lw a4,-28(s0) + li a5,15 + bne a4,a5,.L140 + .loc 1 1068 33 + lw a4,-32(s0) + mv a5,a4 + slli a5,a5,1 + add a5,a5,a4 + slli a5,a5,1 + mv a4,a5 + .loc 1 1068 47 + lw a5,-32(s0) + srli a5,a5,1 + .loc 1 1068 24 + add a5,a4,a5 + sw a5,-24(s0) + .loc 1 1071 9 + j .L140 +.L121: + .loc 1 1074 20 + li a5,7999488 + addi a5,a5,512 + sw a5,-24(s0) + .loc 1 1075 9 + j .L124 +.L140: + .loc 1 1071 9 + nop +.L124: + .loc 1 1079 15 + li a5,1073876992 + addi a5,a5,4 + lw a5,0(a5) + .loc 1 1079 172 + srli a5,a5,4 + .loc 1 1079 9 + andi a5,a5,15 + sw a5,-60(s0) + .loc 1 1080 22 + lw a5,-60(s0) + addi a4,s0,-16 + add a5,a4,a5 + lbu a5,-76(a5) + .loc 1 1080 13 + sw a5,-64(s0) + .loc 1 1081 14 + lw a5,-64(s0) + lw a4,-24(s0) + srl a5,a4,a5 + sw a5,-68(s0) + .loc 1 1084 15 + li a5,1073876992 + addi a5,a5,4 + lw a5,0(a5) + .loc 1 1084 173 + srli a5,a5,8 + .loc 1 1084 9 + andi a5,a5,7 + sw a5,-60(s0) + .loc 1 1085 23 + lw a5,-60(s0) + addi a4,s0,-16 + add a5,a4,a5 + lbu a5,-84(a5) + .loc 1 1085 13 + sw a5,-64(s0) + .loc 1 1086 15 + lw a5,-64(s0) + lw a4,-68(s0) + srl a5,a4,a5 + sw a5,-72(s0) + .loc 1 1089 15 + li a5,1073876992 + addi a5,a5,4 + lw a5,0(a5) + .loc 1 1089 174 + srli a5,a5,11 + .loc 1 1089 9 + andi a5,a5,7 + sw a5,-60(s0) + .loc 1 1090 23 + lw a5,-60(s0) + addi a4,s0,-16 + add a5,a4,a5 + lbu a5,-92(a5) + .loc 1 1090 13 + sw a5,-64(s0) + .loc 1 1091 15 + lw a5,-64(s0) + lw a4,-68(s0) + srl a5,a4,a5 + sw a5,-76(s0) + .loc 1 1094 5 + lw a4,-116(s0) + li a5,3 + beq a4,a5,.L133 + lw a4,-116(s0) + li a5,3 + bgtu a4,a5,.L141 + lw a4,-116(s0) + li a5,2 + beq a4,a5,.L135 + lw a4,-116(s0) + li a5,2 + bgtu a4,a5,.L141 + lw a5,-116(s0) + beq a5,zero,.L136 + lw a4,-116(s0) + li a5,1 + beq a4,a5,.L137 + .loc 1 1108 9 + j .L141 +.L136: + .loc 1 1096 17 + lw a5,-24(s0) + sw a5,-20(s0) + .loc 1 1097 9 + j .L138 +.L137: + .loc 1 1099 17 + lw a5,-68(s0) + sw a5,-20(s0) + .loc 1 1100 9 + j .L138 +.L135: + .loc 1 1102 17 + lw a5,-72(s0) + sw a5,-20(s0) + .loc 1 1103 9 + j .L138 +.L133: + .loc 1 1105 17 + lw a5,-76(s0) + sw a5,-20(s0) + .loc 1 1106 9 + j .L138 +.L141: + .loc 1 1108 9 + nop +.L138: + .loc 1 1110 12 + lw a5,-20(s0) + .loc 1 1111 1 + mv a0,a5 + lw s0,124(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 128 + addi sp,sp,128 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE42: + .size rcu_clock_freq_get, .-rcu_clock_freq_get +.Letext0: + .file 2 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\machine\\_default_types.h" + .file 3 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_stdint.h" + .file 4 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral/gd32vf103.h" + .file 5 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_rcu.h" + .section .debug_info,"",@progbits +.Ldebug_info0: + .4byte 0xda8 + .2byte 0x4 + .4byte .Ldebug_abbrev0 + .byte 0x4 + .byte 0x1 + .4byte .LASF3406 + .byte 0xc + .4byte .LASF3407 + .4byte .LASF3408 + .4byte .Ltext0 + .4byte .Letext0-.Ltext0 + .4byte .Ldebug_line0 + .4byte .Ldebug_macro0 + .byte 0x2 + .byte 0x4 + .byte 0x7 + .4byte .LASF3174 + .byte 0x2 + .byte 0x1 + .byte 0x6 + .4byte .LASF3175 + .byte 0x3 + .4byte .LASF3178 + .byte 0x2 + .byte 0x2b + .byte 0x17 + .4byte 0x43 + .byte 0x2 + .byte 0x1 + .byte 0x8 + .4byte .LASF3176 + .byte 0x2 + .byte 0x2 + .byte 0x5 + .4byte .LASF3177 + .byte 0x3 + .4byte .LASF3179 + .byte 0x2 + .byte 0x39 + .byte 0x1c + .4byte 0x5d + .byte 0x2 + .byte 0x2 + .byte 0x7 + .4byte .LASF3180 + .byte 0x2 + .byte 0x4 + .byte 0x5 + .4byte .LASF3181 + .byte 0x3 + .4byte .LASF3182 + .byte 0x2 + .byte 0x4f + .byte 0x1b + .4byte 0x77 + .byte 0x2 + .byte 0x4 + .byte 0x7 + .4byte .LASF3183 + .byte 0x2 + .byte 0x8 + .byte 0x5 + .4byte .LASF3184 + .byte 0x2 + .byte 0x8 + .byte 0x7 + .4byte .LASF3185 + .byte 0x4 + .byte 0x4 + .byte 0x5 + .string "int" + .byte 0x3 + .4byte .LASF3186 + .byte 0x3 + .byte 0x18 + .byte 0x13 + .4byte 0x37 + .byte 0x3 + .4byte .LASF3187 + .byte 0x3 + .byte 0x24 + .byte 0x14 + .4byte 0x51 + .byte 0x3 + .4byte .LASF3188 + .byte 0x3 + .byte 0x30 + .byte 0x14 + .4byte 0x6b + .byte 0x5 + .byte 0x7 + .byte 0x4 + .4byte 0x29 + .byte 0x4 + .byte 0xb5 + .byte 0xe + .4byte 0xd2 + .byte 0x6 + .4byte .LASF3189 + .byte 0 + .byte 0x7 + .string "SET" + .byte 0x1 + .byte 0 + .byte 0x3 + .4byte .LASF3190 + .byte 0x4 + .byte 0xb5 + .byte 0x28 + .4byte 0xb7 + .byte 0x5 + .byte 0x7 + .byte 0x4 + .4byte 0x29 + .byte 0x4 + .byte 0xb6 + .byte 0xe + .4byte 0xf9 + .byte 0x6 + .4byte .LASF3191 + .byte 0 + .byte 0x6 + .4byte .LASF3192 + .byte 0x1 + .byte 0 + .byte 0x3 + .4byte .LASF3193 + .byte 0x4 + .byte 0xb6 + .byte 0x2c + .4byte 0xde + .byte 0x8 + .4byte 0x93 + .4byte 0x115 + .byte 0x9 + .4byte 0x29 + .byte 0x7 + .byte 0 + .byte 0x2 + .byte 0x10 + .byte 0x4 + .4byte .LASF3194 + .byte 0xa + .byte 0x7 + .byte 0x4 + .4byte 0x29 + .byte 0x5 + .2byte 0x106 + .byte 0xe + .4byte 0x22f + .byte 0xb + .4byte .LASF3195 + .2byte 0x500 + .byte 0xb + .4byte .LASF3196 + .2byte 0x501 + .byte 0xb + .4byte .LASF3197 + .2byte 0x506 + .byte 0xb + .4byte .LASF3198 + .2byte 0x508 + .byte 0xb + .4byte .LASF3199 + .2byte 0x50c + .byte 0xb + .4byte .LASF3200 + .2byte 0x700 + .byte 0xb + .4byte .LASF3201 + .2byte 0x701 + .byte 0xb + .4byte .LASF3202 + .2byte 0x702 + .byte 0xb + .4byte .LASF3203 + .2byte 0x703 + .byte 0xb + .4byte .LASF3204 + .2byte 0x704 + .byte 0xb + .4byte .LASF3205 + .2byte 0x705 + .byte 0xb + .4byte .LASF3206 + .2byte 0x70b + .byte 0xb + .4byte .LASF3207 + .2byte 0x70e + .byte 0xb + .4byte .LASF3208 + .2byte 0x70f + .byte 0xb + .4byte .LASF3209 + .2byte 0x711 + .byte 0xb + .4byte .LASF3210 + .2byte 0x712 + .byte 0xb + .4byte .LASF3211 + .2byte 0x713 + .byte 0xb + .4byte .LASF3212 + .2byte 0x714 + .byte 0xb + .4byte .LASF3213 + .2byte 0x715 + .byte 0xb + .4byte .LASF3214 + .2byte 0x716 + .byte 0xb + .4byte .LASF3215 + .2byte 0x719 + .byte 0xb + .4byte .LASF3216 + .2byte 0x71a + .byte 0xb + .4byte .LASF3217 + .2byte 0x71b + .byte 0xb + .4byte .LASF3218 + .2byte 0x71c + .byte 0xb + .4byte .LASF3219 + .2byte 0x71d + .byte 0xb + .4byte .LASF3220 + .2byte 0x80f + .byte 0xb + .4byte .LASF3221 + .2byte 0x600 + .byte 0xb + .4byte .LASF3222 + .2byte 0x602 + .byte 0xb + .4byte .LASF3223 + .2byte 0x603 + .byte 0xb + .4byte .LASF3224 + .2byte 0x604 + .byte 0xb + .4byte .LASF3225 + .2byte 0x605 + .byte 0xb + .4byte .LASF3226 + .2byte 0x606 + .byte 0xb + .4byte .LASF3227 + .2byte 0x609 + .byte 0xb + .4byte .LASF3228 + .2byte 0x60a + .byte 0xb + .4byte .LASF3229 + .2byte 0x60b + .byte 0xb + .4byte .LASF3230 + .2byte 0x60c + .byte 0xb + .4byte .LASF3231 + .2byte 0x60e + .byte 0 + .byte 0xc + .4byte .LASF3232 + .byte 0x5 + .2byte 0x12f + .byte 0x3 + .4byte 0x11c + .byte 0xa + .byte 0x7 + .byte 0x4 + .4byte 0x29 + .byte 0x5 + .2byte 0x132 + .byte 0xe + .4byte 0x25a + .byte 0xb + .4byte .LASF3233 + .2byte 0x502 + .byte 0xb + .4byte .LASF3234 + .2byte 0x504 + .byte 0 + .byte 0xc + .4byte .LASF3235 + .byte 0x5 + .2byte 0x136 + .byte 0x3 + .4byte 0x23c + .byte 0xa + .byte 0x7 + .byte 0x4 + .4byte 0x29 + .byte 0x5 + .2byte 0x139 + .byte 0xe + .4byte 0x357 + .byte 0xb + .4byte .LASF3236 + .2byte 0xa0c + .byte 0xb + .4byte .LASF3237 + .2byte 0x400 + .byte 0xb + .4byte .LASF3238 + .2byte 0x401 + .byte 0xb + .4byte .LASF3239 + .2byte 0x402 + .byte 0xb + .4byte .LASF3240 + .2byte 0x403 + .byte 0xb + .4byte .LASF3241 + .2byte 0x404 + .byte 0xb + .4byte .LASF3242 + .2byte 0x405 + .byte 0xb + .4byte .LASF3243 + .2byte 0x40b + .byte 0xb + .4byte .LASF3244 + .2byte 0x40e + .byte 0xb + .4byte .LASF3245 + .2byte 0x40f + .byte 0xb + .4byte .LASF3246 + .2byte 0x411 + .byte 0xb + .4byte .LASF3247 + .2byte 0x412 + .byte 0xb + .4byte .LASF3248 + .2byte 0x413 + .byte 0xb + .4byte .LASF3249 + .2byte 0x414 + .byte 0xb + .4byte .LASF3250 + .2byte 0x415 + .byte 0xb + .4byte .LASF3251 + .2byte 0x416 + .byte 0xb + .4byte .LASF3252 + .2byte 0x419 + .byte 0xb + .4byte .LASF3253 + .2byte 0x41a + .byte 0xb + .4byte .LASF3254 + .2byte 0x41b + .byte 0xb + .4byte .LASF3255 + .2byte 0x41c + .byte 0xb + .4byte .LASF3256 + .2byte 0x41d + .byte 0xb + .4byte .LASF3257 + .2byte 0x300 + .byte 0xb + .4byte .LASF3258 + .2byte 0x302 + .byte 0xb + .4byte .LASF3259 + .2byte 0x303 + .byte 0xb + .4byte .LASF3260 + .2byte 0x304 + .byte 0xb + .4byte .LASF3261 + .2byte 0x305 + .byte 0xb + .4byte .LASF3262 + .2byte 0x306 + .byte 0xb + .4byte .LASF3263 + .2byte 0x309 + .byte 0xb + .4byte .LASF3264 + .2byte 0x30a + .byte 0xb + .4byte .LASF3265 + .2byte 0x30b + .byte 0xb + .4byte .LASF3266 + .2byte 0x30c + .byte 0xb + .4byte .LASF3267 + .2byte 0x30e + .byte 0 + .byte 0xc + .4byte .LASF3268 + .byte 0x5 + .2byte 0x15d + .byte 0x3 + .4byte 0x267 + .byte 0xa + .byte 0x7 + .byte 0x4 + .4byte 0x29 + .byte 0x5 + .2byte 0x160 + .byte 0xe + .4byte 0x3ca + .byte 0x6 + .4byte .LASF3269 + .byte 0x1 + .byte 0x6 + .4byte .LASF3270 + .byte 0x11 + .byte 0x6 + .4byte .LASF3271 + .byte 0x19 + .byte 0x6 + .4byte .LASF3272 + .byte 0x1b + .byte 0x6 + .4byte .LASF3273 + .byte 0x1d + .byte 0xb + .4byte .LASF3274 + .2byte 0x801 + .byte 0xb + .4byte .LASF3275 + .2byte 0x901 + .byte 0xb + .4byte .LASF3276 + .2byte 0x91a + .byte 0xb + .4byte .LASF3277 + .2byte 0x91b + .byte 0xb + .4byte .LASF3278 + .2byte 0x91c + .byte 0xb + .4byte .LASF3279 + .2byte 0x91d + .byte 0xb + .4byte .LASF3280 + .2byte 0x91e + .byte 0xb + .4byte .LASF3281 + .2byte 0x91f + .byte 0 + .byte 0xc + .4byte .LASF3282 + .byte 0x5 + .2byte 0x170 + .byte 0x3 + .4byte 0x364 + .byte 0xa + .byte 0x7 + .byte 0x4 + .4byte 0x29 + .byte 0x5 + .2byte 0x173 + .byte 0xe + .4byte 0x41f + .byte 0xb + .4byte .LASF3283 + .2byte 0x200 + .byte 0xb + .4byte .LASF3284 + .2byte 0x201 + .byte 0xb + .4byte .LASF3285 + .2byte 0x202 + .byte 0xb + .4byte .LASF3286 + .2byte 0x203 + .byte 0xb + .4byte .LASF3287 + .2byte 0x204 + .byte 0xb + .4byte .LASF3288 + .2byte 0x205 + .byte 0xb + .4byte .LASF3289 + .2byte 0x206 + .byte 0xb + .4byte .LASF3290 + .2byte 0x207 + .byte 0 + .byte 0xc + .4byte .LASF3291 + .byte 0x5 + .2byte 0x17c + .byte 0x3 + .4byte 0x3d7 + .byte 0xa + .byte 0x7 + .byte 0x4 + .4byte 0x29 + .byte 0x5 + .2byte 0x17f + .byte 0xe + .4byte 0x474 + .byte 0xb + .4byte .LASF3292 + .2byte 0x210 + .byte 0xb + .4byte .LASF3293 + .2byte 0x211 + .byte 0xb + .4byte .LASF3294 + .2byte 0x212 + .byte 0xb + .4byte .LASF3295 + .2byte 0x213 + .byte 0xb + .4byte .LASF3296 + .2byte 0x214 + .byte 0xb + .4byte .LASF3297 + .2byte 0x215 + .byte 0xb + .4byte .LASF3298 + .2byte 0x216 + .byte 0xb + .4byte .LASF3299 + .2byte 0x217 + .byte 0 + .byte 0xc + .4byte .LASF3300 + .byte 0x5 + .2byte 0x188 + .byte 0x3 + .4byte 0x42c + .byte 0xa + .byte 0x7 + .byte 0x4 + .4byte 0x29 + .byte 0x5 + .2byte 0x18b + .byte 0xe + .4byte 0x4c2 + .byte 0xb + .4byte .LASF3301 + .2byte 0x208 + .byte 0xb + .4byte .LASF3302 + .2byte 0x209 + .byte 0xb + .4byte .LASF3303 + .2byte 0x20a + .byte 0xb + .4byte .LASF3304 + .2byte 0x20b + .byte 0xb + .4byte .LASF3305 + .2byte 0x20c + .byte 0xb + .4byte .LASF3306 + .2byte 0x20d + .byte 0xb + .4byte .LASF3307 + .2byte 0x20e + .byte 0 + .byte 0xc + .4byte .LASF3308 + .byte 0x5 + .2byte 0x193 + .byte 0x3 + .4byte 0x481 + .byte 0xa + .byte 0x7 + .byte 0x4 + .4byte 0x29 + .byte 0x5 + .2byte 0x196 + .byte 0xe + .4byte 0x50b + .byte 0x6 + .4byte .LASF3309 + .byte 0x10 + .byte 0xb + .4byte .LASF3310 + .2byte 0x800 + .byte 0x6 + .4byte .LASF3311 + .byte 0 + .byte 0xb + .4byte .LASF3312 + .2byte 0x900 + .byte 0x6 + .4byte .LASF3313 + .byte 0x18 + .byte 0x6 + .4byte .LASF3314 + .byte 0x1a + .byte 0x6 + .4byte .LASF3315 + .byte 0x1c + .byte 0 + .byte 0xc + .4byte .LASF3316 + .byte 0x5 + .2byte 0x19e + .byte 0x3 + .4byte 0x4cf + .byte 0xa + .byte 0x7 + .byte 0x4 + .4byte 0x29 + .byte 0x5 + .2byte 0x1a1 + .byte 0xe + .4byte 0x540 + .byte 0x6 + .4byte .LASF3317 + .byte 0 + .byte 0x6 + .4byte .LASF3318 + .byte 0x1 + .byte 0x6 + .4byte .LASF3319 + .byte 0x2 + .byte 0x6 + .4byte .LASF3320 + .byte 0x3 + .byte 0 + .byte 0xc + .4byte .LASF3321 + .byte 0x5 + .2byte 0x1a6 + .byte 0x3 + .4byte 0x518 + .byte 0xd + .4byte .LASF3350 + .byte 0x1 + .2byte 0x3ed + .byte 0xa + .4byte 0xab + .4byte .LFB42 + .4byte .LFE42-.LFB42 + .byte 0x1 + .byte 0x9c + .4byte 0x6a0 + .byte 0xe + .4byte .LASF3338 + .byte 0x1 + .2byte 0x3ed + .byte 0x31 + .4byte 0x540 + .byte 0x3 + .byte 0x91 + .byte 0x8c,0x7f + .byte 0xf + .string "sws" + .byte 0x1 + .2byte 0x3ef + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x58 + .byte 0x10 + .4byte .LASF3322 + .byte 0x1 + .2byte 0x3ef + .byte 0x13 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0x10 + .4byte .LASF3323 + .byte 0x1 + .2byte 0x3f0 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0x10 + .4byte .LASF3324 + .byte 0x1 + .2byte 0x3f0 + .byte 0x1a + .4byte 0xab + .byte 0x3 + .byte 0x91 + .byte 0xbc,0x7f + .byte 0x10 + .4byte .LASF3325 + .byte 0x1 + .2byte 0x3f0 + .byte 0x24 + .4byte 0xab + .byte 0x3 + .byte 0x91 + .byte 0xb8,0x7f + .byte 0x10 + .4byte .LASF3326 + .byte 0x1 + .2byte 0x3f0 + .byte 0x2f + .4byte 0xab + .byte 0x3 + .byte 0x91 + .byte 0xb4,0x7f + .byte 0x10 + .4byte .LASF3327 + .byte 0x1 + .2byte 0x3f1 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x54 + .byte 0x10 + .4byte .LASF3328 + .byte 0x1 + .2byte 0x3f1 + .byte 0x16 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x50 + .byte 0x10 + .4byte .LASF3329 + .byte 0x1 + .2byte 0x3f1 + .byte 0x21 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x64 + .byte 0x10 + .4byte .LASF3330 + .byte 0x1 + .2byte 0x3f1 + .byte 0x27 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x60 + .byte 0xf + .string "idx" + .byte 0x1 + .2byte 0x3f1 + .byte 0x2f + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x44 + .byte 0x10 + .4byte .LASF3331 + .byte 0x1 + .2byte 0x3f1 + .byte 0x34 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x40 + .byte 0x10 + .4byte .LASF3332 + .byte 0x1 + .2byte 0x3f2 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x48 + .byte 0x10 + .4byte .LASF3333 + .byte 0x1 + .2byte 0x3f2 + .byte 0x16 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x4c + .byte 0x10 + .4byte .LASF3334 + .byte 0x1 + .2byte 0x3f2 + .byte 0x1e + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0x10 + .4byte .LASF3335 + .byte 0x1 + .2byte 0x3f5 + .byte 0xd + .4byte 0x6a0 + .byte 0x3 + .byte 0x91 + .byte 0xa4,0x7f + .byte 0x10 + .4byte .LASF3336 + .byte 0x1 + .2byte 0x3f6 + .byte 0xd + .4byte 0x105 + .byte 0x3 + .byte 0x91 + .byte 0x9c,0x7f + .byte 0x10 + .4byte .LASF3337 + .byte 0x1 + .2byte 0x3f7 + .byte 0xd + .4byte 0x105 + .byte 0x3 + .byte 0x91 + .byte 0x94,0x7f + .byte 0 + .byte 0x8 + .4byte 0x93 + .4byte 0x6b0 + .byte 0x9 + .4byte 0x29 + .byte 0xf + .byte 0 + .byte 0x11 + .4byte .LASF3340 + .byte 0x1 + .2byte 0x3dc + .byte 0x6 + .4byte .LFB41 + .4byte .LFE41-.LFB41 + .byte 0x1 + .byte 0x9c + .4byte 0x6d8 + .byte 0xe + .4byte .LASF3339 + .byte 0x1 + .2byte 0x3dc + .byte 0x29 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x11 + .4byte .LASF3341 + .byte 0x1 + .2byte 0x3c7 + .byte 0x6 + .4byte .LFB40 + .4byte .LFE40-.LFB40 + .byte 0x1 + .byte 0x9c + .4byte 0x710 + .byte 0xe + .4byte .LASF3342 + .byte 0x1 + .2byte 0x3c7 + .byte 0x2a + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xf + .string "reg" + .byte 0x1 + .2byte 0x3c9 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x12 + .4byte .LASF3343 + .byte 0x1 + .2byte 0x3bc + .byte 0x6 + .4byte .LFB39 + .4byte .LFE39-.LFB39 + .byte 0x1 + .byte 0x9c + .byte 0x12 + .4byte .LASF3344 + .byte 0x1 + .2byte 0x3b1 + .byte 0x6 + .4byte .LFB38 + .4byte .LFE38-.LFB38 + .byte 0x1 + .byte 0x9c + .byte 0x11 + .4byte .LASF3345 + .byte 0x1 + .2byte 0x38e + .byte 0x6 + .4byte .LFB37 + .4byte .LFE37-.LFB37 + .byte 0x1 + .byte 0x9c + .4byte 0x76e + .byte 0xe + .4byte .LASF3346 + .byte 0x1 + .2byte 0x38e + .byte 0x36 + .4byte 0x50b + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xf + .string "reg" + .byte 0x1 + .2byte 0x390 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x11 + .4byte .LASF3347 + .byte 0x1 + .2byte 0x369 + .byte 0x6 + .4byte .LFB36 + .4byte .LFE36-.LFB36 + .byte 0x1 + .byte 0x9c + .4byte 0x7a6 + .byte 0xe + .4byte .LASF3346 + .byte 0x1 + .2byte 0x369 + .byte 0x35 + .4byte 0x50b + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xf + .string "reg" + .byte 0x1 + .2byte 0x36b + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x11 + .4byte .LASF3348 + .byte 0x1 + .2byte 0x35b + .byte 0x6 + .4byte .LFB35 + .4byte .LFE35-.LFB35 + .byte 0x1 + .byte 0x9c + .4byte 0x7ce + .byte 0xe + .4byte .LASF3346 + .byte 0x1 + .2byte 0x35b + .byte 0x26 + .4byte 0x50b + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x11 + .4byte .LASF3349 + .byte 0x1 + .2byte 0x348 + .byte 0x6 + .4byte .LFB34 + .4byte .LFE34-.LFB34 + .byte 0x1 + .byte 0x9c + .4byte 0x7f6 + .byte 0xe + .4byte .LASF3346 + .byte 0x1 + .2byte 0x348 + .byte 0x25 + .4byte 0x50b + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x13 + .4byte .LASF3351 + .byte 0x1 + .2byte 0x2d2 + .byte 0xb + .4byte 0xf9 + .4byte .LFB33 + .4byte .LFE33-.LFB33 + .byte 0x1 + .byte 0x9c + .4byte 0x852 + .byte 0xe + .4byte .LASF3346 + .byte 0x1 + .2byte 0x2d2 + .byte 0x31 + .4byte 0x50b + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0x10 + .4byte .LASF3352 + .byte 0x1 + .2byte 0x2d4 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0x10 + .4byte .LASF3353 + .byte 0x1 + .2byte 0x2d5 + .byte 0xf + .4byte 0xf9 + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0x10 + .4byte .LASF3354 + .byte 0x1 + .2byte 0x2d6 + .byte 0x10 + .4byte 0xd2 + .byte 0x2 + .byte 0x91 + .byte 0x64 + .byte 0 + .byte 0x11 + .4byte .LASF3355 + .byte 0x1 + .2byte 0x2bf + .byte 0x6 + .4byte .LFB32 + .4byte .LFE32-.LFB32 + .byte 0x1 + .byte 0x9c + .4byte 0x87a + .byte 0xe + .4byte .LASF3356 + .byte 0x1 + .2byte 0x2bf + .byte 0x29 + .4byte 0x4c2 + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x11 + .4byte .LASF3357 + .byte 0x1 + .2byte 0x2ac + .byte 0x6 + .4byte .LFB31 + .4byte .LFE31-.LFB31 + .byte 0x1 + .byte 0x9c + .4byte 0x8a2 + .byte 0xe + .4byte .LASF3356 + .byte 0x1 + .2byte 0x2ac + .byte 0x28 + .4byte 0x4c2 + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x11 + .4byte .LASF3358 + .byte 0x1 + .2byte 0x299 + .byte 0x6 + .4byte .LFB30 + .4byte .LFE30-.LFB30 + .byte 0x1 + .byte 0x9c + .4byte 0x8ca + .byte 0xe + .4byte .LASF3359 + .byte 0x1 + .2byte 0x299 + .byte 0x37 + .4byte 0x474 + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xd + .4byte .LASF3360 + .byte 0x1 + .2byte 0x280 + .byte 0xc + .4byte 0xd2 + .4byte .LFB29 + .4byte .LFE29-.LFB29 + .byte 0x1 + .byte 0x9c + .4byte 0x8f6 + .byte 0xe + .4byte .LASF3361 + .byte 0x1 + .2byte 0x280 + .byte 0x35 + .4byte 0x41f + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x12 + .4byte .LASF3362 + .byte 0x1 + .2byte 0x26c + .byte 0x6 + .4byte .LFB28 + .4byte .LFE28-.LFB28 + .byte 0x1 + .byte 0x9c + .byte 0xd + .4byte .LASF3363 + .byte 0x1 + .2byte 0x25c + .byte 0xc + .4byte 0xd2 + .4byte .LFB27 + .4byte .LFE27-.LFB27 + .byte 0x1 + .byte 0x9c + .4byte 0x935 + .byte 0xe + .4byte .LASF3364 + .byte 0x1 + .2byte 0x25c + .byte 0x27 + .4byte 0x3ca + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x11 + .4byte .LASF3365 + .byte 0x1 + .2byte 0x23e + .byte 0x6 + .4byte .LFB26 + .4byte .LFE26-.LFB26 + .byte 0x1 + .byte 0x9c + .4byte 0x96d + .byte 0xe + .4byte .LASF3366 + .byte 0x1 + .2byte 0x23e + .byte 0x25 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xf + .string "reg" + .byte 0x1 + .2byte 0x240 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x11 + .4byte .LASF3367 + .byte 0x1 + .2byte 0x22b + .byte 0x6 + .4byte .LFB25 + .4byte .LFE25-.LFB25 + .byte 0x1 + .byte 0x9c + .4byte 0x9a5 + .byte 0xe + .4byte .LASF3366 + .byte 0x1 + .2byte 0x22b + .byte 0x25 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xf + .string "reg" + .byte 0x1 + .2byte 0x22d + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x11 + .4byte .LASF3368 + .byte 0x1 + .2byte 0x218 + .byte 0x6 + .4byte .LFB24 + .4byte .LFE24-.LFB24 + .byte 0x1 + .byte 0x9c + .4byte 0x9dd + .byte 0xe + .4byte .LASF3369 + .byte 0x1 + .2byte 0x218 + .byte 0x24 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xf + .string "reg" + .byte 0x1 + .2byte 0x21a + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x11 + .4byte .LASF3370 + .byte 0x1 + .2byte 0x202 + .byte 0x6 + .4byte .LFB23 + .4byte .LFE23-.LFB23 + .byte 0x1 + .byte 0x9c + .4byte 0xa15 + .byte 0xe + .4byte .LASF3371 + .byte 0x1 + .2byte 0x202 + .byte 0x24 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xf + .string "reg" + .byte 0x1 + .2byte 0x204 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x11 + .4byte .LASF3372 + .byte 0x1 + .2byte 0x1d8 + .byte 0x6 + .4byte .LFB22 + .4byte .LFE22-.LFB22 + .byte 0x1 + .byte 0x9c + .4byte 0xa4d + .byte 0xe + .4byte .LASF3373 + .byte 0x1 + .2byte 0x1d8 + .byte 0x24 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0x10 + .4byte .LASF3374 + .byte 0x1 + .2byte 0x1da + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x11 + .4byte .LASF3375 + .byte 0x1 + .2byte 0x1c5 + .byte 0x6 + .4byte .LFB21 + .4byte .LFE21-.LFB21 + .byte 0x1 + .byte 0x9c + .4byte 0xa75 + .byte 0xe + .4byte .LASF3376 + .byte 0x1 + .2byte 0x1c5 + .byte 0x1f + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x11 + .4byte .LASF3377 + .byte 0x1 + .2byte 0x1b7 + .byte 0x6 + .4byte .LFB20 + .4byte .LFE20-.LFB20 + .byte 0x1 + .byte 0x9c + .4byte 0xa9d + .byte 0xe + .4byte .LASF3376 + .byte 0x1 + .2byte 0x1b7 + .byte 0x1f + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x11 + .4byte .LASF3378 + .byte 0x1 + .2byte 0x1a2 + .byte 0x6 + .4byte .LFB19 + .4byte .LFE19-.LFB19 + .byte 0x1 + .byte 0x9c + .4byte 0xad5 + .byte 0xe + .4byte .LASF3379 + .byte 0x1 + .2byte 0x1a2 + .byte 0x21 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xf + .string "reg" + .byte 0x1 + .2byte 0x1a4 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x11 + .4byte .LASF3380 + .byte 0x1 + .2byte 0x18d + .byte 0x6 + .4byte .LFB18 + .4byte .LFE18-.LFB18 + .byte 0x1 + .byte 0x9c + .4byte 0xb1d + .byte 0xe + .4byte .LASF3381 + .byte 0x1 + .2byte 0x18d + .byte 0x21 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xe + .4byte .LASF3382 + .byte 0x1 + .2byte 0x18d + .byte 0x39 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x58 + .byte 0xf + .string "reg" + .byte 0x1 + .2byte 0x18f + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x11 + .4byte .LASF3383 + .byte 0x1 + .2byte 0x174 + .byte 0x6 + .4byte .LFB17 + .4byte .LFE17-.LFB17 + .byte 0x1 + .byte 0x9c + .4byte 0xb65 + .byte 0xe + .4byte .LASF3384 + .byte 0x1 + .2byte 0x174 + .byte 0x1e + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xe + .4byte .LASF3376 + .byte 0x1 + .2byte 0x174 + .byte 0x30 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x58 + .byte 0xf + .string "reg" + .byte 0x1 + .2byte 0x176 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x11 + .4byte .LASF3385 + .byte 0x1 + .2byte 0x15d + .byte 0x6 + .4byte .LFB16 + .4byte .LFE16-.LFB16 + .byte 0x1 + .byte 0x9c + .4byte 0xb9d + .byte 0xe + .4byte .LASF3386 + .byte 0x1 + .2byte 0x15d + .byte 0x21 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xf + .string "reg" + .byte 0x1 + .2byte 0x15f + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x11 + .4byte .LASF3387 + .byte 0x1 + .2byte 0x142 + .byte 0x6 + .4byte .LFB15 + .4byte .LFE15-.LFB15 + .byte 0x1 + .byte 0x9c + .4byte 0xbd5 + .byte 0xe + .4byte .LASF3388 + .byte 0x1 + .2byte 0x142 + .byte 0x25 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xf + .string "reg" + .byte 0x1 + .2byte 0x144 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x11 + .4byte .LASF3389 + .byte 0x1 + .2byte 0x12b + .byte 0x6 + .4byte .LFB14 + .4byte .LFE14-.LFB14 + .byte 0x1 + .byte 0x9c + .4byte 0xc0d + .byte 0xe + .4byte .LASF3390 + .byte 0x1 + .2byte 0x12b + .byte 0x25 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xf + .string "reg" + .byte 0x1 + .2byte 0x12d + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x11 + .4byte .LASF3391 + .byte 0x1 + .2byte 0x114 + .byte 0x6 + .4byte .LFB13 + .4byte .LFE13-.LFB13 + .byte 0x1 + .byte 0x9c + .4byte 0xc45 + .byte 0xe + .4byte .LASF3392 + .byte 0x1 + .2byte 0x114 + .byte 0x24 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xf + .string "reg" + .byte 0x1 + .2byte 0x116 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x14 + .4byte .LASF3409 + .byte 0x1 + .2byte 0x107 + .byte 0xa + .4byte 0xab + .4byte .LFB12 + .4byte .LFE12-.LFB12 + .byte 0x1 + .byte 0x9c + .byte 0x15 + .4byte .LASF3393 + .byte 0x1 + .byte 0xf4 + .byte 0x6 + .4byte .LFB11 + .4byte .LFE11-.LFB11 + .byte 0x1 + .byte 0x9c + .4byte 0xc91 + .byte 0x16 + .4byte .LASF3394 + .byte 0x1 + .byte 0xf4 + .byte 0x2e + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0x17 + .string "reg" + .byte 0x1 + .byte 0xf6 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x18 + .4byte .LASF3395 + .byte 0x1 + .byte 0xe5 + .byte 0x6 + .4byte .LFB10 + .4byte .LFE10-.LFB10 + .byte 0x1 + .byte 0x9c + .byte 0x18 + .4byte .LASF3396 + .byte 0x1 + .byte 0xda + .byte 0x6 + .4byte .LFB9 + .4byte .LFE9-.LFB9 + .byte 0x1 + .byte 0x9c + .byte 0x15 + .4byte .LASF3397 + .byte 0x1 + .byte 0xcf + .byte 0x6 + .4byte .LFB8 + .4byte .LFE8-.LFB8 + .byte 0x1 + .byte 0x9c + .4byte 0xcdb + .byte 0x16 + .4byte .LASF3398 + .byte 0x1 + .byte 0xcf + .byte 0x35 + .4byte 0x357 + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x15 + .4byte .LASF3399 + .byte 0x1 + .byte 0xb5 + .byte 0x6 + .4byte .LFB7 + .4byte .LFE7-.LFB7 + .byte 0x1 + .byte 0x9c + .4byte 0xd01 + .byte 0x16 + .4byte .LASF3398 + .byte 0x1 + .byte 0xb5 + .byte 0x34 + .4byte 0x357 + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x15 + .4byte .LASF3400 + .byte 0x1 + .byte 0x9b + .byte 0x6 + .4byte .LFB6 + .4byte .LFE6-.LFB6 + .byte 0x1 + .byte 0x9c + .4byte 0xd27 + .byte 0x16 + .4byte .LASF3401 + .byte 0x1 + .byte 0x9b + .byte 0x3b + .4byte 0x25a + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x15 + .4byte .LASF3402 + .byte 0x1 + .byte 0x8d + .byte 0x6 + .4byte .LFB5 + .4byte .LFE5-.LFB5 + .byte 0x1 + .byte 0x9c + .4byte 0xd4d + .byte 0x16 + .4byte .LASF3401 + .byte 0x1 + .byte 0x8d + .byte 0x3a + .4byte 0x25a + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x15 + .4byte .LASF3403 + .byte 0x1 + .byte 0x7f + .byte 0x6 + .4byte .LFB4 + .4byte .LFE4-.LFB4 + .byte 0x1 + .byte 0x9c + .4byte 0xd73 + .byte 0x16 + .4byte .LASF3401 + .byte 0x1 + .byte 0x7f + .byte 0x2f + .4byte 0x22f + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x15 + .4byte .LASF3404 + .byte 0x1 + .byte 0x61 + .byte 0x6 + .4byte .LFB3 + .4byte .LFE3-.LFB3 + .byte 0x1 + .byte 0x9c + .4byte 0xd99 + .byte 0x16 + .4byte .LASF3401 + .byte 0x1 + .byte 0x61 + .byte 0x2e + .4byte 0x22f + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x19 + .4byte .LASF3405 + .byte 0x1 + .byte 0x35 + .byte 0x6 + .4byte .LFB2 + .4byte .LFE2-.LFB2 + .byte 0x1 + .byte 0x9c + .byte 0 + .section .debug_abbrev,"",@progbits +.Ldebug_abbrev0: + .byte 0x1 + .byte 0x11 + .byte 0x1 + .byte 0x25 + .byte 0xe + .byte 0x13 + .byte 0xb + .byte 0x3 + .byte 0xe + .byte 0x1b + .byte 0xe + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x10 + .byte 0x17 + .byte 0x99,0x42 + .byte 0x17 + .byte 0 + .byte 0 + .byte 0x2 + .byte 0x24 + .byte 0 + .byte 0xb + .byte 0xb + .byte 0x3e + .byte 0xb + .byte 0x3 + .byte 0xe + .byte 0 + .byte 0 + .byte 0x3 + .byte 0x16 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x4 + .byte 0x24 + .byte 0 + .byte 0xb + .byte 0xb + .byte 0x3e + .byte 0xb + .byte 0x3 + .byte 0x8 + .byte 0 + .byte 0 + .byte 0x5 + .byte 0x4 + .byte 0x1 + .byte 0x3e + .byte 0xb + .byte 0xb + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x6 + .byte 0x28 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x1c + .byte 0xb + .byte 0 + .byte 0 + .byte 0x7 + .byte 0x28 + .byte 0 + .byte 0x3 + .byte 0x8 + .byte 0x1c + .byte 0xb + .byte 0 + .byte 0 + .byte 0x8 + .byte 0x1 + .byte 0x1 + .byte 0x49 + .byte 0x13 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x9 + .byte 0x21 + .byte 0 + .byte 0x49 + .byte 0x13 + .byte 0x2f + .byte 0xb + .byte 0 + .byte 0 + .byte 0xa + .byte 0x4 + .byte 0x1 + .byte 0x3e + .byte 0xb + .byte 0xb + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0xb + .byte 0x28 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x1c + .byte 0x5 + .byte 0 + .byte 0 + .byte 0xc + .byte 0x16 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0xd + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x49 + .byte 0x13 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0xe + .byte 0x5 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0xf + .byte 0x34 + .byte 0 + .byte 0x3 + .byte 0x8 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0x10 + .byte 0x34 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0x11 + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x12 + .byte 0x2e + .byte 0 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0 + .byte 0 + .byte 0x13 + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x49 + .byte 0x13 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x96,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x14 + .byte 0x2e + .byte 0 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x49 + .byte 0x13 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0 + .byte 0 + .byte 0x15 + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x16 + .byte 0x5 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0x17 + .byte 0x34 + .byte 0 + .byte 0x3 + .byte 0x8 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0x18 + .byte 0x2e + .byte 0 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0 + .byte 0 + .byte 0x19 + .byte 0x2e + .byte 0 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x96,0x42 + .byte 0x19 + .byte 0 + .byte 0 + .byte 0 + .section .debug_aranges,"",@progbits + .4byte 0x1c + .2byte 0x2 + .4byte .Ldebug_info0 + .byte 0x4 + .byte 0 + .2byte 0 + .2byte 0 + .4byte .Ltext0 + .4byte .Letext0-.Ltext0 + .4byte 0 + .4byte 0 + .section .debug_macro,"",@progbits +.Ldebug_macro0: + .2byte 0x4 + .byte 0x2 + .4byte .Ldebug_line0 + .byte 0x3 + .byte 0 + .byte 0x1 + .byte 0x5 + .byte 0x1 + .4byte .LASF0 + .byte 0x5 + .byte 0x2 + .4byte .LASF1 + .byte 0x5 + .byte 0x3 + .4byte .LASF2 + .byte 0x5 + .byte 0x4 + .4byte .LASF3 + .byte 0x5 + .byte 0x5 + .4byte .LASF4 + .byte 0x5 + .byte 0x6 + .4byte .LASF5 + .byte 0x5 + .byte 0x7 + .4byte .LASF6 + .byte 0x5 + .byte 0x8 + .4byte .LASF7 + .byte 0x5 + .byte 0x9 + .4byte .LASF8 + .byte 0x5 + .byte 0xa + .4byte .LASF9 + .byte 0x5 + .byte 0xb + .4byte .LASF10 + .byte 0x5 + .byte 0xc + .4byte .LASF11 + .byte 0x5 + .byte 0xd + .4byte .LASF12 + .byte 0x5 + .byte 0xe + .4byte .LASF13 + .byte 0x5 + .byte 0xf + .4byte .LASF14 + .byte 0x5 + .byte 0x10 + .4byte .LASF15 + .byte 0x5 + .byte 0x11 + .4byte .LASF16 + .byte 0x5 + .byte 0x12 + .4byte .LASF17 + .byte 0x5 + .byte 0x13 + .4byte .LASF18 + .byte 0x5 + .byte 0x14 + .4byte .LASF19 + .byte 0x5 + .byte 0x15 + .4byte .LASF20 + .byte 0x5 + .byte 0x16 + .4byte .LASF21 + .byte 0x5 + .byte 0x17 + .4byte .LASF22 + .byte 0x5 + .byte 0x18 + .4byte .LASF23 + .byte 0x5 + .byte 0x19 + .4byte .LASF24 + .byte 0x5 + .byte 0x1a + .4byte .LASF25 + .byte 0x5 + .byte 0x1b + .4byte .LASF26 + .byte 0x5 + .byte 0x1c + .4byte .LASF27 + .byte 0x5 + .byte 0x1d + .4byte .LASF28 + .byte 0x5 + .byte 0x1e + .4byte .LASF29 + .byte 0x5 + .byte 0x1f + .4byte .LASF30 + .byte 0x5 + .byte 0x20 + .4byte .LASF31 + .byte 0x5 + .byte 0x21 + .4byte .LASF32 + .byte 0x5 + .byte 0x22 + .4byte .LASF33 + .byte 0x5 + .byte 0x23 + .4byte .LASF34 + .byte 0x5 + .byte 0x24 + .4byte .LASF35 + .byte 0x5 + .byte 0x25 + .4byte .LASF36 + .byte 0x5 + .byte 0x26 + .4byte .LASF37 + .byte 0x5 + .byte 0x27 + .4byte .LASF38 + .byte 0x5 + .byte 0x28 + .4byte .LASF39 + .byte 0x5 + .byte 0x29 + .4byte .LASF40 + .byte 0x5 + .byte 0x2a + .4byte .LASF41 + .byte 0x5 + .byte 0x2b + .4byte .LASF42 + .byte 0x5 + .byte 0x2c + .4byte .LASF43 + .byte 0x5 + .byte 0x2d + .4byte .LASF44 + .byte 0x5 + .byte 0x2e + .4byte .LASF45 + .byte 0x5 + .byte 0x2f + .4byte .LASF46 + .byte 0x5 + .byte 0x30 + .4byte .LASF47 + .byte 0x5 + .byte 0x31 + .4byte .LASF48 + .byte 0x5 + .byte 0x32 + .4byte .LASF49 + .byte 0x5 + .byte 0x33 + .4byte .LASF50 + .byte 0x5 + .byte 0x34 + .4byte .LASF51 + .byte 0x5 + .byte 0x35 + .4byte .LASF52 + .byte 0x5 + .byte 0x36 + .4byte .LASF53 + .byte 0x5 + .byte 0x37 + .4byte .LASF54 + .byte 0x5 + .byte 0x38 + .4byte .LASF55 + .byte 0x5 + .byte 0x39 + .4byte .LASF56 + .byte 0x5 + .byte 0x3a + .4byte .LASF57 + .byte 0x5 + .byte 0x3b + .4byte .LASF58 + .byte 0x5 + .byte 0x3c + .4byte .LASF59 + .byte 0x5 + .byte 0x3d + .4byte .LASF60 + .byte 0x5 + .byte 0x3e + .4byte .LASF61 + .byte 0x5 + .byte 0x3f + .4byte .LASF62 + .byte 0x5 + .byte 0x40 + .4byte .LASF63 + .byte 0x5 + .byte 0x41 + .4byte .LASF64 + .byte 0x5 + .byte 0x42 + .4byte .LASF65 + .byte 0x5 + .byte 0x43 + .4byte .LASF66 + .byte 0x5 + .byte 0x44 + .4byte .LASF67 + .byte 0x5 + .byte 0x45 + .4byte .LASF68 + .byte 0x5 + .byte 0x46 + .4byte .LASF69 + .byte 0x5 + .byte 0x47 + .4byte .LASF70 + .byte 0x5 + .byte 0x48 + .4byte .LASF71 + .byte 0x5 + .byte 0x49 + .4byte .LASF72 + .byte 0x5 + .byte 0x4a + .4byte .LASF73 + .byte 0x5 + .byte 0x4b + .4byte .LASF74 + .byte 0x5 + .byte 0x4c + .4byte .LASF75 + .byte 0x5 + .byte 0x4d + .4byte .LASF76 + .byte 0x5 + .byte 0x4e + .4byte .LASF77 + .byte 0x5 + .byte 0x4f + .4byte .LASF78 + .byte 0x5 + .byte 0x50 + .4byte .LASF79 + .byte 0x5 + .byte 0x51 + .4byte .LASF80 + .byte 0x5 + .byte 0x52 + .4byte .LASF81 + .byte 0x5 + .byte 0x53 + .4byte .LASF82 + .byte 0x5 + .byte 0x54 + .4byte .LASF83 + .byte 0x5 + .byte 0x55 + .4byte .LASF84 + .byte 0x5 + .byte 0x56 + .4byte .LASF85 + .byte 0x5 + .byte 0x57 + .4byte .LASF86 + .byte 0x5 + .byte 0x58 + .4byte .LASF87 + .byte 0x5 + .byte 0x59 + .4byte .LASF88 + .byte 0x5 + .byte 0x5a + .4byte .LASF89 + .byte 0x5 + .byte 0x5b + .4byte .LASF90 + .byte 0x5 + .byte 0x5c + .4byte .LASF91 + .byte 0x5 + .byte 0x5d + .4byte .LASF92 + .byte 0x5 + .byte 0x5e + .4byte .LASF93 + .byte 0x5 + .byte 0x5f + .4byte .LASF94 + .byte 0x5 + .byte 0x60 + .4byte .LASF95 + .byte 0x5 + .byte 0x61 + .4byte .LASF96 + .byte 0x5 + .byte 0x62 + .4byte .LASF97 + .byte 0x5 + .byte 0x63 + .4byte .LASF98 + .byte 0x5 + .byte 0x64 + .4byte .LASF99 + .byte 0x5 + .byte 0x65 + .4byte .LASF100 + .byte 0x5 + .byte 0x66 + .4byte .LASF101 + .byte 0x5 + .byte 0x67 + .4byte .LASF102 + .byte 0x5 + .byte 0x68 + .4byte .LASF103 + .byte 0x5 + .byte 0x69 + .4byte .LASF104 + .byte 0x5 + .byte 0x6a + .4byte .LASF105 + .byte 0x5 + .byte 0x6b + .4byte .LASF106 + .byte 0x5 + .byte 0x6c + .4byte .LASF107 + .byte 0x5 + .byte 0x6d + .4byte .LASF108 + .byte 0x5 + .byte 0x6e + .4byte .LASF109 + .byte 0x5 + .byte 0x6f + .4byte .LASF110 + .byte 0x5 + .byte 0x70 + .4byte .LASF111 + .byte 0x5 + .byte 0x71 + .4byte .LASF112 + .byte 0x5 + .byte 0x72 + .4byte .LASF113 + .byte 0x5 + .byte 0x73 + .4byte .LASF114 + .byte 0x5 + .byte 0x74 + .4byte .LASF115 + .byte 0x5 + .byte 0x75 + .4byte .LASF116 + .byte 0x5 + .byte 0x76 + .4byte .LASF117 + .byte 0x5 + .byte 0x77 + .4byte .LASF118 + .byte 0x5 + .byte 0x78 + .4byte .LASF119 + .byte 0x5 + .byte 0x79 + .4byte .LASF120 + .byte 0x5 + .byte 0x7a + .4byte .LASF121 + .byte 0x5 + .byte 0x7b + .4byte .LASF122 + .byte 0x5 + .byte 0x7c + .4byte .LASF123 + .byte 0x5 + .byte 0x7d + .4byte .LASF124 + .byte 0x5 + .byte 0x7e + .4byte .LASF125 + .byte 0x5 + .byte 0x7f + .4byte .LASF126 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF127 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF128 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF129 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF130 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF131 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF132 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF133 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF134 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF135 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF136 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF137 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF138 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF139 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF140 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF141 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF142 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF143 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF144 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF145 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF146 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF147 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF148 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF149 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF150 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF151 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF152 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF153 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF154 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF155 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF156 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF157 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF158 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF159 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF160 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF161 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF162 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF163 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF164 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF165 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF166 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF167 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF168 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF169 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF170 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF171 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF172 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF173 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF174 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF175 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF176 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF177 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF178 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF179 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF180 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF181 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF182 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF183 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF184 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF185 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF186 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF187 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF188 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF189 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF190 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF191 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF192 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF193 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF194 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF195 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF196 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF197 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF198 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF199 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF200 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF201 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF202 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF203 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF204 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF205 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF206 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF207 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF208 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF209 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF210 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF211 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF212 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF213 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF214 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF215 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF216 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF217 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF218 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF219 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF220 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF221 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF222 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF223 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF224 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF225 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF226 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF227 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF228 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF229 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF230 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF231 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF232 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF233 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF234 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF235 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF236 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF237 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF238 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF239 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF240 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF241 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF242 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF243 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF244 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF245 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF246 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF247 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF248 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF249 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF250 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF251 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF252 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF253 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF254 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF255 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF256 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF257 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF258 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF259 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF260 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF261 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF262 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF263 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF264 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF265 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF266 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF267 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF268 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF269 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF270 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF271 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF272 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF273 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF274 + .byte 0x5 + .byte 0x94,0x2 + .4byte .LASF275 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF276 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF277 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF278 + .byte 0x5 + .byte 0x98,0x2 + .4byte .LASF279 + .byte 0x5 + .byte 0x99,0x2 + .4byte .LASF280 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF281 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF282 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF283 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF284 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF285 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF286 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF287 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF288 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF289 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF290 + .byte 0x5 + .byte 0xa4,0x2 + .4byte .LASF291 + .byte 0x5 + .byte 0xa5,0x2 + .4byte .LASF292 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF293 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF294 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF295 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF296 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF297 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF298 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF299 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF300 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF301 + .byte 0x5 + .byte 0xaf,0x2 + .4byte .LASF302 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF303 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF304 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF305 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF306 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF307 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF308 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF309 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF310 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF311 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF312 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF313 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF314 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF315 + .byte 0x5 + .byte 0xbd,0x2 + .4byte .LASF316 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF317 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF318 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF319 + .byte 0x5 + .byte 0x1 + .4byte .LASF320 + .byte 0x5 + .byte 0x2 + .4byte .LASF321 + .byte 0x5 + .byte 0x3 + .4byte .LASF322 + .byte 0x5 + .byte 0x4 + .4byte .LASF323 + .byte 0x5 + .byte 0x5 + .4byte .LASF324 + .byte 0x5 + .byte 0x6 + .4byte .LASF325 + .byte 0x5 + .byte 0x7 + .4byte .LASF326 + .byte 0x5 + .byte 0x8 + .4byte .LASF327 + .byte 0x5 + .byte 0x9 + .4byte .LASF328 + .byte 0x3 + .byte 0x24 + .byte 0x5 + .byte 0x5 + .byte 0x25 + .4byte .LASF329 + .byte 0x3 + .byte 0x27 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro2 + .file 6 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral/system_gd32vf103.h" + .byte 0x3 + .byte 0xaf,0x1 + .byte 0x6 + .byte 0x5 + .byte 0x28 + .4byte .LASF341 + .file 7 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\stdint.h" + .byte 0x3 + .byte 0x2e + .byte 0x7 + .byte 0x5 + .byte 0xa + .4byte .LASF342 + .byte 0x3 + .byte 0xc + .byte 0x2 + .byte 0x5 + .byte 0x6 + .4byte .LASF343 + .file 8 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\features.h" + .byte 0x3 + .byte 0x8 + .byte 0x8 + .byte 0x5 + .byte 0x16 + .4byte .LASF344 + .file 9 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\_newlib_version.h" + .byte 0x3 + .byte 0x1c + .byte 0x9 + .byte 0x7 + .4byte .Ldebug_macro3 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro5 + .byte 0x4 + .file 10 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_intsup.h" + .byte 0x3 + .byte 0xd + .byte 0xa + .byte 0x7 + .4byte .Ldebug_macro6 + .byte 0x4 + .byte 0x3 + .byte 0xe + .byte 0x3 + .byte 0x7 + .4byte .Ldebug_macro7 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro8 + .byte 0x4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro9 + .file 11 "board/gd32vf103_libopt.h" + .byte 0x3 + .byte 0xec,0x1 + .byte 0xb + .byte 0x5 + .byte 0x25 + .4byte .LASF527 + .file 12 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_adc.h" + .byte 0x3 + .byte 0x27 + .byte 0xc + .byte 0x5 + .byte 0x25 + .4byte .LASF528 + .byte 0x3 + .byte 0x27 + .byte 0x4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro10 + .byte 0x4 + .file 13 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_bkp.h" + .byte 0x3 + .byte 0x28 + .byte 0xd + .byte 0x7 + .4byte .Ldebug_macro11 + .byte 0x4 + .file 14 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_can.h" + .byte 0x3 + .byte 0x29 + .byte 0xe + .byte 0x7 + .4byte .Ldebug_macro12 + .byte 0x4 + .file 15 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_crc.h" + .byte 0x3 + .byte 0x2a + .byte 0xf + .byte 0x7 + .4byte .Ldebug_macro13 + .byte 0x4 + .file 16 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dac.h" + .byte 0x3 + .byte 0x2b + .byte 0x10 + .byte 0x7 + .4byte .Ldebug_macro14 + .byte 0x4 + .file 17 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dma.h" + .byte 0x3 + .byte 0x2c + .byte 0x11 + .byte 0x7 + .4byte .Ldebug_macro15 + .byte 0x4 + .file 18 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_eclic.h" + .byte 0x3 + .byte 0x2d + .byte 0x12 + .byte 0x7 + .4byte .Ldebug_macro16 + .byte 0x4 + .file 19 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_exmc.h" + .byte 0x3 + .byte 0x2e + .byte 0x13 + .byte 0x7 + .4byte .Ldebug_macro17 + .byte 0x4 + .file 20 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_exti.h" + .byte 0x3 + .byte 0x2f + .byte 0x14 + .byte 0x7 + .4byte .Ldebug_macro18 + .byte 0x4 + .file 21 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_fmc.h" + .byte 0x3 + .byte 0x30 + .byte 0x15 + .byte 0x7 + .4byte .Ldebug_macro19 + .byte 0x4 + .file 22 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_gpio.h" + .byte 0x3 + .byte 0x31 + .byte 0x16 + .byte 0x7 + .4byte .Ldebug_macro20 + .byte 0x4 + .file 23 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_i2c.h" + .byte 0x3 + .byte 0x32 + .byte 0x17 + .byte 0x7 + .4byte .Ldebug_macro21 + .byte 0x4 + .file 24 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_fwdgt.h" + .byte 0x3 + .byte 0x33 + .byte 0x18 + .byte 0x7 + .4byte .Ldebug_macro22 + .byte 0x4 + .file 25 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dbg.h" + .byte 0x3 + .byte 0x34 + .byte 0x19 + .byte 0x7 + .4byte .Ldebug_macro23 + .byte 0x4 + .file 26 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_pmu.h" + .byte 0x3 + .byte 0x35 + .byte 0x1a + .byte 0x7 + .4byte .Ldebug_macro24 + .byte 0x4 + .byte 0x3 + .byte 0x36 + .byte 0x5 + .byte 0x4 + .file 27 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_rtc.h" + .byte 0x3 + .byte 0x37 + .byte 0x1b + .byte 0x7 + .4byte .Ldebug_macro25 + .byte 0x4 + .file 28 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_spi.h" + .byte 0x3 + .byte 0x38 + .byte 0x1c + .byte 0x7 + .4byte .Ldebug_macro26 + .byte 0x4 + .file 29 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_timer.h" + .byte 0x3 + .byte 0x39 + .byte 0x1d + .byte 0x7 + .4byte .Ldebug_macro27 + .byte 0x4 + .file 30 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_usart.h" + .byte 0x3 + .byte 0x3a + .byte 0x1e + .byte 0x7 + .4byte .Ldebug_macro28 + .byte 0x4 + .file 31 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_wwdgt.h" + .byte 0x3 + .byte 0x3b + .byte 0x1f + .byte 0x7 + .4byte .Ldebug_macro29 + .byte 0x4 + .file 32 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_func.h" + .byte 0x3 + .byte 0x3c + .byte 0x20 + .byte 0x5 + .byte 0x4 + .4byte .LASF2744 + .file 33 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\lib\\gcc\\riscv-none-embed\\10.2.0\\include\\stddef.h" + .byte 0x3 + .byte 0x7 + .byte 0x21 + .byte 0x7 + .4byte .Ldebug_macro30 + .byte 0x4 + .file 34 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_timer.h" + .byte 0x3 + .byte 0x8 + .byte 0x22 + .byte 0x7 + .4byte .Ldebug_macro31 + .byte 0x4 + .file 35 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_eclic.h" + .byte 0x3 + .byte 0x9 + .byte 0x23 + .byte 0x5 + .byte 0x4 + .4byte .LASF2808 + .file 36 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/riscv_const.h" + .byte 0x3 + .byte 0x6 + .byte 0x24 + .byte 0x7 + .4byte .Ldebug_macro32 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro33 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro34 + .byte 0x4 + .byte 0x4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro35 + .byte 0x4 + .byte 0x5 + .byte 0x27 + .4byte .LASF3169 + .byte 0x5 + .byte 0x28 + .4byte .LASF3170 + .byte 0x5 + .byte 0x29 + .4byte .LASF3171 + .byte 0x5 + .byte 0x2c + .4byte .LASF3172 + .byte 0x5 + .byte 0x2d + .4byte .LASF3173 + .byte 0x4 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103.h.37.6b141d903229e2235d36f2860fb69b6b,comdat +.Ldebug_macro2: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF330 + .byte 0x5 + .byte 0x35 + .4byte .LASF331 + .byte 0x5 + .byte 0x37 + .4byte .LASF332 + .byte 0x5 + .byte 0x38 + .4byte .LASF333 + .byte 0x5 + .byte 0x40 + .4byte .LASF334 + .byte 0x5 + .byte 0x41 + .4byte .LASF335 + .byte 0x5 + .byte 0x49 + .4byte .LASF336 + .byte 0x5 + .byte 0x4e + .4byte .LASF337 + .byte 0x5 + .byte 0x53 + .4byte .LASF338 + .byte 0x5 + .byte 0x58 + .4byte .LASF339 + .byte 0x5 + .byte 0x5d + .4byte .LASF340 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._newlib_version.h.4.bfdf54b0af045d4a71376ae00f63a22c,comdat +.Ldebug_macro3: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4 + .4byte .LASF345 + .byte 0x5 + .byte 0x6 + .4byte .LASF346 + .byte 0x5 + .byte 0x7 + .4byte .LASF347 + .byte 0x5 + .byte 0x8 + .4byte .LASF348 + .byte 0x5 + .byte 0x9 + .4byte .LASF349 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.features.h.33.4ac7543a40bbf4e11e60e29e36a3b28e,comdat +.Ldebug_macro4: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x21 + .4byte .LASF350 + .byte 0x5 + .byte 0x28 + .4byte .LASF351 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF352 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF353 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF354 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF355 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF356 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF357 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF358 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF359 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF360 + .byte 0x5 + .byte 0xca,0x2 + .4byte .LASF361 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._default_types.h.15.247e5cd201eca3442cbf5404108c4935,comdat +.Ldebug_macro5: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xf + .4byte .LASF362 + .byte 0x5 + .byte 0x1a + .4byte .LASF363 + .byte 0x5 + .byte 0x21 + .4byte .LASF364 + .byte 0x5 + .byte 0x2f + .4byte .LASF365 + .byte 0x5 + .byte 0x3d + .4byte .LASF366 + .byte 0x5 + .byte 0x53 + .4byte .LASF367 + .byte 0x5 + .byte 0x6d + .4byte .LASF368 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF369 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF370 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF371 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF372 + .byte 0x6 + .byte 0xf4,0x1 + .4byte .LASF373 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._intsup.h.10.48bafbb683905c4daa4565a85aeeb264,comdat +.Ldebug_macro6: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xa + .4byte .LASF374 + .byte 0x5 + .byte 0x10 + .4byte .LASF375 + .byte 0x6 + .byte 0x2b + .4byte .LASF376 + .byte 0x6 + .byte 0x2c + .4byte .LASF377 + .byte 0x6 + .byte 0x2d + .4byte .LASF378 + .byte 0x6 + .byte 0x2e + .4byte .LASF379 + .byte 0x2 + .byte 0x2f + .string "int" + .byte 0x6 + .byte 0x30 + .4byte .LASF380 + .byte 0x6 + .byte 0x31 + .4byte .LASF381 + .byte 0x6 + .byte 0x32 + .4byte .LASF382 + .byte 0x5 + .byte 0x33 + .4byte .LASF383 + .byte 0x5 + .byte 0x34 + .4byte .LASF384 + .byte 0x5 + .byte 0x35 + .4byte .LASF385 + .byte 0x5 + .byte 0x36 + .4byte .LASF386 + .byte 0x5 + .byte 0x37 + .4byte .LASF387 + .byte 0x5 + .byte 0x38 + .4byte .LASF388 + .byte 0x5 + .byte 0x39 + .4byte .LASF389 + .byte 0x5 + .byte 0x3a + .4byte .LASF390 + .byte 0x5 + .byte 0x43 + .4byte .LASF391 + .byte 0x5 + .byte 0x4a + .4byte .LASF392 + .byte 0x5 + .byte 0x52 + .4byte .LASF393 + .byte 0x5 + .byte 0x5d + .4byte .LASF394 + .byte 0x5 + .byte 0x68 + .4byte .LASF395 + .byte 0x5 + .byte 0x71 + .4byte .LASF396 + .byte 0x5 + .byte 0x78 + .4byte .LASF397 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF398 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF399 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF400 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF401 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF402 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF403 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF404 + .byte 0x6 + .byte 0xb8,0x1 + .4byte .LASF376 + .byte 0x6 + .byte 0xb9,0x1 + .4byte .LASF377 + .byte 0x6 + .byte 0xba,0x1 + .4byte .LASF378 + .byte 0x6 + .byte 0xbb,0x1 + .4byte .LASF379 + .byte 0x2 + .byte 0xbc,0x1 + .string "int" + .byte 0x6 + .byte 0xbd,0x1 + .4byte .LASF382 + .byte 0x6 + .byte 0xc2,0x1 + .4byte .LASF380 + .byte 0x6 + .byte 0xc3,0x1 + .4byte .LASF381 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._stdint.h.10.c24fa3af3bc1706662bb5593a907e841,comdat +.Ldebug_macro7: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xa + .4byte .LASF405 + .byte 0x5 + .byte 0x15 + .4byte .LASF406 + .byte 0x5 + .byte 0x19 + .4byte .LASF407 + .byte 0x5 + .byte 0x1b + .4byte .LASF408 + .byte 0x5 + .byte 0x21 + .4byte .LASF409 + .byte 0x5 + .byte 0x25 + .4byte .LASF410 + .byte 0x5 + .byte 0x27 + .4byte .LASF411 + .byte 0x5 + .byte 0x2d + .4byte .LASF412 + .byte 0x5 + .byte 0x31 + .4byte .LASF413 + .byte 0x5 + .byte 0x33 + .4byte .LASF414 + .byte 0x5 + .byte 0x39 + .4byte .LASF415 + .byte 0x5 + .byte 0x3d + .4byte .LASF416 + .byte 0x5 + .byte 0x3f + .4byte .LASF417 + .byte 0x5 + .byte 0x44 + .4byte .LASF418 + .byte 0x5 + .byte 0x49 + .4byte .LASF419 + .byte 0x5 + .byte 0x4e + .4byte .LASF420 + .byte 0x5 + .byte 0x53 + .4byte .LASF421 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stdint.h.23.d53047a68f4a85177f80b422d52785ed,comdat +.Ldebug_macro8: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x17 + .4byte .LASF422 + .byte 0x5 + .byte 0x1d + .4byte .LASF423 + .byte 0x5 + .byte 0x23 + .4byte .LASF424 + .byte 0x5 + .byte 0x29 + .4byte .LASF425 + .byte 0x5 + .byte 0x35 + .4byte .LASF426 + .byte 0x5 + .byte 0x3f + .4byte .LASF427 + .byte 0x5 + .byte 0x49 + .4byte .LASF428 + .byte 0x5 + .byte 0x53 + .4byte .LASF429 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF430 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF431 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF432 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF433 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF434 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF435 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF436 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF437 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF438 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF439 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF440 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF441 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF442 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF443 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF444 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF445 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF446 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF447 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF448 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF449 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF450 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF451 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF452 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF453 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF454 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF455 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF456 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF457 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF458 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF459 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF460 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF461 + .byte 0x5 + .byte 0x98,0x2 + .4byte .LASF462 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF463 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF464 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF465 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF466 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF467 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF468 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF469 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF470 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF471 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF472 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF473 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF474 + .byte 0x5 + .byte 0xe2,0x2 + .4byte .LASF475 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF476 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF477 + .byte 0x5 + .byte 0xf6,0x2 + .4byte .LASF478 + .byte 0x5 + .byte 0x80,0x3 + .4byte .LASF479 + .byte 0x5 + .byte 0x85,0x3 + .4byte .LASF480 + .byte 0x5 + .byte 0x8c,0x3 + .4byte .LASF481 + .byte 0x5 + .byte 0x8d,0x3 + .4byte .LASF482 + .byte 0x5 + .byte 0x98,0x3 + .4byte .LASF483 + .byte 0x5 + .byte 0x99,0x3 + .4byte .LASF484 + .byte 0x5 + .byte 0xa4,0x3 + .4byte .LASF485 + .byte 0x5 + .byte 0xa5,0x3 + .4byte .LASF486 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF487 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF488 + .byte 0x5 + .byte 0xc1,0x3 + .4byte .LASF489 + .byte 0x5 + .byte 0xc2,0x3 + .4byte .LASF490 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103.h.185.cffba7180870c0512d04c724c6463ab0,comdat +.Ldebug_macro9: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF491 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF492 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF493 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF494 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF495 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF496 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF497 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF498 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF499 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF500 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF501 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF502 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF503 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF504 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF505 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF506 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF507 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF508 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF509 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF510 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF511 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF512 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF513 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF514 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF515 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF516 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF517 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF518 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF519 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF520 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF521 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF522 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF523 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF524 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF525 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF526 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_adc.h.42.14cb8f90e4b5922f8a25d63c78535a21,comdat +.Ldebug_macro10: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x2a + .4byte .LASF529 + .byte 0x5 + .byte 0x2b + .4byte .LASF530 + .byte 0x5 + .byte 0x2e + .4byte .LASF531 + .byte 0x5 + .byte 0x2f + .4byte .LASF532 + .byte 0x5 + .byte 0x30 + .4byte .LASF533 + .byte 0x5 + .byte 0x31 + .4byte .LASF534 + .byte 0x5 + .byte 0x32 + .4byte .LASF535 + .byte 0x5 + .byte 0x33 + .4byte .LASF536 + .byte 0x5 + .byte 0x34 + .4byte .LASF537 + .byte 0x5 + .byte 0x35 + .4byte .LASF538 + .byte 0x5 + .byte 0x36 + .4byte .LASF539 + .byte 0x5 + .byte 0x37 + .4byte .LASF540 + .byte 0x5 + .byte 0x38 + .4byte .LASF541 + .byte 0x5 + .byte 0x39 + .4byte .LASF542 + .byte 0x5 + .byte 0x3a + .4byte .LASF543 + .byte 0x5 + .byte 0x3b + .4byte .LASF544 + .byte 0x5 + .byte 0x3c + .4byte .LASF545 + .byte 0x5 + .byte 0x3d + .4byte .LASF546 + .byte 0x5 + .byte 0x3e + .4byte .LASF547 + .byte 0x5 + .byte 0x3f + .4byte .LASF548 + .byte 0x5 + .byte 0x40 + .4byte .LASF549 + .byte 0x5 + .byte 0x41 + .4byte .LASF550 + .byte 0x5 + .byte 0x42 + .4byte .LASF551 + .byte 0x5 + .byte 0x46 + .4byte .LASF552 + .byte 0x5 + .byte 0x47 + .4byte .LASF553 + .byte 0x5 + .byte 0x48 + .4byte .LASF554 + .byte 0x5 + .byte 0x49 + .4byte .LASF555 + .byte 0x5 + .byte 0x4a + .4byte .LASF556 + .byte 0x5 + .byte 0x4d + .4byte .LASF557 + .byte 0x5 + .byte 0x4e + .4byte .LASF558 + .byte 0x5 + .byte 0x4f + .4byte .LASF559 + .byte 0x5 + .byte 0x50 + .4byte .LASF560 + .byte 0x5 + .byte 0x51 + .4byte .LASF561 + .byte 0x5 + .byte 0x52 + .4byte .LASF562 + .byte 0x5 + .byte 0x53 + .4byte .LASF563 + .byte 0x5 + .byte 0x54 + .4byte .LASF564 + .byte 0x5 + .byte 0x55 + .4byte .LASF565 + .byte 0x5 + .byte 0x56 + .4byte .LASF566 + .byte 0x5 + .byte 0x57 + .4byte .LASF567 + .byte 0x5 + .byte 0x58 + .4byte .LASF568 + .byte 0x5 + .byte 0x59 + .4byte .LASF569 + .byte 0x5 + .byte 0x5c + .4byte .LASF570 + .byte 0x5 + .byte 0x5d + .4byte .LASF571 + .byte 0x5 + .byte 0x5e + .4byte .LASF572 + .byte 0x5 + .byte 0x5f + .4byte .LASF573 + .byte 0x5 + .byte 0x60 + .4byte .LASF574 + .byte 0x5 + .byte 0x61 + .4byte .LASF575 + .byte 0x5 + .byte 0x62 + .4byte .LASF576 + .byte 0x5 + .byte 0x63 + .4byte .LASF577 + .byte 0x5 + .byte 0x64 + .4byte .LASF578 + .byte 0x5 + .byte 0x65 + .4byte .LASF579 + .byte 0x5 + .byte 0x66 + .4byte .LASF580 + .byte 0x5 + .byte 0x67 + .4byte .LASF581 + .byte 0x5 + .byte 0x68 + .4byte .LASF582 + .byte 0x5 + .byte 0x6b + .4byte .LASF583 + .byte 0x5 + .byte 0x6e + .4byte .LASF584 + .byte 0x5 + .byte 0x71 + .4byte .LASF585 + .byte 0x5 + .byte 0x74 + .4byte .LASF586 + .byte 0x5 + .byte 0x77 + .4byte .LASF587 + .byte 0x5 + .byte 0x78 + .4byte .LASF588 + .byte 0x5 + .byte 0x7b + .4byte .LASF589 + .byte 0x5 + .byte 0x7c + .4byte .LASF590 + .byte 0x5 + .byte 0x7f + .4byte .LASF591 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF592 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF593 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF594 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF595 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF596 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF597 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF598 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF599 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF600 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF601 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF602 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF603 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF604 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF605 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF606 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF607 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF608 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF609 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF610 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF611 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF612 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF613 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF614 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF615 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF616 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF617 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF618 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF619 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF620 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF621 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF622 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF623 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF624 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF625 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF626 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF627 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF628 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF629 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF630 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF631 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF632 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF633 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF634 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF635 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF636 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF637 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF638 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF639 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF640 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF641 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF642 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF643 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF644 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF645 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF646 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF647 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF648 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF649 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF650 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF651 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF652 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF653 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF654 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF655 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF656 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF657 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF658 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF659 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF660 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF661 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF662 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF663 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF664 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF665 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF666 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF667 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF668 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF669 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF670 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF671 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF672 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF673 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF674 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF675 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF676 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF677 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF678 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF679 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF680 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF681 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF682 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF683 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF684 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF685 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF686 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF687 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF688 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF689 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF690 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF691 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF692 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF693 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF694 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF695 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF696 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF697 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF698 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF699 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF700 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF701 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF702 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF703 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF704 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF705 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF706 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF707 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF708 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF709 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF710 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_bkp.h.37.565cdaf530a41cd40ed21e5fda39a6ed,comdat +.Ldebug_macro11: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF711 + .byte 0x5 + .byte 0x2a + .4byte .LASF712 + .byte 0x5 + .byte 0x2d + .4byte .LASF713 + .byte 0x5 + .byte 0x2e + .4byte .LASF714 + .byte 0x5 + .byte 0x2f + .4byte .LASF715 + .byte 0x5 + .byte 0x30 + .4byte .LASF716 + .byte 0x5 + .byte 0x31 + .4byte .LASF717 + .byte 0x5 + .byte 0x32 + .4byte .LASF718 + .byte 0x5 + .byte 0x33 + .4byte .LASF719 + .byte 0x5 + .byte 0x34 + .4byte .LASF720 + .byte 0x5 + .byte 0x35 + .4byte .LASF721 + .byte 0x5 + .byte 0x36 + .4byte .LASF722 + .byte 0x5 + .byte 0x37 + .4byte .LASF723 + .byte 0x5 + .byte 0x38 + .4byte .LASF724 + .byte 0x5 + .byte 0x39 + .4byte .LASF725 + .byte 0x5 + .byte 0x3a + .4byte .LASF726 + .byte 0x5 + .byte 0x3b + .4byte .LASF727 + .byte 0x5 + .byte 0x3c + .4byte .LASF728 + .byte 0x5 + .byte 0x3d + .4byte .LASF729 + .byte 0x5 + .byte 0x3e + .4byte .LASF730 + .byte 0x5 + .byte 0x3f + .4byte .LASF731 + .byte 0x5 + .byte 0x40 + .4byte .LASF732 + .byte 0x5 + .byte 0x41 + .4byte .LASF733 + .byte 0x5 + .byte 0x42 + .4byte .LASF734 + .byte 0x5 + .byte 0x43 + .4byte .LASF735 + .byte 0x5 + .byte 0x44 + .4byte .LASF736 + .byte 0x5 + .byte 0x45 + .4byte .LASF737 + .byte 0x5 + .byte 0x46 + .4byte .LASF738 + .byte 0x5 + .byte 0x47 + .4byte .LASF739 + .byte 0x5 + .byte 0x48 + .4byte .LASF740 + .byte 0x5 + .byte 0x49 + .4byte .LASF741 + .byte 0x5 + .byte 0x4a + .4byte .LASF742 + .byte 0x5 + .byte 0x4b + .4byte .LASF743 + .byte 0x5 + .byte 0x4c + .4byte .LASF744 + .byte 0x5 + .byte 0x4d + .4byte .LASF745 + .byte 0x5 + .byte 0x4e + .4byte .LASF746 + .byte 0x5 + .byte 0x4f + .4byte .LASF747 + .byte 0x5 + .byte 0x50 + .4byte .LASF748 + .byte 0x5 + .byte 0x51 + .4byte .LASF749 + .byte 0x5 + .byte 0x52 + .4byte .LASF750 + .byte 0x5 + .byte 0x53 + .4byte .LASF751 + .byte 0x5 + .byte 0x54 + .4byte .LASF752 + .byte 0x5 + .byte 0x55 + .4byte .LASF753 + .byte 0x5 + .byte 0x56 + .4byte .LASF754 + .byte 0x5 + .byte 0x57 + .4byte .LASF755 + .byte 0x5 + .byte 0x58 + .4byte .LASF756 + .byte 0x5 + .byte 0x59 + .4byte .LASF757 + .byte 0x5 + .byte 0x5d + .4byte .LASF758 + .byte 0x5 + .byte 0x60 + .4byte .LASF759 + .byte 0x5 + .byte 0x61 + .4byte .LASF760 + .byte 0x5 + .byte 0x62 + .4byte .LASF761 + .byte 0x5 + .byte 0x63 + .4byte .LASF762 + .byte 0x5 + .byte 0x66 + .4byte .LASF763 + .byte 0x5 + .byte 0x67 + .4byte .LASF764 + .byte 0x5 + .byte 0x6a + .4byte .LASF765 + .byte 0x5 + .byte 0x6b + .4byte .LASF766 + .byte 0x5 + .byte 0x6c + .4byte .LASF767 + .byte 0x5 + .byte 0x6d + .4byte .LASF768 + .byte 0x5 + .byte 0x6e + .4byte .LASF769 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF770 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF771 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF772 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF773 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF774 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF775 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF776 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF777 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF778 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF779 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_can.h.39.9380e444d8240972fa3c91ce629786a4,comdat +.Ldebug_macro12: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF780 + .byte 0x5 + .byte 0x2c + .4byte .LASF781 + .byte 0x5 + .byte 0x2d + .4byte .LASF782 + .byte 0x5 + .byte 0x30 + .4byte .LASF783 + .byte 0x5 + .byte 0x31 + .4byte .LASF784 + .byte 0x5 + .byte 0x32 + .4byte .LASF785 + .byte 0x5 + .byte 0x33 + .4byte .LASF786 + .byte 0x5 + .byte 0x34 + .4byte .LASF787 + .byte 0x5 + .byte 0x35 + .4byte .LASF788 + .byte 0x5 + .byte 0x36 + .4byte .LASF789 + .byte 0x5 + .byte 0x37 + .4byte .LASF790 + .byte 0x5 + .byte 0x38 + .4byte .LASF791 + .byte 0x5 + .byte 0x39 + .4byte .LASF792 + .byte 0x5 + .byte 0x3a + .4byte .LASF793 + .byte 0x5 + .byte 0x3b + .4byte .LASF794 + .byte 0x5 + .byte 0x3c + .4byte .LASF795 + .byte 0x5 + .byte 0x3d + .4byte .LASF796 + .byte 0x5 + .byte 0x3e + .4byte .LASF797 + .byte 0x5 + .byte 0x3f + .4byte .LASF798 + .byte 0x5 + .byte 0x40 + .4byte .LASF799 + .byte 0x5 + .byte 0x41 + .4byte .LASF800 + .byte 0x5 + .byte 0x42 + .4byte .LASF801 + .byte 0x5 + .byte 0x43 + .4byte .LASF802 + .byte 0x5 + .byte 0x44 + .4byte .LASF803 + .byte 0x5 + .byte 0x45 + .4byte .LASF804 + .byte 0x5 + .byte 0x46 + .4byte .LASF805 + .byte 0x5 + .byte 0x47 + .4byte .LASF806 + .byte 0x5 + .byte 0x48 + .4byte .LASF807 + .byte 0x5 + .byte 0x49 + .4byte .LASF808 + .byte 0x5 + .byte 0x4a + .4byte .LASF809 + .byte 0x5 + .byte 0x4b + .4byte .LASF810 + .byte 0x5 + .byte 0x4c + .4byte .LASF811 + .byte 0x5 + .byte 0x4d + .4byte .LASF812 + .byte 0x5 + .byte 0x4e + .4byte .LASF813 + .byte 0x5 + .byte 0x4f + .4byte .LASF814 + .byte 0x5 + .byte 0x50 + .4byte .LASF815 + .byte 0x5 + .byte 0x51 + .4byte .LASF816 + .byte 0x5 + .byte 0x52 + .4byte .LASF817 + .byte 0x5 + .byte 0x53 + .4byte .LASF818 + .byte 0x5 + .byte 0x54 + .4byte .LASF819 + .byte 0x5 + .byte 0x55 + .4byte .LASF820 + .byte 0x5 + .byte 0x56 + .4byte .LASF821 + .byte 0x5 + .byte 0x57 + .4byte .LASF822 + .byte 0x5 + .byte 0x58 + .4byte .LASF823 + .byte 0x5 + .byte 0x59 + .4byte .LASF824 + .byte 0x5 + .byte 0x5a + .4byte .LASF825 + .byte 0x5 + .byte 0x5b + .4byte .LASF826 + .byte 0x5 + .byte 0x5c + .4byte .LASF827 + .byte 0x5 + .byte 0x5d + .4byte .LASF828 + .byte 0x5 + .byte 0x5e + .4byte .LASF829 + .byte 0x5 + .byte 0x5f + .4byte .LASF830 + .byte 0x5 + .byte 0x60 + .4byte .LASF831 + .byte 0x5 + .byte 0x61 + .4byte .LASF832 + .byte 0x5 + .byte 0x62 + .4byte .LASF833 + .byte 0x5 + .byte 0x63 + .4byte .LASF834 + .byte 0x5 + .byte 0x64 + .4byte .LASF835 + .byte 0x5 + .byte 0x65 + .4byte .LASF836 + .byte 0x5 + .byte 0x66 + .4byte .LASF837 + .byte 0x5 + .byte 0x67 + .4byte .LASF838 + .byte 0x5 + .byte 0x68 + .4byte .LASF839 + .byte 0x5 + .byte 0x69 + .4byte .LASF840 + .byte 0x5 + .byte 0x6a + .4byte .LASF841 + .byte 0x5 + .byte 0x6b + .4byte .LASF842 + .byte 0x5 + .byte 0x6c + .4byte .LASF843 + .byte 0x5 + .byte 0x6d + .4byte .LASF844 + .byte 0x5 + .byte 0x6e + .4byte .LASF845 + .byte 0x5 + .byte 0x6f + .4byte .LASF846 + .byte 0x5 + .byte 0x70 + .4byte .LASF847 + .byte 0x5 + .byte 0x71 + .4byte .LASF848 + .byte 0x5 + .byte 0x72 + .4byte .LASF849 + .byte 0x5 + .byte 0x73 + .4byte .LASF850 + .byte 0x5 + .byte 0x74 + .4byte .LASF851 + .byte 0x5 + .byte 0x75 + .4byte .LASF852 + .byte 0x5 + .byte 0x76 + .4byte .LASF853 + .byte 0x5 + .byte 0x77 + .4byte .LASF854 + .byte 0x5 + .byte 0x78 + .4byte .LASF855 + .byte 0x5 + .byte 0x79 + .4byte .LASF856 + .byte 0x5 + .byte 0x7a + .4byte .LASF857 + .byte 0x5 + .byte 0x7b + .4byte .LASF858 + .byte 0x5 + .byte 0x7c + .4byte .LASF859 + .byte 0x5 + .byte 0x7d + .4byte .LASF860 + .byte 0x5 + .byte 0x7e + .4byte .LASF861 + .byte 0x5 + .byte 0x7f + .4byte .LASF862 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF863 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF864 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF865 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF866 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF867 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF868 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF869 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF870 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF871 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF872 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF873 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF874 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF875 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF876 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF877 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF878 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF879 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF880 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF881 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF882 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF883 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF884 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF885 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF886 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF887 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF888 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF889 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF890 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF891 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF892 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF893 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF894 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF895 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF896 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF897 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF898 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF899 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF900 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF901 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF902 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF903 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF904 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF905 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF906 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF907 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF908 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF909 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF910 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF911 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF912 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF913 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF914 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF915 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF916 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF917 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF918 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF919 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF920 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF921 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF922 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF923 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF924 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF925 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF926 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF927 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF928 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF929 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF930 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF931 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF932 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF933 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF934 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF935 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF936 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF937 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF938 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF939 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF940 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF941 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF942 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF943 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF944 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF945 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF946 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF947 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF948 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF949 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF950 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF951 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF952 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF953 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF954 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF955 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF956 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF957 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF958 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF959 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF960 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF961 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF962 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF963 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF964 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF965 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF966 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF967 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF968 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF969 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF970 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF971 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF972 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF973 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF974 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF975 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF976 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF977 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF978 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF979 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF980 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF981 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF982 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF983 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF984 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF985 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF986 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF987 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF988 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF989 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF990 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF991 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF992 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF993 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF994 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF995 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF996 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF997 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF998 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF999 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF1000 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF1001 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF1002 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF1003 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF1004 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF1005 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF1006 + .byte 0x5 + .byte 0xe4,0x3 + .4byte .LASF1007 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF1008 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF1009 + .byte 0x5 + .byte 0xed,0x3 + .4byte .LASF1010 + .byte 0x5 + .byte 0xf0,0x3 + .4byte .LASF1011 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF1012 + .byte 0x5 + .byte 0xf6,0x3 + .4byte .LASF1013 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF1014 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF1015 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF1016 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF1017 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF1018 + .byte 0x5 + .byte 0x88,0x4 + .4byte .LASF1019 + .byte 0x5 + .byte 0x8b,0x4 + .4byte .LASF1020 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF1021 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF1022 + .byte 0x5 + .byte 0x94,0x4 + .4byte .LASF1023 + .byte 0x5 + .byte 0x97,0x4 + .4byte .LASF1024 + .byte 0x5 + .byte 0x9a,0x4 + .4byte .LASF1025 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF1026 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF1027 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF1028 + .byte 0x5 + .byte 0xa6,0x4 + .4byte .LASF1029 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF1030 + .byte 0x5 + .byte 0xac,0x4 + .4byte .LASF1031 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF1032 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF1033 + .byte 0x5 + .byte 0xb5,0x4 + .4byte .LASF1034 + .byte 0x5 + .byte 0xb8,0x4 + .4byte .LASF1035 + .byte 0x5 + .byte 0xbb,0x4 + .4byte .LASF1036 + .byte 0x5 + .byte 0xbe,0x4 + .4byte .LASF1037 + .byte 0x5 + .byte 0xc1,0x4 + .4byte .LASF1038 + .byte 0x5 + .byte 0xc4,0x4 + .4byte .LASF1039 + .byte 0x5 + .byte 0xc7,0x4 + .4byte .LASF1040 + .byte 0x5 + .byte 0xc8,0x4 + .4byte .LASF1041 + .byte 0x5 + .byte 0xc9,0x4 + .4byte .LASF1042 + .byte 0x5 + .byte 0xca,0x4 + .4byte .LASF1043 + .byte 0x5 + .byte 0xcb,0x4 + .4byte .LASF1044 + .byte 0x5 + .byte 0xcc,0x4 + .4byte .LASF1045 + .byte 0x5 + .byte 0xcd,0x4 + .4byte .LASF1046 + .byte 0x5 + .byte 0xce,0x4 + .4byte .LASF1047 + .byte 0x5 + .byte 0xcf,0x4 + .4byte .LASF1048 + .byte 0x5 + .byte 0xd1,0x4 + .4byte .LASF1049 + .byte 0x5 + .byte 0xd4,0x4 + .4byte .LASF1050 + .byte 0x5 + .byte 0xd5,0x4 + .4byte .LASF1051 + .byte 0x5 + .byte 0xd6,0x4 + .4byte .LASF1052 + .byte 0x5 + .byte 0xd7,0x4 + .4byte .LASF1053 + .byte 0x5 + .byte 0xda,0x4 + .4byte .LASF1054 + .byte 0x5 + .byte 0xdb,0x4 + .4byte .LASF1055 + .byte 0x5 + .byte 0xdc,0x4 + .4byte .LASF1056 + .byte 0x5 + .byte 0xdd,0x4 + .4byte .LASF1057 + .byte 0x5 + .byte 0xe0,0x4 + .4byte .LASF1058 + .byte 0x5 + .byte 0xe1,0x4 + .4byte .LASF1059 + .byte 0x5 + .byte 0xe2,0x4 + .4byte .LASF1060 + .byte 0x5 + .byte 0xe3,0x4 + .4byte .LASF1061 + .byte 0x5 + .byte 0xe4,0x4 + .4byte .LASF1062 + .byte 0x5 + .byte 0xe5,0x4 + .4byte .LASF1063 + .byte 0x5 + .byte 0xe6,0x4 + .4byte .LASF1064 + .byte 0x5 + .byte 0xe7,0x4 + .4byte .LASF1065 + .byte 0x5 + .byte 0xe8,0x4 + .4byte .LASF1066 + .byte 0x5 + .byte 0xe9,0x4 + .4byte .LASF1067 + .byte 0x5 + .byte 0xea,0x4 + .4byte .LASF1068 + .byte 0x5 + .byte 0xeb,0x4 + .4byte .LASF1069 + .byte 0x5 + .byte 0xec,0x4 + .4byte .LASF1070 + .byte 0x5 + .byte 0xed,0x4 + .4byte .LASF1071 + .byte 0x5 + .byte 0xee,0x4 + .4byte .LASF1072 + .byte 0x5 + .byte 0xef,0x4 + .4byte .LASF1073 + .byte 0x5 + .byte 0xf2,0x4 + .4byte .LASF1074 + .byte 0x5 + .byte 0xf3,0x4 + .4byte .LASF1075 + .byte 0x5 + .byte 0xf4,0x4 + .4byte .LASF1076 + .byte 0x5 + .byte 0xf5,0x4 + .4byte .LASF1077 + .byte 0x5 + .byte 0xf6,0x4 + .4byte .LASF1078 + .byte 0x5 + .byte 0xf7,0x4 + .4byte .LASF1079 + .byte 0x5 + .byte 0xf8,0x4 + .4byte .LASF1080 + .byte 0x5 + .byte 0xf9,0x4 + .4byte .LASF1081 + .byte 0x5 + .byte 0xfc,0x4 + .4byte .LASF1082 + .byte 0x5 + .byte 0xfd,0x4 + .4byte .LASF1083 + .byte 0x5 + .byte 0xfe,0x4 + .4byte .LASF1084 + .byte 0x5 + .byte 0xff,0x4 + .4byte .LASF1085 + .byte 0x5 + .byte 0x82,0x5 + .4byte .LASF1086 + .byte 0x5 + .byte 0x83,0x5 + .4byte .LASF1087 + .byte 0x5 + .byte 0x86,0x5 + .4byte .LASF1088 + .byte 0x5 + .byte 0x87,0x5 + .4byte .LASF1089 + .byte 0x5 + .byte 0x8a,0x5 + .4byte .LASF1090 + .byte 0x5 + .byte 0x8c,0x5 + .4byte .LASF1091 + .byte 0x5 + .byte 0x8d,0x5 + .4byte .LASF1092 + .byte 0x5 + .byte 0x90,0x5 + .4byte .LASF1093 + .byte 0x5 + .byte 0x91,0x5 + .4byte .LASF1094 + .byte 0x5 + .byte 0x92,0x5 + .4byte .LASF1095 + .byte 0x5 + .byte 0x95,0x5 + .4byte .LASF1096 + .byte 0x5 + .byte 0x96,0x5 + .4byte .LASF1097 + .byte 0x5 + .byte 0x99,0x5 + .4byte .LASF1098 + .byte 0x5 + .byte 0x9a,0x5 + .4byte .LASF1099 + .byte 0x5 + .byte 0x9d,0x5 + .4byte .LASF1100 + .byte 0x5 + .byte 0xa0,0x5 + .4byte .LASF1101 + .byte 0x5 + .byte 0xa1,0x5 + .4byte .LASF1102 + .byte 0x5 + .byte 0xa4,0x5 + .4byte .LASF1103 + .byte 0x5 + .byte 0xa7,0x5 + .4byte .LASF1104 + .byte 0x5 + .byte 0xa8,0x5 + .4byte .LASF1105 + .byte 0x5 + .byte 0xa9,0x5 + .4byte .LASF1106 + .byte 0x5 + .byte 0xaa,0x5 + .4byte .LASF1107 + .byte 0x5 + .byte 0xab,0x5 + .4byte .LASF1108 + .byte 0x5 + .byte 0xac,0x5 + .4byte .LASF1109 + .byte 0x5 + .byte 0xad,0x5 + .4byte .LASF1110 + .byte 0x5 + .byte 0xae,0x5 + .4byte .LASF1111 + .byte 0x5 + .byte 0xaf,0x5 + .4byte .LASF1112 + .byte 0x5 + .byte 0xb0,0x5 + .4byte .LASF1113 + .byte 0x5 + .byte 0xb1,0x5 + .4byte .LASF1114 + .byte 0x5 + .byte 0xb2,0x5 + .4byte .LASF1115 + .byte 0x5 + .byte 0xb3,0x5 + .4byte .LASF1116 + .byte 0x5 + .byte 0xb4,0x5 + .4byte .LASF1117 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_crc.h.37.f77f53f1516fc65e49eac544ab82df8c,comdat +.Ldebug_macro13: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1118 + .byte 0x5 + .byte 0x2a + .4byte .LASF1119 + .byte 0x5 + .byte 0x2d + .4byte .LASF1120 + .byte 0x5 + .byte 0x2e + .4byte .LASF1121 + .byte 0x5 + .byte 0x2f + .4byte .LASF1122 + .byte 0x5 + .byte 0x33 + .4byte .LASF1123 + .byte 0x5 + .byte 0x36 + .4byte .LASF1124 + .byte 0x5 + .byte 0x39 + .4byte .LASF1125 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dac.h.37.c64e29f692c863eb577e59c8c0ad940a,comdat +.Ldebug_macro14: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1126 + .byte 0x5 + .byte 0x2a + .4byte .LASF1127 + .byte 0x5 + .byte 0x2b + .4byte .LASF1128 + .byte 0x5 + .byte 0x2c + .4byte .LASF1129 + .byte 0x5 + .byte 0x2f + .4byte .LASF1130 + .byte 0x5 + .byte 0x30 + .4byte .LASF1131 + .byte 0x5 + .byte 0x31 + .4byte .LASF1132 + .byte 0x5 + .byte 0x32 + .4byte .LASF1133 + .byte 0x5 + .byte 0x33 + .4byte .LASF1134 + .byte 0x5 + .byte 0x34 + .4byte .LASF1135 + .byte 0x5 + .byte 0x35 + .4byte .LASF1136 + .byte 0x5 + .byte 0x36 + .4byte .LASF1137 + .byte 0x5 + .byte 0x37 + .4byte .LASF1138 + .byte 0x5 + .byte 0x38 + .4byte .LASF1139 + .byte 0x5 + .byte 0x39 + .4byte .LASF1140 + .byte 0x5 + .byte 0x3a + .4byte .LASF1141 + .byte 0x5 + .byte 0x3b + .4byte .LASF1142 + .byte 0x5 + .byte 0x3f + .4byte .LASF1143 + .byte 0x5 + .byte 0x40 + .4byte .LASF1144 + .byte 0x5 + .byte 0x41 + .4byte .LASF1145 + .byte 0x5 + .byte 0x42 + .4byte .LASF1146 + .byte 0x5 + .byte 0x43 + .4byte .LASF1147 + .byte 0x5 + .byte 0x44 + .4byte .LASF1148 + .byte 0x5 + .byte 0x45 + .4byte .LASF1149 + .byte 0x5 + .byte 0x46 + .4byte .LASF1150 + .byte 0x5 + .byte 0x47 + .4byte .LASF1151 + .byte 0x5 + .byte 0x48 + .4byte .LASF1152 + .byte 0x5 + .byte 0x49 + .4byte .LASF1153 + .byte 0x5 + .byte 0x4a + .4byte .LASF1154 + .byte 0x5 + .byte 0x4b + .4byte .LASF1155 + .byte 0x5 + .byte 0x4c + .4byte .LASF1156 + .byte 0x5 + .byte 0x4f + .4byte .LASF1157 + .byte 0x5 + .byte 0x50 + .4byte .LASF1158 + .byte 0x5 + .byte 0x53 + .4byte .LASF1159 + .byte 0x5 + .byte 0x56 + .4byte .LASF1160 + .byte 0x5 + .byte 0x59 + .4byte .LASF1161 + .byte 0x5 + .byte 0x5c + .4byte .LASF1162 + .byte 0x5 + .byte 0x5f + .4byte .LASF1163 + .byte 0x5 + .byte 0x62 + .4byte .LASF1164 + .byte 0x5 + .byte 0x65 + .4byte .LASF1165 + .byte 0x5 + .byte 0x66 + .4byte .LASF1166 + .byte 0x5 + .byte 0x69 + .4byte .LASF1167 + .byte 0x5 + .byte 0x6a + .4byte .LASF1168 + .byte 0x5 + .byte 0x6d + .4byte .LASF1169 + .byte 0x5 + .byte 0x6e + .4byte .LASF1170 + .byte 0x5 + .byte 0x71 + .4byte .LASF1171 + .byte 0x5 + .byte 0x74 + .4byte .LASF1172 + .byte 0x5 + .byte 0x78 + .4byte .LASF1173 + .byte 0x5 + .byte 0x79 + .4byte .LASF1174 + .byte 0x5 + .byte 0x7a + .4byte .LASF1175 + .byte 0x5 + .byte 0x7b + .4byte .LASF1176 + .byte 0x5 + .byte 0x7c + .4byte .LASF1177 + .byte 0x5 + .byte 0x7d + .4byte .LASF1178 + .byte 0x5 + .byte 0x7e + .4byte .LASF1179 + .byte 0x5 + .byte 0x7f + .4byte .LASF1180 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF1181 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF1182 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF1183 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1184 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1185 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF1186 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1187 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1188 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF1189 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF1190 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1191 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1192 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1193 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF1194 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF1195 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF1196 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF1197 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1198 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1199 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1200 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1201 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1202 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF1203 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF1204 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1205 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1206 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1207 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1208 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1209 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1210 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1211 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1212 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1213 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1214 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF1215 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1216 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1217 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1218 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1219 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1220 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1221 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF1222 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF1223 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1224 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1225 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1226 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dma.h.38.2c314170096cba83b58f6eccfc84a5f7,comdat +.Ldebug_macro15: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x26 + .4byte .LASF1227 + .byte 0x5 + .byte 0x2b + .4byte .LASF1228 + .byte 0x5 + .byte 0x2c + .4byte .LASF1229 + .byte 0x5 + .byte 0x2f + .4byte .LASF1230 + .byte 0x5 + .byte 0x30 + .4byte .LASF1231 + .byte 0x5 + .byte 0x32 + .4byte .LASF1232 + .byte 0x5 + .byte 0x33 + .4byte .LASF1233 + .byte 0x5 + .byte 0x34 + .4byte .LASF1234 + .byte 0x5 + .byte 0x35 + .4byte .LASF1235 + .byte 0x5 + .byte 0x37 + .4byte .LASF1236 + .byte 0x5 + .byte 0x38 + .4byte .LASF1237 + .byte 0x5 + .byte 0x39 + .4byte .LASF1238 + .byte 0x5 + .byte 0x3a + .4byte .LASF1239 + .byte 0x5 + .byte 0x3c + .4byte .LASF1240 + .byte 0x5 + .byte 0x3d + .4byte .LASF1241 + .byte 0x5 + .byte 0x3e + .4byte .LASF1242 + .byte 0x5 + .byte 0x3f + .4byte .LASF1243 + .byte 0x5 + .byte 0x41 + .4byte .LASF1244 + .byte 0x5 + .byte 0x42 + .4byte .LASF1245 + .byte 0x5 + .byte 0x43 + .4byte .LASF1246 + .byte 0x5 + .byte 0x44 + .4byte .LASF1247 + .byte 0x5 + .byte 0x46 + .4byte .LASF1248 + .byte 0x5 + .byte 0x47 + .4byte .LASF1249 + .byte 0x5 + .byte 0x48 + .4byte .LASF1250 + .byte 0x5 + .byte 0x49 + .4byte .LASF1251 + .byte 0x5 + .byte 0x4b + .4byte .LASF1252 + .byte 0x5 + .byte 0x4c + .4byte .LASF1253 + .byte 0x5 + .byte 0x4d + .4byte .LASF1254 + .byte 0x5 + .byte 0x4e + .4byte .LASF1255 + .byte 0x5 + .byte 0x50 + .4byte .LASF1256 + .byte 0x5 + .byte 0x51 + .4byte .LASF1257 + .byte 0x5 + .byte 0x52 + .4byte .LASF1258 + .byte 0x5 + .byte 0x53 + .4byte .LASF1259 + .byte 0x5 + .byte 0x57 + .4byte .LASF1260 + .byte 0x5 + .byte 0x58 + .4byte .LASF1261 + .byte 0x5 + .byte 0x59 + .4byte .LASF1262 + .byte 0x5 + .byte 0x5a + .4byte .LASF1263 + .byte 0x5 + .byte 0x5d + .4byte .LASF1264 + .byte 0x5 + .byte 0x5e + .4byte .LASF1265 + .byte 0x5 + .byte 0x5f + .4byte .LASF1266 + .byte 0x5 + .byte 0x60 + .4byte .LASF1267 + .byte 0x5 + .byte 0x63 + .4byte .LASF1268 + .byte 0x5 + .byte 0x64 + .4byte .LASF1269 + .byte 0x5 + .byte 0x65 + .4byte .LASF1270 + .byte 0x5 + .byte 0x66 + .4byte .LASF1271 + .byte 0x5 + .byte 0x67 + .4byte .LASF1272 + .byte 0x5 + .byte 0x68 + .4byte .LASF1273 + .byte 0x5 + .byte 0x69 + .4byte .LASF1274 + .byte 0x5 + .byte 0x6a + .4byte .LASF1275 + .byte 0x5 + .byte 0x6b + .4byte .LASF1276 + .byte 0x5 + .byte 0x6c + .4byte .LASF1277 + .byte 0x5 + .byte 0x6d + .4byte .LASF1278 + .byte 0x5 + .byte 0x6e + .4byte .LASF1279 + .byte 0x5 + .byte 0x71 + .4byte .LASF1280 + .byte 0x5 + .byte 0x74 + .4byte .LASF1281 + .byte 0x5 + .byte 0x77 + .4byte .LASF1282 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1283 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1284 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1285 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1286 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1287 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1288 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1289 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1290 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1291 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1292 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1293 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1294 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1295 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1296 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1297 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1298 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1299 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1300 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1301 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1302 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1303 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF1304 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1305 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1306 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1307 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1308 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1309 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF1310 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF1311 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF1312 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF1313 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF1314 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1315 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF1316 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF1317 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1318 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1319 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF1320 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF1321 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1322 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF1323 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1324 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1325 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_eclic.h.37.7db9f8893169694757dea82a4b9eed61,comdat +.Ldebug_macro16: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1326 + .byte 0x5 + .byte 0x2a + .4byte .LASF1327 + .byte 0x5 + .byte 0x2b + .4byte .LASF1328 + .byte 0x5 + .byte 0x2c + .4byte .LASF1329 + .byte 0x5 + .byte 0x2d + .4byte .LASF1330 + .byte 0x5 + .byte 0x2e + .4byte .LASF1331 + .byte 0x5 + .byte 0x30 + .4byte .LASF1332 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_exmc.h.37.96699be4b910beb81cdfd35650becbf1,comdat +.Ldebug_macro17: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1333 + .byte 0x5 + .byte 0x2a + .4byte .LASF1334 + .byte 0x5 + .byte 0x2e + .4byte .LASF1335 + .byte 0x5 + .byte 0x2f + .4byte .LASF1336 + .byte 0x5 + .byte 0x30 + .4byte .LASF1337 + .byte 0x5 + .byte 0x35 + .4byte .LASF1338 + .byte 0x5 + .byte 0x36 + .4byte .LASF1339 + .byte 0x5 + .byte 0x37 + .4byte .LASF1340 + .byte 0x5 + .byte 0x38 + .4byte .LASF1341 + .byte 0x5 + .byte 0x39 + .4byte .LASF1342 + .byte 0x5 + .byte 0x3a + .4byte .LASF1343 + .byte 0x5 + .byte 0x3b + .4byte .LASF1344 + .byte 0x5 + .byte 0x3c + .4byte .LASF1345 + .byte 0x5 + .byte 0x3d + .4byte .LASF1346 + .byte 0x5 + .byte 0x40 + .4byte .LASF1347 + .byte 0x5 + .byte 0x41 + .4byte .LASF1348 + .byte 0x5 + .byte 0x42 + .4byte .LASF1349 + .byte 0x5 + .byte 0x43 + .4byte .LASF1350 + .byte 0x5 + .byte 0x5e + .4byte .LASF1351 + .byte 0x5 + .byte 0x5f + .4byte .LASF1352 + .byte 0x5 + .byte 0x62 + .4byte .LASF1353 + .byte 0x5 + .byte 0x63 + .4byte .LASF1354 + .byte 0x5 + .byte 0x64 + .4byte .LASF1355 + .byte 0x5 + .byte 0x67 + .4byte .LASF1356 + .byte 0x5 + .byte 0x68 + .4byte .LASF1357 + .byte 0x5 + .byte 0x69 + .4byte .LASF1358 + .byte 0x5 + .byte 0x6a + .4byte .LASF1359 + .byte 0x5 + .byte 0x6d + .4byte .LASF1360 + .byte 0x5 + .byte 0x70 + .4byte .LASF1361 + .byte 0x5 + .byte 0x71 + .4byte .LASF1362 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_exti.h.37.a48547bbdeb43685ea30e1aa7e1bc0e9,comdat +.Ldebug_macro18: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1363 + .byte 0x5 + .byte 0x2a + .4byte .LASF1364 + .byte 0x5 + .byte 0x2d + .4byte .LASF1365 + .byte 0x5 + .byte 0x2e + .4byte .LASF1366 + .byte 0x5 + .byte 0x2f + .4byte .LASF1367 + .byte 0x5 + .byte 0x30 + .4byte .LASF1368 + .byte 0x5 + .byte 0x31 + .4byte .LASF1369 + .byte 0x5 + .byte 0x32 + .4byte .LASF1370 + .byte 0x5 + .byte 0x36 + .4byte .LASF1371 + .byte 0x5 + .byte 0x37 + .4byte .LASF1372 + .byte 0x5 + .byte 0x38 + .4byte .LASF1373 + .byte 0x5 + .byte 0x39 + .4byte .LASF1374 + .byte 0x5 + .byte 0x3a + .4byte .LASF1375 + .byte 0x5 + .byte 0x3b + .4byte .LASF1376 + .byte 0x5 + .byte 0x3c + .4byte .LASF1377 + .byte 0x5 + .byte 0x3d + .4byte .LASF1378 + .byte 0x5 + .byte 0x3e + .4byte .LASF1379 + .byte 0x5 + .byte 0x3f + .4byte .LASF1380 + .byte 0x5 + .byte 0x40 + .4byte .LASF1381 + .byte 0x5 + .byte 0x41 + .4byte .LASF1382 + .byte 0x5 + .byte 0x42 + .4byte .LASF1383 + .byte 0x5 + .byte 0x43 + .4byte .LASF1384 + .byte 0x5 + .byte 0x44 + .4byte .LASF1385 + .byte 0x5 + .byte 0x45 + .4byte .LASF1386 + .byte 0x5 + .byte 0x46 + .4byte .LASF1387 + .byte 0x5 + .byte 0x47 + .4byte .LASF1388 + .byte 0x5 + .byte 0x48 + .4byte .LASF1389 + .byte 0x5 + .byte 0x4b + .4byte .LASF1390 + .byte 0x5 + .byte 0x4c + .4byte .LASF1391 + .byte 0x5 + .byte 0x4d + .4byte .LASF1392 + .byte 0x5 + .byte 0x4e + .4byte .LASF1393 + .byte 0x5 + .byte 0x4f + .4byte .LASF1394 + .byte 0x5 + .byte 0x50 + .4byte .LASF1395 + .byte 0x5 + .byte 0x51 + .4byte .LASF1396 + .byte 0x5 + .byte 0x52 + .4byte .LASF1397 + .byte 0x5 + .byte 0x53 + .4byte .LASF1398 + .byte 0x5 + .byte 0x54 + .4byte .LASF1399 + .byte 0x5 + .byte 0x55 + .4byte .LASF1400 + .byte 0x5 + .byte 0x56 + .4byte .LASF1401 + .byte 0x5 + .byte 0x57 + .4byte .LASF1402 + .byte 0x5 + .byte 0x58 + .4byte .LASF1403 + .byte 0x5 + .byte 0x59 + .4byte .LASF1404 + .byte 0x5 + .byte 0x5a + .4byte .LASF1405 + .byte 0x5 + .byte 0x5b + .4byte .LASF1406 + .byte 0x5 + .byte 0x5c + .4byte .LASF1407 + .byte 0x5 + .byte 0x5d + .4byte .LASF1408 + .byte 0x5 + .byte 0x60 + .4byte .LASF1409 + .byte 0x5 + .byte 0x61 + .4byte .LASF1410 + .byte 0x5 + .byte 0x62 + .4byte .LASF1411 + .byte 0x5 + .byte 0x63 + .4byte .LASF1412 + .byte 0x5 + .byte 0x64 + .4byte .LASF1413 + .byte 0x5 + .byte 0x65 + .4byte .LASF1414 + .byte 0x5 + .byte 0x66 + .4byte .LASF1415 + .byte 0x5 + .byte 0x67 + .4byte .LASF1416 + .byte 0x5 + .byte 0x68 + .4byte .LASF1417 + .byte 0x5 + .byte 0x69 + .4byte .LASF1418 + .byte 0x5 + .byte 0x6a + .4byte .LASF1419 + .byte 0x5 + .byte 0x6b + .4byte .LASF1420 + .byte 0x5 + .byte 0x6c + .4byte .LASF1421 + .byte 0x5 + .byte 0x6d + .4byte .LASF1422 + .byte 0x5 + .byte 0x6e + .4byte .LASF1423 + .byte 0x5 + .byte 0x6f + .4byte .LASF1424 + .byte 0x5 + .byte 0x70 + .4byte .LASF1425 + .byte 0x5 + .byte 0x71 + .4byte .LASF1426 + .byte 0x5 + .byte 0x72 + .4byte .LASF1427 + .byte 0x5 + .byte 0x75 + .4byte .LASF1428 + .byte 0x5 + .byte 0x76 + .4byte .LASF1429 + .byte 0x5 + .byte 0x77 + .4byte .LASF1430 + .byte 0x5 + .byte 0x78 + .4byte .LASF1431 + .byte 0x5 + .byte 0x79 + .4byte .LASF1432 + .byte 0x5 + .byte 0x7a + .4byte .LASF1433 + .byte 0x5 + .byte 0x7b + .4byte .LASF1434 + .byte 0x5 + .byte 0x7c + .4byte .LASF1435 + .byte 0x5 + .byte 0x7d + .4byte .LASF1436 + .byte 0x5 + .byte 0x7e + .4byte .LASF1437 + .byte 0x5 + .byte 0x7f + .4byte .LASF1438 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF1439 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF1440 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF1441 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF1442 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF1443 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1444 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1445 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF1446 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1447 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1448 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF1449 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF1450 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1451 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1452 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1453 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF1454 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF1455 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF1456 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF1457 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1458 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF1459 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF1460 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1461 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1462 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1463 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1464 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF1465 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1466 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1467 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1468 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1469 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1470 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF1471 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF1472 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1473 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1474 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1475 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1476 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1477 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF1478 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1479 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1480 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1481 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1482 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1483 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1484 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_fmc.h.39.cad093dc97f9756dd7521b8e6602cd12,comdat +.Ldebug_macro19: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF1485 + .byte 0x5 + .byte 0x2c + .4byte .LASF1486 + .byte 0x5 + .byte 0x2d + .4byte .LASF1487 + .byte 0x5 + .byte 0x30 + .4byte .LASF1488 + .byte 0x5 + .byte 0x31 + .4byte .LASF1489 + .byte 0x5 + .byte 0x32 + .4byte .LASF1490 + .byte 0x5 + .byte 0x33 + .4byte .LASF1491 + .byte 0x5 + .byte 0x34 + .4byte .LASF1492 + .byte 0x5 + .byte 0x35 + .4byte .LASF1493 + .byte 0x5 + .byte 0x36 + .4byte .LASF1494 + .byte 0x5 + .byte 0x37 + .4byte .LASF1495 + .byte 0x5 + .byte 0x38 + .4byte .LASF1496 + .byte 0x5 + .byte 0x3a + .4byte .LASF1497 + .byte 0x5 + .byte 0x3b + .4byte .LASF1498 + .byte 0x5 + .byte 0x3c + .4byte .LASF1499 + .byte 0x5 + .byte 0x3d + .4byte .LASF1500 + .byte 0x5 + .byte 0x3e + .4byte .LASF1501 + .byte 0x5 + .byte 0x3f + .4byte .LASF1502 + .byte 0x5 + .byte 0x43 + .4byte .LASF1503 + .byte 0x5 + .byte 0x46 + .4byte .LASF1504 + .byte 0x5 + .byte 0x49 + .4byte .LASF1505 + .byte 0x5 + .byte 0x4c + .4byte .LASF1506 + .byte 0x5 + .byte 0x4d + .4byte .LASF1507 + .byte 0x5 + .byte 0x4e + .4byte .LASF1508 + .byte 0x5 + .byte 0x4f + .4byte .LASF1509 + .byte 0x5 + .byte 0x52 + .4byte .LASF1510 + .byte 0x5 + .byte 0x53 + .4byte .LASF1511 + .byte 0x5 + .byte 0x54 + .4byte .LASF1512 + .byte 0x5 + .byte 0x55 + .4byte .LASF1513 + .byte 0x5 + .byte 0x56 + .4byte .LASF1514 + .byte 0x5 + .byte 0x57 + .4byte .LASF1515 + .byte 0x5 + .byte 0x58 + .4byte .LASF1516 + .byte 0x5 + .byte 0x59 + .4byte .LASF1517 + .byte 0x5 + .byte 0x5a + .4byte .LASF1518 + .byte 0x5 + .byte 0x5b + .4byte .LASF1519 + .byte 0x5 + .byte 0x5e + .4byte .LASF1520 + .byte 0x5 + .byte 0x61 + .4byte .LASF1521 + .byte 0x5 + .byte 0x62 + .4byte .LASF1522 + .byte 0x5 + .byte 0x63 + .4byte .LASF1523 + .byte 0x5 + .byte 0x64 + .4byte .LASF1524 + .byte 0x5 + .byte 0x67 + .4byte .LASF1525 + .byte 0x5 + .byte 0x6a + .4byte .LASF1526 + .byte 0x5 + .byte 0x6d + .4byte .LASF1527 + .byte 0x5 + .byte 0x71 + .4byte .LASF1528 + .byte 0x5 + .byte 0x72 + .4byte .LASF1529 + .byte 0x5 + .byte 0x73 + .4byte .LASF1530 + .byte 0x5 + .byte 0x74 + .4byte .LASF1531 + .byte 0x5 + .byte 0x75 + .4byte .LASF1532 + .byte 0x5 + .byte 0x76 + .4byte .LASF1533 + .byte 0x5 + .byte 0x77 + .4byte .LASF1534 + .byte 0x5 + .byte 0x78 + .4byte .LASF1535 + .byte 0x5 + .byte 0x7b + .4byte .LASF1536 + .byte 0x5 + .byte 0x7c + .4byte .LASF1537 + .byte 0x5 + .byte 0x7d + .4byte .LASF1538 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1539 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1540 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1541 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1542 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1543 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1544 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1545 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1546 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1547 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1548 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1549 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1550 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF1551 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1552 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1553 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1554 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1555 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1556 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF1557 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF1558 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1559 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1560 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF1561 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1562 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1563 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF1564 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF1565 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF1566 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1567 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1568 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF1569 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF1570 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1571 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1572 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF1573 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF1574 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1575 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1576 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF1577 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF1578 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF1579 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1580 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF1581 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF1582 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1583 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1584 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF1585 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF1586 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF1587 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1588 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1589 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF1590 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF1591 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF1592 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF1593 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF1594 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF1595 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF1596 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1597 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1598 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_gpio.h.37.1c15e50fe61c140e18cbdcae4553472f,comdat +.Ldebug_macro20: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1599 + .byte 0x5 + .byte 0x2a + .4byte .LASF1600 + .byte 0x5 + .byte 0x2b + .4byte .LASF1601 + .byte 0x5 + .byte 0x2c + .4byte .LASF1602 + .byte 0x5 + .byte 0x2d + .4byte .LASF1603 + .byte 0x5 + .byte 0x2e + .4byte .LASF1604 + .byte 0x5 + .byte 0x31 + .4byte .LASF1605 + .byte 0x5 + .byte 0x36 + .4byte .LASF1606 + .byte 0x5 + .byte 0x37 + .4byte .LASF1607 + .byte 0x5 + .byte 0x38 + .4byte .LASF1608 + .byte 0x5 + .byte 0x39 + .4byte .LASF1609 + .byte 0x5 + .byte 0x3a + .4byte .LASF1610 + .byte 0x5 + .byte 0x3b + .4byte .LASF1611 + .byte 0x5 + .byte 0x3c + .4byte .LASF1612 + .byte 0x5 + .byte 0x3f + .4byte .LASF1613 + .byte 0x5 + .byte 0x40 + .4byte .LASF1614 + .byte 0x5 + .byte 0x41 + .4byte .LASF1615 + .byte 0x5 + .byte 0x42 + .4byte .LASF1616 + .byte 0x5 + .byte 0x43 + .4byte .LASF1617 + .byte 0x5 + .byte 0x44 + .4byte .LASF1618 + .byte 0x5 + .byte 0x45 + .4byte .LASF1619 + .byte 0x5 + .byte 0x49 + .4byte .LASF1620 + .byte 0x5 + .byte 0x4a + .4byte .LASF1621 + .byte 0x5 + .byte 0x4b + .4byte .LASF1622 + .byte 0x5 + .byte 0x4c + .4byte .LASF1623 + .byte 0x5 + .byte 0x4d + .4byte .LASF1624 + .byte 0x5 + .byte 0x4e + .4byte .LASF1625 + .byte 0x5 + .byte 0x4f + .4byte .LASF1626 + .byte 0x5 + .byte 0x50 + .4byte .LASF1627 + .byte 0x5 + .byte 0x51 + .4byte .LASF1628 + .byte 0x5 + .byte 0x52 + .4byte .LASF1629 + .byte 0x5 + .byte 0x53 + .4byte .LASF1630 + .byte 0x5 + .byte 0x54 + .4byte .LASF1631 + .byte 0x5 + .byte 0x55 + .4byte .LASF1632 + .byte 0x5 + .byte 0x56 + .4byte .LASF1633 + .byte 0x5 + .byte 0x57 + .4byte .LASF1634 + .byte 0x5 + .byte 0x58 + .4byte .LASF1635 + .byte 0x5 + .byte 0x5b + .4byte .LASF1636 + .byte 0x5 + .byte 0x5c + .4byte .LASF1637 + .byte 0x5 + .byte 0x5d + .4byte .LASF1638 + .byte 0x5 + .byte 0x5e + .4byte .LASF1639 + .byte 0x5 + .byte 0x5f + .4byte .LASF1640 + .byte 0x5 + .byte 0x60 + .4byte .LASF1641 + .byte 0x5 + .byte 0x61 + .4byte .LASF1642 + .byte 0x5 + .byte 0x62 + .4byte .LASF1643 + .byte 0x5 + .byte 0x63 + .4byte .LASF1644 + .byte 0x5 + .byte 0x64 + .4byte .LASF1645 + .byte 0x5 + .byte 0x65 + .4byte .LASF1646 + .byte 0x5 + .byte 0x66 + .4byte .LASF1647 + .byte 0x5 + .byte 0x67 + .4byte .LASF1648 + .byte 0x5 + .byte 0x68 + .4byte .LASF1649 + .byte 0x5 + .byte 0x69 + .4byte .LASF1650 + .byte 0x5 + .byte 0x6a + .4byte .LASF1651 + .byte 0x5 + .byte 0x6d + .4byte .LASF1652 + .byte 0x5 + .byte 0x6e + .4byte .LASF1653 + .byte 0x5 + .byte 0x6f + .4byte .LASF1654 + .byte 0x5 + .byte 0x70 + .4byte .LASF1655 + .byte 0x5 + .byte 0x71 + .4byte .LASF1656 + .byte 0x5 + .byte 0x72 + .4byte .LASF1657 + .byte 0x5 + .byte 0x73 + .4byte .LASF1658 + .byte 0x5 + .byte 0x74 + .4byte .LASF1659 + .byte 0x5 + .byte 0x75 + .4byte .LASF1660 + .byte 0x5 + .byte 0x76 + .4byte .LASF1661 + .byte 0x5 + .byte 0x77 + .4byte .LASF1662 + .byte 0x5 + .byte 0x78 + .4byte .LASF1663 + .byte 0x5 + .byte 0x79 + .4byte .LASF1664 + .byte 0x5 + .byte 0x7a + .4byte .LASF1665 + .byte 0x5 + .byte 0x7b + .4byte .LASF1666 + .byte 0x5 + .byte 0x7c + .4byte .LASF1667 + .byte 0x5 + .byte 0x7f + .4byte .LASF1668 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF1669 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF1670 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF1671 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF1672 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF1673 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1674 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1675 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF1676 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF1677 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF1678 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1679 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1680 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF1681 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF1682 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1683 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF1684 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF1685 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF1686 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF1687 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1688 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF1689 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF1690 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1691 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1692 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1693 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1694 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF1695 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF1696 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1697 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1698 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1699 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1700 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1701 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1702 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF1703 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF1704 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1705 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1706 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1707 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1708 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1709 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF1710 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1711 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1712 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1713 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1714 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1715 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF1716 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1717 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1718 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1719 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF1720 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF1721 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF1722 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1723 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF1724 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF1725 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1726 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1727 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF1728 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF1729 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1730 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1731 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF1732 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF1733 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF1734 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF1735 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1736 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF1737 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF1738 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1739 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF1740 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF1741 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF1742 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF1743 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1744 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1745 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF1746 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF1747 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1748 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF1749 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1750 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1751 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1752 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1753 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF1754 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF1755 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1756 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1757 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF1758 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF1759 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF1760 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1761 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF1762 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF1763 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1764 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1765 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF1766 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1767 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1768 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF1769 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF1770 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF1771 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF1772 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF1773 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF1774 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF1775 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1776 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1777 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF1778 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF1779 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF1780 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF1781 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF1782 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF1783 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF1784 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF1785 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF1786 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF1787 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF1788 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF1789 + .byte 0x5 + .byte 0x94,0x2 + .4byte .LASF1790 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF1791 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF1792 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF1793 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF1794 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF1795 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF1796 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF1797 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF1798 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF1799 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF1800 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF1801 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF1802 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF1803 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF1804 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF1805 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF1806 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF1807 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF1808 + .byte 0x5 + .byte 0xaf,0x2 + .4byte .LASF1809 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF1810 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF1811 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF1812 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF1813 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF1814 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF1815 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF1816 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF1817 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF1818 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF1819 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF1820 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF1821 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF1822 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF1823 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF1824 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF1825 + .byte 0x5 + .byte 0xc2,0x2 + .4byte .LASF1826 + .byte 0x5 + .byte 0xc3,0x2 + .4byte .LASF1827 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF1828 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF1829 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF1830 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF1831 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF1832 + .byte 0x5 + .byte 0xc9,0x2 + .4byte .LASF1833 + .byte 0x5 + .byte 0xca,0x2 + .4byte .LASF1834 + .byte 0x5 + .byte 0xcb,0x2 + .4byte .LASF1835 + .byte 0x5 + .byte 0xcc,0x2 + .4byte .LASF1836 + .byte 0x5 + .byte 0xcd,0x2 + .4byte .LASF1837 + .byte 0x5 + .byte 0xce,0x2 + .4byte .LASF1838 + .byte 0x5 + .byte 0xd1,0x2 + .4byte .LASF1839 + .byte 0x5 + .byte 0xd2,0x2 + .4byte .LASF1840 + .byte 0x5 + .byte 0xd3,0x2 + .4byte .LASF1841 + .byte 0x5 + .byte 0xd4,0x2 + .4byte .LASF1842 + .byte 0x5 + .byte 0xd5,0x2 + .4byte .LASF1843 + .byte 0x5 + .byte 0xd6,0x2 + .4byte .LASF1844 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF1845 + .byte 0x5 + .byte 0xd8,0x2 + .4byte .LASF1846 + .byte 0x5 + .byte 0xd9,0x2 + .4byte .LASF1847 + .byte 0x5 + .byte 0xda,0x2 + .4byte .LASF1848 + .byte 0x5 + .byte 0xdb,0x2 + .4byte .LASF1849 + .byte 0x5 + .byte 0xdc,0x2 + .4byte .LASF1850 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF1851 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF1852 + .byte 0x5 + .byte 0xdf,0x2 + .4byte .LASF1853 + .byte 0x5 + .byte 0xe0,0x2 + .4byte .LASF1854 + .byte 0x5 + .byte 0xe1,0x2 + .4byte .LASF1855 + .byte 0x5 + .byte 0xe4,0x2 + .4byte .LASF1856 + .byte 0x5 + .byte 0xe5,0x2 + .4byte .LASF1857 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF1858 + .byte 0x5 + .byte 0xe7,0x2 + .4byte .LASF1859 + .byte 0x5 + .byte 0xe8,0x2 + .4byte .LASF1860 + .byte 0x5 + .byte 0xe9,0x2 + .4byte .LASF1861 + .byte 0x5 + .byte 0xea,0x2 + .4byte .LASF1862 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF1863 + .byte 0x5 + .byte 0xec,0x2 + .4byte .LASF1864 + .byte 0x5 + .byte 0xed,0x2 + .4byte .LASF1865 + .byte 0x5 + .byte 0xee,0x2 + .4byte .LASF1866 + .byte 0x5 + .byte 0xef,0x2 + .4byte .LASF1867 + .byte 0x5 + .byte 0xf0,0x2 + .4byte .LASF1868 + .byte 0x5 + .byte 0xf1,0x2 + .4byte .LASF1869 + .byte 0x5 + .byte 0xf2,0x2 + .4byte .LASF1870 + .byte 0x5 + .byte 0xf3,0x2 + .4byte .LASF1871 + .byte 0x5 + .byte 0xf4,0x2 + .4byte .LASF1872 + .byte 0x5 + .byte 0xf5,0x2 + .4byte .LASF1873 + .byte 0x5 + .byte 0xf6,0x2 + .4byte .LASF1874 + .byte 0x5 + .byte 0xf7,0x2 + .4byte .LASF1875 + .byte 0x5 + .byte 0xf8,0x2 + .4byte .LASF1876 + .byte 0x5 + .byte 0xf9,0x2 + .4byte .LASF1877 + .byte 0x5 + .byte 0xfa,0x2 + .4byte .LASF1878 + .byte 0x5 + .byte 0xfb,0x2 + .4byte .LASF1879 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_i2c.h.37.9d7fb50529db8c5d4a0b10c3b5a1de79,comdat +.Ldebug_macro21: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1880 + .byte 0x5 + .byte 0x2a + .4byte .LASF1881 + .byte 0x5 + .byte 0x2b + .4byte .LASF1882 + .byte 0x5 + .byte 0x2e + .4byte .LASF1883 + .byte 0x5 + .byte 0x2f + .4byte .LASF1884 + .byte 0x5 + .byte 0x30 + .4byte .LASF1885 + .byte 0x5 + .byte 0x31 + .4byte .LASF1886 + .byte 0x5 + .byte 0x32 + .4byte .LASF1887 + .byte 0x5 + .byte 0x33 + .4byte .LASF1888 + .byte 0x5 + .byte 0x34 + .4byte .LASF1889 + .byte 0x5 + .byte 0x35 + .4byte .LASF1890 + .byte 0x5 + .byte 0x36 + .4byte .LASF1891 + .byte 0x5 + .byte 0x37 + .4byte .LASF1892 + .byte 0x5 + .byte 0x3a + .4byte .LASF1893 + .byte 0x5 + .byte 0x3b + .4byte .LASF1894 + .byte 0x5 + .byte 0x3c + .4byte .LASF1895 + .byte 0x5 + .byte 0x3d + .4byte .LASF1896 + .byte 0x5 + .byte 0x3e + .4byte .LASF1897 + .byte 0x5 + .byte 0x3f + .4byte .LASF1898 + .byte 0x5 + .byte 0x40 + .4byte .LASF1899 + .byte 0x5 + .byte 0x41 + .4byte .LASF1900 + .byte 0x5 + .byte 0x42 + .4byte .LASF1901 + .byte 0x5 + .byte 0x43 + .4byte .LASF1902 + .byte 0x5 + .byte 0x44 + .4byte .LASF1903 + .byte 0x5 + .byte 0x45 + .4byte .LASF1904 + .byte 0x5 + .byte 0x46 + .4byte .LASF1905 + .byte 0x5 + .byte 0x47 + .4byte .LASF1906 + .byte 0x5 + .byte 0x4a + .4byte .LASF1907 + .byte 0x5 + .byte 0x4b + .4byte .LASF1908 + .byte 0x5 + .byte 0x4c + .4byte .LASF1909 + .byte 0x5 + .byte 0x4d + .4byte .LASF1910 + .byte 0x5 + .byte 0x4e + .4byte .LASF1911 + .byte 0x5 + .byte 0x4f + .4byte .LASF1912 + .byte 0x5 + .byte 0x52 + .4byte .LASF1913 + .byte 0x5 + .byte 0x53 + .4byte .LASF1914 + .byte 0x5 + .byte 0x54 + .4byte .LASF1915 + .byte 0x5 + .byte 0x55 + .4byte .LASF1916 + .byte 0x5 + .byte 0x58 + .4byte .LASF1917 + .byte 0x5 + .byte 0x59 + .4byte .LASF1918 + .byte 0x5 + .byte 0x5c + .4byte .LASF1919 + .byte 0x5 + .byte 0x5f + .4byte .LASF1920 + .byte 0x5 + .byte 0x60 + .4byte .LASF1921 + .byte 0x5 + .byte 0x61 + .4byte .LASF1922 + .byte 0x5 + .byte 0x62 + .4byte .LASF1923 + .byte 0x5 + .byte 0x63 + .4byte .LASF1924 + .byte 0x5 + .byte 0x64 + .4byte .LASF1925 + .byte 0x5 + .byte 0x65 + .4byte .LASF1926 + .byte 0x5 + .byte 0x66 + .4byte .LASF1927 + .byte 0x5 + .byte 0x67 + .4byte .LASF1928 + .byte 0x5 + .byte 0x68 + .4byte .LASF1929 + .byte 0x5 + .byte 0x69 + .4byte .LASF1930 + .byte 0x5 + .byte 0x6a + .4byte .LASF1931 + .byte 0x5 + .byte 0x6b + .4byte .LASF1932 + .byte 0x5 + .byte 0x6c + .4byte .LASF1933 + .byte 0x5 + .byte 0x6f + .4byte .LASF1934 + .byte 0x5 + .byte 0x70 + .4byte .LASF1935 + .byte 0x5 + .byte 0x71 + .4byte .LASF1936 + .byte 0x5 + .byte 0x72 + .4byte .LASF1937 + .byte 0x5 + .byte 0x73 + .4byte .LASF1938 + .byte 0x5 + .byte 0x74 + .4byte .LASF1939 + .byte 0x5 + .byte 0x75 + .4byte .LASF1940 + .byte 0x5 + .byte 0x76 + .4byte .LASF1941 + .byte 0x5 + .byte 0x79 + .4byte .LASF1942 + .byte 0x5 + .byte 0x7a + .4byte .LASF1943 + .byte 0x5 + .byte 0x7b + .4byte .LASF1944 + .byte 0x5 + .byte 0x7e + .4byte .LASF1945 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF1946 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1947 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1948 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF1949 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF1950 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1951 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1952 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1953 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1954 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1955 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1956 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF1957 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF1958 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF1959 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1960 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1961 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1962 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF1963 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1964 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1965 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1966 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1967 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1968 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1969 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF1970 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1971 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1972 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1973 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1974 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1975 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF1976 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF1977 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF1978 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF1979 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1980 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1981 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF1982 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF1983 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF1984 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF1985 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF1986 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF1987 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF1988 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF1989 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF1990 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF1991 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_fwdgt.h.37.ec91e2ec679929e46ec494cd499250b4,comdat +.Ldebug_macro22: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1992 + .byte 0x5 + .byte 0x2a + .4byte .LASF1993 + .byte 0x5 + .byte 0x2d + .4byte .LASF1994 + .byte 0x5 + .byte 0x2e + .4byte .LASF1995 + .byte 0x5 + .byte 0x2f + .4byte .LASF1996 + .byte 0x5 + .byte 0x30 + .4byte .LASF1997 + .byte 0x5 + .byte 0x34 + .4byte .LASF1998 + .byte 0x5 + .byte 0x37 + .4byte .LASF1999 + .byte 0x5 + .byte 0x3a + .4byte .LASF2000 + .byte 0x5 + .byte 0x3d + .4byte .LASF2001 + .byte 0x5 + .byte 0x3e + .4byte .LASF2002 + .byte 0x5 + .byte 0x42 + .4byte .LASF2003 + .byte 0x5 + .byte 0x43 + .4byte .LASF2004 + .byte 0x5 + .byte 0x44 + .4byte .LASF2005 + .byte 0x5 + .byte 0x45 + .4byte .LASF2006 + .byte 0x5 + .byte 0x46 + .4byte .LASF2007 + .byte 0x5 + .byte 0x47 + .4byte .LASF2008 + .byte 0x5 + .byte 0x48 + .4byte .LASF2009 + .byte 0x5 + .byte 0x49 + .4byte .LASF2010 + .byte 0x5 + .byte 0x4c + .4byte .LASF2011 + .byte 0x5 + .byte 0x4d + .4byte .LASF2012 + .byte 0x5 + .byte 0x4e + .4byte .LASF2013 + .byte 0x5 + .byte 0x4f + .4byte .LASF2014 + .byte 0x5 + .byte 0x52 + .4byte .LASF2015 + .byte 0x5 + .byte 0x53 + .4byte .LASF2016 + .byte 0x5 + .byte 0x56 + .4byte .LASF2017 + .byte 0x5 + .byte 0x57 + .4byte .LASF2018 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dbg.h.37.c757ea48294705efe800a8cbb43f6f24,comdat +.Ldebug_macro23: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2019 + .byte 0x5 + .byte 0x2a + .4byte .LASF2020 + .byte 0x5 + .byte 0x2d + .4byte .LASF2021 + .byte 0x5 + .byte 0x2e + .4byte .LASF2022 + .byte 0x5 + .byte 0x32 + .4byte .LASF2023 + .byte 0x5 + .byte 0x35 + .4byte .LASF2024 + .byte 0x5 + .byte 0x36 + .4byte .LASF2025 + .byte 0x5 + .byte 0x37 + .4byte .LASF2026 + .byte 0x5 + .byte 0x38 + .4byte .LASF2027 + .byte 0x5 + .byte 0x39 + .4byte .LASF2028 + .byte 0x5 + .byte 0x3a + .4byte .LASF2029 + .byte 0x5 + .byte 0x3b + .4byte .LASF2030 + .byte 0x5 + .byte 0x3c + .4byte .LASF2031 + .byte 0x5 + .byte 0x3d + .4byte .LASF2032 + .byte 0x5 + .byte 0x3e + .4byte .LASF2033 + .byte 0x5 + .byte 0x3f + .4byte .LASF2034 + .byte 0x5 + .byte 0x40 + .4byte .LASF2035 + .byte 0x5 + .byte 0x41 + .4byte .LASF2036 + .byte 0x5 + .byte 0x42 + .4byte .LASF2037 + .byte 0x5 + .byte 0x43 + .4byte .LASF2038 + .byte 0x5 + .byte 0x44 + .4byte .LASF2039 + .byte 0x5 + .byte 0x5a + .4byte .LASF2040 + .byte 0x5 + .byte 0x5b + .4byte .LASF2041 + .byte 0x5 + .byte 0x5c + .4byte .LASF2042 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_pmu.h.37.edf842f53f3092f282c7bccaf9512833,comdat +.Ldebug_macro24: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2043 + .byte 0x5 + .byte 0x2a + .4byte .LASF2044 + .byte 0x5 + .byte 0x2d + .4byte .LASF2045 + .byte 0x5 + .byte 0x2e + .4byte .LASF2046 + .byte 0x5 + .byte 0x32 + .4byte .LASF2047 + .byte 0x5 + .byte 0x33 + .4byte .LASF2048 + .byte 0x5 + .byte 0x34 + .4byte .LASF2049 + .byte 0x5 + .byte 0x35 + .4byte .LASF2050 + .byte 0x5 + .byte 0x36 + .4byte .LASF2051 + .byte 0x5 + .byte 0x37 + .4byte .LASF2052 + .byte 0x5 + .byte 0x38 + .4byte .LASF2053 + .byte 0x5 + .byte 0x3b + .4byte .LASF2054 + .byte 0x5 + .byte 0x3c + .4byte .LASF2055 + .byte 0x5 + .byte 0x3d + .4byte .LASF2056 + .byte 0x5 + .byte 0x3e + .4byte .LASF2057 + .byte 0x5 + .byte 0x42 + .4byte .LASF2058 + .byte 0x5 + .byte 0x43 + .4byte .LASF2059 + .byte 0x5 + .byte 0x44 + .4byte .LASF2060 + .byte 0x5 + .byte 0x45 + .4byte .LASF2061 + .byte 0x5 + .byte 0x46 + .4byte .LASF2062 + .byte 0x5 + .byte 0x47 + .4byte .LASF2063 + .byte 0x5 + .byte 0x48 + .4byte .LASF2064 + .byte 0x5 + .byte 0x49 + .4byte .LASF2065 + .byte 0x5 + .byte 0x4a + .4byte .LASF2066 + .byte 0x5 + .byte 0x4d + .4byte .LASF2067 + .byte 0x5 + .byte 0x4e + .4byte .LASF2068 + .byte 0x5 + .byte 0x4f + .4byte .LASF2069 + .byte 0x5 + .byte 0x52 + .4byte .LASF2070 + .byte 0x5 + .byte 0x53 + .4byte .LASF2071 + .byte 0x5 + .byte 0x56 + .4byte .LASF2072 + .byte 0x5 + .byte 0x57 + .4byte .LASF2073 + .byte 0x5 + .byte 0x5a + .4byte .LASF2074 + .byte 0x5 + .byte 0x5b + .4byte .LASF2075 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_rtc.h.37.3521dc979060c1ebaf2d43fd52b94dac,comdat +.Ldebug_macro25: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2076 + .byte 0x5 + .byte 0x2a + .4byte .LASF2077 + .byte 0x5 + .byte 0x2d + .4byte .LASF2078 + .byte 0x5 + .byte 0x2e + .4byte .LASF2079 + .byte 0x5 + .byte 0x2f + .4byte .LASF2080 + .byte 0x5 + .byte 0x30 + .4byte .LASF2081 + .byte 0x5 + .byte 0x31 + .4byte .LASF2082 + .byte 0x5 + .byte 0x32 + .4byte .LASF2083 + .byte 0x5 + .byte 0x33 + .4byte .LASF2084 + .byte 0x5 + .byte 0x34 + .4byte .LASF2085 + .byte 0x5 + .byte 0x35 + .4byte .LASF2086 + .byte 0x5 + .byte 0x36 + .4byte .LASF2087 + .byte 0x5 + .byte 0x3a + .4byte .LASF2088 + .byte 0x5 + .byte 0x3b + .4byte .LASF2089 + .byte 0x5 + .byte 0x3c + .4byte .LASF2090 + .byte 0x5 + .byte 0x3f + .4byte .LASF2091 + .byte 0x5 + .byte 0x40 + .4byte .LASF2092 + .byte 0x5 + .byte 0x41 + .4byte .LASF2093 + .byte 0x5 + .byte 0x42 + .4byte .LASF2094 + .byte 0x5 + .byte 0x43 + .4byte .LASF2095 + .byte 0x5 + .byte 0x44 + .4byte .LASF2096 + .byte 0x5 + .byte 0x47 + .4byte .LASF2097 + .byte 0x5 + .byte 0x4a + .4byte .LASF2098 + .byte 0x5 + .byte 0x4d + .4byte .LASF2099 + .byte 0x5 + .byte 0x50 + .4byte .LASF2100 + .byte 0x5 + .byte 0x53 + .4byte .LASF2101 + .byte 0x5 + .byte 0x56 + .4byte .LASF2102 + .byte 0x5 + .byte 0x59 + .4byte .LASF2103 + .byte 0x5 + .byte 0x5c + .4byte .LASF2104 + .byte 0x5 + .byte 0x60 + .4byte .LASF2105 + .byte 0x5 + .byte 0x61 + .4byte .LASF2106 + .byte 0x5 + .byte 0x62 + .4byte .LASF2107 + .byte 0x5 + .byte 0x65 + .4byte .LASF2108 + .byte 0x5 + .byte 0x66 + .4byte .LASF2109 + .byte 0x5 + .byte 0x67 + .4byte .LASF2110 + .byte 0x5 + .byte 0x6a + .4byte .LASF2111 + .byte 0x5 + .byte 0x6b + .4byte .LASF2112 + .byte 0x5 + .byte 0x6c + .4byte .LASF2113 + .byte 0x5 + .byte 0x6d + .4byte .LASF2114 + .byte 0x5 + .byte 0x6e + .4byte .LASF2115 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_spi.h.37.5b2da83109360bb35c1791b7dcc5009b,comdat +.Ldebug_macro26: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2116 + .byte 0x5 + .byte 0x2a + .4byte .LASF2117 + .byte 0x5 + .byte 0x2b + .4byte .LASF2118 + .byte 0x5 + .byte 0x2c + .4byte .LASF2119 + .byte 0x5 + .byte 0x2f + .4byte .LASF2120 + .byte 0x5 + .byte 0x30 + .4byte .LASF2121 + .byte 0x5 + .byte 0x31 + .4byte .LASF2122 + .byte 0x5 + .byte 0x32 + .4byte .LASF2123 + .byte 0x5 + .byte 0x33 + .4byte .LASF2124 + .byte 0x5 + .byte 0x34 + .4byte .LASF2125 + .byte 0x5 + .byte 0x35 + .4byte .LASF2126 + .byte 0x5 + .byte 0x36 + .4byte .LASF2127 + .byte 0x5 + .byte 0x37 + .4byte .LASF2128 + .byte 0x5 + .byte 0x3b + .4byte .LASF2129 + .byte 0x5 + .byte 0x3c + .4byte .LASF2130 + .byte 0x5 + .byte 0x3d + .4byte .LASF2131 + .byte 0x5 + .byte 0x3e + .4byte .LASF2132 + .byte 0x5 + .byte 0x3f + .4byte .LASF2133 + .byte 0x5 + .byte 0x40 + .4byte .LASF2134 + .byte 0x5 + .byte 0x41 + .4byte .LASF2135 + .byte 0x5 + .byte 0x42 + .4byte .LASF2136 + .byte 0x5 + .byte 0x43 + .4byte .LASF2137 + .byte 0x5 + .byte 0x44 + .4byte .LASF2138 + .byte 0x5 + .byte 0x45 + .4byte .LASF2139 + .byte 0x5 + .byte 0x46 + .4byte .LASF2140 + .byte 0x5 + .byte 0x47 + .4byte .LASF2141 + .byte 0x5 + .byte 0x48 + .4byte .LASF2142 + .byte 0x5 + .byte 0x4b + .4byte .LASF2143 + .byte 0x5 + .byte 0x4c + .4byte .LASF2144 + .byte 0x5 + .byte 0x4d + .4byte .LASF2145 + .byte 0x5 + .byte 0x4e + .4byte .LASF2146 + .byte 0x5 + .byte 0x4f + .4byte .LASF2147 + .byte 0x5 + .byte 0x50 + .4byte .LASF2148 + .byte 0x5 + .byte 0x51 + .4byte .LASF2149 + .byte 0x5 + .byte 0x52 + .4byte .LASF2150 + .byte 0x5 + .byte 0x55 + .4byte .LASF2151 + .byte 0x5 + .byte 0x56 + .4byte .LASF2152 + .byte 0x5 + .byte 0x57 + .4byte .LASF2153 + .byte 0x5 + .byte 0x58 + .4byte .LASF2154 + .byte 0x5 + .byte 0x59 + .4byte .LASF2155 + .byte 0x5 + .byte 0x5a + .4byte .LASF2156 + .byte 0x5 + .byte 0x5b + .4byte .LASF2157 + .byte 0x5 + .byte 0x5c + .4byte .LASF2158 + .byte 0x5 + .byte 0x5d + .4byte .LASF2159 + .byte 0x5 + .byte 0x60 + .4byte .LASF2160 + .byte 0x5 + .byte 0x63 + .4byte .LASF2161 + .byte 0x5 + .byte 0x66 + .4byte .LASF2162 + .byte 0x5 + .byte 0x69 + .4byte .LASF2163 + .byte 0x5 + .byte 0x6c + .4byte .LASF2164 + .byte 0x5 + .byte 0x6d + .4byte .LASF2165 + .byte 0x5 + .byte 0x6e + .4byte .LASF2166 + .byte 0x5 + .byte 0x6f + .4byte .LASF2167 + .byte 0x5 + .byte 0x70 + .4byte .LASF2168 + .byte 0x5 + .byte 0x71 + .4byte .LASF2169 + .byte 0x5 + .byte 0x72 + .4byte .LASF2170 + .byte 0x5 + .byte 0x73 + .4byte .LASF2171 + .byte 0x5 + .byte 0x76 + .4byte .LASF2172 + .byte 0x5 + .byte 0x77 + .4byte .LASF2173 + .byte 0x5 + .byte 0x78 + .4byte .LASF2174 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF2175 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF2176 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2177 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2178 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF2179 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2180 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF2181 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF2182 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2183 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2184 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF2185 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2186 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2187 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF2188 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF2189 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF2190 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF2191 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF2192 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2193 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2194 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2195 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2196 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF2197 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF2198 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF2199 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF2200 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF2201 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF2202 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF2203 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2204 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF2205 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF2206 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2207 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2208 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2209 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2210 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2211 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2212 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2213 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2214 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2215 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF2216 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF2217 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF2218 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF2219 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2220 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF2221 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF2222 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF2223 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF2224 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF2225 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF2226 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2227 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF2228 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF2229 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF2230 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF2231 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF2232 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2233 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2234 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF2235 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF2236 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2237 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF2238 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2239 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2240 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF2241 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF2242 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF2243 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF2244 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF2245 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF2246 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF2247 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF2248 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF2249 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF2250 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF2251 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF2252 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF2253 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF2254 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF2255 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF2256 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF2257 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF2258 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_timer.h.37.41e31e3c41519d549a8819d7a508d7a5,comdat +.Ldebug_macro27: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2259 + .byte 0x5 + .byte 0x2a + .4byte .LASF2260 + .byte 0x5 + .byte 0x2b + .4byte .LASF2261 + .byte 0x5 + .byte 0x2c + .4byte .LASF2262 + .byte 0x5 + .byte 0x2d + .4byte .LASF2263 + .byte 0x5 + .byte 0x2e + .4byte .LASF2264 + .byte 0x5 + .byte 0x2f + .4byte .LASF2265 + .byte 0x5 + .byte 0x30 + .4byte .LASF2266 + .byte 0x5 + .byte 0x33 + .4byte .LASF2267 + .byte 0x5 + .byte 0x34 + .4byte .LASF2268 + .byte 0x5 + .byte 0x35 + .4byte .LASF2269 + .byte 0x5 + .byte 0x36 + .4byte .LASF2270 + .byte 0x5 + .byte 0x37 + .4byte .LASF2271 + .byte 0x5 + .byte 0x38 + .4byte .LASF2272 + .byte 0x5 + .byte 0x39 + .4byte .LASF2273 + .byte 0x5 + .byte 0x3a + .4byte .LASF2274 + .byte 0x5 + .byte 0x3b + .4byte .LASF2275 + .byte 0x5 + .byte 0x3c + .4byte .LASF2276 + .byte 0x5 + .byte 0x3d + .4byte .LASF2277 + .byte 0x5 + .byte 0x3e + .4byte .LASF2278 + .byte 0x5 + .byte 0x3f + .4byte .LASF2279 + .byte 0x5 + .byte 0x40 + .4byte .LASF2280 + .byte 0x5 + .byte 0x41 + .4byte .LASF2281 + .byte 0x5 + .byte 0x42 + .4byte .LASF2282 + .byte 0x5 + .byte 0x43 + .4byte .LASF2283 + .byte 0x5 + .byte 0x44 + .4byte .LASF2284 + .byte 0x5 + .byte 0x45 + .4byte .LASF2285 + .byte 0x5 + .byte 0x46 + .4byte .LASF2286 + .byte 0x5 + .byte 0x4a + .4byte .LASF2287 + .byte 0x5 + .byte 0x4b + .4byte .LASF2288 + .byte 0x5 + .byte 0x4c + .4byte .LASF2289 + .byte 0x5 + .byte 0x4d + .4byte .LASF2290 + .byte 0x5 + .byte 0x4e + .4byte .LASF2291 + .byte 0x5 + .byte 0x4f + .4byte .LASF2292 + .byte 0x5 + .byte 0x50 + .4byte .LASF2293 + .byte 0x5 + .byte 0x51 + .4byte .LASF2294 + .byte 0x5 + .byte 0x54 + .4byte .LASF2295 + .byte 0x5 + .byte 0x55 + .4byte .LASF2296 + .byte 0x5 + .byte 0x56 + .4byte .LASF2297 + .byte 0x5 + .byte 0x57 + .4byte .LASF2298 + .byte 0x5 + .byte 0x58 + .4byte .LASF2299 + .byte 0x5 + .byte 0x59 + .4byte .LASF2300 + .byte 0x5 + .byte 0x5a + .4byte .LASF2301 + .byte 0x5 + .byte 0x5b + .4byte .LASF2302 + .byte 0x5 + .byte 0x5c + .4byte .LASF2303 + .byte 0x5 + .byte 0x5d + .4byte .LASF2304 + .byte 0x5 + .byte 0x5e + .4byte .LASF2305 + .byte 0x5 + .byte 0x5f + .4byte .LASF2306 + .byte 0x5 + .byte 0x62 + .4byte .LASF2307 + .byte 0x5 + .byte 0x63 + .4byte .LASF2308 + .byte 0x5 + .byte 0x64 + .4byte .LASF2309 + .byte 0x5 + .byte 0x65 + .4byte .LASF2310 + .byte 0x5 + .byte 0x66 + .4byte .LASF2311 + .byte 0x5 + .byte 0x67 + .4byte .LASF2312 + .byte 0x5 + .byte 0x68 + .4byte .LASF2313 + .byte 0x5 + .byte 0x6b + .4byte .LASF2314 + .byte 0x5 + .byte 0x6c + .4byte .LASF2315 + .byte 0x5 + .byte 0x6d + .4byte .LASF2316 + .byte 0x5 + .byte 0x6e + .4byte .LASF2317 + .byte 0x5 + .byte 0x6f + .4byte .LASF2318 + .byte 0x5 + .byte 0x70 + .4byte .LASF2319 + .byte 0x5 + .byte 0x71 + .4byte .LASF2320 + .byte 0x5 + .byte 0x72 + .4byte .LASF2321 + .byte 0x5 + .byte 0x73 + .4byte .LASF2322 + .byte 0x5 + .byte 0x74 + .4byte .LASF2323 + .byte 0x5 + .byte 0x75 + .4byte .LASF2324 + .byte 0x5 + .byte 0x76 + .4byte .LASF2325 + .byte 0x5 + .byte 0x77 + .4byte .LASF2326 + .byte 0x5 + .byte 0x78 + .4byte .LASF2327 + .byte 0x5 + .byte 0x79 + .4byte .LASF2328 + .byte 0x5 + .byte 0x7c + .4byte .LASF2329 + .byte 0x5 + .byte 0x7d + .4byte .LASF2330 + .byte 0x5 + .byte 0x7e + .4byte .LASF2331 + .byte 0x5 + .byte 0x7f + .4byte .LASF2332 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF2333 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF2334 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF2335 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF2336 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF2337 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF2338 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF2339 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF2340 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF2341 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF2342 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2343 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2344 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF2345 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF2346 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF2347 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2348 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF2349 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2350 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2351 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF2352 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF2353 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF2354 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2355 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF2356 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF2357 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2358 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF2359 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF2360 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF2361 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF2362 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF2363 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2364 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2365 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2366 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2367 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF2368 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF2369 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF2370 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF2371 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF2372 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF2373 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF2374 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF2375 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2376 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2377 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2378 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2379 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2380 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF2381 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF2382 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2383 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2384 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2385 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2386 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2387 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF2388 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF2389 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF2390 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF2391 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2392 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF2393 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF2394 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2395 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF2396 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF2397 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF2398 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2399 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2400 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF2401 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF2402 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF2403 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF2404 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2405 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF2406 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2407 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2408 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF2409 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF2410 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF2411 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF2412 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF2413 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF2414 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF2415 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF2416 + .byte 0x5 + .byte 0xa4,0x2 + .4byte .LASF2417 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF2418 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF2419 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF2420 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF2421 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF2422 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF2423 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF2424 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF2425 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF2426 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF2427 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF2428 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF2429 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF2430 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF2431 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF2432 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF2433 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF2434 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF2435 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF2436 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF2437 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF2438 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF2439 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF2440 + .byte 0x5 + .byte 0xc2,0x2 + .4byte .LASF2441 + .byte 0x5 + .byte 0xc3,0x2 + .4byte .LASF2442 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF2443 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF2444 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF2445 + .byte 0x5 + .byte 0xc9,0x2 + .4byte .LASF2446 + .byte 0x5 + .byte 0xcc,0x2 + .4byte .LASF2447 + .byte 0x5 + .byte 0xcd,0x2 + .4byte .LASF2448 + .byte 0x5 + .byte 0xce,0x2 + .4byte .LASF2449 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF2450 + .byte 0x5 + .byte 0xd0,0x2 + .4byte .LASF2451 + .byte 0x5 + .byte 0xd1,0x2 + .4byte .LASF2452 + .byte 0x5 + .byte 0xd2,0x2 + .4byte .LASF2453 + .byte 0x5 + .byte 0xd3,0x2 + .4byte .LASF2454 + .byte 0x5 + .byte 0xd4,0x2 + .4byte .LASF2455 + .byte 0x5 + .byte 0xd5,0x2 + .4byte .LASF2456 + .byte 0x5 + .byte 0xd6,0x2 + .4byte .LASF2457 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF2458 + .byte 0x5 + .byte 0xd8,0x2 + .4byte .LASF2459 + .byte 0x5 + .byte 0xd9,0x2 + .4byte .LASF2460 + .byte 0x5 + .byte 0xda,0x2 + .4byte .LASF2461 + .byte 0x5 + .byte 0xdb,0x2 + .4byte .LASF2462 + .byte 0x5 + .byte 0xdc,0x2 + .4byte .LASF2463 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF2464 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF2465 + .byte 0x5 + .byte 0xdf,0x2 + .4byte .LASF2466 + .byte 0x5 + .byte 0xe2,0x2 + .4byte .LASF2467 + .byte 0x5 + .byte 0xe3,0x2 + .4byte .LASF2468 + .byte 0x5 + .byte 0xe4,0x2 + .4byte .LASF2469 + .byte 0x5 + .byte 0xe5,0x2 + .4byte .LASF2470 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF2471 + .byte 0x5 + .byte 0xe7,0x2 + .4byte .LASF2472 + .byte 0x5 + .byte 0xe8,0x2 + .4byte .LASF2473 + .byte 0x5 + .byte 0xe9,0x2 + .4byte .LASF2474 + .byte 0x5 + .byte 0xea,0x2 + .4byte .LASF2475 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF2476 + .byte 0x5 + .byte 0xec,0x2 + .4byte .LASF2477 + .byte 0x5 + .byte 0xed,0x2 + .4byte .LASF2478 + .byte 0x5 + .byte 0xee,0x2 + .4byte .LASF2479 + .byte 0x5 + .byte 0xef,0x2 + .4byte .LASF2480 + .byte 0x5 + .byte 0xf0,0x2 + .4byte .LASF2481 + .byte 0x5 + .byte 0xf1,0x2 + .4byte .LASF2482 + .byte 0x5 + .byte 0xf2,0x2 + .4byte .LASF2483 + .byte 0x5 + .byte 0xf3,0x2 + .4byte .LASF2484 + .byte 0x5 + .byte 0xf4,0x2 + .4byte .LASF2485 + .byte 0x5 + .byte 0xf7,0x2 + .4byte .LASF2486 + .byte 0x5 + .byte 0xf8,0x2 + .4byte .LASF2487 + .byte 0x5 + .byte 0xf9,0x2 + .4byte .LASF2488 + .byte 0x5 + .byte 0xfa,0x2 + .4byte .LASF2489 + .byte 0x5 + .byte 0xfb,0x2 + .4byte .LASF2490 + .byte 0x5 + .byte 0xfc,0x2 + .4byte .LASF2491 + .byte 0x5 + .byte 0xfd,0x2 + .4byte .LASF2492 + .byte 0x5 + .byte 0xfe,0x2 + .4byte .LASF2493 + .byte 0x5 + .byte 0x81,0x3 + .4byte .LASF2494 + .byte 0x5 + .byte 0x82,0x3 + .4byte .LASF2495 + .byte 0x5 + .byte 0x83,0x3 + .4byte .LASF2496 + .byte 0x5 + .byte 0x84,0x3 + .4byte .LASF2497 + .byte 0x5 + .byte 0x85,0x3 + .4byte .LASF2498 + .byte 0x5 + .byte 0x88,0x3 + .4byte .LASF2499 + .byte 0x5 + .byte 0x89,0x3 + .4byte .LASF2500 + .byte 0x5 + .byte 0x8c,0x3 + .4byte .LASF2501 + .byte 0x5 + .byte 0x8d,0x3 + .4byte .LASF2502 + .byte 0x5 + .byte 0x90,0x3 + .4byte .LASF2503 + .byte 0x5 + .byte 0x91,0x3 + .4byte .LASF2504 + .byte 0x5 + .byte 0x92,0x3 + .4byte .LASF2505 + .byte 0x5 + .byte 0x93,0x3 + .4byte .LASF2506 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF2507 + .byte 0x5 + .byte 0x97,0x3 + .4byte .LASF2508 + .byte 0x5 + .byte 0x9a,0x3 + .4byte .LASF2509 + .byte 0x5 + .byte 0x9b,0x3 + .4byte .LASF2510 + .byte 0x5 + .byte 0x9e,0x3 + .4byte .LASF2511 + .byte 0x5 + .byte 0x9f,0x3 + .4byte .LASF2512 + .byte 0x5 + .byte 0xa3,0x3 + .4byte .LASF2513 + .byte 0x5 + .byte 0xa4,0x3 + .4byte .LASF2514 + .byte 0x5 + .byte 0xa7,0x3 + .4byte .LASF2515 + .byte 0x5 + .byte 0xa8,0x3 + .4byte .LASF2516 + .byte 0x5 + .byte 0xab,0x3 + .4byte .LASF2517 + .byte 0x5 + .byte 0xac,0x3 + .4byte .LASF2518 + .byte 0x5 + .byte 0xaf,0x3 + .4byte .LASF2519 + .byte 0x5 + .byte 0xb0,0x3 + .4byte .LASF2520 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF2521 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF2522 + .byte 0x5 + .byte 0xb3,0x3 + .4byte .LASF2523 + .byte 0x5 + .byte 0xb6,0x3 + .4byte .LASF2524 + .byte 0x5 + .byte 0xb7,0x3 + .4byte .LASF2525 + .byte 0x5 + .byte 0xba,0x3 + .4byte .LASF2526 + .byte 0x5 + .byte 0xbb,0x3 + .4byte .LASF2527 + .byte 0x5 + .byte 0xbc,0x3 + .4byte .LASF2528 + .byte 0x5 + .byte 0xbd,0x3 + .4byte .LASF2529 + .byte 0x5 + .byte 0xc0,0x3 + .4byte .LASF2530 + .byte 0x5 + .byte 0xc1,0x3 + .4byte .LASF2531 + .byte 0x5 + .byte 0xc4,0x3 + .4byte .LASF2532 + .byte 0x5 + .byte 0xc5,0x3 + .4byte .LASF2533 + .byte 0x5 + .byte 0xc8,0x3 + .4byte .LASF2534 + .byte 0x5 + .byte 0xc9,0x3 + .4byte .LASF2535 + .byte 0x5 + .byte 0xcc,0x3 + .4byte .LASF2536 + .byte 0x5 + .byte 0xcd,0x3 + .4byte .LASF2537 + .byte 0x5 + .byte 0xd0,0x3 + .4byte .LASF2538 + .byte 0x5 + .byte 0xd1,0x3 + .4byte .LASF2539 + .byte 0x5 + .byte 0xd4,0x3 + .4byte .LASF2540 + .byte 0x5 + .byte 0xd5,0x3 + .4byte .LASF2541 + .byte 0x5 + .byte 0xd8,0x3 + .4byte .LASF2542 + .byte 0x5 + .byte 0xd9,0x3 + .4byte .LASF2543 + .byte 0x5 + .byte 0xda,0x3 + .4byte .LASF2544 + .byte 0x5 + .byte 0xdb,0x3 + .4byte .LASF2545 + .byte 0x5 + .byte 0xdc,0x3 + .4byte .LASF2546 + .byte 0x5 + .byte 0xdd,0x3 + .4byte .LASF2547 + .byte 0x5 + .byte 0xde,0x3 + .4byte .LASF2548 + .byte 0x5 + .byte 0xdf,0x3 + .4byte .LASF2549 + .byte 0x5 + .byte 0xe2,0x3 + .4byte .LASF2550 + .byte 0x5 + .byte 0xe3,0x3 + .4byte .LASF2551 + .byte 0x5 + .byte 0xe6,0x3 + .4byte .LASF2552 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF2553 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF2554 + .byte 0x5 + .byte 0xeb,0x3 + .4byte .LASF2555 + .byte 0x5 + .byte 0xee,0x3 + .4byte .LASF2556 + .byte 0x5 + .byte 0xef,0x3 + .4byte .LASF2557 + .byte 0x5 + .byte 0xf2,0x3 + .4byte .LASF2558 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF2559 + .byte 0x5 + .byte 0xf4,0x3 + .4byte .LASF2560 + .byte 0x5 + .byte 0xf7,0x3 + .4byte .LASF2561 + .byte 0x5 + .byte 0xf8,0x3 + .4byte .LASF2562 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF2563 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF2564 + .byte 0x5 + .byte 0xfd,0x3 + .4byte .LASF2565 + .byte 0x5 + .byte 0xfe,0x3 + .4byte .LASF2566 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF2567 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF2568 + .byte 0x5 + .byte 0x83,0x4 + .4byte .LASF2569 + .byte 0x5 + .byte 0x84,0x4 + .4byte .LASF2570 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF2571 + .byte 0x5 + .byte 0x86,0x4 + .4byte .LASF2572 + .byte 0x5 + .byte 0x87,0x4 + .4byte .LASF2573 + .byte 0x5 + .byte 0x88,0x4 + .4byte .LASF2574 + .byte 0x5 + .byte 0x89,0x4 + .4byte .LASF2575 + .byte 0x5 + .byte 0x8a,0x4 + .4byte .LASF2576 + .byte 0x5 + .byte 0x8d,0x4 + .4byte .LASF2577 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF2578 + .byte 0x5 + .byte 0x8f,0x4 + .4byte .LASF2579 + .byte 0x5 + .byte 0x90,0x4 + .4byte .LASF2580 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF2581 + .byte 0x5 + .byte 0x92,0x4 + .4byte .LASF2582 + .byte 0x5 + .byte 0x93,0x4 + .4byte .LASF2583 + .byte 0x5 + .byte 0x94,0x4 + .4byte .LASF2584 + .byte 0x5 + .byte 0x95,0x4 + .4byte .LASF2585 + .byte 0x5 + .byte 0x98,0x4 + .4byte .LASF2586 + .byte 0x5 + .byte 0x99,0x4 + .4byte .LASF2587 + .byte 0x5 + .byte 0x9a,0x4 + .4byte .LASF2588 + .byte 0x5 + .byte 0x9b,0x4 + .4byte .LASF2589 + .byte 0x5 + .byte 0x9c,0x4 + .4byte .LASF2590 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF2591 + .byte 0x5 + .byte 0x9e,0x4 + .4byte .LASF2592 + .byte 0x5 + .byte 0x9f,0x4 + .4byte .LASF2593 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF2594 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF2595 + .byte 0x5 + .byte 0xa4,0x4 + .4byte .LASF2596 + .byte 0x5 + .byte 0xa7,0x4 + .4byte .LASF2597 + .byte 0x5 + .byte 0xa8,0x4 + .4byte .LASF2598 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF2599 + .byte 0x5 + .byte 0xaa,0x4 + .4byte .LASF2600 + .byte 0x5 + .byte 0xab,0x4 + .4byte .LASF2601 + .byte 0x5 + .byte 0xae,0x4 + .4byte .LASF2602 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF2603 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF2604 + .byte 0x5 + .byte 0xb3,0x4 + .4byte .LASF2605 + .byte 0x5 + .byte 0xb6,0x4 + .4byte .LASF2606 + .byte 0x5 + .byte 0xb7,0x4 + .4byte .LASF2607 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_usart.h.38.bd493dc3b9236603b2fca39bcddb0020,comdat +.Ldebug_macro28: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x26 + .4byte .LASF2608 + .byte 0x5 + .byte 0x2b + .4byte .LASF2609 + .byte 0x5 + .byte 0x2c + .4byte .LASF2610 + .byte 0x5 + .byte 0x2d + .4byte .LASF2611 + .byte 0x5 + .byte 0x2e + .4byte .LASF2612 + .byte 0x5 + .byte 0x2f + .4byte .LASF2613 + .byte 0x5 + .byte 0x32 + .4byte .LASF2614 + .byte 0x5 + .byte 0x33 + .4byte .LASF2615 + .byte 0x5 + .byte 0x34 + .4byte .LASF2616 + .byte 0x5 + .byte 0x35 + .4byte .LASF2617 + .byte 0x5 + .byte 0x36 + .4byte .LASF2618 + .byte 0x5 + .byte 0x37 + .4byte .LASF2619 + .byte 0x5 + .byte 0x38 + .4byte .LASF2620 + .byte 0x5 + .byte 0x3c + .4byte .LASF2621 + .byte 0x5 + .byte 0x3d + .4byte .LASF2622 + .byte 0x5 + .byte 0x3e + .4byte .LASF2623 + .byte 0x5 + .byte 0x3f + .4byte .LASF2624 + .byte 0x5 + .byte 0x40 + .4byte .LASF2625 + .byte 0x5 + .byte 0x41 + .4byte .LASF2626 + .byte 0x5 + .byte 0x42 + .4byte .LASF2627 + .byte 0x5 + .byte 0x43 + .4byte .LASF2628 + .byte 0x5 + .byte 0x44 + .4byte .LASF2629 + .byte 0x5 + .byte 0x45 + .4byte .LASF2630 + .byte 0x5 + .byte 0x48 + .4byte .LASF2631 + .byte 0x5 + .byte 0x4b + .4byte .LASF2632 + .byte 0x5 + .byte 0x4c + .4byte .LASF2633 + .byte 0x5 + .byte 0x4f + .4byte .LASF2634 + .byte 0x5 + .byte 0x50 + .4byte .LASF2635 + .byte 0x5 + .byte 0x51 + .4byte .LASF2636 + .byte 0x5 + .byte 0x52 + .4byte .LASF2637 + .byte 0x5 + .byte 0x53 + .4byte .LASF2638 + .byte 0x5 + .byte 0x54 + .4byte .LASF2639 + .byte 0x5 + .byte 0x55 + .4byte .LASF2640 + .byte 0x5 + .byte 0x56 + .4byte .LASF2641 + .byte 0x5 + .byte 0x57 + .4byte .LASF2642 + .byte 0x5 + .byte 0x58 + .4byte .LASF2643 + .byte 0x5 + .byte 0x59 + .4byte .LASF2644 + .byte 0x5 + .byte 0x5a + .4byte .LASF2645 + .byte 0x5 + .byte 0x5b + .4byte .LASF2646 + .byte 0x5 + .byte 0x5c + .4byte .LASF2647 + .byte 0x5 + .byte 0x5f + .4byte .LASF2648 + .byte 0x5 + .byte 0x60 + .4byte .LASF2649 + .byte 0x5 + .byte 0x61 + .4byte .LASF2650 + .byte 0x5 + .byte 0x62 + .4byte .LASF2651 + .byte 0x5 + .byte 0x63 + .4byte .LASF2652 + .byte 0x5 + .byte 0x64 + .4byte .LASF2653 + .byte 0x5 + .byte 0x65 + .4byte .LASF2654 + .byte 0x5 + .byte 0x66 + .4byte .LASF2655 + .byte 0x5 + .byte 0x67 + .4byte .LASF2656 + .byte 0x5 + .byte 0x6a + .4byte .LASF2657 + .byte 0x5 + .byte 0x6b + .4byte .LASF2658 + .byte 0x5 + .byte 0x6c + .4byte .LASF2659 + .byte 0x5 + .byte 0x6d + .4byte .LASF2660 + .byte 0x5 + .byte 0x6e + .4byte .LASF2661 + .byte 0x5 + .byte 0x6f + .4byte .LASF2662 + .byte 0x5 + .byte 0x70 + .4byte .LASF2663 + .byte 0x5 + .byte 0x71 + .4byte .LASF2664 + .byte 0x5 + .byte 0x72 + .4byte .LASF2665 + .byte 0x5 + .byte 0x73 + .4byte .LASF2666 + .byte 0x5 + .byte 0x74 + .4byte .LASF2667 + .byte 0x5 + .byte 0x77 + .4byte .LASF2668 + .byte 0x5 + .byte 0x78 + .4byte .LASF2669 + .byte 0x5 + .byte 0x7c + .4byte .LASF2670 + .byte 0x5 + .byte 0x7d + .4byte .LASF2671 + .byte 0x5 + .byte 0x7e + .4byte .LASF2672 + .byte 0x5 + .byte 0x7f + .4byte .LASF2673 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF2674 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF2675 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF2676 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF2677 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF2678 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF2679 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2680 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2681 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2682 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF2683 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF2684 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF2685 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF2686 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF2687 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF2688 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2689 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF2690 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF2691 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF2692 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF2693 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2694 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF2695 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF2696 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF2697 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF2698 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF2699 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF2700 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF2701 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2702 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2703 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF2704 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF2705 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2706 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF2707 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2708 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2709 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF2710 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF2711 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF2712 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF2713 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF2714 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF2715 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF2716 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF2717 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF2718 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF2719 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF2720 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF2721 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF2722 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF2723 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF2724 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF2725 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF2726 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF2727 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_wwdgt.h.37.3e64b838fd471007da900965463a8419,comdat +.Ldebug_macro29: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2728 + .byte 0x5 + .byte 0x2a + .4byte .LASF2729 + .byte 0x5 + .byte 0x2d + .4byte .LASF2730 + .byte 0x5 + .byte 0x2e + .4byte .LASF2731 + .byte 0x5 + .byte 0x2f + .4byte .LASF2732 + .byte 0x5 + .byte 0x33 + .4byte .LASF2733 + .byte 0x5 + .byte 0x34 + .4byte .LASF2734 + .byte 0x5 + .byte 0x37 + .4byte .LASF2735 + .byte 0x5 + .byte 0x38 + .4byte .LASF2736 + .byte 0x5 + .byte 0x39 + .4byte .LASF2737 + .byte 0x5 + .byte 0x3c + .4byte .LASF2738 + .byte 0x5 + .byte 0x3f + .4byte .LASF2739 + .byte 0x5 + .byte 0x40 + .4byte .LASF2740 + .byte 0x5 + .byte 0x41 + .4byte .LASF2741 + .byte 0x5 + .byte 0x42 + .4byte .LASF2742 + .byte 0x5 + .byte 0x43 + .4byte .LASF2743 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stddef.h.39.144cf5ddcd53cbfdac30259dc1a6c87f,comdat +.Ldebug_macro30: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF2745 + .byte 0x5 + .byte 0x28 + .4byte .LASF2746 + .byte 0x5 + .byte 0x2a + .4byte .LASF2747 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF2748 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF2749 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF2750 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF2751 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF2752 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF2753 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF2754 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF2755 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF2756 + .byte 0x6 + .byte 0x9b,0x1 + .4byte .LASF2757 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2758 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF2759 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF2760 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2761 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2762 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2763 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2764 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF2765 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF2766 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2767 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2768 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2769 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2770 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2771 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF2772 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF2773 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2774 + .byte 0x6 + .byte 0xe7,0x1 + .4byte .LASF2775 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF2776 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF2777 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF2778 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF2779 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF2780 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF2781 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF2782 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF2783 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF2784 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF2785 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF2786 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF2787 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF2788 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF2789 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF2790 + .byte 0x6 + .byte 0x9f,0x2 + .4byte .LASF2791 + .byte 0x6 + .byte 0xd4,0x2 + .4byte .LASF2792 + .byte 0x6 + .byte 0x86,0x3 + .4byte .LASF2793 + .byte 0x5 + .byte 0x8b,0x3 + .4byte .LASF2794 + .byte 0x6 + .byte 0x91,0x3 + .4byte .LASF2795 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF2796 + .byte 0x5 + .byte 0x9b,0x3 + .4byte .LASF2797 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_timer.h.4.7cbfcb0f457964ecd81bc2aaf47d8b32,comdat +.Ldebug_macro31: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4 + .4byte .LASF2798 + .byte 0x5 + .byte 0x6 + .4byte .LASF2799 + .byte 0x5 + .byte 0x7 + .4byte .LASF2800 + .byte 0x5 + .byte 0x8 + .4byte .LASF2801 + .byte 0x5 + .byte 0x9 + .4byte .LASF2802 + .byte 0x5 + .byte 0xa + .4byte .LASF2803 + .byte 0x5 + .byte 0xb + .4byte .LASF2804 + .byte 0x5 + .byte 0xd + .4byte .LASF2805 + .byte 0x5 + .byte 0xe + .4byte .LASF2806 + .byte 0x5 + .byte 0xf + .4byte .LASF2807 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.riscv_const.h.5.95ac0744d59bfc0d17f4e8adf85ccb42,comdat +.Ldebug_macro32: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x5 + .4byte .LASF2809 + .byte 0x5 + .byte 0xb + .4byte .LASF2810 + .byte 0x5 + .byte 0xc + .4byte .LASF2811 + .byte 0x5 + .byte 0xf + .4byte .LASF2812 + .byte 0x5 + .byte 0x10 + .4byte .LASF2813 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_eclic.h.8.88844f0cdf4d8e1ef4e06c0cb5147462,comdat +.Ldebug_macro33: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x8 + .4byte .LASF2814 + .byte 0x5 + .byte 0xd + .4byte .LASF2815 + .byte 0x5 + .byte 0xf + .4byte .LASF2816 + .byte 0x5 + .byte 0x11 + .4byte .LASF2817 + .byte 0x5 + .byte 0x14 + .4byte .LASF2818 + .byte 0x5 + .byte 0x16 + .4byte .LASF2819 + .byte 0x5 + .byte 0x18 + .4byte .LASF2820 + .byte 0x5 + .byte 0x1a + .4byte .LASF2821 + .byte 0x5 + .byte 0x1b + .4byte .LASF2822 + .byte 0x5 + .byte 0x1c + .4byte .LASF2823 + .byte 0x5 + .byte 0x1d + .4byte .LASF2824 + .byte 0x5 + .byte 0x1e + .4byte .LASF2825 + .byte 0x5 + .byte 0x21 + .4byte .LASF2826 + .byte 0x5 + .byte 0x23 + .4byte .LASF2827 + .byte 0x5 + .byte 0x26 + .4byte .LASF2828 + .byte 0x5 + .byte 0x27 + .4byte .LASF2829 + .byte 0x5 + .byte 0x29 + .4byte .LASF2830 + .byte 0x5 + .byte 0x2a + .4byte .LASF2831 + .byte 0x5 + .byte 0x2b + .4byte .LASF2832 + .byte 0x5 + .byte 0x2c + .4byte .LASF2833 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_func.h.11.5e6cb65336aea242ab47b239a06795e1,comdat +.Ldebug_macro34: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xb + .4byte .LASF2834 + .byte 0x5 + .byte 0xc + .4byte .LASF2835 + .byte 0x5 + .byte 0xd + .4byte .LASF2836 + .byte 0x5 + .byte 0xe + .4byte .LASF2837 + .byte 0x5 + .byte 0xf + .4byte .LASF2838 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_rcu.h.42.bd9ae9b75aa7104f9af29b88d3470990,comdat +.Ldebug_macro35: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x2a + .4byte .LASF2839 + .byte 0x5 + .byte 0x2e + .4byte .LASF2840 + .byte 0x5 + .byte 0x2f + .4byte .LASF2841 + .byte 0x5 + .byte 0x30 + .4byte .LASF2842 + .byte 0x5 + .byte 0x31 + .4byte .LASF2843 + .byte 0x5 + .byte 0x32 + .4byte .LASF2844 + .byte 0x5 + .byte 0x33 + .4byte .LASF2845 + .byte 0x5 + .byte 0x34 + .4byte .LASF2846 + .byte 0x5 + .byte 0x35 + .4byte .LASF2847 + .byte 0x5 + .byte 0x36 + .4byte .LASF2848 + .byte 0x5 + .byte 0x37 + .4byte .LASF2849 + .byte 0x5 + .byte 0x38 + .4byte .LASF2850 + .byte 0x5 + .byte 0x39 + .4byte .LASF2851 + .byte 0x5 + .byte 0x3a + .4byte .LASF2852 + .byte 0x5 + .byte 0x3f + .4byte .LASF2853 + .byte 0x5 + .byte 0x40 + .4byte .LASF2854 + .byte 0x5 + .byte 0x41 + .4byte .LASF2855 + .byte 0x5 + .byte 0x42 + .4byte .LASF2856 + .byte 0x5 + .byte 0x43 + .4byte .LASF2857 + .byte 0x5 + .byte 0x44 + .4byte .LASF2858 + .byte 0x5 + .byte 0x45 + .4byte .LASF2859 + .byte 0x5 + .byte 0x46 + .4byte .LASF2860 + .byte 0x5 + .byte 0x47 + .4byte .LASF2861 + .byte 0x5 + .byte 0x48 + .4byte .LASF2862 + .byte 0x5 + .byte 0x49 + .4byte .LASF2863 + .byte 0x5 + .byte 0x4a + .4byte .LASF2864 + .byte 0x5 + .byte 0x4b + .4byte .LASF2865 + .byte 0x5 + .byte 0x4c + .4byte .LASF2866 + .byte 0x5 + .byte 0x4f + .4byte .LASF2867 + .byte 0x5 + .byte 0x50 + .4byte .LASF2868 + .byte 0x5 + .byte 0x51 + .4byte .LASF2869 + .byte 0x5 + .byte 0x52 + .4byte .LASF2870 + .byte 0x5 + .byte 0x53 + .4byte .LASF2871 + .byte 0x5 + .byte 0x54 + .4byte .LASF2872 + .byte 0x5 + .byte 0x55 + .4byte .LASF2873 + .byte 0x5 + .byte 0x56 + .4byte .LASF2874 + .byte 0x5 + .byte 0x57 + .4byte .LASF2875 + .byte 0x5 + .byte 0x58 + .4byte .LASF2876 + .byte 0x5 + .byte 0x59 + .4byte .LASF2877 + .byte 0x5 + .byte 0x5a + .4byte .LASF2878 + .byte 0x5 + .byte 0x5b + .4byte .LASF2879 + .byte 0x5 + .byte 0x5e + .4byte .LASF2880 + .byte 0x5 + .byte 0x5f + .4byte .LASF2881 + .byte 0x5 + .byte 0x60 + .4byte .LASF2882 + .byte 0x5 + .byte 0x61 + .4byte .LASF2883 + .byte 0x5 + .byte 0x62 + .4byte .LASF2884 + .byte 0x5 + .byte 0x63 + .4byte .LASF2885 + .byte 0x5 + .byte 0x64 + .4byte .LASF2886 + .byte 0x5 + .byte 0x65 + .4byte .LASF2887 + .byte 0x5 + .byte 0x66 + .4byte .LASF2888 + .byte 0x5 + .byte 0x67 + .4byte .LASF2889 + .byte 0x5 + .byte 0x68 + .4byte .LASF2890 + .byte 0x5 + .byte 0x69 + .4byte .LASF2891 + .byte 0x5 + .byte 0x6a + .4byte .LASF2892 + .byte 0x5 + .byte 0x6b + .4byte .LASF2893 + .byte 0x5 + .byte 0x6c + .4byte .LASF2894 + .byte 0x5 + .byte 0x6d + .4byte .LASF2895 + .byte 0x5 + .byte 0x6e + .4byte .LASF2896 + .byte 0x5 + .byte 0x6f + .4byte .LASF2897 + .byte 0x5 + .byte 0x70 + .4byte .LASF2898 + .byte 0x5 + .byte 0x71 + .4byte .LASF2899 + .byte 0x5 + .byte 0x72 + .4byte .LASF2900 + .byte 0x5 + .byte 0x73 + .4byte .LASF2901 + .byte 0x5 + .byte 0x74 + .4byte .LASF2902 + .byte 0x5 + .byte 0x77 + .4byte .LASF2903 + .byte 0x5 + .byte 0x78 + .4byte .LASF2904 + .byte 0x5 + .byte 0x79 + .4byte .LASF2905 + .byte 0x5 + .byte 0x7a + .4byte .LASF2906 + .byte 0x5 + .byte 0x7b + .4byte .LASF2907 + .byte 0x5 + .byte 0x7c + .4byte .LASF2908 + .byte 0x5 + .byte 0x7d + .4byte .LASF2909 + .byte 0x5 + .byte 0x7e + .4byte .LASF2910 + .byte 0x5 + .byte 0x7f + .4byte .LASF2911 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF2912 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF2913 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF2914 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF2915 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF2916 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF2917 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF2918 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF2919 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF2920 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2921 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2922 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF2923 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF2924 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF2925 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2926 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF2927 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF2928 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF2929 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF2930 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2931 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2932 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF2933 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2934 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF2935 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF2936 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2937 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF2938 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF2939 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF2940 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF2941 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF2942 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF2943 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF2944 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2945 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2946 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2947 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2948 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF2949 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF2950 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF2951 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF2952 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF2953 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF2954 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF2955 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2956 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF2957 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF2958 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2959 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2960 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2961 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2962 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF2963 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF2964 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2965 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2966 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2967 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2968 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2969 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF2970 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF2971 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF2972 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF2973 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF2974 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF2975 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2976 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF2977 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF2978 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF2979 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF2980 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF2981 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF2982 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2983 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF2984 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF2985 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF2986 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF2987 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF2988 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF2989 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF2990 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2991 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2992 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF2993 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF2994 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2995 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2996 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2997 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF2998 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF2999 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF3000 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF3001 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF3002 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF3003 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF3004 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF3005 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF3006 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF3007 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF3008 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF3009 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF3010 + .byte 0x5 + .byte 0xaa,0x3 + .4byte .LASF3011 + .byte 0x5 + .byte 0xab,0x3 + .4byte .LASF3012 + .byte 0x5 + .byte 0xac,0x3 + .4byte .LASF3013 + .byte 0x5 + .byte 0xad,0x3 + .4byte .LASF3014 + .byte 0x5 + .byte 0xb0,0x3 + .4byte .LASF3015 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF3016 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF3017 + .byte 0x5 + .byte 0xb3,0x3 + .4byte .LASF3018 + .byte 0x5 + .byte 0xb6,0x3 + .4byte .LASF3019 + .byte 0x5 + .byte 0xb7,0x3 + .4byte .LASF3020 + .byte 0x5 + .byte 0xb8,0x3 + .4byte .LASF3021 + .byte 0x5 + .byte 0xb9,0x3 + .4byte .LASF3022 + .byte 0x5 + .byte 0xba,0x3 + .4byte .LASF3023 + .byte 0x5 + .byte 0xbb,0x3 + .4byte .LASF3024 + .byte 0x5 + .byte 0xbc,0x3 + .4byte .LASF3025 + .byte 0x5 + .byte 0xbd,0x3 + .4byte .LASF3026 + .byte 0x5 + .byte 0xbe,0x3 + .4byte .LASF3027 + .byte 0x5 + .byte 0xbf,0x3 + .4byte .LASF3028 + .byte 0x5 + .byte 0xc2,0x3 + .4byte .LASF3029 + .byte 0x5 + .byte 0xc3,0x3 + .4byte .LASF3030 + .byte 0x5 + .byte 0xc4,0x3 + .4byte .LASF3031 + .byte 0x5 + .byte 0xc5,0x3 + .4byte .LASF3032 + .byte 0x5 + .byte 0xc6,0x3 + .4byte .LASF3033 + .byte 0x5 + .byte 0xc7,0x3 + .4byte .LASF3034 + .byte 0x5 + .byte 0xca,0x3 + .4byte .LASF3035 + .byte 0x5 + .byte 0xcb,0x3 + .4byte .LASF3036 + .byte 0x5 + .byte 0xcc,0x3 + .4byte .LASF3037 + .byte 0x5 + .byte 0xcd,0x3 + .4byte .LASF3038 + .byte 0x5 + .byte 0xce,0x3 + .4byte .LASF3039 + .byte 0x5 + .byte 0xcf,0x3 + .4byte .LASF3040 + .byte 0x5 + .byte 0xd2,0x3 + .4byte .LASF3041 + .byte 0x5 + .byte 0xd3,0x3 + .4byte .LASF3042 + .byte 0x5 + .byte 0xd4,0x3 + .4byte .LASF3043 + .byte 0x5 + .byte 0xd5,0x3 + .4byte .LASF3044 + .byte 0x5 + .byte 0xd6,0x3 + .4byte .LASF3045 + .byte 0x5 + .byte 0xd7,0x3 + .4byte .LASF3046 + .byte 0x5 + .byte 0xda,0x3 + .4byte .LASF3047 + .byte 0x5 + .byte 0xdb,0x3 + .4byte .LASF3048 + .byte 0x5 + .byte 0xde,0x3 + .4byte .LASF3049 + .byte 0x5 + .byte 0xe0,0x3 + .4byte .LASF3050 + .byte 0x5 + .byte 0xe1,0x3 + .4byte .LASF3051 + .byte 0x5 + .byte 0xe2,0x3 + .4byte .LASF3052 + .byte 0x5 + .byte 0xe3,0x3 + .4byte .LASF3053 + .byte 0x5 + .byte 0xe4,0x3 + .4byte .LASF3054 + .byte 0x5 + .byte 0xe5,0x3 + .4byte .LASF3055 + .byte 0x5 + .byte 0xe6,0x3 + .4byte .LASF3056 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF3057 + .byte 0x5 + .byte 0xe8,0x3 + .4byte .LASF3058 + .byte 0x5 + .byte 0xe9,0x3 + .4byte .LASF3059 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF3060 + .byte 0x5 + .byte 0xeb,0x3 + .4byte .LASF3061 + .byte 0x5 + .byte 0xec,0x3 + .4byte .LASF3062 + .byte 0x5 + .byte 0xed,0x3 + .4byte .LASF3063 + .byte 0x5 + .byte 0xee,0x3 + .4byte .LASF3064 + .byte 0x5 + .byte 0xef,0x3 + .4byte .LASF3065 + .byte 0x5 + .byte 0xf0,0x3 + .4byte .LASF3066 + .byte 0x5 + .byte 0xf1,0x3 + .4byte .LASF3067 + .byte 0x5 + .byte 0xf2,0x3 + .4byte .LASF3068 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF3069 + .byte 0x5 + .byte 0xf4,0x3 + .4byte .LASF3070 + .byte 0x5 + .byte 0xf5,0x3 + .4byte .LASF3071 + .byte 0x5 + .byte 0xf6,0x3 + .4byte .LASF3072 + .byte 0x5 + .byte 0xf7,0x3 + .4byte .LASF3073 + .byte 0x5 + .byte 0xf8,0x3 + .4byte .LASF3074 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF3075 + .byte 0x5 + .byte 0xfa,0x3 + .4byte .LASF3076 + .byte 0x5 + .byte 0xfb,0x3 + .4byte .LASF3077 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF3078 + .byte 0x5 + .byte 0xfd,0x3 + .4byte .LASF3079 + .byte 0x5 + .byte 0xfe,0x3 + .4byte .LASF3080 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF3081 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF3082 + .byte 0x5 + .byte 0x83,0x4 + .4byte .LASF3083 + .byte 0x5 + .byte 0x84,0x4 + .4byte .LASF3084 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF3085 + .byte 0x5 + .byte 0x86,0x4 + .4byte .LASF3086 + .byte 0x5 + .byte 0x89,0x4 + .4byte .LASF3087 + .byte 0x5 + .byte 0x8a,0x4 + .4byte .LASF3088 + .byte 0x5 + .byte 0x8b,0x4 + .4byte .LASF3089 + .byte 0x5 + .byte 0x8c,0x4 + .4byte .LASF3090 + .byte 0x5 + .byte 0x8d,0x4 + .4byte .LASF3091 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF3092 + .byte 0x5 + .byte 0x8f,0x4 + .4byte .LASF3093 + .byte 0x5 + .byte 0x90,0x4 + .4byte .LASF3094 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF3095 + .byte 0x5 + .byte 0x92,0x4 + .4byte .LASF3096 + .byte 0x5 + .byte 0x95,0x4 + .4byte .LASF3097 + .byte 0x5 + .byte 0x96,0x4 + .4byte .LASF3098 + .byte 0x5 + .byte 0x97,0x4 + .4byte .LASF3099 + .byte 0x5 + .byte 0x98,0x4 + .4byte .LASF3100 + .byte 0x5 + .byte 0x99,0x4 + .4byte .LASF3101 + .byte 0x5 + .byte 0x9c,0x4 + .4byte .LASF3102 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF3103 + .byte 0x5 + .byte 0x9e,0x4 + .4byte .LASF3104 + .byte 0x5 + .byte 0x9f,0x4 + .4byte .LASF3105 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF3106 + .byte 0x5 + .byte 0xa1,0x4 + .4byte .LASF3107 + .byte 0x5 + .byte 0xa2,0x4 + .4byte .LASF3108 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF3109 + .byte 0x5 + .byte 0xa4,0x4 + .4byte .LASF3110 + .byte 0x5 + .byte 0xa5,0x4 + .4byte .LASF3111 + .byte 0x5 + .byte 0xa6,0x4 + .4byte .LASF3112 + .byte 0x5 + .byte 0xa7,0x4 + .4byte .LASF3113 + .byte 0x5 + .byte 0xa8,0x4 + .4byte .LASF3114 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF3115 + .byte 0x5 + .byte 0xaa,0x4 + .4byte .LASF3116 + .byte 0x5 + .byte 0xab,0x4 + .4byte .LASF3117 + .byte 0x5 + .byte 0xac,0x4 + .4byte .LASF3118 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF3119 + .byte 0x5 + .byte 0xb0,0x4 + .4byte .LASF3120 + .byte 0x5 + .byte 0xb1,0x4 + .4byte .LASF3121 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF3122 + .byte 0x5 + .byte 0xb3,0x4 + .4byte .LASF3123 + .byte 0x5 + .byte 0xb4,0x4 + .4byte .LASF3124 + .byte 0x5 + .byte 0xb5,0x4 + .4byte .LASF3125 + .byte 0x5 + .byte 0xb6,0x4 + .4byte .LASF3126 + .byte 0x5 + .byte 0xb7,0x4 + .4byte .LASF3127 + .byte 0x5 + .byte 0xb8,0x4 + .4byte .LASF3128 + .byte 0x5 + .byte 0xb9,0x4 + .4byte .LASF3129 + .byte 0x5 + .byte 0xba,0x4 + .4byte .LASF3130 + .byte 0x5 + .byte 0xbb,0x4 + .4byte .LASF3131 + .byte 0x5 + .byte 0xbc,0x4 + .4byte .LASF3132 + .byte 0x5 + .byte 0xbd,0x4 + .4byte .LASF3133 + .byte 0x5 + .byte 0xbe,0x4 + .4byte .LASF3134 + .byte 0x5 + .byte 0xbf,0x4 + .4byte .LASF3135 + .byte 0x5 + .byte 0xc2,0x4 + .4byte .LASF3136 + .byte 0x5 + .byte 0xc3,0x4 + .4byte .LASF3137 + .byte 0x5 + .byte 0xc4,0x4 + .4byte .LASF3138 + .byte 0x5 + .byte 0xc5,0x4 + .4byte .LASF3139 + .byte 0x5 + .byte 0xc6,0x4 + .4byte .LASF3140 + .byte 0x5 + .byte 0xc7,0x4 + .4byte .LASF3141 + .byte 0x5 + .byte 0xc8,0x4 + .4byte .LASF3142 + .byte 0x5 + .byte 0xc9,0x4 + .4byte .LASF3143 + .byte 0x5 + .byte 0xca,0x4 + .4byte .LASF3144 + .byte 0x5 + .byte 0xcb,0x4 + .4byte .LASF3145 + .byte 0x5 + .byte 0xcc,0x4 + .4byte .LASF3146 + .byte 0x5 + .byte 0xcf,0x4 + .4byte .LASF3147 + .byte 0x5 + .byte 0xd0,0x4 + .4byte .LASF3148 + .byte 0x5 + .byte 0xd1,0x4 + .4byte .LASF3149 + .byte 0x5 + .byte 0xd2,0x4 + .4byte .LASF3150 + .byte 0x5 + .byte 0xd3,0x4 + .4byte .LASF3151 + .byte 0x5 + .byte 0xd4,0x4 + .4byte .LASF3152 + .byte 0x5 + .byte 0xd5,0x4 + .4byte .LASF3153 + .byte 0x5 + .byte 0xd6,0x4 + .4byte .LASF3154 + .byte 0x5 + .byte 0xd7,0x4 + .4byte .LASF3155 + .byte 0x5 + .byte 0xd8,0x4 + .4byte .LASF3156 + .byte 0x5 + .byte 0xd9,0x4 + .4byte .LASF3157 + .byte 0x5 + .byte 0xdd,0x4 + .4byte .LASF3158 + .byte 0x5 + .byte 0xde,0x4 + .4byte .LASF3159 + .byte 0x5 + .byte 0xe1,0x4 + .4byte .LASF3160 + .byte 0x5 + .byte 0xe2,0x4 + .4byte .LASF3161 + .byte 0x5 + .byte 0xe5,0x4 + .4byte .LASF3162 + .byte 0x5 + .byte 0xe6,0x4 + .4byte .LASF3163 + .byte 0x5 + .byte 0xea,0x4 + .4byte .LASF3164 + .byte 0x5 + .byte 0xeb,0x4 + .4byte .LASF3165 + .byte 0x5 + .byte 0xec,0x4 + .4byte .LASF3166 + .byte 0x5 + .byte 0xed,0x4 + .4byte .LASF3167 + .byte 0x5 + .byte 0xee,0x4 + .4byte .LASF3168 + .byte 0 + .section .debug_line,"",@progbits +.Ldebug_line0: + .section .debug_str,"MS",@progbits,1 +.LASF1190: + .string "DAC_WAVE_BIT_WIDTH_4 DWBW(3)" +.LASF328: + .string "_POSIX_C_SOURCE 1" +.LASF2169: + .string "SPI_I2SCTL_I2SOPMOD BITS(8,9)" +.LASF1588: + .string "OB_WP_25 ((uint32_t)0x02000000U)" +.LASF2681: + .string "USART_RECEIVE_ENABLE CTL0_REN(1)" +.LASF366: + .string "___int16_t_defined 1" +.LASF3023: + .string "RCU_AHB_CKSYS_DIV8 CFG0_AHBPSC(10)" +.LASF758: + .string "BKP_DATA BITS(0,15)" +.LASF885: + .string "CAN_CTL_RFOD BIT(3)" +.LASF1937: + .string "I2C_STAT1_RXGC BIT(4)" +.LASF3366: + .string "i2s_clock_source" +.LASF1718: + .string "GPIO_BC_CR2 BIT(2)" +.LASF3352: + .string "stb_cnt" +.LASF2628: + .string "USART_STAT_TBE BIT(7)" +.LASF1401: + .string "EXTI_EVEN_EVEN11 BIT(11)" +.LASF835: + .string "CAN_F19DATA0(canx) REG32((canx) + 0x2D8U)" +.LASF1277: + .string "DMA_CHXCTL_MWIDTH BITS(10,11)" +.LASF2131: + .string "SPI_CTL0_MSTMOD BIT(2)" +.LASF2932: + .string "RCU_APB1RST_PMURST BIT(28)" +.LASF2902: + .string "RCU_INT_CKMIC BIT(23)" +.LASF2100: + .string "RTC_DIVL_DIV BITS(0,15)" +.LASF2780: + .string "_T_WCHAR " +.LASF2002: + .string "FWDGT_STAT_RUD BIT(1)" +.LASF537: + .string "ADC_IOFF1(adcx) REG32((adcx) + 0x18U)" +.LASF1975: + .string "I2C_DMA_OFF ((uint32_t)0x00000000U)" +.LASF3343: + .string "rcu_hxtal_clock_monitor_disable" +.LASF2558: + .string "TIMER_IC_POLARITY_RISING ((uint16_t)0x0000U)" +.LASF2166: + .string "SPI_I2SCTL_CKPL BIT(3)" +.LASF2480: + .string "TIMER_DMACFG_DMATC_13TRANSFER DMACFG_DMATC(12)" +.LASF150: + .string "__FLT_MAX_10_EXP__ 38" +.LASF2143: + .string "SPI_CTL1_DMAREN BIT(0)" +.LASF510: + .string "SPI_BASE (APB1_BUS_BASE + 0x00003800U)" +.LASF824: + .string "CAN_F8DATA0(canx) REG32((canx) + 0x280U)" +.LASF981: + .string "CAN_RFIFOMDATA0_DB1 BITS(8,15)" +.LASF2385: + .string "TIMER_CHCTL2_CH2EN BIT(8)" +.LASF914: + .string "CAN_TSTAT_MTE2 BIT(19)" +.LASF2230: + .string "I2S_CKPL_HIGH SPI_I2SCTL_CKPL" +.LASF2965: + .string "RCU_APB1EN_I2C0EN BIT(21)" +.LASF2120: + .string "SPI_CTL0(spix) REG32((spix) + 0x00U)" +.LASF2545: + .string "TIMER_OC_MODE_TOGGLE ((uint16_t)0x0030U)" +.LASF2427: + .string "TIMER_FLAG_CH0 TIMER_INTF_CH0IF" +.LASF1472: + .string "EXTI_PD_PD6 BIT(6)" +.LASF1096: + .string "CAN_FILTERBITS_16BIT ((uint8_t)0x00U)" +.LASF3286: + .string "RCU_INT_FLAG_HXTALSTB" +.LASF3183: + .string "long unsigned int" +.LASF727: + .string "BKP_DATA14 REG16((BKP) + 0x50U)" +.LASF1769: + .string "AFIO_EXTI2_SS BITS(8, 11)" +.LASF2600: + .string "TIMER_EXT_TRI_PSC_DIV4 SMCFG_ETPSC(2)" +.LASF2080: + .string "RTC_PSCH REG32(RTC + 0x08U)" +.LASF1777: + .string "AFIO_EXTI10_SS BITS(8, 11)" +.LASF300: + .string "__SIZEOF_WCHAR_T__ 4" +.LASF501: + .string "EXMC_BASE ((uint32_t)0xA0000000U)" +.LASF1671: + .string "GPIO_OCTL_OCTL3 BIT(3)" +.LASF1340: + .string "EXMC_SNCTL_NRTP BITS(2,3)" +.LASF307: + .string "__riscv_div 1" +.LASF755: + .string "BKP_OCTL REG16((BKP) + 0x2CU)" +.LASF2444: + .string "TIMER_DMA_TRGD ((uint16_t)TIMER_DMAINTEN_TRGDEN)" +.LASF2083: + .string "RTC_DIVL REG32(RTC + 0x14U)" +.LASF478: + .string "WCHAR_MAX (__WCHAR_MAX__)" +.LASF2005: + .string "FWDGT_PSC_DIV8 ((uint8_t)PSC_PSC(1))" +.LASF1037: + .string "GET_ERR_ERRN(regval) GET_BITS((uint32_t)(regval), 4U, 6U)" +.LASF2221: + .string "I2S_MODE_MASTERTX I2SCTL_I2SOPMOD(2)" +.LASF2773: + .string "_SIZET_ " +.LASF1329: + .string "ECLIC_PRIGROUP_LEVEL2_PRIO2 2" +.LASF2576: + .string "TIMER_SMCFG_TRGSEL_ETIFP SMCFG_TRGSEL(7)" +.LASF1116: + .string "CAN_INT_WAKEUP CAN_INTEN_WIE" +.LASF439: + .string "INT16_MIN (-__INT16_MAX__ - 1)" +.LASF1610: + .string "GPIO_BOP(gpiox) REG32((gpiox) + 0x10U)" +.LASF1721: + .string "GPIO_BC_CR5 BIT(5)" +.LASF3061: + .string "RCU_PLL_MUL12 CFG0_PLLMF(10)" +.LASF581: + .string "ADC_CTL1_SWRCST BIT(22)" +.LASF2625: + .string "USART_STAT_IDLEF BIT(4)" +.LASF1226: + .string "DAC_TRIANGLE_AMPLITUDE_4095 DAC_WAVE_BIT_WIDTH_12" +.LASF2833: + .string "PMOVI_HANDLER eclic_pmovi_handler" +.LASF2226: + .string "I2S_STD_LSB I2SCTL_I2SSTD(2)" +.LASF3142: + .string "RCU_PLL1_MUL13 CFG1_PLL1MF(11)" +.LASF2067: + .string "PMU_FLAG_WAKEUP PMU_CS_WUF" +.LASF1739: + .string "GPIO_LOCK_LK7 BIT(7)" +.LASF2064: + .string "PMU_LVDT_5 CTL_LVDT(5)" +.LASF341: + .string "SYSTEM_GD32VF103_H " +.LASF1516: + .string "FMC_CTL_LK BIT(7)" +.LASF623: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH1 CTL1_ETSRC(1)" +.LASF459: + .string "UINT_FAST8_MAX (__UINT_FAST8_MAX__)" +.LASF1048: + .string "CAN_ERRN_7 ERR_ERRN(7U)" +.LASF182: + .string "__LDBL_DECIMAL_DIG__ 36" +.LASF3217: + .string "RCU_BKPI" +.LASF452: + .string "INT64_MAX (__INT64_MAX__)" +.LASF1369: + .string "EXTI_SWIEV REG32(EXTI + 0x10U)" +.LASF1773: + .string "AFIO_EXTI6_SS BITS(8, 11)" +.LASF2729: + .string "WWDGT WWDGT_BASE" +.LASF413: + .string "_UINT32_T_DECLARED " +.LASF1278: + .string "DMA_CHXCTL_PRIO BITS(12,13)" +.LASF784: + .string "CAN_STAT(canx) REG32((canx) + 0x04U)" +.LASF1781: + .string "AFIO_EXTI14_SS BITS(8, 11)" +.LASF674: + .string "ADC_CHANNEL_13 ((uint8_t)0x0DU)" +.LASF1807: + .string "GPIO_EVENT_PIN_0 ((uint8_t)0x00U)" +.LASF1580: + .string "OB_WP_17 ((uint32_t)0x00020000U)" +.LASF2737: + .string "WWDGT_CFG_EWIE BIT(9)" +.LASF2646: + .string "USART_CTL0_WL BIT(12)" +.LASF435: + .string "UINT8_MAX (__UINT8_MAX__)" +.LASF1115: + .string "CAN_INT_ERR CAN_INTEN_ERRIE" +.LASF1553: + .string "FMC_NSPC ((uint8_t)0xA5U)" +.LASF1017: + .string "TMDATA0_DB0(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF993: + .string "CAN_FW_FW(regval) BIT(regval)" +.LASF1900: + .string "I2C_CTL0_START BIT(8)" +.LASF2593: + .string "TIMER_SLAVE_MODE_EVENT SMCFG_SMC(6)" +.LASF1726: + .string "GPIO_BC_CR10 BIT(10)" +.LASF386: + .string "short +1" +.LASF1873: + .string "GPIO_TIMER4CH3_IREMAP ((uint32_t)0x00200001U)" +.LASF1602: + .string "GPIOC (GPIO_BASE + 0x00000800U)" +.LASF2477: + .string "TIMER_DMACFG_DMATC_10TRANSFER DMACFG_DMATC(9)" +.LASF702: + .string "OVSCR_OVSR(regval) (BITS(2,4) & ((uint32_t)(regval) << 2))" +.LASF2673: + .string "USART_REGIDX_BIT2(regidx,bitpos,regidx2,bitpos2) (((uint32_t)(regidx2) << 22) | (uint32_t)((bitpos2) << 16) | (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos)))" +.LASF2654: + .string "USART_CTL1_CKEN BIT(11)" +.LASF1014: + .string "FCTL_HBC1F(regval) (BITS(8,13) & ((uint32_t)(regval) << 8))" +.LASF625: + .string "ADC0_1_EXTTRIG_REGULAR_T1_CH1 CTL1_ETSRC(3)" +.LASF678: + .string "ADC_CHANNEL_17 ((uint8_t)0x11U)" +.LASF2403: + .string "TIMER_CCHP_BRKEN BIT(12)" +.LASF2246: + .string "SPI_FLAG_TBE SPI_STAT_TBE" +.LASF2601: + .string "TIMER_EXT_TRI_PSC_DIV8 SMCFG_ETPSC(3)" +.LASF467: + .string "INT_FAST64_MAX (__INT_FAST64_MAX__)" +.LASF1823: + .string "GPIO_PIN_SOURCE_0 ((uint8_t)0x00U)" +.LASF3306: + .string "RCU_INT_PLL1STB" +.LASF512: + .string "I2C_BASE (APB1_BUS_BASE + 0x00005400U)" +.LASF2659: + .string "USART_CTL2_IRLP BIT(2)" +.LASF2459: + .string "TIMER_DMACFG_DMATA_CAR DMACFG_DMATA(11)" +.LASF2453: + .string "TIMER_DMACFG_DMATA_SWEVG DMACFG_DMATA(5)" +.LASF2042: + .string "DBG_LOW_POWER_STANDBY DBG_CTL_STB_HOLD" +.LASF2509: + .string "TIMER_UPDATE_SRC_REGULAR TIMER_CTL0_UPS" +.LASF1764: + .string "AFIO_PCF0_SWJ_CFG BITS(24, 26)" +.LASF1555: + .string "OB_SPC_SPC ((uint32_t)0x000000FFU)" +.LASF2203: + .string "I2S_AUDIOSAMPLE_11K ((uint32_t)11025U)" +.LASF1030: + .string "GET_RFIFOMDATA0_DB1(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF1000: + .string "CAN_BIT_POS0(val) (((uint32_t)(val) >> 6) & 0x1FU)" +.LASF2227: + .string "I2S_STD_PCMSHORT I2SCTL_I2SSTD(3)" +.LASF3383: + .string "rcu_pll_config" +.LASF2876: + .string "RCU_CFG0_USBFSPSC BITS(22,23)" +.LASF1144: + .string "DAC_CTL_DBOFF0 BIT(1)" +.LASF3409: + .string "rcu_system_clock_source_get" +.LASF3006: + .string "CTL_REG_OFFSET 0x00U" +.LASF2652: + .string "USART_CTL1_CPH BIT(9)" +.LASF1381: + .string "EXTI_INTEN_INTEN10 BIT(10)" +.LASF1513: + .string "FMC_CTL_OBPG BIT(4)" +.LASF421: + .string "_UINTPTR_T_DECLARED " +.LASF1705: + .string "GPIO_BOP_CR5 BIT(21)" +.LASF1754: + .string "AFIO_PCF0_USART0_REMAP BIT(2)" +.LASF3063: + .string "RCU_PLL_MUL14 CFG0_PLLMF(12)" +.LASF1732: + .string "GPIO_LOCK_LK0 BIT(0)" +.LASF2809: + .string "_RISCV_CONST_H " +.LASF2094: + .string "RTC_CTL_RSYNF BIT(3)" +.LASF1176: + .string "DAC_TRIGGER_T6_TRGO CTL_DTSEL(2)" +.LASF2753: + .string "_BSD_PTRDIFF_T_ " +.LASF1042: + .string "CAN_ERRN_1 ERR_ERRN(1U)" +.LASF2277: + .string "TIMER_PSC(timerx) REG32((timerx) + 0x28U)" +.LASF1908: + .string "I2C_CTL1_ERRIE BIT(8)" +.LASF2995: + .string "RCU_DSV_DSLPVS BITS(0,1)" +.LASF2214: + .string "I2S_FRAMEFORMAT_DT24B_CH32B (I2SCTL_DTLEN(1) | SPI_I2SCTL_CHLEN)" +.LASF2909: + .string "RCU_APB2RST_ADC0RST BIT(9)" +.LASF3338: + .string "clock" +.LASF2201: + .string "SPI_PSC_256 CTL0_PSC(7)" +.LASF50: + .string "__INT_LEAST16_TYPE__ short int" +.LASF303: + .string "__riscv 1" +.LASF2856: + .string "RCU_CTL_IRC8MCALIB BITS(8,15)" +.LASF2107: + .string "RTC_INT_OVERFLOW RTC_INTEN_OVIE" +.LASF1850: + .string "GPIO_PIN_11 BIT(11)" +.LASF1131: + .string "DAC_SWT REG32(DAC + 0x04U)" +.LASF3113: + .string "RCU_PREDV0_DIV11 CFG1_PREDV0(10)" +.LASF2859: + .string "RCU_CTL_HXTALBPS BIT(18)" +.LASF669: + .string "ADC_CHANNEL_8 ((uint8_t)0x08U)" +.LASF2225: + .string "I2S_STD_MSB I2SCTL_I2SSTD(1)" +.LASF305: + .string "__riscv_atomic 1" +.LASF3177: + .string "short int" +.LASF1857: + .string "GPIO_I2C0_REMAP ((uint32_t)0x00000002U)" +.LASF551: + .string "ADC_OVSCR(adcx) REG32((adcx) + 0x80U)" +.LASF1230: + .string "DMA_INTF(dmax) REG32((dmax) + 0x00U)" +.LASF2894: + .string "RCU_INT_PLL2STBIE BIT(14)" +.LASF1891: + .string "I2C_RT(i2cx) REG32((i2cx) + 0x20U)" +.LASF3374: + .string "reg0" +.LASF3090: + .string "RCU_CKOUT0SRC_IRC8M CFG0_CKOUT0SEL(5)" +.LASF2248: + .string "SPI_FLAG_CONFERR SPI_STAT_CONFERR" +.LASF1342: + .string "EXMC_SNCTL_NREN BIT(6)" +.LASF1441: + .string "EXTI_FTEN_FTEN13 BIT(13)" +.LASF1642: + .string "GPIO_CTL1_MD11 BITS(12, 13)" +.LASF548: + .string "ADC_IDATA2(adcx) REG32((adcx) + 0x44U)" +.LASF350: + .string "__GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))" +.LASF2325: + .string "TIMER_DMAINTEN_CH2DEN BIT(11)" +.LASF1923: + .string "I2C_STAT0_ADD10SEND BIT(3)" +.LASF70: + .string "__INT_MAX__ 0x7fffffff" +.LASF2171: + .string "SPI_I2SCTL_I2SSEL BIT(11)" +.LASF2879: + .string "RCU_CFG0_PLLMF_4 BIT(29)" +.LASF227: + .string "__FLT64_DECIMAL_DIG__ 17" +.LASF864: + .string "CAN_F20DATA1(canx) REG32((canx) + 0x2E4U)" +.LASF274: + .string "__FLT64X_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F64x" +.LASF2665: + .string "USART_CTL2_RTSEN BIT(8)" +.LASF1324: + .string "DMA_MEMORY_TO_MEMORY_ENABLE ((uint32_t)0x00000001U)" +.LASF1034: + .string "GET_RFIFOMDATA1_DB5(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF2164: + .string "SPI_I2SCTL_CHLEN BIT(0)" +.LASF2562: + .string "TIMER_IC_SELECTION_INDIRECTTI ((uint16_t)0x0002U)" +.LASF1258: + .string "DMA_CH6PADDR(dmax) REG32((dmax) + 0x88U)" +.LASF762: + .string "BKP_OCTL_ROSEL BIT(9)" +.LASF1968: + .string "I2C_SCLSTRETCH_ENABLE ((uint32_t)0x00000000U)" +.LASF795: + .string "CAN_TMI1(canx) REG32((canx) + 0x190U)" +.LASF465: + .string "UINT_FAST32_MAX (__UINT_FAST32_MAX__)" +.LASF666: + .string "ADC_CHANNEL_5 ((uint8_t)0x05U)" +.LASF532: + .string "ADC_CTL0(adcx) REG32((adcx) + 0x04U)" +.LASF1237: + .string "DMA_CH1CNT(dmax) REG32((dmax) + 0x20U)" +.LASF946: + .string "CAN_ERR_PERR BIT(1)" +.LASF3138: + .string "RCU_PLL1_MUL9 CFG1_PLL1MF(7)" +.LASF40: + .string "__SIG_ATOMIC_TYPE__ int" +.LASF3268: + .string "rcu_periph_reset_enum" +.LASF958: + .string "CAN_TMI_FT BIT(1)" +.LASF1139: + .string "DACC_L12DH REG32(DAC + 0x24U)" +.LASF1056: + .string "CAN_BT_SJW_3TQ ((uint8_t)0x02U)" +.LASF3119: + .string "CFG1_PREDV1(regval) (BITS(4,7) & ((uint32_t)(regval) << 4))" +.LASF1617: + .string "AFIO_EXTISS2 REG32(AFIO + 0x10U)" +.LASF2438: + .string "TIMER_DMA_UPD ((uint16_t)TIMER_DMAINTEN_UPDEN)" +.LASF451: + .string "INT64_MIN (-__INT64_MAX__ - 1)" +.LASF3276: + .string "RCU_FLAG_EPRST" +.LASF642: + .string "ADC_SAMPLETIME_13POINT5 SAMPTX_SPT(2)" +.LASF1216: + .string "DAC_TRIANGLE_AMPLITUDE_3 DAC_WAVE_BIT_WIDTH_2" +.LASF2974: + .string "RCU_BDCTL_LXTALBPS BIT(2)" +.LASF813: + .string "CAN_FSCFG(canx) REG32((canx) + 0x20CU)" +.LASF2145: + .string "SPI_CTL1_NSSDRV BIT(2)" +.LASF2825: + .string "ECLIC_INT_ATTR_TRIG_NEG 0x04" +.LASF3064: + .string "RCU_PLL_MUL6_5 CFG0_PLLMF(13)" +.LASF44: + .string "__INT64_TYPE__ long long int" +.LASF904: + .string "CAN_TSTAT_MTE0 BIT(3)" +.LASF639: + .string "SAMPTX_SPT(regval) (BITS(0,2) & ((uint32_t)(regval) << 0))" +.LASF2079: + .string "RTC_CTL REG32(RTC + 0x04U)" +.LASF1262: + .string "DMA_INTF_HTFIF BIT(2)" +.LASF2245: + .string "SPI_FLAG_RBNE SPI_STAT_RBNE" +.LASF2582: + .string "TIMER_TRI_OUT_SRC_O0CPRE CTL1_MMC(4)" +.LASF62: + .string "__UINT_FAST16_TYPE__ unsigned int" +.LASF2475: + .string "TIMER_DMACFG_DMATC_8TRANSFER DMACFG_DMATC(7)" +.LASF2804: + .string "TIMER_MTIME_size 0x8" +.LASF1957: + .string "I2C_SMBUSMODE_ENABLE I2C_CTL0_SMBEN" +.LASF364: + .string "__have_long32 1" +.LASF2769: + .string "_BSD_SIZE_T_DEFINED_ " +.LASF1100: + .string "CAN_FILTER_MASK_16BITS ((uint32_t)0x0000FFFFU)" +.LASF801: + .string "CAN_TMDATA02(canx) REG32((canx) + 0x1A8U)" +.LASF2944: + .string "RCU_APB2EN_PCEN BIT(4)" +.LASF1856: + .string "GPIO_SPI0_REMAP ((uint32_t)0x00000001U)" +.LASF2840: + .string "RCU_CTL REG32(RCU + 0x00U)" +.LASF1964: + .string "I2C_ACKPOS_NEXT ((uint32_t)0x00000000U)" +.LASF948: + .string "CAN_ERR_ERRN BITS(4,6)" +.LASF3375: + .string "rcu_pll2_config" +.LASF3188: + .string "uint32_t" +.LASF195: + .string "__FLT16_MAX_EXP__ 16" +.LASF2244: + .string "SPI_I2S_INT_FLAG_FERR ((uint8_t)0x06U)" +.LASF1977: + .string "I2C_DMALST_OFF ((uint32_t)0x00000000U)" +.LASF401: + .string "__LEAST8 \"hh\"" +.LASF1568: + .string "OB_WP_5 ((uint32_t)0x00000020U)" +.LASF204: + .string "__FLT16_HAS_INFINITY__ 1" +.LASF1263: + .string "DMA_INTF_ERRIF BIT(3)" +.LASF1149: + .string "DAC_CTL_DDMAEN0 BIT(12)" +.LASF2895: + .string "RCU_INT_IRC40KSTBIC BIT(16)" +.LASF1195: + .string "DAC_WAVE_BIT_WIDTH_9 DWBW(8)" +.LASF124: + .string "__INT_FAST8_MAX__ 0x7fffffff" +.LASF327: + .string "RT_USING_LIBC 1" +.LASF1339: + .string "EXMC_SNCTL_NRMUX BIT(1)" +.LASF2435: + .string "TIMER_FLAG_CH1O TIMER_INTF_CH1OF" +.LASF814: + .string "CAN_FAFIFO(canx) REG32((canx) + 0x214U)" +.LASF2262: + .string "TIMER2 (TIMER_BASE + 0x00000400U)" +.LASF1751: + .string "AFIO_EC_EOE BIT(7)" +.LASF2442: + .string "TIMER_DMA_CH3D ((uint16_t)TIMER_DMAINTEN_CH3DEN)" +.LASF39: + .string "__CHAR32_TYPE__ long unsigned int" +.LASF2240: + .string "SPI_I2S_INT_FLAG_RXORERR ((uint8_t)0x02U)" +.LASF1156: + .string "DAC_CTL_DDMAEN1 BIT(28)" +.LASF1406: + .string "EXTI_EVEN_EVEN16 BIT(16)" +.LASF1394: + .string "EXTI_EVEN_EVEN4 BIT(4)" +.LASF3019: + .string "CFG0_AHBPSC(regval) (BITS(4,7) & ((uint32_t)(regval) << 4))" +.LASF1063: + .string "CAN_BT_BS1_6TQ ((uint8_t)0x05U)" +.LASF2502: + .string "TIMER_COUNTER_DOWN ((uint16_t)TIMER_CTL0_DIR)" +.LASF294: + .string "__GCC_ATOMIC_LONG_LOCK_FREE 2" +.LASF2567: + .string "TIMER_IC_PSC_DIV8 ((uint16_t)0x000CU)" +.LASF25: + .string "__BIGGEST_ALIGNMENT__ 16" +.LASF1412: + .string "EXTI_RTEN_RTEN3 BIT(3)" +.LASF2574: + .string "TIMER_SMCFG_TRGSEL_CI0FE0 SMCFG_TRGSEL(5)" +.LASF860: + .string "CAN_F16DATA1(canx) REG32((canx) + 0x2C4U)" +.LASF2335: + .string "TIMER_INTF_TRGIF BIT(6)" +.LASF1170: + .string "DACC_R8DH_DAC1_DH BITS(8,15)" +.LASF1834: + .string "GPIO_PIN_SOURCE_11 ((uint8_t)0x0BU)" +.LASF2119: + .string "SPI2 (SPI_BASE + 0x00000400U)" +.LASF2443: + .string "TIMER_DMA_CMTD ((uint16_t)TIMER_DMAINTEN_CMTDEN)" +.LASF1320: + .string "DMA_PRIORITY_MEDIUM CHCTL_PRIO(1U)" +.LASF1696: + .string "GPIO_BOP_BOP12 BIT(12)" +.LASF2010: + .string "FWDGT_PSC_DIV256 ((uint8_t)PSC_PSC(6))" +.LASF3342: + .string "irc8m_adjval" +.LASF3231: + .string "RCU_USART0" +.LASF3209: + .string "RCU_USART1" +.LASF3210: + .string "RCU_USART2" +.LASF1712: + .string "GPIO_BOP_CR12 BIT(28)" +.LASF1656: + .string "GPIO_ISTAT_ISTAT4 BIT(4)" +.LASF1461: + .string "EXTI_SWIEV_SWIEV14 BIT(14)" +.LASF2185: + .string "SPI_NSS_SOFT SPI_CTL0_SWNSSEN" +.LASF177: + .string "__LDBL_MIN_EXP__ (-16381)" +.LASF312: + .string "__riscv_arch_test 1" +.LASF2218: + .string "I2SCTL_I2SOPMOD(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF1083: + .string "CAN_MAILBOX1 ((uint8_t)0x01U)" +.LASF829: + .string "CAN_F13DATA0(canx) REG32((canx) + 0x2A8U)" +.LASF2208: + .string "I2S_AUDIOSAMPLE_48K ((uint32_t)48000U)" +.LASF1534: + .string "FMC_BIT_POS1(val) ((uint32_t)(val) & 0x1FU)" +.LASF387: + .string "__int20 +2" +.LASF343: + .string "_MACHINE__DEFAULT_TYPES_H " +.LASF1914: + .string "I2C_SADDR0_ADDRESS BITS(1,7)" +.LASF2188: + .string "SPI_ENDIAN_LSB SPI_CTL0_LF" +.LASF1663: + .string "GPIO_ISTAT_ISTAT11 BIT(11)" +.LASF2150: + .string "SPI_CTL1_TBEIE BIT(7)" +.LASF3316: + .string "rcu_osci_type_enum" +.LASF1830: + .string "GPIO_PIN_SOURCE_7 ((uint8_t)0x07U)" +.LASF1491: + .string "FMC_STAT REG32((FMC) + 0x0CU)" +.LASF2121: + .string "SPI_CTL1(spix) REG32((spix) + 0x04U)" +.LASF2307: + .string "TIMER_SMCFG_SMC BITS(0,2)" +.LASF627: + .string "ADC0_1_EXTTRIG_REGULAR_T3_CH3 CTL1_ETSRC(5)" +.LASF1358: + .string "EXMC_MEMORY_TYPE_PSRAM SNCTL_NRTP(1)" +.LASF2210: + .string "I2S_AUDIOSAMPLE_192K ((uint32_t)192000U)" +.LASF1812: + .string "GPIO_EVENT_PIN_5 ((uint8_t)0x05U)" +.LASF800: + .string "CAN_TMP2(canx) REG32((canx) + 0x1A4U)" +.LASF930: + .string "CAN_RFIFO1_RFD1 BIT(5)" +.LASF880: + .string "CAN_RFIFOMDATA0(canx,bank) REG32((canx) + 0x1B8U + ((bank) * 0x10U))" +.LASF2961: + .string "RCU_APB1EN_USART1EN BIT(17)" +.LASF2636: + .string "USART_CTL0_REN BIT(2)" +.LASF1297: + .string "DMA_FLAG_G DMA_INTF_GIF" +.LASF1842: + .string "GPIO_PIN_3 BIT(3)" +.LASF806: + .string "CAN_RFIFOMDATA10(canx) REG32((canx) + 0x1BCU)" +.LASF1020: + .string "TMDATA0_DB3(regval) (BITS(24,31) & ((uint32_t)(regval) << 24))" +.LASF3165: + .string "RCU_DEEPSLEEP_V_1_2 DSV_DSLPVS(0)" +.LASF2281: + .string "TIMER_CH1CV(timerx) REG32((timerx) + 0x38U)" +.LASF1875: + .string "GPIO_SWJ_NONJTRST_REMAP ((uint32_t)0x00300100U)" +.LASF1927: + .string "I2C_STAT0_BERR BIT(8)" +.LASF3097: + .string "BDCTL_RTCSRC(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF1416: + .string "EXTI_RTEN_RTEN7 BIT(7)" +.LASF1183: + .string "DAC_WAVE_DISABLE CTL_DWM(0)" +.LASF2483: + .string "TIMER_DMACFG_DMATC_16TRANSFER DMACFG_DMATC(15)" +.LASF1837: + .string "GPIO_PIN_SOURCE_14 ((uint8_t)0x0EU)" +.LASF1638: + .string "GPIO_CTL1_MD9 BITS(4, 5)" +.LASF2207: + .string "I2S_AUDIOSAMPLE_44K ((uint32_t)44100U)" +.LASF1761: + .string "AFIO_PCF0_CAN_REMAP BITS(13, 14)" +.LASF2235: + .string "SPI_I2S_INT_TBE ((uint8_t)0x00U)" +.LASF1646: + .string "GPIO_CTL1_MD13 BITS(20, 21)" +.LASF3267: + .string "RCU_USART0RST" +.LASF323: + .string "HAVE_CCONFIG_H 1" +.LASF46: + .string "__UINT16_TYPE__ short unsigned int" +.LASF942: + .string "CAN_INTEN_ERRIE BIT(15)" +.LASF431: + .string "INTPTR_MAX (__INTPTR_MAX__)" +.LASF2832: + .string "BWEI_HANDLER eclic_bwei_handler" +.LASF2648: + .string "USART_CTL1_ADDR BITS(0,3)" +.LASF71: + .string "__LONG_MAX__ 0x7fffffffL" +.LASF2228: + .string "I2S_STD_PCMLONG (I2SCTL_I2SSTD(3) | SPI_I2SCTL_PCMSMOD)" +.LASF2399: + .string "TIMER_CCHP_DTCFG BITS(0,7)" +.LASF970: + .string "CAN_TMDATA1_DB5 BITS(8,15)" +.LASF488: + .string "UINT64_C(x) __UINT64_C(x)" +.LASF3103: + .string "RCU_PREDV0_DIV1 CFG1_PREDV0(0)" +.LASF296: + .string "__GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1" +.LASF2467: + .string "DMACFG_DMATC(regval) (BITS(8, 12) & ((uint32_t)(regval) << 8U))" +.LASF2309: + .string "TIMER_SMCFG_MSM BIT(7)" +.LASF106: + .string "__INT_LEAST8_WIDTH__ 8" +.LASF2955: + .string "RCU_APB1EN_TIMER4EN BIT(3)" +.LASF55: + .string "__UINT_LEAST32_TYPE__ long unsigned int" +.LASF2029: + .string "DBG_CTL_TIMER0_HOLD BIT(10)" +.LASF1095: + .string "CAN_MODE_SLEEP ((uint8_t)0x04U)" +.LASF962: + .string "CAN_TMP_DLENC BITS(0,3)" +.LASF1085: + .string "CAN_NOMAILBOX ((uint8_t)0x03U)" +.LASF1345: + .string "EXMC_SNCTL_NRWTEN BIT(13)" +.LASF1795: + .string "GPIO_OSPEED_2MHZ ((uint8_t)0x02U)" +.LASF1133: + .string "DAC0_L12DH REG32(DAC + 0x0CU)" +.LASF2416: + .string "TIMER_INT_TRG TIMER_DMAINTEN_TRGIE" +.LASF362: + .string "__EXP(x) __ ##x ##__" +.LASF1522: + .string "FMC_OBSTAT_SPC BIT(1)" +.LASF437: + .string "INT_LEAST8_MAX (__INT_LEAST8_MAX__)" +.LASF2511: + .string "TIMER_ROS_STATE_ENABLE ((uint16_t)TIMER_CCHP_ROS)" +.LASF3136: + .string "CFG1_PLL1MF(regval) (BITS(8,11) & ((uint32_t)(regval) << 8))" +.LASF283: + .string "__GNUC_STDC_INLINE__ 1" +.LASF427: + .string "__int_fast16_t_defined 1" +.LASF1611: + .string "GPIO_BC(gpiox) REG32((gpiox) + 0x14U)" +.LASF2350: + .string "TIMER_CHCTL0_CH0COMFEN BIT(2)" +.LASF284: + .string "__NO_INLINE__ 1" +.LASF3284: + .string "RCU_INT_FLAG_LXTALSTB" +.LASF2904: + .string "RCU_APB2RST_PARST BIT(2)" +.LASF1952: + .string "I2C_BIT_POS2(val) (((uint32_t)(val) & 0x1F0000U) >> 16)" +.LASF2490: + .string "TIMER_EVENT_SRC_CH3G ((uint16_t)0x0010U)" +.LASF567: + .string "ADC_CTL0_SYNCM BITS(16,19)" +.LASF1955: + .string "I2C_STAT1_REG_OFFSET 0x18U" +.LASF869: + .string "CAN_F25DATA1(canx) REG32((canx) + 0x30CU)" +.LASF2304: + .string "TIMER_CTL1_ISO2 BIT(12)" +.LASF2653: + .string "USART_CTL1_CPL BIT(10)" +.LASF2146: + .string "SPI_CTL1_NSSP BIT(3)" +.LASF539: + .string "ADC_IOFF3(adcx) REG32((adcx) + 0x20U)" +.LASF2405: + .string "TIMER_CCHP_OAEN BIT(14)" +.LASF1433: + .string "EXTI_FTEN_FTEN5 BIT(5)" +.LASF3262: + .string "RCU_GPIOERST" +.LASF198: + .string "__FLT16_MAX__ 6.55040000000000000000000000000000000e+4F16" +.LASF852: + .string "CAN_F8DATA1(canx) REG32((canx) + 0x284U)" +.LASF1808: + .string "GPIO_EVENT_PIN_1 ((uint8_t)0x01U)" +.LASF895: + .string "CAN_STAT_WUIF BIT(3)" +.LASF2657: + .string "USART_CTL2_ERRIE BIT(0)" +.LASF3273: + .string "RCU_FLAG_PLL2STB" +.LASF1948: + .string "I2C_REG_VAL(i2cx,offset) (REG32((i2cx) + (((uint32_t)(offset) & 0xFFFFU) >> 6)))" +.LASF1641: + .string "GPIO_CTL1_CTL10 BITS(10, 11)" +.LASF1059: + .string "CAN_BT_BS1_2TQ ((uint8_t)0x01U)" +.LASF1184: + .string "DAC_WAVE_MODE_LFSR CTL_DWM(1)" +.LASF2117: + .string "SPI0 (SPI_BASE + 0x0000F800U)" +.LASF1147: + .string "DAC_CTL_DWM0 BITS(6,7)" +.LASF2113: + .string "RTC_FLAG_OVERFLOW RTC_CTL_OVIF" +.LASF3308: + .string "rcu_int_enum" +.LASF2634: + .string "USART_CTL0_SBKCMD BIT(0)" +.LASF704: + .string "ADC_OVERSAMPLING_RATIO_MUL4 OVSCR_OVSR(1)" +.LASF1316: + .string "DMA_MEMORY_WIDTH_16BIT CHCTL_MWIDTH(1U)" +.LASF2009: + .string "FWDGT_PSC_DIV128 ((uint8_t)PSC_PSC(5))" +.LASF3376: + .string "pll_mul" +.LASF2740: + .string "WWDGT_CFG_PSC_DIV1 CFG_PSC(0)" +.LASF1503: + .string "FMC_WS_WSCNT BITS(0,2)" +.LASF2610: + .string "USART2 (USART_BASE+(0x00000400U))" +.LASF185: + .string "__LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L" +.LASF1175: + .string "DAC_TRIGGER_T2_TRGO CTL_DTSEL(1)" +.LASF3009: + .string "CFG0_REG_OFFSET 0x04U" +.LASF1690: + .string "GPIO_BOP_BOP6 BIT(6)" +.LASF2392: + .string "TIMER_PSC_PSC BITS(0,15)" +.LASF1108: + .string "CAN_INT_RFNE1 CAN_INTEN_RFNEIE1" +.LASF821: + .string "CAN_F5DATA0(canx) REG32((canx) + 0x268U)" +.LASF2523: + .string "TIMER_CCHP_PROT_2 CCHP_PROT(3)" +.LASF2046: + .string "PMU_CS REG32((PMU) + 0x04U)" +.LASF388: + .string "__int20__ +2" +.LASF3398: + .string "periph_reset" +.LASF1310: + .string "CHCTL_PWIDTH(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF1905: + .string "I2C_CTL0_SALT BIT(13)" +.LASF1921: + .string "I2C_STAT0_ADDSEND BIT(1)" +.LASF859: + .string "CAN_F15DATA1(canx) REG32((canx) + 0x2BCU)" +.LASF1211: + .string "DATA_ALIGN(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF322: + .string "NO_INIT 1" +.LASF1521: + .string "FMC_OBSTAT_OBERR BIT(0)" +.LASF3068: + .string "RCU_PLL_MUL19 (PLLMF_4 | CFG0_PLLMF(2))" +.LASF1570: + .string "OB_WP_7 ((uint32_t)0x00000080U)" +.LASF618: + .string "ADC_DATAALIGN_RIGHT ((uint32_t)0x00000000U)" +.LASF3303: + .string "RCU_INT_IRC8MSTB" +.LASF3223: + .string "RCU_GPIOB" +.LASF3224: + .string "RCU_GPIOC" +.LASF3225: + .string "RCU_GPIOD" +.LASF1722: + .string "GPIO_BC_CR6 BIT(6)" +.LASF1446: + .string "EXTI_FTEN_FTEN18 BIT(18)" +.LASF3332: + .string "predv0" +.LASF3333: + .string "predv1" +.LASF1595: + .string "OB_WP_ALL ((uint32_t)0xFFFFFFFFU)" +.LASF1498: + .string "OB_USER REG16((OB) + 0x02U)" +.LASF2204: + .string "I2S_AUDIOSAMPLE_16K ((uint32_t)16000U)" +.LASF1122: + .string "CRC_CTL REG32(CRC + 0x08U)" +.LASF3105: + .string "RCU_PREDV0_DIV3 CFG1_PREDV0(2)" +.LASF194: + .string "__FLT16_MIN_10_EXP__ (-4)" +.LASF605: + .string "ADC_SCAN_MODE ADC_CTL0_SM" +.LASF1902: + .string "I2C_CTL0_ACKEN BIT(10)" +.LASF2910: + .string "RCU_APB2RST_ADC1RST BIT(10)" +.LASF2897: + .string "RCU_INT_IRC8MSTBIC BIT(18)" +.LASF2935: + .string "RCU_AHBEN_DMA1EN BIT(1)" +.LASF2085: + .string "RTC_CNTL REG32(RTC + 0x1CU)" +.LASF3380: + .string "rcu_predv0_config" +.LASF1767: + .string "AFIO_EXTI0_SS BITS(0, 3)" +.LASF2679: + .string "USART_CTL2_REG_OFFSET (0x00000014U)" +.LASF414: + .string "__int32_t_defined 1" +.LASF11: + .string "__ATOMIC_ACQUIRE 2" +.LASF2923: + .string "RCU_APB1RST_USART1RST BIT(17)" +.LASF540: + .string "ADC_WDHT(adcx) REG32((adcx) + 0x24U)" +.LASF2705: + .string "USART_CLEN_NONE CTL1_CLEN(0)" +.LASF175: + .string "__LDBL_MANT_DIG__ 113" +.LASF2219: + .string "I2S_MODE_SLAVETX I2SCTL_I2SOPMOD(0)" +.LASF2296: + .string "TIMER_CTL1_CCUC BIT(2)" +.LASF2232: + .string "SPI_DMA_RECEIVE ((uint8_t)0x01U)" +.LASF223: + .string "__FLT64_MIN_EXP__ (-1021)" +.LASF3353: + .string "reval" +.LASF128: + .string "__INT_FAST32_MAX__ 0x7fffffff" +.LASF357: + .string "__MISC_VISIBLE 0" +.LASF18: + .string "__SIZEOF_LONG_LONG__ 8" +.LASF549: + .string "ADC_IDATA3(adcx) REG32((adcx) + 0x48U)" +.LASF905: + .string "CAN_TSTAT_MST0 BIT(7)" +.LASF961: + .string "CAN_TMI_SFID BITS(21,31)" +.LASF3059: + .string "RCU_PLL_MUL10 CFG0_PLLMF(8)" +.LASF1479: + .string "EXTI_PD_PD13 BIT(13)" +.LASF1557: + .string "OB_USER_USER ((uint32_t)0x00FF0000U)" +.LASF214: + .string "__FLT32_NORM_MAX__ 3.40282346638528859811704183484516925e+38F32" +.LASF923: + .string "CAN_RFIFO0_RFL0 BITS(0,1)" +.LASF1308: + .string "DMA_MEMORY_INCREASE_DISABLE ((uint8_t)0x00U)" +.LASF232: + .string "__FLT64_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F64" +.LASF3053: + .string "RCU_PLL_MUL4 CFG0_PLLMF(2)" +.LASF3117: + .string "RCU_PREDV0_DIV15 CFG1_PREDV0(14)" +.LASF872: + .string "CAN_TMI(canx,bank) REG32((canx) + 0x180U + ((bank) * 0x10U))" +.LASF1804: + .string "GPIO_PORT_SOURCE_GPIOC ((uint8_t)0x02U)" +.LASF2983: + .string "RCU_RSTSCK_SWRSTF BIT(28)" +.LASF2024: + .string "DBG_CTL_SLP_HOLD BIT(0)" +.LASF2340: + .string "TIMER_INTF_CH3OF BIT(12)" +.LASF854: + .string "CAN_F10DATA1(canx) REG32((canx) + 0x294U)" +.LASF3281: + .string "RCU_FLAG_LPRST" +.LASF1904: + .string "I2C_CTL0_PECTRANS BIT(12)" +.LASF2382: + .string "TIMER_CHCTL2_CH1P BIT(5)" +.LASF2693: + .string "CTL0_WL(regval) (BIT(12) & ((uint32_t)(regval) << 12))" +.LASF3341: + .string "rcu_irc8m_adjust_value_set" +.LASF282: + .string "__USER_LABEL_PREFIX__ " +.LASF1422: + .string "EXTI_RTEN_RTEN13 BIT(13)" +.LASF1208: + .string "DAC_LFSR_BITS9_0 DAC_WAVE_BIT_WIDTH_10" +.LASF533: + .string "ADC_CTL1(adcx) REG32((adcx) + 0x08U)" +.LASF1682: + .string "GPIO_OCTL_OCTL14 BIT(14)" +.LASF565: + .string "ADC_CTL0_DISIC BIT(12)" +.LASF1800: + .string "GPIO_EVENT_PORT_GPIOD ((uint8_t)0x03U)" +.LASF1067: + .string "CAN_BT_BS1_10TQ ((uint8_t)0x09U)" +.LASF1866: + .string "GPIO_TIMER1_FULL_REMAP ((uint32_t)0x00180300U)" +.LASF3011: + .string "CFG0_SCS(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF3081: + .string "RCU_PLL_MUL32 (PLLMF_4 | CFG0_PLLMF(15))" +.LASF1255: + .string "DMA_CH5MADDR(dmax) REG32((dmax) + 0x78U)" +.LASF2249: + .string "SPI_FLAG_RXORERR SPI_STAT_RXORERR" +.LASF3241: + .string "RCU_TIMER5RST" +.LASF1150: + .string "DAC_CTL_DEN1 BIT(16)" +.LASF2663: + .string "USART_CTL2_DENR BIT(6)" +.LASF1500: + .string "OB_WP1 REG16((OB) + 0x0AU)" +.LASF995: + .string "CAN_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF180: + .string "__LDBL_MAX_10_EXP__ 4932" +.LASF2783: + .string "_BSD_WCHAR_T_ " +.LASF85: + .string "__WINT_WIDTH__ 32" +.LASF1240: + .string "DMA_CH2CTL(dmax) REG32((dmax) + 0x30U)" +.LASF2795: + .string "__need_NULL" +.LASF2462: + .string "TIMER_DMACFG_DMATA_CH1CV DMACFG_DMATA(14)" +.LASF1538: + .string "FMC_OBSTAT_REG_OFFSET 0x1CU" +.LASF2389: + .string "TIMER_CHCTL2_CH3EN BIT(12)" +.LASF1675: + .string "GPIO_OCTL_OCTL7 BIT(7)" +.LASF2329: + .string "TIMER_INTF_UPIF BIT(0)" +.LASF2845: + .string "RCU_AHBEN REG32(RCU + 0x14U)" +.LASF2929: + .string "RCU_APB1RST_CAN0RST BIT(25)" +.LASF542: + .string "ADC_RSQ0(adcx) REG32((adcx) + 0x2CU)" +.LASF2524: + .string "TIMER_BREAK_ENABLE ((uint16_t)TIMER_CCHP_BRKEN)" +.LASF2979: + .string "RCU_RSTSCK_IRC40KSTB BIT(1)" +.LASF2559: + .string "TIMER_IC_POLARITY_FALLING ((uint16_t)0x0002U)" +.LASF360: + .string "__XSI_VISIBLE 0" +.LASF2076: + .string "GD32VF103_RTC_H " +.LASF273: + .string "__FLT64X_MAX__ 1.18973149535723176508575932662800702e+4932F64x" +.LASF2486: + .string "TIMER_EVENT_SRC_UPG ((uint16_t)0x0001U)" +.LASF2167: + .string "SPI_I2SCTL_I2SSTD BITS(4,5)" +.LASF526: + .string "USE_STDPERIPH_DRIVER " +.LASF2967: + .string "RCU_APB1EN_CAN0EN BIT(25)" +.LASF3066: + .string "RCU_PLL_MUL17 (PLLMF_4 | CFG0_PLLMF(0))" +.LASF925: + .string "CAN_RFIFO0_RFO0 BIT(4)" +.LASF1625: + .string "GPIO_CTL0_CTL2 BITS(10, 11)" +.LASF2613: + .string "USART0 (USART_BASE+(0x0000F400U))" +.LASF2869: + .string "RCU_CFG0_AHBPSC BITS(4,7)" +.LASF3048: + .string "RCU_PLLSRC_HXTAL RCU_CFG0_PLLSEL" +.LASF665: + .string "ADC_CHANNEL_4 ((uint8_t)0x04U)" +.LASF3130: + .string "RCU_PREDV1_DIV11 CFG1_PREDV1(10)" +.LASF1448: + .string "EXTI_SWIEV_SWIEV1 BIT(1)" +.LASF1220: + .string "DAC_TRIANGLE_AMPLITUDE_63 DAC_WAVE_BIT_WIDTH_6" +.LASF102: + .string "__UINT32_MAX__ 0xffffffffUL" +.LASF2561: + .string "TIMER_IC_SELECTION_DIRECTTI ((uint16_t)0x0001U)" +.LASF1375: + .string "EXTI_INTEN_INTEN4 BIT(4)" +.LASF2915: + .string "RCU_APB1RST_TIMER2RST BIT(1)" +.LASF3359: + .string "int_flag_clear" +.LASF3056: + .string "RCU_PLL_MUL7 CFG0_PLLMF(5)" +.LASF606: + .string "ADC_INSERTED_CHANNEL_AUTO ADC_CTL0_ICA" +.LASF834: + .string "CAN_F18DATA0(canx) REG32((canx) + 0x2D0U)" +.LASF1165: + .string "DACC_R12DH_DAC0_DH BITS(0,11)" +.LASF1328: + .string "ECLIC_PRIGROUP_LEVEL1_PRIO3 1" +.LASF2441: + .string "TIMER_DMA_CH2D ((uint16_t)TIMER_DMAINTEN_CH2DEN)" +.LASF3036: + .string "RCU_APB2_CKAHB_DIV1 CFG0_APB2PSC(0)" +.LASF1132: + .string "DAC0_R12DH REG32(DAC + 0x08U)" +.LASF2349: + .string "TIMER_CHCTL0_CH0MS BITS(0,1)" +.LASF1911: + .string "I2C_CTL1_DMAON BIT(11)" +.LASF318: + .string "__riscv_zifencei 2000000" +.LASF275: + .string "__FLT64X_MIN__ 3.36210314311209350626267781732175260e-4932F64x" +.LASF529: + .string "ADC0 ADC_BASE" +.LASF1515: + .string "FMC_CTL_START BIT(6)" +.LASF3086: + .string "RCU_CKUSB_CKPLL_DIV2 CFG0_USBPSC(3)" +.LASF1076: + .string "CAN_BT_BS2_3TQ ((uint8_t)0x02U)" +.LASF1362: + .string "EXMC_NWAIT_POLARITY_HIGH ((uint32_t)0x00000200U)" +.LASF187: + .string "__LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L" +.LASF1080: + .string "CAN_BT_BS2_7TQ ((uint8_t)0x06U)" +.LASF2028: + .string "DBG_CTL_WWDGT_HOLD BIT(9)" +.LASF165: + .string "__DBL_MAX_10_EXP__ 308" +.LASF37: + .string "__UINTMAX_TYPE__ long long unsigned int" +.LASF2288: + .string "TIMER_CTL0_UPDIS BIT(1)" +.LASF573: + .string "ADC_CTL1_RSTCLB BIT(3)" +.LASF3120: + .string "RCU_PREDV1_DIV1 CFG1_PREDV1(0)" +.LASF1894: + .string "I2C_CTL0_SMBEN BIT(1)" +.LASF416: + .string "_UINT64_T_DECLARED " +.LASF504: + .string "AHB1_BUS_BASE ((uint32_t)0x40018000U)" +.LASF2690: + .string "CTL0_WM(regval) (BIT(11) & ((uint32_t)(regval) << 11))" +.LASF1337: + .string "EXMC_SNWTCFG0 REG32(EXMC + 0x104U)" +.LASF2971: + .string "RCU_APB1EN_DACEN BIT(29)" +.LASF508: + .string "WWDGT_BASE (APB1_BUS_BASE + 0x00002C00U)" +.LASF1469: + .string "EXTI_PD_PD3 BIT(3)" +.LASF1455: + .string "EXTI_SWIEV_SWIEV8 BIT(8)" +.LASF1630: + .string "GPIO_CTL0_MD5 BITS(20, 21)" +.LASF1798: + .string "GPIO_EVENT_PORT_GPIOB ((uint8_t)0x01U)" +.LASF3401: + .string "periph" +.LASF966: + .string "CAN_TMDATA0_DB1 BITS(8,15)" +.LASF1615: + .string "AFIO_EXTISS0 REG32(AFIO + 0x08U)" +.LASF430: + .string "INTPTR_MIN (-__INTPTR_MAX__ - 1)" +.LASF1668: + .string "GPIO_OCTL_OCTL0 BIT(0)" +.LASF2602: + .string "TIMER_ETP_FALLING TIMER_SMCFG_ETP" +.LASF2026: + .string "DBG_CTL_STB_HOLD BIT(2)" +.LASF2493: + .string "TIMER_EVENT_SRC_BRKG ((uint16_t)0x0080U)" +.LASF1978: + .string "I2C_PEC_ENABLE I2C_CTL0_PECEN" +.LASF1966: + .string "I2C_DUADEN_DISABLE ((uint32_t)0x00000000U)" +.LASF2541: + .string "TIMER_OCN_IDLE_STATE_LOW ((uint16_t)0x0000U)" +.LASF56: + .string "__UINT_LEAST64_TYPE__ long long unsigned int" +.LASF1585: + .string "OB_WP_22 ((uint32_t)0x00400000U)" +.LASF1123: + .string "CRC_DATA_DATA BITS(0, 31)" +.LASF1960: + .string "I2C_RECEIVER ((uint32_t)0x00000001U)" +.LASF2863: + .string "RCU_CTL_PLL1EN BIT(26)" +.LASF241: + .string "__FLT128_MAX_10_EXP__ 4932" +.LASF1368: + .string "EXTI_FTEN REG32(EXTI + 0x0CU)" +.LASF2802: + .string "TIMER_MTIMECMP_size 0x8" +.LASF2797: + .string "_GCC_MAX_ALIGN_T " +.LASF1542: + .string "WS_WSCNT_0 WS_WSCNT(0)" +.LASF1283: + .string "DMA_FLAG_ADD(flag,shift) ((flag) << ((shift) * 4U))" +.LASF683: + .string "ADC_INT_FLAG_EOC ADC_STAT_EOC" +.LASF2269: + .string "TIMER_SMCFG(timerx) REG32((timerx) + 0x08U)" +.LASF51: + .string "__INT_LEAST32_TYPE__ long int" +.LASF866: + .string "CAN_F22DATA1(canx) REG32((canx) + 0x2F4U)" +.LASF2639: + .string "USART_CTL0_RBNEIE BIT(5)" +.LASF1907: + .string "I2C_CTL1_I2CCLK BITS(0,5)" +.LASF374: + .string "_SYS__INTSUP_H " +.LASF913: + .string "CAN_TSTAT_MAL2 BIT(18)" +.LASF2239: + .string "SPI_I2S_INT_FLAG_RBNE ((uint8_t)0x01U)" +.LASF2470: + .string "TIMER_DMACFG_DMATC_3TRANSFER DMACFG_DMATC(2)" +.LASF3109: + .string "RCU_PREDV0_DIV7 CFG1_PREDV0(6)" +.LASF2181: + .string "SPI_TRANSMODE_BDRECEIVE SPI_CTL0_BDEN" +.LASF2668: + .string "USART_GP_PSC BITS(0,7)" +.LASF799: + .string "CAN_TMI2(canx) REG32((canx) + 0x1A0U)" +.LASF2898: + .string "RCU_INT_HXTALSTBIC BIT(19)" +.LASF2380: + .string "TIMER_CHCTL2_CH0NP BIT(3)" +.LASF810: + .string "CAN_RFIFOMDATA11(canx) REG32((canx) + 0x1CCU)" +.LASF2843: + .string "RCU_APB2RST REG32(RCU + 0x0CU)" +.LASF1589: + .string "OB_WP_26 ((uint32_t)0x04000000U)" +.LASF2872: + .string "RCU_CFG0_ADCPSC BITS(14,15)" +.LASF1197: + .string "DAC_WAVE_BIT_WIDTH_11 DWBW(10)" +.LASF2255: + .string "I2S_FLAG_TXURERR SPI_STAT_TXURERR" +.LASF390: + .string "long +4" +.LASF1266: + .string "DMA_INTC_HTFIFC BIT(2)" +.LASF3397: + .string "rcu_periph_reset_disable" +.LASF1072: + .string "CAN_BT_BS1_15TQ ((uint8_t)0x0EU)" +.LASF2676: + .string "USART_STAT_REG_OFFSET (0x00000000U)" +.LASF2707: + .string "CTL1_CPH(regval) (BIT(9) & ((uint32_t)(regval) << 9))" +.LASF3229: + .string "RCU_TIMER0" +.LASF3014: + .string "RCU_CKSYSSRC_PLL CFG0_SCS(2)" +.LASF1897: + .string "I2C_CTL0_PECEN BIT(5)" +.LASF159: + .string "__FLT_HAS_QUIET_NAN__ 1" +.LASF631: + .string "ADC0_1_EXTTRIG_INSERTED_T0_TRGO CTL1_ETSIC(0)" +.LASF2985: + .string "RCU_RSTSCK_WWDGTRSTF BIT(30)" +.LASF2611: + .string "UART3 (USART_BASE+(0x00000800U))" +.LASF2040: + .string "DBG_LOW_POWER_SLEEP DBG_CTL_SLP_HOLD" +.LASF590: + .string "ADC_ISQ_IL BITS(20,21)" +.LASF446: + .string "INT32_MAX (__INT32_MAX__)" +.LASF404: + .string "__LEAST64 \"ll\"" +.LASF681: + .string "ADC_INT_EOIC ADC_STAT_EOIC" +.LASF2514: + .string "TIMER_IOS_STATE_DISABLE ((uint16_t)0x0000U)" +.LASF1: + .string "__STDC_VERSION__ 201710L" +.LASF233: + .string "__FLT64_HAS_DENORM__ 1" +.LASF2433: + .string "TIMER_FLAG_BRK TIMER_INTF_BRKIF" +.LASF912: + .string "CAN_TSTAT_MTFNERR2 BIT(17)" +.LASF3122: + .string "RCU_PREDV1_DIV3 CFG1_PREDV1(2)" +.LASF2520: + .string "TIMER_CCHP_PROT_OFF CCHP_PROT(0)" +.LASF3334: + .string "pll1mf" +.LASF658: + .string "ADC_INSERTED_CHANNEL_1 ((uint8_t)0x01U)" +.LASF3314: + .string "RCU_PLL1_CK" +.LASF136: + .string "__INTPTR_MAX__ 0x7fffffff" +.LASF889: + .string "CAN_CTL_TTC BIT(7)" +.LASF1296: + .string "DMA_INT_FLAG_ERR DMA_INTF_ERRIF" +.LASF1289: + .string "DMA_CHCNT_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF2058: + .string "CTL_LVDT(regval) (BITS(5,7)&((uint32_t)(regval) << 5))" +.LASF224: + .string "__FLT64_MIN_10_EXP__ (-307)" +.LASF1746: + .string "GPIO_LOCK_LK14 BIT(14)" +.LASF2319: + .string "TIMER_DMAINTEN_CMTIE BIT(5)" +.LASF2870: + .string "RCU_CFG0_APB1PSC BITS(8,10)" +.LASF607: + .string "CTL0_SYNCM(regval) (BITS(16,19) & ((uint32_t)(regval) << 16))" +.LASF1531: + .string "FMC_REGIDX_BITS(regidx,bitpos0,bitpos1) (((uint32_t)(regidx) << 12) | ((uint32_t)(bitpos0) << 6) | (uint32_t)(bitpos1))" +.LASF1755: + .string "AFIO_PCF0_USART1_REMAP BIT(3)" +.LASF2180: + .string "SPI_TRANSMODE_RECEIVEONLY SPI_CTL0_RO" +.LASF558: + .string "ADC_CTL0_EOCIE BIT(5)" +.LASF1821: + .string "GPIO_EVENT_PIN_14 ((uint8_t)0x0EU)" +.LASF1370: + .string "EXTI_PD REG32(EXTI + 0x14U)" +.LASF2519: + .string "CCHP_PROT(regval) ((uint16_t)(BITS(8, 9) & ((uint32_t)(regval) << 8U)))" +.LASF2677: + .string "USART_CTL0_REG_OFFSET (0x0000000CU)" +.LASF394: + .string "__INT16 \"h\"" +.LASF2424: + .string "TIMER_INT_FLAG_TRG TIMER_INT_TRG" +.LASF3088: + .string "RCU_CKOUT0SRC_NONE CFG0_CKOUT0SEL(0)" +.LASF3236: + .string "RCU_USBFSRST" +.LASF2052: + .string "PMU_CTL_LVDT BITS(5,7)" +.LASF2922: + .string "RCU_APB1RST_SPI2RST BIT(15)" +.LASF3178: + .string "__uint8_t" +.LASF167: + .string "__DBL_MAX__ ((double)1.79769313486231570814527423731704357e+308L)" +.LASF2134: + .string "SPI_CTL0_LF BIT(7)" +.LASF2964: + .string "RCU_APB1EN_UART4EN BIT(20)" +.LASF601: + .string "ADC_FLAG_EOIC ADC_STAT_EOIC" +.LASF1129: + .string "DAC1 (1U)" +.LASF680: + .string "ADC_INT_EOC ADC_STAT_EOC" +.LASF2799: + .string "TIMER_MSIP 0xFFC" +.LASF2793: + .string "NULL" +.LASF782: + .string "CAN1 (CAN0 + 0x00000400U)" +.LASF3154: + .string "RCU_PLL2_MUL14 CFG1_PLL2MF(12)" +.LASF3370: + .string "rcu_usb_clock_config" +.LASF1347: + .string "EXMC_SNTCFG_ASET BITS(0,3)" +.LASF117: + .string "__UINT8_C(c) c" +.LASF2242: + .string "SPI_INT_FLAG_CRCERR ((uint8_t)0x04U)" +.LASF2986: + .string "RCU_RSTSCK_LPRSTF BIT(31)" +.LASF331: + .string "__I volatile const" +.LASF1892: + .string "I2C_FMPCFG(i2cx) REG32((i2cx) + 0x90U)" +.LASF1003: + .string "TSTAT_REG_OFFSET ((uint8_t)0x08U)" +.LASF2517: + .string "TIMER_OUTAUTO_ENABLE ((uint16_t)TIMER_CCHP_OAEN)" +.LASF936: + .string "CAN_INTEN_RFFIE1 BIT(5)" +.LASF2827: + .string "ECLIC_ADDR_BASE 0xd2000000" +.LASF1714: + .string "GPIO_BOP_CR14 BIT(30)" +.LASF649: + .string "WDHT_WDHT(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF2776: + .string "__wchar_t__ " +.LASF228: + .string "__FLT64_MAX__ 1.79769313486231570814527423731704357e+308F64" +.LASF3016: + .string "RCU_SCSS_IRC8M CFG0_SCSS(0)" +.LASF176: + .string "__LDBL_DIG__ 33" +.LASF1093: + .string "CAN_MODE_INITIALIZE ((uint8_t)0x01U)" +.LASF2656: + .string "USART_CTL1_LMEN BIT(14)" +.LASF3280: + .string "RCU_FLAG_WWDGTRST" +.LASF34: + .string "__WCHAR_TYPE__ int" +.LASF978: + .string "CAN_RFIFOMP_FI BITS(8,15)" +.LASF1883: + .string "I2C_CTL0(i2cx) REG32((i2cx) + 0x00U)" +.LASF846: + .string "CAN_F2DATA1(canx) REG32((canx) + 0x254U)" +.LASF1637: + .string "GPIO_CTL1_CTL8 BITS(2, 3)" +.LASF1364: + .string "EXTI EXTI_BASE" +.LASF2039: + .string "DBG_CTL_CAN1_HOLD BIT(21)" +.LASF2003: + .string "PSC_PSC(regval) (BITS(0,2) & ((uint32_t)(regval) << 0))" +.LASF1780: + .string "AFIO_EXTI13_SS BITS(4, 7)" +.LASF1398: + .string "EXTI_EVEN_EVEN8 BIT(8)" +.LASF324: + .string "GD32VF103V_EVAL 1" +.LASF1338: + .string "EXMC_SNCTL_NRBKEN BIT(0)" +.LASF2025: + .string "DBG_CTL_DSLP_HOLD BIT(1)" +.LASF643: + .string "ADC_SAMPLETIME_28POINT5 SAMPTX_SPT(3)" +.LASF2886: + .string "RCU_INT_PLL2STBIF BIT(6)" +.LASF84: + .string "__WCHAR_WIDTH__ 32" +.LASF3318: + .string "CK_AHB" +.LASF3015: + .string "CFG0_SCSS(regval) (BITS(2,3) & ((uint32_t)(regval) << 2))" +.LASF688: + .string "ADC_RESOLUTION_8B OVSCR_DRES(2)" +.LASF514: + .string "BKP_BASE (APB1_BUS_BASE + 0x00006C00U)" +.LASF3083: + .string "RCU_CKUSB_CKPLL_DIV1_5 CFG0_USBPSC(0)" +.LASF689: + .string "ADC_RESOLUTION_6B OVSCR_DRES(3)" +.LASF3102: + .string "CFG1_PREDV0(regval) (BITS(0,3) & ((uint32_t)(regval) << 0))" +.LASF773: + .string "OCTL_RCCV(regval) (BITS(0,6) & ((uint32_t)(regval) << 0))" +.LASF2579: + .string "TIMER_TRI_OUT_SRC_ENABLE CTL1_MMC(1)" +.LASF3124: + .string "RCU_PREDV1_DIV5 CFG1_PREDV1(4)" +.LASF968: + .string "CAN_TMDATA0_DB3 BITS(24,31)" +.LASF2110: + .string "RTC_INT_FLAG_OVERFLOW RTC_CTL_OVIF" +.LASF2065: + .string "PMU_LVDT_6 CTL_LVDT(6)" +.LASF1915: + .string "I2C_SADDR0_ADDRESS_H BITS(8,9)" +.LASF1103: + .string "CAN_TIMEOUT ((uint32_t)0x0000FFFFU)" +.LASF1106: + .string "CAN_INT_RFF0 CAN_INTEN_RFFIE0" +.LASF2373: + .string "TIMER_CHCTL1_CH2CAPPSC BITS(2,3)" +.LASF1574: + .string "OB_WP_11 ((uint32_t)0x00000800U)" +.LASF381: + .string "__int20__" +.LASF81: + .string "__INT_WIDTH__ 32" +.LASF766: + .string "BKP_TPCS_TIR BIT(1)" +.LASF1484: + .string "EXTI_PD_PD18 BIT(18)" +.LASF3317: + .string "CK_SYS" +.LASF613: + .string "ADC_DAUL_INSERTED_PARALLEL CTL0_SYNCM(5)" +.LASF438: + .string "UINT_LEAST8_MAX (__UINT_LEAST8_MAX__)" +.LASF1660: + .string "GPIO_ISTAT_ISTAT8 BIT(8)" +.LASF3357: + .string "rcu_interrupt_enable" +.LASF400: + .string "__FAST64 \"ll\"" +.LASF1134: + .string "DAC0_R8DH REG32(DAC + 0x10U)" +.LASF3114: + .string "RCU_PREDV0_DIV12 CFG1_PREDV0(11)" +.LASF1587: + .string "OB_WP_24 ((uint32_t)0x01000000U)" +.LASF865: + .string "CAN_F21DATA1(canx) REG32((canx) + 0x2ECU)" +.LASF1054: + .string "CAN_BT_SJW_1TQ ((uint8_t)0x00U)" +.LASF142: + .string "__FLT_EVAL_METHOD_TS_18661_3__ 0" +.LASF30: + .string "__FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__" +.LASF1922: + .string "I2C_STAT0_BTC BIT(2)" +.LASF33: + .string "__PTRDIFF_TYPE__ int" +.LASF988: + .string "CAN_FCTL_FLD BIT(0)" +.LASF1427: + .string "EXTI_RTEN_RTEN18 BIT(18)" +.LASF2678: + .string "USART_CTL1_REG_OFFSET (0x00000010U)" +.LASF1439: + .string "EXTI_FTEN_FTEN11 BIT(11)" +.LASF113: + .string "__INT_LEAST64_MAX__ 0x7fffffffffffffffLL" +.LASF93: + .string "__SIG_ATOMIC_MAX__ 0x7fffffff" +.LASF1898: + .string "I2C_CTL0_GCEN BIT(6)" +.LASF1040: + .string "ERR_ERRN(regval) (BITS(4,6) & ((uint32_t)(regval) << 4))" +.LASF1996: + .string "FWDGT_RLD REG32((FWDGT) + 0x00000008U)" +.LASF2437: + .string "TIMER_FLAG_CH3O TIMER_INTF_CH3OF" +.LASF1799: + .string "GPIO_EVENT_PORT_GPIOC ((uint8_t)0x02U)" +.LASF1004: + .string "RFIFO0_REG_OFFSET ((uint8_t)0x0CU)" +.LASF624: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH2 CTL1_ETSRC(2)" +.LASF3131: + .string "RCU_PREDV1_DIV12 CFG1_PREDV1(11)" +.LASF1846: + .string "GPIO_PIN_7 BIT(7)" +.LASF959: + .string "CAN_TMI_FF BIT(2)" +.LASF2020: + .string "DBG DBG_BASE" +.LASF1606: + .string "GPIO_CTL0(gpiox) REG32((gpiox) + 0x00U)" +.LASF2457: + .string "TIMER_DMACFG_DMATA_CNT DMACFG_DMATA(9)" +.LASF2430: + .string "TIMER_FLAG_CH3 TIMER_INTF_CH3IF" +.LASF3364: + .string "flag" +.LASF1391: + .string "EXTI_EVEN_EVEN1 BIT(1)" +.LASF977: + .string "CAN_RFIFOMP_DLENC BITS(0,3)" +.LASF3190: + .string "FlagStatus" +.LASF1435: + .string "EXTI_FTEN_FTEN7 BIT(7)" +.LASF2768: + .string "_SIZE_T_DEFINED " +.LASF2449: + .string "TIMER_DMACFG_DMATA_CTL1 DMACFG_DMATA(1)" +.LASF2030: + .string "DBG_CTL_TIMER1_HOLD BIT(11)" +.LASF3385: + .string "rcu_ckout0_config" +.LASF3043: + .string "RCU_CKADC_CKAPB2_DIV6 ((uint32_t)0x00000002U)" +.LASF1573: + .string "OB_WP_10 ((uint32_t)0x00000400U)" +.LASF3040: + .string "RCU_APB2_CKAHB_DIV16 CFG0_APB2PSC(7)" +.LASF2021: + .string "DBG_ID REG32(DBG + 0x00U)" +.LASF17: + .string "__SIZEOF_LONG__ 4" +.LASF2007: + .string "FWDGT_PSC_DIV32 ((uint8_t)PSC_PSC(3))" +.LASF2596: + .string "TIMER_MASTER_SLAVE_MODE_DISABLE ((uint32_t)0x00000000U)" +.LASF1592: + .string "OB_WP_29 ((uint32_t)0x20000000U)" +.LASF395: + .string "__INT32 \"l\"" +.LASF761: + .string "BKP_OCTL_ASOEN BIT(8)" +.LASF1293: + .string "DMA_INT_FLAG_G DMA_INTF_GIF" +.LASF1562: + .string "OB_WP3_WP3 ((uint32_t)0xFF000000U)" +.LASF3038: + .string "RCU_APB2_CKAHB_DIV4 CFG0_APB2PSC(5)" +.LASF492: + .string "REG16(addr) (*(volatile uint16_t *)(uint32_t)(addr))" +.LASF347: + .string "__NEWLIB__ 4" +.LASF1653: + .string "GPIO_ISTAT_ISTAT1 BIT(1)" +.LASF2393: + .string "TIMER_CAR_CARL BITS(0,15)" +.LASF2789: + .string "_GCC_WCHAR_T " +.LASF1267: + .string "DMA_INTC_ERRIFC BIT(3)" +.LASF1409: + .string "EXTI_RTEN_RTEN0 BIT(0)" +.LASF2947: + .string "RCU_APB2EN_ADC0EN BIT(9)" +.LASF2844: + .string "RCU_APB1RST REG32(RCU + 0x10U)" +.LASF1750: + .string "AFIO_EC_PORT BITS(4, 6)" +.LASF351: + .string "__GNUC_PREREQ__(ma,mi) __GNUC_PREREQ(ma, mi)" +.LASF1507: + .string "FMC_STAT_PGERR BIT(2)" +.LASF259: + .string "__FLT32X_NORM_MAX__ 1.79769313486231570814527423731704357e+308F32x" +.LASF2388: + .string "TIMER_CHCTL2_CH2NP BIT(11)" +.LASF2440: + .string "TIMER_DMA_CH1D ((uint16_t)TIMER_DMAINTEN_CH1DEN)" +.LASF3235: + .string "rcu_periph_sleep_enum" +.LASF2631: + .string "USART_DATA_DATA BITS(0,8)" +.LASF365: + .string "___int8_t_defined 1" +.LASF1460: + .string "EXTI_SWIEV_SWIEV13 BIT(13)" +.LASF2338: + .string "TIMER_INTF_CH1OF BIT(10)" +.LASF3258: + .string "RCU_GPIOARST" +.LASF460: + .string "INT_FAST16_MIN (-__INT_FAST16_MAX__ - 1)" +.LASF2977: + .string "RCU_BDCTL_BKPRST BIT(16)" +.LASF932: + .string "CAN_INTEN_RFNEIE0 BIT(1)" +.LASF2315: + .string "TIMER_DMAINTEN_CH0IE BIT(1)" +.LASF954: + .string "CAN_BT_SJW BITS(24,25)" +.LASF2425: + .string "TIMER_INT_FLAG_BRK TIMER_INT_BRK" +.LASF2019: + .string "GD32VF103_DBG_H " +.LASF440: + .string "INT16_MAX (__INT16_MAX__)" +.LASF112: + .string "__INT_LEAST32_WIDTH__ 32" +.LASF2125: + .string "SPI_RCRC(spix) REG32((spix) + 0x14U)" +.LASF1437: + .string "EXTI_FTEN_FTEN9 BIT(9)" +.LASF1193: + .string "DAC_WAVE_BIT_WIDTH_7 DWBW(6)" +.LASF267: + .string "__FLT64X_DIG__ 33" +.LASF3216: + .string "RCU_CAN1" +.LASF2703: + .string "USART_LBLEN_11B CTL1_LBLEN(1)" +.LASF1374: + .string "EXTI_INTEN_INTEN3 BIT(3)" +.LASF1839: + .string "GPIO_PIN_0 BIT(0)" +.LASF1097: + .string "CAN_FILTERBITS_32BIT ((uint8_t)0x01U)" +.LASF3213: + .string "RCU_I2C0" +.LASF3214: + .string "RCU_I2C1" +.LASF828: + .string "CAN_F12DATA0(canx) REG32((canx) + 0x2A0U)" +.LASF2001: + .string "FWDGT_STAT_PUD BIT(0)" +.LASF637: + .string "ADC0_1_EXTTRIG_INSERTED_EXTI_15 CTL1_ETSIC(6)" +.LASF2623: + .string "USART_STAT_NERR BIT(2)" +.LASF947: + .string "CAN_ERR_BOERR BIT(2)" +.LASF1945: + .string "I2C_RT_RISETIME BITS(0,5)" +.LASF2366: + .string "TIMER_CHCTL1_CH2COMCTL BITS(4,6)" +.LASF3347: + .string "rcu_osci_bypass_mode_enable" +.LASF261: + .string "__FLT32X_EPSILON__ 2.22044604925031308084726333618164062e-16F32x" +.LASF3278: + .string "RCU_FLAG_SWRST" +.LASF2987: + .string "RCU_AHBRST_USBFSRST BIT(12)" +.LASF3194: + .string "long double" +.LASF2754: + .string "___int_ptrdiff_t_h " +.LASF1499: + .string "OB_WP0 REG16((OB) + 0x08U)" +.LASF1582: + .string "OB_WP_19 ((uint32_t)0x00080000U)" +.LASF2749: + .string "_T_PTRDIFF_ " +.LASF2050: + .string "PMU_CTL_STBRST BIT(3)" +.LASF1930: + .string "I2C_STAT0_OUERR BIT(11)" +.LASF2247: + .string "SPI_FLAG_CRCERR SPI_STAT_CRCERR" +.LASF2292: + .string "TIMER_CTL0_CAM BITS(5,6)" +.LASF1504: + .string "FMC_KEY_KEY BITS(0,31)" +.LASF1584: + .string "OB_WP_21 ((uint32_t)0x00200000U)" +.LASF2919: + .string "RCU_APB1RST_TIMER6RST BIT(5)" +.LASF3150: + .string "RCU_PLL2_MUL10 CFG1_PLL2MF(8)" +.LASF3289: + .string "RCU_INT_FLAG_PLL2STB" +.LASF481: + .string "INT8_C(x) __INT8_C(x)" +.LASF3282: + .string "rcu_flag_enum" +.LASF1171: + .string "DAC0_DO_DAC0_DO BITS(0,11)" +.LASF2744: + .string "N200_FUNC_H " +.LASF1694: + .string "GPIO_BOP_BOP10 BIT(10)" +.LASF788: + .string "CAN_INTEN(canx) REG32((canx) + 0x14U)" +.LASF1627: + .string "GPIO_CTL0_CTL3 BITS(14, 15)" +.LASF2551: + .string "TIMER_OC_SHADOW_DISABLE ((uint16_t)0x0000U)" +.LASF309: + .string "__riscv_xlen 32" +.LASF1710: + .string "GPIO_BOP_CR10 BIT(26)" +.LASF2122: + .string "SPI_STAT(spix) REG32((spix) + 0x08U)" +.LASF2771: + .string "___int_size_t_h " +.LASF2374: + .string "TIMER_CHCTL1_CH2CAPFLT BITS(4,7)" +.LASF1459: + .string "EXTI_SWIEV_SWIEV12 BIT(12)" +.LASF2505: + .string "TIMER_CKDIV_DIV2 CTL0_CKDIV(1)" +.LASF2381: + .string "TIMER_CHCTL2_CH1EN BIT(4)" +.LASF3331: + .string "clk_exp" +.LASF2111: + .string "RTC_FLAG_SECOND RTC_CTL_SCIF" +.LASF1564: + .string "OB_WP_1 ((uint32_t)0x00000002U)" +.LASF231: + .string "__FLT64_EPSILON__ 2.22044604925031308084726333618164062e-16F64" +.LASF1125: + .string "CRC_CTL_RST BIT(0)" +.LASF3313: + .string "RCU_PLL_CK" +.LASF2436: + .string "TIMER_FLAG_CH2O TIMER_INTF_CH2OF" +.LASF1815: + .string "GPIO_EVENT_PIN_8 ((uint8_t)0x08U)" +.LASF3302: + .string "RCU_INT_LXTALSTB" +.LASF1196: + .string "DAC_WAVE_BIT_WIDTH_10 DWBW(9)" +.LASF809: + .string "CAN_RFIFOMDATA01(canx) REG32((canx) + 0x1C8U)" +.LASF277: + .string "__FLT64X_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F64x" +.LASF2290: + .string "TIMER_CTL0_SPM BIT(3)" +.LASF2049: + .string "PMU_CTL_WURST BIT(2)" +.LASF874: + .string "CAN_TMDATA0(canx,bank) REG32((canx) + 0x188U + ((bank) * 0x10U))" +.LASF158: + .string "__FLT_HAS_INFINITY__ 1" +.LASF2012: + .string "FWDGT_WRITEACCESS_DISABLE ((uint16_t)0x0000U)" +.LASF3156: + .string "RCU_PLL2_MUL16 CFG1_PLL2MF(14)" +.LASF2233: + .string "SPI_CRC_TX ((uint8_t)0x00U)" +.LASF73: + .string "__WCHAR_MAX__ 0x7fffffff" +.LASF3128: + .string "RCU_PREDV1_DIV9 CFG1_PREDV1(8)" +.LASF3232: + .string "rcu_periph_enum" +.LASF2711: + .string "USART_CPL_LOW CTL1_CPL(0)" +.LASF2536: + .string "TIMER_OCN_POLARITY_HIGH ((uint16_t)0x0000U)" +.LASF3126: + .string "RCU_PREDV1_DIV7 CFG1_PREDV1(6)" +.LASF1219: + .string "DAC_TRIANGLE_AMPLITUDE_31 DAC_WAVE_BIT_WIDTH_5" +.LASF2855: + .string "RCU_CTL_IRC8MADJ BITS(3,7)" +.LASF525: + .string "USBFS_BASE (AHB1_BUS_BASE + 0x0FFE8000U)" +.LASF2577: + .string "CTL1_MMC(regval) (BITS(4, 6) & ((uint32_t)(regval) << 4U))" +.LASF2975: + .string "RCU_BDCTL_RTCSRC BITS(8,9)" +.LASF661: + .string "ADC_CHANNEL_0 ((uint8_t)0x00U)" +.LASF209: + .string "__FLT32_MIN_10_EXP__ (-37)" +.LASF122: + .string "__UINT_LEAST64_MAX__ 0xffffffffffffffffULL" +.LASF3222: + .string "RCU_GPIOA" +.LASF2595: + .string "TIMER_MASTER_SLAVE_MODE_ENABLE TIMER_SMCFG_MSM" +.LASF3226: + .string "RCU_GPIOE" +.LASF3237: + .string "RCU_TIMER1RST" +.LASF1951: + .string "I2C_REG_VAL2(i2cx,offset) (REG32((i2cx) + ((uint32_t)(offset) >> 22)))" +.LASF269: + .string "__FLT64X_MIN_10_EXP__ (-4931)" +.LASF602: + .string "ADC_FLAG_STIC ADC_STAT_STIC" +.LASF2835: + .string "ECLIC_GROUP_LEVEL1_PRIO3 1" +.LASF306: + .string "__riscv_mul 1" +.LASF2414: + .string "TIMER_INT_CH3 TIMER_DMAINTEN_CH3IE" +.LASF2728: + .string "GD32VF103_WWDGT_H " +.LASF64: + .string "__UINT_FAST64_TYPE__ long long unsigned int" +.LASF2674: + .string "USART_REG_VAL2(usartx,offset) (REG32((usartx) + ((uint32_t)(offset) >> 22)))" +.LASF922: + .string "CAN_TSTAT_TMLS2 BIT(31)" +.LASF2328: + .string "TIMER_DMAINTEN_TRGDEN BIT(14)" +.LASF3169: + .string "SEL_IRC8M ((uint16_t)0U)" +.LASF146: + .string "__FLT_DIG__ 6" +.LASF933: + .string "CAN_INTEN_RFFIE0 BIT(2)" +.LASF455: + .string "INT_LEAST64_MAX (__INT_LEAST64_MAX__)" +.LASF276: + .string "__FLT64X_EPSILON__ 1.92592994438723585305597794258492732e-34F64x" +.LASF1597: + .string "FMC_SIZE (*(uint16_t *)0x1FFFF7E0U)" +.LASF2253: + .string "I2S_FLAG_TBE SPI_STAT_TBE" +.LASF1756: + .string "AFIO_PCF0_USART2_REMAP BITS(4, 5)" +.LASF1871: + .string "GPIO_CAN0_FULL_REMAP ((uint32_t)0x001D6000U)" +.LASF2191: + .string "SPI_CK_PL_LOW_PH_2EDGE SPI_CTL0_CKPH" +.LASF3045: + .string "RCU_CKADC_CKAPB2_DIV12 ((uint32_t)0x00000005U)" +.LASF911: + .string "CAN_TSTAT_MTF2 BIT(16)" +.LASF1566: + .string "OB_WP_3 ((uint32_t)0x00000008U)" +.LASF1309: + .string "DMA_MEMORY_INCREASE_ENABLE ((uint8_t)0x01U)" +.LASF918: + .string "CAN_TSTAT_TME1 BIT(27)" +.LASF820: + .string "CAN_F4DATA0(canx) REG32((canx) + 0x260U)" +.LASF2877: + .string "RCU_CFG0_CKOUT0SEL BITS(24,27)" +.LASF3198: + .string "RCU_EXMC" +.LASF2069: + .string "PMU_FLAG_LVD PMU_CS_LVDF" +.LASF490: + .string "UINTMAX_C(x) __UINTMAX_C(x)" +.LASF1359: + .string "EXMC_MEMORY_TYPE_NOR SNCTL_NRTP(2)" +.LASF2999: + .string "AHBEN_REG_OFFSET 0x14U" +.LASF596: + .string "ADC_OVSCR_OVSS BITS(5,8)" +.LASF1956: + .string "I2C_I2CMODE_ENABLE ((uint32_t)0x00000000U)" +.LASF2560: + .string "TIMER_IC_POLARITY_BOTH_EDGE ((uint16_t)0x000AU)" +.LASF314: + .string "__riscv_m 2000000" +.LASF1959: + .string "I2C_SMBUS_HOST I2C_CTL0_SMBSEL" +.LASF1962: + .string "I2C_ACK_DISABLE ((uint32_t)0x00000000U)" +.LASF179: + .string "__LDBL_MAX_EXP__ 16384" +.LASF1560: + .string "OB_WP1_WP1 ((uint32_t)0x0000FF00U)" +.LASF23: + .string "__SIZEOF_SIZE_T__ 4" +.LASF338: + .string "IRC8M_STARTUP_TIMEOUT ((uint16_t)0x0500)" +.LASF1719: + .string "GPIO_BC_CR3 BIT(3)" +.LASF3052: + .string "RCU_PLL_MUL3 CFG0_PLLMF(1)" +.LASF1543: + .string "WS_WSCNT_1 WS_WSCNT(1)" +.LASF1102: + .string "CAN_FT_REMOTE ((uint32_t)0x00000002U)" +.LASF1242: + .string "DMA_CH2PADDR(dmax) REG32((dmax) + 0x38U)" +.LASF1512: + .string "FMC_CTL_MER BIT(2)" +.LASF1958: + .string "I2C_SMBUS_DEVICE ((uint32_t)0x00000000U)" +.LASF1318: + .string "CHCTL_PRIO(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF2614: + .string "USART_STAT(usartx) REG32((usartx) + (0x00000000U))" +.LASF2925: + .string "RCU_APB1RST_UART3RST BIT(19)" +.LASF2445: + .string "TIMER_DMAREQUEST_UPDATEEVENT TIMER_CTL1_DMAS" +.LASF255: + .string "__FLT32X_MAX_EXP__ 1024" +.LASF629: + .string "ADC0_1_EXTTRIG_REGULAR_NONE CTL1_ETSRC(7)" +.LASF2812: + .string "_BITUL(x) (_AC(1,UL) << (x))" +.LASF3253: + .string "RCU_CAN1RST" +.LASF1708: + .string "GPIO_BOP_CR8 BIT(24)" +.LASF108: + .string "__INT16_C(c) c" +.LASF1731: + .string "GPIO_BC_CR15 BIT(15)" +.LASF104: + .string "__INT_LEAST8_MAX__ 0x7f" +.LASF3325: + .string "apb1_freq" +.LASF2034: + .string "DBG_CTL_I2C0_HOLD BIT(15)" +.LASF382: + .string "long" +.LASF2805: + .string "TIMER_CTRL_ADDR 0xd1000000" +.LASF2491: + .string "TIMER_EVENT_SRC_CMTG ((uint16_t)0x0020U)" +.LASF2907: + .string "RCU_APB2RST_PDRST BIT(5)" +.LASF1482: + .string "EXTI_PD_PD16 BIT(16)" +.LASF1274: + .string "DMA_CHXCTL_PNAGA BIT(6)" +.LASF2353: + .string "TIMER_CHCTL0_CH0COMCEN BIT(7)" +.LASF63: + .string "__UINT_FAST32_TYPE__ unsigned int" +.LASF2720: + .string "USART_RTS_ENABLE CLT2_RTSEN(1)" +.LASF356: + .string "__LARGEFILE_VISIBLE 0" +.LASF1853: + .string "GPIO_PIN_14 BIT(14)" +.LASF1174: + .string "DAC_TRIGGER_T5_TRGO CTL_DTSEL(0)" +.LASF2077: + .string "RTC RTC_BASE" +.LASF952: + .string "CAN_BT_BS1 BITS(16,19)" +.LASF1473: + .string "EXTI_PD_PD7 BIT(7)" +.LASF1121: + .string "CRC_FDATA REG32(CRC + 0x04U)" +.LASF2882: + .string "RCU_INT_IRC8MSTBIF BIT(2)" +.LASF1546: + .string "OB_FWDGT_HW ((uint8_t)0x00U)" +.LASF1969: + .string "I2C_SCLSTRETCH_DISABLE I2C_CTL0_SS" +.LASF1012: + .string "FDATA_MASK_HIGH(regval) (BITS(16,31) & ((uint32_t)(regval) << 16))" +.LASF2980: + .string "RCU_RSTSCK_RSTFC BIT(24)" +.LASF999: + .string "CAN_REG_VALS(canx,offset) (REG32((canx) + ((uint32_t)(offset) >> 12)))" +.LASF1672: + .string "GPIO_OCTL_OCTL4 BIT(4)" +.LASF49: + .string "__INT_LEAST8_TYPE__ signed char" +.LASF1444: + .string "EXTI_FTEN_FTEN16 BIT(16)" +.LASF1288: + .string "DMA_CHCTL_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF786: + .string "CAN_RFIFO0(canx) REG32((canx) + 0x0CU)" +.LASF1327: + .string "ECLIC_PRIGROUP_LEVEL0_PRIO4 0" +.LASF2660: + .string "USART_CTL2_HDEN BIT(3)" +.LASF1209: + .string "DAC_LFSR_BITS10_0 DAC_WAVE_BIT_WIDTH_11" +.LASF2988: + .string "RCU_CFG1_PREDV0 BITS(0,3)" +.LASF1453: + .string "EXTI_SWIEV_SWIEV6 BIT(6)" +.LASF1361: + .string "EXMC_NWAIT_POLARITY_LOW ((uint32_t)0x00000000U)" +.LASF253: + .string "__FLT32X_MIN_EXP__ (-1021)" +.LASF3350: + .string "rcu_clock_freq_get" +.LASF368: + .string "___int64_t_defined 1" +.LASF2200: + .string "SPI_PSC_128 CTL0_PSC(6)" +.LASF196: + .string "__FLT16_MAX_10_EXP__ 4" +.LASF1057: + .string "CAN_BT_SJW_4TQ ((uint8_t)0x03U)" +.LASF3321: + .string "rcu_clock_freq_enum" +.LASF3008: + .string "INT_REG_OFFSET 0x08U" +.LASF229: + .string "__FLT64_NORM_MAX__ 1.79769313486231570814527423731704357e+308F64" +.LASF2059: + .string "PMU_LVDT_0 CTL_LVDT(0)" +.LASF3404: + .string "rcu_periph_clock_enable" +.LASF358: + .string "__POSIX_VISIBLE 199009" +.LASF1260: + .string "DMA_INTF_GIF BIT(0)" +.LASF1286: + .string "DMA_CHPADDR(dma,channel) REG32(((dma) + 0x10U) + 0x14U * (uint32_t)(channel))" +.LASF29: + .string "__BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__" +.LASF456: + .string "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)" +.LASF2890: + .string "RCU_INT_IRC8MSTBIE BIT(10)" +.LASF1367: + .string "EXTI_RTEN REG32(EXTI + 0x08U)" +.LASF640: + .string "ADC_SAMPLETIME_1POINT5 SAMPTX_SPT(0)" +.LASF1740: + .string "GPIO_LOCK_LK8 BIT(8)" +.LASF1477: + .string "EXTI_PD_PD11 BIT(11)" +.LASF2193: + .string "CTL0_PSC(regval) (BITS(3,5) & ((uint32_t)(regval) << 3))" +.LASF677: + .string "ADC_CHANNEL_16 ((uint8_t)0x10U)" +.LASF953: + .string "CAN_BT_BS2 BITS(20,22)" +.LASF1559: + .string "OB_WP0_WP0 ((uint32_t)0x000000FFU)" +.LASF226: + .string "__FLT64_MAX_10_EXP__ 308" +.LASF311: + .string "__riscv_cmodel_medany 1" +.LASF2066: + .string "PMU_LVDT_7 CTL_LVDT(7)" +.LASF3135: + .string "RCU_PREDV1_DIV16 CFG1_PREDV1(15)" +.LASF2451: + .string "TIMER_DMACFG_DMATA_DMAINTEN DMACFG_DMATA(3)" +.LASF3013: + .string "RCU_CKSYSSRC_HXTAL CFG0_SCS(1)" +.LASF1333: + .string "GD32VF103_EXMC_H " +.LASF257: + .string "__FLT32X_DECIMAL_DIG__ 17" +.LASF2473: + .string "TIMER_DMACFG_DMATC_6TRANSFER DMACFG_DMATC(5)" +.LASF2580: + .string "TIMER_TRI_OUT_SRC_UPDATE CTL1_MMC(2)" +.LASF2716: + .string "CLT2_DENT(regval) (BIT(7) & ((uint32_t)(regval) << 7))" +.LASF3157: + .string "RCU_PLL2_MUL20 CFG1_PLL2MF(15)" +.LASF3304: + .string "RCU_INT_HXTALSTB" +.LASF2190: + .string "SPI_CK_PL_HIGH_PH_1EDGE SPI_CTL0_CKPL" +.LASF1454: + .string "EXTI_SWIEV_SWIEV7 BIT(7)" +.LASF1420: + .string "EXTI_RTEN_RTEN11 BIT(11)" +.LASF1244: + .string "DMA_CH3CTL(dmax) REG32((dmax) + 0x44U)" +.LASF2187: + .string "SPI_ENDIAN_MSB ((uint32_t)0x00000000U)" +.LASF1217: + .string "DAC_TRIANGLE_AMPLITUDE_7 DAC_WAVE_BIT_WIDTH_3" +.LASF1680: + .string "GPIO_OCTL_OCTL12 BIT(12)" +.LASF781: + .string "CAN0 CAN_BASE" +.LASF2448: + .string "TIMER_DMACFG_DMATA_CTL0 DMACFG_DMATA(0)" +.LASF3179: + .string "__uint16_t" +.LASF133: + .string "__UINT_FAST16_MAX__ 0xffffffffU" +.LASF1868: + .string "GPIO_TIMER2_FULL_REMAP ((uint32_t)0x001A0C00U)" +.LASF2014: + .string "FWDGT_KEY_ENABLE ((uint16_t)0xCCCCU)" +.LASF2431: + .string "TIMER_FLAG_CMT TIMER_INTF_CMTIF" +.LASF2147: + .string "SPI_CTL1_TMOD BIT(4)" +.LASF2439: + .string "TIMER_DMA_CH0D ((uint16_t)TIMER_DMAINTEN_CH0DEN)" +.LASF1466: + .string "EXTI_PD_PD0 BIT(0)" +.LASF120: + .string "__UINT_LEAST32_MAX__ 0xffffffffUL" +.LASF1228: + .string "DMA0 (DMA_BASE)" +.LASF2336: + .string "TIMER_INTF_BRKIF BIT(7)" +.LASF556: + .string "ADC_STAT_STRC BIT(4)" +.LASF3022: + .string "RCU_AHB_CKSYS_DIV4 CFG0_AHBPSC(9)" +.LASF3297: + .string "RCU_INT_FLAG_PLL1STB_CLR" +.LASF1917: + .string "I2C_SADDR1_DUADEN BIT(0)" +.LASF3067: + .string "RCU_PLL_MUL18 (PLLMF_4 | CFG0_PLLMF(1))" +.LASF448: + .string "INT_LEAST32_MIN (-__INT_LEAST32_MAX__ - 1)" +.LASF1820: + .string "GPIO_EVENT_PIN_13 ((uint8_t)0x0DU)" +.LASF432: + .string "UINTPTR_MAX (__UINTPTR_MAX__)" +.LASF19: + .string "__SIZEOF_SHORT__ 2" +.LASF1280: + .string "DMA_CHXCNT_CNT BITS(0,15)" +.LASF1064: + .string "CAN_BT_BS1_7TQ ((uint8_t)0x06U)" +.LASF408: + .string "__int8_t_defined 1" +.LASF1254: + .string "DMA_CH5PADDR(dmax) REG32((dmax) + 0x74U)" +.LASF1765: + .string "AFIO_PCF0_SPI2_REMAP BIT(28)" +.LASF1299: + .string "DMA_FLAG_HTF DMA_INTF_HTFIF" +.LASF35: + .string "__WINT_TYPE__ unsigned int" +.LASF3319: + .string "CK_APB1" +.LASF3320: + .string "CK_APB2" +.LASF1354: + .string "EXMC_NOR_DATABUS_WIDTH_8B SNCTL_NRW(0)" +.LASF1112: + .string "CAN_INT_PERR CAN_INTEN_PERRIE" +.LASF110: + .string "__INT_LEAST32_MAX__ 0x7fffffffL" +.LASF1353: + .string "SNCTL_NRW(regval) (BITS(4,5) & ((uint32_t)(regval) << 4))" +.LASF2105: + .string "RTC_INT_SECOND RTC_INTEN_SCIE" +.LASF491: + .string "REG32(addr) (*(volatile uint32_t *)(uint32_t)(addr))" +.LASF2345: + .string "TIMER_SWEVG_CH3G BIT(4)" +.LASF3327: + .string "pllsel" +.LASF3032: + .string "RCU_APB1_CKAHB_DIV4 CFG0_APB1PSC(5)" +.LASF148: + .string "__FLT_MIN_10_EXP__ (-37)" +.LASF1733: + .string "GPIO_LOCK_LK1 BIT(1)" +.LASF352: + .string "__ATFILE_VISIBLE 0" +.LASF598: + .string "ADC_OVSCR_DRES BITS(12,13)" +.LASF2172: + .string "SPI_I2SPSC_DIV BITS(0,7)" +.LASF668: + .string "ADC_CHANNEL_7 ((uint8_t)0x07U)" +.LASF1335: + .string "EXMC_SNCTL0 REG32(EXMC + 0x00U)" +.LASF1935: + .string "I2C_STAT1_I2CBSY BIT(1)" +.LASF1098: + .string "CAN_FILTERMODE_MASK ((uint8_t)0x00U)" +.LASF1702: + .string "GPIO_BOP_CR2 BIT(18)" +.LASF812: + .string "CAN_FMCFG(canx) REG32((canx) + 0x204U)" +.LASF892: + .string "CAN_STAT_IWS BIT(0)" +.LASF851: + .string "CAN_F7DATA1(canx) REG32((canx) + 0x27CU)" +.LASF1860: + .string "GPIO_USART2_PARTIAL_REMAP ((uint32_t)0x00140010U)" +.LASF507: + .string "RTC_BASE (APB1_BUS_BASE + 0x00002800U)" +.LASF1140: + .string "DACC_R8DH REG32(DAC + 0x28U)" +.LASF1699: + .string "GPIO_BOP_BOP15 BIT(15)" +.LASF2537: + .string "TIMER_OCN_POLARITY_LOW ((uint16_t)0x0008U)" +.LASF979: + .string "CAN_RFIFOMP_TS BITS(16,31)" +.LASF574: + .string "ADC_CTL1_DMA BIT(8)" +.LASF2552: + .string "TIMER_OC_FAST_ENABLE ((uint16_t)0x0004)" +.LASF1094: + .string "CAN_MODE_NORMAL ((uint8_t)0x02U)" +.LASF1261: + .string "DMA_INTF_FTFIF BIT(1)" +.LASF767: + .string "BKP_TPCS_TPIE BIT(2)" +.LASF1464: + .string "EXTI_SWIEV_SWIEV17 BIT(17)" +.LASF950: + .string "CAN_ERR_RECNT BITS(24,31)" +.LASF1128: + .string "DAC0 (0U)" +.LASF969: + .string "CAN_TMDATA1_DB4 BITS(0,7)" +.LASF2084: + .string "RTC_CNTH REG32(RTC + 0x18U)" +.LASF886: + .string "CAN_CTL_ARD BIT(4)" +.LASF1563: + .string "OB_WP_0 ((uint32_t)0x00000001U)" +.LASF2775: + .string "__need_size_t" +.LASF235: + .string "__FLT64_HAS_QUIET_NAN__ 1" +.LASF1654: + .string "GPIO_ISTAT_ISTAT2 BIT(2)" +.LASF205: + .string "__FLT16_HAS_QUIET_NAN__ 1" +.LASF486: + .string "UINT32_C(x) __UINT32_C(x)" +.LASF237: + .string "__FLT128_DIG__ 33" +.LASF3029: + .string "CFG0_APB1PSC(regval) (BITS(8,10) & ((uint32_t)(regval) << 8))" +.LASF617: + .string "ADC_DAUL_INSERTED_TRIGGER_ROTATION CTL0_SYNCM(9)" +.LASF1666: + .string "GPIO_ISTAT_ISTAT14 BIT(14)" +.LASF1321: + .string "DMA_PRIORITY_HIGH CHCTL_PRIO(2U)" +.LASF2722: + .string "CLT2_CTSEN(regval) (BIT(9) & ((uint32_t)(regval) << 9))" +.LASF2578: + .string "TIMER_TRI_OUT_SRC_RESET CTL1_MMC(0)" +.LASF1577: + .string "OB_WP_14 ((uint32_t)0x00004000U)" +.LASF1404: + .string "EXTI_EVEN_EVEN14 BIT(14)" +.LASF2635: + .string "USART_CTL0_RWU BIT(1)" +.LASF768: + .string "BKP_TPCS_TEF BIT(8)" +.LASF2038: + .string "DBG_CTL_TIMER6_HOLD BIT(20)" +.LASF789: + .string "CAN_ERR(canx) REG32((canx) + 0x18U)" +.LASF1173: + .string "CTL_DTSEL(regval) (BITS(3,5) & ((uint32_t)(regval) << 3))" +.LASF2342: + .string "TIMER_SWEVG_CH0G BIT(1)" +.LASF334: + .string "HXTAL_VALUE ((uint32_t)8000000)" +.LASF242: + .string "__FLT128_DECIMAL_DIG__ 36" +.LASF325: + .string "__RTTHREAD__ 1" +.LASF2620: + .string "USART_GP(usartx) REG32((usartx) + (0x00000018U))" +.LASF218: + .string "__FLT32_HAS_DENORM__ 1" +.LASF2060: + .string "PMU_LVDT_1 CTL_LVDT(1)" +.LASF2492: + .string "TIMER_EVENT_SRC_TRGG ((uint16_t)0x0040U)" +.LASF189: + .string "__LDBL_HAS_INFINITY__ 1" +.LASF2318: + .string "TIMER_DMAINTEN_CH3IE BIT(4)" +.LASF1576: + .string "OB_WP_13 ((uint32_t)0x00002000U)" +.LASF2359: + .string "TIMER_CHCTL0_CH0CAPPSC BITS(2,3)" +.LASF2862: + .string "RCU_CTL_PLLSTB BIT(25)" +.LASF2135: + .string "SPI_CTL0_SWNSS BIT(8)" +.LASF1344: + .string "EXMC_SNCTL_WREN BIT(12)" +.LASF2748: + .string "_PTRDIFF_T " +.LASF1113: + .string "CAN_INT_BO CAN_INTEN_BOIE" +.LASF2091: + .string "RTC_CTL_SCIF BIT(0)" +.LASF1598: + .string "SRAM_SIZE (*(uint16_t *)0x1FFFF7E2U)" +.LASF2782: + .string "_WCHAR_T_ " +.LASF3080: + .string "RCU_PLL_MUL31 (PLLMF_4 | CFG0_PLLMF(14))" +.LASF2400: + .string "TIMER_CCHP_PROT BITS(8,9)" +.LASF1497: + .string "OB_SPC REG16((OB) + 0x00U)" +.LASF330: + .string "GD32VF103_H " +.LASF563: + .string "ADC_CTL0_ICA BIT(10)" +.LASF497: + .string "FLASH_BASE ((uint32_t)0x08000000U)" +.LASF2529: + .string "TIMER_CH_3 ((uint16_t)0x0003U)" +.LASF68: + .string "__SCHAR_MAX__ 0x7f" +.LASF293: + .string "__GCC_ATOMIC_INT_LOCK_FREE 2" +.LASF258: + .string "__FLT32X_MAX__ 1.79769313486231570814527423731704357e+308F32x" +.LASF2900: + .string "RCU_INT_PLL1STBIC BIT(21)" +.LASF3372: + .string "rcu_adc_clock_config" +.LASF38: + .string "__CHAR16_TYPE__ short unsigned int" +.LASF2: + .string "__STDC_UTF_16__ 1" +.LASF2031: + .string "DBG_CTL_TIMER2_HOLD BIT(12)" +.LASF2831: + .string "MTIME_HANDLER eclic_mtip_handler" +.LASF2581: + .string "TIMER_TRI_OUT_SRC_CH0 CTL1_MMC(3)" +.LASF2283: + .string "TIMER_CH3CV(timerx) REG32((timerx) + 0x40U)" +.LASF101: + .string "__UINT16_MAX__ 0xffff" +.LASF2103: + .string "RTC_ALRMH_ALRM BITS(0,15)" +.LASF1887: + .string "I2C_DATA(i2cx) REG32((i2cx) + 0x10U)" +.LASF774: + .string "RTC_OUTPUT_ALARM_PULSE ((uint16_t)0x0000U)" +.LASF154: + .string "__FLT_MIN__ 1.17549435082228750796873653722224568e-38F" +.LASF1081: + .string "CAN_BT_BS2_8TQ ((uint8_t)0x07U)" +.LASF3260: + .string "RCU_GPIOCRST" +.LASF843: + .string "CAN_F27DATA0(canx) REG32((canx) + 0x318U)" +.LASF270: + .string "__FLT64X_MAX_EXP__ 16384" +.LASF278: + .string "__FLT64X_HAS_DENORM__ 1" +.LASF2841: + .string "RCU_CFG0 REG32(RCU + 0x04U)" +.LASF779: + .string "BKP_INT_FLAG_TAMPER BKP_TPCS_TIF" +.LASF960: + .string "CAN_TMI_EFID BITS(3,31)" +.LASF1790: + .string "GPIO_MODE_OUT_OD ((uint8_t)0x14U)" +.LASF3360: + .string "rcu_interrupt_flag_get" +.LASF1047: + .string "CAN_ERRN_6 ERR_ERRN(6U)" +.LASF3: + .string "__STDC_UTF_32__ 1" +.LASF1290: + .string "DMA_CHPADDR_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF2695: + .string "USART_WL_9BIT CTL0_WL(1)" +.LASF1833: + .string "GPIO_PIN_SOURCE_10 ((uint8_t)0x0AU)" +.LASF2106: + .string "RTC_INT_ALARM RTC_INTEN_ALRMIE" +.LASF2978: + .string "RCU_RSTSCK_IRC40KEN BIT(0)" +.LASF2088: + .string "RTC_INTEN_SCIE BIT(0)" +.LASF1558: + .string "OB_USER_USER_N ((uint32_t)0xFF000000U)" +.LASF1060: + .string "CAN_BT_BS1_3TQ ((uint8_t)0x02U)" +.LASF616: + .string "ADC_DAUL_REGULAL_FOLLOWUP_SLOW CTL0_SYNCM(8)" +.LASF2873: + .string "RCU_CFG0_PLLSEL BIT(16)" +.LASF566: + .string "ADC_CTL0_DISNUM BITS(13,15)" +.LASF1744: + .string "GPIO_LOCK_LK12 BIT(12)" +.LASF2630: + .string "USART_STAT_CTSF BIT(9)" +.LASF694: + .string "ADC_OVERSAMPLING_SHIFT_1B OVSCR_OVSS(1)" +.LASF3227: + .string "RCU_ADC0" +.LASF3228: + .string "RCU_ADC1" +.LASF1011: + .string "BT_MODE(regval) (BITS(30,31) & ((uint32_t)(regval) << 30))" +.LASF3163: + .string "RCU_I2S2SRC_CKPLL2_MUL2 RCU_CFG1_I2S2SEL" +.LASF6: + .string "__GNUC_MINOR__ 2" +.LASF234: + .string "__FLT64_HAS_INFINITY__ 1" +.LASF3116: + .string "RCU_PREDV0_DIV14 CFG1_PREDV0(13)" +.LASF1082: + .string "CAN_MAILBOX0 ((uint8_t)0x00U)" +.LASF155: + .string "__FLT_EPSILON__ 1.19209289550781250000000000000000000e-7F" +.LASF593: + .string "ADC_RDATA_ADC1RDTR BITS(16,31)" +.LASF2276: + .string "TIMER_CNT(timerx) REG32((timerx) + 0x24U)" +.LASF3005: + .string "RSTSCK_REG_OFFSET 0x24U" +.LASF2714: + .string "USART_DENR_ENABLE CLT2_DENR(1)" +.LASF3288: + .string "RCU_INT_FLAG_PLL1STB" +.LASF833: + .string "CAN_F17DATA0(canx) REG32((canx) + 0x2C8U)" +.LASF371: + .string "___int_least32_t_defined 1" +.LASF1389: + .string "EXTI_INTEN_INTEN18 BIT(18)" +.LASF1536: + .string "FMC_STAT_REG_OFFSET 0x0CU" +.LASF2938: + .string "RCU_AHBEN_CRCEN BIT(6)" +.LASF2195: + .string "SPI_PSC_4 CTL0_PSC(1)" +.LASF1413: + .string "EXTI_RTEN_RTEN4 BIT(4)" +.LASF41: + .string "__INT8_TYPE__ signed char" +.LASF557: + .string "ADC_CTL0_WDCHSEL BITS(0,4)" +.LASF1525: + .string "FMC_WP_WP BITS(0,31)" +.LASF1201: + .string "DAC_LFSR_BITS2_0 DAC_WAVE_BIT_WIDTH_3" +.LASF2808: + .string "N200_ECLIC_H " +.LASF2312: + .string "TIMER_SMCFG_SMC1 BIT(14)" +.LASF2495: + .string "TIMER_COUNTER_EDGE CTL0_CAM(0)" +.LASF1811: + .string "GPIO_EVENT_PIN_4 ((uint8_t)0x04U)" +.LASF2159: + .string "SPI_STAT_FERR BIT(8)" +.LASF3396: + .string "rcu_bkp_reset_enable" +.LASF489: + .string "INTMAX_C(x) __INTMAX_C(x)" +.LASF1628: + .string "GPIO_CTL0_MD4 BITS(16, 17)" +.LASF583: + .string "ADC_SAMPTX_SPTN BITS(0,2)" +.LASF450: + .string "UINT_LEAST32_MAX (__UINT_LEAST32_MAX__)" +.LASF1657: + .string "GPIO_ISTAT_ISTAT5 BIT(5)" +.LASF2409: + .string "TIMER_DMATB_DMATB BITS(0,15)" +.LASF2830: + .string "MSIP_HANDLER eclic_msip_handler" +.LASF2924: + .string "RCU_APB1RST_USART2RST BIT(18)" +.LASF2572: + .string "TIMER_SMCFG_TRGSEL_ITI3 SMCFG_TRGSEL(3)" +.LASF2718: + .string "USART_DENT_DISABLE CLT2_DENT(0)" +.LASF1378: + .string "EXTI_INTEN_INTEN7 BIT(7)" +.LASF1843: + .string "GPIO_PIN_4 BIT(4)" +.LASF1050: + .string "CAN_NORMAL_MODE ((uint8_t)0x00U)" +.LASF383: + .string "signed +0" +.LASF1322: + .string "DMA_PRIORITY_ULTRA_HIGH CHCTL_PRIO(3U)" +.LASF3390: + .string "ck_apb1" +.LASF3388: + .string "ck_apb2" +.LASF685: + .string "OVSCR_DRES(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF2484: + .string "TIMER_DMACFG_DMATC_17TRANSFER DMACFG_DMATC(16)" +.LASF1142: + .string "DAC1_DO REG32(DAC + 0x30U)" +.LASF3403: + .string "rcu_periph_clock_disable" +.LASF1163: + .string "DAC1_L12DH_DAC1_DH BITS(4,15)" +.LASF1748: + .string "GPIO_LOCK_LKK BIT(16)" +.LASF3351: + .string "rcu_osci_stab_wait" +.LASF107: + .string "__INT_LEAST16_MAX__ 0x7fff" +.LASF103: + .string "__UINT64_MAX__ 0xffffffffffffffffULL" +.LASF424: + .string "__int_least32_t_defined 1" +.LASF1249: + .string "DMA_CH4CNT(dmax) REG32((dmax) + 0x5CU)" +.LASF1245: + .string "DMA_CH3CNT(dmax) REG32((dmax) + 0x48U)" +.LASF412: + .string "_INT32_T_DECLARED " +.LASF1539: + .string "UNLOCK_KEY0 ((uint32_t)0x45670123U)" +.LASF2352: + .string "TIMER_CHCTL0_CH0COMCTL BITS(4,6)" +.LASF411: + .string "__int16_t_defined 1" +.LASF2926: + .string "RCU_APB1RST_UART4RST BIT(20)" +.LASF2585: + .string "TIMER_TRI_OUT_SRC_O3CPRE CTL1_MMC(7)" +.LASF652: + .string "ISQ_IL(regval) (BITS(20,21) & ((uint32_t)(regval) << 20))" +.LASF1185: + .string "DAC_WAVE_MODE_TRIANGLE CTL_DWM(2)" +.LASF3104: + .string "RCU_PREDV0_DIV2 CFG1_PREDV0(1)" +.LASF3078: + .string "RCU_PLL_MUL29 (PLLMF_4 | CFG0_PLLMF(12))" +.LASF2294: + .string "TIMER_CTL0_CKDIV BITS(8,9)" +.LASF3381: + .string "predv0_source" +.LASF1893: + .string "I2C_CTL0_I2CEN BIT(0)" +.LASF3400: + .string "rcu_periph_clock_sleep_disable" +.LASF1041: + .string "CAN_ERRN_0 ERR_ERRN(0U)" +.LASF996: + .string "CAN_REG_VAL(canx,offset) (REG32((canx) + ((uint32_t)(offset) >> 6)))" +.LASF522: + .string "RCU_BASE (AHB1_BUS_BASE + 0x00009000U)" +.LASF696: + .string "ADC_OVERSAMPLING_SHIFT_3B OVSCR_OVSS(3)" +.LASF1109: + .string "CAN_INT_RFF1 CAN_INTEN_RFFIE1" +.LASF2415: + .string "TIMER_INT_CMT TIMER_DMAINTEN_CMTIE" +.LASF3121: + .string "RCU_PREDV1_DIV2 CFG1_PREDV1(1)" +.LASF1044: + .string "CAN_ERRN_3 ERR_ERRN(3U)" +.LASF2791: + .string "_BSD_WCHAR_T_" +.LASF2945: + .string "RCU_APB2EN_PDEN BIT(5)" +.LASF211: + .string "__FLT32_MAX_10_EXP__ 38" +.LASF2670: + .string "USART_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF934: + .string "CAN_INTEN_RFOIE0 BIT(3)" +.LASF2701: + .string "CTL1_LBLEN(regval) (BIT(5) & ((uint32_t)(regval) << 5))" +.LASF1432: + .string "EXTI_FTEN_FTEN4 BIT(4)" +.LASF1829: + .string "GPIO_PIN_SOURCE_6 ((uint8_t)0x06U)" +.LASF69: + .string "__SHRT_MAX__ 0x7fff" +.LASF2360: + .string "TIMER_CHCTL0_CH0CAPFLT BITS(4,7)" +.LASF797: + .string "CAN_TMDATA01(canx) REG32((canx) + 0x198U)" +.LASF2128: + .string "SPI_I2SPSC(spix) REG32((spix) + 0x20U)" +.LASF1989: + .string "I2C_DTCY_16_9 I2C_CKCFG_DTCY" +.LASF1425: + .string "EXTI_RTEN_RTEN16 BIT(16)" +.LASF3024: + .string "RCU_AHB_CKSYS_DIV16 CFG0_AHBPSC(11)" +.LASF3073: + .string "RCU_PLL_MUL24 (PLLMF_4 | CFG0_PLLMF(7))" +.LASF1928: + .string "I2C_STAT0_LOSTARB BIT(9)" +.LASF2525: + .string "TIMER_BREAK_DISABLE ((uint16_t)0x0000U)" +.LASF2813: + .string "_BITULL(x) (_AC(1,ULL) << (x))" +.LASF2918: + .string "RCU_APB1RST_TIMER5RST BIT(4)" +.LASF72: + .string "__LONG_LONG_MAX__ 0x7fffffffffffffffLL" +.LASF2465: + .string "TIMER_DMACFG_DMATA_CCHP DMACFG_DMATA(17)" +.LASF83: + .string "__LONG_LONG_WIDTH__ 64" +.LASF2192: + .string "SPI_CK_PL_HIGH_PH_2EDGE (SPI_CTL0_CKPL | SPI_CTL0_CKPH)" +.LASF45: + .string "__UINT8_TYPE__ unsigned char" +.LASF3033: + .string "RCU_APB1_CKAHB_DIV8 CFG0_APB1PSC(6)" +.LASF105: + .string "__INT8_C(c) c" +.LASF398: + .string "__FAST16 " +.LASF1077: + .string "CAN_BT_BS2_4TQ ((uint8_t)0x03U)" +.LASF127: + .string "__INT_FAST16_WIDTH__ 32" +.LASF2650: + .string "USART_CTL1_LBDIE BIT(6)" +.LASF129: + .string "__INT_FAST32_WIDTH__ 32" +.LASF1371: + .string "EXTI_INTEN_INTEN0 BIT(0)" +.LASF2356: + .string "TIMER_CHCTL0_CH1COMSEN BIT(11)" +.LASF1912: + .string "I2C_CTL1_DMALST BIT(12)" +.LASF2267: + .string "TIMER_CTL0(timerx) REG32((timerx) + 0x00U)" +.LASF1590: + .string "OB_WP_27 ((uint32_t)0x08000000U)" +.LASF2940: + .string "RCU_AHBEN_USBFSEN BIT(12)" +.LASF315: + .string "__riscv_a 2000000" +.LASF1203: + .string "DAC_LFSR_BITS4_0 DAC_WAVE_BIT_WIDTH_5" +.LASF500: + .string "DBG_BASE ((uint32_t)0xE0042000U)" +.LASF1110: + .string "CAN_INT_RFO1 CAN_INTEN_RFOIE1" +.LASF2070: + .string "PMU_LDO_NORMAL ((uint32_t)0x00000000U)" +.LASF3153: + .string "RCU_PLL2_MUL13 CFG1_PLL2MF(11)" +.LASF260: + .string "__FLT32X_MIN__ 2.22507385850720138309023271733240406e-308F32x" +.LASF243: + .string "__FLT128_MAX__ 1.18973149535723176508575932662800702e+4932F128" +.LASF2109: + .string "RTC_INT_FLAG_ALARM RTC_CTL_ALRMIF" +.LASF949: + .string "CAN_ERR_TECNT BITS(16,23)" +.LASF75: + .string "__WINT_MAX__ 0xffffffffU" +.LASF534: + .string "ADC_SAMPT0(adcx) REG32((adcx) + 0x0CU)" +.LASF757: + .string "BKP_TPCS REG16((BKP) + 0x34U)" +.LASF3261: + .string "RCU_GPIODRST" +.LASF3311: + .string "RCU_IRC8M" +.LASF825: + .string "CAN_F9DATA0(canx) REG32((canx) + 0x288U)" +.LASF98: + .string "__INT32_MAX__ 0x7fffffffL" +.LASF1909: + .string "I2C_CTL1_EVIE BIT(9)" +.LASF1214: + .string "DAC_ALIGN_8B_R DATA_ALIGN(2)" +.LASF3266: + .string "RCU_SPI0RST" +.LASF3272: + .string "RCU_FLAG_PLL1STB" +.LASF1502: + .string "OB_WP3 REG16((OB) + 0x0EU)" +.LASF1434: + .string "EXTI_FTEN_FTEN6 BIT(6)" +.LASF863: + .string "CAN_F19DATA1(canx) REG32((canx) + 0x2DCU)" +.LASF2215: + .string "I2S_FRAMEFORMAT_DT32B_CH32B (I2SCTL_DTLEN(2) | SPI_I2SCTL_CHLEN)" +.LASF1635: + .string "GPIO_CTL0_CTL7 BITS(30, 31)" +.LASF3100: + .string "RCU_RTCSRC_IRC40K BDCTL_RTCSRC(2)" +.LASF2344: + .string "TIMER_SWEVG_CH2G BIT(3)" +.LASF2766: + .string "_BSD_SIZE_T_ " +.LASF2137: + .string "SPI_CTL0_RO BIT(10)" +.LASF1029: + .string "GET_RFIFOMDATA0_DB0(regval) GET_BITS((uint32_t)(regval), 0U, 7U)" +.LASF472: + .string "SIZE_MAX (__SIZE_MAX__)" +.LASF1311: + .string "DMA_PERIPHERAL_WIDTH_8BIT CHCTL_PWIDTH(0U)" +.LASF2075: + .string "WFE_CMD ((uint8_t)0x01U)" +.LASF42: + .string "__INT16_TYPE__ short int" +.LASF47: + .string "__UINT32_TYPE__ long unsigned int" +.LASF1533: + .string "FMC_BIT_POS0(val) (((uint32_t)(val) >> 6) & 0x1FU)" +.LASF2114: + .string "RTC_FLAG_RSYN RTC_CTL_RSYNF" +.LASF3085: + .string "RCU_CKUSB_CKPLL_DIV2_5 CFG0_USBPSC(2)" +.LASF76: + .string "__WINT_MIN__ 0U" +.LASF1946: + .string "I2C_FMPCFG_FMPEN BIT(0)" +.LASF308: + .string "__riscv_muldiv 1" +.LASF2293: + .string "TIMER_CTL0_ARSE BIT(7)" +.LASF429: + .string "__int_fast64_t_defined 1" +.LASF1938: + .string "I2C_STAT1_DEFSMB BIT(5)" +.LASF1691: + .string "GPIO_BOP_BOP7 BIT(7)" +.LASF3378: + .string "rcu_predv1_config" +.LASF698: + .string "ADC_OVERSAMPLING_SHIFT_5B OVSCR_OVSS(5)" +.LASF2788: + .string "__INT_WCHAR_T_H " +.LASF3362: + .string "rcu_all_reset_flag_clear" +.LASF2564: + .string "TIMER_IC_PSC_DIV1 ((uint16_t)0x0000U)" +.LASF2757: + .string "__need_ptrdiff_t" +.LASF577: + .string "ADC_CTL1_ETEIC BIT(15)" +.LASF1509: + .string "FMC_STAT_ENDF BIT(5)" +.LASF1287: + .string "DMA_CHMADDR(dma,channel) REG32(((dma) + 0x14U) + 0x14U * (uint32_t)(channel))" +.LASF2108: + .string "RTC_INT_FLAG_SECOND RTC_CTL_SCIF" +.LASF2535: + .string "TIMER_OC_POLARITY_LOW ((uint16_t)0x0002U)" +.LASF3098: + .string "RCU_RTCSRC_NONE BDCTL_RTCSRC(0)" +.LASF74: + .string "__WCHAR_MIN__ (-__WCHAR_MAX__ - 1)" +.LASF2035: + .string "DBG_CTL_I2C1_HOLD BIT(16)" +.LASF1336: + .string "EXMC_SNTCFG0 REG32(EXMC + 0x04U)" +.LASF1932: + .string "I2C_STAT0_SMBTO BIT(14)" +.LASF422: + .string "__int_least8_t_defined 1" +.LASF951: + .string "CAN_BT_BAUDPSC BITS(0,9)" +.LASF1723: + .string "GPIO_BC_CR7 BIT(7)" +.LASF2337: + .string "TIMER_INTF_CH0OF BIT(9)" +.LASF1417: + .string "EXTI_RTEN_RTEN8 BIT(8)" +.LASF1191: + .string "DAC_WAVE_BIT_WIDTH_5 DWBW(4)" +.LASF245: + .string "__FLT128_MIN__ 3.36210314311209350626267781732175260e-4932F128" +.LASF609: + .string "ADC_DAUL_REGULAL_PARALLEL_INSERTED_PARALLEL CTL0_SYNCM(1)" +.LASF1005: + .string "RFIFO1_REG_OFFSET ((uint8_t)0x10U)" +.LASF152: + .string "__FLT_MAX__ 3.40282346638528859811704183484516925e+38F" +.LASF138: + .string "__UINTPTR_MAX__ 0xffffffffU" +.LASF418: + .string "_INTMAX_T_DECLARED " +.LASF109: + .string "__INT_LEAST16_WIDTH__ 16" +.LASF2662: + .string "USART_CTL2_SCEN BIT(5)" +.LASF635: + .string "ADC0_1_EXTTRIG_INSERTED_T2_CH3 CTL1_ETSIC(4)" +.LASF2165: + .string "SPI_I2SCTL_DTLEN BITS(1,2)" +.LASF2202: + .string "I2S_AUDIOSAMPLE_8K ((uint32_t)8000U)" +.LASF955: + .string "CAN_BT_LCMOD BIT(30)" +.LASF1402: + .string "EXTI_EVEN_EVEN12 BIT(12)" +.LASF406: + .string "_INT8_T_DECLARED " +.LASF147: + .string "__FLT_MIN_EXP__ (-125)" +.LASF1137: + .string "DAC1_R8DH REG32(DAC + 0x1CU)" +.LASF2314: + .string "TIMER_DMAINTEN_UPIE BIT(0)" +.LASF1572: + .string "OB_WP_9 ((uint32_t)0x00000200U)" +.LASF2447: + .string "DMACFG_DMATA(regval) (BITS(0, 4) & ((uint32_t)(regval) << 0U))" +.LASF2287: + .string "TIMER_CTL0_CEN BIT(0)" +.LASF1632: + .string "GPIO_CTL0_MD6 BITS(24, 25)" +.LASF644: + .string "ADC_SAMPLETIME_41POINT5 SAMPTX_SPT(4)" +.LASF2860: + .string "RCU_CTL_CKMEN BIT(19)" +.LASF1178: + .string "DAC_TRIGGER_T1_TRGO CTL_DTSEL(4)" +.LASF1073: + .string "CAN_BT_BS1_16TQ ((uint8_t)0x0FU)" +.LASF883: + .string "CAN_CTL_SLPWMOD BIT(1)" +.LASF1239: + .string "DMA_CH1MADDR(dmax) REG32((dmax) + 0x28U)" +.LASF1986: + .string "DATA_TRANS(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF188: + .string "__LDBL_HAS_DENORM__ 1" +.LASF945: + .string "CAN_ERR_WERR BIT(0)" +.LASF2260: + .string "TIMER0 (TIMER_BASE + 0x00012C00U)" +.LASF1366: + .string "EXTI_EVEN REG32(EXTI + 0x04U)" +.LASF1091: + .string "CAN_SFID_MASK ((uint32_t)0x000007FFU)" +.LASF2903: + .string "RCU_APB2RST_AFRST BIT(0)" +.LASF161: + .string "__DBL_DIG__ 15" +.LASF1695: + .string "GPIO_BOP_BOP11 BIT(11)" +.LASF1878: + .string "GPIO_TIMER1ITI1_REMAP ((uint32_t)0x00202000U)" +.LASF3393: + .string "rcu_system_clock_source_config" +.LASF3034: + .string "RCU_APB1_CKAHB_DIV16 CFG0_APB1PSC(7)" +.LASF1159: + .string "DAC0_R12DH_DAC0_DH BITS(0,11)" +.LASF183: + .string "__LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L" +.LASF764: + .string "BKP_TPCTL_TPAL BIT(1)" +.LASF7: + .string "__GNUC_PATCHLEVEL__ 0" +.LASF1620: + .string "GPIO_CTL0_MD0 BITS(0, 1)" +.LASF2594: + .string "TIMER_SLAVE_MODE_EXTERNAL0 SMCFG_SMC(7)" +.LASF2645: + .string "USART_CTL0_WM BIT(11)" +.LASF1994: + .string "FWDGT_CTL REG32((FWDGT) + 0x00000000U)" +.LASF2468: + .string "TIMER_DMACFG_DMATC_1TRANSFER DMACFG_DMATC(0)" +.LASF419: + .string "_UINTMAX_T_DECLARED " +.LASF1794: + .string "GPIO_OSPEED_10MHZ ((uint8_t)0x01U)" +.LASF3240: + .string "RCU_TIMER4RST" +.LASF2456: + .string "TIMER_DMACFG_DMATA_CHCTL2 DMACFG_DMATA(8)" +.LASF1684: + .string "GPIO_BOP_BOP0 BIT(0)" +.LASF750: + .string "BKP_DATA37 REG16((BKP) + 0xACU)" +.LASF1941: + .string "I2C_STAT1_PECV BITS(8,15)" +.LASF1924: + .string "I2C_STAT0_STPDET BIT(4)" +.LASF3315: + .string "RCU_PLL2_CK" +.LASF903: + .string "CAN_TSTAT_MAL0 BIT(2)" +.LASF96: + .string "__INT8_MAX__ 0x7f" +.LASF1205: + .string "DAC_LFSR_BITS6_0 DAC_WAVE_BIT_WIDTH_7" +.LASF317: + .string "__riscv_zicsr 2000000" +.LASF2644: + .string "USART_CTL0_PCEN BIT(10)" +.LASF95: + .string "__SIG_ATOMIC_WIDTH__ 32" +.LASF700: + .string "ADC_OVERSAMPLING_SHIFT_7B OVSCR_OVSS(7)" +.LASF3070: + .string "RCU_PLL_MUL21 (PLLMF_4 | CFG0_PLLMF(4))" +.LASF2905: + .string "RCU_APB2RST_PBRST BIT(3)" +.LASF2324: + .string "TIMER_DMAINTEN_CH1DEN BIT(10)" +.LASF1676: + .string "GPIO_OCTL_OCTL8 BIT(8)" +.LASF998: + .string "CAN_REGIDX_BITS(regidx,bitpos0,bitpos1) (((uint32_t)(regidx) << 12) | ((uint32_t)(bitpos0) << 6) | (uint32_t)(bitpos1))" +.LASF1954: + .string "I2C_STAT0_REG_OFFSET 0x14U" +.LASF1716: + .string "GPIO_BC_CR0 BIT(0)" +.LASF3195: + .string "RCU_DMA0" +.LASF3196: + .string "RCU_DMA1" +.LASF2687: + .string "USART_PM_NONE CTL0_PM(0)" +.LASF1035: + .string "GET_RFIFOMDATA1_DB6(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF868: + .string "CAN_F24DATA1(canx) REG32((canx) + 0x304U)" +.LASF2376: + .string "TIMER_CHCTL1_CH3CAPFLT BITS(12,15)" +.LASF664: + .string "ADC_CHANNEL_3 ((uint8_t)0x03U)" +.LASF54: + .string "__UINT_LEAST16_TYPE__ short unsigned int" +.LASF3293: + .string "RCU_INT_FLAG_LXTALSTB_CLR" +.LASF1352: + .string "EXMC_SNTCFG(region) REG32(EXMC + 0x04U + 0x08U * (region))" +.LASF190: + .string "__LDBL_HAS_QUIET_NAN__ 1" +.LASF3092: + .string "RCU_CKOUT0SRC_CKPLL_DIV2 CFG0_CKOUT0SEL(7)" +.LASF1979: + .string "I2C_PEC_DISABLE ((uint32_t)0x00000000U)" +.LASF2055: + .string "PMU_CS_STBF BIT(1)" +.LASF2098: + .string "RTC_PSCL_PSC BITS(0,15)" +.LASF3166: + .string "RCU_DEEPSLEEP_V_1_1 DSV_DSLPVS(1)" +.LASF3018: + .string "RCU_SCSS_PLL CFG0_SCSS(2)" +.LASF2375: + .string "TIMER_CHCTL1_CH3CAPPSC BITS(10,11)" +.LASF1768: + .string "AFIO_EXTI1_SS BITS(4, 7)" +.LASF1775: + .string "AFIO_EXTI8_SS BITS(0, 3)" +.LASF3208: + .string "RCU_SPI2" +.LASF58: + .string "__INT_FAST16_TYPE__ int" +.LASF202: + .string "__FLT16_DENORM_MIN__ 5.96046447753906250000000000000000000e-8F16" +.LASF1803: + .string "GPIO_PORT_SOURCE_GPIOB ((uint8_t)0x01U)" +.LASF2756: + .string "_PTRDIFF_T_DECLARED " +.LASF3171: + .string "SEL_PLL ((uint16_t)2U)" +.LASF436: + .string "INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)" +.LASF965: + .string "CAN_TMDATA0_DB0 BITS(0,7)" +.LASF713: + .string "BKP_DATA0 REG16((BKP) + 0x04U)" +.LASF2367: + .string "TIMER_CHCTL1_CH2COMCEN BIT(7)" +.LASF1373: + .string "EXTI_INTEN_INTEN2 BIT(2)" +.LASF1207: + .string "DAC_LFSR_BITS8_0 DAC_WAVE_BIT_WIDTH_9" +.LASF2478: + .string "TIMER_DMACFG_DMATC_11TRANSFER DMACFG_DMATC(10)" +.LASF2626: + .string "USART_STAT_RBNE BIT(5)" +.LASF1561: + .string "OB_WP2_WP2 ((uint32_t)0x00FF0000U)" +.LASF215: + .string "__FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32" +.LASF858: + .string "CAN_F14DATA1(canx) REG32((canx) + 0x2B4U)" +.LASF2501: + .string "TIMER_COUNTER_UP ((uint16_t)0x0000U)" +.LASF3180: + .string "short unsigned int" +.LASF742: + .string "BKP_DATA29 REG16((BKP) + 0x8CU)" +.LASF1323: + .string "DMA_MEMORY_TO_MEMORY_DISABLE ((uint32_t)0x00000000U)" +.LASF207: + .string "__FLT32_DIG__ 6" +.LASF901: + .string "CAN_TSTAT_MTF0 BIT(0)" +.LASF292: + .string "__GCC_ATOMIC_SHORT_LOCK_FREE 1" +.LASF1644: + .string "GPIO_CTL1_MD12 BITS(16, 17)" +.LASF1146: + .string "DAC_CTL_DTSEL0 BITS(3,5)" +.LASF2263: + .string "TIMER3 (TIMER_BASE + 0x00000800U)" +.LASF2461: + .string "TIMER_DMACFG_DMATA_CH0CV DMACFG_DMATA(13)" +.LASF2798: + .string "N200_TIMER_H " +.LASF1145: + .string "DAC_CTL_DTEN0 BIT(2)" +.LASF576: + .string "ADC_CTL1_ETSIC BITS(12,14)" +.LASF2800: + .string "TIMER_MSIP_size 0x4" +.LASF3245: + .string "RCU_SPI2RST" +.LASF2743: + .string "WWDGT_CFG_PSC_DIV8 CFG_PSC(3)" +.LASF3361: + .string "int_flag" +.LASF1863: + .string "GPIO_TIMER0_FULL_REMAP ((uint32_t)0x001600C0U)" +.LASF2418: + .string "TIMER_INT_FLAG_UP TIMER_INT_UP" +.LASF3348: + .string "rcu_osci_off" +.LASF805: + .string "CAN_RFIFOMDATA00(canx) REG32((canx) + 0x1B8U)" +.LASF1547: + .string "OB_DEEPSLEEP_NRST ((uint8_t)0x02U)" +.LASF298: + .string "__GCC_HAVE_DWARF2_CFI_ASM 1" +.LASF897: + .string "CAN_STAT_TS BIT(8)" +.LASF1864: + .string "GPIO_TIMER1_PARTIAL_REMAP0 ((uint32_t)0x00180100U)" +.LASF3051: + .string "RCU_PLL_MUL2 CFG0_PLLMF(0)" +.LASF1456: + .string "EXTI_SWIEV_SWIEV9 BIT(9)" +.LASF1669: + .string "GPIO_OCTL_OCTL1 BIT(1)" +.LASF2951: + .string "RCU_APB2EN_USART0EN BIT(14)" +.LASF1737: + .string "GPIO_LOCK_LK5 BIT(5)" +.LASF718: + .string "BKP_DATA5 REG16((BKP) + 0x18U)" +.LASF612: + .string "ADC_DAUL_INSERTED_PARALLEL_REGULAL_FOLLOWUP_SLOW CTL0_SYNCM(4)" +.LASF1275: + .string "DMA_CHXCTL_MNAGA BIT(7)" +.LASF2161: + .string "SPI_CRCPOLY_CRCPOLY BITS(0,15)" +.LASF2280: + .string "TIMER_CH0CV(timerx) REG32((timerx) + 0x34U)" +.LASF1901: + .string "I2C_CTL0_STOP BIT(9)" +.LASF399: + .string "__FAST32 " +.LASF1251: + .string "DMA_CH4MADDR(dmax) REG32((dmax) + 0x64U)" +.LASF1382: + .string "EXTI_INTEN_INTEN11 BIT(11)" +.LASF66: + .string "__UINTPTR_TYPE__ unsigned int" +.LASF730: + .string "BKP_DATA17 REG16((BKP) + 0x5CU)" +.LASF1706: + .string "GPIO_BOP_CR6 BIT(22)" +.LASF2527: + .string "TIMER_CH_1 ((uint16_t)0x0001U)" +.LASF3408: + .string "D:\\\\rt-thread\\\\bsp\\\\gd32\\\\risc-v\\\\gd32vf103v-eval" +.LASF145: + .string "__FLT_MANT_DIG__ 24" +.LASF3129: + .string "RCU_PREDV1_DIV10 CFG1_PREDV1(9)" +.LASF468: + .string "UINT_FAST64_MAX (__UINT_FAST64_MAX__)" +.LASF2299: + .string "TIMER_CTL1_TI0S BIT(7)" +.LASF2680: + .string "CTL0_REN(regval) (BIT(2) & ((uint32_t)(regval) << 2))" +.LASF775: + .string "RTC_OUTPUT_SECOND_PULSE ((uint16_t)0x0200U)" +.LASF2937: + .string "RCU_AHBEN_FMCSPEN BIT(4)" +.LASF3294: + .string "RCU_INT_FLAG_IRC8MSTB_CLR" +.LASF3252: + .string "RCU_CAN0RST" +.LASF2669: + .string "USART_GP_GUAT BITS(8,15)" +.LASF2096: + .string "RTC_CTL_LWOFF BIT(5)" +.LASF1752: + .string "AFIO_PCF0_SPI0_REMAP BIT(0)" +.LASF1069: + .string "CAN_BT_BS1_12TQ ((uint8_t)0x0BU)" +.LASF657: + .string "ADC_INSERTED_CHANNEL_0 ((uint8_t)0x00U)" +.LASF1886: + .string "I2C_SADDR1(i2cx) REG32((i2cx) + 0x0CU)" +.LASF578: + .string "ADC_CTL1_ETSRC BITS(17,19)" +.LASF2528: + .string "TIMER_CH_2 ((uint16_t)0x0002U)" +.LASF1052: + .string "CAN_SILENT_MODE ((uint8_t)0x02U)" +.LASF2238: + .string "SPI_I2S_INT_FLAG_TBE ((uint8_t)0x00U)" +.LASF2516: + .string "TIMER_BREAK_POLARITY_HIGH ((uint16_t)TIMER_CCHP_BRKP)" +.LASF2291: + .string "TIMER_CTL0_DIR BIT(4)" +.LASF2220: + .string "I2S_MODE_SLAVERX I2SCTL_I2SOPMOD(1)" +.LASF376: + .string "signed" +.LASF975: + .string "CAN_RFIFOMI_EFID BITS(3,31)" +.LASF2406: + .string "TIMER_CCHP_POEN BIT(15)" +.LASF2177: + .string "SPI_BIDIRECTIONAL_TRANSMIT SPI_CTL0_BDOEN" +.LASF553: + .string "ADC_STAT_EOC BIT(1)" +.LASF354: + .string "__GNU_VISIBLE 0" +.LASF3211: + .string "RCU_UART3" +.LASF3212: + .string "RCU_UART4" +.LASF3141: + .string "RCU_PLL1_MUL12 CFG1_PLL1MF(10)" +.LASF1639: + .string "GPIO_CTL1_CTL9 BITS(6, 7)" +.LASF1442: + .string "EXTI_FTEN_FTEN14 BIT(14)" +.LASF1544: + .string "WS_WSCNT_2 WS_WSCNT(2)" +.LASF2303: + .string "TIMER_CTL1_ISO1N BIT(11)" +.LASF1252: + .string "DMA_CH5CTL(dmax) REG32((dmax) + 0x6CU)" +.LASF3324: + .string "ahb_freq" +.LASF1273: + .string "DMA_CHXCTL_CMEN BIT(5)" +.LASF2948: + .string "RCU_APB2EN_ADC1EN BIT(10)" +.LASF279: + .string "__FLT64X_HAS_INFINITY__ 1" +.LASF1181: + .string "DAC_TRIGGER_SOFTWARE CTL_DTSEL(7)" +.LASF1619: + .string "AFIO_PCF1 REG32(AFIO + 0x1CU)" +.LASF3112: + .string "RCU_PREDV0_DIV10 CFG1_PREDV0(9)" +.LASF2411: + .string "TIMER_INT_CH0 TIMER_DMAINTEN_CH0IE" +.LASF2968: + .string "RCU_APB1EN_CAN1EN BIT(26)" +.LASF222: + .string "__FLT64_DIG__ 15" +.LASF2458: + .string "TIMER_DMACFG_DMATA_PSC DMACFG_DMATA(10)" +.LASF2515: + .string "TIMER_BREAK_POLARITY_LOW ((uint16_t)0x0000U)" +.LASF4: + .string "__STDC_HOSTED__ 1" +.LASF1365: + .string "EXTI_INTEN REG32(EXTI + 0x00U)" +.LASF676: + .string "ADC_CHANNEL_15 ((uint8_t)0x0FU)" +.LASF3186: + .string "uint8_t" +.LASF1541: + .string "WS_WSCNT(regval) (BITS(0,2) & ((uint32_t)(regval)))" +.LASF1449: + .string "EXTI_SWIEV_SWIEV2 BIT(2)" +.LASF2163: + .string "SPI_TCRC_TCRC BITS(0,15)" +.LASF2548: + .string "TIMER_OC_MODE_PWM0 ((uint16_t)0x0060U)" +.LASF2346: + .string "TIMER_SWEVG_CMTG BIT(5)" +.LASF2916: + .string "RCU_APB1RST_TIMER3RST BIT(2)" +.LASF1248: + .string "DMA_CH4CTL(dmax) REG32((dmax) + 0x58U)" +.LASF2692: + .string "USART_WM_ADDR CTL0_WM(1)" +.LASF1991: + .string "I2C_ADDFORMAT_10BITS I2C_SADDR0_ADDFORMAT" +.LASF1198: + .string "DAC_WAVE_BIT_WIDTH_12 DWBW(11)" +.LASF2828: + .string "ECLIC_CFG_NLBITS_MASK _AC(0x1E,UL)" +.LASF3007: + .string "BDCTL_REG_OFFSET 0x20U" +.LASF1215: + .string "DAC_TRIANGLE_AMPLITUDE_1 DAC_WAVE_BIT_WIDTH_1" +.LASF1319: + .string "DMA_PRIORITY_LOW CHCTL_PRIO(0U)" +.LASF2699: + .string "USART_STB_2BIT CTL1_STB(2)" +.LASF2723: + .string "USART_CTS_ENABLE CLT2_CTSEN(1)" +.LASF2632: + .string "USART_BAUD_FRADIV BITS(0,3)" +.LASF2289: + .string "TIMER_CTL0_UPS BIT(2)" +.LASF1788: + .string "GPIO_MODE_IPD ((uint8_t)0x28U)" +.LASF476: + .string "PTRDIFF_MIN (-PTRDIFF_MAX - 1)" +.LASF2942: + .string "RCU_APB2EN_PAEN BIT(2)" +.LASF2717: + .string "USART_DENT_ENABLE CLT2_DENT(1)" +.LASF924: + .string "CAN_RFIFO0_RFF0 BIT(3)" +.LASF2032: + .string "DBG_CTL_TIMER3_HOLD BIT(13)" +.LASF850: + .string "CAN_F6DATA1(canx) REG32((canx) + 0x274U)" +.LASF114: + .string "__INT64_C(c) c ## LL" +.LASF1520: + .string "FMC_ADDR0_ADDR BITS(0,31)" +.LASF1825: + .string "GPIO_PIN_SOURCE_2 ((uint8_t)0x02U)" +.LASF550: + .string "ADC_RDATA(adcx) REG32((adcx) + 0x4CU)" +.LASF1678: + .string "GPIO_OCTL_OCTL10 BIT(10)" +.LASF2268: + .string "TIMER_CTL1(timerx) REG32((timerx) + 0x04U)" +.LASF3055: + .string "RCU_PLL_MUL6 CFG0_PLLMF(4)" +.LASF1895: + .string "I2C_CTL0_SMBSEL BIT(3)" +.LASF2422: + .string "TIMER_INT_FLAG_CH3 TIMER_INT_CH3" +.LASF1313: + .string "DMA_PERIPHERAL_WIDTH_32BIT CHCTL_PWIDTH(2U)" +.LASF2641: + .string "USART_CTL0_TBEIE BIT(7)" +.LASF2417: + .string "TIMER_INT_BRK TIMER_DMAINTEN_BRKIE" +.LASF3329: + .string "pllmf" +.LASF1157: + .string "DAC_SWT_SWTR0 BIT(0)" +.LASF888: + .string "CAN_CTL_ABOR BIT(6)" +.LASF2500: + .string "TIMER_PSC_RELOAD_UPDATE ((uint32_t)0x00000000U)" +.LASF26: + .string "__ORDER_LITTLE_ENDIAN__ 1234" +.LASF2140: + .string "SPI_CTL0_CRCEN BIT(13)" +.LASF1124: + .string "CRC_FDATA_FDATA BITS(0, 7)" +.LASF3363: + .string "rcu_flag_get" +.LASF984: + .string "CAN_RFIFOMDATA1_DB4 BITS(0,7)" +.LASF819: + .string "CAN_F3DATA0(canx) REG32((canx) + 0x258U)" +.LASF1349: + .string "EXMC_SNTCFG_DSET BITS(8,15)" +.LASF3185: + .string "long long unsigned int" +.LASF3027: + .string "RCU_AHB_CKSYS_DIV256 CFG0_AHBPSC(14)" +.LASF2285: + .string "TIMER_DMACFG(timerx) REG32((timerx) + 0x48U)" +.LASF171: + .string "__DBL_DENORM_MIN__ ((double)4.94065645841246544176568792868221372e-324L)" +.LASF987: + .string "CAN_RFIFOMDATA1_DB7 BITS(24,31)" +.LASF1314: + .string "CHCTL_MWIDTH(regval) (BITS(10,11) & ((uint32_t)(regval) << 10))" +.LASF857: + .string "CAN_F13DATA1(canx) REG32((canx) + 0x2ACU)" +.LASF1120: + .string "CRC_DATA REG32(CRC + 0x00U)" +.LASF474: + .string "SIG_ATOMIC_MAX (__STDINT_EXP(INT_MAX))" +.LASF329: + .string "GD32VF103_RCU_H " +.LASF785: + .string "CAN_TSTAT(canx) REG32((canx) + 0x08U)" +.LASF2071: + .string "PMU_LDO_LOWPOWER PMU_CTL_LDOLP" +.LASF1519: + .string "FMC_CTL_ENDIE BIT(12)" +.LASF1399: + .string "EXTI_EVEN_EVEN9 BIT(9)" +.LASF1281: + .string "DMA_CHXPADDR_PADDR BITS(0,31)" +.LASF900: + .string "CAN_STAT_RXL BIT(11)" +.LASF1540: + .string "UNLOCK_KEY1 ((uint32_t)0xCDEF89ABU)" +.LASF1971: + .string "I2C_GCEN_DISABLE ((uint32_t)0x00000000U)" +.LASF2604: + .string "TIMER_HALLINTERFACE_ENABLE TIMER_CTL1_TI0S" +.LASF941: + .string "CAN_INTEN_ERRNIE BIT(11)" +.LASF725: + .string "BKP_DATA12 REG16((BKP) + 0x48U)" +.LASF3176: + .string "unsigned char" +.LASF1407: + .string "EXTI_EVEN_EVEN17 BIT(17)" +.LASF2698: + .string "USART_STB_0_5BIT CTL1_STB(1)" +.LASF3076: + .string "RCU_PLL_MUL27 (PLLMF_4 | CFG0_PLLMF(10))" +.LASF2332: + .string "TIMER_INTF_CH2IF BIT(3)" +.LASF2184: + .string "SPI_FRAMESIZE_8BIT ((uint32_t)0x00000000U)" +.LASF248: + .string "__FLT128_HAS_DENORM__ 1" +.LASF2839: + .string "RCU RCU_BASE" +.LASF1089: + .string "CAN_FIFO1 ((uint8_t)0x01U)" +.LASF332: + .string "__O volatile" +.LASF2507: + .string "TIMER_SP_MODE_SINGLE TIMER_CTL0_SPM" +.LASF787: + .string "CAN_RFIFO1(canx) REG32((canx) + 0x10U)" +.LASF1973: + .string "I2C_SRESET_RESET ((uint32_t)0x00000000U)" +.LASF2858: + .string "RCU_CTL_HXTALSTB BIT(17)" +.LASF1700: + .string "GPIO_BOP_CR0 BIT(16)" +.LASF1648: + .string "GPIO_CTL1_MD14 BITS(24, 25)" +.LASF2384: + .string "TIMER_CHCTL2_CH1NP BIT(7)" +.LASF1661: + .string "GPIO_ISTAT_ISTAT9 BIT(9)" +.LASF1953: + .string "I2C_CTL1_REG_OFFSET 0x04U" +.LASF2429: + .string "TIMER_FLAG_CH2 TIMER_INTF_CH2IF" +.LASF2591: + .string "TIMER_SLAVE_MODE_RESTART SMCFG_SMC(4)" +.LASF192: + .string "__FLT16_DIG__ 3" +.LASF3058: + .string "RCU_PLL_MUL9 CFG0_PLLMF(7)" +.LASF706: + .string "ADC_OVERSAMPLING_RATIO_MUL16 OVSCR_OVSR(3)" +.LASF2824: + .string "ECLIC_INT_ATTR_TRIG_POS 0x00" +.LASF1697: + .string "GPIO_BOP_BOP13 BIT(13)" +.LASF1225: + .string "DAC_TRIANGLE_AMPLITUDE_2047 DAC_WAVE_BIT_WIDTH_11" +.LASF2534: + .string "TIMER_OC_POLARITY_HIGH ((uint16_t)0x0000U)" +.LASF3291: + .string "rcu_int_flag_enum" +.LASF1713: + .string "GPIO_BOP_CR13 BIT(29)" +.LASF2888: + .string "RCU_INT_IRC40KSTBIE BIT(8)" +.LASF1462: + .string "EXTI_SWIEV_SWIEV15 BIT(15)" +.LASF3368: + .string "rcu_rtc_clock_config" +.LASF1817: + .string "GPIO_EVENT_PIN_10 ((uint8_t)0x0AU)" +.LASF464: + .string "INT_FAST32_MAX (__INT_FAST32_MAX__)" +.LASF2379: + .string "TIMER_CHCTL2_CH0NEN BIT(2)" +.LASF1999: + .string "FWDGT_PSC_PSC BITS(0,2)" +.LASF2256: + .string "I2S_FLAG_RXORERR SPI_STAT_RXORERR" +.LASF2363: + .string "TIMER_CHCTL1_CH2MS BITS(0,1)" +.LASF3371: + .string "usb_psc" +.LASF1982: + .string "I2C_SALTSEND_ENABLE I2C_CTL0_SALT" +.LASF1027: + .string "GET_RFIFOMP_DLENC(regval) GET_BITS((uint32_t)(regval), 0U, 3U)" +.LASF2213: + .string "I2S_FRAMEFORMAT_DT16B_CH32B (I2SCTL_DTLEN(0) | SPI_I2SCTL_CHLEN)" +.LASF2139: + .string "SPI_CTL0_CRCNT BIT(12)" +.LASF3389: + .string "rcu_apb1_clock_config" +.LASF1847: + .string "GPIO_PIN_8 BIT(8)" +.LASF2573: + .string "TIMER_SMCFG_TRGSEL_CI0F_ED SMCFG_TRGSEL(4)" +.LASF265: + .string "__FLT32X_HAS_QUIET_NAN__ 1" +.LASF842: + .string "CAN_F26DATA0(canx) REG32((canx) + 0x310U)" +.LASF348: + .string "__NEWLIB_MINOR__ 1" +.LASF1285: + .string "DMA_CHCNT(dma,channel) REG32(((dma) + 0x0CU) + 0x14U * (uint32_t)(channel))" +.LASF982: + .string "CAN_RFIFOMDATA0_DB2 BITS(16,23)" +.LASF3095: + .string "RCU_CKOUT0SRC_EXT1 CFG0_CKOUT0SEL(10)" +.LASF1392: + .string "EXTI_EVEN_EVEN2 BIT(2)" +.LASF340: + .string "LXTAL_VALUE ((uint32_t)32768)" +.LASF471: + .string "UINTMAX_MAX (__UINTMAX_MAX__)" +.LASF579: + .string "ADC_CTL1_ETERC BIT(20)" +.LASF403: + .string "__LEAST32 \"l\"" +.LASF582: + .string "ADC_CTL1_TSVREN BIT(23)" +.LASF1508: + .string "FMC_STAT_WPERR BIT(4)" +.LASF271: + .string "__FLT64X_MAX_10_EXP__ 4932" +.LASF2550: + .string "TIMER_OC_SHADOW_ENABLE ((uint16_t)0x0008U)" +.LASF1510: + .string "FMC_CTL_PG BIT(0)" +.LASF2432: + .string "TIMER_FLAG_TRG TIMER_INTF_TRGIF" +.LASF2261: + .string "TIMER1 (TIMER_BASE + 0x00000000U)" +.LASF3283: + .string "RCU_INT_FLAG_IRC40KSTB" +.LASF1410: + .string "EXTI_RTEN_RTEN1 BIT(1)" +.LASF1039: + .string "GET_ERR_RECNT(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF2183: + .string "SPI_FRAMESIZE_16BIT SPI_CTL0_FF16" +.LASF2790: + .string "_WCHAR_T_DECLARED " +.LASF597: + .string "ADC_OVSCR_TOVS BIT(9)" +.LASF2402: + .string "TIMER_CCHP_ROS BIT(11)" +.LASF1643: + .string "GPIO_CTL1_CTL11 BITS(14, 15)" +.LASF3379: + .string "predv1_div" +.LASF894: + .string "CAN_STAT_ERRIF BIT(2)" +.LASF1350: + .string "EXMC_SNTCFG_BUSLAT BITS(16,19)" +.LASF1315: + .string "DMA_MEMORY_WIDTH_8BIT CHCTL_MWIDTH(0U)" +.LASF2989: + .string "RCU_CFG1_PREDV1 BITS(4,7)" +.LASF123: + .string "__UINT64_C(c) c ## ULL" +.LASF3107: + .string "RCU_PREDV0_DIV5 CFG1_PREDV0(4)" +.LASF2364: + .string "TIMER_CHCTL1_CH2COMFEN BIT(2)" +.LASF2803: + .string "TIMER_MTIME 0x0" +.LASF1683: + .string "GPIO_OCTL_OCTL15 BIT(15)" +.LASF1608: + .string "GPIO_ISTAT(gpiox) REG32((gpiox) + 0x08U)" +.LASF487: + .string "INT64_C(x) __INT64_C(x)" +.LASF972: + .string "CAN_TMDATA1_DB7 BITS(24,31)" +.LASF169: + .string "__DBL_MIN__ ((double)2.22507385850720138309023271733240406e-308L)" +.LASF2543: + .string "TIMER_OC_MODE_ACTIVE ((uint16_t)0x0010U)" +.LASF1295: + .string "DMA_INT_FLAG_HTF DMA_INTF_HTFIF" +.LASF832: + .string "CAN_F16DATA0(canx) REG32((canx) + 0x2C0U)" +.LASF299: + .string "__PRAGMA_REDEFINE_EXTNAME 1" +.LASF656: + .string "ADC_CHANNEL_DISCON_DISABLE ((uint8_t)0x04U)" +.LASF521: + .string "DMA_BASE (AHB1_BUS_BASE + 0x00008000U)" +.LASF1119: + .string "CRC CRC_BASE" +.LASF1395: + .string "EXTI_EVEN_EVEN5 BIT(5)" +.LASF849: + .string "CAN_F5DATA1(canx) REG32((canx) + 0x26CU)" +.LASF2643: + .string "USART_CTL0_PM BIT(9)" +.LASF363: + .string "__have_longlong64 1" +.LASF560: + .string "ADC_CTL0_EOICIE BIT(7)" +.LASF3199: + .string "RCU_USBFS" +.LASF876: + .string "CAN_FDATA0(canx,bank) REG32((canx) + 0x240U + ((bank) * 0x8U) + 0x0U)" +.LASF3301: + .string "RCU_INT_IRC40KSTB" +.LASF915: + .string "CAN_TSTAT_MST2 BIT(23)" +.LASF2764: + .string "__SIZE_T " +.LASF2156: + .string "SPI_STAT_CONFERR BIT(5)" +.LASF1874: + .string "GPIO_CAN1_REMAP ((uint32_t)0x00200040U)" +.LASF3079: + .string "RCU_PLL_MUL30 (PLLMF_4 | CFG0_PLLMF(13))" +.LASF349: + .string "__NEWLIB_PATCHLEVEL__ 0" +.LASF1742: + .string "GPIO_LOCK_LK10 BIT(10)" +.LASF1840: + .string "GPIO_PIN_1 BIT(1)" +.LASF345: + .string "_NEWLIB_VERSION_H__ 1" +.LASF1346: + .string "EXMC_SNCTL_ASYNCWAIT BIT(15)" +.LASF1621: + .string "GPIO_CTL0_CTL0 BITS(2, 3)" +.LASF1101: + .string "CAN_FT_DATA ((uint32_t)0x00000000U)" +.LASF1836: + .string "GPIO_PIN_SOURCE_13 ((uint8_t)0x0DU)" +.LASF494: + .string "BIT(x) ((uint32_t)((uint32_t)0x01U<<(x)))" +.LASF291: + .string "__GCC_ATOMIC_WCHAR_T_LOCK_FREE 2" +.LASF2341: + .string "TIMER_SWEVG_UPG BIT(0)" +.LASF760: + .string "BKP_OCTL_COEN BIT(7)" +.LASF2265: + .string "TIMER5 (TIMER_BASE + 0x00001000U)" +.LASF2627: + .string "USART_STAT_TC BIT(6)" +.LASF1488: + .string "FMC_WS REG32((FMC) + 0x00U)" +.LASF2410: + .string "TIMER_INT_UP TIMER_DMAINTEN_UPIE" +.LASF2721: + .string "USART_RTS_DISABLE CLT2_RTSEN(0)" +.LASF1387: + .string "EXTI_INTEN_INTEN16 BIT(16)" +.LASF3279: + .string "RCU_FLAG_FWDGTRST" +.LASF173: + .string "__DBL_HAS_INFINITY__ 1" +.LASF1136: + .string "DAC1_L12DH REG32(DAC + 0x18U)" +.LASF3234: + .string "RCU_FMC_SLP" +.LASF3062: + .string "RCU_PLL_MUL13 CFG0_PLLMF(11)" +.LASF60: + .string "__INT_FAST64_TYPE__ long long int" +.LASF2801: + .string "TIMER_MTIMECMP 0x8" +.LASF2321: + .string "TIMER_DMAINTEN_BRKIE BIT(7)" +.LASF2148: + .string "SPI_CTL1_ERRIE BIT(5)" +.LASF2603: + .string "TIMER_ETP_RISING ((uint32_t)0x00000000U)" +.LASF909: + .string "CAN_TSTAT_MTE1 BIT(11)" +.LASF197: + .string "__FLT16_DECIMAL_DIG__ 5" +.LASF499: + .string "OB_BASE ((uint32_t)0x1FFFF800U)" +.LASF1548: + .string "OB_DEEPSLEEP_RST ((uint8_t)0x00U)" +.LASF1616: + .string "AFIO_EXTISS1 REG32(AFIO + 0x0CU)" +.LASF1879: + .string "GPIO_EXMC_NADV_REMAP ((uint32_t)0x80000400U)" +.LASF247: + .string "__FLT128_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F128" +.LASF2124: + .string "SPI_CRCPOLY(spix) REG32((spix) + 0x10U)" +.LASF2649: + .string "USART_CTL1_LBLEN BIT(5)" +.LASF2074: + .string "WFI_CMD ((uint8_t)0x00U)" +.LASF2868: + .string "RCU_CFG0_SCSS BITS(2,3)" +.LASF2719: + .string "CLT2_RTSEN(regval) (BIT(8) & ((uint32_t)(regval) << 8))" +.LASF21: + .string "__SIZEOF_DOUBLE__ 8" +.LASF149: + .string "__FLT_MAX_EXP__ 128" +.LASF816: + .string "CAN_F0DATA0(canx) REG32((canx) + 0x240U)" +.LASF2306: + .string "TIMER_CTL1_ISO3 BIT(14)" +.LASF620: + .string "ADC_CONTINUOUS_MODE ADC_CTL1_CTN" +.LASF320: + .string "USE_PLIC 1" +.LASF1918: + .string "I2C_SADDR1_ADDRESS2 BITS(1,7)" +.LASF2174: + .string "SPI_I2SPSC_MCKOEN BIT(9)" +.LASF144: + .string "__FLT_RADIX__ 2" +.LASF1832: + .string "GPIO_PIN_SOURCE_9 ((uint8_t)0x09U)" +.LASF1659: + .string "GPIO_ISTAT_ISTAT7 BIT(7)" +.LASF2554: + .string "TIMER_OC_CLEAR_ENABLE ((uint16_t)0x0080U)" +.LASF1814: + .string "GPIO_EVENT_PIN_7 ((uint8_t)0x07U)" +.LASF2956: + .string "RCU_APB1EN_TIMER5EN BIT(4)" +.LASF967: + .string "CAN_TMDATA0_DB2 BITS(16,23)" +.LASF732: + .string "BKP_DATA19 REG16((BKP) + 0x64U)" +.LASF111: + .string "__INT32_C(c) c ## L" +.LASF935: + .string "CAN_INTEN_RFNEIE1 BIT(4)" +.LASF2861: + .string "RCU_CTL_PLLEN BIT(24)" +.LASF2931: + .string "RCU_APB1RST_BKPIRST BIT(27)" +.LASF1343: + .string "EXMC_SNCTL_NRWTPOL BIT(9)" +.LASF1947: + .string "I2C_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF1270: + .string "DMA_CHXCTL_HTFIE BIT(2)" +.LASF2460: + .string "TIMER_DMACFG_DMATA_CREP DMACFG_DMATA(12)" +.LASF519: + .string "GPIO_BASE (APB2_BUS_BASE + 0x00000800U)" +.LASF2575: + .string "TIMER_SMCFG_TRGSEL_CI1FE1 SMCFG_TRGSEL(6)" +.LASF3355: + .string "rcu_interrupt_disable" +.LASF1529: + .string "FMC_REG_VAL(offset) (REG32(FMC + ((uint32_t)(offset) >> 6)))" +.LASF3168: + .string "RCU_DEEPSLEEP_V_0_9 DSV_DSLPVS(3)" +.LASF82: + .string "__LONG_WIDTH__ 32" +.LASF2533: + .string "TIMER_CCXN_DISABLE ((uint16_t)0x0000U)" +.LASF738: + .string "BKP_DATA25 REG16((BKP) + 0x7CU)" +.LASF2316: + .string "TIMER_DMAINTEN_CH1IE BIT(2)" +.LASF2996: + .string "RCU_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF870: + .string "CAN_F26DATA1(canx) REG32((canx) + 0x314U)" +.LASF14: + .string "__ATOMIC_CONSUME 1" +.LASF3193: + .string "ErrStatus" +.LASF2820: + .string "ECLIC_INT_ATTR_OFFSET _AC(0x1002,UL)" +.LASF216: + .string "__FLT32_EPSILON__ 1.19209289550781250000000000000000000e-7F32" +.LASF3369: + .string "rtc_clock_source" +.LASF2464: + .string "TIMER_DMACFG_DMATA_CH3CV DMACFG_DMATA(16)" +.LASF3346: + .string "osci" +.LASF1431: + .string "EXTI_FTEN_FTEN3 BIT(3)" +.LASF420: + .string "_INTPTR_T_DECLARED " +.LASF1126: + .string "GD32VF103_DAC_H " +.LASF2513: + .string "TIMER_IOS_STATE_ENABLE ((uint16_t)TIMER_CCHP_IOS)" +.LASF1885: + .string "I2C_SADDR0(i2cx) REG32((i2cx) + 0x08U)" +.LASF1025: + .string "GET_RFIFOMI_EFID(regval) GET_BITS((uint32_t)(regval), 3U, 31U)" +.LASF2874: + .string "RCU_CFG0_PREDV0_LSB BIT(17)" +.LASF355: + .string "__ISO_C_VISIBLE 2011" +.LASF1965: + .string "I2C_ACKPOS_CURRENT ((uint32_t)0x00000001U)" +.LASF1033: + .string "GET_RFIFOMDATA1_DB4(regval) GET_BITS((uint32_t)(regval), 0U, 7U)" +.LASF2471: + .string "TIMER_DMACFG_DMATC_4TRANSFER DMACFG_DMATC(3)" +.LASF3137: + .string "RCU_PLL1_MUL8 CFG1_PLL1MF(6)" +.LASF2696: + .string "CTL1_STB(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF2450: + .string "TIMER_DMACFG_DMATA_SMCFG DMACFG_DMATA(2)" +.LASF1480: + .string "EXTI_PD_PD14 BIT(14)" +.LASF3265: + .string "RCU_TIMER0RST" +.LASF2950: + .string "RCU_APB2EN_SPI0EN BIT(12)" +.LASF2638: + .string "USART_CTL0_IDLEIE BIT(4)" +.LASF2086: + .string "RTC_ALRMH REG32(RTC + 0x20U)" +.LASF1168: + .string "DACC_L12DH_DAC1_DH BITS(20,31)" +.LASF2997: + .string "RCU_REG_VAL(periph) (REG32(RCU + ((uint32_t)(periph) >> 6)))" +.LASF963: + .string "CAN_TMP_TSEN BIT(8)" +.LASF178: + .string "__LDBL_MIN_10_EXP__ (-4931)" +.LASF2710: + .string "CTL1_CPL(regval) (BIT(10) & ((uint32_t)(regval) << 10))" +.LASF1983: + .string "I2C_SALTSEND_DISABLE ((uint32_t)0x00000000U)" +.LASF2189: + .string "SPI_CK_PL_LOW_PH_1EDGE ((uint32_t)0x00000000U)" +.LASF213: + .string "__FLT32_MAX__ 3.40282346638528859811704183484516925e+38F32" +.LASF3140: + .string "RCU_PLL1_MUL11 CFG1_PLL1MF(9)" +.LASF726: + .string "BKP_DATA13 REG16((BKP) + 0x4CU)" +.LASF731: + .string "BKP_DATA18 REG16((BKP) + 0x60U)" +.LASF1009: + .string "BT_BS2(regval) (BITS(20,22) & ((uint32_t)(regval) << 20))" +.LASF2485: + .string "TIMER_DMACFG_DMATC_18TRANSFER DMACFG_DMATC(17)" +.LASF693: + .string "ADC_OVERSAMPLING_SHIFT_NONE OVSCR_OVSS(0)" +.LASF1993: + .string "FWDGT FWDGT_BASE" +.LASF1423: + .string "EXTI_RTEN_RTEN14 BIT(14)" +.LASF3182: + .string "__uint32_t" +.LASF116: + .string "__UINT_LEAST8_MAX__ 0xff" +.LASF899: + .string "CAN_STAT_LASTRX BIT(10)" +.LASF1934: + .string "I2C_STAT1_MASTER BIT(0)" +.LASF2671: + .string "USART_REG_VAL(usartx,offset) (REG32((usartx) + (((uint32_t)(offset) & (0x0000FFFFU)) >> 6)))" +.LASF1065: + .string "CAN_BT_BS1_8TQ ((uint8_t)0x07U)" +.LASF475: + .string "PTRDIFF_MAX (__PTRDIFF_MAX__)" +.LASF931: + .string "CAN_INTEN_TMEIE BIT(0)" +.LASF1271: + .string "DMA_CHXCTL_ERRIE BIT(3)" +.LASF2089: + .string "RTC_INTEN_ALRMIE BIT(1)" +.LASF3101: + .string "RCU_RTCSRC_HXTAL_DIV_128 BDCTL_RTCSRC(3)" +.LASF2908: + .string "RCU_APB2RST_PERST BIT(6)" +.LASF256: + .string "__FLT32X_MAX_10_EXP__ 308" +.LASF3310: + .string "RCU_LXTAL" +.LASF1849: + .string "GPIO_PIN_10 BIT(10)" +.LASF877: + .string "CAN_FDATA1(canx,bank) REG32((canx) + 0x240U + ((bank) * 0x8U) + 0x4U)" +.LASF2847: + .string "RCU_APB1EN REG32(RCU + 0x1CU)" +.LASF804: + .string "CAN_RFIFOMP0(canx) REG32((canx) + 0x1B4U)" +.LASF2930: + .string "RCU_APB1RST_CAN1RST BIT(26)" +.LASF3251: + .string "RCU_I2C1RST" +.LASF794: + .string "CAN_TMDATA10(canx) REG32((canx) + 0x18CU)" +.LASF162: + .string "__DBL_MIN_EXP__ (-1021)" +.LASF483: + .string "INT16_C(x) __INT16_C(x)" +.LASF10: + .string "__ATOMIC_SEQ_CST 5" +.LASF1647: + .string "GPIO_CTL1_CTL13 BITS(22, 23)" +.LASF2850: + .string "RCU_AHBRST REG32(RCU + 0x28U)" +.LASF929: + .string "CAN_RFIFO1_RFO1 BIT(4)" +.LASF1605: + .string "AFIO AFIO_BASE" +.LASF1356: + .string "SNCTL_NRTP(regval) (BITS(2,3) & ((uint32_t)(regval) << 2))" +.LASF844: + .string "CAN_F0DATA1(canx) REG32((canx) + 0x244U)" +.LASF1720: + .string "GPIO_BC_CR4 BIT(4)" +.LASF1222: + .string "DAC_TRIANGLE_AMPLITUDE_255 DAC_WAVE_BIT_WIDTH_8" +.LASF2300: + .string "TIMER_CTL1_ISO0 BIT(8)" +.LASF2786: + .string "_WCHAR_T_H " +.LASF2419: + .string "TIMER_INT_FLAG_CH0 TIMER_INT_CH0" +.LASF2033: + .string "DBG_CTL_CAN0_HOLD BIT(14)" +.LASF2589: + .string "TIMER_ENCODER_MODE1 SMCFG_SMC(2)" +.LASF250: + .string "__FLT128_HAS_QUIET_NAN__ 1" +.LASF545: + .string "ADC_ISQ(adcx) REG32((adcx) + 0x38U)" +.LASF2132: + .string "SPI_CTL0_PSC BITS(3,5)" +.LASF964: + .string "CAN_TMP_TS BITS(16,31)" +.LASF585: + .string "ADC_WDHT_WDHT BITS(0,11)" +.LASF3344: + .string "rcu_hxtal_clock_monitor_enable" +.LASF989: + .string "CAN_FCTL_HBC1F BITS(8,13)" +.LASF3271: + .string "RCU_FLAG_PLLSTB" +.LASF2688: + .string "USART_PM_EVEN CTL0_PM(2)" +.LASF2763: + .string "_T_SIZE " +.LASF482: + .string "UINT8_C(x) __UINT8_C(x)" +.LASF780: + .string "GD32VF103_CAN_H " +.LASF65: + .string "__INTPTR_TYPE__ int" +.LASF1970: + .string "I2C_GCEN_ENABLE I2C_CTL0_GCEN" +.LASF1772: + .string "AFIO_EXTI5_SS BITS(4, 7)" +.LASF2198: + .string "SPI_PSC_32 CTL0_PSC(4)" +.LASF3147: + .string "CFG1_PLL2MF(regval) (BITS(12,15) & ((uint32_t)(regval) << 12))" +.LASF509: + .string "FWDGT_BASE (APB1_BUS_BASE + 0x00003000U)" +.LASF3395: + .string "rcu_bkp_reset_disable" +.LASF1306: + .string "DMA_PERIPH_INCREASE_DISABLE ((uint8_t)0x00U)" +.LASF1784: + .string "GPIO_MODE_SET(n,mode) ((uint32_t)((uint32_t)(mode) << (4U * (n))))" +.LASF2751: + .string "__PTRDIFF_T " +.LASF36: + .string "__INTMAX_TYPE__ long long int" +.LASF3197: + .string "RCU_CRC" +.LASF1304: + .string "DMA_PERIPHERAL_TO_MEMORY ((uint8_t)0x00U)" +.LASF765: + .string "BKP_TPCS_TER BIT(0)" +.LASF2592: + .string "TIMER_SLAVE_MODE_PAUSE SMCFG_SMC(5)" +.LASF2297: + .string "TIMER_CTL1_DMAS BIT(3)" +.LASF496: + .string "GET_BITS(regval,start,end) (((regval) & BITS((start),(end))) >> (start))" +.LASF3250: + .string "RCU_I2C0RST" +.LASF2624: + .string "USART_STAT_ORERR BIT(3)" +.LASF826: + .string "CAN_F10DATA0(canx) REG32((canx) + 0x290U)" +.LASF2018: + .string "FWDGT_FLAG_RUD FWDGT_STAT_RUD" +.LASF2078: + .string "RTC_INTEN REG32(RTC + 0x00U)" +.LASF462: + .string "UINT_FAST16_MAX (__UINT_FAST16_MAX__)" +.LASF1591: + .string "OB_WP_28 ((uint32_t)0x10000000U)" +.LASF3146: + .string "RCU_PLL1_MUL20 CFG1_PLL1MF(15)" +.LASF1997: + .string "FWDGT_STAT REG32((FWDGT) + 0x0000000CU)" +.LASF672: + .string "ADC_CHANNEL_11 ((uint8_t)0x0BU)" +.LASF1673: + .string "GPIO_OCTL_OCTL5 BIT(5)" +.LASF2386: + .string "TIMER_CHCTL2_CH2P BIT(9)" +.LASF811: + .string "CAN_FCTL(canx) REG32((canx) + 0x200U)" +.LASF1130: + .string "DAC_CTL REG32(DAC + 0x00U)" +.LASF1231: + .string "DMA_INTC(dmax) REG32((dmax) + 0x04U)" +.LASF2412: + .string "TIMER_INT_CH1 TIMER_DMAINTEN_CH1IE" +.LASF2504: + .string "TIMER_CKDIV_DIV1 CTL0_CKDIV(0)" +.LASF2607: + .string "TIMER_CHVSEL_DISABLE ((uint16_t)0x0000U)" +.LASF1495: + .string "FMC_WP REG32((FMC) + 0x20U)" +.LASF89: + .string "__INTMAX_C(c) c ## LL" +.LASF2047: + .string "PMU_CTL_LDOLP BIT(0)" +.LASF3077: + .string "RCU_PLL_MUL28 (PLLMF_4 | CFG0_PLLMF(11))" +.LASF3161: + .string "RCU_I2S1SRC_CKPLL2_MUL2 RCU_CFG1_I2S1SEL" +.LASF302: + .string "__SIZEOF_PTRDIFF_T__ 4" +.LASF2497: + .string "TIMER_COUNTER_CENTER_UP CTL0_CAM(2)" +.LASF1517: + .string "FMC_CTL_OBWEN BIT(9)" +.LASF891: + .string "CAN_CTL_DFZ BIT(16)" +.LASF1400: + .string "EXTI_EVEN_EVEN10 BIT(10)" +.LASF980: + .string "CAN_RFIFOMDATA0_DB0 BITS(0,7)" +.LASF1677: + .string "GPIO_OCTL_OCTL9 BIT(9)" +.LASF910: + .string "CAN_TSTAT_MST1 BIT(15)" +.LASF2750: + .string "_T_PTRDIFF " +.LASF1861: + .string "GPIO_USART2_FULL_REMAP ((uint32_t)0x00140030U)" +.LASF645: + .string "ADC_SAMPLETIME_55POINT5 SAMPTX_SPT(5)" +.LASF503: + .string "APB2_BUS_BASE ((uint32_t)0x40010000U)" +.LASF535: + .string "ADC_SAMPT1(adcx) REG32((adcx) + 0x10U)" +.LASF2061: + .string "PMU_LVDT_2 CTL_LVDT(2)" +.LASF2476: + .string "TIMER_DMACFG_DMATC_9TRANSFER DMACFG_DMATC(8)" +.LASF1741: + .string "GPIO_LOCK_LK9 BIT(9)" +.LASF2770: + .string "_SIZE_T_DECLARED " +.LASF2144: + .string "SPI_CTL1_DMATEN BIT(1)" +.LASF608: + .string "ADC_MODE_FREE CTL0_SYNCM(0)" +.LASF86: + .string "__PTRDIFF_WIDTH__ 32" +.LASF763: + .string "BKP_TPCTL_TPEN BIT(0)" +.LASF3111: + .string "RCU_PREDV0_DIV9 CFG1_PREDV0(8)" +.LASF827: + .string "CAN_F11DATA0(canx) REG32((canx) + 0x298U)" +.LASF2758: + .string "__size_t__ " +.LASF2258: + .string "I2S_FLAG_FERR SPI_STAT_FERR" +.LASF604: + .string "CTL0_DISNUM(regval) (BITS(13,15) & ((uint32_t)(regval) << 13))" +.LASF3298: + .string "RCU_INT_FLAG_PLL2STB_CLR" +.LASF2506: + .string "TIMER_CKDIV_DIV4 CTL0_CKDIV(2)" +.LASF3115: + .string "RCU_PREDV0_DIV13 CFG1_PREDV0(12)" +.LASF1925: + .string "I2C_STAT0_RBNE BIT(6)" +.LASF776: + .string "TAMPER_PIN_ACTIVE_HIGH ((uint16_t)0x0000U)" +.LASF3290: + .string "RCU_INT_FLAG_CKM" +.LASF691: + .string "ADC_OVERSAMPLING_ONE_CONVERT 1" +.LASF2618: + .string "USART_CTL1(usartx) REG32((usartx) + (0x00000010U))" +.LASF1282: + .string "DMA_CHXMADDR_MADDR BITS(0,31)" +.LASF1238: + .string "DMA_CH1PADDR(dmax) REG32((dmax) + 0x24U)" +.LASF3326: + .string "apb2_freq" +.LASF1972: + .string "I2C_SRESET_SET I2C_CTL0_SRESET" +.LASF506: + .string "TIMER_BASE (APB1_BUS_BASE + 0x00000000U)" +.LASF943: + .string "CAN_INTEN_WIE BIT(16)" +.LASF1384: + .string "EXTI_INTEN_INTEN13 BIT(13)" +.LASF1819: + .string "GPIO_EVENT_PIN_12 ((uint8_t)0x0CU)" +.LASF2510: + .string "TIMER_UPDATE_SRC_GLOBAL ((uint32_t)0x00000000U)" +.LASF1452: + .string "EXTI_SWIEV_SWIEV5 BIT(5)" +.LASF466: + .string "INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1)" +.LASF1467: + .string "EXTI_PD_PD1 BIT(1)" +.LASF1061: + .string "CAN_BT_BS1_4TQ ((uint8_t)0x03U)" +.LASF3264: + .string "RCU_ADC1RST" +.LASF1631: + .string "GPIO_CTL0_CTL5 BITS(22, 23)" +.LASF1906: + .string "I2C_CTL0_SRESET BIT(15)" +.LASF160: + .string "__DBL_MANT_DIG__ 53" +.LASF2963: + .string "RCU_APB1EN_UART3EN BIT(19)" +.LASF667: + .string "ADC_CHANNEL_6 ((uint8_t)0x06U)" +.LASF916: + .string "CAN_TSTAT_NUM BITS(24,25)" +.LASF790: + .string "CAN_BT(canx) REG32((canx) + 0x1CU)" +.LASF1992: + .string "GD32VF103_FWDGT_H " +.LASF3339: + .string "dsvol" +.LASF3249: + .string "RCU_UART4RST" +.LASF1148: + .string "DAC_CTL_DWBW0 BITS(8,11)" +.LASF426: + .string "__int_fast8_t_defined 1" +.LASF621: + .string "CTL1_ETSRC(regval) (BITS(17,19) & ((uint32_t)(regval) << 17))" +.LASF2571: + .string "TIMER_SMCFG_TRGSEL_ITI2 SMCFG_TRGSEL(2)" +.LASF342: + .string "_STDINT_H " +.LASF2846: + .string "RCU_APB2EN REG32(RCU + 0x18U)" +.LASF2479: + .string "TIMER_DMACFG_DMATC_12TRANSFER DMACFG_DMATC(11)" +.LASF626: + .string "ADC0_1_EXTTRIG_REGULAR_T2_TRGO CTL1_ETSRC(4)" +.LASF1284: + .string "DMA_CHCTL(dma,channel) REG32(((dma) + 0x08U) + 0x14U * (uint32_t)(channel))" +.LASF118: + .string "__UINT_LEAST16_MAX__ 0xffff" +.LASF1612: + .string "GPIO_LOCK(gpiox) REG32((gpiox) + 0x18U)" +.LASF2257: + .string "I2S_FLAG_TRANS SPI_STAT_TRANS" +.LASF1026: + .string "GET_RFIFOMI_SFID(regval) GET_BITS((uint32_t)(regval), 21U, 31U)" +.LASF2747: + .string "_ANSI_STDDEF_H " +.LASF1747: + .string "GPIO_LOCK_LK15 BIT(15)" +.LASF2998: + .string "RCU_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF441: + .string "UINT16_MAX (__UINT16_MAX__)" +.LASF61: + .string "__UINT_FAST8_TYPE__ unsigned int" +.LASF1511: + .string "FMC_CTL_PER BIT(1)" +.LASF2778: + .string "_WCHAR_T " +.LASF2093: + .string "RTC_CTL_OVIF BIT(2)" +.LASF839: + .string "CAN_F23DATA0(canx) REG32((canx) + 0x3F8U)" +.LASF2817: + .string "ECLIC_MTH_OFFSET 0xB" +.LASF1859: + .string "GPIO_USART1_REMAP ((uint32_t)0x00000008U)" +.LASF2864: + .string "RCU_CTL_PLL1STB BIT(27)" +.LASF1734: + .string "GPIO_LOCK_LK2 BIT(2)" +.LASF2224: + .string "I2S_STD_PHILLIPS I2SCTL_I2SSTD(0)" +.LASF1583: + .string "OB_WP_20 ((uint32_t)0x00100000U)" +.LASF1332: + .string "__SEV eclic_send_event" +.LASF1135: + .string "DAC1_R12DH REG32(DAC + 0x14U)" +.LASF838: + .string "CAN_F22DATA0(canx) REG32((canx) + 0x2F0U)" +.LASF2640: + .string "USART_CTL0_TCIE BIT(6)" +.LASF1021: + .string "TMDATA1_DB4(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF1880: + .string "GD32VF103_I2C_H " +.LASF2090: + .string "RTC_INTEN_OVIE BIT(2)" +.LASF2512: + .string "TIMER_ROS_STATE_DISABLE ((uint16_t)0x0000U)" +.LASF1351: + .string "EXMC_SNCTL(region) REG32(EXMC + 0x08U * (region))" +.LASF3010: + .string "CFG1_REG_OFFSET 0x2CU" +.LASF141: + .string "__FLT_EVAL_METHOD__ 0" +.LASF1727: + .string "GPIO_BC_CR11 BIT(11)" +.LASF3233: + .string "RCU_SRAM_SLP" +.LASF3145: + .string "RCU_PLL1_MUL16 CFG1_PLL1MF(14)" +.LASF1806: + .string "GPIO_PORT_SOURCE_GPIOE ((uint8_t)0x04U)" +.LASF3159: + .string "RCU_PREDV0SRC_CKPLL1 RCU_CFG1_PREDV0SEL" +.LASF3075: + .string "RCU_PLL_MUL26 (PLLMF_4 | CFG0_PLLMF(9))" +.LASF2901: + .string "RCU_INT_PLL2STBIC BIT(22)" +.LASF485: + .string "INT32_C(x) __INT32_C(x)" +.LASF264: + .string "__FLT32X_HAS_INFINITY__ 1" +.LASF1651: + .string "GPIO_CTL1_CTL15 BITS(30, 31)" +.LASF2199: + .string "SPI_PSC_64 CTL0_PSC(5)" +.LASF2588: + .string "TIMER_ENCODER_MODE0 SMCFG_SMC(1)" +.LASF711: + .string "GD32VF103_BKP_H " +.LASF3354: + .string "osci_stat" +.LASF3021: + .string "RCU_AHB_CKSYS_DIV2 CFG0_AHBPSC(8)" +.LASF2149: + .string "SPI_CTL1_RBNEIE BIT(6)" +.LASF78: + .string "__SIZE_MAX__ 0xffffffffU" +.LASF1687: + .string "GPIO_BOP_BOP3 BIT(3)" +.LASF2871: + .string "RCU_CFG0_APB2PSC BITS(11,13)" +.LASF2767: + .string "_SIZE_T_DEFINED_ " +.LASF737: + .string "BKP_DATA24 REG16((BKP) + 0x78U)" +.LASF1730: + .string "GPIO_BC_CR14 BIT(14)" +.LASF690: + .string "ADC_OVERSAMPLING_ALL_CONVERT 0" +.LASF3387: + .string "rcu_apb2_clock_config" +.LASF251: + .string "__FLT32X_MANT_DIG__ 53" +.LASF3017: + .string "RCU_SCSS_HXTAL CFG0_SCSS(1)" +.LASF2279: + .string "TIMER_CREP(timerx) REG32((timerx) + 0x30U)" +.LASF2045: + .string "PMU_CTL REG32((PMU) + 0x00U)" +.LASF289: + .string "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 1" +.LASF1250: + .string "DMA_CH4PADDR(dmax) REG32((dmax) + 0x60U)" +.LASF2885: + .string "RCU_INT_PLL1STBIF BIT(5)" +.LASF2327: + .string "TIMER_DMAINTEN_CMTDEN BIT(13)" +.LASF1066: + .string "CAN_BT_BS1_9TQ ((uint8_t)0x08U)" +.LASF353: + .string "__BSD_VISIBLE 0" +.LASF741: + .string "BKP_DATA28 REG16((BKP) + 0x88U)" +.LASF100: + .string "__UINT8_MAX__ 0xff" +.LASF2647: + .string "USART_CTL0_UEN BIT(13)" +.LASF2689: + .string "USART_PM_ODD CTL0_PM(3)" +.LASF9: + .string "__ATOMIC_RELAXED 0" +.LASF3044: + .string "RCU_CKADC_CKAPB2_DIV8 ((uint32_t)0x00000003U)" +.LASF653: + .string "ADC_REGULAR_CHANNEL ((uint8_t)0x01U)" +.LASF172: + .string "__DBL_HAS_DENORM__ 1" +.LASF2658: + .string "USART_CTL2_IREN BIT(1)" +.LASF2727: + .string "USART_IRLP_NORMAL CTL2_IRLP(0)" +.LASF1180: + .string "DAC_TRIGGER_EXTI_9 CTL_DTSEL(6)" +.LASF1704: + .string "GPIO_BOP_CR4 BIT(20)" +.LASF1291: + .string "DMA_CHMADDR_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF1107: + .string "CAN_INT_RFO0 CAN_INTEN_RFOIE0" +.LASF1872: + .string "GPIO_PD01_REMAP ((uint32_t)0x00008000U)" +.LASF2274: + .string "TIMER_CHCTL1(timerx) REG32((timerx) + 0x1CU)" +.LASF2991: + .string "RCU_CFG1_PLL2MF BITS(12,15)" +.LASF396: + .string "__INT64 \"ll\"" +.LASF1980: + .string "I2C_PECTRANS_ENABLE I2C_CTL0_PECTRANS" +.LASF2818: + .string "ECLIC_INT_IP_OFFSET _AC(0x1000,UL)" +.LASF1127: + .string "DAC DAC_BASE" +.LASF1474: + .string "EXTI_PD_PD8 BIT(8)" +.LASF976: + .string "CAN_RFIFOMI_SFID BITS(21,31)" +.LASF407: + .string "_UINT8_T_DECLARED " +.LASF994: + .string "CAN_FDATA_FD(regval) BIT(regval)" +.LASF2162: + .string "SPI_RCRC_RCRC BITS(0,15)" +.LASF2732: + .string "WWDGT_STAT REG32((WWDGT) + 0x00000008U)" +.LASF1078: + .string "CAN_BT_BS2_5TQ ((uint8_t)0x04U)" +.LASF1264: + .string "DMA_INTC_GIFC BIT(0)" +.LASF2241: + .string "SPI_INT_FLAG_CONFERR ((uint8_t)0x03U)" +.LASF2036: + .string "DBG_CTL_TIMER4_HOLD BIT(18)" +.LASF2178: + .string "SPI_BIDIRECTIONAL_RECEIVE (~SPI_CTL0_BDOEN)" +.LASF1550: + .string "OB_STDBY_RST ((uint8_t)0x00U)" +.LASF156: + .string "__FLT_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F" +.LASF249: + .string "__FLT128_HAS_INFINITY__ 1" +.LASF729: + .string "BKP_DATA16 REG16((BKP) + 0x58U)" +.LASF660: + .string "ADC_INSERTED_CHANNEL_3 ((uint8_t)0x03U)" +.LASF2394: + .string "TIMER_CREP_CREP BITS(0,7)" +.LASF1440: + .string "EXTI_FTEN_FTEN12 BIT(12)" +.LASF719: + .string "BKP_DATA6 REG16((BKP) + 0x1CU)" +.LASF1015: + .string "TMI_EFID(regval) (BITS(3,31) & ((uint32_t)(regval) << 3))" +.LASF584: + .string "ADC_IOFFX_IOFF BITS(0,11)" +.LASF2586: + .string "SMCFG_SMC(regval) (BITS(0, 2) & ((uint32_t)(regval) << 0U))" +.LASF2481: + .string "TIMER_DMACFG_DMATC_14TRANSFER DMACFG_DMATC(13)" +.LASF803: + .string "CAN_RFIFOMI0(canx) REG32((canx) + 0x1B0U)" +.LASF447: + .string "UINT32_MAX (__UINT32_MAX__)" +.LASF1307: + .string "DMA_PERIPH_INCREASE_ENABLE ((uint8_t)0x01U)" +.LASF1006: + .string "ERR_REG_OFFSET ((uint8_t)0x18U)" +.LASF1998: + .string "FWDGT_CTL_CMD BITS(0,15)" +.LASF3259: + .string "RCU_GPIOBRST" +.LASF610: + .string "ADC_DAUL_REGULAL_PARALLEL_INSERTED_ROTATION CTL0_SYNCM(2)" +.LASF740: + .string "BKP_DATA27 REG16((BKP) + 0x84U)" +.LASF301: + .string "__SIZEOF_WINT_T__ 4" +.LASF2549: + .string "TIMER_OC_MODE_PWM1 ((uint16_t)0x0070U)" +.LASF1990: + .string "I2C_ADDFORMAT_7BITS ((uint32_t)0x00000000U)" +.LASF991: + .string "CAN_FSCFG_FS(regval) BIT(regval)" +.LASF1586: + .string "OB_WP_23 ((uint32_t)0x00800000U)" +.LASF559: + .string "ADC_CTL0_WDEIE BIT(6)" +.LASF2266: + .string "TIMER6 (TIMER_BASE + 0x00001400U)" +.LASF561: + .string "ADC_CTL0_SM BIT(8)" +.LASF1010: + .string "BT_SJW(regval) (BITS(24,25) & ((uint32_t)(regval) << 24))" +.LASF728: + .string "BKP_DATA15 REG16((BKP) + 0x54U)" +.LASF1841: + .string "GPIO_PIN_2 BIT(2)" +.LASF555: + .string "ADC_STAT_STIC BIT(3)" +.LASF2115: + .string "RTC_FLAG_LWOF RTC_CTL_LWOFF" +.LASF746: + .string "BKP_DATA33 REG16((BKP) + 0x9CU)" +.LASF818: + .string "CAN_F2DATA0(canx) REG32((canx) + 0x250U)" +.LASF2912: + .string "RCU_APB2RST_SPI0RST BIT(12)" +.LASF2826: + .string "ECLIC_INT_CTRL_OFFSET _AC(0x1003,UL)" +.LASF335: + .string "HXTAL_VALUE_25M HXTAL_VALUE" +.LASF1858: + .string "GPIO_USART0_REMAP ((uint32_t)0x00000004U)" +.LASF2099: + .string "RTC_DIVH_DIV BITS(0,3)" +.LASF599: + .string "ADC_FLAG_WDE ADC_STAT_WDE" +.LASF157: + .string "__FLT_HAS_DENORM__ 1" +.LASF1916: + .string "I2C_SADDR0_ADDFORMAT BIT(15)" +.LASF3356: + .string "stab_int" +.LASF391: + .string "_INTPTR_EQ_INT " +.LASF2408: + .string "TIMER_DMACFG_DMATC BITS(8,12)" +.LASF201: + .string "__FLT16_EPSILON__ 9.76562500000000000000000000000000000e-4F16" +.LASF3106: + .string "RCU_PREDV0_DIV4 CFG1_PREDV0(3)" +.LASF3089: + .string "RCU_CKOUT0SRC_CKSYS CFG0_CKOUT0SEL(4)" +.LASF1241: + .string "DMA_CH2CNT(dmax) REG32((dmax) + 0x34U)" +.LASF898: + .string "CAN_STAT_RS BIT(9)" +.LASF1599: + .string "GD32VF103_GPIO_H " +.LASF1396: + .string "EXTI_EVEN_EVEN6 BIT(6)" +.LASF1828: + .string "GPIO_PIN_SOURCE_5 ((uint8_t)0x05U)" +.LASF2784: + .string "_WCHAR_T_DEFINED_ " +.LASF3094: + .string "RCU_CKOUT0SRC_CKPLL2_DIV2 CFG0_CKOUT0SEL(9)" +.LASF1153: + .string "DAC_CTL_DTSEL1 BITS(19,21)" +.LASF22: + .string "__SIZEOF_LONG_DOUBLE__ 16" +.LASF2941: + .string "RCU_APB2EN_AFEN BIT(0)" +.LASF1810: + .string "GPIO_EVENT_PIN_3 ((uint8_t)0x03U)" +.LASF2006: + .string "FWDGT_PSC_DIV16 ((uint8_t)PSC_PSC(2))" +.LASF692: + .string "OVSCR_OVSS(regval) (BITS(5,8) & ((uint32_t)(regval) << 5))" +.LASF316: + .string "__riscv_c 2000000" +.LASF3189: + .string "RESET" +.LASF2958: + .string "RCU_APB1EN_WWDGTEN BIT(11)" +.LASF2455: + .string "TIMER_DMACFG_DMATA_CHCTL1 DMACFG_DMATA(7)" +.LASF1186: + .string "DWBW(regval) (BITS(8,11) & ((uint32_t)(regval) << 8))" +.LASF2667: + .string "USART_CTL2_CTSIE BIT(10)" +.LASF2482: + .string "TIMER_DMACFG_DMATC_15TRANSFER DMACFG_DMATC(14)" +.LASF380: + .string "__int20" +.LASF2568: + .string "SMCFG_TRGSEL(regval) (BITS(4, 6) & ((uint32_t)(regval) << 4U))" +.LASF2063: + .string "PMU_LVDT_4 CTL_LVDT(4)" +.LASF734: + .string "BKP_DATA21 REG16((BKP) + 0x6CU)" +.LASF739: + .string "BKP_DATA26 REG16((BKP) + 0x80U)" +.LASF313: + .string "__riscv_i 2000000" +.LASF1763: + .string "AFIO_PCF0_TIMER4CH3_IREMAP BIT(16)" +.LASF3158: + .string "RCU_PREDV0SRC_HXTAL ((uint32_t)0x00000000U)" +.LASF798: + .string "CAN_TMDATA11(canx) REG32((canx) + 0x19CU)" +.LASF1325: + .string "DMA_CHANNEL_CNT_MASK DMA_CHXCNT_CNT" +.LASF2953: + .string "RCU_APB1EN_TIMER2EN BIT(1)" +.LASF2686: + .string "CTL0_PM(regval) (BITS(9,10) & ((uint32_t)(regval) << 9))" +.LASF1086: + .string "CAN_FF_STANDARD ((uint32_t)0x00000000U)" +.LASF1658: + .string "GPIO_ISTAT_ISTAT6 BIT(6)" +.LASF2068: + .string "PMU_FLAG_STANDBY PMU_CS_STBF" +.LASF1253: + .string "DMA_CH5CNT(dmax) REG32((dmax) + 0x70U)" +.LASF79: + .string "__SCHAR_WIDTH__ 8" +.LASF2133: + .string "SPI_CTL0_SPIEN BIT(6)" +.LASF591: + .string "ADC_IDATAX_IDATAN BITS(0,15)" +.LASF2387: + .string "TIMER_CHCTL2_CH2NEN BIT(10)" +.LASF2365: + .string "TIMER_CHCTL1_CH2COMSEN BIT(3)" +.LASF1379: + .string "EXTI_INTEN_INTEN8 BIT(8)" +.LASF1844: + .string "GPIO_PIN_5 BIT(5)" +.LASF2371: + .string "TIMER_CHCTL1_CH3COMCTL BITS(12,14)" +.LASF2684: + .string "USART_TRANSMIT_ENABLE CTL0_TEN(1)" +.LASF523: + .string "FMC_BASE (AHB1_BUS_BASE + 0x0000A000U)" +.LASF2158: + .string "SPI_STAT_TRANS BIT(7)" +.LASF2683: + .string "CTL0_TEN(regval) (BIT(3) & ((uint32_t)(regval) << 3))" +.LASF2116: + .string "GD32VF103_SPI_H " +.LASF333: + .string "__IO volatile" +.LASF2887: + .string "RCU_INT_CKMIF BIT(7)" +.LASF1118: + .string "GD32VF103_CRC_H " +.LASF752: + .string "BKP_DATA39 REG16((BKP) + 0xB4U)" +.LASF1581: + .string "OB_WP_18 ((uint32_t)0x00040000U)" +.LASF1194: + .string "DAC_WAVE_BIT_WIDTH_8 DWBW(7)" +.LASF1279: + .string "DMA_CHXCTL_M2M BIT(14)" +.LASF957: + .string "CAN_TMI_TEN BIT(0)" +.LASF2685: + .string "USART_TRANSMIT_DISABLE CTL0_TEN(0)" +.LASF2250: + .string "SPI_FLAG_TRANS SPI_STAT_TRANS" +.LASF3218: + .string "RCU_PMU" +.LASF1298: + .string "DMA_FLAG_FTF DMA_INTF_FTFIF" +.LASF1926: + .string "I2C_STAT0_TBE BIT(7)" +.LASF1031: + .string "GET_RFIFOMDATA0_DB2(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF1575: + .string "OB_WP_12 ((uint32_t)0x00001000U)" +.LASF1405: + .string "EXTI_EVEN_EVEN15 BIT(15)" +.LASF3367: + .string "rcu_i2s1_clock_config" +.LASF2857: + .string "RCU_CTL_HXTALEN BIT(16)" +.LASF3084: + .string "RCU_CKUSB_CKPLL_DIV1 CFG0_USBPSC(1)" +.LASF2949: + .string "RCU_APB2EN_TIMER0EN BIT(11)" +.LASF3134: + .string "RCU_PREDV1_DIV15 CFG1_PREDV1(14)" +.LASF208: + .string "__FLT32_MIN_EXP__ (-125)" +.LASF1210: + .string "DAC_LFSR_BITS11_0 DAC_WAVE_BIT_WIDTH_12" +.LASF2759: + .string "__SIZE_T__ " +.LASF1984: + .string "I2C_ARP_ENABLE I2C_CTL0_ARPEN" +.LASF2000: + .string "FWDGT_RLD_RLD BITS(0,11)" +.LASF1867: + .string "GPIO_TIMER2_PARTIAL_REMAP ((uint32_t)0x001A0800U)" +.LASF2972: + .string "RCU_BDCTL_LXTALEN BIT(0)" +.LASF2921: + .string "RCU_APB1RST_SPI1RST BIT(14)" +.LASF3108: + .string "RCU_PREDV0_DIV6 CFG1_PREDV0(5)" +.LASF2946: + .string "RCU_APB2EN_PEEN BIT(6)" +.LASF1801: + .string "GPIO_EVENT_PORT_GPIOE ((uint8_t)0x04U)" +.LASF2154: + .string "SPI_STAT_TXURERR BIT(3)" +.LASF1334: + .string "EXMC (EXMC_BASE)" +.LASF1051: + .string "CAN_LOOPBACK_MODE ((uint8_t)0x01U)" +.LASF385: + .string "char +0" +.LASF1711: + .string "GPIO_BOP_CR11 BIT(27)" +.LASF1155: + .string "DAC_CTL_DWBW1 BITS(24,27)" +.LASF1008: + .string "BT_BS1(regval) (BITS(16,19) & ((uint32_t)(regval) << 16))" +.LASF445: + .string "INT32_MIN (-__INT32_MAX__ - 1)" +.LASF2326: + .string "TIMER_DMAINTEN_CH3DEN BIT(12)" +.LASF3246: + .string "RCU_USART1RST" +.LASF751: + .string "BKP_DATA38 REG16((BKP) + 0xB0U)" +.LASF513: + .string "CAN_BASE (APB1_BUS_BASE + 0x00006400U)" +.LASF2073: + .string "PMU_FLAG_RESET_STANDBY ((uint8_t)0x01U)" +.LASF3123: + .string "RCU_PREDV1_DIV4 CFG1_PREDV1(3)" +.LASF2142: + .string "SPI_CTL0_BDEN BIT(15)" +.LASF1430: + .string "EXTI_FTEN_FTEN2 BIT(2)" +.LASF2733: + .string "WWDGT_CTL_CNT BITS(0,6)" +.LASF1758: + .string "AFIO_PCF0_TIMER1_REMAP BITS(8, 9)" +.LASF2993: + .string "RCU_CFG1_I2S1SEL BIT(17)" +.LASF1494: + .string "FMC_OBSTAT REG32((FMC) + 0x1CU)" +.LASF1785: + .string "GPIO_MODE_MASK(n) (0xFU << (4U * (n)))" +.LASF2530: + .string "TIMER_CCX_ENABLE ((uint16_t)0x0001U)" +.LASF1662: + .string "GPIO_ISTAT_ISTAT10 BIT(10)" +.LASF568: + .string "ADC_CTL0_IWDEN BIT(22)" +.LASF2531: + .string "TIMER_CCX_DISABLE ((uint16_t)0x0000U)" +.LASF1372: + .string "EXTI_INTEN_INTEN1 BIT(1)" +.LASF370: + .string "___int_least16_t_defined 1" +.LASF2538: + .string "TIMER_OC_IDLE_STATE_HIGH ((uint16_t)0x0100)" +.LASF703: + .string "ADC_OVERSAMPLING_RATIO_MUL2 OVSCR_OVSR(0)" +.LASF15: + .string "__FINITE_MATH_ONLY__ 0" +.LASF1259: + .string "DMA_CH6MADDR(dmax) REG32((dmax) + 0x8CU)" +.LASF2637: + .string "USART_CTL0_TEN BIT(3)" +.LASF469: + .string "INTMAX_MAX (__INTMAX_MAX__)" +.LASF2822: + .string "ECLIC_INT_ATTR_TRIG_LEVEL 0x00" +.LASF3191: + .string "ERROR" +.LASF2544: + .string "TIMER_OC_MODE_INACTIVE ((uint16_t)0x0020U)" +.LASF1514: + .string "FMC_CTL_OBER BIT(5)" +.LASF1074: + .string "CAN_BT_BS2_1TQ ((uint8_t)0x00U)" +.LASF808: + .string "CAN_RFIFOMP1(canx) REG32((canx) + 0x1C4U)" +.LASF2056: + .string "PMU_CS_LVDF BIT(2)" +.LASF926: + .string "CAN_RFIFO0_RFD0 BIT(5)" +.LASF2694: + .string "USART_WL_8BIT CTL0_WL(0)" +.LASF2821: + .string "ECLIC_INT_ATTR_SHV 0x01" +.LASF2700: + .string "USART_STB_1_5BIT CTL1_STB(3)" +.LASF3287: + .string "RCU_INT_FLAG_PLLSTB" +.LASF212: + .string "__FLT32_DECIMAL_DIG__ 9" +.LASF1936: + .string "I2C_STAT1_TR BIT(2)" +.LASF2474: + .string "TIMER_DMACFG_DMATC_7TRANSFER DMACFG_DMATC(6)" +.LASF3254: + .string "RCU_BKPIRST" +.LASF562: + .string "ADC_CTL0_WDSC BIT(9)" +.LASF705: + .string "ADC_OVERSAMPLING_RATIO_MUL8 OVSCR_OVSR(2)" +.LASF367: + .string "___int32_t_defined 1" +.LASF3269: + .string "RCU_FLAG_IRC8MSTB" +.LASF2853: + .string "RCU_CTL_IRC8MEN BIT(0)" +.LASF1182: + .string "CTL_DWM(regval) (BITS(6,7) & ((uint32_t)(regval) << 6))" +.LASF168: + .string "__DBL_NORM_MAX__ ((double)1.79769313486231570814527423731704357e+308L)" +.LASF2320: + .string "TIMER_DMAINTEN_TRGIE BIT(6)" +.LASF230: + .string "__FLT64_MIN__ 2.22507385850720138309023271733240406e-308F64" +.LASF634: + .string "ADC0_1_EXTTRIG_INSERTED_T1_CH0 CTL1_ETSIC(3)" +.LASF1622: + .string "GPIO_CTL0_MD1 BITS(4, 5)" +.LASF2633: + .string "USART_BAUD_INTDIV BITS(4,15)" +.LASF246: + .string "__FLT128_EPSILON__ 1.92592994438723585305597794258492732e-34F128" +.LASF2526: + .string "TIMER_CH_0 ((uint16_t)0x0000U)" +.LASF2927: + .string "RCU_APB1RST_I2C0RST BIT(21)" +.LASF3046: + .string "RCU_CKADC_CKAPB2_DIV16 ((uint32_t)0x00000007U)" +.LASF1489: + .string "FMC_KEY REG32((FMC) + 0x04U)" +.LASF3373: + .string "adc_psc" +.LASF2899: + .string "RCU_INT_PLLSTBIC BIT(20)" +.LASF1770: + .string "AFIO_EXTI3_SS BITS(12, 15)" +.LASF2563: + .string "TIMER_IC_SELECTION_ITS ((uint16_t)0x0003U)" +.LASF1614: + .string "AFIO_PCF0 REG32(AFIO + 0x04U)" +.LASF633: + .string "ADC0_1_EXTTRIG_INSERTED_T1_TRGO CTL1_ETSIC(2)" +.LASF2962: + .string "RCU_APB1EN_USART2EN BIT(18)" +.LASF3099: + .string "RCU_RTCSRC_LXTAL BDCTL_RTCSRC(1)" +.LASF2027: + .string "DBG_CTL_FWDGT_HOLD BIT(8)" +.LASF1490: + .string "FMC_OBKEY REG32((FMC) + 0x08U)" +.LASF493: + .string "REG8(addr) (*(volatile uint8_t *)(uint32_t)(addr))" +.LASF2726: + .string "USART_IRLP_LOW CTL2_IRLP(1)" +.LASF2013: + .string "FWDGT_KEY_RELOAD ((uint16_t)0xAAAAU)" +.LASF1692: + .string "GPIO_BOP_BOP8 BIT(8)" +.LASF2179: + .string "SPI_TRANSMODE_FULLDUPLEX ((uint32_t)0x00000000U)" +.LASF2302: + .string "TIMER_CTL1_ISO1 BIT(10)" +.LASF2590: + .string "TIMER_ENCODER_MODE2 SMCFG_SMC(3)" +.LASF423: + .string "__int_least16_t_defined 1" +.LASF1169: + .string "DACC_R8DH_DAC0_DH BITS(0,7)" +.LASF3110: + .string "RCU_PREDV0_DIV8 CFG1_PREDV0(7)" +.LASF2781: + .string "__WCHAR_T " +.LASF409: + .string "_INT16_T_DECLARED " +.LASF88: + .string "__INTMAX_MAX__ 0x7fffffffffffffffLL" +.LASF1189: + .string "DAC_WAVE_BIT_WIDTH_3 DWBW(2)" +.LASF1046: + .string "CAN_ERRN_5 ERR_ERRN(5U)" +.LASF2138: + .string "SPI_CTL0_FF16 BIT(11)" +.LASF919: + .string "CAN_TSTAT_TME2 BIT(28)" +.LASF1724: + .string "GPIO_BC_CR8 BIT(8)" +.LASF938: + .string "CAN_INTEN_WERRIE BIT(8)" +.LASF2712: + .string "USART_CPL_HIGH CTL1_CPL(1)" +.LASF90: + .string "__UINTMAX_MAX__ 0xffffffffffffffffULL" +.LASF3322: + .string "ck_freq" +.LASF3181: + .string "long int" +.LASF615: + .string "ADC_DAUL_REGULAL_FOLLOWUP_FAST CTL0_SYNCM(7)" +.LASF3000: + .string "APB1EN_REG_OFFSET 0x1CU" +.LASF1890: + .string "I2C_CKCFG(i2cx) REG32((i2cx) + 0x1CU)" +.LASF2252: + .string "I2S_FLAG_RBNE SPI_STAT_RBNE" +.LASF3060: + .string "RCU_PLL_MUL11 CFG0_PLLMF(9)" +.LASF3336: + .string "apb1_exp" +.LASF1363: + .string "GD32VF103_EXTI_H " +.LASF378: + .string "char" +.LASF1757: + .string "AFIO_PCF0_TIMER0_REMAP BITS(6, 7)" +.LASF1341: + .string "EXMC_SNCTL_NRW BITS(4,5)" +.LASF32: + .string "__SIZE_TYPE__ unsigned int" +.LASF3247: + .string "RCU_USART2RST" +.LASF2959: + .string "RCU_APB1EN_SPI1EN BIT(14)" +.LASF881: + .string "CAN_RFIFOMDATA1(canx,bank) REG32((canx) + 0x1BCU + ((bank) * 0x10U))" +.LASF2378: + .string "TIMER_CHCTL2_CH0P BIT(1)" +.LASF392: + .string "_INT32_EQ_LONG " +.LASF1070: + .string "CAN_BT_BS1_13TQ ((uint8_t)0x0CU)" +.LASF1929: + .string "I2C_STAT0_AERR BIT(10)" +.LASF3082: + .string "CFG0_USBPSC(regval) (BITS(22,23) & ((uint32_t)(regval) << 22))" +.LASF2539: + .string "TIMER_OC_IDLE_STATE_LOW ((uint16_t)0x0000)" +.LASF1385: + .string "EXTI_INTEN_INTEN14 BIT(14)" +.LASF908: + .string "CAN_TSTAT_MAL1 BIT(10)" +.LASF31: + .string "__SIZEOF_POINTER__ 4" +.LASF1709: + .string "GPIO_BOP_CR9 BIT(25)" +.LASF3139: + .string "RCU_PLL1_MUL10 CFG1_PLL1MF(8)" +.LASF217: + .string "__FLT32_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F32" +.LASF2851: + .string "RCU_CFG1 REG32(RCU + 0x2CU)" +.LASF1312: + .string "DMA_PERIPHERAL_WIDTH_16BIT CHCTL_PWIDTH(1U)" +.LASF2547: + .string "TIMER_OC_MODE_HIGH ((uint16_t)0x0050U)" +.LASF1428: + .string "EXTI_FTEN_FTEN0 BIT(0)" +.LASF2553: + .string "TIMER_OC_FAST_DISABLE ((uint16_t)0x0000)" +.LASF1796: + .string "GPIO_OSPEED_50MHZ ((uint8_t)0x03U)" +.LASF3330: + .string "ck_src" +.LASF687: + .string "ADC_RESOLUTION_10B OVSCR_DRES(1)" +.LASF3004: + .string "APB2RST_REG_OFFSET 0x0CU" +.LASF2664: + .string "USART_CTL2_DENT BIT(7)" +.LASF2466: + .string "TIMER_DMACFG_DMATA_DMACFG DMACFG_DMATA(18)" +.LASF2153: + .string "SPI_STAT_I2SCH BIT(2)" +.LASF2682: + .string "USART_RECEIVE_DISABLE CTL0_REN(0)" +.LASF2301: + .string "TIMER_CTL1_ISO0N BIT(9)" +.LASF2355: + .string "TIMER_CHCTL0_CH1COMFEN BIT(10)" +.LASF2487: + .string "TIMER_EVENT_SRC_CH0G ((uint16_t)0x0002U)" +.LASF663: + .string "ADC_CHANNEL_2 ((uint8_t)0x02U)" +.LASF1854: + .string "GPIO_PIN_15 BIT(15)" +.LASF3239: + .string "RCU_TIMER3RST" +.LASF1528: + .string "FMC_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF1104: + .string "CAN_INT_TME CAN_INTEN_TMEIE" +.LASF1152: + .string "DAC_CTL_DTEN1 BIT(18)" +.LASF1896: + .string "I2C_CTL0_ARPEN BIT(4)" +.LASF3125: + .string "RCU_PREDV1_DIV6 CFG1_PREDV1(5)" +.LASF2666: + .string "USART_CTL2_CTSEN BIT(9)" +.LASF2777: + .string "__WCHAR_T__ " +.LASF552: + .string "ADC_STAT_WDE BIT(0)" +.LASF1685: + .string "GPIO_BOP_BOP1 BIT(1)" +.LASF2434: + .string "TIMER_FLAG_CH0O TIMER_INTF_CH0OF" +.LASF708: + .string "ADC_OVERSAMPLING_RATIO_MUL64 OVSCR_OVSR(5)" +.LASF1043: + .string "CAN_ERRN_2 ERR_ERRN(2U)" +.LASF1618: + .string "AFIO_EXTISS3 REG32(AFIO + 0x14U)" +.LASF1445: + .string "EXTI_FTEN_FTEN17 BIT(17)" +.LASF3050: + .string "CFG0_PLLMF(regval) (BITS(18,21) & ((uint32_t)(regval) << 18))" +.LASF3149: + .string "RCU_PLL2_MUL9 CFG1_PLL2MF(7)" +.LASF2880: + .string "RCU_INT_IRC40KSTBIF BIT(0)" +.LASF2259: + .string "GD32VF103_TIMER_H " +.LASF1018: + .string "TMDATA0_DB1(regval) (BITS(8,15) & ((uint32_t)(regval) << 8))" +.LASF2037: + .string "DBG_CTL_TIMER5_HOLD BIT(19)" +.LASF2746: + .string "_STDDEF_H_ " +.LASF722: + .string "BKP_DATA9 REG16((BKP) + 0x28U)" +.LASF2834: + .string "ECLIC_GROUP_LEVEL0_PRIO4 0" +.LASF3299: + .string "RCU_INT_FLAG_CKM_CLR" +.LASF841: + .string "CAN_F25DATA0(canx) REG32((canx) + 0x308U)" +.LASF1717: + .string "GPIO_BC_CR1 BIT(1)" +.LASF2848: + .string "RCU_BDCTL REG32(RCU + 0x20U)" +.LASF990: + .string "CAN_FMCFG_FMOD(regval) BIT(regval)" +.LASF2842: + .string "RCU_INT REG32(RCU + 0x08U)" +.LASF2254: + .string "I2S_FLAG_CH SPI_STAT_I2SCH" +.LASF2960: + .string "RCU_APB1EN_SPI2EN BIT(15)" +.LASF921: + .string "CAN_TSTAT_TMLS1 BIT(30)" +.LASF479: + .string "WINT_MAX (__WINT_MAX__)" +.LASF856: + .string "CAN_F12DATA1(canx) REG32((canx) + 0x2A4U)" +.LASF1016: + .string "TMI_SFID(regval) (BITS(21,31) & ((uint32_t)(regval) << 21))" +.LASF862: + .string "CAN_F18DATA1(canx) REG32((canx) + 0x2D4U)" +.LASF1565: + .string "OB_WP_2 ((uint32_t)0x00000004U)" +.LASF2738: + .string "WWDGT_STAT_EWIF BIT(0)" +.LASF1783: + .string "AFIO_PCF1_EXMC_NADV BIT(10)" +.LASF2984: + .string "RCU_RSTSCK_FWDGTRSTF BIT(29)" +.LASF1478: + .string "EXTI_PD_PD12 BIT(12)" +.LASF1023: + .string "TMDATA1_DB6(regval) (BITS(16,23) & ((uint32_t)(regval) << 16))" +.LASF1802: + .string "GPIO_PORT_SOURCE_GPIOA ((uint8_t)0x00U)" +.LASF200: + .string "__FLT16_MIN__ 6.10351562500000000000000000000000000e-5F16" +.LASF2891: + .string "RCU_INT_HXTALSTBIE BIT(11)" +.LASF564: + .string "ADC_CTL0_DISRC BIT(11)" +.LASF3200: + .string "RCU_TIMER1" +.LASF3201: + .string "RCU_TIMER2" +.LASF3202: + .string "RCU_TIMER3" +.LASF3203: + .string "RCU_TIMER4" +.LASF3204: + .string "RCU_TIMER5" +.LASF3205: + .string "RCU_TIMER6" +.LASF815: + .string "CAN_FW(canx) REG32((canx) + 0x21CU)" +.LASF1753: + .string "AFIO_PCF0_I2C0_REMAP BIT(1)" +.LASF2275: + .string "TIMER_CHCTL2(timerx) REG32((timerx) + 0x20U)" +.LASF2606: + .string "TIMER_CHVSEL_ENABLE ((uint16_t)TIMER_CFG_OUTSEL)" +.LASF3093: + .string "RCU_CKOUT0SRC_CKPLL1 CFG0_CKOUT0SEL(8)" +.LASF2237: + .string "SPI_I2S_INT_ERR ((uint8_t)0x02U)" +.LASF807: + .string "CAN_RFIFOMI1(canx) REG32((canx) + 0x1C0U)" +.LASF1471: + .string "EXTI_PD_PD5 BIT(5)" +.LASF1421: + .string "EXTI_RTEN_RTEN12 BIT(12)" +.LASF831: + .string "CAN_F15DATA0(canx) REG32((canx) + 0x2B8U)" +.LASF1681: + .string "GPIO_OCTL_OCTL13 BIT(13)" +.LASF1940: + .string "I2C_STAT1_DUMODF BIT(7)" +.LASF531: + .string "ADC_STAT(adcx) REG32((adcx) + 0x00U)" +.LASF721: + .string "BKP_DATA8 REG16((BKP) + 0x24U)" +.LASF2702: + .string "USART_LBLEN_10B CTL1_LBLEN(0)" +.LASF1670: + .string "GPIO_OCTL_OCTL2 BIT(2)" +.LASF57: + .string "__INT_FAST8_TYPE__ int" +.LASF1594: + .string "OB_WP_31 ((uint32_t)0x80000000U)" +.LASF1167: + .string "DACC_L12DH_DAC0_DH BITS(4,15)" +.LASF3244: + .string "RCU_SPI1RST" +.LASF1470: + .string "EXTI_PD_PD4 BIT(4)" +.LASF1045: + .string "CAN_ERRN_4 ERR_ERRN(4U)" +.LASF956: + .string "CAN_BT_SCMOD BIT(31)" +.LASF3386: + .string "ckout0_src" +.LASF2361: + .string "TIMER_CHCTL0_CH1CAPPSC BITS(10,11)" +.LASF2023: + .string "DBG_ID_ID_CODE BITS(0,31)" +.LASF650: + .string "WDLT_WDLT(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF1141: + .string "DAC0_DO REG32(DAC + 0x2CU)" +.LASF2097: + .string "RTC_PSCH_PSC BITS(0,3)" +.LASF1172: + .string "DAC1_DO_DAC1_DO BITS(0,11)" +.LASF1418: + .string "EXTI_RTEN_RTEN9 BIT(9)" +.LASF720: + .string "BKP_DATA7 REG16((BKP) + 0x20U)" +.LASF3020: + .string "RCU_AHB_CKSYS_DIV1 CFG0_AHBPSC(0)" +.LASF2062: + .string "PMU_LVDT_3 CTL_LVDT(3)" +.LASF1545: + .string "OB_FWDGT_SW ((uint8_t)0x01U)" +.LASF1331: + .string "ECLIC_PRIGROUP_LEVEL4_PRIO0 4" +.LASF2311: + .string "TIMER_SMCFG_ETPSC BITS(12,13)" +.LASF453: + .string "UINT64_MAX (__UINT64_MAX__)" +.LASF1919: + .string "I2C_DATA_TRB BITS(0,7)" +.LASF3358: + .string "rcu_interrupt_flag_clear" +.LASF1988: + .string "I2C_DTCY_2 ((uint32_t)0x00000000U)" +.LASF1579: + .string "OB_WP_16 ((uint32_t)0x00010000U)" +.LASF1738: + .string "GPIO_LOCK_LK6 BIT(6)" +.LASF736: + .string "BKP_DATA23 REG16((BKP) + 0x74U)" +.LASF2816: + .string "ECLIC_INFO_OFFSET 0x4" +.LASF884: + .string "CAN_CTL_TFO BIT(2)" +.LASF3025: + .string "RCU_AHB_CKSYS_DIV64 CFG0_AHBPSC(12)" +.LASF2401: + .string "TIMER_CCHP_IOS BIT(10)" +.LASF2810: + .string "_AC(X,Y) (X ##Y)" +.LASF1774: + .string "AFIO_EXTI7_SS BITS(12, 15)" +.LASF2194: + .string "SPI_PSC_2 CTL0_PSC(0)" +.LASF896: + .string "CAN_STAT_SLPIF BIT(4)" +.LASF2617: + .string "USART_CTL0(usartx) REG32((usartx) + (0x0000000CU))" +.LASF710: + .string "ADC_OVERSAMPLING_RATIO_MUL256 OVSCR_OVSR(7)" +.LASF753: + .string "BKP_DATA40 REG16((BKP) + 0xB8U)" +.LASF1451: + .string "EXTI_SWIEV_SWIEV4 BIT(4)" +.LASF2734: + .string "WWDGT_CTL_WDGTEN BIT(7)" +.LASF1554: + .string "FMC_USPC ((uint8_t)0xBBU)" +.LASF973: + .string "CAN_RFIFOMI_FT BIT(1)" +.LASF715: + .string "BKP_DATA2 REG16((BKP) + 0x0CU)" +.LASF1224: + .string "DAC_TRIANGLE_AMPLITUDE_1023 DAC_WAVE_BIT_WIDTH_10" +.LASF16: + .string "__SIZEOF_INT__ 4" +.LASF1609: + .string "GPIO_OCTL(gpiox) REG32((gpiox) + 0x0CU)" +.LASF1049: + .string "CAN_STATE_PENDING ((uint32_t)0x00000000U)" +.LASF384: + .string "unsigned +0" +.LASF28: + .string "__ORDER_PDP_ENDIAN__ 3412" +.LASF151: + .string "__FLT_DECIMAL_DIG__ 9" +.LASF3382: + .string "predv0_div" +.LASF2642: + .string "USART_CTL0_PERRIE BIT(8)" +.LASF1703: + .string "GPIO_BOP_CR3 BIT(19)" +.LASF2155: + .string "SPI_STAT_CRCERR BIT(4)" +.LASF99: + .string "__INT64_MAX__ 0x7fffffffffffffffLL" +.LASF2889: + .string "RCU_INT_LXTALSTBIE BIT(9)" +.LASF3162: + .string "RCU_I2S2SRC_CKSYS ((uint32_t)0x00000000U)" +.LASF2675: + .string "USART_BIT_POS2(val) (((uint32_t)(val) & (0x001F0000U)) >> 16)" +.LASF879: + .string "CAN_RFIFOMP(canx,bank) REG32((canx) + 0x1B4U + ((bank) * 0x10U))" +.LASF675: + .string "ADC_CHANNEL_14 ((uint8_t)0x0EU)" +.LASF2936: + .string "RCU_AHBEN_SRAMSPEN BIT(2)" +.LASF594: + .string "ADC_OVSCR_OVSEN BIT(0)" +.LASF2503: + .string "CTL0_CKDIV(regval) ((uint16_t)(BITS(8, 9) & ((uint32_t)(regval) << 8U)))" +.LASF1202: + .string "DAC_LFSR_BITS3_0 DAC_WAVE_BIT_WIDTH_4" +.LASF2270: + .string "TIMER_DMAINTEN(timerx) REG32((timerx) + 0x0CU)" +.LASF417: + .string "__int64_t_defined 1" +.LASF724: + .string "BKP_DATA11 REG16((BKP) + 0x44U)" +.LASF2866: + .string "RCU_CTL_PLL2STB BIT(29)" +.LASF2555: + .string "TIMER_OC_CLEAR_DISABLE ((uint16_t)0x0000U)" +.LASF3292: + .string "RCU_INT_FLAG_IRC40KSTB_CLR" +.LASF379: + .string "short" +.LASF1357: + .string "EXMC_MEMORY_TYPE_SRAM SNCTL_NRTP(0)" +.LASF1465: + .string "EXTI_SWIEV_SWIEV18 BIT(18)" +.LASF1524: + .string "FMC_OBSTAT_DATA BITS(10,25)" +.LASF772: + .string "BKP_DATA_GET(regval) GET_BITS((uint32_t)(regval), 0, 15)" +.LASF2598: + .string "TIMER_EXT_TRI_PSC_OFF SMCFG_ETPSC(0)" +.LASF3127: + .string "RCU_PREDV1_DIV8 CFG1_PREDV1(7)" +.LASF992: + .string "CAN_FAFIFOR_FAF(regval) BIT(regval)" +.LASF2741: + .string "WWDGT_CFG_PSC_DIV2 CFG_PSC(1)" +.LASF3406: + .string "GNU C17 10.2.0 -march=rv32imac -mabi=ilp32 -mcmodel=medany -msmall-data-limit= 8 -march=rv32imac -g3 -O0" +.LASF1187: + .string "DAC_WAVE_BIT_WIDTH_1 DWBW(0)" +.LASF1518: + .string "FMC_CTL_ERRIE BIT(10)" +.LASF749: + .string "BKP_DATA36 REG16((BKP) + 0xA8U)" +.LASF871: + .string "CAN_F27DATA1(canx) REG32((canx) + 0x31CU)" +.LASF735: + .string "BKP_DATA22 REG16((BKP) + 0x70U)" +.LASF1013: + .string "FDATA_MASK_LOW(regval) (BITS(0,15) & ((uint32_t)(regval) << 0))" +.LASF193: + .string "__FLT16_MIN_EXP__ (-13)" +.LASF2022: + .string "DBG_CTL REG32(DBG + 0x04U)" +.LASF3307: + .string "RCU_INT_PLL2STB" +.LASF1824: + .string "GPIO_PIN_SOURCE_1 ((uint8_t)0x01U)" +.LASF1667: + .string "GPIO_ISTAT_ISTAT15 BIT(15)" +.LASF3173: + .string "LXTAL_STARTUP_TIMEOUT ((uint32_t)0x3FFFFFFU)" +.LASF2136: + .string "SPI_CTL0_SWNSSEN BIT(9)" +.LASF2216: + .string "I2S_MCKOUT_DISABLE ((uint32_t)0x00000000U)" +.LASF592: + .string "ADC_RDATA_RDATA BITS(0,15)" +.LASF939: + .string "CAN_INTEN_PERRIE BIT(9)" +.LASF1776: + .string "AFIO_EXTI9_SS BITS(4, 7)" +.LASF2883: + .string "RCU_INT_HXTALSTBIF BIT(3)" +.LASF359: + .string "__SVID_VISIBLE 0" +.LASF2867: + .string "RCU_CFG0_SCS BITS(0,1)" +.LASF2343: + .string "TIMER_SWEVG_CH1G BIT(2)" +.LASF1450: + .string "EXTI_SWIEV_SWIEV3 BIT(3)" +.LASF1664: + .string "GPIO_ISTAT_ISTAT12 BIT(12)" +.LASF748: + .string "BKP_DATA35 REG16((BKP) + 0xA4U)" +.LASF1247: + .string "DMA_CH3MADDR(dmax) REG32((dmax) + 0x50U)" +.LASF1099: + .string "CAN_FILTERMODE_LIST ((uint8_t)0x01U)" +.LASF1188: + .string "DAC_WAVE_BIT_WIDTH_2 DWBW(1)" +.LASF3003: + .string "APB1RST_REG_OFFSET 0x10U" +.LASF53: + .string "__UINT_LEAST8_TYPE__ unsigned char" +.LASF2969: + .string "RCU_APB1EN_BKPIEN BIT(27)" +.LASF1888: + .string "I2C_STAT0(i2cx) REG32((i2cx) + 0x14U)" +.LASF2369: + .string "TIMER_CHCTL1_CH3COMFEN BIT(10)" +.LASF3026: + .string "RCU_AHB_CKSYS_DIV128 CFG0_AHBPSC(13)" +.LASF823: + .string "CAN_F7DATA0(canx) REG32((canx) + 0x278U)" +.LASF2990: + .string "RCU_CFG1_PLL1MF BITS(8,11)" +.LASF723: + .string "BKP_DATA10 REG16((BKP) + 0x40U)" +.LASF940: + .string "CAN_INTEN_BOIE BIT(10)" +.LASF1822: + .string "GPIO_EVENT_PIN_15 ((uint8_t)0x0FU)" +.LASF2546: + .string "TIMER_OC_MODE_LOW ((uint16_t)0x0040U)" +.LASF1256: + .string "DMA_CH6CTL(dmax) REG32((dmax) + 0x80U)" +.LASF0: + .string "__STDC__ 1" +.LASF1227: + .string "GD32VF103_DMA_H " +.LASF221: + .string "__FLT64_MANT_DIG__ 53" +.LASF2966: + .string "RCU_APB1EN_I2C1EN BIT(22)" +.LASF1158: + .string "DAC_SWT_SWTR1 BIT(1)" +.LASF2015: + .string "FWDGT_PSC_TIMEOUT ((uint32_t)0x000FFFFFU)" +.LASF2272: + .string "TIMER_SWEVG(timerx) REG32((timerx) + 0x14U)" +.LASF1088: + .string "CAN_FIFO0 ((uint8_t)0x00U)" +.LASF2011: + .string "FWDGT_WRITEACCESS_ENABLE ((uint16_t)0x5555U)" +.LASF2370: + .string "TIMER_CHCTL1_CH3COMSEN BIT(11)" +.LASF94: + .string "__SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)" +.LASF1950: + .string "I2C_REGIDX_BIT2(regidx,bitpos,regidx2,bitpos2) (((uint32_t)(regidx2) << 22) | (uint32_t)((bitpos2) << 16) | (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos)))" +.LASF754: + .string "BKP_DATA41 REG16((BKP) + 0xBCU)" +.LASF3133: + .string "RCU_PREDV1_DIV14 CFG1_PREDV1(13)" +.LASF27: + .string "__ORDER_BIG_ENDIAN__ 4321" +.LASF2420: + .string "TIMER_INT_FLAG_CH1 TIMER_INT_CH1" +.LASF252: + .string "__FLT32X_DIG__ 15" +.LASF2305: + .string "TIMER_CTL1_ISO2N BIT(13)" +.LASF2494: + .string "CTL0_CAM(regval) ((uint16_t)(BITS(5, 6) & ((uint32_t)(regval) << 5U)))" +.LASF2044: + .string "PMU PMU_BASE" +.LASF747: + .string "BKP_DATA34 REG16((BKP) + 0xA0U)" +.LASF2286: + .string "TIMER_DMATB(timerx) REG32((timerx) + 0x4CU)" +.LASF2217: + .string "I2S_MCKOUT_ENABLE SPI_I2SPSC_MCKOEN" +.LASF619: + .string "ADC_DATAALIGN_LEFT ADC_CTL1_DAL" +.LASF369: + .string "___int_least8_t_defined 1" +.LASF3041: + .string "RCU_CKADC_CKAPB2_DIV2 ((uint32_t)0x00000000U)" +.LASF2943: + .string "RCU_APB2EN_PBEN BIT(3)" +.LASF802: + .string "CAN_TMDATA12(canx) REG32((canx) + 0x1ACU)" +.LASF670: + .string "ADC_CHANNEL_9 ((uint8_t)0x09U)" +.LASF1903: + .string "I2C_CTL0_POAP BIT(11)" +.LASF2231: + .string "SPI_DMA_TRANSMIT ((uint8_t)0x00U)" +.LASF174: + .string "__DBL_HAS_QUIET_NAN__ 1" +.LASF1745: + .string "GPIO_LOCK_LK13 BIT(13)" +.LASF2054: + .string "PMU_CS_WUF BIT(0)" +.LASF648: + .string "IOFFX_IOFF(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF1797: + .string "GPIO_EVENT_PORT_GPIOA ((uint8_t)0x00U)" +.LASF3365: + .string "rcu_i2s2_clock_config" +.LASF572: + .string "ADC_CTL1_CLB BIT(2)" +.LASF630: + .string "CTL1_ETSIC(regval) (BITS(12,14) & ((uint32_t)(regval) << 12))" +.LASF1760: + .string "AFIO_PCF0_TIMER3_REMAP BIT(12)" +.LASF236: + .string "__FLT128_MANT_DIG__ 113" +.LASF1486: + .string "FMC FMC_BASE" +.LASF530: + .string "ADC1 (ADC_BASE + 0x400U)" +.LASF2157: + .string "SPI_STAT_RXORERR BIT(6)" +.LASF1164: + .string "DAC1_R8DH_DAC1_DH BITS(0,7)" +.LASF3167: + .string "RCU_DEEPSLEEP_V_1_0 DSV_DSLPVS(2)" +.LASF3164: + .string "DSV_DSLPVS(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF2428: + .string "TIMER_FLAG_CH1 TIMER_INTF_CH1IF" +.LASF1114: + .string "CAN_INT_ERRN CAN_INTEN_ERRNIE" +.LASF310: + .string "__riscv_float_abi_soft 1" +.LASF3144: + .string "RCU_PLL1_MUL15 CFG1_PLL1MF(13)" +.LASF759: + .string "BKP_OCTL_RCCV BITS(0,6)" +.LASF1233: + .string "DMA_CH0CNT(dmax) REG32((dmax) + 0x0CU)" +.LASF2622: + .string "USART_STAT_FERR BIT(1)" +.LASF2584: + .string "TIMER_TRI_OUT_SRC_O2CPRE CTL1_MMC(6)" +.LASF1593: + .string "OB_WP_30 ((uint32_t)0x40000000U)" +.LASF3091: + .string "RCU_CKOUT0SRC_HXTAL CFG0_CKOUT0SEL(6)" +.LASF239: + .string "__FLT128_MIN_10_EXP__ (-4931)" +.LASF3407: + .string "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Source\\gd32vf103_rcu.c" +.LASF1759: + .string "AFIO_PCF0_TIMER2_REMAP BITS(10, 11)" +.LASF1961: + .string "I2C_TRANSMITTER ((uint32_t)0xFFFFFFFEU)" +.LASF709: + .string "ADC_OVERSAMPLING_RATIO_MUL128 OVSCR_OVSR(6)" +.LASF2569: + .string "TIMER_SMCFG_TRGSEL_ITI0 SMCFG_TRGSEL(0)" +.LASF1778: + .string "AFIO_EXTI11_SS BITS(12, 15)" +.LASF520: + .string "ADC_BASE (APB2_BUS_BASE + 0x00002400U)" +.LASF2104: + .string "RTC_ALRML_ALRM BITS(0,15)" +.LASF546: + .string "ADC_IDATA0(adcx) REG32((adcx) + 0x3CU)" +.LASF2127: + .string "SPI_I2SCTL(spix) REG32((spix) + 0x1CU)" +.LASF1771: + .string "AFIO_EXTI4_SS BITS(0, 3)" +.LASF3323: + .string "cksys_freq" +.LASF1793: + .string "GPIO_MODE_AF_PP ((uint8_t)0x18U)" +.LASF3031: + .string "RCU_APB1_CKAHB_DIV2 CFG0_APB1PSC(4)" +.LASF906: + .string "CAN_TSTAT_MTF1 BIT(8)" +.LASF1786: + .string "GPIO_MODE_AIN ((uint8_t)0x00U)" +.LASF518: + .string "EXTI_BASE (APB2_BUS_BASE + 0x00000400U)" +.LASF2212: + .string "I2S_FRAMEFORMAT_DT16B_CH16B I2SCTL_DTLEN(0)" +.LASF2906: + .string "RCU_APB2RST_PCRST BIT(4)" +.LASF1506: + .string "FMC_STAT_BUSY BIT(0)" +.LASF2087: + .string "RTC_ALRML REG32(RTC + 0x24U)" +.LASF428: + .string "__int_fast32_t_defined 1" +.LASF1377: + .string "EXTI_INTEN_INTEN6 BIT(6)" +.LASF595: + .string "ADC_OVSCR_OVSR BITS(2,4)" +.LASF1623: + .string "GPIO_CTL0_CTL1 BITS(6, 7)" +.LASF3335: + .string "ahb_exp" +.LASF3175: + .string "signed char" +.LASF163: + .string "__DBL_MIN_10_EXP__ (-307)" +.LASF2391: + .string "TIMER_CNT_CNT BITS(0,15)" +.LASF611: + .string "ADC_DAUL_INSERTED_PARALLEL_REGULAL_FOLLOWUP_FAST CTL0_SYNCM(3)" +.LASF1848: + .string "GPIO_PIN_9 BIT(9)" +.LASF134: + .string "__UINT_FAST32_MAX__ 0xffffffffU" +.LASF3277: + .string "RCU_FLAG_PORRST" +.LASF2917: + .string "RCU_APB1RST_TIMER4RST BIT(3)" +.LASF628: + .string "ADC0_1_EXTTRIG_REGULAR_EXTI_11 CTL1_ETSRC(6)" +.LASF2852: + .string "RCU_DSV REG32(RCU + 0x34U)" +.LASF1001: + .string "CAN_BIT_POS1(val) ((uint32_t)(val) & 0x1FU)" +.LASF43: + .string "__INT32_TYPE__ long int" +.LASF2331: + .string "TIMER_INTF_CH1IF BIT(2)" +.LASF393: + .string "__INT8 \"hh\"" +.LASF1393: + .string "EXTI_EVEN_EVEN3 BIT(3)" +.LASF2814: + .string "ECLICINTCTLBITS 4" +.LASF1487: + .string "OB OB_BASE" +.LASF498: + .string "SRAM_BASE ((uint32_t)0x20000000U)" +.LASF244: + .string "__FLT128_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F128" +.LASF2704: + .string "CTL1_CLEN(regval) (BIT(8) & ((uint32_t)(regval) << 8))" +.LASF853: + .string "CAN_F9DATA1(canx) REG32((canx) + 0x28CU)" +.LASF1143: + .string "DAC_CTL_DEN0 BIT(0)" +.LASF2209: + .string "I2S_AUDIOSAMPLE_96K ((uint32_t)96000U)" +.LASF434: + .string "INT8_MAX (__INT8_MAX__)" +.LASF1483: + .string "EXTI_PD_PD17 BIT(17)" +.LASF541: + .string "ADC_WDLT(adcx) REG32((adcx) + 0x28U)" +.LASF3402: + .string "rcu_periph_clock_sleep_enable" +.LASF1715: + .string "GPIO_BOP_CR15 BIT(31)" +.LASF121: + .string "__UINT32_C(c) c ## UL" +.LASF1613: + .string "AFIO_EC REG32(AFIO + 0x00U)" +.LASF2243: + .string "I2S_INT_FLAG_TXURERR ((uint8_t)0x05U)" +.LASF1749: + .string "AFIO_EC_PIN BITS(0, 3)" +.LASF1976: + .string "I2C_DMALST_ON I2C_CTL1_DMALST" +.LASF2051: + .string "PMU_CTL_LVDEN BIT(4)" +.LASF77: + .string "__PTRDIFF_MAX__ 0x7fffffff" +.LASF2469: + .string "TIMER_DMACFG_DMATC_2TRANSFER DMACFG_DMATC(1)" +.LASF1688: + .string "GPIO_BOP_BOP4 BIT(4)" +.LASF3399: + .string "rcu_periph_reset_enable" +.LASF2597: + .string "SMCFG_ETPSC(regval) (BITS(12, 13) & ((uint32_t)(regval) << 12U))" +.LASF1655: + .string "GPIO_ISTAT_ISTAT3 BIT(3)" +.LASF1426: + .string "EXTI_RTEN_RTEN17 BIT(17)" +.LASF2152: + .string "SPI_STAT_TBE BIT(1)" +.LASF1438: + .string "EXTI_FTEN_FTEN10 BIT(10)" +.LASF389: + .string "int +2" +.LASF13: + .string "__ATOMIC_ACQ_REL 4" +.LASF3151: + .string "RCU_PLL2_MUL11 CFG1_PLL2MF(9)" +.LASF3047: + .string "RCU_PLLSRC_IRC8M_DIV2 ((uint32_t)0x00000000U)" +.LASF2176: + .string "SPI_SLAVE ((uint32_t)0x00000000U)" +.LASF2273: + .string "TIMER_CHCTL0(timerx) REG32((timerx) + 0x18U)" +.LASF2081: + .string "RTC_PSCL REG32(RTC + 0x0CU)" +.LASF220: + .string "__FLT32_HAS_QUIET_NAN__ 1" +.LASF1084: + .string "CAN_MAILBOX2 ((uint8_t)0x02U)" +.LASF8: + .string "__VERSION__ \"10.2.0\"" +.LASF48: + .string "__UINT64_TYPE__ long long unsigned int" +.LASF1062: + .string "CAN_BT_BS1_5TQ ((uint8_t)0x04U)" +.LASF875: + .string "CAN_TMDATA1(canx,bank) REG32((canx) + 0x18CU + ((bank) * 0x10U))" +.LASF461: + .string "INT_FAST16_MAX (__INT_FAST16_MAX__)" +.LASF997: + .string "CAN_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF3206: + .string "RCU_WWDGT" +.LASF2339: + .string "TIMER_INTF_CH2OF BIT(11)" +.LASF1537: + .string "FMC_CTL_REG_OFFSET 0x10U" +.LASF2498: + .string "TIMER_COUNTER_CENTER_BOTH CTL0_CAM(3)" +.LASF1779: + .string "AFIO_EXTI12_SS BITS(0, 3)" +.LASF1162: + .string "DAC1_R12DH_DAC1_DH BITS(0,11)" +.LASF1496: + .string "FMC_PID REG32((FMC) + 0x100U)" +.LASF2837: + .string "ECLIC_GROUP_LEVEL3_PRIO1 3" +.LASF1436: + .string "EXTI_FTEN_FTEN8 BIT(8)" +.LASF3220: + .string "RCU_RTC" +.LASF515: + .string "PMU_BASE (APB1_BUS_BASE + 0x00007000U)" +.LASF1376: + .string "EXTI_INTEN_INTEN5 BIT(5)" +.LASF744: + .string "BKP_DATA31 REG16((BKP) + 0x94U)" +.LASF3160: + .string "RCU_I2S1SRC_CKSYS ((uint32_t)0x00000000U)" +.LASF983: + .string "CAN_RFIFOMDATA0_DB3 BITS(24,31)" +.LASF2878: + .string "RCU_CFG0_ADCPSC_2 BIT(28)" +.LASF454: + .string "INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1)" +.LASF286: + .string "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1" +.LASF1813: + .string "GPIO_EVENT_PIN_6 ((uint8_t)0x06U)" +.LASF756: + .string "BKP_TPCTL REG16((BKP) + 0x30U)" +.LASF2008: + .string "FWDGT_PSC_DIV64 ((uint8_t)PSC_PSC(4))" +.LASF443: + .string "INT_LEAST16_MAX (__INT_LEAST16_MAX__)" +.LASF2182: + .string "SPI_TRANSMODE_BDTRANSMIT (SPI_CTL0_BDEN | SPI_CTL0_BDOEN)" +.LASF3391: + .string "rcu_ahb_clock_config" +.LASF2205: + .string "I2S_AUDIOSAMPLE_22K ((uint32_t)22050U)" +.LASF281: + .string "__REGISTER_PREFIX__ " +.LASF1634: + .string "GPIO_CTL0_MD7 BITS(28, 29)" +.LASF20: + .string "__SIZEOF_FLOAT__ 4" +.LASF2619: + .string "USART_CTL2(usartx) REG32((usartx) + (0x00000014U))" +.LASF646: + .string "ADC_SAMPLETIME_71POINT5 SAMPTX_SPT(6)" +.LASF837: + .string "CAN_F21DATA0(canx) REG32((canx) + 0x2E8U)" +.LASF1429: + .string "EXTI_FTEN_FTEN1 BIT(1)" +.LASF2566: + .string "TIMER_IC_PSC_DIV4 ((uint16_t)0x0008U)" +.LASF986: + .string "CAN_RFIFOMDATA1_DB6 BITS(16,23)" +.LASF1269: + .string "DMA_CHXCTL_FTFIE BIT(1)" +.LASF1246: + .string "DMA_CH3PADDR(dmax) REG32((dmax) + 0x4CU)" +.LASF1411: + .string "EXTI_RTEN_RTEN2 BIT(2)" +.LASF1257: + .string "DMA_CH6CNT(dmax) REG32((dmax) + 0x84U)" +.LASF2629: + .string "USART_STAT_LBDF BIT(8)" +.LASF586: + .string "ADC_WDLT_WDLT BITS(0,11)" +.LASF855: + .string "CAN_F11DATA1(canx) REG32((canx) + 0x29CU)" +.LASF745: + .string "BKP_DATA32 REG16((BKP) + 0x98U)" +.LASF1831: + .string "GPIO_PIN_SOURCE_8 ((uint8_t)0x08U)" +.LASF1055: + .string "CAN_BT_SJW_2TQ ((uint8_t)0x01U)" +.LASF517: + .string "AFIO_BASE (APB2_BUS_BASE + 0x00000000U)" +.LASF377: + .string "unsigned" +.LASF477: + .string "WCHAR_MIN (__WCHAR_MIN__)" +.LASF1920: + .string "I2C_STAT0_SBSEND BIT(0)" +.LASF524: + .string "CRC_BASE (AHB1_BUS_BASE + 0x0000B000U)" +.LASF2234: + .string "SPI_CRC_RX ((uint8_t)0x01U)" +.LASF2421: + .string "TIMER_INT_FLAG_CH2 TIMER_INT_CH2" +.LASF2278: + .string "TIMER_CAR(timerx) REG32((timerx) + 0x2CU)" +.LASF2709: + .string "USART_CPH_2CK CTL1_CPH(1)" +.LASF2271: + .string "TIMER_INTF(timerx) REG32((timerx) + 0x10U)" +.LASF1527: + .string "FMC_PID_PID BITS(0,31)" +.LASF140: + .string "__GCC_IEC_559_COMPLEX 0" +.LASF153: + .string "__FLT_NORM_MAX__ 3.40282346638528859811704183484516925e+38F" +.LASF219: + .string "__FLT32_HAS_INFINITY__ 1" +.LASF3057: + .string "RCU_PLL_MUL8 CFG0_PLLMF(6)" +.LASF1485: + .string "GD32VF103_FMC_H " +.LASF2358: + .string "TIMER_CHCTL0_CH1COMCEN BIT(15)" +.LASF2608: + .string "GD32VF103_USART_H " +.LASF24: + .string "__CHAR_BIT__ 8" +.LASF3187: + .string "uint16_t" +.LASF2570: + .string "TIMER_SMCFG_TRGSEL_ITI1 SMCFG_TRGSEL(1)" +.LASF2556: + .string "TIMER_UPDATECTL_CCU ((uint32_t)0x00000000U)" +.LASF3285: + .string "RCU_INT_FLAG_IRC8MSTB" +.LASF717: + .string "BKP_DATA4 REG16((BKP) + 0x14U)" +.LASF203: + .string "__FLT16_HAS_DENORM__ 1" +.LASF1192: + .string "DAC_WAVE_BIT_WIDTH_6 DWBW(5)" +.LASF2095: + .string "RTC_CTL_CMF BIT(4)" +.LASF2785: + .string "_WCHAR_T_DEFINED " +.LASF480: + .string "WINT_MIN (__WINT_MIN__)" +.LASF733: + .string "BKP_DATA20 REG16((BKP) + 0x68U)" +.LASF2048: + .string "PMU_CTL_STBMOD BIT(1)" +.LASF1826: + .string "GPIO_PIN_SOURCE_3 ((uint8_t)0x03U)" +.LASF1931: + .string "I2C_STAT0_PECERR BIT(12)" +.LASF336: + .string "HXTAL_STARTUP_TIMEOUT ((uint16_t)0xFFFF)" +.LASF254: + .string "__FLT32X_MIN_10_EXP__ (-307)" +.LASF1355: + .string "EXMC_NOR_DATABUS_WIDTH_16B SNCTL_NRW(1)" +.LASF1403: + .string "EXTI_EVEN_EVEN13 BIT(13)" +.LASF2557: + .string "TIMER_UPDATECTL_CCUTRI TIMER_CTL1_CCUC" +.LASF638: + .string "ADC0_1_EXTTRIG_INSERTED_NONE CTL1_ETSIC(7)" +.LASF3152: + .string "RCU_PLL2_MUL12 CFG1_PLL2MF(10)" +.LASF1535: + .string "FMC_REG_OFFSET_GET(flag) ((uint32_t)(flag) >> 12)" +.LASF543: + .string "ADC_RSQ1(adcx) REG32((adcx) + 0x30U)" +.LASF59: + .string "__INT_FAST32_TYPE__ int" +.LASF2583: + .string "TIMER_TRI_OUT_SRC_O1CPRE CTL1_MMC(5)" +.LASF92: + .string "__INTMAX_WIDTH__ 64" +.LASF2160: + .string "SPI_DATA_DATA BITS(0,15)" +.LASF3039: + .string "RCU_APB2_CKAHB_DIV8 CFG0_APB2PSC(6)" +.LASF2934: + .string "RCU_AHBEN_DMA0EN BIT(0)" +.LASF287: + .string "__GCC_ATOMIC_BOOL_LOCK_FREE 1" +.LASF636: + .string "ADC0_1_EXTTRIG_INSERTED_T3_TRGO CTL1_ETSIC(5)" +.LASF184: + .string "__LDBL_NORM_MAX__ 1.18973149535723176508575932662800702e+4932L" +.LASF1889: + .string "I2C_STAT1(i2cx) REG32((i2cx) + 0x18U)" +.LASF339: + .string "IRC40K_VALUE ((uint32_t)40000)" +.LASF1736: + .string "GPIO_LOCK_LK4 BIT(4)" +.LASF2957: + .string "RCU_APB1EN_TIMER6EN BIT(5)" +.LASF907: + .string "CAN_TSTAT_MTFNERR1 BIT(9)" +.LASF671: + .string "ADC_CHANNEL_10 ((uint8_t)0x0AU)" +.LASF1022: + .string "TMDATA1_DB5(regval) (BITS(8,15) & ((uint32_t)(regval) << 8))" +.LASF3065: + .string "RCU_PLL_MUL16 CFG0_PLLMF(14)" +.LASF3035: + .string "CFG0_APB2PSC(regval) (BITS(11,13) & ((uint32_t)(regval) << 11))" +.LASF1689: + .string "GPIO_BOP_BOP5 BIT(5)" +.LASF2752: + .string "_PTRDIFF_T_ " +.LASF2713: + .string "CLT2_DENR(regval) (BIT(6) & ((uint32_t)(regval) << 6))" +.LASF484: + .string "UINT16_C(x) __UINT16_C(x)" +.LASF3296: + .string "RCU_INT_FLAG_PLLSTB_CLR" +.LASF1636: + .string "GPIO_CTL1_MD8 BITS(0, 1)" +.LASF651: + .string "RSQ0_RL(regval) (BITS(20,23) & ((uint32_t)(regval) << 20))" +.LASF3170: + .string "SEL_HXTAL ((uint16_t)1U)" +.LASF2317: + .string "TIMER_DMAINTEN_CH2IE BIT(3)" +.LASF716: + .string "BKP_DATA3 REG16((BKP) + 0x10U)" +.LASF848: + .string "CAN_F4DATA1(canx) REG32((canx) + 0x264U)" +.LASF1884: + .string "I2C_CTL1(i2cx) REG32((i2cx) + 0x04U)" +.LASF1523: + .string "FMC_OBSTAT_USER BITS(2,9)" +.LASF319: + .string "__ELF__ 1" +.LASF1782: + .string "AFIO_EXTI15_SS BITS(12, 15)" +.LASF238: + .string "__FLT128_MIN_EXP__ (-16381)" +.LASF130: + .string "__INT_FAST64_MAX__ 0x7fffffffffffffffLL" +.LASF2334: + .string "TIMER_INTF_CMTIF BIT(5)" +.LASF2129: + .string "SPI_CTL0_CKPH BIT(0)" +.LASF2914: + .string "RCU_APB1RST_TIMER1RST BIT(0)" +.LASF2661: + .string "USART_CTL2_NKEN BIT(4)" +.LASF2295: + .string "TIMER_CTL1_CCSE BIT(0)" +.LASF571: + .string "ADC_CTL1_CTN BIT(1)" +.LASF3300: + .string "rcu_int_flag_clear_enum" +.LASF2532: + .string "TIMER_CCXN_ENABLE ((uint16_t)0x0004U)" +.LASF2383: + .string "TIMER_CHCTL2_CH1NEN BIT(6)" +.LASF2463: + .string "TIMER_DMACFG_DMATA_CH2CV DMACFG_DMATA(15)" +.LASF743: + .string "BKP_DATA30 REG16((BKP) + 0x90U)" +.LASF817: + .string "CAN_F1DATA0(canx) REG32((canx) + 0x248U)" +.LASF2017: + .string "FWDGT_FLAG_PUD FWDGT_STAT_PUD" +.LASF2849: + .string "RCU_RSTSCK REG32(RCU + 0x24U)" +.LASF971: + .string "CAN_TMDATA1_DB6 BITS(16,23)" +.LASF1229: + .string "DMA1 (DMA_BASE + 0x0400U)" +.LASF2123: + .string "SPI_DATA(spix) REG32((spix) + 0x0CU)" +.LASF2313: + .string "TIMER_SMCFG_ETP BIT(15)" +.LASF2621: + .string "USART_STAT_PERR BIT(0)" +.LASF1038: + .string "GET_ERR_TECNT(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF2053: + .string "PMU_CTL_BKPWEN BIT(8)" +.LASF3002: + .string "AHBRST_REG_OFFSET 0x28U" +.LASF433: + .string "INT8_MIN (-__INT8_MAX__ - 1)" +.LASF2298: + .string "TIMER_CTL1_MMC BITS(4,6)" +.LASF3337: + .string "apb2_exp" +.LASF2112: + .string "RTC_FLAG_ALARM RTC_CTL_ALRMIF" +.LASF1200: + .string "DAC_LFSR_BITS1_0 DAC_WAVE_BIT_WIDTH_2" +.LASF3345: + .string "rcu_osci_bypass_mode_disable" +.LASF272: + .string "__FLT64X_DECIMAL_DIG__ 36" +.LASF654: + .string "ADC_INSERTED_CHANNEL ((uint8_t)0x02U)" +.LASF1272: + .string "DMA_CHXCTL_DIR BIT(4)" +.LASF1457: + .string "EXTI_SWIEV_SWIEV10 BIT(10)" +.LASF867: + .string "CAN_F23DATA1(canx) REG32((canx) + 0x2FCU)" +.LASF3221: + .string "RCU_AF" +.LASF587: + .string "ADC_RSQX_RSQN BITS(0,4)" +.LASF132: + .string "__UINT_FAST8_MAX__ 0xffffffffU" +.LASF3087: + .string "CFG0_CKOUT0SEL(regval) (BITS(24,27) & ((uint32_t)(regval) << 24))" +.LASF463: + .string "INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1)" +.LASF1981: + .string "I2C_PECTRANS_DISABLE ((uint32_t)0x00000000U)" +.LASF3012: + .string "RCU_CKSYSSRC_IRC8M CFG0_SCS(0)" +.LASF1360: + .string "EXMC_BANK0_NORSRAM_REGION0 ((uint32_t)0x00000000U)" +.LASF1002: + .string "STAT_REG_OFFSET ((uint8_t)0x04U)" +.LASF2731: + .string "WWDGT_CFG REG32((WWDGT) + 0x00000004U)" +.LASF2760: + .string "_SIZE_T " +.LASF397: + .string "__FAST8 " +.LASF3069: + .string "RCU_PLL_MUL20 (PLLMF_4 | CFG0_PLLMF(3))" +.LASF2875: + .string "RCU_CFG0_PLLMF BITS(18,21)" +.LASF3405: + .string "rcu_deinit" +.LASF575: + .string "ADC_CTL1_DAL BIT(11)" +.LASF2168: + .string "SPI_I2SCTL_PCMSMOD BIT(7)" +.LASF2605: + .string "TIMER_HALLINTERFACE_DISABLE ((uint32_t)0x00000000U)" +.LASF3377: + .string "rcu_pll1_config" +.LASF673: + .string "ADC_CHANNEL_12 ((uint8_t)0x0CU)" +.LASF3143: + .string "RCU_PLL1_MUL14 CFG1_PLL1MF(12)" +.LASF170: + .string "__DBL_EPSILON__ ((double)2.22044604925031308084726333618164062e-16L)" +.LASF346: + .string "_NEWLIB_VERSION \"4.1.0\"" +.LASF1949: + .string "I2C_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF793: + .string "CAN_TMDATA00(canx) REG32((canx) + 0x188U)" +.LASF882: + .string "CAN_CTL_IWMOD BIT(0)" +.LASF1787: + .string "GPIO_MODE_IN_FLOATING ((uint8_t)0x04U)" +.LASF1939: + .string "I2C_STAT1_HSTSMB BIT(6)" +.LASF1728: + .string "GPIO_BC_CR12 BIT(12)" +.LASF1475: + .string "EXTI_PD_PD9 BIT(9)" +.LASF707: + .string "ADC_OVERSAMPLING_RATIO_MUL32 OVSCR_OVSR(4)" +.LASF410: + .string "_UINT16_T_DECLARED " +.LASF2896: + .string "RCU_INT_LXTALSTBIC BIT(17)" +.LASF887: + .string "CAN_CTL_AWU BIT(5)" +.LASF2423: + .string "TIMER_INT_FLAG_CMT TIMER_INT_CMT" +.LASF1674: + .string "GPIO_OCTL_OCTL6 BIT(6)" +.LASF1414: + .string "EXTI_RTEN_RTEN5 BIT(5)" +.LASF3242: + .string "RCU_TIMER6RST" +.LASF295: + .string "__GCC_ATOMIC_LLONG_LOCK_FREE 1" +.LASF326: + .string "RT_USING_NEWLIB 1" +.LASF2351: + .string "TIMER_CHCTL0_CH0COMSEN BIT(3)" +.LASF902: + .string "CAN_TSTAT_MTFNERR0 BIT(1)" +.LASF2913: + .string "RCU_APB2RST_USART0RST BIT(14)" +.LASF3270: + .string "RCU_FLAG_HXTALSTB" +.LASF125: + .string "__INT_FAST8_WIDTH__ 32" +.LASF457: + .string "INT_FAST8_MIN (-__INT_FAST8_MAX__ - 1)" +.LASF695: + .string "ADC_OVERSAMPLING_SHIFT_2B OVSCR_OVSS(2)" +.LASF1607: + .string "GPIO_CTL1(gpiox) REG32((gpiox) + 0x04U)" +.LASF944: + .string "CAN_INTEN_SLPWIE BIT(17)" +.LASF1236: + .string "DMA_CH1CTL(dmax) REG32((dmax) + 0x1CU)" +.LASF1818: + .string "GPIO_EVENT_PIN_11 ((uint8_t)0x0BU)" +.LASF3054: + .string "RCU_PLL_MUL5 CFG0_PLLMF(3)" +.LASF131: + .string "__INT_FAST64_WIDTH__ 64" +.LASF1383: + .string "EXTI_INTEN_INTEN12 BIT(12)" +.LASF2612: + .string "UART4 (USART_BASE+(0x00000C00U))" +.LASF2706: + .string "USART_CLEN_EN CTL1_CLEN(1)" +.LASF2881: + .string "RCU_INT_LXTALSTBIF BIT(1)" +.LASF344: + .string "_SYS_FEATURES_H " +.LASF840: + .string "CAN_F24DATA0(canx) REG32((canx) + 0x300U)" +.LASF1707: + .string "GPIO_BOP_CR7 BIT(23)" +.LASF1079: + .string "CAN_BT_BS2_6TQ ((uint8_t)0x05U)" +.LASF600: + .string "ADC_FLAG_EOC ADC_STAT_EOC" +.LASF655: + .string "ADC_REGULAR_INSERTED_CHANNEL ((uint8_t)0x03U)" +.LASF2407: + .string "TIMER_DMACFG_DMATA BITS(0,4)" +.LASF2521: + .string "TIMER_CCHP_PROT_0 CCHP_PROT(1)" +.LASF3192: + .string "SUCCESS" +.LASF449: + .string "INT_LEAST32_MAX (__INT_LEAST32_MAX__)" +.LASF2724: + .string "USART_CTS_DISABLE CLT2_CTSEN(0)" +.LASF2787: + .string "___int_wchar_t_h " +.LASF1876: + .string "GPIO_SWJ_DISABLE_REMAP ((uint32_t)0x00300200U)" +.LASF1330: + .string "ECLIC_PRIGROUP_LEVEL3_PRIO1 3" +.LASF1569: + .string "OB_WP_6 ((uint32_t)0x00000040U)" +.LASF1852: + .string "GPIO_PIN_13 BIT(13)" +.LASF2806: + .string "TIMER_REG(offset) _REG32(TIMER_CTRL_ADDR, offset)" +.LASF712: + .string "BKP BKP_BASE" +.LASF1232: + .string "DMA_CH0CTL(dmax) REG32((dmax) + 0x08U)" +.LASF686: + .string "ADC_RESOLUTION_12B OVSCR_DRES(0)" +.LASF1166: + .string "DACC_R12DH_DAC1_DH BITS(16,27)" +.LASF1177: + .string "DAC_TRIGGER_T4_TRGO CTL_DTSEL(3)" +.LASF1058: + .string "CAN_BT_BS1_1TQ ((uint8_t)0x00U)" +.LASF2372: + .string "TIMER_CHCTL1_CH3COMCEN BIT(15)" +.LASF2197: + .string "SPI_PSC_16 CTL0_PSC(3)" +.LASF2829: + .string "ECLIC_CFG_NLBITS_LSB (1u)" +.LASF2092: + .string "RTC_CTL_ALRMIF BIT(1)" +.LASF622: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH0 CTL1_ETSRC(0)" +.LASF2952: + .string "RCU_APB1EN_TIMER1EN BIT(0)" +.LASF3263: + .string "RCU_ADC0RST" +.LASF126: + .string "__INT_FAST16_MAX__ 0x7fffffff" +.LASF603: + .string "ADC_FLAG_STRC ADC_STAT_STRC" +.LASF2454: + .string "TIMER_DMACFG_DMATA_CHCTL0 DMACFG_DMATA(6)" +.LASF1443: + .string "EXTI_FTEN_FTEN15 BIT(15)" +.LASF2072: + .string "PMU_FLAG_RESET_WAKEUP ((uint8_t)0x00U)" +.LASF528: + .string "GD32VF103_ADC_H " +.LASF262: + .string "__FLT32X_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F32x" +.LASF1468: + .string "EXTI_PD_PD2 BIT(2)" +.LASF1532: + .string "FMC_REG_VALS(offset) (REG32(FMC + ((uint32_t)(offset) >> 12)))" +.LASF830: + .string "CAN_F14DATA0(canx) REG32((canx) + 0x2B0U)" +.LASF3248: + .string "RCU_UART3RST" +.LASF1024: + .string "TMDATA1_DB7(regval) (BITS(24,31) & ((uint32_t)(regval) << 24))" +.LASF2739: + .string "CFG_PSC(regval) (BITS(7,8) & ((uint32_t)(regval) << 7))" +.LASF199: + .string "__FLT16_NORM_MAX__ 6.55040000000000000000000000000000000e+4F16" +.LASF2043: + .string "GD32VF103_PMU_H " +.LASF3328: + .string "predv0sel" +.LASF847: + .string "CAN_F3DATA1(canx) REG32((canx) + 0x25CU)" +.LASF2004: + .string "FWDGT_PSC_DIV4 ((uint8_t)PSC_PSC(0))" +.LASF2691: + .string "USART_WM_IDLE CTL0_WM(0)" +.LASF502: + .string "APB1_BUS_BASE ((uint32_t)0x40000000U)" +.LASF511: + .string "USART_BASE (APB1_BUS_BASE + 0x00004400U)" +.LASF554: + .string "ADC_STAT_EOIC BIT(2)" +.LASF1877: + .string "GPIO_SPI2_REMAP ((uint32_t)0x00201100U)" +.LASF1995: + .string "FWDGT_PSC REG32((FWDGT) + 0x00000004U)" +.LASF1805: + .string "GPIO_PORT_SOURCE_GPIOD ((uint8_t)0x03U)" +.LASF1053: + .string "CAN_SILENT_LOOPBACK_MODE ((uint8_t)0x03U)" +.LASF2282: + .string "TIMER_CH2CV(timerx) REG32((timerx) + 0x3CU)" +.LASF1789: + .string "GPIO_MODE_IPU ((uint8_t)0x48U)" +.LASF1087: + .string "CAN_FF_EXTENDED ((uint32_t)0x00000004U)" +.LASF2794: + .string "NULL ((void *)0)" +.LASF444: + .string "UINT_LEAST16_MAX (__UINT_LEAST16_MAX__)" +.LASF1942: + .string "I2C_CKCFG_CLKC BITS(0,11)" +.LASF1476: + .string "EXTI_PD_PD10 BIT(10)" +.LASF1111: + .string "CAN_INT_WERR CAN_INTEN_WERRIE" +.LASF2854: + .string "RCU_CTL_IRC8MSTB BIT(1)" +.LASF1596: + .string "FMC_TIMEOUT_COUNT ((uint32_t)0x000F0000U)" +.LASF2141: + .string "SPI_CTL0_BDOEN BIT(14)" +.LASF2310: + .string "TIMER_SMCFG_ETFC BITS(8,11)" +.LASF1317: + .string "DMA_MEMORY_WIDTH_32BIT CHCTL_MWIDTH(2U)" +.LASF697: + .string "ADC_OVERSAMPLING_SHIFT_4B OVSCR_OVSS(4)" +.LASF1199: + .string "DAC_LFSR_BIT0 DAC_WAVE_BIT_WIDTH_1" +.LASF614: + .string "ADC_DAUL_REGULAL_PARALLEL CTL0_SYNCM(6)" +.LASF2264: + .string "TIMER4 (TIMER_BASE + 0x00000C00U)" +.LASF3312: + .string "RCU_IRC40K" +.LASF845: + .string "CAN_F1DATA1(canx) REG32((canx) + 0x24CU)" +.LASF285: + .string "__CHAR_UNSIGNED__ 1" +.LASF928: + .string "CAN_RFIFO1_RFF1 BIT(3)" +.LASF1735: + .string "GPIO_LOCK_LK3 BIT(3)" +.LASF792: + .string "CAN_TMP0(canx) REG32((canx) + 0x184U)" +.LASF1650: + .string "GPIO_CTL1_MD15 BITS(28, 29)" +.LASF1105: + .string "CAN_INT_RFNE0 CAN_INTEN_RFNEIE0" +.LASF1305: + .string "DMA_MEMORY_TO_PERIPHERAL ((uint8_t)0x01U)" +.LASF1265: + .string "DMA_INTC_FTFIFC BIT(1)" +.LASF2322: + .string "TIMER_DMAINTEN_UPDEN BIT(8)" +.LASF1151: + .string "DAC_CTL_DBOFF1 BIT(17)" +.LASF1419: + .string "EXTI_RTEN_RTEN10 BIT(10)" +.LASF505: + .string "AHB3_BUS_BASE ((uint32_t)0x60000000U)" +.LASF2772: + .string "_GCC_SIZE_T " +.LASF1679: + .string "GPIO_OCTL_OCTL11 BIT(11)" +.LASF2615: + .string "USART_DATA(usartx) REG32((usartx) + (0x00000004U))" +.LASF1571: + .string "OB_WP_8 ((uint32_t)0x00000100U)" +.LASF778: + .string "BKP_FLAG_TAMPER BKP_TPCS_TEF" +.LASF375: + .string "__STDINT_EXP(x) __ ##x ##__" +.LASF777: + .string "TAMPER_PIN_ACTIVE_LOW ((uint16_t)0x0002U)" +.LASF1234: + .string "DMA_CH0PADDR(dmax) REG32((dmax) + 0x10U)" +.LASF2792: + .string "__need_wchar_t" +.LASF1766: + .string "AFIO_PCF0_TIMER1_ITI1_REMAP BIT(29)" +.LASF974: + .string "CAN_RFIFOMI_FF BIT(2)" +.LASF139: + .string "__GCC_IEC_559 0" +.LASF1851: + .string "GPIO_PIN_12 BIT(12)" +.LASF206: + .string "__FLT32_MANT_DIG__ 24" +.LASF3243: + .string "RCU_WWDGTRST" +.LASF1870: + .string "GPIO_CAN0_PARTIAL_REMAP ((uint32_t)0x001D4000U)" +.LASF1505: + .string "FMC_OBKEY_OBKEY BITS(0,31)" +.LASF321: + .string "USE_M_TIME 1" +.LASF1221: + .string "DAC_TRIANGLE_AMPLITUDE_127 DAC_WAVE_BIT_WIDTH_7" +.LASF2330: + .string "TIMER_INTF_CH0IF BIT(1)" +.LASF2655: + .string "USART_CTL1_STB BITS(12,13)" +.LASF1493: + .string "FMC_ADDR REG32((FMC) + 0x14U)" +.LASF2404: + .string "TIMER_CCHP_BRKP BIT(13)" +.LASF2745: + .string "_STDDEF_H " +.LASF1303: + .string "DMA_INT_ERR DMA_CHXCTL_ERRIE" +.LASF1967: + .string "I2C_DUADEN_ENABLE ((uint32_t)0x00000001U)" +.LASF1458: + .string "EXTI_SWIEV_SWIEV11 BIT(11)" +.LASF2761: + .string "_SYS_SIZE_T_H " +.LASF80: + .string "__SHRT_WIDTH__ 16" +.LASF2229: + .string "I2S_CKPL_LOW ((uint32_t)0x00000000U)" +.LASF1869: + .string "GPIO_TIMER3_REMAP ((uint32_t)0x00001000U)" +.LASF67: + .string "__GXX_ABI_VERSION 1014" +.LASF1492: + .string "FMC_CTL REG32((FMC) + 0x10U)" +.LASF1447: + .string "EXTI_SWIEV_SWIEV0 BIT(0)" +.LASF2970: + .string "RCU_APB1EN_PMUEN BIT(28)" +.LASF684: + .string "ADC_INT_FLAG_EOIC ADC_STAT_EOIC" +.LASF1019: + .string "TMDATA0_DB2(regval) (BITS(16,23) & ((uint32_t)(regval) << 16))" +.LASF361: + .string "__SSP_FORTIFY_LEVEL 0" +.LASF2118: + .string "SPI1 SPI_BASE" +.LASF2082: + .string "RTC_DIVH REG32(RTC + 0x10U)" +.LASF2765: + .string "_SIZE_T_ " +.LASF3118: + .string "RCU_PREDV0_DIV16 CFG1_PREDV0(15)" +.LASF659: + .string "ADC_INSERTED_CHANNEL_2 ((uint8_t)0x02U)" +.LASF2222: + .string "I2S_MODE_MASTERRX I2SCTL_I2SOPMOD(3)" +.LASF166: + .string "__DBL_DECIMAL_DIG__ 17" +.LASF288: + .string "__GCC_ATOMIC_CHAR_LOCK_FREE 1" +.LASF115: + .string "__INT_LEAST64_WIDTH__ 64" +.LASF1204: + .string "DAC_LFSR_BITS5_0 DAC_WAVE_BIT_WIDTH_6" +.LASF1408: + .string "EXTI_EVEN_EVEN18 BIT(18)" +.LASF3132: + .string "RCU_PREDV1_DIV13 CFG1_PREDV1(12)" +.LASF783: + .string "CAN_CTL(canx) REG32((canx) + 0x00U)" +.LASF3155: + .string "RCU_PLL2_MUL15 CFG1_PLL2MF(13)" +.LASF280: + .string "__FLT64X_HAS_QUIET_NAN__ 1" +.LASF569: + .string "ADC_CTL0_RWDEN BIT(23)" +.LASF1645: + .string "GPIO_CTL1_CTL12 BITS(18, 19)" +.LASF2354: + .string "TIMER_CHCTL0_CH1MS BITS(8,9)" +.LASF2499: + .string "TIMER_PSC_RELOAD_NOW TIMER_SWEVG_UPG" +.LASF2542: + .string "TIMER_OC_MODE_TIMING ((uint16_t)0x0000U)" +.LASF1701: + .string "GPIO_BOP_CR1 BIT(17)" +.LASF890: + .string "CAN_CTL_SWRST BIT(15)" +.LASF2508: + .string "TIMER_SP_MODE_REPETITIVE ((uint32_t)0x00000000U)" +.LASF699: + .string "ADC_OVERSAMPLING_SHIFT_6B OVSCR_OVSS(6)" +.LASF641: + .string "ADC_SAMPLETIME_7POINT5 SAMPTX_SPT(1)" +.LASF3001: + .string "APB2EN_REG_OFFSET 0x18U" +.LASF268: + .string "__FLT64X_MIN_EXP__ (-16381)" +.LASF1913: + .string "I2C_SADDR0_ADDRESS0 BIT(0)" +.LASF2186: + .string "SPI_NSS_HARD ((uint32_t)0x00000000U)" +.LASF1698: + .string "GPIO_BOP_BOP14 BIT(14)" +.LASF2973: + .string "RCU_BDCTL_LXTALSTB BIT(1)" +.LASF3074: + .string "RCU_PLL_MUL25 (PLLMF_4 | CFG0_PLLMF(8))" +.LASF822: + .string "CAN_F6DATA0(canx) REG32((canx) + 0x270U)" +.LASF544: + .string "ADC_RSQ2(adcx) REG32((adcx) + 0x34U)" +.LASF337: + .string "IRC8M_VALUE ((uint32_t)8000000)" +.LASF1463: + .string "EXTI_SWIEV_SWIEV16 BIT(16)" +.LASF87: + .string "__SIZE_WIDTH__ 32" +.LASF3275: + .string "RCU_FLAG_IRC40KSTB" +.LASF1075: + .string "CAN_BT_BS2_2TQ ((uint8_t)0x01U)" +.LASF714: + .string "BKP_DATA1 REG16((BKP) + 0x08U)" +.LASF3384: + .string "pll_src" +.LASF2762: + .string "_T_SIZE_ " +.LASF2196: + .string "SPI_PSC_8 CTL0_PSC(2)" +.LASF1809: + .string "GPIO_EVENT_PIN_2 ((uint8_t)0x02U)" +.LASF1600: + .string "GPIOA (GPIO_BASE + 0x00000000U)" +.LASF3028: + .string "RCU_AHB_CKSYS_DIV512 CFG0_AHBPSC(15)" +.LASF2928: + .string "RCU_APB1RST_I2C1RST BIT(22)" +.LASF473: + .string "SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)" +.LASF2413: + .string "TIMER_INT_CH2 TIMER_DMAINTEN_CH2IE" +.LASF1603: + .string "GPIOD (GPIO_BASE + 0x00000C00U)" +.LASF402: + .string "__LEAST16 \"h\"" +.LASF2609: + .string "USART1 USART_BASE" +.LASF3207: + .string "RCU_SPI1" +.LASF1665: + .string "GPIO_ISTAT_ISTAT13 BIT(13)" +.LASF442: + .string "INT_LEAST16_MIN (-__INT_LEAST16_MAX__ - 1)" +.LASF1855: + .string "GPIO_PIN_ALL BITS(0, 15)" +.LASF1212: + .string "DAC_ALIGN_12B_R DATA_ALIGN(0)" +.LASF538: + .string "ADC_IOFF2(adcx) REG32((adcx) + 0x1CU)" +.LASF2323: + .string "TIMER_DMAINTEN_CH0DEN BIT(9)" +.LASF52: + .string "__INT_LEAST64_TYPE__ long long int" +.LASF3392: + .string "ck_ahb" +.LASF1827: + .string "GPIO_PIN_SOURCE_4 ((uint8_t)0x04U)" +.LASF191: + .string "__FLT16_MANT_DIG__ 11" +.LASF1090: + .string "CAN_RFIF_RFL_MASK ((uint32_t)0x00000003U)" +.LASF1235: + .string "DMA_CH0MADDR(dmax) REG32((dmax) + 0x14U)" +.LASF2893: + .string "RCU_INT_PLL1STBIE BIT(13)" +.LASF536: + .string "ADC_IOFF0(adcx) REG32((adcx) + 0x14U)" +.LASF3148: + .string "RCU_PLL2_MUL8 CFG1_PLL2MF(6)" +.LASF1530: + .string "FMC_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF2333: + .string "TIMER_INTF_CH3IF BIT(4)" +.LASF1068: + .string "CAN_BT_BS1_11TQ ((uint8_t)0x0AU)" +.LASF770: + .string "BKP_DATA0_9(number) REG16((BKP) + 0x04U + (number) * 0x04U)" +.LASF1206: + .string "DAC_LFSR_BITS7_0 DAC_WAVE_BIT_WIDTH_8" +.LASF1397: + .string "EXTI_EVEN_EVEN7 BIT(7)" +.LASF1899: + .string "I2C_CTL0_SS BIT(7)" +.LASF632: + .string "ADC0_1_EXTTRIG_INSERTED_T0_CH3 CTL1_ETSIC(1)" +.LASF2807: + .string "TIMER_FREQ ((uint32_t)SystemCoreClock/4)" +.LASF2206: + .string "I2S_AUDIOSAMPLE_32K ((uint32_t)32000U)" +.LASF2347: + .string "TIMER_SWEVG_TRGG BIT(6)" +.LASF240: + .string "__FLT128_MAX_EXP__ 16384" +.LASF1910: + .string "I2C_CTL1_BUFIE BIT(10)" +.LASF2151: + .string "SPI_STAT_RBNE BIT(0)" +.LASF3394: + .string "ck_sys" +.LASF1974: + .string "I2C_DMA_ON I2C_CTL1_DMAON" +.LASF1415: + .string "EXTI_RTEN_RTEN6 BIT(6)" +.LASF2725: + .string "CTL2_IRLP(regval) (BIT(2) & ((uint32_t)(regval) << 2))" +.LASF2472: + .string "TIMER_DMACFG_DMATC_5TRANSFER DMACFG_DMATC(4)" +.LASF1386: + .string "EXTI_INTEN_INTEN15 BIT(15)" +.LASF1179: + .string "DAC_TRIGGER_T3_TRGO CTL_DTSEL(5)" +.LASF2982: + .string "RCU_RSTSCK_PORRSTF BIT(27)" +.LASF2170: + .string "SPI_I2SCTL_I2SEN BIT(10)" +.LASF1881: + .string "I2C0 I2C_BASE" +.LASF405: + .string "_SYS__STDINT_H " +.LASF3215: + .string "RCU_CAN0" +.LASF3184: + .string "long long int" +.LASF164: + .string "__DBL_MAX_EXP__ 1024" +.LASF2981: + .string "RCU_RSTSCK_EPRSTF BIT(26)" +.LASF2377: + .string "TIMER_CHCTL2_CH0EN BIT(0)" +.LASF91: + .string "__UINTMAX_C(c) c ## ULL" +.LASF1987: + .string "DATA_RECV(regval) GET_BITS((uint32_t)(regval), 0, 7)" +.LASF3340: + .string "rcu_deepsleep_voltage_set" +.LASF2126: + .string "SPI_TCRC(spix) REG32((spix) + 0x18U)" +.LASF701: + .string "ADC_OVERSAMPLING_SHIFT_8B OVSCR_OVSS(8)" +.LASF2565: + .string "TIMER_IC_PSC_DIV2 ((uint16_t)0x0004U)" +.LASF297: + .string "__GCC_ATOMIC_POINTER_LOCK_FREE 2" +.LASF1380: + .string "EXTI_INTEN_INTEN9 BIT(9)" +.LASF1845: + .string "GPIO_PIN_6 BIT(6)" +.LASF2838: + .string "ECLIC_GROUP_LEVEL4_PRIO0 4" +.LASF1071: + .string "CAN_BT_BS1_14TQ ((uint8_t)0x0DU)" +.LASF2992: + .string "RCU_CFG1_PREDV0SEL BIT(16)" +.LASF3096: + .string "RCU_CKOUT0SRC_CKPLL2 CFG0_CKOUT0SEL(11)" +.LASF516: + .string "DAC_BASE (APB1_BUS_BASE + 0x00007400U)" +.LASF1526: + .string "FMC_WSEN_WSEN BIT(0)" +.LASF570: + .string "ADC_CTL1_ADCON BIT(0)" +.LASF2368: + .string "TIMER_CHCTL1_CH3MS BITS(8,9)" +.LASF873: + .string "CAN_TMP(canx,bank) REG32((canx) + 0x184U + ((bank) * 0x10U))" +.LASF3256: + .string "RCU_DACRST" +.LASF1792: + .string "GPIO_MODE_AF_OD ((uint8_t)0x1CU)" +.LASF1390: + .string "EXTI_EVEN_EVEN0 BIT(0)" +.LASF878: + .string "CAN_RFIFOMI(canx,bank) REG32((canx) + 0x1B0U + ((bank) * 0x10U))" +.LASF1223: + .string "DAC_TRIANGLE_AMPLITUDE_511 DAC_WAVE_BIT_WIDTH_9" +.LASF682: + .string "ADC_INT_FLAG_WDE ADC_STAT_WDE" +.LASF2715: + .string "USART_DENR_DISABLE CLT2_DENR(0)" +.LASF1743: + .string "GPIO_LOCK_LK11 BIT(11)" +.LASF137: + .string "__INTPTR_WIDTH__ 32" +.LASF2173: + .string "SPI_I2SPSC_OF BIT(8)" +.LASF12: + .string "__ATOMIC_RELEASE 3" +.LASF1138: + .string "DACC_R12DH REG32(DAC + 0x20U)" +.LASF1629: + .string "GPIO_CTL0_CTL4 BITS(18, 19)" +.LASF458: + .string "INT_FAST8_MAX (__INT_FAST8_MAX__)" +.LASF1294: + .string "DMA_INT_FLAG_FTF DMA_INTF_FTFIF" +.LASF3049: + .string "PLLMF_4 RCU_CFG0_PLLMF_4" +.LASF2362: + .string "TIMER_CHCTL0_CH1CAPFLT BITS(12,15)" +.LASF589: + .string "ADC_ISQ_ISQN BITS(0,4)" +.LASF1762: + .string "AFIO_PCF0_PD01_REMAP BIT(15)" +.LASF3309: + .string "RCU_HXTAL" +.LASF2390: + .string "TIMER_CHCTL2_CH3P BIT(13)" +.LASF2101: + .string "RTC_CNTH_CNT BITS(0,15)" +.LASF927: + .string "CAN_RFIFO1_RFL1 BITS(0,1)" +.LASF2823: + .string "ECLIC_INT_ATTR_TRIG_EDGE 0x02" +.LASF1556: + .string "OB_SPC_SPC_N ((uint32_t)0x0000FF00U)" +.LASF1624: + .string "GPIO_CTL0_MD2 BITS(8, 9)" +.LASF1292: + .string "DMA_CHINTF_RESET_VALUE (DMA_INTF_GIF | DMA_INTF_FTFIF | DMA_INTF_HTFIF | DMA_INTF_ERRIF)" +.LASF1388: + .string "EXTI_INTEN_INTEN17 BIT(17)" +.LASF186: + .string "__LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L" +.LASF1933: + .string "I2C_STAT0_SMBALT BIT(15)" +.LASF2236: + .string "SPI_I2S_INT_RBNE ((uint8_t)0x01U)" +.LASF1218: + .string "DAC_TRIANGLE_AMPLITUDE_15 DAC_WAVE_BIT_WIDTH_4" +.LASF2954: + .string "RCU_APB1EN_TIMER3EN BIT(2)" +.LASF2735: + .string "WWDGT_CFG_WIN BITS(0,6)" +.LASF3072: + .string "RCU_PLL_MUL23 (PLLMF_4 | CFG0_PLLMF(6))" +.LASF143: + .string "__DEC_EVAL_METHOD__ 2" +.LASF2518: + .string "TIMER_OUTAUTO_DISABLE ((uint16_t)0x0000U)" +.LASF1729: + .string "GPIO_BC_CR13 BIT(13)" +.LASF225: + .string "__FLT64_MAX_EXP__ 1024" +.LASF2939: + .string "RCU_AHBEN_EXMCEN BIT(8)" +.LASF1213: + .string "DAC_ALIGN_12B_L DATA_ALIGN(1)" +.LASF1652: + .string "GPIO_ISTAT_ISTAT0 BIT(0)" +.LASF2697: + .string "USART_STB_1BIT CTL1_STB(0)" +.LASF2933: + .string "RCU_APB1RST_DACRST BIT(29)" +.LASF2836: + .string "ECLIC_GROUP_LEVEL2_PRIO2 2" +.LASF1944: + .string "I2C_CKCFG_FAST BIT(15)" +.LASF2736: + .string "WWDGT_CFG_PSC BITS(7,8)" +.LASF893: + .string "CAN_STAT_SLPWS BIT(1)" +.LASF2708: + .string "USART_CPH_1CK CTL1_CPH(0)" +.LASF1243: + .string "DMA_CH2MADDR(dmax) REG32((dmax) + 0x3CU)" +.LASF1036: + .string "GET_RFIFOMDATA1_DB7(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF2130: + .string "SPI_CTL0_CKPL BIT(1)" +.LASF2540: + .string "TIMER_OCN_IDLE_STATE_HIGH ((uint16_t)0x0200U)" +.LASF1862: + .string "GPIO_TIMER0_PARTIAL_REMAP ((uint32_t)0x00160040U)" +.LASF1007: + .string "BT_BAUDPSC(regval) (BITS(0,9) & ((uint32_t)(regval) << 0))" +.LASF3230: + .string "RCU_SPI0" +.LASF1501: + .string "OB_WP2 REG16((OB) + 0x0CU)" +.LASF1578: + .string "OB_WP_15 ((uint32_t)0x00008000U)" +.LASF2175: + .string "SPI_MASTER (SPI_CTL0_MSTMOD | SPI_CTL0_SWNSS)" +.LASF1032: + .string "GET_RFIFOMDATA0_DB3(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF588: + .string "ADC_RSQ0_RL BITS(20,23)" +.LASF5: + .string "__GNUC__ 10" +.LASF2357: + .string "TIMER_CHCTL0_CH1COMCTL BITS(12,14)" +.LASF2446: + .string "TIMER_DMAREQUEST_CHANNELEVENT ((uint32_t)0x00000000U)" +.LASF2251: + .string "SPI_FLAG_FERR SPI_STAT_FERR" +.LASF2730: + .string "WWDGT_CTL REG32((WWDGT) + 0x00000000U)" +.LASF647: + .string "ADC_SAMPLETIME_239POINT5 SAMPTX_SPT(7)" +.LASF3037: + .string "RCU_APB2_CKAHB_DIV2 CFG0_APB2PSC(4)" +.LASF679: + .string "ADC_INT_WDE ADC_STAT_WDE" +.LASF1835: + .string "GPIO_PIN_SOURCE_12 ((uint8_t)0x0CU)" +.LASF1028: + .string "GET_RFIFOMP_FI(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF2348: + .string "TIMER_SWEVG_BRKG BIT(7)" +.LASF1301: + .string "DMA_INT_FTF DMA_CHXCTL_FTFIE" +.LASF2223: + .string "I2SCTL_I2SSTD(regval) (BITS(4,5) & ((uint32_t)(regval) << 4))" +.LASF2102: + .string "RTC_CNTL_CNT BITS(0,15)" +.LASF181: + .string "__DECIMAL_DIG__ 36" +.LASF97: + .string "__INT16_MAX__ 0x7fff" +.LASF1649: + .string "GPIO_CTL1_CTL14 BITS(26, 27)" +.LASF2779: + .string "_T_WCHAR_ " +.LASF2041: + .string "DBG_LOW_POWER_DEEPSLEEP DBG_CTL_DSLP_HOLD" +.LASF3071: + .string "RCU_PLL_MUL22 (PLLMF_4 | CFG0_PLLMF(5))" +.LASF985: + .string "CAN_RFIFOMDATA1_DB5 BITS(8,15)" +.LASF2976: + .string "RCU_BDCTL_RTCEN BIT(15)" +.LASF135: + .string "__UINT_FAST64_MAX__ 0xffffffffffffffffULL" +.LASF1640: + .string "GPIO_CTL1_MD10 BITS(8, 9)" +.LASF1326: + .string "GD32VF103_ECLIC_H " +.LASF1985: + .string "I2C_ARP_DISABLE ((uint32_t)0x00000000U)" +.LASF495: + .string "BITS(start,end) ((0xFFFFFFFFUL << (start)) & (0xFFFFFFFFUL >> (31U - (uint32_t)(end))))" +.LASF470: + .string "INTMAX_MIN (-INTMAX_MAX - 1)" +.LASF1481: + .string "EXTI_PD_PD15 BIT(15)" +.LASF3042: + .string "RCU_CKADC_CKAPB2_DIV4 ((uint32_t)0x00000001U)" +.LASF2057: + .string "PMU_CS_WUPEN BIT(8)" +.LASF791: + .string "CAN_TMI0(canx) REG32((canx) + 0x180U)" +.LASF2865: + .string "RCU_CTL_PLL2EN BIT(28)" +.LASF2884: + .string "RCU_INT_PLLSTBIF BIT(4)" +.LASF2796: + .string "offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)" +.LASF1161: + .string "DAC0_R8DH_DAC0_DH BITS(0,7)" +.LASF2774: + .string "__size_t " +.LASF2211: + .string "I2SCTL_DTLEN(regval) (BITS(1,2) & ((uint32_t)(regval) << 1))" +.LASF3349: + .string "rcu_osci_on" +.LASF3274: + .string "RCU_FLAG_LXTALSTB" +.LASF2892: + .string "RCU_INT_PLLSTBIE BIT(12)" +.LASF2755: + .string "_GCC_PTRDIFF_T " +.LASF2994: + .string "RCU_CFG1_I2S2SEL BIT(18)" +.LASF119: + .string "__UINT16_C(c) c" +.LASF1865: + .string "GPIO_TIMER1_PARTIAL_REMAP1 ((uint32_t)0x00180200U)" +.LASF1424: + .string "EXTI_RTEN_RTEN15 BIT(15)" +.LASF2819: + .string "ECLIC_INT_IE_OFFSET _AC(0x1001,UL)" +.LASF2395: + .string "TIMER_CH0CV_CH0VAL BITS(0,15)" +.LASF1626: + .string "GPIO_CTL0_MD3 BITS(12, 13)" +.LASF2651: + .string "USART_CTL1_CLEN BIT(8)" +.LASF836: + .string "CAN_F20DATA0(canx) REG32((canx) + 0x2E0U)" +.LASF1693: + .string "GPIO_BOP_BOP9 BIT(9)" +.LASF373: + .string "__EXP" +.LASF290: + .string "__GCC_ATOMIC_CHAR32_T_LOCK_FREE 2" +.LASF1882: + .string "I2C1 (I2C_BASE + 0x00000400U)" +.LASF796: + .string "CAN_TMP1(canx) REG32((canx) + 0x194U)" +.LASF3255: + .string "RCU_PMURST" +.LASF547: + .string "ADC_IDATA1(adcx) REG32((adcx) + 0x40U)" +.LASF2920: + .string "RCU_APB1RST_WWDGTRST BIT(11)" +.LASF263: + .string "__FLT32X_HAS_DENORM__ 1" +.LASF1601: + .string "GPIOB (GPIO_BASE + 0x00000400U)" +.LASF2587: + .string "TIMER_SLAVE_MODE_DISABLE SMCFG_SMC(0)" +.LASF937: + .string "CAN_INTEN_RFOIE1 BIT(6)" +.LASF920: + .string "CAN_TSTAT_TMLS0 BIT(29)" +.LASF1838: + .string "GPIO_PIN_SOURCE_15 ((uint8_t)0x0FU)" +.LASF2672: + .string "USART_BIT_POS(val) ((uint32_t)(val) & (0x0000001FU))" +.LASF3295: + .string "RCU_INT_FLAG_HXTALSTB_CLR" +.LASF1276: + .string "DMA_CHXCTL_PWIDTH BITS(8,9)" +.LASF2452: + .string "TIMER_DMACFG_DMATA_INTF DMACFG_DMATA(4)" +.LASF769: + .string "BKP_TPCS_TIF BIT(9)" +.LASF527: + .string "GD32VF103_LIBOPT_H " +.LASF2308: + .string "TIMER_SMCFG_TRGS BITS(4,6)" +.LASF1725: + .string "GPIO_BC_CR9 BIT(9)" +.LASF2396: + .string "TIMER_CH1CV_CH1VAL BITS(0,15)" +.LASF372: + .string "___int_least64_t_defined 1" +.LASF2616: + .string "USART_BAUD(usartx) REG32((usartx) + (0x00000008U))" +.LASF210: + .string "__FLT32_MAX_EXP__ 128" +.LASF861: + .string "CAN_F17DATA1(canx) REG32((canx) + 0x24CU)" +.LASF1348: + .string "EXMC_SNTCFG_AHLD BITS(4,7)" +.LASF1791: + .string "GPIO_MODE_OUT_PP ((uint8_t)0x10U)" +.LASF2742: + .string "WWDGT_CFG_PSC_DIV4 CFG_PSC(2)" +.LASF3305: + .string "RCU_INT_PLLSTB" +.LASF1604: + .string "GPIOE (GPIO_BASE + 0x00001000U)" +.LASF3257: + .string "RCU_AFRST" +.LASF2815: + .string "ECLIC_CFG_OFFSET 0x0" +.LASF3219: + .string "RCU_DAC" +.LASF2398: + .string "TIMER_CH3CV_CH3VAL BITS(0,15)" +.LASF2489: + .string "TIMER_EVENT_SRC_CH2G ((uint16_t)0x0008U)" +.LASF1092: + .string "CAN_EFID_MASK ((uint32_t)0x1FFFFFFFU)" +.LASF1117: + .string "CAN_INT_SLPW CAN_INTEN_SLPWIE" +.LASF2397: + .string "TIMER_CH2CV_CH2VAL BITS(0,15)" +.LASF304: + .string "__riscv_compressed 1" +.LASF266: + .string "__FLT64X_MANT_DIG__ 113" +.LASF1154: + .string "DAC_CTL_DWM1 BITS(22,23)" +.LASF2016: + .string "FWDGT_RLD_TIMEOUT ((uint32_t)0x000FFFFFU)" +.LASF1816: + .string "GPIO_EVENT_PIN_9 ((uint8_t)0x09U)" +.LASF1567: + .string "OB_WP_4 ((uint32_t)0x00000010U)" +.LASF1963: + .string "I2C_ACK_ENABLE ((uint32_t)0x00000001U)" +.LASF917: + .string "CAN_TSTAT_TME0 BIT(26)" +.LASF662: + .string "ADC_CHANNEL_1 ((uint8_t)0x01U)" +.LASF580: + .string "ADC_CTL1_SWICST BIT(21)" +.LASF1268: + .string "DMA_CHXCTL_CHEN BIT(0)" +.LASF1551: + .string "OB_BOOT_B0 ((uint8_t)0x08U)" +.LASF3238: + .string "RCU_TIMER2RST" +.LASF1302: + .string "DMA_INT_HTF DMA_CHXCTL_HTFIE" +.LASF1552: + .string "OB_USER_MASK ((uint8_t)0xF0U)" +.LASF2488: + .string "TIMER_EVENT_SRC_CH1G ((uint16_t)0x0004U)" +.LASF2911: + .string "RCU_APB2RST_TIMER0RST BIT(11)" +.LASF2811: + .string "_AT(T,X) ((T)(X))" +.LASF3174: + .string "unsigned int" +.LASF1943: + .string "I2C_CKCFG_DTCY BIT(14)" +.LASF3030: + .string "RCU_APB1_CKAHB_DIV1 CFG0_APB1PSC(0)" +.LASF425: + .string "__int_least64_t_defined 1" +.LASF2496: + .string "TIMER_COUNTER_CENTER_DOWN CTL0_CAM(1)" +.LASF771: + .string "BKP_DATA10_41(number) REG16((BKP) + 0x40U + ((number)-10U) * 0x04U)" +.LASF2284: + .string "TIMER_CCHP(timerx) REG32((timerx) + 0x44U)" +.LASF415: + .string "_INT64_T_DECLARED " +.LASF2426: + .string "TIMER_FLAG_UP TIMER_INTF_UPIF" +.LASF3172: + .string "OSC_STARTUP_TIMEOUT ((uint32_t)0xFFFFFU)" +.LASF1686: + .string "GPIO_BOP_BOP2 BIT(2)" +.LASF2522: + .string "TIMER_CCHP_PROT_1 CCHP_PROT(2)" +.LASF2599: + .string "TIMER_EXT_TRI_PSC_DIV2 SMCFG_ETPSC(1)" +.LASF1160: + .string "DAC0_L12DH_DAC0_DH BITS(4,15)" +.LASF1633: + .string "GPIO_CTL0_CTL6 BITS(26, 27)" +.LASF1549: + .string "OB_STDBY_NRST ((uint8_t)0x04U)" +.LASF1300: + .string "DMA_FLAG_ERR DMA_INTF_ERRIF" + .ident "GCC: (xPack GNU RISC-V Embedded GCC x86_64) 10.2.0" diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_rtc.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_rtc.c new file mode 100644 index 0000000000..b568315e96 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_rtc.c @@ -0,0 +1,274 @@ +/*! + \file gd32vf103_rtc.c + \brief RTC driver + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "gd32vf103_rtc.h" + +/* RTC register high / low bits mask */ +#define RTC_HIGH_BITS_MASK ((uint32_t)0x000F0000U) /* RTC high bits mask */ +#define RTC_LOW_BITS_MASK ((uint32_t)0x0000FFFFU) /* RTC low bits mask */ + +/* RTC register high bits offset */ +#define RTC_HIGH_BITS_OFFSET ((uint32_t)16U) + +/*! + \brief enter RTC configuration mode + \param[in] none + \param[out] none + \retval none +*/ +void rtc_configuration_mode_enter(void) +{ + RTC_CTL |= RTC_CTL_CMF; +} + +/*! + \brief exit RTC configuration mode + \param[in] none + \param[out] none + \retval none +*/ +void rtc_configuration_mode_exit(void) +{ + RTC_CTL &= ~RTC_CTL_CMF; +} + +/*! + \brief set RTC counter value + \param[in] cnt: RTC counter value + \param[out] none + \retval none +*/ +void rtc_counter_set(uint32_t cnt) +{ + rtc_configuration_mode_enter(); + /* set the RTC counter high bits */ + RTC_CNTH = (cnt >> RTC_HIGH_BITS_OFFSET); + /* set the RTC counter low bits */ + RTC_CNTL = (cnt & RTC_LOW_BITS_MASK); + rtc_configuration_mode_exit(); +} + +/*! + \brief set RTC prescaler value + \param[in] psc: RTC prescaler value + \param[out] none + \retval none +*/ +void rtc_prescaler_set(uint32_t psc) +{ + rtc_configuration_mode_enter(); + /* set the RTC prescaler high bits */ + RTC_PSCH = ((psc & RTC_HIGH_BITS_MASK) >> RTC_HIGH_BITS_OFFSET); + /* set the RTC prescaler low bits */ + RTC_PSCL = (psc & RTC_LOW_BITS_MASK); + rtc_configuration_mode_exit(); +} + +/*! + \brief wait RTC last write operation finished flag set + \param[in] none + \param[out] none + \retval none +*/ +void rtc_lwoff_wait(void) +{ + /* loop until LWOFF flag is set */ + while(RESET == (RTC_CTL & RTC_CTL_LWOFF)){ + } +} + +/*! + \brief wait RTC registers synchronized flag set + \param[in] none + \param[out] none + \retval none +*/ +void rtc_register_sync_wait(void) +{ + /* clear RSYNF flag */ + RTC_CTL &= ~RTC_CTL_RSYNF; + /* loop until RSYNF flag is set */ + while(RESET == (RTC_CTL & RTC_CTL_RSYNF)){ + } +} + +/*! + \brief set RTC alarm value + \param[in] alarm: RTC alarm value + \param[out] none + \retval none +*/ +void rtc_alarm_config(uint32_t alarm) +{ + rtc_configuration_mode_enter(); + /* set the alarm high bits */ + RTC_ALRMH = (alarm >> RTC_HIGH_BITS_OFFSET); + /* set the alarm low bits */ + RTC_ALRML = (alarm & RTC_LOW_BITS_MASK); + rtc_configuration_mode_exit(); +} + +/*! + \brief get RTC counter value + \param[in] none + \param[out] none + \retval RTC counter value +*/ +uint32_t rtc_counter_get(void) +{ + uint32_t temp = 0x0U; + + temp = RTC_CNTL; + temp |= (RTC_CNTH << RTC_HIGH_BITS_OFFSET); + return temp; +} + +/*! + \brief get RTC divider value + \param[in] none + \param[out] none + \retval RTC divider value +*/ +uint32_t rtc_divider_get(void) +{ + uint32_t temp = 0x00U; + + temp = ((RTC_DIVH & RTC_DIVH_DIV) << RTC_HIGH_BITS_OFFSET); + temp |= RTC_DIVL; + return temp; +} + +/*! + \brief get RTC flag status + \param[in] flag: specify which flag status to get + only one parameter can be selected which is shown as below: + \arg RTC_FLAG_SECOND: second interrupt flag + \arg RTC_FLAG_ALARM: alarm interrupt flag + \arg RTC_FLAG_OVERFLOW: overflow interrupt flag + \arg RTC_FLAG_RSYN: registers synchronized flag + \arg RTC_FLAG_LWOF: last write operation finished flag + \param[out] none + \retval SET or RESET +*/ +FlagStatus rtc_flag_get(uint32_t flag) +{ + if(RESET != (RTC_CTL & flag)){ + return SET; + }else{ + return RESET; + } +} + +/*! + \brief clear RTC flag status + \param[in] flag: specify which flag status to clear + one or more parameters can be selected which are shown as below: + \arg RTC_FLAG_SECOND: second interrupt flag + \arg RTC_FLAG_ALARM: alarm interrupt flag + \arg RTC_FLAG_OVERFLOW: overflow interrupt flag + \arg RTC_FLAG_RSYN: registers synchronized flag + \param[out] none + \retval none +*/ +void rtc_flag_clear(uint32_t flag) +{ + /* clear RTC flag */ + RTC_CTL &= ~flag; +} + +/*! + \brief get RTC interrupt flag status + \param[in] flag: specify which flag status to get + only one parameter can be selected which is shown as below: + \arg RTC_INT_FLAG_SECOND: second interrupt flag + \arg RTC_INT_FLAG_ALARM: alarm interrupt flag + \arg RTC_INT_FLAG_OVERFLOW: overflow interrupt flag + \param[out] none + \retval SET or RESET +*/ +FlagStatus rtc_interrupt_flag_get(uint32_t flag) +{ + if(RESET != (RTC_CTL & flag)){ + return SET; + }else{ + return RESET; + } +} + +/*! + \brief clear RTC interrupt flag status + \param[in] flag: specify which flag status to clear + one or more parameters can be selected which are shown as below: + \arg RTC_INT_FLAG_SECOND: second interrupt flag + \arg RTC_INT_FLAG_ALARM: alarm interrupt flag + \arg RTC_INT_FLAG_OVERFLOW: overflow interrupt flag + \param[out] none + \retval none +*/ +void rtc_interrupt_flag_clear(uint32_t flag) +{ + /* clear RTC interrupt flag */ + RTC_CTL &= ~flag; +} + +/*! + \brief enable RTC interrupt + \param[in] interrupt: specify which interrupt to enbale + one or more parameters can be selected which are shown as below: + \arg RTC_INT_SECOND: second interrupt + \arg RTC_INT_ALARM: alarm interrupt + \arg RTC_INT_OVERFLOW: overflow interrupt + \param[out] none + \retval none +*/ +void rtc_interrupt_enable(uint32_t interrupt) +{ + RTC_INTEN |= interrupt; +} + +/*! + \brief disable RTC interrupt + \param[in] interrupt: specify which interrupt to disbale + one or more parameters can be selected which are shown as below: + \arg RTC_INT_SECOND: second interrupt + \arg RTC_INT_ALARM: alarm interrupt + \arg RTC_INT_OVERFLOW: overflow interrupt + \param[out] none + \retval none +*/ +void rtc_interrupt_disable(uint32_t interrupt) +{ + RTC_INTEN &= ~interrupt; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_spi.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_spi.c new file mode 100644 index 0000000000..4b8864441e --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_spi.c @@ -0,0 +1,767 @@ +/*! + \file gd32vf103_spi.c + \brief SPI driver + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "gd32vf103_spi.h" + +/* SPI/I2S parameter initialization mask */ +#define SPI_INIT_MASK ((uint32_t)0x00003040U) /*!< SPI parameter initialization mask */ +#define I2S_INIT_MASK ((uint32_t)0x0000F047U) /*!< I2S parameter initialization mask */ + +/* I2S clock source selection, multiplication and division mask */ +#define I2S1_CLOCK_SEL ((uint32_t)0x00020000U) /* I2S1 clock source selection */ +#define I2S2_CLOCK_SEL ((uint32_t)0x00040000U) /* I2S2 clock source selection */ +#define I2S_CLOCK_MUL_MASK ((uint32_t)0x0000F000U) /* I2S clock multiplication mask */ +#define I2S_CLOCK_DIV_MASK ((uint32_t)0x000000F0U) /* I2S clock division mask */ + +/* default value and offset */ +#define SPI_I2SPSC_DEFAULT_VALUE ((uint32_t)0x00000002U) /* default value of SPI_I2SPSC register */ +#define RCU_CFG1_PREDV1_OFFSET 4U /* PREDV1 offset in RCU_CFG1 */ +#define RCU_CFG1_PLL2MF_OFFSET 12U /* PLL2MF offset in RCU_CFG1 */ + +/*! + \brief reset SPI and I2S + \param[in] spi_periph: SPIx(x=0,1,2) + \param[out] none + \retval none +*/ +void spi_i2s_deinit(uint32_t spi_periph) +{ + switch(spi_periph){ + case SPI0: + /* reset SPI0 */ + rcu_periph_reset_enable(RCU_SPI0RST); + rcu_periph_reset_disable(RCU_SPI0RST); + break; + case SPI1: + /* reset SPI1 and I2S1 */ + rcu_periph_reset_enable(RCU_SPI1RST); + rcu_periph_reset_disable(RCU_SPI1RST); + break; + case SPI2: + /* reset SPI2 and I2S2 */ + rcu_periph_reset_enable(RCU_SPI2RST); + rcu_periph_reset_disable(RCU_SPI2RST); + break; + default : + break; + } +} + +/*! + \brief initialize the parameters of SPI struct with the default values + \param[in] spi_struct: SPI parameter stuct + \param[out] none + \retval none +*/ +void spi_struct_para_init(spi_parameter_struct* spi_struct) +{ + /* set the SPI struct with the default values */ + spi_struct->device_mode = SPI_SLAVE; + spi_struct->trans_mode = SPI_TRANSMODE_FULLDUPLEX; + spi_struct->frame_size = SPI_FRAMESIZE_8BIT; + spi_struct->nss = SPI_NSS_HARD; + spi_struct->clock_polarity_phase = SPI_CK_PL_LOW_PH_1EDGE; + spi_struct->prescale = SPI_PSC_2; +} + +/*! + \brief initialize SPI parameter + \param[in] spi_periph: SPIx(x=0,1,2) + \param[in] spi_struct: SPI parameter initialization stuct members of the structure + and the member values are shown as below: + device_mode: SPI_MASTER, SPI_SLAVE + trans_mode: SPI_TRANSMODE_FULLDUPLEX, SPI_TRANSMODE_RECEIVEONLY, + SPI_TRANSMODE_BDRECEIVE, SPI_TRANSMODE_BDTRANSMIT + frame_size: SPI_FRAMESIZE_16BIT, SPI_FRAMESIZE_8BIT + nss: SPI_NSS_SOFT, SPI_NSS_HARD + endian: SPI_ENDIAN_MSB, SPI_ENDIAN_LSB + clock_polarity_phase: SPI_CK_PL_LOW_PH_1EDGE, SPI_CK_PL_HIGH_PH_1EDGE + SPI_CK_PL_LOW_PH_2EDGE, SPI_CK_PL_HIGH_PH_2EDGE + prescale: SPI_PSC_n (n=2,4,8,16,32,64,128,256) + \param[out] none + \retval none +*/ +void spi_init(uint32_t spi_periph, spi_parameter_struct* spi_struct) +{ + uint32_t reg = 0U; + reg = SPI_CTL0(spi_periph); + reg &= SPI_INIT_MASK; + + /* select SPI as master or slave */ + reg |= spi_struct->device_mode; + /* select SPI transfer mode */ + reg |= spi_struct->trans_mode; + /* select SPI frame size */ + reg |= spi_struct->frame_size; + /* select SPI NSS use hardware or software */ + reg |= spi_struct->nss; + /* select SPI LSB or MSB */ + reg |= spi_struct->endian; + /* select SPI polarity and phase */ + reg |= spi_struct->clock_polarity_phase; + /* select SPI prescale to adjust transmit speed */ + reg |= spi_struct->prescale; + + /* write to SPI_CTL0 register */ + SPI_CTL0(spi_periph) = (uint32_t)reg; + + SPI_I2SCTL(spi_periph) &= (uint32_t)(~SPI_I2SCTL_I2SSEL); +} + +/*! + \brief enable SPI + \param[in] spi_periph: SPIx(x=0,1,2) + \param[out] none + \retval none +*/ +void spi_enable(uint32_t spi_periph) +{ + SPI_CTL0(spi_periph) |= (uint32_t)SPI_CTL0_SPIEN; +} + +/*! + \brief disable SPI + \param[in] spi_periph: SPIx(x=0,1,2) + \param[out] none + \retval none +*/ +void spi_disable(uint32_t spi_periph) +{ + SPI_CTL0(spi_periph) &= (uint32_t)(~SPI_CTL0_SPIEN); +} + +/*! + \brief initialize I2S parameter + \param[in] spi_periph: SPIx(x=1,2) + \param[in] mode: I2S operation mode + only one parameter can be selected which is shown as below: + \arg I2S_MODE_SLAVETX: I2S slave transmit mode + \arg I2S_MODE_SLAVERX: I2S slave receive mode + \arg I2S_MODE_MASTERTX: I2S master transmit mode + \arg I2S_MODE_MASTERRX: I2S master receive mode + \param[in] standard: I2S standard + only one parameter can be selected which is shown as below: + \arg I2S_STD_PHILLIPS: I2S phillips standard + \arg I2S_STD_MSB: I2S MSB standard + \arg I2S_STD_LSB: I2S LSB standard + \arg I2S_STD_PCMSHORT: I2S PCM short standard + \arg I2S_STD_PCMLONG: I2S PCM long standard + \param[in] ckpl: I2S idle state clock polarity + only one parameter can be selected which is shown as below: + \arg I2S_CKPL_LOW: I2S clock polarity low level + \arg I2S_CKPL_HIGH: I2S clock polarity high level + \param[out] none + \retval none +*/ +void i2s_init(uint32_t spi_periph, uint32_t mode, uint32_t standard, uint32_t ckpl) +{ + uint32_t reg = 0U; + reg = SPI_I2SCTL(spi_periph); + reg &= I2S_INIT_MASK; + + /* enable I2S mode */ + reg |= (uint32_t)SPI_I2SCTL_I2SSEL; + /* select I2S mode */ + reg |= (uint32_t)mode; + /* select I2S standard */ + reg |= (uint32_t)standard; + /* select I2S polarity */ + reg |= (uint32_t)ckpl; + + /* write to SPI_I2SCTL register */ + SPI_I2SCTL(spi_periph) = (uint32_t)reg; +} + +/*! + \brief configure I2S prescaler + \param[in] spi_periph: SPIx(x=1,2) + \param[in] audiosample: I2S audio sample rate + only one parameter can be selected which is shown as below: + \arg I2S_AUDIOSAMPLE_8K: audio sample rate is 8KHz + \arg I2S_AUDIOSAMPLE_11K: audio sample rate is 11KHz + \arg I2S_AUDIOSAMPLE_16K: audio sample rate is 16KHz + \arg I2S_AUDIOSAMPLE_22K: audio sample rate is 22KHz + \arg I2S_AUDIOSAMPLE_32K: audio sample rate is 32KHz + \arg I2S_AUDIOSAMPLE_44K: audio sample rate is 44KHz + \arg I2S_AUDIOSAMPLE_48K: audio sample rate is 48KHz + \arg I2S_AUDIOSAMPLE_96K: audio sample rate is 96KHz + \arg I2S_AUDIOSAMPLE_192K: audio sample rate is 192KHz + \param[in] frameformat: I2S data length and channel length + only one parameter can be selected which is shown as below: + \arg I2S_FRAMEFORMAT_DT16B_CH16B: I2S data length is 16 bit and channel length is 16 bit + \arg I2S_FRAMEFORMAT_DT16B_CH32B: I2S data length is 16 bit and channel length is 32 bit + \arg I2S_FRAMEFORMAT_DT24B_CH32B: I2S data length is 24 bit and channel length is 32 bit + \arg I2S_FRAMEFORMAT_DT32B_CH32B: I2S data length is 32 bit and channel length is 32 bit + \param[in] mckout: I2S master clock output + only one parameter can be selected which is shown as below: + \arg I2S_MCKOUT_ENABLE: I2S master clock output enable + \arg I2S_MCKOUT_DISABLE: I2S master clock output disable + \param[out] none + \retval none +*/ +void i2s_psc_config(uint32_t spi_periph, uint32_t audiosample, uint32_t frameformat, uint32_t mckout) +{ + uint32_t i2sdiv = 2U, i2sof = 0U; + uint32_t clks = 0U; + uint32_t i2sclock = 0U; + + /* deinit SPI_I2SPSC register */ + SPI_I2SPSC(spi_periph) = SPI_I2SPSC_DEFAULT_VALUE; + + /* get the I2S clock source */ + if(SPI1 == ((uint32_t)spi_periph)){ + /* I2S1 clock source selection */ + clks = I2S1_CLOCK_SEL; + }else{ + /* I2S2 clock source selection */ + clks = I2S2_CLOCK_SEL; + } + + if(0U != (RCU_CFG1 & clks)){ + /* get RCU PLL2 clock multiplication factor */ + clks = (uint32_t)((RCU_CFG1 & I2S_CLOCK_MUL_MASK) >> RCU_CFG1_PLL2MF_OFFSET); + + if((clks > 5U) && (clks < 15U)){ + /* multiplier is between 8 and 16 */ + clks += 2U; + }else{ + if(15U == clks){ + /* multiplier is 20 */ + clks = 20U; + } + } + + /* get the PREDV1 value */ + i2sclock = (uint32_t)(((RCU_CFG1 & I2S_CLOCK_DIV_MASK) >> RCU_CFG1_PREDV1_OFFSET) + 1U); + /* calculate I2S clock based on PLL2 and PREDV1 */ + i2sclock = (uint32_t)((HXTAL_VALUE / i2sclock) * clks * 2U); + }else{ + /* get system clock */ + i2sclock = rcu_clock_freq_get(CK_SYS); + } + + /* config the prescaler depending on the mclk output state, the frame format and audio sample rate */ + if(I2S_MCKOUT_ENABLE == mckout){ + clks = (uint32_t)(((i2sclock / 256U) * 10U) / audiosample); + }else{ + if(I2S_FRAMEFORMAT_DT16B_CH16B == frameformat){ + clks = (uint32_t)(((i2sclock / 32U) *10U ) / audiosample); + }else{ + clks = (uint32_t)(((i2sclock / 64U) *10U ) / audiosample); + } + } + + /* remove the floating point */ + clks = (clks + 5U) / 10U; + i2sof = (clks & 0x00000001U); + i2sdiv = ((clks - i2sof) / 2U); + i2sof = (i2sof << 8U); + + /* set the default values */ + if((i2sdiv < 2U) || (i2sdiv > 255U)){ + i2sdiv = 2U; + i2sof = 0U; + } + /* configure SPI_I2SPSC */ + SPI_I2SPSC(spi_periph) = (uint32_t)(i2sdiv | i2sof | mckout); + + /* clear SPI_I2SCTL_DTLEN and SPI_I2SCTL_CHLEN bits */ + SPI_I2SCTL(spi_periph) &= (uint32_t)(~(SPI_I2SCTL_DTLEN | SPI_I2SCTL_CHLEN)); + /* configure data frame format */ + SPI_I2SCTL(spi_periph) |= (uint32_t)frameformat; +} + +/*! + \brief enable I2S + \param[in] spi_periph: SPIx(x=1,2) + \param[out] none + \retval none +*/ +void i2s_enable(uint32_t spi_periph) +{ + SPI_I2SCTL(spi_periph) |= (uint32_t)SPI_I2SCTL_I2SEN; +} + +/*! + \brief disable I2S + \param[in] spi_periph: SPIx(x=1,2) + \param[out] none + \retval none +*/ +void i2s_disable(uint32_t spi_periph) +{ + SPI_I2SCTL(spi_periph) &= (uint32_t)(~SPI_I2SCTL_I2SEN); +} + +/*! + \brief enable SPI NSS output + \param[in] spi_periph: SPIx(x=0,1,2) + \param[out] none + \retval none +*/ +void spi_nss_output_enable(uint32_t spi_periph) +{ + SPI_CTL1(spi_periph) |= (uint32_t)SPI_CTL1_NSSDRV; +} + +/*! + \brief disable SPI NSS output + \param[in] spi_periph: SPIx(x=0,1,2) + \param[out] none + \retval none +*/ +void spi_nss_output_disable(uint32_t spi_periph) +{ + SPI_CTL1(spi_periph) &= (uint32_t)(~SPI_CTL1_NSSDRV); +} + +/*! + \brief SPI NSS pin high level in software mode + \param[in] spi_periph: SPIx(x=0,1,2) + \param[out] none + \retval none +*/ +void spi_nss_internal_high(uint32_t spi_periph) +{ + SPI_CTL0(spi_periph) |= (uint32_t)SPI_CTL0_SWNSS; +} + +/*! + \brief SPI NSS pin low level in software mode + \param[in] spi_periph: SPIx(x=0,1,2) + \param[out] none + \retval none +*/ +void spi_nss_internal_low(uint32_t spi_periph) +{ + SPI_CTL0(spi_periph) &= (uint32_t)(~SPI_CTL0_SWNSS); +} + +/*! + \brief enable SPI DMA send or receive + \param[in] spi_periph: SPIx(x=0,1,2) + \param[in] dma: SPI DMA mode + only one parameter can be selected which is shown as below: + \arg SPI_DMA_TRANSMIT: SPI transmit data using DMA + \arg SPI_DMA_RECEIVE: SPI receive data using DMA + \param[out] none + \retval none +*/ +void spi_dma_enable(uint32_t spi_periph, uint8_t dma) +{ + if(SPI_DMA_TRANSMIT == dma){ + SPI_CTL1(spi_periph) |= (uint32_t)SPI_CTL1_DMATEN; + }else{ + SPI_CTL1(spi_periph) |= (uint32_t)SPI_CTL1_DMAREN; + } +} + +/*! + \brief disable SPI DMA send or receive + \param[in] spi_periph: SPIx(x=0,1,2) + \param[in] dma: SPI DMA mode + only one parameter can be selected which is shown as below: + \arg SPI_DMA_TRANSMIT: SPI transmit data using DMA + \arg SPI_DMA_RECEIVE: SPI receive data using DMA + \param[out] none + \retval none +*/ +void spi_dma_disable(uint32_t spi_periph, uint8_t dma) +{ + if(SPI_DMA_TRANSMIT == dma){ + SPI_CTL1(spi_periph) &= (uint32_t)(~SPI_CTL1_DMATEN); + }else{ + SPI_CTL1(spi_periph) &= (uint32_t)(~SPI_CTL1_DMAREN); + } +} + +/*! + \brief configure SPI/I2S data frame format + \param[in] spi_periph: SPIx(x=0,1,2) + \param[in] frame_format: SPI frame size + only one parameter can be selected which is shown as below: + \arg SPI_FRAMESIZE_16BIT: SPI frame size is 16 bits + \arg SPI_FRAMESIZE_8BIT: SPI frame size is 8 bits + \param[out] none + \retval none +*/ +void spi_i2s_data_frame_format_config(uint32_t spi_periph, uint16_t frame_format) +{ + /* clear SPI_CTL0_FF16 bit */ + SPI_CTL0(spi_periph) &= (uint32_t)(~SPI_CTL0_FF16); + /* configure SPI_CTL0_FF16 bit */ + SPI_CTL0(spi_periph) |= (uint32_t)frame_format; +} + +/*! + \brief SPI transmit data + \param[in] spi_periph: SPIx(x=0,1,2) + \param[in] data: 16-bit data + \param[out] none + \retval none +*/ +void spi_i2s_data_transmit(uint32_t spi_periph, uint16_t data) +{ + SPI_DATA(spi_periph) = (uint32_t)data; +} + +/*! + \brief SPI receive data + \param[in] spi_periph: SPIx(x=0,1,2) + \param[out] none + \retval 16-bit data +*/ +uint16_t spi_i2s_data_receive(uint32_t spi_periph) +{ + return ((uint16_t)SPI_DATA(spi_periph)); +} + +/*! + \brief configure SPI bidirectional transfer direction + \param[in] spi_periph: SPIx(x=0,1,2) + \param[in] transfer_direction: SPI transfer direction + only one parameter can be selected which is shown as below: + \arg SPI_BIDIRECTIONAL_TRANSMIT: SPI work in transmit-only mode + \arg SPI_BIDIRECTIONAL_RECEIVE: SPI work in receive-only mode + \param[out] none + \retval none +*/ +void spi_bidirectional_transfer_config(uint32_t spi_periph, uint32_t transfer_direction) +{ + if(SPI_BIDIRECTIONAL_TRANSMIT == transfer_direction){ + /* set the transmit-only mode */ + SPI_CTL0(spi_periph) |= (uint32_t)SPI_BIDIRECTIONAL_TRANSMIT; + }else{ + /* set the receive-only mode */ + SPI_CTL0(spi_periph) &= SPI_BIDIRECTIONAL_RECEIVE; + } +} + +/*! + \brief set SPI CRC polynomial + \param[in] spi_periph: SPIx(x=0,1,2) + \param[in] crc_poly: CRC polynomial value + \param[out] none + \retval none +*/ +void spi_crc_polynomial_set(uint32_t spi_periph,uint16_t crc_poly) +{ + /* enable SPI CRC */ + SPI_CTL0(spi_periph) |= (uint32_t)SPI_CTL0_CRCEN; + + /* set SPI CRC polynomial */ + SPI_CRCPOLY(spi_periph) = (uint32_t)crc_poly; +} + +/*! + \brief get SPI CRC polynomial + \param[in] spi_periph: SPIx(x=0,1,2) + \param[out] none + \retval 16-bit CRC polynomial +*/ +uint16_t spi_crc_polynomial_get(uint32_t spi_periph) +{ + return ((uint16_t)SPI_CRCPOLY(spi_periph)); +} + +/*! + \brief turn on CRC function + \param[in] spi_periph: SPIx(x=0,1,2) + \param[out] none + \retval none +*/ +void spi_crc_on(uint32_t spi_periph) +{ + SPI_CTL0(spi_periph) |= (uint32_t)SPI_CTL0_CRCEN; +} + +/*! + \brief turn off CRC function + \param[in] spi_periph: SPIx(x=0,1,2) + \param[out] none + \retval none +*/ +void spi_crc_off(uint32_t spi_periph) +{ + SPI_CTL0(spi_periph) &= (uint32_t)(~SPI_CTL0_CRCEN); +} + +/*! + \brief SPI next data is CRC value + \param[in] spi_periph: SPIx(x=0,1,2) + \param[out] none + \retval none +*/ +void spi_crc_next(uint32_t spi_periph) +{ + SPI_CTL0(spi_periph) |= (uint32_t)SPI_CTL0_CRCNT; +} + +/*! + \brief get SPI CRC send value or receive value + \param[in] spi_periph: SPIx(x=0,1,2) + \param[in] crc: SPI crc value + only one parameter can be selected which is shown as below: + \arg SPI_CRC_TX: get transmit crc value + \arg SPI_CRC_RX: get receive crc value + \param[out] none + \retval 16-bit CRC value +*/ +uint16_t spi_crc_get(uint32_t spi_periph,uint8_t crc) +{ + if(SPI_CRC_TX == crc){ + return ((uint16_t)(SPI_TCRC(spi_periph))); + }else{ + return ((uint16_t)(SPI_RCRC(spi_periph))); + } +} + +/*! + \brief enable SPI TI mode + \param[in] spi_periph: SPIx(x=0,1,2) + \param[out] none + \retval none +*/ +void spi_ti_mode_enable(uint32_t spi_periph) +{ + SPI_CTL1(spi_periph) |= (uint32_t)SPI_CTL1_TMOD; +} + +/*! + \brief disable SPI TI mode + \param[in] spi_periph: SPIx(x=0,1,2) + \param[out] none + \retval none +*/ +void spi_ti_mode_disable(uint32_t spi_periph) +{ + SPI_CTL1(spi_periph) &= (uint32_t)(~SPI_CTL1_TMOD); +} + +/*! + \brief enable SPI NSS pulse mode + \param[in] spi_periph: SPIx(x=0,1,2) + \param[out] none + \retval none +*/ +void spi_nssp_mode_enable(uint32_t spi_periph) +{ + SPI_CTL1(spi_periph) |= (uint32_t)SPI_CTL1_NSSP; +} + +/*! + \brief disable SPI NSS pulse mode + \param[in] spi_periph: SPIx(x=0,1,2) + \param[out] none + \retval none +*/ +void spi_nssp_mode_disable(uint32_t spi_periph) +{ + SPI_CTL1(spi_periph) &= (uint32_t)(~SPI_CTL1_NSSP); +} + + +/*! + \brief enable SPI and I2S interrupt + \param[in] spi_periph: SPIx(x=0,1,2) + \param[in] interrupt: SPI/I2S interrupt + only one parameter can be selected which is shown as below: + \arg SPI_I2S_INT_TBE: transmit buffer empty interrupt + \arg SPI_I2S_INT_RBNE: receive buffer not empty interrupt + \arg SPI_I2S_INT_ERR: CRC error,configuration error,reception overrun error, + transmission underrun error and format error interrupt + \param[out] none + \retval none +*/ +void spi_i2s_interrupt_enable(uint32_t spi_periph, uint8_t interrupt) +{ + switch(interrupt){ + /* SPI/I2S transmit buffer empty interrupt */ + case SPI_I2S_INT_TBE: + SPI_CTL1(spi_periph) |= (uint32_t)SPI_CTL1_TBEIE; + break; + /* SPI/I2S receive buffer not empty interrupt */ + case SPI_I2S_INT_RBNE: + SPI_CTL1(spi_periph) |= (uint32_t)SPI_CTL1_RBNEIE; + break; + /* SPI/I2S error */ + case SPI_I2S_INT_ERR: + SPI_CTL1(spi_periph) |= (uint32_t)SPI_CTL1_ERRIE; + break; + default: + break; + } +} + +/*! + \brief disable SPI and I2S interrupt + \param[in] spi_periph: SPIx(x=0,1,2) + \param[in] interrupt: SPI/I2S interrupt + only one parameter can be selected which is shown as below: + \arg SPI_I2S_INT_TBE: transmit buffer empty interrupt + \arg SPI_I2S_INT_RBNE: receive buffer not empty interrupt + \arg SPI_I2S_INT_ERR: CRC error,configuration error,reception overrun error, + transmission underrun error and format error interrupt + \param[out] none + \retval none +*/ +void spi_i2s_interrupt_disable(uint32_t spi_periph, uint8_t interrupt) +{ + switch(interrupt){ + /* SPI/I2S transmit buffer empty interrupt */ + case SPI_I2S_INT_TBE: + SPI_CTL1(spi_periph) &= (uint32_t)(~SPI_CTL1_TBEIE); + break; + /* SPI/I2S receive buffer not empty interrupt */ + case SPI_I2S_INT_RBNE: + SPI_CTL1(spi_periph) &= (uint32_t)(~SPI_CTL1_RBNEIE); + break; + /* SPI/I2S error */ + case SPI_I2S_INT_ERR: + SPI_CTL1(spi_periph) &= (uint32_t)(~SPI_CTL1_ERRIE); + break; + default: + break; + } +} + +/*! + \brief get SPI and I2S interrupt flag status + \param[in] spi_periph: SPIx(x=0,1,2) + \param[in] interrupt: SPI/I2S interrupt flag status + only one parameter can be selected which is shown as below: + \arg SPI_I2S_INT_FLAG_TBE: transmit buffer empty interrupt flag + \arg SPI_I2S_INT_FLAG_RBNE: receive buffer not empty interrupt flag + \arg SPI_I2S_INT_FLAG_RXORERR: overrun interrupt flag + \arg SPI_INT_FLAG_CONFERR: config error interrupt flag + \arg SPI_INT_FLAG_CRCERR: CRC error interrupt flag + \arg I2S_INT_FLAG_TXURERR: underrun error interrupt flag + \arg SPI_I2S_INT_FLAG_FERR: format error interrupt flag + \param[out] none + \retval FlagStatus: SET or RESET +*/ +FlagStatus spi_i2s_interrupt_flag_get(uint32_t spi_periph, uint8_t interrupt) +{ + uint32_t reg1 = SPI_STAT(spi_periph); + uint32_t reg2 = SPI_CTL1(spi_periph); + + switch(interrupt){ + /* SPI/I2S transmit buffer empty interrupt */ + case SPI_I2S_INT_FLAG_TBE: + reg1 = reg1 & SPI_STAT_TBE; + reg2 = reg2 & SPI_CTL1_TBEIE; + break; + /* SPI/I2S receive buffer not empty interrupt */ + case SPI_I2S_INT_FLAG_RBNE: + reg1 = reg1 & SPI_STAT_RBNE; + reg2 = reg2 & SPI_CTL1_RBNEIE; + break; + /* SPI/I2S overrun interrupt */ + case SPI_I2S_INT_FLAG_RXORERR: + reg1 = reg1 & SPI_STAT_RXORERR; + reg2 = reg2 & SPI_CTL1_ERRIE; + break; + /* SPI config error interrupt */ + case SPI_INT_FLAG_CONFERR: + reg1 = reg1 & SPI_STAT_CONFERR; + reg2 = reg2 & SPI_CTL1_ERRIE; + break; + /* SPI CRC error interrupt */ + case SPI_INT_FLAG_CRCERR: + reg1 = reg1 & SPI_STAT_CRCERR; + reg2 = reg2 & SPI_CTL1_ERRIE; + break; + /* I2S underrun error interrupt */ + case I2S_INT_FLAG_TXURERR: + reg1 = reg1 & SPI_STAT_TXURERR; + reg2 = reg2 & SPI_CTL1_ERRIE; + break; + /* SPI/I2S format error interrupt */ + case SPI_I2S_INT_FLAG_FERR: + reg1 = reg1 & SPI_STAT_FERR; + reg2 = reg2 & SPI_CTL1_ERRIE; + break; + default: + break; + } + /* get SPI/I2S interrupt flag status */ + if((0U != reg1) && (0U != reg2)){ + return SET; + }else{ + return RESET; + } +} + +/*! + \brief get SPI and I2S flag status + \param[in] spi_periph: SPIx(x=0,1,2) + \param[in] flag: SPI/I2S flag status + one or more parameters can be selected which are shown as below: + \arg SPI_FLAG_TBE: transmit buffer empty flag + \arg SPI_FLAG_RBNE: receive buffer not empty flag + \arg SPI_FLAG_TRANS: transmit on-going flag + \arg SPI_FLAG_RXORERR: receive overrun error flag + \arg SPI_FLAG_CONFERR: mode config error flag + \arg SPI_FLAG_CRCERR: CRC error flag + \arg SPI_FLAG_FERR: format error interrupt flag + \arg I2S_FLAG_TBE: transmit buffer empty flag + \arg I2S_FLAG_RBNE: receive buffer not empty flag + \arg I2S_FLAG_TRANS: transmit on-going flag + \arg I2S_FLAG_RXORERR: overrun error flag + \arg I2S_FLAG_TXURERR: underrun error flag + \arg I2S_FLAG_CH: channel side flag + \arg I2S_FLAG_FERR: format error interrupt flag + \param[out] none + \retval FlagStatus: SET or RESET +*/ +FlagStatus spi_i2s_flag_get(uint32_t spi_periph, uint32_t flag) +{ + if(RESET != (SPI_STAT(spi_periph) & flag)){ + return SET; + }else{ + return RESET; + } +} + +/*! + \brief clear SPI CRC error flag status + \param[in] spi_periph: SPIx(x=0,1,2) + \param[out] none + \retval none +*/ +void spi_crc_error_clear(uint32_t spi_periph) +{ + SPI_STAT(spi_periph) &= (uint32_t)(~SPI_FLAG_CRCERR); +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_timer.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_timer.c new file mode 100644 index 0000000000..8697fd83fe --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_timer.c @@ -0,0 +1,1967 @@ +/*! + \file gd32vf103_timer.c + \brief TIMER driver + + \version 2019-06-05, V1.0.1, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ +#include "gd32vf103_timer.h" + +/* TIMER init parameter mask */ +#define ALIGNEDMODE_MASK ((uint32_t)0x00000060U) /*!< TIMER init parameter aligne dmode mask */ +#define COUNTERDIRECTION_MASK ((uint32_t)0x00000010U) /*!< TIMER init parameter counter direction mask */ +#define CLOCKDIVISION_MASK ((uint32_t)0x00000300U) /*!< TIMER init parameter clock division value mask */ + +/*! + \brief deinit a timer + \param[in] timer_periph: TIMERx(x=0..6) + \param[out] none + \retval none +*/ +void timer_deinit(uint32_t timer_periph) +{ + switch(timer_periph){ + case TIMER0: + /* reset TIMER0 */ + rcu_periph_reset_enable(RCU_TIMER0RST); + rcu_periph_reset_disable(RCU_TIMER0RST); + break; + case TIMER1: + /* reset TIMER1 */ + rcu_periph_reset_enable(RCU_TIMER1RST); + rcu_periph_reset_disable(RCU_TIMER1RST); + break; + case TIMER2: + /* reset TIMER2 */ + rcu_periph_reset_enable(RCU_TIMER2RST); + rcu_periph_reset_disable(RCU_TIMER2RST); + break; + case TIMER3: + /* reset TIMER3 */ + rcu_periph_reset_enable(RCU_TIMER3RST); + rcu_periph_reset_disable(RCU_TIMER3RST); + break; + case TIMER4: + /* reset TIMER4 */ + rcu_periph_reset_enable(RCU_TIMER4RST); + rcu_periph_reset_disable(RCU_TIMER4RST); + break; + case TIMER5: + /* reset TIMER5 */ + rcu_periph_reset_enable(RCU_TIMER5RST); + rcu_periph_reset_disable(RCU_TIMER5RST); + break; + case TIMER6: + /* reset TIMER6 */ + rcu_periph_reset_enable(RCU_TIMER6RST); + rcu_periph_reset_disable(RCU_TIMER6RST); + break; + + default: + break; + } +} + +/*! + \brief initialize TIMER init parameter struct with a default value + \param[in] initpara: init parameter struct + \param[out] none + \retval none +*/ +void timer_struct_para_init(timer_parameter_struct* initpara) +{ + /* initialize the init parameter struct member with the default value */ + initpara->prescaler = 0U; + initpara->alignedmode = TIMER_COUNTER_EDGE; + initpara->counterdirection = TIMER_COUNTER_UP; + initpara->period = 65535U; + initpara->clockdivision = TIMER_CKDIV_DIV1; + initpara->repetitioncounter = 0U; +} + +/*! + \brief initialize TIMER counter + \param[in] timer_periph: TIMERx(x=0..6) + \param[in] initpara: init parameter struct + prescaler: prescaler value of the counter clock, 0~65535 + alignedmode: TIMER_COUNTER_EDGE, TIMER_COUNTER_CENTER_DOWN, TIMER_COUNTER_CENTER_UP, + TIMER_COUNTER_CENTER_BOTH + counterdirection: TIMER_COUNTER_UP, TIMER_COUNTER_DOWN + period: counter auto reload value, 0~65535 + clockdivision: TIMER_CKDIV_DIV1, TIMER_CKDIV_DIV2, TIMER_CKDIV_DIV4 + repetitioncounter: counter repetition value, 0~255 + \param[out] none + \retval none +*/ +void timer_init(uint32_t timer_periph, timer_parameter_struct* initpara) +{ + /* configure the counter prescaler value */ + TIMER_PSC(timer_periph) = (uint16_t)initpara->prescaler; + + /* configure the counter direction and aligned mode */ + if((TIMER0 == timer_periph) || (TIMER1 == timer_periph) || (TIMER2 == timer_periph) + || (TIMER3 == timer_periph) || (TIMER4 == timer_periph) ){ + TIMER_CTL0(timer_periph) &= (~(uint32_t)(TIMER_CTL0_DIR | TIMER_CTL0_CAM)); + TIMER_CTL0(timer_periph) |= (uint32_t)(initpara->alignedmode & ALIGNEDMODE_MASK); + TIMER_CTL0(timer_periph) |= (uint32_t)(initpara->counterdirection & COUNTERDIRECTION_MASK); + }else{ + TIMER_CTL0(timer_periph) &= (uint32_t)(~ TIMER_CTL0_DIR); + TIMER_CTL0(timer_periph) |= (uint32_t)(initpara->counterdirection & COUNTERDIRECTION_MASK); + } + + /* configure the autoreload value */ + TIMER_CAR(timer_periph) = (uint32_t)initpara->period; + + if((TIMER5 != timer_periph) && (TIMER6 != timer_periph)){ + /* reset the CKDIV bit */ + TIMER_CTL0(timer_periph) &= (~(uint32_t)TIMER_CTL0_CKDIV); + TIMER_CTL0(timer_periph) |= (uint32_t)(initpara->clockdivision & CLOCKDIVISION_MASK); + } + + if (TIMER0 == timer_periph) { + /* configure the repetition counter value */ + TIMER_CREP(timer_periph) = (uint32_t)initpara->repetitioncounter; + } + + /* generate an update event */ + TIMER_SWEVG(timer_periph) |= (uint32_t)TIMER_SWEVG_UPG; +} + +/*! + \brief enable a timer + \param[in] timer_periph: TIMERx(x=0..6) + \param[out] none + \retval none +*/ +void timer_enable(uint32_t timer_periph) +{ + TIMER_CTL0(timer_periph) |= (uint32_t)TIMER_CTL0_CEN; +} + +/*! + \brief disable a timer + \param[in] timer_periph: TIMERx(x=0..6) + \param[out] none + \retval none +*/ +void timer_disable(uint32_t timer_periph) +{ + TIMER_CTL0(timer_periph) &= ~(uint32_t)TIMER_CTL0_CEN; +} + +/*! + \brief enable the auto reload shadow function + \param[in] timer_periph: TIMERx(x=0..6) + \param[out] none + \retval none +*/ +void timer_auto_reload_shadow_enable(uint32_t timer_periph) +{ + TIMER_CTL0(timer_periph) |= (uint32_t)TIMER_CTL0_ARSE; +} + +/*! + \brief disable the auto reload shadow function + \param[in] timer_periph: TIMERx(x=0..6) + \param[out] none + \retval none +*/ +void timer_auto_reload_shadow_disable(uint32_t timer_periph) +{ + TIMER_CTL0(timer_periph) &= ~(uint32_t)TIMER_CTL0_ARSE; +} + +/*! + \brief enable the update event + \param[in] timer_periph: TIMERx(x=0..6) + \param[out] none + \retval none +*/ +void timer_update_event_enable(uint32_t timer_periph) +{ + TIMER_CTL0(timer_periph) &= ~(uint32_t)TIMER_CTL0_UPDIS; +} + +/*! + \brief disable the update event + \param[in] timer_periph: TIMERx(x=0..6) + \param[out] none + \retval none +*/ +void timer_update_event_disable(uint32_t timer_periph) +{ + TIMER_CTL0(timer_periph) |= (uint32_t) TIMER_CTL0_UPDIS; +} + +/*! + \brief set TIMER counter alignment mode + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] aligned: + only one parameter can be selected which is shown as below: + \arg TIMER_COUNTER_EDGE: edge-aligned mode + \arg TIMER_COUNTER_CENTER_DOWN: center-aligned and counting down assert mode + \arg TIMER_COUNTER_CENTER_UP: center-aligned and counting up assert mode + \arg TIMER_COUNTER_CENTER_BOTH: center-aligned and counting up/down assert mode + \param[out] none + \retval none +*/ +void timer_counter_alignment(uint32_t timer_periph, uint16_t aligned) +{ + TIMER_CTL0(timer_periph) &= (uint32_t)(~TIMER_CTL0_CAM); + TIMER_CTL0(timer_periph) |= (uint32_t)aligned; +} + +/*! + \brief set TIMER counter up direction + \param[in] timer_periph: TIMERx(x=0..4) + \param[out] none + \retval none +*/ +void timer_counter_up_direction(uint32_t timer_periph) +{ + TIMER_CTL0(timer_periph) &= ~(uint32_t)TIMER_CTL0_DIR; +} + +/*! + \brief set TIMER counter down direction + \param[in] timer_periph: TIMERx(x=0..4) + \param[out] none + \retval none +*/ +void timer_counter_down_direction(uint32_t timer_periph) +{ + TIMER_CTL0(timer_periph) |= (uint32_t)TIMER_CTL0_DIR; +} + +/*! + \brief configure TIMER prescaler + \param[in] timer_periph: TIMERx(x=0..6) + \param[in] prescaler: prescaler value + \param[in] pscreload: prescaler reload mode + only one parameter can be selected which is shown as below: + \arg TIMER_PSC_RELOAD_NOW: the prescaler is loaded right now + \arg TIMER_PSC_RELOAD_UPDATE: the prescaler is loaded at the next update event + \param[out] none + \retval none +*/ +void timer_prescaler_config(uint32_t timer_periph, uint16_t prescaler, uint32_t pscreload) +{ + TIMER_PSC(timer_periph) = (uint32_t)prescaler; + + if(TIMER_PSC_RELOAD_NOW == pscreload){ + TIMER_SWEVG(timer_periph) |= (uint32_t)TIMER_SWEVG_UPG; + } +} + +/*! + \brief configure TIMER repetition register value + \param[in] timer_periph: TIMERx(x=0) + \param[in] repetition: the counter repetition value, 0~255 + \param[out] none + \retval none +*/ +void timer_repetition_value_config(uint32_t timer_periph, uint16_t repetition) +{ + TIMER_CREP(timer_periph) = (uint32_t)repetition; +} + +/*! + \brief configure TIMER autoreload register value + \param[in] timer_periph: TIMERx(x=0..6) + \param[in] autoreload: the counter auto-reload value + \param[out] none + \retval none +*/ +void timer_autoreload_value_config(uint32_t timer_periph, uint16_t autoreload) +{ + TIMER_CAR(timer_periph) = (uint32_t)autoreload; +} + +/*! + \brief configure TIMER counter register value + \param[in] timer_periph: TIMERx(x=0..6) + \param[in] counter: the counter value + \param[out] none + \retval none +*/ +void timer_counter_value_config(uint32_t timer_periph, uint16_t counter) +{ + TIMER_CNT(timer_periph) = (uint32_t)counter; +} + +/*! + \brief read TIMER counter value + \param[in] timer_periph: TIMERx(x=0..6) + \param[out] none + \retval counter value +*/ +uint32_t timer_counter_read(uint32_t timer_periph) +{ + uint32_t count_value = 0U; + count_value = TIMER_CNT(timer_periph); + return (count_value); +} + +/*! + \brief read TIMER prescaler value + \param[in] timer_periph: TIMERx(x=0..6) + \param[out] none + \retval prescaler register value +*/ +uint16_t timer_prescaler_read(uint32_t timer_periph) +{ + uint16_t prescaler_value = 0U; + prescaler_value = (uint16_t) (TIMER_PSC(timer_periph)); + return (prescaler_value); +} + +/*! + \brief configure TIMER single pulse mode + \param[in] timer_periph: TIMERx(x=0..6) + \param[in] spmode: + only one parameter can be selected which is shown as below: + \arg TIMER_SP_MODE_SINGLE: single pulse mode + \arg TIMER_SP_MODE_REPETITIVE: repetitive pulse mode + \param[out] none + \retval none +*/ +void timer_single_pulse_mode_config(uint32_t timer_periph, uint32_t spmode) +{ + if(TIMER_SP_MODE_SINGLE == spmode){ + TIMER_CTL0(timer_periph) |= (uint32_t)TIMER_CTL0_SPM; + }else if(TIMER_SP_MODE_REPETITIVE == spmode){ + TIMER_CTL0(timer_periph) &= ~((uint32_t)TIMER_CTL0_SPM); + }else{ + /* illegal parameters */ + } +} + +/*! + \brief configure TIMER update source + \param[in] timer_periph: TIMERx(x=0..6) + \param[in] update: + only one parameter can be selected which is shown as below: + \arg TIMER_UPDATE_SRC_GLOBAL: update generate by setting of UPG bit or the counter overflow/underflow, + or the slave mode controller trigger + \arg TIMER_UPDATE_SRC_REGULAR: update generate only by counter overflow/underflow + \param[out] none + \retval none +*/ +void timer_update_source_config(uint32_t timer_periph, uint32_t update) +{ + if(TIMER_UPDATE_SRC_REGULAR == update){ + TIMER_CTL0(timer_periph) |= (uint32_t)TIMER_CTL0_UPS; + }else if(TIMER_UPDATE_SRC_GLOBAL == update){ + TIMER_CTL0(timer_periph) &= ~(uint32_t)TIMER_CTL0_UPS; + }else{ + /* illegal parameters */ + } +} + + +/*! + \brief enable the TIMER DMA + \param[in] timer_periph: TIMERx(x=0..6) + \param[in] dma: specify which DMA to enable + one or more parameters can be selected which are shown as below: + \arg TIMER_DMA_UPD: update DMA enable, TIMERx(x=0..6) + \arg TIMER_DMA_CH0D: channel 0 DMA enable, TIMERx(x=0..4) + \arg TIMER_DMA_CH1D: channel 1 DMA enable, TIMERx(x=0..4) + \arg TIMER_DMA_CH2D: channel 2 DMA enable, TIMERx(x=0..4) + \arg TIMER_DMA_CH3D: channel 3 DMA enable, TIMERx(x=0..4) + \arg TIMER_DMA_CMTD: channel commutation DMA request enable, TIMERx(x=0) + \arg TIMER_DMA_TRGD: trigger DMA enable, TIMERx(x=0..4) + \param[out] none + \retval none +*/ +void timer_dma_enable(uint32_t timer_periph, uint16_t dma) +{ + TIMER_DMAINTEN(timer_periph) |= (uint32_t) dma; +} + +/*! + \brief disable the TIMER DMA + \param[in] timer_periph: TIMERxTIMERx(x=0..6) + \param[in] dma: specify which DMA to disbale + one or more parameters can be selected which are shown as below: + \arg TIMER_DMA_UPD: update DMA enable, TIMERx(x=0..6) + \arg TIMER_DMA_CH0D: channel 0 DMA enable, TIMERx(x=0..4) + \arg TIMER_DMA_CH1D: channel 1 DMA enable, TIMERx(x=0..4) + \arg TIMER_DMA_CH2D: channel 2 DMA enable, TIMERx(x=0..4) + \arg TIMER_DMA_CH3D: channel 3 DMA enable, TIMERx(x=0..4) + \arg TIMER_DMA_CMTD: channel commutation DMA request enable, TIMERx(x=0) + \arg TIMER_DMA_TRGD: trigger DMA enable, TIMERx(x=0..4,7) + \param[out] none + \retval none +*/ +void timer_dma_disable(uint32_t timer_periph, uint16_t dma) +{ + TIMER_DMAINTEN(timer_periph) &= (~(uint32_t)(dma)); +} + +/*! + \brief channel DMA request source selection + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] dma_request: channel DMA request source selection + only one parameter can be selected which is shown as below: + \arg TIMER_DMAREQUEST_CHANNELEVENT: DMA request of channel n is sent when channel n event occurs + \arg TIMER_DMAREQUEST_UPDATEEVENT: DMA request of channel n is sent when update event occurs + \param[out] none + \retval none +*/ +void timer_channel_dma_request_source_select(uint32_t timer_periph, uint32_t dma_request) +{ + if(TIMER_DMAREQUEST_UPDATEEVENT == dma_request){ + TIMER_CTL1(timer_periph) |= (uint32_t)TIMER_CTL1_DMAS; + }else if(TIMER_DMAREQUEST_CHANNELEVENT == dma_request){ + TIMER_CTL1(timer_periph) &= ~(uint32_t)TIMER_CTL1_DMAS; + }else{ + /* illegal parameters */ + } +} + +/*! + \brief configure the TIMER DMA transfer + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] dma_baseaddr: + only one parameter can be selected which is shown as below: + \arg TIMER_DMACFG_DMATA_CTL0: DMA transfer address is TIMER_CTL0, TIMERx(x=0..4) + \arg TIMER_DMACFG_DMATA_CTL1: DMA transfer address is TIMER_CTL1, TIMERx(x=0..4) + \arg TIMER_DMACFG_DMATA_SMCFG: DMA transfer address is TIMER_SMCFG, TIMERx(x=0..4) + \arg TIMER_DMACFG_DMATA_DMAINTEN: DMA transfer address is TIMER_DMAINTEN, TIMERx(x=0..4) + \arg TIMER_DMACFG_DMATA_INTF: DMA transfer address is TIMER_INTF, TIMERx(x=0..4) + \arg TIMER_DMACFG_DMATA_SWEVG: DMA transfer address is TIMER_SWEVG, TIMERx(x=0..4) + \arg TIMER_DMACFG_DMATA_CHCTL0: DMA transfer address is TIMER_CHCTL0, TIMERx(x=0..4) + \arg TIMER_DMACFG_DMATA_CHCTL1: DMA transfer address is TIMER_CHCTL1, TIMERx(x=0..4) + \arg TIMER_DMACFG_DMATA_CHCTL2: DMA transfer address is TIMER_CHCTL2, TIMERx(x=0..4) + \arg TIMER_DMACFG_DMATA_CNT: DMA transfer address is TIMER_CNT, TIMERx(x=0..4) + \arg TIMER_DMACFG_DMATA_PSC: DMA transfer address is TIMER_PSC, TIMERx(x=0..4) + \arg TIMER_DMACFG_DMATA_CAR: DMA transfer address is TIMER_CAR, TIMERx(x=0..4) + \arg TIMER_DMACFG_DMATA_CREP: DMA transfer address is TIMER_CREP, TIMERx(x=0) + \arg TIMER_DMACFG_DMATA_CH0CV: DMA transfer address is TIMER_CH0CV, TIMERx(x=0..4) + \arg TIMER_DMACFG_DMATA_CH1CV: DMA transfer address is TIMER_CH1CV, TIMERx(x=0..4) + \arg TIMER_DMACFG_DMATA_CH2CV: DMA transfer address is TIMER_CH2CV, TIMERx(x=0..4) + \arg TIMER_DMACFG_DMATA_CH3CV: DMA transfer address is TIMER_CH3CV, TIMERx(x=0..4) + \arg TIMER_DMACFG_DMATA_CCHP: DMA transfer address is TIMER_CCHP, TIMERx(x=0) + \arg TIMER_DMACFG_DMATA_DMACFG: DMA transfer address is TIMER_DMACFG, TIMERx(x=0..4) + \param[in] dma_lenth: + only one parameter can be selected which is shown as below: + \arg TIMER_DMACFG_DMATC_xTRANSFER(x=1..6): DMA transfer x time + \param[out] none + \retval none +*/ +void timer_dma_transfer_config(uint32_t timer_periph, uint32_t dma_baseaddr, uint32_t dma_lenth) +{ + TIMER_DMACFG(timer_periph) &= (~(uint32_t)(TIMER_DMACFG_DMATA | TIMER_DMACFG_DMATC)); + TIMER_DMACFG(timer_periph) |= (uint32_t)(dma_baseaddr | dma_lenth); +} + +/*! + \brief software generate events + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] event: the timer software event generation sources + one or more parameters can be selected which are shown as below: + \arg TIMER_EVENT_SRC_UPG: update event generation, TIMERx(x=0..6) + \arg TIMER_EVENT_SRC_CH0G: channel 0 capture or compare event generation, TIMERx(x=0..4) + \arg TIMER_EVENT_SRC_CH1G: channel 1 capture or compare event generation, TIMERx(x=0..4) + \arg TIMER_EVENT_SRC_CH2G: channel 2 capture or compare event generation, TIMERx(x=0..4) + \arg TIMER_EVENT_SRC_CH3G: channel 3 capture or compare event generation, TIMERx(x=0..4) + \arg TIMER_EVENT_SRC_CMTG: channel commutation event generation, TIMERx(x=0) + \arg TIMER_EVENT_SRC_TRGG: trigger event generation, TIMERx(x=0..4) + \arg TIMER_EVENT_SRC_BRKG: break event generation, TIMERx(x=0) + \param[out] none + \retval none +*/ +void timer_event_software_generate(uint32_t timer_periph, uint16_t event) +{ + TIMER_SWEVG(timer_periph) |= (uint32_t)event; +} + +/*! + \brief initialize TIMER break parameter struct with a default value + \param[in] breakpara: TIMER break parameter struct + \param[out] none + \retval none +*/ +void timer_break_struct_para_init(timer_break_parameter_struct* breakpara) +{ + /* initialize the break parameter struct member with the default value */ + breakpara->runoffstate = TIMER_ROS_STATE_DISABLE; + breakpara->ideloffstate = TIMER_IOS_STATE_DISABLE; + breakpara->deadtime = 0U; + breakpara->breakpolarity = TIMER_BREAK_POLARITY_LOW; + breakpara->outputautostate = TIMER_OUTAUTO_DISABLE; + breakpara->protectmode = TIMER_CCHP_PROT_OFF; + breakpara->breakstate = TIMER_BREAK_DISABLE; +} + +/*! + \brief configure TIMER break function + \param[in] timer_periph: TIMERx(x=0) + \param[in] breakpara: TIMER break parameter struct + runoffstate: TIMER_ROS_STATE_ENABLE, TIMER_ROS_STATE_DISABLE + ideloffstate: TIMER_IOS_STATE_ENABLE, TIMER_IOS_STATE_DISABLE + deadtime: 0~255 + breakpolarity: TIMER_BREAK_POLARITY_LOW, TIMER_BREAK_POLARITY_HIGH + outputautostate: TIMER_OUTAUTO_ENABLE, TIMER_OUTAUTO_DISABLE + protectmode: TIMER_CCHP_PROT_OFF, TIMER_CCHP_PROT_0, TIMER_CCHP_PROT_1, TIMER_CCHP_PROT_2 + breakstate: TIMER_BREAK_ENABLE, TIMER_BREAK_DISABLE + \param[out] none + \retval none +*/ +void timer_break_config(uint32_t timer_periph, timer_break_parameter_struct* breakpara) +{ + TIMER_CCHP(timer_periph) = (uint32_t)(((uint32_t)(breakpara->runoffstate)) | + ((uint32_t)(breakpara->ideloffstate))| + ((uint32_t)(breakpara->deadtime)) | + ((uint32_t)(breakpara->breakpolarity)) | + ((uint32_t)(breakpara->outputautostate)) | + ((uint32_t)(breakpara->protectmode)) | + ((uint32_t)(breakpara->breakstate))); +} + +/*! + \brief enable TIMER break function + \param[in] timer_periph: TIMERx(x=0) + \param[out] none + \retval none +*/ +void timer_break_enable(uint32_t timer_periph) +{ + TIMER_CCHP(timer_periph) |= (uint32_t)TIMER_CCHP_BRKEN; +} + +/*! + \brief disable TIMER break function + \param[in] timer_periph: TIMERx(x=0) + \param[out] none + \retval none +*/ +void timer_break_disable(uint32_t timer_periph) +{ + TIMER_CCHP(timer_periph) &= ~(uint32_t)TIMER_CCHP_BRKEN; +} + +/*! + \brief enable TIMER output automatic function + \param[in] timer_periph: TIMERx(x=0) + \param[out] none + \retval none +*/ +void timer_automatic_output_enable(uint32_t timer_periph) +{ + TIMER_CCHP(timer_periph) |= (uint32_t)TIMER_CCHP_OAEN; +} + +/*! + \brief disable TIMER output automatic function + \param[in] timer_periph: TIMERx(x=0) + \param[out] none + \retval none +*/ +void timer_automatic_output_disable(uint32_t timer_periph) +{ + TIMER_CCHP(timer_periph) &= ~(uint32_t)TIMER_CCHP_OAEN; +} + +/*! + \brief enable or disable TIMER primary output function + \param[in] timer_periph: TIMERx(x=0) + \param[in] newvalue: ENABLE or DISABLE + \param[out] none + \retval none +*/ +void timer_primary_output_config(uint32_t timer_periph, ControlStatus newvalue) +{ + if(ENABLE == newvalue){ + TIMER_CCHP(timer_periph) |= (uint32_t)TIMER_CCHP_POEN; + }else{ + TIMER_CCHP(timer_periph) &= (~(uint32_t)TIMER_CCHP_POEN); + } +} + +/*! + \brief enable or disable channel capture/compare control shadow register + \param[in] timer_periph: TIMERx(x=0) + \param[in] newvalue: ENABLE or DISABLE + \param[out] none + \retval none +*/ +void timer_channel_control_shadow_config(uint32_t timer_periph, ControlStatus newvalue) +{ + if(ENABLE == newvalue){ + TIMER_CTL1(timer_periph) |= (uint32_t)TIMER_CTL1_CCSE; + }else{ + TIMER_CTL1(timer_periph) &= (~(uint32_t)TIMER_CTL1_CCSE); + } +} + +/*! + \brief configure TIMER channel control shadow register update control + \param[in] timer_periph: TIMERx(x=0) + \param[in] ccuctl: channel control shadow register update control + only one parameter can be selected which is shown as below: + \arg TIMER_UPDATECTL_CCU: the shadow registers update by when CMTG bit is set + \arg TIMER_UPDATECTL_CCUTRI: the shadow registers update by when CMTG bit is set or an rising edge of TRGI occurs + \param[out] none + \retval none +*/ +void timer_channel_control_shadow_update_config(uint32_t timer_periph, uint32_t ccuctl) +{ + if(TIMER_UPDATECTL_CCU == ccuctl){ + TIMER_CTL1(timer_periph) &= (~(uint32_t)TIMER_CTL1_CCUC); + }else if(TIMER_UPDATECTL_CCUTRI == ccuctl){ + TIMER_CTL1(timer_periph) |= (uint32_t)TIMER_CTL1_CCUC; + }else{ + /* illegal parameters */ + } +} + +/*! + \brief initialize TIMER channel output parameter struct with a default value + \param[in] ocpara: TIMER channel n output parameter struct + \param[out] none + \retval none +*/ +void timer_channel_output_struct_para_init(timer_oc_parameter_struct* ocpara) +{ + /* initialize the channel output parameter struct member with the default value */ + ocpara->outputstate = TIMER_CCX_DISABLE; + ocpara->outputnstate = TIMER_CCXN_DISABLE; + ocpara->ocpolarity = TIMER_OC_POLARITY_HIGH; + ocpara->ocnpolarity = TIMER_OCN_POLARITY_HIGH; + ocpara->ocidlestate = TIMER_OC_IDLE_STATE_LOW; + ocpara->ocnidlestate = TIMER_OCN_IDLE_STATE_LOW; +} + +/*! + \brief configure TIMER channel output function + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] channel: + only one parameter can be selected which is shown as below: + \arg TIMER_CH_0: TIMER channel 0(TIMERx(x=0..4)) + \arg TIMER_CH_1: TIMER channel 1(TIMERx(x=0..4)) + \arg TIMER_CH_2: TIMER channel 2(TIMERx(x=0..4)) + \arg TIMER_CH_3: TIMER channel 3(TIMERx(x=0..4)) + \param[in] ocpara: TIMER channeln output parameter struct + outputstate: TIMER_CCX_ENABLE, TIMER_CCX_DISABLE + outputnstate: TIMER_CCXN_ENABLE, TIMER_CCXN_DISABLE + ocpolarity: TIMER_OC_POLARITY_HIGH, TIMER_OC_POLARITY_LOW + ocnpolarity: TIMER_OCN_POLARITY_HIGH, TIMER_OCN_POLARITY_LOW + ocidlestate: TIMER_OC_IDLE_STATE_LOW, TIMER_OC_IDLE_STATE_HIGH + ocnidlestate: TIMER_OCN_IDLE_STATE_LOW, TIMER_OCN_IDLE_STATE_HIGH + \param[out] none + \retval none +*/ +void timer_channel_output_config(uint32_t timer_periph, uint16_t channel, timer_oc_parameter_struct* ocpara) +{ + switch(channel){ + /* configure TIMER_CH_0 */ + case TIMER_CH_0: + /* reset the CH0EN bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH0EN); + /* set the CH0EN bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)ocpara->outputstate; + /* reset the CH0P bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH0P); + /* set the CH0P bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)ocpara->ocpolarity; + + if (TIMER0 == timer_periph) { + /* reset the CH0NEN bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH0NEN); + /* set the CH0NEN bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)ocpara->outputnstate; + /* reset the CH0NP bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH0NP); + /* set the CH0NP bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)ocpara->ocnpolarity; + /* reset the ISO0 bit */ + TIMER_CTL1(timer_periph) &= (~(uint32_t)TIMER_CTL1_ISO0); + /* set the ISO0 bit */ + TIMER_CTL1(timer_periph) |= (uint32_t)ocpara->ocidlestate; + /* reset the ISO0N bit */ + TIMER_CTL1(timer_periph) &= (~(uint32_t)TIMER_CTL1_ISO0N); + /* set the ISO0N bit */ + TIMER_CTL1(timer_periph) |= (uint32_t)ocpara->ocnidlestate; + } + TIMER_CHCTL0(timer_periph) &= ~(uint32_t)TIMER_CHCTL0_CH0MS; + break; + /* configure TIMER_CH_1 */ + case TIMER_CH_1: + /* reset the CH1EN bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH1EN); + /* set the CH1EN bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)(ocpara->outputstate) << 4U); + /* reset the CH1P bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH1P); + /* set the CH1P bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)(ocpara->ocpolarity) << 4U); + + if (TIMER0 == timer_periph) { + /* reset the CH1NEN bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH1NEN); + /* set the CH1NEN bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)(ocpara->outputnstate) << 4U); + /* reset the CH1NP bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH1NP); + /* set the CH1NP bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)(ocpara->ocnpolarity) << 4U); + /* reset the ISO1 bit */ + TIMER_CTL1(timer_periph) &= (~(uint32_t)TIMER_CTL1_ISO1); + /* set the ISO1 bit */ + TIMER_CTL1(timer_periph) |= (uint32_t)((uint32_t)(ocpara->ocidlestate) << 2U); + /* reset the ISO1N bit */ + TIMER_CTL1(timer_periph) &= (~(uint32_t)TIMER_CTL1_ISO1N); + /* set the ISO1N bit */ + TIMER_CTL1(timer_periph) |= (uint32_t)((uint32_t)(ocpara->ocnidlestate) << 2U); + } + TIMER_CHCTL0(timer_periph) &= ~(uint32_t)TIMER_CHCTL0_CH1MS; + break; + /* configure TIMER_CH_2 */ + case TIMER_CH_2: + /* reset the CH2EN bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH2EN); + /* set the CH2EN bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)(ocpara->outputstate) << 8U); + /* reset the CH2P bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH2P); + /* set the CH2P bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)(ocpara->ocpolarity) << 8U); + + if (TIMER0 == timer_periph) { + /* reset the CH2NEN bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH2NEN); + /* set the CH2NEN bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)(ocpara->outputnstate) << 8U); + /* reset the CH2NP bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH2NP); + /* set the CH2NP bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)(ocpara->ocnpolarity) << 8U); + /* reset the ISO2 bit */ + TIMER_CTL1(timer_periph) &= (~(uint32_t)TIMER_CTL1_ISO2); + /* set the ISO2 bit */ + TIMER_CTL1(timer_periph) |= (uint32_t)((uint32_t)(ocpara->ocidlestate) << 4U); + /* reset the ISO2N bit */ + TIMER_CTL1(timer_periph) &= (~(uint32_t)TIMER_CTL1_ISO2N); + /* set the ISO2N bit */ + TIMER_CTL1(timer_periph) |= (uint32_t)((uint32_t)(ocpara->ocnidlestate) << 4U); + } + TIMER_CHCTL1(timer_periph) &= ~(uint32_t)TIMER_CHCTL1_CH2MS; + break; + /* configure TIMER_CH_3 */ + case TIMER_CH_3: + /* reset the CH3EN bit */ + TIMER_CHCTL2(timer_periph) &=(~(uint32_t)TIMER_CHCTL2_CH3EN); + /* set the CH3EN bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)(ocpara->outputstate) << 12U); + /* reset the CH3P bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH3P); + /* set the CH3P bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)(ocpara->ocpolarity) << 12U); + + if (TIMER0 == timer_periph) { + /* reset the ISO3 bit */ + TIMER_CTL1(timer_periph) &= (~(uint32_t)TIMER_CTL1_ISO3); + /* set the ISO3 bit */ + TIMER_CTL1(timer_periph) |= (uint32_t)((uint32_t)(ocpara->ocidlestate) << 6U); + } + TIMER_CHCTL1(timer_periph) &= ~(uint32_t)TIMER_CHCTL1_CH3MS; + break; + default: + break; + } +} + +/*! + \brief configure TIMER channel output compare mode + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] channel: + only one parameter can be selected which is shown as below: + \arg TIMER_CH_0: TIMER channel 0(TIMERx(x=0..4)) + \arg TIMER_CH_1: TIMER channel 1(TIMERx(x=0..4)) + \arg TIMER_CH_2: TIMER channel 2(TIMERx(x=0..4)) + \arg TIMER_CH_3: TIMER channel 3(TIMERx(x=0..4)) + \param[in] ocmode: channel output compare mode + only one parameter can be selected which is shown as below: + \arg TIMER_OC_MODE_TIMING: timing mode + \arg TIMER_OC_MODE_ACTIVE: active mode + \arg TIMER_OC_MODE_INACTIVE: inactive mode + \arg TIMER_OC_MODE_TOGGLE: toggle mode + \arg TIMER_OC_MODE_LOW: force low mode + \arg TIMER_OC_MODE_HIGH: force high mode + \arg TIMER_OC_MODE_PWM0: PWM mode 0 + \arg TIMER_OC_MODE_PWM1: PWM mode 1 + \param[out] none + \retval none +*/ +void timer_channel_output_mode_config(uint32_t timer_periph, uint16_t channel, uint16_t ocmode) +{ + switch(channel){ + /* configure TIMER_CH_0 */ + case TIMER_CH_0: + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH0COMCTL); + TIMER_CHCTL0(timer_periph) |= (uint32_t)ocmode; + break; + /* configure TIMER_CH_1 */ + case TIMER_CH_1: + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH1COMCTL); + TIMER_CHCTL0(timer_periph) |= (uint32_t)((uint32_t)(ocmode) << 8U); + break; + /* configure TIMER_CH_2 */ + case TIMER_CH_2: + TIMER_CHCTL1(timer_periph) &= (~(uint32_t)TIMER_CHCTL1_CH2COMCTL); + TIMER_CHCTL1(timer_periph) |= (uint32_t)ocmode; + break; + /* configure TIMER_CH_3 */ + case TIMER_CH_3: + TIMER_CHCTL1(timer_periph) &= (~(uint32_t)TIMER_CHCTL1_CH3COMCTL); + TIMER_CHCTL1(timer_periph) |= (uint32_t)((uint32_t)(ocmode) << 8U); + break; + default: + break; + } +} + +/*! + \brief configure TIMER channel output pulse value + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] channel: + only one parameter can be selected which is shown as below: + \arg TIMER_CH_0: TIMER channel 0(TIMERx(x=0..4)) + \arg TIMER_CH_1: TIMER channel 1(TIMERx(x=0..4)) + \arg TIMER_CH_2: TIMER channel 2(TIMERx(x=0..4)) + \arg TIMER_CH_3: TIMER channel 3(TIMERx(x=0..4)) + \param[in] pulse: channel output pulse value + \param[out] none + \retval none +*/ +void timer_channel_output_pulse_value_config(uint32_t timer_periph, uint16_t channel, uint32_t pulse) +{ + switch(channel){ + /* configure TIMER_CH_0 */ + case TIMER_CH_0: + TIMER_CH0CV(timer_periph) = (uint32_t)pulse; + break; + /* configure TIMER_CH_1 */ + case TIMER_CH_1: + TIMER_CH1CV(timer_periph) = (uint32_t)pulse; + break; + /* configure TIMER_CH_2 */ + case TIMER_CH_2: + TIMER_CH2CV(timer_periph) = (uint32_t)pulse; + break; + /* configure TIMER_CH_3 */ + case TIMER_CH_3: + TIMER_CH3CV(timer_periph) = (uint32_t)pulse; + break; + default: + break; + } +} + +/*! + \brief configure TIMER channel output shadow function + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] channel: + only one parameter can be selected which is shown as below: + \arg TIMER_CH_0: TIMER channel 0(TIMERx(x=0..4)) + \arg TIMER_CH_1: TIMER channel 1(TIMERx(x=0..4)) + \arg TIMER_CH_2: TIMER channel 2(TIMERx(x=0..4)) + \arg TIMER_CH_3: TIMER channel 3(TIMERx(x=0..4)) + \param[in] ocshadow: channel output shadow state + only one parameter can be selected which is shown as below: + \arg TIMER_OC_SHADOW_ENABLE: channel output shadow state enable + \arg TIMER_OC_SHADOW_DISABLE: channel output shadow state disable + \param[out] none + \retval none +*/ +void timer_channel_output_shadow_config(uint32_t timer_periph, uint16_t channel, uint16_t ocshadow) +{ + switch(channel){ + /* configure TIMER_CH_0 */ + case TIMER_CH_0: + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH0COMSEN); + TIMER_CHCTL0(timer_periph) |= (uint32_t)ocshadow; + break; + /* configure TIMER_CH_1 */ + case TIMER_CH_1: + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH1COMSEN); + TIMER_CHCTL0(timer_periph) |= (uint32_t)((uint32_t)(ocshadow) << 8U); + break; + /* configure TIMER_CH_2 */ + case TIMER_CH_2: + TIMER_CHCTL1(timer_periph) &= (~(uint32_t)TIMER_CHCTL1_CH2COMSEN); + TIMER_CHCTL1(timer_periph) |= (uint32_t)ocshadow; + break; + /* configure TIMER_CH_3 */ + case TIMER_CH_3: + TIMER_CHCTL1(timer_periph) &= (~(uint32_t)TIMER_CHCTL1_CH3COMSEN); + TIMER_CHCTL1(timer_periph) |= (uint32_t)((uint32_t)(ocshadow) << 8U); + break; + default: + break; + } +} + +/*! + \brief configure TIMER channel output fast function + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] channel: + only one parameter can be selected which is shown as below: + \arg TIMER_CH_0: TIMER channel 0(TIMERx(x=0..4)) + \arg TIMER_CH_1: TIMER channel 1(TIMERx(x=0..4)) + \arg TIMER_CH_2: TIMER channel 2(TIMERx(x=0..4)) + \arg TIMER_CH_3: TIMER channel 3(TIMERx(x=0..4)) + \param[in] ocfast: channel output fast function + only one parameter can be selected which is shown as below: + \arg TIMER_OC_FAST_ENABLE: channel output fast function enable + \arg TIMER_OC_FAST_DISABLE: channel output fast function disable + \param[out] none + \retval none +*/ +void timer_channel_output_fast_config(uint32_t timer_periph, uint16_t channel, uint16_t ocfast) +{ + switch(channel){ + /* configure TIMER_CH_0 */ + case TIMER_CH_0: + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH0COMFEN); + TIMER_CHCTL0(timer_periph) |= (uint32_t)ocfast; + break; + /* configure TIMER_CH_1 */ + case TIMER_CH_1: + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH1COMFEN); + TIMER_CHCTL0(timer_periph) |= (uint32_t)((uint32_t)ocfast << 8U); + break; + /* configure TIMER_CH_2 */ + case TIMER_CH_2: + TIMER_CHCTL1(timer_periph) &= (~(uint32_t)TIMER_CHCTL1_CH2COMFEN); + TIMER_CHCTL1(timer_periph) |= (uint32_t)ocfast; + break; + /* configure TIMER_CH_3 */ + case TIMER_CH_3: + TIMER_CHCTL1(timer_periph) &= (~(uint32_t)TIMER_CHCTL1_CH3COMFEN); + TIMER_CHCTL1(timer_periph) |= (uint32_t)((uint32_t)ocfast << 8U); + break; + default: + break; + } +} + +/*! + \brief configure TIMER channel output clear function + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] channel: + only one parameter can be selected which is shown as below: + \arg TIMER_CH_0: TIMER channel 0(TIMERx(x=0..4)) + \arg TIMER_CH_1: TIMER channel 1(TIMERx(x=0..4)) + \arg TIMER_CH_2: TIMER channel 2(TIMERx(x=0..4)) + \arg TIMER_CH_3: TIMER channel 3(TIMERx(x=0..4)) + \param[in] occlear: channel output clear function + only one parameter can be selected which is shown as below: + \arg TIMER_OC_CLEAR_ENABLE: channel output clear function enable + \arg TIMER_OC_CLEAR_DISABLE: channel output clear function disable + \param[out] none + \retval none +*/ +void timer_channel_output_clear_config(uint32_t timer_periph, uint16_t channel, uint16_t occlear) +{ + switch(channel){ + /* configure TIMER_CH_0 */ + case TIMER_CH_0: + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH0COMCEN); + TIMER_CHCTL0(timer_periph) |= (uint32_t)occlear; + break; + /* configure TIMER_CH_1 */ + case TIMER_CH_1: + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH1COMCEN); + TIMER_CHCTL0(timer_periph) |= (uint32_t)((uint32_t)occlear << 8U); + break; + /* configure TIMER_CH_2 */ + case TIMER_CH_2: + TIMER_CHCTL1(timer_periph) &= (~(uint32_t)TIMER_CHCTL1_CH2COMCEN); + TIMER_CHCTL1(timer_periph) |= (uint32_t)occlear; + break; + /* configure TIMER_CH_3 */ + case TIMER_CH_3: + TIMER_CHCTL1(timer_periph) &= (~(uint32_t)TIMER_CHCTL1_CH3COMCEN); + TIMER_CHCTL1(timer_periph) |= (uint32_t)((uint32_t)occlear << 8U); + break; + default: + break; + } +} + +/*! + \brief configure TIMER channel output polarity + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] channel: + only one parameter can be selected which is shown as below: + \arg TIMER_CH_0: TIMER channel 0(TIMERx(x=0..4)) + \arg TIMER_CH_1: TIMER channel 1(TIMERx(x=0..4)) + \arg TIMER_CH_2: TIMER channel 2(TIMERx(x=0..4)) + \arg TIMER_CH_3: TIMER channel 3(TIMERx(x=0..4)) + \param[in] ocpolarity: channel output polarity + only one parameter can be selected which is shown as below: + \arg TIMER_OC_POLARITY_HIGH: channel output polarity is high + \arg TIMER_OC_POLARITY_LOW: channel output polarity is low + \param[out] none + \retval none +*/ +void timer_channel_output_polarity_config(uint32_t timer_periph, uint16_t channel, uint16_t ocpolarity) +{ + switch(channel){ + /* configure TIMER_CH_0 */ + case TIMER_CH_0: + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH0P); + TIMER_CHCTL2(timer_periph) |= (uint32_t)ocpolarity; + break; + /* configure TIMER_CH_1 */ + case TIMER_CH_1: + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH1P); + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)ocpolarity << 4U); + break; + /* configure TIMER_CH_2 */ + case TIMER_CH_2: + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH2P); + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)ocpolarity << 8U); + break; + /* configure TIMER_CH_3 */ + case TIMER_CH_3: + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH3P); + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)ocpolarity << 12U); + break; + default: + break; + } +} + +/*! + \brief configure TIMER channel complementary output polarity + \param[in] timer_periph: TIMERx(x=0) + \param[in] channel: + only one parameter can be selected which is shown as below: + \arg TIMER_CH_0: TIMER channel 0(TIMERx(x=0)) + \arg TIMER_CH_1: TIMER channel 1(TIMERx(x=0)) + \arg TIMER_CH_2: TIMER channel 2(TIMERx(x=0)) + \param[in] ocnpolarity: channel complementary output polarity + only one parameter can be selected which is shown as below: + \arg TIMER_OCN_POLARITY_HIGH: channel complementary output polarity is high + \arg TIMER_OCN_POLARITY_LOW: channel complementary output polarity is low + \param[out] none + \retval none +*/ +void timer_channel_complementary_output_polarity_config(uint32_t timer_periph, uint16_t channel, uint16_t ocnpolarity) +{ + switch(channel){ + /* configure TIMER_CH_0 */ + case TIMER_CH_0: + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH0NP); + TIMER_CHCTL2(timer_periph) |= (uint32_t)ocnpolarity; + break; + /* configure TIMER_CH_1 */ + case TIMER_CH_1: + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH1NP); + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)ocnpolarity << 4U); + break; + /* configure TIMER_CH_2 */ + case TIMER_CH_2: + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH2NP); + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)ocnpolarity << 8U); + break; + default: + break; + } +} + +/*! + \brief configure TIMER channel enable state + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] channel: + only one parameter can be selected which is shown as below: + \arg TIMER_CH_0: TIMER channel 0(TIMERx(x=0..4)) + \arg TIMER_CH_1: TIMER channel 1(TIMERx(x=0..4)) + \arg TIMER_CH_2: TIMER channel 2(TIMERx(x=0..4)) + \arg TIMER_CH_3: TIMER channel 3(TIMERx(x=0..4)) + \param[in] state: TIMER channel enable state + only one parameter can be selected which is shown as below: + \arg TIMER_CCX_ENABLE: channel enable + \arg TIMER_CCX_DISABLE: channel disable + \param[out] none + \retval none +*/ +void timer_channel_output_state_config(uint32_t timer_periph, uint16_t channel, uint32_t state) +{ + switch(channel){ + /* configure TIMER_CH_0 */ + case TIMER_CH_0: + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH0EN); + TIMER_CHCTL2(timer_periph) |= (uint32_t)state; + break; + /* configure TIMER_CH_1 */ + case TIMER_CH_1: + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH1EN); + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)state << 4U); + break; + /* configure TIMER_CH_2 */ + case TIMER_CH_2: + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH2EN); + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)state << 8U); + break; + /* configure TIMER_CH_3 */ + case TIMER_CH_3: + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH3EN); + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)state << 12U); + break; + default: + break; + } +} + +/*! + \brief configure TIMER channel complementary output enable state + \param[in] timer_periph: TIMERx(x=0) + \param[in] channel: + only one parameter can be selected which is shown as below: + \arg TIMER_CH_0: TIMER channel 0 + \arg TIMER_CH_1: TIMER channel 1 + \arg TIMER_CH_2: TIMER channel 2 + \param[in] ocnstate: TIMER channel complementary output enable state + only one parameter can be selected which is shown as below: + \arg TIMER_CCXN_ENABLE: channel complementary enable + \arg TIMER_CCXN_DISABLE: channel complementary disable + \param[out] none + \retval none +*/ +void timer_channel_complementary_output_state_config(uint32_t timer_periph, uint16_t channel, uint16_t ocnstate) +{ + switch(channel){ + /* configure TIMER_CH_0 */ + case TIMER_CH_0: + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH0NEN); + TIMER_CHCTL2(timer_periph) |= (uint32_t)ocnstate; + break; + /* configure TIMER_CH_1 */ + case TIMER_CH_1: + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH1NEN); + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)ocnstate << 4U); + break; + /* configure TIMER_CH_2 */ + case TIMER_CH_2: + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH2NEN); + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)ocnstate << 8U); + break; + default: + break; + } +} + +/*! + \brief initialize TIMER channel input parameter struct with a default value + \param[in] icpara: TIMER channel intput parameter struct + \param[out] none + \retval none +*/ +void timer_channel_input_struct_para_init(timer_ic_parameter_struct* icpara) +{ + /* initialize the channel input parameter struct member with the default value */ + icpara->icpolarity = TIMER_IC_POLARITY_RISING; + icpara->icselection = TIMER_IC_SELECTION_DIRECTTI; + icpara->icprescaler = TIMER_IC_PSC_DIV1; + icpara->icfilter = 0U; +} + +/*! + \brief configure TIMER input capture parameter + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] channel: + only one parameter can be selected which is shown as below: + \arg TIMER_CH_0: TIMER channel 0(TIMERx(x=0..4)) + \arg TIMER_CH_1: TIMER channel 1(TIMERx(x=0..4)) + \arg TIMER_CH_2: TIMER channel 2(TIMERx(x=0..4)) + \arg TIMER_CH_3: TIMER channel 3(TIMERx(x=0..4)) + \param[in] icpara: TIMER channel intput parameter struct + icpolarity: TIMER_IC_POLARITY_RISING, TIMER_IC_POLARITY_FALLING, + TIMER_IC_POLARITY_BOTH_EDGE(only for TIMER1~TIMER8) + icselection: TIMER_IC_SELECTION_DIRECTTI, TIMER_IC_SELECTION_INDIRECTTI, + TIMER_IC_SELECTION_ITS + icprescaler: TIMER_IC_PSC_DIV1, TIMER_IC_PSC_DIV2, TIMER_IC_PSC_DIV4, + TIMER_IC_PSC_DIV8 + icfilter: 0~15 + \param[out] none + \retval none +*/ +void timer_input_capture_config(uint32_t timer_periph, uint16_t channel, timer_ic_parameter_struct* icpara) +{ + switch(channel){ + /* configure TIMER_CH_0 */ + case TIMER_CH_0: + /* reset the CH0EN bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH0EN); + + /* reset the CH0P and CH0NP bits */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)(TIMER_CHCTL2_CH0P | TIMER_CHCTL2_CH0NP)); + TIMER_CHCTL2(timer_periph) |= (uint32_t)(icpara->icpolarity); + /* reset the CH0MS bit */ + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH0MS); + TIMER_CHCTL0(timer_periph) |= (uint32_t)(icpara->icselection); + /* reset the CH0CAPFLT bit */ + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH0CAPFLT); + TIMER_CHCTL0(timer_periph) |= (uint32_t)((uint32_t)(icpara->icfilter) << 4U); + + /* set the CH0EN bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)TIMER_CHCTL2_CH0EN; + break; + + /* configure TIMER_CH_1 */ + case TIMER_CH_1: + /* reset the CH1EN bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH1EN); + + /* reset the CH1P and CH1NP bits */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)(TIMER_CHCTL2_CH1P | TIMER_CHCTL2_CH1NP)); + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)(icpara->icpolarity) << 4U); + /* reset the CH1MS bit */ + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH1MS); + TIMER_CHCTL0(timer_periph) |= (uint32_t)((uint32_t)(icpara->icselection) << 8U); + /* reset the CH1CAPFLT bit */ + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH1CAPFLT); + TIMER_CHCTL0(timer_periph) |= (uint32_t)((uint32_t)(icpara->icfilter) << 12U); + + /* set the CH1EN bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)TIMER_CHCTL2_CH1EN; + break; + /* configure TIMER_CH_2 */ + case TIMER_CH_2: + /* reset the CH2EN bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH2EN); + + /* reset the CH2P and CH2NP bits */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)(TIMER_CHCTL2_CH2P | TIMER_CHCTL2_CH2NP)); + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)(icpara->icpolarity) << 8U); + + /* reset the CH2MS bit */ + TIMER_CHCTL1(timer_periph) &= (~(uint32_t)TIMER_CHCTL1_CH2MS); + TIMER_CHCTL1(timer_periph) |= (uint32_t)((uint32_t)(icpara->icselection)); + + /* reset the CH2CAPFLT bit */ + TIMER_CHCTL1(timer_periph) &= (~(uint32_t)TIMER_CHCTL1_CH2CAPFLT); + TIMER_CHCTL1(timer_periph) |= (uint32_t)((uint32_t)(icpara->icfilter) << 4U); + + /* set the CH2EN bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)TIMER_CHCTL2_CH2EN; + break; + /* configure TIMER_CH_3 */ + case TIMER_CH_3: + /* reset the CH3EN bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH3EN); + + /* reset the CH3P bits */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)(TIMER_CHCTL2_CH3P)); + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)(icpara->icpolarity) << 12U); + + /* reset the CH3MS bit */ + TIMER_CHCTL1(timer_periph) &= (~(uint32_t)TIMER_CHCTL1_CH3MS); + TIMER_CHCTL1(timer_periph) |= (uint32_t)((uint32_t)(icpara->icselection) << 8U); + + /* reset the CH3CAPFLT bit */ + TIMER_CHCTL1(timer_periph) &= (~(uint32_t)TIMER_CHCTL1_CH3CAPFLT); + TIMER_CHCTL1(timer_periph) |= (uint32_t)((uint32_t)(icpara->icfilter) << 12U); + + /* set the CH3EN bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)TIMER_CHCTL2_CH3EN; + break; + default: + break; + } + /* configure TIMER channel input capture prescaler value */ + timer_channel_input_capture_prescaler_config(timer_periph, channel, (uint16_t)(icpara->icprescaler)); +} + +/*! + \brief configure TIMER channel input capture prescaler value + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] channel: + only one parameter can be selected which is shown as below: + \arg TIMER_CH_0: TIMER channel 0(TIMERx(x=0..4)) + \arg TIMER_CH_1: TIMER channel 1(TIMERx(x=0..4)) + \arg TIMER_CH_2: TIMER channel 2(TIMERx(x=0..4)) + \arg TIMER_CH_3: TIMER channel 3(TIMERx(x=0..4)) + \param[in] prescaler: channel input capture prescaler value + only one parameter can be selected which is shown as below: + \arg TIMER_IC_PSC_DIV1: no prescaler + \arg TIMER_IC_PSC_DIV2: divided by 2 + \arg TIMER_IC_PSC_DIV4: divided by 4 + \arg TIMER_IC_PSC_DIV8: divided by 8 + \param[out] none + \retval none +*/ +void timer_channel_input_capture_prescaler_config(uint32_t timer_periph, uint16_t channel, uint16_t prescaler) +{ + switch(channel){ + /* configure TIMER_CH_0 */ + case TIMER_CH_0: + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH0CAPPSC); + TIMER_CHCTL0(timer_periph) |= (uint32_t)prescaler; + break; + /* configure TIMER_CH_1 */ + case TIMER_CH_1: + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH1CAPPSC); + TIMER_CHCTL0(timer_periph) |= ((uint32_t)prescaler << 8U); + break; + /* configure TIMER_CH_2 */ + case TIMER_CH_2: + TIMER_CHCTL1(timer_periph) &= (~(uint32_t)TIMER_CHCTL1_CH2CAPPSC); + TIMER_CHCTL1(timer_periph) |= (uint32_t)prescaler; + break; + /* configure TIMER_CH_3 */ + case TIMER_CH_3: + TIMER_CHCTL1(timer_periph) &= (~(uint32_t)TIMER_CHCTL1_CH3CAPPSC); + TIMER_CHCTL1(timer_periph) |= ((uint32_t)prescaler << 8U); + break; + default: + break; + } +} + +/*! + \brief read TIMER channel capture compare register value + \param[in] timer_periph: please refer to the following parameters + \param[in] channel: + only one parameter can be selected which is shown as below: + \arg TIMER_CH_0: TIMER channel 0(TIMERx(x=0..4)) + \arg TIMER_CH_1: TIMER channel 1(TIMERx(x=0..4)) + \arg TIMER_CH_2: TIMER channel 2(TIMERx(x=0..4)) + \arg TIMER_CH_3: TIMER channel 3(TIMERx(x=0..4)) + \param[out] none + \retval channel capture compare register value +*/ +uint32_t timer_channel_capture_value_register_read(uint32_t timer_periph, uint16_t channel) +{ + uint32_t count_value = 0U; + + switch(channel){ + case TIMER_CH_0: + /* read TIMER channel 0 capture compare register value */ + count_value = TIMER_CH0CV(timer_periph); + break; + case TIMER_CH_1: + /* read TIMER channel 1 capture compare register value */ + count_value = TIMER_CH1CV(timer_periph); + break; + case TIMER_CH_2: + /* read TIMER channel 2 capture compare register value */ + count_value = TIMER_CH2CV(timer_periph); + break; + case TIMER_CH_3: + /* read TIMER channel 3 capture compare register value */ + count_value = TIMER_CH3CV(timer_periph); + break; + default: + break; + } + return (count_value); +} + +/*! + \brief configure TIMER input pwm capture function + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] channel: + only one parameter can be selected which is shown as below: + \arg TIMER_CH_0: TIMER channel 0 + \arg TIMER_CH_1: TIMER channel 1 + \param[in] icpwm: TIMER channel intput pwm parameter struct + icpolarity: TIMER_IC_POLARITY_RISING, TIMER_IC_POLARITY_FALLING + icselection: TIMER_IC_SELECTION_DIRECTTI, TIMER_IC_SELECTION_INDIRECTTI + icprescaler: TIMER_IC_PSC_DIV1, TIMER_IC_PSC_DIV2, TIMER_IC_PSC_DIV4, + TIMER_IC_PSC_DIV8 + icfilter: 0~15 + \param[out] none + \retval none +*/ +void timer_input_pwm_capture_config(uint32_t timer_periph, uint16_t channel, timer_ic_parameter_struct* icpwm) +{ + uint16_t icpolarity = 0x0U; + uint16_t icselection = 0x0U; + + /* Set channel input polarity */ + if(TIMER_IC_POLARITY_RISING == icpwm->icpolarity){ + icpolarity = TIMER_IC_POLARITY_FALLING; + }else{ + icpolarity = TIMER_IC_POLARITY_RISING; + } + /* Set channel input mode selection */ + if(TIMER_IC_SELECTION_DIRECTTI == icpwm->icselection){ + icselection = TIMER_IC_SELECTION_INDIRECTTI; + }else{ + icselection = TIMER_IC_SELECTION_DIRECTTI; + } + + if(TIMER_CH_0 == channel){ + /* reset the CH0EN bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH0EN); + /* reset the CH0P and CH0NP bits */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)(TIMER_CHCTL2_CH0P | TIMER_CHCTL2_CH0NP)); + /* set the CH0P and CH0NP bits */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)(icpwm->icpolarity); + /* reset the CH0MS bit */ + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH0MS); + /* set the CH0MS bit */ + TIMER_CHCTL0(timer_periph) |= (uint32_t)(icpwm->icselection); + /* reset the CH0CAPFLT bit */ + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH0CAPFLT); + /* set the CH0CAPFLT bit */ + TIMER_CHCTL0(timer_periph) |= ((uint32_t)(icpwm->icfilter) << 4U); + /* set the CH0EN bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)TIMER_CHCTL2_CH0EN; + /* configure TIMER channel input capture prescaler value */ + timer_channel_input_capture_prescaler_config(timer_periph, TIMER_CH_0, (uint16_t)(icpwm->icprescaler)); + + /* reset the CH1EN bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH1EN); + /* reset the CH1P and CH1NP bits */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)(TIMER_CHCTL2_CH1P | TIMER_CHCTL2_CH1NP)); + /* set the CH1P and CH1NP bits */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)icpolarity<< 4U); + /* reset the CH1MS bit */ + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH1MS); + /* set the CH1MS bit */ + TIMER_CHCTL0(timer_periph) |= (uint32_t)((uint32_t)icselection << 8U); + /* reset the CH1CAPFLT bit */ + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH1CAPFLT); + /* set the CH1CAPFLT bit */ + TIMER_CHCTL0(timer_periph) |= (uint32_t)((uint32_t)(icpwm->icfilter) << 12U); + /* set the CH1EN bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)TIMER_CHCTL2_CH1EN; + /* configure TIMER channel input capture prescaler value */ + timer_channel_input_capture_prescaler_config(timer_periph, TIMER_CH_1, (uint16_t)(icpwm->icprescaler)); + }else{ + /* reset the CH1EN bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH1EN); + /* reset the CH1P and CH1NP bits */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)(TIMER_CHCTL2_CH1P | TIMER_CHCTL2_CH1NP)); + /* set the CH1P and CH1NP bits */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)(icpwm->icpolarity) << 4U); + /* reset the CH1MS bit */ + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH1MS); + /* set the CH1MS bit */ + TIMER_CHCTL0(timer_periph) |= (uint32_t)((uint32_t)(icpwm->icselection) << 8U); + /* reset the CH1CAPFLT bit */ + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH1CAPFLT); + /* set the CH1CAPFLT bit */ + TIMER_CHCTL0(timer_periph) |= (uint32_t)((uint32_t)(icpwm->icfilter) << 12U); + /* set the CH1EN bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)TIMER_CHCTL2_CH1EN; + /* configure TIMER channel input capture prescaler value */ + timer_channel_input_capture_prescaler_config(timer_periph, TIMER_CH_1, (uint16_t)(icpwm->icprescaler)); + + /* reset the CH0EN bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH0EN); + /* reset the CH0P and CH0NP bits */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)(TIMER_CHCTL2_CH0P | TIMER_CHCTL2_CH0NP)); + /* set the CH0P and CH0NP bits */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)icpolarity; + /* reset the CH0MS bit */ + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH0MS); + /* set the CH0MS bit */ + TIMER_CHCTL0(timer_periph) |= (uint32_t)icselection; + /* reset the CH0CAPFLT bit */ + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH0CAPFLT); + /* set the CH0CAPFLT bit */ + TIMER_CHCTL0(timer_periph) |= ((uint32_t)(icpwm->icfilter) << 4U); + /* set the CH0EN bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)TIMER_CHCTL2_CH0EN; + /* configure TIMER channel input capture prescaler value */ + timer_channel_input_capture_prescaler_config(timer_periph, TIMER_CH_0, (uint16_t)(icpwm->icprescaler)); + } +} + +/*! + \brief configure TIMER hall sensor mode + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] hallmode: + only one parameter can be selected which is shown as below: + \arg TIMER_HALLINTERFACE_ENABLE: TIMER hall sensor mode enable + \arg TIMER_HALLINTERFACE_DISABLE: TIMER hall sensor mode disable + \param[out] none + \retval none +*/ +void timer_hall_mode_config(uint32_t timer_periph, uint32_t hallmode) +{ + if(TIMER_HALLINTERFACE_ENABLE == hallmode){ + TIMER_CTL1(timer_periph) |= (uint32_t)TIMER_CTL1_TI0S; + }else if(TIMER_HALLINTERFACE_DISABLE == hallmode){ + TIMER_CTL1(timer_periph) &= ~(uint32_t)TIMER_CTL1_TI0S; + }else{ + /* illegal parameters */ + } +} + +/*! + \brief select TIMER input trigger source + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] intrigger: + only one parameter can be selected which is shown as below: + \arg TIMER_SMCFG_TRGSEL_ITI0: internal trigger 0(TIMERx(x=0..4)) + \arg TIMER_SMCFG_TRGSEL_ITI1: internal trigger 1(TIMERx(x=0..4)) + \arg TIMER_SMCFG_TRGSEL_ITI2: internal trigger 2(TIMERx(x=0..4)) + \arg TIMER_SMCFG_TRGSEL_ITI3: internal trigger 3(TIMERx(x=0..4)) + \arg TIMER_SMCFG_TRGSEL_CI0F_ED: TI0 edge detector(TIMERx(x=0..4)) + \arg TIMER_SMCFG_TRGSEL_CI0FE0: filtered TIMER input 0(TIMERx(x=0..4)) + \arg TIMER_SMCFG_TRGSEL_CI1FE1: filtered TIMER input 1(TIMERx(x=0..4)) + \arg TIMER_SMCFG_TRGSEL_ETIFP: filtered external trigger input(TIMERx(x=0..4)) + \param[out] none + \retval none +*/ +void timer_input_trigger_source_select(uint32_t timer_periph, uint32_t intrigger) +{ + TIMER_SMCFG(timer_periph) &= (~(uint32_t)TIMER_SMCFG_TRGS); + TIMER_SMCFG(timer_periph) |= (uint32_t)intrigger; +} + +/*! + \brief select TIMER master mode output trigger source + \param[in] timer_periph: TIMERx(x=0..6) + \param[in] outrigger: + only one parameter can be selected which is shown as below: + \arg TIMER_TRI_OUT_SRC_RESET: the UPG bit as trigger output(TIMERx(x=0..6)) + \arg TIMER_TRI_OUT_SRC_ENABLE: the counter enable signal TIMER_CTL0_CEN as trigger output(TIMERx(x=0..6)) + \arg TIMER_TRI_OUT_SRC_UPDATE: update event as trigger output(TIMERx(x=0..6)) + \arg TIMER_TRI_OUT_SRC_CH0: a capture or a compare match occurred in channel 0 as trigger output TRGO(TIMERx(x=0..4)) + \arg TIMER_TRI_OUT_SRC_O0CPRE: O0CPRE as trigger output(TIMERx(x=0..4)) + \arg TIMER_TRI_OUT_SRC_O1CPRE: O1CPRE as trigger output(TIMERx(x=0..4)) + \arg TIMER_TRI_OUT_SRC_O2CPRE: O2CPRE as trigger output(TIMERx(x=0..4)) + \arg TIMER_TRI_OUT_SRC_O3CPRE: O3CPRE as trigger output(TIMERx(x=0..4)) + \param[out] none + \retval none +*/ +void timer_master_output_trigger_source_select(uint32_t timer_periph, uint32_t outrigger) +{ + TIMER_CTL1(timer_periph) &= (~(uint32_t)TIMER_CTL1_MMC); + TIMER_CTL1(timer_periph) |= (uint32_t)outrigger; +} + +/*! + \brief select TIMER slave mode + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] slavemode: + only one parameter can be selected which is shown as below: + \arg TIMER_SLAVE_MODE_DISABLE: slave mode disable + \arg TIMER_ENCODER_MODE0: encoder mode 0 + \arg TIMER_ENCODER_MODE1: encoder mode 1 + \arg TIMER_ENCODER_MODE2: encoder mode 2 + \arg TIMER_SLAVE_MODE_RESTART: restart mode + \arg TIMER_SLAVE_MODE_PAUSE: pause mode + \arg TIMER_SLAVE_MODE_EVENT: event mode + \arg TIMER_SLAVE_MODE_EXTERNAL0: external clock mode 0 + \param[out] none + \retval none +*/ + +void timer_slave_mode_select(uint32_t timer_periph, uint32_t slavemode) +{ + TIMER_SMCFG(timer_periph) &= (~(uint32_t)TIMER_SMCFG_SMC); + TIMER_SMCFG(timer_periph) |= (uint32_t)slavemode; +} + +/*! + \brief configure TIMER master slave mode + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] masterslave: + only one parameter can be selected which is shown as below: + \arg TIMER_MASTER_SLAVE_MODE_ENABLE: master slave mode enable + \arg TIMER_MASTER_SLAVE_MODE_DISABLE: master slave mode disable + \param[out] none + \retval none +*/ +void timer_master_slave_mode_config(uint32_t timer_periph, uint32_t masterslave) +{ + if(TIMER_MASTER_SLAVE_MODE_ENABLE == masterslave){ + TIMER_SMCFG(timer_periph) |= (uint32_t)TIMER_SMCFG_MSM; + }else if(TIMER_MASTER_SLAVE_MODE_DISABLE == masterslave){ + TIMER_SMCFG(timer_periph) &= ~(uint32_t)TIMER_SMCFG_MSM; + }else{ + /* illegal parameters */ + } +} + +/*! + \brief configure TIMER external trigger input + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] extprescaler: + only one parameter can be selected which is shown as below: + \arg TIMER_EXT_TRI_PSC_OFF: no divided + \arg TIMER_EXT_TRI_PSC_DIV2: divided by 2 + \arg TIMER_EXT_TRI_PSC_DIV4: divided by 4 + \arg TIMER_EXT_TRI_PSC_DIV8: divided by 8 + \param[in] extpolarity: + only one parameter can be selected which is shown as below: + \arg TIMER_ETP_FALLING: active low or falling edge active + \arg TIMER_ETP_RISING: active high or rising edge active + \param[in] extfilter: a value between 0 and 15 + \param[out] none + \retval none +*/ +void timer_external_trigger_config(uint32_t timer_periph, uint32_t extprescaler, uint32_t extpolarity, uint32_t extfilter) +{ + TIMER_SMCFG(timer_periph) &= (~(uint32_t)(TIMER_SMCFG_ETP | TIMER_SMCFG_ETPSC | TIMER_SMCFG_ETFC)); + TIMER_SMCFG(timer_periph) |= (uint32_t)(extprescaler | extpolarity); + TIMER_SMCFG(timer_periph) |= (uint32_t)(extfilter << 8U); +} + +/*! + \brief configure TIMER quadrature decoder mode + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] decomode: + only one parameter can be selected which is shown as below: + \arg TIMER_ENCODER_MODE0: counter counts on CI0FE0 edge depending on CI1FE1 level + \arg TIMER_ENCODER_MODE1: counter counts on CI1FE1 edge depending on CI0FE0 level + \arg TIMER_ENCODER_MODE2: counter counts on both CI0FE0 and CI1FE1 edges depending on the level of the other input + \param[in] ic0polarity: + only one parameter can be selected which is shown as below: + \arg TIMER_IC_POLARITY_RISING: capture rising edge + \arg TIMER_IC_POLARITY_FALLING: capture falling edge + \param[in] ic1polarity: + only one parameter can be selected which is shown as below: + \arg TIMER_IC_POLARITY_RISING: capture rising edge + \arg TIMER_IC_POLARITY_FALLING: capture falling edge + \param[out] none + \retval none +*/ +void timer_quadrature_decoder_mode_config(uint32_t timer_periph, uint32_t decomode, uint16_t ic0polarity, uint16_t ic1polarity) +{ + /* configure the quadrature decoder mode */ + TIMER_SMCFG(timer_periph) &= (~(uint32_t)TIMER_SMCFG_SMC); + TIMER_SMCFG(timer_periph) |= (uint32_t)decomode; + /* configure input capture selection */ + TIMER_CHCTL0(timer_periph) &= (uint32_t)(((~(uint32_t)TIMER_CHCTL0_CH0MS)) & ((~(uint32_t)TIMER_CHCTL0_CH1MS))); + TIMER_CHCTL0(timer_periph) |= (uint32_t)(TIMER_IC_SELECTION_DIRECTTI | ((uint32_t)TIMER_IC_SELECTION_DIRECTTI << 8U)); + /* configure channel input capture polarity */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)(TIMER_CHCTL2_CH0P | TIMER_CHCTL2_CH0NP)); + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)(TIMER_CHCTL2_CH1P | TIMER_CHCTL2_CH1NP)); + TIMER_CHCTL2(timer_periph) |= ((uint32_t)ic0polarity | ((uint32_t)ic1polarity << 4U)); +} + +/*! + \brief configure TIMER internal clock mode + \param[in] timer_periph: TIMERx(x=0..4) + \param[out] none + \retval none +*/ +void timer_internal_clock_config(uint32_t timer_periph) +{ + TIMER_SMCFG(timer_periph) &= ~(uint32_t)TIMER_SMCFG_SMC; +} + +/*! + \brief configure TIMER the internal trigger as external clock input + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] intrigger: + only one parameter can be selected which is shown as below: + \arg TIMER_SMCFG_TRGSEL_ITI0: internal trigger 0 + \arg TIMER_SMCFG_TRGSEL_ITI1: internal trigger 1 + \arg TIMER_SMCFG_TRGSEL_ITI2: internal trigger 2 + \arg TIMER_SMCFG_TRGSEL_ITI3: internal trigger 3 + \param[out] none + \retval none +*/ +void timer_internal_trigger_as_external_clock_config(uint32_t timer_periph, uint32_t intrigger) +{ + timer_input_trigger_source_select(timer_periph, intrigger); + TIMER_SMCFG(timer_periph) &= ~(uint32_t)TIMER_SMCFG_SMC; + TIMER_SMCFG(timer_periph) |= (uint32_t)TIMER_SLAVE_MODE_EXTERNAL0; +} + +/*! + \brief configure TIMER the external trigger as external clock input + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] extrigger: + only one parameter can be selected which is shown as below: + \arg TIMER_SMCFG_TRGSEL_CI0F_ED: TI0 edge detector + \arg TIMER_SMCFG_TRGSEL_CI0FE0: filtered TIMER input 0 + \arg TIMER_SMCFG_TRGSEL_CI1FE1: filtered TIMER input 1 + \param[in] extpolarity: + only one parameter can be selected which is shown as below: + \arg TIMER_IC_POLARITY_RISING: active low or falling edge active + \arg TIMER_IC_POLARITY_FALLING: active high or rising edge active + \param[in] extfilter: a value between 0 and 15 + \param[out] none + \retval none +*/ +void timer_external_trigger_as_external_clock_config(uint32_t timer_periph, uint32_t extrigger, uint16_t extpolarity, uint32_t extfilter) +{ + if(TIMER_SMCFG_TRGSEL_CI1FE1 == extrigger){ + /* reset the CH1EN bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH1EN); + /* reset the CH1NP bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)(TIMER_CHCTL2_CH1P | TIMER_CHCTL2_CH1NP)); + /* set the CH1NP bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)((uint32_t)extpolarity << 4U); + /* reset the CH1MS bit */ + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH1MS); + /* set the CH1MS bit */ + TIMER_CHCTL0(timer_periph) |= (uint32_t)((uint32_t)TIMER_IC_SELECTION_DIRECTTI << 8U); + /* reset the CH1CAPFLT bit */ + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH1CAPFLT); + /* set the CH1CAPFLT bit */ + TIMER_CHCTL0(timer_periph) |= (uint32_t)(extfilter << 12U); + /* set the CH1EN bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)TIMER_CHCTL2_CH1EN; + }else{ + /* reset the CH0EN bit */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)TIMER_CHCTL2_CH0EN); + /* reset the CH0P and CH0NP bits */ + TIMER_CHCTL2(timer_periph) &= (~(uint32_t)(TIMER_CHCTL2_CH0P | TIMER_CHCTL2_CH0NP)); + /* set the CH0P and CH0NP bits */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)extpolarity; + /* reset the CH0MS bit */ + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH0MS); + /* set the CH0MS bit */ + TIMER_CHCTL0(timer_periph) |= (uint32_t)TIMER_IC_SELECTION_DIRECTTI; + /* reset the CH0CAPFLT bit */ + TIMER_CHCTL0(timer_periph) &= (~(uint32_t)TIMER_CHCTL0_CH0CAPFLT); + /* reset the CH0CAPFLT bit */ + TIMER_CHCTL0(timer_periph) |= (uint32_t)(extfilter << 4U); + /* set the CH0EN bit */ + TIMER_CHCTL2(timer_periph) |= (uint32_t)TIMER_CHCTL2_CH0EN; + } + /* select TIMER input trigger source */ + timer_input_trigger_source_select(timer_periph, extrigger); + /* reset the SMC bit */ + TIMER_SMCFG(timer_periph) &= (~(uint32_t)TIMER_SMCFG_SMC); + /* set the SMC bit */ + TIMER_SMCFG(timer_periph) |= (uint32_t)TIMER_SLAVE_MODE_EXTERNAL0; +} + +/*! + \brief configure TIMER the external clock mode0 + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] extprescaler: + only one parameter can be selected which is shown as below: + \arg TIMER_EXT_TRI_PSC_OFF: no divided + \arg TIMER_EXT_TRI_PSC_DIV2: divided by 2 + \arg TIMER_EXT_TRI_PSC_DIV4: divided by 4 + \arg TIMER_EXT_TRI_PSC_DIV8: divided by 8 + \param[in] extpolarity: + only one parameter can be selected which is shown as below: + \arg TIMER_ETP_FALLING: active low or falling edge active + \arg TIMER_ETP_RISING: active high or rising edge active + \param[in] extfilter: a value between 0 and 15 + \param[out] none + \retval none +*/ +void timer_external_clock_mode0_config(uint32_t timer_periph, uint32_t extprescaler, uint32_t extpolarity, uint32_t extfilter) +{ + /* configure TIMER external trigger input */ + timer_external_trigger_config(timer_periph, extprescaler, extpolarity, extfilter); + /* reset the SMC bit,TRGS bit */ + TIMER_SMCFG(timer_periph) &= (~(uint32_t)(TIMER_SMCFG_SMC | TIMER_SMCFG_TRGS)); + /* set the SMC bit,TRGS bit */ + TIMER_SMCFG(timer_periph) |= (uint32_t)(TIMER_SLAVE_MODE_EXTERNAL0 | TIMER_SMCFG_TRGSEL_ETIFP); +} + +/*! + \brief configure TIMER the external clock mode1 + \param[in] timer_periph: TIMERx(x=0..4) + \param[in] extprescaler: + only one parameter can be selected which is shown as below: + \arg TIMER_EXT_TRI_PSC_OFF: no divided + \arg TIMER_EXT_TRI_PSC_DIV2: divided by 2 + \arg TIMER_EXT_TRI_PSC_DIV4: divided by 4 + \arg TIMER_EXT_TRI_PSC_DIV8: divided by 8 + \param[in] extpolarity: + only one parameter can be selected which is shown as below: + \arg TIMER_ETP_FALLING: active low or falling edge active + \arg TIMER_ETP_RISING: active high or rising edge active + \param[in] extfilter: a value between 0 and 15 + \param[out] none + \retval none +*/ +void timer_external_clock_mode1_config(uint32_t timer_periph, uint32_t extprescaler, uint32_t extpolarity, uint32_t extfilter) +{ + /* configure TIMER external trigger input */ + timer_external_trigger_config(timer_periph, extprescaler, extpolarity, extfilter); + TIMER_SMCFG(timer_periph) |= (uint32_t)TIMER_SMCFG_SMC1; +} + +/*! + \brief disable TIMER the external clock mode1 + \param[in] timer_periph: TIMERx(x=0..4) + \param[out] none + \retval none +*/ +void timer_external_clock_mode1_disable(uint32_t timer_periph) +{ + TIMER_SMCFG(timer_periph) &= ~(uint32_t)TIMER_SMCFG_SMC1; +} + +/*! + \brief enable the TIMER interrupt + \param[in] timer_periph: please refer to the following parameters + \param[in] interrupt: specify which interrupt to enable + one or more parameters can be selected which are shown as below: + \arg TIMER_INT_UP: update interrupt enable, TIMERx(x=0..6) + \arg TIMER_INT_CH0: channel 0 interrupt enable, TIMERx(x=0..4) + \arg TIMER_INT_CH1: channel 1 interrupt enable, TIMERx(x=0..4) + \arg TIMER_INT_CH2: channel 2 interrupt enable, TIMERx(x=0..4) + \arg TIMER_INT_CH3: channel 3 interrupt enable, TIMERx(x=0..4) + \arg TIMER_INT_CMT: commutation interrupt enable, TIMERx(x=0) + \arg TIMER_INT_TRG: trigger interrupt enable, TIMERx(x=0..4) + \arg TIMER_INT_BRK: break interrupt enable, TIMERx(x=0) + \param[out] none + \retval none +*/ +void timer_interrupt_enable(uint32_t timer_periph, uint32_t interrupt) +{ + TIMER_DMAINTEN(timer_periph) |= (uint32_t) interrupt; +} + +/*! + \brief disable the TIMER interrupt + \param[in] timer_periph: TIMERx(x=0..6) + \param[in] interrupt: specify which interrupt to disbale + one or more parameters can be selected which are shown as below: + \arg TIMER_INT_UP: update interrupt enable, TIMERx(x=0..6) + \arg TIMER_INT_CH0: channel 0 interrupt enable, TIMERx(x=0..4) + \arg TIMER_INT_CH1: channel 1 interrupt enable, TIMERx(x=0..4) + \arg TIMER_INT_CH2: channel 2 interrupt enable, TIMERx(x=0..4) + \arg TIMER_INT_CH3: channel 3 interrupt enable , TIMERx(x=0..4) + \arg TIMER_INT_CMT: commutation interrupt enable, TIMERx(x=0) + \arg TIMER_INT_TRG: trigger interrupt enable, TIMERx(x=0..4) + \arg TIMER_INT_BRK: break interrupt enable, TIMERx(x=0) + \param[out] none + \retval none +*/ +void timer_interrupt_disable(uint32_t timer_periph, uint32_t interrupt) +{ + TIMER_DMAINTEN(timer_periph) &= (~(uint32_t)interrupt); +} + +/*! + \brief get timer interrupt flag + \param[in] timer_periph: TIMERx(x=0..6) + \param[in] interrupt: the timer interrupt bits + only one parameter can be selected which is shown as below: + \arg TIMER_INT_FLAG_UP: update interrupt flag, TIMERx(x=0..6) + \arg TIMER_INT_FLAG_CH0: channel 0 interrupt flag, TIMERx(x=0..4) + \arg TIMER_INT_FLAG_CH1: channel 1 interrupt flag, TIMERx(x=0..4) + \arg TIMER_INT_FLAG_CH2: channel 2 interrupt flag, TIMERx(x=0..4) + \arg TIMER_INT_FLAG_CH3: channel 3 interrupt flag, TIMERx(x=0..4) + \arg TIMER_INT_FLAG_CMT: channel commutation interrupt flag, TIMERx(x=0) + \arg TIMER_INT_FLAG_TRG: trigger interrupt flag, TIMERx(x=0) + \arg TIMER_INT_FLAG_BRK: break interrupt flag, TIMERx(x=0) + \param[out] none + \retval FlagStatus: SET or RESET +*/ +FlagStatus timer_interrupt_flag_get(uint32_t timer_periph, uint32_t interrupt) +{ + uint32_t val; + val = (TIMER_DMAINTEN(timer_periph) & interrupt); + if((RESET != (TIMER_INTF(timer_periph) & interrupt)) && (RESET != val)){ + return SET; + }else{ + return RESET; + } +} + +/*! + \brief clear TIMER interrupt flag + \param[in] timer_periph: TIMERx(x=0..6) + \param[in] interrupt: the timer interrupt bits + one or more parameters can be selected which are shown as below: + \arg TIMER_INT_FLAG_UP: update interrupt flag, TIMERx(x=0..6) + \arg TIMER_INT_FLAG_CH0: channel 0 interrupt flag, TIMERx(x=0..4) + \arg TIMER_INT_FLAG_CH1: channel 1 interrupt flag, TIMERx(x=0..4) + \arg TIMER_INT_FLAG_CH2: channel 2 interrupt flag, TIMERx(x=0..4) + \arg TIMER_INT_FLAG_CH3: channel 3 interrupt flag, TIMERx(x=0..4) + \arg TIMER_INT_FLAG_CMT: channel commutation interrupt flag, TIMERx(x=0) + \arg TIMER_INT_FLAG_TRG: trigger interrupt flag, TIMERx(x=0..4) + \arg TIMER_INT_FLAG_BRK: break interrupt flag, TIMERx(x=0) + \param[out] none + \retval none +*/ +void timer_interrupt_flag_clear(uint32_t timer_periph, uint32_t interrupt) +{ + TIMER_INTF(timer_periph) = (~(uint32_t)interrupt); +} + +/*! + \brief get TIMER flags + \param[in] timer_periph: TIMERx(x=0..6) + \param[in] flag: the timer interrupt flags + only one parameter can be selected which is shown as below: + \arg TIMER_FLAG_UP: update flag, TIMERx(x=0..6) + \arg TIMER_FLAG_CH0: channel 0 flag, TIMERx(x=0..4) + \arg TIMER_FLAG_CH1: channel 1 flag, TIMERx(x=0..4) + \arg TIMER_FLAG_CH2: channel 2 flag, TIMERx(x=0..4) + \arg TIMER_FLAG_CH3: channel 3 flag, TIMERx(x=0..4) + \arg TIMER_FLAG_CMT: channel commutation flag, TIMERx(x=0) + \arg TIMER_FLAG_TRG: trigger flag, TIMERx(x=0..4) + \arg TIMER_FLAG_BRK: break flag, TIMERx(x=0) + \arg TIMER_FLAG_CH0O: channel 0 overcapture flag, TIMERx(x=0..4) + \arg TIMER_FLAG_CH1O: channel 1 overcapture flag, TIMERx(x=0..4) + \arg TIMER_FLAG_CH2O: channel 2 overcapture flag, TIMERx(x=0..4) + \arg TIMER_FLAG_CH3O: channel 3 overcapture flag, TIMERx(x=0..4) + \param[out] none + \retval FlagStatus: SET or RESET +*/ +FlagStatus timer_flag_get(uint32_t timer_periph, uint32_t flag) +{ + if(RESET != (TIMER_INTF(timer_periph) & flag)){ + return SET; + }else{ + return RESET; + } +} + +/*! + \brief clear TIMER flags + \param[in] timer_periph: TIMERx(x=0..6) + \param[in] flag: the timer interrupt flags + one or more parameters can be selected which are shown as below: + \arg TIMER_FLAG_UP: update flag, TIMERx(x=0..6) + \arg TIMER_FLAG_CH0: channel 0 flag, TIMERx(x=0..4) + \arg TIMER_FLAG_CH1: channel 1 flag, TIMERx(x=0..4) + \arg TIMER_FLAG_CH2: channel 2 flag, TIMERx(x=0..4) + \arg TIMER_FLAG_CH3: channel 3 flag, TIMERx(x=0..4) + \arg TIMER_FLAG_CMT: channel commutation flag, TIMERx(x=0) + \arg TIMER_FLAG_TRG: trigger flag, TIMERx(x=0..4) + \arg TIMER_FLAG_BRK: break flag, TIMERx(x=0) + \arg TIMER_FLAG_CH0O: channel 0 overcapture flag, TIMERx(x=0..4) + \arg TIMER_FLAG_CH1O: channel 1 overcapture flag, TIMERx(x=0..4) + \arg TIMER_FLAG_CH2O: channel 2 overcapture flag, TIMERx(x=0..4) + \arg TIMER_FLAG_CH3O: channel 3 overcapture flag, TIMERx(x=0..4) + \param[out] none + \retval none +*/ +void timer_flag_clear(uint32_t timer_periph, uint32_t flag) +{ + TIMER_INTF(timer_periph) = (~(uint32_t)flag); +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_usart.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_usart.c new file mode 100644 index 0000000000..e30e26f8aa --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_usart.c @@ -0,0 +1,766 @@ +/*! + \file gd32vf103_usart.c + \brief USART driver + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2019-09-18, V1.0.1, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "gd32vf103_usart.h" + +/*! + \brief reset USART/UART + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[out] none + \retval none +*/ +void usart_deinit(uint32_t usart_periph) +{ + switch(usart_periph){ + case USART0: + /* reset USART0 */ + rcu_periph_reset_enable(RCU_USART0RST); + rcu_periph_reset_disable(RCU_USART0RST); + break; + case USART1: + /* reset USART1 */ + rcu_periph_reset_enable(RCU_USART1RST); + rcu_periph_reset_disable(RCU_USART1RST); + break; + case USART2: + /* reset USART2 */ + rcu_periph_reset_enable(RCU_USART2RST); + rcu_periph_reset_disable(RCU_USART2RST); + break; + case UART3: + /* reset UART3 */ + rcu_periph_reset_enable(RCU_UART3RST); + rcu_periph_reset_disable(RCU_UART3RST); + break; + case UART4: + /* reset UART4 */ + rcu_periph_reset_enable(RCU_UART4RST); + rcu_periph_reset_disable(RCU_UART4RST); + break; + default: + break; + } +} + +/*! + \brief configure USART baud rate value + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[in] baudval: baud rate value + \param[out] none + \retval none +*/ +void usart_baudrate_set(uint32_t usart_periph, uint32_t baudval) +{ + uint32_t uclk=0U, intdiv=0U, fradiv=0U, udiv=0U; + switch(usart_periph){ + /* get clock frequency */ + case USART0: + /* get USART0 clock */ + uclk=rcu_clock_freq_get(CK_APB2); + break; + case USART1: + /* get USART1 clock */ + uclk=rcu_clock_freq_get(CK_APB1); + break; + case USART2: + /* get USART2 clock */ + uclk=rcu_clock_freq_get(CK_APB1); + break; + case UART3: + /* get UART3 clock */ + uclk=rcu_clock_freq_get(CK_APB1); + break; + case UART4: + /* get UART4 clock */ + uclk=rcu_clock_freq_get(CK_APB1); + break; + default: + break; + } + /* oversampling by 16, configure the value of USART_BAUD */ + udiv = (uclk+baudval/2U)/baudval; + intdiv = udiv & (0x0000fff0U); + fradiv = udiv & (0x0000000fU); + USART_BAUD(usart_periph) = ((USART_BAUD_FRADIV | USART_BAUD_INTDIV) & (intdiv | fradiv)); +} + +/*! + \brief configure USART parity + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[in] paritycfg: configure USART parity + only one parameter can be selected which is shown as below: + \arg USART_PM_NONE: no parity + \arg USART_PM_ODD: odd parity + \arg USART_PM_EVEN: even parity + \param[out] none + \retval none +*/ +void usart_parity_config(uint32_t usart_periph, uint32_t paritycfg) +{ + /* clear USART_CTL0 PM,PCEN bits */ + USART_CTL0(usart_periph) &= ~(USART_CTL0_PM | USART_CTL0_PCEN); + /* configure USART parity mode */ + USART_CTL0(usart_periph) |= paritycfg ; +} + +/*! + \brief configure USART word length + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[in] wlen: USART word length configure + only one parameter can be selected which is shown as below: + \arg USART_WL_8BIT: 8 bits + \arg USART_WL_9BIT: 9 bits + \param[out] none + \retval none +*/ +void usart_word_length_set(uint32_t usart_periph, uint32_t wlen) +{ + /* clear USART_CTL0 WL bit */ + USART_CTL0(usart_periph) &= ~USART_CTL0_WL; + /* configure USART word length */ + USART_CTL0(usart_periph) |= wlen; +} + +/*! + \brief configure USART stop bit length + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[in] stblen: USART stop bit configure + only one parameter can be selected which is shown as below: + \arg USART_STB_1BIT: 1 bit + \arg USART_STB_0_5BIT: 0.5 bit, not available for UARTx(x=3,4) + \arg USART_STB_2BIT: 2 bits + \arg USART_STB_1_5BIT: 1.5 bits, not available for UARTx(x=3,4) + \param[out] none + \retval none +*/ +void usart_stop_bit_set(uint32_t usart_periph, uint32_t stblen) +{ + /* clear USART_CTL1 STB bits */ + USART_CTL1(usart_periph) &= ~USART_CTL1_STB; + /* configure USART stop bits */ + USART_CTL1(usart_periph) |= stblen; +} + +/*! + \brief enable USART + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[out] none + \retval none +*/ +void usart_enable(uint32_t usart_periph) +{ + USART_CTL0(usart_periph) |= USART_CTL0_UEN; +} + +/*! + \brief disable USART + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[out] none + \retval none +*/ +void usart_disable(uint32_t usart_periph) +{ + USART_CTL0(usart_periph) &= ~(USART_CTL0_UEN); +} + +/*! + \brief configure USART transmitter + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[in] txconfig: enable or disable USART transmitter + only one parameter can be selected which is shown as below: + \arg USART_TRANSMIT_ENABLE: enable USART transmission + \arg USART_TRANSMIT_DISABLE: disable USART transmission + \param[out] none + \retval none +*/ +void usart_transmit_config(uint32_t usart_periph, uint32_t txconfig) +{ + uint32_t ctl = 0U; + + ctl = USART_CTL0(usart_periph); + ctl &= ~USART_CTL0_TEN; + ctl |= txconfig; + /* configure transfer mode */ + USART_CTL0(usart_periph) = ctl; +} + +/*! + \brief configure USART receiver + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[in] rxconfig: enable or disable USART receiver + only one parameter can be selected which is shown as below: + \arg USART_RECEIVE_ENABLE: enable USART reception + \arg USART_RECEIVE_DISABLE: disable USART reception + \param[out] none + \retval none +*/ +void usart_receive_config(uint32_t usart_periph, uint32_t rxconfig) +{ + uint32_t ctl = 0U; + + ctl = USART_CTL0(usart_periph); + ctl &= ~USART_CTL0_REN; + ctl |= rxconfig; + /* configure receiver mode */ + USART_CTL0(usart_periph) = ctl; +} + +/*! + \brief USART transmit data function + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[in] data: data of transmission + \param[out] none + \retval none +*/ +void usart_data_transmit(uint32_t usart_periph, uint32_t data) +{ + USART_DATA(usart_periph) = USART_DATA_DATA & data; +} + +/*! + \brief USART receive data function + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[out] none + \retval data of received +*/ +uint16_t usart_data_receive(uint32_t usart_periph) +{ + return (uint16_t)(GET_BITS(USART_DATA(usart_periph), 0U, 8U)); +} + +/*! + \brief configure the address of the USART in wake up by address match mode + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[in] addr: address of USART/UART + \param[out] none + \retval none +*/ +void usart_address_config(uint32_t usart_periph, uint8_t addr) +{ + USART_CTL1(usart_periph) &= ~(USART_CTL1_ADDR); + USART_CTL1(usart_periph) |= (USART_CTL1_ADDR & addr); +} + +/*! + \brief receiver in mute mode + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[out] none + \retval none +*/ +void usart_mute_mode_enable(uint32_t usart_periph) +{ + USART_CTL0(usart_periph) |= USART_CTL0_RWU; +} + +/*! + \brief receiver in active mode + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[out] none + \retval none +*/ +void usart_mute_mode_disable(uint32_t usart_periph) +{ + USART_CTL0(usart_periph) &= ~(USART_CTL0_RWU); +} + +/*! + \brief configure wakeup method in mute mode + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[in] wmethod: two methods be used to enter or exit the mute mode + only one parameter can be selected which is shown as below: + \arg USART_WM_IDLE: idle line + \arg USART_WM_ADDR: address mask + \param[out] none + \retval none +*/ +void usart_mute_mode_wakeup_config(uint32_t usart_periph, uint32_t wmethod) +{ + USART_CTL0(usart_periph) &= ~(USART_CTL0_WM); + USART_CTL0(usart_periph) |= wmethod; +} + +/*! + \brief enable LIN mode + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[out] none + \retval none +*/ +void usart_lin_mode_enable(uint32_t usart_periph) +{ + USART_CTL1(usart_periph) |= USART_CTL1_LMEN; +} + +/*! + \brief disable LIN mode + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[out] none + \retval none +*/ +void usart_lin_mode_disable(uint32_t usart_periph) +{ + USART_CTL1(usart_periph) &= ~(USART_CTL1_LMEN); +} + +/*! + \brief configure lin break frame length + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[in] lblen: lin break frame length + only one parameter can be selected which is shown as below: + \arg USART_LBLEN_10B: 10 bits + \arg USART_LBLEN_11B: 11 bits + \param[out] none + \retval none +*/ +void usart_lin_break_detection_length_config(uint32_t usart_periph, uint32_t lblen) +{ + USART_CTL1(usart_periph) &= ~(USART_CTL1_LBLEN); + USART_CTL1(usart_periph) |= (USART_CTL1_LBLEN & lblen); +} + +/*! + \brief send break frame + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[out] none + \retval none +*/ +void usart_send_break(uint32_t usart_periph) +{ + USART_CTL0(usart_periph) |= USART_CTL0_SBKCMD; +} + +/*! + \brief enable half duplex mode + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[out] none + \retval none +*/ +void usart_halfduplex_enable(uint32_t usart_periph) +{ + USART_CTL2(usart_periph) |= USART_CTL2_HDEN; +} + +/*! + \brief disable half duplex mode + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[out] none + \retval none +*/ +void usart_halfduplex_disable(uint32_t usart_periph) +{ + USART_CTL2(usart_periph) &= ~(USART_CTL2_HDEN); +} + +/*! + \brief enable CK pin in synchronous mode + \param[in] usart_periph: USARTx(x=0,1,2) + \param[out] none + \retval none +*/ +void usart_synchronous_clock_enable(uint32_t usart_periph) +{ + USART_CTL1(usart_periph) |= USART_CTL1_CKEN; +} + +/*! + \brief disable CK pin in synchronous mode + \param[in] usart_periph: USARTx(x=0,1,2) + \param[out] none + \retval none +*/ +void usart_synchronous_clock_disable(uint32_t usart_periph) +{ + USART_CTL1(usart_periph) &= ~(USART_CTL1_CKEN); +} + +/*! + \brief configure USART synchronous mode parameters + \param[in] usart_periph: USARTx(x=0,1,2) + \param[in] clen: CK length + only one parameter can be selected which is shown as below: + \arg USART_CLEN_NONE: there are 7 CK pulses for an 8 bit frame and 8 CK pulses for a 9 bit frame + \arg USART_CLEN_EN: there are 8 CK pulses for an 8 bit frame and 9 CK pulses for a 9 bit frame + \param[in] cph: clock phase + only one parameter can be selected which is shown as below: + \arg USART_CPH_1CK: first clock transition is the first data capture edge + \arg USART_CPH_2CK: second clock transition is the first data capture edge + \param[in] cpl: clock polarity + only one parameter can be selected which is shown as below: + \arg USART_CPL_LOW: steady low value on CK pin + \arg USART_CPL_HIGH: steady high value on CK pin + \param[out] none + \retval none +*/ +void usart_synchronous_clock_config(uint32_t usart_periph, uint32_t clen, uint32_t cph, uint32_t cpl) +{ + uint32_t ctl = 0U; + + /* read USART_CTL1 register */ + ctl = USART_CTL1(usart_periph); + ctl &= ~(USART_CTL1_CLEN | USART_CTL1_CPH | USART_CTL1_CPL); + /* set CK length, CK phase, CK polarity */ + ctl |= (USART_CTL1_CLEN & clen) | (USART_CTL1_CPH & cph) | (USART_CTL1_CPL & cpl); + + USART_CTL1(usart_periph) = ctl; +} + +/*! + \brief configure guard time value in smartcard mode + \param[in] usart_periph: USARTx(x=0,1,2) + \param[in] gaut: guard time value + \param[out] none + \retval none +*/ +void usart_guard_time_config(uint32_t usart_periph,uint32_t gaut) +{ + USART_GP(usart_periph) &= ~(USART_GP_GUAT); + USART_GP(usart_periph) |= (USART_GP_GUAT & ((gaut)<<8)); +} + +/*! + \brief enable smartcard mode + \param[in] usart_periph: USARTx(x=0,1,2) + \param[out] none + \retval none +*/ +void usart_smartcard_mode_enable(uint32_t usart_periph) +{ + USART_CTL2(usart_periph) |= USART_CTL2_SCEN; +} + +/*! + \brief disable smartcard mode + \param[in] usart_periph: USARTx(x=0,1,2) + \param[out] none + \retval none +*/ +void usart_smartcard_mode_disable(uint32_t usart_periph) +{ + USART_CTL2(usart_periph) &= ~(USART_CTL2_SCEN); +} + +/*! + \brief enable NACK in smartcard mode + \param[in] usart_periph: USARTx(x=0,1,2) + \param[out] none + \retval none +*/ +void usart_smartcard_mode_nack_enable(uint32_t usart_periph) +{ + USART_CTL2(usart_periph) |= USART_CTL2_NKEN; +} + +/*! + \brief disable NACK in smartcard mode + \param[in] usart_periph: USARTx(x=0,1,2) + \param[out] none + \retval none +*/ +void usart_smartcard_mode_nack_disable(uint32_t usart_periph) +{ + USART_CTL2(usart_periph) &= ~(USART_CTL2_NKEN); +} + +/*! + \brief enable IrDA mode + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[out] none + \retval none +*/ +void usart_irda_mode_enable(uint32_t usart_periph) +{ + USART_CTL2(usart_periph) |= USART_CTL2_IREN; +} + +/*! + \brief disable IrDA mode + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[out] none + \retval none +*/ +void usart_irda_mode_disable(uint32_t usart_periph) +{ + USART_CTL2(usart_periph) &= ~(USART_CTL2_IREN); +} + +/*! + \brief configure the peripheral clock prescaler in USART IrDA low-power mode + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[in] psc: 0x00-0xFF + \param[out] none + \retval none +*/ +void usart_prescaler_config(uint32_t usart_periph, uint8_t psc) +{ + USART_GP(usart_periph) &= ~(USART_GP_PSC); + USART_GP(usart_periph) |= psc; +} + +/*! + \brief configure IrDA low-power + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[in] irlp: IrDA low-power or normal + only one parameter can be selected which is shown as below: + \arg USART_IRLP_LOW: low-power + \arg USART_IRLP_NORMAL: normal + \param[out] none + \retval none +*/ +void usart_irda_lowpower_config(uint32_t usart_periph, uint32_t irlp) +{ + USART_CTL2(usart_periph) &= ~(USART_CTL2_IRLP); + USART_CTL2(usart_periph) |= (USART_CTL2_IRLP & irlp); +} + +/*! + \brief configure hardware flow control RTS + \param[in] usart_periph: USARTx(x=0,1,2) + \param[in] rtsconfig: enable or disable RTS + only one parameter can be selected which is shown as below: + \arg USART_RTS_ENABLE: enable RTS + \arg USART_RTS_DISABLE: disable RTS + \param[out] none + \retval none +*/ +void usart_hardware_flow_rts_config(uint32_t usart_periph, uint32_t rtsconfig) +{ + uint32_t ctl = 0U; + + ctl = USART_CTL2(usart_periph); + ctl &= ~USART_CTL2_RTSEN; + ctl |= rtsconfig; + /* configure RTS */ + USART_CTL2(usart_periph) = ctl; +} + +/*! + \brief configure hardware flow control CTS + \param[in] usart_periph: USARTx(x=0,1,2) + \param[in] ctsconfig: enable or disable CTS + only one parameter can be selected which is shown as below: + \arg USART_CTS_ENABLE: enable CTS + \arg USART_CTS_DISABLE: disable CTS + \param[out] none + \retval none +*/ +void usart_hardware_flow_cts_config(uint32_t usart_periph, uint32_t ctsconfig) +{ + uint32_t ctl = 0U; + + ctl = USART_CTL2(usart_periph); + ctl &= ~USART_CTL2_CTSEN; + ctl |= ctsconfig; + /* configure CTS */ + USART_CTL2(usart_periph) = ctl; +} + +/*! + \brief configure USART DMA reception + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3) + \param[in] dmacmd: enable or disable DMA for reception + only one parameter can be selected which is shown as below: + \arg USART_DENR_ENABLE: DMA enable for reception + \arg USART_DENR_DISABLE: DMA disable for reception + \param[out] none + \retval none +*/ +void usart_dma_receive_config(uint32_t usart_periph, uint32_t dmacmd) +{ + uint32_t ctl = 0U; + + ctl = USART_CTL2(usart_periph); + ctl &= ~USART_CTL2_DENR; + ctl |= dmacmd; + /* configure DMA reception */ + USART_CTL2(usart_periph) = ctl; +} + +/*! + \brief configure USART DMA transmission + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3) + \param[in] dmacmd: enable or disable DMA for transmission + only one parameter can be selected which is shown as below: + \arg USART_DENT_ENABLE: DMA enable for transmission + \arg USART_DENT_DISABLE: DMA disable for transmission + \param[out] none + \retval none +*/ +void usart_dma_transmit_config(uint32_t usart_periph, uint32_t dmacmd) +{ + uint32_t ctl = 0U; + + ctl = USART_CTL2(usart_periph); + ctl &= ~USART_CTL2_DENT; + ctl |= dmacmd; + /* configure DMA transmission */ + USART_CTL2(usart_periph) = ctl; +} + +/*! + \brief get flag in STAT register + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[in] flag: USART flags, refer to usart_flag_enum + only one parameter can be selected which is shown as below: + \arg USART_FLAG_CTS: CTS change flag + \arg USART_FLAG_LBD: LIN break detected flag + \arg USART_FLAG_TBE: transmit data buffer empty + \arg USART_FLAG_TC: transmission complete + \arg USART_FLAG_RBNE: read data buffer not empty + \arg USART_FLAG_IDLE: IDLE frame detected flag + \arg USART_FLAG_ORERR: overrun error + \arg USART_FLAG_NERR: noise error flag + \arg USART_FLAG_FERR: frame error flag + \arg USART_FLAG_PERR: parity error flag + \param[out] none + \retval FlagStatus: SET or RESET +*/ +FlagStatus usart_flag_get(uint32_t usart_periph, usart_flag_enum flag) +{ + if(RESET != (USART_REG_VAL(usart_periph, flag) & BIT(USART_BIT_POS(flag)))){ + return SET; + }else{ + return RESET; + } +} + +/*! + \brief clear flag in STAT register + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[in] flag: USART flags, refer to usart_flag_enum + only one parameter can be selected which is shown as below: + \arg USART_FLAG_CTS: CTS change flag + \arg USART_FLAG_LBD: LIN break detected flag + \arg USART_FLAG_TC: transmission complete + \arg USART_FLAG_RBNE: read data buffer not empty + \param[out] none + \retval none +*/ +void usart_flag_clear(uint32_t usart_periph, usart_flag_enum flag) +{ + USART_REG_VAL(usart_periph, flag) &= ~BIT(USART_BIT_POS(flag)); +} + +/*! + \brief enable USART interrupt + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[in] interrupt + only one parameter can be selected which is shown as below: + \arg USART_INT_PERR: parity error interrupt + \arg USART_INT_TBE: transmitter buffer empty interrupt + \arg USART_INT_TC: transmission complete interrupt + \arg USART_INT_RBNE: read data buffer not empty interrupt and overrun error interrupt + \arg USART_INT_IDLE: IDLE line detected interrupt + \arg USART_INT_LBD: LIN break detected interrupt + \arg USART_INT_ERR: error interrupt + \arg USART_INT_CTS: CTS interrupt + \param[out] none + \retval none +*/ +void usart_interrupt_enable(uint32_t usart_periph, uint32_t interrupt) +{ + USART_REG_VAL(usart_periph, interrupt) |= BIT(USART_BIT_POS(interrupt)); +} + +/*! + \brief disable USART interrupt + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[in] interrupt + only one parameter can be selected which is shown as below: + \arg USART_INT_PERR: parity error interrupt + \arg USART_INT_TBE: transmitter buffer empty interrupt + \arg USART_INT_TC: transmission complete interrupt + \arg USART_INT_RBNE: read data buffer not empty interrupt and overrun error interrupt + \arg USART_INT_IDLE: IDLE line detected interrupt + \arg USART_INT_LBD: LIN break detected interrupt + \arg USART_INT_ERR: error interrupt + \arg USART_INT_CTS: CTS interrupt + \param[out] none + \retval none +*/ +void usart_interrupt_disable(uint32_t usart_periph, uint32_t interrupt) +{ + USART_REG_VAL(usart_periph, interrupt) &= ~BIT(USART_BIT_POS(interrupt)); +} + +/*! + \brief get USART interrupt and flag status + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[in] int_flag + only one parameter can be selected which is shown as below: + \arg USART_INT_FLAG_PERR: parity error interrupt and flag + \arg USART_INT_FLAG_TBE: transmitter buffer empty interrupt and flag + \arg USART_INT_FLAG_TC: transmission complete interrupt and flag + \arg USART_INT_FLAG_RBNE: read data buffer not empty interrupt and flag + \arg USART_INT_FLAG_RBNE_ORERR: read data buffer not empty interrupt and overrun error flag + \arg USART_INT_FLAG_IDLE: IDLE line detected interrupt and flag + \arg USART_INT_FLAG_LBD: LIN break detected interrupt and flag + \arg USART_INT_FLAG_CTS: CTS interrupt and flag + \arg USART_INT_FLAG_ERR_ORERR: error interrupt and overrun error + \arg USART_INT_FLAG_ERR_NERR: error interrupt and noise error flag + \arg USART_INT_FLAG_ERR_FERR: error interrupt and frame error flag + \param[out] none + \retval FlagStatus: SET or RESET +*/ +FlagStatus usart_interrupt_flag_get(uint32_t usart_periph, uint32_t int_flag) +{ + uint32_t intenable = 0U, flagstatus = 0U; + /* get the interrupt enable bit status */ + intenable = (USART_REG_VAL(usart_periph, int_flag) & BIT(USART_BIT_POS(int_flag))); + /* get the corresponding flag bit status */ + flagstatus = (USART_REG_VAL2(usart_periph, int_flag) & BIT(USART_BIT_POS2(int_flag))); + + if(flagstatus && intenable){ + return SET; + }else{ + return RESET; + } +} + +/*! + \brief clear USART interrupt flag in STAT register + \param[in] usart_periph: USARTx(x=0,1,2)/UARTx(x=3,4) + \param[in] int_flag: USART interrupt flag + only one parameter can be selected which is shown as below: + \arg USART_INT_FLAG_CTS: CTS change flag + \arg USART_INT_FLAG_LBD: LIN break detected flag + \arg USART_INT_FLAG_TC: transmission complete + \arg USART_INT_FLAG_RBNE: read data buffer not empty + \param[out] none + \retval none +*/ +void usart_interrupt_flag_clear(uint32_t usart_periph, uint32_t int_flag) +{ + USART_REG_VAL2(usart_periph, int_flag) &= ~BIT(USART_BIT_POS2(int_flag)); +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_usart.s b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_usart.s new file mode 100644 index 0000000000..096f2cdf4b --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_usart.s @@ -0,0 +1,20500 @@ + .file "gd32vf103_usart.c" + .option nopic + .text +.Ltext0: + .cfi_sections .debug_frame + .align 1 + .globl usart_deinit + .type usart_deinit, @function +usart_deinit: +.LFB2: + .file 1 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Source\\gd32vf103_usart.c" + .loc 1 46 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw ra,28(sp) + sw s0,24(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 47 5 + lw a4,-20(s0) + li a5,1073823744 + addi a5,a5,-2048 + beq a4,a5,.L2 + lw a4,-20(s0) + li a5,1073823744 + addi a5,a5,-2048 + bgtu a4,a5,.L9 + lw a4,-20(s0) + li a5,1073762304 + beq a4,a5,.L4 + lw a4,-20(s0) + li a5,1073762304 + bgtu a4,a5,.L9 + lw a4,-20(s0) + li a5,1073762304 + addi a5,a5,-1024 + beq a4,a5,.L5 + lw a4,-20(s0) + li a5,1073762304 + addi a5,a5,-1024 + bgtu a4,a5,.L9 + lw a4,-20(s0) + li a5,1073758208 + addi a5,a5,1024 + beq a4,a5,.L6 + lw a4,-20(s0) + li a5,1073762304 + addi a5,a5,-2048 + beq a4,a5,.L7 + .loc 1 74 9 + j .L9 +.L2: + .loc 1 50 9 + li a0,782 + call rcu_periph_reset_enable + .loc 1 51 9 + li a0,782 + call rcu_periph_reset_disable + .loc 1 52 9 + j .L8 +.L6: + .loc 1 55 9 + li a0,1041 + call rcu_periph_reset_enable + .loc 1 56 9 + li a0,1041 + call rcu_periph_reset_disable + .loc 1 57 9 + j .L8 +.L7: + .loc 1 60 9 + li a0,1042 + call rcu_periph_reset_enable + .loc 1 61 9 + li a0,1042 + call rcu_periph_reset_disable + .loc 1 62 9 + j .L8 +.L5: + .loc 1 65 9 + li a0,1043 + call rcu_periph_reset_enable + .loc 1 66 9 + li a0,1043 + call rcu_periph_reset_disable + .loc 1 67 9 + j .L8 +.L4: + .loc 1 70 9 + li a0,1044 + call rcu_periph_reset_enable + .loc 1 71 9 + li a0,1044 + call rcu_periph_reset_disable + .loc 1 72 9 + j .L8 +.L9: + .loc 1 74 9 + nop +.L8: + .loc 1 76 1 + nop + lw ra,28(sp) + .cfi_restore 1 + lw s0,24(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE2: + .size usart_deinit, .-usart_deinit + .align 1 + .globl usart_baudrate_set + .type usart_baudrate_set, @function +usart_baudrate_set: +.LFB3: + .loc 1 86 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw ra,44(sp) + sw s0,40(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + sw a1,-40(s0) + .loc 1 87 14 + sw zero,-20(s0) + .loc 1 87 23 + sw zero,-24(s0) + .loc 1 87 34 + sw zero,-28(s0) + .loc 1 87 45 + sw zero,-32(s0) + .loc 1 88 5 + lw a4,-36(s0) + li a5,1073823744 + addi a5,a5,-2048 + beq a4,a5,.L11 + lw a4,-36(s0) + li a5,1073823744 + addi a5,a5,-2048 + bgtu a4,a5,.L18 + lw a4,-36(s0) + li a5,1073762304 + beq a4,a5,.L13 + lw a4,-36(s0) + li a5,1073762304 + bgtu a4,a5,.L18 + lw a4,-36(s0) + li a5,1073762304 + addi a5,a5,-1024 + beq a4,a5,.L14 + lw a4,-36(s0) + li a5,1073762304 + addi a5,a5,-1024 + bgtu a4,a5,.L18 + lw a4,-36(s0) + li a5,1073758208 + addi a5,a5,1024 + beq a4,a5,.L15 + lw a4,-36(s0) + li a5,1073762304 + addi a5,a5,-2048 + beq a4,a5,.L16 + .loc 1 111 10 + j .L18 +.L11: + .loc 1 92 15 + li a0,3 + call rcu_clock_freq_get + sw a0,-20(s0) + .loc 1 93 10 + j .L17 +.L15: + .loc 1 96 15 + li a0,2 + call rcu_clock_freq_get + sw a0,-20(s0) + .loc 1 97 10 + j .L17 +.L16: + .loc 1 100 15 + li a0,2 + call rcu_clock_freq_get + sw a0,-20(s0) + .loc 1 101 10 + j .L17 +.L14: + .loc 1 104 15 + li a0,2 + call rcu_clock_freq_get + sw a0,-20(s0) + .loc 1 105 10 + j .L17 +.L13: + .loc 1 108 15 + li a0,2 + call rcu_clock_freq_get + sw a0,-20(s0) + .loc 1 109 10 + j .L17 +.L18: + .loc 1 111 10 + nop +.L17: + .loc 1 114 25 + lw a5,-40(s0) + srli a4,a5,1 + .loc 1 114 17 + lw a5,-20(s0) + add a4,a4,a5 + .loc 1 114 10 + lw a5,-40(s0) + divu a5,a4,a5 + sw a5,-32(s0) + .loc 1 115 12 + lw a4,-32(s0) + li a5,65536 + addi a5,a5,-16 + and a5,a4,a5 + sw a5,-24(s0) + .loc 1 116 12 + lw a5,-32(s0) + andi a5,a5,15 + sw a5,-28(s0) + .loc 1 117 222 + lw a4,-24(s0) + lw a5,-28(s0) + or a4,a4,a5 + .loc 1 117 28 + lw a5,-36(s0) + addi a5,a5,8 + .loc 1 117 7 + mv a3,a5 + .loc 1 117 212 + li a5,65536 + addi a5,a5,-1 + and a5,a4,a5 + .loc 1 117 72 + sw a5,0(a3) + .loc 1 118 1 + nop + lw ra,44(sp) + .cfi_restore 1 + lw s0,40(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE3: + .size usart_baudrate_set, .-usart_baudrate_set + .align 1 + .globl usart_parity_config + .type usart_parity_config, @function +usart_parity_config: +.LFB4: + .loc 1 132 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + sw a1,-24(s0) + .loc 1 134 72 + lw a5,-20(s0) + addi a5,a5,12 + lw a5,0(a5) + lw a4,-20(s0) + addi a4,a4,12 + andi a5,a5,-1537 + sw a5,0(a4) + .loc 1 136 72 + lw a5,-20(s0) + addi a5,a5,12 + lw a4,0(a5) + lw a5,-20(s0) + addi a5,a5,12 + mv a3,a5 + lw a5,-24(s0) + or a5,a4,a5 + sw a5,0(a3) + .loc 1 137 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE4: + .size usart_parity_config, .-usart_parity_config + .align 1 + .globl usart_word_length_set + .type usart_word_length_set, @function +usart_word_length_set: +.LFB5: + .loc 1 150 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + sw a1,-24(s0) + .loc 1 152 72 + lw a5,-20(s0) + addi a5,a5,12 + lw a4,0(a5) + lw a5,-20(s0) + addi a5,a5,12 + mv a3,a5 + li a5,-4096 + addi a5,a5,-1 + and a5,a4,a5 + sw a5,0(a3) + .loc 1 154 72 + lw a5,-20(s0) + addi a5,a5,12 + lw a4,0(a5) + lw a5,-20(s0) + addi a5,a5,12 + mv a3,a5 + lw a5,-24(s0) + or a5,a4,a5 + sw a5,0(a3) + .loc 1 155 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE5: + .size usart_word_length_set, .-usart_word_length_set + .align 1 + .globl usart_stop_bit_set + .type usart_stop_bit_set, @function +usart_stop_bit_set: +.LFB6: + .loc 1 170 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + sw a1,-24(s0) + .loc 1 172 72 + lw a5,-20(s0) + addi a5,a5,16 + lw a4,0(a5) + lw a5,-20(s0) + addi a5,a5,16 + mv a3,a5 + li a5,-12288 + addi a5,a5,-1 + and a5,a4,a5 + sw a5,0(a3) + .loc 1 174 72 + lw a5,-20(s0) + addi a5,a5,16 + lw a4,0(a5) + lw a5,-20(s0) + addi a5,a5,16 + mv a3,a5 + lw a5,-24(s0) + or a5,a4,a5 + sw a5,0(a3) + .loc 1 175 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE6: + .size usart_stop_bit_set, .-usart_stop_bit_set + .align 1 + .globl usart_enable + .type usart_enable, @function +usart_enable: +.LFB7: + .loc 1 184 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 185 72 + lw a5,-20(s0) + addi a5,a5,12 + lw a4,0(a5) + lw a5,-20(s0) + addi a5,a5,12 + mv a3,a5 + li a5,8192 + or a5,a4,a5 + sw a5,0(a3) + .loc 1 186 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE7: + .size usart_enable, .-usart_enable + .align 1 + .globl usart_disable + .type usart_disable, @function +usart_disable: +.LFB8: + .loc 1 195 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 196 72 + lw a5,-20(s0) + addi a5,a5,12 + lw a4,0(a5) + lw a5,-20(s0) + addi a5,a5,12 + mv a3,a5 + li a5,-8192 + addi a5,a5,-1 + and a5,a4,a5 + sw a5,0(a3) + .loc 1 197 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE8: + .size usart_disable, .-usart_disable + .align 1 + .globl usart_transmit_config + .type usart_transmit_config, @function +usart_transmit_config: +.LFB9: + .loc 1 210 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + sw a1,-40(s0) + .loc 1 211 14 + sw zero,-20(s0) + .loc 1 213 34 + lw a5,-36(s0) + addi a5,a5,12 + .loc 1 213 9 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 214 9 + lw a5,-20(s0) + andi a5,a5,-9 + sw a5,-20(s0) + .loc 1 215 9 + lw a4,-20(s0) + lw a5,-40(s0) + or a5,a4,a5 + sw a5,-20(s0) + .loc 1 217 28 + lw a5,-36(s0) + addi a5,a5,12 + .loc 1 217 7 + mv a4,a5 + .loc 1 217 72 + lw a5,-20(s0) + sw a5,0(a4) + .loc 1 218 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE9: + .size usart_transmit_config, .-usart_transmit_config + .align 1 + .globl usart_receive_config + .type usart_receive_config, @function +usart_receive_config: +.LFB10: + .loc 1 231 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + sw a1,-40(s0) + .loc 1 232 14 + sw zero,-20(s0) + .loc 1 234 34 + lw a5,-36(s0) + addi a5,a5,12 + .loc 1 234 9 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 235 9 + lw a5,-20(s0) + andi a5,a5,-5 + sw a5,-20(s0) + .loc 1 236 9 + lw a4,-20(s0) + lw a5,-40(s0) + or a5,a4,a5 + sw a5,-20(s0) + .loc 1 238 28 + lw a5,-36(s0) + addi a5,a5,12 + .loc 1 238 7 + mv a4,a5 + .loc 1 238 72 + lw a5,-20(s0) + sw a5,0(a4) + .loc 1 239 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE10: + .size usart_receive_config, .-usart_receive_config + .align 1 + .globl usart_data_transmit + .type usart_data_transmit, @function +usart_data_transmit: +.LFB11: + .loc 1 249 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + sw a1,-24(s0) + .loc 1 250 28 + lw a5,-20(s0) + addi a5,a5,4 + .loc 1 250 7 + mv a4,a5 + .loc 1 250 140 + lw a5,-24(s0) + andi a5,a5,511 + .loc 1 250 72 + sw a5,0(a4) + .loc 1 251 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE11: + .size usart_data_transmit, .-usart_data_transmit + .align 1 + .globl usart_data_receive + .type usart_data_receive, @function +usart_data_receive: +.LFB12: + .loc 1 260 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 261 49 + lw a5,-20(s0) + addi a5,a5,4 + .loc 1 261 27 + lw a5,0(a5) + .loc 1 261 12 + slli a5,a5,16 + srli a5,a5,16 + andi a5,a5,511 + slli a5,a5,16 + srli a5,a5,16 + .loc 1 262 1 + mv a0,a5 + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE12: + .size usart_data_receive, .-usart_data_receive + .align 1 + .globl usart_address_config + .type usart_address_config, @function +usart_address_config: +.LFB13: + .loc 1 272 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + mv a5,a1 + sb a5,-21(s0) + .loc 1 273 72 + lw a5,-20(s0) + addi a5,a5,16 + lw a5,0(a5) + lw a4,-20(s0) + addi a4,a4,16 + andi a5,a5,-16 + sw a5,0(a4) + .loc 1 274 72 + lw a5,-20(s0) + addi a5,a5,16 + lw a4,0(a5) + .loc 1 274 142 + lbu a5,-21(s0) + andi a5,a5,15 + .loc 1 274 72 + lw a3,-20(s0) + addi a3,a3,16 + or a5,a4,a5 + sw a5,0(a3) + .loc 1 275 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE13: + .size usart_address_config, .-usart_address_config + .align 1 + .globl usart_mute_mode_enable + .type usart_mute_mode_enable, @function +usart_mute_mode_enable: +.LFB14: + .loc 1 284 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 285 72 + lw a5,-20(s0) + addi a5,a5,12 + lw a5,0(a5) + lw a4,-20(s0) + addi a4,a4,12 + ori a5,a5,2 + sw a5,0(a4) + .loc 1 286 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE14: + .size usart_mute_mode_enable, .-usart_mute_mode_enable + .align 1 + .globl usart_mute_mode_disable + .type usart_mute_mode_disable, @function +usart_mute_mode_disable: +.LFB15: + .loc 1 295 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 296 72 + lw a5,-20(s0) + addi a5,a5,12 + lw a5,0(a5) + lw a4,-20(s0) + addi a4,a4,12 + andi a5,a5,-3 + sw a5,0(a4) + .loc 1 297 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE15: + .size usart_mute_mode_disable, .-usart_mute_mode_disable + .align 1 + .globl usart_mute_mode_wakeup_config + .type usart_mute_mode_wakeup_config, @function +usart_mute_mode_wakeup_config: +.LFB16: + .loc 1 310 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + sw a1,-24(s0) + .loc 1 311 72 + lw a5,-20(s0) + addi a5,a5,12 + lw a4,0(a5) + lw a5,-20(s0) + addi a5,a5,12 + mv a3,a5 + li a5,-4096 + addi a5,a5,2047 + and a5,a4,a5 + sw a5,0(a3) + .loc 1 312 72 + lw a5,-20(s0) + addi a5,a5,12 + lw a4,0(a5) + lw a5,-20(s0) + addi a5,a5,12 + mv a3,a5 + lw a5,-24(s0) + or a5,a4,a5 + sw a5,0(a3) + .loc 1 313 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE16: + .size usart_mute_mode_wakeup_config, .-usart_mute_mode_wakeup_config + .align 1 + .globl usart_lin_mode_enable + .type usart_lin_mode_enable, @function +usart_lin_mode_enable: +.LFB17: + .loc 1 322 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 323 72 + lw a5,-20(s0) + addi a5,a5,16 + lw a4,0(a5) + lw a5,-20(s0) + addi a5,a5,16 + mv a3,a5 + li a5,16384 + or a5,a4,a5 + sw a5,0(a3) + .loc 1 324 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE17: + .size usart_lin_mode_enable, .-usart_lin_mode_enable + .align 1 + .globl usart_lin_mode_disable + .type usart_lin_mode_disable, @function +usart_lin_mode_disable: +.LFB18: + .loc 1 333 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 334 72 + lw a5,-20(s0) + addi a5,a5,16 + lw a4,0(a5) + lw a5,-20(s0) + addi a5,a5,16 + mv a3,a5 + li a5,-16384 + addi a5,a5,-1 + and a5,a4,a5 + sw a5,0(a3) + .loc 1 335 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE18: + .size usart_lin_mode_disable, .-usart_lin_mode_disable + .align 1 + .globl usart_lin_break_detection_length_config + .type usart_lin_break_detection_length_config, @function +usart_lin_break_detection_length_config: +.LFB19: + .loc 1 348 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + sw a1,-24(s0) + .loc 1 349 72 + lw a5,-20(s0) + addi a5,a5,16 + lw a5,0(a5) + lw a4,-20(s0) + addi a4,a4,16 + andi a5,a5,-33 + sw a5,0(a4) + .loc 1 350 72 + lw a5,-20(s0) + addi a5,a5,16 + lw a4,0(a5) + .loc 1 350 111 + lw a5,-24(s0) + andi a5,a5,32 + .loc 1 350 72 + lw a3,-20(s0) + addi a3,a3,16 + or a5,a4,a5 + sw a5,0(a3) + .loc 1 351 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE19: + .size usart_lin_break_detection_length_config, .-usart_lin_break_detection_length_config + .align 1 + .globl usart_send_break + .type usart_send_break, @function +usart_send_break: +.LFB20: + .loc 1 360 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 361 72 + lw a5,-20(s0) + addi a5,a5,12 + lw a5,0(a5) + lw a4,-20(s0) + addi a4,a4,12 + ori a5,a5,1 + sw a5,0(a4) + .loc 1 362 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE20: + .size usart_send_break, .-usart_send_break + .align 1 + .globl usart_halfduplex_enable + .type usart_halfduplex_enable, @function +usart_halfduplex_enable: +.LFB21: + .loc 1 371 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 372 72 + lw a5,-20(s0) + addi a5,a5,20 + lw a5,0(a5) + lw a4,-20(s0) + addi a4,a4,20 + ori a5,a5,8 + sw a5,0(a4) + .loc 1 373 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE21: + .size usart_halfduplex_enable, .-usart_halfduplex_enable + .align 1 + .globl usart_halfduplex_disable + .type usart_halfduplex_disable, @function +usart_halfduplex_disable: +.LFB22: + .loc 1 382 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 383 72 + lw a5,-20(s0) + addi a5,a5,20 + lw a5,0(a5) + lw a4,-20(s0) + addi a4,a4,20 + andi a5,a5,-9 + sw a5,0(a4) + .loc 1 384 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE22: + .size usart_halfduplex_disable, .-usart_halfduplex_disable + .align 1 + .globl usart_synchronous_clock_enable + .type usart_synchronous_clock_enable, @function +usart_synchronous_clock_enable: +.LFB23: + .loc 1 393 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 394 72 + lw a5,-20(s0) + addi a5,a5,16 + lw a4,0(a5) + lw a5,-20(s0) + addi a5,a5,16 + mv a3,a5 + li a5,4096 + addi a5,a5,-2048 + or a5,a4,a5 + sw a5,0(a3) + .loc 1 395 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE23: + .size usart_synchronous_clock_enable, .-usart_synchronous_clock_enable + .align 1 + .globl usart_synchronous_clock_disable + .type usart_synchronous_clock_disable, @function +usart_synchronous_clock_disable: +.LFB24: + .loc 1 404 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 405 72 + lw a5,-20(s0) + addi a5,a5,16 + lw a4,0(a5) + lw a5,-20(s0) + addi a5,a5,16 + mv a3,a5 + li a5,-4096 + addi a5,a5,2047 + and a5,a4,a5 + sw a5,0(a3) + .loc 1 406 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE24: + .size usart_synchronous_clock_disable, .-usart_synchronous_clock_disable + .align 1 + .globl usart_synchronous_clock_config + .type usart_synchronous_clock_config, @function +usart_synchronous_clock_config: +.LFB25: + .loc 1 427 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + sw a1,-40(s0) + sw a2,-44(s0) + sw a3,-48(s0) + .loc 1 428 14 + sw zero,-20(s0) + .loc 1 431 34 + lw a5,-36(s0) + addi a5,a5,16 + .loc 1 431 9 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 432 9 + lw a5,-20(s0) + andi a5,a5,-1793 + sw a5,-20(s0) + .loc 1 434 48 + lw a5,-40(s0) + andi a4,a5,256 + .loc 1 434 94 + lw a5,-44(s0) + andi a5,a5,512 + .loc 1 434 56 + or a4,a4,a5 + .loc 1 434 140 + lw a5,-48(s0) + andi a5,a5,1024 + .loc 1 434 101 + or a5,a4,a5 + .loc 1 434 9 + lw a4,-20(s0) + or a5,a4,a5 + sw a5,-20(s0) + .loc 1 436 28 + lw a5,-36(s0) + addi a5,a5,16 + .loc 1 436 7 + mv a4,a5 + .loc 1 436 72 + lw a5,-20(s0) + sw a5,0(a4) + .loc 1 437 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE25: + .size usart_synchronous_clock_config, .-usart_synchronous_clock_config + .align 1 + .globl usart_guard_time_config + .type usart_guard_time_config, @function +usart_guard_time_config: +.LFB26: + .loc 1 447 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + sw a1,-24(s0) + .loc 1 448 72 + lw a5,-20(s0) + addi a5,a5,24 + lw a4,0(a5) + lw a5,-20(s0) + addi a5,a5,24 + mv a3,a5 + li a5,-65536 + addi a5,a5,255 + and a5,a4,a5 + sw a5,0(a3) + .loc 1 449 72 + lw a5,-20(s0) + addi a5,a5,24 + lw a4,0(a5) + .loc 1 449 152 + lw a5,-24(s0) + slli a3,a5,8 + .loc 1 449 143 + li a5,65536 + addi a5,a5,-1 + and a5,a3,a5 + .loc 1 449 72 + lw a3,-20(s0) + addi a3,a3,24 + or a5,a4,a5 + sw a5,0(a3) + .loc 1 450 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE26: + .size usart_guard_time_config, .-usart_guard_time_config + .align 1 + .globl usart_smartcard_mode_enable + .type usart_smartcard_mode_enable, @function +usart_smartcard_mode_enable: +.LFB27: + .loc 1 459 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 460 72 + lw a5,-20(s0) + addi a5,a5,20 + lw a5,0(a5) + lw a4,-20(s0) + addi a4,a4,20 + ori a5,a5,32 + sw a5,0(a4) + .loc 1 461 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE27: + .size usart_smartcard_mode_enable, .-usart_smartcard_mode_enable + .align 1 + .globl usart_smartcard_mode_disable + .type usart_smartcard_mode_disable, @function +usart_smartcard_mode_disable: +.LFB28: + .loc 1 470 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 471 72 + lw a5,-20(s0) + addi a5,a5,20 + lw a5,0(a5) + lw a4,-20(s0) + addi a4,a4,20 + andi a5,a5,-33 + sw a5,0(a4) + .loc 1 472 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE28: + .size usart_smartcard_mode_disable, .-usart_smartcard_mode_disable + .align 1 + .globl usart_smartcard_mode_nack_enable + .type usart_smartcard_mode_nack_enable, @function +usart_smartcard_mode_nack_enable: +.LFB29: + .loc 1 481 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 482 72 + lw a5,-20(s0) + addi a5,a5,20 + lw a5,0(a5) + lw a4,-20(s0) + addi a4,a4,20 + ori a5,a5,16 + sw a5,0(a4) + .loc 1 483 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE29: + .size usart_smartcard_mode_nack_enable, .-usart_smartcard_mode_nack_enable + .align 1 + .globl usart_smartcard_mode_nack_disable + .type usart_smartcard_mode_nack_disable, @function +usart_smartcard_mode_nack_disable: +.LFB30: + .loc 1 492 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 493 72 + lw a5,-20(s0) + addi a5,a5,20 + lw a5,0(a5) + lw a4,-20(s0) + addi a4,a4,20 + andi a5,a5,-17 + sw a5,0(a4) + .loc 1 494 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE30: + .size usart_smartcard_mode_nack_disable, .-usart_smartcard_mode_nack_disable + .align 1 + .globl usart_irda_mode_enable + .type usart_irda_mode_enable, @function +usart_irda_mode_enable: +.LFB31: + .loc 1 503 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 504 72 + lw a5,-20(s0) + addi a5,a5,20 + lw a5,0(a5) + lw a4,-20(s0) + addi a4,a4,20 + ori a5,a5,2 + sw a5,0(a4) + .loc 1 505 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE31: + .size usart_irda_mode_enable, .-usart_irda_mode_enable + .align 1 + .globl usart_irda_mode_disable + .type usart_irda_mode_disable, @function +usart_irda_mode_disable: +.LFB32: + .loc 1 514 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 515 72 + lw a5,-20(s0) + addi a5,a5,20 + lw a5,0(a5) + lw a4,-20(s0) + addi a4,a4,20 + andi a5,a5,-3 + sw a5,0(a4) + .loc 1 516 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE32: + .size usart_irda_mode_disable, .-usart_irda_mode_disable + .align 1 + .globl usart_prescaler_config + .type usart_prescaler_config, @function +usart_prescaler_config: +.LFB33: + .loc 1 526 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + mv a5,a1 + sb a5,-21(s0) + .loc 1 527 72 + lw a5,-20(s0) + addi a5,a5,24 + lw a5,0(a5) + lw a4,-20(s0) + addi a4,a4,24 + andi a5,a5,-256 + sw a5,0(a4) + .loc 1 528 72 + lw a5,-20(s0) + addi a5,a5,24 + lw a4,0(a5) + lbu a5,-21(s0) + lw a3,-20(s0) + addi a3,a3,24 + or a5,a4,a5 + sw a5,0(a3) + .loc 1 529 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE33: + .size usart_prescaler_config, .-usart_prescaler_config + .align 1 + .globl usart_irda_lowpower_config + .type usart_irda_lowpower_config, @function +usart_irda_lowpower_config: +.LFB34: + .loc 1 542 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + sw a1,-24(s0) + .loc 1 543 72 + lw a5,-20(s0) + addi a5,a5,20 + lw a5,0(a5) + lw a4,-20(s0) + addi a4,a4,20 + andi a5,a5,-5 + sw a5,0(a4) + .loc 1 544 72 + lw a5,-20(s0) + addi a5,a5,20 + lw a4,0(a5) + .loc 1 544 111 + lw a5,-24(s0) + andi a5,a5,4 + .loc 1 544 72 + lw a3,-20(s0) + addi a3,a3,20 + or a5,a4,a5 + sw a5,0(a3) + .loc 1 545 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE34: + .size usart_irda_lowpower_config, .-usart_irda_lowpower_config + .align 1 + .globl usart_hardware_flow_rts_config + .type usart_hardware_flow_rts_config, @function +usart_hardware_flow_rts_config: +.LFB35: + .loc 1 558 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + sw a1,-40(s0) + .loc 1 559 14 + sw zero,-20(s0) + .loc 1 561 34 + lw a5,-36(s0) + addi a5,a5,20 + .loc 1 561 9 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 562 9 + lw a5,-20(s0) + andi a5,a5,-257 + sw a5,-20(s0) + .loc 1 563 9 + lw a4,-20(s0) + lw a5,-40(s0) + or a5,a4,a5 + sw a5,-20(s0) + .loc 1 565 28 + lw a5,-36(s0) + addi a5,a5,20 + .loc 1 565 7 + mv a4,a5 + .loc 1 565 72 + lw a5,-20(s0) + sw a5,0(a4) + .loc 1 566 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE35: + .size usart_hardware_flow_rts_config, .-usart_hardware_flow_rts_config + .align 1 + .globl usart_hardware_flow_cts_config + .type usart_hardware_flow_cts_config, @function +usart_hardware_flow_cts_config: +.LFB36: + .loc 1 579 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + sw a1,-40(s0) + .loc 1 580 14 + sw zero,-20(s0) + .loc 1 582 34 + lw a5,-36(s0) + addi a5,a5,20 + .loc 1 582 9 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 583 9 + lw a5,-20(s0) + andi a5,a5,-513 + sw a5,-20(s0) + .loc 1 584 9 + lw a4,-20(s0) + lw a5,-40(s0) + or a5,a4,a5 + sw a5,-20(s0) + .loc 1 586 28 + lw a5,-36(s0) + addi a5,a5,20 + .loc 1 586 7 + mv a4,a5 + .loc 1 586 72 + lw a5,-20(s0) + sw a5,0(a4) + .loc 1 587 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE36: + .size usart_hardware_flow_cts_config, .-usart_hardware_flow_cts_config + .align 1 + .globl usart_dma_receive_config + .type usart_dma_receive_config, @function +usart_dma_receive_config: +.LFB37: + .loc 1 600 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + sw a1,-40(s0) + .loc 1 601 14 + sw zero,-20(s0) + .loc 1 603 34 + lw a5,-36(s0) + addi a5,a5,20 + .loc 1 603 9 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 604 9 + lw a5,-20(s0) + andi a5,a5,-65 + sw a5,-20(s0) + .loc 1 605 9 + lw a4,-20(s0) + lw a5,-40(s0) + or a5,a4,a5 + sw a5,-20(s0) + .loc 1 607 28 + lw a5,-36(s0) + addi a5,a5,20 + .loc 1 607 7 + mv a4,a5 + .loc 1 607 72 + lw a5,-20(s0) + sw a5,0(a4) + .loc 1 608 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE37: + .size usart_dma_receive_config, .-usart_dma_receive_config + .align 1 + .globl usart_dma_transmit_config + .type usart_dma_transmit_config, @function +usart_dma_transmit_config: +.LFB38: + .loc 1 621 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + sw a1,-40(s0) + .loc 1 622 14 + sw zero,-20(s0) + .loc 1 624 34 + lw a5,-36(s0) + addi a5,a5,20 + .loc 1 624 9 + lw a5,0(a5) + sw a5,-20(s0) + .loc 1 625 9 + lw a5,-20(s0) + andi a5,a5,-129 + sw a5,-20(s0) + .loc 1 626 9 + lw a4,-20(s0) + lw a5,-40(s0) + or a5,a4,a5 + sw a5,-20(s0) + .loc 1 628 28 + lw a5,-36(s0) + addi a5,a5,20 + .loc 1 628 7 + mv a4,a5 + .loc 1 628 72 + lw a5,-20(s0) + sw a5,0(a4) + .loc 1 629 1 + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE38: + .size usart_dma_transmit_config, .-usart_dma_transmit_config + .align 1 + .globl usart_flag_get + .type usart_flag_get, @function +usart_flag_get: +.LFB39: + .loc 1 650 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + sw a1,-24(s0) + .loc 1 651 106 + lw a5,-24(s0) + srli a5,a5,6 + andi a4,a5,1023 + .loc 1 651 42 + lw a5,-20(s0) + add a5,a4,a5 + .loc 1 651 20 + lw a4,0(a5) + .loc 1 651 165 + lw a5,-24(s0) + andi a5,a5,31 + .loc 1 651 14 + srl a5,a4,a5 + andi a5,a5,1 + .loc 1 651 7 + beq a5,zero,.L56 + .loc 1 652 16 + li a5,1 + j .L57 +.L56: + .loc 1 654 16 + li a5,0 +.L57: + .loc 1 656 1 + mv a0,a5 + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE39: + .size usart_flag_get, .-usart_flag_get + .align 1 + .globl usart_flag_clear + .type usart_flag_clear, @function +usart_flag_clear: +.LFB40: + .loc 1 671 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + sw a1,-24(s0) + .loc 1 672 102 + lw a5,-24(s0) + srli a5,a5,6 + andi a4,a5,1023 + lw a5,-20(s0) + add a5,a4,a5 + lw a4,0(a5) + .loc 1 672 154 + lw a5,-24(s0) + andi a5,a5,31 + .loc 1 672 107 + li a3,1 + sll a5,a3,a5 + .loc 1 672 105 + not a5,a5 + .loc 1 672 102 + lw a3,-24(s0) + srli a3,a3,6 + andi a2,a3,1023 + lw a3,-20(s0) + add a3,a2,a3 + and a5,a4,a5 + sw a5,0(a3) + .loc 1 673 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE40: + .size usart_flag_clear, .-usart_flag_clear + .align 1 + .globl usart_interrupt_enable + .type usart_interrupt_enable, @function +usart_interrupt_enable: +.LFB41: + .loc 1 692 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + sw a1,-24(s0) + .loc 1 693 107 + lw a5,-24(s0) + srli a5,a5,6 + andi a4,a5,1023 + lw a5,-20(s0) + add a5,a4,a5 + lw a4,0(a5) + .loc 1 693 163 + lw a5,-24(s0) + andi a5,a5,31 + .loc 1 693 111 + li a3,1 + sll a5,a3,a5 + .loc 1 693 107 + lw a3,-24(s0) + srli a3,a3,6 + andi a2,a3,1023 + lw a3,-20(s0) + add a3,a2,a3 + or a5,a4,a5 + sw a5,0(a3) + .loc 1 694 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE41: + .size usart_interrupt_enable, .-usart_interrupt_enable + .align 1 + .globl usart_interrupt_disable + .type usart_interrupt_disable, @function +usart_interrupt_disable: +.LFB42: + .loc 1 713 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + sw a1,-24(s0) + .loc 1 714 107 + lw a5,-24(s0) + srli a5,a5,6 + andi a4,a5,1023 + lw a5,-20(s0) + add a5,a4,a5 + lw a4,0(a5) + .loc 1 714 164 + lw a5,-24(s0) + andi a5,a5,31 + .loc 1 714 112 + li a3,1 + sll a5,a3,a5 + .loc 1 714 110 + not a5,a5 + .loc 1 714 107 + lw a3,-24(s0) + srli a3,a3,6 + andi a2,a3,1023 + lw a3,-20(s0) + add a3,a2,a3 + and a5,a4,a5 + sw a5,0(a3) + .loc 1 715 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE42: + .size usart_interrupt_disable, .-usart_interrupt_disable + .align 1 + .globl usart_interrupt_flag_get + .type usart_interrupt_flag_get, @function +usart_interrupt_flag_get: +.LFB43: + .loc 1 737 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + sw a1,-40(s0) + .loc 1 738 14 + sw zero,-20(s0) + .loc 1 738 30 + sw zero,-24(s0) + .loc 1 740 110 + lw a5,-40(s0) + srli a5,a5,6 + andi a4,a5,1023 + .loc 1 740 42 + lw a5,-36(s0) + add a5,a4,a5 + .loc 1 740 20 + lw a4,0(a5) + .loc 1 740 173 + lw a5,-40(s0) + andi a5,a5,31 + .loc 1 740 122 + li a3,1 + sll a5,a3,a5 + .loc 1 740 15 + and a5,a4,a5 + sw a5,-20(s0) + .loc 1 742 93 + lw a5,-40(s0) + srli a4,a5,22 + .loc 1 742 43 + lw a5,-36(s0) + add a5,a4,a5 + .loc 1 742 21 + lw a4,0(a5) + .loc 1 742 175 + lw a5,-40(s0) + srli a5,a5,16 + andi a5,a5,31 + .loc 1 742 106 + li a3,1 + sll a5,a3,a5 + .loc 1 742 16 + and a5,a4,a5 + sw a5,-24(s0) + .loc 1 744 7 + lw a5,-24(s0) + beq a5,zero,.L62 + .loc 1 744 19 discriminator 1 + lw a5,-20(s0) + beq a5,zero,.L62 + .loc 1 745 16 + li a5,1 + j .L63 +.L62: + .loc 1 747 16 + li a5,0 +.L63: + .loc 1 749 1 + mv a0,a5 + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE43: + .size usart_interrupt_flag_get, .-usart_interrupt_flag_get + .align 1 + .globl usart_interrupt_flag_clear + .type usart_interrupt_flag_clear, @function +usart_interrupt_flag_clear: +.LFB44: + .loc 1 764 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + sw a1,-24(s0) + .loc 1 765 89 + lw a5,-24(s0) + srli a4,a5,22 + lw a5,-20(s0) + add a5,a4,a5 + lw a4,0(a5) + .loc 1 765 163 + lw a5,-24(s0) + srli a5,a5,16 + andi a5,a5,31 + .loc 1 765 94 + li a3,1 + sll a5,a3,a5 + .loc 1 765 92 + not a5,a5 + .loc 1 765 89 + lw a3,-24(s0) + srli a2,a3,22 + lw a3,-20(s0) + add a3,a2,a3 + and a5,a4,a5 + sw a5,0(a3) + .loc 1 766 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE44: + .size usart_interrupt_flag_clear, .-usart_interrupt_flag_clear +.Letext0: + .file 2 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\machine\\_default_types.h" + .file 3 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_stdint.h" + .file 4 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral/gd32vf103.h" + .file 5 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_rcu.h" + .file 6 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_usart.h" + .section .debug_info,"",@progbits +.Ldebug_info0: + .4byte 0xb60 + .2byte 0x4 + .4byte .Ldebug_abbrev0 + .byte 0x4 + .byte 0x1 + .4byte .LASF3302 + .byte 0xc + .4byte .LASF3303 + .4byte .LASF3304 + .4byte .Ltext0 + .4byte .Letext0-.Ltext0 + .4byte .Ldebug_line0 + .4byte .Ldebug_macro0 + .byte 0x2 + .byte 0x4 + .byte 0x7 + .4byte .LASF3169 + .byte 0x2 + .byte 0x1 + .byte 0x6 + .4byte .LASF3170 + .byte 0x3 + .4byte .LASF3173 + .byte 0x2 + .byte 0x2b + .byte 0x17 + .4byte 0x43 + .byte 0x2 + .byte 0x1 + .byte 0x8 + .4byte .LASF3171 + .byte 0x2 + .byte 0x2 + .byte 0x5 + .4byte .LASF3172 + .byte 0x3 + .4byte .LASF3174 + .byte 0x2 + .byte 0x39 + .byte 0x1c + .4byte 0x5d + .byte 0x2 + .byte 0x2 + .byte 0x7 + .4byte .LASF3175 + .byte 0x2 + .byte 0x4 + .byte 0x5 + .4byte .LASF3176 + .byte 0x3 + .4byte .LASF3177 + .byte 0x2 + .byte 0x4f + .byte 0x1b + .4byte 0x77 + .byte 0x2 + .byte 0x4 + .byte 0x7 + .4byte .LASF3178 + .byte 0x2 + .byte 0x8 + .byte 0x5 + .4byte .LASF3179 + .byte 0x2 + .byte 0x8 + .byte 0x7 + .4byte .LASF3180 + .byte 0x4 + .byte 0x4 + .byte 0x5 + .string "int" + .byte 0x3 + .4byte .LASF3181 + .byte 0x3 + .byte 0x18 + .byte 0x13 + .4byte 0x37 + .byte 0x3 + .4byte .LASF3182 + .byte 0x3 + .byte 0x24 + .byte 0x14 + .4byte 0x51 + .byte 0x3 + .4byte .LASF3183 + .byte 0x3 + .byte 0x30 + .byte 0x14 + .4byte 0x6b + .byte 0x5 + .byte 0x7 + .byte 0x4 + .4byte 0x29 + .byte 0x4 + .byte 0xb5 + .byte 0xe + .4byte 0xd2 + .byte 0x6 + .4byte .LASF3184 + .byte 0 + .byte 0x7 + .string "SET" + .byte 0x1 + .byte 0 + .byte 0x3 + .4byte .LASF3185 + .byte 0x4 + .byte 0xb5 + .byte 0x28 + .4byte 0xb7 + .byte 0x8 + .byte 0x7 + .byte 0x4 + .4byte 0x29 + .byte 0x5 + .2byte 0x139 + .byte 0xe + .4byte 0x1ce + .byte 0x9 + .4byte .LASF3186 + .2byte 0xa0c + .byte 0x9 + .4byte .LASF3187 + .2byte 0x400 + .byte 0x9 + .4byte .LASF3188 + .2byte 0x401 + .byte 0x9 + .4byte .LASF3189 + .2byte 0x402 + .byte 0x9 + .4byte .LASF3190 + .2byte 0x403 + .byte 0x9 + .4byte .LASF3191 + .2byte 0x404 + .byte 0x9 + .4byte .LASF3192 + .2byte 0x405 + .byte 0x9 + .4byte .LASF3193 + .2byte 0x40b + .byte 0x9 + .4byte .LASF3194 + .2byte 0x40e + .byte 0x9 + .4byte .LASF3195 + .2byte 0x40f + .byte 0x9 + .4byte .LASF3196 + .2byte 0x411 + .byte 0x9 + .4byte .LASF3197 + .2byte 0x412 + .byte 0x9 + .4byte .LASF3198 + .2byte 0x413 + .byte 0x9 + .4byte .LASF3199 + .2byte 0x414 + .byte 0x9 + .4byte .LASF3200 + .2byte 0x415 + .byte 0x9 + .4byte .LASF3201 + .2byte 0x416 + .byte 0x9 + .4byte .LASF3202 + .2byte 0x419 + .byte 0x9 + .4byte .LASF3203 + .2byte 0x41a + .byte 0x9 + .4byte .LASF3204 + .2byte 0x41b + .byte 0x9 + .4byte .LASF3205 + .2byte 0x41c + .byte 0x9 + .4byte .LASF3206 + .2byte 0x41d + .byte 0x9 + .4byte .LASF3207 + .2byte 0x300 + .byte 0x9 + .4byte .LASF3208 + .2byte 0x302 + .byte 0x9 + .4byte .LASF3209 + .2byte 0x303 + .byte 0x9 + .4byte .LASF3210 + .2byte 0x304 + .byte 0x9 + .4byte .LASF3211 + .2byte 0x305 + .byte 0x9 + .4byte .LASF3212 + .2byte 0x306 + .byte 0x9 + .4byte .LASF3213 + .2byte 0x309 + .byte 0x9 + .4byte .LASF3214 + .2byte 0x30a + .byte 0x9 + .4byte .LASF3215 + .2byte 0x30b + .byte 0x9 + .4byte .LASF3216 + .2byte 0x30c + .byte 0x9 + .4byte .LASF3217 + .2byte 0x30e + .byte 0 + .byte 0x8 + .byte 0x7 + .byte 0x4 + .4byte 0x29 + .byte 0x5 + .2byte 0x1a1 + .byte 0xe + .4byte 0x1f6 + .byte 0x6 + .4byte .LASF3218 + .byte 0 + .byte 0x6 + .4byte .LASF3219 + .byte 0x1 + .byte 0x6 + .4byte .LASF3220 + .byte 0x2 + .byte 0x6 + .4byte .LASF3221 + .byte 0x3 + .byte 0 + .byte 0x2 + .byte 0x10 + .byte 0x4 + .4byte .LASF3222 + .byte 0x5 + .byte 0x7 + .byte 0x4 + .4byte 0x29 + .byte 0x6 + .byte 0x8c + .byte 0x1 + .4byte 0x248 + .byte 0x6 + .4byte .LASF3223 + .byte 0x9 + .byte 0x6 + .4byte .LASF3224 + .byte 0x8 + .byte 0x6 + .4byte .LASF3225 + .byte 0x7 + .byte 0x6 + .4byte .LASF3226 + .byte 0x6 + .byte 0x6 + .4byte .LASF3227 + .byte 0x5 + .byte 0x6 + .4byte .LASF3228 + .byte 0x4 + .byte 0x6 + .4byte .LASF3229 + .byte 0x3 + .byte 0x6 + .4byte .LASF3230 + .byte 0x2 + .byte 0x6 + .4byte .LASF3231 + .byte 0x1 + .byte 0x6 + .4byte .LASF3232 + .byte 0 + .byte 0 + .byte 0x3 + .4byte .LASF3233 + .byte 0x6 + .byte 0x98 + .byte 0x2 + .4byte 0x1fd + .byte 0xa + .4byte .LASF3238 + .byte 0x1 + .2byte 0x2fb + .byte 0x6 + .4byte .LFB44 + .4byte .LFE44-.LFB44 + .byte 0x1 + .byte 0x9c + .4byte 0x28c + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x2fb + .byte 0x2a + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0xb + .4byte .LASF3235 + .byte 0x1 + .2byte 0x2fb + .byte 0x41 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0 + .byte 0xc + .4byte .LASF3244 + .byte 0x1 + .2byte 0x2e0 + .byte 0xc + .4byte 0xd2 + .4byte .LFB43 + .4byte .LFE43-.LFB43 + .byte 0x1 + .byte 0x9c + .4byte 0x2e8 + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x2e0 + .byte 0x2e + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xb + .4byte .LASF3235 + .byte 0x1 + .2byte 0x2e0 + .byte 0x45 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x58 + .byte 0xd + .4byte .LASF3236 + .byte 0x1 + .2byte 0x2e2 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0xd + .4byte .LASF3237 + .byte 0x1 + .2byte 0x2e2 + .byte 0x1e + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0 + .byte 0xa + .4byte .LASF3239 + .byte 0x1 + .2byte 0x2c8 + .byte 0x6 + .4byte .LFB42 + .4byte .LFE42-.LFB42 + .byte 0x1 + .byte 0x9c + .4byte 0x320 + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x2c8 + .byte 0x27 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0xb + .4byte .LASF3240 + .byte 0x1 + .2byte 0x2c8 + .byte 0x3e + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0 + .byte 0xa + .4byte .LASF3241 + .byte 0x1 + .2byte 0x2b3 + .byte 0x6 + .4byte .LFB41 + .4byte .LFE41-.LFB41 + .byte 0x1 + .byte 0x9c + .4byte 0x358 + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x2b3 + .byte 0x26 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0xb + .4byte .LASF3240 + .byte 0x1 + .2byte 0x2b3 + .byte 0x3d + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0 + .byte 0xa + .4byte .LASF3242 + .byte 0x1 + .2byte 0x29e + .byte 0x6 + .4byte .LFB40 + .4byte .LFE40-.LFB40 + .byte 0x1 + .byte 0x9c + .4byte 0x390 + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x29e + .byte 0x20 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0xb + .4byte .LASF3243 + .byte 0x1 + .2byte 0x29e + .byte 0x3e + .4byte 0x248 + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0 + .byte 0xc + .4byte .LASF3245 + .byte 0x1 + .2byte 0x289 + .byte 0xc + .4byte 0xd2 + .4byte .LFB39 + .4byte .LFE39-.LFB39 + .byte 0x1 + .byte 0x9c + .4byte 0x3cc + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x289 + .byte 0x24 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0xb + .4byte .LASF3243 + .byte 0x1 + .2byte 0x289 + .byte 0x42 + .4byte 0x248 + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0 + .byte 0xa + .4byte .LASF3246 + .byte 0x1 + .2byte 0x26c + .byte 0x6 + .4byte .LFB38 + .4byte .LFE38-.LFB38 + .byte 0x1 + .byte 0x9c + .4byte 0x414 + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x26c + .byte 0x29 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xb + .4byte .LASF3247 + .byte 0x1 + .2byte 0x26c + .byte 0x40 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x58 + .byte 0xe + .string "ctl" + .byte 0x1 + .2byte 0x26e + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3248 + .byte 0x1 + .2byte 0x257 + .byte 0x6 + .4byte .LFB37 + .4byte .LFE37-.LFB37 + .byte 0x1 + .byte 0x9c + .4byte 0x45c + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x257 + .byte 0x28 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xb + .4byte .LASF3247 + .byte 0x1 + .2byte 0x257 + .byte 0x3f + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x58 + .byte 0xe + .string "ctl" + .byte 0x1 + .2byte 0x259 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3249 + .byte 0x1 + .2byte 0x242 + .byte 0x6 + .4byte .LFB36 + .4byte .LFE36-.LFB36 + .byte 0x1 + .byte 0x9c + .4byte 0x4a4 + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x242 + .byte 0x2e + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xb + .4byte .LASF3250 + .byte 0x1 + .2byte 0x242 + .byte 0x45 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x58 + .byte 0xe + .string "ctl" + .byte 0x1 + .2byte 0x244 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3251 + .byte 0x1 + .2byte 0x22d + .byte 0x6 + .4byte .LFB35 + .4byte .LFE35-.LFB35 + .byte 0x1 + .byte 0x9c + .4byte 0x4ec + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x22d + .byte 0x2e + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xb + .4byte .LASF3252 + .byte 0x1 + .2byte 0x22d + .byte 0x45 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x58 + .byte 0xe + .string "ctl" + .byte 0x1 + .2byte 0x22f + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3253 + .byte 0x1 + .2byte 0x21d + .byte 0x6 + .4byte .LFB34 + .4byte .LFE34-.LFB34 + .byte 0x1 + .byte 0x9c + .4byte 0x524 + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x21d + .byte 0x2a + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0xb + .4byte .LASF3254 + .byte 0x1 + .2byte 0x21d + .byte 0x41 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0 + .byte 0xa + .4byte .LASF3255 + .byte 0x1 + .2byte 0x20d + .byte 0x6 + .4byte .LFB33 + .4byte .LFE33-.LFB33 + .byte 0x1 + .byte 0x9c + .4byte 0x55c + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x20d + .byte 0x26 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0xf + .string "psc" + .byte 0x1 + .2byte 0x20d + .byte 0x3c + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6b + .byte 0 + .byte 0xa + .4byte .LASF3256 + .byte 0x1 + .2byte 0x201 + .byte 0x6 + .4byte .LFB32 + .4byte .LFE32-.LFB32 + .byte 0x1 + .byte 0x9c + .4byte 0x584 + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x201 + .byte 0x27 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3257 + .byte 0x1 + .2byte 0x1f6 + .byte 0x6 + .4byte .LFB31 + .4byte .LFE31-.LFB31 + .byte 0x1 + .byte 0x9c + .4byte 0x5ac + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x1f6 + .byte 0x26 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3258 + .byte 0x1 + .2byte 0x1eb + .byte 0x6 + .4byte .LFB30 + .4byte .LFE30-.LFB30 + .byte 0x1 + .byte 0x9c + .4byte 0x5d4 + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x1eb + .byte 0x31 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3259 + .byte 0x1 + .2byte 0x1e0 + .byte 0x6 + .4byte .LFB29 + .4byte .LFE29-.LFB29 + .byte 0x1 + .byte 0x9c + .4byte 0x5fc + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x1e0 + .byte 0x30 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3260 + .byte 0x1 + .2byte 0x1d5 + .byte 0x6 + .4byte .LFB28 + .4byte .LFE28-.LFB28 + .byte 0x1 + .byte 0x9c + .4byte 0x624 + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x1d5 + .byte 0x2c + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3261 + .byte 0x1 + .2byte 0x1ca + .byte 0x6 + .4byte .LFB27 + .4byte .LFE27-.LFB27 + .byte 0x1 + .byte 0x9c + .4byte 0x64c + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x1ca + .byte 0x2b + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3262 + .byte 0x1 + .2byte 0x1be + .byte 0x6 + .4byte .LFB26 + .4byte .LFE26-.LFB26 + .byte 0x1 + .byte 0x9c + .4byte 0x684 + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x1be + .byte 0x27 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0xb + .4byte .LASF3263 + .byte 0x1 + .2byte 0x1be + .byte 0x3d + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0 + .byte 0xa + .4byte .LASF3264 + .byte 0x1 + .2byte 0x1aa + .byte 0x6 + .4byte .LFB25 + .4byte .LFE25-.LFB25 + .byte 0x1 + .byte 0x9c + .4byte 0x6ec + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x1aa + .byte 0x2e + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xb + .4byte .LASF3265 + .byte 0x1 + .2byte 0x1aa + .byte 0x45 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x58 + .byte 0xf + .string "cph" + .byte 0x1 + .2byte 0x1aa + .byte 0x54 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x54 + .byte 0xf + .string "cpl" + .byte 0x1 + .2byte 0x1aa + .byte 0x62 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x50 + .byte 0xe + .string "ctl" + .byte 0x1 + .2byte 0x1ac + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3266 + .byte 0x1 + .2byte 0x193 + .byte 0x6 + .4byte .LFB24 + .4byte .LFE24-.LFB24 + .byte 0x1 + .byte 0x9c + .4byte 0x714 + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x193 + .byte 0x2f + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3267 + .byte 0x1 + .2byte 0x188 + .byte 0x6 + .4byte .LFB23 + .4byte .LFE23-.LFB23 + .byte 0x1 + .byte 0x9c + .4byte 0x73c + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x188 + .byte 0x2e + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3268 + .byte 0x1 + .2byte 0x17d + .byte 0x6 + .4byte .LFB22 + .4byte .LFE22-.LFB22 + .byte 0x1 + .byte 0x9c + .4byte 0x764 + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x17d + .byte 0x28 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3269 + .byte 0x1 + .2byte 0x172 + .byte 0x6 + .4byte .LFB21 + .4byte .LFE21-.LFB21 + .byte 0x1 + .byte 0x9c + .4byte 0x78c + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x172 + .byte 0x27 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3270 + .byte 0x1 + .2byte 0x167 + .byte 0x6 + .4byte .LFB20 + .4byte .LFE20-.LFB20 + .byte 0x1 + .byte 0x9c + .4byte 0x7b4 + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x167 + .byte 0x20 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3271 + .byte 0x1 + .2byte 0x15b + .byte 0x6 + .4byte .LFB19 + .4byte .LFE19-.LFB19 + .byte 0x1 + .byte 0x9c + .4byte 0x7ec + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x15b + .byte 0x37 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0xb + .4byte .LASF3272 + .byte 0x1 + .2byte 0x15b + .byte 0x4e + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0 + .byte 0xa + .4byte .LASF3273 + .byte 0x1 + .2byte 0x14c + .byte 0x6 + .4byte .LFB18 + .4byte .LFE18-.LFB18 + .byte 0x1 + .byte 0x9c + .4byte 0x814 + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x14c + .byte 0x26 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3274 + .byte 0x1 + .2byte 0x141 + .byte 0x6 + .4byte .LFB17 + .4byte .LFE17-.LFB17 + .byte 0x1 + .byte 0x9c + .4byte 0x83c + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x141 + .byte 0x25 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3275 + .byte 0x1 + .2byte 0x135 + .byte 0x6 + .4byte .LFB16 + .4byte .LFE16-.LFB16 + .byte 0x1 + .byte 0x9c + .4byte 0x874 + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x135 + .byte 0x2d + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0xb + .4byte .LASF3276 + .byte 0x1 + .2byte 0x135 + .byte 0x44 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0 + .byte 0xa + .4byte .LASF3277 + .byte 0x1 + .2byte 0x126 + .byte 0x6 + .4byte .LFB15 + .4byte .LFE15-.LFB15 + .byte 0x1 + .byte 0x9c + .4byte 0x89c + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x126 + .byte 0x27 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3278 + .byte 0x1 + .2byte 0x11b + .byte 0x6 + .4byte .LFB14 + .4byte .LFE14-.LFB14 + .byte 0x1 + .byte 0x9c + .4byte 0x8c4 + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x11b + .byte 0x26 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0xa + .4byte .LASF3279 + .byte 0x1 + .2byte 0x10f + .byte 0x6 + .4byte .LFB13 + .4byte .LFE13-.LFB13 + .byte 0x1 + .byte 0x9c + .4byte 0x8fc + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x10f + .byte 0x24 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0xb + .4byte .LASF3280 + .byte 0x1 + .2byte 0x10f + .byte 0x3a + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6b + .byte 0 + .byte 0xc + .4byte .LASF3281 + .byte 0x1 + .2byte 0x103 + .byte 0xa + .4byte 0x9f + .4byte .LFB12 + .4byte .LFE12-.LFB12 + .byte 0x1 + .byte 0x9c + .4byte 0x928 + .byte 0xb + .4byte .LASF3234 + .byte 0x1 + .2byte 0x103 + .byte 0x26 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x10 + .4byte .LASF3282 + .byte 0x1 + .byte 0xf8 + .byte 0x6 + .4byte .LFB11 + .4byte .LFE11-.LFB11 + .byte 0x1 + .byte 0x9c + .4byte 0x95d + .byte 0x11 + .4byte .LASF3234 + .byte 0x1 + .byte 0xf8 + .byte 0x23 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0x11 + .4byte .LASF3283 + .byte 0x1 + .byte 0xf8 + .byte 0x3a + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0 + .byte 0x10 + .4byte .LASF3284 + .byte 0x1 + .byte 0xe6 + .byte 0x6 + .4byte .LFB10 + .4byte .LFE10-.LFB10 + .byte 0x1 + .byte 0x9c + .4byte 0x9a1 + .byte 0x11 + .4byte .LASF3234 + .byte 0x1 + .byte 0xe6 + .byte 0x24 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0x11 + .4byte .LASF3285 + .byte 0x1 + .byte 0xe6 + .byte 0x3b + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x58 + .byte 0x12 + .string "ctl" + .byte 0x1 + .byte 0xe8 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x10 + .4byte .LASF3286 + .byte 0x1 + .byte 0xd1 + .byte 0x6 + .4byte .LFB9 + .4byte .LFE9-.LFB9 + .byte 0x1 + .byte 0x9c + .4byte 0x9e5 + .byte 0x11 + .4byte .LASF3234 + .byte 0x1 + .byte 0xd1 + .byte 0x25 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0x11 + .4byte .LASF3287 + .byte 0x1 + .byte 0xd1 + .byte 0x3c + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x58 + .byte 0x12 + .string "ctl" + .byte 0x1 + .byte 0xd3 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x10 + .4byte .LASF3288 + .byte 0x1 + .byte 0xc2 + .byte 0x6 + .4byte .LFB8 + .4byte .LFE8-.LFB8 + .byte 0x1 + .byte 0x9c + .4byte 0xa0b + .byte 0x11 + .4byte .LASF3234 + .byte 0x1 + .byte 0xc2 + .byte 0x1d + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x10 + .4byte .LASF3289 + .byte 0x1 + .byte 0xb7 + .byte 0x6 + .4byte .LFB7 + .4byte .LFE7-.LFB7 + .byte 0x1 + .byte 0x9c + .4byte 0xa31 + .byte 0x11 + .4byte .LASF3234 + .byte 0x1 + .byte 0xb7 + .byte 0x1c + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x10 + .4byte .LASF3290 + .byte 0x1 + .byte 0xa9 + .byte 0x6 + .4byte .LFB6 + .4byte .LFE6-.LFB6 + .byte 0x1 + .byte 0x9c + .4byte 0xa66 + .byte 0x11 + .4byte .LASF3234 + .byte 0x1 + .byte 0xa9 + .byte 0x22 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0x11 + .4byte .LASF3291 + .byte 0x1 + .byte 0xa9 + .byte 0x39 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0 + .byte 0x10 + .4byte .LASF3292 + .byte 0x1 + .byte 0x95 + .byte 0x6 + .4byte .LFB5 + .4byte .LFE5-.LFB5 + .byte 0x1 + .byte 0x9c + .4byte 0xa9b + .byte 0x11 + .4byte .LASF3234 + .byte 0x1 + .byte 0x95 + .byte 0x25 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0x11 + .4byte .LASF3293 + .byte 0x1 + .byte 0x95 + .byte 0x3c + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0 + .byte 0x10 + .4byte .LASF3294 + .byte 0x1 + .byte 0x83 + .byte 0x6 + .4byte .LFB4 + .4byte .LFE4-.LFB4 + .byte 0x1 + .byte 0x9c + .4byte 0xad0 + .byte 0x11 + .4byte .LASF3234 + .byte 0x1 + .byte 0x83 + .byte 0x23 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0x11 + .4byte .LASF3295 + .byte 0x1 + .byte 0x83 + .byte 0x3a + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0 + .byte 0x13 + .4byte .LASF3296 + .byte 0x1 + .byte 0x55 + .byte 0x6 + .4byte .LFB3 + .4byte .LFE3-.LFB3 + .byte 0x1 + .byte 0x9c + .4byte 0xb41 + .byte 0x11 + .4byte .LASF3234 + .byte 0x1 + .byte 0x55 + .byte 0x22 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0x11 + .4byte .LASF3297 + .byte 0x1 + .byte 0x55 + .byte 0x39 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x58 + .byte 0x14 + .4byte .LASF3298 + .byte 0x1 + .byte 0x57 + .byte 0xe + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0x14 + .4byte .LASF3299 + .byte 0x1 + .byte 0x57 + .byte 0x17 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0x14 + .4byte .LASF3300 + .byte 0x1 + .byte 0x57 + .byte 0x22 + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x64 + .byte 0x14 + .4byte .LASF3301 + .byte 0x1 + .byte 0x57 + .byte 0x2d + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x60 + .byte 0 + .byte 0x15 + .4byte .LASF3305 + .byte 0x1 + .byte 0x2d + .byte 0x6 + .4byte .LFB2 + .4byte .LFE2-.LFB2 + .byte 0x1 + .byte 0x9c + .byte 0x11 + .4byte .LASF3234 + .byte 0x1 + .byte 0x2d + .byte 0x1c + .4byte 0xab + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0 + .section .debug_abbrev,"",@progbits +.Ldebug_abbrev0: + .byte 0x1 + .byte 0x11 + .byte 0x1 + .byte 0x25 + .byte 0xe + .byte 0x13 + .byte 0xb + .byte 0x3 + .byte 0xe + .byte 0x1b + .byte 0xe + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x10 + .byte 0x17 + .byte 0x99,0x42 + .byte 0x17 + .byte 0 + .byte 0 + .byte 0x2 + .byte 0x24 + .byte 0 + .byte 0xb + .byte 0xb + .byte 0x3e + .byte 0xb + .byte 0x3 + .byte 0xe + .byte 0 + .byte 0 + .byte 0x3 + .byte 0x16 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x4 + .byte 0x24 + .byte 0 + .byte 0xb + .byte 0xb + .byte 0x3e + .byte 0xb + .byte 0x3 + .byte 0x8 + .byte 0 + .byte 0 + .byte 0x5 + .byte 0x4 + .byte 0x1 + .byte 0x3e + .byte 0xb + .byte 0xb + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x6 + .byte 0x28 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x1c + .byte 0xb + .byte 0 + .byte 0 + .byte 0x7 + .byte 0x28 + .byte 0 + .byte 0x3 + .byte 0x8 + .byte 0x1c + .byte 0xb + .byte 0 + .byte 0 + .byte 0x8 + .byte 0x4 + .byte 0x1 + .byte 0x3e + .byte 0xb + .byte 0xb + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x9 + .byte 0x28 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x1c + .byte 0x5 + .byte 0 + .byte 0 + .byte 0xa + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0xb + .byte 0x5 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0xc + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x49 + .byte 0x13 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0xd + .byte 0x34 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0xe + .byte 0x34 + .byte 0 + .byte 0x3 + .byte 0x8 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0xf + .byte 0x5 + .byte 0 + .byte 0x3 + .byte 0x8 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0x10 + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x11 + .byte 0x5 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0x12 + .byte 0x34 + .byte 0 + .byte 0x3 + .byte 0x8 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0x13 + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x96,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x14 + .byte 0x34 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0x15 + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x96,0x42 + .byte 0x19 + .byte 0 + .byte 0 + .byte 0 + .section .debug_aranges,"",@progbits + .4byte 0x1c + .2byte 0x2 + .4byte .Ldebug_info0 + .byte 0x4 + .byte 0 + .2byte 0 + .2byte 0 + .4byte .Ltext0 + .4byte .Letext0-.Ltext0 + .4byte 0 + .4byte 0 + .section .debug_macro,"",@progbits +.Ldebug_macro0: + .2byte 0x4 + .byte 0x2 + .4byte .Ldebug_line0 + .byte 0x3 + .byte 0 + .byte 0x1 + .byte 0x5 + .byte 0x1 + .4byte .LASF0 + .byte 0x5 + .byte 0x2 + .4byte .LASF1 + .byte 0x5 + .byte 0x3 + .4byte .LASF2 + .byte 0x5 + .byte 0x4 + .4byte .LASF3 + .byte 0x5 + .byte 0x5 + .4byte .LASF4 + .byte 0x5 + .byte 0x6 + .4byte .LASF5 + .byte 0x5 + .byte 0x7 + .4byte .LASF6 + .byte 0x5 + .byte 0x8 + .4byte .LASF7 + .byte 0x5 + .byte 0x9 + .4byte .LASF8 + .byte 0x5 + .byte 0xa + .4byte .LASF9 + .byte 0x5 + .byte 0xb + .4byte .LASF10 + .byte 0x5 + .byte 0xc + .4byte .LASF11 + .byte 0x5 + .byte 0xd + .4byte .LASF12 + .byte 0x5 + .byte 0xe + .4byte .LASF13 + .byte 0x5 + .byte 0xf + .4byte .LASF14 + .byte 0x5 + .byte 0x10 + .4byte .LASF15 + .byte 0x5 + .byte 0x11 + .4byte .LASF16 + .byte 0x5 + .byte 0x12 + .4byte .LASF17 + .byte 0x5 + .byte 0x13 + .4byte .LASF18 + .byte 0x5 + .byte 0x14 + .4byte .LASF19 + .byte 0x5 + .byte 0x15 + .4byte .LASF20 + .byte 0x5 + .byte 0x16 + .4byte .LASF21 + .byte 0x5 + .byte 0x17 + .4byte .LASF22 + .byte 0x5 + .byte 0x18 + .4byte .LASF23 + .byte 0x5 + .byte 0x19 + .4byte .LASF24 + .byte 0x5 + .byte 0x1a + .4byte .LASF25 + .byte 0x5 + .byte 0x1b + .4byte .LASF26 + .byte 0x5 + .byte 0x1c + .4byte .LASF27 + .byte 0x5 + .byte 0x1d + .4byte .LASF28 + .byte 0x5 + .byte 0x1e + .4byte .LASF29 + .byte 0x5 + .byte 0x1f + .4byte .LASF30 + .byte 0x5 + .byte 0x20 + .4byte .LASF31 + .byte 0x5 + .byte 0x21 + .4byte .LASF32 + .byte 0x5 + .byte 0x22 + .4byte .LASF33 + .byte 0x5 + .byte 0x23 + .4byte .LASF34 + .byte 0x5 + .byte 0x24 + .4byte .LASF35 + .byte 0x5 + .byte 0x25 + .4byte .LASF36 + .byte 0x5 + .byte 0x26 + .4byte .LASF37 + .byte 0x5 + .byte 0x27 + .4byte .LASF38 + .byte 0x5 + .byte 0x28 + .4byte .LASF39 + .byte 0x5 + .byte 0x29 + .4byte .LASF40 + .byte 0x5 + .byte 0x2a + .4byte .LASF41 + .byte 0x5 + .byte 0x2b + .4byte .LASF42 + .byte 0x5 + .byte 0x2c + .4byte .LASF43 + .byte 0x5 + .byte 0x2d + .4byte .LASF44 + .byte 0x5 + .byte 0x2e + .4byte .LASF45 + .byte 0x5 + .byte 0x2f + .4byte .LASF46 + .byte 0x5 + .byte 0x30 + .4byte .LASF47 + .byte 0x5 + .byte 0x31 + .4byte .LASF48 + .byte 0x5 + .byte 0x32 + .4byte .LASF49 + .byte 0x5 + .byte 0x33 + .4byte .LASF50 + .byte 0x5 + .byte 0x34 + .4byte .LASF51 + .byte 0x5 + .byte 0x35 + .4byte .LASF52 + .byte 0x5 + .byte 0x36 + .4byte .LASF53 + .byte 0x5 + .byte 0x37 + .4byte .LASF54 + .byte 0x5 + .byte 0x38 + .4byte .LASF55 + .byte 0x5 + .byte 0x39 + .4byte .LASF56 + .byte 0x5 + .byte 0x3a + .4byte .LASF57 + .byte 0x5 + .byte 0x3b + .4byte .LASF58 + .byte 0x5 + .byte 0x3c + .4byte .LASF59 + .byte 0x5 + .byte 0x3d + .4byte .LASF60 + .byte 0x5 + .byte 0x3e + .4byte .LASF61 + .byte 0x5 + .byte 0x3f + .4byte .LASF62 + .byte 0x5 + .byte 0x40 + .4byte .LASF63 + .byte 0x5 + .byte 0x41 + .4byte .LASF64 + .byte 0x5 + .byte 0x42 + .4byte .LASF65 + .byte 0x5 + .byte 0x43 + .4byte .LASF66 + .byte 0x5 + .byte 0x44 + .4byte .LASF67 + .byte 0x5 + .byte 0x45 + .4byte .LASF68 + .byte 0x5 + .byte 0x46 + .4byte .LASF69 + .byte 0x5 + .byte 0x47 + .4byte .LASF70 + .byte 0x5 + .byte 0x48 + .4byte .LASF71 + .byte 0x5 + .byte 0x49 + .4byte .LASF72 + .byte 0x5 + .byte 0x4a + .4byte .LASF73 + .byte 0x5 + .byte 0x4b + .4byte .LASF74 + .byte 0x5 + .byte 0x4c + .4byte .LASF75 + .byte 0x5 + .byte 0x4d + .4byte .LASF76 + .byte 0x5 + .byte 0x4e + .4byte .LASF77 + .byte 0x5 + .byte 0x4f + .4byte .LASF78 + .byte 0x5 + .byte 0x50 + .4byte .LASF79 + .byte 0x5 + .byte 0x51 + .4byte .LASF80 + .byte 0x5 + .byte 0x52 + .4byte .LASF81 + .byte 0x5 + .byte 0x53 + .4byte .LASF82 + .byte 0x5 + .byte 0x54 + .4byte .LASF83 + .byte 0x5 + .byte 0x55 + .4byte .LASF84 + .byte 0x5 + .byte 0x56 + .4byte .LASF85 + .byte 0x5 + .byte 0x57 + .4byte .LASF86 + .byte 0x5 + .byte 0x58 + .4byte .LASF87 + .byte 0x5 + .byte 0x59 + .4byte .LASF88 + .byte 0x5 + .byte 0x5a + .4byte .LASF89 + .byte 0x5 + .byte 0x5b + .4byte .LASF90 + .byte 0x5 + .byte 0x5c + .4byte .LASF91 + .byte 0x5 + .byte 0x5d + .4byte .LASF92 + .byte 0x5 + .byte 0x5e + .4byte .LASF93 + .byte 0x5 + .byte 0x5f + .4byte .LASF94 + .byte 0x5 + .byte 0x60 + .4byte .LASF95 + .byte 0x5 + .byte 0x61 + .4byte .LASF96 + .byte 0x5 + .byte 0x62 + .4byte .LASF97 + .byte 0x5 + .byte 0x63 + .4byte .LASF98 + .byte 0x5 + .byte 0x64 + .4byte .LASF99 + .byte 0x5 + .byte 0x65 + .4byte .LASF100 + .byte 0x5 + .byte 0x66 + .4byte .LASF101 + .byte 0x5 + .byte 0x67 + .4byte .LASF102 + .byte 0x5 + .byte 0x68 + .4byte .LASF103 + .byte 0x5 + .byte 0x69 + .4byte .LASF104 + .byte 0x5 + .byte 0x6a + .4byte .LASF105 + .byte 0x5 + .byte 0x6b + .4byte .LASF106 + .byte 0x5 + .byte 0x6c + .4byte .LASF107 + .byte 0x5 + .byte 0x6d + .4byte .LASF108 + .byte 0x5 + .byte 0x6e + .4byte .LASF109 + .byte 0x5 + .byte 0x6f + .4byte .LASF110 + .byte 0x5 + .byte 0x70 + .4byte .LASF111 + .byte 0x5 + .byte 0x71 + .4byte .LASF112 + .byte 0x5 + .byte 0x72 + .4byte .LASF113 + .byte 0x5 + .byte 0x73 + .4byte .LASF114 + .byte 0x5 + .byte 0x74 + .4byte .LASF115 + .byte 0x5 + .byte 0x75 + .4byte .LASF116 + .byte 0x5 + .byte 0x76 + .4byte .LASF117 + .byte 0x5 + .byte 0x77 + .4byte .LASF118 + .byte 0x5 + .byte 0x78 + .4byte .LASF119 + .byte 0x5 + .byte 0x79 + .4byte .LASF120 + .byte 0x5 + .byte 0x7a + .4byte .LASF121 + .byte 0x5 + .byte 0x7b + .4byte .LASF122 + .byte 0x5 + .byte 0x7c + .4byte .LASF123 + .byte 0x5 + .byte 0x7d + .4byte .LASF124 + .byte 0x5 + .byte 0x7e + .4byte .LASF125 + .byte 0x5 + .byte 0x7f + .4byte .LASF126 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF127 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF128 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF129 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF130 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF131 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF132 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF133 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF134 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF135 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF136 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF137 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF138 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF139 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF140 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF141 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF142 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF143 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF144 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF145 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF146 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF147 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF148 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF149 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF150 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF151 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF152 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF153 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF154 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF155 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF156 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF157 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF158 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF159 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF160 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF161 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF162 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF163 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF164 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF165 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF166 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF167 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF168 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF169 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF170 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF171 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF172 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF173 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF174 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF175 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF176 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF177 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF178 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF179 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF180 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF181 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF182 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF183 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF184 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF185 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF186 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF187 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF188 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF189 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF190 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF191 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF192 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF193 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF194 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF195 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF196 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF197 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF198 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF199 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF200 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF201 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF202 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF203 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF204 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF205 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF206 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF207 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF208 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF209 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF210 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF211 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF212 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF213 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF214 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF215 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF216 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF217 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF218 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF219 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF220 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF221 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF222 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF223 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF224 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF225 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF226 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF227 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF228 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF229 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF230 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF231 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF232 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF233 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF234 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF235 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF236 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF237 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF238 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF239 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF240 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF241 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF242 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF243 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF244 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF245 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF246 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF247 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF248 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF249 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF250 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF251 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF252 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF253 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF254 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF255 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF256 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF257 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF258 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF259 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF260 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF261 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF262 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF263 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF264 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF265 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF266 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF267 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF268 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF269 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF270 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF271 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF272 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF273 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF274 + .byte 0x5 + .byte 0x94,0x2 + .4byte .LASF275 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF276 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF277 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF278 + .byte 0x5 + .byte 0x98,0x2 + .4byte .LASF279 + .byte 0x5 + .byte 0x99,0x2 + .4byte .LASF280 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF281 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF282 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF283 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF284 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF285 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF286 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF287 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF288 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF289 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF290 + .byte 0x5 + .byte 0xa4,0x2 + .4byte .LASF291 + .byte 0x5 + .byte 0xa5,0x2 + .4byte .LASF292 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF293 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF294 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF295 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF296 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF297 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF298 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF299 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF300 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF301 + .byte 0x5 + .byte 0xaf,0x2 + .4byte .LASF302 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF303 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF304 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF305 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF306 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF307 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF308 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF309 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF310 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF311 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF312 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF313 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF314 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF315 + .byte 0x5 + .byte 0xbd,0x2 + .4byte .LASF316 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF317 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF318 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF319 + .byte 0x5 + .byte 0x1 + .4byte .LASF320 + .byte 0x5 + .byte 0x2 + .4byte .LASF321 + .byte 0x5 + .byte 0x3 + .4byte .LASF322 + .byte 0x5 + .byte 0x4 + .4byte .LASF323 + .byte 0x5 + .byte 0x5 + .4byte .LASF324 + .byte 0x5 + .byte 0x6 + .4byte .LASF325 + .byte 0x5 + .byte 0x7 + .4byte .LASF326 + .byte 0x5 + .byte 0x8 + .4byte .LASF327 + .byte 0x5 + .byte 0x9 + .4byte .LASF328 + .byte 0x3 + .byte 0x25 + .byte 0x6 + .byte 0x5 + .byte 0x26 + .4byte .LASF329 + .byte 0x3 + .byte 0x28 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro2 + .file 7 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral/system_gd32vf103.h" + .byte 0x3 + .byte 0xaf,0x1 + .byte 0x7 + .byte 0x5 + .byte 0x28 + .4byte .LASF341 + .file 8 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\stdint.h" + .byte 0x3 + .byte 0x2e + .byte 0x8 + .byte 0x5 + .byte 0xa + .4byte .LASF342 + .byte 0x3 + .byte 0xc + .byte 0x2 + .byte 0x5 + .byte 0x6 + .4byte .LASF343 + .file 9 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\features.h" + .byte 0x3 + .byte 0x8 + .byte 0x9 + .byte 0x5 + .byte 0x16 + .4byte .LASF344 + .file 10 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\_newlib_version.h" + .byte 0x3 + .byte 0x1c + .byte 0xa + .byte 0x7 + .4byte .Ldebug_macro3 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro5 + .byte 0x4 + .file 11 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_intsup.h" + .byte 0x3 + .byte 0xd + .byte 0xb + .byte 0x7 + .4byte .Ldebug_macro6 + .byte 0x4 + .byte 0x3 + .byte 0xe + .byte 0x3 + .byte 0x7 + .4byte .Ldebug_macro7 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro8 + .byte 0x4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro9 + .file 12 "board/gd32vf103_libopt.h" + .byte 0x3 + .byte 0xec,0x1 + .byte 0xc + .byte 0x5 + .byte 0x25 + .4byte .LASF527 + .file 13 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_adc.h" + .byte 0x3 + .byte 0x27 + .byte 0xd + .byte 0x5 + .byte 0x25 + .4byte .LASF528 + .byte 0x3 + .byte 0x27 + .byte 0x4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro10 + .byte 0x4 + .file 14 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_bkp.h" + .byte 0x3 + .byte 0x28 + .byte 0xe + .byte 0x7 + .4byte .Ldebug_macro11 + .byte 0x4 + .file 15 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_can.h" + .byte 0x3 + .byte 0x29 + .byte 0xf + .byte 0x7 + .4byte .Ldebug_macro12 + .byte 0x4 + .file 16 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_crc.h" + .byte 0x3 + .byte 0x2a + .byte 0x10 + .byte 0x7 + .4byte .Ldebug_macro13 + .byte 0x4 + .file 17 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dac.h" + .byte 0x3 + .byte 0x2b + .byte 0x11 + .byte 0x7 + .4byte .Ldebug_macro14 + .byte 0x4 + .file 18 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dma.h" + .byte 0x3 + .byte 0x2c + .byte 0x12 + .byte 0x7 + .4byte .Ldebug_macro15 + .byte 0x4 + .file 19 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_eclic.h" + .byte 0x3 + .byte 0x2d + .byte 0x13 + .byte 0x7 + .4byte .Ldebug_macro16 + .byte 0x4 + .file 20 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_exmc.h" + .byte 0x3 + .byte 0x2e + .byte 0x14 + .byte 0x7 + .4byte .Ldebug_macro17 + .byte 0x4 + .file 21 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_exti.h" + .byte 0x3 + .byte 0x2f + .byte 0x15 + .byte 0x7 + .4byte .Ldebug_macro18 + .byte 0x4 + .file 22 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_fmc.h" + .byte 0x3 + .byte 0x30 + .byte 0x16 + .byte 0x7 + .4byte .Ldebug_macro19 + .byte 0x4 + .file 23 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_gpio.h" + .byte 0x3 + .byte 0x31 + .byte 0x17 + .byte 0x7 + .4byte .Ldebug_macro20 + .byte 0x4 + .file 24 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_i2c.h" + .byte 0x3 + .byte 0x32 + .byte 0x18 + .byte 0x7 + .4byte .Ldebug_macro21 + .byte 0x4 + .file 25 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_fwdgt.h" + .byte 0x3 + .byte 0x33 + .byte 0x19 + .byte 0x7 + .4byte .Ldebug_macro22 + .byte 0x4 + .file 26 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dbg.h" + .byte 0x3 + .byte 0x34 + .byte 0x1a + .byte 0x7 + .4byte .Ldebug_macro23 + .byte 0x4 + .file 27 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_pmu.h" + .byte 0x3 + .byte 0x35 + .byte 0x1b + .byte 0x7 + .4byte .Ldebug_macro24 + .byte 0x4 + .byte 0x3 + .byte 0x36 + .byte 0x5 + .byte 0x7 + .4byte .Ldebug_macro25 + .byte 0x4 + .file 28 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_rtc.h" + .byte 0x3 + .byte 0x37 + .byte 0x1c + .byte 0x7 + .4byte .Ldebug_macro26 + .byte 0x4 + .file 29 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_spi.h" + .byte 0x3 + .byte 0x38 + .byte 0x1d + .byte 0x7 + .4byte .Ldebug_macro27 + .byte 0x4 + .file 30 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_timer.h" + .byte 0x3 + .byte 0x39 + .byte 0x1e + .byte 0x7 + .4byte .Ldebug_macro28 + .byte 0x4 + .byte 0x3 + .byte 0x3a + .byte 0x6 + .byte 0x4 + .file 31 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_wwdgt.h" + .byte 0x3 + .byte 0x3b + .byte 0x1f + .byte 0x7 + .4byte .Ldebug_macro29 + .byte 0x4 + .file 32 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_func.h" + .byte 0x3 + .byte 0x3c + .byte 0x20 + .byte 0x5 + .byte 0x4 + .4byte .LASF2955 + .file 33 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\lib\\gcc\\riscv-none-embed\\10.2.0\\include\\stddef.h" + .byte 0x3 + .byte 0x7 + .byte 0x21 + .byte 0x7 + .4byte .Ldebug_macro30 + .byte 0x4 + .file 34 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_timer.h" + .byte 0x3 + .byte 0x8 + .byte 0x22 + .byte 0x7 + .4byte .Ldebug_macro31 + .byte 0x4 + .file 35 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_eclic.h" + .byte 0x3 + .byte 0x9 + .byte 0x23 + .byte 0x5 + .byte 0x4 + .4byte .LASF3019 + .file 36 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/riscv_const.h" + .byte 0x3 + .byte 0x6 + .byte 0x24 + .byte 0x7 + .4byte .Ldebug_macro32 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro33 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro34 + .byte 0x4 + .byte 0x4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro35 + .byte 0x4 + .byte 0x4 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103.h.37.6b141d903229e2235d36f2860fb69b6b,comdat +.Ldebug_macro2: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF330 + .byte 0x5 + .byte 0x35 + .4byte .LASF331 + .byte 0x5 + .byte 0x37 + .4byte .LASF332 + .byte 0x5 + .byte 0x38 + .4byte .LASF333 + .byte 0x5 + .byte 0x40 + .4byte .LASF334 + .byte 0x5 + .byte 0x41 + .4byte .LASF335 + .byte 0x5 + .byte 0x49 + .4byte .LASF336 + .byte 0x5 + .byte 0x4e + .4byte .LASF337 + .byte 0x5 + .byte 0x53 + .4byte .LASF338 + .byte 0x5 + .byte 0x58 + .4byte .LASF339 + .byte 0x5 + .byte 0x5d + .4byte .LASF340 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._newlib_version.h.4.bfdf54b0af045d4a71376ae00f63a22c,comdat +.Ldebug_macro3: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4 + .4byte .LASF345 + .byte 0x5 + .byte 0x6 + .4byte .LASF346 + .byte 0x5 + .byte 0x7 + .4byte .LASF347 + .byte 0x5 + .byte 0x8 + .4byte .LASF348 + .byte 0x5 + .byte 0x9 + .4byte .LASF349 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.features.h.33.4ac7543a40bbf4e11e60e29e36a3b28e,comdat +.Ldebug_macro4: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x21 + .4byte .LASF350 + .byte 0x5 + .byte 0x28 + .4byte .LASF351 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF352 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF353 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF354 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF355 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF356 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF357 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF358 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF359 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF360 + .byte 0x5 + .byte 0xca,0x2 + .4byte .LASF361 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._default_types.h.15.247e5cd201eca3442cbf5404108c4935,comdat +.Ldebug_macro5: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xf + .4byte .LASF362 + .byte 0x5 + .byte 0x1a + .4byte .LASF363 + .byte 0x5 + .byte 0x21 + .4byte .LASF364 + .byte 0x5 + .byte 0x2f + .4byte .LASF365 + .byte 0x5 + .byte 0x3d + .4byte .LASF366 + .byte 0x5 + .byte 0x53 + .4byte .LASF367 + .byte 0x5 + .byte 0x6d + .4byte .LASF368 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF369 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF370 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF371 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF372 + .byte 0x6 + .byte 0xf4,0x1 + .4byte .LASF373 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._intsup.h.10.48bafbb683905c4daa4565a85aeeb264,comdat +.Ldebug_macro6: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xa + .4byte .LASF374 + .byte 0x5 + .byte 0x10 + .4byte .LASF375 + .byte 0x6 + .byte 0x2b + .4byte .LASF376 + .byte 0x6 + .byte 0x2c + .4byte .LASF377 + .byte 0x6 + .byte 0x2d + .4byte .LASF378 + .byte 0x6 + .byte 0x2e + .4byte .LASF379 + .byte 0x2 + .byte 0x2f + .string "int" + .byte 0x6 + .byte 0x30 + .4byte .LASF380 + .byte 0x6 + .byte 0x31 + .4byte .LASF381 + .byte 0x6 + .byte 0x32 + .4byte .LASF382 + .byte 0x5 + .byte 0x33 + .4byte .LASF383 + .byte 0x5 + .byte 0x34 + .4byte .LASF384 + .byte 0x5 + .byte 0x35 + .4byte .LASF385 + .byte 0x5 + .byte 0x36 + .4byte .LASF386 + .byte 0x5 + .byte 0x37 + .4byte .LASF387 + .byte 0x5 + .byte 0x38 + .4byte .LASF388 + .byte 0x5 + .byte 0x39 + .4byte .LASF389 + .byte 0x5 + .byte 0x3a + .4byte .LASF390 + .byte 0x5 + .byte 0x43 + .4byte .LASF391 + .byte 0x5 + .byte 0x4a + .4byte .LASF392 + .byte 0x5 + .byte 0x52 + .4byte .LASF393 + .byte 0x5 + .byte 0x5d + .4byte .LASF394 + .byte 0x5 + .byte 0x68 + .4byte .LASF395 + .byte 0x5 + .byte 0x71 + .4byte .LASF396 + .byte 0x5 + .byte 0x78 + .4byte .LASF397 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF398 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF399 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF400 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF401 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF402 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF403 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF404 + .byte 0x6 + .byte 0xb8,0x1 + .4byte .LASF376 + .byte 0x6 + .byte 0xb9,0x1 + .4byte .LASF377 + .byte 0x6 + .byte 0xba,0x1 + .4byte .LASF378 + .byte 0x6 + .byte 0xbb,0x1 + .4byte .LASF379 + .byte 0x2 + .byte 0xbc,0x1 + .string "int" + .byte 0x6 + .byte 0xbd,0x1 + .4byte .LASF382 + .byte 0x6 + .byte 0xc2,0x1 + .4byte .LASF380 + .byte 0x6 + .byte 0xc3,0x1 + .4byte .LASF381 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._stdint.h.10.c24fa3af3bc1706662bb5593a907e841,comdat +.Ldebug_macro7: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xa + .4byte .LASF405 + .byte 0x5 + .byte 0x15 + .4byte .LASF406 + .byte 0x5 + .byte 0x19 + .4byte .LASF407 + .byte 0x5 + .byte 0x1b + .4byte .LASF408 + .byte 0x5 + .byte 0x21 + .4byte .LASF409 + .byte 0x5 + .byte 0x25 + .4byte .LASF410 + .byte 0x5 + .byte 0x27 + .4byte .LASF411 + .byte 0x5 + .byte 0x2d + .4byte .LASF412 + .byte 0x5 + .byte 0x31 + .4byte .LASF413 + .byte 0x5 + .byte 0x33 + .4byte .LASF414 + .byte 0x5 + .byte 0x39 + .4byte .LASF415 + .byte 0x5 + .byte 0x3d + .4byte .LASF416 + .byte 0x5 + .byte 0x3f + .4byte .LASF417 + .byte 0x5 + .byte 0x44 + .4byte .LASF418 + .byte 0x5 + .byte 0x49 + .4byte .LASF419 + .byte 0x5 + .byte 0x4e + .4byte .LASF420 + .byte 0x5 + .byte 0x53 + .4byte .LASF421 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stdint.h.23.d53047a68f4a85177f80b422d52785ed,comdat +.Ldebug_macro8: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x17 + .4byte .LASF422 + .byte 0x5 + .byte 0x1d + .4byte .LASF423 + .byte 0x5 + .byte 0x23 + .4byte .LASF424 + .byte 0x5 + .byte 0x29 + .4byte .LASF425 + .byte 0x5 + .byte 0x35 + .4byte .LASF426 + .byte 0x5 + .byte 0x3f + .4byte .LASF427 + .byte 0x5 + .byte 0x49 + .4byte .LASF428 + .byte 0x5 + .byte 0x53 + .4byte .LASF429 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF430 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF431 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF432 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF433 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF434 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF435 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF436 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF437 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF438 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF439 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF440 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF441 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF442 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF443 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF444 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF445 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF446 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF447 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF448 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF449 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF450 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF451 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF452 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF453 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF454 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF455 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF456 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF457 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF458 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF459 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF460 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF461 + .byte 0x5 + .byte 0x98,0x2 + .4byte .LASF462 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF463 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF464 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF465 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF466 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF467 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF468 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF469 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF470 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF471 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF472 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF473 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF474 + .byte 0x5 + .byte 0xe2,0x2 + .4byte .LASF475 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF476 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF477 + .byte 0x5 + .byte 0xf6,0x2 + .4byte .LASF478 + .byte 0x5 + .byte 0x80,0x3 + .4byte .LASF479 + .byte 0x5 + .byte 0x85,0x3 + .4byte .LASF480 + .byte 0x5 + .byte 0x8c,0x3 + .4byte .LASF481 + .byte 0x5 + .byte 0x8d,0x3 + .4byte .LASF482 + .byte 0x5 + .byte 0x98,0x3 + .4byte .LASF483 + .byte 0x5 + .byte 0x99,0x3 + .4byte .LASF484 + .byte 0x5 + .byte 0xa4,0x3 + .4byte .LASF485 + .byte 0x5 + .byte 0xa5,0x3 + .4byte .LASF486 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF487 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF488 + .byte 0x5 + .byte 0xc1,0x3 + .4byte .LASF489 + .byte 0x5 + .byte 0xc2,0x3 + .4byte .LASF490 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103.h.185.cffba7180870c0512d04c724c6463ab0,comdat +.Ldebug_macro9: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF491 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF492 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF493 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF494 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF495 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF496 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF497 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF498 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF499 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF500 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF501 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF502 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF503 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF504 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF505 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF506 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF507 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF508 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF509 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF510 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF511 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF512 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF513 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF514 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF515 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF516 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF517 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF518 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF519 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF520 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF521 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF522 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF523 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF524 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF525 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF526 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_adc.h.42.14cb8f90e4b5922f8a25d63c78535a21,comdat +.Ldebug_macro10: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x2a + .4byte .LASF529 + .byte 0x5 + .byte 0x2b + .4byte .LASF530 + .byte 0x5 + .byte 0x2e + .4byte .LASF531 + .byte 0x5 + .byte 0x2f + .4byte .LASF532 + .byte 0x5 + .byte 0x30 + .4byte .LASF533 + .byte 0x5 + .byte 0x31 + .4byte .LASF534 + .byte 0x5 + .byte 0x32 + .4byte .LASF535 + .byte 0x5 + .byte 0x33 + .4byte .LASF536 + .byte 0x5 + .byte 0x34 + .4byte .LASF537 + .byte 0x5 + .byte 0x35 + .4byte .LASF538 + .byte 0x5 + .byte 0x36 + .4byte .LASF539 + .byte 0x5 + .byte 0x37 + .4byte .LASF540 + .byte 0x5 + .byte 0x38 + .4byte .LASF541 + .byte 0x5 + .byte 0x39 + .4byte .LASF542 + .byte 0x5 + .byte 0x3a + .4byte .LASF543 + .byte 0x5 + .byte 0x3b + .4byte .LASF544 + .byte 0x5 + .byte 0x3c + .4byte .LASF545 + .byte 0x5 + .byte 0x3d + .4byte .LASF546 + .byte 0x5 + .byte 0x3e + .4byte .LASF547 + .byte 0x5 + .byte 0x3f + .4byte .LASF548 + .byte 0x5 + .byte 0x40 + .4byte .LASF549 + .byte 0x5 + .byte 0x41 + .4byte .LASF550 + .byte 0x5 + .byte 0x42 + .4byte .LASF551 + .byte 0x5 + .byte 0x46 + .4byte .LASF552 + .byte 0x5 + .byte 0x47 + .4byte .LASF553 + .byte 0x5 + .byte 0x48 + .4byte .LASF554 + .byte 0x5 + .byte 0x49 + .4byte .LASF555 + .byte 0x5 + .byte 0x4a + .4byte .LASF556 + .byte 0x5 + .byte 0x4d + .4byte .LASF557 + .byte 0x5 + .byte 0x4e + .4byte .LASF558 + .byte 0x5 + .byte 0x4f + .4byte .LASF559 + .byte 0x5 + .byte 0x50 + .4byte .LASF560 + .byte 0x5 + .byte 0x51 + .4byte .LASF561 + .byte 0x5 + .byte 0x52 + .4byte .LASF562 + .byte 0x5 + .byte 0x53 + .4byte .LASF563 + .byte 0x5 + .byte 0x54 + .4byte .LASF564 + .byte 0x5 + .byte 0x55 + .4byte .LASF565 + .byte 0x5 + .byte 0x56 + .4byte .LASF566 + .byte 0x5 + .byte 0x57 + .4byte .LASF567 + .byte 0x5 + .byte 0x58 + .4byte .LASF568 + .byte 0x5 + .byte 0x59 + .4byte .LASF569 + .byte 0x5 + .byte 0x5c + .4byte .LASF570 + .byte 0x5 + .byte 0x5d + .4byte .LASF571 + .byte 0x5 + .byte 0x5e + .4byte .LASF572 + .byte 0x5 + .byte 0x5f + .4byte .LASF573 + .byte 0x5 + .byte 0x60 + .4byte .LASF574 + .byte 0x5 + .byte 0x61 + .4byte .LASF575 + .byte 0x5 + .byte 0x62 + .4byte .LASF576 + .byte 0x5 + .byte 0x63 + .4byte .LASF577 + .byte 0x5 + .byte 0x64 + .4byte .LASF578 + .byte 0x5 + .byte 0x65 + .4byte .LASF579 + .byte 0x5 + .byte 0x66 + .4byte .LASF580 + .byte 0x5 + .byte 0x67 + .4byte .LASF581 + .byte 0x5 + .byte 0x68 + .4byte .LASF582 + .byte 0x5 + .byte 0x6b + .4byte .LASF583 + .byte 0x5 + .byte 0x6e + .4byte .LASF584 + .byte 0x5 + .byte 0x71 + .4byte .LASF585 + .byte 0x5 + .byte 0x74 + .4byte .LASF586 + .byte 0x5 + .byte 0x77 + .4byte .LASF587 + .byte 0x5 + .byte 0x78 + .4byte .LASF588 + .byte 0x5 + .byte 0x7b + .4byte .LASF589 + .byte 0x5 + .byte 0x7c + .4byte .LASF590 + .byte 0x5 + .byte 0x7f + .4byte .LASF591 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF592 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF593 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF594 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF595 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF596 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF597 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF598 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF599 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF600 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF601 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF602 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF603 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF604 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF605 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF606 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF607 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF608 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF609 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF610 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF611 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF612 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF613 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF614 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF615 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF616 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF617 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF618 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF619 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF620 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF621 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF622 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF623 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF624 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF625 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF626 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF627 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF628 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF629 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF630 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF631 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF632 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF633 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF634 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF635 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF636 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF637 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF638 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF639 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF640 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF641 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF642 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF643 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF644 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF645 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF646 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF647 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF648 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF649 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF650 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF651 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF652 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF653 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF654 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF655 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF656 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF657 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF658 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF659 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF660 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF661 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF662 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF663 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF664 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF665 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF666 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF667 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF668 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF669 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF670 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF671 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF672 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF673 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF674 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF675 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF676 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF677 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF678 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF679 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF680 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF681 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF682 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF683 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF684 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF685 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF686 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF687 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF688 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF689 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF690 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF691 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF692 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF693 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF694 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF695 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF696 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF697 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF698 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF699 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF700 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF701 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF702 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF703 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF704 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF705 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF706 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF707 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF708 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF709 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF710 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_bkp.h.37.565cdaf530a41cd40ed21e5fda39a6ed,comdat +.Ldebug_macro11: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF711 + .byte 0x5 + .byte 0x2a + .4byte .LASF712 + .byte 0x5 + .byte 0x2d + .4byte .LASF713 + .byte 0x5 + .byte 0x2e + .4byte .LASF714 + .byte 0x5 + .byte 0x2f + .4byte .LASF715 + .byte 0x5 + .byte 0x30 + .4byte .LASF716 + .byte 0x5 + .byte 0x31 + .4byte .LASF717 + .byte 0x5 + .byte 0x32 + .4byte .LASF718 + .byte 0x5 + .byte 0x33 + .4byte .LASF719 + .byte 0x5 + .byte 0x34 + .4byte .LASF720 + .byte 0x5 + .byte 0x35 + .4byte .LASF721 + .byte 0x5 + .byte 0x36 + .4byte .LASF722 + .byte 0x5 + .byte 0x37 + .4byte .LASF723 + .byte 0x5 + .byte 0x38 + .4byte .LASF724 + .byte 0x5 + .byte 0x39 + .4byte .LASF725 + .byte 0x5 + .byte 0x3a + .4byte .LASF726 + .byte 0x5 + .byte 0x3b + .4byte .LASF727 + .byte 0x5 + .byte 0x3c + .4byte .LASF728 + .byte 0x5 + .byte 0x3d + .4byte .LASF729 + .byte 0x5 + .byte 0x3e + .4byte .LASF730 + .byte 0x5 + .byte 0x3f + .4byte .LASF731 + .byte 0x5 + .byte 0x40 + .4byte .LASF732 + .byte 0x5 + .byte 0x41 + .4byte .LASF733 + .byte 0x5 + .byte 0x42 + .4byte .LASF734 + .byte 0x5 + .byte 0x43 + .4byte .LASF735 + .byte 0x5 + .byte 0x44 + .4byte .LASF736 + .byte 0x5 + .byte 0x45 + .4byte .LASF737 + .byte 0x5 + .byte 0x46 + .4byte .LASF738 + .byte 0x5 + .byte 0x47 + .4byte .LASF739 + .byte 0x5 + .byte 0x48 + .4byte .LASF740 + .byte 0x5 + .byte 0x49 + .4byte .LASF741 + .byte 0x5 + .byte 0x4a + .4byte .LASF742 + .byte 0x5 + .byte 0x4b + .4byte .LASF743 + .byte 0x5 + .byte 0x4c + .4byte .LASF744 + .byte 0x5 + .byte 0x4d + .4byte .LASF745 + .byte 0x5 + .byte 0x4e + .4byte .LASF746 + .byte 0x5 + .byte 0x4f + .4byte .LASF747 + .byte 0x5 + .byte 0x50 + .4byte .LASF748 + .byte 0x5 + .byte 0x51 + .4byte .LASF749 + .byte 0x5 + .byte 0x52 + .4byte .LASF750 + .byte 0x5 + .byte 0x53 + .4byte .LASF751 + .byte 0x5 + .byte 0x54 + .4byte .LASF752 + .byte 0x5 + .byte 0x55 + .4byte .LASF753 + .byte 0x5 + .byte 0x56 + .4byte .LASF754 + .byte 0x5 + .byte 0x57 + .4byte .LASF755 + .byte 0x5 + .byte 0x58 + .4byte .LASF756 + .byte 0x5 + .byte 0x59 + .4byte .LASF757 + .byte 0x5 + .byte 0x5d + .4byte .LASF758 + .byte 0x5 + .byte 0x60 + .4byte .LASF759 + .byte 0x5 + .byte 0x61 + .4byte .LASF760 + .byte 0x5 + .byte 0x62 + .4byte .LASF761 + .byte 0x5 + .byte 0x63 + .4byte .LASF762 + .byte 0x5 + .byte 0x66 + .4byte .LASF763 + .byte 0x5 + .byte 0x67 + .4byte .LASF764 + .byte 0x5 + .byte 0x6a + .4byte .LASF765 + .byte 0x5 + .byte 0x6b + .4byte .LASF766 + .byte 0x5 + .byte 0x6c + .4byte .LASF767 + .byte 0x5 + .byte 0x6d + .4byte .LASF768 + .byte 0x5 + .byte 0x6e + .4byte .LASF769 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF770 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF771 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF772 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF773 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF774 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF775 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF776 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF777 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF778 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF779 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_can.h.39.9380e444d8240972fa3c91ce629786a4,comdat +.Ldebug_macro12: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF780 + .byte 0x5 + .byte 0x2c + .4byte .LASF781 + .byte 0x5 + .byte 0x2d + .4byte .LASF782 + .byte 0x5 + .byte 0x30 + .4byte .LASF783 + .byte 0x5 + .byte 0x31 + .4byte .LASF784 + .byte 0x5 + .byte 0x32 + .4byte .LASF785 + .byte 0x5 + .byte 0x33 + .4byte .LASF786 + .byte 0x5 + .byte 0x34 + .4byte .LASF787 + .byte 0x5 + .byte 0x35 + .4byte .LASF788 + .byte 0x5 + .byte 0x36 + .4byte .LASF789 + .byte 0x5 + .byte 0x37 + .4byte .LASF790 + .byte 0x5 + .byte 0x38 + .4byte .LASF791 + .byte 0x5 + .byte 0x39 + .4byte .LASF792 + .byte 0x5 + .byte 0x3a + .4byte .LASF793 + .byte 0x5 + .byte 0x3b + .4byte .LASF794 + .byte 0x5 + .byte 0x3c + .4byte .LASF795 + .byte 0x5 + .byte 0x3d + .4byte .LASF796 + .byte 0x5 + .byte 0x3e + .4byte .LASF797 + .byte 0x5 + .byte 0x3f + .4byte .LASF798 + .byte 0x5 + .byte 0x40 + .4byte .LASF799 + .byte 0x5 + .byte 0x41 + .4byte .LASF800 + .byte 0x5 + .byte 0x42 + .4byte .LASF801 + .byte 0x5 + .byte 0x43 + .4byte .LASF802 + .byte 0x5 + .byte 0x44 + .4byte .LASF803 + .byte 0x5 + .byte 0x45 + .4byte .LASF804 + .byte 0x5 + .byte 0x46 + .4byte .LASF805 + .byte 0x5 + .byte 0x47 + .4byte .LASF806 + .byte 0x5 + .byte 0x48 + .4byte .LASF807 + .byte 0x5 + .byte 0x49 + .4byte .LASF808 + .byte 0x5 + .byte 0x4a + .4byte .LASF809 + .byte 0x5 + .byte 0x4b + .4byte .LASF810 + .byte 0x5 + .byte 0x4c + .4byte .LASF811 + .byte 0x5 + .byte 0x4d + .4byte .LASF812 + .byte 0x5 + .byte 0x4e + .4byte .LASF813 + .byte 0x5 + .byte 0x4f + .4byte .LASF814 + .byte 0x5 + .byte 0x50 + .4byte .LASF815 + .byte 0x5 + .byte 0x51 + .4byte .LASF816 + .byte 0x5 + .byte 0x52 + .4byte .LASF817 + .byte 0x5 + .byte 0x53 + .4byte .LASF818 + .byte 0x5 + .byte 0x54 + .4byte .LASF819 + .byte 0x5 + .byte 0x55 + .4byte .LASF820 + .byte 0x5 + .byte 0x56 + .4byte .LASF821 + .byte 0x5 + .byte 0x57 + .4byte .LASF822 + .byte 0x5 + .byte 0x58 + .4byte .LASF823 + .byte 0x5 + .byte 0x59 + .4byte .LASF824 + .byte 0x5 + .byte 0x5a + .4byte .LASF825 + .byte 0x5 + .byte 0x5b + .4byte .LASF826 + .byte 0x5 + .byte 0x5c + .4byte .LASF827 + .byte 0x5 + .byte 0x5d + .4byte .LASF828 + .byte 0x5 + .byte 0x5e + .4byte .LASF829 + .byte 0x5 + .byte 0x5f + .4byte .LASF830 + .byte 0x5 + .byte 0x60 + .4byte .LASF831 + .byte 0x5 + .byte 0x61 + .4byte .LASF832 + .byte 0x5 + .byte 0x62 + .4byte .LASF833 + .byte 0x5 + .byte 0x63 + .4byte .LASF834 + .byte 0x5 + .byte 0x64 + .4byte .LASF835 + .byte 0x5 + .byte 0x65 + .4byte .LASF836 + .byte 0x5 + .byte 0x66 + .4byte .LASF837 + .byte 0x5 + .byte 0x67 + .4byte .LASF838 + .byte 0x5 + .byte 0x68 + .4byte .LASF839 + .byte 0x5 + .byte 0x69 + .4byte .LASF840 + .byte 0x5 + .byte 0x6a + .4byte .LASF841 + .byte 0x5 + .byte 0x6b + .4byte .LASF842 + .byte 0x5 + .byte 0x6c + .4byte .LASF843 + .byte 0x5 + .byte 0x6d + .4byte .LASF844 + .byte 0x5 + .byte 0x6e + .4byte .LASF845 + .byte 0x5 + .byte 0x6f + .4byte .LASF846 + .byte 0x5 + .byte 0x70 + .4byte .LASF847 + .byte 0x5 + .byte 0x71 + .4byte .LASF848 + .byte 0x5 + .byte 0x72 + .4byte .LASF849 + .byte 0x5 + .byte 0x73 + .4byte .LASF850 + .byte 0x5 + .byte 0x74 + .4byte .LASF851 + .byte 0x5 + .byte 0x75 + .4byte .LASF852 + .byte 0x5 + .byte 0x76 + .4byte .LASF853 + .byte 0x5 + .byte 0x77 + .4byte .LASF854 + .byte 0x5 + .byte 0x78 + .4byte .LASF855 + .byte 0x5 + .byte 0x79 + .4byte .LASF856 + .byte 0x5 + .byte 0x7a + .4byte .LASF857 + .byte 0x5 + .byte 0x7b + .4byte .LASF858 + .byte 0x5 + .byte 0x7c + .4byte .LASF859 + .byte 0x5 + .byte 0x7d + .4byte .LASF860 + .byte 0x5 + .byte 0x7e + .4byte .LASF861 + .byte 0x5 + .byte 0x7f + .4byte .LASF862 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF863 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF864 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF865 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF866 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF867 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF868 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF869 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF870 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF871 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF872 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF873 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF874 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF875 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF876 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF877 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF878 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF879 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF880 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF881 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF882 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF883 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF884 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF885 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF886 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF887 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF888 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF889 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF890 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF891 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF892 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF893 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF894 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF895 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF896 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF897 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF898 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF899 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF900 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF901 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF902 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF903 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF904 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF905 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF906 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF907 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF908 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF909 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF910 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF911 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF912 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF913 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF914 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF915 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF916 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF917 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF918 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF919 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF920 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF921 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF922 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF923 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF924 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF925 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF926 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF927 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF928 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF929 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF930 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF931 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF932 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF933 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF934 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF935 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF936 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF937 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF938 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF939 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF940 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF941 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF942 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF943 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF944 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF945 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF946 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF947 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF948 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF949 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF950 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF951 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF952 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF953 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF954 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF955 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF956 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF957 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF958 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF959 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF960 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF961 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF962 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF963 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF964 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF965 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF966 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF967 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF968 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF969 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF970 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF971 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF972 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF973 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF974 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF975 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF976 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF977 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF978 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF979 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF980 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF981 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF982 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF983 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF984 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF985 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF986 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF987 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF988 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF989 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF990 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF991 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF992 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF993 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF994 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF995 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF996 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF997 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF998 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF999 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF1000 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF1001 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF1002 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF1003 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF1004 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF1005 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF1006 + .byte 0x5 + .byte 0xe4,0x3 + .4byte .LASF1007 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF1008 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF1009 + .byte 0x5 + .byte 0xed,0x3 + .4byte .LASF1010 + .byte 0x5 + .byte 0xf0,0x3 + .4byte .LASF1011 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF1012 + .byte 0x5 + .byte 0xf6,0x3 + .4byte .LASF1013 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF1014 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF1015 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF1016 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF1017 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF1018 + .byte 0x5 + .byte 0x88,0x4 + .4byte .LASF1019 + .byte 0x5 + .byte 0x8b,0x4 + .4byte .LASF1020 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF1021 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF1022 + .byte 0x5 + .byte 0x94,0x4 + .4byte .LASF1023 + .byte 0x5 + .byte 0x97,0x4 + .4byte .LASF1024 + .byte 0x5 + .byte 0x9a,0x4 + .4byte .LASF1025 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF1026 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF1027 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF1028 + .byte 0x5 + .byte 0xa6,0x4 + .4byte .LASF1029 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF1030 + .byte 0x5 + .byte 0xac,0x4 + .4byte .LASF1031 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF1032 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF1033 + .byte 0x5 + .byte 0xb5,0x4 + .4byte .LASF1034 + .byte 0x5 + .byte 0xb8,0x4 + .4byte .LASF1035 + .byte 0x5 + .byte 0xbb,0x4 + .4byte .LASF1036 + .byte 0x5 + .byte 0xbe,0x4 + .4byte .LASF1037 + .byte 0x5 + .byte 0xc1,0x4 + .4byte .LASF1038 + .byte 0x5 + .byte 0xc4,0x4 + .4byte .LASF1039 + .byte 0x5 + .byte 0xc7,0x4 + .4byte .LASF1040 + .byte 0x5 + .byte 0xc8,0x4 + .4byte .LASF1041 + .byte 0x5 + .byte 0xc9,0x4 + .4byte .LASF1042 + .byte 0x5 + .byte 0xca,0x4 + .4byte .LASF1043 + .byte 0x5 + .byte 0xcb,0x4 + .4byte .LASF1044 + .byte 0x5 + .byte 0xcc,0x4 + .4byte .LASF1045 + .byte 0x5 + .byte 0xcd,0x4 + .4byte .LASF1046 + .byte 0x5 + .byte 0xce,0x4 + .4byte .LASF1047 + .byte 0x5 + .byte 0xcf,0x4 + .4byte .LASF1048 + .byte 0x5 + .byte 0xd1,0x4 + .4byte .LASF1049 + .byte 0x5 + .byte 0xd4,0x4 + .4byte .LASF1050 + .byte 0x5 + .byte 0xd5,0x4 + .4byte .LASF1051 + .byte 0x5 + .byte 0xd6,0x4 + .4byte .LASF1052 + .byte 0x5 + .byte 0xd7,0x4 + .4byte .LASF1053 + .byte 0x5 + .byte 0xda,0x4 + .4byte .LASF1054 + .byte 0x5 + .byte 0xdb,0x4 + .4byte .LASF1055 + .byte 0x5 + .byte 0xdc,0x4 + .4byte .LASF1056 + .byte 0x5 + .byte 0xdd,0x4 + .4byte .LASF1057 + .byte 0x5 + .byte 0xe0,0x4 + .4byte .LASF1058 + .byte 0x5 + .byte 0xe1,0x4 + .4byte .LASF1059 + .byte 0x5 + .byte 0xe2,0x4 + .4byte .LASF1060 + .byte 0x5 + .byte 0xe3,0x4 + .4byte .LASF1061 + .byte 0x5 + .byte 0xe4,0x4 + .4byte .LASF1062 + .byte 0x5 + .byte 0xe5,0x4 + .4byte .LASF1063 + .byte 0x5 + .byte 0xe6,0x4 + .4byte .LASF1064 + .byte 0x5 + .byte 0xe7,0x4 + .4byte .LASF1065 + .byte 0x5 + .byte 0xe8,0x4 + .4byte .LASF1066 + .byte 0x5 + .byte 0xe9,0x4 + .4byte .LASF1067 + .byte 0x5 + .byte 0xea,0x4 + .4byte .LASF1068 + .byte 0x5 + .byte 0xeb,0x4 + .4byte .LASF1069 + .byte 0x5 + .byte 0xec,0x4 + .4byte .LASF1070 + .byte 0x5 + .byte 0xed,0x4 + .4byte .LASF1071 + .byte 0x5 + .byte 0xee,0x4 + .4byte .LASF1072 + .byte 0x5 + .byte 0xef,0x4 + .4byte .LASF1073 + .byte 0x5 + .byte 0xf2,0x4 + .4byte .LASF1074 + .byte 0x5 + .byte 0xf3,0x4 + .4byte .LASF1075 + .byte 0x5 + .byte 0xf4,0x4 + .4byte .LASF1076 + .byte 0x5 + .byte 0xf5,0x4 + .4byte .LASF1077 + .byte 0x5 + .byte 0xf6,0x4 + .4byte .LASF1078 + .byte 0x5 + .byte 0xf7,0x4 + .4byte .LASF1079 + .byte 0x5 + .byte 0xf8,0x4 + .4byte .LASF1080 + .byte 0x5 + .byte 0xf9,0x4 + .4byte .LASF1081 + .byte 0x5 + .byte 0xfc,0x4 + .4byte .LASF1082 + .byte 0x5 + .byte 0xfd,0x4 + .4byte .LASF1083 + .byte 0x5 + .byte 0xfe,0x4 + .4byte .LASF1084 + .byte 0x5 + .byte 0xff,0x4 + .4byte .LASF1085 + .byte 0x5 + .byte 0x82,0x5 + .4byte .LASF1086 + .byte 0x5 + .byte 0x83,0x5 + .4byte .LASF1087 + .byte 0x5 + .byte 0x86,0x5 + .4byte .LASF1088 + .byte 0x5 + .byte 0x87,0x5 + .4byte .LASF1089 + .byte 0x5 + .byte 0x8a,0x5 + .4byte .LASF1090 + .byte 0x5 + .byte 0x8c,0x5 + .4byte .LASF1091 + .byte 0x5 + .byte 0x8d,0x5 + .4byte .LASF1092 + .byte 0x5 + .byte 0x90,0x5 + .4byte .LASF1093 + .byte 0x5 + .byte 0x91,0x5 + .4byte .LASF1094 + .byte 0x5 + .byte 0x92,0x5 + .4byte .LASF1095 + .byte 0x5 + .byte 0x95,0x5 + .4byte .LASF1096 + .byte 0x5 + .byte 0x96,0x5 + .4byte .LASF1097 + .byte 0x5 + .byte 0x99,0x5 + .4byte .LASF1098 + .byte 0x5 + .byte 0x9a,0x5 + .4byte .LASF1099 + .byte 0x5 + .byte 0x9d,0x5 + .4byte .LASF1100 + .byte 0x5 + .byte 0xa0,0x5 + .4byte .LASF1101 + .byte 0x5 + .byte 0xa1,0x5 + .4byte .LASF1102 + .byte 0x5 + .byte 0xa4,0x5 + .4byte .LASF1103 + .byte 0x5 + .byte 0xa7,0x5 + .4byte .LASF1104 + .byte 0x5 + .byte 0xa8,0x5 + .4byte .LASF1105 + .byte 0x5 + .byte 0xa9,0x5 + .4byte .LASF1106 + .byte 0x5 + .byte 0xaa,0x5 + .4byte .LASF1107 + .byte 0x5 + .byte 0xab,0x5 + .4byte .LASF1108 + .byte 0x5 + .byte 0xac,0x5 + .4byte .LASF1109 + .byte 0x5 + .byte 0xad,0x5 + .4byte .LASF1110 + .byte 0x5 + .byte 0xae,0x5 + .4byte .LASF1111 + .byte 0x5 + .byte 0xaf,0x5 + .4byte .LASF1112 + .byte 0x5 + .byte 0xb0,0x5 + .4byte .LASF1113 + .byte 0x5 + .byte 0xb1,0x5 + .4byte .LASF1114 + .byte 0x5 + .byte 0xb2,0x5 + .4byte .LASF1115 + .byte 0x5 + .byte 0xb3,0x5 + .4byte .LASF1116 + .byte 0x5 + .byte 0xb4,0x5 + .4byte .LASF1117 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_crc.h.37.f77f53f1516fc65e49eac544ab82df8c,comdat +.Ldebug_macro13: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1118 + .byte 0x5 + .byte 0x2a + .4byte .LASF1119 + .byte 0x5 + .byte 0x2d + .4byte .LASF1120 + .byte 0x5 + .byte 0x2e + .4byte .LASF1121 + .byte 0x5 + .byte 0x2f + .4byte .LASF1122 + .byte 0x5 + .byte 0x33 + .4byte .LASF1123 + .byte 0x5 + .byte 0x36 + .4byte .LASF1124 + .byte 0x5 + .byte 0x39 + .4byte .LASF1125 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dac.h.37.c64e29f692c863eb577e59c8c0ad940a,comdat +.Ldebug_macro14: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1126 + .byte 0x5 + .byte 0x2a + .4byte .LASF1127 + .byte 0x5 + .byte 0x2b + .4byte .LASF1128 + .byte 0x5 + .byte 0x2c + .4byte .LASF1129 + .byte 0x5 + .byte 0x2f + .4byte .LASF1130 + .byte 0x5 + .byte 0x30 + .4byte .LASF1131 + .byte 0x5 + .byte 0x31 + .4byte .LASF1132 + .byte 0x5 + .byte 0x32 + .4byte .LASF1133 + .byte 0x5 + .byte 0x33 + .4byte .LASF1134 + .byte 0x5 + .byte 0x34 + .4byte .LASF1135 + .byte 0x5 + .byte 0x35 + .4byte .LASF1136 + .byte 0x5 + .byte 0x36 + .4byte .LASF1137 + .byte 0x5 + .byte 0x37 + .4byte .LASF1138 + .byte 0x5 + .byte 0x38 + .4byte .LASF1139 + .byte 0x5 + .byte 0x39 + .4byte .LASF1140 + .byte 0x5 + .byte 0x3a + .4byte .LASF1141 + .byte 0x5 + .byte 0x3b + .4byte .LASF1142 + .byte 0x5 + .byte 0x3f + .4byte .LASF1143 + .byte 0x5 + .byte 0x40 + .4byte .LASF1144 + .byte 0x5 + .byte 0x41 + .4byte .LASF1145 + .byte 0x5 + .byte 0x42 + .4byte .LASF1146 + .byte 0x5 + .byte 0x43 + .4byte .LASF1147 + .byte 0x5 + .byte 0x44 + .4byte .LASF1148 + .byte 0x5 + .byte 0x45 + .4byte .LASF1149 + .byte 0x5 + .byte 0x46 + .4byte .LASF1150 + .byte 0x5 + .byte 0x47 + .4byte .LASF1151 + .byte 0x5 + .byte 0x48 + .4byte .LASF1152 + .byte 0x5 + .byte 0x49 + .4byte .LASF1153 + .byte 0x5 + .byte 0x4a + .4byte .LASF1154 + .byte 0x5 + .byte 0x4b + .4byte .LASF1155 + .byte 0x5 + .byte 0x4c + .4byte .LASF1156 + .byte 0x5 + .byte 0x4f + .4byte .LASF1157 + .byte 0x5 + .byte 0x50 + .4byte .LASF1158 + .byte 0x5 + .byte 0x53 + .4byte .LASF1159 + .byte 0x5 + .byte 0x56 + .4byte .LASF1160 + .byte 0x5 + .byte 0x59 + .4byte .LASF1161 + .byte 0x5 + .byte 0x5c + .4byte .LASF1162 + .byte 0x5 + .byte 0x5f + .4byte .LASF1163 + .byte 0x5 + .byte 0x62 + .4byte .LASF1164 + .byte 0x5 + .byte 0x65 + .4byte .LASF1165 + .byte 0x5 + .byte 0x66 + .4byte .LASF1166 + .byte 0x5 + .byte 0x69 + .4byte .LASF1167 + .byte 0x5 + .byte 0x6a + .4byte .LASF1168 + .byte 0x5 + .byte 0x6d + .4byte .LASF1169 + .byte 0x5 + .byte 0x6e + .4byte .LASF1170 + .byte 0x5 + .byte 0x71 + .4byte .LASF1171 + .byte 0x5 + .byte 0x74 + .4byte .LASF1172 + .byte 0x5 + .byte 0x78 + .4byte .LASF1173 + .byte 0x5 + .byte 0x79 + .4byte .LASF1174 + .byte 0x5 + .byte 0x7a + .4byte .LASF1175 + .byte 0x5 + .byte 0x7b + .4byte .LASF1176 + .byte 0x5 + .byte 0x7c + .4byte .LASF1177 + .byte 0x5 + .byte 0x7d + .4byte .LASF1178 + .byte 0x5 + .byte 0x7e + .4byte .LASF1179 + .byte 0x5 + .byte 0x7f + .4byte .LASF1180 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF1181 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF1182 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF1183 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1184 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1185 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF1186 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1187 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1188 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF1189 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF1190 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1191 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1192 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1193 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF1194 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF1195 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF1196 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF1197 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1198 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1199 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1200 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1201 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1202 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF1203 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF1204 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1205 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1206 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1207 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1208 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1209 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1210 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1211 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1212 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1213 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1214 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF1215 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1216 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1217 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1218 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1219 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1220 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1221 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF1222 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF1223 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1224 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1225 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1226 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dma.h.38.2c314170096cba83b58f6eccfc84a5f7,comdat +.Ldebug_macro15: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x26 + .4byte .LASF1227 + .byte 0x5 + .byte 0x2b + .4byte .LASF1228 + .byte 0x5 + .byte 0x2c + .4byte .LASF1229 + .byte 0x5 + .byte 0x2f + .4byte .LASF1230 + .byte 0x5 + .byte 0x30 + .4byte .LASF1231 + .byte 0x5 + .byte 0x32 + .4byte .LASF1232 + .byte 0x5 + .byte 0x33 + .4byte .LASF1233 + .byte 0x5 + .byte 0x34 + .4byte .LASF1234 + .byte 0x5 + .byte 0x35 + .4byte .LASF1235 + .byte 0x5 + .byte 0x37 + .4byte .LASF1236 + .byte 0x5 + .byte 0x38 + .4byte .LASF1237 + .byte 0x5 + .byte 0x39 + .4byte .LASF1238 + .byte 0x5 + .byte 0x3a + .4byte .LASF1239 + .byte 0x5 + .byte 0x3c + .4byte .LASF1240 + .byte 0x5 + .byte 0x3d + .4byte .LASF1241 + .byte 0x5 + .byte 0x3e + .4byte .LASF1242 + .byte 0x5 + .byte 0x3f + .4byte .LASF1243 + .byte 0x5 + .byte 0x41 + .4byte .LASF1244 + .byte 0x5 + .byte 0x42 + .4byte .LASF1245 + .byte 0x5 + .byte 0x43 + .4byte .LASF1246 + .byte 0x5 + .byte 0x44 + .4byte .LASF1247 + .byte 0x5 + .byte 0x46 + .4byte .LASF1248 + .byte 0x5 + .byte 0x47 + .4byte .LASF1249 + .byte 0x5 + .byte 0x48 + .4byte .LASF1250 + .byte 0x5 + .byte 0x49 + .4byte .LASF1251 + .byte 0x5 + .byte 0x4b + .4byte .LASF1252 + .byte 0x5 + .byte 0x4c + .4byte .LASF1253 + .byte 0x5 + .byte 0x4d + .4byte .LASF1254 + .byte 0x5 + .byte 0x4e + .4byte .LASF1255 + .byte 0x5 + .byte 0x50 + .4byte .LASF1256 + .byte 0x5 + .byte 0x51 + .4byte .LASF1257 + .byte 0x5 + .byte 0x52 + .4byte .LASF1258 + .byte 0x5 + .byte 0x53 + .4byte .LASF1259 + .byte 0x5 + .byte 0x57 + .4byte .LASF1260 + .byte 0x5 + .byte 0x58 + .4byte .LASF1261 + .byte 0x5 + .byte 0x59 + .4byte .LASF1262 + .byte 0x5 + .byte 0x5a + .4byte .LASF1263 + .byte 0x5 + .byte 0x5d + .4byte .LASF1264 + .byte 0x5 + .byte 0x5e + .4byte .LASF1265 + .byte 0x5 + .byte 0x5f + .4byte .LASF1266 + .byte 0x5 + .byte 0x60 + .4byte .LASF1267 + .byte 0x5 + .byte 0x63 + .4byte .LASF1268 + .byte 0x5 + .byte 0x64 + .4byte .LASF1269 + .byte 0x5 + .byte 0x65 + .4byte .LASF1270 + .byte 0x5 + .byte 0x66 + .4byte .LASF1271 + .byte 0x5 + .byte 0x67 + .4byte .LASF1272 + .byte 0x5 + .byte 0x68 + .4byte .LASF1273 + .byte 0x5 + .byte 0x69 + .4byte .LASF1274 + .byte 0x5 + .byte 0x6a + .4byte .LASF1275 + .byte 0x5 + .byte 0x6b + .4byte .LASF1276 + .byte 0x5 + .byte 0x6c + .4byte .LASF1277 + .byte 0x5 + .byte 0x6d + .4byte .LASF1278 + .byte 0x5 + .byte 0x6e + .4byte .LASF1279 + .byte 0x5 + .byte 0x71 + .4byte .LASF1280 + .byte 0x5 + .byte 0x74 + .4byte .LASF1281 + .byte 0x5 + .byte 0x77 + .4byte .LASF1282 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1283 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1284 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1285 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1286 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1287 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1288 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1289 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1290 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1291 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1292 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1293 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1294 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1295 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1296 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1297 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1298 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1299 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1300 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1301 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1302 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1303 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF1304 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1305 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1306 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1307 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1308 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1309 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF1310 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF1311 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF1312 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF1313 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF1314 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1315 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF1316 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF1317 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1318 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1319 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF1320 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF1321 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1322 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF1323 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1324 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1325 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_eclic.h.37.7db9f8893169694757dea82a4b9eed61,comdat +.Ldebug_macro16: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1326 + .byte 0x5 + .byte 0x2a + .4byte .LASF1327 + .byte 0x5 + .byte 0x2b + .4byte .LASF1328 + .byte 0x5 + .byte 0x2c + .4byte .LASF1329 + .byte 0x5 + .byte 0x2d + .4byte .LASF1330 + .byte 0x5 + .byte 0x2e + .4byte .LASF1331 + .byte 0x5 + .byte 0x30 + .4byte .LASF1332 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_exmc.h.37.96699be4b910beb81cdfd35650becbf1,comdat +.Ldebug_macro17: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1333 + .byte 0x5 + .byte 0x2a + .4byte .LASF1334 + .byte 0x5 + .byte 0x2e + .4byte .LASF1335 + .byte 0x5 + .byte 0x2f + .4byte .LASF1336 + .byte 0x5 + .byte 0x30 + .4byte .LASF1337 + .byte 0x5 + .byte 0x35 + .4byte .LASF1338 + .byte 0x5 + .byte 0x36 + .4byte .LASF1339 + .byte 0x5 + .byte 0x37 + .4byte .LASF1340 + .byte 0x5 + .byte 0x38 + .4byte .LASF1341 + .byte 0x5 + .byte 0x39 + .4byte .LASF1342 + .byte 0x5 + .byte 0x3a + .4byte .LASF1343 + .byte 0x5 + .byte 0x3b + .4byte .LASF1344 + .byte 0x5 + .byte 0x3c + .4byte .LASF1345 + .byte 0x5 + .byte 0x3d + .4byte .LASF1346 + .byte 0x5 + .byte 0x40 + .4byte .LASF1347 + .byte 0x5 + .byte 0x41 + .4byte .LASF1348 + .byte 0x5 + .byte 0x42 + .4byte .LASF1349 + .byte 0x5 + .byte 0x43 + .4byte .LASF1350 + .byte 0x5 + .byte 0x5e + .4byte .LASF1351 + .byte 0x5 + .byte 0x5f + .4byte .LASF1352 + .byte 0x5 + .byte 0x62 + .4byte .LASF1353 + .byte 0x5 + .byte 0x63 + .4byte .LASF1354 + .byte 0x5 + .byte 0x64 + .4byte .LASF1355 + .byte 0x5 + .byte 0x67 + .4byte .LASF1356 + .byte 0x5 + .byte 0x68 + .4byte .LASF1357 + .byte 0x5 + .byte 0x69 + .4byte .LASF1358 + .byte 0x5 + .byte 0x6a + .4byte .LASF1359 + .byte 0x5 + .byte 0x6d + .4byte .LASF1360 + .byte 0x5 + .byte 0x70 + .4byte .LASF1361 + .byte 0x5 + .byte 0x71 + .4byte .LASF1362 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_exti.h.37.a48547bbdeb43685ea30e1aa7e1bc0e9,comdat +.Ldebug_macro18: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1363 + .byte 0x5 + .byte 0x2a + .4byte .LASF1364 + .byte 0x5 + .byte 0x2d + .4byte .LASF1365 + .byte 0x5 + .byte 0x2e + .4byte .LASF1366 + .byte 0x5 + .byte 0x2f + .4byte .LASF1367 + .byte 0x5 + .byte 0x30 + .4byte .LASF1368 + .byte 0x5 + .byte 0x31 + .4byte .LASF1369 + .byte 0x5 + .byte 0x32 + .4byte .LASF1370 + .byte 0x5 + .byte 0x36 + .4byte .LASF1371 + .byte 0x5 + .byte 0x37 + .4byte .LASF1372 + .byte 0x5 + .byte 0x38 + .4byte .LASF1373 + .byte 0x5 + .byte 0x39 + .4byte .LASF1374 + .byte 0x5 + .byte 0x3a + .4byte .LASF1375 + .byte 0x5 + .byte 0x3b + .4byte .LASF1376 + .byte 0x5 + .byte 0x3c + .4byte .LASF1377 + .byte 0x5 + .byte 0x3d + .4byte .LASF1378 + .byte 0x5 + .byte 0x3e + .4byte .LASF1379 + .byte 0x5 + .byte 0x3f + .4byte .LASF1380 + .byte 0x5 + .byte 0x40 + .4byte .LASF1381 + .byte 0x5 + .byte 0x41 + .4byte .LASF1382 + .byte 0x5 + .byte 0x42 + .4byte .LASF1383 + .byte 0x5 + .byte 0x43 + .4byte .LASF1384 + .byte 0x5 + .byte 0x44 + .4byte .LASF1385 + .byte 0x5 + .byte 0x45 + .4byte .LASF1386 + .byte 0x5 + .byte 0x46 + .4byte .LASF1387 + .byte 0x5 + .byte 0x47 + .4byte .LASF1388 + .byte 0x5 + .byte 0x48 + .4byte .LASF1389 + .byte 0x5 + .byte 0x4b + .4byte .LASF1390 + .byte 0x5 + .byte 0x4c + .4byte .LASF1391 + .byte 0x5 + .byte 0x4d + .4byte .LASF1392 + .byte 0x5 + .byte 0x4e + .4byte .LASF1393 + .byte 0x5 + .byte 0x4f + .4byte .LASF1394 + .byte 0x5 + .byte 0x50 + .4byte .LASF1395 + .byte 0x5 + .byte 0x51 + .4byte .LASF1396 + .byte 0x5 + .byte 0x52 + .4byte .LASF1397 + .byte 0x5 + .byte 0x53 + .4byte .LASF1398 + .byte 0x5 + .byte 0x54 + .4byte .LASF1399 + .byte 0x5 + .byte 0x55 + .4byte .LASF1400 + .byte 0x5 + .byte 0x56 + .4byte .LASF1401 + .byte 0x5 + .byte 0x57 + .4byte .LASF1402 + .byte 0x5 + .byte 0x58 + .4byte .LASF1403 + .byte 0x5 + .byte 0x59 + .4byte .LASF1404 + .byte 0x5 + .byte 0x5a + .4byte .LASF1405 + .byte 0x5 + .byte 0x5b + .4byte .LASF1406 + .byte 0x5 + .byte 0x5c + .4byte .LASF1407 + .byte 0x5 + .byte 0x5d + .4byte .LASF1408 + .byte 0x5 + .byte 0x60 + .4byte .LASF1409 + .byte 0x5 + .byte 0x61 + .4byte .LASF1410 + .byte 0x5 + .byte 0x62 + .4byte .LASF1411 + .byte 0x5 + .byte 0x63 + .4byte .LASF1412 + .byte 0x5 + .byte 0x64 + .4byte .LASF1413 + .byte 0x5 + .byte 0x65 + .4byte .LASF1414 + .byte 0x5 + .byte 0x66 + .4byte .LASF1415 + .byte 0x5 + .byte 0x67 + .4byte .LASF1416 + .byte 0x5 + .byte 0x68 + .4byte .LASF1417 + .byte 0x5 + .byte 0x69 + .4byte .LASF1418 + .byte 0x5 + .byte 0x6a + .4byte .LASF1419 + .byte 0x5 + .byte 0x6b + .4byte .LASF1420 + .byte 0x5 + .byte 0x6c + .4byte .LASF1421 + .byte 0x5 + .byte 0x6d + .4byte .LASF1422 + .byte 0x5 + .byte 0x6e + .4byte .LASF1423 + .byte 0x5 + .byte 0x6f + .4byte .LASF1424 + .byte 0x5 + .byte 0x70 + .4byte .LASF1425 + .byte 0x5 + .byte 0x71 + .4byte .LASF1426 + .byte 0x5 + .byte 0x72 + .4byte .LASF1427 + .byte 0x5 + .byte 0x75 + .4byte .LASF1428 + .byte 0x5 + .byte 0x76 + .4byte .LASF1429 + .byte 0x5 + .byte 0x77 + .4byte .LASF1430 + .byte 0x5 + .byte 0x78 + .4byte .LASF1431 + .byte 0x5 + .byte 0x79 + .4byte .LASF1432 + .byte 0x5 + .byte 0x7a + .4byte .LASF1433 + .byte 0x5 + .byte 0x7b + .4byte .LASF1434 + .byte 0x5 + .byte 0x7c + .4byte .LASF1435 + .byte 0x5 + .byte 0x7d + .4byte .LASF1436 + .byte 0x5 + .byte 0x7e + .4byte .LASF1437 + .byte 0x5 + .byte 0x7f + .4byte .LASF1438 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF1439 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF1440 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF1441 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF1442 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF1443 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1444 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1445 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF1446 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1447 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1448 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF1449 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF1450 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1451 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1452 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1453 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF1454 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF1455 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF1456 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF1457 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1458 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF1459 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF1460 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1461 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1462 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1463 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1464 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF1465 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1466 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1467 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1468 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1469 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1470 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF1471 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF1472 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1473 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1474 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1475 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1476 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1477 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF1478 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1479 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1480 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1481 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1482 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1483 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1484 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_fmc.h.39.cad093dc97f9756dd7521b8e6602cd12,comdat +.Ldebug_macro19: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF1485 + .byte 0x5 + .byte 0x2c + .4byte .LASF1486 + .byte 0x5 + .byte 0x2d + .4byte .LASF1487 + .byte 0x5 + .byte 0x30 + .4byte .LASF1488 + .byte 0x5 + .byte 0x31 + .4byte .LASF1489 + .byte 0x5 + .byte 0x32 + .4byte .LASF1490 + .byte 0x5 + .byte 0x33 + .4byte .LASF1491 + .byte 0x5 + .byte 0x34 + .4byte .LASF1492 + .byte 0x5 + .byte 0x35 + .4byte .LASF1493 + .byte 0x5 + .byte 0x36 + .4byte .LASF1494 + .byte 0x5 + .byte 0x37 + .4byte .LASF1495 + .byte 0x5 + .byte 0x38 + .4byte .LASF1496 + .byte 0x5 + .byte 0x3a + .4byte .LASF1497 + .byte 0x5 + .byte 0x3b + .4byte .LASF1498 + .byte 0x5 + .byte 0x3c + .4byte .LASF1499 + .byte 0x5 + .byte 0x3d + .4byte .LASF1500 + .byte 0x5 + .byte 0x3e + .4byte .LASF1501 + .byte 0x5 + .byte 0x3f + .4byte .LASF1502 + .byte 0x5 + .byte 0x43 + .4byte .LASF1503 + .byte 0x5 + .byte 0x46 + .4byte .LASF1504 + .byte 0x5 + .byte 0x49 + .4byte .LASF1505 + .byte 0x5 + .byte 0x4c + .4byte .LASF1506 + .byte 0x5 + .byte 0x4d + .4byte .LASF1507 + .byte 0x5 + .byte 0x4e + .4byte .LASF1508 + .byte 0x5 + .byte 0x4f + .4byte .LASF1509 + .byte 0x5 + .byte 0x52 + .4byte .LASF1510 + .byte 0x5 + .byte 0x53 + .4byte .LASF1511 + .byte 0x5 + .byte 0x54 + .4byte .LASF1512 + .byte 0x5 + .byte 0x55 + .4byte .LASF1513 + .byte 0x5 + .byte 0x56 + .4byte .LASF1514 + .byte 0x5 + .byte 0x57 + .4byte .LASF1515 + .byte 0x5 + .byte 0x58 + .4byte .LASF1516 + .byte 0x5 + .byte 0x59 + .4byte .LASF1517 + .byte 0x5 + .byte 0x5a + .4byte .LASF1518 + .byte 0x5 + .byte 0x5b + .4byte .LASF1519 + .byte 0x5 + .byte 0x5e + .4byte .LASF1520 + .byte 0x5 + .byte 0x61 + .4byte .LASF1521 + .byte 0x5 + .byte 0x62 + .4byte .LASF1522 + .byte 0x5 + .byte 0x63 + .4byte .LASF1523 + .byte 0x5 + .byte 0x64 + .4byte .LASF1524 + .byte 0x5 + .byte 0x67 + .4byte .LASF1525 + .byte 0x5 + .byte 0x6a + .4byte .LASF1526 + .byte 0x5 + .byte 0x6d + .4byte .LASF1527 + .byte 0x5 + .byte 0x71 + .4byte .LASF1528 + .byte 0x5 + .byte 0x72 + .4byte .LASF1529 + .byte 0x5 + .byte 0x73 + .4byte .LASF1530 + .byte 0x5 + .byte 0x74 + .4byte .LASF1531 + .byte 0x5 + .byte 0x75 + .4byte .LASF1532 + .byte 0x5 + .byte 0x76 + .4byte .LASF1533 + .byte 0x5 + .byte 0x77 + .4byte .LASF1534 + .byte 0x5 + .byte 0x78 + .4byte .LASF1535 + .byte 0x5 + .byte 0x7b + .4byte .LASF1536 + .byte 0x5 + .byte 0x7c + .4byte .LASF1537 + .byte 0x5 + .byte 0x7d + .4byte .LASF1538 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1539 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1540 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1541 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1542 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1543 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1544 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1545 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1546 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1547 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1548 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1549 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1550 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF1551 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1552 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1553 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1554 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1555 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1556 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF1557 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF1558 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1559 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1560 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF1561 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1562 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1563 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF1564 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF1565 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF1566 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1567 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1568 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF1569 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF1570 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1571 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1572 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF1573 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF1574 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1575 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1576 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF1577 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF1578 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF1579 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1580 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF1581 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF1582 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1583 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1584 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF1585 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF1586 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF1587 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1588 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1589 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF1590 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF1591 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF1592 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF1593 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF1594 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF1595 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF1596 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1597 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1598 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_gpio.h.37.1c15e50fe61c140e18cbdcae4553472f,comdat +.Ldebug_macro20: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1599 + .byte 0x5 + .byte 0x2a + .4byte .LASF1600 + .byte 0x5 + .byte 0x2b + .4byte .LASF1601 + .byte 0x5 + .byte 0x2c + .4byte .LASF1602 + .byte 0x5 + .byte 0x2d + .4byte .LASF1603 + .byte 0x5 + .byte 0x2e + .4byte .LASF1604 + .byte 0x5 + .byte 0x31 + .4byte .LASF1605 + .byte 0x5 + .byte 0x36 + .4byte .LASF1606 + .byte 0x5 + .byte 0x37 + .4byte .LASF1607 + .byte 0x5 + .byte 0x38 + .4byte .LASF1608 + .byte 0x5 + .byte 0x39 + .4byte .LASF1609 + .byte 0x5 + .byte 0x3a + .4byte .LASF1610 + .byte 0x5 + .byte 0x3b + .4byte .LASF1611 + .byte 0x5 + .byte 0x3c + .4byte .LASF1612 + .byte 0x5 + .byte 0x3f + .4byte .LASF1613 + .byte 0x5 + .byte 0x40 + .4byte .LASF1614 + .byte 0x5 + .byte 0x41 + .4byte .LASF1615 + .byte 0x5 + .byte 0x42 + .4byte .LASF1616 + .byte 0x5 + .byte 0x43 + .4byte .LASF1617 + .byte 0x5 + .byte 0x44 + .4byte .LASF1618 + .byte 0x5 + .byte 0x45 + .4byte .LASF1619 + .byte 0x5 + .byte 0x49 + .4byte .LASF1620 + .byte 0x5 + .byte 0x4a + .4byte .LASF1621 + .byte 0x5 + .byte 0x4b + .4byte .LASF1622 + .byte 0x5 + .byte 0x4c + .4byte .LASF1623 + .byte 0x5 + .byte 0x4d + .4byte .LASF1624 + .byte 0x5 + .byte 0x4e + .4byte .LASF1625 + .byte 0x5 + .byte 0x4f + .4byte .LASF1626 + .byte 0x5 + .byte 0x50 + .4byte .LASF1627 + .byte 0x5 + .byte 0x51 + .4byte .LASF1628 + .byte 0x5 + .byte 0x52 + .4byte .LASF1629 + .byte 0x5 + .byte 0x53 + .4byte .LASF1630 + .byte 0x5 + .byte 0x54 + .4byte .LASF1631 + .byte 0x5 + .byte 0x55 + .4byte .LASF1632 + .byte 0x5 + .byte 0x56 + .4byte .LASF1633 + .byte 0x5 + .byte 0x57 + .4byte .LASF1634 + .byte 0x5 + .byte 0x58 + .4byte .LASF1635 + .byte 0x5 + .byte 0x5b + .4byte .LASF1636 + .byte 0x5 + .byte 0x5c + .4byte .LASF1637 + .byte 0x5 + .byte 0x5d + .4byte .LASF1638 + .byte 0x5 + .byte 0x5e + .4byte .LASF1639 + .byte 0x5 + .byte 0x5f + .4byte .LASF1640 + .byte 0x5 + .byte 0x60 + .4byte .LASF1641 + .byte 0x5 + .byte 0x61 + .4byte .LASF1642 + .byte 0x5 + .byte 0x62 + .4byte .LASF1643 + .byte 0x5 + .byte 0x63 + .4byte .LASF1644 + .byte 0x5 + .byte 0x64 + .4byte .LASF1645 + .byte 0x5 + .byte 0x65 + .4byte .LASF1646 + .byte 0x5 + .byte 0x66 + .4byte .LASF1647 + .byte 0x5 + .byte 0x67 + .4byte .LASF1648 + .byte 0x5 + .byte 0x68 + .4byte .LASF1649 + .byte 0x5 + .byte 0x69 + .4byte .LASF1650 + .byte 0x5 + .byte 0x6a + .4byte .LASF1651 + .byte 0x5 + .byte 0x6d + .4byte .LASF1652 + .byte 0x5 + .byte 0x6e + .4byte .LASF1653 + .byte 0x5 + .byte 0x6f + .4byte .LASF1654 + .byte 0x5 + .byte 0x70 + .4byte .LASF1655 + .byte 0x5 + .byte 0x71 + .4byte .LASF1656 + .byte 0x5 + .byte 0x72 + .4byte .LASF1657 + .byte 0x5 + .byte 0x73 + .4byte .LASF1658 + .byte 0x5 + .byte 0x74 + .4byte .LASF1659 + .byte 0x5 + .byte 0x75 + .4byte .LASF1660 + .byte 0x5 + .byte 0x76 + .4byte .LASF1661 + .byte 0x5 + .byte 0x77 + .4byte .LASF1662 + .byte 0x5 + .byte 0x78 + .4byte .LASF1663 + .byte 0x5 + .byte 0x79 + .4byte .LASF1664 + .byte 0x5 + .byte 0x7a + .4byte .LASF1665 + .byte 0x5 + .byte 0x7b + .4byte .LASF1666 + .byte 0x5 + .byte 0x7c + .4byte .LASF1667 + .byte 0x5 + .byte 0x7f + .4byte .LASF1668 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF1669 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF1670 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF1671 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF1672 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF1673 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1674 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1675 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF1676 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF1677 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF1678 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1679 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1680 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF1681 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF1682 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1683 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF1684 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF1685 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF1686 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF1687 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1688 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF1689 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF1690 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1691 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1692 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1693 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1694 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF1695 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF1696 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1697 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1698 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1699 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1700 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1701 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1702 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF1703 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF1704 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1705 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1706 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1707 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1708 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1709 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF1710 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1711 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1712 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1713 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1714 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1715 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF1716 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1717 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1718 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1719 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF1720 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF1721 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF1722 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1723 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF1724 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF1725 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1726 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1727 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF1728 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF1729 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1730 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1731 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF1732 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF1733 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF1734 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF1735 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1736 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF1737 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF1738 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1739 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF1740 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF1741 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF1742 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF1743 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1744 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1745 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF1746 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF1747 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1748 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF1749 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1750 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1751 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1752 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1753 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF1754 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF1755 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1756 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1757 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF1758 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF1759 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF1760 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1761 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF1762 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF1763 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1764 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1765 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF1766 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1767 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1768 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF1769 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF1770 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF1771 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF1772 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF1773 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF1774 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF1775 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1776 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1777 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF1778 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF1779 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF1780 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF1781 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF1782 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF1783 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF1784 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF1785 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF1786 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF1787 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF1788 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF1789 + .byte 0x5 + .byte 0x94,0x2 + .4byte .LASF1790 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF1791 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF1792 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF1793 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF1794 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF1795 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF1796 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF1797 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF1798 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF1799 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF1800 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF1801 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF1802 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF1803 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF1804 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF1805 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF1806 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF1807 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF1808 + .byte 0x5 + .byte 0xaf,0x2 + .4byte .LASF1809 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF1810 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF1811 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF1812 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF1813 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF1814 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF1815 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF1816 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF1817 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF1818 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF1819 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF1820 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF1821 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF1822 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF1823 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF1824 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF1825 + .byte 0x5 + .byte 0xc2,0x2 + .4byte .LASF1826 + .byte 0x5 + .byte 0xc3,0x2 + .4byte .LASF1827 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF1828 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF1829 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF1830 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF1831 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF1832 + .byte 0x5 + .byte 0xc9,0x2 + .4byte .LASF1833 + .byte 0x5 + .byte 0xca,0x2 + .4byte .LASF1834 + .byte 0x5 + .byte 0xcb,0x2 + .4byte .LASF1835 + .byte 0x5 + .byte 0xcc,0x2 + .4byte .LASF1836 + .byte 0x5 + .byte 0xcd,0x2 + .4byte .LASF1837 + .byte 0x5 + .byte 0xce,0x2 + .4byte .LASF1838 + .byte 0x5 + .byte 0xd1,0x2 + .4byte .LASF1839 + .byte 0x5 + .byte 0xd2,0x2 + .4byte .LASF1840 + .byte 0x5 + .byte 0xd3,0x2 + .4byte .LASF1841 + .byte 0x5 + .byte 0xd4,0x2 + .4byte .LASF1842 + .byte 0x5 + .byte 0xd5,0x2 + .4byte .LASF1843 + .byte 0x5 + .byte 0xd6,0x2 + .4byte .LASF1844 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF1845 + .byte 0x5 + .byte 0xd8,0x2 + .4byte .LASF1846 + .byte 0x5 + .byte 0xd9,0x2 + .4byte .LASF1847 + .byte 0x5 + .byte 0xda,0x2 + .4byte .LASF1848 + .byte 0x5 + .byte 0xdb,0x2 + .4byte .LASF1849 + .byte 0x5 + .byte 0xdc,0x2 + .4byte .LASF1850 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF1851 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF1852 + .byte 0x5 + .byte 0xdf,0x2 + .4byte .LASF1853 + .byte 0x5 + .byte 0xe0,0x2 + .4byte .LASF1854 + .byte 0x5 + .byte 0xe1,0x2 + .4byte .LASF1855 + .byte 0x5 + .byte 0xe4,0x2 + .4byte .LASF1856 + .byte 0x5 + .byte 0xe5,0x2 + .4byte .LASF1857 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF1858 + .byte 0x5 + .byte 0xe7,0x2 + .4byte .LASF1859 + .byte 0x5 + .byte 0xe8,0x2 + .4byte .LASF1860 + .byte 0x5 + .byte 0xe9,0x2 + .4byte .LASF1861 + .byte 0x5 + .byte 0xea,0x2 + .4byte .LASF1862 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF1863 + .byte 0x5 + .byte 0xec,0x2 + .4byte .LASF1864 + .byte 0x5 + .byte 0xed,0x2 + .4byte .LASF1865 + .byte 0x5 + .byte 0xee,0x2 + .4byte .LASF1866 + .byte 0x5 + .byte 0xef,0x2 + .4byte .LASF1867 + .byte 0x5 + .byte 0xf0,0x2 + .4byte .LASF1868 + .byte 0x5 + .byte 0xf1,0x2 + .4byte .LASF1869 + .byte 0x5 + .byte 0xf2,0x2 + .4byte .LASF1870 + .byte 0x5 + .byte 0xf3,0x2 + .4byte .LASF1871 + .byte 0x5 + .byte 0xf4,0x2 + .4byte .LASF1872 + .byte 0x5 + .byte 0xf5,0x2 + .4byte .LASF1873 + .byte 0x5 + .byte 0xf6,0x2 + .4byte .LASF1874 + .byte 0x5 + .byte 0xf7,0x2 + .4byte .LASF1875 + .byte 0x5 + .byte 0xf8,0x2 + .4byte .LASF1876 + .byte 0x5 + .byte 0xf9,0x2 + .4byte .LASF1877 + .byte 0x5 + .byte 0xfa,0x2 + .4byte .LASF1878 + .byte 0x5 + .byte 0xfb,0x2 + .4byte .LASF1879 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_i2c.h.37.9d7fb50529db8c5d4a0b10c3b5a1de79,comdat +.Ldebug_macro21: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1880 + .byte 0x5 + .byte 0x2a + .4byte .LASF1881 + .byte 0x5 + .byte 0x2b + .4byte .LASF1882 + .byte 0x5 + .byte 0x2e + .4byte .LASF1883 + .byte 0x5 + .byte 0x2f + .4byte .LASF1884 + .byte 0x5 + .byte 0x30 + .4byte .LASF1885 + .byte 0x5 + .byte 0x31 + .4byte .LASF1886 + .byte 0x5 + .byte 0x32 + .4byte .LASF1887 + .byte 0x5 + .byte 0x33 + .4byte .LASF1888 + .byte 0x5 + .byte 0x34 + .4byte .LASF1889 + .byte 0x5 + .byte 0x35 + .4byte .LASF1890 + .byte 0x5 + .byte 0x36 + .4byte .LASF1891 + .byte 0x5 + .byte 0x37 + .4byte .LASF1892 + .byte 0x5 + .byte 0x3a + .4byte .LASF1893 + .byte 0x5 + .byte 0x3b + .4byte .LASF1894 + .byte 0x5 + .byte 0x3c + .4byte .LASF1895 + .byte 0x5 + .byte 0x3d + .4byte .LASF1896 + .byte 0x5 + .byte 0x3e + .4byte .LASF1897 + .byte 0x5 + .byte 0x3f + .4byte .LASF1898 + .byte 0x5 + .byte 0x40 + .4byte .LASF1899 + .byte 0x5 + .byte 0x41 + .4byte .LASF1900 + .byte 0x5 + .byte 0x42 + .4byte .LASF1901 + .byte 0x5 + .byte 0x43 + .4byte .LASF1902 + .byte 0x5 + .byte 0x44 + .4byte .LASF1903 + .byte 0x5 + .byte 0x45 + .4byte .LASF1904 + .byte 0x5 + .byte 0x46 + .4byte .LASF1905 + .byte 0x5 + .byte 0x47 + .4byte .LASF1906 + .byte 0x5 + .byte 0x4a + .4byte .LASF1907 + .byte 0x5 + .byte 0x4b + .4byte .LASF1908 + .byte 0x5 + .byte 0x4c + .4byte .LASF1909 + .byte 0x5 + .byte 0x4d + .4byte .LASF1910 + .byte 0x5 + .byte 0x4e + .4byte .LASF1911 + .byte 0x5 + .byte 0x4f + .4byte .LASF1912 + .byte 0x5 + .byte 0x52 + .4byte .LASF1913 + .byte 0x5 + .byte 0x53 + .4byte .LASF1914 + .byte 0x5 + .byte 0x54 + .4byte .LASF1915 + .byte 0x5 + .byte 0x55 + .4byte .LASF1916 + .byte 0x5 + .byte 0x58 + .4byte .LASF1917 + .byte 0x5 + .byte 0x59 + .4byte .LASF1918 + .byte 0x5 + .byte 0x5c + .4byte .LASF1919 + .byte 0x5 + .byte 0x5f + .4byte .LASF1920 + .byte 0x5 + .byte 0x60 + .4byte .LASF1921 + .byte 0x5 + .byte 0x61 + .4byte .LASF1922 + .byte 0x5 + .byte 0x62 + .4byte .LASF1923 + .byte 0x5 + .byte 0x63 + .4byte .LASF1924 + .byte 0x5 + .byte 0x64 + .4byte .LASF1925 + .byte 0x5 + .byte 0x65 + .4byte .LASF1926 + .byte 0x5 + .byte 0x66 + .4byte .LASF1927 + .byte 0x5 + .byte 0x67 + .4byte .LASF1928 + .byte 0x5 + .byte 0x68 + .4byte .LASF1929 + .byte 0x5 + .byte 0x69 + .4byte .LASF1930 + .byte 0x5 + .byte 0x6a + .4byte .LASF1931 + .byte 0x5 + .byte 0x6b + .4byte .LASF1932 + .byte 0x5 + .byte 0x6c + .4byte .LASF1933 + .byte 0x5 + .byte 0x6f + .4byte .LASF1934 + .byte 0x5 + .byte 0x70 + .4byte .LASF1935 + .byte 0x5 + .byte 0x71 + .4byte .LASF1936 + .byte 0x5 + .byte 0x72 + .4byte .LASF1937 + .byte 0x5 + .byte 0x73 + .4byte .LASF1938 + .byte 0x5 + .byte 0x74 + .4byte .LASF1939 + .byte 0x5 + .byte 0x75 + .4byte .LASF1940 + .byte 0x5 + .byte 0x76 + .4byte .LASF1941 + .byte 0x5 + .byte 0x79 + .4byte .LASF1942 + .byte 0x5 + .byte 0x7a + .4byte .LASF1943 + .byte 0x5 + .byte 0x7b + .4byte .LASF1944 + .byte 0x5 + .byte 0x7e + .4byte .LASF1945 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF1946 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1947 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1948 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF1949 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF1950 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1951 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1952 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1953 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1954 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1955 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1956 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF1957 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF1958 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF1959 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1960 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1961 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1962 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF1963 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1964 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1965 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1966 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1967 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1968 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1969 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF1970 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1971 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1972 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1973 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1974 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1975 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF1976 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF1977 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF1978 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF1979 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1980 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1981 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF1982 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF1983 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF1984 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF1985 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF1986 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF1987 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF1988 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF1989 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF1990 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF1991 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_fwdgt.h.37.ec91e2ec679929e46ec494cd499250b4,comdat +.Ldebug_macro22: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1992 + .byte 0x5 + .byte 0x2a + .4byte .LASF1993 + .byte 0x5 + .byte 0x2d + .4byte .LASF1994 + .byte 0x5 + .byte 0x2e + .4byte .LASF1995 + .byte 0x5 + .byte 0x2f + .4byte .LASF1996 + .byte 0x5 + .byte 0x30 + .4byte .LASF1997 + .byte 0x5 + .byte 0x34 + .4byte .LASF1998 + .byte 0x5 + .byte 0x37 + .4byte .LASF1999 + .byte 0x5 + .byte 0x3a + .4byte .LASF2000 + .byte 0x5 + .byte 0x3d + .4byte .LASF2001 + .byte 0x5 + .byte 0x3e + .4byte .LASF2002 + .byte 0x5 + .byte 0x42 + .4byte .LASF2003 + .byte 0x5 + .byte 0x43 + .4byte .LASF2004 + .byte 0x5 + .byte 0x44 + .4byte .LASF2005 + .byte 0x5 + .byte 0x45 + .4byte .LASF2006 + .byte 0x5 + .byte 0x46 + .4byte .LASF2007 + .byte 0x5 + .byte 0x47 + .4byte .LASF2008 + .byte 0x5 + .byte 0x48 + .4byte .LASF2009 + .byte 0x5 + .byte 0x49 + .4byte .LASF2010 + .byte 0x5 + .byte 0x4c + .4byte .LASF2011 + .byte 0x5 + .byte 0x4d + .4byte .LASF2012 + .byte 0x5 + .byte 0x4e + .4byte .LASF2013 + .byte 0x5 + .byte 0x4f + .4byte .LASF2014 + .byte 0x5 + .byte 0x52 + .4byte .LASF2015 + .byte 0x5 + .byte 0x53 + .4byte .LASF2016 + .byte 0x5 + .byte 0x56 + .4byte .LASF2017 + .byte 0x5 + .byte 0x57 + .4byte .LASF2018 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dbg.h.37.c757ea48294705efe800a8cbb43f6f24,comdat +.Ldebug_macro23: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2019 + .byte 0x5 + .byte 0x2a + .4byte .LASF2020 + .byte 0x5 + .byte 0x2d + .4byte .LASF2021 + .byte 0x5 + .byte 0x2e + .4byte .LASF2022 + .byte 0x5 + .byte 0x32 + .4byte .LASF2023 + .byte 0x5 + .byte 0x35 + .4byte .LASF2024 + .byte 0x5 + .byte 0x36 + .4byte .LASF2025 + .byte 0x5 + .byte 0x37 + .4byte .LASF2026 + .byte 0x5 + .byte 0x38 + .4byte .LASF2027 + .byte 0x5 + .byte 0x39 + .4byte .LASF2028 + .byte 0x5 + .byte 0x3a + .4byte .LASF2029 + .byte 0x5 + .byte 0x3b + .4byte .LASF2030 + .byte 0x5 + .byte 0x3c + .4byte .LASF2031 + .byte 0x5 + .byte 0x3d + .4byte .LASF2032 + .byte 0x5 + .byte 0x3e + .4byte .LASF2033 + .byte 0x5 + .byte 0x3f + .4byte .LASF2034 + .byte 0x5 + .byte 0x40 + .4byte .LASF2035 + .byte 0x5 + .byte 0x41 + .4byte .LASF2036 + .byte 0x5 + .byte 0x42 + .4byte .LASF2037 + .byte 0x5 + .byte 0x43 + .4byte .LASF2038 + .byte 0x5 + .byte 0x44 + .4byte .LASF2039 + .byte 0x5 + .byte 0x5a + .4byte .LASF2040 + .byte 0x5 + .byte 0x5b + .4byte .LASF2041 + .byte 0x5 + .byte 0x5c + .4byte .LASF2042 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_pmu.h.37.edf842f53f3092f282c7bccaf9512833,comdat +.Ldebug_macro24: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2043 + .byte 0x5 + .byte 0x2a + .4byte .LASF2044 + .byte 0x5 + .byte 0x2d + .4byte .LASF2045 + .byte 0x5 + .byte 0x2e + .4byte .LASF2046 + .byte 0x5 + .byte 0x32 + .4byte .LASF2047 + .byte 0x5 + .byte 0x33 + .4byte .LASF2048 + .byte 0x5 + .byte 0x34 + .4byte .LASF2049 + .byte 0x5 + .byte 0x35 + .4byte .LASF2050 + .byte 0x5 + .byte 0x36 + .4byte .LASF2051 + .byte 0x5 + .byte 0x37 + .4byte .LASF2052 + .byte 0x5 + .byte 0x38 + .4byte .LASF2053 + .byte 0x5 + .byte 0x3b + .4byte .LASF2054 + .byte 0x5 + .byte 0x3c + .4byte .LASF2055 + .byte 0x5 + .byte 0x3d + .4byte .LASF2056 + .byte 0x5 + .byte 0x3e + .4byte .LASF2057 + .byte 0x5 + .byte 0x42 + .4byte .LASF2058 + .byte 0x5 + .byte 0x43 + .4byte .LASF2059 + .byte 0x5 + .byte 0x44 + .4byte .LASF2060 + .byte 0x5 + .byte 0x45 + .4byte .LASF2061 + .byte 0x5 + .byte 0x46 + .4byte .LASF2062 + .byte 0x5 + .byte 0x47 + .4byte .LASF2063 + .byte 0x5 + .byte 0x48 + .4byte .LASF2064 + .byte 0x5 + .byte 0x49 + .4byte .LASF2065 + .byte 0x5 + .byte 0x4a + .4byte .LASF2066 + .byte 0x5 + .byte 0x4d + .4byte .LASF2067 + .byte 0x5 + .byte 0x4e + .4byte .LASF2068 + .byte 0x5 + .byte 0x4f + .4byte .LASF2069 + .byte 0x5 + .byte 0x52 + .4byte .LASF2070 + .byte 0x5 + .byte 0x53 + .4byte .LASF2071 + .byte 0x5 + .byte 0x56 + .4byte .LASF2072 + .byte 0x5 + .byte 0x57 + .4byte .LASF2073 + .byte 0x5 + .byte 0x5a + .4byte .LASF2074 + .byte 0x5 + .byte 0x5b + .4byte .LASF2075 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_rcu.h.37.486a61f16467981517fe8072f0668f9d,comdat +.Ldebug_macro25: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2076 + .byte 0x5 + .byte 0x2a + .4byte .LASF2077 + .byte 0x5 + .byte 0x2e + .4byte .LASF2078 + .byte 0x5 + .byte 0x2f + .4byte .LASF2079 + .byte 0x5 + .byte 0x30 + .4byte .LASF2080 + .byte 0x5 + .byte 0x31 + .4byte .LASF2081 + .byte 0x5 + .byte 0x32 + .4byte .LASF2082 + .byte 0x5 + .byte 0x33 + .4byte .LASF2083 + .byte 0x5 + .byte 0x34 + .4byte .LASF2084 + .byte 0x5 + .byte 0x35 + .4byte .LASF2085 + .byte 0x5 + .byte 0x36 + .4byte .LASF2086 + .byte 0x5 + .byte 0x37 + .4byte .LASF2087 + .byte 0x5 + .byte 0x38 + .4byte .LASF2088 + .byte 0x5 + .byte 0x39 + .4byte .LASF2089 + .byte 0x5 + .byte 0x3a + .4byte .LASF2090 + .byte 0x5 + .byte 0x3f + .4byte .LASF2091 + .byte 0x5 + .byte 0x40 + .4byte .LASF2092 + .byte 0x5 + .byte 0x41 + .4byte .LASF2093 + .byte 0x5 + .byte 0x42 + .4byte .LASF2094 + .byte 0x5 + .byte 0x43 + .4byte .LASF2095 + .byte 0x5 + .byte 0x44 + .4byte .LASF2096 + .byte 0x5 + .byte 0x45 + .4byte .LASF2097 + .byte 0x5 + .byte 0x46 + .4byte .LASF2098 + .byte 0x5 + .byte 0x47 + .4byte .LASF2099 + .byte 0x5 + .byte 0x48 + .4byte .LASF2100 + .byte 0x5 + .byte 0x49 + .4byte .LASF2101 + .byte 0x5 + .byte 0x4a + .4byte .LASF2102 + .byte 0x5 + .byte 0x4b + .4byte .LASF2103 + .byte 0x5 + .byte 0x4c + .4byte .LASF2104 + .byte 0x5 + .byte 0x4f + .4byte .LASF2105 + .byte 0x5 + .byte 0x50 + .4byte .LASF2106 + .byte 0x5 + .byte 0x51 + .4byte .LASF2107 + .byte 0x5 + .byte 0x52 + .4byte .LASF2108 + .byte 0x5 + .byte 0x53 + .4byte .LASF2109 + .byte 0x5 + .byte 0x54 + .4byte .LASF2110 + .byte 0x5 + .byte 0x55 + .4byte .LASF2111 + .byte 0x5 + .byte 0x56 + .4byte .LASF2112 + .byte 0x5 + .byte 0x57 + .4byte .LASF2113 + .byte 0x5 + .byte 0x58 + .4byte .LASF2114 + .byte 0x5 + .byte 0x59 + .4byte .LASF2115 + .byte 0x5 + .byte 0x5a + .4byte .LASF2116 + .byte 0x5 + .byte 0x5b + .4byte .LASF2117 + .byte 0x5 + .byte 0x5e + .4byte .LASF2118 + .byte 0x5 + .byte 0x5f + .4byte .LASF2119 + .byte 0x5 + .byte 0x60 + .4byte .LASF2120 + .byte 0x5 + .byte 0x61 + .4byte .LASF2121 + .byte 0x5 + .byte 0x62 + .4byte .LASF2122 + .byte 0x5 + .byte 0x63 + .4byte .LASF2123 + .byte 0x5 + .byte 0x64 + .4byte .LASF2124 + .byte 0x5 + .byte 0x65 + .4byte .LASF2125 + .byte 0x5 + .byte 0x66 + .4byte .LASF2126 + .byte 0x5 + .byte 0x67 + .4byte .LASF2127 + .byte 0x5 + .byte 0x68 + .4byte .LASF2128 + .byte 0x5 + .byte 0x69 + .4byte .LASF2129 + .byte 0x5 + .byte 0x6a + .4byte .LASF2130 + .byte 0x5 + .byte 0x6b + .4byte .LASF2131 + .byte 0x5 + .byte 0x6c + .4byte .LASF2132 + .byte 0x5 + .byte 0x6d + .4byte .LASF2133 + .byte 0x5 + .byte 0x6e + .4byte .LASF2134 + .byte 0x5 + .byte 0x6f + .4byte .LASF2135 + .byte 0x5 + .byte 0x70 + .4byte .LASF2136 + .byte 0x5 + .byte 0x71 + .4byte .LASF2137 + .byte 0x5 + .byte 0x72 + .4byte .LASF2138 + .byte 0x5 + .byte 0x73 + .4byte .LASF2139 + .byte 0x5 + .byte 0x74 + .4byte .LASF2140 + .byte 0x5 + .byte 0x77 + .4byte .LASF2141 + .byte 0x5 + .byte 0x78 + .4byte .LASF2142 + .byte 0x5 + .byte 0x79 + .4byte .LASF2143 + .byte 0x5 + .byte 0x7a + .4byte .LASF2144 + .byte 0x5 + .byte 0x7b + .4byte .LASF2145 + .byte 0x5 + .byte 0x7c + .4byte .LASF2146 + .byte 0x5 + .byte 0x7d + .4byte .LASF2147 + .byte 0x5 + .byte 0x7e + .4byte .LASF2148 + .byte 0x5 + .byte 0x7f + .4byte .LASF2149 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF2150 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF2151 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF2152 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF2153 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF2154 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF2155 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF2156 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF2157 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF2158 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2159 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2160 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF2161 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF2162 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF2163 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2164 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF2165 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF2166 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF2167 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF2168 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2169 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2170 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF2171 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2172 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF2173 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF2174 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2175 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF2176 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF2177 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF2178 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF2179 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF2180 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF2181 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF2182 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2183 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2184 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2185 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2186 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF2187 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF2188 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF2189 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF2190 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF2191 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF2192 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF2193 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2194 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF2195 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF2196 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2197 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2198 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2199 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2200 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF2201 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF2202 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2203 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2204 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2205 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2206 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2207 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF2208 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF2209 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF2210 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF2211 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF2212 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF2213 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2214 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF2215 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF2216 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF2217 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF2218 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF2219 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF2220 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2221 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF2222 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF2223 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF2224 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF2225 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF2226 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF2227 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF2228 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2229 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2230 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF2231 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF2232 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2233 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2234 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2235 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF2236 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF2237 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF2238 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF2239 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF2240 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF2241 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF2242 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF2243 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF2244 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF2245 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF2246 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF2247 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF2248 + .byte 0x5 + .byte 0xaa,0x3 + .4byte .LASF2249 + .byte 0x5 + .byte 0xab,0x3 + .4byte .LASF2250 + .byte 0x5 + .byte 0xac,0x3 + .4byte .LASF2251 + .byte 0x5 + .byte 0xad,0x3 + .4byte .LASF2252 + .byte 0x5 + .byte 0xb0,0x3 + .4byte .LASF2253 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF2254 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF2255 + .byte 0x5 + .byte 0xb3,0x3 + .4byte .LASF2256 + .byte 0x5 + .byte 0xb6,0x3 + .4byte .LASF2257 + .byte 0x5 + .byte 0xb7,0x3 + .4byte .LASF2258 + .byte 0x5 + .byte 0xb8,0x3 + .4byte .LASF2259 + .byte 0x5 + .byte 0xb9,0x3 + .4byte .LASF2260 + .byte 0x5 + .byte 0xba,0x3 + .4byte .LASF2261 + .byte 0x5 + .byte 0xbb,0x3 + .4byte .LASF2262 + .byte 0x5 + .byte 0xbc,0x3 + .4byte .LASF2263 + .byte 0x5 + .byte 0xbd,0x3 + .4byte .LASF2264 + .byte 0x5 + .byte 0xbe,0x3 + .4byte .LASF2265 + .byte 0x5 + .byte 0xbf,0x3 + .4byte .LASF2266 + .byte 0x5 + .byte 0xc2,0x3 + .4byte .LASF2267 + .byte 0x5 + .byte 0xc3,0x3 + .4byte .LASF2268 + .byte 0x5 + .byte 0xc4,0x3 + .4byte .LASF2269 + .byte 0x5 + .byte 0xc5,0x3 + .4byte .LASF2270 + .byte 0x5 + .byte 0xc6,0x3 + .4byte .LASF2271 + .byte 0x5 + .byte 0xc7,0x3 + .4byte .LASF2272 + .byte 0x5 + .byte 0xca,0x3 + .4byte .LASF2273 + .byte 0x5 + .byte 0xcb,0x3 + .4byte .LASF2274 + .byte 0x5 + .byte 0xcc,0x3 + .4byte .LASF2275 + .byte 0x5 + .byte 0xcd,0x3 + .4byte .LASF2276 + .byte 0x5 + .byte 0xce,0x3 + .4byte .LASF2277 + .byte 0x5 + .byte 0xcf,0x3 + .4byte .LASF2278 + .byte 0x5 + .byte 0xd2,0x3 + .4byte .LASF2279 + .byte 0x5 + .byte 0xd3,0x3 + .4byte .LASF2280 + .byte 0x5 + .byte 0xd4,0x3 + .4byte .LASF2281 + .byte 0x5 + .byte 0xd5,0x3 + .4byte .LASF2282 + .byte 0x5 + .byte 0xd6,0x3 + .4byte .LASF2283 + .byte 0x5 + .byte 0xd7,0x3 + .4byte .LASF2284 + .byte 0x5 + .byte 0xda,0x3 + .4byte .LASF2285 + .byte 0x5 + .byte 0xdb,0x3 + .4byte .LASF2286 + .byte 0x5 + .byte 0xde,0x3 + .4byte .LASF2287 + .byte 0x5 + .byte 0xe0,0x3 + .4byte .LASF2288 + .byte 0x5 + .byte 0xe1,0x3 + .4byte .LASF2289 + .byte 0x5 + .byte 0xe2,0x3 + .4byte .LASF2290 + .byte 0x5 + .byte 0xe3,0x3 + .4byte .LASF2291 + .byte 0x5 + .byte 0xe4,0x3 + .4byte .LASF2292 + .byte 0x5 + .byte 0xe5,0x3 + .4byte .LASF2293 + .byte 0x5 + .byte 0xe6,0x3 + .4byte .LASF2294 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF2295 + .byte 0x5 + .byte 0xe8,0x3 + .4byte .LASF2296 + .byte 0x5 + .byte 0xe9,0x3 + .4byte .LASF2297 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF2298 + .byte 0x5 + .byte 0xeb,0x3 + .4byte .LASF2299 + .byte 0x5 + .byte 0xec,0x3 + .4byte .LASF2300 + .byte 0x5 + .byte 0xed,0x3 + .4byte .LASF2301 + .byte 0x5 + .byte 0xee,0x3 + .4byte .LASF2302 + .byte 0x5 + .byte 0xef,0x3 + .4byte .LASF2303 + .byte 0x5 + .byte 0xf0,0x3 + .4byte .LASF2304 + .byte 0x5 + .byte 0xf1,0x3 + .4byte .LASF2305 + .byte 0x5 + .byte 0xf2,0x3 + .4byte .LASF2306 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF2307 + .byte 0x5 + .byte 0xf4,0x3 + .4byte .LASF2308 + .byte 0x5 + .byte 0xf5,0x3 + .4byte .LASF2309 + .byte 0x5 + .byte 0xf6,0x3 + .4byte .LASF2310 + .byte 0x5 + .byte 0xf7,0x3 + .4byte .LASF2311 + .byte 0x5 + .byte 0xf8,0x3 + .4byte .LASF2312 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF2313 + .byte 0x5 + .byte 0xfa,0x3 + .4byte .LASF2314 + .byte 0x5 + .byte 0xfb,0x3 + .4byte .LASF2315 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF2316 + .byte 0x5 + .byte 0xfd,0x3 + .4byte .LASF2317 + .byte 0x5 + .byte 0xfe,0x3 + .4byte .LASF2318 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF2319 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF2320 + .byte 0x5 + .byte 0x83,0x4 + .4byte .LASF2321 + .byte 0x5 + .byte 0x84,0x4 + .4byte .LASF2322 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF2323 + .byte 0x5 + .byte 0x86,0x4 + .4byte .LASF2324 + .byte 0x5 + .byte 0x89,0x4 + .4byte .LASF2325 + .byte 0x5 + .byte 0x8a,0x4 + .4byte .LASF2326 + .byte 0x5 + .byte 0x8b,0x4 + .4byte .LASF2327 + .byte 0x5 + .byte 0x8c,0x4 + .4byte .LASF2328 + .byte 0x5 + .byte 0x8d,0x4 + .4byte .LASF2329 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF2330 + .byte 0x5 + .byte 0x8f,0x4 + .4byte .LASF2331 + .byte 0x5 + .byte 0x90,0x4 + .4byte .LASF2332 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF2333 + .byte 0x5 + .byte 0x92,0x4 + .4byte .LASF2334 + .byte 0x5 + .byte 0x95,0x4 + .4byte .LASF2335 + .byte 0x5 + .byte 0x96,0x4 + .4byte .LASF2336 + .byte 0x5 + .byte 0x97,0x4 + .4byte .LASF2337 + .byte 0x5 + .byte 0x98,0x4 + .4byte .LASF2338 + .byte 0x5 + .byte 0x99,0x4 + .4byte .LASF2339 + .byte 0x5 + .byte 0x9c,0x4 + .4byte .LASF2340 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF2341 + .byte 0x5 + .byte 0x9e,0x4 + .4byte .LASF2342 + .byte 0x5 + .byte 0x9f,0x4 + .4byte .LASF2343 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF2344 + .byte 0x5 + .byte 0xa1,0x4 + .4byte .LASF2345 + .byte 0x5 + .byte 0xa2,0x4 + .4byte .LASF2346 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF2347 + .byte 0x5 + .byte 0xa4,0x4 + .4byte .LASF2348 + .byte 0x5 + .byte 0xa5,0x4 + .4byte .LASF2349 + .byte 0x5 + .byte 0xa6,0x4 + .4byte .LASF2350 + .byte 0x5 + .byte 0xa7,0x4 + .4byte .LASF2351 + .byte 0x5 + .byte 0xa8,0x4 + .4byte .LASF2352 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF2353 + .byte 0x5 + .byte 0xaa,0x4 + .4byte .LASF2354 + .byte 0x5 + .byte 0xab,0x4 + .4byte .LASF2355 + .byte 0x5 + .byte 0xac,0x4 + .4byte .LASF2356 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF2357 + .byte 0x5 + .byte 0xb0,0x4 + .4byte .LASF2358 + .byte 0x5 + .byte 0xb1,0x4 + .4byte .LASF2359 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF2360 + .byte 0x5 + .byte 0xb3,0x4 + .4byte .LASF2361 + .byte 0x5 + .byte 0xb4,0x4 + .4byte .LASF2362 + .byte 0x5 + .byte 0xb5,0x4 + .4byte .LASF2363 + .byte 0x5 + .byte 0xb6,0x4 + .4byte .LASF2364 + .byte 0x5 + .byte 0xb7,0x4 + .4byte .LASF2365 + .byte 0x5 + .byte 0xb8,0x4 + .4byte .LASF2366 + .byte 0x5 + .byte 0xb9,0x4 + .4byte .LASF2367 + .byte 0x5 + .byte 0xba,0x4 + .4byte .LASF2368 + .byte 0x5 + .byte 0xbb,0x4 + .4byte .LASF2369 + .byte 0x5 + .byte 0xbc,0x4 + .4byte .LASF2370 + .byte 0x5 + .byte 0xbd,0x4 + .4byte .LASF2371 + .byte 0x5 + .byte 0xbe,0x4 + .4byte .LASF2372 + .byte 0x5 + .byte 0xbf,0x4 + .4byte .LASF2373 + .byte 0x5 + .byte 0xc2,0x4 + .4byte .LASF2374 + .byte 0x5 + .byte 0xc3,0x4 + .4byte .LASF2375 + .byte 0x5 + .byte 0xc4,0x4 + .4byte .LASF2376 + .byte 0x5 + .byte 0xc5,0x4 + .4byte .LASF2377 + .byte 0x5 + .byte 0xc6,0x4 + .4byte .LASF2378 + .byte 0x5 + .byte 0xc7,0x4 + .4byte .LASF2379 + .byte 0x5 + .byte 0xc8,0x4 + .4byte .LASF2380 + .byte 0x5 + .byte 0xc9,0x4 + .4byte .LASF2381 + .byte 0x5 + .byte 0xca,0x4 + .4byte .LASF2382 + .byte 0x5 + .byte 0xcb,0x4 + .4byte .LASF2383 + .byte 0x5 + .byte 0xcc,0x4 + .4byte .LASF2384 + .byte 0x5 + .byte 0xcf,0x4 + .4byte .LASF2385 + .byte 0x5 + .byte 0xd0,0x4 + .4byte .LASF2386 + .byte 0x5 + .byte 0xd1,0x4 + .4byte .LASF2387 + .byte 0x5 + .byte 0xd2,0x4 + .4byte .LASF2388 + .byte 0x5 + .byte 0xd3,0x4 + .4byte .LASF2389 + .byte 0x5 + .byte 0xd4,0x4 + .4byte .LASF2390 + .byte 0x5 + .byte 0xd5,0x4 + .4byte .LASF2391 + .byte 0x5 + .byte 0xd6,0x4 + .4byte .LASF2392 + .byte 0x5 + .byte 0xd7,0x4 + .4byte .LASF2393 + .byte 0x5 + .byte 0xd8,0x4 + .4byte .LASF2394 + .byte 0x5 + .byte 0xd9,0x4 + .4byte .LASF2395 + .byte 0x5 + .byte 0xdd,0x4 + .4byte .LASF2396 + .byte 0x5 + .byte 0xde,0x4 + .4byte .LASF2397 + .byte 0x5 + .byte 0xe1,0x4 + .4byte .LASF2398 + .byte 0x5 + .byte 0xe2,0x4 + .4byte .LASF2399 + .byte 0x5 + .byte 0xe5,0x4 + .4byte .LASF2400 + .byte 0x5 + .byte 0xe6,0x4 + .4byte .LASF2401 + .byte 0x5 + .byte 0xea,0x4 + .4byte .LASF2402 + .byte 0x5 + .byte 0xeb,0x4 + .4byte .LASF2403 + .byte 0x5 + .byte 0xec,0x4 + .4byte .LASF2404 + .byte 0x5 + .byte 0xed,0x4 + .4byte .LASF2405 + .byte 0x5 + .byte 0xee,0x4 + .4byte .LASF2406 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_rtc.h.37.3521dc979060c1ebaf2d43fd52b94dac,comdat +.Ldebug_macro26: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2407 + .byte 0x5 + .byte 0x2a + .4byte .LASF2408 + .byte 0x5 + .byte 0x2d + .4byte .LASF2409 + .byte 0x5 + .byte 0x2e + .4byte .LASF2410 + .byte 0x5 + .byte 0x2f + .4byte .LASF2411 + .byte 0x5 + .byte 0x30 + .4byte .LASF2412 + .byte 0x5 + .byte 0x31 + .4byte .LASF2413 + .byte 0x5 + .byte 0x32 + .4byte .LASF2414 + .byte 0x5 + .byte 0x33 + .4byte .LASF2415 + .byte 0x5 + .byte 0x34 + .4byte .LASF2416 + .byte 0x5 + .byte 0x35 + .4byte .LASF2417 + .byte 0x5 + .byte 0x36 + .4byte .LASF2418 + .byte 0x5 + .byte 0x3a + .4byte .LASF2419 + .byte 0x5 + .byte 0x3b + .4byte .LASF2420 + .byte 0x5 + .byte 0x3c + .4byte .LASF2421 + .byte 0x5 + .byte 0x3f + .4byte .LASF2422 + .byte 0x5 + .byte 0x40 + .4byte .LASF2423 + .byte 0x5 + .byte 0x41 + .4byte .LASF2424 + .byte 0x5 + .byte 0x42 + .4byte .LASF2425 + .byte 0x5 + .byte 0x43 + .4byte .LASF2426 + .byte 0x5 + .byte 0x44 + .4byte .LASF2427 + .byte 0x5 + .byte 0x47 + .4byte .LASF2428 + .byte 0x5 + .byte 0x4a + .4byte .LASF2429 + .byte 0x5 + .byte 0x4d + .4byte .LASF2430 + .byte 0x5 + .byte 0x50 + .4byte .LASF2431 + .byte 0x5 + .byte 0x53 + .4byte .LASF2432 + .byte 0x5 + .byte 0x56 + .4byte .LASF2433 + .byte 0x5 + .byte 0x59 + .4byte .LASF2434 + .byte 0x5 + .byte 0x5c + .4byte .LASF2435 + .byte 0x5 + .byte 0x60 + .4byte .LASF2436 + .byte 0x5 + .byte 0x61 + .4byte .LASF2437 + .byte 0x5 + .byte 0x62 + .4byte .LASF2438 + .byte 0x5 + .byte 0x65 + .4byte .LASF2439 + .byte 0x5 + .byte 0x66 + .4byte .LASF2440 + .byte 0x5 + .byte 0x67 + .4byte .LASF2441 + .byte 0x5 + .byte 0x6a + .4byte .LASF2442 + .byte 0x5 + .byte 0x6b + .4byte .LASF2443 + .byte 0x5 + .byte 0x6c + .4byte .LASF2444 + .byte 0x5 + .byte 0x6d + .4byte .LASF2445 + .byte 0x5 + .byte 0x6e + .4byte .LASF2446 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_spi.h.37.5b2da83109360bb35c1791b7dcc5009b,comdat +.Ldebug_macro27: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2447 + .byte 0x5 + .byte 0x2a + .4byte .LASF2448 + .byte 0x5 + .byte 0x2b + .4byte .LASF2449 + .byte 0x5 + .byte 0x2c + .4byte .LASF2450 + .byte 0x5 + .byte 0x2f + .4byte .LASF2451 + .byte 0x5 + .byte 0x30 + .4byte .LASF2452 + .byte 0x5 + .byte 0x31 + .4byte .LASF2453 + .byte 0x5 + .byte 0x32 + .4byte .LASF2454 + .byte 0x5 + .byte 0x33 + .4byte .LASF2455 + .byte 0x5 + .byte 0x34 + .4byte .LASF2456 + .byte 0x5 + .byte 0x35 + .4byte .LASF2457 + .byte 0x5 + .byte 0x36 + .4byte .LASF2458 + .byte 0x5 + .byte 0x37 + .4byte .LASF2459 + .byte 0x5 + .byte 0x3b + .4byte .LASF2460 + .byte 0x5 + .byte 0x3c + .4byte .LASF2461 + .byte 0x5 + .byte 0x3d + .4byte .LASF2462 + .byte 0x5 + .byte 0x3e + .4byte .LASF2463 + .byte 0x5 + .byte 0x3f + .4byte .LASF2464 + .byte 0x5 + .byte 0x40 + .4byte .LASF2465 + .byte 0x5 + .byte 0x41 + .4byte .LASF2466 + .byte 0x5 + .byte 0x42 + .4byte .LASF2467 + .byte 0x5 + .byte 0x43 + .4byte .LASF2468 + .byte 0x5 + .byte 0x44 + .4byte .LASF2469 + .byte 0x5 + .byte 0x45 + .4byte .LASF2470 + .byte 0x5 + .byte 0x46 + .4byte .LASF2471 + .byte 0x5 + .byte 0x47 + .4byte .LASF2472 + .byte 0x5 + .byte 0x48 + .4byte .LASF2473 + .byte 0x5 + .byte 0x4b + .4byte .LASF2474 + .byte 0x5 + .byte 0x4c + .4byte .LASF2475 + .byte 0x5 + .byte 0x4d + .4byte .LASF2476 + .byte 0x5 + .byte 0x4e + .4byte .LASF2477 + .byte 0x5 + .byte 0x4f + .4byte .LASF2478 + .byte 0x5 + .byte 0x50 + .4byte .LASF2479 + .byte 0x5 + .byte 0x51 + .4byte .LASF2480 + .byte 0x5 + .byte 0x52 + .4byte .LASF2481 + .byte 0x5 + .byte 0x55 + .4byte .LASF2482 + .byte 0x5 + .byte 0x56 + .4byte .LASF2483 + .byte 0x5 + .byte 0x57 + .4byte .LASF2484 + .byte 0x5 + .byte 0x58 + .4byte .LASF2485 + .byte 0x5 + .byte 0x59 + .4byte .LASF2486 + .byte 0x5 + .byte 0x5a + .4byte .LASF2487 + .byte 0x5 + .byte 0x5b + .4byte .LASF2488 + .byte 0x5 + .byte 0x5c + .4byte .LASF2489 + .byte 0x5 + .byte 0x5d + .4byte .LASF2490 + .byte 0x5 + .byte 0x60 + .4byte .LASF2491 + .byte 0x5 + .byte 0x63 + .4byte .LASF2492 + .byte 0x5 + .byte 0x66 + .4byte .LASF2493 + .byte 0x5 + .byte 0x69 + .4byte .LASF2494 + .byte 0x5 + .byte 0x6c + .4byte .LASF2495 + .byte 0x5 + .byte 0x6d + .4byte .LASF2496 + .byte 0x5 + .byte 0x6e + .4byte .LASF2497 + .byte 0x5 + .byte 0x6f + .4byte .LASF2498 + .byte 0x5 + .byte 0x70 + .4byte .LASF2499 + .byte 0x5 + .byte 0x71 + .4byte .LASF2500 + .byte 0x5 + .byte 0x72 + .4byte .LASF2501 + .byte 0x5 + .byte 0x73 + .4byte .LASF2502 + .byte 0x5 + .byte 0x76 + .4byte .LASF2503 + .byte 0x5 + .byte 0x77 + .4byte .LASF2504 + .byte 0x5 + .byte 0x78 + .4byte .LASF2505 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF2506 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF2507 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2508 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2509 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF2510 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2511 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF2512 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF2513 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2514 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2515 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF2516 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2517 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2518 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF2519 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF2520 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF2521 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF2522 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF2523 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2524 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2525 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2526 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2527 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF2528 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF2529 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF2530 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF2531 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF2532 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF2533 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF2534 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2535 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF2536 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF2537 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2538 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2539 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2540 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2541 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2542 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2543 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2544 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2545 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2546 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF2547 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF2548 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF2549 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF2550 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2551 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF2552 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF2553 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF2554 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF2555 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF2556 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF2557 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2558 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF2559 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF2560 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF2561 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF2562 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF2563 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2564 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2565 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF2566 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF2567 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2568 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF2569 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2570 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2571 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF2572 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF2573 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF2574 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF2575 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF2576 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF2577 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF2578 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF2579 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF2580 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF2581 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF2582 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF2583 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF2584 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF2585 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF2586 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF2587 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF2588 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF2589 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_timer.h.37.41e31e3c41519d549a8819d7a508d7a5,comdat +.Ldebug_macro28: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2590 + .byte 0x5 + .byte 0x2a + .4byte .LASF2591 + .byte 0x5 + .byte 0x2b + .4byte .LASF2592 + .byte 0x5 + .byte 0x2c + .4byte .LASF2593 + .byte 0x5 + .byte 0x2d + .4byte .LASF2594 + .byte 0x5 + .byte 0x2e + .4byte .LASF2595 + .byte 0x5 + .byte 0x2f + .4byte .LASF2596 + .byte 0x5 + .byte 0x30 + .4byte .LASF2597 + .byte 0x5 + .byte 0x33 + .4byte .LASF2598 + .byte 0x5 + .byte 0x34 + .4byte .LASF2599 + .byte 0x5 + .byte 0x35 + .4byte .LASF2600 + .byte 0x5 + .byte 0x36 + .4byte .LASF2601 + .byte 0x5 + .byte 0x37 + .4byte .LASF2602 + .byte 0x5 + .byte 0x38 + .4byte .LASF2603 + .byte 0x5 + .byte 0x39 + .4byte .LASF2604 + .byte 0x5 + .byte 0x3a + .4byte .LASF2605 + .byte 0x5 + .byte 0x3b + .4byte .LASF2606 + .byte 0x5 + .byte 0x3c + .4byte .LASF2607 + .byte 0x5 + .byte 0x3d + .4byte .LASF2608 + .byte 0x5 + .byte 0x3e + .4byte .LASF2609 + .byte 0x5 + .byte 0x3f + .4byte .LASF2610 + .byte 0x5 + .byte 0x40 + .4byte .LASF2611 + .byte 0x5 + .byte 0x41 + .4byte .LASF2612 + .byte 0x5 + .byte 0x42 + .4byte .LASF2613 + .byte 0x5 + .byte 0x43 + .4byte .LASF2614 + .byte 0x5 + .byte 0x44 + .4byte .LASF2615 + .byte 0x5 + .byte 0x45 + .4byte .LASF2616 + .byte 0x5 + .byte 0x46 + .4byte .LASF2617 + .byte 0x5 + .byte 0x4a + .4byte .LASF2618 + .byte 0x5 + .byte 0x4b + .4byte .LASF2619 + .byte 0x5 + .byte 0x4c + .4byte .LASF2620 + .byte 0x5 + .byte 0x4d + .4byte .LASF2621 + .byte 0x5 + .byte 0x4e + .4byte .LASF2622 + .byte 0x5 + .byte 0x4f + .4byte .LASF2623 + .byte 0x5 + .byte 0x50 + .4byte .LASF2624 + .byte 0x5 + .byte 0x51 + .4byte .LASF2625 + .byte 0x5 + .byte 0x54 + .4byte .LASF2626 + .byte 0x5 + .byte 0x55 + .4byte .LASF2627 + .byte 0x5 + .byte 0x56 + .4byte .LASF2628 + .byte 0x5 + .byte 0x57 + .4byte .LASF2629 + .byte 0x5 + .byte 0x58 + .4byte .LASF2630 + .byte 0x5 + .byte 0x59 + .4byte .LASF2631 + .byte 0x5 + .byte 0x5a + .4byte .LASF2632 + .byte 0x5 + .byte 0x5b + .4byte .LASF2633 + .byte 0x5 + .byte 0x5c + .4byte .LASF2634 + .byte 0x5 + .byte 0x5d + .4byte .LASF2635 + .byte 0x5 + .byte 0x5e + .4byte .LASF2636 + .byte 0x5 + .byte 0x5f + .4byte .LASF2637 + .byte 0x5 + .byte 0x62 + .4byte .LASF2638 + .byte 0x5 + .byte 0x63 + .4byte .LASF2639 + .byte 0x5 + .byte 0x64 + .4byte .LASF2640 + .byte 0x5 + .byte 0x65 + .4byte .LASF2641 + .byte 0x5 + .byte 0x66 + .4byte .LASF2642 + .byte 0x5 + .byte 0x67 + .4byte .LASF2643 + .byte 0x5 + .byte 0x68 + .4byte .LASF2644 + .byte 0x5 + .byte 0x6b + .4byte .LASF2645 + .byte 0x5 + .byte 0x6c + .4byte .LASF2646 + .byte 0x5 + .byte 0x6d + .4byte .LASF2647 + .byte 0x5 + .byte 0x6e + .4byte .LASF2648 + .byte 0x5 + .byte 0x6f + .4byte .LASF2649 + .byte 0x5 + .byte 0x70 + .4byte .LASF2650 + .byte 0x5 + .byte 0x71 + .4byte .LASF2651 + .byte 0x5 + .byte 0x72 + .4byte .LASF2652 + .byte 0x5 + .byte 0x73 + .4byte .LASF2653 + .byte 0x5 + .byte 0x74 + .4byte .LASF2654 + .byte 0x5 + .byte 0x75 + .4byte .LASF2655 + .byte 0x5 + .byte 0x76 + .4byte .LASF2656 + .byte 0x5 + .byte 0x77 + .4byte .LASF2657 + .byte 0x5 + .byte 0x78 + .4byte .LASF2658 + .byte 0x5 + .byte 0x79 + .4byte .LASF2659 + .byte 0x5 + .byte 0x7c + .4byte .LASF2660 + .byte 0x5 + .byte 0x7d + .4byte .LASF2661 + .byte 0x5 + .byte 0x7e + .4byte .LASF2662 + .byte 0x5 + .byte 0x7f + .4byte .LASF2663 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF2664 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF2665 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF2666 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF2667 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF2668 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF2669 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF2670 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF2671 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF2672 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF2673 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2674 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2675 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF2676 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF2677 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF2678 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2679 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF2680 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2681 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2682 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF2683 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF2684 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF2685 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2686 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF2687 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF2688 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2689 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF2690 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF2691 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF2692 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF2693 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF2694 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2695 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2696 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2697 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2698 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF2699 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF2700 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF2701 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF2702 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF2703 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF2704 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF2705 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF2706 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2707 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2708 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2709 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2710 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2711 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF2712 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF2713 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2714 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2715 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2716 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2717 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2718 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF2719 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF2720 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF2721 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF2722 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2723 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF2724 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF2725 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2726 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF2727 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF2728 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF2729 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2730 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2731 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF2732 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF2733 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF2734 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF2735 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2736 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF2737 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2738 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2739 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF2740 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF2741 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF2742 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF2743 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF2744 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF2745 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF2746 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF2747 + .byte 0x5 + .byte 0xa4,0x2 + .4byte .LASF2748 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF2749 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF2750 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF2751 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF2752 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF2753 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF2754 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF2755 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF2756 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF2757 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF2758 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF2759 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF2760 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF2761 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF2762 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF2763 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF2764 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF2765 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF2766 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF2767 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF2768 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF2769 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF2770 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF2771 + .byte 0x5 + .byte 0xc2,0x2 + .4byte .LASF2772 + .byte 0x5 + .byte 0xc3,0x2 + .4byte .LASF2773 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF2774 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF2775 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF2776 + .byte 0x5 + .byte 0xc9,0x2 + .4byte .LASF2777 + .byte 0x5 + .byte 0xcc,0x2 + .4byte .LASF2778 + .byte 0x5 + .byte 0xcd,0x2 + .4byte .LASF2779 + .byte 0x5 + .byte 0xce,0x2 + .4byte .LASF2780 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF2781 + .byte 0x5 + .byte 0xd0,0x2 + .4byte .LASF2782 + .byte 0x5 + .byte 0xd1,0x2 + .4byte .LASF2783 + .byte 0x5 + .byte 0xd2,0x2 + .4byte .LASF2784 + .byte 0x5 + .byte 0xd3,0x2 + .4byte .LASF2785 + .byte 0x5 + .byte 0xd4,0x2 + .4byte .LASF2786 + .byte 0x5 + .byte 0xd5,0x2 + .4byte .LASF2787 + .byte 0x5 + .byte 0xd6,0x2 + .4byte .LASF2788 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF2789 + .byte 0x5 + .byte 0xd8,0x2 + .4byte .LASF2790 + .byte 0x5 + .byte 0xd9,0x2 + .4byte .LASF2791 + .byte 0x5 + .byte 0xda,0x2 + .4byte .LASF2792 + .byte 0x5 + .byte 0xdb,0x2 + .4byte .LASF2793 + .byte 0x5 + .byte 0xdc,0x2 + .4byte .LASF2794 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF2795 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF2796 + .byte 0x5 + .byte 0xdf,0x2 + .4byte .LASF2797 + .byte 0x5 + .byte 0xe2,0x2 + .4byte .LASF2798 + .byte 0x5 + .byte 0xe3,0x2 + .4byte .LASF2799 + .byte 0x5 + .byte 0xe4,0x2 + .4byte .LASF2800 + .byte 0x5 + .byte 0xe5,0x2 + .4byte .LASF2801 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF2802 + .byte 0x5 + .byte 0xe7,0x2 + .4byte .LASF2803 + .byte 0x5 + .byte 0xe8,0x2 + .4byte .LASF2804 + .byte 0x5 + .byte 0xe9,0x2 + .4byte .LASF2805 + .byte 0x5 + .byte 0xea,0x2 + .4byte .LASF2806 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF2807 + .byte 0x5 + .byte 0xec,0x2 + .4byte .LASF2808 + .byte 0x5 + .byte 0xed,0x2 + .4byte .LASF2809 + .byte 0x5 + .byte 0xee,0x2 + .4byte .LASF2810 + .byte 0x5 + .byte 0xef,0x2 + .4byte .LASF2811 + .byte 0x5 + .byte 0xf0,0x2 + .4byte .LASF2812 + .byte 0x5 + .byte 0xf1,0x2 + .4byte .LASF2813 + .byte 0x5 + .byte 0xf2,0x2 + .4byte .LASF2814 + .byte 0x5 + .byte 0xf3,0x2 + .4byte .LASF2815 + .byte 0x5 + .byte 0xf4,0x2 + .4byte .LASF2816 + .byte 0x5 + .byte 0xf7,0x2 + .4byte .LASF2817 + .byte 0x5 + .byte 0xf8,0x2 + .4byte .LASF2818 + .byte 0x5 + .byte 0xf9,0x2 + .4byte .LASF2819 + .byte 0x5 + .byte 0xfa,0x2 + .4byte .LASF2820 + .byte 0x5 + .byte 0xfb,0x2 + .4byte .LASF2821 + .byte 0x5 + .byte 0xfc,0x2 + .4byte .LASF2822 + .byte 0x5 + .byte 0xfd,0x2 + .4byte .LASF2823 + .byte 0x5 + .byte 0xfe,0x2 + .4byte .LASF2824 + .byte 0x5 + .byte 0x81,0x3 + .4byte .LASF2825 + .byte 0x5 + .byte 0x82,0x3 + .4byte .LASF2826 + .byte 0x5 + .byte 0x83,0x3 + .4byte .LASF2827 + .byte 0x5 + .byte 0x84,0x3 + .4byte .LASF2828 + .byte 0x5 + .byte 0x85,0x3 + .4byte .LASF2829 + .byte 0x5 + .byte 0x88,0x3 + .4byte .LASF2830 + .byte 0x5 + .byte 0x89,0x3 + .4byte .LASF2831 + .byte 0x5 + .byte 0x8c,0x3 + .4byte .LASF2832 + .byte 0x5 + .byte 0x8d,0x3 + .4byte .LASF2833 + .byte 0x5 + .byte 0x90,0x3 + .4byte .LASF2834 + .byte 0x5 + .byte 0x91,0x3 + .4byte .LASF2835 + .byte 0x5 + .byte 0x92,0x3 + .4byte .LASF2836 + .byte 0x5 + .byte 0x93,0x3 + .4byte .LASF2837 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF2838 + .byte 0x5 + .byte 0x97,0x3 + .4byte .LASF2839 + .byte 0x5 + .byte 0x9a,0x3 + .4byte .LASF2840 + .byte 0x5 + .byte 0x9b,0x3 + .4byte .LASF2841 + .byte 0x5 + .byte 0x9e,0x3 + .4byte .LASF2842 + .byte 0x5 + .byte 0x9f,0x3 + .4byte .LASF2843 + .byte 0x5 + .byte 0xa3,0x3 + .4byte .LASF2844 + .byte 0x5 + .byte 0xa4,0x3 + .4byte .LASF2845 + .byte 0x5 + .byte 0xa7,0x3 + .4byte .LASF2846 + .byte 0x5 + .byte 0xa8,0x3 + .4byte .LASF2847 + .byte 0x5 + .byte 0xab,0x3 + .4byte .LASF2848 + .byte 0x5 + .byte 0xac,0x3 + .4byte .LASF2849 + .byte 0x5 + .byte 0xaf,0x3 + .4byte .LASF2850 + .byte 0x5 + .byte 0xb0,0x3 + .4byte .LASF2851 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF2852 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF2853 + .byte 0x5 + .byte 0xb3,0x3 + .4byte .LASF2854 + .byte 0x5 + .byte 0xb6,0x3 + .4byte .LASF2855 + .byte 0x5 + .byte 0xb7,0x3 + .4byte .LASF2856 + .byte 0x5 + .byte 0xba,0x3 + .4byte .LASF2857 + .byte 0x5 + .byte 0xbb,0x3 + .4byte .LASF2858 + .byte 0x5 + .byte 0xbc,0x3 + .4byte .LASF2859 + .byte 0x5 + .byte 0xbd,0x3 + .4byte .LASF2860 + .byte 0x5 + .byte 0xc0,0x3 + .4byte .LASF2861 + .byte 0x5 + .byte 0xc1,0x3 + .4byte .LASF2862 + .byte 0x5 + .byte 0xc4,0x3 + .4byte .LASF2863 + .byte 0x5 + .byte 0xc5,0x3 + .4byte .LASF2864 + .byte 0x5 + .byte 0xc8,0x3 + .4byte .LASF2865 + .byte 0x5 + .byte 0xc9,0x3 + .4byte .LASF2866 + .byte 0x5 + .byte 0xcc,0x3 + .4byte .LASF2867 + .byte 0x5 + .byte 0xcd,0x3 + .4byte .LASF2868 + .byte 0x5 + .byte 0xd0,0x3 + .4byte .LASF2869 + .byte 0x5 + .byte 0xd1,0x3 + .4byte .LASF2870 + .byte 0x5 + .byte 0xd4,0x3 + .4byte .LASF2871 + .byte 0x5 + .byte 0xd5,0x3 + .4byte .LASF2872 + .byte 0x5 + .byte 0xd8,0x3 + .4byte .LASF2873 + .byte 0x5 + .byte 0xd9,0x3 + .4byte .LASF2874 + .byte 0x5 + .byte 0xda,0x3 + .4byte .LASF2875 + .byte 0x5 + .byte 0xdb,0x3 + .4byte .LASF2876 + .byte 0x5 + .byte 0xdc,0x3 + .4byte .LASF2877 + .byte 0x5 + .byte 0xdd,0x3 + .4byte .LASF2878 + .byte 0x5 + .byte 0xde,0x3 + .4byte .LASF2879 + .byte 0x5 + .byte 0xdf,0x3 + .4byte .LASF2880 + .byte 0x5 + .byte 0xe2,0x3 + .4byte .LASF2881 + .byte 0x5 + .byte 0xe3,0x3 + .4byte .LASF2882 + .byte 0x5 + .byte 0xe6,0x3 + .4byte .LASF2883 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF2884 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF2885 + .byte 0x5 + .byte 0xeb,0x3 + .4byte .LASF2886 + .byte 0x5 + .byte 0xee,0x3 + .4byte .LASF2887 + .byte 0x5 + .byte 0xef,0x3 + .4byte .LASF2888 + .byte 0x5 + .byte 0xf2,0x3 + .4byte .LASF2889 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF2890 + .byte 0x5 + .byte 0xf4,0x3 + .4byte .LASF2891 + .byte 0x5 + .byte 0xf7,0x3 + .4byte .LASF2892 + .byte 0x5 + .byte 0xf8,0x3 + .4byte .LASF2893 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF2894 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF2895 + .byte 0x5 + .byte 0xfd,0x3 + .4byte .LASF2896 + .byte 0x5 + .byte 0xfe,0x3 + .4byte .LASF2897 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF2898 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF2899 + .byte 0x5 + .byte 0x83,0x4 + .4byte .LASF2900 + .byte 0x5 + .byte 0x84,0x4 + .4byte .LASF2901 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF2902 + .byte 0x5 + .byte 0x86,0x4 + .4byte .LASF2903 + .byte 0x5 + .byte 0x87,0x4 + .4byte .LASF2904 + .byte 0x5 + .byte 0x88,0x4 + .4byte .LASF2905 + .byte 0x5 + .byte 0x89,0x4 + .4byte .LASF2906 + .byte 0x5 + .byte 0x8a,0x4 + .4byte .LASF2907 + .byte 0x5 + .byte 0x8d,0x4 + .4byte .LASF2908 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF2909 + .byte 0x5 + .byte 0x8f,0x4 + .4byte .LASF2910 + .byte 0x5 + .byte 0x90,0x4 + .4byte .LASF2911 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF2912 + .byte 0x5 + .byte 0x92,0x4 + .4byte .LASF2913 + .byte 0x5 + .byte 0x93,0x4 + .4byte .LASF2914 + .byte 0x5 + .byte 0x94,0x4 + .4byte .LASF2915 + .byte 0x5 + .byte 0x95,0x4 + .4byte .LASF2916 + .byte 0x5 + .byte 0x98,0x4 + .4byte .LASF2917 + .byte 0x5 + .byte 0x99,0x4 + .4byte .LASF2918 + .byte 0x5 + .byte 0x9a,0x4 + .4byte .LASF2919 + .byte 0x5 + .byte 0x9b,0x4 + .4byte .LASF2920 + .byte 0x5 + .byte 0x9c,0x4 + .4byte .LASF2921 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF2922 + .byte 0x5 + .byte 0x9e,0x4 + .4byte .LASF2923 + .byte 0x5 + .byte 0x9f,0x4 + .4byte .LASF2924 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF2925 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF2926 + .byte 0x5 + .byte 0xa4,0x4 + .4byte .LASF2927 + .byte 0x5 + .byte 0xa7,0x4 + .4byte .LASF2928 + .byte 0x5 + .byte 0xa8,0x4 + .4byte .LASF2929 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF2930 + .byte 0x5 + .byte 0xaa,0x4 + .4byte .LASF2931 + .byte 0x5 + .byte 0xab,0x4 + .4byte .LASF2932 + .byte 0x5 + .byte 0xae,0x4 + .4byte .LASF2933 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF2934 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF2935 + .byte 0x5 + .byte 0xb3,0x4 + .4byte .LASF2936 + .byte 0x5 + .byte 0xb6,0x4 + .4byte .LASF2937 + .byte 0x5 + .byte 0xb7,0x4 + .4byte .LASF2938 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_wwdgt.h.37.3e64b838fd471007da900965463a8419,comdat +.Ldebug_macro29: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2939 + .byte 0x5 + .byte 0x2a + .4byte .LASF2940 + .byte 0x5 + .byte 0x2d + .4byte .LASF2941 + .byte 0x5 + .byte 0x2e + .4byte .LASF2942 + .byte 0x5 + .byte 0x2f + .4byte .LASF2943 + .byte 0x5 + .byte 0x33 + .4byte .LASF2944 + .byte 0x5 + .byte 0x34 + .4byte .LASF2945 + .byte 0x5 + .byte 0x37 + .4byte .LASF2946 + .byte 0x5 + .byte 0x38 + .4byte .LASF2947 + .byte 0x5 + .byte 0x39 + .4byte .LASF2948 + .byte 0x5 + .byte 0x3c + .4byte .LASF2949 + .byte 0x5 + .byte 0x3f + .4byte .LASF2950 + .byte 0x5 + .byte 0x40 + .4byte .LASF2951 + .byte 0x5 + .byte 0x41 + .4byte .LASF2952 + .byte 0x5 + .byte 0x42 + .4byte .LASF2953 + .byte 0x5 + .byte 0x43 + .4byte .LASF2954 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stddef.h.39.144cf5ddcd53cbfdac30259dc1a6c87f,comdat +.Ldebug_macro30: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF2956 + .byte 0x5 + .byte 0x28 + .4byte .LASF2957 + .byte 0x5 + .byte 0x2a + .4byte .LASF2958 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF2959 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF2960 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF2961 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF2962 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF2963 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF2964 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF2965 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF2966 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF2967 + .byte 0x6 + .byte 0x9b,0x1 + .4byte .LASF2968 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2969 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF2970 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF2971 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2972 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2973 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2974 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2975 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF2976 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF2977 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2978 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2979 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2980 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2981 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2982 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF2983 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF2984 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2985 + .byte 0x6 + .byte 0xe7,0x1 + .4byte .LASF2986 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF2987 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF2988 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF2989 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF2990 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF2991 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF2992 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF2993 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF2994 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF2995 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF2996 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF2997 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF2998 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF2999 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF3000 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF3001 + .byte 0x6 + .byte 0x9f,0x2 + .4byte .LASF3002 + .byte 0x6 + .byte 0xd4,0x2 + .4byte .LASF3003 + .byte 0x6 + .byte 0x86,0x3 + .4byte .LASF3004 + .byte 0x5 + .byte 0x8b,0x3 + .4byte .LASF3005 + .byte 0x6 + .byte 0x91,0x3 + .4byte .LASF3006 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF3007 + .byte 0x5 + .byte 0x9b,0x3 + .4byte .LASF3008 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_timer.h.4.7cbfcb0f457964ecd81bc2aaf47d8b32,comdat +.Ldebug_macro31: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4 + .4byte .LASF3009 + .byte 0x5 + .byte 0x6 + .4byte .LASF3010 + .byte 0x5 + .byte 0x7 + .4byte .LASF3011 + .byte 0x5 + .byte 0x8 + .4byte .LASF3012 + .byte 0x5 + .byte 0x9 + .4byte .LASF3013 + .byte 0x5 + .byte 0xa + .4byte .LASF3014 + .byte 0x5 + .byte 0xb + .4byte .LASF3015 + .byte 0x5 + .byte 0xd + .4byte .LASF3016 + .byte 0x5 + .byte 0xe + .4byte .LASF3017 + .byte 0x5 + .byte 0xf + .4byte .LASF3018 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.riscv_const.h.5.95ac0744d59bfc0d17f4e8adf85ccb42,comdat +.Ldebug_macro32: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x5 + .4byte .LASF3020 + .byte 0x5 + .byte 0xb + .4byte .LASF3021 + .byte 0x5 + .byte 0xc + .4byte .LASF3022 + .byte 0x5 + .byte 0xf + .4byte .LASF3023 + .byte 0x5 + .byte 0x10 + .4byte .LASF3024 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_eclic.h.8.88844f0cdf4d8e1ef4e06c0cb5147462,comdat +.Ldebug_macro33: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x8 + .4byte .LASF3025 + .byte 0x5 + .byte 0xd + .4byte .LASF3026 + .byte 0x5 + .byte 0xf + .4byte .LASF3027 + .byte 0x5 + .byte 0x11 + .4byte .LASF3028 + .byte 0x5 + .byte 0x14 + .4byte .LASF3029 + .byte 0x5 + .byte 0x16 + .4byte .LASF3030 + .byte 0x5 + .byte 0x18 + .4byte .LASF3031 + .byte 0x5 + .byte 0x1a + .4byte .LASF3032 + .byte 0x5 + .byte 0x1b + .4byte .LASF3033 + .byte 0x5 + .byte 0x1c + .4byte .LASF3034 + .byte 0x5 + .byte 0x1d + .4byte .LASF3035 + .byte 0x5 + .byte 0x1e + .4byte .LASF3036 + .byte 0x5 + .byte 0x21 + .4byte .LASF3037 + .byte 0x5 + .byte 0x23 + .4byte .LASF3038 + .byte 0x5 + .byte 0x26 + .4byte .LASF3039 + .byte 0x5 + .byte 0x27 + .4byte .LASF3040 + .byte 0x5 + .byte 0x29 + .4byte .LASF3041 + .byte 0x5 + .byte 0x2a + .4byte .LASF3042 + .byte 0x5 + .byte 0x2b + .4byte .LASF3043 + .byte 0x5 + .byte 0x2c + .4byte .LASF3044 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_func.h.11.5e6cb65336aea242ab47b239a06795e1,comdat +.Ldebug_macro34: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xb + .4byte .LASF3045 + .byte 0x5 + .byte 0xc + .4byte .LASF3046 + .byte 0x5 + .byte 0xd + .4byte .LASF3047 + .byte 0x5 + .byte 0xe + .4byte .LASF3048 + .byte 0x5 + .byte 0xf + .4byte .LASF3049 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_usart.h.43.723b7004fee4b8e634cf090b19700efd,comdat +.Ldebug_macro35: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x2b + .4byte .LASF3050 + .byte 0x5 + .byte 0x2c + .4byte .LASF3051 + .byte 0x5 + .byte 0x2d + .4byte .LASF3052 + .byte 0x5 + .byte 0x2e + .4byte .LASF3053 + .byte 0x5 + .byte 0x2f + .4byte .LASF3054 + .byte 0x5 + .byte 0x32 + .4byte .LASF3055 + .byte 0x5 + .byte 0x33 + .4byte .LASF3056 + .byte 0x5 + .byte 0x34 + .4byte .LASF3057 + .byte 0x5 + .byte 0x35 + .4byte .LASF3058 + .byte 0x5 + .byte 0x36 + .4byte .LASF3059 + .byte 0x5 + .byte 0x37 + .4byte .LASF3060 + .byte 0x5 + .byte 0x38 + .4byte .LASF3061 + .byte 0x5 + .byte 0x3c + .4byte .LASF3062 + .byte 0x5 + .byte 0x3d + .4byte .LASF3063 + .byte 0x5 + .byte 0x3e + .4byte .LASF3064 + .byte 0x5 + .byte 0x3f + .4byte .LASF3065 + .byte 0x5 + .byte 0x40 + .4byte .LASF3066 + .byte 0x5 + .byte 0x41 + .4byte .LASF3067 + .byte 0x5 + .byte 0x42 + .4byte .LASF3068 + .byte 0x5 + .byte 0x43 + .4byte .LASF3069 + .byte 0x5 + .byte 0x44 + .4byte .LASF3070 + .byte 0x5 + .byte 0x45 + .4byte .LASF3071 + .byte 0x5 + .byte 0x48 + .4byte .LASF3072 + .byte 0x5 + .byte 0x4b + .4byte .LASF3073 + .byte 0x5 + .byte 0x4c + .4byte .LASF3074 + .byte 0x5 + .byte 0x4f + .4byte .LASF3075 + .byte 0x5 + .byte 0x50 + .4byte .LASF3076 + .byte 0x5 + .byte 0x51 + .4byte .LASF3077 + .byte 0x5 + .byte 0x52 + .4byte .LASF3078 + .byte 0x5 + .byte 0x53 + .4byte .LASF3079 + .byte 0x5 + .byte 0x54 + .4byte .LASF3080 + .byte 0x5 + .byte 0x55 + .4byte .LASF3081 + .byte 0x5 + .byte 0x56 + .4byte .LASF3082 + .byte 0x5 + .byte 0x57 + .4byte .LASF3083 + .byte 0x5 + .byte 0x58 + .4byte .LASF3084 + .byte 0x5 + .byte 0x59 + .4byte .LASF3085 + .byte 0x5 + .byte 0x5a + .4byte .LASF3086 + .byte 0x5 + .byte 0x5b + .4byte .LASF3087 + .byte 0x5 + .byte 0x5c + .4byte .LASF3088 + .byte 0x5 + .byte 0x5f + .4byte .LASF3089 + .byte 0x5 + .byte 0x60 + .4byte .LASF3090 + .byte 0x5 + .byte 0x61 + .4byte .LASF3091 + .byte 0x5 + .byte 0x62 + .4byte .LASF3092 + .byte 0x5 + .byte 0x63 + .4byte .LASF3093 + .byte 0x5 + .byte 0x64 + .4byte .LASF3094 + .byte 0x5 + .byte 0x65 + .4byte .LASF3095 + .byte 0x5 + .byte 0x66 + .4byte .LASF3096 + .byte 0x5 + .byte 0x67 + .4byte .LASF3097 + .byte 0x5 + .byte 0x6a + .4byte .LASF3098 + .byte 0x5 + .byte 0x6b + .4byte .LASF3099 + .byte 0x5 + .byte 0x6c + .4byte .LASF3100 + .byte 0x5 + .byte 0x6d + .4byte .LASF3101 + .byte 0x5 + .byte 0x6e + .4byte .LASF3102 + .byte 0x5 + .byte 0x6f + .4byte .LASF3103 + .byte 0x5 + .byte 0x70 + .4byte .LASF3104 + .byte 0x5 + .byte 0x71 + .4byte .LASF3105 + .byte 0x5 + .byte 0x72 + .4byte .LASF3106 + .byte 0x5 + .byte 0x73 + .4byte .LASF3107 + .byte 0x5 + .byte 0x74 + .4byte .LASF3108 + .byte 0x5 + .byte 0x77 + .4byte .LASF3109 + .byte 0x5 + .byte 0x78 + .4byte .LASF3110 + .byte 0x5 + .byte 0x7c + .4byte .LASF3111 + .byte 0x5 + .byte 0x7d + .4byte .LASF3112 + .byte 0x5 + .byte 0x7e + .4byte .LASF3113 + .byte 0x5 + .byte 0x7f + .4byte .LASF3114 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF3115 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF3116 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF3117 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF3118 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF3119 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF3120 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF3121 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF3122 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF3123 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF3124 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF3125 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF3126 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF3127 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF3128 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF3129 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF3130 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF3131 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF3132 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF3133 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF3134 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF3135 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF3136 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF3137 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF3138 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF3139 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF3140 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF3141 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF3142 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF3143 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF3144 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF3145 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF3146 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF3147 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF3148 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF3149 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF3150 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF3151 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF3152 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF3153 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF3154 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF3155 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF3156 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF3157 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF3158 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF3159 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF3160 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF3161 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF3162 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF3163 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF3164 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF3165 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF3166 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF3167 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF3168 + .byte 0 + .section .debug_line,"",@progbits +.Ldebug_line0: + .section .debug_str,"MS",@progbits,1 +.LASF1190: + .string "DAC_WAVE_BIT_WIDTH_4 DWBW(3)" +.LASF3293: + .string "wlen" +.LASF328: + .string "_POSIX_C_SOURCE 1" +.LASF2500: + .string "SPI_I2SCTL_I2SOPMOD BITS(8,9)" +.LASF1588: + .string "OB_WP_25 ((uint32_t)0x02000000U)" +.LASF3122: + .string "USART_RECEIVE_ENABLE CTL0_REN(1)" +.LASF366: + .string "___int16_t_defined 1" +.LASF2261: + .string "RCU_AHB_CKSYS_DIV8 CFG0_AHBPSC(10)" +.LASF758: + .string "BKP_DATA BITS(0,15)" +.LASF885: + .string "CAN_CTL_RFOD BIT(3)" +.LASF1937: + .string "I2C_STAT1_RXGC BIT(4)" +.LASF3042: + .string "MTIME_HANDLER eclic_mtip_handler" +.LASF1718: + .string "GPIO_BC_CR2 BIT(2)" +.LASF2964: + .string "_BSD_PTRDIFF_T_ " +.LASF1401: + .string "EXTI_EVEN_EVEN11 BIT(11)" +.LASF835: + .string "CAN_F19DATA0(canx) REG32((canx) + 0x2D8U)" +.LASF1277: + .string "DMA_CHXCTL_MWIDTH BITS(10,11)" +.LASF2462: + .string "SPI_CTL0_MSTMOD BIT(2)" +.LASF2406: + .string "RCU_DEEPSLEEP_V_0_9 DSV_DSLPVS(3)" +.LASF1302: + .string "DMA_INT_HTF DMA_CHXCTL_HTFIE" +.LASF3099: + .string "USART_CTL2_IREN BIT(1)" +.LASF2140: + .string "RCU_INT_CKMIC BIT(23)" +.LASF2431: + .string "RTC_DIVL_DIV BITS(0,15)" +.LASF2117: + .string "RCU_CFG0_PLLMF_4 BIT(29)" +.LASF2991: + .string "_T_WCHAR " +.LASF2002: + .string "FWDGT_STAT_RUD BIT(1)" +.LASF537: + .string "ADC_IOFF1(adcx) REG32((adcx) + 0x18U)" +.LASF1615: + .string "AFIO_EXTISS0 REG32(AFIO + 0x08U)" +.LASF1975: + .string "I2C_DMA_OFF ((uint32_t)0x00000000U)" +.LASF2889: + .string "TIMER_IC_POLARITY_RISING ((uint16_t)0x0000U)" +.LASF2497: + .string "SPI_I2SCTL_CKPL BIT(3)" +.LASF827: + .string "CAN_F11DATA0(canx) REG32((canx) + 0x298U)" +.LASF150: + .string "__FLT_MAX_10_EXP__ 38" +.LASF2474: + .string "SPI_CTL1_DMAREN BIT(0)" +.LASF1929: + .string "I2C_STAT0_AERR BIT(10)" +.LASF127: + .string "__INT_FAST16_WIDTH__ 32" +.LASF981: + .string "CAN_RFIFOMDATA0_DB1 BITS(8,15)" +.LASF3098: + .string "USART_CTL2_ERRIE BIT(0)" +.LASF914: + .string "CAN_TSTAT_MTE2 BIT(19)" +.LASF3299: + .string "intdiv" +.LASF2561: + .string "I2S_CKPL_HIGH SPI_I2SCTL_CKPL" +.LASF2203: + .string "RCU_APB1EN_I2C0EN BIT(21)" +.LASF2451: + .string "SPI_CTL0(spix) REG32((spix) + 0x00U)" +.LASF3270: + .string "usart_send_break" +.LASF2876: + .string "TIMER_OC_MODE_TOGGLE ((uint16_t)0x0030U)" +.LASF1472: + .string "EXTI_PD_PD6 BIT(6)" +.LASF1096: + .string "CAN_FILTERBITS_16BIT ((uint8_t)0x00U)" +.LASF3178: + .string "long unsigned int" +.LASF727: + .string "BKP_DATA14 REG16((BKP) + 0x50U)" +.LASF1769: + .string "AFIO_EXTI2_SS BITS(8, 11)" +.LASF3216: + .string "RCU_SPI0RST" +.LASF2411: + .string "RTC_PSCH REG32(RTC + 0x08U)" +.LASF1777: + .string "AFIO_EXTI10_SS BITS(8, 11)" +.LASF300: + .string "__SIZEOF_WCHAR_T__ 4" +.LASF501: + .string "EXMC_BASE ((uint32_t)0xA0000000U)" +.LASF1671: + .string "GPIO_OCTL_OCTL3 BIT(3)" +.LASF1340: + .string "EXMC_SNCTL_NRTP BITS(2,3)" +.LASF307: + .string "__riscv_div 1" +.LASF755: + .string "BKP_OCTL REG16((BKP) + 0x2CU)" +.LASF2775: + .string "TIMER_DMA_TRGD ((uint16_t)TIMER_DMAINTEN_TRGDEN)" +.LASF1408: + .string "EXTI_EVEN_EVEN18 BIT(18)" +.LASF2414: + .string "RTC_DIVL REG32(RTC + 0x14U)" +.LASF478: + .string "WCHAR_MAX (__WCHAR_MAX__)" +.LASF2005: + .string "FWDGT_PSC_DIV8 ((uint8_t)PSC_PSC(1))" +.LASF1037: + .string "GET_ERR_ERRN(regval) GET_BITS((uint32_t)(regval), 4U, 6U)" +.LASF2552: + .string "I2S_MODE_MASTERTX I2SCTL_I2SOPMOD(2)" +.LASF2984: + .string "_SIZET_ " +.LASF1339: + .string "EXMC_SNCTL_NRMUX BIT(1)" +.LASF1329: + .string "ECLIC_PRIGROUP_LEVEL2_PRIO2 2" +.LASF1116: + .string "CAN_INT_WAKEUP CAN_INTEN_WIE" +.LASF439: + .string "INT16_MIN (-__INT16_MAX__ - 1)" +.LASF1610: + .string "GPIO_BOP(gpiox) REG32((gpiox) + 0x10U)" +.LASF1721: + .string "GPIO_BC_CR5 BIT(5)" +.LASF2299: + .string "RCU_PLL_MUL12 CFG0_PLLMF(10)" +.LASF581: + .string "ADC_CTL1_SWRCST BIT(22)" +.LASF3066: + .string "USART_STAT_IDLEF BIT(4)" +.LASF1226: + .string "DAC_TRIANGLE_AMPLITUDE_4095 DAC_WAVE_BIT_WIDTH_12" +.LASF3044: + .string "PMOVI_HANDLER eclic_pmovi_handler" +.LASF3250: + .string "ctsconfig" +.LASF2557: + .string "I2S_STD_LSB I2SCTL_I2SSTD(2)" +.LASF2067: + .string "PMU_FLAG_WAKEUP PMU_CS_WUF" +.LASF1739: + .string "GPIO_LOCK_LK7 BIT(7)" +.LASF2064: + .string "PMU_LVDT_5 CTL_LVDT(5)" +.LASF3303: + .string "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Source\\gd32vf103_usart.c" +.LASF341: + .string "SYSTEM_GD32VF103_H " +.LASF1516: + .string "FMC_CTL_LK BIT(7)" +.LASF498: + .string "SRAM_BASE ((uint32_t)0x20000000U)" +.LASF623: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH1 CTL1_ETSRC(1)" +.LASF459: + .string "UINT_FAST8_MAX (__UINT_FAST8_MAX__)" +.LASF1048: + .string "CAN_ERRN_7 ERR_ERRN(7U)" +.LASF182: + .string "__LDBL_DECIMAL_DIG__ 36" +.LASF452: + .string "INT64_MAX (__INT64_MAX__)" +.LASF1773: + .string "AFIO_EXTI6_SS BITS(8, 11)" +.LASF1188: + .string "DAC_WAVE_BIT_WIDTH_2 DWBW(1)" +.LASF413: + .string "_UINT32_T_DECLARED " +.LASF1278: + .string "DMA_CHXCTL_PRIO BITS(12,13)" +.LASF784: + .string "CAN_STAT(canx) REG32((canx) + 0x04U)" +.LASF1781: + .string "AFIO_EXTI14_SS BITS(8, 11)" +.LASF674: + .string "ADC_CHANNEL_13 ((uint8_t)0x0DU)" +.LASF1807: + .string "GPIO_EVENT_PIN_0 ((uint8_t)0x00U)" +.LASF2429: + .string "RTC_PSCL_PSC BITS(0,15)" +.LASF278: + .string "__FLT64X_HAS_DENORM__ 1" +.LASF3087: + .string "USART_CTL0_WL BIT(12)" +.LASF435: + .string "UINT8_MAX (__UINT8_MAX__)" +.LASF1115: + .string "CAN_INT_ERR CAN_INTEN_ERRIE" +.LASF1553: + .string "FMC_NSPC ((uint8_t)0xA5U)" +.LASF1017: + .string "TMDATA0_DB0(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF993: + .string "CAN_FW_FW(regval) BIT(regval)" +.LASF1900: + .string "I2C_CTL0_START BIT(8)" +.LASF2297: + .string "RCU_PLL_MUL10 CFG0_PLLMF(8)" +.LASF1726: + .string "GPIO_BC_CR10 BIT(10)" +.LASF386: + .string "short +1" +.LASF1873: + .string "GPIO_TIMER4CH3_IREMAP ((uint32_t)0x00200001U)" +.LASF1602: + .string "GPIOC (GPIO_BASE + 0x00000800U)" +.LASF2808: + .string "TIMER_DMACFG_DMATC_10TRANSFER DMACFG_DMATC(9)" +.LASF702: + .string "OVSCR_OVSR(regval) (BITS(2,4) & ((uint32_t)(regval) << 2))" +.LASF3114: + .string "USART_REGIDX_BIT2(regidx,bitpos,regidx2,bitpos2) (((uint32_t)(regidx2) << 22) | (uint32_t)((bitpos2) << 16) | (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos)))" +.LASF2750: + .string "TIMER_INT_FLAG_CH0 TIMER_INT_CH0" +.LASF1014: + .string "FCTL_HBC1F(regval) (BITS(8,13) & ((uint32_t)(regval) << 8))" +.LASF3300: + .string "fradiv" +.LASF678: + .string "ADC_CHANNEL_17 ((uint8_t)0x11U)" +.LASF2236: + .string "RCU_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF2577: + .string "SPI_FLAG_TBE SPI_STAT_TBE" +.LASF1045: + .string "CAN_ERRN_4 ERR_ERRN(4U)" +.LASF467: + .string "INT_FAST64_MAX (__INT_FAST64_MAX__)" +.LASF1823: + .string "GPIO_PIN_SOURCE_0 ((uint8_t)0x00U)" +.LASF512: + .string "I2C_BASE (APB1_BUS_BASE + 0x00005400U)" +.LASF3100: + .string "USART_CTL2_IRLP BIT(2)" +.LASF2790: + .string "TIMER_DMACFG_DMATA_CAR DMACFG_DMATA(11)" +.LASF2784: + .string "TIMER_DMACFG_DMATA_SWEVG DMACFG_DMATA(5)" +.LASF2042: + .string "DBG_LOW_POWER_STANDBY DBG_CTL_STB_HOLD" +.LASF2840: + .string "TIMER_UPDATE_SRC_REGULAR TIMER_CTL0_UPS" +.LASF1764: + .string "AFIO_PCF0_SWJ_CFG BITS(24, 26)" +.LASF1555: + .string "OB_SPC_SPC ((uint32_t)0x000000FFU)" +.LASF511: + .string "USART_BASE (APB1_BUS_BASE + 0x00004400U)" +.LASF1030: + .string "GET_RFIFOMDATA0_DB1(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF1000: + .string "CAN_BIT_POS0(val) (((uint32_t)(val) >> 6) & 0x1FU)" +.LASF2558: + .string "I2S_STD_PCMSHORT I2SCTL_I2SSTD(3)" +.LASF2114: + .string "RCU_CFG0_USBFSPSC BITS(22,23)" +.LASF1144: + .string "DAC_CTL_DBOFF0 BIT(1)" +.LASF2244: + .string "CTL_REG_OFFSET 0x00U" +.LASF3093: + .string "USART_CTL1_CPH BIT(9)" +.LASF1381: + .string "EXTI_INTEN_INTEN10 BIT(10)" +.LASF1513: + .string "FMC_CTL_OBPG BIT(4)" +.LASF421: + .string "_UINTPTR_T_DECLARED " +.LASF1705: + .string "GPIO_BOP_CR5 BIT(21)" +.LASF1754: + .string "AFIO_PCF0_USART0_REMAP BIT(2)" +.LASF2301: + .string "RCU_PLL_MUL14 CFG0_PLLMF(12)" +.LASF1732: + .string "GPIO_LOCK_LK0 BIT(0)" +.LASF3020: + .string "_RISCV_CONST_H " +.LASF2534: + .string "I2S_AUDIOSAMPLE_11K ((uint32_t)11025U)" +.LASF2425: + .string "RTC_CTL_RSYNF BIT(3)" +.LASF1176: + .string "DAC_TRIGGER_T6_TRGO CTL_DTSEL(2)" +.LASF1042: + .string "CAN_ERRN_1 ERR_ERRN(1U)" +.LASF2608: + .string "TIMER_PSC(timerx) REG32((timerx) + 0x28U)" +.LASF1908: + .string "I2C_CTL1_ERRIE BIT(8)" +.LASF2188: + .string "RCU_APB2EN_SPI0EN BIT(12)" +.LASF2545: + .string "I2S_FRAMEFORMAT_DT24B_CH32B (I2SCTL_DTLEN(1) | SPI_I2SCTL_CHLEN)" +.LASF2147: + .string "RCU_APB2RST_ADC0RST BIT(9)" +.LASF2536: + .string "I2S_AUDIOSAMPLE_22K ((uint32_t)22050U)" +.LASF2532: + .string "SPI_PSC_256 CTL0_PSC(7)" +.LASF50: + .string "__INT_LEAST16_TYPE__ short int" +.LASF2438: + .string "RTC_INT_OVERFLOW RTC_INTEN_OVIE" +.LASF1850: + .string "GPIO_PIN_11 BIT(11)" +.LASF2869: + .string "TIMER_OC_IDLE_STATE_HIGH ((uint16_t)0x0100)" +.LASF2351: + .string "RCU_PREDV0_DIV11 CFG1_PREDV0(10)" +.LASF2097: + .string "RCU_CTL_HXTALBPS BIT(18)" +.LASF669: + .string "ADC_CHANNEL_8 ((uint8_t)0x08U)" +.LASF2556: + .string "I2S_STD_MSB I2SCTL_I2SSTD(1)" +.LASF305: + .string "__riscv_atomic 1" +.LASF1857: + .string "GPIO_I2C0_REMAP ((uint32_t)0x00000002U)" +.LASF551: + .string "ADC_OVSCR(adcx) REG32((adcx) + 0x80U)" +.LASF1230: + .string "DMA_INTF(dmax) REG32((dmax) + 0x00U)" +.LASF2132: + .string "RCU_INT_PLL2STBIE BIT(14)" +.LASF1891: + .string "I2C_RT(i2cx) REG32((i2cx) + 0x20U)" +.LASF2586: + .string "I2S_FLAG_TXURERR SPI_STAT_TXURERR" +.LASF2522: + .string "SPI_CK_PL_LOW_PH_2EDGE SPI_CTL0_CKPH" +.LASF3268: + .string "usart_halfduplex_disable" +.LASF1342: + .string "EXMC_SNCTL_NREN BIT(6)" +.LASF1441: + .string "EXTI_FTEN_FTEN13 BIT(13)" +.LASF1642: + .string "GPIO_CTL1_MD11 BITS(12, 13)" +.LASF548: + .string "ADC_IDATA2(adcx) REG32((adcx) + 0x44U)" +.LASF350: + .string "__GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))" +.LASF2656: + .string "TIMER_DMAINTEN_CH2DEN BIT(11)" +.LASF1923: + .string "I2C_STAT0_ADD10SEND BIT(3)" +.LASF2758: + .string "TIMER_FLAG_CH0 TIMER_INTF_CH0IF" +.LASF3248: + .string "usart_dma_receive_config" +.LASF227: + .string "__FLT64_DECIMAL_DIG__ 17" +.LASF899: + .string "CAN_STAT_LASTRX BIT(10)" +.LASF2280: + .string "RCU_CKADC_CKAPB2_DIV4 ((uint32_t)0x00000001U)" +.LASF3106: + .string "USART_CTL2_RTSEN BIT(8)" +.LASF1324: + .string "DMA_MEMORY_TO_MEMORY_ENABLE ((uint32_t)0x00000001U)" +.LASF1034: + .string "GET_RFIFOMDATA1_DB5(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF759: + .string "BKP_OCTL_RCCV BITS(0,6)" +.LASF1258: + .string "DMA_CH6PADDR(dmax) REG32((dmax) + 0x88U)" +.LASF762: + .string "BKP_OCTL_ROSEL BIT(9)" +.LASF1968: + .string "I2C_SCLSTRETCH_ENABLE ((uint32_t)0x00000000U)" +.LASF795: + .string "CAN_TMI1(canx) REG32((canx) + 0x190U)" +.LASF465: + .string "UINT_FAST32_MAX (__UINT_FAST32_MAX__)" +.LASF666: + .string "ADC_CHANNEL_5 ((uint8_t)0x05U)" +.LASF2676: + .string "TIMER_SWEVG_CH3G BIT(4)" +.LASF532: + .string "ADC_CTL0(adcx) REG32((adcx) + 0x04U)" +.LASF1237: + .string "DMA_CH1CNT(dmax) REG32((dmax) + 0x20U)" +.LASF946: + .string "CAN_ERR_PERR BIT(1)" +.LASF2376: + .string "RCU_PLL1_MUL9 CFG1_PLL1MF(7)" +.LASF927: + .string "CAN_RFIFO1_RFL1 BITS(0,1)" +.LASF40: + .string "__SIG_ATOMIC_TYPE__ int" +.LASF3160: + .string "CLT2_RTSEN(regval) (BIT(8) & ((uint32_t)(regval) << 8))" +.LASF958: + .string "CAN_TMI_FT BIT(1)" +.LASF2145: + .string "RCU_APB2RST_PDRST BIT(5)" +.LASF1056: + .string "CAN_BT_SJW_3TQ ((uint8_t)0x02U)" +.LASF2169: + .string "RCU_APB1RST_BKPIRST BIT(27)" +.LASF2769: + .string "TIMER_DMA_UPD ((uint16_t)TIMER_DMAINTEN_UPDEN)" +.LASF451: + .string "INT64_MIN (-__INT64_MAX__ - 1)" +.LASF642: + .string "ADC_SAMPLETIME_13POINT5 SAMPTX_SPT(2)" +.LASF1216: + .string "DAC_TRIANGLE_AMPLITUDE_3 DAC_WAVE_BIT_WIDTH_2" +.LASF2212: + .string "RCU_BDCTL_LXTALBPS BIT(2)" +.LASF813: + .string "CAN_FSCFG(canx) REG32((canx) + 0x20CU)" +.LASF2476: + .string "SPI_CTL1_NSSDRV BIT(2)" +.LASF3036: + .string "ECLIC_INT_ATTR_TRIG_NEG 0x04" +.LASF2302: + .string "RCU_PLL_MUL6_5 CFG0_PLLMF(13)" +.LASF44: + .string "__INT64_TYPE__ long long int" +.LASF3295: + .string "paritycfg" +.LASF2579: + .string "SPI_FLAG_CONFERR SPI_STAT_CONFERR" +.LASF440: + .string "INT16_MAX (__INT16_MAX__)" +.LASF2576: + .string "SPI_FLAG_RBNE SPI_STAT_RBNE" +.LASF2913: + .string "TIMER_TRI_OUT_SRC_O0CPRE CTL1_MMC(4)" +.LASF62: + .string "__UINT_FAST16_TYPE__ unsigned int" +.LASF2806: + .string "TIMER_DMACFG_DMATC_8TRANSFER DMACFG_DMATC(7)" +.LASF3015: + .string "TIMER_MTIME_size 0x8" +.LASF1957: + .string "I2C_SMBUSMODE_ENABLE I2C_CTL0_SMBEN" +.LASF364: + .string "__have_long32 1" +.LASF1337: + .string "EXMC_SNWTCFG0 REG32(EXMC + 0x104U)" +.LASF1241: + .string "DMA_CH2CNT(dmax) REG32((dmax) + 0x34U)" +.LASF2980: + .string "_BSD_SIZE_T_DEFINED_ " +.LASF1100: + .string "CAN_FILTER_MASK_16BITS ((uint32_t)0x0000FFFFU)" +.LASF801: + .string "CAN_TMDATA02(canx) REG32((canx) + 0x1A8U)" +.LASF2182: + .string "RCU_APB2EN_PCEN BIT(4)" +.LASF1856: + .string "GPIO_SPI0_REMAP ((uint32_t)0x00000001U)" +.LASF2239: + .string "APB2EN_REG_OFFSET 0x18U" +.LASF2078: + .string "RCU_CTL REG32(RCU + 0x00U)" +.LASF1964: + .string "I2C_ACKPOS_NEXT ((uint32_t)0x00000000U)" +.LASF948: + .string "CAN_ERR_ERRN BITS(4,6)" +.LASF3183: + .string "uint32_t" +.LASF870: + .string "CAN_F26DATA1(canx) REG32((canx) + 0x314U)" +.LASF2575: + .string "SPI_I2S_INT_FLAG_FERR ((uint8_t)0x06U)" +.LASF3148: + .string "CTL1_CPH(regval) (BIT(9) & ((uint32_t)(regval) << 9))" +.LASF1977: + .string "I2C_DMALST_OFF ((uint32_t)0x00000000U)" +.LASF401: + .string "__LEAST8 \"hh\"" +.LASF1568: + .string "OB_WP_5 ((uint32_t)0x00000020U)" +.LASF204: + .string "__FLT16_HAS_INFINITY__ 1" +.LASF1263: + .string "DMA_INTF_ERRIF BIT(3)" +.LASF1149: + .string "DAC_CTL_DDMAEN0 BIT(12)" +.LASF2133: + .string "RCU_INT_IRC40KSTBIC BIT(16)" +.LASF1195: + .string "DAC_WAVE_BIT_WIDTH_9 DWBW(8)" +.LASF124: + .string "__INT_FAST8_MAX__ 0x7fffffff" +.LASF327: + .string "RT_USING_LIBC 1" +.LASF7: + .string "__GNUC_PATCHLEVEL__ 0" +.LASF2324: + .string "RCU_CKUSB_CKPLL_DIV2 CFG0_USBPSC(3)" +.LASF2766: + .string "TIMER_FLAG_CH1O TIMER_INTF_CH1OF" +.LASF2711: + .string "TIMER_CHCTL2_CH0NP BIT(3)" +.LASF814: + .string "CAN_FAFIFO(canx) REG32((canx) + 0x214U)" +.LASF2593: + .string "TIMER2 (TIMER_BASE + 0x00000400U)" +.LASF1751: + .string "AFIO_EC_EOE BIT(7)" +.LASF2773: + .string "TIMER_DMA_CH3D ((uint16_t)TIMER_DMAINTEN_CH3DEN)" +.LASF39: + .string "__CHAR32_TYPE__ long unsigned int" +.LASF2571: + .string "SPI_I2S_INT_FLAG_RXORERR ((uint8_t)0x02U)" +.LASF1156: + .string "DAC_CTL_DDMAEN1 BIT(28)" +.LASF1406: + .string "EXTI_EVEN_EVEN16 BIT(16)" +.LASF1394: + .string "EXTI_EVEN_EVEN4 BIT(4)" +.LASF1063: + .string "CAN_BT_BS1_6TQ ((uint8_t)0x05U)" +.LASF2833: + .string "TIMER_COUNTER_DOWN ((uint16_t)TIMER_CTL0_DIR)" +.LASF294: + .string "__GCC_ATOMIC_LONG_LOCK_FREE 2" +.LASF2898: + .string "TIMER_IC_PSC_DIV8 ((uint16_t)0x000CU)" +.LASF25: + .string "__BIGGEST_ALIGNMENT__ 16" +.LASF2128: + .string "RCU_INT_IRC8MSTBIE BIT(10)" +.LASF3263: + .string "gaut" +.LASF2905: + .string "TIMER_SMCFG_TRGSEL_CI0FE0 SMCFG_TRGSEL(5)" +.LASF860: + .string "CAN_F16DATA1(canx) REG32((canx) + 0x2C4U)" +.LASF2666: + .string "TIMER_INTF_TRGIF BIT(6)" +.LASF1170: + .string "DACC_R8DH_DAC1_DH BITS(8,15)" +.LASF1834: + .string "GPIO_PIN_SOURCE_11 ((uint8_t)0x0BU)" +.LASF2450: + .string "SPI2 (SPI_BASE + 0x00000400U)" +.LASF2774: + .string "TIMER_DMA_CMTD ((uint16_t)TIMER_DMAINTEN_CMTDEN)" +.LASF1320: + .string "DMA_PRIORITY_MEDIUM CHCTL_PRIO(1U)" +.LASF1696: + .string "GPIO_BOP_BOP12 BIT(12)" +.LASF2010: + .string "FWDGT_PSC_DIV256 ((uint8_t)PSC_PSC(6))" +.LASF2966: + .string "_GCC_PTRDIFF_T " +.LASF1712: + .string "GPIO_BOP_CR12 BIT(28)" +.LASF3166: + .string "CTL2_IRLP(regval) (BIT(2) & ((uint32_t)(regval) << 2))" +.LASF1656: + .string "GPIO_ISTAT_ISTAT4 BIT(4)" +.LASF1461: + .string "EXTI_SWIEV_SWIEV14 BIT(14)" +.LASF2516: + .string "SPI_NSS_SOFT SPI_CTL0_SWNSSEN" +.LASF177: + .string "__LDBL_MIN_EXP__ (-16381)" +.LASF312: + .string "__riscv_arch_test 1" +.LASF2549: + .string "I2SCTL_I2SOPMOD(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF1083: + .string "CAN_MAILBOX1 ((uint8_t)0x01U)" +.LASF829: + .string "CAN_F13DATA0(canx) REG32((canx) + 0x2A8U)" +.LASF2287: + .string "PLLMF_4 RCU_CFG0_PLLMF_4" +.LASF1534: + .string "FMC_BIT_POS1(val) ((uint32_t)(val) & 0x1FU)" +.LASF387: + .string "__int20 +2" +.LASF343: + .string "_MACHINE__DEFAULT_TYPES_H " +.LASF552: + .string "ADC_STAT_WDE BIT(0)" +.LASF1914: + .string "I2C_SADDR0_ADDRESS BITS(1,7)" +.LASF2519: + .string "SPI_ENDIAN_LSB SPI_CTL0_LF" +.LASF1663: + .string "GPIO_ISTAT_ISTAT11 BIT(11)" +.LASF2481: + .string "SPI_CTL1_TBEIE BIT(7)" +.LASF1830: + .string "GPIO_PIN_SOURCE_7 ((uint8_t)0x07U)" +.LASF1491: + .string "FMC_STAT REG32((FMC) + 0x0CU)" +.LASF2401: + .string "RCU_I2S2SRC_CKPLL2_MUL2 RCU_CFG1_I2S2SEL" +.LASF2638: + .string "TIMER_SMCFG_SMC BITS(0,2)" +.LASF627: + .string "ADC0_1_EXTTRIG_REGULAR_T3_CH3 CTL1_ETSRC(5)" +.LASF1358: + .string "EXMC_MEMORY_TYPE_PSRAM SNCTL_NRTP(1)" +.LASF2541: + .string "I2S_AUDIOSAMPLE_192K ((uint32_t)192000U)" +.LASF1812: + .string "GPIO_EVENT_PIN_5 ((uint8_t)0x05U)" +.LASF800: + .string "CAN_TMP2(canx) REG32((canx) + 0x1A4U)" +.LASF930: + .string "CAN_RFIFO1_RFD1 BIT(5)" +.LASF880: + .string "CAN_RFIFOMDATA0(canx,bank) REG32((canx) + 0x1B8U + ((bank) * 0x10U))" +.LASF2199: + .string "RCU_APB1EN_USART1EN BIT(17)" +.LASF3077: + .string "USART_CTL0_REN BIT(2)" +.LASF1297: + .string "DMA_FLAG_G DMA_INTF_GIF" +.LASF1842: + .string "GPIO_PIN_3 BIT(3)" +.LASF806: + .string "CAN_RFIFOMDATA10(canx) REG32((canx) + 0x1BCU)" +.LASF1020: + .string "TMDATA0_DB3(regval) (BITS(24,31) & ((uint32_t)(regval) << 24))" +.LASF2403: + .string "RCU_DEEPSLEEP_V_1_2 DSV_DSLPVS(0)" +.LASF166: + .string "__DBL_DECIMAL_DIG__ 17" +.LASF2612: + .string "TIMER_CH1CV(timerx) REG32((timerx) + 0x38U)" +.LASF135: + .string "__UINT_FAST64_MAX__ 0xffffffffffffffffULL" +.LASF1927: + .string "I2C_STAT0_BERR BIT(8)" +.LASF2335: + .string "BDCTL_RTCSRC(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF2012: + .string "FWDGT_WRITEACCESS_DISABLE ((uint16_t)0x0000U)" +.LASF1416: + .string "EXTI_RTEN_RTEN7 BIT(7)" +.LASF1183: + .string "DAC_WAVE_DISABLE CTL_DWM(0)" +.LASF2814: + .string "TIMER_DMACFG_DMATC_16TRANSFER DMACFG_DMATC(15)" +.LASF3107: + .string "USART_CTL2_CTSEN BIT(9)" +.LASF1638: + .string "GPIO_CTL1_MD9 BITS(4, 5)" +.LASF2538: + .string "I2S_AUDIOSAMPLE_44K ((uint32_t)44100U)" +.LASF1761: + .string "AFIO_PCF0_CAN_REMAP BITS(13, 14)" +.LASF2566: + .string "SPI_I2S_INT_TBE ((uint8_t)0x00U)" +.LASF1646: + .string "GPIO_CTL1_MD13 BITS(20, 21)" +.LASF3217: + .string "RCU_USART0RST" +.LASF323: + .string "HAVE_CCONFIG_H 1" +.LASF46: + .string "__UINT16_TYPE__ short unsigned int" +.LASF942: + .string "CAN_INTEN_ERRIE BIT(15)" +.LASF431: + .string "INTPTR_MAX (__INTPTR_MAX__)" +.LASF3043: + .string "BWEI_HANDLER eclic_bwei_handler" +.LASF147: + .string "__FLT_MIN_EXP__ (-125)" +.LASF71: + .string "__LONG_MAX__ 0x7fffffffL" +.LASF2559: + .string "I2S_STD_PCMLONG (I2SCTL_I2SSTD(3) | SPI_I2SCTL_PCMSMOD)" +.LASF3265: + .string "clen" +.LASF2730: + .string "TIMER_CCHP_DTCFG BITS(0,7)" +.LASF1976: + .string "I2C_DMALST_ON I2C_CTL1_DMALST" +.LASF3245: + .string "usart_flag_get" +.LASF488: + .string "UINT64_C(x) __UINT64_C(x)" +.LASF2341: + .string "RCU_PREDV0_DIV1 CFG1_PREDV0(0)" +.LASF296: + .string "__GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1" +.LASF2640: + .string "TIMER_SMCFG_MSM BIT(7)" +.LASF106: + .string "__INT_LEAST8_WIDTH__ 8" +.LASF2193: + .string "RCU_APB1EN_TIMER4EN BIT(3)" +.LASF55: + .string "__UINT_LEAST32_TYPE__ long unsigned int" +.LASF2029: + .string "DBG_CTL_TIMER0_HOLD BIT(10)" +.LASF1095: + .string "CAN_MODE_SLEEP ((uint8_t)0x04U)" +.LASF962: + .string "CAN_TMP_DLENC BITS(0,3)" +.LASF1085: + .string "CAN_NOMAILBOX ((uint8_t)0x03U)" +.LASF1345: + .string "EXMC_SNCTL_NRWTEN BIT(13)" +.LASF1795: + .string "GPIO_OSPEED_2MHZ ((uint8_t)0x02U)" +.LASF1133: + .string "DAC0_L12DH REG32(DAC + 0x0CU)" +.LASF2747: + .string "TIMER_INT_TRG TIMER_DMAINTEN_TRGIE" +.LASF362: + .string "__EXP(x) __ ##x ##__" +.LASF1522: + .string "FMC_OBSTAT_SPC BIT(1)" +.LASF2156: + .string "RCU_APB1RST_TIMER5RST BIT(4)" +.LASF2842: + .string "TIMER_ROS_STATE_ENABLE ((uint16_t)TIMER_CCHP_ROS)" +.LASF283: + .string "__GNUC_STDC_INLINE__ 1" +.LASF427: + .string "__int_fast16_t_defined 1" +.LASF1611: + .string "GPIO_BC(gpiox) REG32((gpiox) + 0x14U)" +.LASF3251: + .string "usart_hardware_flow_rts_config" +.LASF1080: + .string "CAN_BT_BS2_7TQ ((uint8_t)0x06U)" +.LASF284: + .string "__NO_INLINE__ 1" +.LASF2142: + .string "RCU_APB2RST_PARST BIT(2)" +.LASF1952: + .string "I2C_BIT_POS2(val) (((uint32_t)(val) & 0x1F0000U) >> 16)" +.LASF2821: + .string "TIMER_EVENT_SRC_CH3G ((uint16_t)0x0010U)" +.LASF567: + .string "ADC_CTL0_SYNCM BITS(16,19)" +.LASF1955: + .string "I2C_STAT1_REG_OFFSET 0x18U" +.LASF869: + .string "CAN_F25DATA1(canx) REG32((canx) + 0x30CU)" +.LASF2635: + .string "TIMER_CTL1_ISO2 BIT(12)" +.LASF970: + .string "CAN_TMDATA1_DB5 BITS(8,15)" +.LASF2477: + .string "SPI_CTL1_NSSP BIT(3)" +.LASF539: + .string "ADC_IOFF3(adcx) REG32((adcx) + 0x20U)" +.LASF2736: + .string "TIMER_CCHP_OAEN BIT(14)" +.LASF1433: + .string "EXTI_FTEN_FTEN5 BIT(5)" +.LASF3212: + .string "RCU_GPIOERST" +.LASF198: + .string "__FLT16_MAX__ 6.55040000000000000000000000000000000e+4F16" +.LASF363: + .string "__have_longlong64 1" +.LASF852: + .string "CAN_F8DATA1(canx) REG32((canx) + 0x284U)" +.LASF895: + .string "CAN_STAT_WUIF BIT(3)" +.LASF29: + .string "__BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__" +.LASF1386: + .string "EXTI_INTEN_INTEN15 BIT(15)" +.LASF2453: + .string "SPI_STAT(spix) REG32((spix) + 0x08U)" +.LASF404: + .string "__LEAST64 \"ll\"" +.LASF195: + .string "__FLT16_MAX_EXP__ 16" +.LASF1948: + .string "I2C_REG_VAL(i2cx,offset) (REG32((i2cx) + (((uint32_t)(offset) & 0xFFFFU) >> 6)))" +.LASF1641: + .string "GPIO_CTL1_CTL10 BITS(10, 11)" +.LASF1059: + .string "CAN_BT_BS1_2TQ ((uint8_t)0x01U)" +.LASF1184: + .string "DAC_WAVE_MODE_LFSR CTL_DWM(1)" +.LASF2448: + .string "SPI0 (SPI_BASE + 0x0000F800U)" +.LASF1147: + .string "DAC_CTL_DWM0 BITS(6,7)" +.LASF2444: + .string "RTC_FLAG_OVERFLOW RTC_CTL_OVIF" +.LASF2600: + .string "TIMER_SMCFG(timerx) REG32((timerx) + 0x08U)" +.LASF3075: + .string "USART_CTL0_SBKCMD BIT(0)" +.LASF704: + .string "ADC_OVERSAMPLING_RATIO_MUL4 OVSCR_OVSR(1)" +.LASF1316: + .string "DMA_MEMORY_WIDTH_16BIT CHCTL_MWIDTH(1U)" +.LASF1328: + .string "ECLIC_PRIGROUP_LEVEL1_PRIO3 1" +.LASF2009: + .string "FWDGT_PSC_DIV128 ((uint8_t)PSC_PSC(5))" +.LASF2951: + .string "WWDGT_CFG_PSC_DIV1 CFG_PSC(0)" +.LASF1503: + .string "FMC_WS_WSCNT BITS(0,2)" +.LASF3051: + .string "USART2 (USART_BASE+(0x00000400U))" +.LASF0: + .string "__STDC__ 1" +.LASF1175: + .string "DAC_TRIGGER_T2_TRGO CTL_DTSEL(1)" +.LASF1690: + .string "GPIO_BOP_BOP6 BIT(6)" +.LASF2723: + .string "TIMER_PSC_PSC BITS(0,15)" +.LASF1108: + .string "CAN_INT_RFNE1 CAN_INTEN_RFNEIE1" +.LASF821: + .string "CAN_F5DATA0(canx) REG32((canx) + 0x268U)" +.LASF2854: + .string "TIMER_CCHP_PROT_2 CCHP_PROT(3)" +.LASF3228: + .string "USART_FLAG_IDLE" +.LASF388: + .string "__int20__ +2" +.LASF1310: + .string "CHCTL_PWIDTH(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF1905: + .string "I2C_CTL0_SALT BIT(13)" +.LASF1921: + .string "I2C_STAT0_ADDSEND BIT(1)" +.LASF859: + .string "CAN_F15DATA1(canx) REG32((canx) + 0x2BCU)" +.LASF1211: + .string "DATA_ALIGN(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF322: + .string "NO_INIT 1" +.LASF1521: + .string "FMC_OBSTAT_OBERR BIT(0)" +.LASF2306: + .string "RCU_PLL_MUL19 (PLLMF_4 | CFG0_PLLMF(2))" +.LASF1570: + .string "OB_WP_7 ((uint32_t)0x00000080U)" +.LASF618: + .string "ADC_DATAALIGN_RIGHT ((uint32_t)0x00000000U)" +.LASF1243: + .string "DMA_CH2MADDR(dmax) REG32((dmax) + 0x3CU)" +.LASF2255: + .string "RCU_SCSS_HXTAL CFG0_SCSS(1)" +.LASF1722: + .string "GPIO_BC_CR6 BIT(6)" +.LASF1446: + .string "EXTI_FTEN_FTEN18 BIT(18)" +.LASF1595: + .string "OB_WP_ALL ((uint32_t)0xFFFFFFFFU)" +.LASF1498: + .string "OB_USER REG16((OB) + 0x02U)" +.LASF2535: + .string "I2S_AUDIOSAMPLE_16K ((uint32_t)16000U)" +.LASF2671: + .string "TIMER_INTF_CH3OF BIT(12)" +.LASF2343: + .string "RCU_PREDV0_DIV3 CFG1_PREDV0(2)" +.LASF194: + .string "__FLT16_MIN_10_EXP__ (-4)" +.LASF605: + .string "ADC_SCAN_MODE ADC_CTL0_SM" +.LASF1902: + .string "I2C_CTL0_ACKEN BIT(10)" +.LASF2071: + .string "PMU_LDO_LOWPOWER PMU_CTL_LDOLP" +.LASF2135: + .string "RCU_INT_IRC8MSTBIC BIT(18)" +.LASF2173: + .string "RCU_AHBEN_DMA1EN BIT(1)" +.LASF2416: + .string "RTC_CNTL REG32(RTC + 0x1CU)" +.LASF2017: + .string "FWDGT_FLAG_PUD FWDGT_STAT_PUD" +.LASF1767: + .string "AFIO_EXTI0_SS BITS(0, 3)" +.LASF3028: + .string "ECLIC_MTH_OFFSET 0xB" +.LASF414: + .string "__int32_t_defined 1" +.LASF540: + .string "ADC_WDHT(adcx) REG32((adcx) + 0x24U)" +.LASF3146: + .string "USART_CLEN_NONE CTL1_CLEN(0)" +.LASF175: + .string "__LDBL_MANT_DIG__ 113" +.LASF2550: + .string "I2S_MODE_SLAVETX I2SCTL_I2SOPMOD(0)" +.LASF2627: + .string "TIMER_CTL1_CCUC BIT(2)" +.LASF2563: + .string "SPI_DMA_RECEIVE ((uint8_t)0x01U)" +.LASF223: + .string "__FLT64_MIN_EXP__ (-1021)" +.LASF3242: + .string "usart_flag_clear" +.LASF357: + .string "__MISC_VISIBLE 0" +.LASF18: + .string "__SIZEOF_LONG_LONG__ 8" +.LASF549: + .string "ADC_IDATA3(adcx) REG32((adcx) + 0x48U)" +.LASF961: + .string "CAN_TMI_SFID BITS(21,31)" +.LASF1479: + .string "EXTI_PD_PD13 BIT(13)" +.LASF1557: + .string "OB_USER_USER ((uint32_t)0x00FF0000U)" +.LASF214: + .string "__FLT32_NORM_MAX__ 3.40282346638528859811704183484516925e+38F32" +.LASF923: + .string "CAN_RFIFO0_RFL0 BITS(0,1)" +.LASF1308: + .string "DMA_MEMORY_INCREASE_DISABLE ((uint8_t)0x00U)" +.LASF232: + .string "__FLT64_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F64" +.LASF2291: + .string "RCU_PLL_MUL4 CFG0_PLLMF(2)" +.LASF2355: + .string "RCU_PREDV0_DIV15 CFG1_PREDV0(14)" +.LASF872: + .string "CAN_TMI(canx,bank) REG32((canx) + 0x180U + ((bank) * 0x10U))" +.LASF128: + .string "__INT_FAST32_MAX__ 0x7fffffff" +.LASF2221: + .string "RCU_RSTSCK_SWRSTF BIT(28)" +.LASF2305: + .string "RCU_PLL_MUL18 (PLLMF_4 | CFG0_PLLMF(1))" +.LASF1511: + .string "FMC_CTL_PER BIT(1)" +.LASF854: + .string "CAN_F10DATA1(canx) REG32((canx) + 0x294U)" +.LASF1904: + .string "I2C_CTL0_PECTRANS BIT(12)" +.LASF2713: + .string "TIMER_CHCTL2_CH1P BIT(5)" +.LASF3252: + .string "rtsconfig" +.LASF282: + .string "__USER_LABEL_PREFIX__ " +.LASF1422: + .string "EXTI_RTEN_RTEN13 BIT(13)" +.LASF1208: + .string "DAC_LFSR_BITS9_0 DAC_WAVE_BIT_WIDTH_10" +.LASF533: + .string "ADC_CTL1(adcx) REG32((adcx) + 0x08U)" +.LASF1682: + .string "GPIO_OCTL_OCTL14 BIT(14)" +.LASF565: + .string "ADC_CTL0_DISIC BIT(12)" +.LASF1800: + .string "GPIO_EVENT_PORT_GPIOD ((uint8_t)0x03U)" +.LASF1067: + .string "CAN_BT_BS1_10TQ ((uint8_t)0x09U)" +.LASF1866: + .string "GPIO_TIMER1_FULL_REMAP ((uint32_t)0x00180300U)" +.LASF2249: + .string "CFG0_SCS(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF2319: + .string "RCU_PLL_MUL32 (PLLMF_4 | CFG0_PLLMF(15))" +.LASF1255: + .string "DMA_CH5MADDR(dmax) REG32((dmax) + 0x78U)" +.LASF274: + .string "__FLT64X_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F64x" +.LASF3191: + .string "RCU_TIMER5RST" +.LASF2931: + .string "TIMER_EXT_TRI_PSC_DIV4 SMCFG_ETPSC(2)" +.LASF3104: + .string "USART_CTL2_DENR BIT(6)" +.LASF1500: + .string "OB_WP1 REG16((OB) + 0x0AU)" +.LASF1125: + .string "CRC_CTL_RST BIT(0)" +.LASF995: + .string "CAN_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF180: + .string "__LDBL_MAX_10_EXP__ 4932" +.LASF2220: + .string "RCU_RSTSCK_PORRSTF BIT(27)" +.LASF85: + .string "__WINT_WIDTH__ 32" +.LASF1240: + .string "DMA_CH2CTL(dmax) REG32((dmax) + 0x30U)" +.LASF3006: + .string "__need_NULL" +.LASF2793: + .string "TIMER_DMACFG_DMATA_CH1CV DMACFG_DMATA(14)" +.LASF1538: + .string "FMC_OBSTAT_REG_OFFSET 0x1CU" +.LASF2720: + .string "TIMER_CHCTL2_CH3EN BIT(12)" +.LASF1675: + .string "GPIO_OCTL_OCTL7 BIT(7)" +.LASF2660: + .string "TIMER_INTF_UPIF BIT(0)" +.LASF2083: + .string "RCU_AHBEN REG32(RCU + 0x14U)" +.LASF2167: + .string "RCU_APB1RST_CAN0RST BIT(25)" +.LASF542: + .string "ADC_RSQ0(adcx) REG32((adcx) + 0x2CU)" +.LASF2855: + .string "TIMER_BREAK_ENABLE ((uint16_t)TIMER_CCHP_BRKEN)" +.LASF2217: + .string "RCU_RSTSCK_IRC40KSTB BIT(1)" +.LASF2890: + .string "TIMER_IC_POLARITY_FALLING ((uint16_t)0x0002U)" +.LASF989: + .string "CAN_FCTL_HBC1F BITS(8,13)" +.LASF273: + .string "__FLT64X_MAX__ 1.18973149535723176508575932662800702e+4932F64x" +.LASF2817: + .string "TIMER_EVENT_SRC_UPG ((uint16_t)0x0001U)" +.LASF2498: + .string "SPI_I2SCTL_I2SSTD BITS(4,5)" +.LASF526: + .string "USE_STDPERIPH_DRIVER " +.LASF2205: + .string "RCU_APB1EN_CAN0EN BIT(25)" +.LASF2304: + .string "RCU_PLL_MUL17 (PLLMF_4 | CFG0_PLLMF(0))" +.LASF925: + .string "CAN_RFIFO0_RFO0 BIT(4)" +.LASF2345: + .string "RCU_PREDV0_DIV5 CFG1_PREDV0(4)" +.LASF3054: + .string "USART0 (USART_BASE+(0x0000F400U))" +.LASF2107: + .string "RCU_CFG0_AHBPSC BITS(4,7)" +.LASF665: + .string "ADC_CHANNEL_4 ((uint8_t)0x04U)" +.LASF2368: + .string "RCU_PREDV1_DIV11 CFG1_PREDV1(10)" +.LASF1448: + .string "EXTI_SWIEV_SWIEV1 BIT(1)" +.LASF2247: + .string "CFG0_REG_OFFSET 0x04U" +.LASF102: + .string "__UINT32_MAX__ 0xffffffffUL" +.LASF2892: + .string "TIMER_IC_SELECTION_DIRECTTI ((uint16_t)0x0001U)" +.LASF1375: + .string "EXTI_INTEN_INTEN4 BIT(4)" +.LASF2153: + .string "RCU_APB1RST_TIMER2RST BIT(1)" +.LASF1758: + .string "AFIO_PCF0_TIMER1_REMAP BITS(8, 9)" +.LASF2294: + .string "RCU_PLL_MUL7 CFG0_PLLMF(5)" +.LASF606: + .string "ADC_INSERTED_CHANNEL_AUTO ADC_CTL0_ICA" +.LASF834: + .string "CAN_F18DATA0(canx) REG32((canx) + 0x2D0U)" +.LASF1165: + .string "DACC_R12DH_DAC0_DH BITS(0,11)" +.LASF3298: + .string "uclk" +.LASF2772: + .string "TIMER_DMA_CH2D ((uint16_t)TIMER_DMAINTEN_CH2DEN)" +.LASF2274: + .string "RCU_APB2_CKAHB_DIV1 CFG0_APB2PSC(0)" +.LASF1132: + .string "DAC0_R12DH REG32(DAC + 0x08U)" +.LASF2680: + .string "TIMER_CHCTL0_CH0MS BITS(0,1)" +.LASF1911: + .string "I2C_CTL1_DMAON BIT(11)" +.LASF108: + .string "__INT16_C(c) c" +.LASF318: + .string "__riscv_zifencei 2000000" +.LASF275: + .string "__FLT64X_MIN__ 3.36210314311209350626267781732175260e-4932F64x" +.LASF529: + .string "ADC0 ADC_BASE" +.LASF1515: + .string "FMC_CTL_START BIT(6)" +.LASF1076: + .string "CAN_BT_BS2_3TQ ((uint8_t)0x02U)" +.LASF2028: + .string "DBG_CTL_WWDGT_HOLD BIT(9)" +.LASF165: + .string "__DBL_MAX_10_EXP__ 308" +.LASF37: + .string "__UINTMAX_TYPE__ long long unsigned int" +.LASF2619: + .string "TIMER_CTL0_UPDIS BIT(1)" +.LASF573: + .string "ADC_CTL1_RSTCLB BIT(3)" +.LASF2358: + .string "RCU_PREDV1_DIV1 CFG1_PREDV1(0)" +.LASF1894: + .string "I2C_CTL0_SMBEN BIT(1)" +.LASF416: + .string "_UINT64_T_DECLARED " +.LASF504: + .string "AHB1_BUS_BASE ((uint32_t)0x40018000U)" +.LASF3131: + .string "CTL0_WM(regval) (BIT(11) & ((uint32_t)(regval) << 11))" +.LASF2392: + .string "RCU_PLL2_MUL14 CFG1_PLL2MF(12)" +.LASF508: + .string "WWDGT_BASE (APB1_BUS_BASE + 0x00002C00U)" +.LASF3297: + .string "baudval" +.LASF1469: + .string "EXTI_PD_PD3 BIT(3)" +.LASF3018: + .string "TIMER_FREQ ((uint32_t)SystemCoreClock/4)" +.LASF1455: + .string "EXTI_SWIEV_SWIEV8 BIT(8)" +.LASF1630: + .string "GPIO_CTL0_MD5 BITS(20, 21)" +.LASF1798: + .string "GPIO_EVENT_PORT_GPIOB ((uint8_t)0x01U)" +.LASF2178: + .string "RCU_AHBEN_USBFSEN BIT(12)" +.LASF966: + .string "CAN_TMDATA0_DB1 BITS(8,15)" +.LASF1804: + .string "GPIO_PORT_SOURCE_GPIOC ((uint8_t)0x02U)" +.LASF430: + .string "INTPTR_MIN (-__INTPTR_MAX__ - 1)" +.LASF1668: + .string "GPIO_OCTL_OCTL0 BIT(0)" +.LASF2933: + .string "TIMER_ETP_FALLING TIMER_SMCFG_ETP" +.LASF2026: + .string "DBG_CTL_STB_HOLD BIT(2)" +.LASF2824: + .string "TIMER_EVENT_SRC_BRKG ((uint16_t)0x0080U)" +.LASF1978: + .string "I2C_PEC_ENABLE I2C_CTL0_PECEN" +.LASF1966: + .string "I2C_DUADEN_DISABLE ((uint32_t)0x00000000U)" +.LASF2872: + .string "TIMER_OCN_IDLE_STATE_LOW ((uint16_t)0x0000U)" +.LASF56: + .string "__UINT_LEAST64_TYPE__ long long unsigned int" +.LASF1585: + .string "OB_WP_22 ((uint32_t)0x00400000U)" +.LASF1123: + .string "CRC_DATA_DATA BITS(0, 31)" +.LASF1960: + .string "I2C_RECEIVER ((uint32_t)0x00000001U)" +.LASF2101: + .string "RCU_CTL_PLL1EN BIT(26)" +.LASF241: + .string "__FLT128_MAX_10_EXP__ 4932" +.LASF1368: + .string "EXTI_FTEN REG32(EXTI + 0x0CU)" +.LASF2027: + .string "DBG_CTL_FWDGT_HOLD BIT(8)" +.LASF1362: + .string "EXMC_NWAIT_POLARITY_HIGH ((uint32_t)0x00000200U)" +.LASF1542: + .string "WS_WSCNT_0 WS_WSCNT(0)" +.LASF1283: + .string "DMA_FLAG_ADD(flag,shift) ((flag) << ((shift) * 4U))" +.LASF1744: + .string "GPIO_LOCK_LK12 BIT(12)" +.LASF683: + .string "ADC_INT_FLAG_EOC ADC_STAT_EOC" +.LASF51: + .string "__INT_LEAST32_TYPE__ long int" +.LASF866: + .string "CAN_F22DATA1(canx) REG32((canx) + 0x2F4U)" +.LASF136: + .string "__INTPTR_MAX__ 0x7fffffff" +.LASF1907: + .string "I2C_CTL1_I2CCLK BITS(0,5)" +.LASF374: + .string "_SYS__INTSUP_H " +.LASF913: + .string "CAN_TSTAT_MAL2 BIT(18)" +.LASF2570: + .string "SPI_I2S_INT_FLAG_RBNE ((uint8_t)0x01U)" +.LASF1695: + .string "GPIO_BOP_BOP11 BIT(11)" +.LASF2801: + .string "TIMER_DMACFG_DMATC_3TRANSFER DMACFG_DMATC(2)" +.LASF2347: + .string "RCU_PREDV0_DIV7 CFG1_PREDV0(6)" +.LASF2512: + .string "SPI_TRANSMODE_BDRECEIVE SPI_CTL0_BDEN" +.LASF3109: + .string "USART_GP_PSC BITS(0,7)" +.LASF799: + .string "CAN_TMI2(canx) REG32((canx) + 0x1A0U)" +.LASF2136: + .string "RCU_INT_HXTALSTBIC BIT(19)" +.LASF2469: + .string "SPI_CTL0_FF16 BIT(11)" +.LASF810: + .string "CAN_RFIFOMDATA11(canx) REG32((canx) + 0x1CCU)" +.LASF2081: + .string "RCU_APB2RST REG32(RCU + 0x0CU)" +.LASF1589: + .string "OB_WP_26 ((uint32_t)0x04000000U)" +.LASF3273: + .string "usart_lin_mode_disable" +.LASF2110: + .string "RCU_CFG0_ADCPSC BITS(14,15)" +.LASF1197: + .string "DAC_WAVE_BIT_WIDTH_11 DWBW(10)" +.LASF390: + .string "long +4" +.LASF1266: + .string "DMA_INTC_HTFIFC BIT(2)" +.LASF1072: + .string "CAN_BT_BS1_15TQ ((uint8_t)0x0EU)" +.LASF3117: + .string "USART_STAT_REG_OFFSET (0x00000000U)" +.LASF2148: + .string "RCU_APB2RST_ADC1RST BIT(10)" +.LASF2252: + .string "RCU_CKSYSSRC_PLL CFG0_SCS(2)" +.LASF1897: + .string "I2C_CTL0_PECEN BIT(5)" +.LASF159: + .string "__FLT_HAS_QUIET_NAN__ 1" +.LASF631: + .string "ADC0_1_EXTTRIG_INSERTED_T0_TRGO CTL1_ETSIC(0)" +.LASF2223: + .string "RCU_RSTSCK_WWDGTRSTF BIT(30)" +.LASF3052: + .string "UART3 (USART_BASE+(0x00000800U))" +.LASF2040: + .string "DBG_LOW_POWER_SLEEP DBG_CTL_SLP_HOLD" +.LASF590: + .string "ADC_ISQ_IL BITS(20,21)" +.LASF446: + .string "INT32_MAX (__INT32_MAX__)" +.LASF2374: + .string "CFG1_PLL1MF(regval) (BITS(8,11) & ((uint32_t)(regval) << 8))" +.LASF681: + .string "ADC_INT_EOIC ADC_STAT_EOIC" +.LASF2845: + .string "TIMER_IOS_STATE_DISABLE ((uint16_t)0x0000U)" +.LASF1: + .string "__STDC_VERSION__ 201710L" +.LASF2764: + .string "TIMER_FLAG_BRK TIMER_INTF_BRKIF" +.LASF912: + .string "CAN_TSTAT_MTFNERR2 BIT(17)" +.LASF2360: + .string "RCU_PREDV1_DIV3 CFG1_PREDV1(2)" +.LASF2851: + .string "TIMER_CCHP_PROT_OFF CCHP_PROT(0)" +.LASF658: + .string "ADC_INSERTED_CHANNEL_1 ((uint8_t)0x01U)" +.LASF889: + .string "CAN_CTL_TTC BIT(7)" +.LASF1296: + .string "DMA_INT_FLAG_ERR DMA_INTF_ERRIF" +.LASF2233: + .string "RCU_DSV_DSLPVS BITS(0,1)" +.LASF2058: + .string "CTL_LVDT(regval) (BITS(5,7)&((uint32_t)(regval) << 5))" +.LASF224: + .string "__FLT64_MIN_10_EXP__ (-307)" +.LASF1746: + .string "GPIO_LOCK_LK14 BIT(14)" +.LASF622: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH0 CTL1_ETSRC(0)" +.LASF2650: + .string "TIMER_DMAINTEN_CMTIE BIT(5)" +.LASF2108: + .string "RCU_CFG0_APB1PSC BITS(8,10)" +.LASF607: + .string "CTL0_SYNCM(regval) (BITS(16,19) & ((uint32_t)(regval) << 16))" +.LASF1531: + .string "FMC_REGIDX_BITS(regidx,bitpos0,bitpos1) (((uint32_t)(regidx) << 12) | ((uint32_t)(bitpos0) << 6) | (uint32_t)(bitpos1))" +.LASF1755: + .string "AFIO_PCF0_USART1_REMAP BIT(3)" +.LASF2511: + .string "SPI_TRANSMODE_RECEIVEONLY SPI_CTL0_RO" +.LASF1821: + .string "GPIO_EVENT_PIN_14 ((uint8_t)0x0EU)" +.LASF2850: + .string "CCHP_PROT(regval) ((uint16_t)(BITS(8, 9) & ((uint32_t)(regval) << 8U)))" +.LASF2286: + .string "RCU_PLLSRC_HXTAL RCU_CFG0_PLLSEL" +.LASF394: + .string "__INT16 \"h\"" +.LASF2755: + .string "TIMER_INT_FLAG_TRG TIMER_INT_TRG" +.LASF2326: + .string "RCU_CKOUT0SRC_NONE CFG0_CKOUT0SEL(0)" +.LASF3186: + .string "RCU_USBFSRST" +.LASF957: + .string "CAN_TMI_TEN BIT(0)" +.LASF3173: + .string "__uint8_t" +.LASF167: + .string "__DBL_MAX__ ((double)1.79769313486231570814527423731704357e+308L)" +.LASF2465: + .string "SPI_CTL0_LF BIT(7)" +.LASF601: + .string "ADC_FLAG_EOIC ADC_STAT_EOIC" +.LASF1129: + .string "DAC1 (1U)" +.LASF680: + .string "ADC_INT_EOC ADC_STAT_EOC" +.LASF3010: + .string "TIMER_MSIP 0xFFC" +.LASF3004: + .string "NULL" +.LASF782: + .string "CAN1 (CAN0 + 0x00000400U)" +.LASF1347: + .string "EXMC_SNTCFG_ASET BITS(0,3)" +.LASF117: + .string "__UINT8_C(c) c" +.LASF331: + .string "__I volatile const" +.LASF1892: + .string "I2C_FMPCFG(i2cx) REG32((i2cx) + 0x90U)" +.LASF1003: + .string "TSTAT_REG_OFFSET ((uint8_t)0x08U)" +.LASF2848: + .string "TIMER_OUTAUTO_ENABLE ((uint16_t)TIMER_CCHP_OAEN)" +.LASF936: + .string "CAN_INTEN_RFFIE1 BIT(5)" +.LASF3292: + .string "usart_word_length_set" +.LASF2267: + .string "CFG0_APB1PSC(regval) (BITS(8,10) & ((uint32_t)(regval) << 8))" +.LASF1714: + .string "GPIO_BOP_CR14 BIT(30)" +.LASF649: + .string "WDHT_WDHT(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF3262: + .string "usart_guard_time_config" +.LASF2986: + .string "__need_size_t" +.LASF1808: + .string "GPIO_EVENT_PIN_1 ((uint8_t)0x01U)" +.LASF228: + .string "__FLT64_MAX__ 1.79769313486231570814527423731704357e+308F64" +.LASF2254: + .string "RCU_SCSS_IRC8M CFG0_SCSS(0)" +.LASF176: + .string "__LDBL_DIG__ 33" +.LASF1093: + .string "CAN_MODE_INITIALIZE ((uint8_t)0x01U)" +.LASF3097: + .string "USART_CTL1_LMEN BIT(14)" +.LASF34: + .string "__WCHAR_TYPE__ int" +.LASF978: + .string "CAN_RFIFOMP_FI BITS(8,15)" +.LASF1883: + .string "I2C_CTL0(i2cx) REG32((i2cx) + 0x00U)" +.LASF846: + .string "CAN_F2DATA1(canx) REG32((canx) + 0x254U)" +.LASF1637: + .string "GPIO_CTL1_CTL8 BITS(2, 3)" +.LASF1364: + .string "EXTI EXTI_BASE" +.LASF2039: + .string "DBG_CTL_CAN1_HOLD BIT(21)" +.LASF2003: + .string "PSC_PSC(regval) (BITS(0,2) & ((uint32_t)(regval) << 0))" +.LASF1780: + .string "AFIO_EXTI13_SS BITS(4, 7)" +.LASF1398: + .string "EXTI_EVEN_EVEN8 BIT(8)" +.LASF324: + .string "GD32VF103V_EVAL 1" +.LASF1338: + .string "EXMC_SNCTL_NRBKEN BIT(0)" +.LASF2025: + .string "DBG_CTL_DSLP_HOLD BIT(1)" +.LASF643: + .string "ADC_SAMPLETIME_28POINT5 SAMPTX_SPT(3)" +.LASF2124: + .string "RCU_INT_PLL2STBIF BIT(6)" +.LASF84: + .string "__WCHAR_WIDTH__ 32" +.LASF3219: + .string "CK_AHB" +.LASF2253: + .string "CFG0_SCSS(regval) (BITS(2,3) & ((uint32_t)(regval) << 2))" +.LASF688: + .string "ADC_RESOLUTION_8B OVSCR_DRES(2)" +.LASF514: + .string "BKP_BASE (APB1_BUS_BASE + 0x00006C00U)" +.LASF2321: + .string "RCU_CKUSB_CKPLL_DIV1_5 CFG0_USBPSC(0)" +.LASF689: + .string "ADC_RESOLUTION_6B OVSCR_DRES(3)" +.LASF2340: + .string "CFG1_PREDV0(regval) (BITS(0,3) & ((uint32_t)(regval) << 0))" +.LASF773: + .string "OCTL_RCCV(regval) (BITS(0,6) & ((uint32_t)(regval) << 0))" +.LASF1945: + .string "I2C_RT_RISETIME BITS(0,5)" +.LASF2910: + .string "TIMER_TRI_OUT_SRC_ENABLE CTL1_MMC(1)" +.LASF2362: + .string "RCU_PREDV1_DIV5 CFG1_PREDV1(4)" +.LASF968: + .string "CAN_TMDATA0_DB3 BITS(24,31)" +.LASF2441: + .string "RTC_INT_FLAG_OVERFLOW RTC_CTL_OVIF" +.LASF2065: + .string "PMU_LVDT_6 CTL_LVDT(6)" +.LASF1915: + .string "I2C_SADDR0_ADDRESS_H BITS(8,9)" +.LASF1103: + .string "CAN_TIMEOUT ((uint32_t)0x0000FFFFU)" +.LASF1106: + .string "CAN_INT_RFF0 CAN_INTEN_RFFIE0" +.LASF2704: + .string "TIMER_CHCTL1_CH2CAPPSC BITS(2,3)" +.LASF1574: + .string "OB_WP_11 ((uint32_t)0x00000800U)" +.LASF81: + .string "__INT_WIDTH__ 32" +.LASF766: + .string "BKP_TPCS_TIR BIT(1)" +.LASF3246: + .string "usart_dma_transmit_config" +.LASF1484: + .string "EXTI_PD_PD18 BIT(18)" +.LASF3218: + .string "CK_SYS" +.LASF613: + .string "ADC_DAUL_INSERTED_PARALLEL CTL0_SYNCM(5)" +.LASF438: + .string "UINT_LEAST8_MAX (__UINT_LEAST8_MAX__)" +.LASF1660: + .string "GPIO_ISTAT_ISTAT8 BIT(8)" +.LASF781: + .string "CAN0 CAN_BASE" +.LASF400: + .string "__FAST64 \"ll\"" +.LASF1134: + .string "DAC0_R8DH REG32(DAC + 0x10U)" +.LASF1587: + .string "OB_WP_24 ((uint32_t)0x01000000U)" +.LASF173: + .string "__DBL_HAS_INFINITY__ 1" +.LASF1054: + .string "CAN_BT_SJW_1TQ ((uint8_t)0x00U)" +.LASF142: + .string "__FLT_EVAL_METHOD_TS_18661_3__ 0" +.LASF1922: + .string "I2C_STAT0_BTC BIT(2)" +.LASF33: + .string "__PTRDIFF_TYPE__ int" +.LASF2881: + .string "TIMER_OC_SHADOW_ENABLE ((uint16_t)0x0008U)" +.LASF988: + .string "CAN_FCTL_FLD BIT(0)" +.LASF1427: + .string "EXTI_RTEN_RTEN18 BIT(18)" +.LASF3119: + .string "USART_CTL1_REG_OFFSET (0x00000010U)" +.LASF1439: + .string "EXTI_FTEN_FTEN11 BIT(11)" +.LASF113: + .string "__INT_LEAST64_MAX__ 0x7fffffffffffffffLL" +.LASF93: + .string "__SIG_ATOMIC_MAX__ 0x7fffffff" +.LASF1898: + .string "I2C_CTL0_GCEN BIT(6)" +.LASF1040: + .string "ERR_ERRN(regval) (BITS(4,6) & ((uint32_t)(regval) << 4))" +.LASF3151: + .string "CTL1_CPL(regval) (BIT(10) & ((uint32_t)(regval) << 10))" +.LASF1996: + .string "FWDGT_RLD REG32((FWDGT) + 0x00000008U)" +.LASF2768: + .string "TIMER_FLAG_CH3O TIMER_INTF_CH3OF" +.LASF2858: + .string "TIMER_CH_1 ((uint16_t)0x0001U)" +.LASF1799: + .string "GPIO_EVENT_PORT_GPIOC ((uint8_t)0x02U)" +.LASF1004: + .string "RFIFO0_REG_OFFSET ((uint8_t)0x0CU)" +.LASF624: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH2 CTL1_ETSRC(2)" +.LASF2369: + .string "RCU_PREDV1_DIV12 CFG1_PREDV1(11)" +.LASF1846: + .string "GPIO_PIN_7 BIT(7)" +.LASF959: + .string "CAN_TMI_FF BIT(2)" +.LASF2020: + .string "DBG DBG_BASE" +.LASF1606: + .string "GPIO_CTL0(gpiox) REG32((gpiox) + 0x00U)" +.LASF2788: + .string "TIMER_DMACFG_DMATA_CNT DMACFG_DMATA(9)" +.LASF2761: + .string "TIMER_FLAG_CH3 TIMER_INTF_CH3IF" +.LASF3243: + .string "flag" +.LASF1391: + .string "EXTI_EVEN_EVEN1 BIT(1)" +.LASF977: + .string "CAN_RFIFOMP_DLENC BITS(0,3)" +.LASF3185: + .string "FlagStatus" +.LASF1435: + .string "EXTI_FTEN_FTEN7 BIT(7)" +.LASF2979: + .string "_SIZE_T_DEFINED " +.LASF2780: + .string "TIMER_DMACFG_DMATA_CTL1 DMACFG_DMATA(1)" +.LASF437: + .string "INT_LEAST8_MAX (__INT_LEAST8_MAX__)" +.LASF1393: + .string "EXTI_EVEN_EVEN3 BIT(3)" +.LASF1573: + .string "OB_WP_10 ((uint32_t)0x00000400U)" +.LASF2278: + .string "RCU_APB2_CKAHB_DIV16 CFG0_APB2PSC(7)" +.LASF2021: + .string "DBG_ID REG32(DBG + 0x00U)" +.LASF17: + .string "__SIZEOF_LONG__ 4" +.LASF2007: + .string "FWDGT_PSC_DIV32 ((uint8_t)PSC_PSC(3))" +.LASF2721: + .string "TIMER_CHCTL2_CH3P BIT(13)" +.LASF2927: + .string "TIMER_MASTER_SLAVE_MODE_DISABLE ((uint32_t)0x00000000U)" +.LASF1592: + .string "OB_WP_29 ((uint32_t)0x20000000U)" +.LASF395: + .string "__INT32 \"l\"" +.LASF761: + .string "BKP_OCTL_ASOEN BIT(8)" +.LASF1293: + .string "DMA_INT_FLAG_G DMA_INTF_GIF" +.LASF1330: + .string "ECLIC_PRIGROUP_LEVEL3_PRIO1 3" +.LASF3045: + .string "ECLIC_GROUP_LEVEL0_PRIO4 0" +.LASF2380: + .string "RCU_PLL1_MUL13 CFG1_PLL1MF(11)" +.LASF347: + .string "__NEWLIB__ 4" +.LASF1653: + .string "GPIO_ISTAT_ISTAT1 BIT(1)" +.LASF2724: + .string "TIMER_CAR_CARL BITS(0,15)" +.LASF3247: + .string "dmacmd" +.LASF3000: + .string "_GCC_WCHAR_T " +.LASF1267: + .string "DMA_INTC_ERRIFC BIT(3)" +.LASF1409: + .string "EXTI_RTEN_RTEN0 BIT(0)" +.LASF2185: + .string "RCU_APB2EN_ADC0EN BIT(9)" +.LASF2082: + .string "RCU_APB1RST REG32(RCU + 0x10U)" +.LASF1750: + .string "AFIO_EC_PORT BITS(4, 6)" +.LASF351: + .string "__GNUC_PREREQ__(ma,mi) __GNUC_PREREQ(ma, mi)" +.LASF259: + .string "__FLT32X_NORM_MAX__ 1.79769313486231570814527423731704357e+308F32x" +.LASF2719: + .string "TIMER_CHCTL2_CH2NP BIT(11)" +.LASF2771: + .string "TIMER_DMA_CH1D ((uint16_t)TIMER_DMAINTEN_CH1DEN)" +.LASF3286: + .string "usart_transmit_config" +.LASF3072: + .string "USART_DATA_DATA BITS(0,8)" +.LASF365: + .string "___int8_t_defined 1" +.LASF3296: + .string "usart_baudrate_set" +.LASF2669: + .string "TIMER_INTF_CH1OF BIT(10)" +.LASF3208: + .string "RCU_GPIOARST" +.LASF460: + .string "INT_FAST16_MIN (-__INT_FAST16_MAX__ - 1)" +.LASF2215: + .string "RCU_BDCTL_BKPRST BIT(16)" +.LASF932: + .string "CAN_INTEN_RFNEIE0 BIT(1)" +.LASF2646: + .string "TIMER_DMAINTEN_CH0IE BIT(1)" +.LASF954: + .string "CAN_BT_SJW BITS(24,25)" +.LASF2756: + .string "TIMER_INT_FLAG_BRK TIMER_INT_BRK" +.LASF2019: + .string "GD32VF103_DBG_H " +.LASF1027: + .string "GET_RFIFOMP_DLENC(regval) GET_BITS((uint32_t)(regval), 0U, 3U)" +.LASF112: + .string "__INT_LEAST32_WIDTH__ 32" +.LASF2456: + .string "SPI_RCRC(spix) REG32((spix) + 0x14U)" +.LASF1437: + .string "EXTI_FTEN_FTEN9 BIT(9)" +.LASF1193: + .string "DAC_WAVE_BIT_WIDTH_7 DWBW(6)" +.LASF267: + .string "__FLT64X_DIG__ 33" +.LASF3144: + .string "USART_LBLEN_11B CTL1_LBLEN(1)" +.LASF1374: + .string "EXTI_INTEN_INTEN3 BIT(3)" +.LASF1839: + .string "GPIO_PIN_0 BIT(0)" +.LASF1097: + .string "CAN_FILTERBITS_32BIT ((uint8_t)0x01U)" +.LASF828: + .string "CAN_F12DATA0(canx) REG32((canx) + 0x2A0U)" +.LASF2001: + .string "FWDGT_STAT_PUD BIT(0)" +.LASF637: + .string "ADC0_1_EXTTRIG_INSERTED_EXTI_15 CTL1_ETSIC(6)" +.LASF3064: + .string "USART_STAT_NERR BIT(2)" +.LASF947: + .string "CAN_ERR_BOERR BIT(2)" +.LASF845: + .string "CAN_F1DATA1(canx) REG32((canx) + 0x24CU)" +.LASF2697: + .string "TIMER_CHCTL1_CH2COMCTL BITS(4,6)" +.LASF261: + .string "__FLT32X_EPSILON__ 2.22044604925031308084726333618164062e-16F32x" +.LASF2225: + .string "RCU_AHBRST_USBFSRST BIT(12)" +.LASF3222: + .string "long double" +.LASF2965: + .string "___int_ptrdiff_t_h " +.LASF1499: + .string "OB_WP0 REG16((OB) + 0x08U)" +.LASF1582: + .string "OB_WP_19 ((uint32_t)0x00080000U)" +.LASF2502: + .string "SPI_I2SCTL_I2SSEL BIT(11)" +.LASF2050: + .string "PMU_CTL_STBRST BIT(3)" +.LASF1930: + .string "I2C_STAT0_OUERR BIT(11)" +.LASF2578: + .string "SPI_FLAG_CRCERR SPI_STAT_CRCERR" +.LASF2623: + .string "TIMER_CTL0_CAM BITS(5,6)" +.LASF1504: + .string "FMC_KEY_KEY BITS(0,31)" +.LASF1584: + .string "OB_WP_21 ((uint32_t)0x00200000U)" +.LASF2388: + .string "RCU_PLL2_MUL10 CFG1_PLL2MF(8)" +.LASF340: + .string "LXTAL_VALUE ((uint32_t)32768)" +.LASF481: + .string "INT8_C(x) __INT8_C(x)" +.LASF2955: + .string "N200_FUNC_H " +.LASF1694: + .string "GPIO_BOP_BOP10 BIT(10)" +.LASF788: + .string "CAN_INTEN(canx) REG32((canx) + 0x14U)" +.LASF1627: + .string "GPIO_CTL0_CTL3 BITS(14, 15)" +.LASF2882: + .string "TIMER_OC_SHADOW_DISABLE ((uint16_t)0x0000U)" +.LASF1710: + .string "GPIO_BOP_CR10 BIT(26)" +.LASF2621: + .string "TIMER_CTL0_SPM BIT(3)" +.LASF2982: + .string "___int_size_t_h " +.LASF2149: + .string "RCU_APB2RST_TIMER0RST BIT(11)" +.LASF1459: + .string "EXTI_SWIEV_SWIEV12 BIT(12)" +.LASF2836: + .string "TIMER_CKDIV_DIV2 CTL0_CKDIV(1)" +.LASF2712: + .string "TIMER_CHCTL2_CH1EN BIT(4)" +.LASF2442: + .string "RTC_FLAG_SECOND RTC_CTL_SCIF" +.LASF1564: + .string "OB_WP_1 ((uint32_t)0x00000002U)" +.LASF231: + .string "__FLT64_EPSILON__ 2.22044604925031308084726333618164062e-16F64" +.LASF1875: + .string "GPIO_SWJ_NONJTRST_REMAP ((uint32_t)0x00300100U)" +.LASF2767: + .string "TIMER_FLAG_CH2O TIMER_INTF_CH2OF" +.LASF1815: + .string "GPIO_EVENT_PIN_8 ((uint8_t)0x08U)" +.LASF3266: + .string "usart_synchronous_clock_disable" +.LASF1196: + .string "DAC_WAVE_BIT_WIDTH_10 DWBW(9)" +.LASF1580: + .string "OB_WP_17 ((uint32_t)0x00020000U)" +.LASF277: + .string "__FLT64X_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F64x" +.LASF3289: + .string "usart_enable" +.LASF2049: + .string "PMU_CTL_WURST BIT(2)" +.LASF874: + .string "CAN_TMDATA0(canx,bank) REG32((canx) + 0x188U + ((bank) * 0x10U))" +.LASF158: + .string "__FLT_HAS_INFINITY__ 1" +.LASF1430: + .string "EXTI_FTEN_FTEN2 BIT(2)" +.LASF2564: + .string "SPI_CRC_TX ((uint8_t)0x00U)" +.LASF73: + .string "__WCHAR_MAX__ 0x7fffffff" +.LASF2366: + .string "RCU_PREDV1_DIV9 CFG1_PREDV1(8)" +.LASF3152: + .string "USART_CPL_LOW CTL1_CPL(0)" +.LASF2938: + .string "TIMER_CHVSEL_DISABLE ((uint16_t)0x0000U)" +.LASF2867: + .string "TIMER_OCN_POLARITY_HIGH ((uint16_t)0x0000U)" +.LASF2364: + .string "RCU_PREDV1_DIV7 CFG1_PREDV1(6)" +.LASF1219: + .string "DAC_TRIANGLE_AMPLITUDE_31 DAC_WAVE_BIT_WIDTH_5" +.LASF2093: + .string "RCU_CTL_IRC8MADJ BITS(3,7)" +.LASF525: + .string "USBFS_BASE (AHB1_BUS_BASE + 0x0FFE8000U)" +.LASF2908: + .string "CTL1_MMC(regval) (BITS(4, 6) & ((uint32_t)(regval) << 4U))" +.LASF2213: + .string "RCU_BDCTL_RTCSRC BITS(8,9)" +.LASF661: + .string "ADC_CHANNEL_0 ((uint8_t)0x00U)" +.LASF209: + .string "__FLT32_MIN_10_EXP__ (-37)" +.LASF122: + .string "__UINT_LEAST64_MAX__ 0xffffffffffffffffULL" +.LASF2926: + .string "TIMER_MASTER_SLAVE_MODE_ENABLE TIMER_SMCFG_MSM" +.LASF3281: + .string "usart_data_receive" +.LASF3187: + .string "RCU_TIMER1RST" +.LASF1951: + .string "I2C_REG_VAL2(i2cx,offset) (REG32((i2cx) + ((uint32_t)(offset) >> 22)))" +.LASF269: + .string "__FLT64X_MIN_10_EXP__ (-4931)" +.LASF602: + .string "ADC_FLAG_STIC ADC_STAT_STIC" +.LASF3046: + .string "ECLIC_GROUP_LEVEL1_PRIO3 1" +.LASF306: + .string "__riscv_mul 1" +.LASF2745: + .string "TIMER_INT_CH3 TIMER_DMAINTEN_CH3IE" +.LASF2939: + .string "GD32VF103_WWDGT_H " +.LASF64: + .string "__UINT_FAST64_TYPE__ long long unsigned int" +.LASF3115: + .string "USART_REG_VAL2(usartx,offset) (REG32((usartx) + ((uint32_t)(offset) >> 22)))" +.LASF922: + .string "CAN_TSTAT_TMLS2 BIT(31)" +.LASF2659: + .string "TIMER_DMAINTEN_TRGDEN BIT(14)" +.LASF3280: + .string "addr" +.LASF933: + .string "CAN_INTEN_RFFIE0 BIT(2)" +.LASF455: + .string "INT_LEAST64_MAX (__INT_LEAST64_MAX__)" +.LASF937: + .string "CAN_INTEN_RFOIE1 BIT(6)" +.LASF276: + .string "__FLT64X_EPSILON__ 1.92592994438723585305597794258492732e-34F64x" +.LASF1843: + .string "GPIO_PIN_4 BIT(4)" +.LASF3165: + .string "USART_CTS_DISABLE CLT2_CTSEN(0)" +.LASF1597: + .string "FMC_SIZE (*(uint16_t *)0x1FFFF7E0U)" +.LASF2584: + .string "I2S_FLAG_TBE SPI_STAT_TBE" +.LASF1756: + .string "AFIO_PCF0_USART2_REMAP BITS(4, 5)" +.LASF1871: + .string "GPIO_CAN0_FULL_REMAP ((uint32_t)0x001D6000U)" +.LASF123: + .string "__UINT64_C(c) c ## ULL" +.LASF2283: + .string "RCU_CKADC_CKAPB2_DIV12 ((uint32_t)0x00000005U)" +.LASF911: + .string "CAN_TSTAT_MTF2 BIT(16)" +.LASF1566: + .string "OB_WP_3 ((uint32_t)0x00000008U)" +.LASF1309: + .string "DMA_MEMORY_INCREASE_ENABLE ((uint8_t)0x01U)" +.LASF918: + .string "CAN_TSTAT_TME1 BIT(27)" +.LASF820: + .string "CAN_F4DATA0(canx) REG32((canx) + 0x260U)" +.LASF2115: + .string "RCU_CFG0_CKOUT0SEL BITS(24,27)" +.LASF2069: + .string "PMU_FLAG_LVD PMU_CS_LVDF" +.LASF490: + .string "UINTMAX_C(x) __UINTMAX_C(x)" +.LASF1359: + .string "EXMC_MEMORY_TYPE_NOR SNCTL_NRTP(2)" +.LASF2237: + .string "AHBEN_REG_OFFSET 0x14U" +.LASF596: + .string "ADC_OVSCR_OVSS BITS(5,8)" +.LASF2088: + .string "RCU_AHBRST REG32(RCU + 0x28U)" +.LASF1956: + .string "I2C_I2CMODE_ENABLE ((uint32_t)0x00000000U)" +.LASF314: + .string "__riscv_m 2000000" +.LASF1959: + .string "I2C_SMBUS_HOST I2C_CTL0_SMBSEL" +.LASF1962: + .string "I2C_ACK_DISABLE ((uint32_t)0x00000000U)" +.LASF179: + .string "__LDBL_MAX_EXP__ 16384" +.LASF1560: + .string "OB_WP1_WP1 ((uint32_t)0x0000FF00U)" +.LASF23: + .string "__SIZEOF_SIZE_T__ 4" +.LASF338: + .string "IRC8M_STARTUP_TIMEOUT ((uint16_t)0x0500)" +.LASF1719: + .string "GPIO_BC_CR3 BIT(3)" +.LASF2290: + .string "RCU_PLL_MUL3 CFG0_PLLMF(1)" +.LASF1543: + .string "WS_WSCNT_1 WS_WSCNT(1)" +.LASF1102: + .string "CAN_FT_REMOTE ((uint32_t)0x00000002U)" +.LASF1242: + .string "DMA_CH2PADDR(dmax) REG32((dmax) + 0x38U)" +.LASF1512: + .string "FMC_CTL_MER BIT(2)" +.LASF1958: + .string "I2C_SMBUS_DEVICE ((uint32_t)0x00000000U)" +.LASF1318: + .string "CHCTL_PRIO(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF1142: + .string "DAC1_DO REG32(DAC + 0x30U)" +.LASF2163: + .string "RCU_APB1RST_UART3RST BIT(19)" +.LASF2776: + .string "TIMER_DMAREQUEST_UPDATEEVENT TIMER_CTL1_DMAS" +.LASF255: + .string "__FLT32X_MAX_EXP__ 1024" +.LASF629: + .string "ADC0_1_EXTTRIG_REGULAR_NONE CTL1_ETSRC(7)" +.LASF2675: + .string "TIMER_SWEVG_CH2G BIT(3)" +.LASF3203: + .string "RCU_CAN1RST" +.LASF1708: + .string "GPIO_BOP_CR8 BIT(24)" +.LASF2160: + .string "RCU_APB1RST_SPI2RST BIT(15)" +.LASF1731: + .string "GPIO_BC_CR15 BIT(15)" +.LASF104: + .string "__INT_LEAST8_MAX__ 0x7f" +.LASF3108: + .string "USART_CTL2_CTSIE BIT(10)" +.LASF2996: + .string "_WCHAR_T_DEFINED " +.LASF2034: + .string "DBG_CTL_I2C0_HOLD BIT(15)" +.LASF382: + .string "long" +.LASF3016: + .string "TIMER_CTRL_ADDR 0xd1000000" +.LASF2822: + .string "TIMER_EVENT_SRC_CMTG ((uint16_t)0x0020U)" +.LASF2209: + .string "RCU_APB1EN_DACEN BIT(29)" +.LASF1482: + .string "EXTI_PD_PD16 BIT(16)" +.LASF1274: + .string "DMA_CHXCTL_PNAGA BIT(6)" +.LASF2684: + .string "TIMER_CHCTL0_CH0COMCEN BIT(7)" +.LASF63: + .string "__UINT_FAST32_TYPE__ unsigned int" +.LASF3161: + .string "USART_RTS_ENABLE CLT2_RTSEN(1)" +.LASF356: + .string "__LARGEFILE_VISIBLE 0" +.LASF1438: + .string "EXTI_FTEN_FTEN10 BIT(10)" +.LASF1853: + .string "GPIO_PIN_14 BIT(14)" +.LASF1174: + .string "DAC_TRIGGER_T5_TRGO CTL_DTSEL(0)" +.LASF2408: + .string "RTC RTC_BASE" +.LASF952: + .string "CAN_BT_BS1 BITS(16,19)" +.LASF1473: + .string "EXTI_PD_PD7 BIT(7)" +.LASF1121: + .string "CRC_FDATA REG32(CRC + 0x04U)" +.LASF2120: + .string "RCU_INT_IRC8MSTBIF BIT(2)" +.LASF1546: + .string "OB_FWDGT_HW ((uint8_t)0x00U)" +.LASF1551: + .string "OB_BOOT_B0 ((uint8_t)0x08U)" +.LASF1012: + .string "FDATA_MASK_HIGH(regval) (BITS(16,31) & ((uint32_t)(regval) << 16))" +.LASF2218: + .string "RCU_RSTSCK_RSTFC BIT(24)" +.LASF999: + .string "CAN_REG_VALS(canx,offset) (REG32((canx) + ((uint32_t)(offset) >> 12)))" +.LASF1672: + .string "GPIO_OCTL_OCTL4 BIT(4)" +.LASF3287: + .string "txconfig" +.LASF49: + .string "__INT_LEAST8_TYPE__ signed char" +.LASF1444: + .string "EXTI_FTEN_FTEN16 BIT(16)" +.LASF1288: + .string "DMA_CHCTL_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF786: + .string "CAN_RFIFO0(canx) REG32((canx) + 0x0CU)" +.LASF1327: + .string "ECLIC_PRIGROUP_LEVEL0_PRIO4 0" +.LASF3101: + .string "USART_CTL2_HDEN BIT(3)" +.LASF1209: + .string "DAC_LFSR_BITS10_0 DAC_WAVE_BIT_WIDTH_11" +.LASF2226: + .string "RCU_CFG1_PREDV0 BITS(0,3)" +.LASF1453: + .string "EXTI_SWIEV_SWIEV6 BIT(6)" +.LASF1361: + .string "EXMC_NWAIT_POLARITY_LOW ((uint32_t)0x00000000U)" +.LASF253: + .string "__FLT32X_MIN_EXP__ (-1021)" +.LASF368: + .string "___int64_t_defined 1" +.LASF2531: + .string "SPI_PSC_128 CTL0_PSC(6)" +.LASF196: + .string "__FLT16_MAX_10_EXP__ 4" +.LASF1057: + .string "CAN_BT_SJW_4TQ ((uint8_t)0x03U)" +.LASF2246: + .string "INT_REG_OFFSET 0x08U" +.LASF229: + .string "__FLT64_NORM_MAX__ 1.79769313486231570814527423731704357e+308F64" +.LASF2059: + .string "PMU_LVDT_0 CTL_LVDT(0)" +.LASF1785: + .string "GPIO_MODE_MASK(n) (0xFU << (4U * (n)))" +.LASF358: + .string "__POSIX_VISIBLE 199009" +.LASF1260: + .string "DMA_INTF_GIF BIT(0)" +.LASF456: + .string "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)" +.LASF3244: + .string "usart_interrupt_flag_get" +.LASF1367: + .string "EXTI_RTEN REG32(EXTI + 0x08U)" +.LASF640: + .string "ADC_SAMPLETIME_1POINT5 SAMPTX_SPT(0)" +.LASF1740: + .string "GPIO_LOCK_LK8 BIT(8)" +.LASF3118: + .string "USART_CTL0_REG_OFFSET (0x0000000CU)" +.LASF1477: + .string "EXTI_PD_PD11 BIT(11)" +.LASF2524: + .string "CTL0_PSC(regval) (BITS(3,5) & ((uint32_t)(regval) << 3))" +.LASF677: + .string "ADC_CHANNEL_16 ((uint8_t)0x10U)" +.LASF953: + .string "CAN_BT_BS2 BITS(20,22)" +.LASF1559: + .string "OB_WP0_WP0 ((uint32_t)0x000000FFU)" +.LASF226: + .string "__FLT64_MAX_10_EXP__ 308" +.LASF311: + .string "__riscv_cmodel_medany 1" +.LASF3085: + .string "USART_CTL0_PCEN BIT(10)" +.LASF2066: + .string "PMU_LVDT_7 CTL_LVDT(7)" +.LASF2373: + .string "RCU_PREDV1_DIV16 CFG1_PREDV1(15)" +.LASF2782: + .string "TIMER_DMACFG_DMATA_DMAINTEN DMACFG_DMATA(3)" +.LASF2251: + .string "RCU_CKSYSSRC_HXTAL CFG0_SCS(1)" +.LASF1333: + .string "GD32VF103_EXMC_H " +.LASF257: + .string "__FLT32X_DECIMAL_DIG__ 17" +.LASF2804: + .string "TIMER_DMACFG_DMATC_6TRANSFER DMACFG_DMATC(5)" +.LASF2911: + .string "TIMER_TRI_OUT_SRC_UPDATE CTL1_MMC(2)" +.LASF3157: + .string "CLT2_DENT(regval) (BIT(7) & ((uint32_t)(regval) << 7))" +.LASF2395: + .string "RCU_PLL2_MUL20 CFG1_PLL2MF(15)" +.LASF3062: + .string "USART_STAT_PERR BIT(0)" +.LASF70: + .string "__INT_MAX__ 0x7fffffff" +.LASF2521: + .string "SPI_CK_PL_HIGH_PH_1EDGE SPI_CTL0_CKPL" +.LASF1454: + .string "EXTI_SWIEV_SWIEV7 BIT(7)" +.LASF1420: + .string "EXTI_RTEN_RTEN11 BIT(11)" +.LASF1244: + .string "DMA_CH3CTL(dmax) REG32((dmax) + 0x44U)" +.LASF2518: + .string "SPI_ENDIAN_MSB ((uint32_t)0x00000000U)" +.LASF1217: + .string "DAC_TRIANGLE_AMPLITUDE_7 DAC_WAVE_BIT_WIDTH_3" +.LASF1680: + .string "GPIO_OCTL_OCTL12 BIT(12)" +.LASF3174: + .string "__uint16_t" +.LASF133: + .string "__UINT_FAST16_MAX__ 0xffffffffU" +.LASF1868: + .string "GPIO_TIMER2_FULL_REMAP ((uint32_t)0x001A0C00U)" +.LASF2014: + .string "FWDGT_KEY_ENABLE ((uint16_t)0xCCCCU)" +.LASF2762: + .string "TIMER_FLAG_CMT TIMER_INTF_CMTIF" +.LASF2478: + .string "SPI_CTL1_TMOD BIT(4)" +.LASF2770: + .string "TIMER_DMA_CH0D ((uint16_t)TIMER_DMAINTEN_CH0DEN)" +.LASF2116: + .string "RCU_CFG0_ADCPSC_2 BIT(28)" +.LASF1466: + .string "EXTI_PD_PD0 BIT(0)" +.LASF120: + .string "__UINT_LEAST32_MAX__ 0xffffffffUL" +.LASF1228: + .string "DMA0 (DMA_BASE)" +.LASF2667: + .string "TIMER_INTF_BRKIF BIT(7)" +.LASF556: + .string "ADC_STAT_STRC BIT(4)" +.LASF2260: + .string "RCU_AHB_CKSYS_DIV4 CFG0_AHBPSC(9)" +.LASF1917: + .string "I2C_SADDR1_DUADEN BIT(0)" +.LASF3230: + .string "USART_FLAG_NERR" +.LASF1820: + .string "GPIO_EVENT_PIN_13 ((uint8_t)0x0DU)" +.LASF432: + .string "UINTPTR_MAX (__UINTPTR_MAX__)" +.LASF3253: + .string "usart_irda_lowpower_config" +.LASF19: + .string "__SIZEOF_SHORT__ 2" +.LASF1280: + .string "DMA_CHXCNT_CNT BITS(0,15)" +.LASF1064: + .string "CAN_BT_BS1_7TQ ((uint8_t)0x06U)" +.LASF408: + .string "__int8_t_defined 1" +.LASF1254: + .string "DMA_CH5PADDR(dmax) REG32((dmax) + 0x74U)" +.LASF1765: + .string "AFIO_PCF0_SPI2_REMAP BIT(28)" +.LASF1299: + .string "DMA_FLAG_HTF DMA_INTF_HTFIF" +.LASF35: + .string "__WINT_TYPE__ unsigned int" +.LASF3224: + .string "USART_FLAG_LBD" +.LASF3220: + .string "CK_APB1" +.LASF3221: + .string "CK_APB2" +.LASF1354: + .string "EXMC_NOR_DATABUS_WIDTH_8B SNCTL_NRW(0)" +.LASF1112: + .string "CAN_INT_PERR CAN_INTEN_PERRIE" +.LASF110: + .string "__INT_LEAST32_MAX__ 0x7fffffffL" +.LASF2436: + .string "RTC_INT_SECOND RTC_INTEN_SCIE" +.LASF491: + .string "REG32(addr) (*(volatile uint32_t *)(uint32_t)(addr))" +.LASF2270: + .string "RCU_APB1_CKAHB_DIV4 CFG0_APB1PSC(5)" +.LASF148: + .string "__FLT_MIN_10_EXP__ (-37)" +.LASF1733: + .string "GPIO_LOCK_LK1 BIT(1)" +.LASF571: + .string "ADC_CTL1_CTN BIT(1)" +.LASF3282: + .string "usart_data_transmit" +.LASF598: + .string "ADC_OVSCR_DRES BITS(12,13)" +.LASF2503: + .string "SPI_I2SPSC_DIV BITS(0,7)" +.LASF3095: + .string "USART_CTL1_CKEN BIT(11)" +.LASF668: + .string "ADC_CHANNEL_7 ((uint8_t)0x07U)" +.LASF1335: + .string "EXMC_SNCTL0 REG32(EXMC + 0x00U)" +.LASF1935: + .string "I2C_STAT1_I2CBSY BIT(1)" +.LASF1702: + .string "GPIO_BOP_CR2 BIT(18)" +.LASF812: + .string "CAN_FMCFG(canx) REG32((canx) + 0x204U)" +.LASF892: + .string "CAN_STAT_IWS BIT(0)" +.LASF851: + .string "CAN_F7DATA1(canx) REG32((canx) + 0x27CU)" +.LASF1860: + .string "GPIO_USART2_PARTIAL_REMAP ((uint32_t)0x00140010U)" +.LASF507: + .string "RTC_BASE (APB1_BUS_BASE + 0x00002800U)" +.LASF1140: + .string "DACC_R8DH REG32(DAC + 0x28U)" +.LASF1699: + .string "GPIO_BOP_BOP15 BIT(15)" +.LASF2868: + .string "TIMER_OCN_POLARITY_LOW ((uint16_t)0x0008U)" +.LASF979: + .string "CAN_RFIFOMP_TS BITS(16,31)" +.LASF574: + .string "ADC_CTL1_DMA BIT(8)" +.LASF3275: + .string "usart_mute_mode_wakeup_config" +.LASF2883: + .string "TIMER_OC_FAST_ENABLE ((uint16_t)0x0004)" +.LASF1094: + .string "CAN_MODE_NORMAL ((uint8_t)0x02U)" +.LASF1261: + .string "DMA_INTF_FTFIF BIT(1)" +.LASF767: + .string "BKP_TPCS_TPIE BIT(2)" +.LASF1464: + .string "EXTI_SWIEV_SWIEV17 BIT(17)" +.LASF950: + .string "CAN_ERR_RECNT BITS(24,31)" +.LASF1128: + .string "DAC0 (0U)" +.LASF969: + .string "CAN_TMDATA1_DB4 BITS(0,7)" +.LASF2415: + .string "RTC_CNTH REG32(RTC + 0x18U)" +.LASF2207: + .string "RCU_APB1EN_BKPIEN BIT(27)" +.LASF1563: + .string "OB_WP_0 ((uint32_t)0x00000001U)" +.LASF114: + .string "__INT64_C(c) c ## LL" +.LASF235: + .string "__FLT64_HAS_QUIET_NAN__ 1" +.LASF1654: + .string "GPIO_ISTAT_ISTAT2 BIT(2)" +.LASF205: + .string "__FLT16_HAS_QUIET_NAN__ 1" +.LASF486: + .string "UINT32_C(x) __UINT32_C(x)" +.LASF237: + .string "__FLT128_DIG__ 33" +.LASF617: + .string "ADC_DAUL_INSERTED_TRIGGER_ROTATION CTL0_SYNCM(9)" +.LASF1666: + .string "GPIO_ISTAT_ISTAT14 BIT(14)" +.LASF2162: + .string "RCU_APB1RST_USART2RST BIT(18)" +.LASF3163: + .string "CLT2_CTSEN(regval) (BIT(9) & ((uint32_t)(regval) << 9))" +.LASF2909: + .string "TIMER_TRI_OUT_SRC_RESET CTL1_MMC(0)" +.LASF1577: + .string "OB_WP_14 ((uint32_t)0x00004000U)" +.LASF1404: + .string "EXTI_EVEN_EVEN14 BIT(14)" +.LASF3076: + .string "USART_CTL0_RWU BIT(1)" +.LASF3167: + .string "USART_IRLP_LOW CTL2_IRLP(1)" +.LASF768: + .string "BKP_TPCS_TEF BIT(8)" +.LASF2038: + .string "DBG_CTL_TIMER6_HOLD BIT(20)" +.LASF789: + .string "CAN_ERR(canx) REG32((canx) + 0x18U)" +.LASF1173: + .string "CTL_DTSEL(regval) (BITS(3,5) & ((uint32_t)(regval) << 3))" +.LASF2673: + .string "TIMER_SWEVG_CH0G BIT(1)" +.LASF570: + .string "ADC_CTL1_ADCON BIT(0)" +.LASF242: + .string "__FLT128_DECIMAL_DIG__ 36" +.LASF325: + .string "__RTTHREAD__ 1" +.LASF3061: + .string "USART_GP(usartx) REG32((usartx) + (0x00000018U))" +.LASF2494: + .string "SPI_TCRC_TCRC BITS(0,15)" +.LASF2060: + .string "PMU_LVDT_1 CTL_LVDT(1)" +.LASF2823: + .string "TIMER_EVENT_SRC_TRGG ((uint16_t)0x0040U)" +.LASF189: + .string "__LDBL_HAS_INFINITY__ 1" +.LASF2281: + .string "RCU_CKADC_CKAPB2_DIV6 ((uint32_t)0x00000002U)" +.LASF3083: + .string "USART_CTL0_PERRIE BIT(8)" +.LASF1576: + .string "OB_WP_13 ((uint32_t)0x00002000U)" +.LASF2690: + .string "TIMER_CHCTL0_CH0CAPPSC BITS(2,3)" +.LASF2466: + .string "SPI_CTL0_SWNSS BIT(8)" +.LASF1344: + .string "EXMC_SNCTL_WREN BIT(12)" +.LASF2410: + .string "RTC_CTL REG32(RTC + 0x04U)" +.LASF1113: + .string "CAN_INT_BO CAN_INTEN_BOIE" +.LASF2422: + .string "RTC_CTL_SCIF BIT(0)" +.LASF1598: + .string "SRAM_SIZE (*(uint16_t *)0x1FFFF7E2U)" +.LASF308: + .string "__riscv_muldiv 1" +.LASF2318: + .string "RCU_PLL_MUL31 (PLLMF_4 | CFG0_PLLMF(14))" +.LASF2731: + .string "TIMER_CCHP_PROT BITS(8,9)" +.LASF1497: + .string "OB_SPC REG16((OB) + 0x00U)" +.LASF330: + .string "GD32VF103_H " +.LASF563: + .string "ADC_CTL0_ICA BIT(10)" +.LASF497: + .string "FLASH_BASE ((uint32_t)0x08000000U)" +.LASF2860: + .string "TIMER_CH_3 ((uint16_t)0x0003U)" +.LASF68: + .string "__SCHAR_MAX__ 0x7f" +.LASF293: + .string "__GCC_ATOMIC_INT_LOCK_FREE 2" +.LASF258: + .string "__FLT32X_MAX__ 1.79769313486231570814527423731704357e+308F32x" +.LASF1098: + .string "CAN_FILTERMODE_MASK ((uint8_t)0x00U)" +.LASF3229: + .string "USART_FLAG_ORERR" +.LASF38: + .string "__CHAR16_TYPE__ short unsigned int" +.LASF2: + .string "__STDC_UTF_16__ 1" +.LASF2031: + .string "DBG_CTL_TIMER2_HOLD BIT(12)" +.LASF2190: + .string "RCU_APB1EN_TIMER1EN BIT(0)" +.LASF2912: + .string "TIMER_TRI_OUT_SRC_CH0 CTL1_MMC(3)" +.LASF2614: + .string "TIMER_CH3CV(timerx) REG32((timerx) + 0x40U)" +.LASF101: + .string "__UINT16_MAX__ 0xffff" +.LASF2434: + .string "RTC_ALRMH_ALRM BITS(0,15)" +.LASF1887: + .string "I2C_DATA(i2cx) REG32((i2cx) + 0x10U)" +.LASF774: + .string "RTC_OUTPUT_ALARM_PULSE ((uint16_t)0x0000U)" +.LASF1081: + .string "CAN_BT_BS2_8TQ ((uint8_t)0x07U)" +.LASF3210: + .string "RCU_GPIOCRST" +.LASF843: + .string "CAN_F27DATA0(canx) REG32((canx) + 0x318U)" +.LASF270: + .string "__FLT64X_MAX_EXP__ 16384" +.LASF2079: + .string "RCU_CFG0 REG32(RCU + 0x04U)" +.LASF779: + .string "BKP_INT_FLAG_TAMPER BKP_TPCS_TIF" +.LASF960: + .string "CAN_TMI_EFID BITS(3,31)" +.LASF1790: + .string "GPIO_MODE_OUT_OD ((uint8_t)0x14U)" +.LASF2742: + .string "TIMER_INT_CH0 TIMER_DMAINTEN_CH0IE" +.LASF1047: + .string "CAN_ERRN_6 ERR_ERRN(6U)" +.LASF3: + .string "__STDC_UTF_32__ 1" +.LASF1290: + .string "DMA_CHPADDR_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF360: + .string "__XSI_VISIBLE 0" +.LASF3136: + .string "USART_WL_9BIT CTL0_WL(1)" +.LASF2539: + .string "I2S_AUDIOSAMPLE_48K ((uint32_t)48000U)" +.LASF1833: + .string "GPIO_PIN_SOURCE_10 ((uint8_t)0x0AU)" +.LASF2437: + .string "RTC_INT_ALARM RTC_INTEN_ALRMIE" +.LASF2216: + .string "RCU_RSTSCK_IRC40KEN BIT(0)" +.LASF2419: + .string "RTC_INTEN_SCIE BIT(0)" +.LASF1558: + .string "OB_USER_USER_N ((uint32_t)0xFF000000U)" +.LASF3017: + .string "TIMER_REG(offset) _REG32(TIMER_CTRL_ADDR, offset)" +.LASF1060: + .string "CAN_BT_BS1_3TQ ((uint8_t)0x02U)" +.LASF616: + .string "ADC_DAUL_REGULAL_FOLLOWUP_SLOW CTL0_SYNCM(8)" +.LASF2111: + .string "RCU_CFG0_PLLSEL BIT(16)" +.LASF566: + .string "ADC_CTL0_DISNUM BITS(13,15)" +.LASF2175: + .string "RCU_AHBEN_FMCSPEN BIT(4)" +.LASF2418: + .string "RTC_ALRML REG32(RTC + 0x24U)" +.LASF694: + .string "ADC_OVERSAMPLING_SHIFT_1B OVSCR_OVSS(1)" +.LASF1011: + .string "BT_MODE(regval) (BITS(30,31) & ((uint32_t)(regval) << 30))" +.LASF6: + .string "__GNUC_MINOR__ 2" +.LASF234: + .string "__FLT64_HAS_INFINITY__ 1" +.LASF2354: + .string "RCU_PREDV0_DIV14 CFG1_PREDV0(13)" +.LASF1082: + .string "CAN_MAILBOX0 ((uint8_t)0x00U)" +.LASF155: + .string "__FLT_EPSILON__ 1.19209289550781250000000000000000000e-7F" +.LASF593: + .string "ADC_RDATA_ADC1RDTR BITS(16,31)" +.LASF2607: + .string "TIMER_CNT(timerx) REG32((timerx) + 0x24U)" +.LASF2243: + .string "RSTSCK_REG_OFFSET 0x24U" +.LASF3155: + .string "USART_DENR_ENABLE CLT2_DENR(1)" +.LASF152: + .string "__FLT_MAX__ 3.40282346638528859811704183484516925e+38F" +.LASF833: + .string "CAN_F17DATA0(canx) REG32((canx) + 0x2C8U)" +.LASF371: + .string "___int_least32_t_defined 1" +.LASF1389: + .string "EXTI_INTEN_INTEN18 BIT(18)" +.LASF1536: + .string "FMC_STAT_REG_OFFSET 0x0CU" +.LASF2176: + .string "RCU_AHBEN_CRCEN BIT(6)" +.LASF2526: + .string "SPI_PSC_4 CTL0_PSC(1)" +.LASF1413: + .string "EXTI_RTEN_RTEN4 BIT(4)" +.LASF41: + .string "__INT8_TYPE__ signed char" +.LASF557: + .string "ADC_CTL0_WDCHSEL BITS(0,4)" +.LASF1525: + .string "FMC_WP_WP BITS(0,31)" +.LASF1201: + .string "DAC_LFSR_BITS2_0 DAC_WAVE_BIT_WIDTH_3" +.LASF3019: + .string "N200_ECLIC_H " +.LASF2643: + .string "TIMER_SMCFG_SMC1 BIT(14)" +.LASF2826: + .string "TIMER_COUNTER_EDGE CTL0_CAM(0)" +.LASF1811: + .string "GPIO_EVENT_PIN_4 ((uint8_t)0x04U)" +.LASF2490: + .string "SPI_STAT_FERR BIT(8)" +.LASF489: + .string "INTMAX_C(x) __INTMAX_C(x)" +.LASF1628: + .string "GPIO_CTL0_MD4 BITS(16, 17)" +.LASF583: + .string "ADC_SAMPTX_SPTN BITS(0,2)" +.LASF450: + .string "UINT_LEAST32_MAX (__UINT_LEAST32_MAX__)" +.LASF1657: + .string "GPIO_ISTAT_ISTAT5 BIT(5)" +.LASF2740: + .string "TIMER_DMATB_DMATB BITS(0,15)" +.LASF3041: + .string "MSIP_HANDLER eclic_msip_handler" +.LASF2903: + .string "TIMER_SMCFG_TRGSEL_ITI3 SMCFG_TRGSEL(3)" +.LASF3159: + .string "USART_DENT_DISABLE CLT2_DENT(0)" +.LASF1378: + .string "EXTI_INTEN_INTEN7 BIT(7)" +.LASF1535: + .string "FMC_REG_OFFSET_GET(flag) ((uint32_t)(flag) >> 12)" +.LASF1050: + .string "CAN_NORMAL_MODE ((uint8_t)0x00U)" +.LASF383: + .string "signed +0" +.LASF1322: + .string "DMA_PRIORITY_ULTRA_HIGH CHCTL_PRIO(3U)" +.LASF1829: + .string "GPIO_PIN_SOURCE_6 ((uint8_t)0x06U)" +.LASF685: + .string "OVSCR_DRES(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF2815: + .string "TIMER_DMACFG_DMATC_17TRANSFER DMACFG_DMATC(16)" +.LASF1163: + .string "DAC1_L12DH_DAC1_DH BITS(4,15)" +.LASF1748: + .string "GPIO_LOCK_LKK BIT(16)" +.LASF107: + .string "__INT_LEAST16_MAX__ 0x7fff" +.LASF103: + .string "__UINT64_MAX__ 0xffffffffffffffffULL" +.LASF424: + .string "__int_least32_t_defined 1" +.LASF1249: + .string "DMA_CH4CNT(dmax) REG32((dmax) + 0x5CU)" +.LASF1245: + .string "DMA_CH3CNT(dmax) REG32((dmax) + 0x48U)" +.LASF1460: + .string "EXTI_SWIEV_SWIEV13 BIT(13)" +.LASF412: + .string "_INT32_T_DECLARED " +.LASF1539: + .string "UNLOCK_KEY0 ((uint32_t)0x45670123U)" +.LASF2683: + .string "TIMER_CHCTL0_CH0COMCTL BITS(4,6)" +.LASF411: + .string "__int16_t_defined 1" +.LASF2916: + .string "TIMER_TRI_OUT_SRC_O3CPRE CTL1_MMC(7)" +.LASF652: + .string "ISQ_IL(regval) (BITS(20,21) & ((uint32_t)(regval) << 20))" +.LASF1185: + .string "DAC_WAVE_MODE_TRIANGLE CTL_DWM(2)" +.LASF156: + .string "__FLT_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F" +.LASF2316: + .string "RCU_PLL_MUL29 (PLLMF_4 | CFG0_PLLMF(12))" +.LASF2625: + .string "TIMER_CTL0_CKDIV BITS(8,9)" +.LASF1041: + .string "CAN_ERRN_0 ERR_ERRN(0U)" +.LASF996: + .string "CAN_REG_VAL(canx,offset) (REG32((canx) + ((uint32_t)(offset) >> 6)))" +.LASF522: + .string "RCU_BASE (AHB1_BUS_BASE + 0x00009000U)" +.LASF696: + .string "ADC_OVERSAMPLING_SHIFT_3B OVSCR_OVSS(3)" +.LASF1109: + .string "CAN_INT_RFF1 CAN_INTEN_RFFIE1" +.LASF1044: + .string "CAN_ERRN_3 ERR_ERRN(3U)" +.LASF2202: + .string "RCU_APB1EN_UART4EN BIT(20)" +.LASF2183: + .string "RCU_APB2EN_PDEN BIT(5)" +.LASF3111: + .string "USART_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF3142: + .string "CTL1_LBLEN(regval) (BIT(5) & ((uint32_t)(regval) << 5))" +.LASF3257: + .string "usart_irda_mode_enable" +.LASF69: + .string "__SHRT_MAX__ 0x7fff" +.LASF2691: + .string "TIMER_CHCTL0_CH0CAPFLT BITS(4,7)" +.LASF1262: + .string "DMA_INTF_HTFIF BIT(2)" +.LASF2459: + .string "SPI_I2SPSC(spix) REG32((spix) + 0x20U)" +.LASF1989: + .string "I2C_DTCY_16_9 I2C_CKCFG_DTCY" +.LASF1425: + .string "EXTI_RTEN_RTEN16 BIT(16)" +.LASF2262: + .string "RCU_AHB_CKSYS_DIV16 CFG0_AHBPSC(11)" +.LASF2311: + .string "RCU_PLL_MUL24 (PLLMF_4 | CFG0_PLLMF(7))" +.LASF2433: + .string "RTC_CNTL_CNT BITS(0,15)" +.LASF1928: + .string "I2C_STAT0_LOSTARB BIT(9)" +.LASF2856: + .string "TIMER_BREAK_DISABLE ((uint16_t)0x0000U)" +.LASF558: + .string "ADC_CTL0_EOCIE BIT(5)" +.LASF72: + .string "__LONG_LONG_MAX__ 0x7fffffffffffffffLL" +.LASF2796: + .string "TIMER_DMACFG_DMATA_CCHP DMACFG_DMATA(17)" +.LASF83: + .string "__LONG_LONG_WIDTH__ 64" +.LASF2523: + .string "SPI_CK_PL_HIGH_PH_2EDGE (SPI_CTL0_CKPL | SPI_CTL0_CKPH)" +.LASF45: + .string "__UINT8_TYPE__ unsigned char" +.LASF2271: + .string "RCU_APB1_CKAHB_DIV8 CFG0_APB1PSC(6)" +.LASF105: + .string "__INT8_C(c) c" +.LASF398: + .string "__FAST16 " +.LASF2960: + .string "_T_PTRDIFF_ " +.LASF1077: + .string "CAN_BT_BS2_4TQ ((uint8_t)0x03U)" +.LASF805: + .string "CAN_RFIFOMDATA00(canx) REG32((canx) + 0x1B8U)" +.LASF3091: + .string "USART_CTL1_LBDIE BIT(6)" +.LASF129: + .string "__INT_FAST32_WIDTH__ 32" +.LASF1371: + .string "EXTI_INTEN_INTEN0 BIT(0)" +.LASF3234: + .string "usart_periph" +.LASF1912: + .string "I2C_CTL1_DMALST BIT(12)" +.LASF2598: + .string "TIMER_CTL0(timerx) REG32((timerx) + 0x00U)" +.LASF1590: + .string "OB_WP_27 ((uint32_t)0x08000000U)" +.LASF315: + .string "__riscv_a 2000000" +.LASF1203: + .string "DAC_LFSR_BITS4_0 DAC_WAVE_BIT_WIDTH_5" +.LASF500: + .string "DBG_BASE ((uint32_t)0xE0042000U)" +.LASF1110: + .string "CAN_INT_RFO1 CAN_INTEN_RFOIE1" +.LASF2070: + .string "PMU_LDO_NORMAL ((uint32_t)0x00000000U)" +.LASF2391: + .string "RCU_PLL2_MUL13 CFG1_PLL2MF(11)" +.LASF260: + .string "__FLT32X_MIN__ 2.22507385850720138309023271733240406e-308F32x" +.LASF243: + .string "__FLT128_MAX__ 1.18973149535723176508575932662800702e+4932F128" +.LASF3012: + .string "TIMER_MTIMECMP 0x8" +.LASF2440: + .string "RTC_INT_FLAG_ALARM RTC_CTL_ALRMIF" +.LASF949: + .string "CAN_ERR_TECNT BITS(16,23)" +.LASF75: + .string "__WINT_MAX__ 0xffffffffU" +.LASF534: + .string "ADC_SAMPT0(adcx) REG32((adcx) + 0x0CU)" +.LASF757: + .string "BKP_TPCS REG16((BKP) + 0x34U)" +.LASF3211: + .string "RCU_GPIODRST" +.LASF2597: + .string "TIMER6 (TIMER_BASE + 0x00001400U)" +.LASF825: + .string "CAN_F9DATA0(canx) REG32((canx) + 0x288U)" +.LASF98: + .string "__INT32_MAX__ 0x7fffffffL" +.LASF1909: + .string "I2C_CTL1_EVIE BIT(9)" +.LASF1533: + .string "FMC_BIT_POS0(val) (((uint32_t)(val) >> 6) & 0x1FU)" +.LASF1965: + .string "I2C_ACKPOS_CURRENT ((uint32_t)0x00000001U)" +.LASF1502: + .string "OB_WP3 REG16((OB) + 0x0EU)" +.LASF1434: + .string "EXTI_FTEN_FTEN6 BIT(6)" +.LASF863: + .string "CAN_F19DATA1(canx) REG32((canx) + 0x2DCU)" +.LASF2546: + .string "I2S_FRAMEFORMAT_DT32B_CH32B (I2SCTL_DTLEN(2) | SPI_I2SCTL_CHLEN)" +.LASF3065: + .string "USART_STAT_ORERR BIT(3)" +.LASF1635: + .string "GPIO_CTL0_CTL7 BITS(30, 31)" +.LASF2338: + .string "RCU_RTCSRC_IRC40K BDCTL_RTCSRC(2)" +.LASF2977: + .string "_BSD_SIZE_T_ " +.LASF2468: + .string "SPI_CTL0_RO BIT(10)" +.LASF1029: + .string "GET_RFIFOMDATA0_DB0(regval) GET_BITS((uint32_t)(regval), 0U, 7U)" +.LASF472: + .string "SIZE_MAX (__SIZE_MAX__)" +.LASF1311: + .string "DMA_PERIPHERAL_WIDTH_8BIT CHCTL_PWIDTH(0U)" +.LASF2075: + .string "WFE_CMD ((uint8_t)0x01U)" +.LASF42: + .string "__INT16_TYPE__ short int" +.LASF47: + .string "__UINT32_TYPE__ long unsigned int" +.LASF2445: + .string "RTC_FLAG_RSYN RTC_CTL_RSYNF" +.LASF2323: + .string "RCU_CKUSB_CKPLL_DIV2_5 CFG0_USBPSC(2)" +.LASF76: + .string "__WINT_MIN__ 0U" +.LASF1946: + .string "I2C_FMPCFG_FMPEN BIT(0)" +.LASF2624: + .string "TIMER_CTL0_ARSE BIT(7)" +.LASF429: + .string "__int_fast64_t_defined 1" +.LASF1938: + .string "I2C_STAT1_DEFSMB BIT(5)" +.LASF938: + .string "CAN_INTEN_WERRIE BIT(8)" +.LASF1691: + .string "GPIO_BOP_BOP7 BIT(7)" +.LASF2959: + .string "_PTRDIFF_T " +.LASF698: + .string "ADC_OVERSAMPLING_SHIFT_5B OVSCR_OVSS(5)" +.LASF2999: + .string "__INT_WCHAR_T_H " +.LASF2895: + .string "TIMER_IC_PSC_DIV1 ((uint16_t)0x0000U)" +.LASF2746: + .string "TIMER_INT_CMT TIMER_DMAINTEN_CMTIE" +.LASF577: + .string "ADC_CTL1_ETEIC BIT(15)" +.LASF1509: + .string "FMC_STAT_ENDF BIT(5)" +.LASF1287: + .string "DMA_CHMADDR(dma,channel) REG32(((dma) + 0x14U) + 0x14U * (uint32_t)(channel))" +.LASF2439: + .string "RTC_INT_FLAG_SECOND RTC_CTL_SCIF" +.LASF2866: + .string "TIMER_OC_POLARITY_LOW ((uint16_t)0x0002U)" +.LASF2336: + .string "RCU_RTCSRC_NONE BDCTL_RTCSRC(0)" +.LASF74: + .string "__WCHAR_MIN__ (-__WCHAR_MAX__ - 1)" +.LASF2035: + .string "DBG_CTL_I2C1_HOLD BIT(16)" +.LASF1336: + .string "EXMC_SNTCFG0 REG32(EXMC + 0x04U)" +.LASF422: + .string "__int_least8_t_defined 1" +.LASF951: + .string "CAN_BT_BAUDPSC BITS(0,9)" +.LASF1723: + .string "GPIO_BC_CR7 BIT(7)" +.LASF2668: + .string "TIMER_INTF_CH0OF BIT(9)" +.LASF1417: + .string "EXTI_RTEN_RTEN8 BIT(8)" +.LASF1191: + .string "DAC_WAVE_BIT_WIDTH_5 DWBW(4)" +.LASF245: + .string "__FLT128_MIN__ 3.36210314311209350626267781732175260e-4932F128" +.LASF609: + .string "ADC_DAUL_REGULAL_PARALLEL_INSERTED_PARALLEL CTL0_SYNCM(1)" +.LASF1005: + .string "RFIFO1_REG_OFFSET ((uint8_t)0x10U)" +.LASF2200: + .string "RCU_APB1EN_USART2EN BIT(18)" +.LASF138: + .string "__UINTPTR_MAX__ 0xffffffffU" +.LASF418: + .string "_INTMAX_T_DECLARED " +.LASF109: + .string "__INT_LEAST16_WIDTH__ 16" +.LASF3103: + .string "USART_CTL2_SCEN BIT(5)" +.LASF635: + .string "ADC0_1_EXTTRIG_INSERTED_T2_CH3 CTL1_ETSIC(4)" +.LASF2496: + .string "SPI_I2SCTL_DTLEN BITS(1,2)" +.LASF2533: + .string "I2S_AUDIOSAMPLE_8K ((uint32_t)8000U)" +.LASF955: + .string "CAN_BT_LCMOD BIT(30)" +.LASF1402: + .string "EXTI_EVEN_EVEN12 BIT(12)" +.LASF406: + .string "_INT8_T_DECLARED " +.LASF1137: + .string "DAC1_R8DH REG32(DAC + 0x1CU)" +.LASF2645: + .string "TIMER_DMAINTEN_UPIE BIT(0)" +.LASF1572: + .string "OB_WP_9 ((uint32_t)0x00000200U)" +.LASF2778: + .string "DMACFG_DMATA(regval) (BITS(0, 4) & ((uint32_t)(regval) << 0U))" +.LASF2618: + .string "TIMER_CTL0_CEN BIT(0)" +.LASF1632: + .string "GPIO_CTL0_MD6 BITS(24, 25)" +.LASF644: + .string "ADC_SAMPLETIME_41POINT5 SAMPTX_SPT(4)" +.LASF1178: + .string "DAC_TRIGGER_T1_TRGO CTL_DTSEL(4)" +.LASF1073: + .string "CAN_BT_BS1_16TQ ((uint8_t)0x0FU)" +.LASF2157: + .string "RCU_APB1RST_TIMER6RST BIT(5)" +.LASF1239: + .string "DMA_CH1MADDR(dmax) REG32((dmax) + 0x28U)" +.LASF1986: + .string "DATA_TRANS(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF690: + .string "ADC_OVERSAMPLING_ALL_CONVERT 0" +.LASF188: + .string "__LDBL_HAS_DENORM__ 1" +.LASF945: + .string "CAN_ERR_WERR BIT(0)" +.LASF2591: + .string "TIMER0 (TIMER_BASE + 0x00012C00U)" +.LASF1366: + .string "EXTI_EVEN REG32(EXTI + 0x04U)" +.LASF1091: + .string "CAN_SFID_MASK ((uint32_t)0x000007FFU)" +.LASF2141: + .string "RCU_APB2RST_AFRST BIT(0)" +.LASF161: + .string "__DBL_DIG__ 15" +.LASF3204: + .string "RCU_BKPIRST" +.LASF1878: + .string "GPIO_TIMER1ITI1_REMAP ((uint32_t)0x00202000U)" +.LASF2272: + .string "RCU_APB1_CKAHB_DIV16 CFG0_APB1PSC(7)" +.LASF1159: + .string "DAC0_R12DH_DAC0_DH BITS(0,11)" +.LASF3291: + .string "stblen" +.LASF183: + .string "__LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L" +.LASF764: + .string "BKP_TPCTL_TPAL BIT(1)" +.LASF1507: + .string "FMC_STAT_PGERR BIT(2)" +.LASF1620: + .string "GPIO_CTL0_MD0 BITS(0, 1)" +.LASF2925: + .string "TIMER_SLAVE_MODE_EXTERNAL0 SMCFG_SMC(7)" +.LASF3086: + .string "USART_CTL0_WM BIT(11)" +.LASF1994: + .string "FWDGT_CTL REG32((FWDGT) + 0x00000000U)" +.LASF2799: + .string "TIMER_DMACFG_DMATC_1TRANSFER DMACFG_DMATC(0)" +.LASF419: + .string "_UINTMAX_T_DECLARED " +.LASF1486: + .string "FMC FMC_BASE" +.LASF3190: + .string "RCU_TIMER4RST" +.LASF2787: + .string "TIMER_DMACFG_DMATA_CHCTL2 DMACFG_DMATA(8)" +.LASF1684: + .string "GPIO_BOP_BOP0 BIT(0)" +.LASF750: + .string "BKP_DATA37 REG16((BKP) + 0xACU)" +.LASF1941: + .string "I2C_STAT1_PECV BITS(8,15)" +.LASF1924: + .string "I2C_STAT0_STPDET BIT(4)" +.LASF903: + .string "CAN_TSTAT_MAL0 BIT(2)" +.LASF96: + .string "__INT8_MAX__ 0x7f" +.LASF1205: + .string "DAC_LFSR_BITS6_0 DAC_WAVE_BIT_WIDTH_7" +.LASF317: + .string "__riscv_zicsr 2000000" +.LASF2651: + .string "TIMER_DMAINTEN_TRGIE BIT(6)" +.LASF95: + .string "__SIG_ATOMIC_WIDTH__ 32" +.LASF700: + .string "ADC_OVERSAMPLING_SHIFT_7B OVSCR_OVSS(7)" +.LASF2308: + .string "RCU_PLL_MUL21 (PLLMF_4 | CFG0_PLLMF(4))" +.LASF2143: + .string "RCU_APB2RST_PBRST BIT(3)" +.LASF2655: + .string "TIMER_DMAINTEN_CH1DEN BIT(10)" +.LASF1676: + .string "GPIO_OCTL_OCTL8 BIT(8)" +.LASF998: + .string "CAN_REGIDX_BITS(regidx,bitpos0,bitpos1) (((uint32_t)(regidx) << 12) | ((uint32_t)(bitpos0) << 6) | (uint32_t)(bitpos1))" +.LASF1954: + .string "I2C_STAT0_REG_OFFSET 0x14U" +.LASF1716: + .string "GPIO_BC_CR0 BIT(0)" +.LASF3128: + .string "USART_PM_NONE CTL0_PM(0)" +.LASF1035: + .string "GET_RFIFOMDATA1_DB6(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF868: + .string "CAN_F24DATA1(canx) REG32((canx) + 0x304U)" +.LASF2707: + .string "TIMER_CHCTL1_CH3CAPFLT BITS(12,15)" +.LASF664: + .string "ADC_CHANNEL_3 ((uint8_t)0x03U)" +.LASF54: + .string "__UINT_LEAST16_TYPE__ short unsigned int" +.LASF1352: + .string "EXMC_SNTCFG(region) REG32(EXMC + 0x04U + 0x08U * (region))" +.LASF190: + .string "__LDBL_HAS_QUIET_NAN__ 1" +.LASF2330: + .string "RCU_CKOUT0SRC_CKPLL_DIV2 CFG0_CKOUT0SEL(7)" +.LASF1979: + .string "I2C_PEC_DISABLE ((uint32_t)0x00000000U)" +.LASF2055: + .string "PMU_CS_STBF BIT(1)" +.LASF2404: + .string "RCU_DEEPSLEEP_V_1_1 DSV_DSLPVS(1)" +.LASF2706: + .string "TIMER_CHCTL1_CH3CAPPSC BITS(10,11)" +.LASF1768: + .string "AFIO_EXTI1_SS BITS(4, 7)" +.LASF1775: + .string "AFIO_EXTI8_SS BITS(0, 3)" +.LASF2807: + .string "TIMER_DMACFG_DMATC_9TRANSFER DMACFG_DMATC(8)" +.LASF202: + .string "__FLT16_DENORM_MIN__ 5.96046447753906250000000000000000000e-8F16" +.LASF3233: + .string "usart_flag_enum" +.LASF2967: + .string "_PTRDIFF_T_DECLARED " +.LASF436: + .string "INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)" +.LASF965: + .string "CAN_TMDATA0_DB0 BITS(0,7)" +.LASF1470: + .string "EXTI_PD_PD4 BIT(4)" +.LASF2779: + .string "TIMER_DMACFG_DMATA_CTL0 DMACFG_DMATA(0)" +.LASF1207: + .string "DAC_LFSR_BITS8_0 DAC_WAVE_BIT_WIDTH_9" +.LASF2809: + .string "TIMER_DMACFG_DMATC_11TRANSFER DMACFG_DMATC(10)" +.LASF211: + .string "__FLT32_MAX_10_EXP__ 38" +.LASF1561: + .string "OB_WP2_WP2 ((uint32_t)0x00FF0000U)" +.LASF215: + .string "__FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32" +.LASF858: + .string "CAN_F14DATA1(canx) REG32((canx) + 0x2B4U)" +.LASF2832: + .string "TIMER_COUNTER_UP ((uint16_t)0x0000U)" +.LASF3175: + .string "short unsigned int" +.LASF742: + .string "BKP_DATA29 REG16((BKP) + 0x8CU)" +.LASF1323: + .string "DMA_MEMORY_TO_MEMORY_DISABLE ((uint32_t)0x00000000U)" +.LASF207: + .string "__FLT32_DIG__ 6" +.LASF901: + .string "CAN_TSTAT_MTF0 BIT(0)" +.LASF292: + .string "__GCC_ATOMIC_SHORT_LOCK_FREE 1" +.LASF1644: + .string "GPIO_CTL1_MD12 BITS(16, 17)" +.LASF1146: + .string "DAC_CTL_DTSEL0 BITS(3,5)" +.LASF2594: + .string "TIMER3 (TIMER_BASE + 0x00000800U)" +.LASF2792: + .string "TIMER_DMACFG_DMATA_CH0CV DMACFG_DMATA(13)" +.LASF3009: + .string "N200_TIMER_H " +.LASF1145: + .string "DAC_CTL_DTEN0 BIT(2)" +.LASF576: + .string "ADC_CTL1_ETSIC BITS(12,14)" +.LASF3011: + .string "TIMER_MSIP_size 0x4" +.LASF3195: + .string "RCU_SPI2RST" +.LASF2954: + .string "WWDGT_CFG_PSC_DIV8 CFG_PSC(3)" +.LASF3235: + .string "int_flag" +.LASF1863: + .string "GPIO_TIMER0_FULL_REMAP ((uint32_t)0x001600C0U)" +.LASF2749: + .string "TIMER_INT_FLAG_UP TIMER_INT_UP" +.LASF1321: + .string "DMA_PRIORITY_HIGH CHCTL_PRIO(2U)" +.LASF1547: + .string "OB_DEEPSLEEP_NRST ((uint8_t)0x02U)" +.LASF298: + .string "__GCC_HAVE_DWARF2_CFI_ASM 1" +.LASF897: + .string "CAN_STAT_TS BIT(8)" +.LASF1864: + .string "GPIO_TIMER1_PARTIAL_REMAP0 ((uint32_t)0x00180100U)" +.LASF1456: + .string "EXTI_SWIEV_SWIEV9 BIT(9)" +.LASF1669: + .string "GPIO_OCTL_OCTL1 BIT(1)" +.LASF2189: + .string "RCU_APB2EN_USART0EN BIT(14)" +.LASF1737: + .string "GPIO_LOCK_LK5 BIT(5)" +.LASF718: + .string "BKP_DATA5 REG16((BKP) + 0x18U)" +.LASF612: + .string "ADC_DAUL_INSERTED_PARALLEL_REGULAL_FOLLOWUP_SLOW CTL0_SYNCM(4)" +.LASF1275: + .string "DMA_CHXCTL_MNAGA BIT(7)" +.LASF2492: + .string "SPI_CRCPOLY_CRCPOLY BITS(0,15)" +.LASF2611: + .string "TIMER_CH0CV(timerx) REG32((timerx) + 0x34U)" +.LASF1901: + .string "I2C_CTL0_STOP BIT(9)" +.LASF399: + .string "__FAST32 " +.LASF1251: + .string "DMA_CH4MADDR(dmax) REG32((dmax) + 0x64U)" +.LASF1382: + .string "EXTI_INTEN_INTEN11 BIT(11)" +.LASF66: + .string "__UINTPTR_TYPE__ unsigned int" +.LASF730: + .string "BKP_DATA17 REG16((BKP) + 0x5CU)" +.LASF1706: + .string "GPIO_BOP_CR6 BIT(22)" +.LASF303: + .string "__riscv 1" +.LASF3304: + .string "D:\\\\rt-thread\\\\bsp\\\\gd32\\\\risc-v\\\\gd32vf103v-eval" +.LASF145: + .string "__FLT_MANT_DIG__ 24" +.LASF468: + .string "UINT_FAST64_MAX (__UINT_FAST64_MAX__)" +.LASF2630: + .string "TIMER_CTL1_TI0S BIT(7)" +.LASF3121: + .string "CTL0_REN(regval) (BIT(2) & ((uint32_t)(regval) << 2))" +.LASF775: + .string "RTC_OUTPUT_SECOND_PULSE ((uint16_t)0x0200U)" +.LASF824: + .string "CAN_F8DATA0(canx) REG32((canx) + 0x280U)" +.LASF3202: + .string "RCU_CAN0RST" +.LASF3110: + .string "USART_GP_GUAT BITS(8,15)" +.LASF2427: + .string "RTC_CTL_LWOFF BIT(5)" +.LASF1752: + .string "AFIO_PCF0_SPI0_REMAP BIT(0)" +.LASF1069: + .string "CAN_BT_BS1_12TQ ((uint8_t)0x0BU)" +.LASF657: + .string "ADC_INSERTED_CHANNEL_0 ((uint8_t)0x00U)" +.LASF1886: + .string "I2C_SADDR1(i2cx) REG32((i2cx) + 0x0CU)" +.LASF578: + .string "ADC_CTL1_ETSRC BITS(17,19)" +.LASF2859: + .string "TIMER_CH_2 ((uint16_t)0x0002U)" +.LASF1052: + .string "CAN_SILENT_MODE ((uint8_t)0x02U)" +.LASF2569: + .string "SPI_I2S_INT_FLAG_TBE ((uint8_t)0x00U)" +.LASF2847: + .string "TIMER_BREAK_POLARITY_HIGH ((uint16_t)TIMER_CCHP_BRKP)" +.LASF2622: + .string "TIMER_CTL0_DIR BIT(4)" +.LASF184: + .string "__LDBL_NORM_MAX__ 1.18973149535723176508575932662800702e+4932L" +.LASF376: + .string "signed" +.LASF975: + .string "CAN_RFIFOMI_EFID BITS(3,31)" +.LASF2737: + .string "TIMER_CCHP_POEN BIT(15)" +.LASF2508: + .string "SPI_BIDIRECTIONAL_TRANSMIT SPI_CTL0_BDOEN" +.LASF553: + .string "ADC_STAT_EOC BIT(1)" +.LASF354: + .string "__GNU_VISIBLE 0" +.LASF2139: + .string "RCU_INT_PLL2STBIC BIT(22)" +.LASF2891: + .string "TIMER_IC_POLARITY_BOTH_EDGE ((uint16_t)0x000AU)" +.LASF2379: + .string "RCU_PLL1_MUL12 CFG1_PLL1MF(10)" +.LASF1639: + .string "GPIO_CTL1_CTL9 BITS(6, 7)" +.LASF1442: + .string "EXTI_FTEN_FTEN14 BIT(14)" +.LASF1544: + .string "WS_WSCNT_2 WS_WSCNT(2)" +.LASF2634: + .string "TIMER_CTL1_ISO1N BIT(11)" +.LASF1252: + .string "DMA_CH5CTL(dmax) REG32((dmax) + 0x6CU)" +.LASF2179: + .string "RCU_APB2EN_AFEN BIT(0)" +.LASF1273: + .string "DMA_CHXCTL_CMEN BIT(5)" +.LASF2186: + .string "RCU_APB2EN_ADC1EN BIT(10)" +.LASF279: + .string "__FLT64X_HAS_INFINITY__ 1" +.LASF1181: + .string "DAC_TRIGGER_SOFTWARE CTL_DTSEL(7)" +.LASF1619: + .string "AFIO_PCF1 REG32(AFIO + 0x1CU)" +.LASF2350: + .string "RCU_PREDV0_DIV10 CFG1_PREDV0(9)" +.LASF510: + .string "SPI_BASE (APB1_BUS_BASE + 0x00003800U)" +.LASF2206: + .string "RCU_APB1EN_CAN1EN BIT(26)" +.LASF222: + .string "__FLT64_DIG__ 15" +.LASF2789: + .string "TIMER_DMACFG_DMATA_PSC DMACFG_DMATA(10)" +.LASF2846: + .string "TIMER_BREAK_POLARITY_LOW ((uint16_t)0x0000U)" +.LASF4: + .string "__STDC_HOSTED__ 1" +.LASF1365: + .string "EXTI_INTEN REG32(EXTI + 0x00U)" +.LASF676: + .string "ADC_CHANNEL_15 ((uint8_t)0x0FU)" +.LASF402: + .string "__LEAST16 \"h\"" +.LASF1541: + .string "WS_WSCNT(regval) (BITS(0,2) & ((uint32_t)(regval)))" +.LASF1449: + .string "EXTI_SWIEV_SWIEV2 BIT(2)" +.LASF809: + .string "CAN_RFIFOMDATA01(canx) REG32((canx) + 0x1C8U)" +.LASF2677: + .string "TIMER_SWEVG_CMTG BIT(5)" +.LASF2154: + .string "RCU_APB1RST_TIMER3RST BIT(2)" +.LASF1248: + .string "DMA_CH4CTL(dmax) REG32((dmax) + 0x58U)" +.LASF2004: + .string "FWDGT_PSC_DIV4 ((uint8_t)PSC_PSC(0))" +.LASF1991: + .string "I2C_ADDFORMAT_10BITS I2C_SADDR0_ADDFORMAT" +.LASF1198: + .string "DAC_WAVE_BIT_WIDTH_12 DWBW(11)" +.LASF1625: + .string "GPIO_CTL0_CTL2 BITS(10, 11)" +.LASF3039: + .string "ECLIC_CFG_NLBITS_MASK _AC(0x1E,UL)" +.LASF2245: + .string "BDCTL_REG_OFFSET 0x20U" +.LASF1215: + .string "DAC_TRIANGLE_AMPLITUDE_1 DAC_WAVE_BIT_WIDTH_1" +.LASF1319: + .string "DMA_PRIORITY_LOW CHCTL_PRIO(0U)" +.LASF3140: + .string "USART_STB_2BIT CTL1_STB(2)" +.LASF3164: + .string "USART_CTS_ENABLE CLT2_CTSEN(1)" +.LASF3073: + .string "USART_BAUD_FRADIV BITS(0,3)" +.LASF2620: + .string "TIMER_CTL0_UPS BIT(2)" +.LASF1788: + .string "GPIO_MODE_IPD ((uint8_t)0x28U)" +.LASF476: + .string "PTRDIFF_MIN (-PTRDIFF_MAX - 1)" +.LASF2180: + .string "RCU_APB2EN_PAEN BIT(2)" +.LASF2170: + .string "RCU_APB1RST_PMURST BIT(28)" +.LASF1355: + .string "EXMC_NOR_DATABUS_WIDTH_16B SNCTL_NRW(1)" +.LASF924: + .string "CAN_RFIFO0_RFF0 BIT(3)" +.LASF2032: + .string "DBG_CTL_TIMER3_HOLD BIT(13)" +.LASF850: + .string "CAN_F6DATA1(canx) REG32((canx) + 0x274U)" +.LASF1520: + .string "FMC_ADDR0_ADDR BITS(0,31)" +.LASF1825: + .string "GPIO_PIN_SOURCE_2 ((uint8_t)0x02U)" +.LASF550: + .string "ADC_RDATA(adcx) REG32((adcx) + 0x4CU)" +.LASF1678: + .string "GPIO_OCTL_OCTL10 BIT(10)" +.LASF2599: + .string "TIMER_CTL1(timerx) REG32((timerx) + 0x04U)" +.LASF2293: + .string "RCU_PLL_MUL6 CFG0_PLLMF(4)" +.LASF1895: + .string "I2C_CTL0_SMBSEL BIT(3)" +.LASF2753: + .string "TIMER_INT_FLAG_CH3 TIMER_INT_CH3" +.LASF1313: + .string "DMA_PERIPHERAL_WIDTH_32BIT CHCTL_PWIDTH(2U)" +.LASF3082: + .string "USART_CTL0_TBEIE BIT(7)" +.LASF2748: + .string "TIMER_INT_BRK TIMER_DMAINTEN_BRKIE" +.LASF1157: + .string "DAC_SWT_SWTR0 BIT(0)" +.LASF2893: + .string "TIMER_IC_SELECTION_INDIRECTTI ((uint16_t)0x0002U)" +.LASF888: + .string "CAN_CTL_ABOR BIT(6)" +.LASF26: + .string "__ORDER_LITTLE_ENDIAN__ 1234" +.LASF2471: + .string "SPI_CTL0_CRCEN BIT(13)" +.LASF1124: + .string "CRC_FDATA_FDATA BITS(0, 7)" +.LASF984: + .string "CAN_RFIFOMDATA1_DB4 BITS(0,7)" +.LASF819: + .string "CAN_F3DATA0(canx) REG32((canx) + 0x258U)" +.LASF1349: + .string "EXMC_SNTCFG_DSET BITS(8,15)" +.LASF3180: + .string "long long unsigned int" +.LASF2045: + .string "PMU_CTL REG32((PMU) + 0x00U)" +.LASF2265: + .string "RCU_AHB_CKSYS_DIV256 CFG0_AHBPSC(14)" +.LASF2616: + .string "TIMER_DMACFG(timerx) REG32((timerx) + 0x48U)" +.LASF171: + .string "__DBL_DENORM_MIN__ ((double)4.94065645841246544176568792868221372e-324L)" +.LASF987: + .string "CAN_RFIFOMDATA1_DB7 BITS(24,31)" +.LASF1314: + .string "CHCTL_MWIDTH(regval) (BITS(10,11) & ((uint32_t)(regval) << 10))" +.LASF857: + .string "CAN_F13DATA1(canx) REG32((canx) + 0x2ACU)" +.LASF1120: + .string "CRC_DATA REG32(CRC + 0x00U)" +.LASF474: + .string "SIG_ATOMIC_MAX (__STDINT_EXP(INT_MAX))" +.LASF2076: + .string "GD32VF103_RCU_H " +.LASF785: + .string "CAN_TSTAT(canx) REG32((canx) + 0x08U)" +.LASF2276: + .string "RCU_APB2_CKAHB_DIV4 CFG0_APB2PSC(5)" +.LASF1519: + .string "FMC_CTL_ENDIE BIT(12)" +.LASF1399: + .string "EXTI_EVEN_EVEN9 BIT(9)" +.LASF1281: + .string "DMA_CHXPADDR_PADDR BITS(0,31)" +.LASF900: + .string "CAN_STAT_RXL BIT(11)" +.LASF1540: + .string "UNLOCK_KEY1 ((uint32_t)0xCDEF89ABU)" +.LASF1971: + .string "I2C_GCEN_DISABLE ((uint32_t)0x00000000U)" +.LASF334: + .string "HXTAL_VALUE ((uint32_t)8000000)" +.LASF941: + .string "CAN_INTEN_ERRNIE BIT(11)" +.LASF725: + .string "BKP_DATA12 REG16((BKP) + 0x48U)" +.LASF3171: + .string "unsigned char" +.LASF1407: + .string "EXTI_EVEN_EVEN17 BIT(17)" +.LASF3139: + .string "USART_STB_0_5BIT CTL1_STB(1)" +.LASF2663: + .string "TIMER_INTF_CH2IF BIT(3)" +.LASF2515: + .string "SPI_FRAMESIZE_8BIT ((uint32_t)0x00000000U)" +.LASF248: + .string "__FLT128_HAS_DENORM__ 1" +.LASF1089: + .string "CAN_FIFO1 ((uint8_t)0x01U)" +.LASF332: + .string "__O volatile" +.LASF2838: + .string "TIMER_SP_MODE_SINGLE TIMER_CTL0_SPM" +.LASF787: + .string "CAN_RFIFO1(canx) REG32((canx) + 0x10U)" +.LASF3277: + .string "usart_mute_mode_disable" +.LASF1973: + .string "I2C_SRESET_RESET ((uint32_t)0x00000000U)" +.LASF2096: + .string "RCU_CTL_HXTALSTB BIT(17)" +.LASF1700: + .string "GPIO_BOP_CR0 BIT(16)" +.LASF1648: + .string "GPIO_CTL1_MD14 BITS(24, 25)" +.LASF3271: + .string "usart_lin_break_detection_length_config" +.LASF2715: + .string "TIMER_CHCTL2_CH1NP BIT(7)" +.LASF1661: + .string "GPIO_ISTAT_ISTAT9 BIT(9)" +.LASF1953: + .string "I2C_CTL1_REG_OFFSET 0x04U" +.LASF2760: + .string "TIMER_FLAG_CH2 TIMER_INTF_CH2IF" +.LASF2922: + .string "TIMER_SLAVE_MODE_RESTART SMCFG_SMC(4)" +.LASF2580: + .string "SPI_FLAG_RXORERR SPI_STAT_RXORERR" +.LASF2296: + .string "RCU_PLL_MUL9 CFG0_PLLMF(7)" +.LASF706: + .string "ADC_OVERSAMPLING_RATIO_MUL16 OVSCR_OVSR(3)" +.LASF1932: + .string "I2C_STAT0_SMBTO BIT(14)" +.LASF1697: + .string "GPIO_BOP_BOP13 BIT(13)" +.LASF1225: + .string "DAC_TRIANGLE_AMPLITUDE_2047 DAC_WAVE_BIT_WIDTH_11" +.LASF2865: + .string "TIMER_OC_POLARITY_HIGH ((uint16_t)0x0000U)" +.LASF1713: + .string "GPIO_BOP_CR13 BIT(29)" +.LASF2126: + .string "RCU_INT_IRC40KSTBIE BIT(8)" +.LASF1462: + .string "EXTI_SWIEV_SWIEV15 BIT(15)" +.LASF1855: + .string "GPIO_PIN_ALL BITS(0, 15)" +.LASF1736: + .string "GPIO_LOCK_LK4 BIT(4)" +.LASF1817: + .string "GPIO_EVENT_PIN_10 ((uint8_t)0x0AU)" +.LASF464: + .string "INT_FAST32_MAX (__INT_FAST32_MAX__)" +.LASF2710: + .string "TIMER_CHCTL2_CH0NEN BIT(2)" +.LASF1999: + .string "FWDGT_PSC_PSC BITS(0,2)" +.LASF2587: + .string "I2S_FLAG_RXORERR SPI_STAT_RXORERR" +.LASF2694: + .string "TIMER_CHCTL1_CH2MS BITS(0,1)" +.LASF1982: + .string "I2C_SALTSEND_ENABLE I2C_CTL0_SALT" +.LASF2544: + .string "I2S_FRAMEFORMAT_DT16B_CH32B (I2SCTL_DTLEN(0) | SPI_I2SCTL_CHLEN)" +.LASF2470: + .string "SPI_CTL0_CRCNT BIT(12)" +.LASF1847: + .string "GPIO_PIN_8 BIT(8)" +.LASF2904: + .string "TIMER_SMCFG_TRGSEL_CI0F_ED SMCFG_TRGSEL(4)" +.LASF904: + .string "CAN_TSTAT_MTE0 BIT(3)" +.LASF528: + .string "GD32VF103_ADC_H " +.LASF265: + .string "__FLT32X_HAS_QUIET_NAN__ 1" +.LASF842: + .string "CAN_F26DATA0(canx) REG32((canx) + 0x310U)" +.LASF348: + .string "__NEWLIB_MINOR__ 1" +.LASF1285: + .string "DMA_CHCNT(dma,channel) REG32(((dma) + 0x0CU) + 0x14U * (uint32_t)(channel))" +.LASF982: + .string "CAN_RFIFOMDATA0_DB2 BITS(16,23)" +.LASF2333: + .string "RCU_CKOUT0SRC_EXT1 CFG0_CKOUT0SEL(10)" +.LASF1392: + .string "EXTI_EVEN_EVEN2 BIT(2)" +.LASF471: + .string "UINTMAX_MAX (__UINTMAX_MAX__)" +.LASF579: + .string "ADC_CTL1_ETERC BIT(20)" +.LASF403: + .string "__LEAST32 \"l\"" +.LASF582: + .string "ADC_CTL1_TSVREN BIT(23)" +.LASF1508: + .string "FMC_STAT_WPERR BIT(4)" +.LASF271: + .string "__FLT64X_MAX_10_EXP__ 4932" +.LASF1369: + .string "EXTI_SWIEV REG32(EXTI + 0x10U)" +.LASF1510: + .string "FMC_CTL_PG BIT(0)" +.LASF2763: + .string "TIMER_FLAG_TRG TIMER_INTF_TRGIF" +.LASF3227: + .string "USART_FLAG_RBNE" +.LASF2592: + .string "TIMER1 (TIMER_BASE + 0x00000000U)" +.LASF3237: + .string "flagstatus" +.LASF1410: + .string "EXTI_RTEN_RTEN1 BIT(1)" +.LASF1039: + .string "GET_ERR_RECNT(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF2514: + .string "SPI_FRAMESIZE_16BIT SPI_CTL0_FF16" +.LASF285: + .string "__CHAR_UNSIGNED__ 1" +.LASF597: + .string "ADC_OVSCR_TOVS BIT(9)" +.LASF2733: + .string "TIMER_CCHP_ROS BIT(11)" +.LASF1643: + .string "GPIO_CTL1_CTL11 BITS(14, 15)" +.LASF1969: + .string "I2C_SCLSTRETCH_DISABLE I2C_CTL0_SS" +.LASF894: + .string "CAN_STAT_ERRIF BIT(2)" +.LASF1636: + .string "GPIO_CTL1_MD8 BITS(0, 1)" +.LASF1350: + .string "EXMC_SNTCFG_BUSLAT BITS(16,19)" +.LASF1315: + .string "DMA_MEMORY_WIDTH_8BIT CHCTL_MWIDTH(0U)" +.LASF2227: + .string "RCU_CFG1_PREDV1 BITS(4,7)" +.LASF3007: + .string "offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)" +.LASF2695: + .string "TIMER_CHCTL1_CH2COMFEN BIT(2)" +.LASF3014: + .string "TIMER_MTIME 0x0" +.LASF1608: + .string "GPIO_ISTAT(gpiox) REG32((gpiox) + 0x08U)" +.LASF487: + .string "INT64_C(x) __INT64_C(x)" +.LASF3102: + .string "USART_CTL2_NKEN BIT(4)" +.LASF972: + .string "CAN_TMDATA1_DB7 BITS(24,31)" +.LASF169: + .string "__DBL_MIN__ ((double)2.22507385850720138309023271733240406e-308L)" +.LASF2874: + .string "TIMER_OC_MODE_ACTIVE ((uint16_t)0x0010U)" +.LASF1295: + .string "DMA_INT_FLAG_HTF DMA_INTF_HTFIF" +.LASF832: + .string "CAN_F16DATA0(canx) REG32((canx) + 0x2C0U)" +.LASF299: + .string "__PRAGMA_REDEFINE_EXTNAME 1" +.LASF656: + .string "ADC_CHANNEL_DISCON_DISABLE ((uint8_t)0x04U)" +.LASF521: + .string "DMA_BASE (AHB1_BUS_BASE + 0x00008000U)" +.LASF1119: + .string "CRC CRC_BASE" +.LASF1395: + .string "EXTI_EVEN_EVEN5 BIT(5)" +.LASF849: + .string "CAN_F5DATA1(canx) REG32((canx) + 0x26CU)" +.LASF886: + .string "CAN_CTL_ARD BIT(4)" +.LASF3084: + .string "USART_CTL0_PM BIT(9)" +.LASF1640: + .string "GPIO_CTL1_MD10 BITS(8, 9)" +.LASF560: + .string "ADC_CTL0_EOICIE BIT(7)" +.LASF876: + .string "CAN_FDATA0(canx,bank) REG32((canx) + 0x240U + ((bank) * 0x8U) + 0x0U)" +.LASF915: + .string "CAN_TSTAT_MST2 BIT(23)" +.LASF2975: + .string "__SIZE_T " +.LASF2487: + .string "SPI_STAT_CONFERR BIT(5)" +.LASF1874: + .string "GPIO_CAN1_REMAP ((uint32_t)0x00200040U)" +.LASF2317: + .string "RCU_PLL_MUL30 (PLLMF_4 | CFG0_PLLMF(13))" +.LASF349: + .string "__NEWLIB_PATCHLEVEL__ 0" +.LASF3035: + .string "ECLIC_INT_ATTR_TRIG_POS 0x00" +.LASF1742: + .string "GPIO_LOCK_LK10 BIT(10)" +.LASF1840: + .string "GPIO_PIN_1 BIT(1)" +.LASF345: + .string "_NEWLIB_VERSION_H__ 1" +.LASF1346: + .string "EXMC_SNCTL_ASYNCWAIT BIT(15)" +.LASF1621: + .string "GPIO_CTL0_CTL0 BITS(2, 3)" +.LASF1101: + .string "CAN_FT_DATA ((uint32_t)0x00000000U)" +.LASF1836: + .string "GPIO_PIN_SOURCE_13 ((uint8_t)0x0DU)" +.LASF494: + .string "BIT(x) ((uint32_t)((uint32_t)0x01U<<(x)))" +.LASF291: + .string "__GCC_ATOMIC_WCHAR_T_LOCK_FREE 2" +.LASF2672: + .string "TIMER_SWEVG_UPG BIT(0)" +.LASF2100: + .string "RCU_CTL_PLLSTB BIT(25)" +.LASF2596: + .string "TIMER5 (TIMER_BASE + 0x00001000U)" +.LASF3068: + .string "USART_STAT_TC BIT(6)" +.LASF1488: + .string "FMC_WS REG32((FMC) + 0x00U)" +.LASF2741: + .string "TIMER_INT_UP TIMER_DMAINTEN_UPIE" +.LASF3162: + .string "USART_RTS_DISABLE CLT2_RTSEN(0)" +.LASF2573: + .string "SPI_INT_FLAG_CRCERR ((uint8_t)0x04U)" +.LASF1837: + .string "GPIO_PIN_SOURCE_14 ((uint8_t)0x0EU)" +.LASF1136: + .string "DAC1_L12DH REG32(DAC + 0x18U)" +.LASF797: + .string "CAN_TMDATA01(canx) REG32((canx) + 0x198U)" +.LASF2300: + .string "RCU_PLL_MUL13 CFG0_PLLMF(11)" +.LASF60: + .string "__INT_FAST64_TYPE__ long long int" +.LASF1150: + .string "DAC_CTL_DEN1 BIT(16)" +.LASF2652: + .string "TIMER_DMAINTEN_BRKIE BIT(7)" +.LASF2479: + .string "SPI_CTL1_ERRIE BIT(5)" +.LASF2934: + .string "TIMER_ETP_RISING ((uint32_t)0x00000000U)" +.LASF909: + .string "CAN_TSTAT_MTE1 BIT(11)" +.LASF197: + .string "__FLT16_DECIMAL_DIG__ 5" +.LASF499: + .string "OB_BASE ((uint32_t)0x1FFFF800U)" +.LASF1548: + .string "OB_DEEPSLEEP_RST ((uint8_t)0x00U)" +.LASF1616: + .string "AFIO_EXTISS1 REG32(AFIO + 0x0CU)" +.LASF2257: + .string "CFG0_AHBPSC(regval) (BITS(4,7) & ((uint32_t)(regval) << 4))" +.LASF247: + .string "__FLT128_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F128" +.LASF864: + .string "CAN_F20DATA1(canx) REG32((canx) + 0x2E4U)" +.LASF3223: + .string "USART_FLAG_CTS" +.LASF3090: + .string "USART_CTL1_LBLEN BIT(5)" +.LASF2074: + .string "WFI_CMD ((uint8_t)0x00U)" +.LASF2106: + .string "RCU_CFG0_SCSS BITS(2,3)" +.LASF22: + .string "__SIZEOF_LONG_DOUBLE__ 16" +.LASF21: + .string "__SIZEOF_DOUBLE__ 8" +.LASF149: + .string "__FLT_MAX_EXP__ 128" +.LASF816: + .string "CAN_F0DATA0(canx) REG32((canx) + 0x240U)" +.LASF2637: + .string "TIMER_CTL1_ISO3 BIT(14)" +.LASF620: + .string "ADC_CONTINUOUS_MODE ADC_CTL1_CTN" +.LASF2372: + .string "RCU_PREDV1_DIV15 CFG1_PREDV1(14)" +.LASF191: + .string "__FLT16_MANT_DIG__ 11" +.LASF2505: + .string "SPI_I2SPSC_MCKOEN BIT(9)" +.LASF144: + .string "__FLT_RADIX__ 2" +.LASF1832: + .string "GPIO_PIN_SOURCE_9 ((uint8_t)0x09U)" +.LASF3197: + .string "RCU_USART2RST" +.LASF2885: + .string "TIMER_OC_CLEAR_ENABLE ((uint16_t)0x0080U)" +.LASF1963: + .string "I2C_ACK_ENABLE ((uint32_t)0x00000001U)" +.LASF1814: + .string "GPIO_EVENT_PIN_7 ((uint8_t)0x07U)" +.LASF2194: + .string "RCU_APB1EN_TIMER5EN BIT(4)" +.LASF967: + .string "CAN_TMDATA0_DB2 BITS(16,23)" +.LASF732: + .string "BKP_DATA19 REG16((BKP) + 0x64U)" +.LASF111: + .string "__INT32_C(c) c ## L" +.LASF935: + .string "CAN_INTEN_RFNEIE1 BIT(4)" +.LASF2099: + .string "RCU_CTL_PLLEN BIT(24)" +.LASF1343: + .string "EXMC_SNCTL_NRWTPOL BIT(9)" +.LASF1947: + .string "I2C_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF1270: + .string "DMA_CHXCTL_HTFIE BIT(2)" +.LASF2791: + .string "TIMER_DMACFG_DMATA_CREP DMACFG_DMATA(12)" +.LASF519: + .string "GPIO_BASE (APB2_BUS_BASE + 0x00000800U)" +.LASF2906: + .string "TIMER_SMCFG_TRGSEL_CI1FE1 SMCFG_TRGSEL(6)" +.LASF1529: + .string "FMC_REG_VAL(offset) (REG32(FMC + ((uint32_t)(offset) >> 6)))" +.LASF82: + .string "__LONG_WIDTH__ 32" +.LASF2864: + .string "TIMER_CCXN_DISABLE ((uint16_t)0x0000U)" +.LASF738: + .string "BKP_DATA25 REG16((BKP) + 0x7CU)" +.LASF2647: + .string "TIMER_DMAINTEN_CH1IE BIT(2)" +.LASF3294: + .string "usart_parity_config" +.LASF2234: + .string "RCU_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF14: + .string "__ATOMIC_CONSUME 1" +.LASF2327: + .string "RCU_CKOUT0SRC_CKSYS CFG0_CKOUT0SEL(4)" +.LASF3031: + .string "ECLIC_INT_ATTR_OFFSET _AC(0x1002,UL)" +.LASF216: + .string "__FLT32_EPSILON__ 1.19209289550781250000000000000000000e-7F32" +.LASF2795: + .string "TIMER_DMACFG_DMATA_CH3CV DMACFG_DMATA(16)" +.LASF342: + .string "_STDINT_H " +.LASF1431: + .string "EXTI_FTEN_FTEN3 BIT(3)" +.LASF420: + .string "_INTPTR_T_DECLARED " +.LASF1126: + .string "GD32VF103_DAC_H " +.LASF2844: + .string "TIMER_IOS_STATE_ENABLE ((uint16_t)TIMER_CCHP_IOS)" +.LASF1885: + .string "I2C_SADDR0(i2cx) REG32((i2cx) + 0x08U)" +.LASF1025: + .string "GET_RFIFOMI_EFID(regval) GET_BITS((uint32_t)(regval), 3U, 31U)" +.LASF3238: + .string "usart_interrupt_flag_clear" +.LASF355: + .string "__ISO_C_VISIBLE 2011" +.LASF2383: + .string "RCU_PLL1_MUL16 CFG1_PLL1MF(14)" +.LASF1033: + .string "GET_RFIFOMDATA1_DB4(regval) GET_BITS((uint32_t)(regval), 0U, 7U)" +.LASF2649: + .string "TIMER_DMAINTEN_CH3IE BIT(4)" +.LASF2802: + .string "TIMER_DMACFG_DMATC_4TRANSFER DMACFG_DMATC(3)" +.LASF2375: + .string "RCU_PLL1_MUL8 CFG1_PLL1MF(6)" +.LASF3137: + .string "CTL1_STB(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF2781: + .string "TIMER_DMACFG_DMATA_SMCFG DMACFG_DMATA(2)" +.LASF1480: + .string "EXTI_PD_PD14 BIT(14)" +.LASF1214: + .string "DAC_ALIGN_8B_R DATA_ALIGN(2)" +.LASF883: + .string "CAN_CTL_SLPWMOD BIT(1)" +.LASF11: + .string "__ATOMIC_ACQUIRE 2" +.LASF2417: + .string "RTC_ALRMH REG32(RTC + 0x20U)" +.LASF1168: + .string "DACC_L12DH_DAC1_DH BITS(20,31)" +.LASF963: + .string "CAN_TMP_TSEN BIT(8)" +.LASF178: + .string "__LDBL_MIN_10_EXP__ (-4931)" +.LASF13: + .string "__ATOMIC_ACQ_REL 4" +.LASF3038: + .string "ECLIC_ADDR_BASE 0xd2000000" +.LASF1983: + .string "I2C_SALTSEND_DISABLE ((uint32_t)0x00000000U)" +.LASF2520: + .string "SPI_CK_PL_LOW_PH_1EDGE ((uint32_t)0x00000000U)" +.LASF213: + .string "__FLT32_MAX__ 3.40282346638528859811704183484516925e+38F32" +.LASF2378: + .string "RCU_PLL1_MUL11 CFG1_PLL1MF(9)" +.LASF726: + .string "BKP_DATA13 REG16((BKP) + 0x4CU)" +.LASF1879: + .string "GPIO_EXMC_NADV_REMAP ((uint32_t)0x80000400U)" +.LASF731: + .string "BKP_DATA18 REG16((BKP) + 0x60U)" +.LASF1009: + .string "BT_BS2(regval) (BITS(20,22) & ((uint32_t)(regval) << 20))" +.LASF2816: + .string "TIMER_DMACFG_DMATC_18TRANSFER DMACFG_DMATC(17)" +.LASF693: + .string "ADC_OVERSAMPLING_SHIFT_NONE OVSCR_OVSS(0)" +.LASF1993: + .string "FWDGT FWDGT_BASE" +.LASF1423: + .string "EXTI_RTEN_RTEN14 BIT(14)" +.LASF3177: + .string "__uint32_t" +.LASF116: + .string "__UINT_LEAST8_MAX__ 0xff" +.LASF1683: + .string "GPIO_OCTL_OCTL15 BIT(15)" +.LASF1934: + .string "I2C_STAT1_MASTER BIT(0)" +.LASF2940: + .string "WWDGT WWDGT_BASE" +.LASF3112: + .string "USART_REG_VAL(usartx,offset) (REG32((usartx) + (((uint32_t)(offset) & (0x0000FFFFU)) >> 6)))" +.LASF2322: + .string "RCU_CKUSB_CKPLL_DIV1 CFG0_USBPSC(1)" +.LASF475: + .string "PTRDIFF_MAX (__PTRDIFF_MAX__)" +.LASF931: + .string "CAN_INTEN_TMEIE BIT(0)" +.LASF1271: + .string "DMA_CHXCTL_ERRIE BIT(3)" +.LASF2420: + .string "RTC_INTEN_ALRMIE BIT(1)" +.LASF2339: + .string "RCU_RTCSRC_HXTAL_DIV_128 BDCTL_RTCSRC(3)" +.LASF2146: + .string "RCU_APB2RST_PERST BIT(6)" +.LASF256: + .string "__FLT32X_MAX_10_EXP__ 308" +.LASF1849: + .string "GPIO_PIN_10 BIT(10)" +.LASF877: + .string "CAN_FDATA1(canx,bank) REG32((canx) + 0x240U + ((bank) * 0x8U) + 0x4U)" +.LASF804: + .string "CAN_RFIFOMP0(canx) REG32((canx) + 0x1B4U)" +.LASF2168: + .string "RCU_APB1RST_CAN1RST BIT(26)" +.LASF3201: + .string "RCU_I2C1RST" +.LASF2924: + .string "TIMER_SLAVE_MODE_EVENT SMCFG_SMC(6)" +.LASF794: + .string "CAN_TMDATA10(canx) REG32((canx) + 0x18CU)" +.LASF162: + .string "__DBL_MIN_EXP__ (-1021)" +.LASF483: + .string "INT16_C(x) __INT16_C(x)" +.LASF10: + .string "__ATOMIC_SEQ_CST 5" +.LASF1647: + .string "GPIO_CTL1_CTL13 BITS(22, 23)" +.LASF1872: + .string "GPIO_PD01_REMAP ((uint32_t)0x00008000U)" +.LASF3231: + .string "USART_FLAG_FERR" +.LASF929: + .string "CAN_RFIFO1_RFO1 BIT(4)" +.LASF1605: + .string "AFIO AFIO_BASE" +.LASF1356: + .string "SNCTL_NRTP(regval) (BITS(2,3) & ((uint32_t)(regval) << 2))" +.LASF844: + .string "CAN_F0DATA1(canx) REG32((canx) + 0x244U)" +.LASF1720: + .string "GPIO_BC_CR4 BIT(4)" +.LASF1222: + .string "DAC_TRIANGLE_AMPLITUDE_255 DAC_WAVE_BIT_WIDTH_8" +.LASF2631: + .string "TIMER_CTL1_ISO0 BIT(8)" +.LASF2997: + .string "_WCHAR_T_H " +.LASF2033: + .string "DBG_CTL_CAN0_HOLD BIT(14)" +.LASF2920: + .string "TIMER_ENCODER_MODE1 SMCFG_SMC(2)" +.LASF250: + .string "__FLT128_HAS_QUIET_NAN__ 1" +.LASF2888: + .string "TIMER_UPDATECTL_CCUTRI TIMER_CTL1_CCUC" +.LASF545: + .string "ADC_ISQ(adcx) REG32((adcx) + 0x38U)" +.LASF2463: + .string "SPI_CTL0_PSC BITS(3,5)" +.LASF964: + .string "CAN_TMP_TS BITS(16,31)" +.LASF585: + .string "ADC_WDHT_WDHT BITS(0,11)" +.LASF2219: + .string "RCU_RSTSCK_EPRSTF BIT(26)" +.LASF2945: + .string "WWDGT_CTL_WDGTEN BIT(7)" +.LASF3067: + .string "USART_STAT_RBNE BIT(5)" +.LASF3129: + .string "USART_PM_EVEN CTL0_PM(2)" +.LASF2974: + .string "_T_SIZE " +.LASF482: + .string "UINT8_C(x) __UINT8_C(x)" +.LASF780: + .string "GD32VF103_CAN_H " +.LASF65: + .string "__INTPTR_TYPE__ int" +.LASF1970: + .string "I2C_GCEN_ENABLE I2C_CTL0_GCEN" +.LASF1772: + .string "AFIO_EXTI5_SS BITS(4, 7)" +.LASF2529: + .string "SPI_PSC_32 CTL0_PSC(4)" +.LASF509: + .string "FWDGT_BASE (APB1_BUS_BASE + 0x00003000U)" +.LASF647: + .string "ADC_SAMPLETIME_239POINT5 SAMPTX_SPT(7)" +.LASF3288: + .string "usart_disable" +.LASF1306: + .string "DMA_PERIPH_INCREASE_DISABLE ((uint8_t)0x00U)" +.LASF1784: + .string "GPIO_MODE_SET(n,mode) ((uint32_t)((uint32_t)(mode) << (4U * (n))))" +.LASF1153: + .string "DAC_CTL_DTSEL1 BITS(19,21)" +.LASF36: + .string "__INTMAX_TYPE__ long long int" +.LASF1304: + .string "DMA_PERIPHERAL_TO_MEMORY ((uint8_t)0x00U)" +.LASF765: + .string "BKP_TPCS_TER BIT(0)" +.LASF3013: + .string "TIMER_MTIMECMP_size 0x8" +.LASF2923: + .string "TIMER_SLAVE_MODE_PAUSE SMCFG_SMC(5)" +.LASF2628: + .string "TIMER_CTL1_DMAS BIT(3)" +.LASF496: + .string "GET_BITS(regval,start,end) (((regval) & BITS((start),(end))) >> (start))" +.LASF3200: + .string "RCU_I2C0RST" +.LASF2716: + .string "TIMER_CHCTL2_CH2EN BIT(8)" +.LASF826: + .string "CAN_F10DATA0(canx) REG32((canx) + 0x290U)" +.LASF2018: + .string "FWDGT_FLAG_RUD FWDGT_STAT_RUD" +.LASF2409: + .string "RTC_INTEN REG32(RTC + 0x00U)" +.LASF462: + .string "UINT_FAST16_MAX (__UINT_FAST16_MAX__)" +.LASF1591: + .string "OB_WP_28 ((uint32_t)0x10000000U)" +.LASF2384: + .string "RCU_PLL1_MUL20 CFG1_PLL1MF(15)" +.LASF2044: + .string "PMU PMU_BASE" +.LASF1997: + .string "FWDGT_STAT REG32((FWDGT) + 0x0000000CU)" +.LASF672: + .string "ADC_CHANNEL_11 ((uint8_t)0x0BU)" +.LASF1673: + .string "GPIO_OCTL_OCTL5 BIT(5)" +.LASF2717: + .string "TIMER_CHCTL2_CH2P BIT(9)" +.LASF811: + .string "CAN_FCTL(canx) REG32((canx) + 0x200U)" +.LASF1130: + .string "DAC_CTL REG32(DAC + 0x00U)" +.LASF1231: + .string "DMA_INTC(dmax) REG32((dmax) + 0x04U)" +.LASF2743: + .string "TIMER_INT_CH1 TIMER_DMAINTEN_CH1IE" +.LASF2835: + .string "TIMER_CKDIV_DIV1 CTL0_CKDIV(0)" +.LASF2879: + .string "TIMER_OC_MODE_PWM0 ((uint16_t)0x0060U)" +.LASF1495: + .string "FMC_WP REG32((FMC) + 0x20U)" +.LASF89: + .string "__INTMAX_C(c) c ## LL" +.LASF2047: + .string "PMU_CTL_LDOLP BIT(0)" +.LASF865: + .string "CAN_F21DATA1(canx) REG32((canx) + 0x2ECU)" +.LASF2987: + .string "__wchar_t__ " +.LASF2315: + .string "RCU_PLL_MUL28 (PLLMF_4 | CFG0_PLLMF(11))" +.LASF2399: + .string "RCU_I2S1SRC_CKPLL2_MUL2 RCU_CFG1_I2S1SEL" +.LASF302: + .string "__SIZEOF_PTRDIFF_T__ 4" +.LASF2828: + .string "TIMER_COUNTER_CENTER_UP CTL0_CAM(2)" +.LASF1517: + .string "FMC_CTL_OBWEN BIT(9)" +.LASF891: + .string "CAN_CTL_DFZ BIT(16)" +.LASF1400: + .string "EXTI_EVEN_EVEN10 BIT(10)" +.LASF980: + .string "CAN_RFIFOMDATA0_DB0 BITS(0,7)" +.LASF1677: + .string "GPIO_OCTL_OCTL9 BIT(9)" +.LASF910: + .string "CAN_TSTAT_MST1 BIT(15)" +.LASF2961: + .string "_T_PTRDIFF " +.LASF1861: + .string "GPIO_USART2_FULL_REMAP ((uint32_t)0x00140030U)" +.LASF645: + .string "ADC_SAMPLETIME_55POINT5 SAMPTX_SPT(5)" +.LASF503: + .string "APB2_BUS_BASE ((uint32_t)0x40010000U)" +.LASF535: + .string "ADC_SAMPT1(adcx) REG32((adcx) + 0x10U)" +.LASF2061: + .string "PMU_LVDT_2 CTL_LVDT(2)" +.LASF1741: + .string "GPIO_LOCK_LK9 BIT(9)" +.LASF2981: + .string "_SIZE_T_DECLARED " +.LASF2475: + .string "SPI_CTL1_DMATEN BIT(1)" +.LASF608: + .string "ADC_MODE_FREE CTL0_SYNCM(0)" +.LASF86: + .string "__PTRDIFF_WIDTH__ 32" +.LASF763: + .string "BKP_TPCTL_TPEN BIT(0)" +.LASF2349: + .string "RCU_PREDV0_DIV9 CFG1_PREDV0(8)" +.LASF2969: + .string "__size_t__ " +.LASF2589: + .string "I2S_FLAG_FERR SPI_STAT_FERR" +.LASF604: + .string "CTL0_DISNUM(regval) (BITS(13,15) & ((uint32_t)(regval) << 13))" +.LASF2837: + .string "TIMER_CKDIV_DIV4 CTL0_CKDIV(2)" +.LASF2353: + .string "RCU_PREDV0_DIV13 CFG1_PREDV0(12)" +.LASF776: + .string "TAMPER_PIN_ACTIVE_HIGH ((uint16_t)0x0000U)" +.LASF639: + .string "SAMPTX_SPT(regval) (BITS(0,2) & ((uint32_t)(regval) << 0))" +.LASF1220: + .string "DAC_TRIANGLE_AMPLITUDE_63 DAC_WAVE_BIT_WIDTH_6" +.LASF691: + .string "ADC_OVERSAMPLING_ONE_CONVERT 1" +.LASF3059: + .string "USART_CTL1(usartx) REG32((usartx) + (0x00000010U))" +.LASF1282: + .string "DMA_CHXMADDR_MADDR BITS(0,31)" +.LASF3276: + .string "wmethod" +.LASF1238: + .string "DMA_CH1PADDR(dmax) REG32((dmax) + 0x24U)" +.LASF1972: + .string "I2C_SRESET_SET I2C_CTL0_SRESET" +.LASF506: + .string "TIMER_BASE (APB1_BUS_BASE + 0x00000000U)" +.LASF943: + .string "CAN_INTEN_WIE BIT(16)" +.LASF1384: + .string "EXTI_INTEN_INTEN13 BIT(13)" +.LASF1819: + .string "GPIO_EVENT_PIN_12 ((uint8_t)0x0CU)" +.LASF2841: + .string "TIMER_UPDATE_SRC_GLOBAL ((uint32_t)0x00000000U)" +.LASF1452: + .string "EXTI_SWIEV_SWIEV5 BIT(5)" +.LASF466: + .string "INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1)" +.LASF1467: + .string "EXTI_PD_PD1 BIT(1)" +.LASF3023: + .string "_BITUL(x) (_AC(1,UL) << (x))" +.LASF1061: + .string "CAN_BT_BS1_4TQ ((uint8_t)0x03U)" +.LASF3214: + .string "RCU_ADC1RST" +.LASF1631: + .string "GPIO_CTL0_CTL5 BITS(22, 23)" +.LASF2024: + .string "DBG_CTL_SLP_HOLD BIT(0)" +.LASF1906: + .string "I2C_CTL0_SRESET BIT(15)" +.LASF160: + .string "__DBL_MANT_DIG__ 53" +.LASF2201: + .string "RCU_APB1EN_UART3EN BIT(19)" +.LASF667: + .string "ADC_CHANNEL_6 ((uint8_t)0x06U)" +.LASF916: + .string "CAN_TSTAT_NUM BITS(24,25)" +.LASF790: + .string "CAN_BT(canx) REG32((canx) + 0x1CU)" +.LASF1992: + .string "GD32VF103_FWDGT_H " +.LASF3199: + .string "RCU_UART4RST" +.LASF1148: + .string "DAC_CTL_DWBW0 BITS(8,11)" +.LASF1387: + .string "EXTI_INTEN_INTEN16 BIT(16)" +.LASF426: + .string "__int_fast8_t_defined 1" +.LASF621: + .string "CTL1_ETSRC(regval) (BITS(17,19) & ((uint32_t)(regval) << 17))" +.LASF2902: + .string "TIMER_SMCFG_TRGSEL_ITI2 SMCFG_TRGSEL(2)" +.LASF2932: + .string "TIMER_EXT_TRI_PSC_DIV8 SMCFG_ETPSC(3)" +.LASF2084: + .string "RCU_APB2EN REG32(RCU + 0x18U)" +.LASF2810: + .string "TIMER_DMACFG_DMATC_12TRANSFER DMACFG_DMATC(11)" +.LASF626: + .string "ADC0_1_EXTTRIG_REGULAR_T2_TRGO CTL1_ETSRC(4)" +.LASF1284: + .string "DMA_CHCTL(dma,channel) REG32(((dma) + 0x08U) + 0x14U * (uint32_t)(channel))" +.LASF118: + .string "__UINT_LEAST16_MAX__ 0xffff" +.LASF1612: + .string "GPIO_LOCK(gpiox) REG32((gpiox) + 0x18U)" +.LASF2588: + .string "I2S_FLAG_TRANS SPI_STAT_TRANS" +.LASF1026: + .string "GET_RFIFOMI_SFID(regval) GET_BITS((uint32_t)(regval), 21U, 31U)" +.LASF2958: + .string "_ANSI_STDDEF_H " +.LASF1747: + .string "GPIO_LOCK_LK15 BIT(15)" +.LASF441: + .string "UINT16_MAX (__UINT16_MAX__)" +.LASF61: + .string "__UINT_FAST8_TYPE__ unsigned int" +.LASF2989: + .string "_WCHAR_T " +.LASF2424: + .string "RTC_CTL_OVIF BIT(2)" +.LASF839: + .string "CAN_F23DATA0(canx) REG32((canx) + 0x3F8U)" +.LASF1859: + .string "GPIO_USART1_REMAP ((uint32_t)0x00000008U)" +.LASF2102: + .string "RCU_CTL_PLL1STB BIT(27)" +.LASF1734: + .string "GPIO_LOCK_LK2 BIT(2)" +.LASF2555: + .string "I2S_STD_PHILLIPS I2SCTL_I2SSTD(0)" +.LASF1583: + .string "OB_WP_20 ((uint32_t)0x00100000U)" +.LASF492: + .string "REG16(addr) (*(volatile uint16_t *)(uint32_t)(addr))" +.LASF1332: + .string "__SEV eclic_send_event" +.LASF1135: + .string "DAC1_R12DH REG32(DAC + 0x14U)" +.LASF838: + .string "CAN_F22DATA0(canx) REG32((canx) + 0x2F0U)" +.LASF3081: + .string "USART_CTL0_TCIE BIT(6)" +.LASF1021: + .string "TMDATA1_DB4(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF1880: + .string "GD32VF103_I2C_H " +.LASF2421: + .string "RTC_INTEN_OVIE BIT(2)" +.LASF2843: + .string "TIMER_ROS_STATE_DISABLE ((uint16_t)0x0000U)" +.LASF1351: + .string "EXMC_SNCTL(region) REG32(EXMC + 0x08U * (region))" +.LASF2385: + .string "CFG1_PLL2MF(regval) (BITS(12,15) & ((uint32_t)(regval) << 12))" +.LASF141: + .string "__FLT_EVAL_METHOD__ 0" +.LASF1727: + .string "GPIO_BC_CR11 BIT(11)" +.LASF1806: + .string "GPIO_PORT_SOURCE_GPIOE ((uint8_t)0x04U)" +.LASF3071: + .string "USART_STAT_CTSF BIT(9)" +.LASF2397: + .string "RCU_PREDV0SRC_CKPLL1 RCU_CFG1_PREDV0SEL" +.LASF2313: + .string "RCU_PLL_MUL26 (PLLMF_4 | CFG0_PLLMF(9))" +.LASF3272: + .string "lblen" +.LASF485: + .string "INT32_C(x) __INT32_C(x)" +.LASF264: + .string "__FLT32X_HAS_INFINITY__ 1" +.LASF1651: + .string "GPIO_CTL1_CTL15 BITS(30, 31)" +.LASF2530: + .string "SPI_PSC_64 CTL0_PSC(5)" +.LASF2919: + .string "TIMER_ENCODER_MODE0 SMCFG_SMC(1)" +.LASF333: + .string "__IO volatile" +.LASF711: + .string "GD32VF103_BKP_H " +.LASF2259: + .string "RCU_AHB_CKSYS_DIV2 CFG0_AHBPSC(8)" +.LASF2480: + .string "SPI_CTL1_RBNEIE BIT(6)" +.LASF78: + .string "__SIZE_MAX__ 0xffffffffU" +.LASF1687: + .string "GPIO_BOP_BOP3 BIT(3)" +.LASF2109: + .string "RCU_CFG0_APB2PSC BITS(11,13)" +.LASF2978: + .string "_SIZE_T_DEFINED_ " +.LASF737: + .string "BKP_DATA24 REG16((BKP) + 0x78U)" +.LASF1730: + .string "GPIO_BC_CR14 BIT(14)" +.LASF2164: + .string "RCU_APB1RST_UART4RST BIT(20)" +.LASF251: + .string "__FLT32X_MANT_DIG__ 53" +.LASF2610: + .string "TIMER_CREP(timerx) REG32((timerx) + 0x30U)" +.LASF2342: + .string "RCU_PREDV0_DIV2 CFG1_PREDV0(1)" +.LASF289: + .string "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 1" +.LASF1250: + .string "DMA_CH4PADDR(dmax) REG32((dmax) + 0x60U)" +.LASF2658: + .string "TIMER_DMAINTEN_CMTDEN BIT(13)" +.LASF353: + .string "__BSD_VISIBLE 0" +.LASF741: + .string "BKP_DATA28 REG16((BKP) + 0x88U)" +.LASF100: + .string "__UINT8_MAX__ 0xff" +.LASF3088: + .string "USART_CTL0_UEN BIT(13)" +.LASF3130: + .string "USART_PM_ODD CTL0_PM(3)" +.LASF9: + .string "__ATOMIC_RELAXED 0" +.LASF2282: + .string "RCU_CKADC_CKAPB2_DIV8 ((uint32_t)0x00000003U)" +.LASF653: + .string "ADC_REGULAR_CHANNEL ((uint8_t)0x01U)" +.LASF172: + .string "__DBL_HAS_DENORM__ 1" +.LASF268: + .string "__FLT64X_MIN_EXP__ (-16381)" +.LASF3168: + .string "USART_IRLP_NORMAL CTL2_IRLP(0)" +.LASF1180: + .string "DAC_TRIGGER_EXTI_9 CTL_DTSEL(6)" +.LASF1704: + .string "GPIO_BOP_CR4 BIT(20)" +.LASF1291: + .string "DMA_CHMADDR_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF1107: + .string "CAN_INT_RFO0 CAN_INTEN_RFOIE0" +.LASF2390: + .string "RCU_PLL2_MUL12 CFG1_PLL2MF(10)" +.LASF2605: + .string "TIMER_CHCTL1(timerx) REG32((timerx) + 0x1CU)" +.LASF2229: + .string "RCU_CFG1_PLL2MF BITS(12,15)" +.LASF3133: + .string "USART_WM_ADDR CTL0_WM(1)" +.LASF396: + .string "__INT64 \"ll\"" +.LASF1980: + .string "I2C_PECTRANS_ENABLE I2C_CTL0_PECTRANS" +.LASF3029: + .string "ECLIC_INT_IP_OFFSET _AC(0x1000,UL)" +.LASF1127: + .string "DAC DAC_BASE" +.LASF1474: + .string "EXTI_PD_PD8 BIT(8)" +.LASF976: + .string "CAN_RFIFOMI_SFID BITS(21,31)" +.LASF407: + .string "_UINT8_T_DECLARED " +.LASF994: + .string "CAN_FDATA_FD(regval) BIT(regval)" +.LASF2493: + .string "SPI_RCRC_RCRC BITS(0,15)" +.LASF154: + .string "__FLT_MIN__ 1.17549435082228750796873653722224568e-38F" +.LASF1078: + .string "CAN_BT_BS2_5TQ ((uint8_t)0x04U)" +.LASF1264: + .string "DMA_INTC_GIFC BIT(0)" +.LASF2572: + .string "SPI_INT_FLAG_CONFERR ((uint8_t)0x03U)" +.LASF2036: + .string "DBG_CTL_TIMER4_HOLD BIT(18)" +.LASF2509: + .string "SPI_BIDIRECTIONAL_RECEIVE (~SPI_CTL0_BDOEN)" +.LASF1550: + .string "OB_STDBY_RST ((uint8_t)0x00U)" +.LASF2208: + .string "RCU_APB1EN_PMUEN BIT(28)" +.LASF249: + .string "__FLT128_HAS_INFINITY__ 1" +.LASF729: + .string "BKP_DATA16 REG16((BKP) + 0x58U)" +.LASF660: + .string "ADC_INSERTED_CHANNEL_3 ((uint8_t)0x03U)" +.LASF2725: + .string "TIMER_CREP_CREP BITS(0,7)" +.LASF1440: + .string "EXTI_FTEN_FTEN12 BIT(12)" +.LASF719: + .string "BKP_DATA6 REG16((BKP) + 0x1CU)" +.LASF1015: + .string "TMI_EFID(regval) (BITS(3,31) & ((uint32_t)(regval) << 3))" +.LASF584: + .string "ADC_IOFFX_IOFF BITS(0,11)" +.LASF1936: + .string "I2C_STAT1_TR BIT(2)" +.LASF2812: + .string "TIMER_DMACFG_DMATC_14TRANSFER DMACFG_DMATC(13)" +.LASF803: + .string "CAN_RFIFOMI0(canx) REG32((canx) + 0x1B0U)" +.LASF447: + .string "UINT32_MAX (__UINT32_MAX__)" +.LASF1307: + .string "DMA_PERIPH_INCREASE_ENABLE ((uint8_t)0x01U)" +.LASF1006: + .string "ERR_REG_OFFSET ((uint8_t)0x18U)" +.LASF1998: + .string "FWDGT_CTL_CMD BITS(0,15)" +.LASF3209: + .string "RCU_GPIOBRST" +.LASF352: + .string "__ATFILE_VISIBLE 0" +.LASF610: + .string "ADC_DAUL_REGULAL_PARALLEL_INSERTED_ROTATION CTL0_SYNCM(2)" +.LASF740: + .string "BKP_DATA27 REG16((BKP) + 0x84U)" +.LASF218: + .string "__FLT32_HAS_DENORM__ 1" +.LASF301: + .string "__SIZEOF_WINT_T__ 4" +.LASF2880: + .string "TIMER_OC_MODE_PWM1 ((uint16_t)0x0070U)" +.LASF991: + .string "CAN_FSCFG_FS(regval) BIT(regval)" +.LASF1586: + .string "OB_WP_23 ((uint32_t)0x00800000U)" +.LASF559: + .string "ADC_CTL0_WDEIE BIT(6)" +.LASF233: + .string "__FLT64_HAS_DENORM__ 1" +.LASF561: + .string "ADC_CTL0_SM BIT(8)" +.LASF1010: + .string "BT_SJW(regval) (BITS(24,25) & ((uint32_t)(regval) << 24))" +.LASF728: + .string "BKP_DATA15 REG16((BKP) + 0x54U)" +.LASF555: + .string "ADC_STAT_STIC BIT(3)" +.LASF2446: + .string "RTC_FLAG_LWOF RTC_CTL_LWOFF" +.LASF746: + .string "BKP_DATA33 REG16((BKP) + 0x9CU)" +.LASF818: + .string "CAN_F2DATA0(canx) REG32((canx) + 0x250U)" +.LASF2150: + .string "RCU_APB2RST_SPI0RST BIT(12)" +.LASF3037: + .string "ECLIC_INT_CTRL_OFFSET _AC(0x1003,UL)" +.LASF335: + .string "HXTAL_VALUE_25M HXTAL_VALUE" +.LASF1858: + .string "GPIO_USART0_REMAP ((uint32_t)0x00000004U)" +.LASF2430: + .string "RTC_DIVH_DIV BITS(0,3)" +.LASF599: + .string "ADC_FLAG_WDE ADC_STAT_WDE" +.LASF157: + .string "__FLT_HAS_DENORM__ 1" +.LASF1916: + .string "I2C_SADDR0_ADDFORMAT BIT(15)" +.LASF469: + .string "INTMAX_MAX (__INTMAX_MAX__)" +.LASF391: + .string "_INTPTR_EQ_INT " +.LASF2739: + .string "TIMER_DMACFG_DMATC BITS(8,12)" +.LASF201: + .string "__FLT16_EPSILON__ 9.76562500000000000000000000000000000e-4F16" +.LASF2344: + .string "RCU_PREDV0_DIV4 CFG1_PREDV0(3)" +.LASF2138: + .string "RCU_INT_PLL1STBIC BIT(21)" +.LASF898: + .string "CAN_STAT_RS BIT(9)" +.LASF1599: + .string "GD32VF103_GPIO_H " +.LASF3258: + .string "usart_smartcard_mode_nack_disable" +.LASF1828: + .string "GPIO_PIN_SOURCE_5 ((uint8_t)0x05U)" +.LASF2995: + .string "_WCHAR_T_DEFINED_ " +.LASF2332: + .string "RCU_CKOUT0SRC_CKPLL2_DIV2 CFG0_CKOUT0SEL(9)" +.LASF1810: + .string "GPIO_EVENT_PIN_3 ((uint8_t)0x03U)" +.LASF2006: + .string "FWDGT_PSC_DIV16 ((uint8_t)PSC_PSC(2))" +.LASF692: + .string "OVSCR_OVSS(regval) (BITS(5,8) & ((uint32_t)(regval) << 5))" +.LASF316: + .string "__riscv_c 2000000" +.LASF3215: + .string "RCU_TIMER0RST" +.LASF1414: + .string "EXTI_RTEN_RTEN5 BIT(5)" +.LASF2196: + .string "RCU_APB1EN_WWDGTEN BIT(11)" +.LASF3008: + .string "_GCC_MAX_ALIGN_T " +.LASF2786: + .string "TIMER_DMACFG_DMATA_CHCTL1 DMACFG_DMATA(7)" +.LASF1490: + .string "FMC_OBKEY REG32((FMC) + 0x08U)" +.LASF2813: + .string "TIMER_DMACFG_DMATC_15TRANSFER DMACFG_DMATC(14)" +.LASF380: + .string "__int20" +.LASF2899: + .string "SMCFG_TRGSEL(regval) (BITS(4, 6) & ((uint32_t)(regval) << 4U))" +.LASF2063: + .string "PMU_LVDT_4 CTL_LVDT(4)" +.LASF734: + .string "BKP_DATA21 REG16((BKP) + 0x6CU)" +.LASF739: + .string "BKP_DATA26 REG16((BKP) + 0x80U)" +.LASF313: + .string "__riscv_i 2000000" +.LASF1763: + .string "AFIO_PCF0_TIMER4CH3_IREMAP BIT(16)" +.LASF2396: + .string "RCU_PREDV0SRC_HXTAL ((uint32_t)0x00000000U)" +.LASF798: + .string "CAN_TMDATA11(canx) REG32((canx) + 0x19CU)" +.LASF1325: + .string "DMA_CHANNEL_CNT_MASK DMA_CHXCNT_CNT" +.LASF2191: + .string "RCU_APB1EN_TIMER2EN BIT(1)" +.LASF2407: + .string "GD32VF103_RTC_H " +.LASF1086: + .string "CAN_FF_STANDARD ((uint32_t)0x00000000U)" +.LASF1658: + .string "GPIO_ISTAT_ISTAT6 BIT(6)" +.LASF2068: + .string "PMU_FLAG_STANDBY PMU_CS_STBF" +.LASF1253: + .string "DMA_CH5CNT(dmax) REG32((dmax) + 0x70U)" +.LASF79: + .string "__SCHAR_WIDTH__ 8" +.LASF2464: + .string "SPI_CTL0_SPIEN BIT(6)" +.LASF591: + .string "ADC_IDATAX_IDATAN BITS(0,15)" +.LASF2718: + .string "TIMER_CHCTL2_CH2NEN BIT(10)" +.LASF2696: + .string "TIMER_CHCTL1_CH2COMSEN BIT(3)" +.LASF1139: + .string "DACC_L12DH REG32(DAC + 0x24U)" +.LASF1379: + .string "EXTI_INTEN_INTEN8 BIT(8)" +.LASF1844: + .string "GPIO_PIN_5 BIT(5)" +.LASF2702: + .string "TIMER_CHCTL1_CH3COMCTL BITS(12,14)" +.LASF3125: + .string "USART_TRANSMIT_ENABLE CTL0_TEN(1)" +.LASF523: + .string "FMC_BASE (AHB1_BUS_BASE + 0x0000A000U)" +.LASF2489: + .string "SPI_STAT_TRANS BIT(7)" +.LASF905: + .string "CAN_TSTAT_MST0 BIT(7)" +.LASF2447: + .string "GD32VF103_SPI_H " +.LASF30: + .string "__FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__" +.LASF2125: + .string "RCU_INT_CKMIF BIT(7)" +.LASF1118: + .string "GD32VF103_CRC_H " +.LASF752: + .string "BKP_DATA39 REG16((BKP) + 0xB4U)" +.LASF1581: + .string "OB_WP_18 ((uint32_t)0x00040000U)" +.LASF1194: + .string "DAC_WAVE_BIT_WIDTH_8 DWBW(7)" +.LASF1279: + .string "DMA_CHXCTL_M2M BIT(14)" +.LASF722: + .string "BKP_DATA9 REG16((BKP) + 0x28U)" +.LASF1918: + .string "I2C_SADDR1_ADDRESS2 BITS(1,7)" +.LASF3172: + .string "short int" +.LASF2581: + .string "SPI_FLAG_TRANS SPI_STAT_TRANS" +.LASF1298: + .string "DMA_FLAG_FTF DMA_INTF_FTFIF" +.LASF1926: + .string "I2C_STAT0_TBE BIT(7)" +.LASF1031: + .string "GET_RFIFOMDATA0_DB2(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF1575: + .string "OB_WP_12 ((uint32_t)0x00001000U)" +.LASF1405: + .string "EXTI_EVEN_EVEN15 BIT(15)" +.LASF3002: + .string "_BSD_WCHAR_T_" +.LASF2994: + .string "_BSD_WCHAR_T_ " +.LASF2095: + .string "RCU_CTL_HXTALEN BIT(16)" +.LASF1809: + .string "GPIO_EVENT_PIN_2 ((uint8_t)0x02U)" +.LASF2187: + .string "RCU_APB2EN_TIMER0EN BIT(11)" +.LASF208: + .string "__FLT32_MIN_EXP__ (-125)" +.LASF1210: + .string "DAC_LFSR_BITS11_0 DAC_WAVE_BIT_WIDTH_12" +.LASF2970: + .string "__SIZE_T__ " +.LASF1984: + .string "I2C_ARP_ENABLE I2C_CTL0_ARPEN" +.LASF2000: + .string "FWDGT_RLD_RLD BITS(0,11)" +.LASF1867: + .string "GPIO_TIMER2_PARTIAL_REMAP ((uint32_t)0x001A0800U)" +.LASF2210: + .string "RCU_BDCTL_LXTALEN BIT(0)" +.LASF2159: + .string "RCU_APB1RST_SPI1RST BIT(14)" +.LASF2346: + .string "RCU_PREDV0_DIV6 CFG1_PREDV0(5)" +.LASF2184: + .string "RCU_APB2EN_PEEN BIT(6)" +.LASF1801: + .string "GPIO_EVENT_PORT_GPIOE ((uint8_t)0x04U)" +.LASF3055: + .string "USART_STAT(usartx) REG32((usartx) + (0x00000000U))" +.LASF2485: + .string "SPI_STAT_TXURERR BIT(3)" +.LASF1334: + .string "EXMC (EXMC_BASE)" +.LASF1051: + .string "CAN_LOOPBACK_MODE ((uint8_t)0x01U)" +.LASF385: + .string "char +0" +.LASF1711: + .string "GPIO_BOP_CR11 BIT(27)" +.LASF1155: + .string "DAC_CTL_DWBW1 BITS(24,27)" +.LASF1008: + .string "BT_BS1(regval) (BITS(16,19) & ((uint32_t)(regval) << 16))" +.LASF445: + .string "INT32_MIN (-__INT32_MAX__ - 1)" +.LASF2657: + .string "TIMER_DMAINTEN_CH3DEN BIT(12)" +.LASF2015: + .string "FWDGT_PSC_TIMEOUT ((uint32_t)0x000FFFFFU)" +.LASF751: + .string "BKP_DATA38 REG16((BKP) + 0xB0U)" +.LASF513: + .string "CAN_BASE (APB1_BUS_BASE + 0x00006400U)" +.LASF2073: + .string "PMU_FLAG_RESET_STANDBY ((uint8_t)0x01U)" +.LASF2361: + .string "RCU_PREDV1_DIV4 CFG1_PREDV1(3)" +.LASF2473: + .string "SPI_CTL0_BDEN BIT(15)" +.LASF2944: + .string "WWDGT_CTL_CNT BITS(0,6)" +.LASF1412: + .string "EXTI_RTEN_RTEN3 BIT(3)" +.LASF2231: + .string "RCU_CFG1_I2S1SEL BIT(17)" +.LASF3255: + .string "usart_prescaler_config" +.LASF1494: + .string "FMC_OBSTAT REG32((FMC) + 0x1CU)" +.LASF934: + .string "CAN_INTEN_RFOIE0 BIT(3)" +.LASF2861: + .string "TIMER_CCX_ENABLE ((uint16_t)0x0001U)" +.LASF1662: + .string "GPIO_ISTAT_ISTAT10 BIT(10)" +.LASF568: + .string "ADC_CTL0_IWDEN BIT(22)" +.LASF2862: + .string "TIMER_CCX_DISABLE ((uint16_t)0x0000U)" +.LASF1372: + .string "EXTI_INTEN_INTEN1 BIT(1)" +.LASF370: + .string "___int_least16_t_defined 1" +.LASF703: + .string "ADC_OVERSAMPLING_RATIO_MUL2 OVSCR_OVSR(0)" +.LASF15: + .string "__FINITE_MATH_ONLY__ 0" +.LASF1259: + .string "DMA_CH6MADDR(dmax) REG32((dmax) + 0x8CU)" +.LASF3078: + .string "USART_CTL0_TEN BIT(3)" +.LASF2359: + .string "RCU_PREDV1_DIV2 CFG1_PREDV1(1)" +.LASF3033: + .string "ECLIC_INT_ATTR_TRIG_LEVEL 0x00" +.LASF2875: + .string "TIMER_OC_MODE_INACTIVE ((uint16_t)0x0020U)" +.LASF1514: + .string "FMC_CTL_OBER BIT(5)" +.LASF1074: + .string "CAN_BT_BS2_1TQ ((uint8_t)0x00U)" +.LASF808: + .string "CAN_RFIFOMP1(canx) REG32((canx) + 0x1C4U)" +.LASF2056: + .string "PMU_CS_LVDF BIT(2)" +.LASF926: + .string "CAN_RFIFO0_RFD0 BIT(5)" +.LASF3135: + .string "USART_WL_8BIT CTL0_WL(0)" +.LASF3032: + .string "ECLIC_INT_ATTR_SHV 0x01" +.LASF3141: + .string "USART_STB_1_5BIT CTL1_STB(3)" +.LASF212: + .string "__FLT32_DECIMAL_DIG__ 9" +.LASF3001: + .string "_WCHAR_T_DECLARED " +.LASF3301: + .string "udiv" +.LASF2805: + .string "TIMER_DMACFG_DMATC_7TRANSFER DMACFG_DMATC(6)" +.LASF3259: + .string "usart_smartcard_mode_nack_enable" +.LASF562: + .string "ADC_CTL0_WDSC BIT(9)" +.LASF705: + .string "ADC_OVERSAMPLING_RATIO_MUL8 OVSCR_OVSR(2)" +.LASF367: + .string "___int32_t_defined 1" +.LASF3260: + .string "usart_smartcard_mode_disable" +.LASF2091: + .string "RCU_CTL_IRC8MEN BIT(0)" +.LASF1182: + .string "CTL_DWM(regval) (BITS(6,7) & ((uint32_t)(regval) << 6))" +.LASF168: + .string "__DBL_NORM_MAX__ ((double)1.79769313486231570814527423731704357e+308L)" +.LASF230: + .string "__FLT64_MIN__ 2.22507385850720138309023271733240406e-308F64" +.LASF634: + .string "ADC0_1_EXTTRIG_INSERTED_T1_CH0 CTL1_ETSIC(3)" +.LASF1622: + .string "GPIO_CTL0_MD1 BITS(4, 5)" +.LASF3074: + .string "USART_BAUD_INTDIV BITS(4,15)" +.LASF246: + .string "__FLT128_EPSILON__ 1.92592994438723585305597794258492732e-34F128" +.LASF2857: + .string "TIMER_CH_0 ((uint16_t)0x0000U)" +.LASF2165: + .string "RCU_APB1RST_I2C0RST BIT(21)" +.LASF2284: + .string "RCU_CKADC_CKAPB2_DIV16 ((uint32_t)0x00000007U)" +.LASF1489: + .string "FMC_KEY REG32((FMC) + 0x04U)" +.LASF2137: + .string "RCU_INT_PLLSTBIC BIT(20)" +.LASF1770: + .string "AFIO_EXTI3_SS BITS(12, 15)" +.LASF2894: + .string "TIMER_IC_SELECTION_ITS ((uint16_t)0x0003U)" +.LASF3236: + .string "intenable" +.LASF1614: + .string "AFIO_PCF0 REG32(AFIO + 0x04U)" +.LASF633: + .string "ADC0_1_EXTTRIG_INSERTED_T1_TRGO CTL1_ETSIC(2)" +.LASF493: + .string "REG8(addr) (*(volatile uint8_t *)(uint32_t)(addr))" +.LASF907: + .string "CAN_TSTAT_MTFNERR1 BIT(9)" +.LASF2013: + .string "FWDGT_KEY_RELOAD ((uint16_t)0xAAAAU)" +.LASF1692: + .string "GPIO_BOP_BOP8 BIT(8)" +.LASF2510: + .string "SPI_TRANSMODE_FULLDUPLEX ((uint32_t)0x00000000U)" +.LASF2633: + .string "TIMER_CTL1_ISO1 BIT(10)" +.LASF2921: + .string "TIMER_ENCODER_MODE2 SMCFG_SMC(3)" +.LASF423: + .string "__int_least16_t_defined 1" +.LASF1169: + .string "DACC_R8DH_DAC0_DH BITS(0,7)" +.LASF2348: + .string "RCU_PREDV0_DIV8 CFG1_PREDV0(7)" +.LASF2992: + .string "__WCHAR_T " +.LASF409: + .string "_INT16_T_DECLARED " +.LASF88: + .string "__INTMAX_MAX__ 0x7fffffffffffffffLL" +.LASF1189: + .string "DAC_WAVE_BIT_WIDTH_3 DWBW(2)" +.LASF1046: + .string "CAN_ERRN_5 ERR_ERRN(5U)" +.LASF919: + .string "CAN_TSTAT_TME2 BIT(28)" +.LASF2935: + .string "TIMER_HALLINTERFACE_ENABLE TIMER_CTL1_TI0S" +.LASF1724: + .string "GPIO_BC_CR8 BIT(8)" +.LASF2698: + .string "TIMER_CHCTL1_CH2COMCEN BIT(7)" +.LASF2277: + .string "RCU_APB2_CKAHB_DIV8 CFG0_APB2PSC(6)" +.LASF90: + .string "__UINTMAX_MAX__ 0xffffffffffffffffULL" +.LASF3176: + .string "long int" +.LASF615: + .string "ADC_DAUL_REGULAL_FOLLOWUP_FAST CTL0_SYNCM(7)" +.LASF2238: + .string "APB1EN_REG_OFFSET 0x1CU" +.LASF1890: + .string "I2C_CKCFG(i2cx) REG32((i2cx) + 0x1CU)" +.LASF2583: + .string "I2S_FLAG_RBNE SPI_STAT_RBNE" +.LASF2298: + .string "RCU_PLL_MUL11 CFG0_PLLMF(9)" +.LASF1363: + .string "GD32VF103_EXTI_H " +.LASF378: + .string "char" +.LASF1757: + .string "AFIO_PCF0_TIMER0_REMAP BITS(6, 7)" +.LASF1341: + .string "EXMC_SNCTL_NRW BITS(4,5)" +.LASF32: + .string "__SIZE_TYPE__ unsigned int" +.LASF3126: + .string "USART_TRANSMIT_DISABLE CTL0_TEN(0)" +.LASF2197: + .string "RCU_APB1EN_SPI1EN BIT(14)" +.LASF881: + .string "CAN_RFIFOMDATA1(canx,bank) REG32((canx) + 0x1BCU + ((bank) * 0x10U))" +.LASF2709: + .string "TIMER_CHCTL2_CH0P BIT(1)" +.LASF392: + .string "_INT32_EQ_LONG " +.LASF1070: + .string "CAN_BT_BS1_13TQ ((uint8_t)0x0CU)" +.LASF2320: + .string "CFG0_USBPSC(regval) (BITS(22,23) & ((uint32_t)(regval) << 22))" +.LASF2870: + .string "TIMER_OC_IDLE_STATE_LOW ((uint16_t)0x0000)" +.LASF536: + .string "ADC_IOFF0(adcx) REG32((adcx) + 0x14U)" +.LASF1385: + .string "EXTI_INTEN_INTEN14 BIT(14)" +.LASF908: + .string "CAN_TSTAT_MAL1 BIT(10)" +.LASF31: + .string "__SIZEOF_POINTER__ 4" +.LASF2046: + .string "PMU_CS REG32((PMU) + 0x04U)" +.LASF2377: + .string "RCU_PLL1_MUL10 CFG1_PLL1MF(8)" +.LASF217: + .string "__FLT32_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F32" +.LASF2089: + .string "RCU_CFG1 REG32(RCU + 0x2CU)" +.LASF1312: + .string "DMA_PERIPHERAL_WIDTH_16BIT CHCTL_PWIDTH(1U)" +.LASF2878: + .string "TIMER_OC_MODE_HIGH ((uint16_t)0x0050U)" +.LASF3225: + .string "USART_FLAG_TBE" +.LASF1428: + .string "EXTI_FTEN_FTEN0 BIT(0)" +.LASF2884: + .string "TIMER_OC_FAST_DISABLE ((uint16_t)0x0000)" +.LASF1796: + .string "GPIO_OSPEED_50MHZ ((uint8_t)0x03U)" +.LASF687: + .string "ADC_RESOLUTION_10B OVSCR_DRES(1)" +.LASF2242: + .string "APB2RST_REG_OFFSET 0x0CU" +.LASF3105: + .string "USART_CTL2_DENT BIT(7)" +.LASF2797: + .string "TIMER_DMACFG_DMATA_DMACFG DMACFG_DMATA(18)" +.LASF2484: + .string "SPI_STAT_I2SCH BIT(2)" +.LASF3123: + .string "USART_RECEIVE_DISABLE CTL0_REN(0)" +.LASF2632: + .string "TIMER_CTL1_ISO0N BIT(9)" +.LASF3079: + .string "USART_CTL0_IDLEIE BIT(4)" +.LASF2686: + .string "TIMER_CHCTL0_CH1COMFEN BIT(10)" +.LASF2818: + .string "TIMER_EVENT_SRC_CH0G ((uint16_t)0x0002U)" +.LASF663: + .string "ADC_CHANNEL_2 ((uint8_t)0x02U)" +.LASF2948: + .string "WWDGT_CFG_EWIE BIT(9)" +.LASF1854: + .string "GPIO_PIN_15 BIT(15)" +.LASF3189: + .string "RCU_TIMER3RST" +.LASF1528: + .string "FMC_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF1104: + .string "CAN_INT_TME CAN_INTEN_TMEIE" +.LASF517: + .string "AFIO_BASE (APB2_BUS_BASE + 0x00000000U)" +.LASF1896: + .string "I2C_CTL0_ARPEN BIT(4)" +.LASF2363: + .string "RCU_PREDV1_DIV6 CFG1_PREDV1(5)" +.LASF2161: + .string "RCU_APB1RST_USART1RST BIT(17)" +.LASF1925: + .string "I2C_STAT0_RBNE BIT(6)" +.LASF2394: + .string "RCU_PLL2_MUL16 CFG1_PLL2MF(14)" +.LASF1685: + .string "GPIO_BOP_BOP1 BIT(1)" +.LASF2765: + .string "TIMER_FLAG_CH0O TIMER_INTF_CH0OF" +.LASF708: + .string "ADC_OVERSAMPLING_RATIO_MUL64 OVSCR_OVSR(5)" +.LASF1043: + .string "CAN_ERRN_2 ERR_ERRN(2U)" +.LASF1618: + .string "AFIO_EXTISS3 REG32(AFIO + 0x14U)" +.LASF1445: + .string "EXTI_FTEN_FTEN17 BIT(17)" +.LASF2288: + .string "CFG0_PLLMF(regval) (BITS(18,21) & ((uint32_t)(regval) << 18))" +.LASF2387: + .string "RCU_PLL2_MUL9 CFG1_PLL2MF(7)" +.LASF2118: + .string "RCU_INT_IRC40KSTBIF BIT(0)" +.LASF2590: + .string "GD32VF103_TIMER_H " +.LASF1018: + .string "TMDATA0_DB1(regval) (BITS(8,15) & ((uint32_t)(regval) << 8))" +.LASF2037: + .string "DBG_CTL_TIMER5_HOLD BIT(19)" +.LASF2957: + .string "_STDDEF_H_ " +.LASF1990: + .string "I2C_ADDFORMAT_7BITS ((uint32_t)0x00000000U)" +.LASF2687: + .string "TIMER_CHCTL0_CH1COMSEN BIT(11)" +.LASF841: + .string "CAN_F25DATA0(canx) REG32((canx) + 0x308U)" +.LASF1717: + .string "GPIO_BC_CR1 BIT(1)" +.LASF2086: + .string "RCU_BDCTL REG32(RCU + 0x20U)" +.LASF990: + .string "CAN_FMCFG_FMOD(regval) BIT(regval)" +.LASF2080: + .string "RCU_INT REG32(RCU + 0x08U)" +.LASF2585: + .string "I2S_FLAG_CH SPI_STAT_I2SCH" +.LASF2198: + .string "RCU_APB1EN_SPI2EN BIT(15)" +.LASF479: + .string "WINT_MAX (__WINT_MAX__)" +.LASF856: + .string "CAN_F12DATA1(canx) REG32((canx) + 0x2A4U)" +.LASF1016: + .string "TMI_SFID(regval) (BITS(21,31) & ((uint32_t)(regval) << 21))" +.LASF862: + .string "CAN_F18DATA1(canx) REG32((canx) + 0x2D4U)" +.LASF1565: + .string "OB_WP_2 ((uint32_t)0x00000004U)" +.LASF2949: + .string "WWDGT_STAT_EWIF BIT(0)" +.LASF1783: + .string "AFIO_PCF1_EXMC_NADV BIT(10)" +.LASF2222: + .string "RCU_RSTSCK_FWDGTRSTF BIT(29)" +.LASF1478: + .string "EXTI_PD_PD12 BIT(12)" +.LASF1023: + .string "TMDATA1_DB6(regval) (BITS(16,23) & ((uint32_t)(regval) << 16))" +.LASF1802: + .string "GPIO_PORT_SOURCE_GPIOA ((uint8_t)0x00U)" +.LASF200: + .string "__FLT16_MIN__ 6.10351562500000000000000000000000000e-5F16" +.LASF2734: + .string "TIMER_CCHP_BRKEN BIT(12)" +.LASF2129: + .string "RCU_INT_HXTALSTBIE BIT(11)" +.LASF564: + .string "ADC_CTL0_DISRC BIT(11)" +.LASF295: + .string "__GCC_ATOMIC_LLONG_LOCK_FREE 1" +.LASF2337: + .string "RCU_RTCSRC_LXTAL BDCTL_RTCSRC(1)" +.LASF1235: + .string "DMA_CH0MADDR(dmax) REG32((dmax) + 0x14U)" +.LASF815: + .string "CAN_FW(canx) REG32((canx) + 0x21CU)" +.LASF1753: + .string "AFIO_PCF0_I2C0_REMAP BIT(1)" +.LASF2606: + .string "TIMER_CHCTL2(timerx) REG32((timerx) + 0x20U)" +.LASF2937: + .string "TIMER_CHVSEL_ENABLE ((uint16_t)TIMER_CFG_OUTSEL)" +.LASF2331: + .string "RCU_CKOUT0SRC_CKPLL1 CFG0_CKOUT0SEL(8)" +.LASF2568: + .string "SPI_I2S_INT_ERR ((uint8_t)0x02U)" +.LASF807: + .string "CAN_RFIFOMI1(canx) REG32((canx) + 0x1C0U)" +.LASF1471: + .string "EXTI_PD_PD5 BIT(5)" +.LASF1421: + .string "EXTI_RTEN_RTEN12 BIT(12)" +.LASF831: + .string "CAN_F15DATA0(canx) REG32((canx) + 0x2B8U)" +.LASF192: + .string "__FLT16_DIG__ 3" +.LASF1681: + .string "GPIO_OCTL_OCTL13 BIT(13)" +.LASF1940: + .string "I2C_STAT1_DUMODF BIT(7)" +.LASF531: + .string "ADC_STAT(adcx) REG32((adcx) + 0x00U)" +.LASF721: + .string "BKP_DATA8 REG16((BKP) + 0x24U)" +.LASF3143: + .string "USART_LBLEN_10B CTL1_LBLEN(0)" +.LASF1670: + .string "GPIO_OCTL_OCTL2 BIT(2)" +.LASF57: + .string "__INT_FAST8_TYPE__ int" +.LASF1594: + .string "OB_WP_31 ((uint32_t)0x80000000U)" +.LASF1167: + .string "DACC_L12DH_DAC0_DH BITS(4,15)" +.LASF3080: + .string "USART_CTL0_RBNEIE BIT(5)" +.LASF3194: + .string "RCU_SPI1RST" +.LASF186: + .string "__LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L" +.LASF956: + .string "CAN_BT_SCMOD BIT(31)" +.LASF2692: + .string "TIMER_CHCTL0_CH1CAPPSC BITS(10,11)" +.LASF2023: + .string "DBG_ID_ID_CODE BITS(0,31)" +.LASF650: + .string "WDLT_WDLT(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF1141: + .string "DAC0_DO REG32(DAC + 0x2CU)" +.LASF2428: + .string "RTC_PSCH_PSC BITS(0,3)" +.LASF1172: + .string "DAC1_DO_DAC1_DO BITS(0,11)" +.LASF1418: + .string "EXTI_RTEN_RTEN9 BIT(9)" +.LASF720: + .string "BKP_DATA7 REG16((BKP) + 0x20U)" +.LASF2258: + .string "RCU_AHB_CKSYS_DIV1 CFG0_AHBPSC(0)" +.LASF2062: + .string "PMU_LVDT_3 CTL_LVDT(3)" +.LASF1545: + .string "OB_FWDGT_SW ((uint8_t)0x01U)" +.LASF1331: + .string "ECLIC_PRIGROUP_LEVEL4_PRIO0 4" +.LASF2642: + .string "TIMER_SMCFG_ETPSC BITS(12,13)" +.LASF453: + .string "UINT64_MAX (__UINT64_MAX__)" +.LASF1919: + .string "I2C_DATA_TRB BITS(0,7)" +.LASF1988: + .string "I2C_DTCY_2 ((uint32_t)0x00000000U)" +.LASF1579: + .string "OB_WP_16 ((uint32_t)0x00010000U)" +.LASF1738: + .string "GPIO_LOCK_LK6 BIT(6)" +.LASF736: + .string "BKP_DATA23 REG16((BKP) + 0x74U)" +.LASF3027: + .string "ECLIC_INFO_OFFSET 0x4" +.LASF884: + .string "CAN_CTL_TFO BIT(2)" +.LASF2263: + .string "RCU_AHB_CKSYS_DIV64 CFG0_AHBPSC(12)" +.LASF2732: + .string "TIMER_CCHP_IOS BIT(10)" +.LASF3021: + .string "_AC(X,Y) (X ##Y)" +.LASF1774: + .string "AFIO_EXTI7_SS BITS(12, 15)" +.LASF2525: + .string "SPI_PSC_2 CTL0_PSC(0)" +.LASF896: + .string "CAN_STAT_SLPIF BIT(4)" +.LASF59: + .string "__INT_FAST32_TYPE__ int" +.LASF3058: + .string "USART_CTL0(usartx) REG32((usartx) + (0x0000000CU))" +.LASF710: + .string "ADC_OVERSAMPLING_RATIO_MUL256 OVSCR_OVSR(7)" +.LASF753: + .string "BKP_DATA40 REG16((BKP) + 0xB8U)" +.LASF1451: + .string "EXTI_SWIEV_SWIEV4 BIT(4)" +.LASF2831: + .string "TIMER_PSC_RELOAD_UPDATE ((uint32_t)0x00000000U)" +.LASF1554: + .string "FMC_USPC ((uint8_t)0xBBU)" +.LASF2144: + .string "RCU_APB2RST_PCRST BIT(4)" +.LASF715: + .string "BKP_DATA2 REG16((BKP) + 0x0CU)" +.LASF1224: + .string "DAC_TRIANGLE_AMPLITUDE_1023 DAC_WAVE_BIT_WIDTH_10" +.LASF16: + .string "__SIZEOF_INT__ 4" +.LASF1609: + .string "GPIO_OCTL(gpiox) REG32((gpiox) + 0x0CU)" +.LASF1049: + .string "CAN_STATE_PENDING ((uint32_t)0x00000000U)" +.LASF384: + .string "unsigned +0" +.LASF28: + .string "__ORDER_PDP_ENDIAN__ 3412" +.LASF151: + .string "__FLT_DECIMAL_DIG__ 9" +.LASF1256: + .string "DMA_CH6CTL(dmax) REG32((dmax) + 0x80U)" +.LASF1703: + .string "GPIO_BOP_CR3 BIT(19)" +.LASF2486: + .string "SPI_STAT_CRCERR BIT(4)" +.LASF99: + .string "__INT64_MAX__ 0x7fffffffffffffffLL" +.LASF2127: + .string "RCU_INT_LXTALSTBIE BIT(9)" +.LASF2400: + .string "RCU_I2S2SRC_CKSYS ((uint32_t)0x00000000U)" +.LASF3116: + .string "USART_BIT_POS2(val) (((uint32_t)(val) & (0x001F0000U)) >> 16)" +.LASF879: + .string "CAN_RFIFOMP(canx,bank) REG32((canx) + 0x1B4U + ((bank) * 0x10U))" +.LASF3285: + .string "rxconfig" +.LASF675: + .string "ADC_CHANNEL_14 ((uint8_t)0x0EU)" +.LASF2174: + .string "RCU_AHBEN_SRAMSPEN BIT(2)" +.LASF594: + .string "ADC_OVSCR_OVSEN BIT(0)" +.LASF2834: + .string "CTL0_CKDIV(regval) ((uint16_t)(BITS(8, 9) & ((uint32_t)(regval) << 8U)))" +.LASF1202: + .string "DAC_LFSR_BITS3_0 DAC_WAVE_BIT_WIDTH_4" +.LASF2601: + .string "TIMER_DMAINTEN(timerx) REG32((timerx) + 0x0CU)" +.LASF417: + .string "__int64_t_defined 1" +.LASF724: + .string "BKP_DATA11 REG16((BKP) + 0x44U)" +.LASF2104: + .string "RCU_CTL_PLL2STB BIT(29)" +.LASF2886: + .string "TIMER_OC_CLEAR_DISABLE ((uint16_t)0x0000U)" +.LASF379: + .string "short" +.LASF1357: + .string "EXMC_MEMORY_TYPE_SRAM SNCTL_NRTP(0)" +.LASF1465: + .string "EXTI_SWIEV_SWIEV18 BIT(18)" +.LASF1524: + .string "FMC_OBSTAT_DATA BITS(10,25)" +.LASF772: + .string "BKP_DATA_GET(regval) GET_BITS((uint32_t)(regval), 0, 15)" +.LASF2929: + .string "TIMER_EXT_TRI_PSC_OFF SMCFG_ETPSC(0)" +.LASF2365: + .string "RCU_PREDV1_DIV8 CFG1_PREDV1(7)" +.LASF992: + .string "CAN_FAFIFOR_FAF(regval) BIT(regval)" +.LASF2952: + .string "WWDGT_CFG_PSC_DIV2 CFG_PSC(1)" +.LASF3302: + .string "GNU C17 10.2.0 -march=rv32imac -mabi=ilp32 -mcmodel=medany -msmall-data-limit= 8 -march=rv32imac -g3 -O0" +.LASF1187: + .string "DAC_WAVE_BIT_WIDTH_1 DWBW(0)" +.LASF1518: + .string "FMC_CTL_ERRIE BIT(10)" +.LASF2248: + .string "CFG1_REG_OFFSET 0x2CU" +.LASF749: + .string "BKP_DATA36 REG16((BKP) + 0xA8U)" +.LASF871: + .string "CAN_F27DATA1(canx) REG32((canx) + 0x31CU)" +.LASF735: + .string "BKP_DATA22 REG16((BKP) + 0x70U)" +.LASF1013: + .string "FDATA_MASK_LOW(regval) (BITS(0,15) & ((uint32_t)(regval) << 0))" +.LASF193: + .string "__FLT16_MIN_EXP__ (-13)" +.LASF2022: + .string "DBG_CTL REG32(DBG + 0x04U)" +.LASF1824: + .string "GPIO_PIN_SOURCE_1 ((uint8_t)0x01U)" +.LASF2705: + .string "TIMER_CHCTL1_CH2CAPFLT BITS(4,7)" +.LASF3232: + .string "USART_FLAG_PERR" +.LASF1667: + .string "GPIO_ISTAT_ISTAT15 BIT(15)" +.LASF3127: + .string "CTL0_PM(regval) (BITS(9,10) & ((uint32_t)(regval) << 9))" +.LASF2467: + .string "SPI_CTL0_SWNSSEN BIT(9)" +.LASF2547: + .string "I2S_MCKOUT_DISABLE ((uint32_t)0x00000000U)" +.LASF592: + .string "ADC_RDATA_RDATA BITS(0,15)" +.LASF939: + .string "CAN_INTEN_PERRIE BIT(9)" +.LASF1776: + .string "AFIO_EXTI9_SS BITS(4, 7)" +.LASF2121: + .string "RCU_INT_HXTALSTBIF BIT(3)" +.LASF359: + .string "__SVID_VISIBLE 0" +.LASF2105: + .string "RCU_CFG0_SCS BITS(0,1)" +.LASF2674: + .string "TIMER_SWEVG_CH1G BIT(2)" +.LASF1450: + .string "EXTI_SWIEV_SWIEV3 BIT(3)" +.LASF1664: + .string "GPIO_ISTAT_ISTAT12 BIT(12)" +.LASF748: + .string "BKP_DATA35 REG16((BKP) + 0xA4U)" +.LASF1247: + .string "DMA_CH3MADDR(dmax) REG32((dmax) + 0x50U)" +.LASF1099: + .string "CAN_FILTERMODE_LIST ((uint8_t)0x01U)" +.LASF2241: + .string "APB1RST_REG_OFFSET 0x10U" +.LASF53: + .string "__UINT_LEAST8_TYPE__ unsigned char" +.LASF1888: + .string "I2C_STAT0(i2cx) REG32((i2cx) + 0x14U)" +.LASF2700: + .string "TIMER_CHCTL1_CH3COMFEN BIT(10)" +.LASF2264: + .string "RCU_AHB_CKSYS_DIV128 CFG0_AHBPSC(13)" +.LASF823: + .string "CAN_F7DATA0(canx) REG32((canx) + 0x278U)" +.LASF2228: + .string "RCU_CFG1_PLL1MF BITS(8,11)" +.LASF27: + .string "__ORDER_BIG_ENDIAN__ 4321" +.LASF3254: + .string "irlp" +.LASF723: + .string "BKP_DATA10 REG16((BKP) + 0x40U)" +.LASF940: + .string "CAN_INTEN_BOIE BIT(10)" +.LASF1822: + .string "GPIO_EVENT_PIN_15 ((uint8_t)0x0FU)" +.LASF3278: + .string "usart_mute_mode_enable" +.LASF1793: + .string "GPIO_MODE_AF_PP ((uint8_t)0x18U)" +.LASF1227: + .string "GD32VF103_DMA_H " +.LASF221: + .string "__FLT64_MANT_DIG__ 53" +.LASF2204: + .string "RCU_APB1EN_I2C1EN BIT(22)" +.LASF2943: + .string "WWDGT_STAT REG32((WWDGT) + 0x00000008U)" +.LASF1158: + .string "DAC_SWT_SWTR1 BIT(1)" +.LASF625: + .string "ADC0_1_EXTTRIG_REGULAR_T1_CH1 CTL1_ETSRC(3)" +.LASF2603: + .string "TIMER_SWEVG(timerx) REG32((timerx) + 0x14U)" +.LASF1088: + .string "CAN_FIFO0 ((uint8_t)0x00U)" +.LASF2011: + .string "FWDGT_WRITEACCESS_ENABLE ((uint16_t)0x5555U)" +.LASF2701: + .string "TIMER_CHCTL1_CH3COMSEN BIT(11)" +.LASF94: + .string "__SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)" +.LASF1950: + .string "I2C_REGIDX_BIT2(regidx,bitpos,regidx2,bitpos2) (((uint32_t)(regidx2) << 22) | (uint32_t)((bitpos2) << 16) | (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos)))" +.LASF754: + .string "BKP_DATA41 REG16((BKP) + 0xBCU)" +.LASF2371: + .string "RCU_PREDV1_DIV14 CFG1_PREDV1(13)" +.LASF2077: + .string "RCU RCU_BASE" +.LASF2751: + .string "TIMER_INT_FLAG_CH1 TIMER_INT_CH1" +.LASF252: + .string "__FLT32X_DIG__ 15" +.LASF2636: + .string "TIMER_CTL1_ISO2N BIT(13)" +.LASF2825: + .string "CTL0_CAM(regval) ((uint16_t)(BITS(5, 6) & ((uint32_t)(regval) << 5U)))" +.LASF3261: + .string "usart_smartcard_mode_enable" +.LASF747: + .string "BKP_DATA34 REG16((BKP) + 0xA0U)" +.LASF2617: + .string "TIMER_DMATB(timerx) REG32((timerx) + 0x4CU)" +.LASF2548: + .string "I2S_MCKOUT_ENABLE SPI_I2SPSC_MCKOEN" +.LASF619: + .string "ADC_DATAALIGN_LEFT ADC_CTL1_DAL" +.LASF369: + .string "___int_least8_t_defined 1" +.LASF2279: + .string "RCU_CKADC_CKAPB2_DIV2 ((uint32_t)0x00000000U)" +.LASF2181: + .string "RCU_APB2EN_PBEN BIT(3)" +.LASF802: + .string "CAN_TMDATA12(canx) REG32((canx) + 0x1ACU)" +.LASF670: + .string "ADC_CHANNEL_9 ((uint8_t)0x09U)" +.LASF1903: + .string "I2C_CTL0_POAP BIT(11)" +.LASF2562: + .string "SPI_DMA_TRANSMIT ((uint8_t)0x00U)" +.LASF174: + .string "__DBL_HAS_QUIET_NAN__ 1" +.LASF1745: + .string "GPIO_LOCK_LK13 BIT(13)" +.LASF397: + .string "__FAST8 " +.LASF2054: + .string "PMU_CS_WUF BIT(0)" +.LASF648: + .string "IOFFX_IOFF(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF1797: + .string "GPIO_EVENT_PORT_GPIOA ((uint8_t)0x00U)" +.LASF572: + .string "ADC_CTL1_CLB BIT(2)" +.LASF1709: + .string "GPIO_BOP_CR9 BIT(25)" +.LASF630: + .string "CTL1_ETSIC(regval) (BITS(12,14) & ((uint32_t)(regval) << 12))" +.LASF1760: + .string "AFIO_PCF0_TIMER3_REMAP BIT(12)" +.LASF2314: + .string "RCU_PLL_MUL27 (PLLMF_4 | CFG0_PLLMF(10))" +.LASF530: + .string "ADC1 (ADC_BASE + 0x400U)" +.LASF760: + .string "BKP_OCTL_COEN BIT(7)" +.LASF2488: + .string "SPI_STAT_RXORERR BIT(6)" +.LASF1164: + .string "DAC1_R8DH_DAC1_DH BITS(0,7)" +.LASF2405: + .string "RCU_DEEPSLEEP_V_1_0 DSV_DSLPVS(2)" +.LASF2402: + .string "DSV_DSLPVS(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF2914: + .string "TIMER_TRI_OUT_SRC_O1CPRE CTL1_MMC(5)" +.LASF2759: + .string "TIMER_FLAG_CH1 TIMER_INTF_CH1IF" +.LASF1114: + .string "CAN_INT_ERRN CAN_INTEN_ERRNIE" +.LASF1065: + .string "CAN_BT_BS1_8TQ ((uint8_t)0x07U)" +.LASF310: + .string "__riscv_float_abi_soft 1" +.LASF2382: + .string "RCU_PLL1_MUL15 CFG1_PLL1MF(13)" +.LASF1233: + .string "DMA_CH0CNT(dmax) REG32((dmax) + 0x0CU)" +.LASF3063: + .string "USART_STAT_FERR BIT(1)" +.LASF3226: + .string "USART_FLAG_TC" +.LASF2915: + .string "TIMER_TRI_OUT_SRC_O2CPRE CTL1_MMC(6)" +.LASF1593: + .string "OB_WP_30 ((uint32_t)0x40000000U)" +.LASF2329: + .string "RCU_CKOUT0SRC_HXTAL CFG0_CKOUT0SEL(6)" +.LASF2030: + .string "DBG_CTL_TIMER1_HOLD BIT(11)" +.LASF239: + .string "__FLT128_MIN_10_EXP__ (-4931)" +.LASF1370: + .string "EXTI_PD REG32(EXTI + 0x14U)" +.LASF1759: + .string "AFIO_PCF0_TIMER2_REMAP BITS(10, 11)" +.LASF1961: + .string "I2C_TRANSMITTER ((uint32_t)0xFFFFFFFEU)" +.LASF709: + .string "ADC_OVERSAMPLING_RATIO_MUL128 OVSCR_OVSR(6)" +.LASF3249: + .string "usart_hardware_flow_cts_config" +.LASF520: + .string "ADC_BASE (APB2_BUS_BASE + 0x00002400U)" +.LASF2435: + .string "RTC_ALRML_ALRM BITS(0,15)" +.LASF546: + .string "ADC_IDATA0(adcx) REG32((adcx) + 0x3CU)" +.LASF2458: + .string "SPI_I2SCTL(spix) REG32((spix) + 0x1CU)" +.LASF1771: + .string "AFIO_EXTI4_SS BITS(0, 3)" +.LASF2269: + .string "RCU_APB1_CKAHB_DIV2 CFG0_APB1PSC(4)" +.LASF906: + .string "CAN_TSTAT_MTF1 BIT(8)" +.LASF1786: + .string "GPIO_MODE_AIN ((uint8_t)0x00U)" +.LASF518: + .string "EXTI_BASE (APB2_BUS_BASE + 0x00000400U)" +.LASF2543: + .string "I2S_FRAMEFORMAT_DT16B_CH16B I2SCTL_DTLEN(0)" +.LASF1071: + .string "CAN_BT_BS1_14TQ ((uint8_t)0x0DU)" +.LASF1506: + .string "FMC_STAT_BUSY BIT(0)" +.LASF428: + .string "__int_fast32_t_defined 1" +.LASF1377: + .string "EXTI_INTEN_INTEN6 BIT(6)" +.LASF595: + .string "ADC_OVSCR_OVSR BITS(2,4)" +.LASF1623: + .string "GPIO_CTL0_CTL1 BITS(6, 7)" +.LASF2119: + .string "RCU_INT_LXTALSTBIF BIT(1)" +.LASF3170: + .string "signed char" +.LASF163: + .string "__DBL_MIN_10_EXP__ (-307)" +.LASF2722: + .string "TIMER_CNT_CNT BITS(0,15)" +.LASF611: + .string "ADC_DAUL_INSERTED_PARALLEL_REGULAL_FOLLOWUP_FAST CTL0_SYNCM(3)" +.LASF236: + .string "__FLT128_MANT_DIG__ 113" +.LASF1848: + .string "GPIO_PIN_9 BIT(9)" +.LASF134: + .string "__UINT_FAST32_MAX__ 0xffffffffU" +.LASF2155: + .string "RCU_APB1RST_TIMER4RST BIT(3)" +.LASF628: + .string "ADC0_1_EXTTRIG_REGULAR_EXTI_11 CTL1_ETSRC(6)" +.LASF2090: + .string "RCU_DSV REG32(RCU + 0x34U)" +.LASF1001: + .string "CAN_BIT_POS1(val) ((uint32_t)(val) & 0x1FU)" +.LASF43: + .string "__INT32_TYPE__ long int" +.LASF2662: + .string "TIMER_INTF_CH1IF BIT(2)" +.LASF393: + .string "__INT8 \"hh\"" +.LASF2289: + .string "RCU_PLL_MUL2 CFG0_PLLMF(0)" +.LASF1762: + .string "AFIO_PCF0_PD01_REMAP BIT(15)" +.LASF1487: + .string "OB OB_BASE" +.LASF3181: + .string "uint8_t" +.LASF244: + .string "__FLT128_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F128" +.LASF3145: + .string "CTL1_CLEN(regval) (BIT(8) & ((uint32_t)(regval) << 8))" +.LASF853: + .string "CAN_F9DATA1(canx) REG32((canx) + 0x28CU)" +.LASF1143: + .string "DAC_CTL_DEN0 BIT(0)" +.LASF2540: + .string "I2S_AUDIOSAMPLE_96K ((uint32_t)96000U)" +.LASF434: + .string "INT8_MAX (__INT8_MAX__)" +.LASF1483: + .string "EXTI_PD_PD17 BIT(17)" +.LASF541: + .string "ADC_WDLT(adcx) REG32((adcx) + 0x28U)" +.LASF1396: + .string "EXTI_EVEN_EVEN6 BIT(6)" +.LASF1066: + .string "CAN_BT_BS1_9TQ ((uint8_t)0x08U)" +.LASF1715: + .string "GPIO_BOP_CR15 BIT(31)" +.LASF121: + .string "__UINT32_C(c) c ## UL" +.LASF1613: + .string "AFIO_EC REG32(AFIO + 0x00U)" +.LASF2574: + .string "I2S_INT_FLAG_TXURERR ((uint8_t)0x05U)" +.LASF3241: + .string "usart_interrupt_enable" +.LASF1749: + .string "AFIO_EC_PIN BITS(0, 3)" +.LASF2051: + .string "PMU_CTL_LVDEN BIT(4)" +.LASF77: + .string "__PTRDIFF_MAX__ 0x7fffffff" +.LASF2800: + .string "TIMER_DMACFG_DMATC_2TRANSFER DMACFG_DMATC(1)" +.LASF1688: + .string "GPIO_BOP_BOP4 BIT(4)" +.LASF2052: + .string "PMU_CTL_LVDT BITS(5,7)" +.LASF2928: + .string "SMCFG_ETPSC(regval) (BITS(12, 13) & ((uint32_t)(regval) << 12U))" +.LASF3053: + .string "UART4 (USART_BASE+(0x00000C00U))" +.LASF1655: + .string "GPIO_ISTAT_ISTAT3 BIT(3)" +.LASF1426: + .string "EXTI_RTEN_RTEN17 BIT(17)" +.LASF2483: + .string "SPI_STAT_TBE BIT(1)" +.LASF3094: + .string "USART_CTL1_CPL BIT(10)" +.LASF3184: + .string "RESET" +.LASF389: + .string "int +2" +.LASF2389: + .string "RCU_PLL2_MUL11 CFG1_PLL2MF(9)" +.LASF2285: + .string "RCU_PLLSRC_IRC8M_DIV2 ((uint32_t)0x00000000U)" +.LASF2507: + .string "SPI_SLAVE ((uint32_t)0x00000000U)" +.LASF2604: + .string "TIMER_CHCTL0(timerx) REG32((timerx) + 0x18U)" +.LASF2412: + .string "RTC_PSCL REG32(RTC + 0x0CU)" +.LASF220: + .string "__FLT32_HAS_QUIET_NAN__ 1" +.LASF1084: + .string "CAN_MAILBOX2 ((uint8_t)0x02U)" +.LASF8: + .string "__VERSION__ \"10.2.0\"" +.LASF185: + .string "__LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L" +.LASF48: + .string "__UINT64_TYPE__ long long unsigned int" +.LASF1062: + .string "CAN_BT_BS1_5TQ ((uint8_t)0x04U)" +.LASF875: + .string "CAN_TMDATA1(canx,bank) REG32((canx) + 0x18CU + ((bank) * 0x10U))" +.LASF461: + .string "INT_FAST16_MAX (__INT_FAST16_MAX__)" +.LASF997: + .string "CAN_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF2670: + .string "TIMER_INTF_CH2OF BIT(11)" +.LASF1537: + .string "FMC_CTL_REG_OFFSET 0x10U" +.LASF2829: + .string "TIMER_COUNTER_CENTER_BOTH CTL0_CAM(3)" +.LASF1779: + .string "AFIO_EXTI12_SS BITS(0, 3)" +.LASF1162: + .string "DAC1_R12DH_DAC1_DH BITS(0,11)" +.LASF1496: + .string "FMC_PID REG32((FMC) + 0x100U)" +.LASF3048: + .string "ECLIC_GROUP_LEVEL3_PRIO1 3" +.LASF1436: + .string "EXTI_FTEN_FTEN8 BIT(8)" +.LASF515: + .string "PMU_BASE (APB1_BUS_BASE + 0x00007000U)" +.LASF1376: + .string "EXTI_INTEN_INTEN5 BIT(5)" +.LASF1841: + .string "GPIO_PIN_2 BIT(2)" +.LASF2398: + .string "RCU_I2S1SRC_CKSYS ((uint32_t)0x00000000U)" +.LASF983: + .string "CAN_RFIFOMDATA0_DB3 BITS(24,31)" +.LASF2292: + .string "RCU_PLL_MUL5 CFG0_PLLMF(3)" +.LASF454: + .string "INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1)" +.LASF286: + .string "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1" +.LASF1813: + .string "GPIO_EVENT_PIN_6 ((uint8_t)0x06U)" +.LASF756: + .string "BKP_TPCTL REG16((BKP) + 0x30U)" +.LASF2008: + .string "FWDGT_PSC_DIV64 ((uint8_t)PSC_PSC(4))" +.LASF3158: + .string "USART_DENT_ENABLE CLT2_DENT(1)" +.LASF443: + .string "INT_LEAST16_MAX (__INT_LEAST16_MAX__)" +.LASF2513: + .string "SPI_TRANSMODE_BDTRANSMIT (SPI_CTL0_BDEN | SPI_CTL0_BDOEN)" +.LASF309: + .string "__riscv_xlen 32" +.LASF2798: + .string "DMACFG_DMATC(regval) (BITS(8, 12) & ((uint32_t)(regval) << 8U))" +.LASF281: + .string "__REGISTER_PREFIX__ " +.LASF1634: + .string "GPIO_CTL0_MD7 BITS(28, 29)" +.LASF20: + .string "__SIZEOF_FLOAT__ 4" +.LASF3060: + .string "USART_CTL2(usartx) REG32((usartx) + (0x00000014U))" +.LASF646: + .string "ADC_SAMPLETIME_71POINT5 SAMPTX_SPT(6)" +.LASF837: + .string "CAN_F21DATA0(canx) REG32((canx) + 0x2E8U)" +.LASF1429: + .string "EXTI_FTEN_FTEN1 BIT(1)" +.LASF2897: + .string "TIMER_IC_PSC_DIV4 ((uint16_t)0x0008U)" +.LASF986: + .string "CAN_RFIFOMDATA1_DB6 BITS(16,23)" +.LASF1269: + .string "DMA_CHXCTL_FTFIE BIT(1)" +.LASF1246: + .string "DMA_CH3PADDR(dmax) REG32((dmax) + 0x4CU)" +.LASF1411: + .string "EXTI_RTEN_RTEN2 BIT(2)" +.LASF1257: + .string "DMA_CH6CNT(dmax) REG32((dmax) + 0x84U)" +.LASF3070: + .string "USART_STAT_LBDF BIT(8)" +.LASF586: + .string "ADC_WDLT_WDLT BITS(0,11)" +.LASF855: + .string "CAN_F11DATA1(canx) REG32((canx) + 0x29CU)" +.LASF745: + .string "BKP_DATA32 REG16((BKP) + 0x98U)" +.LASF1831: + .string "GPIO_PIN_SOURCE_8 ((uint8_t)0x08U)" +.LASF1055: + .string "CAN_BT_SJW_2TQ ((uint8_t)0x01U)" +.LASF3196: + .string "RCU_USART1RST" +.LASF377: + .string "unsigned" +.LASF477: + .string "WCHAR_MIN (__WCHAR_MIN__)" +.LASF1920: + .string "I2C_STAT0_SBSEND BIT(0)" +.LASF524: + .string "CRC_BASE (AHB1_BUS_BASE + 0x0000B000U)" +.LASF2565: + .string "SPI_CRC_RX ((uint8_t)0x01U)" +.LASF2752: + .string "TIMER_INT_FLAG_CH2 TIMER_INT_CH2" +.LASF2609: + .string "TIMER_CAR(timerx) REG32((timerx) + 0x2CU)" +.LASF3150: + .string "USART_CPH_2CK CTL1_CPH(1)" +.LASF2352: + .string "RCU_PREDV0_DIV12 CFG1_PREDV0(11)" +.LASF1527: + .string "FMC_PID_PID BITS(0,31)" +.LASF140: + .string "__GCC_IEC_559_COMPLEX 0" +.LASF153: + .string "__FLT_NORM_MAX__ 3.40282346638528859811704183484516925e+38F" +.LASF219: + .string "__FLT32_HAS_INFINITY__ 1" +.LASF2295: + .string "RCU_PLL_MUL8 CFG0_PLLMF(6)" +.LASF1485: + .string "GD32VF103_FMC_H " +.LASF3267: + .string "usart_synchronous_clock_enable" +.LASF2689: + .string "TIMER_CHCTL0_CH1COMCEN BIT(15)" +.LASF329: + .string "GD32VF103_USART_H " +.LASF24: + .string "__CHAR_BIT__ 8" +.LASF3182: + .string "uint16_t" +.LASF2901: + .string "TIMER_SMCFG_TRGSEL_ITI1 SMCFG_TRGSEL(1)" +.LASF2887: + .string "TIMER_UPDATECTL_CCU ((uint32_t)0x00000000U)" +.LASF3153: + .string "USART_CPL_HIGH CTL1_CPL(1)" +.LASF717: + .string "BKP_DATA4 REG16((BKP) + 0x14U)" +.LASF203: + .string "__FLT16_HAS_DENORM__ 1" +.LASF1192: + .string "DAC_WAVE_BIT_WIDTH_6 DWBW(5)" +.LASF2426: + .string "RTC_CTL_CMF BIT(4)" +.LASF1171: + .string "DAC0_DO_DAC0_DO BITS(0,11)" +.LASF480: + .string "WINT_MIN (__WINT_MIN__)" +.LASF733: + .string "BKP_DATA20 REG16((BKP) + 0x68U)" +.LASF2048: + .string "PMU_CTL_STBMOD BIT(1)" +.LASF1826: + .string "GPIO_PIN_SOURCE_3 ((uint8_t)0x03U)" +.LASF1931: + .string "I2C_STAT0_PECERR BIT(12)" +.LASF336: + .string "HXTAL_STARTUP_TIMEOUT ((uint16_t)0xFFFF)" +.LASF254: + .string "__FLT32X_MIN_10_EXP__ (-307)" +.LASF1022: + .string "TMDATA1_DB5(regval) (BITS(8,15) & ((uint32_t)(regval) << 8))" +.LASF1403: + .string "EXTI_EVEN_EVEN13 BIT(13)" +.LASF1432: + .string "EXTI_FTEN_FTEN4 BIT(4)" +.LASF638: + .string "ADC0_1_EXTTRIG_INSERTED_NONE CTL1_ETSIC(7)" +.LASF543: + .string "ADC_RSQ1(adcx) REG32((adcx) + 0x30U)" +.LASF1794: + .string "GPIO_OSPEED_10MHZ ((uint8_t)0x01U)" +.LASF744: + .string "BKP_DATA31 REG16((BKP) + 0x94U)" +.LASF92: + .string "__INTMAX_WIDTH__ 64" +.LASF2491: + .string "SPI_DATA_DATA BITS(0,15)" +.LASF2172: + .string "RCU_AHBEN_DMA0EN BIT(0)" +.LASF287: + .string "__GCC_ATOMIC_BOOL_LOCK_FREE 1" +.LASF636: + .string "ADC0_1_EXTTRIG_INSERTED_T3_TRGO CTL1_ETSIC(5)" +.LASF1889: + .string "I2C_STAT1(i2cx) REG32((i2cx) + 0x18U)" +.LASF339: + .string "IRC40K_VALUE ((uint32_t)40000)" +.LASF2195: + .string "RCU_APB1EN_TIMER6EN BIT(5)" +.LASF671: + .string "ADC_CHANNEL_10 ((uint8_t)0x0AU)" +.LASF2495: + .string "SPI_I2SCTL_CHLEN BIT(0)" +.LASF2303: + .string "RCU_PLL_MUL16 CFG0_PLLMF(14)" +.LASF2993: + .string "_WCHAR_T_ " +.LASF2273: + .string "CFG0_APB2PSC(regval) (BITS(11,13) & ((uint32_t)(regval) << 11))" +.LASF1689: + .string "GPIO_BOP_BOP5 BIT(5)" +.LASF2963: + .string "_PTRDIFF_T_ " +.LASF3256: + .string "usart_irda_mode_disable" +.LASF2085: + .string "RCU_APB1EN REG32(RCU + 0x1CU)" +.LASF484: + .string "UINT16_C(x) __UINT16_C(x)" +.LASF1562: + .string "OB_WP3_WP3 ((uint32_t)0xFF000000U)" +.LASF651: + .string "RSQ0_RL(regval) (BITS(20,23) & ((uint32_t)(regval) << 20))" +.LASF2648: + .string "TIMER_DMAINTEN_CH2IE BIT(3)" +.LASF716: + .string "BKP_DATA3 REG16((BKP) + 0x10U)" +.LASF848: + .string "CAN_F4DATA1(canx) REG32((canx) + 0x264U)" +.LASF1122: + .string "CRC_CTL REG32(CRC + 0x08U)" +.LASF1884: + .string "I2C_CTL1(i2cx) REG32((i2cx) + 0x04U)" +.LASF1523: + .string "FMC_OBSTAT_USER BITS(2,9)" +.LASF319: + .string "__ELF__ 1" +.LASF1782: + .string "AFIO_EXTI15_SS BITS(12, 15)" +.LASF238: + .string "__FLT128_MIN_EXP__ (-16381)" +.LASF130: + .string "__INT_FAST64_MAX__ 0x7fffffffffffffffLL" +.LASF2665: + .string "TIMER_INTF_CMTIF BIT(5)" +.LASF2460: + .string "SPI_CTL0_CKPH BIT(0)" +.LASF2152: + .string "RCU_APB1RST_TIMER1RST BIT(0)" +.LASF2123: + .string "RCU_INT_PLL1STBIF BIT(5)" +.LASF2626: + .string "TIMER_CTL1_CCSE BIT(0)" +.LASF2681: + .string "TIMER_CHCTL0_CH0COMFEN BIT(2)" +.LASF2863: + .string "TIMER_CCXN_ENABLE ((uint16_t)0x0004U)" +.LASF2714: + .string "TIMER_CHCTL2_CH1NEN BIT(6)" +.LASF2794: + .string "TIMER_DMACFG_DMATA_CH2CV DMACFG_DMATA(15)" +.LASF743: + .string "BKP_DATA30 REG16((BKP) + 0x90U)" +.LASF817: + .string "CAN_F1DATA0(canx) REG32((canx) + 0x248U)" +.LASF1778: + .string "AFIO_EXTI11_SS BITS(12, 15)" +.LASF2087: + .string "RCU_RSTSCK REG32(RCU + 0x24U)" +.LASF971: + .string "CAN_TMDATA1_DB6 BITS(16,23)" +.LASF1229: + .string "DMA1 (DMA_BASE + 0x0400U)" +.LASF2962: + .string "__PTRDIFF_T " +.LASF2454: + .string "SPI_DATA(spix) REG32((spix) + 0x0CU)" +.LASF2644: + .string "TIMER_SMCFG_ETP BIT(15)" +.LASF1353: + .string "SNCTL_NRW(regval) (BITS(4,5) & ((uint32_t)(regval) << 4))" +.LASF1038: + .string "GET_ERR_TECNT(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF2053: + .string "PMU_CTL_BKPWEN BIT(8)" +.LASF2240: + .string "AHBRST_REG_OFFSET 0x28U" +.LASF433: + .string "INT8_MIN (-__INT8_MAX__ - 1)" +.LASF2629: + .string "TIMER_CTL1_MMC BITS(4,6)" +.LASF2443: + .string "RTC_FLAG_ALARM RTC_CTL_ALRMIF" +.LASF1200: + .string "DAC_LFSR_BITS1_0 DAC_WAVE_BIT_WIDTH_2" +.LASF272: + .string "__FLT64X_DECIMAL_DIG__ 36" +.LASF654: + .string "ADC_INSERTED_CHANNEL ((uint8_t)0x02U)" +.LASF1272: + .string "DMA_CHXCTL_DIR BIT(4)" +.LASF1457: + .string "EXTI_SWIEV_SWIEV10 BIT(10)" +.LASF867: + .string "CAN_F23DATA1(canx) REG32((canx) + 0x2FCU)" +.LASF587: + .string "ADC_RSQX_RSQN BITS(0,4)" +.LASF132: + .string "__UINT_FAST8_MAX__ 0xffffffffU" +.LASF2325: + .string "CFG0_CKOUT0SEL(regval) (BITS(24,27) & ((uint32_t)(regval) << 24))" +.LASF463: + .string "INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1)" +.LASF1981: + .string "I2C_PECTRANS_DISABLE ((uint32_t)0x00000000U)" +.LASF2250: + .string "RCU_CKSYSSRC_IRC8M CFG0_SCS(0)" +.LASF1360: + .string "EXMC_BANK0_NORSRAM_REGION0 ((uint32_t)0x00000000U)" +.LASF1002: + .string "STAT_REG_OFFSET ((uint8_t)0x04U)" +.LASF2942: + .string "WWDGT_CFG REG32((WWDGT) + 0x00000004U)" +.LASF2971: + .string "_SIZE_T " +.LASF1286: + .string "DMA_CHPADDR(dma,channel) REG32(((dma) + 0x10U) + 0x14U * (uint32_t)(channel))" +.LASF2307: + .string "RCU_PLL_MUL20 (PLLMF_4 | CFG0_PLLMF(3))" +.LASF2113: + .string "RCU_CFG0_PLLMF BITS(18,21)" +.LASF2678: + .string "TIMER_SWEVG_TRGG BIT(6)" +.LASF575: + .string "ADC_CTL1_DAL BIT(11)" +.LASF2499: + .string "SPI_I2SCTL_PCMSMOD BIT(7)" +.LASF1152: + .string "DAC_CTL_DTEN1 BIT(18)" +.LASF921: + .string "CAN_TSTAT_TMLS1 BIT(30)" +.LASF673: + .string "ADC_CHANNEL_12 ((uint8_t)0x0CU)" +.LASF2381: + .string "RCU_PLL1_MUL14 CFG1_PLL1MF(12)" +.LASF170: + .string "__DBL_EPSILON__ ((double)2.22044604925031308084726333618164062e-16L)" +.LASF346: + .string "_NEWLIB_VERSION \"4.1.0\"" +.LASF1949: + .string "I2C_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF793: + .string "CAN_TMDATA00(canx) REG32((canx) + 0x188U)" +.LASF882: + .string "CAN_CTL_IWMOD BIT(0)" +.LASF1787: + .string "GPIO_MODE_IN_FLOATING ((uint8_t)0x04U)" +.LASF1939: + .string "I2C_STAT1_HSTSMB BIT(6)" +.LASF1728: + .string "GPIO_BC_CR12 BIT(12)" +.LASF3154: + .string "CLT2_DENR(regval) (BIT(6) & ((uint32_t)(regval) << 6))" +.LASF1475: + .string "EXTI_PD_PD9 BIT(9)" +.LASF707: + .string "ADC_OVERSAMPLING_RATIO_MUL32 OVSCR_OVSR(4)" +.LASF410: + .string "_UINT16_T_DECLARED " +.LASF2134: + .string "RCU_INT_LXTALSTBIC BIT(17)" +.LASF887: + .string "CAN_CTL_AWU BIT(5)" +.LASF2754: + .string "TIMER_INT_FLAG_CMT TIMER_INT_CMT" +.LASF1674: + .string "GPIO_OCTL_OCTL6 BIT(6)" +.LASF3192: + .string "RCU_TIMER6RST" +.LASF2936: + .string "TIMER_HALLINTERFACE_DISABLE ((uint32_t)0x00000000U)" +.LASF3305: + .string "usart_deinit" +.LASF326: + .string "RT_USING_NEWLIB 1" +.LASF2682: + .string "TIMER_CHCTL0_CH0COMSEN BIT(3)" +.LASF902: + .string "CAN_TSTAT_MTFNERR0 BIT(1)" +.LASF2151: + .string "RCU_APB2RST_USART0RST BIT(14)" +.LASF125: + .string "__INT_FAST8_WIDTH__ 32" +.LASF457: + .string "INT_FAST8_MIN (-__INT_FAST8_MAX__ - 1)" +.LASF695: + .string "ADC_OVERSAMPLING_SHIFT_2B OVSCR_OVSS(2)" +.LASF1607: + .string "GPIO_CTL1(gpiox) REG32((gpiox) + 0x04U)" +.LASF3264: + .string "usart_synchronous_clock_config" +.LASF944: + .string "CAN_INTEN_SLPWIE BIT(17)" +.LASF1236: + .string "DMA_CH1CTL(dmax) REG32((dmax) + 0x1CU)" +.LASF1818: + .string "GPIO_EVENT_PIN_11 ((uint8_t)0x0BU)" +.LASF131: + .string "__INT_FAST64_WIDTH__ 64" +.LASF2235: + .string "RCU_REG_VAL(periph) (REG32(RCU + ((uint32_t)(periph) >> 6)))" +.LASF2907: + .string "TIMER_SMCFG_TRGSEL_ETIFP SMCFG_TRGSEL(7)" +.LASF3147: + .string "USART_CLEN_EN CTL1_CLEN(1)" +.LASF146: + .string "__FLT_DIG__ 6" +.LASF344: + .string "_SYS_FEATURES_H " +.LASF840: + .string "CAN_F24DATA0(canx) REG32((canx) + 0x300U)" +.LASF1707: + .string "GPIO_BOP_CR7 BIT(23)" +.LASF1079: + .string "CAN_BT_BS2_6TQ ((uint8_t)0x05U)" +.LASF600: + .string "ADC_FLAG_EOC ADC_STAT_EOC" +.LASF655: + .string "ADC_REGULAR_INSERTED_CHANNEL ((uint8_t)0x03U)" +.LASF2738: + .string "TIMER_DMACFG_DMATA BITS(0,4)" +.LASF3069: + .string "USART_STAT_TBE BIT(7)" +.LASF2852: + .string "TIMER_CCHP_PROT_0 CCHP_PROT(1)" +.LASF449: + .string "INT_LEAST32_MAX (__INT_LEAST32_MAX__)" +.LASF2900: + .string "TIMER_SMCFG_TRGSEL_ITI0 SMCFG_TRGSEL(0)" +.LASF2998: + .string "___int_wchar_t_h " +.LASF1876: + .string "GPIO_SWJ_DISABLE_REMAP ((uint32_t)0x00300200U)" +.LASF2224: + .string "RCU_RSTSCK_LPRSTF BIT(31)" +.LASF1569: + .string "OB_WP_6 ((uint32_t)0x00000040U)" +.LASF1852: + .string "GPIO_PIN_13 BIT(13)" +.LASF3269: + .string "usart_halfduplex_enable" +.LASF712: + .string "BKP BKP_BASE" +.LASF1232: + .string "DMA_CH0CTL(dmax) REG32((dmax) + 0x08U)" +.LASF686: + .string "ADC_RESOLUTION_12B OVSCR_DRES(0)" +.LASF1166: + .string "DACC_R12DH_DAC1_DH BITS(16,27)" +.LASF1177: + .string "DAC_TRIGGER_T4_TRGO CTL_DTSEL(3)" +.LASF1058: + .string "CAN_BT_BS1_1TQ ((uint8_t)0x00U)" +.LASF2703: + .string "TIMER_CHCTL1_CH3COMCEN BIT(15)" +.LASF2528: + .string "SPI_PSC_16 CTL0_PSC(3)" +.LASF3040: + .string "ECLIC_CFG_NLBITS_LSB (1u)" +.LASF2423: + .string "RTC_CTL_ALRMIF BIT(1)" +.LASF2452: + .string "SPI_CTL1(spix) REG32((spix) + 0x04U)" +.LASF3213: + .string "RCU_ADC0RST" +.LASF126: + .string "__INT_FAST16_MAX__ 0x7fffffff" +.LASF603: + .string "ADC_FLAG_STRC ADC_STAT_STRC" +.LASF2785: + .string "TIMER_DMACFG_DMATA_CHCTL0 DMACFG_DMATA(6)" +.LASF1443: + .string "EXTI_FTEN_FTEN15 BIT(15)" +.LASF2072: + .string "PMU_FLAG_RESET_WAKEUP ((uint8_t)0x00U)" +.LASF381: + .string "__int20__" +.LASF262: + .string "__FLT32X_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F32x" +.LASF1468: + .string "EXTI_PD_PD2 BIT(2)" +.LASF2639: + .string "TIMER_SMCFG_TRGS BITS(4,6)" +.LASF1532: + .string "FMC_REG_VALS(offset) (REG32(FMC + ((uint32_t)(offset) >> 12)))" +.LASF830: + .string "CAN_F14DATA0(canx) REG32((canx) + 0x2B0U)" +.LASF3198: + .string "RCU_UART3RST" +.LASF3024: + .string "_BITULL(x) (_AC(1,ULL) << (x))" +.LASF1024: + .string "TMDATA1_DB7(regval) (BITS(24,31) & ((uint32_t)(regval) << 24))" +.LASF2950: + .string "CFG_PSC(regval) (BITS(7,8) & ((uint32_t)(regval) << 7))" +.LASF199: + .string "__FLT16_NORM_MAX__ 6.55040000000000000000000000000000000e+4F16" +.LASF2043: + .string "GD32VF103_PMU_H " +.LASF847: + .string "CAN_F3DATA1(canx) REG32((canx) + 0x25CU)" +.LASF3132: + .string "USART_WM_IDLE CTL0_WM(0)" +.LASF502: + .string "APB1_BUS_BASE ((uint32_t)0x40000000U)" +.LASF554: + .string "ADC_STAT_EOIC BIT(2)" +.LASF1877: + .string "GPIO_SPI2_REMAP ((uint32_t)0x00201100U)" +.LASF1995: + .string "FWDGT_PSC REG32((FWDGT) + 0x00000004U)" +.LASF1805: + .string "GPIO_PORT_SOURCE_GPIOD ((uint8_t)0x03U)" +.LASF1053: + .string "CAN_SILENT_LOOPBACK_MODE ((uint8_t)0x03U)" +.LASF2613: + .string "TIMER_CH2CV(timerx) REG32((timerx) + 0x3CU)" +.LASF1789: + .string "GPIO_MODE_IPU ((uint8_t)0x48U)" +.LASF1087: + .string "CAN_FF_EXTENDED ((uint32_t)0x00000004U)" +.LASF3005: + .string "NULL ((void *)0)" +.LASF444: + .string "UINT_LEAST16_MAX (__UINT_LEAST16_MAX__)" +.LASF1942: + .string "I2C_CKCFG_CLKC BITS(0,11)" +.LASF1476: + .string "EXTI_PD_PD10 BIT(10)" +.LASF1111: + .string "CAN_INT_WERR CAN_INTEN_WERRIE" +.LASF2092: + .string "RCU_CTL_IRC8MSTB BIT(1)" +.LASF1596: + .string "FMC_TIMEOUT_COUNT ((uint32_t)0x000F0000U)" +.LASF2472: + .string "SPI_CTL0_BDOEN BIT(14)" +.LASF3089: + .string "USART_CTL1_ADDR BITS(0,3)" +.LASF2641: + .string "TIMER_SMCFG_ETFC BITS(8,11)" +.LASF1317: + .string "DMA_MEMORY_WIDTH_32BIT CHCTL_MWIDTH(2U)" +.LASF697: + .string "ADC_OVERSAMPLING_SHIFT_4B OVSCR_OVSS(4)" +.LASF1199: + .string "DAC_LFSR_BIT0 DAC_WAVE_BIT_WIDTH_1" +.LASF614: + .string "ADC_DAUL_REGULAL_PARALLEL CTL0_SYNCM(6)" +.LASF2595: + .string "TIMER4 (TIMER_BASE + 0x00000C00U)" +.LASF928: + .string "CAN_RFIFO1_RFF1 BIT(3)" +.LASF1735: + .string "GPIO_LOCK_LK3 BIT(3)" +.LASF792: + .string "CAN_TMP0(canx) REG32((canx) + 0x184U)" +.LASF1650: + .string "GPIO_CTL1_MD15 BITS(28, 29)" +.LASF1105: + .string "CAN_INT_RFNE0 CAN_INTEN_RFNEIE0" +.LASF1305: + .string "DMA_MEMORY_TO_PERIPHERAL ((uint8_t)0x01U)" +.LASF1265: + .string "DMA_INTC_FTFIFC BIT(1)" +.LASF2653: + .string "TIMER_DMAINTEN_UPDEN BIT(8)" +.LASF1151: + .string "DAC_CTL_DBOFF1 BIT(17)" +.LASF1419: + .string "EXTI_RTEN_RTEN10 BIT(10)" +.LASF505: + .string "AHB3_BUS_BASE ((uint32_t)0x60000000U)" +.LASF2983: + .string "_GCC_SIZE_T " +.LASF1679: + .string "GPIO_OCTL_OCTL11 BIT(11)" +.LASF3056: + .string "USART_DATA(usartx) REG32((usartx) + (0x00000004U))" +.LASF1571: + .string "OB_WP_8 ((uint32_t)0x00000100U)" +.LASF778: + .string "BKP_FLAG_TAMPER BKP_TPCS_TEF" +.LASF973: + .string "CAN_RFIFOMI_FT BIT(1)" +.LASF375: + .string "__STDINT_EXP(x) __ ##x ##__" +.LASF777: + .string "TAMPER_PIN_ACTIVE_LOW ((uint16_t)0x0002U)" +.LASF1234: + .string "DMA_CH0PADDR(dmax) REG32((dmax) + 0x10U)" +.LASF3003: + .string "__need_wchar_t" +.LASF1766: + .string "AFIO_PCF0_TIMER1_ITI1_REMAP BIT(29)" +.LASF974: + .string "CAN_RFIFOMI_FF BIT(2)" +.LASF139: + .string "__GCC_IEC_559 0" +.LASF1851: + .string "GPIO_PIN_12 BIT(12)" +.LASF320: + .string "USE_PLIC 1" +.LASF206: + .string "__FLT32_MANT_DIG__ 24" +.LASF3193: + .string "RCU_WWDGTRST" +.LASF1870: + .string "GPIO_CAN0_PARTIAL_REMAP ((uint32_t)0x001D4000U)" +.LASF1505: + .string "FMC_OBKEY_OBKEY BITS(0,31)" +.LASF321: + .string "USE_M_TIME 1" +.LASF1221: + .string "DAC_TRIANGLE_AMPLITUDE_127 DAC_WAVE_BIT_WIDTH_7" +.LASF3134: + .string "CTL0_WL(regval) (BIT(12) & ((uint32_t)(regval) << 12))" +.LASF2661: + .string "TIMER_INTF_CH0IF BIT(1)" +.LASF3096: + .string "USART_CTL1_STB BITS(12,13)" +.LASF1493: + .string "FMC_ADDR REG32((FMC) + 0x14U)" +.LASF2735: + .string "TIMER_CCHP_BRKP BIT(13)" +.LASF2956: + .string "_STDDEF_H " +.LASF1303: + .string "DMA_INT_ERR DMA_CHXCTL_ERRIE" +.LASF1967: + .string "I2C_DUADEN_ENABLE ((uint32_t)0x00000001U)" +.LASF1458: + .string "EXTI_SWIEV_SWIEV11 BIT(11)" +.LASF2972: + .string "_SYS_SIZE_T_H " +.LASF80: + .string "__SHRT_WIDTH__ 16" +.LASF2560: + .string "I2S_CKPL_LOW ((uint32_t)0x00000000U)" +.LASF1869: + .string "GPIO_TIMER3_REMAP ((uint32_t)0x00001000U)" +.LASF67: + .string "__GXX_ABI_VERSION 1014" +.LASF1492: + .string "FMC_CTL REG32((FMC) + 0x10U)" +.LASF1447: + .string "EXTI_SWIEV_SWIEV0 BIT(0)" +.LASF684: + .string "ADC_INT_FLAG_EOIC ADC_STAT_EOIC" +.LASF1019: + .string "TMDATA0_DB2(regval) (BITS(16,23) & ((uint32_t)(regval) << 16))" +.LASF361: + .string "__SSP_FORTIFY_LEVEL 0" +.LASF2449: + .string "SPI1 SPI_BASE" +.LASF2413: + .string "RTC_DIVH REG32(RTC + 0x10U)" +.LASF2976: + .string "_SIZE_T_ " +.LASF2356: + .string "RCU_PREDV0_DIV16 CFG1_PREDV0(15)" +.LASF659: + .string "ADC_INSERTED_CHANNEL_2 ((uint8_t)0x02U)" +.LASF2553: + .string "I2S_MODE_MASTERRX I2SCTL_I2SOPMOD(3)" +.LASF2811: + .string "TIMER_DMACFG_DMATC_13TRANSFER DMACFG_DMATC(12)" +.LASF288: + .string "__GCC_ATOMIC_CHAR_LOCK_FREE 1" +.LASF115: + .string "__INT_LEAST64_WIDTH__ 64" +.LASF1204: + .string "DAC_LFSR_BITS5_0 DAC_WAVE_BIT_WIDTH_6" +.LASF2357: + .string "CFG1_PREDV1(regval) (BITS(4,7) & ((uint32_t)(regval) << 4))" +.LASF2370: + .string "RCU_PREDV1_DIV13 CFG1_PREDV1(12)" +.LASF783: + .string "CAN_CTL(canx) REG32((canx) + 0x00U)" +.LASF280: + .string "__FLT64X_HAS_QUIET_NAN__ 1" +.LASF569: + .string "ADC_CTL0_RWDEN BIT(23)" +.LASF1645: + .string "GPIO_CTL1_CTL12 BITS(18, 19)" +.LASF2685: + .string "TIMER_CHCTL0_CH1MS BITS(8,9)" +.LASF2830: + .string "TIMER_PSC_RELOAD_NOW TIMER_SWEVG_UPG" +.LASF2873: + .string "TIMER_OC_MODE_TIMING ((uint16_t)0x0000U)" +.LASF1701: + .string "GPIO_BOP_CR1 BIT(17)" +.LASF58: + .string "__INT_FAST16_TYPE__ int" +.LASF890: + .string "CAN_CTL_SWRST BIT(15)" +.LASF2839: + .string "TIMER_SP_MODE_REPETITIVE ((uint32_t)0x00000000U)" +.LASF699: + .string "ADC_OVERSAMPLING_SHIFT_6B OVSCR_OVSS(6)" +.LASF641: + .string "ADC_SAMPLETIME_7POINT5 SAMPTX_SPT(1)" +.LASF3283: + .string "data" +.LASF1913: + .string "I2C_SADDR0_ADDRESS0 BIT(0)" +.LASF2517: + .string "SPI_NSS_HARD ((uint32_t)0x00000000U)" +.LASF1698: + .string "GPIO_BOP_BOP14 BIT(14)" +.LASF2211: + .string "RCU_BDCTL_LXTALSTB BIT(1)" +.LASF2312: + .string "RCU_PLL_MUL25 (PLLMF_4 | CFG0_PLLMF(8))" +.LASF822: + .string "CAN_F6DATA0(canx) REG32((canx) + 0x270U)" +.LASF544: + .string "ADC_RSQ2(adcx) REG32((adcx) + 0x34U)" +.LASF2988: + .string "__WCHAR_T__ " +.LASF337: + .string "IRC8M_VALUE ((uint32_t)8000000)" +.LASF1463: + .string "EXTI_SWIEV_SWIEV16 BIT(16)" +.LASF87: + .string "__SIZE_WIDTH__ 32" +.LASF1075: + .string "CAN_BT_BS2_2TQ ((uint8_t)0x01U)" +.LASF714: + .string "BKP_DATA1 REG16((BKP) + 0x08U)" +.LASF2973: + .string "_T_SIZE_ " +.LASF2527: + .string "SPI_PSC_8 CTL0_PSC(2)" +.LASF3120: + .string "USART_CTL2_REG_OFFSET (0x00000014U)" +.LASF2877: + .string "TIMER_OC_MODE_LOW ((uint16_t)0x0040U)" +.LASF1600: + .string "GPIOA (GPIO_BASE + 0x00000000U)" +.LASF2266: + .string "RCU_AHB_CKSYS_DIV512 CFG0_AHBPSC(15)" +.LASF2166: + .string "RCU_APB1RST_I2C1RST BIT(22)" +.LASF473: + .string "SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)" +.LASF2744: + .string "TIMER_INT_CH2 TIMER_DMAINTEN_CH2IE" +.LASF1603: + .string "GPIOD (GPIO_BASE + 0x00000C00U)" +.LASF3050: + .string "USART1 USART_BASE" +.LASF1665: + .string "GPIO_ISTAT_ISTAT13 BIT(13)" +.LASF448: + .string "INT_LEAST32_MIN (-__INT_LEAST32_MAX__ - 1)" +.LASF2551: + .string "I2S_MODE_SLAVERX I2SCTL_I2SOPMOD(1)" +.LASF442: + .string "INT_LEAST16_MIN (-__INT_LEAST16_MAX__ - 1)" +.LASF2112: + .string "RCU_CFG0_PREDV0_LSB BIT(17)" +.LASF1212: + .string "DAC_ALIGN_12B_R DATA_ALIGN(0)" +.LASF538: + .string "ADC_IOFF2(adcx) REG32((adcx) + 0x1CU)" +.LASF2654: + .string "TIMER_DMAINTEN_CH0DEN BIT(9)" +.LASF52: + .string "__INT_LEAST64_TYPE__ long long int" +.LASF713: + .string "BKP_DATA0 REG16((BKP) + 0x04U)" +.LASF1827: + .string "GPIO_PIN_SOURCE_4 ((uint8_t)0x04U)" +.LASF1090: + .string "CAN_RFIF_RFL_MASK ((uint32_t)0x00000003U)" +.LASF1803: + .string "GPIO_PORT_SOURCE_GPIOB ((uint8_t)0x01U)" +.LASF2131: + .string "RCU_INT_PLL1STBIE BIT(13)" +.LASF1383: + .string "EXTI_INTEN_INTEN12 BIT(12)" +.LASF2386: + .string "RCU_PLL2_MUL8 CFG1_PLL2MF(6)" +.LASF1530: + .string "FMC_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF2664: + .string "TIMER_INTF_CH3IF BIT(4)" +.LASF1068: + .string "CAN_BT_BS1_11TQ ((uint8_t)0x0AU)" +.LASF770: + .string "BKP_DATA0_9(number) REG16((BKP) + 0x04U + (number) * 0x04U)" +.LASF1206: + .string "DAC_LFSR_BITS7_0 DAC_WAVE_BIT_WIDTH_8" +.LASF3025: + .string "ECLICINTCTLBITS 4" +.LASF1397: + .string "EXTI_EVEN_EVEN7 BIT(7)" +.LASF1899: + .string "I2C_CTL0_SS BIT(7)" +.LASF632: + .string "ADC0_1_EXTTRIG_INSERTED_T0_CH3 CTL1_ETSIC(1)" +.LASF2968: + .string "__need_ptrdiff_t" +.LASF1659: + .string "GPIO_ISTAT_ISTAT7 BIT(7)" +.LASF2537: + .string "I2S_AUDIOSAMPLE_32K ((uint32_t)32000U)" +.LASF2917: + .string "SMCFG_SMC(regval) (BITS(0, 2) & ((uint32_t)(regval) << 0U))" +.LASF240: + .string "__FLT128_MAX_EXP__ 16384" +.LASF1910: + .string "I2C_CTL1_BUFIE BIT(10)" +.LASF2482: + .string "SPI_STAT_RBNE BIT(0)" +.LASF1974: + .string "I2C_DMA_ON I2C_CTL1_DMAON" +.LASF1415: + .string "EXTI_RTEN_RTEN6 BIT(6)" +.LASF187: + .string "__LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L" +.LASF2803: + .string "TIMER_DMACFG_DMATC_5TRANSFER DMACFG_DMATC(4)" +.LASF1179: + .string "DAC_TRIGGER_T3_TRGO CTL_DTSEL(5)" +.LASF2501: + .string "SPI_I2SCTL_I2SEN BIT(10)" +.LASF1881: + .string "I2C0 I2C_BASE" +.LASF405: + .string "_SYS__STDINT_H " +.LASF1186: + .string "DWBW(regval) (BITS(8,11) & ((uint32_t)(regval) << 8))" +.LASF3179: + .string "long long int" +.LASF164: + .string "__DBL_MAX_EXP__ 1024" +.LASF2708: + .string "TIMER_CHCTL2_CH0EN BIT(0)" +.LASF91: + .string "__UINTMAX_C(c) c ## ULL" +.LASF1987: + .string "DATA_RECV(regval) GET_BITS((uint32_t)(regval), 0, 7)" +.LASF2602: + .string "TIMER_INTF(timerx) REG32((timerx) + 0x10U)" +.LASF701: + .string "ADC_OVERSAMPLING_SHIFT_8B OVSCR_OVSS(8)" +.LASF2896: + .string "TIMER_IC_PSC_DIV2 ((uint16_t)0x0004U)" +.LASF297: + .string "__GCC_ATOMIC_POINTER_LOCK_FREE 2" +.LASF1380: + .string "EXTI_INTEN_INTEN9 BIT(9)" +.LASF1845: + .string "GPIO_PIN_6 BIT(6)" +.LASF3049: + .string "ECLIC_GROUP_LEVEL4_PRIO0 4" +.LASF2457: + .string "SPI_TCRC(spix) REG32((spix) + 0x18U)" +.LASF2230: + .string "RCU_CFG1_PREDV0SEL BIT(16)" +.LASF1617: + .string "AFIO_EXTISS2 REG32(AFIO + 0x10U)" +.LASF516: + .string "DAC_BASE (APB1_BUS_BASE + 0x00007400U)" +.LASF1526: + .string "FMC_WSEN_WSEN BIT(0)" +.LASF2393: + .string "RCU_PLL2_MUL15 CFG1_PLL2MF(13)" +.LASF2699: + .string "TIMER_CHCTL1_CH3MS BITS(8,9)" +.LASF873: + .string "CAN_TMP(canx,bank) REG32((canx) + 0x184U + ((bank) * 0x10U))" +.LASF3206: + .string "RCU_DACRST" +.LASF1792: + .string "GPIO_MODE_AF_OD ((uint8_t)0x1CU)" +.LASF1390: + .string "EXTI_EVEN_EVEN0 BIT(0)" +.LASF878: + .string "CAN_RFIFOMI(canx,bank) REG32((canx) + 0x1B0U + ((bank) * 0x10U))" +.LASF1223: + .string "DAC_TRIANGLE_AMPLITUDE_511 DAC_WAVE_BIT_WIDTH_9" +.LASF682: + .string "ADC_INT_FLAG_WDE ADC_STAT_WDE" +.LASF3156: + .string "USART_DENR_DISABLE CLT2_DENR(0)" +.LASF1743: + .string "GPIO_LOCK_LK11 BIT(11)" +.LASF137: + .string "__INTPTR_WIDTH__ 32" +.LASF2504: + .string "SPI_I2SPSC_OF BIT(8)" +.LASF12: + .string "__ATOMIC_RELEASE 3" +.LASF1138: + .string "DACC_R12DH REG32(DAC + 0x20U)" +.LASF1629: + .string "GPIO_CTL0_CTL4 BITS(18, 19)" +.LASF458: + .string "INT_FAST8_MAX (__INT_FAST8_MAX__)" +.LASF1294: + .string "DMA_INT_FLAG_FTF DMA_INTF_FTFIF" +.LASF2693: + .string "TIMER_CHCTL0_CH1CAPFLT BITS(12,15)" +.LASF589: + .string "ADC_ISQ_ISQN BITS(0,4)" +.LASF1289: + .string "DMA_CHCNT_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF2432: + .string "RTC_CNTH_CNT BITS(0,15)" +.LASF2334: + .string "RCU_CKOUT0SRC_CKPLL2 CFG0_CKOUT0SEL(11)" +.LASF3034: + .string "ECLIC_INT_ATTR_TRIG_EDGE 0x02" +.LASF1556: + .string "OB_SPC_SPC_N ((uint32_t)0x0000FF00U)" +.LASF1624: + .string "GPIO_CTL0_MD2 BITS(8, 9)" +.LASF1292: + .string "DMA_CHINTF_RESET_VALUE (DMA_INTF_GIF | DMA_INTF_FTFIF | DMA_INTF_HTFIF | DMA_INTF_ERRIF)" +.LASF1388: + .string "EXTI_INTEN_INTEN17 BIT(17)" +.LASF1933: + .string "I2C_STAT0_SMBALT BIT(15)" +.LASF2567: + .string "SPI_I2S_INT_RBNE ((uint8_t)0x01U)" +.LASF1218: + .string "DAC_TRIANGLE_AMPLITUDE_15 DAC_WAVE_BIT_WIDTH_4" +.LASF2192: + .string "RCU_APB1EN_TIMER3EN BIT(2)" +.LASF2946: + .string "WWDGT_CFG_WIN BITS(0,6)" +.LASF2310: + .string "RCU_PLL_MUL23 (PLLMF_4 | CFG0_PLLMF(6))" +.LASF143: + .string "__DEC_EVAL_METHOD__ 2" +.LASF2849: + .string "TIMER_OUTAUTO_DISABLE ((uint16_t)0x0000U)" +.LASF1729: + .string "GPIO_BC_CR13 BIT(13)" +.LASF225: + .string "__FLT64_MAX_EXP__ 1024" +.LASF2177: + .string "RCU_AHBEN_EXMCEN BIT(8)" +.LASF1213: + .string "DAC_ALIGN_12B_L DATA_ALIGN(1)" +.LASF1652: + .string "GPIO_ISTAT_ISTAT0 BIT(0)" +.LASF3138: + .string "USART_STB_1BIT CTL1_STB(0)" +.LASF2171: + .string "RCU_APB1RST_DACRST BIT(29)" +.LASF3047: + .string "ECLIC_GROUP_LEVEL2_PRIO2 2" +.LASF1944: + .string "I2C_CKCFG_FAST BIT(15)" +.LASF2947: + .string "WWDGT_CFG_PSC BITS(7,8)" +.LASF893: + .string "CAN_STAT_SLPWS BIT(1)" +.LASF3290: + .string "usart_stop_bit_set" +.LASF3149: + .string "USART_CPH_1CK CTL1_CPH(0)" +.LASF1131: + .string "DAC_SWT REG32(DAC + 0x04U)" +.LASF1036: + .string "GET_RFIFOMDATA1_DB7(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF2461: + .string "SPI_CTL0_CKPL BIT(1)" +.LASF2871: + .string "TIMER_OCN_IDLE_STATE_HIGH ((uint16_t)0x0200U)" +.LASF1862: + .string "GPIO_TIMER0_PARTIAL_REMAP ((uint32_t)0x00160040U)" +.LASF1007: + .string "BT_BAUDPSC(regval) (BITS(0,9) & ((uint32_t)(regval) << 0))" +.LASF1501: + .string "OB_WP2 REG16((OB) + 0x0CU)" +.LASF1578: + .string "OB_WP_15 ((uint32_t)0x00008000U)" +.LASF2506: + .string "SPI_MASTER (SPI_CTL0_MSTMOD | SPI_CTL0_SWNSS)" +.LASF1032: + .string "GET_RFIFOMDATA0_DB3(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF588: + .string "ADC_RSQ0_RL BITS(20,23)" +.LASF5: + .string "__GNUC__ 10" +.LASF2688: + .string "TIMER_CHCTL0_CH1COMCTL BITS(12,14)" +.LASF2777: + .string "TIMER_DMAREQUEST_CHANNELEVENT ((uint32_t)0x00000000U)" +.LASF2582: + .string "SPI_FLAG_FERR SPI_STAT_FERR" +.LASF2941: + .string "WWDGT_CTL REG32((WWDGT) + 0x00000000U)" +.LASF2098: + .string "RCU_CTL_CKMEN BIT(19)" +.LASF2275: + .string "RCU_APB2_CKAHB_DIV2 CFG0_APB2PSC(4)" +.LASF679: + .string "ADC_INT_WDE ADC_STAT_WDE" +.LASF1835: + .string "GPIO_PIN_SOURCE_12 ((uint8_t)0x0CU)" +.LASF1028: + .string "GET_RFIFOMP_FI(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF2679: + .string "TIMER_SWEVG_BRKG BIT(7)" +.LASF1301: + .string "DMA_INT_FTF DMA_CHXCTL_FTFIE" +.LASF2554: + .string "I2SCTL_I2SSTD(regval) (BITS(4,5) & ((uint32_t)(regval) << 4))" +.LASF1373: + .string "EXTI_INTEN_INTEN2 BIT(2)" +.LASF181: + .string "__DECIMAL_DIG__ 36" +.LASF97: + .string "__INT16_MAX__ 0x7fff" +.LASF1649: + .string "GPIO_CTL1_CTL14 BITS(26, 27)" +.LASF2990: + .string "_T_WCHAR_ " +.LASF2041: + .string "DBG_LOW_POWER_DEEPSLEEP DBG_CTL_DSLP_HOLD" +.LASF2309: + .string "RCU_PLL_MUL22 (PLLMF_4 | CFG0_PLLMF(5))" +.LASF985: + .string "CAN_RFIFOMDATA1_DB5 BITS(8,15)" +.LASF2214: + .string "RCU_BDCTL_RTCEN BIT(15)" +.LASF2827: + .string "TIMER_COUNTER_CENTER_DOWN CTL0_CAM(1)" +.LASF1326: + .string "GD32VF103_ECLIC_H " +.LASF1985: + .string "I2C_ARP_DISABLE ((uint32_t)0x00000000U)" +.LASF495: + .string "BITS(start,end) ((0xFFFFFFFFUL << (start)) & (0xFFFFFFFFUL >> (31U - (uint32_t)(end))))" +.LASF470: + .string "INTMAX_MIN (-INTMAX_MAX - 1)" +.LASF1481: + .string "EXTI_PD_PD15 BIT(15)" +.LASF2057: + .string "PMU_CS_WUPEN BIT(8)" +.LASF791: + .string "CAN_TMI0(canx) REG32((canx) + 0x180U)" +.LASF2103: + .string "RCU_CTL_PLL2EN BIT(28)" +.LASF2122: + .string "RCU_INT_PLLSTBIF BIT(4)" +.LASF2328: + .string "RCU_CKOUT0SRC_IRC8M CFG0_CKOUT0SEL(5)" +.LASF1161: + .string "DAC0_R8DH_DAC0_DH BITS(0,7)" +.LASF2985: + .string "__size_t " +.LASF2542: + .string "I2SCTL_DTLEN(regval) (BITS(1,2) & ((uint32_t)(regval) << 1))" +.LASF3240: + .string "interrupt" +.LASF2130: + .string "RCU_INT_PLLSTBIE BIT(12)" +.LASF2232: + .string "RCU_CFG1_I2S2SEL BIT(18)" +.LASF119: + .string "__UINT16_C(c) c" +.LASF1865: + .string "GPIO_TIMER1_PARTIAL_REMAP1 ((uint32_t)0x00180200U)" +.LASF1424: + .string "EXTI_RTEN_RTEN15 BIT(15)" +.LASF3030: + .string "ECLIC_INT_IE_OFFSET _AC(0x1001,UL)" +.LASF2726: + .string "TIMER_CH0CV_CH0VAL BITS(0,15)" +.LASF1626: + .string "GPIO_CTL0_MD3 BITS(12, 13)" +.LASF3092: + .string "USART_CTL1_CLEN BIT(8)" +.LASF836: + .string "CAN_F20DATA0(canx) REG32((canx) + 0x2E0U)" +.LASF1693: + .string "GPIO_BOP_BOP9 BIT(9)" +.LASF373: + .string "__EXP" +.LASF290: + .string "__GCC_ATOMIC_CHAR32_T_LOCK_FREE 2" +.LASF1882: + .string "I2C1 (I2C_BASE + 0x00000400U)" +.LASF796: + .string "CAN_TMP1(canx) REG32((canx) + 0x194U)" +.LASF3205: + .string "RCU_PMURST" +.LASF547: + .string "ADC_IDATA1(adcx) REG32((adcx) + 0x40U)" +.LASF2158: + .string "RCU_APB1RST_WWDGTRST BIT(11)" +.LASF263: + .string "__FLT32X_HAS_DENORM__ 1" +.LASF1601: + .string "GPIOB (GPIO_BASE + 0x00000400U)" +.LASF2918: + .string "TIMER_SLAVE_MODE_DISABLE SMCFG_SMC(0)" +.LASF2256: + .string "RCU_SCSS_PLL CFG0_SCSS(2)" +.LASF920: + .string "CAN_TSTAT_TMLS0 BIT(29)" +.LASF1838: + .string "GPIO_PIN_SOURCE_15 ((uint8_t)0x0FU)" +.LASF3113: + .string "USART_BIT_POS(val) ((uint32_t)(val) & (0x0000001FU))" +.LASF1276: + .string "DMA_CHXCTL_PWIDTH BITS(8,9)" +.LASF2783: + .string "TIMER_DMACFG_DMATA_INTF DMACFG_DMATA(4)" +.LASF769: + .string "BKP_TPCS_TIF BIT(9)" +.LASF527: + .string "GD32VF103_LIBOPT_H " +.LASF3284: + .string "usart_receive_config" +.LASF1725: + .string "GPIO_BC_CR9 BIT(9)" +.LASF2727: + .string "TIMER_CH1CV_CH1VAL BITS(0,15)" +.LASF372: + .string "___int_least64_t_defined 1" +.LASF3057: + .string "USART_BAUD(usartx) REG32((usartx) + (0x00000008U))" +.LASF210: + .string "__FLT32_MAX_EXP__ 128" +.LASF3239: + .string "usart_interrupt_disable" +.LASF861: + .string "CAN_F17DATA1(canx) REG32((canx) + 0x24CU)" +.LASF1348: + .string "EXMC_SNTCFG_AHLD BITS(4,7)" +.LASF1791: + .string "GPIO_MODE_OUT_PP ((uint8_t)0x10U)" +.LASF3279: + .string "usart_address_config" +.LASF2953: + .string "WWDGT_CFG_PSC_DIV4 CFG_PSC(2)" +.LASF1604: + .string "GPIOE (GPIO_BASE + 0x00001000U)" +.LASF3207: + .string "RCU_AFRST" +.LASF3026: + .string "ECLIC_CFG_OFFSET 0x0" +.LASF2729: + .string "TIMER_CH3CV_CH3VAL BITS(0,15)" +.LASF2820: + .string "TIMER_EVENT_SRC_CH2G ((uint16_t)0x0008U)" +.LASF1092: + .string "CAN_EFID_MASK ((uint32_t)0x1FFFFFFFU)" +.LASF1117: + .string "CAN_INT_SLPW CAN_INTEN_SLPWIE" +.LASF2728: + .string "TIMER_CH2CV_CH2VAL BITS(0,15)" +.LASF304: + .string "__riscv_compressed 1" +.LASF266: + .string "__FLT64X_MANT_DIG__ 113" +.LASF1154: + .string "DAC_CTL_DWM1 BITS(22,23)" +.LASF2016: + .string "FWDGT_RLD_TIMEOUT ((uint32_t)0x000FFFFFU)" +.LASF1816: + .string "GPIO_EVENT_PIN_9 ((uint8_t)0x09U)" +.LASF1567: + .string "OB_WP_4 ((uint32_t)0x00000010U)" +.LASF3274: + .string "usart_lin_mode_enable" +.LASF917: + .string "CAN_TSTAT_TME0 BIT(26)" +.LASF662: + .string "ADC_CHANNEL_1 ((uint8_t)0x01U)" +.LASF580: + .string "ADC_CTL1_SWICST BIT(21)" +.LASF1268: + .string "DMA_CHXCTL_CHEN BIT(0)" +.LASF2094: + .string "RCU_CTL_IRC8MCALIB BITS(8,15)" +.LASF3188: + .string "RCU_TIMER2RST" +.LASF2367: + .string "RCU_PREDV1_DIV10 CFG1_PREDV1(9)" +.LASF1552: + .string "OB_USER_MASK ((uint8_t)0xF0U)" +.LASF2819: + .string "TIMER_EVENT_SRC_CH1G ((uint16_t)0x0004U)" +.LASF3124: + .string "CTL0_TEN(regval) (BIT(3) & ((uint32_t)(regval) << 3))" +.LASF3022: + .string "_AT(T,X) ((T)(X))" +.LASF3169: + .string "unsigned int" +.LASF2455: + .string "SPI_CRCPOLY(spix) REG32((spix) + 0x10U)" +.LASF1943: + .string "I2C_CKCFG_DTCY BIT(14)" +.LASF2268: + .string "RCU_APB1_CKAHB_DIV1 CFG0_APB1PSC(0)" +.LASF425: + .string "__int_least64_t_defined 1" +.LASF1893: + .string "I2C_CTL0_I2CEN BIT(0)" +.LASF771: + .string "BKP_DATA10_41(number) REG16((BKP) + 0x40U + ((number)-10U) * 0x04U)" +.LASF2615: + .string "TIMER_CCHP(timerx) REG32((timerx) + 0x44U)" +.LASF415: + .string "_INT64_T_DECLARED " +.LASF2757: + .string "TIMER_FLAG_UP TIMER_INTF_UPIF" +.LASF1686: + .string "GPIO_BOP_BOP2 BIT(2)" +.LASF2853: + .string "TIMER_CCHP_PROT_1 CCHP_PROT(2)" +.LASF2930: + .string "TIMER_EXT_TRI_PSC_DIV2 SMCFG_ETPSC(1)" +.LASF1160: + .string "DAC0_L12DH_DAC0_DH BITS(4,15)" +.LASF1633: + .string "GPIO_CTL0_CTL6 BITS(26, 27)" +.LASF1549: + .string "OB_STDBY_NRST ((uint8_t)0x04U)" +.LASF1300: + .string "DMA_FLAG_ERR DMA_INTF_ERRIF" + .ident "GCC: (xPack GNU RISC-V Embedded GCC x86_64) 10.2.0" diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_wwdgt.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_wwdgt.c new file mode 100644 index 0000000000..ca9a6a315c --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/Source/gd32vf103_wwdgt.c @@ -0,0 +1,147 @@ +/*! + \file gd32vf103_wwdgt.c + \brief WWDGT driver + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "gd32vf103_wwdgt.h" + +/* write value to WWDGT_CTL_CNT bit field */ +#define CTL_CNT(regval) (BITS(0,6) & ((uint32_t)(regval) << 0)) +/* write value to WWDGT_CFG_WIN bit field */ +#define CFG_WIN(regval) (BITS(0,6) & ((uint32_t)(regval) << 0)) + +/*! + \brief reset the window watchdog timer configuration + \param[in] none + \param[out] none + \retval none +*/ +void wwdgt_deinit(void) +{ + rcu_periph_reset_enable(RCU_WWDGTRST); + rcu_periph_reset_disable(RCU_WWDGTRST); +} + +/*! + \brief start the window watchdog timer counter + \param[in] none + \param[out] none + \retval none +*/ +void wwdgt_enable(void) +{ + WWDGT_CTL |= WWDGT_CTL_WDGTEN; +} + +/*! + \brief configure the window watchdog timer counter value + \param[in] counter_value: 0x00 - 0x7F + \param[out] none + \retval none +*/ +void wwdgt_counter_update(uint16_t counter_value) +{ + uint32_t reg = 0U; + + reg = (WWDGT_CTL & (~WWDGT_CTL_CNT)); + reg |= CTL_CNT(counter_value); + + WWDGT_CTL = reg; +} + +/*! + \brief configure counter value, window value, and prescaler divider value + \param[in] counter: 0x00 - 0x7F + \param[in] window: 0x00 - 0x7F + \param[in] prescaler: wwdgt prescaler value + only one parameter can be selected which is shown as below: + \arg WWDGT_CFG_PSC_DIV1: the time base of window watchdog counter = (PCLK1/4096)/1 + \arg WWDGT_CFG_PSC_DIV2: the time base of window watchdog counter = (PCLK1/4096)/2 + \arg WWDGT_CFG_PSC_DIV4: the time base of window watchdog counter = (PCLK1/4096)/4 + \arg WWDGT_CFG_PSC_DIV8: the time base of window watchdog counter = (PCLK1/4096)/8 + \param[out] none + \retval none +*/ +void wwdgt_config(uint16_t counter, uint16_t window, uint32_t prescaler) +{ + uint32_t reg_cfg = 0U, reg_ctl = 0U; + + /* clear WIN and PSC bits, clear CNT bit */ + reg_cfg = (WWDGT_CFG &(~(WWDGT_CFG_WIN|WWDGT_CFG_PSC))); + reg_ctl = (WWDGT_CTL &(~WWDGT_CTL_CNT)); + + /* configure WIN and PSC bits, configure CNT bit */ + reg_cfg |= CFG_WIN(window); + reg_cfg |= prescaler; + reg_ctl |= CTL_CNT(counter); + + WWDGT_CTL = reg_ctl; + WWDGT_CFG = reg_cfg; +} + +/*! + \brief enable early wakeup interrupt of WWDGT + \param[in] none + \param[out] none + \retval none +*/ +void wwdgt_interrupt_enable(void) +{ + WWDGT_CFG |= WWDGT_CFG_EWIE; +} + +/*! + \brief check early wakeup interrupt state of WWDGT + \param[in] none + \param[out] none + \retval FlagStatus: SET or RESET +*/ +FlagStatus wwdgt_flag_get(void) +{ + if(WWDGT_STAT & WWDGT_STAT_EWIF){ + return SET; + } + + return RESET; +} + +/*! + \brief clear early wakeup interrupt state of WWDGT + \param[in] none + \param[out] none + \retval none +*/ +void wwdgt_flag_clear(void) +{ + WWDGT_STAT &= (~WWDGT_STAT_EWIF); +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/gd32vf103.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/gd32vf103.h new file mode 100644 index 0000000000..7e99cf006e --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/gd32vf103.h @@ -0,0 +1,242 @@ +/*! + \file gd32vf103.h + \brief general definitions for GD32VF103 + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_H +#define GD32VF103_H + +#ifdef __cplusplus + extern "C" { +#endif + + /* IO definitions (access restrictions to peripheral registers) */ + /** + + IO Type Qualifiers 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 */ + + /* define value of high speed crystal oscillator (HXTAL) in Hz */ + #if !defined HXTAL_VALUE + #ifdef GD32VF103R_START + #define HXTAL_VALUE ((uint32_t)25000000) /*!< value of the external oscillator in Hz */ + #define HXTAL_VALUE_8M HXTAL_VALUE +#elif defined(GD32VF103V_EVAL) || defined(GD32VF103C_START) || defined(GD32VF103T_START) + #define HXTAL_VALUE ((uint32_t)8000000) /*!< value of the external oscillator in Hz */ + #define HXTAL_VALUE_25M HXTAL_VALUE + #else + #error "Please select the target board type used in your application (in gd32vf103.h file)" + #endif + #endif /* high speed crystal oscillator value */ + +/* define startup timeout value of high speed crystal oscillator (HXTAL) */ +#if !defined (HXTAL_STARTUP_TIMEOUT) +#define HXTAL_STARTUP_TIMEOUT ((uint16_t)0xFFFF) +#endif /* high speed crystal oscillator startup timeout */ + +/* define value of internal 8MHz RC oscillator (IRC8M) in Hz */ +#if !defined (IRC8M_VALUE) +#define IRC8M_VALUE ((uint32_t)8000000) +#endif /* internal 8MHz RC oscillator value */ + +/* define startup timeout value of internal 8MHz RC oscillator (IRC8M) */ +#if !defined (IRC8M_STARTUP_TIMEOUT) +#define IRC8M_STARTUP_TIMEOUT ((uint16_t)0x0500) +#endif /* internal 8MHz RC oscillator startup timeout */ + +/* define value of internal 40KHz RC oscillator(IRC40K) in Hz */ +#if !defined (IRC40K_VALUE) +#define IRC40K_VALUE ((uint32_t)40000) +#endif /* internal 40KHz RC oscillator value */ + +/* define value of low speed crystal oscillator (LXTAL)in Hz */ +#if !defined (LXTAL_VALUE) +#define LXTAL_VALUE ((uint32_t)32768) +#endif /* low speed crystal oscillator value */ + +/* define interrupt number */ +typedef enum IRQn +{ + + CLIC_INT_RESERVED = 0, /*!< RISC-V reserved */ + CLIC_INT_SFT = 3, /*!< Software interrupt */ + CLIC_INT_TMR = 7, /*!< CPU Timer interrupt */ + CLIC_INT_BWEI = 17, /*!< Bus Error interrupt */ + CLIC_INT_PMOVI = 18, /*!< Performance Monitor */ + + /* interruput numbers */ + WWDGT_IRQn = 19, /*!< window watchDog timer interrupt */ + LVD_IRQn = 20, /*!< LVD through EXTI line detect interrupt */ + TAMPER_IRQn = 21, /*!< tamper through EXTI line detect */ + RTC_IRQn = 22, /*!< RTC alarm interrupt */ + FMC_IRQn = 23, /*!< FMC interrupt */ + RCU_CTC_IRQn = 24, /*!< RCU and CTC interrupt */ + EXTI0_IRQn = 25, /*!< EXTI line 0 interrupts */ + EXTI1_IRQn = 26, /*!< EXTI line 1 interrupts */ + EXTI2_IRQn = 27, /*!< EXTI line 2 interrupts */ + EXTI3_IRQn = 28, /*!< EXTI line 3 interrupts */ + EXTI4_IRQn = 29, /*!< EXTI line 4 interrupts */ + DMA0_Channel0_IRQn = 30, /*!< DMA0 channel0 interrupt */ + DMA0_Channel1_IRQn = 31, /*!< DMA0 channel1 interrupt */ + DMA0_Channel2_IRQn = 32, /*!< DMA0 channel2 interrupt */ + DMA0_Channel3_IRQn = 33, /*!< DMA0 channel3 interrupt */ + DMA0_Channel4_IRQn = 34, /*!< DMA0 channel4 interrupt */ + DMA0_Channel5_IRQn = 35, /*!< DMA0 channel5 interrupt */ + DMA0_Channel6_IRQn = 36, /*!< DMA0 channel6 interrupt */ + ADC0_1_IRQn = 37, /*!< ADC0 and ADC1 interrupt */ + CAN0_TX_IRQn = 38, /*!< CAN0 TX interrupts */ + CAN0_RX0_IRQn = 39, /*!< CAN0 RX0 interrupts */ + CAN0_RX1_IRQn = 40, /*!< CAN0 RX1 interrupts */ + CAN0_EWMC_IRQn = 41, /*!< CAN0 EWMC interrupts */ + EXTI5_9_IRQn = 42, /*!< EXTI[9:5] interrupts */ + TIMER0_BRK_IRQn = 43, /*!< TIMER0 break interrupts */ + TIMER0_UP_IRQn = 44, /*!< TIMER0 update interrupts */ + TIMER0_TRG_CMT_IRQn = 45, /*!< TIMER0 trigger and commutation interrupts */ + TIMER0_Channel_IRQn = 46, /*!< TIMER0 channel capture compare interrupts */ + TIMER1_IRQn = 47, /*!< TIMER1 interrupt */ + TIMER2_IRQn = 48, /*!< TIMER2 interrupt */ + TIMER3_IRQn = 49, /*!< TIMER3 interrupts */ + I2C0_EV_IRQn = 50, /*!< I2C0 event interrupt */ + I2C0_ER_IRQn = 51, /*!< I2C0 error interrupt */ + I2C1_EV_IRQn = 52, /*!< I2C1 event interrupt */ + I2C1_ER_IRQn = 53, /*!< I2C1 error interrupt */ + SPI0_IRQn = 54, /*!< SPI0 interrupt */ + SPI1_IRQn = 55, /*!< SPI1 interrupt */ + USART0_IRQn = 56, /*!< USART0 interrupt */ + USART1_IRQn = 57, /*!< USART1 interrupt */ + USART2_IRQn = 58, /*!< USART2 interrupt */ + EXTI10_15_IRQn = 59, /*!< EXTI[15:10] interrupts */ + RTC_ALARM_IRQn = 60, /*!< RTC alarm interrupt EXTI */ + USBFS_WKUP_IRQn = 61, /*!< USBFS wakeup interrupt */ + + EXMC_IRQn = 67, /*!< EXMC global interrupt */ + + TIMER4_IRQn = 69, /*!< TIMER4 global interrupt */ + SPI2_IRQn = 70, /*!< SPI2 global interrupt */ + UART3_IRQn = 71, /*!< UART3 global interrupt */ + UART4_IRQn = 72, /*!< UART4 global interrupt */ + TIMER5_IRQn = 73, /*!< TIMER5 global interrupt */ + TIMER6_IRQn = 74, /*!< TIMER6 global interrupt */ + DMA1_Channel0_IRQn = 75, /*!< DMA1 channel0 global interrupt */ + DMA1_Channel1_IRQn = 76, /*!< DMA1 channel1 global interrupt */ + DMA1_Channel2_IRQn = 77, /*!< DMA1 channel2 global interrupt */ + DMA1_Channel3_IRQn = 78, /*!< DMA1 channel3 global interrupt */ + DMA1_Channel4_IRQn = 79, /*!< DMA1 channel3 global interrupt */ + + CAN1_TX_IRQn = 82, /*!< CAN1 TX interrupt */ + CAN1_RX0_IRQn = 83, /*!< CAN1 RX0 interrupt */ + CAN1_RX1_IRQn = 84, /*!< CAN1 RX1 interrupt */ + CAN1_EWMC_IRQn = 85, /*!< CAN1 EWMC interrupt */ + USBFS_IRQn = 86, /*!< USBFS global interrupt */ + + ECLIC_NUM_INTERRUPTS +} IRQn_Type; + +/* includes */ +#include "system_gd32vf103.h" +#include + +/* enum definitions */ +typedef enum {DISABLE = 0, ENABLE = !DISABLE} EventStatus, ControlStatus; +typedef enum {FALSE = 0, TRUE = !FALSE} bool; +typedef enum {RESET = 0, SET = !RESET} FlagStatus; +typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrStatus; + +/* bit operations */ +#define REG32(addr) (*(volatile uint32_t *)(uint32_t)(addr)) +#define REG16(addr) (*(volatile uint16_t *)(uint32_t)(addr)) +#define REG8(addr) (*(volatile uint8_t *)(uint32_t)(addr)) +#define BIT(x) ((uint32_t)((uint32_t)0x01U<<(x))) +#define BITS(start, end) ((0xFFFFFFFFUL << (start)) & (0xFFFFFFFFUL >> (31U - (uint32_t)(end)))) +#define GET_BITS(regval, start, end) (((regval) & BITS((start),(end))) >> (start)) + +/* main flash and SRAM memory map */ +#define FLASH_BASE ((uint32_t)0x08000000U) /*!< main FLASH base address */ +#define SRAM_BASE ((uint32_t)0x20000000U) /*!< SRAM0 base address */ +#define OB_BASE ((uint32_t)0x1FFFF800U) /*!< OB base address */ +#define DBG_BASE ((uint32_t)0xE0042000U) /*!< DBG base address */ +#define EXMC_BASE ((uint32_t)0xA0000000U) /*!< EXMC register base address */ + +/* peripheral memory map */ +#define APB1_BUS_BASE ((uint32_t)0x40000000U) /*!< apb1 base address */ +#define APB2_BUS_BASE ((uint32_t)0x40010000U) /*!< apb2 base address */ +#define AHB1_BUS_BASE ((uint32_t)0x40018000U) /*!< ahb1 base address */ +#define AHB3_BUS_BASE ((uint32_t)0x60000000U) /*!< ahb3 base address */ + +/* advanced peripheral bus 1 memory map */ +#define TIMER_BASE (APB1_BUS_BASE + 0x00000000U) /*!< TIMER base address */ +#define RTC_BASE (APB1_BUS_BASE + 0x00002800U) /*!< RTC base address */ +#define WWDGT_BASE (APB1_BUS_BASE + 0x00002C00U) /*!< WWDGT base address */ +#define FWDGT_BASE (APB1_BUS_BASE + 0x00003000U) /*!< FWDGT base address */ +#define SPI_BASE (APB1_BUS_BASE + 0x00003800U) /*!< SPI base address */ +#define USART_BASE (APB1_BUS_BASE + 0x00004400U) /*!< USART base address */ +#define I2C_BASE (APB1_BUS_BASE + 0x00005400U) /*!< I2C base address */ +#define CAN_BASE (APB1_BUS_BASE + 0x00006400U) /*!< CAN base address */ +#define BKP_BASE (APB1_BUS_BASE + 0x00006C00U) /*!< BKP base address */ +#define PMU_BASE (APB1_BUS_BASE + 0x00007000U) /*!< PMU base address */ +#define DAC_BASE (APB1_BUS_BASE + 0x00007400U) /*!< DAC base address */ + +/* advanced peripheral bus 2 memory map */ +#define AFIO_BASE (APB2_BUS_BASE + 0x00000000U) /*!< AFIO base address */ +#define EXTI_BASE (APB2_BUS_BASE + 0x00000400U) /*!< EXTI base address */ +#define GPIO_BASE (APB2_BUS_BASE + 0x00000800U) /*!< GPIO base address */ +#define ADC_BASE (APB2_BUS_BASE + 0x00002400U) /*!< ADC base address */ + +/* advanced high performance bus 1 memory map */ +#define DMA_BASE (AHB1_BUS_BASE + 0x00008000U) /*!< DMA base address */ +#define RCU_BASE (AHB1_BUS_BASE + 0x00009000U) /*!< RCU base address */ +#define FMC_BASE (AHB1_BUS_BASE + 0x0000A000U) /*!< FMC base address */ +#define CRC_BASE (AHB1_BUS_BASE + 0x0000B000U) /*!< CRC base address */ +#define USBFS_BASE (AHB1_BUS_BASE + 0x0FFE8000U) /*!< USBFS base address */ + +/* define marco USE_STDPERIPH_DRIVER */ +#if !defined USE_STDPERIPH_DRIVER +#define USE_STDPERIPH_DRIVER +#endif +#ifdef USE_STDPERIPH_DRIVER +#include "gd32vf103_libopt.h" +#endif /* USE_STDPERIPH_DRIVER */ + +#ifdef __cplusplus +} +#endif +#endif diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/system_gd32vf103.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/system_gd32vf103.c new file mode 100644 index 0000000000..0c4b401ac3 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/system_gd32vf103.c @@ -0,0 +1,1007 @@ +/*! + \file system_gd32vf103.c + \brief RISC-V Device Peripheral Access Layer Source File for + GD32VF103 Device Series + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 + \version 2021-05-19, V1.1.1, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +/* This file refers the RISC-V standard, some adjustments are made according to GigaDevice chips */ + +#include "gd32vf103.h" + +/* system frequency define */ +#define __IRC8M (IRC8M_VALUE) /* internal 8 MHz RC oscillator frequency */ +#define __HXTAL (HXTAL_VALUE) /* high speed crystal oscillator frequency */ +#define __SYS_OSC_CLK (__IRC8M) /* main oscillator frequency */ + +/* select a system clock by uncommenting the following line */ +/* use IRC8M */ +//#define __SYSTEM_CLOCK_48M_PLL_IRC8M (uint32_t)(48000000) +//#define __SYSTEM_CLOCK_72M_PLL_IRC8M (uint32_t)(72000000) +//#define __SYSTEM_CLOCK_108M_PLL_IRC8M (uint32_t)(108000000) + +/********************************************************************/ +//#define __SYSTEM_CLOCK_HXTAL (HXTAL_VALUE) +//#define __SYSTEM_CLOCK_24M_PLL_HXTAL (uint32_t)(24000000) +/********************************************************************/ + +//#define __SYSTEM_CLOCK_36M_PLL_HXTAL (uint32_t)(36000000) +//#define __SYSTEM_CLOCK_48M_PLL_HXTAL (uint32_t)(48000000) +//#define __SYSTEM_CLOCK_56M_PLL_HXTAL (uint32_t)(56000000) +//#define __SYSTEM_CLOCK_72M_PLL_HXTAL (uint32_t)(72000000) +//#define __SYSTEM_CLOCK_96M_PLL_HXTAL (uint32_t)(96000000) +#define __SYSTEM_CLOCK_108M_PLL_HXTAL (uint32_t)(108000000) + +#define SEL_IRC8M 0x00U +#define SEL_HXTAL 0x01U +#define SEL_PLL 0x02U + +/* set the system clock frequency and declare the system clock configuration function */ +#ifdef __SYSTEM_CLOCK_48M_PLL_IRC8M +uint32_t SystemCoreClock = __SYSTEM_CLOCK_48M_PLL_IRC8M; +static void system_clock_48m_irc8m(void); +#elif defined (__SYSTEM_CLOCK_72M_PLL_IRC8M) +uint32_t SystemCoreClock = __SYSTEM_CLOCK_72M_PLL_IRC8M; +static void system_clock_72m_irc8m(void); +#elif defined (__SYSTEM_CLOCK_108M_PLL_IRC8M) +uint32_t SystemCoreClock = __SYSTEM_CLOCK_108M_PLL_IRC8M; +static void system_clock_108m_irc8m(void); + +#elif defined (__SYSTEM_CLOCK_HXTAL) +uint32_t SystemCoreClock = __SYSTEM_CLOCK_HXTAL; +static void system_clock_hxtal(void); +#elif defined (__SYSTEM_CLOCK_24M_PLL_HXTAL) +uint32_t SystemCoreClock = __SYSTEM_CLOCK_24M_PLL_HXTAL; +static void system_clock_24m_hxtal(void); +#elif defined (__SYSTEM_CLOCK_36M_PLL_HXTAL) +uint32_t SystemCoreClock = __SYSTEM_CLOCK_36M_PLL_HXTAL; +static void system_clock_36m_hxtal(void); +#elif defined (__SYSTEM_CLOCK_48M_PLL_HXTAL) +uint32_t SystemCoreClock = __SYSTEM_CLOCK_48M_PLL_HXTAL; +static void system_clock_48m_hxtal(void); +#elif defined (__SYSTEM_CLOCK_56M_PLL_HXTAL) +uint32_t SystemCoreClock = __SYSTEM_CLOCK_56M_PLL_HXTAL; +static void system_clock_56m_hxtal(void); +#elif defined (__SYSTEM_CLOCK_72M_PLL_HXTAL) +uint32_t SystemCoreClock = __SYSTEM_CLOCK_72M_PLL_HXTAL; +static void system_clock_72m_hxtal(void); +#elif defined (__SYSTEM_CLOCK_96M_PLL_HXTAL) +uint32_t SystemCoreClock = __SYSTEM_CLOCK_96M_PLL_HXTAL; +static void system_clock_96m_hxtal(void); +#elif defined (__SYSTEM_CLOCK_108M_PLL_HXTAL) +uint32_t SystemCoreClock = __SYSTEM_CLOCK_108M_PLL_HXTAL; +static void system_clock_108m_hxtal(void); +#else +uint32_t SystemCoreClock = IRC8M_VALUE; +#endif /* __SYSTEM_CLOCK_48M_PLL_IRC8M */ + +/* configure the system clock */ +static void system_clock_config(void); + +/*! + \brief configure the system clock + \param[in] none + \param[out] none + \retval none +*/ +static void system_clock_config(void) +{ +#ifdef __SYSTEM_CLOCK_HXTAL + system_clock_hxtal(); +#elif defined (__SYSTEM_CLOCK_24M_PLL_HXTAL) + system_clock_24m_hxtal(); +#elif defined (__SYSTEM_CLOCK_36M_PLL_HXTAL) + system_clock_36m_hxtal(); +#elif defined (__SYSTEM_CLOCK_48M_PLL_HXTAL) + system_clock_48m_hxtal(); +#elif defined (__SYSTEM_CLOCK_56M_PLL_HXTAL) + system_clock_56m_hxtal(); +#elif defined (__SYSTEM_CLOCK_72M_PLL_HXTAL) + system_clock_72m_hxtal(); +#elif defined (__SYSTEM_CLOCK_96M_PLL_HXTAL) + system_clock_96m_hxtal(); +#elif defined (__SYSTEM_CLOCK_108M_PLL_HXTAL) + system_clock_108m_hxtal(); + +#elif defined (__SYSTEM_CLOCK_48M_PLL_IRC8M) + system_clock_48m_irc8m(); +#elif defined (__SYSTEM_CLOCK_72M_PLL_IRC8M) + system_clock_72m_irc8m(); +#elif defined (__SYSTEM_CLOCK_108M_PLL_IRC8M) + system_clock_108m_irc8m(); +#endif /* __SYSTEM_CLOCK_HXTAL */ +} + +/*! + \brief setup the microcontroller system, initialize the system + \param[in] none + \param[out] none + \retval none +*/ +void SystemInit(void) +{ + /* reset the RCC clock configuration to the default reset state */ + /* enable IRC8M */ + RCU_CTL |= RCU_CTL_IRC8MEN; + + /* reset SCS, AHBPSC, APB1PSC, APB2PSC, ADCPSC, CKOUT0SEL bits */ + RCU_CFG0 &= ~(RCU_CFG0_SCS | RCU_CFG0_AHBPSC | RCU_CFG0_APB1PSC | RCU_CFG0_APB2PSC | + RCU_CFG0_ADCPSC | RCU_CFG0_ADCPSC_2 | RCU_CFG0_CKOUT0SEL); + + /* reset HXTALEN, CKMEN, PLLEN bits */ + RCU_CTL &= ~(RCU_CTL_HXTALEN | RCU_CTL_CKMEN | RCU_CTL_PLLEN); + + /* Reset HXTALBPS bit */ + RCU_CTL &= ~(RCU_CTL_HXTALBPS); + + /* reset PLLSEL, PREDV0_LSB, PLLMF, USBFSPSC bits */ + + RCU_CFG0 &= ~(RCU_CFG0_PLLSEL | RCU_CFG0_PREDV0_LSB | RCU_CFG0_PLLMF | + RCU_CFG0_USBFSPSC | RCU_CFG0_PLLMF_4); + RCU_CFG1 = 0x00000000U; + + /* Reset HXTALEN, CKMEN, PLLEN, PLL1EN and PLL2EN bits */ + RCU_CTL &= ~(RCU_CTL_PLLEN | RCU_CTL_PLL1EN | RCU_CTL_PLL2EN | RCU_CTL_CKMEN | RCU_CTL_HXTALEN); + /* disable all interrupts */ + RCU_INT = 0x00FF0000U; + + /* Configure the System clock source, PLL Multiplier, AHB/APBx prescalers and Flash settings */ + system_clock_config(); +} + +/*! + \brief update the SystemCoreClock with current core clock retrieved from cpu registers + \param[in] none + \param[out] none + \retval none +*/ +void SystemCoreClockUpdate(void) +{ + uint32_t scss = 0U; + uint32_t pllsel = 0U, predv0sel = 0U, pllmf = 0U, ck_src = 0U; + uint32_t predv0 = 0U, predv1 = 0U, pll1mf = 0U,idx = 0U,clk_exp = 0U; + /* exponent of AHB clock divider */ + const uint8_t ahb_exp[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; + + scss = GET_BITS(RCU_CFG0, 2, 3); + + switch (scss) + { + /* IRC8M is selected as CK_SYS */ + case SEL_IRC8M: + SystemCoreClock = IRC8M_VALUE; + break; + + /* HXTAL is selected as CK_SYS */ + case SEL_HXTAL: + SystemCoreClock = HXTAL_VALUE; + break; + + /* PLL is selected as CK_SYS */ + case SEL_PLL: + /* PLL clock source selection, HXTAL or IRC8M/2 */ + pllsel = (RCU_CFG0 & RCU_CFG0_PLLSEL); + + + if(RCU_PLLSRC_IRC8M_DIV2 == pllsel){ + /* PLL clock source is IRC8M/2 */ + ck_src = IRC8M_VALUE / 2U; + }else{ + /* PLL clock source is HXTAL */ + ck_src = HXTAL_VALUE; + + predv0sel = (RCU_CFG1 & RCU_CFG1_PREDV0SEL); + + /* source clock use PLL1 */ + if(RCU_PREDV0SRC_CKPLL1 == predv0sel){ + predv1 = ((RCU_CFG1 & RCU_CFG1_PREDV1) >> 4) + 1U; + pll1mf = ((RCU_CFG1 & RCU_CFG1_PLL1MF) >> 8) + 2U; + if(17U == pll1mf){ + pll1mf = 20U; + } + ck_src = (ck_src / predv1) * pll1mf; + } + predv0 = (RCU_CFG1 & RCU_CFG1_PREDV0) + 1U; + ck_src /= predv0; + } + + /* PLL multiplication factor */ + pllmf = GET_BITS(RCU_CFG0, 18, 21); + + if((RCU_CFG0 & RCU_CFG0_PLLMF_4)){ + pllmf |= 0x10U; + } + + if(pllmf >= 15U){ + pllmf += 1U; + }else{ + pllmf += 2U; + } + + SystemCoreClock = ck_src * pllmf; + + if(15U == pllmf){ + /* PLL source clock multiply by 6.5 */ + SystemCoreClock = ck_src * 6U + ck_src / 2U; + } + + break; + + /* IRC8M is selected as CK_SYS */ + default: + SystemCoreClock = IRC8M_VALUE; + break; + } + /* calculate AHB clock frequency */ + idx = GET_BITS(RCU_CFG0, 4, 7); + clk_exp = ahb_exp[idx]; + SystemCoreClock >>= clk_exp; +} + +#ifdef __SYSTEM_CLOCK_HXTAL +/*! + \brief configure the system clock to HXTAL + \param[in] none + \param[out] none + \retval none +*/ +static void system_clock_hxtal(void) +{ + uint32_t timeout = 0U; + uint32_t stab_flag = 0U; + + /* enable HXTAL */ + RCU_CTL |= RCU_CTL_HXTALEN; + + /* wait until HXTAL is stable or the startup time is longer than HXTAL_STARTUP_TIMEOUT */ + do{ + timeout++; + stab_flag = (RCU_CTL & RCU_CTL_HXTALSTB); + }while((0U == stab_flag) && (HXTAL_STARTUP_TIMEOUT != timeout)); + + /* if fail */ + if(0U == (RCU_CTL & RCU_CTL_HXTALSTB)){ + while(1){ + } + } + + /* AHB = SYSCLK */ + RCU_CFG0 |= RCU_AHB_CKSYS_DIV1; + /* APB2 = AHB/1 */ + RCU_CFG0 |= RCU_APB2_CKAHB_DIV1; + /* APB1 = AHB/2 */ + RCU_CFG0 |= RCU_APB1_CKAHB_DIV2; + + /* select HXTAL as system clock */ + RCU_CFG0 &= ~RCU_CFG0_SCS; + RCU_CFG0 |= RCU_CKSYSSRC_HXTAL; + + /* wait until HXTAL is selected as system clock */ + while(0 == (RCU_CFG0 & RCU_SCSS_HXTAL)){ + } +} + +#elif defined (__SYSTEM_CLOCK_24M_PLL_HXTAL) +/*! + \brief configure the system clock to 24M by PLL which selects HXTAL(MD/HD/XD:8M; CL:25M) as its clock source + \param[in] none + \param[out] none + \retval none +*/ +static void system_clock_24m_hxtal(void) +{ + uint32_t timeout = 0U; + uint32_t stab_flag = 0U; + + /* enable HXTAL */ + RCU_CTL |= RCU_CTL_HXTALEN; + + /* wait until HXTAL is stable or the startup time is longer than HXTAL_STARTUP_TIMEOUT */ + do{ + timeout++; + stab_flag = (RCU_CTL & RCU_CTL_HXTALSTB); + }while((0U == stab_flag) && (HXTAL_STARTUP_TIMEOUT != timeout)); + + /* if fail */ + if(0U == (RCU_CTL & RCU_CTL_HXTALSTB)){ + while(1){ + } + } + + /* HXTAL is stable */ + /* AHB = SYSCLK */ + RCU_CFG0 |= RCU_AHB_CKSYS_DIV1; + /* APB2 = AHB/1 */ + RCU_CFG0 |= RCU_APB2_CKAHB_DIV1; + /* APB1 = AHB/2 */ + RCU_CFG0 |= RCU_APB1_CKAHB_DIV2; + + /* CK_PLL = (CK_PREDIV0) * 6 = 24 MHz */ + RCU_CFG0 &= ~(RCU_CFG0_PLLMF | RCU_CFG0_PLLMF_4); + RCU_CFG0 |= (RCU_PLLSRC_HXTAL | RCU_PLL_MUL6); + + if(HXTAL_VALUE==25000000){ + /* CK_PREDIV0 = (CK_HXTAL)/5 *8 /10 = 4 MHz */ + RCU_CFG1 &= ~(RCU_CFG1_PREDV0SEL | RCU_CFG1_PLL1MF | RCU_CFG1_PREDV1 | RCU_CFG1_PREDV0); + RCU_CFG1 |= (RCU_PREDV0SRC_CKPLL1 | RCU_PLL1_MUL8 | RCU_PREDV1_DIV5 | RCU_PREDV0_DIV10); + + /* enable PLL1 */ + RCU_CTL |= RCU_CTL_PLL1EN; + /* wait till PLL1 is ready */ + while((RCU_CTL & RCU_CTL_PLL1STB) == 0){ + } + + }else if(HXTAL_VALUE==8000000){ + RCU_CFG1 &= ~(RCU_CFG1_PREDV0SEL | RCU_CFG1_PREDV1 | RCU_CFG1_PLL1MF | RCU_CFG1_PREDV0); + RCU_CFG1 |= (RCU_PREDV0SRC_HXTAL | RCU_PREDV0_DIV2 ); + } + + /* enable PLL */ + RCU_CTL |= RCU_CTL_PLLEN; + + /* wait until PLL is stable */ + while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){ + } + + /* select PLL as system clock */ + RCU_CFG0 &= ~RCU_CFG0_SCS; + RCU_CFG0 |= RCU_CKSYSSRC_PLL; + + /* wait until PLL is selected as system clock */ + while(0U == (RCU_CFG0 & RCU_SCSS_PLL)){ + } +} + +#elif defined (__SYSTEM_CLOCK_36M_PLL_HXTAL) +/*! + \brief configure the system clock to 36M by PLL which selects HXTAL(MD/HD/XD:8M; CL:25M) as its clock source + \param[in] none + \param[out] none + \retval none +*/ +static void system_clock_36m_hxtal(void) +{ + uint32_t timeout = 0U; + uint32_t stab_flag = 0U; + + /* enable HXTAL */ + RCU_CTL |= RCU_CTL_HXTALEN; + + /* wait until HXTAL is stable or the startup time is longer than HXTAL_STARTUP_TIMEOUT */ + do{ + timeout++; + stab_flag = (RCU_CTL & RCU_CTL_HXTALSTB); + }while((0U == stab_flag) && (HXTAL_STARTUP_TIMEOUT != timeout)); + + /* if fail */ + if(0U == (RCU_CTL & RCU_CTL_HXTALSTB)){ + while(1){ + } + } + + /* HXTAL is stable */ + /* AHB = SYSCLK */ + RCU_CFG0 |= RCU_AHB_CKSYS_DIV1; + /* APB2 = AHB/1 */ + RCU_CFG0 |= RCU_APB2_CKAHB_DIV1; + /* APB1 = AHB/2 */ + RCU_CFG0 |= RCU_APB1_CKAHB_DIV2; + + /* CK_PLL = (CK_PREDIV0) * 9 = 36 MHz */ + RCU_CFG0 &= ~(RCU_CFG0_PLLMF | RCU_CFG0_PLLMF_4); + RCU_CFG0 |= (RCU_PLLSRC_HXTAL | RCU_PLL_MUL9); + + if(HXTAL_VALUE==25000000){ + /* CK_PREDIV0 = (CK_HXTAL)/5 *8 /10 = 4 MHz */ + RCU_CFG1 &= ~(RCU_CFG1_PREDV0SEL | RCU_CFG1_PLL1MF | RCU_CFG1_PREDV1 | RCU_CFG1_PREDV0); + RCU_CFG1 |= (RCU_PREDV0SRC_CKPLL1 | RCU_PLL1_MUL8 | RCU_PREDV1_DIV5 | RCU_PREDV0_DIV10); + + /* enable PLL1 */ + RCU_CTL |= RCU_CTL_PLL1EN; + /* wait till PLL1 is ready */ + while((RCU_CTL & RCU_CTL_PLL1STB) == 0){ + } + + }else if(HXTAL_VALUE==8000000){ + RCU_CFG1 &= ~(RCU_CFG1_PREDV0SEL | RCU_CFG1_PREDV1 | RCU_CFG1_PLL1MF | RCU_CFG1_PREDV0); + RCU_CFG1 |= (RCU_PREDV0SRC_HXTAL | RCU_PREDV0_DIV2 ); + } + + /* enable PLL */ + RCU_CTL |= RCU_CTL_PLLEN; + + /* wait until PLL is stable */ + while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){ + } + + /* select PLL as system clock */ + RCU_CFG0 &= ~RCU_CFG0_SCS; + RCU_CFG0 |= RCU_CKSYSSRC_PLL; + + /* wait until PLL is selected as system clock */ + while(0U == (RCU_CFG0 & RCU_SCSS_PLL)){ + } +} + +#elif defined (__SYSTEM_CLOCK_48M_PLL_HXTAL) +/*! + \brief configure the system clock to 48M by PLL which selects HXTAL(MD/HD/XD:8M; CL:25M) as its clock source + \param[in] none + \param[out] none + \retval none +*/ +static void system_clock_48m_hxtal(void) +{ + uint32_t timeout = 0U; + uint32_t stab_flag = 0U; + + /* enable HXTAL */ + RCU_CTL |= RCU_CTL_HXTALEN; + + /* wait until HXTAL is stable or the startup time is longer than HXTAL_STARTUP_TIMEOUT */ + do{ + timeout++; + stab_flag = (RCU_CTL & RCU_CTL_HXTALSTB); + }while((0U == stab_flag) && (HXTAL_STARTUP_TIMEOUT != timeout)); + + /* if fail */ + if(0U == (RCU_CTL & RCU_CTL_HXTALSTB)){ + while(1){ + } + } + + /* HXTAL is stable */ + /* AHB = SYSCLK */ + RCU_CFG0 |= RCU_AHB_CKSYS_DIV1; + /* APB2 = AHB/1 */ + RCU_CFG0 |= RCU_APB2_CKAHB_DIV1; + /* APB1 = AHB/2 */ + RCU_CFG0 |= RCU_APB1_CKAHB_DIV2; + + /* CK_PLL = (CK_PREDIV0) * 12 = 48 MHz */ + RCU_CFG0 &= ~(RCU_CFG0_PLLMF | RCU_CFG0_PLLMF_4); + RCU_CFG0 |= (RCU_PLLSRC_HXTAL | RCU_PLL_MUL12); + + if(HXTAL_VALUE==25000000){ + + /* CK_PREDIV0 = (CK_HXTAL)/5 *8 /10 = 4 MHz */ + RCU_CFG1 &= ~(RCU_CFG1_PREDV0SEL | RCU_CFG1_PLL1MF | RCU_CFG1_PREDV1 | RCU_CFG1_PREDV0); + RCU_CFG1 |= (RCU_PREDV0SRC_CKPLL1 | RCU_PLL1_MUL8 | RCU_PREDV1_DIV5 | RCU_PREDV0_DIV10); + + /* enable PLL1 */ + RCU_CTL |= RCU_CTL_PLL1EN; + /* wait till PLL1 is ready */ + while((RCU_CTL & RCU_CTL_PLL1STB) == 0){ + } + + }else if(HXTAL_VALUE==8000000){ + RCU_CFG1 &= ~(RCU_CFG1_PREDV0SEL | RCU_CFG1_PREDV1 | RCU_CFG1_PLL1MF | RCU_CFG1_PREDV0); + RCU_CFG1 |= (RCU_PREDV0SRC_HXTAL | RCU_PREDV0_DIV2 ); + } + + + + /* enable PLL */ + RCU_CTL |= RCU_CTL_PLLEN; + + /* wait until PLL is stable */ + while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){ + } + + /* select PLL as system clock */ + RCU_CFG0 &= ~RCU_CFG0_SCS; + RCU_CFG0 |= RCU_CKSYSSRC_PLL; + + /* wait until PLL is selected as system clock */ + while(0U == (RCU_CFG0 & RCU_SCSS_PLL)){ + } +} + +#elif defined (__SYSTEM_CLOCK_56M_PLL_HXTAL) +/*! + \brief configure the system clock to 56M by PLL which selects HXTAL(MD/HD/XD:8M; CL:25M) as its clock source + \param[in] none + \param[out] none + \retval none +*/ +static void system_clock_56m_hxtal(void) +{ + uint32_t timeout = 0U; + uint32_t stab_flag = 0U; + + /* enable HXTAL */ + RCU_CTL |= RCU_CTL_HXTALEN; + + /* wait until HXTAL is stable or the startup time is longer than HXTAL_STARTUP_TIMEOUT */ + do{ + timeout++; + stab_flag = (RCU_CTL & RCU_CTL_HXTALSTB); + }while((0U == stab_flag) && (HXTAL_STARTUP_TIMEOUT != timeout)); + + /* if fail */ + if(0U == (RCU_CTL & RCU_CTL_HXTALSTB)){ + while(1){ + } + } + + /* HXTAL is stable */ + /* AHB = SYSCLK */ + RCU_CFG0 |= RCU_AHB_CKSYS_DIV1; + /* APB2 = AHB/1 */ + RCU_CFG0 |= RCU_APB2_CKAHB_DIV1; + /* APB1 = AHB/2 */ + RCU_CFG0 |= RCU_APB1_CKAHB_DIV2; + + /* CK_PLL = (CK_PREDIV0) * 14 = 56 MHz */ + RCU_CFG0 &= ~(RCU_CFG0_PLLMF | RCU_CFG0_PLLMF_4); + RCU_CFG0 |= (RCU_PLLSRC_HXTAL | RCU_PLL_MUL14); + + if(HXTAL_VALUE==25000000){ + + /* CK_PREDIV0 = (CK_HXTAL)/5 *8 /10 = 4 MHz */ + RCU_CFG1 &= ~(RCU_CFG1_PREDV0SEL | RCU_CFG1_PLL1MF | RCU_CFG1_PREDV1 | RCU_CFG1_PREDV0); + RCU_CFG1 |= (RCU_PREDV0SRC_CKPLL1 | RCU_PLL1_MUL8 | RCU_PREDV1_DIV5 | RCU_PREDV0_DIV10); + + /* enable PLL1 */ + RCU_CTL |= RCU_CTL_PLL1EN; + /* wait till PLL1 is ready */ + while((RCU_CTL & RCU_CTL_PLL1STB) == 0){ + } + + }else if(HXTAL_VALUE==8000000){ + RCU_CFG1 &= ~(RCU_CFG1_PREDV0SEL | RCU_CFG1_PREDV1 | RCU_CFG1_PLL1MF | RCU_CFG1_PREDV0); + RCU_CFG1 |= (RCU_PREDV0SRC_HXTAL | RCU_PREDV0_DIV2 ); + } + + /* enable PLL */ + RCU_CTL |= RCU_CTL_PLLEN; + + /* wait until PLL is stable */ + while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){ + } + + /* select PLL as system clock */ + RCU_CFG0 &= ~RCU_CFG0_SCS; + RCU_CFG0 |= RCU_CKSYSSRC_PLL; + + /* wait until PLL is selected as system clock */ + while(0U == (RCU_CFG0 & RCU_SCSS_PLL)){ + } +} + +#elif defined (__SYSTEM_CLOCK_72M_PLL_HXTAL) +/*! + \brief configure the system clock to 72M by PLL which selects HXTAL(MD/HD/XD:8M; CL:25M) as its clock source + \param[in] none + \param[out] none + \retval none +*/ +static void system_clock_72m_hxtal(void) +{ + uint32_t timeout = 0U; + uint32_t stab_flag = 0U; + + /* enable HXTAL */ + RCU_CTL |= RCU_CTL_HXTALEN; + + /* wait until HXTAL is stable or the startup time is longer than HXTAL_STARTUP_TIMEOUT */ + do{ + timeout++; + stab_flag = (RCU_CTL & RCU_CTL_HXTALSTB); + }while((0U == stab_flag) && (HXTAL_STARTUP_TIMEOUT != timeout)); + + /* if fail */ + if(0U == (RCU_CTL & RCU_CTL_HXTALSTB)){ + while(1){ + } + } + + /* HXTAL is stable */ + /* AHB = SYSCLK */ + RCU_CFG0 |= RCU_AHB_CKSYS_DIV1; + /* APB2 = AHB/1 */ + RCU_CFG0 |= RCU_APB2_CKAHB_DIV1; + /* APB1 = AHB/2 */ + RCU_CFG0 |= RCU_APB1_CKAHB_DIV2; + + /* CK_PLL = (CK_PREDIV0) * 18 = 72 MHz */ + RCU_CFG0 &= ~(RCU_CFG0_PLLMF | RCU_CFG0_PLLMF_4); + RCU_CFG0 |= (RCU_PLLSRC_HXTAL | RCU_PLL_MUL18); + + + if(HXTAL_VALUE==25000000){ + + /* CK_PREDIV0 = (CK_HXTAL)/5 *8 /10 = 4 MHz */ + RCU_CFG1 &= ~(RCU_CFG1_PREDV0SEL | RCU_CFG1_PLL1MF | RCU_CFG1_PREDV1 | RCU_CFG1_PREDV0); + RCU_CFG1 |= (RCU_PREDV0SRC_CKPLL1 | RCU_PLL1_MUL8 | RCU_PREDV1_DIV5 | RCU_PREDV0_DIV10); + + /* enable PLL1 */ + RCU_CTL |= RCU_CTL_PLL1EN; + /* wait till PLL1 is ready */ + while((RCU_CTL & RCU_CTL_PLL1STB) == 0){ + } + + }else if(HXTAL_VALUE==8000000){ + RCU_CFG1 &= ~(RCU_CFG1_PREDV0SEL | RCU_CFG1_PREDV1 | RCU_CFG1_PLL1MF | RCU_CFG1_PREDV0); + RCU_CFG1 |= (RCU_PREDV0SRC_HXTAL | RCU_PREDV0_DIV2 ); + } + + /* enable PLL */ + RCU_CTL |= RCU_CTL_PLLEN; + + /* wait until PLL is stable */ + while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){ + } + + /* select PLL as system clock */ + RCU_CFG0 &= ~RCU_CFG0_SCS; + RCU_CFG0 |= RCU_CKSYSSRC_PLL; + + /* wait until PLL is selected as system clock */ + while(0U == (RCU_CFG0 & RCU_SCSS_PLL)){ + } +} + +#elif defined (__SYSTEM_CLOCK_96M_PLL_HXTAL) +/*! + \brief configure the system clock to 96M by PLL which selects HXTAL(MD/HD/XD:8M; CL:25M) as its clock source + \param[in] none + \param[out] none + \retval none +*/ +static void system_clock_96m_hxtal(void) +{ + uint32_t timeout = 0U; + uint32_t stab_flag = 0U; + + /* enable HXTAL */ + RCU_CTL |= RCU_CTL_HXTALEN; + + /* wait until HXTAL is stable or the startup time is longer than HXTAL_STARTUP_TIMEOUT */ + do{ + timeout++; + stab_flag = (RCU_CTL & RCU_CTL_HXTALSTB); + }while((0U == stab_flag) && (HXTAL_STARTUP_TIMEOUT != timeout)); + + /* if fail */ + if(0U == (RCU_CTL & RCU_CTL_HXTALSTB)){ + while(1){ + } + } + + /* HXTAL is stable */ + /* AHB = SYSCLK */ + RCU_CFG0 |= RCU_AHB_CKSYS_DIV1; + /* APB2 = AHB/1 */ + RCU_CFG0 |= RCU_APB2_CKAHB_DIV1; + /* APB1 = AHB/2 */ + RCU_CFG0 |= RCU_APB1_CKAHB_DIV2; + + if(HXTAL_VALUE==25000000){ + + /* CK_PLL = (CK_PREDIV0) * 24 = 96 MHz */ + RCU_CFG0 &= ~(RCU_CFG0_PLLMF | RCU_CFG0_PLLMF_4); + RCU_CFG0 |= (RCU_PLLSRC_HXTAL | RCU_PLL_MUL24); + + /* CK_PREDIV0 = (CK_HXTAL)/5 *8 /10 = 4 MHz */ + RCU_CFG1 &= ~(RCU_CFG1_PREDV0SEL | RCU_CFG1_PLL1MF | RCU_CFG1_PREDV1 | RCU_CFG1_PREDV0); + RCU_CFG1 |= (RCU_PREDV0SRC_CKPLL1 | RCU_PLL1_MUL8 | RCU_PREDV1_DIV5 | RCU_PREDV0_DIV10); + /* enable PLL1 */ + RCU_CTL |= RCU_CTL_PLL1EN; + /* wait till PLL1 is ready */ + while((RCU_CTL & RCU_CTL_PLL1STB) == 0){ + } + + }else if(HXTAL_VALUE==8000000){ + /* CK_PLL = (CK_PREDIV0) * 24 = 96 MHz */ + RCU_CFG0 &= ~(RCU_CFG0_PLLMF | RCU_CFG0_PLLMF_4); + RCU_CFG0 |= (RCU_PLLSRC_HXTAL | RCU_PLL_MUL24); + + RCU_CFG1 &= ~(RCU_CFG1_PREDV0SEL | RCU_CFG1_PREDV1 | RCU_CFG1_PLL1MF | RCU_CFG1_PREDV0); + RCU_CFG1 |= (RCU_PREDV0SRC_HXTAL | RCU_PREDV0_DIV2 ); + } + + /* enable PLL */ + RCU_CTL |= RCU_CTL_PLLEN; + + /* wait until PLL is stable */ + while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){ + } + + /* select PLL as system clock */ + RCU_CFG0 &= ~RCU_CFG0_SCS; + RCU_CFG0 |= RCU_CKSYSSRC_PLL; + + /* wait until PLL is selected as system clock */ + while(0U == (RCU_CFG0 & RCU_SCSS_PLL)){ + } +} + +#elif defined (__SYSTEM_CLOCK_108M_PLL_HXTAL) +/*! + \brief configure the system clock to 108M by PLL which selects HXTAL(MD/HD/XD:8M; CL:25M) as its clock source + \param[in] none + \param[out] none + \retval none +*/ + +static void system_clock_108m_hxtal(void) +{ + uint32_t timeout = 0U; + uint32_t stab_flag = 0U; + + /* enable HXTAL */ + RCU_CTL |= RCU_CTL_HXTALEN; + + /* wait until HXTAL is stable or the startup time is longer than HXTAL_STARTUP_TIMEOUT */ + do{ + timeout++; + stab_flag = (RCU_CTL & RCU_CTL_HXTALSTB); + }while((0U == stab_flag) && (HXTAL_STARTUP_TIMEOUT != timeout)); + + /* if fail */ + if(0U == (RCU_CTL & RCU_CTL_HXTALSTB)){ + while(1){ + } + } + + /* HXTAL is stable */ + /* AHB = SYSCLK */ + RCU_CFG0 |= RCU_AHB_CKSYS_DIV1; + /* APB2 = AHB/1 */ + RCU_CFG0 |= RCU_APB2_CKAHB_DIV1; + /* APB1 = AHB/2 */ + RCU_CFG0 |= RCU_APB1_CKAHB_DIV2; + + /* CK_PLL = (CK_PREDIV0) * 27 = 108 MHz */ + RCU_CFG0 &= ~(RCU_CFG0_PLLMF | RCU_CFG0_PLLMF_4); + RCU_CFG0 |= (RCU_PLLSRC_HXTAL | RCU_PLL_MUL27); + + if(HXTAL_VALUE==25000000){ + /* CK_PREDIV0 = (CK_HXTAL)/5 *8 /10 = 4 MHz */ + RCU_CFG1 &= ~(RCU_CFG1_PREDV0SEL | RCU_CFG1_PREDV1 | RCU_CFG1_PLL1MF | RCU_CFG1_PREDV0); + RCU_CFG1 |= (RCU_PREDV0SRC_CKPLL1 | RCU_PREDV1_DIV5 | RCU_PLL1_MUL8 | RCU_PREDV0_DIV10); + + /* enable PLL1 */ + RCU_CTL |= RCU_CTL_PLL1EN; + /* wait till PLL1 is ready */ + while(0U == (RCU_CTL & RCU_CTL_PLL1STB)){ + } + + /* enable PLL1 */ + RCU_CTL |= RCU_CTL_PLL2EN; + /* wait till PLL1 is ready */ + while(0U == (RCU_CTL & RCU_CTL_PLL2STB)){ + } + }else if(HXTAL_VALUE==8000000){ + RCU_CFG1 &= ~(RCU_CFG1_PREDV0SEL | RCU_CFG1_PREDV1 | RCU_CFG1_PLL1MF | RCU_CFG1_PREDV0); + RCU_CFG1 |= (RCU_PREDV0SRC_HXTAL | RCU_PREDV0_DIV2 | RCU_PREDV1_DIV2 | RCU_PLL1_MUL20 | RCU_PLL2_MUL20); + + /* enable PLL1 */ + RCU_CTL |= RCU_CTL_PLL1EN; + /* wait till PLL1 is ready */ + while(0U == (RCU_CTL & RCU_CTL_PLL1STB)){ + } + + /* enable PLL2 */ + RCU_CTL |= RCU_CTL_PLL2EN; + /* wait till PLL1 is ready */ + while(0U == (RCU_CTL & RCU_CTL_PLL2STB)){ + } + + } + /* enable PLL */ + RCU_CTL |= RCU_CTL_PLLEN; + + /* wait until PLL is stable */ + while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){ + } + + /* select PLL as system clock */ + RCU_CFG0 &= ~RCU_CFG0_SCS; + RCU_CFG0 |= RCU_CKSYSSRC_PLL; + + /* wait until PLL is selected as system clock */ + while(0U == (RCU_CFG0 & RCU_SCSS_PLL)){ + } +} + +#elif defined (__SYSTEM_CLOCK_48M_PLL_IRC8M) +/*! + \brief configure the system clock to 48M by PLL which selects IRC8M as its clock source + \param[in] none + \param[out] none + \retval none +*/ +static void system_clock_48m_irc8m(void) +{ + uint32_t timeout = 0U; + uint32_t stab_flag = 0U; + + /* enable IRC8M */ + RCU_CTL |= RCU_CTL_IRC8MEN; + + /* wait until IRC8M is stable or the startup time is longer than IRC8M_STARTUP_TIMEOUT */ + do{ + timeout++; + stab_flag = (RCU_CTL & RCU_CTL_IRC8MSTB); + } + while((0U == stab_flag) && (IRC8M_STARTUP_TIMEOUT != timeout)); + + /* if fail */ + if(0U == (RCU_CTL & RCU_CTL_IRC8MSTB)){ + while(1){ + } + } + + /* IRC8M is stable */ + /* AHB = SYSCLK */ + RCU_CFG0 |= RCU_AHB_CKSYS_DIV1; + /* APB2 = AHB/1 */ + RCU_CFG0 |= RCU_APB2_CKAHB_DIV1; + /* APB1 = AHB/2 */ + RCU_CFG0 |= RCU_APB1_CKAHB_DIV2; + + /* CK_PLL = (CK_IRC8M/2) * 12 = 48 MHz */ + RCU_CFG0 &= ~(RCU_CFG0_PLLMF | RCU_CFG0_PLLMF_4); + RCU_CFG0 |= RCU_PLL_MUL12; + + /* enable PLL */ + RCU_CTL |= RCU_CTL_PLLEN; + + /* wait until PLL is stable */ + while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){ + } + + /* select PLL as system clock */ + RCU_CFG0 &= ~RCU_CFG0_SCS; + RCU_CFG0 |= RCU_CKSYSSRC_PLL; + + /* wait until PLL is selected as system clock */ + while(0U == (RCU_CFG0 & RCU_SCSS_PLL)){ + } +} + +#elif defined (__SYSTEM_CLOCK_72M_PLL_IRC8M) +/*! + \brief configure the system clock to 72M by PLL which selects IRC8M as its clock source + \param[in] none + \param[out] none + \retval none +*/ +static void system_clock_72m_irc8m(void) +{ + uint32_t timeout = 0U; + uint32_t stab_flag = 0U; + + /* enable IRC8M */ + RCU_CTL |= RCU_CTL_IRC8MEN; + + /* wait until IRC8M is stable or the startup time is longer than IRC8M_STARTUP_TIMEOUT */ + do{ + timeout++; + stab_flag = (RCU_CTL & RCU_CTL_IRC8MSTB); + } + while((0U == stab_flag) && (IRC8M_STARTUP_TIMEOUT != timeout)); + + /* if fail */ + if(0U == (RCU_CTL & RCU_CTL_IRC8MSTB)){ + while(1){ + } + } + + /* IRC8M is stable */ + /* AHB = SYSCLK */ + RCU_CFG0 |= RCU_AHB_CKSYS_DIV1; + /* APB2 = AHB/1 */ + RCU_CFG0 |= RCU_APB2_CKAHB_DIV1; + /* APB1 = AHB/2 */ + RCU_CFG0 |= RCU_APB1_CKAHB_DIV2; + + /* CK_PLL = (CK_IRC8M/2) * 18 = 72 MHz */ + RCU_CFG0 &= ~(RCU_CFG0_PLLMF | RCU_CFG0_PLLMF_4); + RCU_CFG0 |= RCU_PLL_MUL18; + + /* enable PLL */ + RCU_CTL |= RCU_CTL_PLLEN; + + /* wait until PLL is stable */ + while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){ + } + + /* select PLL as system clock */ + RCU_CFG0 &= ~RCU_CFG0_SCS; + RCU_CFG0 |= RCU_CKSYSSRC_PLL; + + /* wait until PLL is selected as system clock */ + while(0U == (RCU_CFG0 & RCU_SCSS_PLL)){ + } +} + +#elif defined (__SYSTEM_CLOCK_108M_PLL_IRC8M) +/*! + \brief configure the system clock to 108M by PLL which selects IRC8M as its clock source + \param[in] none + \param[out] none + \retval none +*/ +static void system_clock_108m_irc8m(void) +{ + uint32_t timeout = 0U; + uint32_t stab_flag = 0U; + + /* enable IRC8M */ + RCU_CTL |= RCU_CTL_IRC8MEN; + + /* wait until IRC8M is stable or the startup time is longer than IRC8M_STARTUP_TIMEOUT */ + do{ + timeout++; + stab_flag = (RCU_CTL & RCU_CTL_IRC8MSTB); + } + while((0U == stab_flag) && (IRC8M_STARTUP_TIMEOUT != timeout)); + + /* if fail */ + if(0U == (RCU_CTL & RCU_CTL_IRC8MSTB)){ + while(1){ + } + } + + /* IRC8M is stable */ + /* AHB = SYSCLK */ + RCU_CFG0 |= RCU_AHB_CKSYS_DIV1; + /* APB2 = AHB/1 */ + RCU_CFG0 |= RCU_APB2_CKAHB_DIV1; + /* APB1 = AHB/2 */ + RCU_CFG0 |= RCU_APB1_CKAHB_DIV2; + + /* CK_PLL = (CK_IRC8M/2) * 27 = 108 MHz */ + RCU_CFG0 &= ~(RCU_CFG0_PLLMF | RCU_CFG0_PLLMF_4); + RCU_CFG0 |= RCU_PLL_MUL27; + + /* enable PLL */ + RCU_CTL |= RCU_CTL_PLLEN; + + /* wait until PLL is stable */ + while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){ + } + + /* select PLL as system clock */ + RCU_CFG0 &= ~RCU_CFG0_SCS; + RCU_CFG0 |= RCU_CKSYSSRC_PLL; + + /* wait until PLL is selected as system clock */ + while(0U == (RCU_CFG0 & RCU_SCSS_PLL)){ + } +} + +#endif diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/system_gd32vf103.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/system_gd32vf103.h new file mode 100644 index 0000000000..b43888f15a --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/system_gd32vf103.h @@ -0,0 +1,65 @@ +/*! + \file system_gd32vf103.h + \brief RISC-V Device Peripheral Access Layer Header File for + GD32VF103 Device Series + + \version 2019-06-05, V1.0.0, firmware for GD32VF103 + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +/* This file refers the RISC-V standard, some adjustments are made according to GigaDevice chips */ + +#ifndef SYSTEM_GD32VF103_H +#define SYSTEM_GD32VF103_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#if defined (__ICCRISCV__) + #include "compiler.h" +#endif + +/* system clock frequency (core clock) */ +extern uint32_t SystemCoreClock; + +/* function declarations */ +/* initialize the system and update the SystemCoreClock variable */ +extern void SystemInit(void); +/* update the SystemCoreClock with current core clock retrieved from cpu registers */ +extern void SystemCoreClockUpdate(void); + +#ifdef __cplusplus +} +#endif + +#endif /* SYSTEM_GD32VF103_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/system_gd32vf103.s b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/system_gd32vf103.s new file mode 100644 index 0000000000..6acaa95742 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_standard_peripheral/system_gd32vf103.s @@ -0,0 +1,17608 @@ + .file "system_gd32vf103.c" + .option nopic + .text +.Ltext0: + .cfi_sections .debug_frame + .globl SystemCoreClock + .section .sdata,"aw" + .align 2 + .type SystemCoreClock, @object + .size SystemCoreClock, 4 +SystemCoreClock: + .word 108000000 + .text + .align 1 + .type system_clock_config, @function +system_clock_config: +.LFB2: + .file 1 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\system_gd32vf103.c" + .loc 1 118 1 + .cfi_startproc + addi sp,sp,-16 + .cfi_def_cfa_offset 16 + sw ra,12(sp) + sw s0,8(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,16 + .cfi_def_cfa 8, 0 + .loc 1 134 5 + call system_clock_108m_hxtal + .loc 1 143 1 + nop + lw ra,12(sp) + .cfi_restore 1 + lw s0,8(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 16 + addi sp,sp,16 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE2: + .size system_clock_config, .-system_clock_config + .align 1 + .globl SystemInit + .type SystemInit, @function +SystemInit: +.LFB3: + .loc 1 152 1 + .cfi_startproc + addi sp,sp,-16 + .cfi_def_cfa_offset 16 + sw ra,12(sp) + sw s0,8(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,16 + .cfi_def_cfa 8, 0 + .loc 1 155 89 + li a5,1073876992 + lw a4,0(a5) + li a5,1073876992 + ori a4,a4,1 + sw a4,0(a5) + .loc 1 158 89 + li a5,1073876992 + addi a5,a5,4 + lw a3,0(a5) + li a5,1073876992 + addi a5,a5,4 + li a4,-520159232 + addi a4,a4,12 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 162 89 + li a5,1073876992 + lw a3,0(a5) + li a5,1073876992 + li a4,-17367040 + addi a4,a4,-1 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 165 89 + li a5,1073876992 + lw a3,0(a5) + li a5,1073876992 + li a4,-262144 + addi a4,a4,-1 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 169 89 + li a5,1073876992 + addi a5,a5,4 + lw a3,0(a5) + li a5,1073876992 + addi a5,a5,4 + li a4,-553582592 + addi a4,a4,-1 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 171 6 + li a5,1073876992 + addi a5,a5,44 + .loc 1 171 89 + sw zero,0(a5) + .loc 1 174 89 + li a5,1073876992 + lw a3,0(a5) + li a5,1073876992 + li a4,-352911360 + addi a4,a4,-1 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 176 6 + li a5,1073876992 + addi a5,a5,8 + .loc 1 176 89 + li a4,16711680 + sw a4,0(a5) + .loc 1 179 5 + call system_clock_config + .loc 1 180 1 + nop + lw ra,12(sp) + .cfi_restore 1 + lw s0,8(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 16 + addi sp,sp,16 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE3: + .size SystemInit, .-SystemInit + .section .rodata + .align 2 +.LC0: + .string "" + .string "" + .string "" + .string "" + .string "" + .string "" + .string "" + .string "" + .ascii "\001\002\003\004\006\007\b\t" + .text + .align 1 + .globl SystemCoreClockUpdate + .type SystemCoreClockUpdate, @function +SystemCoreClockUpdate: +.LFB4: + .loc 1 189 1 + .cfi_startproc + addi sp,sp,-80 + .cfi_def_cfa_offset 80 + sw s0,76(sp) + .cfi_offset 8, -4 + addi s0,sp,80 + .cfi_def_cfa 8, 0 + .loc 1 190 14 + sw zero,-32(s0) + .loc 1 191 14 + sw zero,-36(s0) + .loc 1 191 27 + sw zero,-40(s0) + .loc 1 191 43 + sw zero,-20(s0) + .loc 1 191 55 + sw zero,-24(s0) + .loc 1 192 14 + sw zero,-44(s0) + .loc 1 192 27 + sw zero,-48(s0) + .loc 1 192 40 + sw zero,-28(s0) + .loc 1 192 52 + sw zero,-52(s0) + .loc 1 192 61 + sw zero,-56(s0) + .loc 1 194 19 + lla a5,.LC0 + lw a2,0(a5) + lw a3,4(a5) + lw a4,8(a5) + lw a5,12(a5) + sw a2,-72(s0) + sw a3,-68(s0) + sw a4,-64(s0) + sw a5,-60(s0) + .loc 1 196 16 + li a5,1073876992 + addi a5,a5,4 + lw a5,0(a5) + .loc 1 196 173 + srli a5,a5,2 + .loc 1 196 10 + andi a5,a5,3 + sw a5,-32(s0) + .loc 1 198 5 + lw a4,-32(s0) + li a5,2 + beq a4,a5,.L4 + lw a4,-32(s0) + li a5,2 + bgtu a4,a5,.L5 + lw a5,-32(s0) + beq a5,zero,.L6 + lw a4,-32(s0) + li a5,1 + beq a4,a5,.L7 + j .L5 +.L6: + .loc 1 202 29 + lla a5,SystemCoreClock + li a4,7999488 + addi a4,a4,512 + sw a4,0(a5) + .loc 1 203 13 + j .L8 +.L7: + .loc 1 207 29 + lla a5,SystemCoreClock + li a4,7999488 + addi a4,a4,512 + sw a4,0(a5) + .loc 1 208 13 + j .L8 +.L4: + .loc 1 213 24 + li a5,1073876992 + addi a5,a5,4 + lw a4,0(a5) + .loc 1 213 20 + li a5,65536 + and a5,a4,a5 + sw a5,-36(s0) + .loc 1 216 15 + lw a5,-36(s0) + bne a5,zero,.L9 + .loc 1 218 24 + li a5,4001792 + addi a5,a5,-1792 + sw a5,-24(s0) + j .L10 +.L9: + .loc 1 221 24 + li a5,7999488 + addi a5,a5,512 + sw a5,-24(s0) + .loc 1 223 31 + li a5,1073876992 + addi a5,a5,44 + lw a4,0(a5) + .loc 1 223 27 + li a5,65536 + and a5,a4,a5 + sw a5,-40(s0) + .loc 1 226 19 + lw a4,-40(s0) + li a5,65536 + bne a4,a5,.L11 + .loc 1 227 33 + li a5,1073876992 + addi a5,a5,44 + lw a5,0(a5) + .loc 1 227 185 + srli a5,a5,4 + andi a5,a5,15 + .loc 1 227 28 + addi a5,a5,1 + sw a5,-48(s0) + .loc 1 228 33 + li a5,1073876992 + addi a5,a5,44 + lw a5,0(a5) + .loc 1 228 186 + srli a5,a5,8 + andi a5,a5,15 + .loc 1 228 28 + addi a5,a5,2 + sw a5,-28(s0) + .loc 1 229 23 + lw a4,-28(s0) + li a5,17 + bne a4,a5,.L12 + .loc 1 230 32 + li a5,20 + sw a5,-28(s0) +.L12: + .loc 1 232 38 + lw a4,-24(s0) + lw a5,-48(s0) + divu a5,a4,a5 + .loc 1 232 28 + lw a4,-28(s0) + mul a5,a4,a5 + sw a5,-24(s0) +.L11: + .loc 1 234 28 + li a5,1073876992 + addi a5,a5,44 + lw a5,0(a5) + .loc 1 234 111 + andi a5,a5,15 + .loc 1 234 24 + addi a5,a5,1 + sw a5,-44(s0) + .loc 1 235 24 + lw a4,-24(s0) + lw a5,-44(s0) + divu a5,a4,a5 + sw a5,-24(s0) +.L10: + .loc 1 239 25 + li a5,1073876992 + addi a5,a5,4 + lw a5,0(a5) + .loc 1 239 184 + srli a5,a5,18 + .loc 1 239 19 + andi a5,a5,15 + sw a5,-20(s0) + .loc 1 241 18 + li a5,1073876992 + addi a5,a5,4 + lw a4,0(a5) + .loc 1 241 101 + li a5,536870912 + and a5,a4,a5 + .loc 1 241 15 + beq a5,zero,.L13 + .loc 1 242 23 + lw a5,-20(s0) + ori a5,a5,16 + sw a5,-20(s0) +.L13: + .loc 1 245 15 + lw a4,-20(s0) + li a5,14 + bleu a4,a5,.L14 + .loc 1 246 23 + lw a5,-20(s0) + addi a5,a5,1 + sw a5,-20(s0) + j .L15 +.L14: + .loc 1 248 23 + lw a5,-20(s0) + addi a5,a5,2 + sw a5,-20(s0) +.L15: + .loc 1 251 38 + lw a4,-24(s0) + lw a5,-20(s0) + mul a4,a4,a5 + .loc 1 251 29 + lla a5,SystemCoreClock + sw a4,0(a5) + .loc 1 253 15 + lw a4,-20(s0) + li a5,15 + bne a4,a5,.L17 + .loc 1 255 42 + lw a4,-24(s0) + mv a5,a4 + slli a5,a5,1 + add a5,a5,a4 + slli a5,a5,1 + mv a4,a5 + .loc 1 255 56 + lw a5,-24(s0) + srli a5,a5,1 + .loc 1 255 47 + add a4,a4,a5 + .loc 1 255 33 + lla a5,SystemCoreClock + sw a4,0(a5) + .loc 1 258 13 + j .L17 +.L5: + .loc 1 262 29 + lla a5,SystemCoreClock + li a4,7999488 + addi a4,a4,512 + sw a4,0(a5) + .loc 1 263 13 + j .L8 +.L17: + .loc 1 258 13 + nop +.L8: + .loc 1 266 15 + li a5,1073876992 + addi a5,a5,4 + lw a5,0(a5) + .loc 1 266 172 + srli a5,a5,4 + .loc 1 266 9 + andi a5,a5,15 + sw a5,-52(s0) + .loc 1 267 22 + lw a5,-52(s0) + addi a4,s0,-16 + add a5,a4,a5 + lbu a5,-56(a5) + .loc 1 267 13 + sw a5,-56(s0) + .loc 1 268 21 + lla a5,SystemCoreClock + lw a4,0(a5) + lw a5,-56(s0) + srl a4,a4,a5 + lla a5,SystemCoreClock + sw a4,0(a5) + .loc 1 269 1 + nop + lw s0,76(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 80 + addi sp,sp,80 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE4: + .size SystemCoreClockUpdate, .-SystemCoreClockUpdate + .align 1 + .type system_clock_108m_hxtal, @function +system_clock_108m_hxtal: +.LFB5: + .loc 1 759 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + .loc 1 760 14 + sw zero,-20(s0) + .loc 1 761 14 + sw zero,-24(s0) + .loc 1 764 89 + li a5,1073876992 + lw a3,0(a5) + li a5,1073876992 + li a4,65536 + or a4,a3,a4 + sw a4,0(a5) +.L20: + .loc 1 768 16 discriminator 2 + lw a5,-20(s0) + addi a5,a5,1 + sw a5,-20(s0) + .loc 1 769 23 discriminator 2 + li a5,1073876992 + lw a4,0(a5) + .loc 1 769 19 discriminator 2 + li a5,131072 + and a5,a4,a5 + sw a5,-24(s0) + .loc 1 770 5 discriminator 2 + lw a5,-24(s0) + bne a5,zero,.L19 + .loc 1 770 30 discriminator 1 + lw a4,-20(s0) + li a5,65536 + addi a5,a5,-1 + bne a4,a5,.L20 +.L19: + .loc 1 773 16 + li a5,1073876992 + lw a4,0(a5) + .loc 1 773 99 + li a5,131072 + and a5,a4,a5 + .loc 1 773 7 + bne a5,zero,.L21 +.L22: + .loc 1 774 14 discriminator 1 + j .L22 +.L21: + .loc 1 780 89 + li a5,1073876992 + addi a4,a5,4 + li a5,1073876992 + addi a5,a5,4 + lw a4,0(a4) + sw a4,0(a5) + .loc 1 782 89 + li a5,1073876992 + addi a4,a5,4 + li a5,1073876992 + addi a5,a5,4 + lw a4,0(a4) + sw a4,0(a5) + .loc 1 784 89 + li a5,1073876992 + addi a5,a5,4 + lw a4,0(a5) + li a5,1073876992 + addi a5,a5,4 + ori a4,a4,1024 + sw a4,0(a5) + .loc 1 787 89 + li a5,1073876992 + addi a5,a5,4 + lw a3,0(a5) + li a5,1073876992 + addi a5,a5,4 + li a4,-540803072 + addi a4,a4,-1 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 788 89 + li a5,1073876992 + addi a5,a5,4 + lw a3,0(a5) + li a5,1073876992 + addi a5,a5,4 + li a4,539557888 + or a4,a3,a4 + sw a4,0(a5) + .loc 1 807 87 + li a5,1073876992 + addi a5,a5,44 + lw a3,0(a5) + li a5,1073876992 + addi a5,a5,44 + li a4,-69632 + and a4,a3,a4 + sw a4,0(a5) + .loc 1 808 87 + li a5,1073876992 + addi a5,a5,44 + lw a3,0(a5) + li a5,1073876992 + addi a5,a5,44 + li a4,65536 + addi a4,a4,-239 + or a4,a3,a4 + sw a4,0(a5) + .loc 1 811 87 + li a5,1073876992 + lw a3,0(a5) + li a5,1073876992 + li a4,67108864 + or a4,a3,a4 + sw a4,0(a5) + .loc 1 813 8 + nop +.L23: + .loc 1 813 17 discriminator 1 + li a5,1073876992 + lw a4,0(a5) + .loc 1 813 100 discriminator 1 + li a5,134217728 + and a5,a4,a5 + .loc 1 813 8 discriminator 1 + beq a5,zero,.L23 + .loc 1 817 87 + li a5,1073876992 + lw a3,0(a5) + li a5,1073876992 + li a4,268435456 + or a4,a3,a4 + sw a4,0(a5) + .loc 1 819 8 + nop +.L24: + .loc 1 819 17 discriminator 1 + li a5,1073876992 + lw a4,0(a5) + .loc 1 819 100 discriminator 1 + li a5,536870912 + and a5,a4,a5 + .loc 1 819 8 discriminator 1 + beq a5,zero,.L24 + .loc 1 824 89 + li a5,1073876992 + lw a3,0(a5) + li a5,1073876992 + li a4,16777216 + or a4,a3,a4 + sw a4,0(a5) + .loc 1 827 10 + nop +.L25: + .loc 1 827 19 discriminator 1 + li a5,1073876992 + lw a4,0(a5) + .loc 1 827 102 discriminator 1 + li a5,33554432 + and a5,a4,a5 + .loc 1 827 10 discriminator 1 + beq a5,zero,.L25 + .loc 1 831 89 + li a5,1073876992 + addi a5,a5,4 + lw a4,0(a5) + li a5,1073876992 + addi a5,a5,4 + andi a4,a4,-4 + sw a4,0(a5) + .loc 1 832 89 + li a5,1073876992 + addi a5,a5,4 + lw a4,0(a5) + li a5,1073876992 + addi a5,a5,4 + ori a4,a4,2 + sw a4,0(a5) + .loc 1 835 10 + nop +.L26: + .loc 1 835 19 discriminator 1 + li a5,1073876992 + addi a5,a5,4 + lw a5,0(a5) + .loc 1 835 102 discriminator 1 + andi a5,a5,8 + .loc 1 835 10 discriminator 1 + beq a5,zero,.L26 + .loc 1 837 1 + nop + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE5: + .size system_clock_108m_hxtal, .-system_clock_108m_hxtal +.Letext0: + .file 2 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\machine\\_default_types.h" + .file 3 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_stdint.h" + .file 4 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\system_gd32vf103.h" + .section .debug_info,"",@progbits +.Ldebug_info0: + .4byte 0x208 + .2byte 0x4 + .4byte .Ldebug_abbrev0 + .byte 0x4 + .byte 0x1 + .4byte .LASF3204 + .byte 0xc + .4byte .LASF3205 + .4byte .LASF3206 + .4byte .Ltext0 + .4byte .Letext0-.Ltext0 + .4byte .Ldebug_line0 + .4byte .Ldebug_macro0 + .byte 0x2 + .byte 0x4 + .byte 0x7 + .4byte .LASF3176 + .byte 0x2 + .byte 0x1 + .byte 0x6 + .4byte .LASF3177 + .byte 0x3 + .4byte .LASF3180 + .byte 0x2 + .byte 0x2b + .byte 0x17 + .4byte 0x43 + .byte 0x2 + .byte 0x1 + .byte 0x8 + .4byte .LASF3178 + .byte 0x2 + .byte 0x2 + .byte 0x5 + .4byte .LASF3179 + .byte 0x3 + .4byte .LASF3181 + .byte 0x2 + .byte 0x39 + .byte 0x1c + .4byte 0x5d + .byte 0x2 + .byte 0x2 + .byte 0x7 + .4byte .LASF3182 + .byte 0x2 + .byte 0x4 + .byte 0x5 + .4byte .LASF3183 + .byte 0x3 + .4byte .LASF3184 + .byte 0x2 + .byte 0x4f + .byte 0x1b + .4byte 0x77 + .byte 0x2 + .byte 0x4 + .byte 0x7 + .4byte .LASF3185 + .byte 0x2 + .byte 0x8 + .byte 0x5 + .4byte .LASF3186 + .byte 0x2 + .byte 0x8 + .byte 0x7 + .4byte .LASF3187 + .byte 0x4 + .byte 0x4 + .byte 0x5 + .string "int" + .byte 0x3 + .4byte .LASF3188 + .byte 0x3 + .byte 0x18 + .byte 0x13 + .4byte 0x37 + .byte 0x5 + .4byte 0x93 + .byte 0x3 + .4byte .LASF3189 + .byte 0x3 + .byte 0x24 + .byte 0x14 + .4byte 0x51 + .byte 0x3 + .4byte .LASF3190 + .byte 0x3 + .byte 0x30 + .byte 0x14 + .4byte 0x6b + .byte 0x6 + .4byte .LASF3207 + .byte 0x4 + .byte 0x35 + .byte 0x11 + .4byte 0xb0 + .byte 0x2 + .byte 0x10 + .byte 0x4 + .4byte .LASF3191 + .byte 0x7 + .4byte 0xbc + .byte 0x1 + .byte 0x66 + .byte 0xa + .byte 0x5 + .byte 0x3 + .4byte SystemCoreClock + .byte 0x8 + .4byte .LASF3208 + .byte 0x1 + .2byte 0x2f6 + .byte 0xd + .4byte .LFB5 + .4byte .LFE5-.LFB5 + .byte 0x1 + .byte 0x9c + .4byte 0x115 + .byte 0x9 + .4byte .LASF3192 + .byte 0x1 + .2byte 0x2f8 + .byte 0xe + .4byte 0xb0 + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0x9 + .4byte .LASF3193 + .byte 0x1 + .2byte 0x2f9 + .byte 0xe + .4byte 0xb0 + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0 + .byte 0xa + .4byte .LASF3209 + .byte 0x1 + .byte 0xbc + .byte 0x6 + .4byte .LFB4 + .4byte .LFE4-.LFB4 + .byte 0x1 + .byte 0x9c + .4byte 0x1d2 + .byte 0xb + .4byte .LASF3194 + .byte 0x1 + .byte 0xbe + .byte 0xe + .4byte 0xb0 + .byte 0x2 + .byte 0x91 + .byte 0x60 + .byte 0xb + .4byte .LASF3195 + .byte 0x1 + .byte 0xbf + .byte 0xe + .4byte 0xb0 + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0xb + .4byte .LASF3196 + .byte 0x1 + .byte 0xbf + .byte 0x1b + .4byte 0xb0 + .byte 0x2 + .byte 0x91 + .byte 0x58 + .byte 0xb + .4byte .LASF3197 + .byte 0x1 + .byte 0xbf + .byte 0x2b + .4byte 0xb0 + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0xb + .4byte .LASF3198 + .byte 0x1 + .byte 0xbf + .byte 0x37 + .4byte 0xb0 + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0xb + .4byte .LASF3199 + .byte 0x1 + .byte 0xc0 + .byte 0xe + .4byte 0xb0 + .byte 0x2 + .byte 0x91 + .byte 0x54 + .byte 0xb + .4byte .LASF3200 + .byte 0x1 + .byte 0xc0 + .byte 0x1b + .4byte 0xb0 + .byte 0x2 + .byte 0x91 + .byte 0x50 + .byte 0xb + .4byte .LASF3201 + .byte 0x1 + .byte 0xc0 + .byte 0x28 + .4byte 0xb0 + .byte 0x2 + .byte 0x91 + .byte 0x64 + .byte 0xc + .string "idx" + .byte 0x1 + .byte 0xc0 + .byte 0x34 + .4byte 0xb0 + .byte 0x2 + .byte 0x91 + .byte 0x4c + .byte 0xb + .4byte .LASF3202 + .byte 0x1 + .byte 0xc0 + .byte 0x3d + .4byte 0xb0 + .byte 0x2 + .byte 0x91 + .byte 0x48 + .byte 0xb + .4byte .LASF3203 + .byte 0x1 + .byte 0xc2 + .byte 0x13 + .4byte 0x1e2 + .byte 0x3 + .byte 0x91 + .byte 0xb8,0x7f + .byte 0 + .byte 0xd + .4byte 0x9f + .4byte 0x1e2 + .byte 0xe + .4byte 0x29 + .byte 0xf + .byte 0 + .byte 0x5 + .4byte 0x1d2 + .byte 0xf + .4byte .LASF3210 + .byte 0x1 + .byte 0x97 + .byte 0x6 + .4byte .LFB3 + .4byte .LFE3-.LFB3 + .byte 0x1 + .byte 0x9c + .byte 0x10 + .4byte .LASF3211 + .byte 0x1 + .byte 0x75 + .byte 0xd + .4byte .LFB2 + .4byte .LFE2-.LFB2 + .byte 0x1 + .byte 0x9c + .byte 0 + .section .debug_abbrev,"",@progbits +.Ldebug_abbrev0: + .byte 0x1 + .byte 0x11 + .byte 0x1 + .byte 0x25 + .byte 0xe + .byte 0x13 + .byte 0xb + .byte 0x3 + .byte 0xe + .byte 0x1b + .byte 0xe + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x10 + .byte 0x17 + .byte 0x99,0x42 + .byte 0x17 + .byte 0 + .byte 0 + .byte 0x2 + .byte 0x24 + .byte 0 + .byte 0xb + .byte 0xb + .byte 0x3e + .byte 0xb + .byte 0x3 + .byte 0xe + .byte 0 + .byte 0 + .byte 0x3 + .byte 0x16 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x4 + .byte 0x24 + .byte 0 + .byte 0xb + .byte 0xb + .byte 0x3e + .byte 0xb + .byte 0x3 + .byte 0x8 + .byte 0 + .byte 0 + .byte 0x5 + .byte 0x26 + .byte 0 + .byte 0x49 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x6 + .byte 0x34 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x3f + .byte 0x19 + .byte 0x3c + .byte 0x19 + .byte 0 + .byte 0 + .byte 0x7 + .byte 0x34 + .byte 0 + .byte 0x47 + .byte 0x13 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0x8 + .byte 0x2e + .byte 0x1 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x9 + .byte 0x34 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0xa + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0xb + .byte 0x34 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0xc + .byte 0x34 + .byte 0 + .byte 0x3 + .byte 0x8 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0xd + .byte 0x1 + .byte 0x1 + .byte 0x49 + .byte 0x13 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0xe + .byte 0x21 + .byte 0 + .byte 0x49 + .byte 0x13 + .byte 0x2f + .byte 0xb + .byte 0 + .byte 0 + .byte 0xf + .byte 0x2e + .byte 0 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x96,0x42 + .byte 0x19 + .byte 0 + .byte 0 + .byte 0x10 + .byte 0x2e + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x96,0x42 + .byte 0x19 + .byte 0 + .byte 0 + .byte 0 + .section .debug_aranges,"",@progbits + .4byte 0x1c + .2byte 0x2 + .4byte .Ldebug_info0 + .byte 0x4 + .byte 0 + .2byte 0 + .2byte 0 + .4byte .Ltext0 + .4byte .Letext0-.Ltext0 + .4byte 0 + .4byte 0 + .section .debug_macro,"",@progbits +.Ldebug_macro0: + .2byte 0x4 + .byte 0x2 + .4byte .Ldebug_line0 + .byte 0x3 + .byte 0 + .byte 0x1 + .byte 0x5 + .byte 0x1 + .4byte .LASF0 + .byte 0x5 + .byte 0x2 + .4byte .LASF1 + .byte 0x5 + .byte 0x3 + .4byte .LASF2 + .byte 0x5 + .byte 0x4 + .4byte .LASF3 + .byte 0x5 + .byte 0x5 + .4byte .LASF4 + .byte 0x5 + .byte 0x6 + .4byte .LASF5 + .byte 0x5 + .byte 0x7 + .4byte .LASF6 + .byte 0x5 + .byte 0x8 + .4byte .LASF7 + .byte 0x5 + .byte 0x9 + .4byte .LASF8 + .byte 0x5 + .byte 0xa + .4byte .LASF9 + .byte 0x5 + .byte 0xb + .4byte .LASF10 + .byte 0x5 + .byte 0xc + .4byte .LASF11 + .byte 0x5 + .byte 0xd + .4byte .LASF12 + .byte 0x5 + .byte 0xe + .4byte .LASF13 + .byte 0x5 + .byte 0xf + .4byte .LASF14 + .byte 0x5 + .byte 0x10 + .4byte .LASF15 + .byte 0x5 + .byte 0x11 + .4byte .LASF16 + .byte 0x5 + .byte 0x12 + .4byte .LASF17 + .byte 0x5 + .byte 0x13 + .4byte .LASF18 + .byte 0x5 + .byte 0x14 + .4byte .LASF19 + .byte 0x5 + .byte 0x15 + .4byte .LASF20 + .byte 0x5 + .byte 0x16 + .4byte .LASF21 + .byte 0x5 + .byte 0x17 + .4byte .LASF22 + .byte 0x5 + .byte 0x18 + .4byte .LASF23 + .byte 0x5 + .byte 0x19 + .4byte .LASF24 + .byte 0x5 + .byte 0x1a + .4byte .LASF25 + .byte 0x5 + .byte 0x1b + .4byte .LASF26 + .byte 0x5 + .byte 0x1c + .4byte .LASF27 + .byte 0x5 + .byte 0x1d + .4byte .LASF28 + .byte 0x5 + .byte 0x1e + .4byte .LASF29 + .byte 0x5 + .byte 0x1f + .4byte .LASF30 + .byte 0x5 + .byte 0x20 + .4byte .LASF31 + .byte 0x5 + .byte 0x21 + .4byte .LASF32 + .byte 0x5 + .byte 0x22 + .4byte .LASF33 + .byte 0x5 + .byte 0x23 + .4byte .LASF34 + .byte 0x5 + .byte 0x24 + .4byte .LASF35 + .byte 0x5 + .byte 0x25 + .4byte .LASF36 + .byte 0x5 + .byte 0x26 + .4byte .LASF37 + .byte 0x5 + .byte 0x27 + .4byte .LASF38 + .byte 0x5 + .byte 0x28 + .4byte .LASF39 + .byte 0x5 + .byte 0x29 + .4byte .LASF40 + .byte 0x5 + .byte 0x2a + .4byte .LASF41 + .byte 0x5 + .byte 0x2b + .4byte .LASF42 + .byte 0x5 + .byte 0x2c + .4byte .LASF43 + .byte 0x5 + .byte 0x2d + .4byte .LASF44 + .byte 0x5 + .byte 0x2e + .4byte .LASF45 + .byte 0x5 + .byte 0x2f + .4byte .LASF46 + .byte 0x5 + .byte 0x30 + .4byte .LASF47 + .byte 0x5 + .byte 0x31 + .4byte .LASF48 + .byte 0x5 + .byte 0x32 + .4byte .LASF49 + .byte 0x5 + .byte 0x33 + .4byte .LASF50 + .byte 0x5 + .byte 0x34 + .4byte .LASF51 + .byte 0x5 + .byte 0x35 + .4byte .LASF52 + .byte 0x5 + .byte 0x36 + .4byte .LASF53 + .byte 0x5 + .byte 0x37 + .4byte .LASF54 + .byte 0x5 + .byte 0x38 + .4byte .LASF55 + .byte 0x5 + .byte 0x39 + .4byte .LASF56 + .byte 0x5 + .byte 0x3a + .4byte .LASF57 + .byte 0x5 + .byte 0x3b + .4byte .LASF58 + .byte 0x5 + .byte 0x3c + .4byte .LASF59 + .byte 0x5 + .byte 0x3d + .4byte .LASF60 + .byte 0x5 + .byte 0x3e + .4byte .LASF61 + .byte 0x5 + .byte 0x3f + .4byte .LASF62 + .byte 0x5 + .byte 0x40 + .4byte .LASF63 + .byte 0x5 + .byte 0x41 + .4byte .LASF64 + .byte 0x5 + .byte 0x42 + .4byte .LASF65 + .byte 0x5 + .byte 0x43 + .4byte .LASF66 + .byte 0x5 + .byte 0x44 + .4byte .LASF67 + .byte 0x5 + .byte 0x45 + .4byte .LASF68 + .byte 0x5 + .byte 0x46 + .4byte .LASF69 + .byte 0x5 + .byte 0x47 + .4byte .LASF70 + .byte 0x5 + .byte 0x48 + .4byte .LASF71 + .byte 0x5 + .byte 0x49 + .4byte .LASF72 + .byte 0x5 + .byte 0x4a + .4byte .LASF73 + .byte 0x5 + .byte 0x4b + .4byte .LASF74 + .byte 0x5 + .byte 0x4c + .4byte .LASF75 + .byte 0x5 + .byte 0x4d + .4byte .LASF76 + .byte 0x5 + .byte 0x4e + .4byte .LASF77 + .byte 0x5 + .byte 0x4f + .4byte .LASF78 + .byte 0x5 + .byte 0x50 + .4byte .LASF79 + .byte 0x5 + .byte 0x51 + .4byte .LASF80 + .byte 0x5 + .byte 0x52 + .4byte .LASF81 + .byte 0x5 + .byte 0x53 + .4byte .LASF82 + .byte 0x5 + .byte 0x54 + .4byte .LASF83 + .byte 0x5 + .byte 0x55 + .4byte .LASF84 + .byte 0x5 + .byte 0x56 + .4byte .LASF85 + .byte 0x5 + .byte 0x57 + .4byte .LASF86 + .byte 0x5 + .byte 0x58 + .4byte .LASF87 + .byte 0x5 + .byte 0x59 + .4byte .LASF88 + .byte 0x5 + .byte 0x5a + .4byte .LASF89 + .byte 0x5 + .byte 0x5b + .4byte .LASF90 + .byte 0x5 + .byte 0x5c + .4byte .LASF91 + .byte 0x5 + .byte 0x5d + .4byte .LASF92 + .byte 0x5 + .byte 0x5e + .4byte .LASF93 + .byte 0x5 + .byte 0x5f + .4byte .LASF94 + .byte 0x5 + .byte 0x60 + .4byte .LASF95 + .byte 0x5 + .byte 0x61 + .4byte .LASF96 + .byte 0x5 + .byte 0x62 + .4byte .LASF97 + .byte 0x5 + .byte 0x63 + .4byte .LASF98 + .byte 0x5 + .byte 0x64 + .4byte .LASF99 + .byte 0x5 + .byte 0x65 + .4byte .LASF100 + .byte 0x5 + .byte 0x66 + .4byte .LASF101 + .byte 0x5 + .byte 0x67 + .4byte .LASF102 + .byte 0x5 + .byte 0x68 + .4byte .LASF103 + .byte 0x5 + .byte 0x69 + .4byte .LASF104 + .byte 0x5 + .byte 0x6a + .4byte .LASF105 + .byte 0x5 + .byte 0x6b + .4byte .LASF106 + .byte 0x5 + .byte 0x6c + .4byte .LASF107 + .byte 0x5 + .byte 0x6d + .4byte .LASF108 + .byte 0x5 + .byte 0x6e + .4byte .LASF109 + .byte 0x5 + .byte 0x6f + .4byte .LASF110 + .byte 0x5 + .byte 0x70 + .4byte .LASF111 + .byte 0x5 + .byte 0x71 + .4byte .LASF112 + .byte 0x5 + .byte 0x72 + .4byte .LASF113 + .byte 0x5 + .byte 0x73 + .4byte .LASF114 + .byte 0x5 + .byte 0x74 + .4byte .LASF115 + .byte 0x5 + .byte 0x75 + .4byte .LASF116 + .byte 0x5 + .byte 0x76 + .4byte .LASF117 + .byte 0x5 + .byte 0x77 + .4byte .LASF118 + .byte 0x5 + .byte 0x78 + .4byte .LASF119 + .byte 0x5 + .byte 0x79 + .4byte .LASF120 + .byte 0x5 + .byte 0x7a + .4byte .LASF121 + .byte 0x5 + .byte 0x7b + .4byte .LASF122 + .byte 0x5 + .byte 0x7c + .4byte .LASF123 + .byte 0x5 + .byte 0x7d + .4byte .LASF124 + .byte 0x5 + .byte 0x7e + .4byte .LASF125 + .byte 0x5 + .byte 0x7f + .4byte .LASF126 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF127 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF128 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF129 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF130 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF131 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF132 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF133 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF134 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF135 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF136 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF137 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF138 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF139 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF140 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF141 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF142 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF143 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF144 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF145 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF146 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF147 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF148 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF149 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF150 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF151 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF152 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF153 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF154 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF155 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF156 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF157 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF158 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF159 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF160 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF161 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF162 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF163 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF164 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF165 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF166 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF167 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF168 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF169 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF170 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF171 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF172 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF173 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF174 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF175 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF176 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF177 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF178 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF179 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF180 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF181 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF182 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF183 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF184 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF185 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF186 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF187 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF188 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF189 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF190 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF191 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF192 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF193 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF194 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF195 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF196 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF197 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF198 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF199 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF200 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF201 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF202 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF203 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF204 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF205 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF206 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF207 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF208 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF209 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF210 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF211 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF212 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF213 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF214 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF215 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF216 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF217 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF218 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF219 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF220 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF221 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF222 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF223 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF224 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF225 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF226 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF227 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF228 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF229 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF230 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF231 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF232 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF233 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF234 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF235 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF236 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF237 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF238 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF239 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF240 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF241 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF242 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF243 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF244 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF245 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF246 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF247 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF248 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF249 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF250 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF251 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF252 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF253 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF254 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF255 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF256 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF257 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF258 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF259 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF260 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF261 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF262 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF263 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF264 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF265 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF266 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF267 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF268 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF269 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF270 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF271 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF272 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF273 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF274 + .byte 0x5 + .byte 0x94,0x2 + .4byte .LASF275 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF276 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF277 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF278 + .byte 0x5 + .byte 0x98,0x2 + .4byte .LASF279 + .byte 0x5 + .byte 0x99,0x2 + .4byte .LASF280 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF281 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF282 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF283 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF284 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF285 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF286 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF287 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF288 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF289 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF290 + .byte 0x5 + .byte 0xa4,0x2 + .4byte .LASF291 + .byte 0x5 + .byte 0xa5,0x2 + .4byte .LASF292 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF293 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF294 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF295 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF296 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF297 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF298 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF299 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF300 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF301 + .byte 0x5 + .byte 0xaf,0x2 + .4byte .LASF302 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF303 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF304 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF305 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF306 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF307 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF308 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF309 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF310 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF311 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF312 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF313 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF314 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF315 + .byte 0x5 + .byte 0xbd,0x2 + .4byte .LASF316 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF317 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF318 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF319 + .byte 0x5 + .byte 0x1 + .4byte .LASF320 + .byte 0x5 + .byte 0x2 + .4byte .LASF321 + .byte 0x5 + .byte 0x3 + .4byte .LASF322 + .byte 0x5 + .byte 0x4 + .4byte .LASF323 + .byte 0x5 + .byte 0x5 + .4byte .LASF324 + .byte 0x5 + .byte 0x6 + .4byte .LASF325 + .byte 0x5 + .byte 0x7 + .4byte .LASF326 + .byte 0x5 + .byte 0x8 + .4byte .LASF327 + .byte 0x5 + .byte 0x9 + .4byte .LASF328 + .file 5 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\gd32vf103.h" + .byte 0x3 + .byte 0x28 + .byte 0x5 + .byte 0x7 + .4byte .Ldebug_macro2 + .byte 0x3 + .byte 0xaf,0x1 + .byte 0x4 + .byte 0x5 + .byte 0x28 + .4byte .LASF340 + .file 6 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\stdint.h" + .byte 0x3 + .byte 0x2e + .byte 0x6 + .byte 0x5 + .byte 0xa + .4byte .LASF341 + .byte 0x3 + .byte 0xc + .byte 0x2 + .byte 0x5 + .byte 0x6 + .4byte .LASF342 + .file 7 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\features.h" + .byte 0x3 + .byte 0x8 + .byte 0x7 + .byte 0x5 + .byte 0x16 + .4byte .LASF343 + .file 8 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\_newlib_version.h" + .byte 0x3 + .byte 0x1c + .byte 0x8 + .byte 0x7 + .4byte .Ldebug_macro3 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro5 + .byte 0x4 + .file 9 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_intsup.h" + .byte 0x3 + .byte 0xd + .byte 0x9 + .byte 0x7 + .4byte .Ldebug_macro6 + .byte 0x4 + .byte 0x3 + .byte 0xe + .byte 0x3 + .byte 0x7 + .4byte .Ldebug_macro7 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro8 + .byte 0x4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro9 + .file 10 "board/gd32vf103_libopt.h" + .byte 0x3 + .byte 0xec,0x1 + .byte 0xa + .byte 0x5 + .byte 0x25 + .4byte .LASF526 + .file 11 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_adc.h" + .byte 0x3 + .byte 0x27 + .byte 0xb + .byte 0x5 + .byte 0x25 + .4byte .LASF527 + .file 12 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral/gd32vf103.h" + .byte 0x3 + .byte 0x27 + .byte 0xc + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro10 + .byte 0x4 + .file 13 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_bkp.h" + .byte 0x3 + .byte 0x28 + .byte 0xd + .byte 0x7 + .4byte .Ldebug_macro11 + .byte 0x4 + .file 14 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_can.h" + .byte 0x3 + .byte 0x29 + .byte 0xe + .byte 0x7 + .4byte .Ldebug_macro12 + .byte 0x4 + .file 15 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_crc.h" + .byte 0x3 + .byte 0x2a + .byte 0xf + .byte 0x7 + .4byte .Ldebug_macro13 + .byte 0x4 + .file 16 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dac.h" + .byte 0x3 + .byte 0x2b + .byte 0x10 + .byte 0x7 + .4byte .Ldebug_macro14 + .byte 0x4 + .file 17 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dma.h" + .byte 0x3 + .byte 0x2c + .byte 0x11 + .byte 0x7 + .4byte .Ldebug_macro15 + .byte 0x4 + .file 18 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_eclic.h" + .byte 0x3 + .byte 0x2d + .byte 0x12 + .byte 0x7 + .4byte .Ldebug_macro16 + .byte 0x4 + .file 19 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_exmc.h" + .byte 0x3 + .byte 0x2e + .byte 0x13 + .byte 0x7 + .4byte .Ldebug_macro17 + .byte 0x4 + .file 20 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_exti.h" + .byte 0x3 + .byte 0x2f + .byte 0x14 + .byte 0x7 + .4byte .Ldebug_macro18 + .byte 0x4 + .file 21 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_fmc.h" + .byte 0x3 + .byte 0x30 + .byte 0x15 + .byte 0x7 + .4byte .Ldebug_macro19 + .byte 0x4 + .file 22 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_gpio.h" + .byte 0x3 + .byte 0x31 + .byte 0x16 + .byte 0x7 + .4byte .Ldebug_macro20 + .byte 0x4 + .file 23 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_i2c.h" + .byte 0x3 + .byte 0x32 + .byte 0x17 + .byte 0x7 + .4byte .Ldebug_macro21 + .byte 0x4 + .file 24 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_fwdgt.h" + .byte 0x3 + .byte 0x33 + .byte 0x18 + .byte 0x7 + .4byte .Ldebug_macro22 + .byte 0x4 + .file 25 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dbg.h" + .byte 0x3 + .byte 0x34 + .byte 0x19 + .byte 0x7 + .4byte .Ldebug_macro23 + .byte 0x4 + .file 26 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_pmu.h" + .byte 0x3 + .byte 0x35 + .byte 0x1a + .byte 0x7 + .4byte .Ldebug_macro24 + .byte 0x4 + .file 27 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_rcu.h" + .byte 0x3 + .byte 0x36 + .byte 0x1b + .byte 0x7 + .4byte .Ldebug_macro25 + .byte 0x4 + .file 28 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_rtc.h" + .byte 0x3 + .byte 0x37 + .byte 0x1c + .byte 0x7 + .4byte .Ldebug_macro26 + .byte 0x4 + .file 29 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_spi.h" + .byte 0x3 + .byte 0x38 + .byte 0x1d + .byte 0x7 + .4byte .Ldebug_macro27 + .byte 0x4 + .file 30 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_timer.h" + .byte 0x3 + .byte 0x39 + .byte 0x1e + .byte 0x7 + .4byte .Ldebug_macro28 + .byte 0x4 + .file 31 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_usart.h" + .byte 0x3 + .byte 0x3a + .byte 0x1f + .byte 0x7 + .4byte .Ldebug_macro29 + .byte 0x4 + .file 32 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_wwdgt.h" + .byte 0x3 + .byte 0x3b + .byte 0x20 + .byte 0x7 + .4byte .Ldebug_macro30 + .byte 0x4 + .file 33 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_func.h" + .byte 0x3 + .byte 0x3c + .byte 0x21 + .byte 0x5 + .byte 0x4 + .4byte .LASF3074 + .file 34 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\lib\\gcc\\riscv-none-embed\\10.2.0\\include\\stddef.h" + .byte 0x3 + .byte 0x7 + .byte 0x22 + .byte 0x7 + .4byte .Ldebug_macro31 + .byte 0x4 + .file 35 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_timer.h" + .byte 0x3 + .byte 0x8 + .byte 0x23 + .byte 0x7 + .4byte .Ldebug_macro32 + .byte 0x4 + .file 36 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_eclic.h" + .byte 0x3 + .byte 0x9 + .byte 0x24 + .byte 0x5 + .byte 0x4 + .4byte .LASF3138 + .file 37 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/riscv_const.h" + .byte 0x3 + .byte 0x6 + .byte 0x25 + .byte 0x7 + .4byte .Ldebug_macro33 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro34 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro35 + .byte 0x4 + .byte 0x4 + .byte 0x4 + .byte 0x5 + .byte 0x2b + .4byte .LASF3169 + .byte 0x5 + .byte 0x2c + .4byte .LASF3170 + .byte 0x5 + .byte 0x2d + .4byte .LASF3171 + .byte 0x5 + .byte 0x3f + .4byte .LASF3172 + .byte 0x5 + .byte 0x41 + .4byte .LASF3173 + .byte 0x5 + .byte 0x42 + .4byte .LASF3174 + .byte 0x5 + .byte 0x43 + .4byte .LASF3175 + .byte 0x4 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103.h.37.6b141d903229e2235d36f2860fb69b6b,comdat +.Ldebug_macro2: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF329 + .byte 0x5 + .byte 0x35 + .4byte .LASF330 + .byte 0x5 + .byte 0x37 + .4byte .LASF331 + .byte 0x5 + .byte 0x38 + .4byte .LASF332 + .byte 0x5 + .byte 0x40 + .4byte .LASF333 + .byte 0x5 + .byte 0x41 + .4byte .LASF334 + .byte 0x5 + .byte 0x49 + .4byte .LASF335 + .byte 0x5 + .byte 0x4e + .4byte .LASF336 + .byte 0x5 + .byte 0x53 + .4byte .LASF337 + .byte 0x5 + .byte 0x58 + .4byte .LASF338 + .byte 0x5 + .byte 0x5d + .4byte .LASF339 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._newlib_version.h.4.bfdf54b0af045d4a71376ae00f63a22c,comdat +.Ldebug_macro3: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4 + .4byte .LASF344 + .byte 0x5 + .byte 0x6 + .4byte .LASF345 + .byte 0x5 + .byte 0x7 + .4byte .LASF346 + .byte 0x5 + .byte 0x8 + .4byte .LASF347 + .byte 0x5 + .byte 0x9 + .4byte .LASF348 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.features.h.33.4ac7543a40bbf4e11e60e29e36a3b28e,comdat +.Ldebug_macro4: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x21 + .4byte .LASF349 + .byte 0x5 + .byte 0x28 + .4byte .LASF350 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF351 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF352 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF353 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF354 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF355 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF356 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF357 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF358 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF359 + .byte 0x5 + .byte 0xca,0x2 + .4byte .LASF360 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._default_types.h.15.247e5cd201eca3442cbf5404108c4935,comdat +.Ldebug_macro5: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xf + .4byte .LASF361 + .byte 0x5 + .byte 0x1a + .4byte .LASF362 + .byte 0x5 + .byte 0x21 + .4byte .LASF363 + .byte 0x5 + .byte 0x2f + .4byte .LASF364 + .byte 0x5 + .byte 0x3d + .4byte .LASF365 + .byte 0x5 + .byte 0x53 + .4byte .LASF366 + .byte 0x5 + .byte 0x6d + .4byte .LASF367 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF368 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF369 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF370 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF371 + .byte 0x6 + .byte 0xf4,0x1 + .4byte .LASF372 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._intsup.h.10.48bafbb683905c4daa4565a85aeeb264,comdat +.Ldebug_macro6: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xa + .4byte .LASF373 + .byte 0x5 + .byte 0x10 + .4byte .LASF374 + .byte 0x6 + .byte 0x2b + .4byte .LASF375 + .byte 0x6 + .byte 0x2c + .4byte .LASF376 + .byte 0x6 + .byte 0x2d + .4byte .LASF377 + .byte 0x6 + .byte 0x2e + .4byte .LASF378 + .byte 0x2 + .byte 0x2f + .string "int" + .byte 0x6 + .byte 0x30 + .4byte .LASF379 + .byte 0x6 + .byte 0x31 + .4byte .LASF380 + .byte 0x6 + .byte 0x32 + .4byte .LASF381 + .byte 0x5 + .byte 0x33 + .4byte .LASF382 + .byte 0x5 + .byte 0x34 + .4byte .LASF383 + .byte 0x5 + .byte 0x35 + .4byte .LASF384 + .byte 0x5 + .byte 0x36 + .4byte .LASF385 + .byte 0x5 + .byte 0x37 + .4byte .LASF386 + .byte 0x5 + .byte 0x38 + .4byte .LASF387 + .byte 0x5 + .byte 0x39 + .4byte .LASF388 + .byte 0x5 + .byte 0x3a + .4byte .LASF389 + .byte 0x5 + .byte 0x43 + .4byte .LASF390 + .byte 0x5 + .byte 0x4a + .4byte .LASF391 + .byte 0x5 + .byte 0x52 + .4byte .LASF392 + .byte 0x5 + .byte 0x5d + .4byte .LASF393 + .byte 0x5 + .byte 0x68 + .4byte .LASF394 + .byte 0x5 + .byte 0x71 + .4byte .LASF395 + .byte 0x5 + .byte 0x78 + .4byte .LASF396 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF397 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF398 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF399 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF400 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF401 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF402 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF403 + .byte 0x6 + .byte 0xb8,0x1 + .4byte .LASF375 + .byte 0x6 + .byte 0xb9,0x1 + .4byte .LASF376 + .byte 0x6 + .byte 0xba,0x1 + .4byte .LASF377 + .byte 0x6 + .byte 0xbb,0x1 + .4byte .LASF378 + .byte 0x2 + .byte 0xbc,0x1 + .string "int" + .byte 0x6 + .byte 0xbd,0x1 + .4byte .LASF381 + .byte 0x6 + .byte 0xc2,0x1 + .4byte .LASF379 + .byte 0x6 + .byte 0xc3,0x1 + .4byte .LASF380 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._stdint.h.10.c24fa3af3bc1706662bb5593a907e841,comdat +.Ldebug_macro7: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xa + .4byte .LASF404 + .byte 0x5 + .byte 0x15 + .4byte .LASF405 + .byte 0x5 + .byte 0x19 + .4byte .LASF406 + .byte 0x5 + .byte 0x1b + .4byte .LASF407 + .byte 0x5 + .byte 0x21 + .4byte .LASF408 + .byte 0x5 + .byte 0x25 + .4byte .LASF409 + .byte 0x5 + .byte 0x27 + .4byte .LASF410 + .byte 0x5 + .byte 0x2d + .4byte .LASF411 + .byte 0x5 + .byte 0x31 + .4byte .LASF412 + .byte 0x5 + .byte 0x33 + .4byte .LASF413 + .byte 0x5 + .byte 0x39 + .4byte .LASF414 + .byte 0x5 + .byte 0x3d + .4byte .LASF415 + .byte 0x5 + .byte 0x3f + .4byte .LASF416 + .byte 0x5 + .byte 0x44 + .4byte .LASF417 + .byte 0x5 + .byte 0x49 + .4byte .LASF418 + .byte 0x5 + .byte 0x4e + .4byte .LASF419 + .byte 0x5 + .byte 0x53 + .4byte .LASF420 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stdint.h.23.d53047a68f4a85177f80b422d52785ed,comdat +.Ldebug_macro8: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x17 + .4byte .LASF421 + .byte 0x5 + .byte 0x1d + .4byte .LASF422 + .byte 0x5 + .byte 0x23 + .4byte .LASF423 + .byte 0x5 + .byte 0x29 + .4byte .LASF424 + .byte 0x5 + .byte 0x35 + .4byte .LASF425 + .byte 0x5 + .byte 0x3f + .4byte .LASF426 + .byte 0x5 + .byte 0x49 + .4byte .LASF427 + .byte 0x5 + .byte 0x53 + .4byte .LASF428 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF429 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF430 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF431 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF432 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF433 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF434 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF435 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF436 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF437 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF438 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF439 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF440 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF441 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF442 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF443 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF444 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF445 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF446 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF447 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF448 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF449 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF450 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF451 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF452 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF453 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF454 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF455 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF456 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF457 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF458 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF459 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF460 + .byte 0x5 + .byte 0x98,0x2 + .4byte .LASF461 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF462 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF463 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF464 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF465 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF466 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF467 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF468 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF469 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF470 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF471 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF472 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF473 + .byte 0x5 + .byte 0xe2,0x2 + .4byte .LASF474 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF475 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF476 + .byte 0x5 + .byte 0xf6,0x2 + .4byte .LASF477 + .byte 0x5 + .byte 0x80,0x3 + .4byte .LASF478 + .byte 0x5 + .byte 0x85,0x3 + .4byte .LASF479 + .byte 0x5 + .byte 0x8c,0x3 + .4byte .LASF480 + .byte 0x5 + .byte 0x8d,0x3 + .4byte .LASF481 + .byte 0x5 + .byte 0x98,0x3 + .4byte .LASF482 + .byte 0x5 + .byte 0x99,0x3 + .4byte .LASF483 + .byte 0x5 + .byte 0xa4,0x3 + .4byte .LASF484 + .byte 0x5 + .byte 0xa5,0x3 + .4byte .LASF485 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF486 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF487 + .byte 0x5 + .byte 0xc1,0x3 + .4byte .LASF488 + .byte 0x5 + .byte 0xc2,0x3 + .4byte .LASF489 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103.h.185.cffba7180870c0512d04c724c6463ab0,comdat +.Ldebug_macro9: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF490 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF491 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF492 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF493 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF494 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF495 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF496 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF497 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF498 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF499 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF500 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF501 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF502 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF503 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF504 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF505 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF506 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF507 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF508 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF509 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF510 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF511 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF512 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF513 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF514 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF515 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF516 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF517 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF518 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF519 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF520 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF521 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF522 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF523 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF524 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF525 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_adc.h.42.14cb8f90e4b5922f8a25d63c78535a21,comdat +.Ldebug_macro10: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x2a + .4byte .LASF528 + .byte 0x5 + .byte 0x2b + .4byte .LASF529 + .byte 0x5 + .byte 0x2e + .4byte .LASF530 + .byte 0x5 + .byte 0x2f + .4byte .LASF531 + .byte 0x5 + .byte 0x30 + .4byte .LASF532 + .byte 0x5 + .byte 0x31 + .4byte .LASF533 + .byte 0x5 + .byte 0x32 + .4byte .LASF534 + .byte 0x5 + .byte 0x33 + .4byte .LASF535 + .byte 0x5 + .byte 0x34 + .4byte .LASF536 + .byte 0x5 + .byte 0x35 + .4byte .LASF537 + .byte 0x5 + .byte 0x36 + .4byte .LASF538 + .byte 0x5 + .byte 0x37 + .4byte .LASF539 + .byte 0x5 + .byte 0x38 + .4byte .LASF540 + .byte 0x5 + .byte 0x39 + .4byte .LASF541 + .byte 0x5 + .byte 0x3a + .4byte .LASF542 + .byte 0x5 + .byte 0x3b + .4byte .LASF543 + .byte 0x5 + .byte 0x3c + .4byte .LASF544 + .byte 0x5 + .byte 0x3d + .4byte .LASF545 + .byte 0x5 + .byte 0x3e + .4byte .LASF546 + .byte 0x5 + .byte 0x3f + .4byte .LASF547 + .byte 0x5 + .byte 0x40 + .4byte .LASF548 + .byte 0x5 + .byte 0x41 + .4byte .LASF549 + .byte 0x5 + .byte 0x42 + .4byte .LASF550 + .byte 0x5 + .byte 0x46 + .4byte .LASF551 + .byte 0x5 + .byte 0x47 + .4byte .LASF552 + .byte 0x5 + .byte 0x48 + .4byte .LASF553 + .byte 0x5 + .byte 0x49 + .4byte .LASF554 + .byte 0x5 + .byte 0x4a + .4byte .LASF555 + .byte 0x5 + .byte 0x4d + .4byte .LASF556 + .byte 0x5 + .byte 0x4e + .4byte .LASF557 + .byte 0x5 + .byte 0x4f + .4byte .LASF558 + .byte 0x5 + .byte 0x50 + .4byte .LASF559 + .byte 0x5 + .byte 0x51 + .4byte .LASF560 + .byte 0x5 + .byte 0x52 + .4byte .LASF561 + .byte 0x5 + .byte 0x53 + .4byte .LASF562 + .byte 0x5 + .byte 0x54 + .4byte .LASF563 + .byte 0x5 + .byte 0x55 + .4byte .LASF564 + .byte 0x5 + .byte 0x56 + .4byte .LASF565 + .byte 0x5 + .byte 0x57 + .4byte .LASF566 + .byte 0x5 + .byte 0x58 + .4byte .LASF567 + .byte 0x5 + .byte 0x59 + .4byte .LASF568 + .byte 0x5 + .byte 0x5c + .4byte .LASF569 + .byte 0x5 + .byte 0x5d + .4byte .LASF570 + .byte 0x5 + .byte 0x5e + .4byte .LASF571 + .byte 0x5 + .byte 0x5f + .4byte .LASF572 + .byte 0x5 + .byte 0x60 + .4byte .LASF573 + .byte 0x5 + .byte 0x61 + .4byte .LASF574 + .byte 0x5 + .byte 0x62 + .4byte .LASF575 + .byte 0x5 + .byte 0x63 + .4byte .LASF576 + .byte 0x5 + .byte 0x64 + .4byte .LASF577 + .byte 0x5 + .byte 0x65 + .4byte .LASF578 + .byte 0x5 + .byte 0x66 + .4byte .LASF579 + .byte 0x5 + .byte 0x67 + .4byte .LASF580 + .byte 0x5 + .byte 0x68 + .4byte .LASF581 + .byte 0x5 + .byte 0x6b + .4byte .LASF582 + .byte 0x5 + .byte 0x6e + .4byte .LASF583 + .byte 0x5 + .byte 0x71 + .4byte .LASF584 + .byte 0x5 + .byte 0x74 + .4byte .LASF585 + .byte 0x5 + .byte 0x77 + .4byte .LASF586 + .byte 0x5 + .byte 0x78 + .4byte .LASF587 + .byte 0x5 + .byte 0x7b + .4byte .LASF588 + .byte 0x5 + .byte 0x7c + .4byte .LASF589 + .byte 0x5 + .byte 0x7f + .4byte .LASF590 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF591 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF592 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF593 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF594 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF595 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF596 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF597 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF598 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF599 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF600 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF601 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF602 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF603 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF604 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF605 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF606 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF607 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF608 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF609 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF610 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF611 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF612 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF613 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF614 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF615 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF616 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF617 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF618 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF619 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF620 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF621 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF622 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF623 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF624 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF625 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF626 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF627 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF628 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF629 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF630 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF631 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF632 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF633 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF634 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF635 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF636 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF637 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF638 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF639 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF640 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF641 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF642 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF643 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF644 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF645 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF646 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF647 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF648 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF649 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF650 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF651 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF652 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF653 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF654 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF655 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF656 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF657 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF658 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF659 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF660 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF661 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF662 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF663 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF664 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF665 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF666 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF667 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF668 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF669 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF670 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF671 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF672 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF673 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF674 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF675 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF676 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF677 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF678 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF679 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF680 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF681 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF682 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF683 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF684 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF685 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF686 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF687 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF688 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF689 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF690 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF691 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF692 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF693 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF694 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF695 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF696 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF697 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF698 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF699 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF700 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF701 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF702 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF703 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF704 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF705 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF706 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF707 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF708 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF709 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_bkp.h.37.565cdaf530a41cd40ed21e5fda39a6ed,comdat +.Ldebug_macro11: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF710 + .byte 0x5 + .byte 0x2a + .4byte .LASF711 + .byte 0x5 + .byte 0x2d + .4byte .LASF712 + .byte 0x5 + .byte 0x2e + .4byte .LASF713 + .byte 0x5 + .byte 0x2f + .4byte .LASF714 + .byte 0x5 + .byte 0x30 + .4byte .LASF715 + .byte 0x5 + .byte 0x31 + .4byte .LASF716 + .byte 0x5 + .byte 0x32 + .4byte .LASF717 + .byte 0x5 + .byte 0x33 + .4byte .LASF718 + .byte 0x5 + .byte 0x34 + .4byte .LASF719 + .byte 0x5 + .byte 0x35 + .4byte .LASF720 + .byte 0x5 + .byte 0x36 + .4byte .LASF721 + .byte 0x5 + .byte 0x37 + .4byte .LASF722 + .byte 0x5 + .byte 0x38 + .4byte .LASF723 + .byte 0x5 + .byte 0x39 + .4byte .LASF724 + .byte 0x5 + .byte 0x3a + .4byte .LASF725 + .byte 0x5 + .byte 0x3b + .4byte .LASF726 + .byte 0x5 + .byte 0x3c + .4byte .LASF727 + .byte 0x5 + .byte 0x3d + .4byte .LASF728 + .byte 0x5 + .byte 0x3e + .4byte .LASF729 + .byte 0x5 + .byte 0x3f + .4byte .LASF730 + .byte 0x5 + .byte 0x40 + .4byte .LASF731 + .byte 0x5 + .byte 0x41 + .4byte .LASF732 + .byte 0x5 + .byte 0x42 + .4byte .LASF733 + .byte 0x5 + .byte 0x43 + .4byte .LASF734 + .byte 0x5 + .byte 0x44 + .4byte .LASF735 + .byte 0x5 + .byte 0x45 + .4byte .LASF736 + .byte 0x5 + .byte 0x46 + .4byte .LASF737 + .byte 0x5 + .byte 0x47 + .4byte .LASF738 + .byte 0x5 + .byte 0x48 + .4byte .LASF739 + .byte 0x5 + .byte 0x49 + .4byte .LASF740 + .byte 0x5 + .byte 0x4a + .4byte .LASF741 + .byte 0x5 + .byte 0x4b + .4byte .LASF742 + .byte 0x5 + .byte 0x4c + .4byte .LASF743 + .byte 0x5 + .byte 0x4d + .4byte .LASF744 + .byte 0x5 + .byte 0x4e + .4byte .LASF745 + .byte 0x5 + .byte 0x4f + .4byte .LASF746 + .byte 0x5 + .byte 0x50 + .4byte .LASF747 + .byte 0x5 + .byte 0x51 + .4byte .LASF748 + .byte 0x5 + .byte 0x52 + .4byte .LASF749 + .byte 0x5 + .byte 0x53 + .4byte .LASF750 + .byte 0x5 + .byte 0x54 + .4byte .LASF751 + .byte 0x5 + .byte 0x55 + .4byte .LASF752 + .byte 0x5 + .byte 0x56 + .4byte .LASF753 + .byte 0x5 + .byte 0x57 + .4byte .LASF754 + .byte 0x5 + .byte 0x58 + .4byte .LASF755 + .byte 0x5 + .byte 0x59 + .4byte .LASF756 + .byte 0x5 + .byte 0x5d + .4byte .LASF757 + .byte 0x5 + .byte 0x60 + .4byte .LASF758 + .byte 0x5 + .byte 0x61 + .4byte .LASF759 + .byte 0x5 + .byte 0x62 + .4byte .LASF760 + .byte 0x5 + .byte 0x63 + .4byte .LASF761 + .byte 0x5 + .byte 0x66 + .4byte .LASF762 + .byte 0x5 + .byte 0x67 + .4byte .LASF763 + .byte 0x5 + .byte 0x6a + .4byte .LASF764 + .byte 0x5 + .byte 0x6b + .4byte .LASF765 + .byte 0x5 + .byte 0x6c + .4byte .LASF766 + .byte 0x5 + .byte 0x6d + .4byte .LASF767 + .byte 0x5 + .byte 0x6e + .4byte .LASF768 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF769 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF770 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF771 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF772 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF773 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF774 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF775 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF776 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF777 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF778 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_can.h.39.9380e444d8240972fa3c91ce629786a4,comdat +.Ldebug_macro12: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF779 + .byte 0x5 + .byte 0x2c + .4byte .LASF780 + .byte 0x5 + .byte 0x2d + .4byte .LASF781 + .byte 0x5 + .byte 0x30 + .4byte .LASF782 + .byte 0x5 + .byte 0x31 + .4byte .LASF783 + .byte 0x5 + .byte 0x32 + .4byte .LASF784 + .byte 0x5 + .byte 0x33 + .4byte .LASF785 + .byte 0x5 + .byte 0x34 + .4byte .LASF786 + .byte 0x5 + .byte 0x35 + .4byte .LASF787 + .byte 0x5 + .byte 0x36 + .4byte .LASF788 + .byte 0x5 + .byte 0x37 + .4byte .LASF789 + .byte 0x5 + .byte 0x38 + .4byte .LASF790 + .byte 0x5 + .byte 0x39 + .4byte .LASF791 + .byte 0x5 + .byte 0x3a + .4byte .LASF792 + .byte 0x5 + .byte 0x3b + .4byte .LASF793 + .byte 0x5 + .byte 0x3c + .4byte .LASF794 + .byte 0x5 + .byte 0x3d + .4byte .LASF795 + .byte 0x5 + .byte 0x3e + .4byte .LASF796 + .byte 0x5 + .byte 0x3f + .4byte .LASF797 + .byte 0x5 + .byte 0x40 + .4byte .LASF798 + .byte 0x5 + .byte 0x41 + .4byte .LASF799 + .byte 0x5 + .byte 0x42 + .4byte .LASF800 + .byte 0x5 + .byte 0x43 + .4byte .LASF801 + .byte 0x5 + .byte 0x44 + .4byte .LASF802 + .byte 0x5 + .byte 0x45 + .4byte .LASF803 + .byte 0x5 + .byte 0x46 + .4byte .LASF804 + .byte 0x5 + .byte 0x47 + .4byte .LASF805 + .byte 0x5 + .byte 0x48 + .4byte .LASF806 + .byte 0x5 + .byte 0x49 + .4byte .LASF807 + .byte 0x5 + .byte 0x4a + .4byte .LASF808 + .byte 0x5 + .byte 0x4b + .4byte .LASF809 + .byte 0x5 + .byte 0x4c + .4byte .LASF810 + .byte 0x5 + .byte 0x4d + .4byte .LASF811 + .byte 0x5 + .byte 0x4e + .4byte .LASF812 + .byte 0x5 + .byte 0x4f + .4byte .LASF813 + .byte 0x5 + .byte 0x50 + .4byte .LASF814 + .byte 0x5 + .byte 0x51 + .4byte .LASF815 + .byte 0x5 + .byte 0x52 + .4byte .LASF816 + .byte 0x5 + .byte 0x53 + .4byte .LASF817 + .byte 0x5 + .byte 0x54 + .4byte .LASF818 + .byte 0x5 + .byte 0x55 + .4byte .LASF819 + .byte 0x5 + .byte 0x56 + .4byte .LASF820 + .byte 0x5 + .byte 0x57 + .4byte .LASF821 + .byte 0x5 + .byte 0x58 + .4byte .LASF822 + .byte 0x5 + .byte 0x59 + .4byte .LASF823 + .byte 0x5 + .byte 0x5a + .4byte .LASF824 + .byte 0x5 + .byte 0x5b + .4byte .LASF825 + .byte 0x5 + .byte 0x5c + .4byte .LASF826 + .byte 0x5 + .byte 0x5d + .4byte .LASF827 + .byte 0x5 + .byte 0x5e + .4byte .LASF828 + .byte 0x5 + .byte 0x5f + .4byte .LASF829 + .byte 0x5 + .byte 0x60 + .4byte .LASF830 + .byte 0x5 + .byte 0x61 + .4byte .LASF831 + .byte 0x5 + .byte 0x62 + .4byte .LASF832 + .byte 0x5 + .byte 0x63 + .4byte .LASF833 + .byte 0x5 + .byte 0x64 + .4byte .LASF834 + .byte 0x5 + .byte 0x65 + .4byte .LASF835 + .byte 0x5 + .byte 0x66 + .4byte .LASF836 + .byte 0x5 + .byte 0x67 + .4byte .LASF837 + .byte 0x5 + .byte 0x68 + .4byte .LASF838 + .byte 0x5 + .byte 0x69 + .4byte .LASF839 + .byte 0x5 + .byte 0x6a + .4byte .LASF840 + .byte 0x5 + .byte 0x6b + .4byte .LASF841 + .byte 0x5 + .byte 0x6c + .4byte .LASF842 + .byte 0x5 + .byte 0x6d + .4byte .LASF843 + .byte 0x5 + .byte 0x6e + .4byte .LASF844 + .byte 0x5 + .byte 0x6f + .4byte .LASF845 + .byte 0x5 + .byte 0x70 + .4byte .LASF846 + .byte 0x5 + .byte 0x71 + .4byte .LASF847 + .byte 0x5 + .byte 0x72 + .4byte .LASF848 + .byte 0x5 + .byte 0x73 + .4byte .LASF849 + .byte 0x5 + .byte 0x74 + .4byte .LASF850 + .byte 0x5 + .byte 0x75 + .4byte .LASF851 + .byte 0x5 + .byte 0x76 + .4byte .LASF852 + .byte 0x5 + .byte 0x77 + .4byte .LASF853 + .byte 0x5 + .byte 0x78 + .4byte .LASF854 + .byte 0x5 + .byte 0x79 + .4byte .LASF855 + .byte 0x5 + .byte 0x7a + .4byte .LASF856 + .byte 0x5 + .byte 0x7b + .4byte .LASF857 + .byte 0x5 + .byte 0x7c + .4byte .LASF858 + .byte 0x5 + .byte 0x7d + .4byte .LASF859 + .byte 0x5 + .byte 0x7e + .4byte .LASF860 + .byte 0x5 + .byte 0x7f + .4byte .LASF861 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF862 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF863 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF864 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF865 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF866 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF867 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF868 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF869 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF870 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF871 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF872 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF873 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF874 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF875 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF876 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF877 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF878 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF879 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF880 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF881 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF882 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF883 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF884 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF885 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF886 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF887 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF888 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF889 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF890 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF891 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF892 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF893 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF894 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF895 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF896 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF897 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF898 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF899 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF900 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF901 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF902 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF903 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF904 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF905 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF906 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF907 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF908 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF909 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF910 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF911 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF912 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF913 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF914 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF915 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF916 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF917 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF918 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF919 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF920 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF921 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF922 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF923 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF924 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF925 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF926 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF927 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF928 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF929 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF930 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF931 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF932 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF933 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF934 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF935 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF936 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF937 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF938 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF939 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF940 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF941 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF942 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF943 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF944 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF945 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF946 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF947 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF948 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF949 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF950 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF951 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF952 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF953 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF954 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF955 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF956 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF957 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF958 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF959 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF960 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF961 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF962 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF963 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF964 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF965 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF966 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF967 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF968 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF969 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF970 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF971 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF972 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF973 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF974 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF975 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF976 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF977 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF978 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF979 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF980 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF981 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF982 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF983 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF984 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF985 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF986 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF987 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF988 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF989 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF990 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF991 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF992 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF993 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF994 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF995 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF996 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF997 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF998 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF999 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF1000 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF1001 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF1002 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF1003 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF1004 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF1005 + .byte 0x5 + .byte 0xe4,0x3 + .4byte .LASF1006 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF1007 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF1008 + .byte 0x5 + .byte 0xed,0x3 + .4byte .LASF1009 + .byte 0x5 + .byte 0xf0,0x3 + .4byte .LASF1010 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF1011 + .byte 0x5 + .byte 0xf6,0x3 + .4byte .LASF1012 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF1013 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF1014 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF1015 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF1016 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF1017 + .byte 0x5 + .byte 0x88,0x4 + .4byte .LASF1018 + .byte 0x5 + .byte 0x8b,0x4 + .4byte .LASF1019 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF1020 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF1021 + .byte 0x5 + .byte 0x94,0x4 + .4byte .LASF1022 + .byte 0x5 + .byte 0x97,0x4 + .4byte .LASF1023 + .byte 0x5 + .byte 0x9a,0x4 + .4byte .LASF1024 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF1025 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF1026 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF1027 + .byte 0x5 + .byte 0xa6,0x4 + .4byte .LASF1028 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF1029 + .byte 0x5 + .byte 0xac,0x4 + .4byte .LASF1030 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF1031 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF1032 + .byte 0x5 + .byte 0xb5,0x4 + .4byte .LASF1033 + .byte 0x5 + .byte 0xb8,0x4 + .4byte .LASF1034 + .byte 0x5 + .byte 0xbb,0x4 + .4byte .LASF1035 + .byte 0x5 + .byte 0xbe,0x4 + .4byte .LASF1036 + .byte 0x5 + .byte 0xc1,0x4 + .4byte .LASF1037 + .byte 0x5 + .byte 0xc4,0x4 + .4byte .LASF1038 + .byte 0x5 + .byte 0xc7,0x4 + .4byte .LASF1039 + .byte 0x5 + .byte 0xc8,0x4 + .4byte .LASF1040 + .byte 0x5 + .byte 0xc9,0x4 + .4byte .LASF1041 + .byte 0x5 + .byte 0xca,0x4 + .4byte .LASF1042 + .byte 0x5 + .byte 0xcb,0x4 + .4byte .LASF1043 + .byte 0x5 + .byte 0xcc,0x4 + .4byte .LASF1044 + .byte 0x5 + .byte 0xcd,0x4 + .4byte .LASF1045 + .byte 0x5 + .byte 0xce,0x4 + .4byte .LASF1046 + .byte 0x5 + .byte 0xcf,0x4 + .4byte .LASF1047 + .byte 0x5 + .byte 0xd1,0x4 + .4byte .LASF1048 + .byte 0x5 + .byte 0xd4,0x4 + .4byte .LASF1049 + .byte 0x5 + .byte 0xd5,0x4 + .4byte .LASF1050 + .byte 0x5 + .byte 0xd6,0x4 + .4byte .LASF1051 + .byte 0x5 + .byte 0xd7,0x4 + .4byte .LASF1052 + .byte 0x5 + .byte 0xda,0x4 + .4byte .LASF1053 + .byte 0x5 + .byte 0xdb,0x4 + .4byte .LASF1054 + .byte 0x5 + .byte 0xdc,0x4 + .4byte .LASF1055 + .byte 0x5 + .byte 0xdd,0x4 + .4byte .LASF1056 + .byte 0x5 + .byte 0xe0,0x4 + .4byte .LASF1057 + .byte 0x5 + .byte 0xe1,0x4 + .4byte .LASF1058 + .byte 0x5 + .byte 0xe2,0x4 + .4byte .LASF1059 + .byte 0x5 + .byte 0xe3,0x4 + .4byte .LASF1060 + .byte 0x5 + .byte 0xe4,0x4 + .4byte .LASF1061 + .byte 0x5 + .byte 0xe5,0x4 + .4byte .LASF1062 + .byte 0x5 + .byte 0xe6,0x4 + .4byte .LASF1063 + .byte 0x5 + .byte 0xe7,0x4 + .4byte .LASF1064 + .byte 0x5 + .byte 0xe8,0x4 + .4byte .LASF1065 + .byte 0x5 + .byte 0xe9,0x4 + .4byte .LASF1066 + .byte 0x5 + .byte 0xea,0x4 + .4byte .LASF1067 + .byte 0x5 + .byte 0xeb,0x4 + .4byte .LASF1068 + .byte 0x5 + .byte 0xec,0x4 + .4byte .LASF1069 + .byte 0x5 + .byte 0xed,0x4 + .4byte .LASF1070 + .byte 0x5 + .byte 0xee,0x4 + .4byte .LASF1071 + .byte 0x5 + .byte 0xef,0x4 + .4byte .LASF1072 + .byte 0x5 + .byte 0xf2,0x4 + .4byte .LASF1073 + .byte 0x5 + .byte 0xf3,0x4 + .4byte .LASF1074 + .byte 0x5 + .byte 0xf4,0x4 + .4byte .LASF1075 + .byte 0x5 + .byte 0xf5,0x4 + .4byte .LASF1076 + .byte 0x5 + .byte 0xf6,0x4 + .4byte .LASF1077 + .byte 0x5 + .byte 0xf7,0x4 + .4byte .LASF1078 + .byte 0x5 + .byte 0xf8,0x4 + .4byte .LASF1079 + .byte 0x5 + .byte 0xf9,0x4 + .4byte .LASF1080 + .byte 0x5 + .byte 0xfc,0x4 + .4byte .LASF1081 + .byte 0x5 + .byte 0xfd,0x4 + .4byte .LASF1082 + .byte 0x5 + .byte 0xfe,0x4 + .4byte .LASF1083 + .byte 0x5 + .byte 0xff,0x4 + .4byte .LASF1084 + .byte 0x5 + .byte 0x82,0x5 + .4byte .LASF1085 + .byte 0x5 + .byte 0x83,0x5 + .4byte .LASF1086 + .byte 0x5 + .byte 0x86,0x5 + .4byte .LASF1087 + .byte 0x5 + .byte 0x87,0x5 + .4byte .LASF1088 + .byte 0x5 + .byte 0x8a,0x5 + .4byte .LASF1089 + .byte 0x5 + .byte 0x8c,0x5 + .4byte .LASF1090 + .byte 0x5 + .byte 0x8d,0x5 + .4byte .LASF1091 + .byte 0x5 + .byte 0x90,0x5 + .4byte .LASF1092 + .byte 0x5 + .byte 0x91,0x5 + .4byte .LASF1093 + .byte 0x5 + .byte 0x92,0x5 + .4byte .LASF1094 + .byte 0x5 + .byte 0x95,0x5 + .4byte .LASF1095 + .byte 0x5 + .byte 0x96,0x5 + .4byte .LASF1096 + .byte 0x5 + .byte 0x99,0x5 + .4byte .LASF1097 + .byte 0x5 + .byte 0x9a,0x5 + .4byte .LASF1098 + .byte 0x5 + .byte 0x9d,0x5 + .4byte .LASF1099 + .byte 0x5 + .byte 0xa0,0x5 + .4byte .LASF1100 + .byte 0x5 + .byte 0xa1,0x5 + .4byte .LASF1101 + .byte 0x5 + .byte 0xa4,0x5 + .4byte .LASF1102 + .byte 0x5 + .byte 0xa7,0x5 + .4byte .LASF1103 + .byte 0x5 + .byte 0xa8,0x5 + .4byte .LASF1104 + .byte 0x5 + .byte 0xa9,0x5 + .4byte .LASF1105 + .byte 0x5 + .byte 0xaa,0x5 + .4byte .LASF1106 + .byte 0x5 + .byte 0xab,0x5 + .4byte .LASF1107 + .byte 0x5 + .byte 0xac,0x5 + .4byte .LASF1108 + .byte 0x5 + .byte 0xad,0x5 + .4byte .LASF1109 + .byte 0x5 + .byte 0xae,0x5 + .4byte .LASF1110 + .byte 0x5 + .byte 0xaf,0x5 + .4byte .LASF1111 + .byte 0x5 + .byte 0xb0,0x5 + .4byte .LASF1112 + .byte 0x5 + .byte 0xb1,0x5 + .4byte .LASF1113 + .byte 0x5 + .byte 0xb2,0x5 + .4byte .LASF1114 + .byte 0x5 + .byte 0xb3,0x5 + .4byte .LASF1115 + .byte 0x5 + .byte 0xb4,0x5 + .4byte .LASF1116 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_crc.h.37.f77f53f1516fc65e49eac544ab82df8c,comdat +.Ldebug_macro13: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1117 + .byte 0x5 + .byte 0x2a + .4byte .LASF1118 + .byte 0x5 + .byte 0x2d + .4byte .LASF1119 + .byte 0x5 + .byte 0x2e + .4byte .LASF1120 + .byte 0x5 + .byte 0x2f + .4byte .LASF1121 + .byte 0x5 + .byte 0x33 + .4byte .LASF1122 + .byte 0x5 + .byte 0x36 + .4byte .LASF1123 + .byte 0x5 + .byte 0x39 + .4byte .LASF1124 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dac.h.37.c64e29f692c863eb577e59c8c0ad940a,comdat +.Ldebug_macro14: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1125 + .byte 0x5 + .byte 0x2a + .4byte .LASF1126 + .byte 0x5 + .byte 0x2b + .4byte .LASF1127 + .byte 0x5 + .byte 0x2c + .4byte .LASF1128 + .byte 0x5 + .byte 0x2f + .4byte .LASF1129 + .byte 0x5 + .byte 0x30 + .4byte .LASF1130 + .byte 0x5 + .byte 0x31 + .4byte .LASF1131 + .byte 0x5 + .byte 0x32 + .4byte .LASF1132 + .byte 0x5 + .byte 0x33 + .4byte .LASF1133 + .byte 0x5 + .byte 0x34 + .4byte .LASF1134 + .byte 0x5 + .byte 0x35 + .4byte .LASF1135 + .byte 0x5 + .byte 0x36 + .4byte .LASF1136 + .byte 0x5 + .byte 0x37 + .4byte .LASF1137 + .byte 0x5 + .byte 0x38 + .4byte .LASF1138 + .byte 0x5 + .byte 0x39 + .4byte .LASF1139 + .byte 0x5 + .byte 0x3a + .4byte .LASF1140 + .byte 0x5 + .byte 0x3b + .4byte .LASF1141 + .byte 0x5 + .byte 0x3f + .4byte .LASF1142 + .byte 0x5 + .byte 0x40 + .4byte .LASF1143 + .byte 0x5 + .byte 0x41 + .4byte .LASF1144 + .byte 0x5 + .byte 0x42 + .4byte .LASF1145 + .byte 0x5 + .byte 0x43 + .4byte .LASF1146 + .byte 0x5 + .byte 0x44 + .4byte .LASF1147 + .byte 0x5 + .byte 0x45 + .4byte .LASF1148 + .byte 0x5 + .byte 0x46 + .4byte .LASF1149 + .byte 0x5 + .byte 0x47 + .4byte .LASF1150 + .byte 0x5 + .byte 0x48 + .4byte .LASF1151 + .byte 0x5 + .byte 0x49 + .4byte .LASF1152 + .byte 0x5 + .byte 0x4a + .4byte .LASF1153 + .byte 0x5 + .byte 0x4b + .4byte .LASF1154 + .byte 0x5 + .byte 0x4c + .4byte .LASF1155 + .byte 0x5 + .byte 0x4f + .4byte .LASF1156 + .byte 0x5 + .byte 0x50 + .4byte .LASF1157 + .byte 0x5 + .byte 0x53 + .4byte .LASF1158 + .byte 0x5 + .byte 0x56 + .4byte .LASF1159 + .byte 0x5 + .byte 0x59 + .4byte .LASF1160 + .byte 0x5 + .byte 0x5c + .4byte .LASF1161 + .byte 0x5 + .byte 0x5f + .4byte .LASF1162 + .byte 0x5 + .byte 0x62 + .4byte .LASF1163 + .byte 0x5 + .byte 0x65 + .4byte .LASF1164 + .byte 0x5 + .byte 0x66 + .4byte .LASF1165 + .byte 0x5 + .byte 0x69 + .4byte .LASF1166 + .byte 0x5 + .byte 0x6a + .4byte .LASF1167 + .byte 0x5 + .byte 0x6d + .4byte .LASF1168 + .byte 0x5 + .byte 0x6e + .4byte .LASF1169 + .byte 0x5 + .byte 0x71 + .4byte .LASF1170 + .byte 0x5 + .byte 0x74 + .4byte .LASF1171 + .byte 0x5 + .byte 0x78 + .4byte .LASF1172 + .byte 0x5 + .byte 0x79 + .4byte .LASF1173 + .byte 0x5 + .byte 0x7a + .4byte .LASF1174 + .byte 0x5 + .byte 0x7b + .4byte .LASF1175 + .byte 0x5 + .byte 0x7c + .4byte .LASF1176 + .byte 0x5 + .byte 0x7d + .4byte .LASF1177 + .byte 0x5 + .byte 0x7e + .4byte .LASF1178 + .byte 0x5 + .byte 0x7f + .4byte .LASF1179 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF1180 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF1181 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF1182 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1183 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1184 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF1185 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1186 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1187 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF1188 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF1189 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1190 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1191 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1192 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF1193 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF1194 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF1195 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF1196 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1197 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1198 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1199 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1200 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1201 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF1202 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF1203 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1204 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1205 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1206 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1207 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1208 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1209 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1210 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1211 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1212 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1213 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF1214 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1215 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1216 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1217 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1218 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1219 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1220 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF1221 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF1222 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1223 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1224 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1225 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dma.h.38.2c314170096cba83b58f6eccfc84a5f7,comdat +.Ldebug_macro15: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x26 + .4byte .LASF1226 + .byte 0x5 + .byte 0x2b + .4byte .LASF1227 + .byte 0x5 + .byte 0x2c + .4byte .LASF1228 + .byte 0x5 + .byte 0x2f + .4byte .LASF1229 + .byte 0x5 + .byte 0x30 + .4byte .LASF1230 + .byte 0x5 + .byte 0x32 + .4byte .LASF1231 + .byte 0x5 + .byte 0x33 + .4byte .LASF1232 + .byte 0x5 + .byte 0x34 + .4byte .LASF1233 + .byte 0x5 + .byte 0x35 + .4byte .LASF1234 + .byte 0x5 + .byte 0x37 + .4byte .LASF1235 + .byte 0x5 + .byte 0x38 + .4byte .LASF1236 + .byte 0x5 + .byte 0x39 + .4byte .LASF1237 + .byte 0x5 + .byte 0x3a + .4byte .LASF1238 + .byte 0x5 + .byte 0x3c + .4byte .LASF1239 + .byte 0x5 + .byte 0x3d + .4byte .LASF1240 + .byte 0x5 + .byte 0x3e + .4byte .LASF1241 + .byte 0x5 + .byte 0x3f + .4byte .LASF1242 + .byte 0x5 + .byte 0x41 + .4byte .LASF1243 + .byte 0x5 + .byte 0x42 + .4byte .LASF1244 + .byte 0x5 + .byte 0x43 + .4byte .LASF1245 + .byte 0x5 + .byte 0x44 + .4byte .LASF1246 + .byte 0x5 + .byte 0x46 + .4byte .LASF1247 + .byte 0x5 + .byte 0x47 + .4byte .LASF1248 + .byte 0x5 + .byte 0x48 + .4byte .LASF1249 + .byte 0x5 + .byte 0x49 + .4byte .LASF1250 + .byte 0x5 + .byte 0x4b + .4byte .LASF1251 + .byte 0x5 + .byte 0x4c + .4byte .LASF1252 + .byte 0x5 + .byte 0x4d + .4byte .LASF1253 + .byte 0x5 + .byte 0x4e + .4byte .LASF1254 + .byte 0x5 + .byte 0x50 + .4byte .LASF1255 + .byte 0x5 + .byte 0x51 + .4byte .LASF1256 + .byte 0x5 + .byte 0x52 + .4byte .LASF1257 + .byte 0x5 + .byte 0x53 + .4byte .LASF1258 + .byte 0x5 + .byte 0x57 + .4byte .LASF1259 + .byte 0x5 + .byte 0x58 + .4byte .LASF1260 + .byte 0x5 + .byte 0x59 + .4byte .LASF1261 + .byte 0x5 + .byte 0x5a + .4byte .LASF1262 + .byte 0x5 + .byte 0x5d + .4byte .LASF1263 + .byte 0x5 + .byte 0x5e + .4byte .LASF1264 + .byte 0x5 + .byte 0x5f + .4byte .LASF1265 + .byte 0x5 + .byte 0x60 + .4byte .LASF1266 + .byte 0x5 + .byte 0x63 + .4byte .LASF1267 + .byte 0x5 + .byte 0x64 + .4byte .LASF1268 + .byte 0x5 + .byte 0x65 + .4byte .LASF1269 + .byte 0x5 + .byte 0x66 + .4byte .LASF1270 + .byte 0x5 + .byte 0x67 + .4byte .LASF1271 + .byte 0x5 + .byte 0x68 + .4byte .LASF1272 + .byte 0x5 + .byte 0x69 + .4byte .LASF1273 + .byte 0x5 + .byte 0x6a + .4byte .LASF1274 + .byte 0x5 + .byte 0x6b + .4byte .LASF1275 + .byte 0x5 + .byte 0x6c + .4byte .LASF1276 + .byte 0x5 + .byte 0x6d + .4byte .LASF1277 + .byte 0x5 + .byte 0x6e + .4byte .LASF1278 + .byte 0x5 + .byte 0x71 + .4byte .LASF1279 + .byte 0x5 + .byte 0x74 + .4byte .LASF1280 + .byte 0x5 + .byte 0x77 + .4byte .LASF1281 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1282 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1283 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1284 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1285 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1286 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1287 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1288 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1289 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1290 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1291 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1292 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1293 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1294 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1295 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1296 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1297 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1298 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1299 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1300 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1301 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1302 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF1303 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1304 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1305 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1306 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1307 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1308 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF1309 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF1310 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF1311 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF1312 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF1313 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1314 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF1315 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF1316 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1317 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1318 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF1319 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF1320 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1321 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF1322 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1323 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1324 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_eclic.h.37.7db9f8893169694757dea82a4b9eed61,comdat +.Ldebug_macro16: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1325 + .byte 0x5 + .byte 0x2a + .4byte .LASF1326 + .byte 0x5 + .byte 0x2b + .4byte .LASF1327 + .byte 0x5 + .byte 0x2c + .4byte .LASF1328 + .byte 0x5 + .byte 0x2d + .4byte .LASF1329 + .byte 0x5 + .byte 0x2e + .4byte .LASF1330 + .byte 0x5 + .byte 0x30 + .4byte .LASF1331 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_exmc.h.37.96699be4b910beb81cdfd35650becbf1,comdat +.Ldebug_macro17: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1332 + .byte 0x5 + .byte 0x2a + .4byte .LASF1333 + .byte 0x5 + .byte 0x2e + .4byte .LASF1334 + .byte 0x5 + .byte 0x2f + .4byte .LASF1335 + .byte 0x5 + .byte 0x30 + .4byte .LASF1336 + .byte 0x5 + .byte 0x35 + .4byte .LASF1337 + .byte 0x5 + .byte 0x36 + .4byte .LASF1338 + .byte 0x5 + .byte 0x37 + .4byte .LASF1339 + .byte 0x5 + .byte 0x38 + .4byte .LASF1340 + .byte 0x5 + .byte 0x39 + .4byte .LASF1341 + .byte 0x5 + .byte 0x3a + .4byte .LASF1342 + .byte 0x5 + .byte 0x3b + .4byte .LASF1343 + .byte 0x5 + .byte 0x3c + .4byte .LASF1344 + .byte 0x5 + .byte 0x3d + .4byte .LASF1345 + .byte 0x5 + .byte 0x40 + .4byte .LASF1346 + .byte 0x5 + .byte 0x41 + .4byte .LASF1347 + .byte 0x5 + .byte 0x42 + .4byte .LASF1348 + .byte 0x5 + .byte 0x43 + .4byte .LASF1349 + .byte 0x5 + .byte 0x5e + .4byte .LASF1350 + .byte 0x5 + .byte 0x5f + .4byte .LASF1351 + .byte 0x5 + .byte 0x62 + .4byte .LASF1352 + .byte 0x5 + .byte 0x63 + .4byte .LASF1353 + .byte 0x5 + .byte 0x64 + .4byte .LASF1354 + .byte 0x5 + .byte 0x67 + .4byte .LASF1355 + .byte 0x5 + .byte 0x68 + .4byte .LASF1356 + .byte 0x5 + .byte 0x69 + .4byte .LASF1357 + .byte 0x5 + .byte 0x6a + .4byte .LASF1358 + .byte 0x5 + .byte 0x6d + .4byte .LASF1359 + .byte 0x5 + .byte 0x70 + .4byte .LASF1360 + .byte 0x5 + .byte 0x71 + .4byte .LASF1361 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_exti.h.37.a48547bbdeb43685ea30e1aa7e1bc0e9,comdat +.Ldebug_macro18: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1362 + .byte 0x5 + .byte 0x2a + .4byte .LASF1363 + .byte 0x5 + .byte 0x2d + .4byte .LASF1364 + .byte 0x5 + .byte 0x2e + .4byte .LASF1365 + .byte 0x5 + .byte 0x2f + .4byte .LASF1366 + .byte 0x5 + .byte 0x30 + .4byte .LASF1367 + .byte 0x5 + .byte 0x31 + .4byte .LASF1368 + .byte 0x5 + .byte 0x32 + .4byte .LASF1369 + .byte 0x5 + .byte 0x36 + .4byte .LASF1370 + .byte 0x5 + .byte 0x37 + .4byte .LASF1371 + .byte 0x5 + .byte 0x38 + .4byte .LASF1372 + .byte 0x5 + .byte 0x39 + .4byte .LASF1373 + .byte 0x5 + .byte 0x3a + .4byte .LASF1374 + .byte 0x5 + .byte 0x3b + .4byte .LASF1375 + .byte 0x5 + .byte 0x3c + .4byte .LASF1376 + .byte 0x5 + .byte 0x3d + .4byte .LASF1377 + .byte 0x5 + .byte 0x3e + .4byte .LASF1378 + .byte 0x5 + .byte 0x3f + .4byte .LASF1379 + .byte 0x5 + .byte 0x40 + .4byte .LASF1380 + .byte 0x5 + .byte 0x41 + .4byte .LASF1381 + .byte 0x5 + .byte 0x42 + .4byte .LASF1382 + .byte 0x5 + .byte 0x43 + .4byte .LASF1383 + .byte 0x5 + .byte 0x44 + .4byte .LASF1384 + .byte 0x5 + .byte 0x45 + .4byte .LASF1385 + .byte 0x5 + .byte 0x46 + .4byte .LASF1386 + .byte 0x5 + .byte 0x47 + .4byte .LASF1387 + .byte 0x5 + .byte 0x48 + .4byte .LASF1388 + .byte 0x5 + .byte 0x4b + .4byte .LASF1389 + .byte 0x5 + .byte 0x4c + .4byte .LASF1390 + .byte 0x5 + .byte 0x4d + .4byte .LASF1391 + .byte 0x5 + .byte 0x4e + .4byte .LASF1392 + .byte 0x5 + .byte 0x4f + .4byte .LASF1393 + .byte 0x5 + .byte 0x50 + .4byte .LASF1394 + .byte 0x5 + .byte 0x51 + .4byte .LASF1395 + .byte 0x5 + .byte 0x52 + .4byte .LASF1396 + .byte 0x5 + .byte 0x53 + .4byte .LASF1397 + .byte 0x5 + .byte 0x54 + .4byte .LASF1398 + .byte 0x5 + .byte 0x55 + .4byte .LASF1399 + .byte 0x5 + .byte 0x56 + .4byte .LASF1400 + .byte 0x5 + .byte 0x57 + .4byte .LASF1401 + .byte 0x5 + .byte 0x58 + .4byte .LASF1402 + .byte 0x5 + .byte 0x59 + .4byte .LASF1403 + .byte 0x5 + .byte 0x5a + .4byte .LASF1404 + .byte 0x5 + .byte 0x5b + .4byte .LASF1405 + .byte 0x5 + .byte 0x5c + .4byte .LASF1406 + .byte 0x5 + .byte 0x5d + .4byte .LASF1407 + .byte 0x5 + .byte 0x60 + .4byte .LASF1408 + .byte 0x5 + .byte 0x61 + .4byte .LASF1409 + .byte 0x5 + .byte 0x62 + .4byte .LASF1410 + .byte 0x5 + .byte 0x63 + .4byte .LASF1411 + .byte 0x5 + .byte 0x64 + .4byte .LASF1412 + .byte 0x5 + .byte 0x65 + .4byte .LASF1413 + .byte 0x5 + .byte 0x66 + .4byte .LASF1414 + .byte 0x5 + .byte 0x67 + .4byte .LASF1415 + .byte 0x5 + .byte 0x68 + .4byte .LASF1416 + .byte 0x5 + .byte 0x69 + .4byte .LASF1417 + .byte 0x5 + .byte 0x6a + .4byte .LASF1418 + .byte 0x5 + .byte 0x6b + .4byte .LASF1419 + .byte 0x5 + .byte 0x6c + .4byte .LASF1420 + .byte 0x5 + .byte 0x6d + .4byte .LASF1421 + .byte 0x5 + .byte 0x6e + .4byte .LASF1422 + .byte 0x5 + .byte 0x6f + .4byte .LASF1423 + .byte 0x5 + .byte 0x70 + .4byte .LASF1424 + .byte 0x5 + .byte 0x71 + .4byte .LASF1425 + .byte 0x5 + .byte 0x72 + .4byte .LASF1426 + .byte 0x5 + .byte 0x75 + .4byte .LASF1427 + .byte 0x5 + .byte 0x76 + .4byte .LASF1428 + .byte 0x5 + .byte 0x77 + .4byte .LASF1429 + .byte 0x5 + .byte 0x78 + .4byte .LASF1430 + .byte 0x5 + .byte 0x79 + .4byte .LASF1431 + .byte 0x5 + .byte 0x7a + .4byte .LASF1432 + .byte 0x5 + .byte 0x7b + .4byte .LASF1433 + .byte 0x5 + .byte 0x7c + .4byte .LASF1434 + .byte 0x5 + .byte 0x7d + .4byte .LASF1435 + .byte 0x5 + .byte 0x7e + .4byte .LASF1436 + .byte 0x5 + .byte 0x7f + .4byte .LASF1437 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF1438 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF1439 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF1440 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF1441 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF1442 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1443 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1444 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF1445 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1446 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1447 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF1448 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF1449 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1450 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1451 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1452 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF1453 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF1454 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF1455 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF1456 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1457 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF1458 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF1459 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1460 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1461 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1462 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1463 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF1464 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1465 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1466 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1467 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1468 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1469 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF1470 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF1471 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1472 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1473 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1474 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1475 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1476 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF1477 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1478 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1479 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1480 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1481 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1482 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1483 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_fmc.h.39.cad093dc97f9756dd7521b8e6602cd12,comdat +.Ldebug_macro19: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF1484 + .byte 0x5 + .byte 0x2c + .4byte .LASF1485 + .byte 0x5 + .byte 0x2d + .4byte .LASF1486 + .byte 0x5 + .byte 0x30 + .4byte .LASF1487 + .byte 0x5 + .byte 0x31 + .4byte .LASF1488 + .byte 0x5 + .byte 0x32 + .4byte .LASF1489 + .byte 0x5 + .byte 0x33 + .4byte .LASF1490 + .byte 0x5 + .byte 0x34 + .4byte .LASF1491 + .byte 0x5 + .byte 0x35 + .4byte .LASF1492 + .byte 0x5 + .byte 0x36 + .4byte .LASF1493 + .byte 0x5 + .byte 0x37 + .4byte .LASF1494 + .byte 0x5 + .byte 0x38 + .4byte .LASF1495 + .byte 0x5 + .byte 0x3a + .4byte .LASF1496 + .byte 0x5 + .byte 0x3b + .4byte .LASF1497 + .byte 0x5 + .byte 0x3c + .4byte .LASF1498 + .byte 0x5 + .byte 0x3d + .4byte .LASF1499 + .byte 0x5 + .byte 0x3e + .4byte .LASF1500 + .byte 0x5 + .byte 0x3f + .4byte .LASF1501 + .byte 0x5 + .byte 0x43 + .4byte .LASF1502 + .byte 0x5 + .byte 0x46 + .4byte .LASF1503 + .byte 0x5 + .byte 0x49 + .4byte .LASF1504 + .byte 0x5 + .byte 0x4c + .4byte .LASF1505 + .byte 0x5 + .byte 0x4d + .4byte .LASF1506 + .byte 0x5 + .byte 0x4e + .4byte .LASF1507 + .byte 0x5 + .byte 0x4f + .4byte .LASF1508 + .byte 0x5 + .byte 0x52 + .4byte .LASF1509 + .byte 0x5 + .byte 0x53 + .4byte .LASF1510 + .byte 0x5 + .byte 0x54 + .4byte .LASF1511 + .byte 0x5 + .byte 0x55 + .4byte .LASF1512 + .byte 0x5 + .byte 0x56 + .4byte .LASF1513 + .byte 0x5 + .byte 0x57 + .4byte .LASF1514 + .byte 0x5 + .byte 0x58 + .4byte .LASF1515 + .byte 0x5 + .byte 0x59 + .4byte .LASF1516 + .byte 0x5 + .byte 0x5a + .4byte .LASF1517 + .byte 0x5 + .byte 0x5b + .4byte .LASF1518 + .byte 0x5 + .byte 0x5e + .4byte .LASF1519 + .byte 0x5 + .byte 0x61 + .4byte .LASF1520 + .byte 0x5 + .byte 0x62 + .4byte .LASF1521 + .byte 0x5 + .byte 0x63 + .4byte .LASF1522 + .byte 0x5 + .byte 0x64 + .4byte .LASF1523 + .byte 0x5 + .byte 0x67 + .4byte .LASF1524 + .byte 0x5 + .byte 0x6a + .4byte .LASF1525 + .byte 0x5 + .byte 0x6d + .4byte .LASF1526 + .byte 0x5 + .byte 0x71 + .4byte .LASF1527 + .byte 0x5 + .byte 0x72 + .4byte .LASF1528 + .byte 0x5 + .byte 0x73 + .4byte .LASF1529 + .byte 0x5 + .byte 0x74 + .4byte .LASF1530 + .byte 0x5 + .byte 0x75 + .4byte .LASF1531 + .byte 0x5 + .byte 0x76 + .4byte .LASF1532 + .byte 0x5 + .byte 0x77 + .4byte .LASF1533 + .byte 0x5 + .byte 0x78 + .4byte .LASF1534 + .byte 0x5 + .byte 0x7b + .4byte .LASF1535 + .byte 0x5 + .byte 0x7c + .4byte .LASF1536 + .byte 0x5 + .byte 0x7d + .4byte .LASF1537 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1538 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1539 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1540 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1541 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1542 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1543 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1544 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1545 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1546 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1547 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1548 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1549 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF1550 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1551 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1552 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1553 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1554 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1555 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF1556 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF1557 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1558 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1559 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF1560 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1561 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1562 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF1563 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF1564 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF1565 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1566 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1567 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF1568 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF1569 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1570 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1571 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF1572 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF1573 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1574 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1575 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF1576 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF1577 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF1578 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1579 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF1580 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF1581 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1582 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1583 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF1584 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF1585 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF1586 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1587 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1588 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF1589 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF1590 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF1591 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF1592 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF1593 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF1594 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF1595 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1596 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1597 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_gpio.h.37.1c15e50fe61c140e18cbdcae4553472f,comdat +.Ldebug_macro20: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1598 + .byte 0x5 + .byte 0x2a + .4byte .LASF1599 + .byte 0x5 + .byte 0x2b + .4byte .LASF1600 + .byte 0x5 + .byte 0x2c + .4byte .LASF1601 + .byte 0x5 + .byte 0x2d + .4byte .LASF1602 + .byte 0x5 + .byte 0x2e + .4byte .LASF1603 + .byte 0x5 + .byte 0x31 + .4byte .LASF1604 + .byte 0x5 + .byte 0x36 + .4byte .LASF1605 + .byte 0x5 + .byte 0x37 + .4byte .LASF1606 + .byte 0x5 + .byte 0x38 + .4byte .LASF1607 + .byte 0x5 + .byte 0x39 + .4byte .LASF1608 + .byte 0x5 + .byte 0x3a + .4byte .LASF1609 + .byte 0x5 + .byte 0x3b + .4byte .LASF1610 + .byte 0x5 + .byte 0x3c + .4byte .LASF1611 + .byte 0x5 + .byte 0x3f + .4byte .LASF1612 + .byte 0x5 + .byte 0x40 + .4byte .LASF1613 + .byte 0x5 + .byte 0x41 + .4byte .LASF1614 + .byte 0x5 + .byte 0x42 + .4byte .LASF1615 + .byte 0x5 + .byte 0x43 + .4byte .LASF1616 + .byte 0x5 + .byte 0x44 + .4byte .LASF1617 + .byte 0x5 + .byte 0x45 + .4byte .LASF1618 + .byte 0x5 + .byte 0x49 + .4byte .LASF1619 + .byte 0x5 + .byte 0x4a + .4byte .LASF1620 + .byte 0x5 + .byte 0x4b + .4byte .LASF1621 + .byte 0x5 + .byte 0x4c + .4byte .LASF1622 + .byte 0x5 + .byte 0x4d + .4byte .LASF1623 + .byte 0x5 + .byte 0x4e + .4byte .LASF1624 + .byte 0x5 + .byte 0x4f + .4byte .LASF1625 + .byte 0x5 + .byte 0x50 + .4byte .LASF1626 + .byte 0x5 + .byte 0x51 + .4byte .LASF1627 + .byte 0x5 + .byte 0x52 + .4byte .LASF1628 + .byte 0x5 + .byte 0x53 + .4byte .LASF1629 + .byte 0x5 + .byte 0x54 + .4byte .LASF1630 + .byte 0x5 + .byte 0x55 + .4byte .LASF1631 + .byte 0x5 + .byte 0x56 + .4byte .LASF1632 + .byte 0x5 + .byte 0x57 + .4byte .LASF1633 + .byte 0x5 + .byte 0x58 + .4byte .LASF1634 + .byte 0x5 + .byte 0x5b + .4byte .LASF1635 + .byte 0x5 + .byte 0x5c + .4byte .LASF1636 + .byte 0x5 + .byte 0x5d + .4byte .LASF1637 + .byte 0x5 + .byte 0x5e + .4byte .LASF1638 + .byte 0x5 + .byte 0x5f + .4byte .LASF1639 + .byte 0x5 + .byte 0x60 + .4byte .LASF1640 + .byte 0x5 + .byte 0x61 + .4byte .LASF1641 + .byte 0x5 + .byte 0x62 + .4byte .LASF1642 + .byte 0x5 + .byte 0x63 + .4byte .LASF1643 + .byte 0x5 + .byte 0x64 + .4byte .LASF1644 + .byte 0x5 + .byte 0x65 + .4byte .LASF1645 + .byte 0x5 + .byte 0x66 + .4byte .LASF1646 + .byte 0x5 + .byte 0x67 + .4byte .LASF1647 + .byte 0x5 + .byte 0x68 + .4byte .LASF1648 + .byte 0x5 + .byte 0x69 + .4byte .LASF1649 + .byte 0x5 + .byte 0x6a + .4byte .LASF1650 + .byte 0x5 + .byte 0x6d + .4byte .LASF1651 + .byte 0x5 + .byte 0x6e + .4byte .LASF1652 + .byte 0x5 + .byte 0x6f + .4byte .LASF1653 + .byte 0x5 + .byte 0x70 + .4byte .LASF1654 + .byte 0x5 + .byte 0x71 + .4byte .LASF1655 + .byte 0x5 + .byte 0x72 + .4byte .LASF1656 + .byte 0x5 + .byte 0x73 + .4byte .LASF1657 + .byte 0x5 + .byte 0x74 + .4byte .LASF1658 + .byte 0x5 + .byte 0x75 + .4byte .LASF1659 + .byte 0x5 + .byte 0x76 + .4byte .LASF1660 + .byte 0x5 + .byte 0x77 + .4byte .LASF1661 + .byte 0x5 + .byte 0x78 + .4byte .LASF1662 + .byte 0x5 + .byte 0x79 + .4byte .LASF1663 + .byte 0x5 + .byte 0x7a + .4byte .LASF1664 + .byte 0x5 + .byte 0x7b + .4byte .LASF1665 + .byte 0x5 + .byte 0x7c + .4byte .LASF1666 + .byte 0x5 + .byte 0x7f + .4byte .LASF1667 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF1668 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF1669 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF1670 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF1671 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF1672 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1673 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1674 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF1675 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF1676 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF1677 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1678 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1679 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF1680 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF1681 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1682 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF1683 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF1684 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF1685 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF1686 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1687 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF1688 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF1689 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1690 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1691 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1692 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1693 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF1694 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF1695 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1696 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1697 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1698 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1699 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1700 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1701 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF1702 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF1703 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1704 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1705 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1706 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1707 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1708 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF1709 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1710 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1711 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1712 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1713 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1714 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF1715 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1716 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1717 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1718 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF1719 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF1720 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF1721 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1722 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF1723 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF1724 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1725 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1726 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF1727 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF1728 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1729 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1730 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF1731 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF1732 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF1733 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF1734 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1735 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF1736 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF1737 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1738 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF1739 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF1740 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF1741 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF1742 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1743 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1744 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF1745 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF1746 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1747 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF1748 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1749 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1750 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1751 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1752 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF1753 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF1754 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1755 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1756 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF1757 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF1758 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF1759 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1760 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF1761 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF1762 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1763 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1764 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF1765 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1766 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1767 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF1768 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF1769 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF1770 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF1771 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF1772 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF1773 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF1774 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1775 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1776 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF1777 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF1778 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF1779 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF1780 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF1781 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF1782 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF1783 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF1784 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF1785 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF1786 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF1787 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF1788 + .byte 0x5 + .byte 0x94,0x2 + .4byte .LASF1789 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF1790 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF1791 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF1792 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF1793 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF1794 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF1795 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF1796 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF1797 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF1798 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF1799 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF1800 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF1801 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF1802 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF1803 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF1804 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF1805 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF1806 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF1807 + .byte 0x5 + .byte 0xaf,0x2 + .4byte .LASF1808 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF1809 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF1810 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF1811 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF1812 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF1813 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF1814 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF1815 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF1816 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF1817 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF1818 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF1819 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF1820 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF1821 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF1822 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF1823 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF1824 + .byte 0x5 + .byte 0xc2,0x2 + .4byte .LASF1825 + .byte 0x5 + .byte 0xc3,0x2 + .4byte .LASF1826 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF1827 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF1828 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF1829 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF1830 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF1831 + .byte 0x5 + .byte 0xc9,0x2 + .4byte .LASF1832 + .byte 0x5 + .byte 0xca,0x2 + .4byte .LASF1833 + .byte 0x5 + .byte 0xcb,0x2 + .4byte .LASF1834 + .byte 0x5 + .byte 0xcc,0x2 + .4byte .LASF1835 + .byte 0x5 + .byte 0xcd,0x2 + .4byte .LASF1836 + .byte 0x5 + .byte 0xce,0x2 + .4byte .LASF1837 + .byte 0x5 + .byte 0xd1,0x2 + .4byte .LASF1838 + .byte 0x5 + .byte 0xd2,0x2 + .4byte .LASF1839 + .byte 0x5 + .byte 0xd3,0x2 + .4byte .LASF1840 + .byte 0x5 + .byte 0xd4,0x2 + .4byte .LASF1841 + .byte 0x5 + .byte 0xd5,0x2 + .4byte .LASF1842 + .byte 0x5 + .byte 0xd6,0x2 + .4byte .LASF1843 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF1844 + .byte 0x5 + .byte 0xd8,0x2 + .4byte .LASF1845 + .byte 0x5 + .byte 0xd9,0x2 + .4byte .LASF1846 + .byte 0x5 + .byte 0xda,0x2 + .4byte .LASF1847 + .byte 0x5 + .byte 0xdb,0x2 + .4byte .LASF1848 + .byte 0x5 + .byte 0xdc,0x2 + .4byte .LASF1849 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF1850 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF1851 + .byte 0x5 + .byte 0xdf,0x2 + .4byte .LASF1852 + .byte 0x5 + .byte 0xe0,0x2 + .4byte .LASF1853 + .byte 0x5 + .byte 0xe1,0x2 + .4byte .LASF1854 + .byte 0x5 + .byte 0xe4,0x2 + .4byte .LASF1855 + .byte 0x5 + .byte 0xe5,0x2 + .4byte .LASF1856 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF1857 + .byte 0x5 + .byte 0xe7,0x2 + .4byte .LASF1858 + .byte 0x5 + .byte 0xe8,0x2 + .4byte .LASF1859 + .byte 0x5 + .byte 0xe9,0x2 + .4byte .LASF1860 + .byte 0x5 + .byte 0xea,0x2 + .4byte .LASF1861 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF1862 + .byte 0x5 + .byte 0xec,0x2 + .4byte .LASF1863 + .byte 0x5 + .byte 0xed,0x2 + .4byte .LASF1864 + .byte 0x5 + .byte 0xee,0x2 + .4byte .LASF1865 + .byte 0x5 + .byte 0xef,0x2 + .4byte .LASF1866 + .byte 0x5 + .byte 0xf0,0x2 + .4byte .LASF1867 + .byte 0x5 + .byte 0xf1,0x2 + .4byte .LASF1868 + .byte 0x5 + .byte 0xf2,0x2 + .4byte .LASF1869 + .byte 0x5 + .byte 0xf3,0x2 + .4byte .LASF1870 + .byte 0x5 + .byte 0xf4,0x2 + .4byte .LASF1871 + .byte 0x5 + .byte 0xf5,0x2 + .4byte .LASF1872 + .byte 0x5 + .byte 0xf6,0x2 + .4byte .LASF1873 + .byte 0x5 + .byte 0xf7,0x2 + .4byte .LASF1874 + .byte 0x5 + .byte 0xf8,0x2 + .4byte .LASF1875 + .byte 0x5 + .byte 0xf9,0x2 + .4byte .LASF1876 + .byte 0x5 + .byte 0xfa,0x2 + .4byte .LASF1877 + .byte 0x5 + .byte 0xfb,0x2 + .4byte .LASF1878 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_i2c.h.37.9d7fb50529db8c5d4a0b10c3b5a1de79,comdat +.Ldebug_macro21: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1879 + .byte 0x5 + .byte 0x2a + .4byte .LASF1880 + .byte 0x5 + .byte 0x2b + .4byte .LASF1881 + .byte 0x5 + .byte 0x2e + .4byte .LASF1882 + .byte 0x5 + .byte 0x2f + .4byte .LASF1883 + .byte 0x5 + .byte 0x30 + .4byte .LASF1884 + .byte 0x5 + .byte 0x31 + .4byte .LASF1885 + .byte 0x5 + .byte 0x32 + .4byte .LASF1886 + .byte 0x5 + .byte 0x33 + .4byte .LASF1887 + .byte 0x5 + .byte 0x34 + .4byte .LASF1888 + .byte 0x5 + .byte 0x35 + .4byte .LASF1889 + .byte 0x5 + .byte 0x36 + .4byte .LASF1890 + .byte 0x5 + .byte 0x37 + .4byte .LASF1891 + .byte 0x5 + .byte 0x3a + .4byte .LASF1892 + .byte 0x5 + .byte 0x3b + .4byte .LASF1893 + .byte 0x5 + .byte 0x3c + .4byte .LASF1894 + .byte 0x5 + .byte 0x3d + .4byte .LASF1895 + .byte 0x5 + .byte 0x3e + .4byte .LASF1896 + .byte 0x5 + .byte 0x3f + .4byte .LASF1897 + .byte 0x5 + .byte 0x40 + .4byte .LASF1898 + .byte 0x5 + .byte 0x41 + .4byte .LASF1899 + .byte 0x5 + .byte 0x42 + .4byte .LASF1900 + .byte 0x5 + .byte 0x43 + .4byte .LASF1901 + .byte 0x5 + .byte 0x44 + .4byte .LASF1902 + .byte 0x5 + .byte 0x45 + .4byte .LASF1903 + .byte 0x5 + .byte 0x46 + .4byte .LASF1904 + .byte 0x5 + .byte 0x47 + .4byte .LASF1905 + .byte 0x5 + .byte 0x4a + .4byte .LASF1906 + .byte 0x5 + .byte 0x4b + .4byte .LASF1907 + .byte 0x5 + .byte 0x4c + .4byte .LASF1908 + .byte 0x5 + .byte 0x4d + .4byte .LASF1909 + .byte 0x5 + .byte 0x4e + .4byte .LASF1910 + .byte 0x5 + .byte 0x4f + .4byte .LASF1911 + .byte 0x5 + .byte 0x52 + .4byte .LASF1912 + .byte 0x5 + .byte 0x53 + .4byte .LASF1913 + .byte 0x5 + .byte 0x54 + .4byte .LASF1914 + .byte 0x5 + .byte 0x55 + .4byte .LASF1915 + .byte 0x5 + .byte 0x58 + .4byte .LASF1916 + .byte 0x5 + .byte 0x59 + .4byte .LASF1917 + .byte 0x5 + .byte 0x5c + .4byte .LASF1918 + .byte 0x5 + .byte 0x5f + .4byte .LASF1919 + .byte 0x5 + .byte 0x60 + .4byte .LASF1920 + .byte 0x5 + .byte 0x61 + .4byte .LASF1921 + .byte 0x5 + .byte 0x62 + .4byte .LASF1922 + .byte 0x5 + .byte 0x63 + .4byte .LASF1923 + .byte 0x5 + .byte 0x64 + .4byte .LASF1924 + .byte 0x5 + .byte 0x65 + .4byte .LASF1925 + .byte 0x5 + .byte 0x66 + .4byte .LASF1926 + .byte 0x5 + .byte 0x67 + .4byte .LASF1927 + .byte 0x5 + .byte 0x68 + .4byte .LASF1928 + .byte 0x5 + .byte 0x69 + .4byte .LASF1929 + .byte 0x5 + .byte 0x6a + .4byte .LASF1930 + .byte 0x5 + .byte 0x6b + .4byte .LASF1931 + .byte 0x5 + .byte 0x6c + .4byte .LASF1932 + .byte 0x5 + .byte 0x6f + .4byte .LASF1933 + .byte 0x5 + .byte 0x70 + .4byte .LASF1934 + .byte 0x5 + .byte 0x71 + .4byte .LASF1935 + .byte 0x5 + .byte 0x72 + .4byte .LASF1936 + .byte 0x5 + .byte 0x73 + .4byte .LASF1937 + .byte 0x5 + .byte 0x74 + .4byte .LASF1938 + .byte 0x5 + .byte 0x75 + .4byte .LASF1939 + .byte 0x5 + .byte 0x76 + .4byte .LASF1940 + .byte 0x5 + .byte 0x79 + .4byte .LASF1941 + .byte 0x5 + .byte 0x7a + .4byte .LASF1942 + .byte 0x5 + .byte 0x7b + .4byte .LASF1943 + .byte 0x5 + .byte 0x7e + .4byte .LASF1944 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF1945 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1946 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1947 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF1948 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF1949 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1950 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1951 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1952 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1953 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1954 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1955 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF1956 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF1957 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF1958 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1959 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1960 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1961 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF1962 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1963 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1964 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1965 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1966 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1967 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1968 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF1969 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1970 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1971 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1972 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1973 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1974 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF1975 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF1976 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF1977 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF1978 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1979 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1980 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF1981 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF1982 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF1983 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF1984 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF1985 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF1986 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF1987 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF1988 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF1989 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF1990 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_fwdgt.h.37.ec91e2ec679929e46ec494cd499250b4,comdat +.Ldebug_macro22: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1991 + .byte 0x5 + .byte 0x2a + .4byte .LASF1992 + .byte 0x5 + .byte 0x2d + .4byte .LASF1993 + .byte 0x5 + .byte 0x2e + .4byte .LASF1994 + .byte 0x5 + .byte 0x2f + .4byte .LASF1995 + .byte 0x5 + .byte 0x30 + .4byte .LASF1996 + .byte 0x5 + .byte 0x34 + .4byte .LASF1997 + .byte 0x5 + .byte 0x37 + .4byte .LASF1998 + .byte 0x5 + .byte 0x3a + .4byte .LASF1999 + .byte 0x5 + .byte 0x3d + .4byte .LASF2000 + .byte 0x5 + .byte 0x3e + .4byte .LASF2001 + .byte 0x5 + .byte 0x42 + .4byte .LASF2002 + .byte 0x5 + .byte 0x43 + .4byte .LASF2003 + .byte 0x5 + .byte 0x44 + .4byte .LASF2004 + .byte 0x5 + .byte 0x45 + .4byte .LASF2005 + .byte 0x5 + .byte 0x46 + .4byte .LASF2006 + .byte 0x5 + .byte 0x47 + .4byte .LASF2007 + .byte 0x5 + .byte 0x48 + .4byte .LASF2008 + .byte 0x5 + .byte 0x49 + .4byte .LASF2009 + .byte 0x5 + .byte 0x4c + .4byte .LASF2010 + .byte 0x5 + .byte 0x4d + .4byte .LASF2011 + .byte 0x5 + .byte 0x4e + .4byte .LASF2012 + .byte 0x5 + .byte 0x4f + .4byte .LASF2013 + .byte 0x5 + .byte 0x52 + .4byte .LASF2014 + .byte 0x5 + .byte 0x53 + .4byte .LASF2015 + .byte 0x5 + .byte 0x56 + .4byte .LASF2016 + .byte 0x5 + .byte 0x57 + .4byte .LASF2017 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dbg.h.37.c757ea48294705efe800a8cbb43f6f24,comdat +.Ldebug_macro23: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2018 + .byte 0x5 + .byte 0x2a + .4byte .LASF2019 + .byte 0x5 + .byte 0x2d + .4byte .LASF2020 + .byte 0x5 + .byte 0x2e + .4byte .LASF2021 + .byte 0x5 + .byte 0x32 + .4byte .LASF2022 + .byte 0x5 + .byte 0x35 + .4byte .LASF2023 + .byte 0x5 + .byte 0x36 + .4byte .LASF2024 + .byte 0x5 + .byte 0x37 + .4byte .LASF2025 + .byte 0x5 + .byte 0x38 + .4byte .LASF2026 + .byte 0x5 + .byte 0x39 + .4byte .LASF2027 + .byte 0x5 + .byte 0x3a + .4byte .LASF2028 + .byte 0x5 + .byte 0x3b + .4byte .LASF2029 + .byte 0x5 + .byte 0x3c + .4byte .LASF2030 + .byte 0x5 + .byte 0x3d + .4byte .LASF2031 + .byte 0x5 + .byte 0x3e + .4byte .LASF2032 + .byte 0x5 + .byte 0x3f + .4byte .LASF2033 + .byte 0x5 + .byte 0x40 + .4byte .LASF2034 + .byte 0x5 + .byte 0x41 + .4byte .LASF2035 + .byte 0x5 + .byte 0x42 + .4byte .LASF2036 + .byte 0x5 + .byte 0x43 + .4byte .LASF2037 + .byte 0x5 + .byte 0x44 + .4byte .LASF2038 + .byte 0x5 + .byte 0x5a + .4byte .LASF2039 + .byte 0x5 + .byte 0x5b + .4byte .LASF2040 + .byte 0x5 + .byte 0x5c + .4byte .LASF2041 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_pmu.h.37.edf842f53f3092f282c7bccaf9512833,comdat +.Ldebug_macro24: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2042 + .byte 0x5 + .byte 0x2a + .4byte .LASF2043 + .byte 0x5 + .byte 0x2d + .4byte .LASF2044 + .byte 0x5 + .byte 0x2e + .4byte .LASF2045 + .byte 0x5 + .byte 0x32 + .4byte .LASF2046 + .byte 0x5 + .byte 0x33 + .4byte .LASF2047 + .byte 0x5 + .byte 0x34 + .4byte .LASF2048 + .byte 0x5 + .byte 0x35 + .4byte .LASF2049 + .byte 0x5 + .byte 0x36 + .4byte .LASF2050 + .byte 0x5 + .byte 0x37 + .4byte .LASF2051 + .byte 0x5 + .byte 0x38 + .4byte .LASF2052 + .byte 0x5 + .byte 0x3b + .4byte .LASF2053 + .byte 0x5 + .byte 0x3c + .4byte .LASF2054 + .byte 0x5 + .byte 0x3d + .4byte .LASF2055 + .byte 0x5 + .byte 0x3e + .4byte .LASF2056 + .byte 0x5 + .byte 0x42 + .4byte .LASF2057 + .byte 0x5 + .byte 0x43 + .4byte .LASF2058 + .byte 0x5 + .byte 0x44 + .4byte .LASF2059 + .byte 0x5 + .byte 0x45 + .4byte .LASF2060 + .byte 0x5 + .byte 0x46 + .4byte .LASF2061 + .byte 0x5 + .byte 0x47 + .4byte .LASF2062 + .byte 0x5 + .byte 0x48 + .4byte .LASF2063 + .byte 0x5 + .byte 0x49 + .4byte .LASF2064 + .byte 0x5 + .byte 0x4a + .4byte .LASF2065 + .byte 0x5 + .byte 0x4d + .4byte .LASF2066 + .byte 0x5 + .byte 0x4e + .4byte .LASF2067 + .byte 0x5 + .byte 0x4f + .4byte .LASF2068 + .byte 0x5 + .byte 0x52 + .4byte .LASF2069 + .byte 0x5 + .byte 0x53 + .4byte .LASF2070 + .byte 0x5 + .byte 0x56 + .4byte .LASF2071 + .byte 0x5 + .byte 0x57 + .4byte .LASF2072 + .byte 0x5 + .byte 0x5a + .4byte .LASF2073 + .byte 0x5 + .byte 0x5b + .4byte .LASF2074 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_rcu.h.37.486a61f16467981517fe8072f0668f9d,comdat +.Ldebug_macro25: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2075 + .byte 0x5 + .byte 0x2a + .4byte .LASF2076 + .byte 0x5 + .byte 0x2e + .4byte .LASF2077 + .byte 0x5 + .byte 0x2f + .4byte .LASF2078 + .byte 0x5 + .byte 0x30 + .4byte .LASF2079 + .byte 0x5 + .byte 0x31 + .4byte .LASF2080 + .byte 0x5 + .byte 0x32 + .4byte .LASF2081 + .byte 0x5 + .byte 0x33 + .4byte .LASF2082 + .byte 0x5 + .byte 0x34 + .4byte .LASF2083 + .byte 0x5 + .byte 0x35 + .4byte .LASF2084 + .byte 0x5 + .byte 0x36 + .4byte .LASF2085 + .byte 0x5 + .byte 0x37 + .4byte .LASF2086 + .byte 0x5 + .byte 0x38 + .4byte .LASF2087 + .byte 0x5 + .byte 0x39 + .4byte .LASF2088 + .byte 0x5 + .byte 0x3a + .4byte .LASF2089 + .byte 0x5 + .byte 0x3f + .4byte .LASF2090 + .byte 0x5 + .byte 0x40 + .4byte .LASF2091 + .byte 0x5 + .byte 0x41 + .4byte .LASF2092 + .byte 0x5 + .byte 0x42 + .4byte .LASF2093 + .byte 0x5 + .byte 0x43 + .4byte .LASF2094 + .byte 0x5 + .byte 0x44 + .4byte .LASF2095 + .byte 0x5 + .byte 0x45 + .4byte .LASF2096 + .byte 0x5 + .byte 0x46 + .4byte .LASF2097 + .byte 0x5 + .byte 0x47 + .4byte .LASF2098 + .byte 0x5 + .byte 0x48 + .4byte .LASF2099 + .byte 0x5 + .byte 0x49 + .4byte .LASF2100 + .byte 0x5 + .byte 0x4a + .4byte .LASF2101 + .byte 0x5 + .byte 0x4b + .4byte .LASF2102 + .byte 0x5 + .byte 0x4c + .4byte .LASF2103 + .byte 0x5 + .byte 0x4f + .4byte .LASF2104 + .byte 0x5 + .byte 0x50 + .4byte .LASF2105 + .byte 0x5 + .byte 0x51 + .4byte .LASF2106 + .byte 0x5 + .byte 0x52 + .4byte .LASF2107 + .byte 0x5 + .byte 0x53 + .4byte .LASF2108 + .byte 0x5 + .byte 0x54 + .4byte .LASF2109 + .byte 0x5 + .byte 0x55 + .4byte .LASF2110 + .byte 0x5 + .byte 0x56 + .4byte .LASF2111 + .byte 0x5 + .byte 0x57 + .4byte .LASF2112 + .byte 0x5 + .byte 0x58 + .4byte .LASF2113 + .byte 0x5 + .byte 0x59 + .4byte .LASF2114 + .byte 0x5 + .byte 0x5a + .4byte .LASF2115 + .byte 0x5 + .byte 0x5b + .4byte .LASF2116 + .byte 0x5 + .byte 0x5e + .4byte .LASF2117 + .byte 0x5 + .byte 0x5f + .4byte .LASF2118 + .byte 0x5 + .byte 0x60 + .4byte .LASF2119 + .byte 0x5 + .byte 0x61 + .4byte .LASF2120 + .byte 0x5 + .byte 0x62 + .4byte .LASF2121 + .byte 0x5 + .byte 0x63 + .4byte .LASF2122 + .byte 0x5 + .byte 0x64 + .4byte .LASF2123 + .byte 0x5 + .byte 0x65 + .4byte .LASF2124 + .byte 0x5 + .byte 0x66 + .4byte .LASF2125 + .byte 0x5 + .byte 0x67 + .4byte .LASF2126 + .byte 0x5 + .byte 0x68 + .4byte .LASF2127 + .byte 0x5 + .byte 0x69 + .4byte .LASF2128 + .byte 0x5 + .byte 0x6a + .4byte .LASF2129 + .byte 0x5 + .byte 0x6b + .4byte .LASF2130 + .byte 0x5 + .byte 0x6c + .4byte .LASF2131 + .byte 0x5 + .byte 0x6d + .4byte .LASF2132 + .byte 0x5 + .byte 0x6e + .4byte .LASF2133 + .byte 0x5 + .byte 0x6f + .4byte .LASF2134 + .byte 0x5 + .byte 0x70 + .4byte .LASF2135 + .byte 0x5 + .byte 0x71 + .4byte .LASF2136 + .byte 0x5 + .byte 0x72 + .4byte .LASF2137 + .byte 0x5 + .byte 0x73 + .4byte .LASF2138 + .byte 0x5 + .byte 0x74 + .4byte .LASF2139 + .byte 0x5 + .byte 0x77 + .4byte .LASF2140 + .byte 0x5 + .byte 0x78 + .4byte .LASF2141 + .byte 0x5 + .byte 0x79 + .4byte .LASF2142 + .byte 0x5 + .byte 0x7a + .4byte .LASF2143 + .byte 0x5 + .byte 0x7b + .4byte .LASF2144 + .byte 0x5 + .byte 0x7c + .4byte .LASF2145 + .byte 0x5 + .byte 0x7d + .4byte .LASF2146 + .byte 0x5 + .byte 0x7e + .4byte .LASF2147 + .byte 0x5 + .byte 0x7f + .4byte .LASF2148 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF2149 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF2150 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF2151 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF2152 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF2153 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF2154 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF2155 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF2156 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF2157 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2158 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2159 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF2160 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF2161 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF2162 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2163 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF2164 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF2165 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF2166 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF2167 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2168 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2169 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF2170 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2171 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF2172 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF2173 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2174 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF2175 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF2176 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF2177 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF2178 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF2179 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF2180 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF2181 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2182 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2183 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2184 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2185 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF2186 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF2187 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF2188 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF2189 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF2190 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF2191 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF2192 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2193 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF2194 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF2195 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2196 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2197 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2198 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2199 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF2200 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF2201 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2202 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2203 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2204 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2205 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2206 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF2207 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF2208 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF2209 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF2210 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF2211 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF2212 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2213 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF2214 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF2215 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF2216 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF2217 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF2218 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF2219 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2220 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF2221 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF2222 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF2223 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF2224 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF2225 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF2226 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF2227 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2228 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2229 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF2230 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF2231 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2232 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2233 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2234 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF2235 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF2236 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF2237 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF2238 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF2239 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF2240 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF2241 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF2242 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF2243 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF2244 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF2245 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF2246 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF2247 + .byte 0x5 + .byte 0xaa,0x3 + .4byte .LASF2248 + .byte 0x5 + .byte 0xab,0x3 + .4byte .LASF2249 + .byte 0x5 + .byte 0xac,0x3 + .4byte .LASF2250 + .byte 0x5 + .byte 0xad,0x3 + .4byte .LASF2251 + .byte 0x5 + .byte 0xb0,0x3 + .4byte .LASF2252 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF2253 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF2254 + .byte 0x5 + .byte 0xb3,0x3 + .4byte .LASF2255 + .byte 0x5 + .byte 0xb6,0x3 + .4byte .LASF2256 + .byte 0x5 + .byte 0xb7,0x3 + .4byte .LASF2257 + .byte 0x5 + .byte 0xb8,0x3 + .4byte .LASF2258 + .byte 0x5 + .byte 0xb9,0x3 + .4byte .LASF2259 + .byte 0x5 + .byte 0xba,0x3 + .4byte .LASF2260 + .byte 0x5 + .byte 0xbb,0x3 + .4byte .LASF2261 + .byte 0x5 + .byte 0xbc,0x3 + .4byte .LASF2262 + .byte 0x5 + .byte 0xbd,0x3 + .4byte .LASF2263 + .byte 0x5 + .byte 0xbe,0x3 + .4byte .LASF2264 + .byte 0x5 + .byte 0xbf,0x3 + .4byte .LASF2265 + .byte 0x5 + .byte 0xc2,0x3 + .4byte .LASF2266 + .byte 0x5 + .byte 0xc3,0x3 + .4byte .LASF2267 + .byte 0x5 + .byte 0xc4,0x3 + .4byte .LASF2268 + .byte 0x5 + .byte 0xc5,0x3 + .4byte .LASF2269 + .byte 0x5 + .byte 0xc6,0x3 + .4byte .LASF2270 + .byte 0x5 + .byte 0xc7,0x3 + .4byte .LASF2271 + .byte 0x5 + .byte 0xca,0x3 + .4byte .LASF2272 + .byte 0x5 + .byte 0xcb,0x3 + .4byte .LASF2273 + .byte 0x5 + .byte 0xcc,0x3 + .4byte .LASF2274 + .byte 0x5 + .byte 0xcd,0x3 + .4byte .LASF2275 + .byte 0x5 + .byte 0xce,0x3 + .4byte .LASF2276 + .byte 0x5 + .byte 0xcf,0x3 + .4byte .LASF2277 + .byte 0x5 + .byte 0xd2,0x3 + .4byte .LASF2278 + .byte 0x5 + .byte 0xd3,0x3 + .4byte .LASF2279 + .byte 0x5 + .byte 0xd4,0x3 + .4byte .LASF2280 + .byte 0x5 + .byte 0xd5,0x3 + .4byte .LASF2281 + .byte 0x5 + .byte 0xd6,0x3 + .4byte .LASF2282 + .byte 0x5 + .byte 0xd7,0x3 + .4byte .LASF2283 + .byte 0x5 + .byte 0xda,0x3 + .4byte .LASF2284 + .byte 0x5 + .byte 0xdb,0x3 + .4byte .LASF2285 + .byte 0x5 + .byte 0xde,0x3 + .4byte .LASF2286 + .byte 0x5 + .byte 0xe0,0x3 + .4byte .LASF2287 + .byte 0x5 + .byte 0xe1,0x3 + .4byte .LASF2288 + .byte 0x5 + .byte 0xe2,0x3 + .4byte .LASF2289 + .byte 0x5 + .byte 0xe3,0x3 + .4byte .LASF2290 + .byte 0x5 + .byte 0xe4,0x3 + .4byte .LASF2291 + .byte 0x5 + .byte 0xe5,0x3 + .4byte .LASF2292 + .byte 0x5 + .byte 0xe6,0x3 + .4byte .LASF2293 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF2294 + .byte 0x5 + .byte 0xe8,0x3 + .4byte .LASF2295 + .byte 0x5 + .byte 0xe9,0x3 + .4byte .LASF2296 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF2297 + .byte 0x5 + .byte 0xeb,0x3 + .4byte .LASF2298 + .byte 0x5 + .byte 0xec,0x3 + .4byte .LASF2299 + .byte 0x5 + .byte 0xed,0x3 + .4byte .LASF2300 + .byte 0x5 + .byte 0xee,0x3 + .4byte .LASF2301 + .byte 0x5 + .byte 0xef,0x3 + .4byte .LASF2302 + .byte 0x5 + .byte 0xf0,0x3 + .4byte .LASF2303 + .byte 0x5 + .byte 0xf1,0x3 + .4byte .LASF2304 + .byte 0x5 + .byte 0xf2,0x3 + .4byte .LASF2305 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF2306 + .byte 0x5 + .byte 0xf4,0x3 + .4byte .LASF2307 + .byte 0x5 + .byte 0xf5,0x3 + .4byte .LASF2308 + .byte 0x5 + .byte 0xf6,0x3 + .4byte .LASF2309 + .byte 0x5 + .byte 0xf7,0x3 + .4byte .LASF2310 + .byte 0x5 + .byte 0xf8,0x3 + .4byte .LASF2311 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF2312 + .byte 0x5 + .byte 0xfa,0x3 + .4byte .LASF2313 + .byte 0x5 + .byte 0xfb,0x3 + .4byte .LASF2314 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF2315 + .byte 0x5 + .byte 0xfd,0x3 + .4byte .LASF2316 + .byte 0x5 + .byte 0xfe,0x3 + .4byte .LASF2317 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF2318 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF2319 + .byte 0x5 + .byte 0x83,0x4 + .4byte .LASF2320 + .byte 0x5 + .byte 0x84,0x4 + .4byte .LASF2321 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF2322 + .byte 0x5 + .byte 0x86,0x4 + .4byte .LASF2323 + .byte 0x5 + .byte 0x89,0x4 + .4byte .LASF2324 + .byte 0x5 + .byte 0x8a,0x4 + .4byte .LASF2325 + .byte 0x5 + .byte 0x8b,0x4 + .4byte .LASF2326 + .byte 0x5 + .byte 0x8c,0x4 + .4byte .LASF2327 + .byte 0x5 + .byte 0x8d,0x4 + .4byte .LASF2328 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF2329 + .byte 0x5 + .byte 0x8f,0x4 + .4byte .LASF2330 + .byte 0x5 + .byte 0x90,0x4 + .4byte .LASF2331 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF2332 + .byte 0x5 + .byte 0x92,0x4 + .4byte .LASF2333 + .byte 0x5 + .byte 0x95,0x4 + .4byte .LASF2334 + .byte 0x5 + .byte 0x96,0x4 + .4byte .LASF2335 + .byte 0x5 + .byte 0x97,0x4 + .4byte .LASF2336 + .byte 0x5 + .byte 0x98,0x4 + .4byte .LASF2337 + .byte 0x5 + .byte 0x99,0x4 + .4byte .LASF2338 + .byte 0x5 + .byte 0x9c,0x4 + .4byte .LASF2339 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF2340 + .byte 0x5 + .byte 0x9e,0x4 + .4byte .LASF2341 + .byte 0x5 + .byte 0x9f,0x4 + .4byte .LASF2342 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF2343 + .byte 0x5 + .byte 0xa1,0x4 + .4byte .LASF2344 + .byte 0x5 + .byte 0xa2,0x4 + .4byte .LASF2345 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF2346 + .byte 0x5 + .byte 0xa4,0x4 + .4byte .LASF2347 + .byte 0x5 + .byte 0xa5,0x4 + .4byte .LASF2348 + .byte 0x5 + .byte 0xa6,0x4 + .4byte .LASF2349 + .byte 0x5 + .byte 0xa7,0x4 + .4byte .LASF2350 + .byte 0x5 + .byte 0xa8,0x4 + .4byte .LASF2351 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF2352 + .byte 0x5 + .byte 0xaa,0x4 + .4byte .LASF2353 + .byte 0x5 + .byte 0xab,0x4 + .4byte .LASF2354 + .byte 0x5 + .byte 0xac,0x4 + .4byte .LASF2355 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF2356 + .byte 0x5 + .byte 0xb0,0x4 + .4byte .LASF2357 + .byte 0x5 + .byte 0xb1,0x4 + .4byte .LASF2358 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF2359 + .byte 0x5 + .byte 0xb3,0x4 + .4byte .LASF2360 + .byte 0x5 + .byte 0xb4,0x4 + .4byte .LASF2361 + .byte 0x5 + .byte 0xb5,0x4 + .4byte .LASF2362 + .byte 0x5 + .byte 0xb6,0x4 + .4byte .LASF2363 + .byte 0x5 + .byte 0xb7,0x4 + .4byte .LASF2364 + .byte 0x5 + .byte 0xb8,0x4 + .4byte .LASF2365 + .byte 0x5 + .byte 0xb9,0x4 + .4byte .LASF2366 + .byte 0x5 + .byte 0xba,0x4 + .4byte .LASF2367 + .byte 0x5 + .byte 0xbb,0x4 + .4byte .LASF2368 + .byte 0x5 + .byte 0xbc,0x4 + .4byte .LASF2369 + .byte 0x5 + .byte 0xbd,0x4 + .4byte .LASF2370 + .byte 0x5 + .byte 0xbe,0x4 + .4byte .LASF2371 + .byte 0x5 + .byte 0xbf,0x4 + .4byte .LASF2372 + .byte 0x5 + .byte 0xc2,0x4 + .4byte .LASF2373 + .byte 0x5 + .byte 0xc3,0x4 + .4byte .LASF2374 + .byte 0x5 + .byte 0xc4,0x4 + .4byte .LASF2375 + .byte 0x5 + .byte 0xc5,0x4 + .4byte .LASF2376 + .byte 0x5 + .byte 0xc6,0x4 + .4byte .LASF2377 + .byte 0x5 + .byte 0xc7,0x4 + .4byte .LASF2378 + .byte 0x5 + .byte 0xc8,0x4 + .4byte .LASF2379 + .byte 0x5 + .byte 0xc9,0x4 + .4byte .LASF2380 + .byte 0x5 + .byte 0xca,0x4 + .4byte .LASF2381 + .byte 0x5 + .byte 0xcb,0x4 + .4byte .LASF2382 + .byte 0x5 + .byte 0xcc,0x4 + .4byte .LASF2383 + .byte 0x5 + .byte 0xcf,0x4 + .4byte .LASF2384 + .byte 0x5 + .byte 0xd0,0x4 + .4byte .LASF2385 + .byte 0x5 + .byte 0xd1,0x4 + .4byte .LASF2386 + .byte 0x5 + .byte 0xd2,0x4 + .4byte .LASF2387 + .byte 0x5 + .byte 0xd3,0x4 + .4byte .LASF2388 + .byte 0x5 + .byte 0xd4,0x4 + .4byte .LASF2389 + .byte 0x5 + .byte 0xd5,0x4 + .4byte .LASF2390 + .byte 0x5 + .byte 0xd6,0x4 + .4byte .LASF2391 + .byte 0x5 + .byte 0xd7,0x4 + .4byte .LASF2392 + .byte 0x5 + .byte 0xd8,0x4 + .4byte .LASF2393 + .byte 0x5 + .byte 0xd9,0x4 + .4byte .LASF2394 + .byte 0x5 + .byte 0xdd,0x4 + .4byte .LASF2395 + .byte 0x5 + .byte 0xde,0x4 + .4byte .LASF2396 + .byte 0x5 + .byte 0xe1,0x4 + .4byte .LASF2397 + .byte 0x5 + .byte 0xe2,0x4 + .4byte .LASF2398 + .byte 0x5 + .byte 0xe5,0x4 + .4byte .LASF2399 + .byte 0x5 + .byte 0xe6,0x4 + .4byte .LASF2400 + .byte 0x5 + .byte 0xea,0x4 + .4byte .LASF2401 + .byte 0x5 + .byte 0xeb,0x4 + .4byte .LASF2402 + .byte 0x5 + .byte 0xec,0x4 + .4byte .LASF2403 + .byte 0x5 + .byte 0xed,0x4 + .4byte .LASF2404 + .byte 0x5 + .byte 0xee,0x4 + .4byte .LASF2405 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_rtc.h.37.3521dc979060c1ebaf2d43fd52b94dac,comdat +.Ldebug_macro26: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2406 + .byte 0x5 + .byte 0x2a + .4byte .LASF2407 + .byte 0x5 + .byte 0x2d + .4byte .LASF2408 + .byte 0x5 + .byte 0x2e + .4byte .LASF2409 + .byte 0x5 + .byte 0x2f + .4byte .LASF2410 + .byte 0x5 + .byte 0x30 + .4byte .LASF2411 + .byte 0x5 + .byte 0x31 + .4byte .LASF2412 + .byte 0x5 + .byte 0x32 + .4byte .LASF2413 + .byte 0x5 + .byte 0x33 + .4byte .LASF2414 + .byte 0x5 + .byte 0x34 + .4byte .LASF2415 + .byte 0x5 + .byte 0x35 + .4byte .LASF2416 + .byte 0x5 + .byte 0x36 + .4byte .LASF2417 + .byte 0x5 + .byte 0x3a + .4byte .LASF2418 + .byte 0x5 + .byte 0x3b + .4byte .LASF2419 + .byte 0x5 + .byte 0x3c + .4byte .LASF2420 + .byte 0x5 + .byte 0x3f + .4byte .LASF2421 + .byte 0x5 + .byte 0x40 + .4byte .LASF2422 + .byte 0x5 + .byte 0x41 + .4byte .LASF2423 + .byte 0x5 + .byte 0x42 + .4byte .LASF2424 + .byte 0x5 + .byte 0x43 + .4byte .LASF2425 + .byte 0x5 + .byte 0x44 + .4byte .LASF2426 + .byte 0x5 + .byte 0x47 + .4byte .LASF2427 + .byte 0x5 + .byte 0x4a + .4byte .LASF2428 + .byte 0x5 + .byte 0x4d + .4byte .LASF2429 + .byte 0x5 + .byte 0x50 + .4byte .LASF2430 + .byte 0x5 + .byte 0x53 + .4byte .LASF2431 + .byte 0x5 + .byte 0x56 + .4byte .LASF2432 + .byte 0x5 + .byte 0x59 + .4byte .LASF2433 + .byte 0x5 + .byte 0x5c + .4byte .LASF2434 + .byte 0x5 + .byte 0x60 + .4byte .LASF2435 + .byte 0x5 + .byte 0x61 + .4byte .LASF2436 + .byte 0x5 + .byte 0x62 + .4byte .LASF2437 + .byte 0x5 + .byte 0x65 + .4byte .LASF2438 + .byte 0x5 + .byte 0x66 + .4byte .LASF2439 + .byte 0x5 + .byte 0x67 + .4byte .LASF2440 + .byte 0x5 + .byte 0x6a + .4byte .LASF2441 + .byte 0x5 + .byte 0x6b + .4byte .LASF2442 + .byte 0x5 + .byte 0x6c + .4byte .LASF2443 + .byte 0x5 + .byte 0x6d + .4byte .LASF2444 + .byte 0x5 + .byte 0x6e + .4byte .LASF2445 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_spi.h.37.5b2da83109360bb35c1791b7dcc5009b,comdat +.Ldebug_macro27: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2446 + .byte 0x5 + .byte 0x2a + .4byte .LASF2447 + .byte 0x5 + .byte 0x2b + .4byte .LASF2448 + .byte 0x5 + .byte 0x2c + .4byte .LASF2449 + .byte 0x5 + .byte 0x2f + .4byte .LASF2450 + .byte 0x5 + .byte 0x30 + .4byte .LASF2451 + .byte 0x5 + .byte 0x31 + .4byte .LASF2452 + .byte 0x5 + .byte 0x32 + .4byte .LASF2453 + .byte 0x5 + .byte 0x33 + .4byte .LASF2454 + .byte 0x5 + .byte 0x34 + .4byte .LASF2455 + .byte 0x5 + .byte 0x35 + .4byte .LASF2456 + .byte 0x5 + .byte 0x36 + .4byte .LASF2457 + .byte 0x5 + .byte 0x37 + .4byte .LASF2458 + .byte 0x5 + .byte 0x3b + .4byte .LASF2459 + .byte 0x5 + .byte 0x3c + .4byte .LASF2460 + .byte 0x5 + .byte 0x3d + .4byte .LASF2461 + .byte 0x5 + .byte 0x3e + .4byte .LASF2462 + .byte 0x5 + .byte 0x3f + .4byte .LASF2463 + .byte 0x5 + .byte 0x40 + .4byte .LASF2464 + .byte 0x5 + .byte 0x41 + .4byte .LASF2465 + .byte 0x5 + .byte 0x42 + .4byte .LASF2466 + .byte 0x5 + .byte 0x43 + .4byte .LASF2467 + .byte 0x5 + .byte 0x44 + .4byte .LASF2468 + .byte 0x5 + .byte 0x45 + .4byte .LASF2469 + .byte 0x5 + .byte 0x46 + .4byte .LASF2470 + .byte 0x5 + .byte 0x47 + .4byte .LASF2471 + .byte 0x5 + .byte 0x48 + .4byte .LASF2472 + .byte 0x5 + .byte 0x4b + .4byte .LASF2473 + .byte 0x5 + .byte 0x4c + .4byte .LASF2474 + .byte 0x5 + .byte 0x4d + .4byte .LASF2475 + .byte 0x5 + .byte 0x4e + .4byte .LASF2476 + .byte 0x5 + .byte 0x4f + .4byte .LASF2477 + .byte 0x5 + .byte 0x50 + .4byte .LASF2478 + .byte 0x5 + .byte 0x51 + .4byte .LASF2479 + .byte 0x5 + .byte 0x52 + .4byte .LASF2480 + .byte 0x5 + .byte 0x55 + .4byte .LASF2481 + .byte 0x5 + .byte 0x56 + .4byte .LASF2482 + .byte 0x5 + .byte 0x57 + .4byte .LASF2483 + .byte 0x5 + .byte 0x58 + .4byte .LASF2484 + .byte 0x5 + .byte 0x59 + .4byte .LASF2485 + .byte 0x5 + .byte 0x5a + .4byte .LASF2486 + .byte 0x5 + .byte 0x5b + .4byte .LASF2487 + .byte 0x5 + .byte 0x5c + .4byte .LASF2488 + .byte 0x5 + .byte 0x5d + .4byte .LASF2489 + .byte 0x5 + .byte 0x60 + .4byte .LASF2490 + .byte 0x5 + .byte 0x63 + .4byte .LASF2491 + .byte 0x5 + .byte 0x66 + .4byte .LASF2492 + .byte 0x5 + .byte 0x69 + .4byte .LASF2493 + .byte 0x5 + .byte 0x6c + .4byte .LASF2494 + .byte 0x5 + .byte 0x6d + .4byte .LASF2495 + .byte 0x5 + .byte 0x6e + .4byte .LASF2496 + .byte 0x5 + .byte 0x6f + .4byte .LASF2497 + .byte 0x5 + .byte 0x70 + .4byte .LASF2498 + .byte 0x5 + .byte 0x71 + .4byte .LASF2499 + .byte 0x5 + .byte 0x72 + .4byte .LASF2500 + .byte 0x5 + .byte 0x73 + .4byte .LASF2501 + .byte 0x5 + .byte 0x76 + .4byte .LASF2502 + .byte 0x5 + .byte 0x77 + .4byte .LASF2503 + .byte 0x5 + .byte 0x78 + .4byte .LASF2504 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF2505 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF2506 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2507 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2508 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF2509 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2510 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF2511 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF2512 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2513 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2514 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF2515 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2516 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2517 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF2518 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF2519 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF2520 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF2521 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF2522 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2523 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2524 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2525 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2526 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF2527 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF2528 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF2529 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF2530 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF2531 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF2532 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF2533 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2534 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF2535 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF2536 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2537 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2538 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2539 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2540 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2541 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2542 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2543 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2544 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2545 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF2546 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF2547 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF2548 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF2549 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2550 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF2551 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF2552 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF2553 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF2554 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF2555 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF2556 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2557 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF2558 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF2559 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF2560 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF2561 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF2562 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2563 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2564 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF2565 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF2566 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2567 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF2568 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2569 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2570 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF2571 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF2572 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF2573 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF2574 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF2575 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF2576 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF2577 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF2578 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF2579 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF2580 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF2581 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF2582 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF2583 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF2584 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF2585 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF2586 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF2587 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF2588 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_timer.h.37.41e31e3c41519d549a8819d7a508d7a5,comdat +.Ldebug_macro28: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2589 + .byte 0x5 + .byte 0x2a + .4byte .LASF2590 + .byte 0x5 + .byte 0x2b + .4byte .LASF2591 + .byte 0x5 + .byte 0x2c + .4byte .LASF2592 + .byte 0x5 + .byte 0x2d + .4byte .LASF2593 + .byte 0x5 + .byte 0x2e + .4byte .LASF2594 + .byte 0x5 + .byte 0x2f + .4byte .LASF2595 + .byte 0x5 + .byte 0x30 + .4byte .LASF2596 + .byte 0x5 + .byte 0x33 + .4byte .LASF2597 + .byte 0x5 + .byte 0x34 + .4byte .LASF2598 + .byte 0x5 + .byte 0x35 + .4byte .LASF2599 + .byte 0x5 + .byte 0x36 + .4byte .LASF2600 + .byte 0x5 + .byte 0x37 + .4byte .LASF2601 + .byte 0x5 + .byte 0x38 + .4byte .LASF2602 + .byte 0x5 + .byte 0x39 + .4byte .LASF2603 + .byte 0x5 + .byte 0x3a + .4byte .LASF2604 + .byte 0x5 + .byte 0x3b + .4byte .LASF2605 + .byte 0x5 + .byte 0x3c + .4byte .LASF2606 + .byte 0x5 + .byte 0x3d + .4byte .LASF2607 + .byte 0x5 + .byte 0x3e + .4byte .LASF2608 + .byte 0x5 + .byte 0x3f + .4byte .LASF2609 + .byte 0x5 + .byte 0x40 + .4byte .LASF2610 + .byte 0x5 + .byte 0x41 + .4byte .LASF2611 + .byte 0x5 + .byte 0x42 + .4byte .LASF2612 + .byte 0x5 + .byte 0x43 + .4byte .LASF2613 + .byte 0x5 + .byte 0x44 + .4byte .LASF2614 + .byte 0x5 + .byte 0x45 + .4byte .LASF2615 + .byte 0x5 + .byte 0x46 + .4byte .LASF2616 + .byte 0x5 + .byte 0x4a + .4byte .LASF2617 + .byte 0x5 + .byte 0x4b + .4byte .LASF2618 + .byte 0x5 + .byte 0x4c + .4byte .LASF2619 + .byte 0x5 + .byte 0x4d + .4byte .LASF2620 + .byte 0x5 + .byte 0x4e + .4byte .LASF2621 + .byte 0x5 + .byte 0x4f + .4byte .LASF2622 + .byte 0x5 + .byte 0x50 + .4byte .LASF2623 + .byte 0x5 + .byte 0x51 + .4byte .LASF2624 + .byte 0x5 + .byte 0x54 + .4byte .LASF2625 + .byte 0x5 + .byte 0x55 + .4byte .LASF2626 + .byte 0x5 + .byte 0x56 + .4byte .LASF2627 + .byte 0x5 + .byte 0x57 + .4byte .LASF2628 + .byte 0x5 + .byte 0x58 + .4byte .LASF2629 + .byte 0x5 + .byte 0x59 + .4byte .LASF2630 + .byte 0x5 + .byte 0x5a + .4byte .LASF2631 + .byte 0x5 + .byte 0x5b + .4byte .LASF2632 + .byte 0x5 + .byte 0x5c + .4byte .LASF2633 + .byte 0x5 + .byte 0x5d + .4byte .LASF2634 + .byte 0x5 + .byte 0x5e + .4byte .LASF2635 + .byte 0x5 + .byte 0x5f + .4byte .LASF2636 + .byte 0x5 + .byte 0x62 + .4byte .LASF2637 + .byte 0x5 + .byte 0x63 + .4byte .LASF2638 + .byte 0x5 + .byte 0x64 + .4byte .LASF2639 + .byte 0x5 + .byte 0x65 + .4byte .LASF2640 + .byte 0x5 + .byte 0x66 + .4byte .LASF2641 + .byte 0x5 + .byte 0x67 + .4byte .LASF2642 + .byte 0x5 + .byte 0x68 + .4byte .LASF2643 + .byte 0x5 + .byte 0x6b + .4byte .LASF2644 + .byte 0x5 + .byte 0x6c + .4byte .LASF2645 + .byte 0x5 + .byte 0x6d + .4byte .LASF2646 + .byte 0x5 + .byte 0x6e + .4byte .LASF2647 + .byte 0x5 + .byte 0x6f + .4byte .LASF2648 + .byte 0x5 + .byte 0x70 + .4byte .LASF2649 + .byte 0x5 + .byte 0x71 + .4byte .LASF2650 + .byte 0x5 + .byte 0x72 + .4byte .LASF2651 + .byte 0x5 + .byte 0x73 + .4byte .LASF2652 + .byte 0x5 + .byte 0x74 + .4byte .LASF2653 + .byte 0x5 + .byte 0x75 + .4byte .LASF2654 + .byte 0x5 + .byte 0x76 + .4byte .LASF2655 + .byte 0x5 + .byte 0x77 + .4byte .LASF2656 + .byte 0x5 + .byte 0x78 + .4byte .LASF2657 + .byte 0x5 + .byte 0x79 + .4byte .LASF2658 + .byte 0x5 + .byte 0x7c + .4byte .LASF2659 + .byte 0x5 + .byte 0x7d + .4byte .LASF2660 + .byte 0x5 + .byte 0x7e + .4byte .LASF2661 + .byte 0x5 + .byte 0x7f + .4byte .LASF2662 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF2663 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF2664 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF2665 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF2666 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF2667 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF2668 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF2669 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF2670 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF2671 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF2672 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2673 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2674 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF2675 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF2676 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF2677 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2678 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF2679 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2680 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2681 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF2682 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF2683 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF2684 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2685 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF2686 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF2687 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2688 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF2689 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF2690 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF2691 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF2692 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF2693 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2694 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2695 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2696 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2697 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF2698 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF2699 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF2700 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF2701 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF2702 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF2703 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF2704 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF2705 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2706 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2707 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2708 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2709 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2710 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF2711 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF2712 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2713 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2714 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2715 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2716 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2717 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF2718 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF2719 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF2720 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF2721 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2722 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF2723 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF2724 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2725 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF2726 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF2727 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF2728 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2729 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2730 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF2731 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF2732 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF2733 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF2734 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2735 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF2736 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2737 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2738 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF2739 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF2740 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF2741 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF2742 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF2743 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF2744 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF2745 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF2746 + .byte 0x5 + .byte 0xa4,0x2 + .4byte .LASF2747 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF2748 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF2749 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF2750 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF2751 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF2752 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF2753 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF2754 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF2755 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF2756 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF2757 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF2758 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF2759 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF2760 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF2761 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF2762 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF2763 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF2764 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF2765 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF2766 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF2767 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF2768 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF2769 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF2770 + .byte 0x5 + .byte 0xc2,0x2 + .4byte .LASF2771 + .byte 0x5 + .byte 0xc3,0x2 + .4byte .LASF2772 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF2773 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF2774 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF2775 + .byte 0x5 + .byte 0xc9,0x2 + .4byte .LASF2776 + .byte 0x5 + .byte 0xcc,0x2 + .4byte .LASF2777 + .byte 0x5 + .byte 0xcd,0x2 + .4byte .LASF2778 + .byte 0x5 + .byte 0xce,0x2 + .4byte .LASF2779 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF2780 + .byte 0x5 + .byte 0xd0,0x2 + .4byte .LASF2781 + .byte 0x5 + .byte 0xd1,0x2 + .4byte .LASF2782 + .byte 0x5 + .byte 0xd2,0x2 + .4byte .LASF2783 + .byte 0x5 + .byte 0xd3,0x2 + .4byte .LASF2784 + .byte 0x5 + .byte 0xd4,0x2 + .4byte .LASF2785 + .byte 0x5 + .byte 0xd5,0x2 + .4byte .LASF2786 + .byte 0x5 + .byte 0xd6,0x2 + .4byte .LASF2787 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF2788 + .byte 0x5 + .byte 0xd8,0x2 + .4byte .LASF2789 + .byte 0x5 + .byte 0xd9,0x2 + .4byte .LASF2790 + .byte 0x5 + .byte 0xda,0x2 + .4byte .LASF2791 + .byte 0x5 + .byte 0xdb,0x2 + .4byte .LASF2792 + .byte 0x5 + .byte 0xdc,0x2 + .4byte .LASF2793 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF2794 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF2795 + .byte 0x5 + .byte 0xdf,0x2 + .4byte .LASF2796 + .byte 0x5 + .byte 0xe2,0x2 + .4byte .LASF2797 + .byte 0x5 + .byte 0xe3,0x2 + .4byte .LASF2798 + .byte 0x5 + .byte 0xe4,0x2 + .4byte .LASF2799 + .byte 0x5 + .byte 0xe5,0x2 + .4byte .LASF2800 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF2801 + .byte 0x5 + .byte 0xe7,0x2 + .4byte .LASF2802 + .byte 0x5 + .byte 0xe8,0x2 + .4byte .LASF2803 + .byte 0x5 + .byte 0xe9,0x2 + .4byte .LASF2804 + .byte 0x5 + .byte 0xea,0x2 + .4byte .LASF2805 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF2806 + .byte 0x5 + .byte 0xec,0x2 + .4byte .LASF2807 + .byte 0x5 + .byte 0xed,0x2 + .4byte .LASF2808 + .byte 0x5 + .byte 0xee,0x2 + .4byte .LASF2809 + .byte 0x5 + .byte 0xef,0x2 + .4byte .LASF2810 + .byte 0x5 + .byte 0xf0,0x2 + .4byte .LASF2811 + .byte 0x5 + .byte 0xf1,0x2 + .4byte .LASF2812 + .byte 0x5 + .byte 0xf2,0x2 + .4byte .LASF2813 + .byte 0x5 + .byte 0xf3,0x2 + .4byte .LASF2814 + .byte 0x5 + .byte 0xf4,0x2 + .4byte .LASF2815 + .byte 0x5 + .byte 0xf7,0x2 + .4byte .LASF2816 + .byte 0x5 + .byte 0xf8,0x2 + .4byte .LASF2817 + .byte 0x5 + .byte 0xf9,0x2 + .4byte .LASF2818 + .byte 0x5 + .byte 0xfa,0x2 + .4byte .LASF2819 + .byte 0x5 + .byte 0xfb,0x2 + .4byte .LASF2820 + .byte 0x5 + .byte 0xfc,0x2 + .4byte .LASF2821 + .byte 0x5 + .byte 0xfd,0x2 + .4byte .LASF2822 + .byte 0x5 + .byte 0xfe,0x2 + .4byte .LASF2823 + .byte 0x5 + .byte 0x81,0x3 + .4byte .LASF2824 + .byte 0x5 + .byte 0x82,0x3 + .4byte .LASF2825 + .byte 0x5 + .byte 0x83,0x3 + .4byte .LASF2826 + .byte 0x5 + .byte 0x84,0x3 + .4byte .LASF2827 + .byte 0x5 + .byte 0x85,0x3 + .4byte .LASF2828 + .byte 0x5 + .byte 0x88,0x3 + .4byte .LASF2829 + .byte 0x5 + .byte 0x89,0x3 + .4byte .LASF2830 + .byte 0x5 + .byte 0x8c,0x3 + .4byte .LASF2831 + .byte 0x5 + .byte 0x8d,0x3 + .4byte .LASF2832 + .byte 0x5 + .byte 0x90,0x3 + .4byte .LASF2833 + .byte 0x5 + .byte 0x91,0x3 + .4byte .LASF2834 + .byte 0x5 + .byte 0x92,0x3 + .4byte .LASF2835 + .byte 0x5 + .byte 0x93,0x3 + .4byte .LASF2836 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF2837 + .byte 0x5 + .byte 0x97,0x3 + .4byte .LASF2838 + .byte 0x5 + .byte 0x9a,0x3 + .4byte .LASF2839 + .byte 0x5 + .byte 0x9b,0x3 + .4byte .LASF2840 + .byte 0x5 + .byte 0x9e,0x3 + .4byte .LASF2841 + .byte 0x5 + .byte 0x9f,0x3 + .4byte .LASF2842 + .byte 0x5 + .byte 0xa3,0x3 + .4byte .LASF2843 + .byte 0x5 + .byte 0xa4,0x3 + .4byte .LASF2844 + .byte 0x5 + .byte 0xa7,0x3 + .4byte .LASF2845 + .byte 0x5 + .byte 0xa8,0x3 + .4byte .LASF2846 + .byte 0x5 + .byte 0xab,0x3 + .4byte .LASF2847 + .byte 0x5 + .byte 0xac,0x3 + .4byte .LASF2848 + .byte 0x5 + .byte 0xaf,0x3 + .4byte .LASF2849 + .byte 0x5 + .byte 0xb0,0x3 + .4byte .LASF2850 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF2851 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF2852 + .byte 0x5 + .byte 0xb3,0x3 + .4byte .LASF2853 + .byte 0x5 + .byte 0xb6,0x3 + .4byte .LASF2854 + .byte 0x5 + .byte 0xb7,0x3 + .4byte .LASF2855 + .byte 0x5 + .byte 0xba,0x3 + .4byte .LASF2856 + .byte 0x5 + .byte 0xbb,0x3 + .4byte .LASF2857 + .byte 0x5 + .byte 0xbc,0x3 + .4byte .LASF2858 + .byte 0x5 + .byte 0xbd,0x3 + .4byte .LASF2859 + .byte 0x5 + .byte 0xc0,0x3 + .4byte .LASF2860 + .byte 0x5 + .byte 0xc1,0x3 + .4byte .LASF2861 + .byte 0x5 + .byte 0xc4,0x3 + .4byte .LASF2862 + .byte 0x5 + .byte 0xc5,0x3 + .4byte .LASF2863 + .byte 0x5 + .byte 0xc8,0x3 + .4byte .LASF2864 + .byte 0x5 + .byte 0xc9,0x3 + .4byte .LASF2865 + .byte 0x5 + .byte 0xcc,0x3 + .4byte .LASF2866 + .byte 0x5 + .byte 0xcd,0x3 + .4byte .LASF2867 + .byte 0x5 + .byte 0xd0,0x3 + .4byte .LASF2868 + .byte 0x5 + .byte 0xd1,0x3 + .4byte .LASF2869 + .byte 0x5 + .byte 0xd4,0x3 + .4byte .LASF2870 + .byte 0x5 + .byte 0xd5,0x3 + .4byte .LASF2871 + .byte 0x5 + .byte 0xd8,0x3 + .4byte .LASF2872 + .byte 0x5 + .byte 0xd9,0x3 + .4byte .LASF2873 + .byte 0x5 + .byte 0xda,0x3 + .4byte .LASF2874 + .byte 0x5 + .byte 0xdb,0x3 + .4byte .LASF2875 + .byte 0x5 + .byte 0xdc,0x3 + .4byte .LASF2876 + .byte 0x5 + .byte 0xdd,0x3 + .4byte .LASF2877 + .byte 0x5 + .byte 0xde,0x3 + .4byte .LASF2878 + .byte 0x5 + .byte 0xdf,0x3 + .4byte .LASF2879 + .byte 0x5 + .byte 0xe2,0x3 + .4byte .LASF2880 + .byte 0x5 + .byte 0xe3,0x3 + .4byte .LASF2881 + .byte 0x5 + .byte 0xe6,0x3 + .4byte .LASF2882 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF2883 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF2884 + .byte 0x5 + .byte 0xeb,0x3 + .4byte .LASF2885 + .byte 0x5 + .byte 0xee,0x3 + .4byte .LASF2886 + .byte 0x5 + .byte 0xef,0x3 + .4byte .LASF2887 + .byte 0x5 + .byte 0xf2,0x3 + .4byte .LASF2888 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF2889 + .byte 0x5 + .byte 0xf4,0x3 + .4byte .LASF2890 + .byte 0x5 + .byte 0xf7,0x3 + .4byte .LASF2891 + .byte 0x5 + .byte 0xf8,0x3 + .4byte .LASF2892 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF2893 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF2894 + .byte 0x5 + .byte 0xfd,0x3 + .4byte .LASF2895 + .byte 0x5 + .byte 0xfe,0x3 + .4byte .LASF2896 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF2897 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF2898 + .byte 0x5 + .byte 0x83,0x4 + .4byte .LASF2899 + .byte 0x5 + .byte 0x84,0x4 + .4byte .LASF2900 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF2901 + .byte 0x5 + .byte 0x86,0x4 + .4byte .LASF2902 + .byte 0x5 + .byte 0x87,0x4 + .4byte .LASF2903 + .byte 0x5 + .byte 0x88,0x4 + .4byte .LASF2904 + .byte 0x5 + .byte 0x89,0x4 + .4byte .LASF2905 + .byte 0x5 + .byte 0x8a,0x4 + .4byte .LASF2906 + .byte 0x5 + .byte 0x8d,0x4 + .4byte .LASF2907 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF2908 + .byte 0x5 + .byte 0x8f,0x4 + .4byte .LASF2909 + .byte 0x5 + .byte 0x90,0x4 + .4byte .LASF2910 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF2911 + .byte 0x5 + .byte 0x92,0x4 + .4byte .LASF2912 + .byte 0x5 + .byte 0x93,0x4 + .4byte .LASF2913 + .byte 0x5 + .byte 0x94,0x4 + .4byte .LASF2914 + .byte 0x5 + .byte 0x95,0x4 + .4byte .LASF2915 + .byte 0x5 + .byte 0x98,0x4 + .4byte .LASF2916 + .byte 0x5 + .byte 0x99,0x4 + .4byte .LASF2917 + .byte 0x5 + .byte 0x9a,0x4 + .4byte .LASF2918 + .byte 0x5 + .byte 0x9b,0x4 + .4byte .LASF2919 + .byte 0x5 + .byte 0x9c,0x4 + .4byte .LASF2920 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF2921 + .byte 0x5 + .byte 0x9e,0x4 + .4byte .LASF2922 + .byte 0x5 + .byte 0x9f,0x4 + .4byte .LASF2923 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF2924 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF2925 + .byte 0x5 + .byte 0xa4,0x4 + .4byte .LASF2926 + .byte 0x5 + .byte 0xa7,0x4 + .4byte .LASF2927 + .byte 0x5 + .byte 0xa8,0x4 + .4byte .LASF2928 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF2929 + .byte 0x5 + .byte 0xaa,0x4 + .4byte .LASF2930 + .byte 0x5 + .byte 0xab,0x4 + .4byte .LASF2931 + .byte 0x5 + .byte 0xae,0x4 + .4byte .LASF2932 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF2933 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF2934 + .byte 0x5 + .byte 0xb3,0x4 + .4byte .LASF2935 + .byte 0x5 + .byte 0xb6,0x4 + .4byte .LASF2936 + .byte 0x5 + .byte 0xb7,0x4 + .4byte .LASF2937 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_usart.h.38.bd493dc3b9236603b2fca39bcddb0020,comdat +.Ldebug_macro29: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x26 + .4byte .LASF2938 + .byte 0x5 + .byte 0x2b + .4byte .LASF2939 + .byte 0x5 + .byte 0x2c + .4byte .LASF2940 + .byte 0x5 + .byte 0x2d + .4byte .LASF2941 + .byte 0x5 + .byte 0x2e + .4byte .LASF2942 + .byte 0x5 + .byte 0x2f + .4byte .LASF2943 + .byte 0x5 + .byte 0x32 + .4byte .LASF2944 + .byte 0x5 + .byte 0x33 + .4byte .LASF2945 + .byte 0x5 + .byte 0x34 + .4byte .LASF2946 + .byte 0x5 + .byte 0x35 + .4byte .LASF2947 + .byte 0x5 + .byte 0x36 + .4byte .LASF2948 + .byte 0x5 + .byte 0x37 + .4byte .LASF2949 + .byte 0x5 + .byte 0x38 + .4byte .LASF2950 + .byte 0x5 + .byte 0x3c + .4byte .LASF2951 + .byte 0x5 + .byte 0x3d + .4byte .LASF2952 + .byte 0x5 + .byte 0x3e + .4byte .LASF2953 + .byte 0x5 + .byte 0x3f + .4byte .LASF2954 + .byte 0x5 + .byte 0x40 + .4byte .LASF2955 + .byte 0x5 + .byte 0x41 + .4byte .LASF2956 + .byte 0x5 + .byte 0x42 + .4byte .LASF2957 + .byte 0x5 + .byte 0x43 + .4byte .LASF2958 + .byte 0x5 + .byte 0x44 + .4byte .LASF2959 + .byte 0x5 + .byte 0x45 + .4byte .LASF2960 + .byte 0x5 + .byte 0x48 + .4byte .LASF2961 + .byte 0x5 + .byte 0x4b + .4byte .LASF2962 + .byte 0x5 + .byte 0x4c + .4byte .LASF2963 + .byte 0x5 + .byte 0x4f + .4byte .LASF2964 + .byte 0x5 + .byte 0x50 + .4byte .LASF2965 + .byte 0x5 + .byte 0x51 + .4byte .LASF2966 + .byte 0x5 + .byte 0x52 + .4byte .LASF2967 + .byte 0x5 + .byte 0x53 + .4byte .LASF2968 + .byte 0x5 + .byte 0x54 + .4byte .LASF2969 + .byte 0x5 + .byte 0x55 + .4byte .LASF2970 + .byte 0x5 + .byte 0x56 + .4byte .LASF2971 + .byte 0x5 + .byte 0x57 + .4byte .LASF2972 + .byte 0x5 + .byte 0x58 + .4byte .LASF2973 + .byte 0x5 + .byte 0x59 + .4byte .LASF2974 + .byte 0x5 + .byte 0x5a + .4byte .LASF2975 + .byte 0x5 + .byte 0x5b + .4byte .LASF2976 + .byte 0x5 + .byte 0x5c + .4byte .LASF2977 + .byte 0x5 + .byte 0x5f + .4byte .LASF2978 + .byte 0x5 + .byte 0x60 + .4byte .LASF2979 + .byte 0x5 + .byte 0x61 + .4byte .LASF2980 + .byte 0x5 + .byte 0x62 + .4byte .LASF2981 + .byte 0x5 + .byte 0x63 + .4byte .LASF2982 + .byte 0x5 + .byte 0x64 + .4byte .LASF2983 + .byte 0x5 + .byte 0x65 + .4byte .LASF2984 + .byte 0x5 + .byte 0x66 + .4byte .LASF2985 + .byte 0x5 + .byte 0x67 + .4byte .LASF2986 + .byte 0x5 + .byte 0x6a + .4byte .LASF2987 + .byte 0x5 + .byte 0x6b + .4byte .LASF2988 + .byte 0x5 + .byte 0x6c + .4byte .LASF2989 + .byte 0x5 + .byte 0x6d + .4byte .LASF2990 + .byte 0x5 + .byte 0x6e + .4byte .LASF2991 + .byte 0x5 + .byte 0x6f + .4byte .LASF2992 + .byte 0x5 + .byte 0x70 + .4byte .LASF2993 + .byte 0x5 + .byte 0x71 + .4byte .LASF2994 + .byte 0x5 + .byte 0x72 + .4byte .LASF2995 + .byte 0x5 + .byte 0x73 + .4byte .LASF2996 + .byte 0x5 + .byte 0x74 + .4byte .LASF2997 + .byte 0x5 + .byte 0x77 + .4byte .LASF2998 + .byte 0x5 + .byte 0x78 + .4byte .LASF2999 + .byte 0x5 + .byte 0x7c + .4byte .LASF3000 + .byte 0x5 + .byte 0x7d + .4byte .LASF3001 + .byte 0x5 + .byte 0x7e + .4byte .LASF3002 + .byte 0x5 + .byte 0x7f + .4byte .LASF3003 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF3004 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF3005 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF3006 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF3007 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF3008 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF3009 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF3010 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF3011 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF3012 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF3013 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF3014 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF3015 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF3016 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF3017 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF3018 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF3019 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF3020 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF3021 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF3022 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF3023 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF3024 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF3025 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF3026 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF3027 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF3028 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF3029 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF3030 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF3031 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF3032 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF3033 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF3034 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF3035 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF3036 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF3037 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF3038 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF3039 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF3040 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF3041 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF3042 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF3043 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF3044 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF3045 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF3046 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF3047 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF3048 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF3049 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF3050 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF3051 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF3052 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF3053 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF3054 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF3055 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF3056 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF3057 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_wwdgt.h.37.3e64b838fd471007da900965463a8419,comdat +.Ldebug_macro30: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF3058 + .byte 0x5 + .byte 0x2a + .4byte .LASF3059 + .byte 0x5 + .byte 0x2d + .4byte .LASF3060 + .byte 0x5 + .byte 0x2e + .4byte .LASF3061 + .byte 0x5 + .byte 0x2f + .4byte .LASF3062 + .byte 0x5 + .byte 0x33 + .4byte .LASF3063 + .byte 0x5 + .byte 0x34 + .4byte .LASF3064 + .byte 0x5 + .byte 0x37 + .4byte .LASF3065 + .byte 0x5 + .byte 0x38 + .4byte .LASF3066 + .byte 0x5 + .byte 0x39 + .4byte .LASF3067 + .byte 0x5 + .byte 0x3c + .4byte .LASF3068 + .byte 0x5 + .byte 0x3f + .4byte .LASF3069 + .byte 0x5 + .byte 0x40 + .4byte .LASF3070 + .byte 0x5 + .byte 0x41 + .4byte .LASF3071 + .byte 0x5 + .byte 0x42 + .4byte .LASF3072 + .byte 0x5 + .byte 0x43 + .4byte .LASF3073 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stddef.h.39.144cf5ddcd53cbfdac30259dc1a6c87f,comdat +.Ldebug_macro31: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF3075 + .byte 0x5 + .byte 0x28 + .4byte .LASF3076 + .byte 0x5 + .byte 0x2a + .4byte .LASF3077 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF3078 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF3079 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF3080 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF3081 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF3082 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF3083 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF3084 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF3085 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF3086 + .byte 0x6 + .byte 0x9b,0x1 + .4byte .LASF3087 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF3088 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF3089 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF3090 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF3091 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF3092 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF3093 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF3094 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF3095 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF3096 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF3097 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF3098 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF3099 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF3100 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF3101 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF3102 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF3103 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF3104 + .byte 0x6 + .byte 0xe7,0x1 + .4byte .LASF3105 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF3106 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF3107 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF3108 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF3109 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF3110 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF3111 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF3112 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF3113 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF3114 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF3115 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF3116 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF3117 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF3118 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF3119 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF3120 + .byte 0x6 + .byte 0x9f,0x2 + .4byte .LASF3121 + .byte 0x6 + .byte 0xd4,0x2 + .4byte .LASF3122 + .byte 0x6 + .byte 0x86,0x3 + .4byte .LASF3123 + .byte 0x5 + .byte 0x8b,0x3 + .4byte .LASF3124 + .byte 0x6 + .byte 0x91,0x3 + .4byte .LASF3125 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF3126 + .byte 0x5 + .byte 0x9b,0x3 + .4byte .LASF3127 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_timer.h.4.7cbfcb0f457964ecd81bc2aaf47d8b32,comdat +.Ldebug_macro32: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4 + .4byte .LASF3128 + .byte 0x5 + .byte 0x6 + .4byte .LASF3129 + .byte 0x5 + .byte 0x7 + .4byte .LASF3130 + .byte 0x5 + .byte 0x8 + .4byte .LASF3131 + .byte 0x5 + .byte 0x9 + .4byte .LASF3132 + .byte 0x5 + .byte 0xa + .4byte .LASF3133 + .byte 0x5 + .byte 0xb + .4byte .LASF3134 + .byte 0x5 + .byte 0xd + .4byte .LASF3135 + .byte 0x5 + .byte 0xe + .4byte .LASF3136 + .byte 0x5 + .byte 0xf + .4byte .LASF3137 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.riscv_const.h.5.95ac0744d59bfc0d17f4e8adf85ccb42,comdat +.Ldebug_macro33: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x5 + .4byte .LASF3139 + .byte 0x5 + .byte 0xb + .4byte .LASF3140 + .byte 0x5 + .byte 0xc + .4byte .LASF3141 + .byte 0x5 + .byte 0xf + .4byte .LASF3142 + .byte 0x5 + .byte 0x10 + .4byte .LASF3143 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_eclic.h.8.88844f0cdf4d8e1ef4e06c0cb5147462,comdat +.Ldebug_macro34: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x8 + .4byte .LASF3144 + .byte 0x5 + .byte 0xd + .4byte .LASF3145 + .byte 0x5 + .byte 0xf + .4byte .LASF3146 + .byte 0x5 + .byte 0x11 + .4byte .LASF3147 + .byte 0x5 + .byte 0x14 + .4byte .LASF3148 + .byte 0x5 + .byte 0x16 + .4byte .LASF3149 + .byte 0x5 + .byte 0x18 + .4byte .LASF3150 + .byte 0x5 + .byte 0x1a + .4byte .LASF3151 + .byte 0x5 + .byte 0x1b + .4byte .LASF3152 + .byte 0x5 + .byte 0x1c + .4byte .LASF3153 + .byte 0x5 + .byte 0x1d + .4byte .LASF3154 + .byte 0x5 + .byte 0x1e + .4byte .LASF3155 + .byte 0x5 + .byte 0x21 + .4byte .LASF3156 + .byte 0x5 + .byte 0x23 + .4byte .LASF3157 + .byte 0x5 + .byte 0x26 + .4byte .LASF3158 + .byte 0x5 + .byte 0x27 + .4byte .LASF3159 + .byte 0x5 + .byte 0x29 + .4byte .LASF3160 + .byte 0x5 + .byte 0x2a + .4byte .LASF3161 + .byte 0x5 + .byte 0x2b + .4byte .LASF3162 + .byte 0x5 + .byte 0x2c + .4byte .LASF3163 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_func.h.11.5e6cb65336aea242ab47b239a06795e1,comdat +.Ldebug_macro35: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xb + .4byte .LASF3164 + .byte 0x5 + .byte 0xc + .4byte .LASF3165 + .byte 0x5 + .byte 0xd + .4byte .LASF3166 + .byte 0x5 + .byte 0xe + .4byte .LASF3167 + .byte 0x5 + .byte 0xf + .4byte .LASF3168 + .byte 0 + .section .debug_line,"",@progbits +.Ldebug_line0: + .section .debug_str,"MS",@progbits,1 +.LASF1189: + .string "DAC_WAVE_BIT_WIDTH_4 DWBW(3)" +.LASF328: + .string "_POSIX_C_SOURCE 1" +.LASF2499: + .string "SPI_I2SCTL_I2SOPMOD BITS(8,9)" +.LASF1587: + .string "OB_WP_25 ((uint32_t)0x02000000U)" +.LASF3011: + .string "USART_RECEIVE_ENABLE CTL0_REN(1)" +.LASF365: + .string "___int16_t_defined 1" +.LASF2260: + .string "RCU_AHB_CKSYS_DIV8 CFG0_AHBPSC(10)" +.LASF757: + .string "BKP_DATA BITS(0,15)" +.LASF884: + .string "CAN_CTL_RFOD BIT(3)" +.LASF1936: + .string "I2C_STAT1_RXGC BIT(4)" +.LASF3161: + .string "MTIME_HANDLER eclic_mtip_handler" +.LASF1717: + .string "GPIO_BC_CR2 BIT(2)" +.LASF2958: + .string "USART_STAT_TBE BIT(7)" +.LASF1400: + .string "EXTI_EVEN_EVEN11 BIT(11)" +.LASF834: + .string "CAN_F19DATA0(canx) REG32((canx) + 0x2D8U)" +.LASF1276: + .string "DMA_CHXCTL_MWIDTH BITS(10,11)" +.LASF2461: + .string "SPI_CTL0_MSTMOD BIT(2)" +.LASF2405: + .string "RCU_DEEPSLEEP_V_0_9 DSV_DSLPVS(3)" +.LASF1301: + .string "DMA_INT_HTF DMA_CHXCTL_HTFIE" +.LASF2139: + .string "RCU_INT_CKMIC BIT(23)" +.LASF2430: + .string "RTC_DIVL_DIV BITS(0,15)" +.LASF3110: + .string "_T_WCHAR " +.LASF2001: + .string "FWDGT_STAT_RUD BIT(1)" +.LASF536: + .string "ADC_IOFF1(adcx) REG32((adcx) + 0x18U)" +.LASF1614: + .string "AFIO_EXTISS0 REG32(AFIO + 0x08U)" +.LASF1974: + .string "I2C_DMA_OFF ((uint32_t)0x00000000U)" +.LASF2888: + .string "TIMER_IC_POLARITY_RISING ((uint16_t)0x0000U)" +.LASF2496: + .string "SPI_I2SCTL_CKPL BIT(3)" +.LASF826: + .string "CAN_F11DATA0(canx) REG32((canx) + 0x298U)" +.LASF150: + .string "__FLT_MAX_10_EXP__ 38" +.LASF2473: + .string "SPI_CTL1_DMAREN BIT(0)" +.LASF509: + .string "SPI_BASE (APB1_BUS_BASE + 0x00003800U)" +.LASF127: + .string "__INT_FAST16_WIDTH__ 32" +.LASF980: + .string "CAN_RFIFOMDATA0_DB1 BITS(8,15)" +.LASF2715: + .string "TIMER_CHCTL2_CH2EN BIT(8)" +.LASF913: + .string "CAN_TSTAT_MTE2 BIT(19)" +.LASF2560: + .string "I2S_CKPL_HIGH SPI_I2SCTL_CKPL" +.LASF2202: + .string "RCU_APB1EN_I2C0EN BIT(21)" +.LASF2450: + .string "SPI_CTL0(spix) REG32((spix) + 0x00U)" +.LASF2875: + .string "TIMER_OC_MODE_TOGGLE ((uint16_t)0x0030U)" +.LASF1471: + .string "EXTI_PD_PD6 BIT(6)" +.LASF1095: + .string "CAN_FILTERBITS_16BIT ((uint8_t)0x00U)" +.LASF3185: + .string "long unsigned int" +.LASF726: + .string "BKP_DATA14 REG16((BKP) + 0x50U)" +.LASF1768: + .string "AFIO_EXTI2_SS BITS(8, 11)" +.LASF2930: + .string "TIMER_EXT_TRI_PSC_DIV4 SMCFG_ETPSC(2)" +.LASF2410: + .string "RTC_PSCH REG32(RTC + 0x08U)" +.LASF1776: + .string "AFIO_EXTI10_SS BITS(8, 11)" +.LASF3208: + .string "system_clock_108m_hxtal" +.LASF300: + .string "__SIZEOF_WCHAR_T__ 4" +.LASF500: + .string "EXMC_BASE ((uint32_t)0xA0000000U)" +.LASF1670: + .string "GPIO_OCTL_OCTL3 BIT(3)" +.LASF1339: + .string "EXMC_SNCTL_NRTP BITS(2,3)" +.LASF307: + .string "__riscv_div 1" +.LASF754: + .string "BKP_OCTL REG16((BKP) + 0x2CU)" +.LASF2774: + .string "TIMER_DMA_TRGD ((uint16_t)TIMER_DMAINTEN_TRGDEN)" +.LASF1407: + .string "EXTI_EVEN_EVEN18 BIT(18)" +.LASF2413: + .string "RTC_DIVL REG32(RTC + 0x14U)" +.LASF477: + .string "WCHAR_MAX (__WCHAR_MAX__)" +.LASF2004: + .string "FWDGT_PSC_DIV8 ((uint8_t)PSC_PSC(1))" +.LASF1036: + .string "GET_ERR_ERRN(regval) GET_BITS((uint32_t)(regval), 4U, 6U)" +.LASF2551: + .string "I2S_MODE_MASTERTX I2SCTL_I2SOPMOD(2)" +.LASF3103: + .string "_SIZET_ " +.LASF1338: + .string "EXMC_SNCTL_NRMUX BIT(1)" +.LASF1328: + .string "ECLIC_PRIGROUP_LEVEL2_PRIO2 2" +.LASF2906: + .string "TIMER_SMCFG_TRGSEL_ETIFP SMCFG_TRGSEL(7)" +.LASF1115: + .string "CAN_INT_WAKEUP CAN_INTEN_WIE" +.LASF438: + .string "INT16_MIN (-__INT16_MAX__ - 1)" +.LASF1609: + .string "GPIO_BOP(gpiox) REG32((gpiox) + 0x10U)" +.LASF1720: + .string "GPIO_BC_CR5 BIT(5)" +.LASF2298: + .string "RCU_PLL_MUL12 CFG0_PLLMF(10)" +.LASF580: + .string "ADC_CTL1_SWRCST BIT(22)" +.LASF2955: + .string "USART_STAT_IDLEF BIT(4)" +.LASF1225: + .string "DAC_TRIANGLE_AMPLITUDE_4095 DAC_WAVE_BIT_WIDTH_12" +.LASF3163: + .string "PMOVI_HANDLER eclic_pmovi_handler" +.LASF2556: + .string "I2S_STD_LSB I2SCTL_I2SSTD(2)" +.LASF1738: + .string "GPIO_LOCK_LK7 BIT(7)" +.LASF2063: + .string "PMU_LVDT_5 CTL_LVDT(5)" +.LASF340: + .string "SYSTEM_GD32VF103_H " +.LASF1515: + .string "FMC_CTL_LK BIT(7)" +.LASF497: + .string "SRAM_BASE ((uint32_t)0x20000000U)" +.LASF622: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH1 CTL1_ETSRC(1)" +.LASF458: + .string "UINT_FAST8_MAX (__UINT_FAST8_MAX__)" +.LASF1047: + .string "CAN_ERRN_7 ERR_ERRN(7U)" +.LASF182: + .string "__LDBL_DECIMAL_DIG__ 36" +.LASF451: + .string "INT64_MAX (__INT64_MAX__)" +.LASF1772: + .string "AFIO_EXTI6_SS BITS(8, 11)" +.LASF1187: + .string "DAC_WAVE_BIT_WIDTH_2 DWBW(1)" +.LASF412: + .string "_UINT32_T_DECLARED " +.LASF1277: + .string "DMA_CHXCTL_PRIO BITS(12,13)" +.LASF783: + .string "CAN_STAT(canx) REG32((canx) + 0x04U)" +.LASF1780: + .string "AFIO_EXTI14_SS BITS(8, 11)" +.LASF673: + .string "ADC_CHANNEL_13 ((uint8_t)0x0DU)" +.LASF1806: + .string "GPIO_EVENT_PIN_0 ((uint8_t)0x00U)" +.LASF2428: + .string "RTC_PSCL_PSC BITS(0,15)" +.LASF278: + .string "__FLT64X_HAS_DENORM__ 1" +.LASF2976: + .string "USART_CTL0_WL BIT(12)" +.LASF434: + .string "UINT8_MAX (__UINT8_MAX__)" +.LASF1114: + .string "CAN_INT_ERR CAN_INTEN_ERRIE" +.LASF1106: + .string "CAN_INT_RFO0 CAN_INTEN_RFOIE0" +.LASF1552: + .string "FMC_NSPC ((uint8_t)0xA5U)" +.LASF1016: + .string "TMDATA0_DB0(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF1293: + .string "DMA_INT_FLAG_FTF DMA_INTF_FTFIF" +.LASF992: + .string "CAN_FW_FW(regval) BIT(regval)" +.LASF1899: + .string "I2C_CTL0_START BIT(8)" +.LASF2296: + .string "RCU_PLL_MUL10 CFG0_PLLMF(8)" +.LASF1725: + .string "GPIO_BC_CR10 BIT(10)" +.LASF385: + .string "short +1" +.LASF1872: + .string "GPIO_TIMER4CH3_IREMAP ((uint32_t)0x00200001U)" +.LASF1601: + .string "GPIOC (GPIO_BASE + 0x00000800U)" +.LASF2807: + .string "TIMER_DMACFG_DMATC_10TRANSFER DMACFG_DMATC(9)" +.LASF701: + .string "OVSCR_OVSR(regval) (BITS(2,4) & ((uint32_t)(regval) << 2))" +.LASF3003: + .string "USART_REGIDX_BIT2(regidx,bitpos,regidx2,bitpos2) (((uint32_t)(regidx2) << 22) | (uint32_t)((bitpos2) << 16) | (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos)))" +.LASF2984: + .string "USART_CTL1_CKEN BIT(11)" +.LASF1013: + .string "FCTL_HBC1F(regval) (BITS(8,13) & ((uint32_t)(regval) << 8))" +.LASF624: + .string "ADC0_1_EXTTRIG_REGULAR_T1_CH1 CTL1_ETSRC(3)" +.LASF677: + .string "ADC_CHANNEL_17 ((uint8_t)0x11U)" +.LASF2235: + .string "RCU_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF2576: + .string "SPI_FLAG_TBE SPI_STAT_TBE" +.LASF1044: + .string "CAN_ERRN_4 ERR_ERRN(4U)" +.LASF466: + .string "INT_FAST64_MAX (__INT_FAST64_MAX__)" +.LASF1822: + .string "GPIO_PIN_SOURCE_0 ((uint8_t)0x00U)" +.LASF511: + .string "I2C_BASE (APB1_BUS_BASE + 0x00005400U)" +.LASF2989: + .string "USART_CTL2_IRLP BIT(2)" +.LASF2789: + .string "TIMER_DMACFG_DMATA_CAR DMACFG_DMATA(11)" +.LASF2783: + .string "TIMER_DMACFG_DMATA_SWEVG DMACFG_DMATA(5)" +.LASF2041: + .string "DBG_LOW_POWER_STANDBY DBG_CTL_STB_HOLD" +.LASF2839: + .string "TIMER_UPDATE_SRC_REGULAR TIMER_CTL0_UPS" +.LASF1763: + .string "AFIO_PCF0_SWJ_CFG BITS(24, 26)" +.LASF1554: + .string "OB_SPC_SPC ((uint32_t)0x000000FFU)" +.LASF510: + .string "USART_BASE (APB1_BUS_BASE + 0x00004400U)" +.LASF1029: + .string "GET_RFIFOMDATA0_DB1(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF999: + .string "CAN_BIT_POS0(val) (((uint32_t)(val) >> 6) & 0x1FU)" +.LASF2557: + .string "I2S_STD_PCMSHORT I2SCTL_I2SSTD(3)" +.LASF2113: + .string "RCU_CFG0_USBFSPSC BITS(22,23)" +.LASF1143: + .string "DAC_CTL_DBOFF0 BIT(1)" +.LASF1427: + .string "EXTI_FTEN_FTEN0 BIT(0)" +.LASF2243: + .string "CTL_REG_OFFSET 0x00U" +.LASF2982: + .string "USART_CTL1_CPH BIT(9)" +.LASF1380: + .string "EXTI_INTEN_INTEN10 BIT(10)" +.LASF1512: + .string "FMC_CTL_OBPG BIT(4)" +.LASF420: + .string "_UINTPTR_T_DECLARED " +.LASF1704: + .string "GPIO_BOP_CR5 BIT(21)" +.LASF1753: + .string "AFIO_PCF0_USART0_REMAP BIT(2)" +.LASF2300: + .string "RCU_PLL_MUL14 CFG0_PLLMF(12)" +.LASF1731: + .string "GPIO_LOCK_LK0 BIT(0)" +.LASF3139: + .string "_RISCV_CONST_H " +.LASF2533: + .string "I2S_AUDIOSAMPLE_11K ((uint32_t)11025U)" +.LASF2424: + .string "RTC_CTL_RSYNF BIT(3)" +.LASF1175: + .string "DAC_TRIGGER_T6_TRGO CTL_DTSEL(2)" +.LASF3083: + .string "_BSD_PTRDIFF_T_ " +.LASF1041: + .string "CAN_ERRN_1 ERR_ERRN(1U)" +.LASF2607: + .string "TIMER_PSC(timerx) REG32((timerx) + 0x28U)" +.LASF1907: + .string "I2C_CTL1_ERRIE BIT(8)" +.LASF2544: + .string "I2S_FRAMEFORMAT_DT24B_CH32B (I2SCTL_DTLEN(1) | SPI_I2SCTL_CHLEN)" +.LASF2146: + .string "RCU_APB2RST_ADC0RST BIT(9)" +.LASF2535: + .string "I2S_AUDIOSAMPLE_22K ((uint32_t)22050U)" +.LASF2531: + .string "SPI_PSC_256 CTL0_PSC(7)" +.LASF50: + .string "__INT_LEAST16_TYPE__ short int" +.LASF2437: + .string "RTC_INT_OVERFLOW RTC_INTEN_OVIE" +.LASF1849: + .string "GPIO_PIN_11 BIT(11)" +.LASF1130: + .string "DAC_SWT REG32(DAC + 0x04U)" +.LASF2350: + .string "RCU_PREDV0_DIV11 CFG1_PREDV0(10)" +.LASF2096: + .string "RCU_CTL_HXTALBPS BIT(18)" +.LASF668: + .string "ADC_CHANNEL_8 ((uint8_t)0x08U)" +.LASF2555: + .string "I2S_STD_MSB I2SCTL_I2SSTD(1)" +.LASF305: + .string "__riscv_atomic 1" +.LASF3179: + .string "short int" +.LASF1856: + .string "GPIO_I2C0_REMAP ((uint32_t)0x00000002U)" +.LASF550: + .string "ADC_OVSCR(adcx) REG32((adcx) + 0x80U)" +.LASF1229: + .string "DMA_INTF(dmax) REG32((dmax) + 0x00U)" +.LASF2131: + .string "RCU_INT_PLL2STBIE BIT(14)" +.LASF1890: + .string "I2C_RT(i2cx) REG32((i2cx) + 0x20U)" +.LASF2585: + .string "I2S_FLAG_TXURERR SPI_STAT_TXURERR" +.LASF2578: + .string "SPI_FLAG_CONFERR SPI_STAT_CONFERR" +.LASF1341: + .string "EXMC_SNCTL_NREN BIT(6)" +.LASF1440: + .string "EXTI_FTEN_FTEN13 BIT(13)" +.LASF1641: + .string "GPIO_CTL1_MD11 BITS(12, 13)" +.LASF547: + .string "ADC_IDATA2(adcx) REG32((adcx) + 0x44U)" +.LASF349: + .string "__GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))" +.LASF2655: + .string "TIMER_DMAINTEN_CH2DEN BIT(11)" +.LASF1922: + .string "I2C_STAT0_ADD10SEND BIT(3)" +.LASF2757: + .string "TIMER_FLAG_CH0 TIMER_INTF_CH0IF" +.LASF2116: + .string "RCU_CFG0_PLLMF_4 BIT(29)" +.LASF227: + .string "__FLT64_DECIMAL_DIG__ 17" +.LASF898: + .string "CAN_STAT_LASTRX BIT(10)" +.LASF2279: + .string "RCU_CKADC_CKAPB2_DIV4 ((uint32_t)0x00000001U)" +.LASF2995: + .string "USART_CTL2_RTSEN BIT(8)" +.LASF1323: + .string "DMA_MEMORY_TO_MEMORY_ENABLE ((uint32_t)0x00000001U)" +.LASF1833: + .string "GPIO_PIN_SOURCE_11 ((uint8_t)0x0BU)" +.LASF758: + .string "BKP_OCTL_RCCV BITS(0,6)" +.LASF1257: + .string "DMA_CH6PADDR(dmax) REG32((dmax) + 0x88U)" +.LASF761: + .string "BKP_OCTL_ROSEL BIT(9)" +.LASF1967: + .string "I2C_SCLSTRETCH_ENABLE ((uint32_t)0x00000000U)" +.LASF794: + .string "CAN_TMI1(canx) REG32((canx) + 0x190U)" +.LASF464: + .string "UINT_FAST32_MAX (__UINT_FAST32_MAX__)" +.LASF665: + .string "ADC_CHANNEL_5 ((uint8_t)0x05U)" +.LASF531: + .string "ADC_CTL0(adcx) REG32((adcx) + 0x04U)" +.LASF1236: + .string "DMA_CH1CNT(dmax) REG32((dmax) + 0x20U)" +.LASF945: + .string "CAN_ERR_PERR BIT(1)" +.LASF2375: + .string "RCU_PLL1_MUL9 CFG1_PLL1MF(7)" +.LASF926: + .string "CAN_RFIFO1_RFL1 BITS(0,1)" +.LASF40: + .string "__SIG_ATOMIC_TYPE__ int" +.LASF3049: + .string "CLT2_RTSEN(regval) (BIT(8) & ((uint32_t)(regval) << 8))" +.LASF957: + .string "CAN_TMI_FT BIT(1)" +.LASF2144: + .string "RCU_APB2RST_PDRST BIT(5)" +.LASF1055: + .string "CAN_BT_SJW_3TQ ((uint8_t)0x02U)" +.LASF2168: + .string "RCU_APB1RST_BKPIRST BIT(27)" +.LASF2768: + .string "TIMER_DMA_UPD ((uint16_t)TIMER_DMAINTEN_UPDEN)" +.LASF450: + .string "INT64_MIN (-__INT64_MAX__ - 1)" +.LASF641: + .string "ADC_SAMPLETIME_13POINT5 SAMPTX_SPT(2)" +.LASF1215: + .string "DAC_TRIANGLE_AMPLITUDE_3 DAC_WAVE_BIT_WIDTH_2" +.LASF2211: + .string "RCU_BDCTL_LXTALBPS BIT(2)" +.LASF812: + .string "CAN_FSCFG(canx) REG32((canx) + 0x20CU)" +.LASF2475: + .string "SPI_CTL1_NSSDRV BIT(2)" +.LASF3155: + .string "ECLIC_INT_ATTR_TRIG_NEG 0x04" +.LASF2301: + .string "RCU_PLL_MUL6_5 CFG0_PLLMF(13)" +.LASF44: + .string "__INT64_TYPE__ long long int" +.LASF903: + .string "CAN_TSTAT_MTE0 BIT(3)" +.LASF638: + .string "SAMPTX_SPT(regval) (BITS(0,2) & ((uint32_t)(regval) << 0))" +.LASF1261: + .string "DMA_INTF_HTFIF BIT(2)" +.LASF2575: + .string "SPI_FLAG_RBNE SPI_STAT_RBNE" +.LASF2912: + .string "TIMER_TRI_OUT_SRC_O0CPRE CTL1_MMC(4)" +.LASF62: + .string "__UINT_FAST16_TYPE__ unsigned int" +.LASF2805: + .string "TIMER_DMACFG_DMATC_8TRANSFER DMACFG_DMATC(7)" +.LASF3134: + .string "TIMER_MTIME_size 0x8" +.LASF1956: + .string "I2C_SMBUSMODE_ENABLE I2C_CTL0_SMBEN" +.LASF363: + .string "__have_long32 1" +.LASF1336: + .string "EXMC_SNWTCFG0 REG32(EXMC + 0x104U)" +.LASF1240: + .string "DMA_CH2CNT(dmax) REG32((dmax) + 0x34U)" +.LASF3099: + .string "_BSD_SIZE_T_DEFINED_ " +.LASF1099: + .string "CAN_FILTER_MASK_16BITS ((uint32_t)0x0000FFFFU)" +.LASF800: + .string "CAN_TMDATA02(canx) REG32((canx) + 0x1A8U)" +.LASF2181: + .string "RCU_APB2EN_PCEN BIT(4)" +.LASF1855: + .string "GPIO_SPI0_REMAP ((uint32_t)0x00000001U)" +.LASF2077: + .string "RCU_CTL REG32(RCU + 0x00U)" +.LASF1963: + .string "I2C_ACKPOS_NEXT ((uint32_t)0x00000000U)" +.LASF947: + .string "CAN_ERR_ERRN BITS(4,6)" +.LASF3190: + .string "uint32_t" +.LASF869: + .string "CAN_F26DATA1(canx) REG32((canx) + 0x314U)" +.LASF3037: + .string "CTL1_CPH(regval) (BIT(9) & ((uint32_t)(regval) << 9))" +.LASF1976: + .string "I2C_DMALST_OFF ((uint32_t)0x00000000U)" +.LASF400: + .string "__LEAST8 \"hh\"" +.LASF1567: + .string "OB_WP_5 ((uint32_t)0x00000020U)" +.LASF204: + .string "__FLT16_HAS_INFINITY__ 1" +.LASF1262: + .string "DMA_INTF_ERRIF BIT(3)" +.LASF1148: + .string "DAC_CTL_DDMAEN0 BIT(12)" +.LASF2132: + .string "RCU_INT_IRC40KSTBIC BIT(16)" +.LASF1194: + .string "DAC_WAVE_BIT_WIDTH_9 DWBW(8)" +.LASF124: + .string "__INT_FAST8_MAX__ 0x7fffffff" +.LASF327: + .string "RT_USING_LIBC 1" +.LASF2323: + .string "RCU_CKUSB_CKPLL_DIV2 CFG0_USBPSC(3)" +.LASF2765: + .string "TIMER_FLAG_CH1O TIMER_INTF_CH1OF" +.LASF2710: + .string "TIMER_CHCTL2_CH0NP BIT(3)" +.LASF813: + .string "CAN_FAFIFO(canx) REG32((canx) + 0x214U)" +.LASF2592: + .string "TIMER2 (TIMER_BASE + 0x00000400U)" +.LASF1750: + .string "AFIO_EC_EOE BIT(7)" +.LASF2772: + .string "TIMER_DMA_CH3D ((uint16_t)TIMER_DMAINTEN_CH3DEN)" +.LASF39: + .string "__CHAR32_TYPE__ long unsigned int" +.LASF1986: + .string "DATA_RECV(regval) GET_BITS((uint32_t)(regval), 0, 7)" +.LASF2570: + .string "SPI_I2S_INT_FLAG_RXORERR ((uint8_t)0x02U)" +.LASF1155: + .string "DAC_CTL_DDMAEN1 BIT(28)" +.LASF1405: + .string "EXTI_EVEN_EVEN16 BIT(16)" +.LASF1393: + .string "EXTI_EVEN_EVEN4 BIT(4)" +.LASF1062: + .string "CAN_BT_BS1_6TQ ((uint8_t)0x05U)" +.LASF2832: + .string "TIMER_COUNTER_DOWN ((uint16_t)TIMER_CTL0_DIR)" +.LASF294: + .string "__GCC_ATOMIC_LONG_LOCK_FREE 2" +.LASF2897: + .string "TIMER_IC_PSC_DIV8 ((uint16_t)0x000CU)" +.LASF25: + .string "__BIGGEST_ALIGNMENT__ 16" +.LASF2127: + .string "RCU_INT_IRC8MSTBIE BIT(10)" +.LASF2904: + .string "TIMER_SMCFG_TRGSEL_CI0FE0 SMCFG_TRGSEL(5)" +.LASF859: + .string "CAN_F16DATA1(canx) REG32((canx) + 0x2C4U)" +.LASF639: + .string "ADC_SAMPLETIME_1POINT5 SAMPTX_SPT(0)" +.LASF2665: + .string "TIMER_INTF_TRGIF BIT(6)" +.LASF1169: + .string "DACC_R8DH_DAC1_DH BITS(8,15)" +.LASF2574: + .string "SPI_I2S_INT_FLAG_FERR ((uint8_t)0x06U)" +.LASF2449: + .string "SPI2 (SPI_BASE + 0x00000400U)" +.LASF2773: + .string "TIMER_DMA_CMTD ((uint16_t)TIMER_DMAINTEN_CMTDEN)" +.LASF1319: + .string "DMA_PRIORITY_MEDIUM CHCTL_PRIO(1U)" +.LASF3210: + .string "SystemInit" +.LASF1695: + .string "GPIO_BOP_BOP12 BIT(12)" +.LASF2009: + .string "FWDGT_PSC_DIV256 ((uint8_t)PSC_PSC(6))" +.LASF3085: + .string "_GCC_PTRDIFF_T " +.LASF1711: + .string "GPIO_BOP_CR12 BIT(28)" +.LASF3055: + .string "CTL2_IRLP(regval) (BIT(2) & ((uint32_t)(regval) << 2))" +.LASF1655: + .string "GPIO_ISTAT_ISTAT4 BIT(4)" +.LASF1460: + .string "EXTI_SWIEV_SWIEV14 BIT(14)" +.LASF2515: + .string "SPI_NSS_SOFT SPI_CTL0_SWNSSEN" +.LASF177: + .string "__LDBL_MIN_EXP__ (-16381)" +.LASF312: + .string "__riscv_arch_test 1" +.LASF2548: + .string "I2SCTL_I2SOPMOD(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF1082: + .string "CAN_MAILBOX1 ((uint8_t)0x01U)" +.LASF828: + .string "CAN_F13DATA0(canx) REG32((canx) + 0x2A8U)" +.LASF2286: + .string "PLLMF_4 RCU_CFG0_PLLMF_4" +.LASF1533: + .string "FMC_BIT_POS1(val) ((uint32_t)(val) & 0x1FU)" +.LASF386: + .string "__int20 +2" +.LASF342: + .string "_MACHINE__DEFAULT_TYPES_H " +.LASF551: + .string "ADC_STAT_WDE BIT(0)" +.LASF1913: + .string "I2C_SADDR0_ADDRESS BITS(1,7)" +.LASF2518: + .string "SPI_ENDIAN_LSB SPI_CTL0_LF" +.LASF1662: + .string "GPIO_ISTAT_ISTAT11 BIT(11)" +.LASF2480: + .string "SPI_CTL1_TBEIE BIT(7)" +.LASF1829: + .string "GPIO_PIN_SOURCE_7 ((uint8_t)0x07U)" +.LASF1490: + .string "FMC_STAT REG32((FMC) + 0x0CU)" +.LASF2400: + .string "RCU_I2S2SRC_CKPLL2_MUL2 RCU_CFG1_I2S2SEL" +.LASF2637: + .string "TIMER_SMCFG_SMC BITS(0,2)" +.LASF626: + .string "ADC0_1_EXTTRIG_REGULAR_T3_CH3 CTL1_ETSRC(5)" +.LASF1357: + .string "EXMC_MEMORY_TYPE_PSRAM SNCTL_NRTP(1)" +.LASF2540: + .string "I2S_AUDIOSAMPLE_192K ((uint32_t)192000U)" +.LASF1811: + .string "GPIO_EVENT_PIN_5 ((uint8_t)0x05U)" +.LASF799: + .string "CAN_TMP2(canx) REG32((canx) + 0x1A4U)" +.LASF929: + .string "CAN_RFIFO1_RFD1 BIT(5)" +.LASF879: + .string "CAN_RFIFOMDATA0(canx,bank) REG32((canx) + 0x1B8U + ((bank) * 0x10U))" +.LASF2198: + .string "RCU_APB1EN_USART1EN BIT(17)" +.LASF2966: + .string "USART_CTL0_REN BIT(2)" +.LASF1296: + .string "DMA_FLAG_G DMA_INTF_GIF" +.LASF1841: + .string "GPIO_PIN_3 BIT(3)" +.LASF805: + .string "CAN_RFIFOMDATA10(canx) REG32((canx) + 0x1BCU)" +.LASF1019: + .string "TMDATA0_DB3(regval) (BITS(24,31) & ((uint32_t)(regval) << 24))" +.LASF2402: + .string "RCU_DEEPSLEEP_V_1_2 DSV_DSLPVS(0)" +.LASF166: + .string "__DBL_DECIMAL_DIG__ 17" +.LASF2611: + .string "TIMER_CH1CV(timerx) REG32((timerx) + 0x38U)" +.LASF135: + .string "__UINT_FAST64_MAX__ 0xffffffffffffffffULL" +.LASF1926: + .string "I2C_STAT0_BERR BIT(8)" +.LASF2334: + .string "BDCTL_RTCSRC(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF2011: + .string "FWDGT_WRITEACCESS_DISABLE ((uint16_t)0x0000U)" +.LASF1415: + .string "EXTI_RTEN_RTEN7 BIT(7)" +.LASF1182: + .string "DAC_WAVE_DISABLE CTL_DWM(0)" +.LASF2813: + .string "TIMER_DMACFG_DMATC_16TRANSFER DMACFG_DMATC(15)" +.LASF1637: + .string "GPIO_CTL1_MD9 BITS(4, 5)" +.LASF2537: + .string "I2S_AUDIOSAMPLE_44K ((uint32_t)44100U)" +.LASF1760: + .string "AFIO_PCF0_CAN_REMAP BITS(13, 14)" +.LASF2565: + .string "SPI_I2S_INT_TBE ((uint8_t)0x00U)" +.LASF1645: + .string "GPIO_CTL1_MD13 BITS(20, 21)" +.LASF323: + .string "HAVE_CCONFIG_H 1" +.LASF46: + .string "__UINT16_TYPE__ short unsigned int" +.LASF941: + .string "CAN_INTEN_ERRIE BIT(15)" +.LASF430: + .string "INTPTR_MAX (__INTPTR_MAX__)" +.LASF3162: + .string "BWEI_HANDLER eclic_bwei_handler" +.LASF2978: + .string "USART_CTL1_ADDR BITS(0,3)" +.LASF71: + .string "__LONG_MAX__ 0x7fffffffL" +.LASF2558: + .string "I2S_STD_PCMLONG (I2SCTL_I2SSTD(3) | SPI_I2SCTL_PCMSMOD)" +.LASF2729: + .string "TIMER_CCHP_DTCFG BITS(0,7)" +.LASF1975: + .string "I2C_DMALST_ON I2C_CTL1_DMALST" +.LASF487: + .string "UINT64_C(x) __UINT64_C(x)" +.LASF2340: + .string "RCU_PREDV0_DIV1 CFG1_PREDV0(0)" +.LASF296: + .string "__GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1" +.LASF2639: + .string "TIMER_SMCFG_MSM BIT(7)" +.LASF106: + .string "__INT_LEAST8_WIDTH__ 8" +.LASF2192: + .string "RCU_APB1EN_TIMER4EN BIT(3)" +.LASF55: + .string "__UINT_LEAST32_TYPE__ long unsigned int" +.LASF2028: + .string "DBG_CTL_TIMER0_HOLD BIT(10)" +.LASF1094: + .string "CAN_MODE_SLEEP ((uint8_t)0x04U)" +.LASF961: + .string "CAN_TMP_DLENC BITS(0,3)" +.LASF1084: + .string "CAN_NOMAILBOX ((uint8_t)0x03U)" +.LASF1344: + .string "EXMC_SNCTL_NRWTEN BIT(13)" +.LASF1794: + .string "GPIO_OSPEED_2MHZ ((uint8_t)0x02U)" +.LASF1132: + .string "DAC0_L12DH REG32(DAC + 0x0CU)" +.LASF2746: + .string "TIMER_INT_TRG TIMER_DMAINTEN_TRGIE" +.LASF361: + .string "__EXP(x) __ ##x ##__" +.LASF1521: + .string "FMC_OBSTAT_SPC BIT(1)" +.LASF2155: + .string "RCU_APB1RST_TIMER5RST BIT(4)" +.LASF2841: + .string "TIMER_ROS_STATE_ENABLE ((uint16_t)TIMER_CCHP_ROS)" +.LASF283: + .string "__GNUC_STDC_INLINE__ 1" +.LASF426: + .string "__int_fast16_t_defined 1" +.LASF1610: + .string "GPIO_BC(gpiox) REG32((gpiox) + 0x14U)" +.LASF1079: + .string "CAN_BT_BS2_7TQ ((uint8_t)0x06U)" +.LASF284: + .string "__NO_INLINE__ 1" +.LASF2141: + .string "RCU_APB2RST_PARST BIT(2)" +.LASF1951: + .string "I2C_BIT_POS2(val) (((uint32_t)(val) & 0x1F0000U) >> 16)" +.LASF331: + .string "__O volatile" +.LASF2820: + .string "TIMER_EVENT_SRC_CH3G ((uint16_t)0x0010U)" +.LASF566: + .string "ADC_CTL0_SYNCM BITS(16,19)" +.LASF1954: + .string "I2C_STAT1_REG_OFFSET 0x18U" +.LASF868: + .string "CAN_F25DATA1(canx) REG32((canx) + 0x30CU)" +.LASF2634: + .string "TIMER_CTL1_ISO2 BIT(12)" +.LASF969: + .string "CAN_TMDATA1_DB5 BITS(8,15)" +.LASF2476: + .string "SPI_CTL1_NSSP BIT(3)" +.LASF538: + .string "ADC_IOFF3(adcx) REG32((adcx) + 0x20U)" +.LASF2668: + .string "TIMER_INTF_CH1OF BIT(10)" +.LASF2735: + .string "TIMER_CCHP_OAEN BIT(14)" +.LASF1432: + .string "EXTI_FTEN_FTEN5 BIT(5)" +.LASF198: + .string "__FLT16_MAX__ 6.55040000000000000000000000000000000e+4F16" +.LASF362: + .string "__have_longlong64 1" +.LASF851: + .string "CAN_F8DATA1(canx) REG32((canx) + 0x284U)" +.LASF894: + .string "CAN_STAT_WUIF BIT(3)" +.LASF2987: + .string "USART_CTL2_ERRIE BIT(0)" +.LASF1385: + .string "EXTI_INTEN_INTEN15 BIT(15)" +.LASF2452: + .string "SPI_STAT(spix) REG32((spix) + 0x08U)" +.LASF403: + .string "__LEAST64 \"ll\"" +.LASF195: + .string "__FLT16_MAX_EXP__ 16" +.LASF1947: + .string "I2C_REG_VAL(i2cx,offset) (REG32((i2cx) + (((uint32_t)(offset) & 0xFFFFU) >> 6)))" +.LASF1640: + .string "GPIO_CTL1_CTL10 BITS(10, 11)" +.LASF1058: + .string "CAN_BT_BS1_2TQ ((uint8_t)0x01U)" +.LASF1183: + .string "DAC_WAVE_MODE_LFSR CTL_DWM(1)" +.LASF2447: + .string "SPI0 (SPI_BASE + 0x0000F800U)" +.LASF1146: + .string "DAC_CTL_DWM0 BITS(6,7)" +.LASF2443: + .string "RTC_FLAG_OVERFLOW RTC_CTL_OVIF" +.LASF2599: + .string "TIMER_SMCFG(timerx) REG32((timerx) + 0x08U)" +.LASF2964: + .string "USART_CTL0_SBKCMD BIT(0)" +.LASF703: + .string "ADC_OVERSAMPLING_RATIO_MUL4 OVSCR_OVSR(1)" +.LASF1315: + .string "DMA_MEMORY_WIDTH_16BIT CHCTL_MWIDTH(1U)" +.LASF2008: + .string "FWDGT_PSC_DIV128 ((uint8_t)PSC_PSC(5))" +.LASF3070: + .string "WWDGT_CFG_PSC_DIV1 CFG_PSC(0)" +.LASF1502: + .string "FMC_WS_WSCNT BITS(0,2)" +.LASF2940: + .string "USART2 (USART_BASE+(0x00000400U))" +.LASF185: + .string "__LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L" +.LASF1174: + .string "DAC_TRIGGER_T2_TRGO CTL_DTSEL(1)" +.LASF1689: + .string "GPIO_BOP_BOP6 BIT(6)" +.LASF2722: + .string "TIMER_PSC_PSC BITS(0,15)" +.LASF1107: + .string "CAN_INT_RFNE1 CAN_INTEN_RFNEIE1" +.LASF820: + .string "CAN_F5DATA0(canx) REG32((canx) + 0x268U)" +.LASF2853: + .string "TIMER_CCHP_PROT_2 CCHP_PROT(3)" +.LASF387: + .string "__int20__ +2" +.LASF1309: + .string "CHCTL_PWIDTH(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF1904: + .string "I2C_CTL0_SALT BIT(13)" +.LASF1920: + .string "I2C_STAT0_ADDSEND BIT(1)" +.LASF858: + .string "CAN_F15DATA1(canx) REG32((canx) + 0x2BCU)" +.LASF1210: + .string "DATA_ALIGN(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF322: + .string "NO_INIT 1" +.LASF1520: + .string "FMC_OBSTAT_OBERR BIT(0)" +.LASF2305: + .string "RCU_PLL_MUL19 (PLLMF_4 | CFG0_PLLMF(2))" +.LASF1569: + .string "OB_WP_7 ((uint32_t)0x00000080U)" +.LASF617: + .string "ADC_DATAALIGN_RIGHT ((uint32_t)0x00000000U)" +.LASF2254: + .string "RCU_SCSS_HXTAL CFG0_SCSS(1)" +.LASF1721: + .string "GPIO_BC_CR6 BIT(6)" +.LASF1445: + .string "EXTI_FTEN_FTEN18 BIT(18)" +.LASF3199: + .string "predv0" +.LASF3200: + .string "predv1" +.LASF1594: + .string "OB_WP_ALL ((uint32_t)0xFFFFFFFFU)" +.LASF1497: + .string "OB_USER REG16((OB) + 0x02U)" +.LASF2534: + .string "I2S_AUDIOSAMPLE_16K ((uint32_t)16000U)" +.LASF2670: + .string "TIMER_INTF_CH3OF BIT(12)" +.LASF2342: + .string "RCU_PREDV0_DIV3 CFG1_PREDV0(2)" +.LASF194: + .string "__FLT16_MIN_10_EXP__ (-4)" +.LASF604: + .string "ADC_SCAN_MODE ADC_CTL0_SM" +.LASF1901: + .string "I2C_CTL0_ACKEN BIT(10)" +.LASF2070: + .string "PMU_LDO_LOWPOWER PMU_CTL_LDOLP" +.LASF2134: + .string "RCU_INT_IRC8MSTBIC BIT(18)" +.LASF2172: + .string "RCU_AHBEN_DMA1EN BIT(1)" +.LASF2415: + .string "RTC_CNTL REG32(RTC + 0x1CU)" +.LASF2016: + .string "FWDGT_FLAG_PUD FWDGT_STAT_PUD" +.LASF1766: + .string "AFIO_EXTI0_SS BITS(0, 3)" +.LASF3009: + .string "USART_CTL2_REG_OFFSET (0x00000014U)" +.LASF413: + .string "__int32_t_defined 1" +.LASF11: + .string "__ATOMIC_ACQUIRE 2" +.LASF2160: + .string "RCU_APB1RST_USART1RST BIT(17)" +.LASF539: + .string "ADC_WDHT(adcx) REG32((adcx) + 0x24U)" +.LASF3035: + .string "USART_CLEN_NONE CTL1_CLEN(0)" +.LASF175: + .string "__LDBL_MANT_DIG__ 113" +.LASF2549: + .string "I2S_MODE_SLAVETX I2SCTL_I2SOPMOD(0)" +.LASF2626: + .string "TIMER_CTL1_CCUC BIT(2)" +.LASF2562: + .string "SPI_DMA_RECEIVE ((uint8_t)0x01U)" +.LASF223: + .string "__FLT64_MIN_EXP__ (-1021)" +.LASF356: + .string "__MISC_VISIBLE 0" +.LASF18: + .string "__SIZEOF_LONG_LONG__ 8" +.LASF548: + .string "ADC_IDATA3(adcx) REG32((adcx) + 0x48U)" +.LASF904: + .string "CAN_TSTAT_MST0 BIT(7)" +.LASF829: + .string "CAN_F14DATA0(canx) REG32((canx) + 0x2B0U)" +.LASF1478: + .string "EXTI_PD_PD13 BIT(13)" +.LASF1556: + .string "OB_USER_USER ((uint32_t)0x00FF0000U)" +.LASF214: + .string "__FLT32_NORM_MAX__ 3.40282346638528859811704183484516925e+38F32" +.LASF922: + .string "CAN_RFIFO0_RFL0 BITS(0,1)" +.LASF1307: + .string "DMA_MEMORY_INCREASE_DISABLE ((uint8_t)0x00U)" +.LASF232: + .string "__FLT64_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F64" +.LASF2290: + .string "RCU_PLL_MUL4 CFG0_PLLMF(2)" +.LASF2354: + .string "RCU_PREDV0_DIV15 CFG1_PREDV0(14)" +.LASF871: + .string "CAN_TMI(canx,bank) REG32((canx) + 0x180U + ((bank) * 0x10U))" +.LASF128: + .string "__INT_FAST32_MAX__ 0x7fffffff" +.LASF2220: + .string "RCU_RSTSCK_SWRSTF BIT(28)" +.LASF2304: + .string "RCU_PLL_MUL18 (PLLMF_4 | CFG0_PLLMF(1))" +.LASF1510: + .string "FMC_CTL_PER BIT(1)" +.LASF853: + .string "CAN_F10DATA1(canx) REG32((canx) + 0x294U)" +.LASF1903: + .string "I2C_CTL0_PECTRANS BIT(12)" +.LASF2712: + .string "TIMER_CHCTL2_CH1P BIT(5)" +.LASF3023: + .string "CTL0_WL(regval) (BIT(12) & ((uint32_t)(regval) << 12))" +.LASF282: + .string "__USER_LABEL_PREFIX__ " +.LASF1421: + .string "EXTI_RTEN_RTEN13 BIT(13)" +.LASF1207: + .string "DAC_LFSR_BITS9_0 DAC_WAVE_BIT_WIDTH_10" +.LASF532: + .string "ADC_CTL1(adcx) REG32((adcx) + 0x08U)" +.LASF1681: + .string "GPIO_OCTL_OCTL14 BIT(14)" +.LASF564: + .string "ADC_CTL0_DISIC BIT(12)" +.LASF1799: + .string "GPIO_EVENT_PORT_GPIOD ((uint8_t)0x03U)" +.LASF1066: + .string "CAN_BT_BS1_10TQ ((uint8_t)0x09U)" +.LASF1865: + .string "GPIO_TIMER1_FULL_REMAP ((uint32_t)0x00180300U)" +.LASF2248: + .string "CFG0_SCS(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF2318: + .string "RCU_PLL_MUL32 (PLLMF_4 | CFG0_PLLMF(15))" +.LASF1254: + .string "DMA_CH5MADDR(dmax) REG32((dmax) + 0x78U)" +.LASF274: + .string "__FLT64X_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F64x" +.LASF2993: + .string "USART_CTL2_DENR BIT(6)" +.LASF1499: + .string "OB_WP1 REG16((OB) + 0x0AU)" +.LASF1124: + .string "CRC_CTL_RST BIT(0)" +.LASF994: + .string "CAN_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF180: + .string "__LDBL_MAX_10_EXP__ 4932" +.LASF2219: + .string "RCU_RSTSCK_PORRSTF BIT(27)" +.LASF85: + .string "__WINT_WIDTH__ 32" +.LASF1239: + .string "DMA_CH2CTL(dmax) REG32((dmax) + 0x30U)" +.LASF3125: + .string "__need_NULL" +.LASF2792: + .string "TIMER_DMACFG_DMATA_CH1CV DMACFG_DMATA(14)" +.LASF1537: + .string "FMC_OBSTAT_REG_OFFSET 0x1CU" +.LASF2719: + .string "TIMER_CHCTL2_CH3EN BIT(12)" +.LASF1674: + .string "GPIO_OCTL_OCTL7 BIT(7)" +.LASF2659: + .string "TIMER_INTF_UPIF BIT(0)" +.LASF2082: + .string "RCU_AHBEN REG32(RCU + 0x14U)" +.LASF2166: + .string "RCU_APB1RST_CAN0RST BIT(25)" +.LASF541: + .string "ADC_RSQ0(adcx) REG32((adcx) + 0x2CU)" +.LASF2854: + .string "TIMER_BREAK_ENABLE ((uint16_t)TIMER_CCHP_BRKEN)" +.LASF2216: + .string "RCU_RSTSCK_IRC40KSTB BIT(1)" +.LASF2889: + .string "TIMER_IC_POLARITY_FALLING ((uint16_t)0x0002U)" +.LASF988: + .string "CAN_FCTL_HBC1F BITS(8,13)" +.LASF2406: + .string "GD32VF103_RTC_H " +.LASF273: + .string "__FLT64X_MAX__ 1.18973149535723176508575932662800702e+4932F64x" +.LASF2816: + .string "TIMER_EVENT_SRC_UPG ((uint16_t)0x0001U)" +.LASF2497: + .string "SPI_I2SCTL_I2SSTD BITS(4,5)" +.LASF525: + .string "USE_STDPERIPH_DRIVER " +.LASF2204: + .string "RCU_APB1EN_CAN0EN BIT(25)" +.LASF2303: + .string "RCU_PLL_MUL17 (PLLMF_4 | CFG0_PLLMF(0))" +.LASF924: + .string "CAN_RFIFO0_RFO0 BIT(4)" +.LASF2344: + .string "RCU_PREDV0_DIV5 CFG1_PREDV0(4)" +.LASF2943: + .string "USART0 (USART_BASE+(0x0000F400U))" +.LASF2106: + .string "RCU_CFG0_AHBPSC BITS(4,7)" +.LASF2285: + .string "RCU_PLLSRC_HXTAL RCU_CFG0_PLLSEL" +.LASF664: + .string "ADC_CHANNEL_4 ((uint8_t)0x04U)" +.LASF2367: + .string "RCU_PREDV1_DIV11 CFG1_PREDV1(10)" +.LASF1447: + .string "EXTI_SWIEV_SWIEV1 BIT(1)" +.LASF2246: + .string "CFG0_REG_OFFSET 0x04U" +.LASF102: + .string "__UINT32_MAX__ 0xffffffffUL" +.LASF2891: + .string "TIMER_IC_SELECTION_DIRECTTI ((uint16_t)0x0001U)" +.LASF1374: + .string "EXTI_INTEN_INTEN4 BIT(4)" +.LASF2152: + .string "RCU_APB1RST_TIMER2RST BIT(1)" +.LASF1757: + .string "AFIO_PCF0_TIMER1_REMAP BITS(8, 9)" +.LASF2293: + .string "RCU_PLL_MUL7 CFG0_PLLMF(5)" +.LASF605: + .string "ADC_INSERTED_CHANNEL_AUTO ADC_CTL0_ICA" +.LASF833: + .string "CAN_F18DATA0(canx) REG32((canx) + 0x2D0U)" +.LASF1164: + .string "DACC_R12DH_DAC0_DH BITS(0,11)" +.LASF1327: + .string "ECLIC_PRIGROUP_LEVEL1_PRIO3 1" +.LASF2771: + .string "TIMER_DMA_CH2D ((uint16_t)TIMER_DMAINTEN_CH2DEN)" +.LASF2273: + .string "RCU_APB2_CKAHB_DIV1 CFG0_APB2PSC(0)" +.LASF1131: + .string "DAC0_R12DH REG32(DAC + 0x08U)" +.LASF2679: + .string "TIMER_CHCTL0_CH0MS BITS(0,1)" +.LASF1910: + .string "I2C_CTL1_DMAON BIT(11)" +.LASF108: + .string "__INT16_C(c) c" +.LASF318: + .string "__riscv_zifencei 2000000" +.LASF275: + .string "__FLT64X_MIN__ 3.36210314311209350626267781732175260e-4932F64x" +.LASF528: + .string "ADC0 ADC_BASE" +.LASF1514: + .string "FMC_CTL_START BIT(6)" +.LASF1075: + .string "CAN_BT_BS2_3TQ ((uint8_t)0x02U)" +.LASF1361: + .string "EXMC_NWAIT_POLARITY_HIGH ((uint32_t)0x00000200U)" +.LASF2027: + .string "DBG_CTL_WWDGT_HOLD BIT(9)" +.LASF165: + .string "__DBL_MAX_10_EXP__ 308" +.LASF37: + .string "__UINTMAX_TYPE__ long long unsigned int" +.LASF2618: + .string "TIMER_CTL0_UPDIS BIT(1)" +.LASF572: + .string "ADC_CTL1_RSTCLB BIT(3)" +.LASF2357: + .string "RCU_PREDV1_DIV1 CFG1_PREDV1(0)" +.LASF1893: + .string "I2C_CTL0_SMBEN BIT(1)" +.LASF415: + .string "_UINT64_T_DECLARED " +.LASF503: + .string "AHB1_BUS_BASE ((uint32_t)0x40018000U)" +.LASF3020: + .string "CTL0_WM(regval) (BIT(11) & ((uint32_t)(regval) << 11))" +.LASF2391: + .string "RCU_PLL2_MUL14 CFG1_PLL2MF(12)" +.LASF507: + .string "WWDGT_BASE (APB1_BUS_BASE + 0x00002C00U)" +.LASF1468: + .string "EXTI_PD_PD3 BIT(3)" +.LASF3137: + .string "TIMER_FREQ ((uint32_t)SystemCoreClock/4)" +.LASF1454: + .string "EXTI_SWIEV_SWIEV8 BIT(8)" +.LASF1629: + .string "GPIO_CTL0_MD5 BITS(20, 21)" +.LASF1797: + .string "GPIO_EVENT_PORT_GPIOB ((uint8_t)0x01U)" +.LASF2177: + .string "RCU_AHBEN_USBFSEN BIT(12)" +.LASF965: + .string "CAN_TMDATA0_DB1 BITS(8,15)" +.LASF1803: + .string "GPIO_PORT_SOURCE_GPIOC ((uint8_t)0x02U)" +.LASF429: + .string "INTPTR_MIN (-__INTPTR_MAX__ - 1)" +.LASF1667: + .string "GPIO_OCTL_OCTL0 BIT(0)" +.LASF2932: + .string "TIMER_ETP_FALLING TIMER_SMCFG_ETP" +.LASF2025: + .string "DBG_CTL_STB_HOLD BIT(2)" +.LASF2823: + .string "TIMER_EVENT_SRC_BRKG ((uint16_t)0x0080U)" +.LASF1977: + .string "I2C_PEC_ENABLE I2C_CTL0_PECEN" +.LASF1965: + .string "I2C_DUADEN_DISABLE ((uint32_t)0x00000000U)" +.LASF2871: + .string "TIMER_OCN_IDLE_STATE_LOW ((uint16_t)0x0000U)" +.LASF56: + .string "__UINT_LEAST64_TYPE__ long long unsigned int" +.LASF1584: + .string "OB_WP_22 ((uint32_t)0x00400000U)" +.LASF1122: + .string "CRC_DATA_DATA BITS(0, 31)" +.LASF1959: + .string "I2C_RECEIVER ((uint32_t)0x00000001U)" +.LASF2100: + .string "RCU_CTL_PLL1EN BIT(26)" +.LASF241: + .string "__FLT128_MAX_10_EXP__ 4932" +.LASF1367: + .string "EXTI_FTEN REG32(EXTI + 0x0CU)" +.LASF2026: + .string "DBG_CTL_FWDGT_HOLD BIT(8)" +.LASF2991: + .string "USART_CTL2_NKEN BIT(4)" +.LASF1541: + .string "WS_WSCNT_0 WS_WSCNT(0)" +.LASF1282: + .string "DMA_FLAG_ADD(flag,shift) ((flag) << ((shift) * 4U))" +.LASF1743: + .string "GPIO_LOCK_LK12 BIT(12)" +.LASF682: + .string "ADC_INT_FLAG_EOC ADC_STAT_EOC" +.LASF51: + .string "__INT_LEAST32_TYPE__ long int" +.LASF865: + .string "CAN_F22DATA1(canx) REG32((canx) + 0x2F4U)" +.LASF2969: + .string "USART_CTL0_RBNEIE BIT(5)" +.LASF1589: + .string "OB_WP_27 ((uint32_t)0x08000000U)" +.LASF373: + .string "_SYS__INTSUP_H " +.LASF912: + .string "CAN_TSTAT_MAL2 BIT(18)" +.LASF2569: + .string "SPI_I2S_INT_FLAG_RBNE ((uint8_t)0x01U)" +.LASF3054: + .string "USART_CTS_DISABLE CLT2_CTSEN(0)" +.LASF2800: + .string "TIMER_DMACFG_DMATC_3TRANSFER DMACFG_DMATC(2)" +.LASF2346: + .string "RCU_PREDV0_DIV7 CFG1_PREDV0(6)" +.LASF2511: + .string "SPI_TRANSMODE_BDRECEIVE SPI_CTL0_BDEN" +.LASF2998: + .string "USART_GP_PSC BITS(0,7)" +.LASF798: + .string "CAN_TMI2(canx) REG32((canx) + 0x1A0U)" +.LASF2135: + .string "RCU_INT_HXTALSTBIC BIT(19)" +.LASF2468: + .string "SPI_CTL0_FF16 BIT(11)" +.LASF809: + .string "CAN_RFIFOMDATA11(canx) REG32((canx) + 0x1CCU)" +.LASF2080: + .string "RCU_APB2RST REG32(RCU + 0x0CU)" +.LASF1588: + .string "OB_WP_26 ((uint32_t)0x04000000U)" +.LASF2109: + .string "RCU_CFG0_ADCPSC BITS(14,15)" +.LASF1196: + .string "DAC_WAVE_BIT_WIDTH_11 DWBW(10)" +.LASF389: + .string "long +4" +.LASF1265: + .string "DMA_INTC_HTFIFC BIT(2)" +.LASF1071: + .string "CAN_BT_BS1_15TQ ((uint8_t)0x0EU)" +.LASF3006: + .string "USART_STAT_REG_OFFSET (0x00000000U)" +.LASF2147: + .string "RCU_APB2RST_ADC1RST BIT(10)" +.LASF2251: + .string "RCU_CKSYSSRC_PLL CFG0_SCS(2)" +.LASF1896: + .string "I2C_CTL0_PECEN BIT(5)" +.LASF159: + .string "__FLT_HAS_QUIET_NAN__ 1" +.LASF630: + .string "ADC0_1_EXTTRIG_INSERTED_T0_TRGO CTL1_ETSIC(0)" +.LASF2222: + .string "RCU_RSTSCK_WWDGTRSTF BIT(30)" +.LASF2941: + .string "UART3 (USART_BASE+(0x00000800U))" +.LASF2039: + .string "DBG_LOW_POWER_SLEEP DBG_CTL_SLP_HOLD" +.LASF589: + .string "ADC_ISQ_IL BITS(20,21)" +.LASF445: + .string "INT32_MAX (__INT32_MAX__)" +.LASF2373: + .string "CFG1_PLL1MF(regval) (BITS(8,11) & ((uint32_t)(regval) << 8))" +.LASF680: + .string "ADC_INT_EOIC ADC_STAT_EOIC" +.LASF2844: + .string "TIMER_IOS_STATE_DISABLE ((uint16_t)0x0000U)" +.LASF1: + .string "__STDC_VERSION__ 201710L" +.LASF2763: + .string "TIMER_FLAG_BRK TIMER_INTF_BRKIF" +.LASF911: + .string "CAN_TSTAT_MTFNERR2 BIT(17)" +.LASF2359: + .string "RCU_PREDV1_DIV3 CFG1_PREDV1(2)" +.LASF2850: + .string "TIMER_CCHP_PROT_OFF CCHP_PROT(0)" +.LASF3201: + .string "pll1mf" +.LASF657: + .string "ADC_INSERTED_CHANNEL_1 ((uint8_t)0x01U)" +.LASF136: + .string "__INTPTR_MAX__ 0x7fffffff" +.LASF888: + .string "CAN_CTL_TTC BIT(7)" +.LASF1295: + .string "DMA_INT_FLAG_ERR DMA_INTF_ERRIF" +.LASF2232: + .string "RCU_DSV_DSLPVS BITS(0,1)" +.LASF2057: + .string "CTL_LVDT(regval) (BITS(5,7)&((uint32_t)(regval) << 5))" +.LASF224: + .string "__FLT64_MIN_10_EXP__ (-307)" +.LASF1745: + .string "GPIO_LOCK_LK14 BIT(14)" +.LASF621: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH0 CTL1_ETSRC(0)" +.LASF2649: + .string "TIMER_DMAINTEN_CMTIE BIT(5)" +.LASF2107: + .string "RCU_CFG0_APB1PSC BITS(8,10)" +.LASF606: + .string "CTL0_SYNCM(regval) (BITS(16,19) & ((uint32_t)(regval) << 16))" +.LASF1530: + .string "FMC_REGIDX_BITS(regidx,bitpos0,bitpos1) (((uint32_t)(regidx) << 12) | ((uint32_t)(bitpos0) << 6) | (uint32_t)(bitpos1))" +.LASF1754: + .string "AFIO_PCF0_USART1_REMAP BIT(3)" +.LASF2510: + .string "SPI_TRANSMODE_RECEIVEONLY SPI_CTL0_RO" +.LASF1820: + .string "GPIO_EVENT_PIN_14 ((uint8_t)0x0EU)" +.LASF2849: + .string "CCHP_PROT(regval) ((uint16_t)(BITS(8, 9) & ((uint32_t)(regval) << 8U)))" +.LASF3007: + .string "USART_CTL0_REG_OFFSET (0x0000000CU)" +.LASF393: + .string "__INT16 \"h\"" +.LASF2754: + .string "TIMER_INT_FLAG_TRG TIMER_INT_TRG" +.LASF2325: + .string "RCU_CKOUT0SRC_NONE CFG0_CKOUT0SEL(0)" +.LASF956: + .string "CAN_TMI_TEN BIT(0)" +.LASF3180: + .string "__uint8_t" +.LASF167: + .string "__DBL_MAX__ ((double)1.79769313486231570814527423731704357e+308L)" +.LASF2464: + .string "SPI_CTL0_LF BIT(7)" +.LASF600: + .string "ADC_FLAG_EOIC ADC_STAT_EOIC" +.LASF1128: + .string "DAC1 (1U)" +.LASF679: + .string "ADC_INT_EOC ADC_STAT_EOC" +.LASF3129: + .string "TIMER_MSIP 0xFFC" +.LASF3123: + .string "NULL" +.LASF781: + .string "CAN1 (CAN0 + 0x00000400U)" +.LASF1346: + .string "EXMC_SNTCFG_ASET BITS(0,3)" +.LASF117: + .string "__UINT8_C(c) c" +.LASF2223: + .string "RCU_RSTSCK_LPRSTF BIT(31)" +.LASF330: + .string "__I volatile const" +.LASF1891: + .string "I2C_FMPCFG(i2cx) REG32((i2cx) + 0x90U)" +.LASF1002: + .string "TSTAT_REG_OFFSET ((uint8_t)0x08U)" +.LASF2847: + .string "TIMER_OUTAUTO_ENABLE ((uint16_t)TIMER_CCHP_OAEN)" +.LASF935: + .string "CAN_INTEN_RFFIE1 BIT(5)" +.LASF2266: + .string "CFG0_APB1PSC(regval) (BITS(8,10) & ((uint32_t)(regval) << 8))" +.LASF1713: + .string "GPIO_BOP_CR14 BIT(30)" +.LASF648: + .string "WDHT_WDHT(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF3105: + .string "__need_size_t" +.LASF1807: + .string "GPIO_EVENT_PIN_1 ((uint8_t)0x01U)" +.LASF228: + .string "__FLT64_MAX__ 1.79769313486231570814527423731704357e+308F64" +.LASF2253: + .string "RCU_SCSS_IRC8M CFG0_SCSS(0)" +.LASF176: + .string "__LDBL_DIG__ 33" +.LASF1092: + .string "CAN_MODE_INITIALIZE ((uint8_t)0x01U)" +.LASF2986: + .string "USART_CTL1_LMEN BIT(14)" +.LASF34: + .string "__WCHAR_TYPE__ int" +.LASF977: + .string "CAN_RFIFOMP_FI BITS(8,15)" +.LASF1882: + .string "I2C_CTL0(i2cx) REG32((i2cx) + 0x00U)" +.LASF845: + .string "CAN_F2DATA1(canx) REG32((canx) + 0x254U)" +.LASF1636: + .string "GPIO_CTL1_CTL8 BITS(2, 3)" +.LASF1363: + .string "EXTI EXTI_BASE" +.LASF2038: + .string "DBG_CTL_CAN1_HOLD BIT(21)" +.LASF2002: + .string "PSC_PSC(regval) (BITS(0,2) & ((uint32_t)(regval) << 0))" +.LASF1779: + .string "AFIO_EXTI13_SS BITS(4, 7)" +.LASF1397: + .string "EXTI_EVEN_EVEN8 BIT(8)" +.LASF324: + .string "GD32VF103V_EVAL 1" +.LASF1337: + .string "EXMC_SNCTL_NRBKEN BIT(0)" +.LASF2024: + .string "DBG_CTL_DSLP_HOLD BIT(1)" +.LASF642: + .string "ADC_SAMPLETIME_28POINT5 SAMPTX_SPT(3)" +.LASF2123: + .string "RCU_INT_PLL2STBIF BIT(6)" +.LASF84: + .string "__WCHAR_WIDTH__ 32" +.LASF2252: + .string "CFG0_SCSS(regval) (BITS(2,3) & ((uint32_t)(regval) << 2))" +.LASF687: + .string "ADC_RESOLUTION_8B OVSCR_DRES(2)" +.LASF513: + .string "BKP_BASE (APB1_BUS_BASE + 0x00006C00U)" +.LASF2320: + .string "RCU_CKUSB_CKPLL_DIV1_5 CFG0_USBPSC(0)" +.LASF688: + .string "ADC_RESOLUTION_6B OVSCR_DRES(3)" +.LASF2339: + .string "CFG1_PREDV0(regval) (BITS(0,3) & ((uint32_t)(regval) << 0))" +.LASF772: + .string "OCTL_RCCV(regval) (BITS(0,6) & ((uint32_t)(regval) << 0))" +.LASF1944: + .string "I2C_RT_RISETIME BITS(0,5)" +.LASF2909: + .string "TIMER_TRI_OUT_SRC_ENABLE CTL1_MMC(1)" +.LASF2361: + .string "RCU_PREDV1_DIV5 CFG1_PREDV1(4)" +.LASF995: + .string "CAN_REG_VAL(canx,offset) (REG32((canx) + ((uint32_t)(offset) >> 6)))" +.LASF967: + .string "CAN_TMDATA0_DB3 BITS(24,31)" +.LASF2440: + .string "RTC_INT_FLAG_OVERFLOW RTC_CTL_OVIF" +.LASF2064: + .string "PMU_LVDT_6 CTL_LVDT(6)" +.LASF1914: + .string "I2C_SADDR0_ADDRESS_H BITS(8,9)" +.LASF1102: + .string "CAN_TIMEOUT ((uint32_t)0x0000FFFFU)" +.LASF1105: + .string "CAN_INT_RFF0 CAN_INTEN_RFFIE0" +.LASF2703: + .string "TIMER_CHCTL1_CH2CAPPSC BITS(2,3)" +.LASF1573: + .string "OB_WP_11 ((uint32_t)0x00000800U)" +.LASF81: + .string "__INT_WIDTH__ 32" +.LASF765: + .string "BKP_TPCS_TIR BIT(1)" +.LASF1483: + .string "EXTI_PD_PD18 BIT(18)" +.LASF202: + .string "__FLT16_DENORM_MIN__ 5.96046447753906250000000000000000000e-8F16" +.LASF612: + .string "ADC_DAUL_INSERTED_PARALLEL CTL0_SYNCM(5)" +.LASF437: + .string "UINT_LEAST8_MAX (__UINT_LEAST8_MAX__)" +.LASF1659: + .string "GPIO_ISTAT_ISTAT8 BIT(8)" +.LASF780: + .string "CAN0 CAN_BASE" +.LASF399: + .string "__FAST64 \"ll\"" +.LASF1133: + .string "DAC0_R8DH REG32(DAC + 0x10U)" +.LASF1586: + .string "OB_WP_24 ((uint32_t)0x01000000U)" +.LASF173: + .string "__DBL_HAS_INFINITY__ 1" +.LASF142: + .string "__FLT_EVAL_METHOD_TS_18661_3__ 0" +.LASF30: + .string "__FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__" +.LASF1921: + .string "I2C_STAT0_BTC BIT(2)" +.LASF33: + .string "__PTRDIFF_TYPE__ int" +.LASF2880: + .string "TIMER_OC_SHADOW_ENABLE ((uint16_t)0x0008U)" +.LASF987: + .string "CAN_FCTL_FLD BIT(0)" +.LASF1426: + .string "EXTI_RTEN_RTEN18 BIT(18)" +.LASF3008: + .string "USART_CTL1_REG_OFFSET (0x00000010U)" +.LASF1438: + .string "EXTI_FTEN_FTEN11 BIT(11)" +.LASF113: + .string "__INT_LEAST64_MAX__ 0x7fffffffffffffffLL" +.LASF93: + .string "__SIG_ATOMIC_MAX__ 0x7fffffff" +.LASF1897: + .string "I2C_CTL0_GCEN BIT(6)" +.LASF1039: + .string "ERR_ERRN(regval) (BITS(4,6) & ((uint32_t)(regval) << 4))" +.LASF3040: + .string "CTL1_CPL(regval) (BIT(10) & ((uint32_t)(regval) << 10))" +.LASF1995: + .string "FWDGT_RLD REG32((FWDGT) + 0x00000008U)" +.LASF2767: + .string "TIMER_FLAG_CH3O TIMER_INTF_CH3OF" +.LASF2857: + .string "TIMER_CH_1 ((uint16_t)0x0001U)" +.LASF1798: + .string "GPIO_EVENT_PORT_GPIOC ((uint8_t)0x02U)" +.LASF1003: + .string "RFIFO0_REG_OFFSET ((uint8_t)0x0CU)" +.LASF623: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH2 CTL1_ETSRC(2)" +.LASF2368: + .string "RCU_PREDV1_DIV12 CFG1_PREDV1(11)" +.LASF1845: + .string "GPIO_PIN_7 BIT(7)" +.LASF958: + .string "CAN_TMI_FF BIT(2)" +.LASF2019: + .string "DBG DBG_BASE" +.LASF1605: + .string "GPIO_CTL0(gpiox) REG32((gpiox) + 0x00U)" +.LASF2787: + .string "TIMER_DMACFG_DMATA_CNT DMACFG_DMATA(9)" +.LASF2760: + .string "TIMER_FLAG_CH3 TIMER_INTF_CH3IF" +.LASF1390: + .string "EXTI_EVEN_EVEN1 BIT(1)" +.LASF976: + .string "CAN_RFIFOMP_DLENC BITS(0,3)" +.LASF1434: + .string "EXTI_FTEN_FTEN7 BIT(7)" +.LASF3098: + .string "_SIZE_T_DEFINED " +.LASF2779: + .string "TIMER_DMACFG_DMATA_CTL1 DMACFG_DMATA(1)" +.LASF436: + .string "INT_LEAST8_MAX (__INT_LEAST8_MAX__)" +.LASF1392: + .string "EXTI_EVEN_EVEN3 BIT(3)" +.LASF1572: + .string "OB_WP_10 ((uint32_t)0x00000400U)" +.LASF2277: + .string "RCU_APB2_CKAHB_DIV16 CFG0_APB2PSC(7)" +.LASF2020: + .string "DBG_ID REG32(DBG + 0x00U)" +.LASF17: + .string "__SIZEOF_LONG__ 4" +.LASF2006: + .string "FWDGT_PSC_DIV32 ((uint8_t)PSC_PSC(3))" +.LASF2720: + .string "TIMER_CHCTL2_CH3P BIT(13)" +.LASF2926: + .string "TIMER_MASTER_SLAVE_MODE_DISABLE ((uint32_t)0x00000000U)" +.LASF1591: + .string "OB_WP_29 ((uint32_t)0x20000000U)" +.LASF394: + .string "__INT32 \"l\"" +.LASF760: + .string "BKP_OCTL_ASOEN BIT(8)" +.LASF1292: + .string "DMA_INT_FLAG_G DMA_INTF_GIF" +.LASF1561: + .string "OB_WP3_WP3 ((uint32_t)0xFF000000U)" +.LASF2379: + .string "RCU_PLL1_MUL13 CFG1_PLL1MF(11)" +.LASF346: + .string "__NEWLIB__ 4" +.LASF1652: + .string "GPIO_ISTAT_ISTAT1 BIT(1)" +.LASF2723: + .string "TIMER_CAR_CARL BITS(0,15)" +.LASF3119: + .string "_GCC_WCHAR_T " +.LASF1266: + .string "DMA_INTC_ERRIFC BIT(3)" +.LASF1408: + .string "EXTI_RTEN_RTEN0 BIT(0)" +.LASF2184: + .string "RCU_APB2EN_ADC0EN BIT(9)" +.LASF2081: + .string "RCU_APB1RST REG32(RCU + 0x10U)" +.LASF1749: + .string "AFIO_EC_PORT BITS(4, 6)" +.LASF350: + .string "__GNUC_PREREQ__(ma,mi) __GNUC_PREREQ(ma, mi)" +.LASF1506: + .string "FMC_STAT_PGERR BIT(2)" +.LASF259: + .string "__FLT32X_NORM_MAX__ 1.79769313486231570814527423731704357e+308F32x" +.LASF2718: + .string "TIMER_CHCTL2_CH2NP BIT(11)" +.LASF2770: + .string "TIMER_DMA_CH1D ((uint16_t)TIMER_DMAINTEN_CH1DEN)" +.LASF2961: + .string "USART_DATA_DATA BITS(0,8)" +.LASF364: + .string "___int8_t_defined 1" +.LASF1459: + .string "EXTI_SWIEV_SWIEV13 BIT(13)" +.LASF2983: + .string "USART_CTL1_CPL BIT(10)" +.LASF1932: + .string "I2C_STAT0_SMBALT BIT(15)" +.LASF459: + .string "INT_FAST16_MIN (-__INT_FAST16_MAX__ - 1)" +.LASF2214: + .string "RCU_BDCTL_BKPRST BIT(16)" +.LASF931: + .string "CAN_INTEN_RFNEIE0 BIT(1)" +.LASF2645: + .string "TIMER_DMAINTEN_CH0IE BIT(1)" +.LASF953: + .string "CAN_BT_SJW BITS(24,25)" +.LASF2755: + .string "TIMER_INT_FLAG_BRK TIMER_INT_BRK" +.LASF2018: + .string "GD32VF103_DBG_H " +.LASF439: + .string "INT16_MAX (__INT16_MAX__)" +.LASF112: + .string "__INT_LEAST32_WIDTH__ 32" +.LASF2455: + .string "SPI_RCRC(spix) REG32((spix) + 0x14U)" +.LASF1436: + .string "EXTI_FTEN_FTEN9 BIT(9)" +.LASF1192: + .string "DAC_WAVE_BIT_WIDTH_7 DWBW(6)" +.LASF267: + .string "__FLT64X_DIG__ 33" +.LASF3033: + .string "USART_LBLEN_11B CTL1_LBLEN(1)" +.LASF1911: + .string "I2C_CTL1_DMALST BIT(12)" +.LASF1373: + .string "EXTI_INTEN_INTEN3 BIT(3)" +.LASF1838: + .string "GPIO_PIN_0 BIT(0)" +.LASF1096: + .string "CAN_FILTERBITS_32BIT ((uint8_t)0x01U)" +.LASF827: + .string "CAN_F12DATA0(canx) REG32((canx) + 0x2A0U)" +.LASF2000: + .string "FWDGT_STAT_PUD BIT(0)" +.LASF636: + .string "ADC0_1_EXTTRIG_INSERTED_EXTI_15 CTL1_ETSIC(6)" +.LASF2953: + .string "USART_STAT_NERR BIT(2)" +.LASF946: + .string "CAN_ERR_BOERR BIT(2)" +.LASF844: + .string "CAN_F1DATA1(canx) REG32((canx) + 0x24CU)" +.LASF2696: + .string "TIMER_CHCTL1_CH2COMCTL BITS(4,6)" +.LASF261: + .string "__FLT32X_EPSILON__ 2.22044604925031308084726333618164062e-16F32x" +.LASF2224: + .string "RCU_AHBRST_USBFSRST BIT(12)" +.LASF3191: + .string "long double" +.LASF3084: + .string "___int_ptrdiff_t_h " +.LASF1498: + .string "OB_WP0 REG16((OB) + 0x08U)" +.LASF1581: + .string "OB_WP_19 ((uint32_t)0x00080000U)" +.LASF2501: + .string "SPI_I2SCTL_I2SSEL BIT(11)" +.LASF2049: + .string "PMU_CTL_STBRST BIT(3)" +.LASF1929: + .string "I2C_STAT0_OUERR BIT(11)" +.LASF2577: + .string "SPI_FLAG_CRCERR SPI_STAT_CRCERR" +.LASF2622: + .string "TIMER_CTL0_CAM BITS(5,6)" +.LASF1503: + .string "FMC_KEY_KEY BITS(0,31)" +.LASF1583: + .string "OB_WP_21 ((uint32_t)0x00200000U)" +.LASF2387: + .string "RCU_PLL2_MUL10 CFG1_PLL2MF(8)" +.LASF339: + .string "LXTAL_VALUE ((uint32_t)32768)" +.LASF480: + .string "INT8_C(x) __INT8_C(x)" +.LASF3074: + .string "N200_FUNC_H " +.LASF1693: + .string "GPIO_BOP_BOP10 BIT(10)" +.LASF787: + .string "CAN_INTEN(canx) REG32((canx) + 0x14U)" +.LASF1626: + .string "GPIO_CTL0_CTL3 BITS(14, 15)" +.LASF2881: + .string "TIMER_OC_SHADOW_DISABLE ((uint16_t)0x0000U)" +.LASF1709: + .string "GPIO_BOP_CR10 BIT(26)" +.LASF2620: + .string "TIMER_CTL0_SPM BIT(3)" +.LASF3101: + .string "___int_size_t_h " +.LASF2148: + .string "RCU_APB2RST_TIMER0RST BIT(11)" +.LASF1458: + .string "EXTI_SWIEV_SWIEV12 BIT(12)" +.LASF2835: + .string "TIMER_CKDIV_DIV2 CTL0_CKDIV(1)" +.LASF2711: + .string "TIMER_CHCTL2_CH1EN BIT(4)" +.LASF3202: + .string "clk_exp" +.LASF2441: + .string "RTC_FLAG_SECOND RTC_CTL_SCIF" +.LASF1563: + .string "OB_WP_1 ((uint32_t)0x00000002U)" +.LASF231: + .string "__FLT64_EPSILON__ 2.22044604925031308084726333618164062e-16F64" +.LASF1874: + .string "GPIO_SWJ_NONJTRST_REMAP ((uint32_t)0x00300100U)" +.LASF3207: + .string "SystemCoreClock" +.LASF2766: + .string "TIMER_FLAG_CH2O TIMER_INTF_CH2OF" +.LASF1814: + .string "GPIO_EVENT_PIN_8 ((uint8_t)0x08U)" +.LASF1195: + .string "DAC_WAVE_BIT_WIDTH_10 DWBW(9)" +.LASF808: + .string "CAN_RFIFOMDATA01(canx) REG32((canx) + 0x1C8U)" +.LASF1579: + .string "OB_WP_17 ((uint32_t)0x00020000U)" +.LASF277: + .string "__FLT64X_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F64x" +.LASF2048: + .string "PMU_CTL_WURST BIT(2)" +.LASF873: + .string "CAN_TMDATA0(canx,bank) REG32((canx) + 0x188U + ((bank) * 0x10U))" +.LASF158: + .string "__FLT_HAS_INFINITY__ 1" +.LASF1429: + .string "EXTI_FTEN_FTEN2 BIT(2)" +.LASF2563: + .string "SPI_CRC_TX ((uint8_t)0x00U)" +.LASF73: + .string "__WCHAR_MAX__ 0x7fffffff" +.LASF2365: + .string "RCU_PREDV1_DIV9 CFG1_PREDV1(8)" +.LASF3041: + .string "USART_CPL_LOW CTL1_CPL(0)" +.LASF2866: + .string "TIMER_OCN_POLARITY_HIGH ((uint16_t)0x0000U)" +.LASF2363: + .string "RCU_PREDV1_DIV7 CFG1_PREDV1(6)" +.LASF1218: + .string "DAC_TRIANGLE_AMPLITUDE_31 DAC_WAVE_BIT_WIDTH_5" +.LASF2092: + .string "RCU_CTL_IRC8MADJ BITS(3,7)" +.LASF524: + .string "USBFS_BASE (AHB1_BUS_BASE + 0x0FFE8000U)" +.LASF2907: + .string "CTL1_MMC(regval) (BITS(4, 6) & ((uint32_t)(regval) << 4U))" +.LASF2212: + .string "RCU_BDCTL_RTCSRC BITS(8,9)" +.LASF660: + .string "ADC_CHANNEL_0 ((uint8_t)0x00U)" +.LASF209: + .string "__FLT32_MIN_10_EXP__ (-37)" +.LASF122: + .string "__UINT_LEAST64_MAX__ 0xffffffffffffffffULL" +.LASF2925: + .string "TIMER_MASTER_SLAVE_MODE_ENABLE TIMER_SMCFG_MSM" +.LASF2695: + .string "TIMER_CHCTL1_CH2COMSEN BIT(3)" +.LASF1950: + .string "I2C_REG_VAL2(i2cx,offset) (REG32((i2cx) + ((uint32_t)(offset) >> 22)))" +.LASF269: + .string "__FLT64X_MIN_10_EXP__ (-4931)" +.LASF601: + .string "ADC_FLAG_STIC ADC_STAT_STIC" +.LASF3165: + .string "ECLIC_GROUP_LEVEL1_PRIO3 1" +.LASF306: + .string "__riscv_mul 1" +.LASF2744: + .string "TIMER_INT_CH3 TIMER_DMAINTEN_CH3IE" +.LASF3058: + .string "GD32VF103_WWDGT_H " +.LASF64: + .string "__UINT_FAST64_TYPE__ long long unsigned int" +.LASF3004: + .string "USART_REG_VAL2(usartx,offset) (REG32((usartx) + ((uint32_t)(offset) >> 22)))" +.LASF921: + .string "CAN_TSTAT_TMLS2 BIT(31)" +.LASF2658: + .string "TIMER_DMAINTEN_TRGDEN BIT(14)" +.LASF146: + .string "__FLT_DIG__ 6" +.LASF454: + .string "INT_LEAST64_MAX (__INT_LEAST64_MAX__)" +.LASF936: + .string "CAN_INTEN_RFOIE1 BIT(6)" +.LASF276: + .string "__FLT64X_EPSILON__ 1.92592994438723585305597794258492732e-34F64x" +.LASF1596: + .string "FMC_SIZE (*(uint16_t *)0x1FFFF7E0U)" +.LASF2583: + .string "I2S_FLAG_TBE SPI_STAT_TBE" +.LASF1755: + .string "AFIO_PCF0_USART2_REMAP BITS(4, 5)" +.LASF1870: + .string "GPIO_CAN0_FULL_REMAP ((uint32_t)0x001D6000U)" +.LASF2521: + .string "SPI_CK_PL_LOW_PH_2EDGE SPI_CTL0_CKPH" +.LASF2282: + .string "RCU_CKADC_CKAPB2_DIV12 ((uint32_t)0x00000005U)" +.LASF910: + .string "CAN_TSTAT_MTF2 BIT(16)" +.LASF1565: + .string "OB_WP_3 ((uint32_t)0x00000008U)" +.LASF1308: + .string "DMA_MEMORY_INCREASE_ENABLE ((uint8_t)0x01U)" +.LASF917: + .string "CAN_TSTAT_TME1 BIT(27)" +.LASF819: + .string "CAN_F4DATA0(canx) REG32((canx) + 0x260U)" +.LASF2114: + .string "RCU_CFG0_CKOUT0SEL BITS(24,27)" +.LASF2068: + .string "PMU_FLAG_LVD PMU_CS_LVDF" +.LASF489: + .string "UINTMAX_C(x) __UINTMAX_C(x)" +.LASF1358: + .string "EXMC_MEMORY_TYPE_NOR SNCTL_NRTP(2)" +.LASF2236: + .string "AHBEN_REG_OFFSET 0x14U" +.LASF595: + .string "ADC_OVSCR_OVSS BITS(5,8)" +.LASF1955: + .string "I2C_I2CMODE_ENABLE ((uint32_t)0x00000000U)" +.LASF314: + .string "__riscv_m 2000000" +.LASF1958: + .string "I2C_SMBUS_HOST I2C_CTL0_SMBSEL" +.LASF1961: + .string "I2C_ACK_DISABLE ((uint32_t)0x00000000U)" +.LASF179: + .string "__LDBL_MAX_EXP__ 16384" +.LASF1559: + .string "OB_WP1_WP1 ((uint32_t)0x0000FF00U)" +.LASF23: + .string "__SIZEOF_SIZE_T__ 4" +.LASF337: + .string "IRC8M_STARTUP_TIMEOUT ((uint16_t)0x0500)" +.LASF1718: + .string "GPIO_BC_CR3 BIT(3)" +.LASF2289: + .string "RCU_PLL_MUL3 CFG0_PLLMF(1)" +.LASF1542: + .string "WS_WSCNT_1 WS_WSCNT(1)" +.LASF1101: + .string "CAN_FT_REMOTE ((uint32_t)0x00000002U)" +.LASF1241: + .string "DMA_CH2PADDR(dmax) REG32((dmax) + 0x38U)" +.LASF1511: + .string "FMC_CTL_MER BIT(2)" +.LASF1957: + .string "I2C_SMBUS_DEVICE ((uint32_t)0x00000000U)" +.LASF1317: + .string "CHCTL_PRIO(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF2944: + .string "USART_STAT(usartx) REG32((usartx) + (0x00000000U))" +.LASF2162: + .string "RCU_APB1RST_UART3RST BIT(19)" +.LASF2775: + .string "TIMER_DMAREQUEST_UPDATEEVENT TIMER_CTL1_DMAS" +.LASF255: + .string "__FLT32X_MAX_EXP__ 1024" +.LASF628: + .string "ADC0_1_EXTTRIG_REGULAR_NONE CTL1_ETSRC(7)" +.LASF2674: + .string "TIMER_SWEVG_CH2G BIT(3)" +.LASF1707: + .string "GPIO_BOP_CR8 BIT(24)" +.LASF2159: + .string "RCU_APB1RST_SPI2RST BIT(15)" +.LASF1730: + .string "GPIO_BC_CR15 BIT(15)" +.LASF104: + .string "__INT_LEAST8_MAX__ 0x7f" +.LASF3115: + .string "_WCHAR_T_DEFINED " +.LASF2033: + .string "DBG_CTL_I2C0_HOLD BIT(15)" +.LASF381: + .string "long" +.LASF3172: + .string "__SYSTEM_CLOCK_108M_PLL_HXTAL (uint32_t)(108000000)" +.LASF3135: + .string "TIMER_CTRL_ADDR 0xd1000000" +.LASF2821: + .string "TIMER_EVENT_SRC_CMTG ((uint16_t)0x0020U)" +.LASF2208: + .string "RCU_APB1EN_DACEN BIT(29)" +.LASF1273: + .string "DMA_CHXCTL_PNAGA BIT(6)" +.LASF2683: + .string "TIMER_CHCTL0_CH0COMCEN BIT(7)" +.LASF63: + .string "__UINT_FAST32_TYPE__ unsigned int" +.LASF3050: + .string "USART_RTS_ENABLE CLT2_RTSEN(1)" +.LASF355: + .string "__LARGEFILE_VISIBLE 0" +.LASF1852: + .string "GPIO_PIN_14 BIT(14)" +.LASF1173: + .string "DAC_TRIGGER_T5_TRGO CTL_DTSEL(0)" +.LASF2407: + .string "RTC RTC_BASE" +.LASF951: + .string "CAN_BT_BS1 BITS(16,19)" +.LASF1781: + .string "AFIO_EXTI15_SS BITS(12, 15)" +.LASF1472: + .string "EXTI_PD_PD7 BIT(7)" +.LASF1120: + .string "CRC_FDATA REG32(CRC + 0x04U)" +.LASF2119: + .string "RCU_INT_IRC8MSTBIF BIT(2)" +.LASF1545: + .string "OB_FWDGT_HW ((uint8_t)0x00U)" +.LASF1550: + .string "OB_BOOT_B0 ((uint8_t)0x08U)" +.LASF1011: + .string "FDATA_MASK_HIGH(regval) (BITS(16,31) & ((uint32_t)(regval) << 16))" +.LASF2217: + .string "RCU_RSTSCK_RSTFC BIT(24)" +.LASF998: + .string "CAN_REG_VALS(canx,offset) (REG32((canx) + ((uint32_t)(offset) >> 12)))" +.LASF1671: + .string "GPIO_OCTL_OCTL4 BIT(4)" +.LASF49: + .string "__INT_LEAST8_TYPE__ signed char" +.LASF1443: + .string "EXTI_FTEN_FTEN16 BIT(16)" +.LASF1287: + .string "DMA_CHCTL_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF785: + .string "CAN_RFIFO0(canx) REG32((canx) + 0x0CU)" +.LASF1326: + .string "ECLIC_PRIGROUP_LEVEL0_PRIO4 0" +.LASF2990: + .string "USART_CTL2_HDEN BIT(3)" +.LASF1208: + .string "DAC_LFSR_BITS10_0 DAC_WAVE_BIT_WIDTH_11" +.LASF2225: + .string "RCU_CFG1_PREDV0 BITS(0,3)" +.LASF1452: + .string "EXTI_SWIEV_SWIEV6 BIT(6)" +.LASF1360: + .string "EXMC_NWAIT_POLARITY_LOW ((uint32_t)0x00000000U)" +.LASF253: + .string "__FLT32X_MIN_EXP__ (-1021)" +.LASF367: + .string "___int64_t_defined 1" +.LASF2530: + .string "SPI_PSC_128 CTL0_PSC(6)" +.LASF196: + .string "__FLT16_MAX_10_EXP__ 4" +.LASF1056: + .string "CAN_BT_SJW_4TQ ((uint8_t)0x03U)" +.LASF2245: + .string "INT_REG_OFFSET 0x08U" +.LASF229: + .string "__FLT64_NORM_MAX__ 1.79769313486231570814527423731704357e+308F64" +.LASF2058: + .string "PMU_LVDT_0 CTL_LVDT(0)" +.LASF1259: + .string "DMA_INTF_GIF BIT(0)" +.LASF29: + .string "__BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__" +.LASF455: + .string "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)" +.LASF1366: + .string "EXTI_RTEN REG32(EXTI + 0x08U)" +.LASF1290: + .string "DMA_CHMADDR_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF1739: + .string "GPIO_LOCK_LK8 BIT(8)" +.LASF1476: + .string "EXTI_PD_PD11 BIT(11)" +.LASF2523: + .string "CTL0_PSC(regval) (BITS(3,5) & ((uint32_t)(regval) << 3))" +.LASF676: + .string "ADC_CHANNEL_16 ((uint8_t)0x10U)" +.LASF952: + .string "CAN_BT_BS2 BITS(20,22)" +.LASF1558: + .string "OB_WP0_WP0 ((uint32_t)0x000000FFU)" +.LASF226: + .string "__FLT64_MAX_10_EXP__ 308" +.LASF311: + .string "__riscv_cmodel_medany 1" +.LASF2065: + .string "PMU_LVDT_7 CTL_LVDT(7)" +.LASF2372: + .string "RCU_PREDV1_DIV16 CFG1_PREDV1(15)" +.LASF2781: + .string "TIMER_DMACFG_DMATA_DMAINTEN DMACFG_DMATA(3)" +.LASF2250: + .string "RCU_CKSYSSRC_HXTAL CFG0_SCS(1)" +.LASF1332: + .string "GD32VF103_EXMC_H " +.LASF257: + .string "__FLT32X_DECIMAL_DIG__ 17" +.LASF2803: + .string "TIMER_DMACFG_DMATC_6TRANSFER DMACFG_DMATC(5)" +.LASF2910: + .string "TIMER_TRI_OUT_SRC_UPDATE CTL1_MMC(2)" +.LASF3046: + .string "CLT2_DENT(regval) (BIT(7) & ((uint32_t)(regval) << 7))" +.LASF2394: + .string "RCU_PLL2_MUL20 CFG1_PLL2MF(15)" +.LASF70: + .string "__INT_MAX__ 0x7fffffff" +.LASF2520: + .string "SPI_CK_PL_HIGH_PH_1EDGE SPI_CTL0_CKPL" +.LASF1419: + .string "EXTI_RTEN_RTEN11 BIT(11)" +.LASF1243: + .string "DMA_CH3CTL(dmax) REG32((dmax) + 0x44U)" +.LASF2517: + .string "SPI_ENDIAN_MSB ((uint32_t)0x00000000U)" +.LASF1216: + .string "DAC_TRIANGLE_AMPLITUDE_7 DAC_WAVE_BIT_WIDTH_3" +.LASF1679: + .string "GPIO_OCTL_OCTL12 BIT(12)" +.LASF3181: + .string "__uint16_t" +.LASF133: + .string "__UINT_FAST16_MAX__ 0xffffffffU" +.LASF1867: + .string "GPIO_TIMER2_FULL_REMAP ((uint32_t)0x001A0C00U)" +.LASF2013: + .string "FWDGT_KEY_ENABLE ((uint16_t)0xCCCCU)" +.LASF2761: + .string "TIMER_FLAG_CMT TIMER_INTF_CMTIF" +.LASF2477: + .string "SPI_CTL1_TMOD BIT(4)" +.LASF2769: + .string "TIMER_DMA_CH0D ((uint16_t)TIMER_DMAINTEN_CH0DEN)" +.LASF2115: + .string "RCU_CFG0_ADCPSC_2 BIT(28)" +.LASF1465: + .string "EXTI_PD_PD0 BIT(0)" +.LASF120: + .string "__UINT_LEAST32_MAX__ 0xffffffffUL" +.LASF1227: + .string "DMA0 (DMA_BASE)" +.LASF2666: + .string "TIMER_INTF_BRKIF BIT(7)" +.LASF555: + .string "ADC_STAT_STRC BIT(4)" +.LASF2259: + .string "RCU_AHB_CKSYS_DIV4 CFG0_AHBPSC(9)" +.LASF1916: + .string "I2C_SADDR1_DUADEN BIT(0)" +.LASF447: + .string "INT_LEAST32_MIN (-__INT_LEAST32_MAX__ - 1)" +.LASF1819: + .string "GPIO_EVENT_PIN_13 ((uint8_t)0x0DU)" +.LASF431: + .string "UINTPTR_MAX (__UINTPTR_MAX__)" +.LASF19: + .string "__SIZEOF_SHORT__ 2" +.LASF1279: + .string "DMA_CHXCNT_CNT BITS(0,15)" +.LASF1063: + .string "CAN_BT_BS1_7TQ ((uint8_t)0x06U)" +.LASF407: + .string "__int8_t_defined 1" +.LASF1253: + .string "DMA_CH5PADDR(dmax) REG32((dmax) + 0x74U)" +.LASF1764: + .string "AFIO_PCF0_SPI2_REMAP BIT(28)" +.LASF1298: + .string "DMA_FLAG_HTF DMA_INTF_HTFIF" +.LASF35: + .string "__WINT_TYPE__ unsigned int" +.LASF972: + .string "CAN_RFIFOMI_FT BIT(1)" +.LASF1353: + .string "EXMC_NOR_DATABUS_WIDTH_8B SNCTL_NRW(0)" +.LASF1111: + .string "CAN_INT_PERR CAN_INTEN_PERRIE" +.LASF110: + .string "__INT_LEAST32_MAX__ 0x7fffffffL" +.LASF1352: + .string "SNCTL_NRW(regval) (BITS(4,5) & ((uint32_t)(regval) << 4))" +.LASF2435: + .string "RTC_INT_SECOND RTC_INTEN_SCIE" +.LASF490: + .string "REG32(addr) (*(volatile uint32_t *)(uint32_t)(addr))" +.LASF2675: + .string "TIMER_SWEVG_CH3G BIT(4)" +.LASF3195: + .string "pllsel" +.LASF2269: + .string "RCU_APB1_CKAHB_DIV4 CFG0_APB1PSC(5)" +.LASF148: + .string "__FLT_MIN_10_EXP__ (-37)" +.LASF1732: + .string "GPIO_LOCK_LK1 BIT(1)" +.LASF351: + .string "__ATFILE_VISIBLE 0" +.LASF2203: + .string "RCU_APB1EN_I2C1EN BIT(22)" +.LASF2502: + .string "SPI_I2SPSC_DIV BITS(0,7)" +.LASF667: + .string "ADC_CHANNEL_7 ((uint8_t)0x07U)" +.LASF1334: + .string "EXMC_SNCTL0 REG32(EXMC + 0x00U)" +.LASF1934: + .string "I2C_STAT1_I2CBSY BIT(1)" +.LASF1701: + .string "GPIO_BOP_CR2 BIT(18)" +.LASF811: + .string "CAN_FMCFG(canx) REG32((canx) + 0x204U)" +.LASF891: + .string "CAN_STAT_IWS BIT(0)" +.LASF850: + .string "CAN_F7DATA1(canx) REG32((canx) + 0x27CU)" +.LASF709: + .string "ADC_OVERSAMPLING_RATIO_MUL256 OVSCR_OVSR(7)" +.LASF1859: + .string "GPIO_USART2_PARTIAL_REMAP ((uint32_t)0x00140010U)" +.LASF506: + .string "RTC_BASE (APB1_BUS_BASE + 0x00002800U)" +.LASF1139: + .string "DACC_R8DH REG32(DAC + 0x28U)" +.LASF1698: + .string "GPIO_BOP_BOP15 BIT(15)" +.LASF2867: + .string "TIMER_OCN_POLARITY_LOW ((uint16_t)0x0008U)" +.LASF978: + .string "CAN_RFIFOMP_TS BITS(16,31)" +.LASF573: + .string "ADC_CTL1_DMA BIT(8)" +.LASF2882: + .string "TIMER_OC_FAST_ENABLE ((uint16_t)0x0004)" +.LASF1093: + .string "CAN_MODE_NORMAL ((uint8_t)0x02U)" +.LASF1260: + .string "DMA_INTF_FTFIF BIT(1)" +.LASF766: + .string "BKP_TPCS_TPIE BIT(2)" +.LASF1463: + .string "EXTI_SWIEV_SWIEV17 BIT(17)" +.LASF949: + .string "CAN_ERR_RECNT BITS(24,31)" +.LASF1127: + .string "DAC0 (0U)" +.LASF968: + .string "CAN_TMDATA1_DB4 BITS(0,7)" +.LASF2414: + .string "RTC_CNTH REG32(RTC + 0x18U)" +.LASF2206: + .string "RCU_APB1EN_BKPIEN BIT(27)" +.LASF1562: + .string "OB_WP_0 ((uint32_t)0x00000001U)" +.LASF114: + .string "__INT64_C(c) c ## LL" +.LASF235: + .string "__FLT64_HAS_QUIET_NAN__ 1" +.LASF1653: + .string "GPIO_ISTAT_ISTAT2 BIT(2)" +.LASF205: + .string "__FLT16_HAS_QUIET_NAN__ 1" +.LASF485: + .string "UINT32_C(x) __UINT32_C(x)" +.LASF237: + .string "__FLT128_DIG__ 33" +.LASF616: + .string "ADC_DAUL_INSERTED_TRIGGER_ROTATION CTL0_SYNCM(9)" +.LASF1665: + .string "GPIO_ISTAT_ISTAT14 BIT(14)" +.LASF2161: + .string "RCU_APB1RST_USART2RST BIT(18)" +.LASF3052: + .string "CLT2_CTSEN(regval) (BIT(9) & ((uint32_t)(regval) << 9))" +.LASF2908: + .string "TIMER_TRI_OUT_SRC_RESET CTL1_MMC(0)" +.LASF1576: + .string "OB_WP_14 ((uint32_t)0x00004000U)" +.LASF1403: + .string "EXTI_EVEN_EVEN14 BIT(14)" +.LASF2965: + .string "USART_CTL0_RWU BIT(1)" +.LASF767: + .string "BKP_TPCS_TEF BIT(8)" +.LASF2037: + .string "DBG_CTL_TIMER6_HOLD BIT(20)" +.LASF788: + .string "CAN_ERR(canx) REG32((canx) + 0x18U)" +.LASF1172: + .string "CTL_DTSEL(regval) (BITS(3,5) & ((uint32_t)(regval) << 3))" +.LASF2672: + .string "TIMER_SWEVG_CH0G BIT(1)" +.LASF569: + .string "ADC_CTL1_ADCON BIT(0)" +.LASF242: + .string "__FLT128_DECIMAL_DIG__ 36" +.LASF325: + .string "__RTTHREAD__ 1" +.LASF2950: + .string "USART_GP(usartx) REG32((usartx) + (0x00000018U))" +.LASF2493: + .string "SPI_TCRC_TCRC BITS(0,15)" +.LASF2059: + .string "PMU_LVDT_1 CTL_LVDT(1)" +.LASF2822: + .string "TIMER_EVENT_SRC_TRGG ((uint16_t)0x0040U)" +.LASF189: + .string "__LDBL_HAS_INFINITY__ 1" +.LASF2280: + .string "RCU_CKADC_CKAPB2_DIV6 ((uint32_t)0x00000002U)" +.LASF2972: + .string "USART_CTL0_PERRIE BIT(8)" +.LASF1575: + .string "OB_WP_13 ((uint32_t)0x00002000U)" +.LASF2689: + .string "TIMER_CHCTL0_CH0CAPPSC BITS(2,3)" +.LASF2465: + .string "SPI_CTL0_SWNSS BIT(8)" +.LASF1343: + .string "EXMC_SNCTL_WREN BIT(12)" +.LASF2409: + .string "RTC_CTL REG32(RTC + 0x04U)" +.LASF1112: + .string "CAN_INT_BO CAN_INTEN_BOIE" +.LASF2421: + .string "RTC_CTL_SCIF BIT(0)" +.LASF1597: + .string "SRAM_SIZE (*(uint16_t *)0x1FFFF7E2U)" +.LASF308: + .string "__riscv_muldiv 1" +.LASF2317: + .string "RCU_PLL_MUL31 (PLLMF_4 | CFG0_PLLMF(14))" +.LASF2730: + .string "TIMER_CCHP_PROT BITS(8,9)" +.LASF1496: + .string "OB_SPC REG16((OB) + 0x00U)" +.LASF329: + .string "GD32VF103_H " +.LASF562: + .string "ADC_CTL0_ICA BIT(10)" +.LASF496: + .string "FLASH_BASE ((uint32_t)0x08000000U)" +.LASF2859: + .string "TIMER_CH_3 ((uint16_t)0x0003U)" +.LASF68: + .string "__SCHAR_MAX__ 0x7f" +.LASF293: + .string "__GCC_ATOMIC_INT_LOCK_FREE 2" +.LASF258: + .string "__FLT32X_MAX__ 1.79769313486231570814527423731704357e+308F32x" +.LASF1097: + .string "CAN_FILTERMODE_MASK ((uint8_t)0x00U)" +.LASF38: + .string "__CHAR16_TYPE__ short unsigned int" +.LASF2: + .string "__STDC_UTF_16__ 1" +.LASF2030: + .string "DBG_CTL_TIMER2_HOLD BIT(12)" +.LASF2189: + .string "RCU_APB1EN_TIMER1EN BIT(0)" +.LASF2911: + .string "TIMER_TRI_OUT_SRC_CH0 CTL1_MMC(3)" +.LASF2613: + .string "TIMER_CH3CV(timerx) REG32((timerx) + 0x40U)" +.LASF101: + .string "__UINT16_MAX__ 0xffff" +.LASF2433: + .string "RTC_ALRMH_ALRM BITS(0,15)" +.LASF1886: + .string "I2C_DATA(i2cx) REG32((i2cx) + 0x10U)" +.LASF773: + .string "RTC_OUTPUT_ALARM_PULSE ((uint16_t)0x0000U)" +.LASF1080: + .string "CAN_BT_BS2_8TQ ((uint8_t)0x07U)" +.LASF3056: + .string "USART_IRLP_LOW CTL2_IRLP(1)" +.LASF842: + .string "CAN_F27DATA0(canx) REG32((canx) + 0x318U)" +.LASF270: + .string "__FLT64X_MAX_EXP__ 16384" +.LASF2078: + .string "RCU_CFG0 REG32(RCU + 0x04U)" +.LASF778: + .string "BKP_INT_FLAG_TAMPER BKP_TPCS_TIF" +.LASF959: + .string "CAN_TMI_EFID BITS(3,31)" +.LASF1789: + .string "GPIO_MODE_OUT_OD ((uint8_t)0x14U)" +.LASF2741: + .string "TIMER_INT_CH0 TIMER_DMAINTEN_CH0IE" +.LASF1046: + .string "CAN_ERRN_6 ERR_ERRN(6U)" +.LASF3: + .string "__STDC_UTF_32__ 1" +.LASF1289: + .string "DMA_CHPADDR_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF359: + .string "__XSI_VISIBLE 0" +.LASF3025: + .string "USART_WL_9BIT CTL0_WL(1)" +.LASF2538: + .string "I2S_AUDIOSAMPLE_48K ((uint32_t)48000U)" +.LASF1832: + .string "GPIO_PIN_SOURCE_10 ((uint8_t)0x0AU)" +.LASF2436: + .string "RTC_INT_ALARM RTC_INTEN_ALRMIE" +.LASF2215: + .string "RCU_RSTSCK_IRC40KEN BIT(0)" +.LASF2418: + .string "RTC_INTEN_SCIE BIT(0)" +.LASF1557: + .string "OB_USER_USER_N ((uint32_t)0xFF000000U)" +.LASF1059: + .string "CAN_BT_BS1_3TQ ((uint8_t)0x02U)" +.LASF615: + .string "ADC_DAUL_REGULAL_FOLLOWUP_SLOW CTL0_SYNCM(8)" +.LASF2110: + .string "RCU_CFG0_PLLSEL BIT(16)" +.LASF565: + .string "ADC_CTL0_DISNUM BITS(13,15)" +.LASF2174: + .string "RCU_AHBEN_FMCSPEN BIT(4)" +.LASF2960: + .string "USART_STAT_CTSF BIT(9)" +.LASF693: + .string "ADC_OVERSAMPLING_SHIFT_1B OVSCR_OVSS(1)" +.LASF1010: + .string "BT_MODE(regval) (BITS(30,31) & ((uint32_t)(regval) << 30))" +.LASF6: + .string "__GNUC_MINOR__ 2" +.LASF234: + .string "__FLT64_HAS_INFINITY__ 1" +.LASF2353: + .string "RCU_PREDV0_DIV14 CFG1_PREDV0(13)" +.LASF1081: + .string "CAN_MAILBOX0 ((uint8_t)0x00U)" +.LASF3175: + .string "SEL_PLL 0x02U" +.LASF155: + .string "__FLT_EPSILON__ 1.19209289550781250000000000000000000e-7F" +.LASF592: + .string "ADC_RDATA_ADC1RDTR BITS(16,31)" +.LASF2606: + .string "TIMER_CNT(timerx) REG32((timerx) + 0x24U)" +.LASF2242: + .string "RSTSCK_REG_OFFSET 0x24U" +.LASF3044: + .string "USART_DENR_ENABLE CLT2_DENR(1)" +.LASF152: + .string "__FLT_MAX__ 3.40282346638528859811704183484516925e+38F" +.LASF832: + .string "CAN_F17DATA0(canx) REG32((canx) + 0x2C8U)" +.LASF370: + .string "___int_least32_t_defined 1" +.LASF1388: + .string "EXTI_INTEN_INTEN18 BIT(18)" +.LASF1535: + .string "FMC_STAT_REG_OFFSET 0x0CU" +.LASF2175: + .string "RCU_AHBEN_CRCEN BIT(6)" +.LASF2525: + .string "SPI_PSC_4 CTL0_PSC(1)" +.LASF1412: + .string "EXTI_RTEN_RTEN4 BIT(4)" +.LASF41: + .string "__INT8_TYPE__ signed char" +.LASF556: + .string "ADC_CTL0_WDCHSEL BITS(0,4)" +.LASF1524: + .string "FMC_WP_WP BITS(0,31)" +.LASF1200: + .string "DAC_LFSR_BITS2_0 DAC_WAVE_BIT_WIDTH_3" +.LASF3138: + .string "N200_ECLIC_H " +.LASF2642: + .string "TIMER_SMCFG_SMC1 BIT(14)" +.LASF2825: + .string "TIMER_COUNTER_EDGE CTL0_CAM(0)" +.LASF1810: + .string "GPIO_EVENT_PIN_4 ((uint8_t)0x04U)" +.LASF2489: + .string "SPI_STAT_FERR BIT(8)" +.LASF2974: + .string "USART_CTL0_PCEN BIT(10)" +.LASF1627: + .string "GPIO_CTL0_MD4 BITS(16, 17)" +.LASF582: + .string "ADC_SAMPTX_SPTN BITS(0,2)" +.LASF449: + .string "UINT_LEAST32_MAX (__UINT_LEAST32_MAX__)" +.LASF3203: + .string "ahb_exp" +.LASF2739: + .string "TIMER_DMATB_DMATB BITS(0,15)" +.LASF3160: + .string "MSIP_HANDLER eclic_msip_handler" +.LASF2963: + .string "USART_BAUD_INTDIV BITS(4,15)" +.LASF3048: + .string "USART_DENT_DISABLE CLT2_DENT(0)" +.LASF1377: + .string "EXTI_INTEN_INTEN7 BIT(7)" +.LASF1842: + .string "GPIO_PIN_4 BIT(4)" +.LASF1049: + .string "CAN_NORMAL_MODE ((uint8_t)0x00U)" +.LASF382: + .string "signed +0" +.LASF1321: + .string "DMA_PRIORITY_ULTRA_HIGH CHCTL_PRIO(3U)" +.LASF1828: + .string "GPIO_PIN_SOURCE_6 ((uint8_t)0x06U)" +.LASF684: + .string "OVSCR_DRES(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF2814: + .string "TIMER_DMACFG_DMATC_17TRANSFER DMACFG_DMATC(16)" +.LASF1141: + .string "DAC1_DO REG32(DAC + 0x30U)" +.LASF1162: + .string "DAC1_L12DH_DAC1_DH BITS(4,15)" +.LASF1747: + .string "GPIO_LOCK_LKK BIT(16)" +.LASF107: + .string "__INT_LEAST16_MAX__ 0x7fff" +.LASF103: + .string "__UINT64_MAX__ 0xffffffffffffffffULL" +.LASF423: + .string "__int_least32_t_defined 1" +.LASF1248: + .string "DMA_CH4CNT(dmax) REG32((dmax) + 0x5CU)" +.LASF1244: + .string "DMA_CH3CNT(dmax) REG32((dmax) + 0x48U)" +.LASF2145: + .string "RCU_APB2RST_PERST BIT(6)" +.LASF1538: + .string "UNLOCK_KEY0 ((uint32_t)0x45670123U)" +.LASF2682: + .string "TIMER_CHCTL0_CH0COMCTL BITS(4,6)" +.LASF410: + .string "__int16_t_defined 1" +.LASF2915: + .string "TIMER_TRI_OUT_SRC_O3CPRE CTL1_MMC(7)" +.LASF651: + .string "ISQ_IL(regval) (BITS(20,21) & ((uint32_t)(regval) << 20))" +.LASF1184: + .string "DAC_WAVE_MODE_TRIANGLE CTL_DWM(2)" +.LASF156: + .string "__FLT_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F" +.LASF2315: + .string "RCU_PLL_MUL29 (PLLMF_4 | CFG0_PLLMF(12))" +.LASF2624: + .string "TIMER_CTL0_CKDIV BITS(8,9)" +.LASF3209: + .string "SystemCoreClockUpdate" +.LASF1040: + .string "CAN_ERRN_0 ERR_ERRN(0U)" +.LASF1481: + .string "EXTI_PD_PD16 BIT(16)" +.LASF521: + .string "RCU_BASE (AHB1_BUS_BASE + 0x00009000U)" +.LASF695: + .string "ADC_OVERSAMPLING_SHIFT_3B OVSCR_OVSS(3)" +.LASF1108: + .string "CAN_INT_RFF1 CAN_INTEN_RFFIE1" +.LASF1043: + .string "CAN_ERRN_3 ERR_ERRN(3U)" +.LASF2201: + .string "RCU_APB1EN_UART4EN BIT(20)" +.LASF2182: + .string "RCU_APB2EN_PDEN BIT(5)" +.LASF211: + .string "__FLT32_MAX_10_EXP__ 38" +.LASF3000: + .string "USART_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF933: + .string "CAN_INTEN_RFOIE0 BIT(3)" +.LASF3031: + .string "CTL1_LBLEN(regval) (BIT(5) & ((uint32_t)(regval) << 5))" +.LASF69: + .string "__SHRT_MAX__ 0x7fff" +.LASF2690: + .string "TIMER_CHCTL0_CH0CAPFLT BITS(4,7)" +.LASF796: + .string "CAN_TMDATA01(canx) REG32((canx) + 0x198U)" +.LASF2458: + .string "SPI_I2SPSC(spix) REG32((spix) + 0x20U)" +.LASF1988: + .string "I2C_DTCY_16_9 I2C_CKCFG_DTCY" +.LASF1424: + .string "EXTI_RTEN_RTEN16 BIT(16)" +.LASF2261: + .string "RCU_AHB_CKSYS_DIV16 CFG0_AHBPSC(11)" +.LASF2432: + .string "RTC_CNTL_CNT BITS(0,15)" +.LASF1927: + .string "I2C_STAT0_LOSTARB BIT(9)" +.LASF2855: + .string "TIMER_BREAK_DISABLE ((uint16_t)0x0000U)" +.LASF557: + .string "ADC_CTL0_EOCIE BIT(5)" +.LASF72: + .string "__LONG_LONG_MAX__ 0x7fffffffffffffffLL" +.LASF2795: + .string "TIMER_DMACFG_DMATA_CCHP DMACFG_DMATA(17)" +.LASF83: + .string "__LONG_LONG_WIDTH__ 64" +.LASF2522: + .string "SPI_CK_PL_HIGH_PH_2EDGE (SPI_CTL0_CKPL | SPI_CTL0_CKPH)" +.LASF45: + .string "__UINT8_TYPE__ unsigned char" +.LASF2270: + .string "RCU_APB1_CKAHB_DIV8 CFG0_APB1PSC(6)" +.LASF105: + .string "__INT8_C(c) c" +.LASF397: + .string "__FAST16 " +.LASF3079: + .string "_T_PTRDIFF_ " +.LASF1076: + .string "CAN_BT_BS2_4TQ ((uint8_t)0x03U)" +.LASF804: + .string "CAN_RFIFOMDATA00(canx) REG32((canx) + 0x1B8U)" +.LASF2980: + .string "USART_CTL1_LBDIE BIT(6)" +.LASF129: + .string "__INT_FAST32_WIDTH__ 32" +.LASF1370: + .string "EXTI_INTEN_INTEN0 BIT(0)" +.LASF2066: + .string "PMU_FLAG_WAKEUP PMU_CS_WUF" +.LASF1759: + .string "AFIO_PCF0_TIMER3_REMAP BIT(12)" +.LASF2597: + .string "TIMER_CTL0(timerx) REG32((timerx) + 0x00U)" +.LASF315: + .string "__riscv_a 2000000" +.LASF1202: + .string "DAC_LFSR_BITS4_0 DAC_WAVE_BIT_WIDTH_5" +.LASF499: + .string "DBG_BASE ((uint32_t)0xE0042000U)" +.LASF1109: + .string "CAN_INT_RFO1 CAN_INTEN_RFOIE1" +.LASF2069: + .string "PMU_LDO_NORMAL ((uint32_t)0x00000000U)" +.LASF2390: + .string "RCU_PLL2_MUL13 CFG1_PLL2MF(11)" +.LASF260: + .string "__FLT32X_MIN__ 2.22507385850720138309023271733240406e-308F32x" +.LASF243: + .string "__FLT128_MAX__ 1.18973149535723176508575932662800702e+4932F128" +.LASF3131: + .string "TIMER_MTIMECMP 0x8" +.LASF2439: + .string "RTC_INT_FLAG_ALARM RTC_CTL_ALRMIF" +.LASF948: + .string "CAN_ERR_TECNT BITS(16,23)" +.LASF75: + .string "__WINT_MAX__ 0xffffffffU" +.LASF533: + .string "ADC_SAMPT0(adcx) REG32((adcx) + 0x0CU)" +.LASF756: + .string "BKP_TPCS REG16((BKP) + 0x34U)" +.LASF2596: + .string "TIMER6 (TIMER_BASE + 0x00001400U)" +.LASF824: + .string "CAN_F9DATA0(canx) REG32((canx) + 0x288U)" +.LASF98: + .string "__INT32_MAX__ 0x7fffffffL" +.LASF1908: + .string "I2C_CTL1_EVIE BIT(9)" +.LASF1532: + .string "FMC_BIT_POS0(val) (((uint32_t)(val) >> 6) & 0x1FU)" +.LASF1964: + .string "I2C_ACKPOS_CURRENT ((uint32_t)0x00000001U)" +.LASF1501: + .string "OB_WP3 REG16((OB) + 0x0EU)" +.LASF1433: + .string "EXTI_FTEN_FTEN6 BIT(6)" +.LASF862: + .string "CAN_F19DATA1(canx) REG32((canx) + 0x2DCU)" +.LASF2545: + .string "I2S_FRAMEFORMAT_DT32B_CH32B (I2SCTL_DTLEN(2) | SPI_I2SCTL_CHLEN)" +.LASF1634: + .string "GPIO_CTL0_CTL7 BITS(30, 31)" +.LASF2337: + .string "RCU_RTCSRC_IRC40K BDCTL_RTCSRC(2)" +.LASF3096: + .string "_BSD_SIZE_T_ " +.LASF2467: + .string "SPI_CTL0_RO BIT(10)" +.LASF1028: + .string "GET_RFIFOMDATA0_DB0(regval) GET_BITS((uint32_t)(regval), 0U, 7U)" +.LASF471: + .string "SIZE_MAX (__SIZE_MAX__)" +.LASF1310: + .string "DMA_PERIPHERAL_WIDTH_8BIT CHCTL_PWIDTH(0U)" +.LASF2074: + .string "WFE_CMD ((uint8_t)0x01U)" +.LASF42: + .string "__INT16_TYPE__ short int" +.LASF47: + .string "__UINT32_TYPE__ long unsigned int" +.LASF2444: + .string "RTC_FLAG_RSYN RTC_CTL_RSYNF" +.LASF2322: + .string "RCU_CKUSB_CKPLL_DIV2_5 CFG0_USBPSC(2)" +.LASF76: + .string "__WINT_MIN__ 0U" +.LASF1945: + .string "I2C_FMPCFG_FMPEN BIT(0)" +.LASF2623: + .string "TIMER_CTL0_ARSE BIT(7)" +.LASF428: + .string "__int_fast64_t_defined 1" +.LASF1937: + .string "I2C_STAT1_DEFSMB BIT(5)" +.LASF937: + .string "CAN_INTEN_WERRIE BIT(8)" +.LASF1690: + .string "GPIO_BOP_BOP7 BIT(7)" +.LASF3078: + .string "_PTRDIFF_T " +.LASF697: + .string "ADC_OVERSAMPLING_SHIFT_5B OVSCR_OVSS(5)" +.LASF3118: + .string "__INT_WCHAR_T_H " +.LASF2894: + .string "TIMER_IC_PSC_DIV1 ((uint16_t)0x0000U)" +.LASF2745: + .string "TIMER_INT_CMT TIMER_DMAINTEN_CMTIE" +.LASF576: + .string "ADC_CTL1_ETEIC BIT(15)" +.LASF1508: + .string "FMC_STAT_ENDF BIT(5)" +.LASF1286: + .string "DMA_CHMADDR(dma,channel) REG32(((dma) + 0x14U) + 0x14U * (uint32_t)(channel))" +.LASF2438: + .string "RTC_INT_FLAG_SECOND RTC_CTL_SCIF" +.LASF2865: + .string "TIMER_OC_POLARITY_LOW ((uint16_t)0x0002U)" +.LASF2335: + .string "RCU_RTCSRC_NONE BDCTL_RTCSRC(0)" +.LASF74: + .string "__WCHAR_MIN__ (-__WCHAR_MAX__ - 1)" +.LASF2034: + .string "DBG_CTL_I2C1_HOLD BIT(16)" +.LASF1335: + .string "EXMC_SNTCFG0 REG32(EXMC + 0x04U)" +.LASF421: + .string "__int_least8_t_defined 1" +.LASF950: + .string "CAN_BT_BAUDPSC BITS(0,9)" +.LASF1722: + .string "GPIO_BC_CR7 BIT(7)" +.LASF2667: + .string "TIMER_INTF_CH0OF BIT(9)" +.LASF1416: + .string "EXTI_RTEN_RTEN8 BIT(8)" +.LASF1190: + .string "DAC_WAVE_BIT_WIDTH_5 DWBW(4)" +.LASF245: + .string "__FLT128_MIN__ 3.36210314311209350626267781732175260e-4932F128" +.LASF608: + .string "ADC_DAUL_REGULAL_PARALLEL_INSERTED_PARALLEL CTL0_SYNCM(1)" +.LASF1004: + .string "RFIFO1_REG_OFFSET ((uint8_t)0x10U)" +.LASF2199: + .string "RCU_APB1EN_USART2EN BIT(18)" +.LASF138: + .string "__UINTPTR_MAX__ 0xffffffffU" +.LASF417: + .string "_INTMAX_T_DECLARED " +.LASF109: + .string "__INT_LEAST16_WIDTH__ 16" +.LASF2992: + .string "USART_CTL2_SCEN BIT(5)" +.LASF634: + .string "ADC0_1_EXTTRIG_INSERTED_T2_CH3 CTL1_ETSIC(4)" +.LASF2495: + .string "SPI_I2SCTL_DTLEN BITS(1,2)" +.LASF2532: + .string "I2S_AUDIOSAMPLE_8K ((uint32_t)8000U)" +.LASF954: + .string "CAN_BT_LCMOD BIT(30)" +.LASF1401: + .string "EXTI_EVEN_EVEN12 BIT(12)" +.LASF405: + .string "_INT8_T_DECLARED " +.LASF147: + .string "__FLT_MIN_EXP__ (-125)" +.LASF1136: + .string "DAC1_R8DH REG32(DAC + 0x1CU)" +.LASF2644: + .string "TIMER_DMAINTEN_UPIE BIT(0)" +.LASF1571: + .string "OB_WP_9 ((uint32_t)0x00000200U)" +.LASF2777: + .string "DMACFG_DMATA(regval) (BITS(0, 4) & ((uint32_t)(regval) << 0U))" +.LASF2617: + .string "TIMER_CTL0_CEN BIT(0)" +.LASF1631: + .string "GPIO_CTL0_MD6 BITS(24, 25)" +.LASF643: + .string "ADC_SAMPLETIME_41POINT5 SAMPTX_SPT(4)" +.LASF1177: + .string "DAC_TRIGGER_T1_TRGO CTL_DTSEL(4)" +.LASF1072: + .string "CAN_BT_BS1_16TQ ((uint8_t)0x0FU)" +.LASF2156: + .string "RCU_APB1RST_TIMER6RST BIT(5)" +.LASF1238: + .string "DMA_CH1MADDR(dmax) REG32((dmax) + 0x28U)" +.LASF1985: + .string "DATA_TRANS(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF689: + .string "ADC_OVERSAMPLING_ALL_CONVERT 0" +.LASF188: + .string "__LDBL_HAS_DENORM__ 1" +.LASF944: + .string "CAN_ERR_WERR BIT(0)" +.LASF2590: + .string "TIMER0 (TIMER_BASE + 0x00012C00U)" +.LASF1365: + .string "EXTI_EVEN REG32(EXTI + 0x04U)" +.LASF1090: + .string "CAN_SFID_MASK ((uint32_t)0x000007FFU)" +.LASF2140: + .string "RCU_APB2RST_AFRST BIT(0)" +.LASF161: + .string "__DBL_DIG__ 15" +.LASF1694: + .string "GPIO_BOP_BOP11 BIT(11)" +.LASF1877: + .string "GPIO_TIMER1ITI1_REMAP ((uint32_t)0x00202000U)" +.LASF2271: + .string "RCU_APB1_CKAHB_DIV16 CFG0_APB1PSC(7)" +.LASF1158: + .string "DAC0_R12DH_DAC0_DH BITS(0,11)" +.LASF183: + .string "__LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L" +.LASF763: + .string "BKP_TPCTL_TPAL BIT(1)" +.LASF7: + .string "__GNUC_PATCHLEVEL__ 0" +.LASF1619: + .string "GPIO_CTL0_MD0 BITS(0, 1)" +.LASF2924: + .string "TIMER_SLAVE_MODE_EXTERNAL0 SMCFG_SMC(7)" +.LASF2975: + .string "USART_CTL0_WM BIT(11)" +.LASF1993: + .string "FWDGT_CTL REG32((FWDGT) + 0x00000000U)" +.LASF2798: + .string "TIMER_DMACFG_DMATC_1TRANSFER DMACFG_DMATC(0)" +.LASF418: + .string "_UINTMAX_T_DECLARED " +.LASF1485: + .string "FMC FMC_BASE" +.LASF2786: + .string "TIMER_DMACFG_DMATA_CHCTL2 DMACFG_DMATA(8)" +.LASF1683: + .string "GPIO_BOP_BOP0 BIT(0)" +.LASF749: + .string "BKP_DATA37 REG16((BKP) + 0xACU)" +.LASF1940: + .string "I2C_STAT1_PECV BITS(8,15)" +.LASF1923: + .string "I2C_STAT0_STPDET BIT(4)" +.LASF902: + .string "CAN_TSTAT_MAL0 BIT(2)" +.LASF96: + .string "__INT8_MAX__ 0x7f" +.LASF1204: + .string "DAC_LFSR_BITS6_0 DAC_WAVE_BIT_WIDTH_7" +.LASF317: + .string "__riscv_zicsr 2000000" +.LASF2650: + .string "TIMER_DMAINTEN_TRGIE BIT(6)" +.LASF95: + .string "__SIG_ATOMIC_WIDTH__ 32" +.LASF699: + .string "ADC_OVERSAMPLING_SHIFT_7B OVSCR_OVSS(7)" +.LASF2307: + .string "RCU_PLL_MUL21 (PLLMF_4 | CFG0_PLLMF(4))" +.LASF2142: + .string "RCU_APB2RST_PBRST BIT(3)" +.LASF2654: + .string "TIMER_DMAINTEN_CH1DEN BIT(10)" +.LASF1675: + .string "GPIO_OCTL_OCTL8 BIT(8)" +.LASF997: + .string "CAN_REGIDX_BITS(regidx,bitpos0,bitpos1) (((uint32_t)(regidx) << 12) | ((uint32_t)(bitpos0) << 6) | (uint32_t)(bitpos1))" +.LASF1953: + .string "I2C_STAT0_REG_OFFSET 0x14U" +.LASF1715: + .string "GPIO_BC_CR0 BIT(0)" +.LASF3017: + .string "USART_PM_NONE CTL0_PM(0)" +.LASF1034: + .string "GET_RFIFOMDATA1_DB6(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF867: + .string "CAN_F24DATA1(canx) REG32((canx) + 0x304U)" +.LASF2706: + .string "TIMER_CHCTL1_CH3CAPFLT BITS(12,15)" +.LASF663: + .string "ADC_CHANNEL_3 ((uint8_t)0x03U)" +.LASF54: + .string "__UINT_LEAST16_TYPE__ short unsigned int" +.LASF1351: + .string "EXMC_SNTCFG(region) REG32(EXMC + 0x04U + 0x08U * (region))" +.LASF190: + .string "__LDBL_HAS_QUIET_NAN__ 1" +.LASF2329: + .string "RCU_CKOUT0SRC_CKPLL_DIV2 CFG0_CKOUT0SEL(7)" +.LASF1978: + .string "I2C_PEC_DISABLE ((uint32_t)0x00000000U)" +.LASF2054: + .string "PMU_CS_STBF BIT(1)" +.LASF2403: + .string "RCU_DEEPSLEEP_V_1_1 DSV_DSLPVS(1)" +.LASF2705: + .string "TIMER_CHCTL1_CH3CAPPSC BITS(10,11)" +.LASF1767: + .string "AFIO_EXTI1_SS BITS(4, 7)" +.LASF1774: + .string "AFIO_EXTI8_SS BITS(0, 3)" +.LASF2806: + .string "TIMER_DMACFG_DMATC_9TRANSFER DMACFG_DMATC(8)" +.LASF1802: + .string "GPIO_PORT_SOURCE_GPIOB ((uint8_t)0x01U)" +.LASF3086: + .string "_PTRDIFF_T_DECLARED " +.LASF435: + .string "INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)" +.LASF964: + .string "CAN_TMDATA0_DB0 BITS(0,7)" +.LASF1469: + .string "EXTI_PD_PD4 BIT(4)" +.LASF2778: + .string "TIMER_DMACFG_DMATA_CTL0 DMACFG_DMATA(0)" +.LASF1206: + .string "DAC_LFSR_BITS8_0 DAC_WAVE_BIT_WIDTH_9" +.LASF2808: + .string "TIMER_DMACFG_DMATC_11TRANSFER DMACFG_DMATC(10)" +.LASF2956: + .string "USART_STAT_RBNE BIT(5)" +.LASF1560: + .string "OB_WP2_WP2 ((uint32_t)0x00FF0000U)" +.LASF215: + .string "__FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32" +.LASF857: + .string "CAN_F14DATA1(canx) REG32((canx) + 0x2B4U)" +.LASF2831: + .string "TIMER_COUNTER_UP ((uint16_t)0x0000U)" +.LASF3182: + .string "short unsigned int" +.LASF741: + .string "BKP_DATA29 REG16((BKP) + 0x8CU)" +.LASF1322: + .string "DMA_MEMORY_TO_MEMORY_DISABLE ((uint32_t)0x00000000U)" +.LASF207: + .string "__FLT32_DIG__ 6" +.LASF900: + .string "CAN_TSTAT_MTF0 BIT(0)" +.LASF292: + .string "__GCC_ATOMIC_SHORT_LOCK_FREE 1" +.LASF1643: + .string "GPIO_CTL1_MD12 BITS(16, 17)" +.LASF1145: + .string "DAC_CTL_DTSEL0 BITS(3,5)" +.LASF2791: + .string "TIMER_DMACFG_DMATA_CH0CV DMACFG_DMATA(13)" +.LASF3128: + .string "N200_TIMER_H " +.LASF1144: + .string "DAC_CTL_DTEN0 BIT(2)" +.LASF575: + .string "ADC_CTL1_ETSIC BITS(12,14)" +.LASF3130: + .string "TIMER_MSIP_size 0x4" +.LASF2050: + .string "PMU_CTL_LVDEN BIT(4)" +.LASF3073: + .string "WWDGT_CFG_PSC_DIV8 CFG_PSC(3)" +.LASF2918: + .string "TIMER_ENCODER_MODE0 SMCFG_SMC(1)" +.LASF2454: + .string "SPI_CRCPOLY(spix) REG32((spix) + 0x10U)" +.LASF1862: + .string "GPIO_TIMER0_FULL_REMAP ((uint32_t)0x001600C0U)" +.LASF2748: + .string "TIMER_INT_FLAG_UP TIMER_INT_UP" +.LASF1320: + .string "DMA_PRIORITY_HIGH CHCTL_PRIO(2U)" +.LASF1546: + .string "OB_DEEPSLEEP_NRST ((uint8_t)0x02U)" +.LASF298: + .string "__GCC_HAVE_DWARF2_CFI_ASM 1" +.LASF896: + .string "CAN_STAT_TS BIT(8)" +.LASF1863: + .string "GPIO_TIMER1_PARTIAL_REMAP0 ((uint32_t)0x00180100U)" +.LASF411: + .string "_INT32_T_DECLARED " +.LASF1455: + .string "EXTI_SWIEV_SWIEV9 BIT(9)" +.LASF1668: + .string "GPIO_OCTL_OCTL1 BIT(1)" +.LASF2188: + .string "RCU_APB2EN_USART0EN BIT(14)" +.LASF1736: + .string "GPIO_LOCK_LK5 BIT(5)" +.LASF717: + .string "BKP_DATA5 REG16((BKP) + 0x18U)" +.LASF611: + .string "ADC_DAUL_INSERTED_PARALLEL_REGULAL_FOLLOWUP_SLOW CTL0_SYNCM(4)" +.LASF1274: + .string "DMA_CHXCTL_MNAGA BIT(7)" +.LASF2491: + .string "SPI_CRCPOLY_CRCPOLY BITS(0,15)" +.LASF2610: + .string "TIMER_CH0CV(timerx) REG32((timerx) + 0x34U)" +.LASF1900: + .string "I2C_CTL0_STOP BIT(9)" +.LASF1411: + .string "EXTI_RTEN_RTEN3 BIT(3)" +.LASF398: + .string "__FAST32 " +.LASF1250: + .string "DMA_CH4MADDR(dmax) REG32((dmax) + 0x64U)" +.LASF1381: + .string "EXTI_INTEN_INTEN11 BIT(11)" +.LASF66: + .string "__UINTPTR_TYPE__ unsigned int" +.LASF729: + .string "BKP_DATA17 REG16((BKP) + 0x5CU)" +.LASF1705: + .string "GPIO_BOP_CR6 BIT(22)" +.LASF303: + .string "__riscv 1" +.LASF3206: + .string "D:\\\\rt-thread\\\\bsp\\\\gd32\\\\risc-v\\\\gd32vf103v-eval" +.LASF145: + .string "__FLT_MANT_DIG__ 24" +.LASF467: + .string "UINT_FAST64_MAX (__UINT_FAST64_MAX__)" +.LASF2629: + .string "TIMER_CTL1_TI0S BIT(7)" +.LASF3010: + .string "CTL0_REN(regval) (BIT(2) & ((uint32_t)(regval) << 2))" +.LASF774: + .string "RTC_OUTPUT_SECOND_PULSE ((uint16_t)0x0200U)" +.LASF823: + .string "CAN_F8DATA0(canx) REG32((canx) + 0x280U)" +.LASF2999: + .string "USART_GP_GUAT BITS(8,15)" +.LASF2426: + .string "RTC_CTL_LWOFF BIT(5)" +.LASF1751: + .string "AFIO_PCF0_SPI0_REMAP BIT(0)" +.LASF1068: + .string "CAN_BT_BS1_12TQ ((uint8_t)0x0BU)" +.LASF656: + .string "ADC_INSERTED_CHANNEL_0 ((uint8_t)0x00U)" +.LASF1885: + .string "I2C_SADDR1(i2cx) REG32((i2cx) + 0x0CU)" +.LASF577: + .string "ADC_CTL1_ETSRC BITS(17,19)" +.LASF2858: + .string "TIMER_CH_2 ((uint16_t)0x0002U)" +.LASF1051: + .string "CAN_SILENT_MODE ((uint8_t)0x02U)" +.LASF2568: + .string "SPI_I2S_INT_FLAG_TBE ((uint8_t)0x00U)" +.LASF2846: + .string "TIMER_BREAK_POLARITY_HIGH ((uint16_t)TIMER_CCHP_BRKP)" +.LASF2621: + .string "TIMER_CTL0_DIR BIT(4)" +.LASF184: + .string "__LDBL_NORM_MAX__ 1.18973149535723176508575932662800702e+4932L" +.LASF375: + .string "signed" +.LASF974: + .string "CAN_RFIFOMI_EFID BITS(3,31)" +.LASF2736: + .string "TIMER_CCHP_POEN BIT(15)" +.LASF2507: + .string "SPI_BIDIRECTIONAL_TRANSMIT SPI_CTL0_BDOEN" +.LASF552: + .string "ADC_STAT_EOC BIT(1)" +.LASF353: + .string "__GNU_VISIBLE 0" +.LASF2890: + .string "TIMER_IC_POLARITY_BOTH_EDGE ((uint16_t)0x000AU)" +.LASF2378: + .string "RCU_PLL1_MUL12 CFG1_PLL1MF(10)" +.LASF1638: + .string "GPIO_CTL1_CTL9 BITS(6, 7)" +.LASF1441: + .string "EXTI_FTEN_FTEN14 BIT(14)" +.LASF1543: + .string "WS_WSCNT_2 WS_WSCNT(2)" +.LASF2633: + .string "TIMER_CTL1_ISO1N BIT(11)" +.LASF1251: + .string "DMA_CH5CTL(dmax) REG32((dmax) + 0x6CU)" +.LASF2178: + .string "RCU_APB2EN_AFEN BIT(0)" +.LASF1272: + .string "DMA_CHXCTL_CMEN BIT(5)" +.LASF2185: + .string "RCU_APB2EN_ADC1EN BIT(10)" +.LASF279: + .string "__FLT64X_HAS_INFINITY__ 1" +.LASF1180: + .string "DAC_TRIGGER_SOFTWARE CTL_DTSEL(7)" +.LASF1618: + .string "AFIO_PCF1 REG32(AFIO + 0x1CU)" +.LASF2349: + .string "RCU_PREDV0_DIV10 CFG1_PREDV0(9)" +.LASF2205: + .string "RCU_APB1EN_CAN1EN BIT(26)" +.LASF222: + .string "__FLT64_DIG__ 15" +.LASF2788: + .string "TIMER_DMACFG_DMATA_PSC DMACFG_DMATA(10)" +.LASF2845: + .string "TIMER_BREAK_POLARITY_LOW ((uint16_t)0x0000U)" +.LASF4: + .string "__STDC_HOSTED__ 1" +.LASF1364: + .string "EXTI_INTEN REG32(EXTI + 0x00U)" +.LASF675: + .string "ADC_CHANNEL_15 ((uint8_t)0x0FU)" +.LASF401: + .string "__LEAST16 \"h\"" +.LASF1540: + .string "WS_WSCNT(regval) (BITS(0,2) & ((uint32_t)(regval)))" +.LASF1448: + .string "EXTI_SWIEV_SWIEV2 BIT(2)" +.LASF2878: + .string "TIMER_OC_MODE_PWM0 ((uint16_t)0x0060U)" +.LASF2676: + .string "TIMER_SWEVG_CMTG BIT(5)" +.LASF2153: + .string "RCU_APB1RST_TIMER3RST BIT(2)" +.LASF1247: + .string "DMA_CH4CTL(dmax) REG32((dmax) + 0x58U)" +.LASF3022: + .string "USART_WM_ADDR CTL0_WM(1)" +.LASF1990: + .string "I2C_ADDFORMAT_10BITS I2C_SADDR0_ADDFORMAT" +.LASF1197: + .string "DAC_WAVE_BIT_WIDTH_12 DWBW(11)" +.LASF1624: + .string "GPIO_CTL0_CTL2 BITS(10, 11)" +.LASF3158: + .string "ECLIC_CFG_NLBITS_MASK _AC(0x1E,UL)" +.LASF2244: + .string "BDCTL_REG_OFFSET 0x20U" +.LASF1214: + .string "DAC_TRIANGLE_AMPLITUDE_1 DAC_WAVE_BIT_WIDTH_1" +.LASF1318: + .string "DMA_PRIORITY_LOW CHCTL_PRIO(0U)" +.LASF3029: + .string "USART_STB_2BIT CTL1_STB(2)" +.LASF3053: + .string "USART_CTS_ENABLE CLT2_CTSEN(1)" +.LASF2962: + .string "USART_BAUD_FRADIV BITS(0,3)" +.LASF2619: + .string "TIMER_CTL0_UPS BIT(2)" +.LASF1787: + .string "GPIO_MODE_IPD ((uint8_t)0x28U)" +.LASF475: + .string "PTRDIFF_MIN (-PTRDIFF_MAX - 1)" +.LASF2179: + .string "RCU_APB2EN_PAEN BIT(2)" +.LASF2169: + .string "RCU_APB1RST_PMURST BIT(28)" +.LASF1354: + .string "EXMC_NOR_DATABUS_WIDTH_16B SNCTL_NRW(1)" +.LASF923: + .string "CAN_RFIFO0_RFF0 BIT(3)" +.LASF2031: + .string "DBG_CTL_TIMER3_HOLD BIT(13)" +.LASF849: + .string "CAN_F6DATA1(canx) REG32((canx) + 0x274U)" +.LASF1551: + .string "OB_USER_MASK ((uint8_t)0xF0U)" +.LASF1519: + .string "FMC_ADDR0_ADDR BITS(0,31)" +.LASF1824: + .string "GPIO_PIN_SOURCE_2 ((uint8_t)0x02U)" +.LASF549: + .string "ADC_RDATA(adcx) REG32((adcx) + 0x4CU)" +.LASF1677: + .string "GPIO_OCTL_OCTL10 BIT(10)" +.LASF2598: + .string "TIMER_CTL1(timerx) REG32((timerx) + 0x04U)" +.LASF2292: + .string "RCU_PLL_MUL6 CFG0_PLLMF(4)" +.LASF1894: + .string "I2C_CTL0_SMBSEL BIT(3)" +.LASF2752: + .string "TIMER_INT_FLAG_CH3 TIMER_INT_CH3" +.LASF1312: + .string "DMA_PERIPHERAL_WIDTH_32BIT CHCTL_PWIDTH(2U)" +.LASF2971: + .string "USART_CTL0_TBEIE BIT(7)" +.LASF2747: + .string "TIMER_INT_BRK TIMER_DMAINTEN_BRKIE" +.LASF3197: + .string "pllmf" +.LASF1156: + .string "DAC_SWT_SWTR0 BIT(0)" +.LASF2892: + .string "TIMER_IC_SELECTION_INDIRECTTI ((uint16_t)0x0002U)" +.LASF887: + .string "CAN_CTL_ABOR BIT(6)" +.LASF26: + .string "__ORDER_LITTLE_ENDIAN__ 1234" +.LASF2470: + .string "SPI_CTL0_CRCEN BIT(13)" +.LASF1123: + .string "CRC_FDATA_FDATA BITS(0, 7)" +.LASF983: + .string "CAN_RFIFOMDATA1_DB4 BITS(0,7)" +.LASF818: + .string "CAN_F3DATA0(canx) REG32((canx) + 0x258U)" +.LASF1348: + .string "EXMC_SNTCFG_DSET BITS(8,15)" +.LASF3187: + .string "long long unsigned int" +.LASF2044: + .string "PMU_CTL REG32((PMU) + 0x00U)" +.LASF2264: + .string "RCU_AHB_CKSYS_DIV256 CFG0_AHBPSC(14)" +.LASF2615: + .string "TIMER_DMACFG(timerx) REG32((timerx) + 0x48U)" +.LASF171: + .string "__DBL_DENORM_MIN__ ((double)4.94065645841246544176568792868221372e-324L)" +.LASF986: + .string "CAN_RFIFOMDATA1_DB7 BITS(24,31)" +.LASF1313: + .string "CHCTL_MWIDTH(regval) (BITS(10,11) & ((uint32_t)(regval) << 10))" +.LASF856: + .string "CAN_F13DATA1(canx) REG32((canx) + 0x2ACU)" +.LASF1119: + .string "CRC_DATA REG32(CRC + 0x00U)" +.LASF473: + .string "SIG_ATOMIC_MAX (__STDINT_EXP(INT_MAX))" +.LASF2075: + .string "GD32VF103_RCU_H " +.LASF784: + .string "CAN_TSTAT(canx) REG32((canx) + 0x08U)" +.LASF2275: + .string "RCU_APB2_CKAHB_DIV4 CFG0_APB2PSC(5)" +.LASF1518: + .string "FMC_CTL_ENDIE BIT(12)" +.LASF1398: + .string "EXTI_EVEN_EVEN9 BIT(9)" +.LASF1280: + .string "DMA_CHXPADDR_PADDR BITS(0,31)" +.LASF899: + .string "CAN_STAT_RXL BIT(11)" +.LASF1539: + .string "UNLOCK_KEY1 ((uint32_t)0xCDEF89ABU)" +.LASF1970: + .string "I2C_GCEN_DISABLE ((uint32_t)0x00000000U)" +.LASF2934: + .string "TIMER_HALLINTERFACE_ENABLE TIMER_CTL1_TI0S" +.LASF940: + .string "CAN_INTEN_ERRNIE BIT(11)" +.LASF724: + .string "BKP_DATA12 REG16((BKP) + 0x48U)" +.LASF3178: + .string "unsigned char" +.LASF1406: + .string "EXTI_EVEN_EVEN17 BIT(17)" +.LASF3028: + .string "USART_STB_0_5BIT CTL1_STB(1)" +.LASF2662: + .string "TIMER_INTF_CH2IF BIT(3)" +.LASF2514: + .string "SPI_FRAMESIZE_8BIT ((uint32_t)0x00000000U)" +.LASF248: + .string "__FLT128_HAS_DENORM__ 1" +.LASF1088: + .string "CAN_FIFO1 ((uint8_t)0x01U)" +.LASF2749: + .string "TIMER_INT_FLAG_CH0 TIMER_INT_CH0" +.LASF2837: + .string "TIMER_SP_MODE_SINGLE TIMER_CTL0_SPM" +.LASF786: + .string "CAN_RFIFO1(canx) REG32((canx) + 0x10U)" +.LASF1972: + .string "I2C_SRESET_RESET ((uint32_t)0x00000000U)" +.LASF2095: + .string "RCU_CTL_HXTALSTB BIT(17)" +.LASF1699: + .string "GPIO_BOP_CR0 BIT(16)" +.LASF1647: + .string "GPIO_CTL1_MD14 BITS(24, 25)" +.LASF2714: + .string "TIMER_CHCTL2_CH1NP BIT(7)" +.LASF1660: + .string "GPIO_ISTAT_ISTAT9 BIT(9)" +.LASF1952: + .string "I2C_CTL1_REG_OFFSET 0x04U" +.LASF2759: + .string "TIMER_FLAG_CH2 TIMER_INTF_CH2IF" +.LASF2921: + .string "TIMER_SLAVE_MODE_RESTART SMCFG_SMC(4)" +.LASF2579: + .string "SPI_FLAG_RXORERR SPI_STAT_RXORERR" +.LASF2295: + .string "RCU_PLL_MUL9 CFG0_PLLMF(7)" +.LASF705: + .string "ADC_OVERSAMPLING_RATIO_MUL16 OVSCR_OVSR(3)" +.LASF1931: + .string "I2C_STAT0_SMBTO BIT(14)" +.LASF1696: + .string "GPIO_BOP_BOP13 BIT(13)" +.LASF1224: + .string "DAC_TRIANGLE_AMPLITUDE_2047 DAC_WAVE_BIT_WIDTH_11" +.LASF2864: + .string "TIMER_OC_POLARITY_HIGH ((uint16_t)0x0000U)" +.LASF1712: + .string "GPIO_BOP_CR13 BIT(29)" +.LASF2125: + .string "RCU_INT_IRC40KSTBIE BIT(8)" +.LASF1461: + .string "EXTI_SWIEV_SWIEV15 BIT(15)" +.LASF1735: + .string "GPIO_LOCK_LK4 BIT(4)" +.LASF1816: + .string "GPIO_EVENT_PIN_10 ((uint8_t)0x0AU)" +.LASF463: + .string "INT_FAST32_MAX (__INT_FAST32_MAX__)" +.LASF2709: + .string "TIMER_CHCTL2_CH0NEN BIT(2)" +.LASF1998: + .string "FWDGT_PSC_PSC BITS(0,2)" +.LASF2586: + .string "I2S_FLAG_RXORERR SPI_STAT_RXORERR" +.LASF2693: + .string "TIMER_CHCTL1_CH2MS BITS(0,1)" +.LASF1981: + .string "I2C_SALTSEND_ENABLE I2C_CTL0_SALT" +.LASF1026: + .string "GET_RFIFOMP_DLENC(regval) GET_BITS((uint32_t)(regval), 0U, 3U)" +.LASF2543: + .string "I2S_FRAMEFORMAT_DT16B_CH32B (I2SCTL_DTLEN(0) | SPI_I2SCTL_CHLEN)" +.LASF2469: + .string "SPI_CTL0_CRCNT BIT(12)" +.LASF1846: + .string "GPIO_PIN_8 BIT(8)" +.LASF2903: + .string "TIMER_SMCFG_TRGSEL_CI0F_ED SMCFG_TRGSEL(4)" +.LASF527: + .string "GD32VF103_ADC_H " +.LASF265: + .string "__FLT32X_HAS_QUIET_NAN__ 1" +.LASF841: + .string "CAN_F26DATA0(canx) REG32((canx) + 0x310U)" +.LASF347: + .string "__NEWLIB_MINOR__ 1" +.LASF1284: + .string "DMA_CHCNT(dma,channel) REG32(((dma) + 0x0CU) + 0x14U * (uint32_t)(channel))" +.LASF981: + .string "CAN_RFIFOMDATA0_DB2 BITS(16,23)" +.LASF2332: + .string "RCU_CKOUT0SRC_EXT1 CFG0_CKOUT0SEL(10)" +.LASF1391: + .string "EXTI_EVEN_EVEN2 BIT(2)" +.LASF186: + .string "__LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L" +.LASF578: + .string "ADC_CTL1_ETERC BIT(20)" +.LASF402: + .string "__LEAST32 \"l\"" +.LASF581: + .string "ADC_CTL1_TSVREN BIT(23)" +.LASF1507: + .string "FMC_STAT_WPERR BIT(4)" +.LASF271: + .string "__FLT64X_MAX_10_EXP__ 4932" +.LASF1368: + .string "EXTI_SWIEV REG32(EXTI + 0x10U)" +.LASF1509: + .string "FMC_CTL_PG BIT(0)" +.LASF2762: + .string "TIMER_FLAG_TRG TIMER_INTF_TRGIF" +.LASF2591: + .string "TIMER1 (TIMER_BASE + 0x00000000U)" +.LASF1409: + .string "EXTI_RTEN_RTEN1 BIT(1)" +.LASF1038: + .string "GET_ERR_RECNT(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF2513: + .string "SPI_FRAMESIZE_16BIT SPI_CTL0_FF16" +.LASF285: + .string "__CHAR_UNSIGNED__ 1" +.LASF596: + .string "ADC_OVSCR_TOVS BIT(9)" +.LASF2732: + .string "TIMER_CCHP_ROS BIT(11)" +.LASF1642: + .string "GPIO_CTL1_CTL11 BITS(14, 15)" +.LASF1968: + .string "I2C_SCLSTRETCH_DISABLE I2C_CTL0_SS" +.LASF893: + .string "CAN_STAT_ERRIF BIT(2)" +.LASF1349: + .string "EXMC_SNTCFG_BUSLAT BITS(16,19)" +.LASF1314: + .string "DMA_MEMORY_WIDTH_8BIT CHCTL_MWIDTH(0U)" +.LASF2226: + .string "RCU_CFG1_PREDV1 BITS(4,7)" +.LASF123: + .string "__UINT64_C(c) c ## ULL" +.LASF3126: + .string "offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)" +.LASF2694: + .string "TIMER_CHCTL1_CH2COMFEN BIT(2)" +.LASF3133: + .string "TIMER_MTIME 0x0" +.LASF1607: + .string "GPIO_ISTAT(gpiox) REG32((gpiox) + 0x08U)" +.LASF486: + .string "INT64_C(x) __INT64_C(x)" +.LASF971: + .string "CAN_TMDATA1_DB7 BITS(24,31)" +.LASF169: + .string "__DBL_MIN__ ((double)2.22507385850720138309023271733240406e-308L)" +.LASF2873: + .string "TIMER_OC_MODE_ACTIVE ((uint16_t)0x0010U)" +.LASF1294: + .string "DMA_INT_FLAG_HTF DMA_INTF_HTFIF" +.LASF831: + .string "CAN_F16DATA0(canx) REG32((canx) + 0x2C0U)" +.LASF299: + .string "__PRAGMA_REDEFINE_EXTNAME 1" +.LASF655: + .string "ADC_CHANNEL_DISCON_DISABLE ((uint8_t)0x04U)" +.LASF520: + .string "DMA_BASE (AHB1_BUS_BASE + 0x00008000U)" +.LASF1118: + .string "CRC CRC_BASE" +.LASF1394: + .string "EXTI_EVEN_EVEN5 BIT(5)" +.LASF848: + .string "CAN_F5DATA1(canx) REG32((canx) + 0x26CU)" +.LASF885: + .string "CAN_CTL_ARD BIT(4)" +.LASF2973: + .string "USART_CTL0_PM BIT(9)" +.LASF1639: + .string "GPIO_CTL1_MD10 BITS(8, 9)" +.LASF559: + .string "ADC_CTL0_EOICIE BIT(7)" +.LASF875: + .string "CAN_FDATA0(canx,bank) REG32((canx) + 0x240U + ((bank) * 0x8U) + 0x0U)" +.LASF914: + .string "CAN_TSTAT_MST2 BIT(23)" +.LASF3094: + .string "__SIZE_T " +.LASF2486: + .string "SPI_STAT_CONFERR BIT(5)" +.LASF1873: + .string "GPIO_CAN1_REMAP ((uint32_t)0x00200040U)" +.LASF2316: + .string "RCU_PLL_MUL30 (PLLMF_4 | CFG0_PLLMF(13))" +.LASF348: + .string "__NEWLIB_PATCHLEVEL__ 0" +.LASF3154: + .string "ECLIC_INT_ATTR_TRIG_POS 0x00" +.LASF1741: + .string "GPIO_LOCK_LK10 BIT(10)" +.LASF1839: + .string "GPIO_PIN_1 BIT(1)" +.LASF344: + .string "_NEWLIB_VERSION_H__ 1" +.LASF1345: + .string "EXMC_SNCTL_ASYNCWAIT BIT(15)" +.LASF1620: + .string "GPIO_CTL0_CTL0 BITS(2, 3)" +.LASF1100: + .string "CAN_FT_DATA ((uint32_t)0x00000000U)" +.LASF1835: + .string "GPIO_PIN_SOURCE_13 ((uint8_t)0x0DU)" +.LASF493: + .string "BIT(x) ((uint32_t)((uint32_t)0x01U<<(x)))" +.LASF291: + .string "__GCC_ATOMIC_WCHAR_T_LOCK_FREE 2" +.LASF2671: + .string "TIMER_SWEVG_UPG BIT(0)" +.LASF2099: + .string "RCU_CTL_PLLSTB BIT(25)" +.LASF2595: + .string "TIMER5 (TIMER_BASE + 0x00001000U)" +.LASF2957: + .string "USART_STAT_TC BIT(6)" +.LASF1487: + .string "FMC_WS REG32((FMC) + 0x00U)" +.LASF2740: + .string "TIMER_INT_UP TIMER_DMAINTEN_UPIE" +.LASF3051: + .string "USART_RTS_DISABLE CLT2_RTSEN(0)" +.LASF2572: + .string "SPI_INT_FLAG_CRCERR ((uint8_t)0x04U)" +.LASF1836: + .string "GPIO_PIN_SOURCE_14 ((uint8_t)0x0EU)" +.LASF1135: + .string "DAC1_L12DH REG32(DAC + 0x18U)" +.LASF2299: + .string "RCU_PLL_MUL13 CFG0_PLLMF(11)" +.LASF60: + .string "__INT_FAST64_TYPE__ long long int" +.LASF1149: + .string "DAC_CTL_DEN1 BIT(16)" +.LASF2651: + .string "TIMER_DMAINTEN_BRKIE BIT(7)" +.LASF2478: + .string "SPI_CTL1_ERRIE BIT(5)" +.LASF2933: + .string "TIMER_ETP_RISING ((uint32_t)0x00000000U)" +.LASF908: + .string "CAN_TSTAT_MTE1 BIT(11)" +.LASF197: + .string "__FLT16_DECIMAL_DIG__ 5" +.LASF498: + .string "OB_BASE ((uint32_t)0x1FFFF800U)" +.LASF1547: + .string "OB_DEEPSLEEP_RST ((uint8_t)0x00U)" +.LASF1615: + .string "AFIO_EXTISS1 REG32(AFIO + 0x0CU)" +.LASF2256: + .string "CFG0_AHBPSC(regval) (BITS(4,7) & ((uint32_t)(regval) << 4))" +.LASF247: + .string "__FLT128_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F128" +.LASF863: + .string "CAN_F20DATA1(canx) REG32((canx) + 0x2E4U)" +.LASF2979: + .string "USART_CTL1_LBLEN BIT(5)" +.LASF2073: + .string "WFI_CMD ((uint8_t)0x00U)" +.LASF2105: + .string "RCU_CFG0_SCSS BITS(2,3)" +.LASF22: + .string "__SIZEOF_LONG_DOUBLE__ 16" +.LASF21: + .string "__SIZEOF_DOUBLE__ 8" +.LASF149: + .string "__FLT_MAX_EXP__ 128" +.LASF815: + .string "CAN_F0DATA0(canx) REG32((canx) + 0x240U)" +.LASF2636: + .string "TIMER_CTL1_ISO3 BIT(14)" +.LASF619: + .string "ADC_CONTINUOUS_MODE ADC_CTL1_CTN" +.LASF2371: + .string "RCU_PREDV1_DIV15 CFG1_PREDV1(14)" +.LASF1917: + .string "I2C_SADDR1_ADDRESS2 BITS(1,7)" +.LASF2504: + .string "SPI_I2SPSC_MCKOEN BIT(9)" +.LASF144: + .string "__FLT_RADIX__ 2" +.LASF1831: + .string "GPIO_PIN_SOURCE_9 ((uint8_t)0x09U)" +.LASF2884: + .string "TIMER_OC_CLEAR_ENABLE ((uint16_t)0x0080U)" +.LASF1962: + .string "I2C_ACK_ENABLE ((uint32_t)0x00000001U)" +.LASF1813: + .string "GPIO_EVENT_PIN_7 ((uint8_t)0x07U)" +.LASF2193: + .string "RCU_APB1EN_TIMER5EN BIT(4)" +.LASF966: + .string "CAN_TMDATA0_DB2 BITS(16,23)" +.LASF731: + .string "BKP_DATA19 REG16((BKP) + 0x64U)" +.LASF111: + .string "__INT32_C(c) c ## L" +.LASF934: + .string "CAN_INTEN_RFNEIE1 BIT(4)" +.LASF2098: + .string "RCU_CTL_PLLEN BIT(24)" +.LASF1342: + .string "EXMC_SNCTL_NRWTPOL BIT(9)" +.LASF1946: + .string "I2C_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF1269: + .string "DMA_CHXCTL_HTFIE BIT(2)" +.LASF2790: + .string "TIMER_DMACFG_DMATA_CREP DMACFG_DMATA(12)" +.LASF518: + .string "GPIO_BASE (APB2_BUS_BASE + 0x00000800U)" +.LASF2905: + .string "TIMER_SMCFG_TRGSEL_CI1FE1 SMCFG_TRGSEL(6)" +.LASF1528: + .string "FMC_REG_VAL(offset) (REG32(FMC + ((uint32_t)(offset) >> 6)))" +.LASF82: + .string "__LONG_WIDTH__ 32" +.LASF2863: + .string "TIMER_CCXN_DISABLE ((uint16_t)0x0000U)" +.LASF737: + .string "BKP_DATA25 REG16((BKP) + 0x7CU)" +.LASF2646: + .string "TIMER_DMAINTEN_CH1IE BIT(2)" +.LASF2233: + .string "RCU_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF14: + .string "__ATOMIC_CONSUME 1" +.LASF2326: + .string "RCU_CKOUT0SRC_CKSYS CFG0_CKOUT0SEL(4)" +.LASF3150: + .string "ECLIC_INT_ATTR_OFFSET _AC(0x1002,UL)" +.LASF216: + .string "__FLT32_EPSILON__ 1.19209289550781250000000000000000000e-7F32" +.LASF2794: + .string "TIMER_DMACFG_DMATA_CH3CV DMACFG_DMATA(16)" +.LASF341: + .string "_STDINT_H " +.LASF1430: + .string "EXTI_FTEN_FTEN3 BIT(3)" +.LASF419: + .string "_INTPTR_T_DECLARED " +.LASF1125: + .string "GD32VF103_DAC_H " +.LASF2843: + .string "TIMER_IOS_STATE_ENABLE ((uint16_t)TIMER_CCHP_IOS)" +.LASF1884: + .string "I2C_SADDR0(i2cx) REG32((i2cx) + 0x08U)" +.LASF1024: + .string "GET_RFIFOMI_EFID(regval) GET_BITS((uint32_t)(regval), 3U, 31U)" +.LASF2111: + .string "RCU_CFG0_PREDV0_LSB BIT(17)" +.LASF354: + .string "__ISO_C_VISIBLE 2011" +.LASF2382: + .string "RCU_PLL1_MUL16 CFG1_PLL1MF(14)" +.LASF1032: + .string "GET_RFIFOMDATA1_DB4(regval) GET_BITS((uint32_t)(regval), 0U, 7U)" +.LASF2648: + .string "TIMER_DMAINTEN_CH3IE BIT(4)" +.LASF2801: + .string "TIMER_DMACFG_DMATC_4TRANSFER DMACFG_DMATC(3)" +.LASF2374: + .string "RCU_PLL1_MUL8 CFG1_PLL1MF(6)" +.LASF3026: + .string "CTL1_STB(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF2780: + .string "TIMER_DMACFG_DMATA_SMCFG DMACFG_DMATA(2)" +.LASF1479: + .string "EXTI_PD_PD14 BIT(14)" +.LASF1213: + .string "DAC_ALIGN_8B_R DATA_ALIGN(2)" +.LASF2187: + .string "RCU_APB2EN_SPI0EN BIT(12)" +.LASF2968: + .string "USART_CTL0_IDLEIE BIT(4)" +.LASF2416: + .string "RTC_ALRMH REG32(RTC + 0x20U)" +.LASF1167: + .string "DACC_L12DH_DAC1_DH BITS(20,31)" +.LASF962: + .string "CAN_TMP_TSEN BIT(8)" +.LASF178: + .string "__LDBL_MIN_10_EXP__ (-4931)" +.LASF13: + .string "__ATOMIC_ACQ_REL 4" +.LASF3157: + .string "ECLIC_ADDR_BASE 0xd2000000" +.LASF1982: + .string "I2C_SALTSEND_DISABLE ((uint32_t)0x00000000U)" +.LASF2519: + .string "SPI_CK_PL_LOW_PH_1EDGE ((uint32_t)0x00000000U)" +.LASF213: + .string "__FLT32_MAX__ 3.40282346638528859811704183484516925e+38F32" +.LASF2377: + .string "RCU_PLL1_MUL11 CFG1_PLL1MF(9)" +.LASF725: + .string "BKP_DATA13 REG16((BKP) + 0x4CU)" +.LASF1878: + .string "GPIO_EXMC_NADV_REMAP ((uint32_t)0x80000400U)" +.LASF730: + .string "BKP_DATA18 REG16((BKP) + 0x60U)" +.LASF1008: + .string "BT_BS2(regval) (BITS(20,22) & ((uint32_t)(regval) << 20))" +.LASF2815: + .string "TIMER_DMACFG_DMATC_18TRANSFER DMACFG_DMATC(17)" +.LASF692: + .string "ADC_OVERSAMPLING_SHIFT_NONE OVSCR_OVSS(0)" +.LASF1992: + .string "FWDGT FWDGT_BASE" +.LASF1422: + .string "EXTI_RTEN_RTEN14 BIT(14)" +.LASF3184: + .string "__uint32_t" +.LASF116: + .string "__UINT_LEAST8_MAX__ 0xff" +.LASF1682: + .string "GPIO_OCTL_OCTL15 BIT(15)" +.LASF1933: + .string "I2C_STAT1_MASTER BIT(0)" +.LASF3059: + .string "WWDGT WWDGT_BASE" +.LASF3001: + .string "USART_REG_VAL(usartx,offset) (REG32((usartx) + (((uint32_t)(offset) & (0x0000FFFFU)) >> 6)))" +.LASF2321: + .string "RCU_CKUSB_CKPLL_DIV1 CFG0_USBPSC(1)" +.LASF474: + .string "PTRDIFF_MAX (__PTRDIFF_MAX__)" +.LASF930: + .string "CAN_INTEN_TMEIE BIT(0)" +.LASF1270: + .string "DMA_CHXCTL_ERRIE BIT(3)" +.LASF2419: + .string "RTC_INTEN_ALRMIE BIT(1)" +.LASF2902: + .string "TIMER_SMCFG_TRGSEL_ITI3 SMCFG_TRGSEL(3)" +.LASF2338: + .string "RCU_RTCSRC_HXTAL_DIV_128 BDCTL_RTCSRC(3)" +.LASF256: + .string "__FLT32X_MAX_10_EXP__ 308" +.LASF1848: + .string "GPIO_PIN_10 BIT(10)" +.LASF876: + .string "CAN_FDATA1(canx,bank) REG32((canx) + 0x240U + ((bank) * 0x8U) + 0x4U)" +.LASF803: + .string "CAN_RFIFOMP0(canx) REG32((canx) + 0x1B4U)" +.LASF2167: + .string "RCU_APB1RST_CAN1RST BIT(26)" +.LASF2923: + .string "TIMER_SLAVE_MODE_EVENT SMCFG_SMC(6)" +.LASF793: + .string "CAN_TMDATA10(canx) REG32((canx) + 0x18CU)" +.LASF162: + .string "__DBL_MIN_EXP__ (-1021)" +.LASF482: + .string "INT16_C(x) __INT16_C(x)" +.LASF10: + .string "__ATOMIC_SEQ_CST 5" +.LASF1646: + .string "GPIO_CTL1_CTL13 BITS(22, 23)" +.LASF1871: + .string "GPIO_PD01_REMAP ((uint32_t)0x00008000U)" +.LASF2087: + .string "RCU_AHBRST REG32(RCU + 0x28U)" +.LASF928: + .string "CAN_RFIFO1_RFO1 BIT(4)" +.LASF1604: + .string "AFIO AFIO_BASE" +.LASF1355: + .string "SNCTL_NRTP(regval) (BITS(2,3) & ((uint32_t)(regval) << 2))" +.LASF843: + .string "CAN_F0DATA1(canx) REG32((canx) + 0x244U)" +.LASF1719: + .string "GPIO_BC_CR4 BIT(4)" +.LASF1221: + .string "DAC_TRIANGLE_AMPLITUDE_255 DAC_WAVE_BIT_WIDTH_8" +.LASF2630: + .string "TIMER_CTL1_ISO0 BIT(8)" +.LASF3116: + .string "_WCHAR_T_H " +.LASF2032: + .string "DBG_CTL_CAN0_HOLD BIT(14)" +.LASF2919: + .string "TIMER_ENCODER_MODE1 SMCFG_SMC(2)" +.LASF250: + .string "__FLT128_HAS_QUIET_NAN__ 1" +.LASF2887: + .string "TIMER_UPDATECTL_CCUTRI TIMER_CTL1_CCUC" +.LASF544: + .string "ADC_ISQ(adcx) REG32((adcx) + 0x38U)" +.LASF2462: + .string "SPI_CTL0_PSC BITS(3,5)" +.LASF963: + .string "CAN_TMP_TS BITS(16,31)" +.LASF584: + .string "ADC_WDHT_WDHT BITS(0,11)" +.LASF2218: + .string "RCU_RSTSCK_EPRSTF BIT(26)" +.LASF3064: + .string "WWDGT_CTL_WDGTEN BIT(7)" +.LASF3018: + .string "USART_PM_EVEN CTL0_PM(2)" +.LASF3093: + .string "_T_SIZE " +.LASF481: + .string "UINT8_C(x) __UINT8_C(x)" +.LASF779: + .string "GD32VF103_CAN_H " +.LASF65: + .string "__INTPTR_TYPE__ int" +.LASF1969: + .string "I2C_GCEN_ENABLE I2C_CTL0_GCEN" +.LASF1771: + .string "AFIO_EXTI5_SS BITS(4, 7)" +.LASF2528: + .string "SPI_PSC_32 CTL0_PSC(4)" +.LASF1906: + .string "I2C_CTL1_I2CCLK BITS(0,5)" +.LASF508: + .string "FWDGT_BASE (APB1_BUS_BASE + 0x00003000U)" +.LASF646: + .string "ADC_SAMPLETIME_239POINT5 SAMPTX_SPT(7)" +.LASF1305: + .string "DMA_PERIPH_INCREASE_DISABLE ((uint8_t)0x00U)" +.LASF1783: + .string "GPIO_MODE_SET(n,mode) ((uint32_t)((uint32_t)(mode) << (4U * (n))))" +.LASF1152: + .string "DAC_CTL_DTSEL1 BITS(19,21)" +.LASF36: + .string "__INTMAX_TYPE__ long long int" +.LASF1303: + .string "DMA_PERIPHERAL_TO_MEMORY ((uint8_t)0x00U)" +.LASF764: + .string "BKP_TPCS_TER BIT(0)" +.LASF3132: + .string "TIMER_MTIMECMP_size 0x8" +.LASF2922: + .string "TIMER_SLAVE_MODE_PAUSE SMCFG_SMC(5)" +.LASF2627: + .string "TIMER_CTL1_DMAS BIT(3)" +.LASF495: + .string "GET_BITS(regval,start,end) (((regval) & BITS((start),(end))) >> (start))" +.LASF2954: + .string "USART_STAT_ORERR BIT(3)" +.LASF825: + .string "CAN_F10DATA0(canx) REG32((canx) + 0x290U)" +.LASF2017: + .string "FWDGT_FLAG_RUD FWDGT_STAT_RUD" +.LASF2408: + .string "RTC_INTEN REG32(RTC + 0x00U)" +.LASF461: + .string "UINT_FAST16_MAX (__UINT_FAST16_MAX__)" +.LASF1590: + .string "OB_WP_28 ((uint32_t)0x10000000U)" +.LASF2383: + .string "RCU_PLL1_MUL20 CFG1_PLL1MF(15)" +.LASF1996: + .string "FWDGT_STAT REG32((FWDGT) + 0x0000000CU)" +.LASF671: + .string "ADC_CHANNEL_11 ((uint8_t)0x0BU)" +.LASF1672: + .string "GPIO_OCTL_OCTL5 BIT(5)" +.LASF2716: + .string "TIMER_CHCTL2_CH2P BIT(9)" +.LASF810: + .string "CAN_FCTL(canx) REG32((canx) + 0x200U)" +.LASF1129: + .string "DAC_CTL REG32(DAC + 0x00U)" +.LASF1053: + .string "CAN_BT_SJW_1TQ ((uint8_t)0x00U)" +.LASF2742: + .string "TIMER_INT_CH1 TIMER_DMAINTEN_CH1IE" +.LASF2834: + .string "TIMER_CKDIV_DIV1 CTL0_CKDIV(0)" +.LASF2937: + .string "TIMER_CHVSEL_DISABLE ((uint16_t)0x0000U)" +.LASF2680: + .string "TIMER_CHCTL0_CH0COMFEN BIT(2)" +.LASF1494: + .string "FMC_WP REG32((FMC) + 0x20U)" +.LASF89: + .string "__INTMAX_C(c) c ## LL" +.LASF2046: + .string "PMU_CTL_LDOLP BIT(0)" +.LASF864: + .string "CAN_F21DATA1(canx) REG32((canx) + 0x2ECU)" +.LASF3106: + .string "__wchar_t__ " +.LASF2314: + .string "RCU_PLL_MUL28 (PLLMF_4 | CFG0_PLLMF(11))" +.LASF2398: + .string "RCU_I2S1SRC_CKPLL2_MUL2 RCU_CFG1_I2S1SEL" +.LASF302: + .string "__SIZEOF_PTRDIFF_T__ 4" +.LASF2827: + .string "TIMER_COUNTER_CENTER_UP CTL0_CAM(2)" +.LASF1516: + .string "FMC_CTL_OBWEN BIT(9)" +.LASF890: + .string "CAN_CTL_DFZ BIT(16)" +.LASF1399: + .string "EXTI_EVEN_EVEN10 BIT(10)" +.LASF979: + .string "CAN_RFIFOMDATA0_DB0 BITS(0,7)" +.LASF1676: + .string "GPIO_OCTL_OCTL9 BIT(9)" +.LASF909: + .string "CAN_TSTAT_MST1 BIT(15)" +.LASF3080: + .string "_T_PTRDIFF " +.LASF1860: + .string "GPIO_USART2_FULL_REMAP ((uint32_t)0x00140030U)" +.LASF644: + .string "ADC_SAMPLETIME_55POINT5 SAMPTX_SPT(5)" +.LASF502: + .string "APB2_BUS_BASE ((uint32_t)0x40010000U)" +.LASF534: + .string "ADC_SAMPT1(adcx) REG32((adcx) + 0x10U)" +.LASF2060: + .string "PMU_LVDT_2 CTL_LVDT(2)" +.LASF1740: + .string "GPIO_LOCK_LK9 BIT(9)" +.LASF3100: + .string "_SIZE_T_DECLARED " +.LASF2474: + .string "SPI_CTL1_DMATEN BIT(1)" +.LASF607: + .string "ADC_MODE_FREE CTL0_SYNCM(0)" +.LASF86: + .string "__PTRDIFF_WIDTH__ 32" +.LASF762: + .string "BKP_TPCTL_TPEN BIT(0)" +.LASF2348: + .string "RCU_PREDV0_DIV9 CFG1_PREDV0(8)" +.LASF3088: + .string "__size_t__ " +.LASF2588: + .string "I2S_FLAG_FERR SPI_STAT_FERR" +.LASF603: + .string "CTL0_DISNUM(regval) (BITS(13,15) & ((uint32_t)(regval) << 13))" +.LASF2836: + .string "TIMER_CKDIV_DIV4 CTL0_CKDIV(2)" +.LASF2352: + .string "RCU_PREDV0_DIV13 CFG1_PREDV0(12)" +.LASF775: + .string "TAMPER_PIN_ACTIVE_HIGH ((uint16_t)0x0000U)" +.LASF1219: + .string "DAC_TRIANGLE_AMPLITUDE_63 DAC_WAVE_BIT_WIDTH_6" +.LASF690: + .string "ADC_OVERSAMPLING_ONE_CONVERT 1" +.LASF2948: + .string "USART_CTL1(usartx) REG32((usartx) + (0x00000010U))" +.LASF1281: + .string "DMA_CHXMADDR_MADDR BITS(0,31)" +.LASF1237: + .string "DMA_CH1PADDR(dmax) REG32((dmax) + 0x24U)" +.LASF1971: + .string "I2C_SRESET_SET I2C_CTL0_SRESET" +.LASF505: + .string "TIMER_BASE (APB1_BUS_BASE + 0x00000000U)" +.LASF942: + .string "CAN_INTEN_WIE BIT(16)" +.LASF1383: + .string "EXTI_INTEN_INTEN13 BIT(13)" +.LASF1818: + .string "GPIO_EVENT_PIN_12 ((uint8_t)0x0CU)" +.LASF2840: + .string "TIMER_UPDATE_SRC_GLOBAL ((uint32_t)0x00000000U)" +.LASF1451: + .string "EXTI_SWIEV_SWIEV5 BIT(5)" +.LASF465: + .string "INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1)" +.LASF1466: + .string "EXTI_PD_PD1 BIT(1)" +.LASF3142: + .string "_BITUL(x) (_AC(1,UL) << (x))" +.LASF1060: + .string "CAN_BT_BS1_4TQ ((uint8_t)0x03U)" +.LASF1525: + .string "FMC_WSEN_WSEN BIT(0)" +.LASF1630: + .string "GPIO_CTL0_CTL5 BITS(22, 23)" +.LASF2023: + .string "DBG_CTL_SLP_HOLD BIT(0)" +.LASF1905: + .string "I2C_CTL0_SRESET BIT(15)" +.LASF160: + .string "__DBL_MANT_DIG__ 53" +.LASF2200: + .string "RCU_APB1EN_UART3EN BIT(19)" +.LASF666: + .string "ADC_CHANNEL_6 ((uint8_t)0x06U)" +.LASF915: + .string "CAN_TSTAT_NUM BITS(24,25)" +.LASF789: + .string "CAN_BT(canx) REG32((canx) + 0x1CU)" +.LASF1991: + .string "GD32VF103_FWDGT_H " +.LASF1147: + .string "DAC_CTL_DWBW0 BITS(8,11)" +.LASF1386: + .string "EXTI_INTEN_INTEN16 BIT(16)" +.LASF425: + .string "__int_fast8_t_defined 1" +.LASF620: + .string "CTL1_ETSRC(regval) (BITS(17,19) & ((uint32_t)(regval) << 17))" +.LASF2901: + .string "TIMER_SMCFG_TRGSEL_ITI2 SMCFG_TRGSEL(2)" +.LASF2083: + .string "RCU_APB2EN REG32(RCU + 0x18U)" +.LASF2809: + .string "TIMER_DMACFG_DMATC_12TRANSFER DMACFG_DMATC(11)" +.LASF625: + .string "ADC0_1_EXTTRIG_REGULAR_T2_TRGO CTL1_ETSRC(4)" +.LASF1283: + .string "DMA_CHCTL(dma,channel) REG32(((dma) + 0x08U) + 0x14U * (uint32_t)(channel))" +.LASF118: + .string "__UINT_LEAST16_MAX__ 0xffff" +.LASF1611: + .string "GPIO_LOCK(gpiox) REG32((gpiox) + 0x18U)" +.LASF2587: + .string "I2S_FLAG_TRANS SPI_STAT_TRANS" +.LASF1025: + .string "GET_RFIFOMI_SFID(regval) GET_BITS((uint32_t)(regval), 21U, 31U)" +.LASF3077: + .string "_ANSI_STDDEF_H " +.LASF1746: + .string "GPIO_LOCK_LK15 BIT(15)" +.LASF440: + .string "UINT16_MAX (__UINT16_MAX__)" +.LASF61: + .string "__UINT_FAST8_TYPE__ unsigned int" +.LASF3108: + .string "_WCHAR_T " +.LASF2423: + .string "RTC_CTL_OVIF BIT(2)" +.LASF838: + .string "CAN_F23DATA0(canx) REG32((canx) + 0x3F8U)" +.LASF3147: + .string "ECLIC_MTH_OFFSET 0xB" +.LASF1858: + .string "GPIO_USART1_REMAP ((uint32_t)0x00000008U)" +.LASF2101: + .string "RCU_CTL_PLL1STB BIT(27)" +.LASF1733: + .string "GPIO_LOCK_LK2 BIT(2)" +.LASF2554: + .string "I2S_STD_PHILLIPS I2SCTL_I2SSTD(0)" +.LASF1582: + .string "OB_WP_20 ((uint32_t)0x00100000U)" +.LASF491: + .string "REG16(addr) (*(volatile uint16_t *)(uint32_t)(addr))" +.LASF1331: + .string "__SEV eclic_send_event" +.LASF1033: + .string "GET_RFIFOMDATA1_DB5(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF1134: + .string "DAC1_R12DH REG32(DAC + 0x14U)" +.LASF837: + .string "CAN_F22DATA0(canx) REG32((canx) + 0x2F0U)" +.LASF2970: + .string "USART_CTL0_TCIE BIT(6)" +.LASF1020: + .string "TMDATA1_DB4(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF1879: + .string "GD32VF103_I2C_H " +.LASF2420: + .string "RTC_INTEN_OVIE BIT(2)" +.LASF2842: + .string "TIMER_ROS_STATE_DISABLE ((uint16_t)0x0000U)" +.LASF1350: + .string "EXMC_SNCTL(region) REG32(EXMC + 0x08U * (region))" +.LASF2384: + .string "CFG1_PLL2MF(regval) (BITS(12,15) & ((uint32_t)(regval) << 12))" +.LASF141: + .string "__FLT_EVAL_METHOD__ 0" +.LASF1726: + .string "GPIO_BC_CR11 BIT(11)" +.LASF1805: + .string "GPIO_PORT_SOURCE_GPIOE ((uint8_t)0x04U)" +.LASF2396: + .string "RCU_PREDV0SRC_CKPLL1 RCU_CFG1_PREDV0SEL" +.LASF2312: + .string "RCU_PLL_MUL26 (PLLMF_4 | CFG0_PLLMF(9))" +.LASF2138: + .string "RCU_INT_PLL2STBIC BIT(22)" +.LASF484: + .string "INT32_C(x) __INT32_C(x)" +.LASF264: + .string "__FLT32X_HAS_INFINITY__ 1" +.LASF1650: + .string "GPIO_CTL1_CTL15 BITS(30, 31)" +.LASF2529: + .string "SPI_PSC_64 CTL0_PSC(5)" +.LASF710: + .string "GD32VF103_BKP_H " +.LASF2258: + .string "RCU_AHB_CKSYS_DIV2 CFG0_AHBPSC(8)" +.LASF2479: + .string "SPI_CTL1_RBNEIE BIT(6)" +.LASF78: + .string "__SIZE_MAX__ 0xffffffffU" +.LASF1686: + .string "GPIO_BOP_BOP3 BIT(3)" +.LASF2108: + .string "RCU_CFG0_APB2PSC BITS(11,13)" +.LASF3097: + .string "_SIZE_T_DEFINED_ " +.LASF736: + .string "BKP_DATA24 REG16((BKP) + 0x78U)" +.LASF1729: + .string "GPIO_BC_CR14 BIT(14)" +.LASF2163: + .string "RCU_APB1RST_UART4RST BIT(20)" +.LASF251: + .string "__FLT32X_MANT_DIG__ 53" +.LASF2609: + .string "TIMER_CREP(timerx) REG32((timerx) + 0x30U)" +.LASF2341: + .string "RCU_PREDV0_DIV2 CFG1_PREDV0(1)" +.LASF289: + .string "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 1" +.LASF1249: + .string "DMA_CH4PADDR(dmax) REG32((dmax) + 0x60U)" +.LASF2657: + .string "TIMER_DMAINTEN_CMTDEN BIT(13)" +.LASF352: + .string "__BSD_VISIBLE 0" +.LASF740: + .string "BKP_DATA28 REG16((BKP) + 0x88U)" +.LASF100: + .string "__UINT8_MAX__ 0xff" +.LASF2977: + .string "USART_CTL0_UEN BIT(13)" +.LASF3019: + .string "USART_PM_ODD CTL0_PM(3)" +.LASF9: + .string "__ATOMIC_RELAXED 0" +.LASF2281: + .string "RCU_CKADC_CKAPB2_DIV8 ((uint32_t)0x00000003U)" +.LASF652: + .string "ADC_REGULAR_CHANNEL ((uint8_t)0x01U)" +.LASF172: + .string "__DBL_HAS_DENORM__ 1" +.LASF2988: + .string "USART_CTL2_IREN BIT(1)" +.LASF3057: + .string "USART_IRLP_NORMAL CTL2_IRLP(0)" +.LASF1179: + .string "DAC_TRIGGER_EXTI_9 CTL_DTSEL(6)" +.LASF1703: + .string "GPIO_BOP_CR4 BIT(20)" +.LASF3170: + .string "__HXTAL (HXTAL_VALUE)" +.LASF2838: + .string "TIMER_SP_MODE_REPETITIVE ((uint32_t)0x00000000U)" +.LASF2389: + .string "RCU_PLL2_MUL12 CFG1_PLL2MF(10)" +.LASF2604: + .string "TIMER_CHCTL1(timerx) REG32((timerx) + 0x1CU)" +.LASF2228: + .string "RCU_CFG1_PLL2MF BITS(12,15)" +.LASF395: + .string "__INT64 \"ll\"" +.LASF1979: + .string "I2C_PECTRANS_ENABLE I2C_CTL0_PECTRANS" +.LASF3148: + .string "ECLIC_INT_IP_OFFSET _AC(0x1000,UL)" +.LASF1126: + .string "DAC DAC_BASE" +.LASF1473: + .string "EXTI_PD_PD8 BIT(8)" +.LASF975: + .string "CAN_RFIFOMI_SFID BITS(21,31)" +.LASF406: + .string "_UINT8_T_DECLARED " +.LASF993: + .string "CAN_FDATA_FD(regval) BIT(regval)" +.LASF2492: + .string "SPI_RCRC_RCRC BITS(0,15)" +.LASF154: + .string "__FLT_MIN__ 1.17549435082228750796873653722224568e-38F" +.LASF1077: + .string "CAN_BT_BS2_5TQ ((uint8_t)0x04U)" +.LASF1263: + .string "DMA_INTC_GIFC BIT(0)" +.LASF2571: + .string "SPI_INT_FLAG_CONFERR ((uint8_t)0x03U)" +.LASF2035: + .string "DBG_CTL_TIMER4_HOLD BIT(18)" +.LASF2508: + .string "SPI_BIDIRECTIONAL_RECEIVE (~SPI_CTL0_BDOEN)" +.LASF1549: + .string "OB_STDBY_RST ((uint8_t)0x00U)" +.LASF2207: + .string "RCU_APB1EN_PMUEN BIT(28)" +.LASF249: + .string "__FLT128_HAS_INFINITY__ 1" +.LASF728: + .string "BKP_DATA16 REG16((BKP) + 0x58U)" +.LASF659: + .string "ADC_INSERTED_CHANNEL_3 ((uint8_t)0x03U)" +.LASF2724: + .string "TIMER_CREP_CREP BITS(0,7)" +.LASF1439: + .string "EXTI_FTEN_FTEN12 BIT(12)" +.LASF718: + .string "BKP_DATA6 REG16((BKP) + 0x1CU)" +.LASF1014: + .string "TMI_EFID(regval) (BITS(3,31) & ((uint32_t)(regval) << 3))" +.LASF583: + .string "ADC_IOFFX_IOFF BITS(0,11)" +.LASF1935: + .string "I2C_STAT1_TR BIT(2)" +.LASF2811: + .string "TIMER_DMACFG_DMATC_14TRANSFER DMACFG_DMATC(13)" +.LASF802: + .string "CAN_RFIFOMI0(canx) REG32((canx) + 0x1B0U)" +.LASF446: + .string "UINT32_MAX (__UINT32_MAX__)" +.LASF1306: + .string "DMA_PERIPH_INCREASE_ENABLE ((uint8_t)0x01U)" +.LASF1005: + .string "ERR_REG_OFFSET ((uint8_t)0x18U)" +.LASF1997: + .string "FWDGT_CTL_CMD BITS(0,15)" +.LASF609: + .string "ADC_DAUL_REGULAL_PARALLEL_INSERTED_ROTATION CTL0_SYNCM(2)" +.LASF739: + .string "BKP_DATA27 REG16((BKP) + 0x84U)" +.LASF218: + .string "__FLT32_HAS_DENORM__ 1" +.LASF301: + .string "__SIZEOF_WINT_T__ 4" +.LASF2879: + .string "TIMER_OC_MODE_PWM1 ((uint16_t)0x0070U)" +.LASF1989: + .string "I2C_ADDFORMAT_7BITS ((uint32_t)0x00000000U)" +.LASF990: + .string "CAN_FSCFG_FS(regval) BIT(regval)" +.LASF1585: + .string "OB_WP_23 ((uint32_t)0x00800000U)" +.LASF558: + .string "ADC_CTL0_WDEIE BIT(6)" +.LASF233: + .string "__FLT64_HAS_DENORM__ 1" +.LASF560: + .string "ADC_CTL0_SM BIT(8)" +.LASF1009: + .string "BT_SJW(regval) (BITS(24,25) & ((uint32_t)(regval) << 24))" +.LASF727: + .string "BKP_DATA15 REG16((BKP) + 0x54U)" +.LASF554: + .string "ADC_STAT_STIC BIT(3)" +.LASF2445: + .string "RTC_FLAG_LWOF RTC_CTL_LWOFF" +.LASF745: + .string "BKP_DATA33 REG16((BKP) + 0x9CU)" +.LASF817: + .string "CAN_F2DATA0(canx) REG32((canx) + 0x250U)" +.LASF2149: + .string "RCU_APB2RST_SPI0RST BIT(12)" +.LASF3156: + .string "ECLIC_INT_CTRL_OFFSET _AC(0x1003,UL)" +.LASF334: + .string "HXTAL_VALUE_25M HXTAL_VALUE" +.LASF94: + .string "__SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)" +.LASF2429: + .string "RTC_DIVH_DIV BITS(0,3)" +.LASF598: + .string "ADC_FLAG_WDE ADC_STAT_WDE" +.LASF157: + .string "__FLT_HAS_DENORM__ 1" +.LASF1915: + .string "I2C_SADDR0_ADDFORMAT BIT(15)" +.LASF468: + .string "INTMAX_MAX (__INTMAX_MAX__)" +.LASF390: + .string "_INTPTR_EQ_INT " +.LASF2738: + .string "TIMER_DMACFG_DMATC BITS(8,12)" +.LASF201: + .string "__FLT16_EPSILON__ 9.76562500000000000000000000000000000e-4F16" +.LASF2343: + .string "RCU_PREDV0_DIV4 CFG1_PREDV0(3)" +.LASF2137: + .string "RCU_INT_PLL1STBIC BIT(21)" +.LASF897: + .string "CAN_STAT_RS BIT(9)" +.LASF1598: + .string "GD32VF103_GPIO_H " +.LASF1395: + .string "EXTI_EVEN_EVEN6 BIT(6)" +.LASF1827: + .string "GPIO_PIN_SOURCE_5 ((uint8_t)0x05U)" +.LASF3114: + .string "_WCHAR_T_DEFINED_ " +.LASF2331: + .string "RCU_CKOUT0SRC_CKPLL2_DIV2 CFG0_CKOUT0SEL(9)" +.LASF1809: + .string "GPIO_EVENT_PIN_3 ((uint8_t)0x03U)" +.LASF2005: + .string "FWDGT_PSC_DIV16 ((uint8_t)PSC_PSC(2))" +.LASF691: + .string "OVSCR_OVSS(regval) (BITS(5,8) & ((uint32_t)(regval) << 5))" +.LASF316: + .string "__riscv_c 2000000" +.LASF1413: + .string "EXTI_RTEN_RTEN5 BIT(5)" +.LASF2195: + .string "RCU_APB1EN_WWDGTEN BIT(11)" +.LASF3127: + .string "_GCC_MAX_ALIGN_T " +.LASF2785: + .string "TIMER_DMACFG_DMATA_CHCTL1 DMACFG_DMATA(7)" +.LASF2997: + .string "USART_CTL2_CTSIE BIT(10)" +.LASF2812: + .string "TIMER_DMACFG_DMATC_15TRANSFER DMACFG_DMATC(14)" +.LASF379: + .string "__int20" +.LASF2898: + .string "SMCFG_TRGSEL(regval) (BITS(4, 6) & ((uint32_t)(regval) << 4U))" +.LASF2062: + .string "PMU_LVDT_4 CTL_LVDT(4)" +.LASF733: + .string "BKP_DATA21 REG16((BKP) + 0x6CU)" +.LASF738: + .string "BKP_DATA26 REG16((BKP) + 0x80U)" +.LASF313: + .string "__riscv_i 2000000" +.LASF1762: + .string "AFIO_PCF0_TIMER4CH3_IREMAP BIT(16)" +.LASF2395: + .string "RCU_PREDV0SRC_HXTAL ((uint32_t)0x00000000U)" +.LASF797: + .string "CAN_TMDATA11(canx) REG32((canx) + 0x19CU)" +.LASF1324: + .string "DMA_CHANNEL_CNT_MASK DMA_CHXCNT_CNT" +.LASF2190: + .string "RCU_APB1EN_TIMER2EN BIT(1)" +.LASF3016: + .string "CTL0_PM(regval) (BITS(9,10) & ((uint32_t)(regval) << 9))" +.LASF1085: + .string "CAN_FF_STANDARD ((uint32_t)0x00000000U)" +.LASF1657: + .string "GPIO_ISTAT_ISTAT6 BIT(6)" +.LASF2067: + .string "PMU_FLAG_STANDBY PMU_CS_STBF" +.LASF1252: + .string "DMA_CH5CNT(dmax) REG32((dmax) + 0x70U)" +.LASF79: + .string "__SCHAR_WIDTH__ 8" +.LASF2463: + .string "SPI_CTL0_SPIEN BIT(6)" +.LASF590: + .string "ADC_IDATAX_IDATAN BITS(0,15)" +.LASF2717: + .string "TIMER_CHCTL2_CH2NEN BIT(10)" +.LASF2021: + .string "DBG_CTL REG32(DBG + 0x04U)" +.LASF1138: + .string "DACC_L12DH REG32(DAC + 0x24U)" +.LASF1378: + .string "EXTI_INTEN_INTEN8 BIT(8)" +.LASF1843: + .string "GPIO_PIN_5 BIT(5)" +.LASF2701: + .string "TIMER_CHCTL1_CH3COMCTL BITS(12,14)" +.LASF3014: + .string "USART_TRANSMIT_ENABLE CTL0_TEN(1)" +.LASF522: + .string "FMC_BASE (AHB1_BUS_BASE + 0x0000A000U)" +.LASF2488: + .string "SPI_STAT_TRANS BIT(7)" +.LASF3013: + .string "CTL0_TEN(regval) (BIT(3) & ((uint32_t)(regval) << 3))" +.LASF2446: + .string "GD32VF103_SPI_H " +.LASF332: + .string "__IO volatile" +.LASF2124: + .string "RCU_INT_CKMIF BIT(7)" +.LASF1117: + .string "GD32VF103_CRC_H " +.LASF751: + .string "BKP_DATA39 REG16((BKP) + 0xB4U)" +.LASF1580: + .string "OB_WP_18 ((uint32_t)0x00040000U)" +.LASF1193: + .string "DAC_WAVE_BIT_WIDTH_8 DWBW(7)" +.LASF1278: + .string "DMA_CHXCTL_M2M BIT(14)" +.LASF3015: + .string "USART_TRANSMIT_DISABLE CTL0_TEN(0)" +.LASF2580: + .string "SPI_FLAG_TRANS SPI_STAT_TRANS" +.LASF1297: + .string "DMA_FLAG_FTF DMA_INTF_FTFIF" +.LASF1925: + .string "I2C_STAT0_TBE BIT(7)" +.LASF1030: + .string "GET_RFIFOMDATA0_DB2(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF1574: + .string "OB_WP_12 ((uint32_t)0x00001000U)" +.LASF1404: + .string "EXTI_EVEN_EVEN15 BIT(15)" +.LASF3121: + .string "_BSD_WCHAR_T_" +.LASF3113: + .string "_BSD_WCHAR_T_ " +.LASF2094: + .string "RCU_CTL_HXTALEN BIT(16)" +.LASF1808: + .string "GPIO_EVENT_PIN_2 ((uint8_t)0x02U)" +.LASF2186: + .string "RCU_APB2EN_TIMER0EN BIT(11)" +.LASF208: + .string "__FLT32_MIN_EXP__ (-125)" +.LASF1209: + .string "DAC_LFSR_BITS11_0 DAC_WAVE_BIT_WIDTH_12" +.LASF3089: + .string "__SIZE_T__ " +.LASF1983: + .string "I2C_ARP_ENABLE I2C_CTL0_ARPEN" +.LASF1999: + .string "FWDGT_RLD_RLD BITS(0,11)" +.LASF1866: + .string "GPIO_TIMER2_PARTIAL_REMAP ((uint32_t)0x001A0800U)" +.LASF2209: + .string "RCU_BDCTL_LXTALEN BIT(0)" +.LASF2158: + .string "RCU_APB1RST_SPI1RST BIT(14)" +.LASF2345: + .string "RCU_PREDV0_DIV6 CFG1_PREDV0(5)" +.LASF2183: + .string "RCU_APB2EN_PEEN BIT(6)" +.LASF1800: + .string "GPIO_EVENT_PORT_GPIOE ((uint8_t)0x04U)" +.LASF2484: + .string "SPI_STAT_TXURERR BIT(3)" +.LASF1333: + .string "EXMC (EXMC_BASE)" +.LASF1050: + .string "CAN_LOOPBACK_MODE ((uint8_t)0x01U)" +.LASF384: + .string "char +0" +.LASF1710: + .string "GPIO_BOP_CR11 BIT(27)" +.LASF1154: + .string "DAC_CTL_DWBW1 BITS(24,27)" +.LASF1007: + .string "BT_BS1(regval) (BITS(16,19) & ((uint32_t)(regval) << 16))" +.LASF444: + .string "INT32_MIN (-__INT32_MAX__ - 1)" +.LASF2656: + .string "TIMER_DMAINTEN_CH3DEN BIT(12)" +.LASF750: + .string "BKP_DATA38 REG16((BKP) + 0xB0U)" +.LASF512: + .string "CAN_BASE (APB1_BUS_BASE + 0x00006400U)" +.LASF2072: + .string "PMU_FLAG_RESET_STANDBY ((uint8_t)0x01U)" +.LASF2360: + .string "RCU_PREDV1_DIV4 CFG1_PREDV1(3)" +.LASF2472: + .string "SPI_CTL0_BDEN BIT(15)" +.LASF3063: + .string "WWDGT_CTL_CNT BITS(0,6)" +.LASF3211: + .string "system_clock_config" +.LASF2230: + .string "RCU_CFG1_I2S1SEL BIT(17)" +.LASF1493: + .string "FMC_OBSTAT REG32((FMC) + 0x1CU)" +.LASF1784: + .string "GPIO_MODE_MASK(n) (0xFU << (4U * (n)))" +.LASF2860: + .string "TIMER_CCX_ENABLE ((uint16_t)0x0001U)" +.LASF1661: + .string "GPIO_ISTAT_ISTAT10 BIT(10)" +.LASF567: + .string "ADC_CTL0_IWDEN BIT(22)" +.LASF2861: + .string "TIMER_CCX_DISABLE ((uint16_t)0x0000U)" +.LASF1371: + .string "EXTI_INTEN_INTEN1 BIT(1)" +.LASF369: + .string "___int_least16_t_defined 1" +.LASF2868: + .string "TIMER_OC_IDLE_STATE_HIGH ((uint16_t)0x0100)" +.LASF702: + .string "ADC_OVERSAMPLING_RATIO_MUL2 OVSCR_OVSR(0)" +.LASF15: + .string "__FINITE_MATH_ONLY__ 0" +.LASF1258: + .string "DMA_CH6MADDR(dmax) REG32((dmax) + 0x8CU)" +.LASF2967: + .string "USART_CTL0_TEN BIT(3)" +.LASF2358: + .string "RCU_PREDV1_DIV2 CFG1_PREDV1(1)" +.LASF3152: + .string "ECLIC_INT_ATTR_TRIG_LEVEL 0x00" +.LASF2874: + .string "TIMER_OC_MODE_INACTIVE ((uint16_t)0x0020U)" +.LASF1513: + .string "FMC_CTL_OBER BIT(5)" +.LASF1073: + .string "CAN_BT_BS2_1TQ ((uint8_t)0x00U)" +.LASF807: + .string "CAN_RFIFOMP1(canx) REG32((canx) + 0x1C4U)" +.LASF2055: + .string "PMU_CS_LVDF BIT(2)" +.LASF925: + .string "CAN_RFIFO0_RFD0 BIT(5)" +.LASF3024: + .string "USART_WL_8BIT CTL0_WL(0)" +.LASF3151: + .string "ECLIC_INT_ATTR_SHV 0x01" +.LASF3030: + .string "USART_STB_1_5BIT CTL1_STB(3)" +.LASF212: + .string "__FLT32_DECIMAL_DIG__ 9" +.LASF3120: + .string "_WCHAR_T_DECLARED " +.LASF2247: + .string "CFG1_REG_OFFSET 0x2CU" +.LASF2804: + .string "TIMER_DMACFG_DMATC_7TRANSFER DMACFG_DMATC(6)" +.LASF561: + .string "ADC_CTL0_WDSC BIT(9)" +.LASF704: + .string "ADC_OVERSAMPLING_RATIO_MUL8 OVSCR_OVSR(2)" +.LASF366: + .string "___int32_t_defined 1" +.LASF2090: + .string "RCU_CTL_IRC8MEN BIT(0)" +.LASF1181: + .string "CTL_DWM(regval) (BITS(6,7) & ((uint32_t)(regval) << 6))" +.LASF230: + .string "__FLT64_MIN__ 2.22507385850720138309023271733240406e-308F64" +.LASF633: + .string "ADC0_1_EXTTRIG_INSERTED_T1_CH0 CTL1_ETSIC(3)" +.LASF1621: + .string "GPIO_CTL0_MD1 BITS(4, 5)" +.LASF246: + .string "__FLT128_EPSILON__ 1.92592994438723585305597794258492732e-34F128" +.LASF2856: + .string "TIMER_CH_0 ((uint16_t)0x0000U)" +.LASF2164: + .string "RCU_APB1RST_I2C0RST BIT(21)" +.LASF2283: + .string "RCU_CKADC_CKAPB2_DIV16 ((uint32_t)0x00000007U)" +.LASF1488: + .string "FMC_KEY REG32((FMC) + 0x04U)" +.LASF2136: + .string "RCU_INT_PLLSTBIC BIT(20)" +.LASF1769: + .string "AFIO_EXTI3_SS BITS(12, 15)" +.LASF2893: + .string "TIMER_IC_SELECTION_ITS ((uint16_t)0x0003U)" +.LASF1613: + .string "AFIO_PCF0 REG32(AFIO + 0x04U)" +.LASF632: + .string "ADC0_1_EXTTRIG_INSERTED_T1_TRGO CTL1_ETSIC(2)" +.LASF1489: + .string "FMC_OBKEY REG32((FMC) + 0x08U)" +.LASF492: + .string "REG8(addr) (*(volatile uint8_t *)(uint32_t)(addr))" +.LASF906: + .string "CAN_TSTAT_MTFNERR1 BIT(9)" +.LASF2012: + .string "FWDGT_KEY_RELOAD ((uint16_t)0xAAAAU)" +.LASF1691: + .string "GPIO_BOP_BOP8 BIT(8)" +.LASF2509: + .string "SPI_TRANSMODE_FULLDUPLEX ((uint32_t)0x00000000U)" +.LASF2632: + .string "TIMER_CTL1_ISO1 BIT(10)" +.LASF2920: + .string "TIMER_ENCODER_MODE2 SMCFG_SMC(3)" +.LASF422: + .string "__int_least16_t_defined 1" +.LASF1168: + .string "DACC_R8DH_DAC0_DH BITS(0,7)" +.LASF2347: + .string "RCU_PREDV0_DIV8 CFG1_PREDV0(7)" +.LASF3111: + .string "__WCHAR_T " +.LASF408: + .string "_INT16_T_DECLARED " +.LASF88: + .string "__INTMAX_MAX__ 0x7fffffffffffffffLL" +.LASF1188: + .string "DAC_WAVE_BIT_WIDTH_3 DWBW(2)" +.LASF1045: + .string "CAN_ERRN_5 ERR_ERRN(5U)" +.LASF918: + .string "CAN_TSTAT_TME2 BIT(28)" +.LASF1723: + .string "GPIO_BC_CR8 BIT(8)" +.LASF2697: + .string "TIMER_CHCTL1_CH2COMCEN BIT(7)" +.LASF2276: + .string "RCU_APB2_CKAHB_DIV8 CFG0_APB2PSC(6)" +.LASF90: + .string "__UINTMAX_MAX__ 0xffffffffffffffffULL" +.LASF3183: + .string "long int" +.LASF614: + .string "ADC_DAUL_REGULAL_FOLLOWUP_FAST CTL0_SYNCM(7)" +.LASF2237: + .string "APB1EN_REG_OFFSET 0x1CU" +.LASF1889: + .string "I2C_CKCFG(i2cx) REG32((i2cx) + 0x1CU)" +.LASF2582: + .string "I2S_FLAG_RBNE SPI_STAT_RBNE" +.LASF2297: + .string "RCU_PLL_MUL11 CFG0_PLLMF(9)" +.LASF1362: + .string "GD32VF103_EXTI_H " +.LASF377: + .string "char" +.LASF1756: + .string "AFIO_PCF0_TIMER0_REMAP BITS(6, 7)" +.LASF1340: + .string "EXMC_SNCTL_NRW BITS(4,5)" +.LASF32: + .string "__SIZE_TYPE__ unsigned int" +.LASF2196: + .string "RCU_APB1EN_SPI1EN BIT(14)" +.LASF880: + .string "CAN_RFIFOMDATA1(canx,bank) REG32((canx) + 0x1BCU + ((bank) * 0x10U))" +.LASF2708: + .string "TIMER_CHCTL2_CH0P BIT(1)" +.LASF391: + .string "_INT32_EQ_LONG " +.LASF1069: + .string "CAN_BT_BS1_13TQ ((uint8_t)0x0CU)" +.LASF1928: + .string "I2C_STAT0_AERR BIT(10)" +.LASF2319: + .string "CFG0_USBPSC(regval) (BITS(22,23) & ((uint32_t)(regval) << 22))" +.LASF2869: + .string "TIMER_OC_IDLE_STATE_LOW ((uint16_t)0x0000)" +.LASF535: + .string "ADC_IOFF0(adcx) REG32((adcx) + 0x14U)" +.LASF1384: + .string "EXTI_INTEN_INTEN14 BIT(14)" +.LASF907: + .string "CAN_TSTAT_MAL1 BIT(10)" +.LASF31: + .string "__SIZEOF_POINTER__ 4" +.LASF2045: + .string "PMU_CS REG32((PMU) + 0x04U)" +.LASF597: + .string "ADC_OVSCR_DRES BITS(12,13)" +.LASF2376: + .string "RCU_PLL1_MUL10 CFG1_PLL1MF(8)" +.LASF217: + .string "__FLT32_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F32" +.LASF2088: + .string "RCU_CFG1 REG32(RCU + 0x2CU)" +.LASF1311: + .string "DMA_PERIPHERAL_WIDTH_16BIT CHCTL_PWIDTH(1U)" +.LASF2877: + .string "TIMER_OC_MODE_HIGH ((uint16_t)0x0050U)" +.LASF685: + .string "ADC_RESOLUTION_12B OVSCR_DRES(0)" +.LASF2883: + .string "TIMER_OC_FAST_DISABLE ((uint16_t)0x0000)" +.LASF1795: + .string "GPIO_OSPEED_50MHZ ((uint8_t)0x03U)" +.LASF3198: + .string "ck_src" +.LASF686: + .string "ADC_RESOLUTION_10B OVSCR_DRES(1)" +.LASF2241: + .string "APB2RST_REG_OFFSET 0x0CU" +.LASF2994: + .string "USART_CTL2_DENT BIT(7)" +.LASF2796: + .string "TIMER_DMACFG_DMATA_DMACFG DMACFG_DMATA(18)" +.LASF2483: + .string "SPI_STAT_I2SCH BIT(2)" +.LASF3012: + .string "USART_RECEIVE_DISABLE CTL0_REN(0)" +.LASF2631: + .string "TIMER_CTL1_ISO0N BIT(9)" +.LASF2685: + .string "TIMER_CHCTL0_CH1COMFEN BIT(10)" +.LASF2817: + .string "TIMER_EVENT_SRC_CH0G ((uint16_t)0x0002U)" +.LASF662: + .string "ADC_CHANNEL_2 ((uint8_t)0x02U)" +.LASF3067: + .string "WWDGT_CFG_EWIE BIT(9)" +.LASF1853: + .string "GPIO_PIN_15 BIT(15)" +.LASF1527: + .string "FMC_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF1103: + .string "CAN_INT_TME CAN_INTEN_TMEIE" +.LASF516: + .string "AFIO_BASE (APB2_BUS_BASE + 0x00000000U)" +.LASF1895: + .string "I2C_CTL0_ARPEN BIT(4)" +.LASF2362: + .string "RCU_PREDV1_DIV6 CFG1_PREDV1(5)" +.LASF2996: + .string "USART_CTL2_CTSEN BIT(9)" +.LASF1924: + .string "I2C_STAT0_RBNE BIT(6)" +.LASF2393: + .string "RCU_PLL2_MUL16 CFG1_PLL2MF(14)" +.LASF1684: + .string "GPIO_BOP_BOP1 BIT(1)" +.LASF2764: + .string "TIMER_FLAG_CH0O TIMER_INTF_CH0OF" +.LASF707: + .string "ADC_OVERSAMPLING_RATIO_MUL64 OVSCR_OVSR(5)" +.LASF1042: + .string "CAN_ERRN_2 ERR_ERRN(2U)" +.LASF1617: + .string "AFIO_EXTISS3 REG32(AFIO + 0x14U)" +.LASF1444: + .string "EXTI_FTEN_FTEN17 BIT(17)" +.LASF2287: + .string "CFG0_PLLMF(regval) (BITS(18,21) & ((uint32_t)(regval) << 18))" +.LASF2386: + .string "RCU_PLL2_MUL9 CFG1_PLL2MF(7)" +.LASF2117: + .string "RCU_INT_IRC40KSTBIF BIT(0)" +.LASF2589: + .string "GD32VF103_TIMER_H " +.LASF1017: + .string "TMDATA0_DB1(regval) (BITS(8,15) & ((uint32_t)(regval) << 8))" +.LASF2036: + .string "DBG_CTL_TIMER5_HOLD BIT(19)" +.LASF3076: + .string "_STDDEF_H_ " +.LASF721: + .string "BKP_DATA9 REG16((BKP) + 0x28U)" +.LASF3164: + .string "ECLIC_GROUP_LEVEL0_PRIO4 0" +.LASF2686: + .string "TIMER_CHCTL0_CH1COMSEN BIT(11)" +.LASF840: + .string "CAN_F25DATA0(canx) REG32((canx) + 0x308U)" +.LASF1716: + .string "GPIO_BC_CR1 BIT(1)" +.LASF2085: + .string "RCU_BDCTL REG32(RCU + 0x20U)" +.LASF989: + .string "CAN_FMCFG_FMOD(regval) BIT(regval)" +.LASF2079: + .string "RCU_INT REG32(RCU + 0x08U)" +.LASF2584: + .string "I2S_FLAG_CH SPI_STAT_I2SCH" +.LASF2197: + .string "RCU_APB1EN_SPI2EN BIT(15)" +.LASF920: + .string "CAN_TSTAT_TMLS1 BIT(30)" +.LASF478: + .string "WINT_MAX (__WINT_MAX__)" +.LASF855: + .string "CAN_F12DATA1(canx) REG32((canx) + 0x2A4U)" +.LASF1015: + .string "TMI_SFID(regval) (BITS(21,31) & ((uint32_t)(regval) << 21))" +.LASF861: + .string "CAN_F18DATA1(canx) REG32((canx) + 0x2D4U)" +.LASF1564: + .string "OB_WP_2 ((uint32_t)0x00000004U)" +.LASF3068: + .string "WWDGT_STAT_EWIF BIT(0)" +.LASF1782: + .string "AFIO_PCF1_EXMC_NADV BIT(10)" +.LASF2221: + .string "RCU_RSTSCK_FWDGTRSTF BIT(29)" +.LASF1477: + .string "EXTI_PD_PD12 BIT(12)" +.LASF1022: + .string "TMDATA1_DB6(regval) (BITS(16,23) & ((uint32_t)(regval) << 16))" +.LASF1801: + .string "GPIO_PORT_SOURCE_GPIOA ((uint8_t)0x00U)" +.LASF200: + .string "__FLT16_MIN__ 6.10351562500000000000000000000000000e-5F16" +.LASF2733: + .string "TIMER_CCHP_BRKEN BIT(12)" +.LASF2128: + .string "RCU_INT_HXTALSTBIE BIT(11)" +.LASF563: + .string "ADC_CTL0_DISRC BIT(11)" +.LASF295: + .string "__GCC_ATOMIC_LLONG_LOCK_FREE 1" +.LASF2336: + .string "RCU_RTCSRC_LXTAL BDCTL_RTCSRC(1)" +.LASF1234: + .string "DMA_CH0MADDR(dmax) REG32((dmax) + 0x14U)" +.LASF814: + .string "CAN_FW(canx) REG32((canx) + 0x21CU)" +.LASF1752: + .string "AFIO_PCF0_I2C0_REMAP BIT(1)" +.LASF2605: + .string "TIMER_CHCTL2(timerx) REG32((timerx) + 0x20U)" +.LASF2936: + .string "TIMER_CHVSEL_ENABLE ((uint16_t)TIMER_CFG_OUTSEL)" +.LASF2330: + .string "RCU_CKOUT0SRC_CKPLL1 CFG0_CKOUT0SEL(8)" +.LASF2567: + .string "SPI_I2S_INT_ERR ((uint8_t)0x02U)" +.LASF806: + .string "CAN_RFIFOMI1(canx) REG32((canx) + 0x1C0U)" +.LASF1470: + .string "EXTI_PD_PD5 BIT(5)" +.LASF1420: + .string "EXTI_RTEN_RTEN12 BIT(12)" +.LASF830: + .string "CAN_F15DATA0(canx) REG32((canx) + 0x2B8U)" +.LASF1680: + .string "GPIO_OCTL_OCTL13 BIT(13)" +.LASF1939: + .string "I2C_STAT1_DUMODF BIT(7)" +.LASF530: + .string "ADC_STAT(adcx) REG32((adcx) + 0x00U)" +.LASF720: + .string "BKP_DATA8 REG16((BKP) + 0x24U)" +.LASF3032: + .string "USART_LBLEN_10B CTL1_LBLEN(0)" +.LASF1669: + .string "GPIO_OCTL_OCTL2 BIT(2)" +.LASF57: + .string "__INT_FAST8_TYPE__ int" +.LASF1593: + .string "OB_WP_31 ((uint32_t)0x80000000U)" +.LASF1166: + .string "DACC_L12DH_DAC0_DH BITS(4,15)" +.LASF955: + .string "CAN_BT_SCMOD BIT(31)" +.LASF2691: + .string "TIMER_CHCTL0_CH1CAPPSC BITS(10,11)" +.LASF2022: + .string "DBG_ID_ID_CODE BITS(0,31)" +.LASF649: + .string "WDLT_WDLT(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF1140: + .string "DAC0_DO REG32(DAC + 0x2CU)" +.LASF2427: + .string "RTC_PSCH_PSC BITS(0,3)" +.LASF1171: + .string "DAC1_DO_DAC1_DO BITS(0,11)" +.LASF1417: + .string "EXTI_RTEN_RTEN9 BIT(9)" +.LASF719: + .string "BKP_DATA7 REG16((BKP) + 0x20U)" +.LASF2257: + .string "RCU_AHB_CKSYS_DIV1 CFG0_AHBPSC(0)" +.LASF2061: + .string "PMU_LVDT_3 CTL_LVDT(3)" +.LASF1544: + .string "OB_FWDGT_SW ((uint8_t)0x01U)" +.LASF1330: + .string "ECLIC_PRIGROUP_LEVEL4_PRIO0 4" +.LASF2641: + .string "TIMER_SMCFG_ETPSC BITS(12,13)" +.LASF452: + .string "UINT64_MAX (__UINT64_MAX__)" +.LASF1918: + .string "I2C_DATA_TRB BITS(0,7)" +.LASF1987: + .string "I2C_DTCY_2 ((uint32_t)0x00000000U)" +.LASF1578: + .string "OB_WP_16 ((uint32_t)0x00010000U)" +.LASF1737: + .string "GPIO_LOCK_LK6 BIT(6)" +.LASF735: + .string "BKP_DATA23 REG16((BKP) + 0x74U)" +.LASF3146: + .string "ECLIC_INFO_OFFSET 0x4" +.LASF883: + .string "CAN_CTL_TFO BIT(2)" +.LASF2262: + .string "RCU_AHB_CKSYS_DIV64 CFG0_AHBPSC(12)" +.LASF2731: + .string "TIMER_CCHP_IOS BIT(10)" +.LASF3140: + .string "_AC(X,Y) (X ##Y)" +.LASF1773: + .string "AFIO_EXTI7_SS BITS(12, 15)" +.LASF2524: + .string "SPI_PSC_2 CTL0_PSC(0)" +.LASF895: + .string "CAN_STAT_SLPIF BIT(4)" +.LASF59: + .string "__INT_FAST32_TYPE__ int" +.LASF2947: + .string "USART_CTL0(usartx) REG32((usartx) + (0x0000000CU))" +.LASF1857: + .string "GPIO_USART0_REMAP ((uint32_t)0x00000004U)" +.LASF752: + .string "BKP_DATA40 REG16((BKP) + 0xB8U)" +.LASF1450: + .string "EXTI_SWIEV_SWIEV4 BIT(4)" +.LASF2830: + .string "TIMER_PSC_RELOAD_UPDATE ((uint32_t)0x00000000U)" +.LASF1553: + .string "FMC_USPC ((uint8_t)0xBBU)" +.LASF2143: + .string "RCU_APB2RST_PCRST BIT(4)" +.LASF714: + .string "BKP_DATA2 REG16((BKP) + 0x0CU)" +.LASF1223: + .string "DAC_TRIANGLE_AMPLITUDE_1023 DAC_WAVE_BIT_WIDTH_10" +.LASF16: + .string "__SIZEOF_INT__ 4" +.LASF1608: + .string "GPIO_OCTL(gpiox) REG32((gpiox) + 0x0CU)" +.LASF1048: + .string "CAN_STATE_PENDING ((uint32_t)0x00000000U)" +.LASF383: + .string "unsigned +0" +.LASF28: + .string "__ORDER_PDP_ENDIAN__ 3412" +.LASF151: + .string "__FLT_DECIMAL_DIG__ 9" +.LASF1255: + .string "DMA_CH6CTL(dmax) REG32((dmax) + 0x80U)" +.LASF1702: + .string "GPIO_BOP_CR3 BIT(19)" +.LASF2485: + .string "SPI_STAT_CRCERR BIT(4)" +.LASF99: + .string "__INT64_MAX__ 0x7fffffffffffffffLL" +.LASF2126: + .string "RCU_INT_LXTALSTBIE BIT(9)" +.LASF2399: + .string "RCU_I2S2SRC_CKSYS ((uint32_t)0x00000000U)" +.LASF3005: + .string "USART_BIT_POS2(val) (((uint32_t)(val) & (0x001F0000U)) >> 16)" +.LASF878: + .string "CAN_RFIFOMP(canx,bank) REG32((canx) + 0x1B4U + ((bank) * 0x10U))" +.LASF674: + .string "ADC_CHANNEL_14 ((uint8_t)0x0EU)" +.LASF2173: + .string "RCU_AHBEN_SRAMSPEN BIT(2)" +.LASF593: + .string "ADC_OVSCR_OVSEN BIT(0)" +.LASF2833: + .string "CTL0_CKDIV(regval) ((uint16_t)(BITS(8, 9) & ((uint32_t)(regval) << 8U)))" +.LASF2600: + .string "TIMER_DMAINTEN(timerx) REG32((timerx) + 0x0CU)" +.LASF416: + .string "__int64_t_defined 1" +.LASF723: + .string "BKP_DATA11 REG16((BKP) + 0x44U)" +.LASF2103: + .string "RCU_CTL_PLL2STB BIT(29)" +.LASF2885: + .string "TIMER_OC_CLEAR_DISABLE ((uint16_t)0x0000U)" +.LASF378: + .string "short" +.LASF1356: + .string "EXMC_MEMORY_TYPE_SRAM SNCTL_NRTP(0)" +.LASF1464: + .string "EXTI_SWIEV_SWIEV18 BIT(18)" +.LASF1523: + .string "FMC_OBSTAT_DATA BITS(10,25)" +.LASF771: + .string "BKP_DATA_GET(regval) GET_BITS((uint32_t)(regval), 0, 15)" +.LASF2928: + .string "TIMER_EXT_TRI_PSC_OFF SMCFG_ETPSC(0)" +.LASF2364: + .string "RCU_PREDV1_DIV8 CFG1_PREDV1(7)" +.LASF991: + .string "CAN_FAFIFOR_FAF(regval) BIT(regval)" +.LASF3071: + .string "WWDGT_CFG_PSC_DIV2 CFG_PSC(1)" +.LASF3204: + .string "GNU C17 10.2.0 -march=rv32imac -mabi=ilp32 -mcmodel=medany -msmall-data-limit= 8 -march=rv32imac -g3 -O0" +.LASF1186: + .string "DAC_WAVE_BIT_WIDTH_1 DWBW(0)" +.LASF1517: + .string "FMC_CTL_ERRIE BIT(10)" +.LASF748: + .string "BKP_DATA36 REG16((BKP) + 0xA8U)" +.LASF870: + .string "CAN_F27DATA1(canx) REG32((canx) + 0x31CU)" +.LASF734: + .string "BKP_DATA22 REG16((BKP) + 0x70U)" +.LASF1012: + .string "FDATA_MASK_LOW(regval) (BITS(0,15) & ((uint32_t)(regval) << 0))" +.LASF193: + .string "__FLT16_MIN_EXP__ (-13)" +.LASF1823: + .string "GPIO_PIN_SOURCE_1 ((uint8_t)0x01U)" +.LASF2704: + .string "TIMER_CHCTL1_CH2CAPFLT BITS(4,7)" +.LASF1666: + .string "GPIO_ISTAT_ISTAT15 BIT(15)" +.LASF2466: + .string "SPI_CTL0_SWNSSEN BIT(9)" +.LASF2546: + .string "I2S_MCKOUT_DISABLE ((uint32_t)0x00000000U)" +.LASF591: + .string "ADC_RDATA_RDATA BITS(0,15)" +.LASF938: + .string "CAN_INTEN_PERRIE BIT(9)" +.LASF1775: + .string "AFIO_EXTI9_SS BITS(4, 7)" +.LASF2120: + .string "RCU_INT_HXTALSTBIF BIT(3)" +.LASF358: + .string "__SVID_VISIBLE 0" +.LASF2104: + .string "RCU_CFG0_SCS BITS(0,1)" +.LASF2673: + .string "TIMER_SWEVG_CH1G BIT(2)" +.LASF1449: + .string "EXTI_SWIEV_SWIEV3 BIT(3)" +.LASF1663: + .string "GPIO_ISTAT_ISTAT12 BIT(12)" +.LASF747: + .string "BKP_DATA35 REG16((BKP) + 0xA4U)" +.LASF1246: + .string "DMA_CH3MADDR(dmax) REG32((dmax) + 0x50U)" +.LASF1098: + .string "CAN_FILTERMODE_LIST ((uint8_t)0x01U)" +.LASF2240: + .string "APB1RST_REG_OFFSET 0x10U" +.LASF53: + .string "__UINT_LEAST8_TYPE__ unsigned char" +.LASF1887: + .string "I2C_STAT0(i2cx) REG32((i2cx) + 0x14U)" +.LASF2699: + .string "TIMER_CHCTL1_CH3COMFEN BIT(10)" +.LASF2263: + .string "RCU_AHB_CKSYS_DIV128 CFG0_AHBPSC(13)" +.LASF822: + .string "CAN_F7DATA0(canx) REG32((canx) + 0x278U)" +.LASF2227: + .string "RCU_CFG1_PLL1MF BITS(8,11)" +.LASF27: + .string "__ORDER_BIG_ENDIAN__ 4321" +.LASF722: + .string "BKP_DATA10 REG16((BKP) + 0x40U)" +.LASF939: + .string "CAN_INTEN_BOIE BIT(10)" +.LASF1821: + .string "GPIO_EVENT_PIN_15 ((uint8_t)0x0FU)" +.LASF0: + .string "__STDC__ 1" +.LASF1226: + .string "GD32VF103_DMA_H " +.LASF221: + .string "__FLT64_MANT_DIG__ 53" +.LASF3062: + .string "WWDGT_STAT REG32((WWDGT) + 0x00000008U)" +.LASF1157: + .string "DAC_SWT_SWTR1 BIT(1)" +.LASF2014: + .string "FWDGT_PSC_TIMEOUT ((uint32_t)0x000FFFFFU)" +.LASF2602: + .string "TIMER_SWEVG(timerx) REG32((timerx) + 0x14U)" +.LASF1087: + .string "CAN_FIFO0 ((uint8_t)0x00U)" +.LASF2010: + .string "FWDGT_WRITEACCESS_ENABLE ((uint16_t)0x5555U)" +.LASF2700: + .string "TIMER_CHCTL1_CH3COMSEN BIT(11)" +.LASF1949: + .string "I2C_REGIDX_BIT2(regidx,bitpos,regidx2,bitpos2) (((uint32_t)(regidx2) << 22) | (uint32_t)((bitpos2) << 16) | (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos)))" +.LASF753: + .string "BKP_DATA41 REG16((BKP) + 0xBCU)" +.LASF2370: + .string "RCU_PREDV1_DIV14 CFG1_PREDV1(13)" +.LASF2076: + .string "RCU RCU_BASE" +.LASF2750: + .string "TIMER_INT_FLAG_CH1 TIMER_INT_CH1" +.LASF252: + .string "__FLT32X_DIG__ 15" +.LASF2635: + .string "TIMER_CTL1_ISO2N BIT(13)" +.LASF2824: + .string "CTL0_CAM(regval) ((uint16_t)(BITS(5, 6) & ((uint32_t)(regval) << 5U)))" +.LASF2043: + .string "PMU PMU_BASE" +.LASF746: + .string "BKP_DATA34 REG16((BKP) + 0xA0U)" +.LASF2616: + .string "TIMER_DMATB(timerx) REG32((timerx) + 0x4CU)" +.LASF2547: + .string "I2S_MCKOUT_ENABLE SPI_I2SPSC_MCKOEN" +.LASF618: + .string "ADC_DATAALIGN_LEFT ADC_CTL1_DAL" +.LASF368: + .string "___int_least8_t_defined 1" +.LASF2278: + .string "RCU_CKADC_CKAPB2_DIV2 ((uint32_t)0x00000000U)" +.LASF2180: + .string "RCU_APB2EN_PBEN BIT(3)" +.LASF801: + .string "CAN_TMDATA12(canx) REG32((canx) + 0x1ACU)" +.LASF669: + .string "ADC_CHANNEL_9 ((uint8_t)0x09U)" +.LASF1902: + .string "I2C_CTL0_POAP BIT(11)" +.LASF2561: + .string "SPI_DMA_TRANSMIT ((uint8_t)0x00U)" +.LASF174: + .string "__DBL_HAS_QUIET_NAN__ 1" +.LASF1744: + .string "GPIO_LOCK_LK13 BIT(13)" +.LASF396: + .string "__FAST8 " +.LASF2053: + .string "PMU_CS_WUF BIT(0)" +.LASF647: + .string "IOFFX_IOFF(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF1796: + .string "GPIO_EVENT_PORT_GPIOA ((uint8_t)0x00U)" +.LASF571: + .string "ADC_CTL1_CLB BIT(2)" +.LASF1708: + .string "GPIO_BOP_CR9 BIT(25)" +.LASF3193: + .string "stab_flag" +.LASF629: + .string "CTL1_ETSIC(regval) (BITS(12,14) & ((uint32_t)(regval) << 12))" +.LASF2313: + .string "RCU_PLL_MUL27 (PLLMF_4 | CFG0_PLLMF(10))" +.LASF529: + .string "ADC1 (ADC_BASE + 0x400U)" +.LASF759: + .string "BKP_OCTL_COEN BIT(7)" +.LASF2487: + .string "SPI_STAT_RXORERR BIT(6)" +.LASF3194: + .string "scss" +.LASF1163: + .string "DAC1_R8DH_DAC1_DH BITS(0,7)" +.LASF2404: + .string "RCU_DEEPSLEEP_V_1_0 DSV_DSLPVS(2)" +.LASF2401: + .string "DSV_DSLPVS(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF2913: + .string "TIMER_TRI_OUT_SRC_O1CPRE CTL1_MMC(5)" +.LASF2758: + .string "TIMER_FLAG_CH1 TIMER_INTF_CH1IF" +.LASF1113: + .string "CAN_INT_ERRN CAN_INTEN_ERRNIE" +.LASF1064: + .string "CAN_BT_BS1_8TQ ((uint8_t)0x07U)" +.LASF310: + .string "__riscv_float_abi_soft 1" +.LASF2381: + .string "RCU_PLL1_MUL15 CFG1_PLL1MF(13)" +.LASF1232: + .string "DMA_CH0CNT(dmax) REG32((dmax) + 0x0CU)" +.LASF2952: + .string "USART_STAT_FERR BIT(1)" +.LASF2914: + .string "TIMER_TRI_OUT_SRC_O2CPRE CTL1_MMC(6)" +.LASF1592: + .string "OB_WP_30 ((uint32_t)0x40000000U)" +.LASF2328: + .string "RCU_CKOUT0SRC_HXTAL CFG0_CKOUT0SEL(6)" +.LASF2029: + .string "DBG_CTL_TIMER1_HOLD BIT(11)" +.LASF239: + .string "__FLT128_MIN_10_EXP__ (-4931)" +.LASF1369: + .string "EXTI_PD REG32(EXTI + 0x14U)" +.LASF1758: + .string "AFIO_PCF0_TIMER2_REMAP BITS(10, 11)" +.LASF1960: + .string "I2C_TRANSMITTER ((uint32_t)0xFFFFFFFEU)" +.LASF708: + .string "ADC_OVERSAMPLING_RATIO_MUL128 OVSCR_OVSR(6)" +.LASF1777: + .string "AFIO_EXTI11_SS BITS(12, 15)" +.LASF519: + .string "ADC_BASE (APB2_BUS_BASE + 0x00002400U)" +.LASF2434: + .string "RTC_ALRML_ALRM BITS(0,15)" +.LASF545: + .string "ADC_IDATA0(adcx) REG32((adcx) + 0x3CU)" +.LASF2457: + .string "SPI_I2SCTL(spix) REG32((spix) + 0x1CU)" +.LASF1770: + .string "AFIO_EXTI4_SS BITS(0, 3)" +.LASF1792: + .string "GPIO_MODE_AF_PP ((uint8_t)0x18U)" +.LASF2268: + .string "RCU_APB1_CKAHB_DIV2 CFG0_APB1PSC(4)" +.LASF905: + .string "CAN_TSTAT_MTF1 BIT(8)" +.LASF1785: + .string "GPIO_MODE_AIN ((uint8_t)0x00U)" +.LASF517: + .string "EXTI_BASE (APB2_BUS_BASE + 0x00000400U)" +.LASF2542: + .string "I2S_FRAMEFORMAT_DT16B_CH16B I2SCTL_DTLEN(0)" +.LASF1505: + .string "FMC_STAT_BUSY BIT(0)" +.LASF2417: + .string "RTC_ALRML REG32(RTC + 0x24U)" +.LASF427: + .string "__int_fast32_t_defined 1" +.LASF1376: + .string "EXTI_INTEN_INTEN6 BIT(6)" +.LASF594: + .string "ADC_OVSCR_OVSR BITS(2,4)" +.LASF1622: + .string "GPIO_CTL0_CTL1 BITS(6, 7)" +.LASF2118: + .string "RCU_INT_LXTALSTBIF BIT(1)" +.LASF3177: + .string "signed char" +.LASF163: + .string "__DBL_MIN_10_EXP__ (-307)" +.LASF2721: + .string "TIMER_CNT_CNT BITS(0,15)" +.LASF610: + .string "ADC_DAUL_INSERTED_PARALLEL_REGULAL_FOLLOWUP_FAST CTL0_SYNCM(3)" +.LASF236: + .string "__FLT128_MANT_DIG__ 113" +.LASF1847: + .string "GPIO_PIN_9 BIT(9)" +.LASF134: + .string "__UINT_FAST32_MAX__ 0xffffffffU" +.LASF3171: + .string "__SYS_OSC_CLK (__IRC8M)" +.LASF2154: + .string "RCU_APB1RST_TIMER4RST BIT(3)" +.LASF627: + .string "ADC0_1_EXTTRIG_REGULAR_EXTI_11 CTL1_ETSRC(6)" +.LASF2089: + .string "RCU_DSV REG32(RCU + 0x34U)" +.LASF1000: + .string "CAN_BIT_POS1(val) ((uint32_t)(val) & 0x1FU)" +.LASF43: + .string "__INT32_TYPE__ long int" +.LASF2661: + .string "TIMER_INTF_CH1IF BIT(2)" +.LASF392: + .string "__INT8 \"hh\"" +.LASF2288: + .string "RCU_PLL_MUL2 CFG0_PLLMF(0)" +.LASF1761: + .string "AFIO_PCF0_PD01_REMAP BIT(15)" +.LASF1486: + .string "OB OB_BASE" +.LASF3188: + .string "uint8_t" +.LASF244: + .string "__FLT128_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F128" +.LASF3034: + .string "CTL1_CLEN(regval) (BIT(8) & ((uint32_t)(regval) << 8))" +.LASF852: + .string "CAN_F9DATA1(canx) REG32((canx) + 0x28CU)" +.LASF1142: + .string "DAC_CTL_DEN0 BIT(0)" +.LASF2539: + .string "I2S_AUDIOSAMPLE_96K ((uint32_t)96000U)" +.LASF433: + .string "INT8_MAX (__INT8_MAX__)" +.LASF1482: + .string "EXTI_PD_PD17 BIT(17)" +.LASF540: + .string "ADC_WDLT(adcx) REG32((adcx) + 0x28U)" +.LASF1065: + .string "CAN_BT_BS1_9TQ ((uint8_t)0x08U)" +.LASF1714: + .string "GPIO_BOP_CR15 BIT(31)" +.LASF121: + .string "__UINT32_C(c) c ## UL" +.LASF1612: + .string "AFIO_EC REG32(AFIO + 0x00U)" +.LASF2573: + .string "I2S_INT_FLAG_TXURERR ((uint8_t)0x05U)" +.LASF1748: + .string "AFIO_EC_PIN BITS(0, 3)" +.LASF77: + .string "__PTRDIFF_MAX__ 0x7fffffff" +.LASF2799: + .string "TIMER_DMACFG_DMATC_2TRANSFER DMACFG_DMATC(1)" +.LASF1687: + .string "GPIO_BOP_BOP4 BIT(4)" +.LASF2051: + .string "PMU_CTL_LVDT BITS(5,7)" +.LASF2927: + .string "SMCFG_ETPSC(regval) (BITS(12, 13) & ((uint32_t)(regval) << 12U))" +.LASF1654: + .string "GPIO_ISTAT_ISTAT3 BIT(3)" +.LASF1425: + .string "EXTI_RTEN_RTEN17 BIT(17)" +.LASF2482: + .string "SPI_STAT_TBE BIT(1)" +.LASF1437: + .string "EXTI_FTEN_FTEN10 BIT(10)" +.LASF388: + .string "int +2" +.LASF2388: + .string "RCU_PLL2_MUL11 CFG1_PLL2MF(9)" +.LASF2284: + .string "RCU_PLLSRC_IRC8M_DIV2 ((uint32_t)0x00000000U)" +.LASF2506: + .string "SPI_SLAVE ((uint32_t)0x00000000U)" +.LASF2603: + .string "TIMER_CHCTL0(timerx) REG32((timerx) + 0x18U)" +.LASF2411: + .string "RTC_PSCL REG32(RTC + 0x0CU)" +.LASF220: + .string "__FLT32_HAS_QUIET_NAN__ 1" +.LASF1083: + .string "CAN_MAILBOX2 ((uint8_t)0x02U)" +.LASF8: + .string "__VERSION__ \"10.2.0\"" +.LASF48: + .string "__UINT64_TYPE__ long long unsigned int" +.LASF1061: + .string "CAN_BT_BS1_5TQ ((uint8_t)0x04U)" +.LASF874: + .string "CAN_TMDATA1(canx,bank) REG32((canx) + 0x18CU + ((bank) * 0x10U))" +.LASF460: + .string "INT_FAST16_MAX (__INT_FAST16_MAX__)" +.LASF996: + .string "CAN_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF2669: + .string "TIMER_INTF_CH2OF BIT(11)" +.LASF1536: + .string "FMC_CTL_REG_OFFSET 0x10U" +.LASF2828: + .string "TIMER_COUNTER_CENTER_BOTH CTL0_CAM(3)" +.LASF1778: + .string "AFIO_EXTI12_SS BITS(0, 3)" +.LASF1161: + .string "DAC1_R12DH_DAC1_DH BITS(0,11)" +.LASF1495: + .string "FMC_PID REG32((FMC) + 0x100U)" +.LASF3167: + .string "ECLIC_GROUP_LEVEL3_PRIO1 3" +.LASF1435: + .string "EXTI_FTEN_FTEN8 BIT(8)" +.LASF514: + .string "PMU_BASE (APB1_BUS_BASE + 0x00007000U)" +.LASF1375: + .string "EXTI_INTEN_INTEN5 BIT(5)" +.LASF1840: + .string "GPIO_PIN_2 BIT(2)" +.LASF2397: + .string "RCU_I2S1SRC_CKSYS ((uint32_t)0x00000000U)" +.LASF982: + .string "CAN_RFIFOMDATA0_DB3 BITS(24,31)" +.LASF2291: + .string "RCU_PLL_MUL5 CFG0_PLLMF(3)" +.LASF453: + .string "INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1)" +.LASF286: + .string "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1" +.LASF1812: + .string "GPIO_EVENT_PIN_6 ((uint8_t)0x06U)" +.LASF755: + .string "BKP_TPCTL REG16((BKP) + 0x30U)" +.LASF2007: + .string "FWDGT_PSC_DIV64 ((uint8_t)PSC_PSC(4))" +.LASF3047: + .string "USART_DENT_ENABLE CLT2_DENT(1)" +.LASF442: + .string "INT_LEAST16_MAX (__INT_LEAST16_MAX__)" +.LASF2512: + .string "SPI_TRANSMODE_BDTRANSMIT (SPI_CTL0_BDEN | SPI_CTL0_BDOEN)" +.LASF309: + .string "__riscv_xlen 32" +.LASF2797: + .string "DMACFG_DMATC(regval) (BITS(8, 12) & ((uint32_t)(regval) << 8U))" +.LASF281: + .string "__REGISTER_PREFIX__ " +.LASF1633: + .string "GPIO_CTL0_MD7 BITS(28, 29)" +.LASF20: + .string "__SIZEOF_FLOAT__ 4" +.LASF2949: + .string "USART_CTL2(usartx) REG32((usartx) + (0x00000014U))" +.LASF645: + .string "ADC_SAMPLETIME_71POINT5 SAMPTX_SPT(6)" +.LASF836: + .string "CAN_F21DATA0(canx) REG32((canx) + 0x2E8U)" +.LASF1428: + .string "EXTI_FTEN_FTEN1 BIT(1)" +.LASF2896: + .string "TIMER_IC_PSC_DIV4 ((uint16_t)0x0008U)" +.LASF985: + .string "CAN_RFIFOMDATA1_DB6 BITS(16,23)" +.LASF1268: + .string "DMA_CHXCTL_FTFIE BIT(1)" +.LASF1245: + .string "DMA_CH3PADDR(dmax) REG32((dmax) + 0x4CU)" +.LASF2931: + .string "TIMER_EXT_TRI_PSC_DIV8 SMCFG_ETPSC(3)" +.LASF1256: + .string "DMA_CH6CNT(dmax) REG32((dmax) + 0x84U)" +.LASF2959: + .string "USART_STAT_LBDF BIT(8)" +.LASF585: + .string "ADC_WDLT_WDLT BITS(0,11)" +.LASF854: + .string "CAN_F11DATA1(canx) REG32((canx) + 0x29CU)" +.LASF744: + .string "BKP_DATA32 REG16((BKP) + 0x98U)" +.LASF1830: + .string "GPIO_PIN_SOURCE_8 ((uint8_t)0x08U)" +.LASF1054: + .string "CAN_BT_SJW_2TQ ((uint8_t)0x01U)" +.LASF376: + .string "unsigned" +.LASF476: + .string "WCHAR_MIN (__WCHAR_MIN__)" +.LASF1919: + .string "I2C_STAT0_SBSEND BIT(0)" +.LASF523: + .string "CRC_BASE (AHB1_BUS_BASE + 0x0000B000U)" +.LASF2564: + .string "SPI_CRC_RX ((uint8_t)0x01U)" +.LASF2751: + .string "TIMER_INT_FLAG_CH2 TIMER_INT_CH2" +.LASF2608: + .string "TIMER_CAR(timerx) REG32((timerx) + 0x2CU)" +.LASF3039: + .string "USART_CPH_2CK CTL1_CPH(1)" +.LASF2351: + .string "RCU_PREDV0_DIV12 CFG1_PREDV0(11)" +.LASF1526: + .string "FMC_PID_PID BITS(0,31)" +.LASF140: + .string "__GCC_IEC_559_COMPLEX 0" +.LASF153: + .string "__FLT_NORM_MAX__ 3.40282346638528859811704183484516925e+38F" +.LASF219: + .string "__FLT32_HAS_INFINITY__ 1" +.LASF2294: + .string "RCU_PLL_MUL8 CFG0_PLLMF(6)" +.LASF1484: + .string "GD32VF103_FMC_H " +.LASF2688: + .string "TIMER_CHCTL0_CH1COMCEN BIT(15)" +.LASF2938: + .string "GD32VF103_USART_H " +.LASF24: + .string "__CHAR_BIT__ 8" +.LASF3189: + .string "uint16_t" +.LASF2900: + .string "TIMER_SMCFG_TRGSEL_ITI1 SMCFG_TRGSEL(1)" +.LASF2886: + .string "TIMER_UPDATECTL_CCU ((uint32_t)0x00000000U)" +.LASF3042: + .string "USART_CPL_HIGH CTL1_CPL(1)" +.LASF716: + .string "BKP_DATA4 REG16((BKP) + 0x14U)" +.LASF203: + .string "__FLT16_HAS_DENORM__ 1" +.LASF1191: + .string "DAC_WAVE_BIT_WIDTH_6 DWBW(5)" +.LASF2425: + .string "RTC_CTL_CMF BIT(4)" +.LASF1170: + .string "DAC0_DO_DAC0_DO BITS(0,11)" +.LASF479: + .string "WINT_MIN (__WINT_MIN__)" +.LASF732: + .string "BKP_DATA20 REG16((BKP) + 0x68U)" +.LASF2047: + .string "PMU_CTL_STBMOD BIT(1)" +.LASF1825: + .string "GPIO_PIN_SOURCE_3 ((uint8_t)0x03U)" +.LASF1930: + .string "I2C_STAT0_PECERR BIT(12)" +.LASF335: + .string "HXTAL_STARTUP_TIMEOUT ((uint16_t)0xFFFF)" +.LASF254: + .string "__FLT32X_MIN_10_EXP__ (-307)" +.LASF1021: + .string "TMDATA1_DB5(regval) (BITS(8,15) & ((uint32_t)(regval) << 8))" +.LASF1402: + .string "EXTI_EVEN_EVEN13 BIT(13)" +.LASF1431: + .string "EXTI_FTEN_FTEN4 BIT(4)" +.LASF637: + .string "ADC0_1_EXTTRIG_INSERTED_NONE CTL1_ETSIC(7)" +.LASF1534: + .string "FMC_REG_OFFSET_GET(flag) ((uint32_t)(flag) >> 12)" +.LASF542: + .string "ADC_RSQ1(adcx) REG32((adcx) + 0x30U)" +.LASF1793: + .string "GPIO_OSPEED_10MHZ ((uint8_t)0x01U)" +.LASF743: + .string "BKP_DATA31 REG16((BKP) + 0x94U)" +.LASF92: + .string "__INTMAX_WIDTH__ 64" +.LASF2490: + .string "SPI_DATA_DATA BITS(0,15)" +.LASF2171: + .string "RCU_AHBEN_DMA0EN BIT(0)" +.LASF287: + .string "__GCC_ATOMIC_BOOL_LOCK_FREE 1" +.LASF635: + .string "ADC0_1_EXTTRIG_INSERTED_T3_TRGO CTL1_ETSIC(5)" +.LASF1888: + .string "I2C_STAT1(i2cx) REG32((i2cx) + 0x18U)" +.LASF338: + .string "IRC40K_VALUE ((uint32_t)40000)" +.LASF2194: + .string "RCU_APB1EN_TIMER6EN BIT(5)" +.LASF670: + .string "ADC_CHANNEL_10 ((uint8_t)0x0AU)" +.LASF2494: + .string "SPI_I2SCTL_CHLEN BIT(0)" +.LASF2302: + .string "RCU_PLL_MUL16 CFG0_PLLMF(14)" +.LASF3112: + .string "_WCHAR_T_ " +.LASF2272: + .string "CFG0_APB2PSC(regval) (BITS(11,13) & ((uint32_t)(regval) << 11))" +.LASF1688: + .string "GPIO_BOP_BOP5 BIT(5)" +.LASF3082: + .string "_PTRDIFF_T_ " +.LASF2084: + .string "RCU_APB1EN REG32(RCU + 0x1CU)" +.LASF483: + .string "UINT16_C(x) __UINT16_C(x)" +.LASF1410: + .string "EXTI_RTEN_RTEN2 BIT(2)" +.LASF1635: + .string "GPIO_CTL1_MD8 BITS(0, 1)" +.LASF650: + .string "RSQ0_RL(regval) (BITS(20,23) & ((uint32_t)(regval) << 20))" +.LASF2647: + .string "TIMER_DMAINTEN_CH2IE BIT(3)" +.LASF882: + .string "CAN_CTL_SLPWMOD BIT(1)" +.LASF847: + .string "CAN_F4DATA1(canx) REG32((canx) + 0x264U)" +.LASF1121: + .string "CRC_CTL REG32(CRC + 0x08U)" +.LASF1883: + .string "I2C_CTL1(i2cx) REG32((i2cx) + 0x04U)" +.LASF1522: + .string "FMC_OBSTAT_USER BITS(2,9)" +.LASF319: + .string "__ELF__ 1" +.LASF715: + .string "BKP_DATA3 REG16((BKP) + 0x10U)" +.LASF238: + .string "__FLT128_MIN_EXP__ (-16381)" +.LASF130: + .string "__INT_FAST64_MAX__ 0x7fffffffffffffffLL" +.LASF2664: + .string "TIMER_INTF_CMTIF BIT(5)" +.LASF2459: + .string "SPI_CTL0_CKPH BIT(0)" +.LASF2151: + .string "RCU_APB1RST_TIMER1RST BIT(0)" +.LASF2122: + .string "RCU_INT_PLL1STBIF BIT(5)" +.LASF2625: + .string "TIMER_CTL1_CCSE BIT(0)" +.LASF570: + .string "ADC_CTL1_CTN BIT(1)" +.LASF2862: + .string "TIMER_CCXN_ENABLE ((uint16_t)0x0004U)" +.LASF2713: + .string "TIMER_CHCTL2_CH1NEN BIT(6)" +.LASF2793: + .string "TIMER_DMACFG_DMATA_CH2CV DMACFG_DMATA(15)" +.LASF742: + .string "BKP_DATA30 REG16((BKP) + 0x90U)" +.LASF816: + .string "CAN_F1DATA0(canx) REG32((canx) + 0x248U)" +.LASF2086: + .string "RCU_RSTSCK REG32(RCU + 0x24U)" +.LASF970: + .string "CAN_TMDATA1_DB6 BITS(16,23)" +.LASF1228: + .string "DMA1 (DMA_BASE + 0x0400U)" +.LASF3081: + .string "__PTRDIFF_T " +.LASF2453: + .string "SPI_DATA(spix) REG32((spix) + 0x0CU)" +.LASF2643: + .string "TIMER_SMCFG_ETP BIT(15)" +.LASF2951: + .string "USART_STAT_PERR BIT(0)" +.LASF1037: + .string "GET_ERR_TECNT(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF2052: + .string "PMU_CTL_BKPWEN BIT(8)" +.LASF2239: + .string "AHBRST_REG_OFFSET 0x28U" +.LASF432: + .string "INT8_MIN (-__INT8_MAX__ - 1)" +.LASF2628: + .string "TIMER_CTL1_MMC BITS(4,6)" +.LASF2442: + .string "RTC_FLAG_ALARM RTC_CTL_ALRMIF" +.LASF1199: + .string "DAC_LFSR_BITS1_0 DAC_WAVE_BIT_WIDTH_2" +.LASF272: + .string "__FLT64X_DECIMAL_DIG__ 36" +.LASF653: + .string "ADC_INSERTED_CHANNEL ((uint8_t)0x02U)" +.LASF1271: + .string "DMA_CHXCTL_DIR BIT(4)" +.LASF1456: + .string "EXTI_SWIEV_SWIEV10 BIT(10)" +.LASF866: + .string "CAN_F23DATA1(canx) REG32((canx) + 0x2FCU)" +.LASF586: + .string "ADC_RSQX_RSQN BITS(0,4)" +.LASF132: + .string "__UINT_FAST8_MAX__ 0xffffffffU" +.LASF2324: + .string "CFG0_CKOUT0SEL(regval) (BITS(24,27) & ((uint32_t)(regval) << 24))" +.LASF462: + .string "INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1)" +.LASF1980: + .string "I2C_PECTRANS_DISABLE ((uint32_t)0x00000000U)" +.LASF2249: + .string "RCU_CKSYSSRC_IRC8M CFG0_SCS(0)" +.LASF1359: + .string "EXMC_BANK0_NORSRAM_REGION0 ((uint32_t)0x00000000U)" +.LASF1001: + .string "STAT_REG_OFFSET ((uint8_t)0x04U)" +.LASF3061: + .string "WWDGT_CFG REG32((WWDGT) + 0x00000004U)" +.LASF3090: + .string "_SIZE_T " +.LASF1285: + .string "DMA_CHPADDR(dma,channel) REG32(((dma) + 0x10U) + 0x14U * (uint32_t)(channel))" +.LASF2306: + .string "RCU_PLL_MUL20 (PLLMF_4 | CFG0_PLLMF(3))" +.LASF2112: + .string "RCU_CFG0_PLLMF BITS(18,21)" +.LASF2677: + .string "TIMER_SWEVG_TRGG BIT(6)" +.LASF574: + .string "ADC_CTL1_DAL BIT(11)" +.LASF2498: + .string "SPI_I2SCTL_PCMSMOD BIT(7)" +.LASF1151: + .string "DAC_CTL_DTEN1 BIT(18)" +.LASF2935: + .string "TIMER_HALLINTERFACE_DISABLE ((uint32_t)0x00000000U)" +.LASF672: + .string "ADC_CHANNEL_12 ((uint8_t)0x0CU)" +.LASF2380: + .string "RCU_PLL1_MUL14 CFG1_PLL1MF(12)" +.LASF170: + .string "__DBL_EPSILON__ ((double)2.22044604925031308084726333618164062e-16L)" +.LASF345: + .string "_NEWLIB_VERSION \"4.1.0\"" +.LASF1948: + .string "I2C_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF792: + .string "CAN_TMDATA00(canx) REG32((canx) + 0x188U)" +.LASF881: + .string "CAN_CTL_IWMOD BIT(0)" +.LASF1786: + .string "GPIO_MODE_IN_FLOATING ((uint8_t)0x04U)" +.LASF1938: + .string "I2C_STAT1_HSTSMB BIT(6)" +.LASF1727: + .string "GPIO_BC_CR12 BIT(12)" +.LASF3043: + .string "CLT2_DENR(regval) (BIT(6) & ((uint32_t)(regval) << 6))" +.LASF1474: + .string "EXTI_PD_PD9 BIT(9)" +.LASF706: + .string "ADC_OVERSAMPLING_RATIO_MUL32 OVSCR_OVSR(4)" +.LASF409: + .string "_UINT16_T_DECLARED " +.LASF2133: + .string "RCU_INT_LXTALSTBIC BIT(17)" +.LASF886: + .string "CAN_CTL_AWU BIT(5)" +.LASF2753: + .string "TIMER_INT_FLAG_CMT TIMER_INT_CMT" +.LASF1673: + .string "GPIO_OCTL_OCTL6 BIT(6)" +.LASF326: + .string "RT_USING_NEWLIB 1" +.LASF2681: + .string "TIMER_CHCTL0_CH0COMSEN BIT(3)" +.LASF901: + .string "CAN_TSTAT_MTFNERR0 BIT(1)" +.LASF2150: + .string "RCU_APB2RST_USART0RST BIT(14)" +.LASF456: + .string "INT_FAST8_MIN (-__INT_FAST8_MAX__ - 1)" +.LASF694: + .string "ADC_OVERSAMPLING_SHIFT_2B OVSCR_OVSS(2)" +.LASF1606: + .string "GPIO_CTL1(gpiox) REG32((gpiox) + 0x04U)" +.LASF943: + .string "CAN_INTEN_SLPWIE BIT(17)" +.LASF1235: + .string "DMA_CH1CTL(dmax) REG32((dmax) + 0x1CU)" +.LASF1817: + .string "GPIO_EVENT_PIN_11 ((uint8_t)0x0BU)" +.LASF131: + .string "__INT_FAST64_WIDTH__ 64" +.LASF2234: + .string "RCU_REG_VAL(periph) (REG32(RCU + ((uint32_t)(periph) >> 6)))" +.LASF2942: + .string "UART4 (USART_BASE+(0x00000C00U))" +.LASF3036: + .string "USART_CLEN_EN CTL1_CLEN(1)" +.LASF343: + .string "_SYS_FEATURES_H " +.LASF839: + .string "CAN_F24DATA0(canx) REG32((canx) + 0x300U)" +.LASF1706: + .string "GPIO_BOP_CR7 BIT(23)" +.LASF1078: + .string "CAN_BT_BS2_6TQ ((uint8_t)0x05U)" +.LASF599: + .string "ADC_FLAG_EOC ADC_STAT_EOC" +.LASF654: + .string "ADC_REGULAR_INSERTED_CHANNEL ((uint8_t)0x03U)" +.LASF2737: + .string "TIMER_DMACFG_DMATA BITS(0,4)" +.LASF2851: + .string "TIMER_CCHP_PROT_0 CCHP_PROT(1)" +.LASF448: + .string "INT_LEAST32_MAX (__INT_LEAST32_MAX__)" +.LASF2899: + .string "TIMER_SMCFG_TRGSEL_ITI0 SMCFG_TRGSEL(0)" +.LASF3117: + .string "___int_wchar_t_h " +.LASF1875: + .string "GPIO_SWJ_DISABLE_REMAP ((uint32_t)0x00300200U)" +.LASF1329: + .string "ECLIC_PRIGROUP_LEVEL3_PRIO1 3" +.LASF1568: + .string "OB_WP_6 ((uint32_t)0x00000040U)" +.LASF1851: + .string "GPIO_PIN_13 BIT(13)" +.LASF3136: + .string "TIMER_REG(offset) _REG32(TIMER_CTRL_ADDR, offset)" +.LASF711: + .string "BKP BKP_BASE" +.LASF1231: + .string "DMA_CH0CTL(dmax) REG32((dmax) + 0x08U)" +.LASF1165: + .string "DACC_R12DH_DAC1_DH BITS(16,27)" +.LASF1176: + .string "DAC_TRIGGER_T4_TRGO CTL_DTSEL(3)" +.LASF1057: + .string "CAN_BT_BS1_1TQ ((uint8_t)0x00U)" +.LASF2702: + .string "TIMER_CHCTL1_CH3COMCEN BIT(15)" +.LASF2527: + .string "SPI_PSC_16 CTL0_PSC(3)" +.LASF3159: + .string "ECLIC_CFG_NLBITS_LSB (1u)" +.LASF2422: + .string "RTC_CTL_ALRMIF BIT(1)" +.LASF2451: + .string "SPI_CTL1(spix) REG32((spix) + 0x04U)" +.LASF1201: + .string "DAC_LFSR_BITS3_0 DAC_WAVE_BIT_WIDTH_4" +.LASF126: + .string "__INT_FAST16_MAX__ 0x7fffffff" +.LASF602: + .string "ADC_FLAG_STRC ADC_STAT_STRC" +.LASF2784: + .string "TIMER_DMACFG_DMATA_CHCTL0 DMACFG_DMATA(6)" +.LASF1442: + .string "EXTI_FTEN_FTEN15 BIT(15)" +.LASF2071: + .string "PMU_FLAG_RESET_WAKEUP ((uint8_t)0x00U)" +.LASF380: + .string "__int20__" +.LASF262: + .string "__FLT32X_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F32x" +.LASF1467: + .string "EXTI_PD_PD2 BIT(2)" +.LASF1531: + .string "FMC_REG_VALS(offset) (REG32(FMC + ((uint32_t)(offset) >> 12)))" +.LASF488: + .string "INTMAX_C(x) __INTMAX_C(x)" +.LASF168: + .string "__DBL_NORM_MAX__ ((double)1.79769313486231570814527423731704357e+308L)" +.LASF3143: + .string "_BITULL(x) (_AC(1,ULL) << (x))" +.LASF1023: + .string "TMDATA1_DB7(regval) (BITS(24,31) & ((uint32_t)(regval) << 24))" +.LASF3069: + .string "CFG_PSC(regval) (BITS(7,8) & ((uint32_t)(regval) << 7))" +.LASF199: + .string "__FLT16_NORM_MAX__ 6.55040000000000000000000000000000000e+4F16" +.LASF2042: + .string "GD32VF103_PMU_H " +.LASF3196: + .string "predv0sel" +.LASF846: + .string "CAN_F3DATA1(canx) REG32((canx) + 0x25CU)" +.LASF2003: + .string "FWDGT_PSC_DIV4 ((uint8_t)PSC_PSC(0))" +.LASF3021: + .string "USART_WM_IDLE CTL0_WM(0)" +.LASF501: + .string "APB1_BUS_BASE ((uint32_t)0x40000000U)" +.LASF553: + .string "ADC_STAT_EOIC BIT(2)" +.LASF1876: + .string "GPIO_SPI2_REMAP ((uint32_t)0x00201100U)" +.LASF1994: + .string "FWDGT_PSC REG32((FWDGT) + 0x00000004U)" +.LASF1804: + .string "GPIO_PORT_SOURCE_GPIOD ((uint8_t)0x03U)" +.LASF1052: + .string "CAN_SILENT_LOOPBACK_MODE ((uint8_t)0x03U)" +.LASF2612: + .string "TIMER_CH2CV(timerx) REG32((timerx) + 0x3CU)" +.LASF1788: + .string "GPIO_MODE_IPU ((uint8_t)0x48U)" +.LASF1086: + .string "CAN_FF_EXTENDED ((uint32_t)0x00000004U)" +.LASF3124: + .string "NULL ((void *)0)" +.LASF443: + .string "UINT_LEAST16_MAX (__UINT_LEAST16_MAX__)" +.LASF1941: + .string "I2C_CKCFG_CLKC BITS(0,11)" +.LASF1475: + .string "EXTI_PD_PD10 BIT(10)" +.LASF1110: + .string "CAN_INT_WERR CAN_INTEN_WERRIE" +.LASF2091: + .string "RCU_CTL_IRC8MSTB BIT(1)" +.LASF1595: + .string "FMC_TIMEOUT_COUNT ((uint32_t)0x000F0000U)" +.LASF2471: + .string "SPI_CTL0_BDOEN BIT(14)" +.LASF2640: + .string "TIMER_SMCFG_ETFC BITS(8,11)" +.LASF1316: + .string "DMA_MEMORY_WIDTH_32BIT CHCTL_MWIDTH(2U)" +.LASF696: + .string "ADC_OVERSAMPLING_SHIFT_4B OVSCR_OVSS(4)" +.LASF1198: + .string "DAC_LFSR_BIT0 DAC_WAVE_BIT_WIDTH_1" +.LASF613: + .string "ADC_DAUL_REGULAL_PARALLEL CTL0_SYNCM(6)" +.LASF1453: + .string "EXTI_SWIEV_SWIEV7 BIT(7)" +.LASF927: + .string "CAN_RFIFO1_RFF1 BIT(3)" +.LASF1734: + .string "GPIO_LOCK_LK3 BIT(3)" +.LASF791: + .string "CAN_TMP0(canx) REG32((canx) + 0x184U)" +.LASF1649: + .string "GPIO_CTL1_MD15 BITS(28, 29)" +.LASF1104: + .string "CAN_INT_RFNE0 CAN_INTEN_RFNEIE0" +.LASF1304: + .string "DMA_MEMORY_TO_PERIPHERAL ((uint8_t)0x01U)" +.LASF1264: + .string "DMA_INTC_FTFIFC BIT(1)" +.LASF3174: + .string "SEL_HXTAL 0x01U" +.LASF2652: + .string "TIMER_DMAINTEN_UPDEN BIT(8)" +.LASF1150: + .string "DAC_CTL_DBOFF1 BIT(17)" +.LASF1418: + .string "EXTI_RTEN_RTEN10 BIT(10)" +.LASF504: + .string "AHB3_BUS_BASE ((uint32_t)0x60000000U)" +.LASF3102: + .string "_GCC_SIZE_T " +.LASF1678: + .string "GPIO_OCTL_OCTL11 BIT(11)" +.LASF2945: + .string "USART_DATA(usartx) REG32((usartx) + (0x00000004U))" +.LASF1570: + .string "OB_WP_8 ((uint32_t)0x00000100U)" +.LASF777: + .string "BKP_FLAG_TAMPER BKP_TPCS_TEF" +.LASF374: + .string "__STDINT_EXP(x) __ ##x ##__" +.LASF776: + .string "TAMPER_PIN_ACTIVE_LOW ((uint16_t)0x0002U)" +.LASF1233: + .string "DMA_CH0PADDR(dmax) REG32((dmax) + 0x10U)" +.LASF3122: + .string "__need_wchar_t" +.LASF1765: + .string "AFIO_PCF0_TIMER1_ITI1_REMAP BIT(29)" +.LASF973: + .string "CAN_RFIFOMI_FF BIT(2)" +.LASF139: + .string "__GCC_IEC_559 0" +.LASF1850: + .string "GPIO_PIN_12 BIT(12)" +.LASF320: + .string "USE_PLIC 1" +.LASF206: + .string "__FLT32_MANT_DIG__ 24" +.LASF932: + .string "CAN_INTEN_RFFIE0 BIT(2)" +.LASF1869: + .string "GPIO_CAN0_PARTIAL_REMAP ((uint32_t)0x001D4000U)" +.LASF1504: + .string "FMC_OBKEY_OBKEY BITS(0,31)" +.LASF321: + .string "USE_M_TIME 1" +.LASF1220: + .string "DAC_TRIANGLE_AMPLITUDE_127 DAC_WAVE_BIT_WIDTH_7" +.LASF2660: + .string "TIMER_INTF_CH0IF BIT(1)" +.LASF2985: + .string "USART_CTL1_STB BITS(12,13)" +.LASF1492: + .string "FMC_ADDR REG32((FMC) + 0x14U)" +.LASF2734: + .string "TIMER_CCHP_BRKP BIT(13)" +.LASF3075: + .string "_STDDEF_H " +.LASF1302: + .string "DMA_INT_ERR DMA_CHXCTL_ERRIE" +.LASF1966: + .string "I2C_DUADEN_ENABLE ((uint32_t)0x00000001U)" +.LASF1457: + .string "EXTI_SWIEV_SWIEV11 BIT(11)" +.LASF3091: + .string "_SYS_SIZE_T_H " +.LASF80: + .string "__SHRT_WIDTH__ 16" +.LASF2559: + .string "I2S_CKPL_LOW ((uint32_t)0x00000000U)" +.LASF1656: + .string "GPIO_ISTAT_ISTAT5 BIT(5)" +.LASF1868: + .string "GPIO_TIMER3_REMAP ((uint32_t)0x00001000U)" +.LASF67: + .string "__GXX_ABI_VERSION 1014" +.LASF1491: + .string "FMC_CTL REG32((FMC) + 0x10U)" +.LASF1446: + .string "EXTI_SWIEV_SWIEV0 BIT(0)" +.LASF683: + .string "ADC_INT_FLAG_EOIC ADC_STAT_EOIC" +.LASF1018: + .string "TMDATA0_DB2(regval) (BITS(16,23) & ((uint32_t)(regval) << 16))" +.LASF360: + .string "__SSP_FORTIFY_LEVEL 0" +.LASF2448: + .string "SPI1 SPI_BASE" +.LASF2412: + .string "RTC_DIVH REG32(RTC + 0x10U)" +.LASF3095: + .string "_SIZE_T_ " +.LASF2355: + .string "RCU_PREDV0_DIV16 CFG1_PREDV0(15)" +.LASF658: + .string "ADC_INSERTED_CHANNEL_2 ((uint8_t)0x02U)" +.LASF2552: + .string "I2S_MODE_MASTERRX I2SCTL_I2SOPMOD(3)" +.LASF2810: + .string "TIMER_DMACFG_DMATC_13TRANSFER DMACFG_DMATC(12)" +.LASF288: + .string "__GCC_ATOMIC_CHAR_LOCK_FREE 1" +.LASF115: + .string "__INT_LEAST64_WIDTH__ 64" +.LASF1203: + .string "DAC_LFSR_BITS5_0 DAC_WAVE_BIT_WIDTH_6" +.LASF2356: + .string "CFG1_PREDV1(regval) (BITS(4,7) & ((uint32_t)(regval) << 4))" +.LASF2369: + .string "RCU_PREDV1_DIV13 CFG1_PREDV1(12)" +.LASF782: + .string "CAN_CTL(canx) REG32((canx) + 0x00U)" +.LASF280: + .string "__FLT64X_HAS_QUIET_NAN__ 1" +.LASF568: + .string "ADC_CTL0_RWDEN BIT(23)" +.LASF1644: + .string "GPIO_CTL1_CTL12 BITS(18, 19)" +.LASF2684: + .string "TIMER_CHCTL0_CH1MS BITS(8,9)" +.LASF2829: + .string "TIMER_PSC_RELOAD_NOW TIMER_SWEVG_UPG" +.LASF2872: + .string "TIMER_OC_MODE_TIMING ((uint16_t)0x0000U)" +.LASF1700: + .string "GPIO_BOP_CR1 BIT(17)" +.LASF58: + .string "__INT_FAST16_TYPE__ int" +.LASF889: + .string "CAN_CTL_SWRST BIT(15)" +.LASF698: + .string "ADC_OVERSAMPLING_SHIFT_6B OVSCR_OVSS(6)" +.LASF640: + .string "ADC_SAMPLETIME_7POINT5 SAMPTX_SPT(1)" +.LASF2238: + .string "APB2EN_REG_OFFSET 0x18U" +.LASF268: + .string "__FLT64X_MIN_EXP__ (-16381)" +.LASF1912: + .string "I2C_SADDR0_ADDRESS0 BIT(0)" +.LASF2516: + .string "SPI_NSS_HARD ((uint32_t)0x00000000U)" +.LASF1697: + .string "GPIO_BOP_BOP14 BIT(14)" +.LASF2210: + .string "RCU_BDCTL_LXTALSTB BIT(1)" +.LASF2311: + .string "RCU_PLL_MUL25 (PLLMF_4 | CFG0_PLLMF(8))" +.LASF821: + .string "CAN_F6DATA0(canx) REG32((canx) + 0x270U)" +.LASF543: + .string "ADC_RSQ2(adcx) REG32((adcx) + 0x34U)" +.LASF3107: + .string "__WCHAR_T__ " +.LASF336: + .string "IRC8M_VALUE ((uint32_t)8000000)" +.LASF1462: + .string "EXTI_SWIEV_SWIEV16 BIT(16)" +.LASF87: + .string "__SIZE_WIDTH__ 32" +.LASF1074: + .string "CAN_BT_BS2_2TQ ((uint8_t)0x01U)" +.LASF713: + .string "BKP_DATA1 REG16((BKP) + 0x08U)" +.LASF3092: + .string "_T_SIZE_ " +.LASF2526: + .string "SPI_PSC_8 CTL0_PSC(2)" +.LASF2876: + .string "TIMER_OC_MODE_LOW ((uint16_t)0x0040U)" +.LASF1599: + .string "GPIOA (GPIO_BASE + 0x00000000U)" +.LASF2265: + .string "RCU_AHB_CKSYS_DIV512 CFG0_AHBPSC(15)" +.LASF2165: + .string "RCU_APB1RST_I2C1RST BIT(22)" +.LASF472: + .string "SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)" +.LASF2743: + .string "TIMER_INT_CH2 TIMER_DMAINTEN_CH2IE" +.LASF1602: + .string "GPIOD (GPIO_BASE + 0x00000C00U)" +.LASF2939: + .string "USART1 USART_BASE" +.LASF1664: + .string "GPIO_ISTAT_ISTAT13 BIT(13)" +.LASF2550: + .string "I2S_MODE_SLAVERX I2SCTL_I2SOPMOD(1)" +.LASF441: + .string "INT_LEAST16_MIN (-__INT_LEAST16_MAX__ - 1)" +.LASF1854: + .string "GPIO_PIN_ALL BITS(0, 15)" +.LASF1211: + .string "DAC_ALIGN_12B_R DATA_ALIGN(0)" +.LASF537: + .string "ADC_IOFF2(adcx) REG32((adcx) + 0x1CU)" +.LASF2653: + .string "TIMER_DMAINTEN_CH0DEN BIT(9)" +.LASF52: + .string "__INT_LEAST64_TYPE__ long long int" +.LASF712: + .string "BKP_DATA0 REG16((BKP) + 0x04U)" +.LASF1826: + .string "GPIO_PIN_SOURCE_4 ((uint8_t)0x04U)" +.LASF191: + .string "__FLT16_MANT_DIG__ 11" +.LASF1089: + .string "CAN_RFIF_RFL_MASK ((uint32_t)0x00000003U)" +.LASF2130: + .string "RCU_INT_PLL1STBIE BIT(13)" +.LASF1382: + .string "EXTI_INTEN_INTEN12 BIT(12)" +.LASF2385: + .string "RCU_PLL2_MUL8 CFG1_PLL2MF(6)" +.LASF1529: + .string "FMC_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF2663: + .string "TIMER_INTF_CH3IF BIT(4)" +.LASF1067: + .string "CAN_BT_BS1_11TQ ((uint8_t)0x0AU)" +.LASF769: + .string "BKP_DATA0_9(number) REG16((BKP) + 0x04U + (number) * 0x04U)" +.LASF1205: + .string "DAC_LFSR_BITS7_0 DAC_WAVE_BIT_WIDTH_8" +.LASF3144: + .string "ECLICINTCTLBITS 4" +.LASF1396: + .string "EXTI_EVEN_EVEN7 BIT(7)" +.LASF1898: + .string "I2C_CTL0_SS BIT(7)" +.LASF631: + .string "ADC0_1_EXTTRIG_INSERTED_T0_CH3 CTL1_ETSIC(1)" +.LASF3087: + .string "__need_ptrdiff_t" +.LASF1658: + .string "GPIO_ISTAT_ISTAT7 BIT(7)" +.LASF2536: + .string "I2S_AUDIOSAMPLE_32K ((uint32_t)32000U)" +.LASF2916: + .string "SMCFG_SMC(regval) (BITS(0, 2) & ((uint32_t)(regval) << 0U))" +.LASF3169: + .string "__IRC8M (IRC8M_VALUE)" +.LASF240: + .string "__FLT128_MAX_EXP__ 16384" +.LASF1909: + .string "I2C_CTL1_BUFIE BIT(10)" +.LASF2481: + .string "SPI_STAT_RBNE BIT(0)" +.LASF1973: + .string "I2C_DMA_ON I2C_CTL1_DMAON" +.LASF1414: + .string "EXTI_RTEN_RTEN6 BIT(6)" +.LASF187: + .string "__LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L" +.LASF2802: + .string "TIMER_DMACFG_DMATC_5TRANSFER DMACFG_DMATC(4)" +.LASF1178: + .string "DAC_TRIGGER_T3_TRGO CTL_DTSEL(5)" +.LASF2500: + .string "SPI_I2SCTL_I2SEN BIT(10)" +.LASF1880: + .string "I2C0 I2C_BASE" +.LASF404: + .string "_SYS__STDINT_H " +.LASF1185: + .string "DWBW(regval) (BITS(8,11) & ((uint32_t)(regval) << 8))" +.LASF3186: + .string "long long int" +.LASF164: + .string "__DBL_MAX_EXP__ 1024" +.LASF2707: + .string "TIMER_CHCTL2_CH0EN BIT(0)" +.LASF91: + .string "__UINTMAX_C(c) c ## ULL" +.LASF2310: + .string "RCU_PLL_MUL24 (PLLMF_4 | CFG0_PLLMF(7))" +.LASF2601: + .string "TIMER_INTF(timerx) REG32((timerx) + 0x10U)" +.LASF2456: + .string "SPI_TCRC(spix) REG32((spix) + 0x18U)" +.LASF700: + .string "ADC_OVERSAMPLING_SHIFT_8B OVSCR_OVSS(8)" +.LASF2895: + .string "TIMER_IC_PSC_DIV2 ((uint16_t)0x0004U)" +.LASF297: + .string "__GCC_ATOMIC_POINTER_LOCK_FREE 2" +.LASF1379: + .string "EXTI_INTEN_INTEN9 BIT(9)" +.LASF1844: + .string "GPIO_PIN_6 BIT(6)" +.LASF3168: + .string "ECLIC_GROUP_LEVEL4_PRIO0 4" +.LASF1070: + .string "CAN_BT_BS1_14TQ ((uint8_t)0x0DU)" +.LASF2229: + .string "RCU_CFG1_PREDV0SEL BIT(16)" +.LASF333: + .string "HXTAL_VALUE ((uint32_t)8000000)" +.LASF1616: + .string "AFIO_EXTISS2 REG32(AFIO + 0x10U)" +.LASF515: + .string "DAC_BASE (APB1_BUS_BASE + 0x00007400U)" +.LASF2593: + .string "TIMER3 (TIMER_BASE + 0x00000800U)" +.LASF2392: + .string "RCU_PLL2_MUL15 CFG1_PLL2MF(13)" +.LASF2698: + .string "TIMER_CHCTL1_CH3MS BITS(8,9)" +.LASF872: + .string "CAN_TMP(canx,bank) REG32((canx) + 0x184U + ((bank) * 0x10U))" +.LASF1791: + .string "GPIO_MODE_AF_OD ((uint8_t)0x1CU)" +.LASF1389: + .string "EXTI_EVEN_EVEN0 BIT(0)" +.LASF877: + .string "CAN_RFIFOMI(canx,bank) REG32((canx) + 0x1B0U + ((bank) * 0x10U))" +.LASF1222: + .string "DAC_TRIANGLE_AMPLITUDE_511 DAC_WAVE_BIT_WIDTH_9" +.LASF681: + .string "ADC_INT_FLAG_WDE ADC_STAT_WDE" +.LASF3045: + .string "USART_DENR_DISABLE CLT2_DENR(0)" +.LASF1742: + .string "GPIO_LOCK_LK11 BIT(11)" +.LASF137: + .string "__INTPTR_WIDTH__ 32" +.LASF2503: + .string "SPI_I2SPSC_OF BIT(8)" +.LASF12: + .string "__ATOMIC_RELEASE 3" +.LASF1137: + .string "DACC_R12DH REG32(DAC + 0x20U)" +.LASF1628: + .string "GPIO_CTL0_CTL4 BITS(18, 19)" +.LASF457: + .string "INT_FAST8_MAX (__INT_FAST8_MAX__)" +.LASF3192: + .string "timeout" +.LASF2692: + .string "TIMER_CHCTL0_CH1CAPFLT BITS(12,15)" +.LASF588: + .string "ADC_ISQ_ISQN BITS(0,4)" +.LASF1288: + .string "DMA_CHCNT_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF2431: + .string "RTC_CNTH_CNT BITS(0,15)" +.LASF2333: + .string "RCU_CKOUT0SRC_CKPLL2 CFG0_CKOUT0SEL(11)" +.LASF3153: + .string "ECLIC_INT_ATTR_TRIG_EDGE 0x02" +.LASF1555: + .string "OB_SPC_SPC_N ((uint32_t)0x0000FF00U)" +.LASF1623: + .string "GPIO_CTL0_MD2 BITS(8, 9)" +.LASF960: + .string "CAN_TMI_SFID BITS(21,31)" +.LASF1291: + .string "DMA_CHINTF_RESET_VALUE (DMA_INTF_GIF | DMA_INTF_FTFIF | DMA_INTF_HTFIF | DMA_INTF_ERRIF)" +.LASF1387: + .string "EXTI_INTEN_INTEN17 BIT(17)" +.LASF2566: + .string "SPI_I2S_INT_RBNE ((uint8_t)0x01U)" +.LASF1217: + .string "DAC_TRIANGLE_AMPLITUDE_15 DAC_WAVE_BIT_WIDTH_4" +.LASF2191: + .string "RCU_APB1EN_TIMER3EN BIT(2)" +.LASF3065: + .string "WWDGT_CFG_WIN BITS(0,6)" +.LASF2309: + .string "RCU_PLL_MUL23 (PLLMF_4 | CFG0_PLLMF(6))" +.LASF143: + .string "__DEC_EVAL_METHOD__ 2" +.LASF2848: + .string "TIMER_OUTAUTO_DISABLE ((uint16_t)0x0000U)" +.LASF1728: + .string "GPIO_BC_CR13 BIT(13)" +.LASF225: + .string "__FLT64_MAX_EXP__ 1024" +.LASF2176: + .string "RCU_AHBEN_EXMCEN BIT(8)" +.LASF1212: + .string "DAC_ALIGN_12B_L DATA_ALIGN(1)" +.LASF1651: + .string "GPIO_ISTAT_ISTAT0 BIT(0)" +.LASF3027: + .string "USART_STB_1BIT CTL1_STB(0)" +.LASF2170: + .string "RCU_APB1RST_DACRST BIT(29)" +.LASF3166: + .string "ECLIC_GROUP_LEVEL2_PRIO2 2" +.LASF1943: + .string "I2C_CKCFG_FAST BIT(15)" +.LASF3066: + .string "WWDGT_CFG_PSC BITS(7,8)" +.LASF892: + .string "CAN_STAT_SLPWS BIT(1)" +.LASF3038: + .string "USART_CPH_1CK CTL1_CPH(0)" +.LASF1242: + .string "DMA_CH2MADDR(dmax) REG32((dmax) + 0x3CU)" +.LASF1035: + .string "GET_RFIFOMDATA1_DB7(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF2460: + .string "SPI_CTL0_CKPL BIT(1)" +.LASF2870: + .string "TIMER_OCN_IDLE_STATE_HIGH ((uint16_t)0x0200U)" +.LASF1861: + .string "GPIO_TIMER0_PARTIAL_REMAP ((uint32_t)0x00160040U)" +.LASF1006: + .string "BT_BAUDPSC(regval) (BITS(0,9) & ((uint32_t)(regval) << 0))" +.LASF1500: + .string "OB_WP2 REG16((OB) + 0x0CU)" +.LASF1577: + .string "OB_WP_15 ((uint32_t)0x00008000U)" +.LASF2505: + .string "SPI_MASTER (SPI_CTL0_MSTMOD | SPI_CTL0_SWNSS)" +.LASF1031: + .string "GET_RFIFOMDATA0_DB3(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF587: + .string "ADC_RSQ0_RL BITS(20,23)" +.LASF5: + .string "__GNUC__ 10" +.LASF2687: + .string "TIMER_CHCTL0_CH1COMCTL BITS(12,14)" +.LASF2776: + .string "TIMER_DMAREQUEST_CHANNELEVENT ((uint32_t)0x00000000U)" +.LASF2581: + .string "SPI_FLAG_FERR SPI_STAT_FERR" +.LASF3060: + .string "WWDGT_CTL REG32((WWDGT) + 0x00000000U)" +.LASF2097: + .string "RCU_CTL_CKMEN BIT(19)" +.LASF2274: + .string "RCU_APB2_CKAHB_DIV2 CFG0_APB2PSC(4)" +.LASF678: + .string "ADC_INT_WDE ADC_STAT_WDE" +.LASF1834: + .string "GPIO_PIN_SOURCE_12 ((uint8_t)0x0CU)" +.LASF1027: + .string "GET_RFIFOMP_FI(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF2678: + .string "TIMER_SWEVG_BRKG BIT(7)" +.LASF1300: + .string "DMA_INT_FTF DMA_CHXCTL_FTFIE" +.LASF2553: + .string "I2SCTL_I2SSTD(regval) (BITS(4,5) & ((uint32_t)(regval) << 4))" +.LASF1372: + .string "EXTI_INTEN_INTEN2 BIT(2)" +.LASF181: + .string "__DECIMAL_DIG__ 36" +.LASF97: + .string "__INT16_MAX__ 0x7fff" +.LASF1648: + .string "GPIO_CTL1_CTL14 BITS(26, 27)" +.LASF3109: + .string "_T_WCHAR_ " +.LASF2040: + .string "DBG_LOW_POWER_DEEPSLEEP DBG_CTL_DSLP_HOLD" +.LASF2308: + .string "RCU_PLL_MUL22 (PLLMF_4 | CFG0_PLLMF(5))" +.LASF984: + .string "CAN_RFIFOMDATA1_DB5 BITS(8,15)" +.LASF2213: + .string "RCU_BDCTL_RTCEN BIT(15)" +.LASF2826: + .string "TIMER_COUNTER_CENTER_DOWN CTL0_CAM(1)" +.LASF1325: + .string "GD32VF103_ECLIC_H " +.LASF1984: + .string "I2C_ARP_DISABLE ((uint32_t)0x00000000U)" +.LASF494: + .string "BITS(start,end) ((0xFFFFFFFFUL << (start)) & (0xFFFFFFFFUL >> (31U - (uint32_t)(end))))" +.LASF469: + .string "INTMAX_MIN (-INTMAX_MAX - 1)" +.LASF1480: + .string "EXTI_PD_PD15 BIT(15)" +.LASF2056: + .string "PMU_CS_WUPEN BIT(8)" +.LASF790: + .string "CAN_TMI0(canx) REG32((canx) + 0x180U)" +.LASF2102: + .string "RCU_CTL_PLL2EN BIT(28)" +.LASF2121: + .string "RCU_INT_PLLSTBIF BIT(4)" +.LASF2327: + .string "RCU_CKOUT0SRC_IRC8M CFG0_CKOUT0SEL(5)" +.LASF1160: + .string "DAC0_R8DH_DAC0_DH BITS(0,7)" +.LASF3104: + .string "__size_t " +.LASF2541: + .string "I2SCTL_DTLEN(regval) (BITS(1,2) & ((uint32_t)(regval) << 1))" +.LASF357: + .string "__POSIX_VISIBLE 199009" +.LASF2129: + .string "RCU_INT_PLLSTBIE BIT(12)" +.LASF2231: + .string "RCU_CFG1_I2S2SEL BIT(18)" +.LASF119: + .string "__UINT16_C(c) c" +.LASF1864: + .string "GPIO_TIMER1_PARTIAL_REMAP1 ((uint32_t)0x00180200U)" +.LASF1423: + .string "EXTI_RTEN_RTEN15 BIT(15)" +.LASF3149: + .string "ECLIC_INT_IE_OFFSET _AC(0x1001,UL)" +.LASF2725: + .string "TIMER_CH0CV_CH0VAL BITS(0,15)" +.LASF1625: + .string "GPIO_CTL0_MD3 BITS(12, 13)" +.LASF2981: + .string "USART_CTL1_CLEN BIT(8)" +.LASF835: + .string "CAN_F20DATA0(canx) REG32((canx) + 0x2E0U)" +.LASF1692: + .string "GPIO_BOP_BOP9 BIT(9)" +.LASF2594: + .string "TIMER4 (TIMER_BASE + 0x00000C00U)" +.LASF372: + .string "__EXP" +.LASF290: + .string "__GCC_ATOMIC_CHAR32_T_LOCK_FREE 2" +.LASF1881: + .string "I2C1 (I2C_BASE + 0x00000400U)" +.LASF795: + .string "CAN_TMP1(canx) REG32((canx) + 0x194U)" +.LASF546: + .string "ADC_IDATA1(adcx) REG32((adcx) + 0x40U)" +.LASF2157: + .string "RCU_APB1RST_WWDGTRST BIT(11)" +.LASF263: + .string "__FLT32X_HAS_DENORM__ 1" +.LASF1600: + .string "GPIOB (GPIO_BASE + 0x00000400U)" +.LASF2917: + .string "TIMER_SLAVE_MODE_DISABLE SMCFG_SMC(0)" +.LASF2255: + .string "RCU_SCSS_PLL CFG0_SCSS(2)" +.LASF919: + .string "CAN_TSTAT_TMLS0 BIT(29)" +.LASF1837: + .string "GPIO_PIN_SOURCE_15 ((uint8_t)0x0FU)" +.LASF3002: + .string "USART_BIT_POS(val) ((uint32_t)(val) & (0x0000001FU))" +.LASF1275: + .string "DMA_CHXCTL_PWIDTH BITS(8,9)" +.LASF2782: + .string "TIMER_DMACFG_DMATA_INTF DMACFG_DMATA(4)" +.LASF768: + .string "BKP_TPCS_TIF BIT(9)" +.LASF526: + .string "GD32VF103_LIBOPT_H " +.LASF2638: + .string "TIMER_SMCFG_TRGS BITS(4,6)" +.LASF1724: + .string "GPIO_BC_CR9 BIT(9)" +.LASF2726: + .string "TIMER_CH1CV_CH1VAL BITS(0,15)" +.LASF371: + .string "___int_least64_t_defined 1" +.LASF2946: + .string "USART_BAUD(usartx) REG32((usartx) + (0x00000008U))" +.LASF210: + .string "__FLT32_MAX_EXP__ 128" +.LASF860: + .string "CAN_F17DATA1(canx) REG32((canx) + 0x24CU)" +.LASF3173: + .string "SEL_IRC8M 0x00U" +.LASF1347: + .string "EXMC_SNTCFG_AHLD BITS(4,7)" +.LASF1790: + .string "GPIO_MODE_OUT_PP ((uint8_t)0x10U)" +.LASF3072: + .string "WWDGT_CFG_PSC_DIV4 CFG_PSC(2)" +.LASF1603: + .string "GPIOE (GPIO_BASE + 0x00001000U)" +.LASF125: + .string "__INT_FAST8_WIDTH__ 32" +.LASF3145: + .string "ECLIC_CFG_OFFSET 0x0" +.LASF2728: + .string "TIMER_CH3CV_CH3VAL BITS(0,15)" +.LASF2819: + .string "TIMER_EVENT_SRC_CH2G ((uint16_t)0x0008U)" +.LASF1091: + .string "CAN_EFID_MASK ((uint32_t)0x1FFFFFFFU)" +.LASF1116: + .string "CAN_INT_SLPW CAN_INTEN_SLPWIE" +.LASF2727: + .string "TIMER_CH2CV_CH2VAL BITS(0,15)" +.LASF304: + .string "__riscv_compressed 1" +.LASF266: + .string "__FLT64X_MANT_DIG__ 113" +.LASF1153: + .string "DAC_CTL_DWM1 BITS(22,23)" +.LASF2015: + .string "FWDGT_RLD_TIMEOUT ((uint32_t)0x000FFFFFU)" +.LASF1815: + .string "GPIO_EVENT_PIN_9 ((uint8_t)0x09U)" +.LASF1566: + .string "OB_WP_4 ((uint32_t)0x00000010U)" +.LASF470: + .string "UINTMAX_MAX (__UINTMAX_MAX__)" +.LASF916: + .string "CAN_TSTAT_TME0 BIT(26)" +.LASF661: + .string "ADC_CHANNEL_1 ((uint8_t)0x01U)" +.LASF579: + .string "ADC_CTL1_SWICST BIT(21)" +.LASF1267: + .string "DMA_CHXCTL_CHEN BIT(0)" +.LASF2093: + .string "RCU_CTL_IRC8MCALIB BITS(8,15)" +.LASF2366: + .string "RCU_PREDV1_DIV10 CFG1_PREDV1(9)" +.LASF192: + .string "__FLT16_DIG__ 3" +.LASF2818: + .string "TIMER_EVENT_SRC_CH1G ((uint16_t)0x0004U)" +.LASF1230: + .string "DMA_INTC(dmax) REG32((dmax) + 0x04U)" +.LASF3141: + .string "_AT(T,X) ((T)(X))" +.LASF3176: + .string "unsigned int" +.LASF3205: + .string "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\system_gd32vf103.c" +.LASF1942: + .string "I2C_CKCFG_DTCY BIT(14)" +.LASF2267: + .string "RCU_APB1_CKAHB_DIV1 CFG0_APB1PSC(0)" +.LASF424: + .string "__int_least64_t_defined 1" +.LASF1892: + .string "I2C_CTL0_I2CEN BIT(0)" +.LASF770: + .string "BKP_DATA10_41(number) REG16((BKP) + 0x40U + ((number)-10U) * 0x04U)" +.LASF2614: + .string "TIMER_CCHP(timerx) REG32((timerx) + 0x44U)" +.LASF414: + .string "_INT64_T_DECLARED " +.LASF2756: + .string "TIMER_FLAG_UP TIMER_INTF_UPIF" +.LASF1685: + .string "GPIO_BOP_BOP2 BIT(2)" +.LASF2852: + .string "TIMER_CCHP_PROT_1 CCHP_PROT(2)" +.LASF2929: + .string "TIMER_EXT_TRI_PSC_DIV2 SMCFG_ETPSC(1)" +.LASF1159: + .string "DAC0_L12DH_DAC0_DH BITS(4,15)" +.LASF1632: + .string "GPIO_CTL0_CTL6 BITS(26, 27)" +.LASF1548: + .string "OB_STDBY_NRST ((uint8_t)0x04U)" +.LASF1299: + .string "DMA_FLAG_ERR DMA_INTF_ERRIF" + .ident "GCC: (xPack GNU RISC-V Embedded GCC x86_64) 10.2.0" diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/audio/Include/audio_core.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/audio/Include/audio_core.h new file mode 100644 index 0000000000..b3c20fa76c --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/audio/Include/audio_core.h @@ -0,0 +1,300 @@ +/*! + \file audio_core.h + \brief the header file of USB audio device class core functions + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __AUDIO_CORE_H +#define __AUDIO_CORE_H + +#include "usbd_enum.h" + +#define FORMAT_24BIT(x) (uint8_t)(x);(uint8_t)(x >> 8U);(uint8_t)(x >> 16U) + +/* number of sub-packets in the audio transfer buffer. you can modify this value but always make sure + that it is an even number and higher than 3 */ +#define OUT_PACKET_NUM 4U + +/* total size of the audio transfer buffer */ +#define OUT_BUF_MARGIN 4U +#define TOTAL_OUT_BUF_SIZE ((uint32_t)((SPEAKER_OUT_PACKET + OUT_BUF_MARGIN) * OUT_PACKET_NUM)) + +#define AUDIO_CONFIG_DESC_SET_LEN (sizeof(usb_desc_config_set)) +#define AUDIO_INTERFACE_DESC_SIZE 9U + +#define USB_AUDIO_DESC_SIZ 0x09U +#define AUDIO_STANDARD_EP_DESC_SIZE 0x09U +#define AUDIO_STREAMING_EP_DESC_SIZE 0x07U + +/* audio interface class code */ +#define USB_CLASS_AUDIO 0x01U + +/* audio interface subclass codes */ +#define AUDIO_SUBCLASS_CONTROL 0x01U +#define AUDIO_SUBCLASS_AUDIOSTREAMING 0x02U +#define AUDIO_SUBCLASS_MIDISTREAMING 0x03U + +/* audio interface protocol codes */ +#define AUDIO_PROTOCOL_UNDEFINED 0x00U +#define AUDIO_STREAMING_GENERAL 0x01U +#define AUDIO_STREAMING_FORMAT_TYPE 0x02U + +/* audio class-specific descriptor types */ +#define AUDIO_DESCTYPE_UNDEFINED 0x20U +#define AUDIO_DESCTYPE_DEVICE 0x21U +#define AUDIO_DESCTYPE_CONFIGURATION 0x22U +#define AUDIO_DESCTYPE_STRING 0x23U +#define AUDIO_DESCTYPE_INTERFACE 0x24U +#define AUDIO_DESCTYPE_ENDPOINT 0x25U + +/* audio control interface descriptor subtypes */ +#define AUDIO_CONTROL_HEADER 0x01U +#define AUDIO_CONTROL_INPUT_TERMINAL 0x02U +#define AUDIO_CONTROL_OUTPUT_TERMINAL 0x03U +#define AUDIO_CONTROL_MIXER_UNIT 0x04U +#define AUDIO_CONTROL_SELECTOR_UNIT 0x05U +#define AUDIO_CONTROL_FEATURE_UNIT 0x06U +#define AUDIO_CONTROL_PROCESSING_UNIT 0x07U +#define AUDIO_CONTROL_EXTENSION_UNIT 0x08U + +#define AUDIO_INPUT_TERMINAL_DESC_SIZE 0x0CU +#define AUDIO_OUTPUT_TERMINAL_DESC_SIZE 0x09U +#define AUDIO_STREAMING_INTERFACE_DESC_SIZE 0x07U + +#define AUDIO_CONTROL_MUTE 0x01U +#define AUDIO_CONTROL_VOLUME 0x02U + +#define AUDIO_FORMAT_TYPE_I 0x01U +#define AUDIO_FORMAT_TYPE_III 0x03U + +#define USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01U +#define AUDIO_ENDPOINT_GENERAL 0x01U + +#define AUDIO_REQ_UNDEFINED 0x00U +#define AUDIO_REQ_SET_CUR 0x01U +#define AUDIO_REQ_GET_CUR 0x81U +#define AUDIO_REQ_SET_MIN 0x02U +#define AUDIO_REQ_GET_MIN 0x82U +#define AUDIO_REQ_SET_MAX 0x03U +#define AUDIO_REQ_GET_MAX 0x83U +#define AUDIO_REQ_SET_RES 0x04U +#define AUDIO_REQ_GET_RES 0x84U +#define AUDIO_REQ_SET_MEM 0x05U +#define AUDIO_REQ_GET_MEM 0x85U +#define AUDIO_REQ_GET_STAT 0xFFU + +#define AUDIO_OUT_STREAMING_CTRL 0x05U +#define AUDIO_IN_STREAMING_CTRL 0x02U + +/* audio stream interface number */ +enum +{ +#ifdef USE_USB_AUDIO_MICPHONE + MIC_INTERFACE_COUNT, +#endif +#ifdef USE_USB_AUDIO_SPEAKER + SPEAK_INTERFACE_COUNT, +#endif + CONFIG_DESC_AS_ITF_COUNT, +}; + +#define AC_ITF_TOTAL_LEN (sizeof(usb_desc_AC_itf) + CONFIG_DESC_AS_ITF_COUNT*(sizeof(usb_desc_input_terminal) + \ + sizeof(usb_desc_mono_feature_unit) + sizeof(usb_desc_output_terminal))) + +#pragma pack(1) + +typedef struct +{ + usb_desc_header header; /*!< descriptor header, including type and size */ + uint8_t bDescriptorSubtype; /*!< header descriptor subtype */ + uint16_t bcdADC; /*!< audio device class specification release number in binary-coded decimal */ + uint16_t wTotalLength; /*!< total number of bytes */ + uint8_t bInCollection; /*!< the number of the streaming interfaces */ +#ifdef USE_USB_AUDIO_MICPHONE + uint8_t baInterfaceNr0; /*!< interface number of the streaming interfaces */ +#endif + +#ifdef USE_USB_AUDIO_SPEAKER + uint8_t baInterfaceNr1; /*!< interface number of the streaming interfaces */ +#endif +} usb_desc_AC_itf; + +typedef struct +{ + usb_desc_header header; /*!< descriptor header, including type and size */ + uint8_t bDescriptorSubtype; /*!< AS_GENERAL descriptor subtype */ + uint8_t bTerminalLink; /*!< the terminal ID */ + uint8_t bDelay; /*!< delay introduced by the data path */ + uint16_t wFormatTag; /*!< the audio data format */ +} usb_desc_AS_itf; + +typedef struct +{ + usb_desc_header header; /*!< descriptor header, including type and size */ + uint8_t bDescriptorSubtype; /*!< INPUT_TERMINAL descriptor subtype. */ + uint8_t bTerminalID; /*!< constant uniquely identifying the terminal within the audio function */ + uint16_t wTerminalType; /*!< constant characterizing the type of terminal */ + uint8_t bAssocTerminal; /*!< ID of the output terminal */ + uint8_t bNrChannels; /*!< number of logical output channels */ + uint16_t wChannelConfig; /*!< describes the spatial location of the logical channels */ + uint8_t iChannelNames; /*!< index of a string descriptor */ + uint8_t iTerminal; /*!< index of a string descriptor */ +} usb_desc_input_terminal; + +typedef struct +{ + usb_desc_header header; /*!< descriptor header, including type and size */ + uint8_t bDescriptorSubtype; /*!< OUTPUT_TERMINAL descriptor subtype */ + uint8_t bTerminalID; /*!< constant uniquely identifying the terminal within the audio function */ + uint16_t wTerminalType; /*!< constant characterizing the type of terminal */ + uint8_t bAssocTerminal; /*!< constant, identifying the input terminal to which this output terminal is associated */ + uint8_t bSourceID; /*!< ID of the unit or terminal */ + uint8_t iTerminal; /*!< index of a string descriptor */ +} usb_desc_output_terminal; + +typedef struct +{ + usb_desc_header header; /*!< descriptor header, including type and size */ + uint8_t bDescriptorSubtype; /*!< FEATURE_UNIT descriptor subtype */ + uint8_t bUnitID; /*!< constant uniquely identifying the unit within the audio function */ + uint8_t bSourceID; /*!< ID of the unit or terminal */ + uint8_t bControlSize; /*!< size in bytes of an element of the bmaControls() array */ + uint8_t bmaControls0; /*!< a bit set to 1 indicates that the mentioned control is supported for master channel 0 */ + uint8_t bmaControls1; /*!< a bit set to 1 indicates that the mentioned control is supported for logical channel 1 */ + uint8_t iFeature; /*!< index of a string descriptor */ +} usb_desc_mono_feature_unit; + +typedef struct +{ + usb_desc_header header; /*!< descriptor header, including type and size */ + uint8_t bDescriptorSubtype; /*!< FEATURE_UNIT descriptor subtype */ + uint8_t bUnitID; /*!< constant uniquely identifying the unit within the audio function */ + uint8_t bSourceID; /*!< ID of the unit or terminal */ + uint8_t bControlSize; /*!< size in bytes of an element of the bmaControls() array */ + uint16_t bmaControls0; /*!< a bit set to 1 indicates that the mentioned control is supported for master channel 0 */ + uint16_t bmaControls1; /*!< a bit set to 1 indicates that the mentioned control is supported for logical channel 1 */ + uint16_t bmaControls2; /*!< a bit set to 1 indicates that the mentioned control is supported for logical channel 2 */ + uint8_t iFeature; /*!< index of a string descriptor */ +} usb_desc_stereo_feature_unit; + +typedef struct +{ + usb_desc_header header; /*!< descriptor header, including type and size */ + uint8_t bDescriptorSubtype; /*!< FORMAT_TYPE descriptor subtype */ + uint8_t bFormatType; /*!< constant identifying the format type */ + uint8_t bNrChannels; /*!< indicates the number of physical channels in the audio data stream */ + uint8_t bSubFrameSize; /*!< the number of bytes occupied by one audio subframe */ + uint8_t bBitResolution; /*!< the number of effectively used bits from the available bits in an audio subframe */ + uint8_t bSamFreqType; /*!< indicates how the sampling frequency can be programmed */ + uint8_t bSamFreq[3]; /*!< sampling frequency ns in Hz for this isochronous data endpoint */ +} usb_desc_format_type; + +typedef struct +{ + usb_desc_header header; /*!< descriptor header, including type and size */ + uint8_t bEndpointAddress; /*!< the address of the endpoint */ + uint8_t bmAttributes; /*!< transfer type and synchronization type */ + uint16_t wMaxPacketSize; /*!< maximum packet size this endpoint is capable of sending or receiving */ + uint8_t bInterval; /*!< left to the designer's discretion */ + uint8_t bRefresh; /*!< reset to 0 */ + uint8_t bSynchAddress; /*!< reset to 0 */ +} usb_desc_std_ep; + +typedef struct +{ + usb_desc_header header; /*!< descriptor header, including type and size */ + uint8_t bDescriptorSubtype; /*!< EP_GENERAL descriptor subtype */ + uint8_t bmAttributes; /*!< transfer type and synchronization type */ + uint8_t bLockDelayUnits; /*!< indicates the units used for the wLockDelay field */ + uint16_t wLockDelay; /*!< indicates the time it takes this endpoint to reliably lock its internal clock recovery circuitry */ +} usb_desc_AS_ep; + +#pragma pack() + +/* USB configuration descriptor structure */ +typedef struct +{ + usb_desc_config config; + usb_desc_itf std_itf; + usb_desc_AC_itf ac_itf; + +#ifdef USE_USB_AUDIO_MICPHONE + usb_desc_input_terminal mic_in_terminal; + usb_desc_mono_feature_unit mic_feature_unit; + usb_desc_output_terminal mic_out_terminal; +#endif + +#ifdef USE_USB_AUDIO_SPEAKER + usb_desc_input_terminal speak_in_terminal; + usb_desc_mono_feature_unit speak_feature_unit; + usb_desc_output_terminal speak_out_terminal; +#endif + +#ifdef USE_USB_AUDIO_MICPHONE + usb_desc_itf mic_std_as_itf_zeroband; + usb_desc_itf mic_std_as_itf_opera; + usb_desc_AS_itf mic_as_itf; + usb_desc_format_type mic_format_typeI; + usb_desc_std_ep mic_std_endpoint; + usb_desc_AS_ep mic_as_endpoint; +#endif + +#ifdef USE_USB_AUDIO_SPEAKER + usb_desc_itf speak_std_as_itf_zeroband; + usb_desc_itf speak_std_as_itf_opera; + usb_desc_AS_itf speak_as_itf; + usb_desc_format_type speak_format_typeI; + usb_desc_std_ep speak_std_endpoint; + usb_desc_AS_ep speak_as_endpoint; +#endif +} usb_desc_config_set; + +typedef struct +{ + /* main buffer for audio data out transfers and its relative pointers */ + uint8_t isoc_out_buff[TOTAL_OUT_BUF_SIZE * 2U]; + uint8_t* isoc_out_wrptr; + uint8_t* isoc_out_rdptr; + + /* main buffer for audio control requests transfers and its relative variables */ + uint8_t audioctl[64]; + uint8_t audioctl_unit; + uint32_t audioctl_len; + +#ifdef USE_USB_AUDIO_SPEAKER + uint32_t play_flag; +#endif /* USE_USB_AUDIO_SPEAKER */ +} usbd_audio_handler; + +extern usb_desc audio_desc; +extern usb_class_core usbd_audio_cb; + +#endif /* __AUDIO_CORE_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/audio/Include/audio_out_itf.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/audio/Include/audio_out_itf.h new file mode 100644 index 0000000000..eb1bf18ad5 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/audio/Include/audio_out_itf.h @@ -0,0 +1,76 @@ +/*! + \file audio_out_itf.h + \brief audio OUT (playback) interface header file + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __AUDIO_OUT_ITF_H +#define __AUDIO_OUT_ITF_H + +#include "usbd_conf.h" + +/* audio commands enumeration */ +typedef enum +{ + AUDIO_CMD_PLAY = 1U, + AUDIO_CMD_PAUSE, + AUDIO_CMD_STOP, +}audio_cmd_enum; + +/* mute commands */ +#define AUDIO_MUTE 0x01U +#define AUDIO_UNMUTE 0x00U + +/* functions return value */ +#define AUDIO_OK 0x00U +#define AUDIO_FAIL 0xFFU + +/* audio machine states */ +#define AUDIO_STATE_INACTIVE 0x00U +#define AUDIO_STATE_ACTIVE 0x01U +#define AUDIO_STATE_PLAYING 0x02U +#define AUDIO_STATE_PAUSED 0x03U +#define AUDIO_STATE_STOPPED 0x04U +#define AUDIO_STATE_ERROR 0x05U + +typedef struct { + uint8_t (*audio_init) (uint32_t audio_freq, uint32_t volume, uint32_t options); + uint8_t (*audio_deinit) (uint32_t options); + uint8_t (*audio_cmd) (uint8_t* pbuf, uint32_t size, uint8_t cmd); + uint8_t (*audio_volume_ctl) (uint8_t vol); + uint8_t (*audio_mute_ctl) (uint8_t cmd); + uint8_t (*audio_periodic_tc) (uint8_t cmd); + uint8_t (*audio_state_get) (void); +} audio_fops_struct; + +extern audio_fops_struct audio_out_fops; + +#endif /* __AUDIO_OUT_ITF_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/audio/Source/audio_core.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/audio/Source/audio_core.c new file mode 100644 index 0000000000..9ad5a08168 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/audio/Source/audio_core.c @@ -0,0 +1,809 @@ +/*! + \file audio_core.c + \brief USB audio device class core functions + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 + \version 2020-12-11, V1.1.1, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "audio_out_itf.h" +#include "audio_core.h" +#include + +#define USBD_VID 0x28E9U +#define USBD_PID 0x9574U + +#ifdef USE_USB_AUDIO_MICPHONE +extern volatile uint32_t count_data; +extern const char wavetestdata[]; +#define LENGTH_DATA (1747 * 32) +#endif + +/* local function prototypes ('static') */ +static uint8_t audio_init (usb_dev *udev, uint8_t config_index); +static uint8_t audio_deinit (usb_dev *udev, uint8_t config_index); +static uint8_t audio_req_handler (usb_dev *udev, usb_req *req); +static uint8_t audio_set_intf (usb_dev *udev, usb_req *req); +static uint8_t audio_ctlx_out (usb_dev *udev); +static uint8_t audio_data_in (usb_dev *udev, uint8_t ep_num); +static uint8_t audio_data_out (usb_dev *udev, uint8_t ep_num); +static uint8_t usbd_audio_sof (usb_dev *udev); + +usb_class_core usbd_audio_cb = { + .init = audio_init, + .deinit = audio_deinit, + .req_proc = audio_req_handler, + .set_intf = audio_set_intf, + .ctlx_out = audio_ctlx_out, + .data_in = audio_data_in, + .data_out = audio_data_out, + .SOF = usbd_audio_sof +}; + +#define VOL_MIN 0U /* Volume Minimum Value */ +#define VOL_MAX 100U /* Volume Maximum Value */ +#define VOL_RES 1U /* Volume Resolution */ +#define VOL_0dB 70U /* 0dB is in the middle of VOL_MIN and VOL_MAX */ + +/* note:it should use the c99 standard when compiling the below codes */ +/* USB standard device descriptor */ +const usb_desc_dev audio_dev_desc = +{ + .header = + { + .bLength = USB_DEV_DESC_LEN, + .bDescriptorType = USB_DESCTYPE_DEV + }, + .bcdUSB = 0x0200U, + .bDeviceClass = 0x00U, + .bDeviceSubClass = 0x00U, + .bDeviceProtocol = 0x00U, + .bMaxPacketSize0 = USB_FS_EP0_MAX_LEN, + .idVendor = USBD_VID, + .idProduct = USBD_PID, + .bcdDevice = 0x0100U, + .iManufacturer = STR_IDX_MFC, + .iProduct = STR_IDX_PRODUCT, + .iSerialNumber = STR_IDX_SERIAL, + .bNumberConfigurations = USBD_CFG_MAX_NUM +}; + +/* USB device configuration descriptor */ +const usb_desc_config_set audio_config_set = +{ + .config = + { + .header = + { + .bLength = sizeof(usb_desc_config), + .bDescriptorType = USB_DESCTYPE_CONFIG + }, + .wTotalLength = AUDIO_CONFIG_DESC_SET_LEN, + .bNumInterfaces = 0x01U + CONFIG_DESC_AS_ITF_COUNT, + .bConfigurationValue = 0x01U, + .iConfiguration = 0x00U, + .bmAttributes = 0xC0U, + .bMaxPower = 0x32U + }, + + .std_itf = + { + .header = + { + .bLength = sizeof(usb_desc_itf), + .bDescriptorType = USB_DESCTYPE_ITF + }, + .bInterfaceNumber = 0x00U, + .bAlternateSetting = 0x00U, + .bNumEndpoints = 0x00U, + .bInterfaceClass = USB_CLASS_AUDIO, + .bInterfaceSubClass = AUDIO_SUBCLASS_CONTROL, + .bInterfaceProtocol = AUDIO_PROTOCOL_UNDEFINED, + .iInterface = 0x00U + }, + + .ac_itf = + { + .header = + { + .bLength = sizeof(usb_desc_AC_itf), + .bDescriptorType = AUDIO_DESCTYPE_INTERFACE + }, + .bDescriptorSubtype = 0x01U, + .bcdADC = 0x0100U, + .wTotalLength = AC_ITF_TOTAL_LEN, + .bInCollection = CONFIG_DESC_AS_ITF_COUNT, +#ifdef USE_USB_AUDIO_MICPHONE + .baInterfaceNr0 = 0x01U, +#endif +#ifdef USE_USB_AUDIO_SPEAKER + .baInterfaceNr1 = 0x02U +#endif + }, + +#ifdef USE_USB_AUDIO_MICPHONE + .mic_in_terminal = + { + .header = + { + .bLength = sizeof(usb_desc_input_terminal), + .bDescriptorType = AUDIO_DESCTYPE_INTERFACE + }, + .bDescriptorSubtype = 0x02U, + .bTerminalID = 0x01U, + .wTerminalType = 0x0201U, + .bAssocTerminal = 0x00U, + .bNrChannels = 0x02U, + .wChannelConfig = 0x0003U, + .iChannelNames = 0x00U, + .iTerminal = 0x00U + }, + + .mic_feature_unit = + { + .header = + { + .bLength = sizeof(usb_desc_mono_feature_unit), + .bDescriptorType = AUDIO_DESCTYPE_INTERFACE + }, + .bDescriptorSubtype = AUDIO_CONTROL_FEATURE_UNIT, + .bUnitID = AUDIO_IN_STREAMING_CTRL, + .bSourceID = 0x01U, + .bControlSize = 0x01U, + .bmaControls0 = AUDIO_CONTROL_MUTE, + .bmaControls1 = AUDIO_CONTROL_VOLUME, + .iFeature = 0x00U + }, + + .mic_out_terminal = + { + .header = + { + .bLength = sizeof(usb_desc_output_terminal), + .bDescriptorType = AUDIO_DESCTYPE_INTERFACE + }, + .bDescriptorSubtype = AUDIO_CONTROL_OUTPUT_TERMINAL, + .bTerminalID = 0x03U, + .wTerminalType = 0x0101U, + .bAssocTerminal = 0x00U, + .bSourceID = 0x02U, + .iTerminal = 0x00U + }, +#endif + +#ifdef USE_USB_AUDIO_SPEAKER + .speak_in_terminal = + { + .header = + { + .bLength = sizeof(usb_desc_input_terminal), + .bDescriptorType = AUDIO_DESCTYPE_INTERFACE + }, + .bDescriptorSubtype = AUDIO_CONTROL_INPUT_TERMINAL, + .bTerminalID = 0x04U, + .wTerminalType = 0x0101U, + .bAssocTerminal = 0x00U, + .bNrChannels = 0x02U, + .wChannelConfig = 0x0003U, + .iChannelNames = 0x00U, + .iTerminal = 0x00U + }, + + .speak_feature_unit = + { + .header = + { + .bLength = sizeof(usb_desc_mono_feature_unit), + .bDescriptorType = AUDIO_DESCTYPE_INTERFACE + }, + .bDescriptorSubtype = AUDIO_CONTROL_FEATURE_UNIT, + .bUnitID = AUDIO_OUT_STREAMING_CTRL, + .bSourceID = 0x04U, + .bControlSize = 0x01U, + .bmaControls0 = AUDIO_CONTROL_MUTE, + .bmaControls1 = AUDIO_CONTROL_VOLUME, + .iFeature = 0x00U + }, + + .speak_out_terminal = + { + .header = + { + .bLength = sizeof(usb_desc_output_terminal), + .bDescriptorType = AUDIO_DESCTYPE_INTERFACE + }, + .bDescriptorSubtype = AUDIO_CONTROL_OUTPUT_TERMINAL, + .bTerminalID = 0x06U, + .wTerminalType = 0x0301U, + .bAssocTerminal = 0x00U, + .bSourceID = 0x05U, + .iTerminal = 0x00U + }, +#endif + +#ifdef USE_USB_AUDIO_MICPHONE + .mic_std_as_itf_zeroband = + { + .header = + { + .bLength = sizeof(usb_desc_itf), + .bDescriptorType = USB_DESCTYPE_ITF + }, + .bInterfaceNumber = 0x01U, + .bAlternateSetting = 0x00U, + .bNumEndpoints = 0x00U, + .bInterfaceClass = USB_CLASS_AUDIO, + .bInterfaceSubClass = AUDIO_SUBCLASS_AUDIOSTREAMING, + .bInterfaceProtocol = AUDIO_PROTOCOL_UNDEFINED, + .iInterface = 0x00U + }, + + .mic_std_as_itf_opera = + { + .header = + { + .bLength = sizeof(usb_desc_itf), + .bDescriptorType = USB_DESCTYPE_ITF + }, + .bInterfaceNumber = 0x01U, + .bAlternateSetting = 0x01U, + .bNumEndpoints = 0x01U, + .bInterfaceClass = USB_CLASS_AUDIO, + .bInterfaceSubClass = AUDIO_SUBCLASS_AUDIOSTREAMING, + .bInterfaceProtocol = AUDIO_PROTOCOL_UNDEFINED, + .iInterface = 0x00U + }, + + .mic_as_itf = + { + .header = + { + .bLength = sizeof(usb_desc_AS_itf), + .bDescriptorType = AUDIO_DESCTYPE_INTERFACE + }, + .bDescriptorSubtype = AUDIO_STREAMING_GENERAL, + .bTerminalLink = 0x03U, + .bDelay = 0x01U, + .wFormatTag = 0x0001U, + }, + + .mic_format_typeI = + { + .header = + { + .bLength = sizeof(usb_desc_format_type), + .bDescriptorType = AUDIO_DESCTYPE_INTERFACE + }, + .bDescriptorSubtype = AUDIO_STREAMING_FORMAT_TYPE, + .bFormatType = AUDIO_FORMAT_TYPE_I, + .bNrChannels = MIC_IN_CHANNEL_NBR, + .bSubFrameSize = 0x02U, + .bBitResolution = MIC_IN_BIT_RESOLUTION, + .bSamFreqType = 0x01U, + .bSamFreq[0] = (uint8_t)USBD_MIC_FREQ, + .bSamFreq[1] = USBD_MIC_FREQ >> 8U, + .bSamFreq[2] = USBD_MIC_FREQ >> 16U + }, + + .mic_std_endpoint = + { + .header = + { + .bLength = sizeof(usb_desc_std_ep), + .bDescriptorType = USB_DESCTYPE_EP + }, + .bEndpointAddress = AUDIO_IN_EP, + .bmAttributes = USB_ENDPOINT_TYPE_ISOCHRONOUS, + .wMaxPacketSize = MIC_IN_PACKET, + .bInterval = 0x01U, + .bRefresh = 0x00U, + .bSynchAddress = 0x00U + }, + + .mic_as_endpoint = + { + .header = + { + .bLength = sizeof(usb_desc_AS_ep), + .bDescriptorType = AUDIO_DESCTYPE_ENDPOINT + }, + .bDescriptorSubtype = AUDIO_ENDPOINT_GENERAL, + .bmAttributes = 0x00U, + .bLockDelayUnits = 0x00U, + .wLockDelay = 0x0000U, + }, +#endif + +#ifdef USE_USB_AUDIO_SPEAKER + .speak_std_as_itf_zeroband = + { + .header = + { + .bLength = sizeof(usb_desc_itf), + .bDescriptorType = USB_DESCTYPE_ITF + }, + .bInterfaceNumber = 0x02U, + .bAlternateSetting = 0x00U, + .bNumEndpoints = 0x00U, + .bInterfaceClass = USB_CLASS_AUDIO, + .bInterfaceSubClass = AUDIO_SUBCLASS_AUDIOSTREAMING, + .bInterfaceProtocol = AUDIO_PROTOCOL_UNDEFINED, + .iInterface = 0x00U + }, + + .speak_std_as_itf_opera = + { + .header = + { + .bLength = sizeof(usb_desc_itf), + .bDescriptorType = USB_DESCTYPE_ITF + }, + .bInterfaceNumber = 0x02U, + .bAlternateSetting = 0x01U, + .bNumEndpoints = 0x01U, + .bInterfaceClass = USB_CLASS_AUDIO, + .bInterfaceSubClass = AUDIO_SUBCLASS_AUDIOSTREAMING, + .bInterfaceProtocol = AUDIO_PROTOCOL_UNDEFINED, + .iInterface = 0x00U + }, + + .speak_as_itf = + { + .header = + { + .bLength = sizeof(usb_desc_AS_itf), + .bDescriptorType = AUDIO_DESCTYPE_INTERFACE + }, + .bDescriptorSubtype = AUDIO_STREAMING_GENERAL, + .bTerminalLink = 0x04U, + .bDelay = 0x01U, + .wFormatTag = 0x0001U, + }, + + .speak_format_typeI = + { + .header = + { + .bLength = sizeof(usb_desc_format_type), + .bDescriptorType = AUDIO_DESCTYPE_INTERFACE + }, + .bDescriptorSubtype = AUDIO_STREAMING_FORMAT_TYPE, + .bFormatType = AUDIO_FORMAT_TYPE_I, + .bNrChannels = SPEAKER_OUT_CHANNEL_NBR, + .bSubFrameSize = 0x02U, + .bBitResolution = SPEAKER_OUT_BIT_RESOLUTION, + .bSamFreqType = 0x01U, + .bSamFreq[0] = (uint8_t)USBD_SPEAKER_FREQ, + .bSamFreq[1] = USBD_SPEAKER_FREQ >> 8U, + .bSamFreq[2] = USBD_SPEAKER_FREQ >> 16U + }, + + .speak_std_endpoint = + { + .header = + { + .bLength = sizeof(usb_desc_std_ep), + .bDescriptorType = USB_DESCTYPE_EP + }, + .bEndpointAddress = AUDIO_OUT_EP, + .bmAttributes = USB_ENDPOINT_TYPE_ISOCHRONOUS, + .wMaxPacketSize = SPEAKER_OUT_PACKET, + .bInterval = 0x01U, + .bRefresh = 0x00U, + .bSynchAddress = 0x00U + }, + + .speak_as_endpoint = + { + .header = + { + .bLength = sizeof(usb_desc_AS_ep), + .bDescriptorType = AUDIO_DESCTYPE_ENDPOINT + }, + .bDescriptorSubtype = AUDIO_ENDPOINT_GENERAL, + .bmAttributes = 0x00U, + .bLockDelayUnits = 0x00U, + .wLockDelay = 0x0000U, + } +#endif +}; + +/* USB language ID descriptor */ +static const usb_desc_LANGID usbd_language_id_desc = +{ + .header = + { + .bLength = sizeof(usb_desc_LANGID), + .bDescriptorType = USB_DESCTYPE_STR + }, + + .wLANGID = ENG_LANGID +}; + +/* USB manufacture string */ +static const usb_desc_str manufacturer_string = +{ + .header = + { + .bLength = USB_STRING_LEN(10), + .bDescriptorType = USB_DESCTYPE_STR, + }, + .unicode_string = {'G', 'i', 'g', 'a', 'D', 'e', 'v', 'i', 'c', 'e'} +}; + +/* USB product string */ +static const usb_desc_str product_string = +{ + .header = + { + .bLength = USB_STRING_LEN(14), + .bDescriptorType = USB_DESCTYPE_STR, + }, + .unicode_string = {'G', 'D', '3', '2', '-', 'U', 'S', 'B', '_', 'A', 'u', 'd', 'i', 'o'} +}; + +/* USBD serial string */ +static usb_desc_str serial_string = +{ + .header = + { + .bLength = USB_STRING_LEN(12), + .bDescriptorType = USB_DESCTYPE_STR, + } +}; + +/* USB string descriptor */ +void *const usbd_audio_strings[] = +{ + [STR_IDX_LANGID] = (uint8_t *)&usbd_language_id_desc, + [STR_IDX_MFC] = (uint8_t *)&manufacturer_string, + [STR_IDX_PRODUCT] = (uint8_t *)&product_string, + [STR_IDX_SERIAL] = (uint8_t *)&serial_string +}; + +usb_desc audio_desc = { + .dev_desc = (uint8_t *)&audio_dev_desc, + .config_desc = (uint8_t *)&audio_config_set, + .strings = usbd_audio_strings +}; + +/*! + \brief initialize the AUDIO device + \param[in] udev: pointer to USB device instance + \param[in] config_index: configuration index + \param[out] none + \retval USB device operation status +*/ +static uint8_t audio_init (usb_dev *udev, uint8_t config_index) +{ + static usbd_audio_handler audio_handler; + + memset((void *)&audio_handler, 0, sizeof(usbd_audio_handler)); + +#ifdef USE_USB_AUDIO_MICPHONE +{ + usb_desc_std_ep std_ep = audio_config_set.mic_std_endpoint; + + usb_desc_ep ep = { + .header = std_ep.header, + .bEndpointAddress = std_ep.bEndpointAddress, + .bmAttributes = std_ep.bmAttributes, + .wMaxPacketSize = std_ep.wMaxPacketSize, + .bInterval = std_ep.bInterval + }; + + /* initialize Tx endpoint */ + usbd_ep_setup (udev, &ep); +} +#endif + +#ifdef USE_USB_AUDIO_SPEAKER +{ + audio_handler.isoc_out_rdptr = audio_handler.isoc_out_buff; + audio_handler.isoc_out_wrptr = audio_handler.isoc_out_buff; + + usb_desc_std_ep std_ep = audio_config_set.speak_std_endpoint; + + usb_desc_ep ep = { + .header = std_ep.header, + .bEndpointAddress = std_ep.bEndpointAddress, + .bmAttributes = std_ep.bmAttributes, + .wMaxPacketSize = std_ep.wMaxPacketSize, + .bInterval = std_ep.bInterval + }; + + /* initialize Rx endpoint */ + usbd_ep_setup (udev, &ep); + + /* initialize the audio output hardware layer */ + if (USBD_OK != audio_out_fops.audio_init(USBD_AUDIO_FREQ_16K, DEFAULT_VOLUME, 0U)) { + return USBD_FAIL; + } + + /* prepare OUT endpoint to receive audio data */ + usbd_ep_recev (udev, AUDIO_OUT_EP, (uint8_t*)audio_handler.isoc_out_buff, SPEAKER_OUT_PACKET); +} +#endif + + udev->dev.class_data[USBD_AUDIO_INTERFACE] = (void *)&audio_handler; + + return USBD_OK; +} + +/*! + \brief de-initialize the AUDIO device + \param[in] udev: pointer to USB device instance + \param[in] config_index: configuration index + \param[out] none + \retval USB device operation status +*/ +static uint8_t audio_deinit (usb_dev *udev, uint8_t config_index) +{ +#ifdef USE_USB_AUDIO_MICPHONE + /* deinitialize AUDIO endpoints */ + usbd_ep_clear(udev, AUDIO_IN_EP); +#endif + +#ifdef USE_USB_AUDIO_SPEAKER + /* deinitialize AUDIO endpoints */ + usbd_ep_clear(udev, AUDIO_OUT_EP); + + /* deinitialize the audio output hardware layer */ + if (USBD_OK != audio_out_fops.audio_deinit(0U)) { + return USBD_FAIL; + } +#endif + + return USBD_OK; +} + +/*! + \brief handle the AUDIO class-specific requests + \param[in] udev: pointer to USB device instance + \param[in] req: device class-specific request + \param[out] none + \retval USB device operation status +*/ +static uint8_t audio_req_handler (usb_dev *udev, usb_req *req) +{ + uint8_t status = REQ_NOTSUPP; + + usbd_audio_handler *audio = (usbd_audio_handler *)udev->dev.class_data[USBD_AUDIO_INTERFACE]; + + usb_transc *transc_in = &udev->dev.transc_in[0]; + usb_transc *transc_out = &udev->dev.transc_out[0]; + + switch (req->bRequest) { + case AUDIO_REQ_GET_CUR: + transc_in->xfer_buf = audio->audioctl; + transc_in->remain_len = req->wLength; + + status = REQ_SUPP; + break; + + case AUDIO_REQ_SET_CUR: + if (req->wLength) { + transc_out->xfer_buf = audio->audioctl; + transc_out->remain_len = req->wLength; + + udev->dev.class_core->command = AUDIO_REQ_SET_CUR; + + audio->audioctl_len = req->wLength; + audio->audioctl_unit = BYTE_HIGH(req->wIndex); + + status = REQ_SUPP; + } + break; + + case AUDIO_REQ_GET_MIN: + *((uint16_t *)audio->audioctl) = VOL_MIN; + transc_in->xfer_buf = audio->audioctl; + transc_in->remain_len = req->wLength; + status = REQ_SUPP; + break; + + case AUDIO_REQ_GET_MAX: + *((uint16_t *)audio->audioctl) = VOL_MAX; + transc_in->xfer_buf = audio->audioctl; + transc_in->remain_len = req->wLength; + status = REQ_SUPP; + break; + + case AUDIO_REQ_GET_RES: + *((uint16_t *)audio->audioctl) = VOL_RES; + transc_in->xfer_buf = audio->audioctl; + transc_in->remain_len = req->wLength; + status = REQ_SUPP; + break; + + default: + break; + } + + return status; +} + +/*! + \brief handle the AUDIO set interface requests + \param[in] udev: pointer to USB device instance + \param[in] req: device class-specific request + \param[out] none + \retval USB device operation status +*/ +static uint8_t audio_set_intf(usb_dev *udev, usb_req *req) +{ + udev->dev.class_core->alter_set = req->wValue; + + return USBD_OK; +} + +/*! + \brief handles the control transfer OUT callback + \param[in] udev: pointer to USB device instance + \param[out] none + \retval USB device operation status +*/ +static uint8_t audio_ctlx_out (usb_dev *udev) +{ +#ifdef USE_USB_AUDIO_SPEAKER + usbd_audio_handler *audio = (usbd_audio_handler *)udev->dev.class_data[USBD_AUDIO_INTERFACE]; + + /* handles audio control requests data */ + /* check if an audio_control request has been issued */ + if (AUDIO_REQ_SET_CUR == udev->dev.class_core->command) { + /* in this driver, to simplify code, only SET_CUR request is managed */ + + /* check for which addressed unit the audio_control request has been issued */ + if (AUDIO_OUT_STREAMING_CTRL == audio->audioctl_unit) { + /* in this driver, to simplify code, only one unit is manage */ + + /* call the audio interface mute function */ + audio_out_fops.audio_mute_ctl(audio->audioctl[0]); + + /* reset the audioctl_cmd variable to prevent re-entering this function */ + udev->dev.class_core->command = 0U; + + audio->audioctl_len = 0U; + } + } +#endif + + return USBD_OK; +} + +/*! + \brief handles the audio IN data stage + \param[in] udev: pointer to USB device instance + \param[in] ep_num: endpoint number + \param[out] none + \retval USB device operation status +*/ +static uint8_t audio_data_in (usb_dev *udev, uint8_t ep_num) +{ +#ifdef USE_USB_AUDIO_MICPHONE + if(count_data < LENGTH_DATA){ + /* Prepare next buffer to be sent: dummy data */ + usbd_ep_send(udev, AUDIO_IN_EP,(uint8_t*)&wavetestdata[count_data],MIC_IN_PACKET); + count_data += MIC_IN_PACKET; + } else { + usbd_ep_send(udev, AUDIO_IN_EP,(uint8_t*)wavetestdata,MIC_IN_PACKET); + count_data = MIC_IN_PACKET; + } +#endif + + return USBD_OK; +} + +/*! + \brief handles the audio OUT data stage + \param[in] udev: pointer to USB device instance + \param[in] ep_num: endpoint number + \param[out] none + \retval USB device operation status +*/ +static uint8_t audio_data_out (usb_dev *udev, uint8_t ep_num) +{ +#ifdef USE_USB_AUDIO_SPEAKER + usbd_audio_handler *audio = (usbd_audio_handler *)udev->dev.class_data[USBD_AUDIO_INTERFACE]; + + /* increment the Buffer pointer or roll it back when all buffers are full */ + if (audio->isoc_out_wrptr >= (audio->isoc_out_buff + (SPEAKER_OUT_PACKET * OUT_PACKET_NUM))) { + /* all buffers are full: roll back */ + audio->isoc_out_wrptr = audio->isoc_out_buff; + } else { + /* increment the buffer pointer */ + audio->isoc_out_wrptr += SPEAKER_OUT_PACKET; + } + + /* Toggle the frame index */ + udev->dev.transc_out[ep_num].frame_num = + (udev->dev.transc_out[ep_num].frame_num)? 0U:1U; + + /* prepare out endpoint to receive next audio packet */ + usbd_ep_recev (udev, AUDIO_OUT_EP, (uint8_t*)(audio->isoc_out_wrptr), SPEAKER_OUT_PACKET); + + /* trigger the start of streaming only when half buffer is full */ + if ((0U == audio->play_flag) && (audio->isoc_out_wrptr >= (audio->isoc_out_buff + ((SPEAKER_OUT_PACKET * OUT_PACKET_NUM) / 2U)))) { + /* enable start of streaming */ + audio->play_flag = 1U; + } +#endif + + return USBD_OK; +} + +/*! + \brief handles the SOF event (data buffer update and synchronization) + \param[in] udev: pointer to USB device instance + \param[out] none + \retval USB device operation status +*/ +static uint8_t usbd_audio_sof (usb_dev *udev) +{ +#ifdef USE_USB_AUDIO_SPEAKER + usbd_audio_handler *audio = (usbd_audio_handler *)udev->dev.class_data[USBD_AUDIO_INTERFACE]; + + /* check if there are available data in stream buffer. + in this function, a single variable (play_flag) is used to avoid software delays. + the play operation must be executed as soon as possible after the SOF detection. */ + if (audio->play_flag) { + /* start playing received packet */ + audio_out_fops.audio_cmd((uint8_t*)(audio->isoc_out_rdptr), /* samples buffer pointer */ + SPEAKER_OUT_PACKET, /* number of samples in Bytes */ + AUDIO_CMD_PLAY); /* command to be processed */ + + /* increment the Buffer pointer or roll it back when all buffers all full */ + if (audio->isoc_out_rdptr >= (audio->isoc_out_buff + (SPEAKER_OUT_PACKET * OUT_PACKET_NUM))) { + /* roll back to the start of buffer */ + audio->isoc_out_rdptr = audio->isoc_out_buff; + } else { + /* increment to the next sub-buffer */ + audio->isoc_out_rdptr += SPEAKER_OUT_PACKET; + } + + /* if all available buffers have been consumed, stop playing */ + if (audio->isoc_out_rdptr == audio->isoc_out_wrptr) { + /* Pause the audio stream */ + audio_out_fops.audio_cmd((uint8_t*)(audio->isoc_out_buff), /* samples buffer pointer */ + SPEAKER_OUT_PACKET, /* number of samples in Bytes */ + AUDIO_CMD_PAUSE); /* command to be processed */ + + /* stop entering play loop */ + audio->play_flag = 0U; + + /* reset buffer pointers */ + audio->isoc_out_rdptr = audio->isoc_out_buff; + audio->isoc_out_wrptr = audio->isoc_out_buff; + } + } +#endif + + return USBD_OK; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/audio/Source/audio_out_itf.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/audio/Source/audio_out_itf.c new file mode 100644 index 0000000000..3665521543 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/audio/Source/audio_out_itf.c @@ -0,0 +1,229 @@ +/*! + \file audio_out_itf.c + \brief audio OUT (playback) interface functions + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "audio_core.h" +#include "audio_out_itf.h" + +/* local function prototypes ('static') */ +static uint8_t init (uint32_t audiofreq, uint32_t volume, uint32_t options); +static uint8_t deinit (uint32_t options); +static uint8_t audio_cmd (uint8_t* pbuf, uint32_t size, uint8_t cmd); +static uint8_t volume_ctl (uint8_t vol); +static uint8_t mute_ctl (uint8_t cmd); +static uint8_t periodic_tc (uint8_t cmd); +static uint8_t get_state (void); + +audio_fops_struct audio_out_fops = +{ + init, + deinit, + audio_cmd, + volume_ctl, + mute_ctl, + periodic_tc, + get_state +}; + +static uint8_t audio_state = AUDIO_STATE_INACTIVE; + +/*! + \brief initialize and configures all required resources for audio play function + \param[in] audio_freq: statrt_up audio frequency + \param[in] volume: start_up volume to be set + \param[in] options: specific options passed to low layer function + \param[out] none + \retval AUDIO_OK if all operations succeed, AUDIO_FAIL else +*/ +static uint8_t init (uint32_t audio_freq, uint32_t volume, uint32_t options) +{ + static uint32_t initialized = 0U; + + /* check if the low layer has already been initialized */ + if (0U == initialized) { + /* call low layer function */ + if (0U != eval_audio_init(OUTPUT_DEVICE_AUTO, (uint8_t)volume, audio_freq)) { + audio_state = AUDIO_STATE_ERROR; + + return AUDIO_FAIL; + } + + /* set the initialization flag to prevent reinitializing the interface again */ + initialized = 1U; + } + + /* update the audio state machine */ + audio_state = AUDIO_STATE_ACTIVE; + + return AUDIO_OK; +} + +/*! + \brief free all resources used by low layer and stops audio-play function + \param[in] options: specific options passed to low layer function + \param[out] none + \retval AUDIO_OK if all operations succeed, AUDIO_FAIL else +*/ +static uint8_t deinit (uint32_t options) +{ + /* update the audio state machine */ + audio_state = AUDIO_STATE_INACTIVE; + + return AUDIO_OK; +} + +/*! + \brief play, stop, pause or resume current file + \param[in] pbuf: address from which file should be played + \param[in] size: size of the current buffer/file + \param[in] cmd: command to be executed, can be: + \arg AUDIO_CMD_PLAY + \arg AUDIO_CMD_PAUSE + \arg AUDIO_CMD_RESUME + \arg AUDIO_CMD_STOP + \param[out] none + \retval AUDIO_OK if all operations succeed, AUDIO_FAIL else +*/ +static uint8_t audio_cmd (uint8_t* pbuf, uint32_t size, uint8_t cmd) +{ + /* check the current state */ + if ((AUDIO_STATE_INACTIVE == audio_state) || (AUDIO_STATE_ERROR == audio_state)) { + audio_state = AUDIO_STATE_ERROR; + + return AUDIO_FAIL; + } + + switch (cmd) { + /* process the play command */ + case AUDIO_CMD_PLAY: + /* if current state is active or stopped */ + if ((AUDIO_STATE_ACTIVE == audio_state) || \ + (AUDIO_STATE_STOPPED == audio_state) || \ + (AUDIO_STATE_PLAYING == audio_state)) { + audio_mal_play((uint32_t)pbuf, size); + audio_state = AUDIO_STATE_PLAYING; + + return AUDIO_OK; + } else if (AUDIO_STATE_PAUSED == audio_state) { + if (eval_audio_pause_resume(AUDIO_RESUME, (uint32_t)pbuf, (size / 2U))) { + audio_state = AUDIO_STATE_ERROR; + + return AUDIO_FAIL; + } else { + audio_state = AUDIO_STATE_PLAYING; + + return AUDIO_OK; + } + } else { + return AUDIO_FAIL; + } + + /* process the stop command */ + case AUDIO_CMD_STOP: + if (AUDIO_STATE_PLAYING != audio_state) { + /* unsupported command */ + return AUDIO_FAIL; + } else if (eval_audio_stop(CODEC_PDWN_SW)) { + audio_state = AUDIO_STATE_ERROR; + + return AUDIO_FAIL; + } else { + audio_state = AUDIO_STATE_STOPPED; + + return AUDIO_OK; + } + + /* process the pause command */ + case AUDIO_CMD_PAUSE: + if (AUDIO_STATE_PLAYING != audio_state) { + /* unsupported command */ + return AUDIO_FAIL; + } else if (eval_audio_pause_resume(AUDIO_PAUSE, (uint32_t)pbuf, (size / 2U))) { + audio_state = AUDIO_STATE_ERROR; + + return AUDIO_FAIL; + } else { + audio_state = AUDIO_STATE_PAUSED; + + return AUDIO_OK; + } + + /* unsupported command */ + default: + return AUDIO_FAIL; + } +} + +/*! + \brief set the volume level + \param[in] vol: volume level to be set in % (from 0% to 100%) + \param[out] none + \retval AUDIO_OK if all operations succeed, AUDIO_FAIL else +*/ +static uint8_t volume_ctl (uint8_t vol) +{ + return AUDIO_OK; +} + +/*! + \brief mute or unmute the audio current output + \param[in] cmd: can be 0 to unmute, or 1 to mute + \param[out] none + \retval AUDIO_OK if all operations succeed, AUDIO_FAIL else +*/ +static uint8_t mute_ctl (uint8_t cmd) +{ + return AUDIO_OK; +} + +/*! + \brief periodic transfer control + \param[in] cmd: command + \param[out] none + \retval AUDIO_OK if all operations succeed, AUDIO_FAIL else +*/ +static uint8_t periodic_tc (uint8_t cmd) +{ + return AUDIO_OK; +} + +/*! + \brief return the current state of the audio machine + \param[in] none + \param[out] none + \retval AUDIO_OK if all operations succeed, AUDIO_FAIL else +*/ +static uint8_t get_state (void) +{ + return audio_state; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/cdc/Include/cdc_acm_core.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/cdc/Include/cdc_acm_core.h new file mode 100644 index 0000000000..a90db97770 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/cdc/Include/cdc_acm_core.h @@ -0,0 +1,66 @@ +/*! + \file cdc_acm_core.h + \brief the header file of cdc acm driver + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __CDC_ACM_CORE_H +#define __CDC_ACM_CORE_H + +#include "usbd_enum.h" +#include "usb_cdc.h" + +#define USB_CDC_RX_LEN 64 + +typedef struct { + uint8_t packet_sent; + uint8_t packet_receive; + + uint8_t data[USB_CDC_RX_LEN]; + uint8_t cmd[USB_CDC_CMD_PACKET_SIZE]; + + uint32_t receive_length; + + acm_line line_coding; +} usb_cdc_handler; + +extern usb_desc cdc_desc; +extern usb_class_core cdc_class; + +/* function declarations */ +/* check cdc acm is ready for data transfer */ +uint8_t cdc_acm_check_ready(usb_dev *udev); +/* send CDC ACM data */ +void cdc_acm_data_send(usb_dev *udev); +/* receive CDC ACM data */ +void cdc_acm_data_receive(usb_dev *udev); + +#endif /* __CDC_ACM_CORE_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/cdc/Source/cdc_acm_core.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/cdc/Source/cdc_acm_core.c new file mode 100644 index 0000000000..1ee14456d9 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/cdc/Source/cdc_acm_core.c @@ -0,0 +1,531 @@ +/*! + \file cdc_acm_core.c + \brief CDC ACM driver + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 + \version 2020-12-11, V1.1.1, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "cdc_acm_core.h" + +#define USBD_VID 0x28E9U +#define USBD_PID 0x018AU + +/* note:it should use the C99 standard when compiling the below codes */ +/* USB standard device descriptor */ +const usb_desc_dev cdc_dev_desc = +{ + .header = + { + .bLength = USB_DEV_DESC_LEN, + .bDescriptorType = USB_DESCTYPE_DEV, + }, + .bcdUSB = 0x0200U, + .bDeviceClass = USB_CLASS_CDC, + .bDeviceSubClass = 0x00U, + .bDeviceProtocol = 0x00U, + .bMaxPacketSize0 = USB_FS_EP0_MAX_LEN, + .idVendor = USBD_VID, + .idProduct = USBD_PID, + .bcdDevice = 0x0100U, + .iManufacturer = STR_IDX_MFC, + .iProduct = STR_IDX_PRODUCT, + .iSerialNumber = STR_IDX_SERIAL, + .bNumberConfigurations = USBD_CFG_MAX_NUM, +}; + +/* USB device configuration descriptor */ +const usb_cdc_desc_config_set cdc_config_desc = +{ + .config = + { + .header = + { + .bLength = sizeof(usb_desc_config), + .bDescriptorType = USB_DESCTYPE_CONFIG, + }, + .wTotalLength = USB_CDC_ACM_CONFIG_DESC_SIZE, + .bNumInterfaces = 0x02U, + .bConfigurationValue = 0x01U, + .iConfiguration = 0x00U, + .bmAttributes = 0x80U, + .bMaxPower = 0x32U + }, + + .cmd_itf = + { + .header = + { + .bLength = sizeof(usb_desc_itf), + .bDescriptorType = USB_DESCTYPE_ITF + }, + .bInterfaceNumber = 0x00U, + .bAlternateSetting = 0x00U, + .bNumEndpoints = 0x01U, + .bInterfaceClass = USB_CLASS_CDC, + .bInterfaceSubClass = USB_CDC_SUBCLASS_ACM, + .bInterfaceProtocol = USB_CDC_PROTOCOL_AT, + .iInterface = 0x00U + }, + + .cdc_header = + { + .header = + { + .bLength = sizeof(usb_desc_header_func), + .bDescriptorType = USB_DESCTYPE_CS_INTERFACE + }, + .bDescriptorSubtype = 0x00U, + .bcdCDC = 0x0110U + }, + + .cdc_call_managment = + { + .header = + { + .bLength = sizeof(usb_desc_call_managment_func), + .bDescriptorType = USB_DESCTYPE_CS_INTERFACE + }, + .bDescriptorSubtype = 0x01U, + .bmCapabilities = 0x00U, + .bDataInterface = 0x01U + }, + + .cdc_acm = + { + .header = + { + .bLength = sizeof(usb_desc_acm_func), + .bDescriptorType = USB_DESCTYPE_CS_INTERFACE + }, + .bDescriptorSubtype = 0x02U, + .bmCapabilities = 0x02U, + }, + + .cdc_union = + { + .header = + { + .bLength = sizeof(usb_desc_union_func), + .bDescriptorType = USB_DESCTYPE_CS_INTERFACE + }, + .bDescriptorSubtype = 0x06U, + .bMasterInterface = 0x00U, + .bSlaveInterface0 = 0x01U, + }, + + .cdc_cmd_endpoint = + { + .header = + { + .bLength = sizeof(usb_desc_ep), + .bDescriptorType = USB_DESCTYPE_EP, + }, + .bEndpointAddress = CDC_CMD_EP, + .bmAttributes = USB_EP_ATTR_INT, + .wMaxPacketSize = USB_CDC_CMD_PACKET_SIZE, + .bInterval = 0x0AU + }, + + .cdc_data_interface = + { + .header = + { + .bLength = sizeof(usb_desc_itf), + .bDescriptorType = USB_DESCTYPE_ITF, + }, + .bInterfaceNumber = 0x01U, + .bAlternateSetting = 0x00U, + .bNumEndpoints = 0x02U, + .bInterfaceClass = USB_CLASS_DATA, + .bInterfaceSubClass = 0x00U, + .bInterfaceProtocol = USB_CDC_PROTOCOL_NONE, + .iInterface = 0x00U + }, + + .cdc_out_endpoint = + { + .header = + { + .bLength = sizeof(usb_desc_ep), + .bDescriptorType = USB_DESCTYPE_EP, + }, + .bEndpointAddress = CDC_DATA_OUT_EP, + .bmAttributes = USB_EP_ATTR_BULK, + .wMaxPacketSize = USB_CDC_DATA_PACKET_SIZE, + .bInterval = 0x00U + }, + + .cdc_in_endpoint = + { + .header = + { + .bLength = sizeof(usb_desc_ep), + .bDescriptorType = USB_DESCTYPE_EP + }, + .bEndpointAddress = CDC_DATA_IN_EP, + .bmAttributes = USB_EP_ATTR_BULK, + .wMaxPacketSize = USB_CDC_DATA_PACKET_SIZE, + .bInterval = 0x00U + } +}; + +/* USB language ID Descriptor */ +static const usb_desc_LANGID usbd_language_id_desc = +{ + .header = + { + .bLength = sizeof(usb_desc_LANGID), + .bDescriptorType = USB_DESCTYPE_STR, + }, + .wLANGID = ENG_LANGID +}; + +/* USB manufacture string */ +static const usb_desc_str manufacturer_string = +{ + .header = + { + .bLength = USB_STRING_LEN(10), + .bDescriptorType = USB_DESCTYPE_STR, + }, + .unicode_string = {'G', 'i', 'g', 'a', 'D', 'e', 'v', 'i', 'c', 'e'} +}; + +/* USB product string */ +static const usb_desc_str product_string = +{ + .header = + { + .bLength = USB_STRING_LEN(12), + .bDescriptorType = USB_DESCTYPE_STR, + }, + .unicode_string = {'G', 'D', '3', '2', '-', 'C', 'D', 'C', '_', 'A', 'C', 'M'} +}; + +/* USBD serial string */ +static usb_desc_str serial_string = +{ + .header = + { + .bLength = USB_STRING_LEN(12), + .bDescriptorType = USB_DESCTYPE_STR, + } +}; + +/* USB string descriptor set */ +void *const usbd_cdc_strings[] = +{ + [STR_IDX_LANGID] = (uint8_t *)&usbd_language_id_desc, + [STR_IDX_MFC] = (uint8_t *)&manufacturer_string, + [STR_IDX_PRODUCT] = (uint8_t *)&product_string, + [STR_IDX_SERIAL] = (uint8_t *)&serial_string +}; + +usb_desc cdc_desc = +{ + .dev_desc = (uint8_t *)&cdc_dev_desc, + .config_desc = (uint8_t *)&cdc_config_desc, + .strings = usbd_cdc_strings +}; + +/* local function prototypes ('static') */ +static uint8_t cdc_acm_init (usb_dev *udev, uint8_t config_index); +static uint8_t cdc_acm_deinit (usb_dev *udev, uint8_t config_index); +static uint8_t cdc_acm_req (usb_dev *udev, usb_req *req); +static uint8_t cdc_ctlx_out (usb_dev *udev); +static uint8_t cdc_acm_in (usb_dev *udev, uint8_t ep_num); +static uint8_t cdc_acm_out (usb_dev *udev, uint8_t ep_num); + +/* USB CDC device class callbacks structure */ +usb_class_core cdc_class = +{ + .command = NO_CMD, + .alter_set = 0U, + + .init = cdc_acm_init, + .deinit = cdc_acm_deinit, + + .req_proc = cdc_acm_req, + .ctlx_out = cdc_ctlx_out, + .data_in = cdc_acm_in, + .data_out = cdc_acm_out +}; + +/*! + \brief check cdc acm is ready for data transfer + \param[in] udev: pointer to USB device instance + \param[out] none + \retval 0 if cdc is ready, 5 else +*/ +uint8_t cdc_acm_check_ready(usb_dev *udev) +{ + if (udev->dev.class_data[CDC_COM_INTERFACE] != NULL) { + usb_cdc_handler *cdc = (usb_cdc_handler *)udev->dev.class_data[CDC_COM_INTERFACE]; + + if ((1U == cdc->packet_receive) && (1U == cdc->packet_sent)) { + return 0U; + } + } + + return 1U; +} + +/*! + \brief send CDC ACM data + \param[in] udev: pointer to USB device instance + \param[out] none + \retval USB device operation status +*/ +void cdc_acm_data_send (usb_dev *udev) +{ + usb_cdc_handler *cdc = (usb_cdc_handler *)udev->dev.class_data[CDC_COM_INTERFACE]; + + if (0U != cdc->receive_length) { + cdc->packet_sent = 0U; + + usbd_ep_send (udev, CDC_DATA_IN_EP, (uint8_t*)(cdc->data), cdc->receive_length); + + cdc->receive_length = 0U; + } +} + +/*! + \brief receive CDC ACM data + \param[in] udev: pointer to USB device instance + \param[out] none + \retval USB device operation status +*/ +void cdc_acm_data_receive (usb_dev *udev) +{ + usb_cdc_handler *cdc = (usb_cdc_handler *)udev->dev.class_data[CDC_COM_INTERFACE]; + + cdc->packet_receive = 0U; + cdc->packet_sent = 0U; + + usbd_ep_recev(udev, CDC_DATA_OUT_EP, (uint8_t*)(cdc->data), USB_CDC_DATA_PACKET_SIZE); +} + +/*! + \brief initialize the CDC ACM device + \param[in] udev: pointer to USB device instance + \param[in] config_index: configuration index + \param[out] none + \retval USB device operation status +*/ +static uint8_t cdc_acm_init (usb_dev *udev, uint8_t config_index) +{ + static usb_cdc_handler cdc_handler; + + /* initialize the data Tx endpoint */ + usbd_ep_setup (udev, &(cdc_config_desc.cdc_in_endpoint)); + + /* initialize the data Rx endpoint */ + usbd_ep_setup (udev, &(cdc_config_desc.cdc_out_endpoint)); + + /* initialize the command Tx endpoint */ + usbd_ep_setup (udev, &(cdc_config_desc.cdc_cmd_endpoint)); + + /* initialize cdc handler structure */ + cdc_handler.packet_receive = 1U; + cdc_handler.packet_sent = 1U; + cdc_handler.receive_length = 0U; + + cdc_handler.line_coding = (acm_line){ + .dwDTERate = 115200, + .bCharFormat = 0, + .bParityType = 0, + .bDataBits = 0x08 + }; + + udev->dev.class_data[CDC_COM_INTERFACE] = (void *)&cdc_handler; + + return USBD_OK; +} + +/*! + \brief de-initialize the CDC ACM device + \param[in] udev: pointer to USB device instance + \param[in] config_index: configuration index + \param[out] none + \retval USB device operation status +*/ +static uint8_t cdc_acm_deinit (usb_dev *udev, uint8_t config_index) +{ + /* deinitialize the data Tx/Rx endpoint */ + usbd_ep_clear (udev, CDC_DATA_IN_EP); + usbd_ep_clear (udev, CDC_DATA_OUT_EP); + + /* deinitialize the command Tx endpoint */ + usbd_ep_clear (udev, CDC_CMD_EP); + + return USBD_OK; +} + +/*! + \brief handle the CDC ACM class-specific requests + \param[in] udev: pointer to USB device instance + \param[in] req: device class-specific request + \param[out] none + \retval USB device operation status +*/ +static uint8_t cdc_acm_req (usb_dev *udev, usb_req *req) +{ + usb_cdc_handler *cdc = (usb_cdc_handler *)udev->dev.class_data[CDC_COM_INTERFACE]; + + usb_transc *transc = NULL; + + switch (req->bRequest) { + case SEND_ENCAPSULATED_COMMAND: + /* no operation for this driver */ + break; + + case GET_ENCAPSULATED_RESPONSE: + /* no operation for this driver */ + break; + + case SET_COMM_FEATURE: + /* no operation for this driver */ + break; + + case GET_COMM_FEATURE: + /* no operation for this driver */ + break; + + case CLEAR_COMM_FEATURE: + /* no operation for this driver */ + break; + + case SET_LINE_CODING: + transc = &udev->dev.transc_out[0]; + + /* set the value of the current command to be processed */ + udev->dev.class_core->alter_set = req->bRequest; + + /* enable EP0 prepare to receive command data packet */ + transc->remain_len = req->wLength; + transc->xfer_buf = cdc->cmd; + break; + + case GET_LINE_CODING: + transc = &udev->dev.transc_in[0]; + + cdc->cmd[0] = (uint8_t)(cdc->line_coding.dwDTERate); + cdc->cmd[1] = (uint8_t)(cdc->line_coding.dwDTERate >> 8); + cdc->cmd[2] = (uint8_t)(cdc->line_coding.dwDTERate >> 16); + cdc->cmd[3] = (uint8_t)(cdc->line_coding.dwDTERate >> 24); + cdc->cmd[4] = cdc->line_coding.bCharFormat; + cdc->cmd[5] = cdc->line_coding.bParityType; + cdc->cmd[6] = cdc->line_coding.bDataBits; + + transc->xfer_buf = cdc->cmd; + transc->remain_len = 7U; + break; + + case SET_CONTROL_LINE_STATE: + /* no operation for this driver */ + break; + + case SEND_BREAK: + /* no operation for this driver */ + break; + + default: + break; + } + + return USBD_OK; +} + +/*! + \brief handle CDC ACM setup data + \param[in] udev: pointer to USB device instance + \param[out] none + \retval USB device operation status +*/ +static uint8_t cdc_ctlx_out (usb_dev *udev) +{ + usb_cdc_handler *cdc = (usb_cdc_handler *)udev->dev.class_data[CDC_COM_INTERFACE]; + + if (udev->dev.class_core->alter_set != NO_CMD) { + /* process the command data */ + cdc->line_coding.dwDTERate = (uint32_t)((uint32_t)cdc->cmd[0] | + ((uint32_t)cdc->cmd[1] << 8U) | + ((uint32_t)cdc->cmd[2] << 16U) | + ((uint32_t)cdc->cmd[3] << 24U)); + + cdc->line_coding.bCharFormat = cdc->cmd[4]; + cdc->line_coding.bParityType = cdc->cmd[5]; + cdc->line_coding.bDataBits = cdc->cmd[6]; + + udev->dev.class_core->alter_set = NO_CMD; + } + + return USBD_OK; +} + +/*! + \brief handle CDC ACM data + \param[in] udev: pointer to USB device instance + \param[in] ep_num: endpoint identifier + \param[out] none + \retval USB device operation status +*/ +static uint8_t cdc_acm_in (usb_dev *udev, uint8_t ep_num) +{ + usb_transc *transc = &udev->dev.transc_in[EP_ID(ep_num)]; + + usb_cdc_handler *cdc = (usb_cdc_handler *)udev->dev.class_data[CDC_COM_INTERFACE]; + + if ((0U == transc->xfer_len % transc->max_len) && (0U != transc->xfer_len)) { + usbd_ep_send (udev, ep_num, NULL, 0U); + } else { + cdc->packet_sent = 1U; + } + + return USBD_OK; +} + +/*! + \brief handle CDC ACM data + \param[in] udev: pointer to USB device instance + \param[in] ep_num: endpoint identifier + \param[out] none + \retval USB device operation status +*/ +static uint8_t cdc_acm_out (usb_dev *udev, uint8_t ep_num) +{ + usb_cdc_handler *cdc = (usb_cdc_handler *)udev->dev.class_data[CDC_COM_INTERFACE]; + + cdc->packet_receive = 1U; + cdc->receive_length = ((usb_core_driver *)udev)->dev.transc_out[ep_num].xfer_count; + + return USBD_OK; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/dfu/Include/dfu_core.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/dfu/Include/dfu_core.h new file mode 100644 index 0000000000..a3b92a3163 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/dfu/Include/dfu_core.h @@ -0,0 +1,176 @@ +/*! + \file dfu_core.h + \brief the header file of USB DFU device class core functions + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __DFU_CORE_H +#define __DFU_CORE_H + +#include "usbd_enum.h" + +/* DFU class code */ +#define USB_DFU_CLASS 0xFEU + +/* DFU subclass code */ +#define USB_DFU_SUBCLASS_UPGRADE 0x01U + +/* DFU protocl code */ +#define USB_DFU_PROTOCL_RUNTIME 0x01U +#define USB_DFU_PROTOCL_DFU 0x02U + +/* manifestation state */ +#define MANIFEST_COMPLETE 0x00U +#define MANIFEST_IN_PROGRESS 0x01U + +/* DFU attributes code */ +#define USB_DFU_CAN_DOWNLOAD 0x01U +#define USB_DFU_CAN_UPLOAD 0x02U +#define USB_DFU_MANIFEST_TOLERANT 0x04U +#define USB_DFU_WILL_DETACH 0x08U + +/* special commands with download request */ +#define GET_COMMANDS 0x00U +#define SET_ADDRESS_POINTER 0x21U +#define ERASE 0x41U + +/* memory operation command */ +#define CMD_ERASE 0U +#define CMD_WRITE 1U + +#define _BYTE1(x) (uint8_t)((x) & 0xFFU) /*!< addressing cycle 1st byte */ +#define _BYTE2(x) (uint8_t)(((x) & 0xFF00U) >> 8U) /*!< addressing cycle 2nd byte */ +#define _BYTE3(x) (uint8_t)(((x) & 0xFF0000U) >> 16U) /*!< addressing cycle 3rd byte */ + +#define FLASH_ERASE_TIMEOUT 60U +#define FLASH_WRITE_TIMEOUT 80U + +/* bit detach capable = bit 3 in bmAttributes field */ +#define DFU_DETACH_MASK (uint8_t)(0x10U) + +#define USB_SERIAL_STR_LEN 0x06U + +#define USB_DFU_CONFIG_DESC_SIZE 27U + +#define DFU_DESC_TYPE 0x21U + +/* DFU device state defines */ +typedef enum { + STATE_APP_IDLE = 0x00U, + STATE_APP_DETACH, + STATE_DFU_IDLE, + STATE_DFU_DNLOAD_SYNC, + STATE_DFU_DNBUSY, + STATE_DFU_DNLOAD_IDLE, + STATE_DFU_MANIFEST_SYNC, + STATE_DFU_MANIFEST, + STATE_DFU_MANIFEST_WAIT_RESET, + STATE_DFU_UPLOAD_IDLE, + STATE_DFU_ERROR +} dfu_state; + +/* DFU device status defines */ +typedef enum { + STATUS_OK = 0x00U, + STATUS_ERR_TARGET, + STATUS_ERR_FILE, + STATUS_ERR_WRITE, + STATUS_ERR_ERASE, + STATUS_ERR_CHECK_ERASED, + STATUS_ERR_PROG, + STATUS_ERR_VERIFY, + STATUS_ERR_ADDRESS, + STATUS_ERR_NOTDONE, + STATUS_ERR_FIRMWARE, + STATUS_ERR_VENDOR, + STATUS_ERR_USBR, + STATUS_ERR_POR, + STATUS_ERR_UNKNOWN, + STATUS_ERR_STALLEDPKT +} dfu_status; + +/* DFU class-specific requests */ +typedef enum { + DFU_DETACH = 0U, + DFU_DNLOAD, + DFU_UPLOAD, + DFU_GETSTATUS, + DFU_CLRSTATUS, + DFU_GETSTATE, + DFU_ABORT, + DFU_REQ_MAX +} dfu_requests; + +#pragma pack(1) + +/* USB dfu function descriptor structure */ +typedef struct +{ + usb_desc_header header; /*!< descriptor header, including type and size */ + uint8_t bmAttributes; /*!< DFU attributes */ + uint16_t wDetachTimeOut; /*!< time, in milliseconds, that the device will wait after receipt of the DFU_DETACH request. If */ + uint16_t wTransferSize; /*!< maximum number of bytes that the device can accept per control-write transaction */ + uint16_t bcdDFUVersion; /*!< numeric expression identifying the version of the DFU Specification release. */ +} usb_desc_dfu_func; + +#pragma pack() + +/* USB configuration descriptor structure */ +typedef struct +{ + usb_desc_config config; + usb_desc_itf dfu_itf; + usb_desc_dfu_func dfu_func; +} usb_dfu_desc_config_set; + +typedef struct +{ + uint8_t bStatus; + uint8_t bwPollTimeout0; + uint8_t bwPollTimeout1; + uint8_t bwPollTimeout2; + uint8_t bState; + uint8_t iString; + + uint8_t manifest_state; + uint32_t data_len; + uint16_t block_num; + uint32_t base_addr; + + uint8_t buf[TRANSFER_SIZE]; +} usbd_dfu_handler; + +typedef void (*app_func) (void); + +extern usb_desc dfu_desc; +extern usb_class_core dfu_class; + +#endif /* DFU_CORE_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/dfu/Include/dfu_mal.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/dfu/Include/dfu_mal.h new file mode 100644 index 0000000000..fd5d390c5b --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/dfu/Include/dfu_mal.h @@ -0,0 +1,84 @@ +/*! + \file dfu_mal.h + \brief USB DFU device media access layer header file + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __DFU_MAL_H +#define __DFU_MAL_H + +#include "usbd_conf.h" + +typedef struct _dfu_mal_prop +{ + const uint8_t* pstr_desc; + + uint8_t (*mal_init) (void); + uint8_t (*mal_deinit) (void); + uint8_t (*mal_erase) (uint32_t addr); + uint8_t (*mal_write) (uint8_t *buf, uint32_t addr, uint32_t len); + uint8_t* (*mal_read) (uint8_t *buf, uint32_t addr, uint32_t len); + uint8_t (*mal_checkaddr) (uint32_t addr); + + const uint32_t erase_timeout; + const uint32_t write_timeout; +} dfu_mal_prop; + +typedef enum +{ + MAL_OK = 0, + MAL_FAIL +} MAL_Status; + +#define _1st_BYTE(x) (uint8_t)((x) & 0xFF) /*!< addressing cycle 1st byte */ +#define _2nd_BYTE(x) (uint8_t)(((x) & 0xFF00) >> 8) /*!< addressing cycle 2nd byte */ +#define _3rd_BYTE(x) (uint8_t)(((x) & 0xFF0000) >> 16) /*!< addressing cycle 3rd byte */ + +#define SET_POLLING_TIMEOUT(x) buffer[0] = _1st_BYTE(x);\ + buffer[1] = _2nd_BYTE(x);\ + buffer[2] = _3rd_BYTE(x); + +/* function declarations */ +/* initialize the memory media on the GD32 */ +uint8_t dfu_mal_init(void); +/* deinitialize the memory media on the GD32 */ +uint8_t dfu_mal_deinit(void); +/* erase a memory sector */ +uint8_t dfu_mal_erase(uint32_t addr); +/* write data to sectors of memory */ +uint8_t dfu_mal_write(uint8_t *buf, uint32_t addr, uint32_t len); +/* read data from sectors of memory */ +uint8_t* dfu_mal_read(uint8_t *buf, uint32_t addr, uint32_t len); +/* get the status of a given memory and store in buffer */ +uint8_t dfu_mal_getstatus(uint32_t addr, uint8_t cmd, uint8_t *buffer); + +#endif /* __DFU_MAL_H */ + diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/dfu/Source/dfu_core.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/dfu/Source/dfu_core.c new file mode 100644 index 0000000000..b67cebc6d5 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/dfu/Source/dfu_core.c @@ -0,0 +1,652 @@ +/*! + \file dfu_core.c + \brief USB DFU device class core functions + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 + \version 2020-12-11, V1.1.1, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "dfu_core.h" +#include "drv_usb_hw.h" +#include "dfu_mal.h" +#include "flash_if.h" +#include + +#define USBD_VID 0x28E9U +#define USBD_PID 0x0189U + +/* local function prototypes ('static') */ +static uint8_t dfu_init(usb_dev *udev, uint8_t config_index); +static uint8_t dfu_deinit(usb_dev *udev, uint8_t config_index); +static uint8_t dfu_req_handler(usb_dev *udev, usb_req *req); +static uint8_t dfu_ctlx_in(usb_dev *udev); +static void dfu_detach(usb_dev *udev, usb_req *req); +static void dfu_dnload(usb_dev *udev, usb_req *req); +static void dfu_upload(usb_dev *udev, usb_req *req); +static void dfu_getstatus(usb_dev *udev, usb_req *req); +static void dfu_clrstatus(usb_dev *udev, usb_req *req); +static void dfu_getstate(usb_dev *udev, usb_req *req); +static void dfu_abort(usb_dev *udev, usb_req *req); +static void dfu_mode_leave(usb_dev *udev); +static uint8_t dfu_getstatus_complete (usb_dev *udev); + +static void (*dfu_request_process[])(usb_dev *udev, usb_req *req) = +{ + [DFU_DETACH] = dfu_detach, + [DFU_DNLOAD] = dfu_dnload, + [DFU_UPLOAD] = dfu_upload, + [DFU_GETSTATUS] = dfu_getstatus, + [DFU_CLRSTATUS] = dfu_clrstatus, + [DFU_GETSTATE] = dfu_getstate, + [DFU_ABORT] = dfu_abort +}; + +/* note:it should use the c99 standard when compiling the below codes */ +/* USB standard device descriptor */ +const usb_desc_dev dfu_dev_desc = +{ + .header = + { + .bLength = USB_DEV_DESC_LEN, + .bDescriptorType = USB_DESCTYPE_DEV + }, + .bcdUSB = 0x0200U, + .bDeviceClass = 0x00U, + .bDeviceSubClass = 0x00U, + .bDeviceProtocol = 0x00U, + .bMaxPacketSize0 = USB_FS_EP0_MAX_LEN, + .idVendor = USBD_VID, + .idProduct = USBD_PID, + .bcdDevice = 0x0100U, + .iManufacturer = STR_IDX_MFC, + .iProduct = STR_IDX_PRODUCT, + .iSerialNumber = STR_IDX_SERIAL, + .bNumberConfigurations = USBD_CFG_MAX_NUM +}; + +/* USB device configuration descriptor */ +const usb_dfu_desc_config_set dfu_config_desc = +{ + .config = + { + .header = + { + .bLength = sizeof(usb_desc_config), + .bDescriptorType = USB_DESCTYPE_CONFIG + }, + .wTotalLength = USB_DFU_CONFIG_DESC_SIZE, + .bNumInterfaces = 0x01U, + .bConfigurationValue = 0x01U, + .iConfiguration = 0x04U, + .bmAttributes = 0x80U, + .bMaxPower = 0x32U + }, + + .dfu_itf = + { + .header = + { + .bLength = sizeof(usb_desc_itf), + .bDescriptorType = USB_DESCTYPE_ITF + }, + .bInterfaceNumber = 0x00U, + .bAlternateSetting = 0x00U, + .bNumEndpoints = 0x00U, + .bInterfaceClass = USB_DFU_CLASS, + .bInterfaceSubClass = USB_DFU_SUBCLASS_UPGRADE, + .bInterfaceProtocol = USB_DFU_PROTOCL_DFU, + .iInterface = 0x05U + }, + + .dfu_func = + { + .header = + { + .bLength = sizeof(usb_desc_dfu_func), + .bDescriptorType = DFU_DESC_TYPE + }, + .bmAttributes = USB_DFU_CAN_DOWNLOAD | USB_DFU_CAN_UPLOAD | USB_DFU_WILL_DETACH, + .wDetachTimeOut = 0x00FFU, + .wTransferSize = TRANSFER_SIZE, + .bcdDFUVersion = 0x011AU, + }, +}; + +/* USB language ID Descriptor */ +static const usb_desc_LANGID usbd_language_id_desc = +{ + .header = { + .bLength = sizeof(usb_desc_LANGID), + .bDescriptorType = USB_DESCTYPE_STR + }, + .wLANGID = ENG_LANGID +}; + +/* USB manufacture string */ +static const usb_desc_str manufacturer_string = +{ + .header = + { + .bLength = USB_STRING_LEN(10U), + .bDescriptorType = USB_DESCTYPE_STR, + }, + .unicode_string = {'G', 'i', 'g', 'a', 'D', 'e', 'v', 'i', 'c', 'e'} +}; + +/* USB product string */ +static const usb_desc_str product_string = +{ + .header = + { + .bLength = USB_STRING_LEN(12U), + .bDescriptorType = USB_DESCTYPE_STR, + }, + .unicode_string = {'G', 'D', '3', '2', '-', 'U', 'S', 'B', '_', 'D', 'F', 'U'} +}; + +/* USBD serial string */ +static usb_desc_str serial_string = +{ + .header = + { + .bLength = USB_STRING_LEN(2U), + .bDescriptorType = USB_DESCTYPE_STR, + } +}; + +/* USB configure string */ +static const usb_desc_str config_string = +{ + .header = + { + .bLength = USB_STRING_LEN(15U), + .bDescriptorType = USB_DESCTYPE_STR, + }, + .unicode_string = {'G', 'D', '3', '2', ' ', 'U', 'S', 'B', ' ', 'C', 'O', 'N', 'F', 'I', 'G'} +}; + +static const usb_desc_str interface_string = +{ + .header = + { + .bLength = USB_STRING_LEN(44U), + .bDescriptorType = USB_DESCTYPE_STR, + }, + .unicode_string = {'@', 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'F', 'l', 'a', 's', 'h', ' ', '/', '0', 'x', '0', '8', '0', '0', + '0', '0', '0', '0', '/', '1', '6', '*', '0', '0', '1', 'K', 'a', ',', '4', '8', '*', '0', '0', '1', 'K', 'g'} +}; + +void *const usbd_dfu_strings[] = +{ + [STR_IDX_LANGID] = (uint8_t *)&usbd_language_id_desc, + [STR_IDX_MFC] = (uint8_t *)&manufacturer_string, + [STR_IDX_PRODUCT] = (uint8_t *)&product_string, + [STR_IDX_SERIAL] = (uint8_t *)&serial_string, + [STR_IDX_CONFIG] = (uint8_t *)&config_string, + [STR_IDX_ITF] = (uint8_t *)&interface_string +}; + +usb_desc dfu_desc = { + .dev_desc = (uint8_t *)&dfu_dev_desc, + .config_desc = (uint8_t *)&dfu_config_desc, + .strings = usbd_dfu_strings +}; + +usb_class_core dfu_class = { + .init = dfu_init, + .deinit = dfu_deinit, + .req_proc = dfu_req_handler, + .ctlx_in = dfu_ctlx_in +}; + +/*! + \brief initialize the DFU device + \param[in] udev: pointer to USB device instance + \param[in] config_index: configuration index + \param[out] none + \retval USB device operation status +*/ +static uint8_t dfu_init (usb_dev *udev, uint8_t config_index) +{ + static usbd_dfu_handler dfu_handler; + + /* unlock the internal flash */ + dfu_mal_init(); + + memset((void *)&dfu_handler, 0, sizeof(usbd_dfu_handler)); + + dfu_handler.base_addr = APP_LOADED_ADDR; + dfu_handler.manifest_state = MANIFEST_COMPLETE; + dfu_handler.bState = STATE_DFU_IDLE; + dfu_handler.bStatus = STATUS_OK; + + udev->dev.class_data[USBD_DFU_INTERFACE] = (void *)&dfu_handler; + + return USBD_OK; +} + +/*! + \brief de-initialize the DFU device + \param[in] udev: pointer to USB device instance + \param[in] config_index: configuration index + \param[out] none + \retval USB device operation status +*/ +static uint8_t dfu_deinit (usb_dev *udev, uint8_t config_index) +{ + usbd_dfu_handler *dfu = (usbd_dfu_handler *)udev->dev.class_data[USBD_DFU_INTERFACE]; + + /* restore device default state */ + memset(udev->dev.class_data[USBD_DFU_INTERFACE], 0, sizeof(usbd_dfu_handler)); + + dfu->bState = STATE_DFU_IDLE; + dfu->bStatus = STATUS_OK; + + /* lock the internal flash */ + dfu_mal_deinit(); + + return USBD_OK; +} + +/*! + \brief handle the DFU class-specific requests + \param[in] udev: pointer to USB device instance + \param[in] req: device class-specific request + \param[out] none + \retval USB device operation status +*/ +static uint8_t dfu_req_handler (usb_dev *udev, usb_req *req) +{ + if (req->bRequest < DFU_REQ_MAX) { + dfu_request_process[req->bRequest](udev, req); + } else { + return USBD_FAIL; + } + + return USBD_OK; +} + +/*! + \brief handle data Stage + \param[in] udev: pointer to USB device instance + \param[in] ep_num: the endpoint number + \param[out] none + \retval USB device operation status +*/ +static uint8_t dfu_ctlx_in (usb_dev *udev) +{ + dfu_getstatus_complete(udev); + + return USBD_OK; +} + +/*! + \brief leave DFU mode and reset device to jump to user loaded code + \param[in] udev: pointer to USB device instance + \param[out] none + \retval none +*/ +static void dfu_mode_leave (usb_dev *udev) +{ + usbd_dfu_handler *dfu = (usbd_dfu_handler *)udev->dev.class_data[USBD_DFU_INTERFACE]; + + dfu->manifest_state = MANIFEST_COMPLETE; + + if (dfu_config_desc.dfu_func.bmAttributes & 0x04U) { + dfu->bState = STATE_DFU_MANIFEST_SYNC; + } else { + dfu->bState = STATE_DFU_MANIFEST_WAIT_RESET; + + /* lock the internal flash */ + dfu_mal_deinit(); + + /* generate system reset to allow jumping to the user code */ + eclic_system_reset(); + } +} + +/*! + \brief handle data IN stage in control endpoint 0 + \param[in] udev: pointer to usb device instance + \param[out] none + \retval usb device operation status + */ +static uint8_t dfu_getstatus_complete (usb_dev *udev) +{ + uint32_t addr; + + usbd_dfu_handler *dfu = (usbd_dfu_handler *)udev->dev.class_data[USBD_DFU_INTERFACE]; + + if (STATE_DFU_DNBUSY == dfu->bState) { + /* decode the special command */ + if (0U == dfu->block_num) { + if (1U == dfu->data_len){ + if (GET_COMMANDS == dfu->buf[0]) { + /* no operation */ + } + } else if (5U == dfu->data_len) { + if (SET_ADDRESS_POINTER == dfu->buf[0]) { + /* set flash operation address */ + dfu->base_addr = *(uint32_t *)(dfu->buf + 1U); + } else if (ERASE == dfu->buf[0]) { + dfu->base_addr = *(uint32_t *)(dfu->buf + 1U); + + dfu_mal_erase(dfu->base_addr); + } else { + /* no operation */ + } + } else { + /* no operation */ + } + } else if (dfu->block_num > 1U) { /* regular download command */ + /* decode the required address */ + addr = (dfu->block_num - 2U) * TRANSFER_SIZE + dfu->base_addr; + + dfu_mal_write (dfu->buf, addr, dfu->data_len); + + dfu->block_num = 0U; + } else { + /* no operation */ + } + + dfu->data_len = 0U; + + /* update the device state and poll timeout */ + dfu->bState = STATE_DFU_DNLOAD_SYNC; + + return USBD_OK; + } else if (dfu->bState == STATE_DFU_MANIFEST) { /* manifestation in progress */ + /* start leaving DFU mode */ + dfu_mode_leave(udev); + } else { + /* no operation */ + } + + return USBD_OK; +} + +/*! + \brief handle the DFU_DETACH request + \param[in] udev: pointer to usb device instance + \param[in] req: DFU class request + \param[out] none + \retval none. +*/ +static void dfu_detach(usb_dev *udev, usb_req *req) +{ + usbd_dfu_handler *dfu = (usbd_dfu_handler *)udev->dev.class_data[USBD_DFU_INTERFACE]; + + switch (dfu->bState) { + case STATE_DFU_IDLE: + case STATE_DFU_DNLOAD_SYNC: + case STATE_DFU_DNLOAD_IDLE: + case STATE_DFU_MANIFEST_SYNC: + case STATE_DFU_UPLOAD_IDLE: + dfu->bStatus = STATUS_OK; + dfu->bState = STATE_DFU_IDLE; + dfu->iString = 0U; /* iString */ + + dfu->block_num = 0U; + dfu->data_len = 0U; + break; + + default: + break; + } + + /* check the detach capability in the DFU functional descriptor */ + if (dfu_config_desc.dfu_func.wDetachTimeOut & DFU_DETACH_MASK) { + usbd_disconnect (udev); + + usbd_connect (udev); + } else { + /* wait for the period of time specified in detach request */ + usb_mdelay (4U); + } +} + +/*! + \brief handle the DFU_DNLOAD request + \param[in] udev: pointer to usb device instance + \param[in] req: DFU class request + \param[out] none + \retval none +*/ +static void dfu_dnload(usb_dev *udev, usb_req *req) +{ + usb_transc *transc = &udev->dev.transc_out[0]; + usbd_dfu_handler *dfu = (usbd_dfu_handler *)udev->dev.class_data[USBD_DFU_INTERFACE]; + + switch (dfu->bState) { + case STATE_DFU_IDLE: + case STATE_DFU_DNLOAD_IDLE: + if (req->wLength > 0U) { + /* update the global length and block number */ + dfu->block_num = req->wValue; + dfu->data_len = req->wLength; + + dfu->bState = STATE_DFU_DNLOAD_SYNC; + + transc->remain_len = dfu->data_len; + transc->xfer_buf = dfu->buf; + } else { + dfu->manifest_state = MANIFEST_IN_PROGRESS; + dfu->bState = STATE_DFU_MANIFEST_SYNC; + } + break; + + default: + break; + } +} + +/*! + \brief handles the DFU UPLOAD request. + \param[in] udev: pointer to usb device instance + \param[in] req: DFU class request + \param[out] none + \retval none +*/ +static void dfu_upload (usb_dev *udev, usb_req *req) +{ + uint8_t *phy_addr = NULL; + uint32_t addr = 0U; + usbd_dfu_handler *dfu = (usbd_dfu_handler *)udev->dev.class_data[USBD_DFU_INTERFACE]; + + usb_transc *transc = &udev->dev.transc_in[0]; + + if(req->wLength <= 0U) { + dfu->bState = STATE_DFU_IDLE; + return; + } + + switch (dfu->bState) { + case STATE_DFU_IDLE: + case STATE_DFU_UPLOAD_IDLE: + /* update the global length and block number */ + dfu->block_num = req->wValue; + dfu->data_len = req->wLength; + + /* DFU get command */ + if (0U == dfu->block_num) { + /* update the state machine */ + dfu->bState = (dfu->data_len > 3U) ? STATE_DFU_IDLE : STATE_DFU_UPLOAD_IDLE; + + /* store the values of all supported commands */ + dfu->buf[0] = GET_COMMANDS; + dfu->buf[1] = SET_ADDRESS_POINTER; + dfu->buf[2] = ERASE; + + /* send the status data over EP0 */ + transc->xfer_buf = &(dfu->buf[0]); + transc->remain_len = 3U; + } else if (dfu->block_num > 1U) { + dfu->bState = STATE_DFU_UPLOAD_IDLE; + + /* change is accelerated */ + addr = (dfu->block_num - 2U) * TRANSFER_SIZE + dfu->base_addr; + + /* return the physical address where data are stored */ + phy_addr = dfu_mal_read (dfu->buf, addr, dfu->data_len); + + /* send the status data over EP0 */ + transc->xfer_buf = phy_addr; + transc->remain_len = dfu->data_len; + } else { + dfu->bState = STATUS_ERR_STALLEDPKT; + } + break; + + default: + dfu->data_len = 0U; + dfu->block_num = 0U; + break; + } +} + +/*! + \brief handle the DFU_GETSTATUS request + \param[in] udev: pointer to usb device instance + \param[in] req: DFU class request + \param[out] none + \retval none +*/ +static void dfu_getstatus (usb_dev *udev, usb_req *req) +{ + usbd_dfu_handler *dfu = (usbd_dfu_handler *)udev->dev.class_data[USBD_DFU_INTERFACE]; + + usb_transc *transc = &udev->dev.transc_in[0]; + + switch (dfu->bState) { + case STATE_DFU_DNLOAD_SYNC: + if (0U != dfu->data_len) { + dfu->bState = STATE_DFU_DNBUSY; + + if (0U == dfu->block_num) { + if (ERASE == dfu->buf[0]) { + dfu_mal_getstatus (dfu->base_addr, CMD_ERASE, (uint8_t *)&dfu->bwPollTimeout0); + } else { + dfu_mal_getstatus (dfu->base_addr, CMD_WRITE, (uint8_t *)&dfu->bwPollTimeout0); + } + } + } else { + dfu->bState = STATE_DFU_DNLOAD_IDLE; + } + break; + + case STATE_DFU_MANIFEST_SYNC: + if (MANIFEST_IN_PROGRESS == dfu->manifest_state) { + dfu->bState = STATE_DFU_MANIFEST; + dfu->bwPollTimeout0 = 1U; + } else if ((MANIFEST_COMPLETE == dfu->manifest_state) && \ + (dfu_config_desc.dfu_func.bmAttributes & 0x04U)){ + dfu->bState = STATE_DFU_IDLE; + dfu->bwPollTimeout0 = 0U; + } else { + /* no operation */ + } + break; + + default: + break; + } + + /* send the status data of DFU interface to host over EP0 */ + transc->xfer_buf = (uint8_t *)&(dfu->bStatus); + transc->remain_len = 6U; +} + +/*! + \brief handle the DFU_CLRSTATUS request + \param udev: pointer to usb device instance + \param[out] none + \retval none +*/ +static void dfu_clrstatus (usb_dev *udev, usb_req *req) +{ + usbd_dfu_handler *dfu = (usbd_dfu_handler *)udev->dev.class_data[USBD_DFU_INTERFACE]; + + if (STATE_DFU_ERROR == dfu->bState) { + dfu->bStatus = STATUS_OK; + dfu->bState = STATE_DFU_IDLE; + } else { + /* state error */ + dfu->bStatus = STATUS_ERR_UNKNOWN; + dfu->bState = STATE_DFU_ERROR; + } + + dfu->iString = 0U; /* iString: index = 0 */ +} + +/*! + \brief handle the DFU_GETSTATE request + \param[in] udev: pointer to usb device instance + \param[out] none + \retval none +*/ +static void dfu_getstate (usb_dev *udev, usb_req *req) +{ + usbd_dfu_handler *dfu = (usbd_dfu_handler *)udev->dev.class_data[USBD_DFU_INTERFACE]; + + usb_transc *transc = &udev->dev.transc_in[0]; + + /* send the current state of the DFU interface to host */ + transc->xfer_buf = &(dfu->bState); + transc->remain_len = 1U; +} + +/*! + \brief handle the DFU_ABORT request + \param[in] udev: pointer to usb device instance + \param[out] none + \retval none +*/ +static void dfu_abort (usb_dev *udev, usb_req *req) +{ + usbd_dfu_handler *dfu = (usbd_dfu_handler *)udev->dev.class_data[USBD_DFU_INTERFACE]; + + switch (dfu->bState){ + case STATE_DFU_IDLE: + case STATE_DFU_DNLOAD_SYNC: + case STATE_DFU_DNLOAD_IDLE: + case STATE_DFU_MANIFEST_SYNC: + case STATE_DFU_UPLOAD_IDLE: + dfu->bStatus = STATUS_OK; + dfu->bState = STATE_DFU_IDLE; + dfu->iString = 0U; /* iString: index = 0 */ + + dfu->block_num = 0U; + dfu->data_len = 0U; + break; + + default: + break; + } +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/dfu/Source/dfu_mal.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/dfu/Source/dfu_mal.c new file mode 100644 index 0000000000..128a0f7547 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/dfu/Source/dfu_mal.c @@ -0,0 +1,233 @@ +/*! + \file dfu_mal.c + \brief USB DFU device media access layer functions + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "dfu_mal.h" +#include "flash_if.h" +#include "drv_usb_hw.h" +#include "usbd_transc.h" + +extern usb_core_driver usb_dfu_dev; + +extern struct { + uint8_t buf[TRANSFER_SIZE]; + uint16_t data_len; + uint16_t block_num; + uint32_t base_addr; +} prog; + +dfu_mal_prop* tMALTab[MAX_USED_MEMORY_MEDIA] = { + &DFU_Flash_cb +}; + +/* The list of memory interface string descriptor pointers. This list + can be updated whenever a memory has to be added or removed */ +const uint8_t* USBD_DFU_StringDesc[MAX_USED_MEMORY_MEDIA] = +{ + (const uint8_t *)FLASH_IF_STRING +}; + +static uint8_t dfu_mal_checkaddr (uint32_t addr); + +/*! + \brief initialize the memory media on the GD32 + \param[in] none + \param[out] none + \retval MAL_OK +*/ +uint8_t dfu_mal_init (void) +{ + uint32_t mem_index = 0U; + + /* initialize all supported memory medias */ + for (mem_index = 0U; mem_index < MAX_USED_MEMORY_MEDIA; mem_index++) { + /* check if the memory media exists */ + if (NULL != tMALTab[mem_index]->mal_init) { + tMALTab[mem_index]->mal_init(); + } + } + + return MAL_OK; +} + +/*! + \brief deinitialize the memory media on the GD32 + \param[in] none + \param[out] none + \retval MAL_OK +*/ +uint8_t dfu_mal_deinit (void) +{ + uint32_t mem_index = 0U; + + /* deinitializes all supported memory medias */ + for (mem_index = 0U; mem_index < MAX_USED_MEMORY_MEDIA; mem_index++) { + /* check if the memory media exists */ + if (NULL != tMALTab[mem_index]->mal_deinit) { + tMALTab[mem_index]->mal_deinit(); + } + } + + return MAL_OK; +} + +/*! + \brief erase a memory sector + \param[in] addr: memory sector address/code + \param[out] none + \retval MAL_OK +*/ +uint8_t dfu_mal_erase (uint32_t addr) +{ + uint32_t mem_index = dfu_mal_checkaddr(addr); + + /* check if the address is in protected area */ + if (IS_PROTECTED_AREA(addr)) { + return MAL_FAIL; + } + + if (mem_index < MAX_USED_MEMORY_MEDIA) { + /* check if the operation is supported */ + if (NULL != tMALTab[mem_index]->mal_erase) { + return tMALTab[mem_index]->mal_erase(addr); + } else { + return MAL_FAIL; + } + } else { + return MAL_FAIL; + } +} + +/*! + \brief write data to sectors of memory + \param[in] buf: the data buffer to be write + \param[in] addr: memory sector address/code + \param[in] len: data length + \param[out] none + \retval MAL_OK +*/ +uint8_t dfu_mal_write (uint8_t *buf, uint32_t addr, uint32_t len) +{ + uint32_t mem_index = dfu_mal_checkaddr(addr); + + /* check if the address is in protected area */ + if (IS_PROTECTED_AREA(addr)) { + return MAL_FAIL; + } + + if (mem_index < MAX_USED_MEMORY_MEDIA) { + /* check if the operation is supported */ + if (NULL != tMALTab[mem_index]->mal_write) { + return tMALTab[mem_index]->mal_write(buf, addr, len); + } else { + return MAL_FAIL; + } + } else { + return MAL_FAIL; + } +} + +/*! + \brief read data from sectors of memory + \param[in] buf: the data buffer to be write + \param[in] addr: memory sector address/code + \param[in] len: data length + \param[out] none + \retval pointer to buffer +*/ +uint8_t* dfu_mal_read (uint8_t *buf, uint32_t addr, uint32_t len) +{ + uint32_t mem_index = 0U; + + if (OB_RDPT != addr) { + mem_index = dfu_mal_checkaddr(addr); + } + + if (mem_index < MAX_USED_MEMORY_MEDIA) { + /* check if the operation is supported */ + if (NULL != tMALTab[mem_index]->mal_read) { + return tMALTab[mem_index]->mal_read(buf, addr, len); + } else { + return buf; + } + } else { + return buf; + } +} + +/*! + \brief get the status of a given memory and store in buffer + \param[in] addr: memory sector address/code + \param[in] cmd: 0 for erase and 1 for write + \param[in] buffer: pointer to the buffer where the status data will be stored + \param[out] none + \retval MAL_OK if all operations are OK, MAL_FAIL else +*/ +uint8_t dfu_mal_getstatus (uint32_t addr, uint8_t cmd, uint8_t *buffer) +{ + uint32_t mem_index = dfu_mal_checkaddr(addr); + + if (mem_index < MAX_USED_MEMORY_MEDIA) { + if (cmd & 0x01U) { + SET_POLLING_TIMEOUT(tMALTab[mem_index]->write_timeout); + } else { + SET_POLLING_TIMEOUT(tMALTab[mem_index]->erase_timeout); + } + + return MAL_OK; + } else { + return MAL_FAIL; + } +} + +/*! + \brief check the address is supported + \param[in] addr: memory sector address/code + \param[out] none + \retval index of the addressed memory +*/ +static uint8_t dfu_mal_checkaddr (uint32_t addr) +{ + uint8_t mem_index = 0U; + + /* check with all supported memories */ + for (mem_index = 0U; mem_index < MAX_USED_MEMORY_MEDIA; mem_index++) { + /* if the check address is supported, return the memory index */ + if (MAL_OK == tMALTab[mem_index]->mal_checkaddr(addr)) { + return mem_index; + } + } + + /* if there is no memory found, return MAX_USED_MEMORY_MEDIA */ + return (MAX_USED_MEMORY_MEDIA); +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/hid/Include/custom_hid_core.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/hid/Include/custom_hid_core.h new file mode 100644 index 0000000000..980f3383a5 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/hid/Include/custom_hid_core.h @@ -0,0 +1,70 @@ +/*! + \file custom_hid_core.h + \brief definitions for HID core + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 + \version 2020-12-08, V1.1.1, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __CUSTOM_HID_CORE_H +#define __CUSTOM_HID_CORE_H + +#include "usbd_enum.h" +#include "usb_hid.h" + +#define DESC_LEN_REPORT 96U +#define DESC_LEN_CONFIG 41U + +#define NO_CMD 0xFFU + +#define MAX_PERIPH_NUM 4U + +typedef struct { + uint8_t data[2]; + + uint8_t reportID; + uint8_t idlestate; + uint8_t protocol; +} custom_hid_handler; + +typedef struct { + void (*periph_config[MAX_PERIPH_NUM])(void); +} hid_fop_handler; + +extern usb_desc custom_hid_desc; +extern usb_class_core usbd_custom_hid_cb; + +/* function declarations */ +/* register HID interface operation functions */ +uint8_t custom_hid_itfop_register (usb_dev *udev, hid_fop_handler *hid_fop); +/* send custom HID report */ +uint8_t custom_hid_report_send (usb_dev *udev, uint8_t *report, uint32_t len); + +#endif /* __CUSTOM_HID_CORE_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/hid/Include/standard_hid_core.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/hid/Include/standard_hid_core.h new file mode 100644 index 0000000000..3540f81f0e --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/hid/Include/standard_hid_core.h @@ -0,0 +1,68 @@ +/*! + \file standard_hid_core.h + \brief definitions for HID core + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __STANDARD_HID_CORE_H +#define __STANDARD_HID_CORE_H + +#include "usbd_enum.h" +#include "usb_hid.h" + +#define USB_HID_CONFIG_DESC_LEN 0x22U +#define USB_HID_REPORT_DESC_LEN 0x4AU + +#define NO_CMD 0xFFU + +typedef struct { + uint32_t protocol; + uint32_t idle_state; + + uint8_t data[HID_IN_PACKET]; + __IO uint8_t prev_transfer_complete; +} standard_hid_handler; + +typedef struct { + void (*hid_itf_config) (void); + void (*hid_itf_data_process) (usb_dev *udev); +} hid_fop_handler; + +extern usb_desc hid_desc; +extern usb_class_core usbd_hid_cb; + +/* function declarations */ +/* register HID interface operation functions */ +uint8_t hid_itfop_register (usb_dev *udev, hid_fop_handler *hid_fop); +/* send keyboard report */ +uint8_t hid_report_send (usb_dev *pudev, uint8_t *report, uint32_t len); + +#endif /* __STANDARD_HID_CORE_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/hid/Source/custom_hid_core.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/hid/Source/custom_hid_core.c new file mode 100644 index 0000000000..4e86f637d3 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/hid/Source/custom_hid_core.c @@ -0,0 +1,489 @@ +/*! + \file custom_hid_core.c + \brief custom HID class driver + + \version 2020-08-04, V1.1.1, firmware for GD32VF103 + \version 2020-12-08, V1.1.1, firmware for GD32VF103 + \version 2020-12-11, V1.1.2, firmware for GD32VF103 + \version 2021-05-19, V1.1.3, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "custom_hid_core.h" +#include "usbd_enum.h" +#include + +#define USBD_VID 0x28E9U +#define USBD_PID 0x028AU + +/* Note:it should use the C99 standard when compiling the below codes */ +/* USB standard device descriptor */ +const usb_desc_dev custom_hid_dev_desc = +{ + .header = + { + .bLength = USB_DEV_DESC_LEN, + .bDescriptorType = USB_DESCTYPE_DEV, + }, + .bcdUSB = 0x0200U, + .bDeviceClass = 0x00U, + .bDeviceSubClass = 0x00U, + .bDeviceProtocol = 0x00U, + .bMaxPacketSize0 = USB_FS_EP0_MAX_LEN, + .idVendor = USBD_VID, + .idProduct = USBD_PID, + .bcdDevice = 0x0100U, + .iManufacturer = STR_IDX_MFC, + .iProduct = STR_IDX_PRODUCT, + .iSerialNumber = STR_IDX_SERIAL, + .bNumberConfigurations = USBD_CFG_MAX_NUM, +}; + +/* USB device configuration descriptor */ +const usb_hid_desc_config_set custom_hid_config_desc = +{ + .config = + { + .header = + { + .bLength = sizeof(usb_desc_config), + .bDescriptorType = USB_DESCTYPE_CONFIG + }, + .wTotalLength = DESC_LEN_CONFIG, + .bNumInterfaces = 0x01U, + .bConfigurationValue = 0x01U, + .iConfiguration = 0x00U, + .bmAttributes = 0x80U, + .bMaxPower = 0x32U + }, + + .hid_itf = + { + .header = + { + .bLength = sizeof(usb_desc_itf), + .bDescriptorType = USB_DESCTYPE_ITF + }, + .bInterfaceNumber = 0x00U, + .bAlternateSetting = 0x00U, + .bNumEndpoints = 0x02U, + .bInterfaceClass = USB_HID_CLASS, + .bInterfaceSubClass = 0x00U, + .bInterfaceProtocol = 0x00U, + .iInterface = 0x00U + }, + + .hid_vendor = + { + .header = + { + .bLength = sizeof(usb_desc_hid), + .bDescriptorType = USB_DESCTYPE_HID + }, + .bcdHID = 0x0111U, + .bCountryCode = 0x00U, + .bNumDescriptors = 0x01U, + .bDescriptorType = USB_DESCTYPE_REPORT, + .wDescriptorLength = DESC_LEN_REPORT, + }, + + .hid_epin = + { + .header = + { + .bLength = sizeof(usb_desc_ep), + .bDescriptorType = USB_DESCTYPE_EP + }, + .bEndpointAddress = CUSTOMHID_IN_EP, + .bmAttributes = USB_EP_ATTR_INT, + .wMaxPacketSize = CUSTOMHID_IN_PACKET, + .bInterval = 0x20U + }, + + .hid_epout = + { + .header = + { + .bLength = sizeof(usb_desc_ep), + .bDescriptorType = USB_DESCTYPE_EP + }, + .bEndpointAddress = CUSTOMHID_OUT_EP, + .bmAttributes = USB_EP_ATTR_INT, + .wMaxPacketSize = CUSTOMHID_OUT_PACKET, + .bInterval = 0x20U + } +}; + +/* USB language ID descriptor */ +static const usb_desc_LANGID usbd_language_id_desc = +{ + .header = + { + .bLength = sizeof(usb_desc_LANGID), + .bDescriptorType = USB_DESCTYPE_STR + }, + .wLANGID = ENG_LANGID +}; + +/* USB manufacture string */ +static const usb_desc_str manufacturer_string = +{ + .header = + { + .bLength = USB_STRING_LEN(10U), + .bDescriptorType = USB_DESCTYPE_STR, + }, + .unicode_string = {'G', 'i', 'g', 'a', 'D', 'e', 'v', 'i', 'c', 'e'} +}; + +/* USB product string */ +static const usb_desc_str product_string = +{ + .header = + { + .bLength = USB_STRING_LEN(14U), + .bDescriptorType = USB_DESCTYPE_STR, + }, + .unicode_string = {'G', 'D', '3', '2', '-', 'C', 'u', 's', 't', 'o', 'm', 'H', 'I', 'D'} +}; + +/* USBD serial string */ +static usb_desc_str serial_string = +{ + .header = + { + .bLength = USB_STRING_LEN(12U), + .bDescriptorType = USB_DESCTYPE_STR, + } +}; + +/* USB string descriptor set */ +void *const usbd_hid_strings[] = +{ + [STR_IDX_LANGID] = (uint8_t *)&usbd_language_id_desc, + [STR_IDX_MFC] = (uint8_t *)&manufacturer_string, + [STR_IDX_PRODUCT] = (uint8_t *)&product_string, + [STR_IDX_SERIAL] = (uint8_t *)&serial_string +}; + +usb_desc custom_hid_desc = { + .dev_desc = (uint8_t *)&custom_hid_dev_desc, + .config_desc = (uint8_t *)&custom_hid_config_desc, + .strings = usbd_hid_strings +}; + +const uint8_t customhid_report_descriptor[DESC_LEN_REPORT] = +{ + 0x06, 0x00, 0xFF, /* USAGE_PAGE (Vendor Defined: 0xFF00) */ + 0x09, 0x00, /* USAGE (Custom Device) */ + 0xa1, 0x01, /* COLLECTION (Application) */ + + /* led 1 */ + 0x85, 0x11, /* REPORT_ID (0x11) */ + 0x09, 0x01, /* USAGE (LED 1) */ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ + 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ + 0x75, 0x08, /* REPORT_SIZE (8) */ + 0x95, 0x01, /* REPORT_COUNT (1) */ + 0x91, 0x82, /* OUTPUT (Data,Var,Abs,Vol) */ + + /* led 2 */ + 0x85, 0x12, /* REPORT_ID (0x12) */ + 0x09, 0x02, /* USAGE (LED 2) */ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ + 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ + 0x75, 0x08, /* REPORT_SIZE (8) */ + 0x95, 0x01, /* REPORT_COUNT (1) */ + 0x91, 0x82, /* OUTPUT (Data,Var,Abs,Vol) */ + + /* led 3 */ + 0x85, 0x13, /* REPORT_ID (0x13) */ + 0x09, 0x03, /* USAGE (LED 3) */ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ + 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ + 0x75, 0x08, /* REPORT_SIZE (8) */ + 0x95, 0x01, /* REPORT_COUNT (1) */ + 0x91, 0x82, /* OUTPUT (Data,Var,Abs,Vol) */ + + /* led 4 */ + 0x85, 0x14, /* REPORT_ID (0x14) */ + 0x09, 0x04, /* USAGE (LED 4) */ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ + 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ + 0x75, 0x08, /* REPORT_SIZE (8) */ + 0x95, 0x01, /* REPORT_COUNT (1) */ + 0x91, 0x82, /* OUTPUT (Data,Var,Abs,Vol) */ + + /* wakeup key */ + 0x85, 0x15, /* REPORT_ID (0x15) */ + 0x09, 0x05, /* USAGE (Push Button) */ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ + 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ + 0x75, 0x01, /* REPORT_SIZE (1) */ + 0x81, 0x02, /* INPUT (Data,Var,Abs,Vol) */ + + 0x75, 0x07, /* REPORT_SIZE (7) */ + 0x81, 0x03, /* INPUT (Cnst,Var,Abs,Vol) */ + + /* tamper key */ + 0x85, 0x16, /* REPORT_ID (0x16) */ + 0x09, 0x06, /* USAGE (Push Button) */ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ + 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ + 0x75, 0x01, /* REPORT_SIZE (1) */ + 0x81, 0x02, /* INPUT (Data,Var,Abs,Vol) */ + + 0x75, 0x07, /* REPORT_SIZE (7) */ + 0x81, 0x03, /* INPUT (Cnst,Var,Abs,Vol) */ + + 0xc0 /* END_COLLECTION */ +}; + +/* local function prototypes ('static') */ +static uint8_t custom_hid_init (usb_dev *udev, uint8_t config_index); +static uint8_t custom_hid_deinit (usb_dev *udev, uint8_t config_index); +static uint8_t custom_hid_req_handler (usb_dev *udev, usb_req *req); +static uint8_t custom_hid_data_in (usb_dev *udev, uint8_t ep_num); +static uint8_t custom_hid_data_out (usb_dev *udev, uint8_t ep_num); + +usb_class_core usbd_custom_hid_cb = +{ + .command = NO_CMD, + .alter_set = 0U, + + .init = custom_hid_init, + .deinit = custom_hid_deinit, + + .req_proc = custom_hid_req_handler, + + .data_in = custom_hid_data_in, + .data_out = custom_hid_data_out +}; + +/*! + \brief register HID interface operation functions + \param[in] udev: pointer to USB device instance + \param[in] hid_fop: HID operation functions structure + \param[out] none + \retval USB device operation status +*/ +uint8_t custom_hid_itfop_register (usb_dev *udev, hid_fop_handler *hid_fop) +{ + if (NULL != hid_fop) { + udev->dev.user_data = hid_fop; + + return USBD_OK; + } + + return USBD_FAIL; +} + +/*! + \brief send custom HID report + \param[in] udev: pointer to USB device instance + \param[in] report: pointer to HID report + \param[in] len: data length + \param[out] none + \retval USB device operation status +*/ +uint8_t custom_hid_report_send (usb_dev *udev, uint8_t *report, uint32_t len) +{ + usbd_ep_send (udev, CUSTOMHID_IN_EP, report, len); + + return USBD_OK; +} + +/*! + \brief initialize the HID device + \param[in] udev: pointer to USB device instance + \param[in] config_index: configuration index + \param[out] none + \retval USB device operation status +*/ +static uint8_t custom_hid_init (usb_dev *udev, uint8_t config_index) +{ + static custom_hid_handler hid_handler; + + memset((void *)&hid_handler, 0U, sizeof(custom_hid_handler)); + + /* Initialize the data Tx endpoint */ + usbd_ep_setup (udev, &(custom_hid_config_desc.hid_epin)); + + /* Initialize the data Rx endpoint */ + usbd_ep_setup (udev, &(custom_hid_config_desc.hid_epout)); + + /* prepare receive data */ + usbd_ep_recev (udev, CUSTOMHID_OUT_EP, hid_handler.data, 2U); + + udev->dev.class_data[CUSTOM_HID_INTERFACE] = (void *)&hid_handler; + + if (udev->dev.user_data != NULL) { + for (uint8_t i = 0U; i < MAX_PERIPH_NUM; i++) { + if (((hid_fop_handler *)udev->dev.user_data)->periph_config[i] != NULL) { + ((hid_fop_handler *)udev->dev.user_data)->periph_config[i](); + } + } + } + + return USBD_OK; +} + +/*! + \brief de-initialize the HID device + \param[in] udev: pointer to USB device instance + \param[in] config_index: configuration index + \param[out] none + \retval USB device operation status +*/ +static uint8_t custom_hid_deinit (usb_dev *udev, uint8_t config_index) +{ + /* deinitialize HID endpoints */ + usbd_ep_clear(udev, CUSTOMHID_IN_EP); + usbd_ep_clear(udev, CUSTOMHID_OUT_EP); + + return USBD_OK; +} + +/*! + \brief handle the HID class-specific requests + \param[in] udev: pointer to USB device instance + \param[in] req: device class-specific request + \param[out] none + \retval USB device operation status +*/ +static uint8_t custom_hid_req_handler (usb_dev *udev, usb_req *req) +{ + usb_transc *transc = &udev->dev.transc_in[0]; + + custom_hid_handler *hid = (custom_hid_handler *)udev->dev.class_data[CUSTOM_HID_INTERFACE]; + + switch (req->bRequest) { + case GET_REPORT: + break; + + case GET_IDLE: + transc->xfer_buf = (uint8_t *)&hid->idlestate; + transc->remain_len = 1U; + break; + + case GET_PROTOCOL: + transc->xfer_buf = (uint8_t *)&hid->protocol; + transc->remain_len = 1U; + break; + + case SET_REPORT: + hid->reportID = (uint8_t)(req->wValue); + break; + + case SET_IDLE: + hid->idlestate = (uint8_t)(req->wValue >> 8U); + break; + + case SET_PROTOCOL: + hid->protocol = (uint8_t)(req->wValue); + break; + + case USB_GET_DESCRIPTOR: + if (USB_DESCTYPE_REPORT == (req->wValue >> 8U)) { + transc->remain_len = USB_MIN(DESC_LEN_REPORT, req->wLength); + transc->xfer_buf = (uint8_t *)customhid_report_descriptor; + } + break; + + default: + return USBD_FAIL; + } + + return USBD_OK; +} + +/*! + \brief handle custom HID data + \param[in] udev: pointer to USB device instance + \param[in] ep_num: endpoint identifier + \param[out] none + \retval USB device operation status +*/ +static uint8_t custom_hid_data_in (usb_dev *udev, uint8_t ep_num) +{ + return USBD_OK; +} + +/*! + \brief handle custom HID data + \param[in] udev: pointer to USB device instance + \param[in] ep_num: endpoint identifier + \param[out] none + \retval USB device operation status +*/ +static uint8_t custom_hid_data_out (usb_dev *udev, uint8_t ep_num) +{ + custom_hid_handler *hid = (custom_hid_handler *)udev->dev.class_data[CUSTOM_HID_INTERFACE]; + + switch (hid->data[0]){ + case 0x11U: + if (RESET != hid->data[1]) { + gd_eval_led_on(LED1); + } else { + gd_eval_led_off(LED1); + } + break; + + case 0x12U: + if (RESET != hid->data[1]) { + gd_eval_led_on(LED2); + } else { + gd_eval_led_off(LED2); + } + break; + + case 0x13U: + if (RESET != hid->data[1]) { + gd_eval_led_on(LED3); + } else { + gd_eval_led_off(LED3); + } + break; + + case 0x14U: + if (RESET != hid->data[1]) { + gd_eval_led_on(LED4); + } else { + gd_eval_led_off(LED4); + } + break; + + default: + break; + } + + usbd_ep_recev (udev, CUSTOMHID_IN_EP, hid->data, 2U); + + return USBD_OK; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/hid/Source/standard_hid_core.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/hid/Source/standard_hid_core.c new file mode 100644 index 0000000000..9bea3661f3 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/hid/Source/standard_hid_core.c @@ -0,0 +1,403 @@ +/*! + \file standard_hid_core.c + \brief HID class driver + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "standard_hid_core.h" +#include + +#define USBD_VID 0x28e9U +#define USBD_PID 0x0389U + +/* Note:it should use the C99 standard when compiling the below codes */ +/* USB standard device descriptor */ +const usb_desc_dev hid_dev_desc = +{ + .header = + { + .bLength = USB_DEV_DESC_LEN, + .bDescriptorType = USB_DESCTYPE_DEV + }, + .bcdUSB = 0x0200U, + .bDeviceClass = 0x00U, + .bDeviceSubClass = 0x00U, + .bDeviceProtocol = 0x00U, + .bMaxPacketSize0 = USB_FS_EP0_MAX_LEN, + .idVendor = USBD_VID, + .idProduct = USBD_PID, + .bcdDevice = 0x0100U, + .iManufacturer = STR_IDX_MFC, + .iProduct = STR_IDX_PRODUCT, + .iSerialNumber = STR_IDX_SERIAL, + .bNumberConfigurations = USBD_CFG_MAX_NUM +}; + +const usb_hid_desc_config_set hid_config_desc = +{ + .config = + { + .header = + { + .bLength = sizeof(usb_desc_config), + .bDescriptorType = USB_DESCTYPE_CONFIG + }, + .wTotalLength = USB_HID_CONFIG_DESC_LEN, + .bNumInterfaces = 0x01U, + .bConfigurationValue = 0x01U, + .iConfiguration = 0x00U, + .bmAttributes = 0xA0U, + .bMaxPower = 0x32U + }, + + .hid_itf = + { + .header = + { + .bLength = sizeof(usb_desc_itf), + .bDescriptorType = USB_DESCTYPE_ITF + }, + .bInterfaceNumber = 0x00U, + .bAlternateSetting = 0x00U, + .bNumEndpoints = 0x01U, + .bInterfaceClass = USB_HID_CLASS, + .bInterfaceSubClass = USB_HID_SUBCLASS_BOOT_ITF, + .bInterfaceProtocol = USB_HID_PROTOCOL_KEYBOARD, + .iInterface = 0x00U + }, + + .hid_vendor = + { + .header = + { + .bLength = sizeof(usb_desc_hid), + .bDescriptorType = USB_DESCTYPE_HID + }, + .bcdHID = 0x0111U, + .bCountryCode = 0x00U, + .bNumDescriptors = 0x01U, + .bDescriptorType = USB_DESCTYPE_REPORT, + .wDescriptorLength = USB_HID_REPORT_DESC_LEN, + }, + + .hid_epin = + { + .header = + { + .bLength = sizeof(usb_desc_ep), + .bDescriptorType = USB_DESCTYPE_EP + }, + .bEndpointAddress = HID_IN_EP, + .bmAttributes = USB_EP_ATTR_INT, + .wMaxPacketSize = HID_IN_PACKET, + .bInterval = 0x40U + } +}; + +/* USB language ID Descriptor */ +const usb_desc_LANGID usbd_language_id_desc = +{ + .header = + { + .bLength = sizeof(usb_desc_LANGID), + .bDescriptorType = USB_DESCTYPE_STR + }, + .wLANGID = ENG_LANGID +}; + +/* USB manufacture string */ +static const usb_desc_str manufacturer_string = +{ + .header = + { + .bLength = USB_STRING_LEN(10U), + .bDescriptorType = USB_DESCTYPE_STR, + }, + .unicode_string = {'G', 'i', 'g', 'a', 'D', 'e', 'v', 'i', 'c', 'e'} +}; + +/* USB product string */ +static const usb_desc_str product_string = +{ + .header = + { + .bLength = USB_STRING_LEN(14U), + .bDescriptorType = USB_DESCTYPE_STR, + }, + .unicode_string = {'G', 'D', '3', '2', '-','U', 'S', 'B', '_', 'M', 'o', 'u', 's', 'e'} +}; + +/* USBD serial string */ +static usb_desc_str serial_string = +{ + .header = + { + .bLength = USB_STRING_LEN(12U), + .bDescriptorType = USB_DESCTYPE_STR, + } +}; + +void *const usbd_hid_strings[] = +{ + [STR_IDX_LANGID] = (uint8_t *)&usbd_language_id_desc, + [STR_IDX_MFC] = (uint8_t *)&manufacturer_string, + [STR_IDX_PRODUCT] = (uint8_t *)&product_string, + [STR_IDX_SERIAL] = (uint8_t *)&serial_string +}; + +usb_desc hid_desc = { + .dev_desc = (uint8_t *)&hid_dev_desc, + .config_desc = (uint8_t *)&hid_config_desc, + .strings = usbd_hid_strings +}; + +const uint8_t hid_report_desc[USB_HID_REPORT_DESC_LEN] = +{ + 0x05, 0x01, /* USAGE_PAGE (Generic Desktop) */ + 0x09, 0x02, /* USAGE (Mouse) */ + 0xa1, 0x01, /* COLLECTION (Application) */ + 0x09, 0x01, /* USAGE (Pointer) */ + + 0xa1, 0x00, /* COLLECTION (Physical) */ + 0x05, 0x09, /* USAGE_PAGE (Button) */ + 0x19, 0x01, /* USAGE_MINIMUM (1) */ + 0x29, 0x03, /* USAGE_MAXIMUM (3) */ + + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ + 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ + 0x95, 0x03, /* REPORT_COUNT (3) */ + 0x75, 0x01, /* REPORT_SIZE (1) */ + 0x81, 0x02, /* INPUT (Data,Var,Abs) */ + + 0x95, 0x01, /* REPORT_COUNT (1) */ + 0x75, 0x05, /* REPORT_SIZE (5) */ + 0x81, 0x01, /* INPUT (Cnst,Var,Abs) */ + + 0x05, 0x01, /* USAGE_PAGE (Generic Desktop) */ + 0x09, 0x30, /* USAGE (X) */ + 0x09, 0x31, /* USAGE (Y) */ + 0x09, 0x38, /* USAGE (Wheel) */ + + 0x15, 0x81, /* LOGICAL_MINIMUM (81) */ + 0x25, 0x7F, /* LOGICAL_MAXIMUM (7F) */ + 0x75, 0x08, /* REPORT_SIZE (8) */ + 0x95, 0x03, /* REPORT_COUNT (3) */ + 0x81, 0x06, /* INPUT (Data,Ary,Abs) */ + 0xc0, /* END_COLLECTION */ + + 0x09, 0x3c, /* USAGE (Motion Wakeup) */ + 0x05, 0xff, /* USAGE PAGE (vendor defined) */ + 0x09, 0x01, /* USAGE(01) */ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ + 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ + 0x75, 0x01, /* REPORT_SIZE (1) */ + 0x95, 0x02, /* REPORT_COUNT (2) */ + 0xb1, 0x22, /* Feature (var) */ + 0x75, 0x06, /* REPORT_SIZE (6) */ + 0x95, 0x01, /* REPORT_COUNT (1) */ + 0xb1, 0x01, /* Feature (cnst) */ + 0xc0 +}; + +/* local function prototypes ('static') */ +static uint8_t hid_init (usb_dev *udev, uint8_t config_index); +static uint8_t hid_deinit (usb_dev *udev, uint8_t config_index); +static uint8_t hid_req (usb_dev *udev, usb_req *req); +static uint8_t hid_data_in (usb_dev *udev, uint8_t ep_num); + +usb_class_core usbd_hid_cb = { + .command = NO_CMD, + .alter_set = 0U, + + .init = hid_init, + .deinit = hid_deinit, + .req_proc = hid_req, + .data_in = hid_data_in +}; + +/*! + \brief register HID interface operation functions + \param[in] udev: pointer to USB device instance + \param[in] hid_fop: HID operation functions structure + \param[out] none + \retval USB device operation status +*/ +uint8_t hid_itfop_register (usb_dev *udev, hid_fop_handler *hid_fop) +{ + if (NULL != hid_fop) { + udev->dev.user_data = (void *)hid_fop; + + return USBD_OK; + } + + return USBD_FAIL; +} + +/*! + \brief send keyboard report + \param[in] udev: pointer to USB device instance + \param[in] report: pointer to HID report + \param[in] len: data length + \param[out] none + \retval USB device operation status +*/ +uint8_t hid_report_send (usb_dev *udev, uint8_t *report, uint32_t len) +{ + standard_hid_handler *hid = (standard_hid_handler *)udev->dev.class_data[USBD_HID_INTERFACE]; + + hid->prev_transfer_complete = 0U; + + usbd_ep_send(udev, HID_IN_EP, report, len); + + return USBD_OK; +} + +/*! + \brief initialize the HID device + \param[in] udev: pointer to USB device instance + \param[in] config_index: configuration index + \param[out] none + \retval USB device operation status +*/ +static uint8_t hid_init (usb_dev *udev, uint8_t config_index) +{ + static standard_hid_handler hid_handler; + + memset((void *)&hid_handler, 0U, sizeof(standard_hid_handler)); + + /* Initialize the data Tx endpoint */ + usbd_ep_setup (udev, &(hid_config_desc.hid_epin)); + + hid_handler.prev_transfer_complete = 1U; + + udev->dev.class_data[USBD_HID_INTERFACE] = (void *)&hid_handler; + + if (NULL != udev->dev.user_data) { + ((hid_fop_handler *)udev->dev.user_data)->hid_itf_config(); + } + + return USBD_OK; +} + +/*! + \brief de-initialize the HID device + \param[in] udev: pointer to USB device instance + \param[in] config_index: configuration index + \param[out] none + \retval USB device operation status +*/ +static uint8_t hid_deinit (usb_dev *udev, uint8_t config_index) +{ + /* deinitialize HID endpoints */ + usbd_ep_clear(udev, HID_IN_EP); + + return USBD_OK; +} + +/*! + \brief handle the HID class-specific requests + \param[in] udev: pointer to USB device instance + \param[in] req: device class-specific request + \param[out] none + \retval USB device operation status +*/ +static uint8_t hid_req (usb_dev *udev, usb_req *req) +{ + usb_transc *transc = &udev->dev.transc_in[0]; + + standard_hid_handler *hid = (standard_hid_handler *)udev->dev.class_data[USBD_HID_INTERFACE]; + + switch (req->bRequest) { + case GET_REPORT: + /* no use for this driver */ + break; + + case GET_IDLE: + transc->xfer_buf = (uint8_t *)&hid->idle_state; + + transc->remain_len = 1U; + break; + + case GET_PROTOCOL: + transc->xfer_buf = (uint8_t *)&hid->protocol; + + transc->remain_len = 1U; + break; + + case SET_REPORT: + /* no use for this driver */ + break; + + case SET_IDLE: + hid->idle_state = (uint8_t)(req->wValue >> 8U); + break; + + case SET_PROTOCOL: + hid->protocol = (uint8_t)(req->wValue); + break; + + case USB_GET_DESCRIPTOR: + if (USB_DESCTYPE_REPORT == (req->wValue >> 8U)) { + transc->remain_len = USB_MIN(USB_HID_REPORT_DESC_LEN, req->wLength); + transc->xfer_buf = (uint8_t *)hid_report_desc; + + return REQ_SUPP; + } + break; + + default: + break; + } + + return USBD_OK; +} + +/*! + \brief handle data stage + \param[in] udev: pointer to USB device instance + \param[in] ep_num: endpoint identifier + \param[out] none + \retval USB device operation status +*/ +static uint8_t hid_data_in (usb_dev *udev, uint8_t ep_num) +{ + standard_hid_handler *hid = (standard_hid_handler *)udev->dev.class_data[USBD_HID_INTERFACE]; + + if (0U != hid->data[2]) { + hid->data[2] = 0x00U; + + usbd_ep_send(udev, HID_IN_EP, hid->data, HID_IN_PACKET); + } else { + hid->prev_transfer_complete = 1U; + } + + return USBD_OK; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/iap/Include/usb_iap_core.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/iap/Include/usb_iap_core.h new file mode 100644 index 0000000000..629265851a --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/iap/Include/usb_iap_core.h @@ -0,0 +1,84 @@ +/*! + \file usb_iap_core.h + \brief the header file of IAP driver + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USB_IAP_CORE_H +#define __USB_IAP_CORE_H + +#include "usbd_enum.h" +#include "usb_hid.h" + +#define USB_SERIAL_STRING_SIZE 0x06U +#define USB_DESC_LEN_IAP_REPORT 35U +#define USB_DESC_LEN_IAP_CONFIG_SET 41U + +/* special commands with download request */ +#define IAP_OPTION_BYTE1 0x01U +#define IAP_ERASE 0x02U +#define IAP_DNLOAD 0x03U +#define IAP_LEAVE 0x04U +#define IAP_GETBIN_ADDRESS 0x05U +#define IAP_OPTION_BYTE2 0x06U + +typedef struct +{ + uint8_t report_buf[IAP_OUT_PACKET + 1U]; + uint8_t option_byte[IAP_IN_PACKET]; + + /* state machine variables */ + uint8_t dev_status[IAP_IN_PACKET]; + uint8_t bin_addr[IAP_IN_PACKET]; + + uint8_t reportID; + uint8_t flag; + + uint32_t protocol; + uint32_t idlestate; + + uint16_t transfer_times; + uint16_t page_count; + uint16_t lps; /* last packet size */ + uint32_t file_length; + uint32_t base_address; +} usbd_iap_handler; + +typedef void (*app_func) (void); + +extern usb_desc iap_desc; +extern usb_class_core iap_class; + +/* function declarations */ +/* send iap report */ +uint8_t iap_report_send (usb_dev *udev, uint8_t *report, uint32_t len); + +#endif /* __USB_IAP_CORE_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/iap/Source/usb_iap_core.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/iap/Source/usb_iap_core.c new file mode 100644 index 0000000000..c3800dd9a8 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/iap/Source/usb_iap_core.c @@ -0,0 +1,562 @@ +/*! + \file usb_iap_core.c + \brief IAP driver + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 + \version 2020-12-11, V1.1.1, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "usb_iap_core.h" +#include "flash_operation.h" +#include + +#define USBD_VID 0x28E9U +#define USBD_PID 0x0228U + +/* Note:it should use the C99 standard when compiling the below codes */ +/* USB standard device descriptor */ +__ALIGN_BEGIN const usb_desc_dev iap_dev_desc __ALIGN_END = +{ + .header = + { + .bLength = USB_DEV_DESC_LEN, + .bDescriptorType = USB_DESCTYPE_DEV + }, + .bcdUSB = 0x0200U, + .bDeviceClass = 0x00U, + .bDeviceSubClass = 0x00U, + .bDeviceProtocol = 0x00U, + .bMaxPacketSize0 = USB_FS_EP0_MAX_LEN, + .idVendor = USBD_VID, + .idProduct = USBD_PID, + .bcdDevice = 0x0100U, + .iManufacturer = STR_IDX_MFC, + .iProduct = STR_IDX_PRODUCT, + .iSerialNumber = STR_IDX_SERIAL, + .bNumberConfigurations = USBD_CFG_MAX_NUM +}; + +__ALIGN_BEGIN const usb_hid_desc_config_set iap_config_desc __ALIGN_END = +{ + .config = + { + .header = + { + .bLength = sizeof(usb_desc_config), + .bDescriptorType = USB_DESCTYPE_CONFIG + }, + .wTotalLength = USB_DESC_LEN_IAP_CONFIG_SET, + .bNumInterfaces = 0x01U, + .bConfigurationValue = 0x01U, + .iConfiguration = 0x00U, + .bmAttributes = 0x80U, + .bMaxPower = 0x32U + }, + + .hid_itf = + { + .header = + { + .bLength = sizeof(usb_desc_itf), + .bDescriptorType = USB_DESCTYPE_ITF + }, + .bInterfaceNumber = 0x00U, + .bAlternateSetting = 0x00U, + .bNumEndpoints = 0x02U, + .bInterfaceClass = USB_HID_CLASS, + .bInterfaceSubClass = 0x00U, + .bInterfaceProtocol = 0x00U, + .iInterface = 0x00U + }, + + .hid_vendor = + { + .header = + { + .bLength = sizeof(usb_desc_hid), + .bDescriptorType = USB_DESCTYPE_HID + }, + .bcdHID = 0x0111U, + .bCountryCode = 0x00U, + .bNumDescriptors = 0x01U, + .bDescriptorType = USB_DESCTYPE_REPORT, + .wDescriptorLength = USB_DESC_LEN_IAP_REPORT, + }, + + .hid_epin = + { + .header = + { + .bLength = sizeof(usb_desc_ep), + .bDescriptorType = USB_DESCTYPE_EP + }, + .bEndpointAddress = IAP_IN_EP, + .bmAttributes = USB_EP_ATTR_INT, + .wMaxPacketSize = IAP_IN_PACKET, + .bInterval = 0x01U + }, + + .hid_epout = + { + .header = + { + .bLength = sizeof(usb_desc_ep), + .bDescriptorType = USB_DESCTYPE_EP + }, + .bEndpointAddress = IAP_OUT_EP, + .bmAttributes = USB_EP_ATTR_INT, + .wMaxPacketSize = IAP_OUT_PACKET, + .bInterval = 0x01U + } +}; + +/* USB language ID Descriptor */ +static __ALIGN_BEGIN const usb_desc_LANGID usbd_language_id_desc __ALIGN_END = +{ + .header = + { + .bLength = sizeof(usb_desc_LANGID), + .bDescriptorType = USB_DESCTYPE_STR + }, + .wLANGID = ENG_LANGID +}; + +/* USB manufacture string */ +static __ALIGN_BEGIN const usb_desc_str manufacturer_string __ALIGN_END = +{ + .header = + { + .bLength = USB_STRING_LEN(10U), + .bDescriptorType = USB_DESCTYPE_STR, + }, + .unicode_string = {'G', 'i', 'g', 'a', 'D', 'e', 'v', 'i', 'c', 'e'} +}; + +/* USB product string */ +static __ALIGN_BEGIN const usb_desc_str product_string __ALIGN_END = +{ + .header = + { + .bLength = USB_STRING_LEN(12U), + .bDescriptorType = USB_DESCTYPE_STR, + }, + .unicode_string = {'G', 'D', '3', '2', '-', 'U', 'S', 'B', '_', 'I', 'A', 'P'} +}; + +/* USBD serial string */ +static __ALIGN_BEGIN usb_desc_str serial_string __ALIGN_END = +{ + .header = + { + .bLength = USB_STRING_LEN(2U), + .bDescriptorType = USB_DESCTYPE_STR, + } +}; + +void *const usbd_iap_strings[] = +{ + [STR_IDX_LANGID] = (uint8_t *)&usbd_language_id_desc, + [STR_IDX_MFC] = (uint8_t *)&manufacturer_string, + [STR_IDX_PRODUCT] = (uint8_t *)&product_string, + [STR_IDX_SERIAL] = (uint8_t *)&serial_string +}; + +usb_desc iap_desc = { + .dev_desc = (uint8_t *)&iap_dev_desc, + .config_desc = (uint8_t *)&iap_config_desc, + .strings = usbd_iap_strings +}; + +/* local function prototypes ('static') */ +static uint8_t iap_init (usb_dev *udev, uint8_t config_index); +static uint8_t iap_deinit (usb_dev *udev, uint8_t config_index); +static uint8_t iap_req_handler (usb_dev *udev, usb_req *req); +static uint8_t iap_data_out (usb_dev *udev, uint8_t ep_num); + +/* IAP requests management functions */ +static void iap_req_erase (usb_dev *udev); +static void iap_req_dnload (usb_dev *udev); +static void iap_req_optionbyte(usb_dev *udev, uint8_t option_num); +static void iap_req_leave (usb_dev *udev); +static void iap_address_send (usb_dev *udev); + +usb_class_core iap_class = { + .init = iap_init, + .deinit = iap_deinit, + .req_proc = iap_req_handler, + .data_out = iap_data_out +}; + +/* USB custom HID device report descriptor */ +__ALIGN_BEGIN const uint8_t iap_report_desc[USB_DESC_LEN_IAP_REPORT] __ALIGN_END = +{ + 0x05, 0x01, /* USAGE_PAGE (Generic Desktop) */ + 0x09, 0x00, /* USAGE (Custom Device) */ + 0xa1, 0x01, /* COLLECTION (Application) */ + + /* IAP command and data */ + 0x85, 0x01, /* REPORT_ID (0x01) */ + 0x09, 0x01, /* USAGE (IAP command) */ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ + 0x25, 0xff, /* LOGICAL_MAXIMUM (255) */ + 0x75, 0x08, /* REPORT_SIZE (8) */ + 0x95, REPORT_OUT_COUNT, + 0x91, 0x82, /* OUTPUT (Data,Var,Abs,Vol) */ + + /* device status and option byte */ + 0x85, 0x02, /* REPORT_ID (0x02) */ + 0x09, 0x02, /* USAGE (Status and option byte) */ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ + 0x25, 0xff, /* LOGICAL_MAXIMUM (255) */ + 0x75, 0x08, /* REPORT_SIZE (8) */ + 0x95, REPORT_IN_COUNT, /* REPORT_COUNT (23) */ + 0x81, 0x82, /* INPUT (Data,Var,Abs,Vol) */ + + 0xc0 /* END_COLLECTION */ +}; + +/*! + \brief send iap report + \param[in] udev: pointer to USB device instance + \param[in] report: pointer to HID report + \param[in] len: data length + \param[out] none + \retval USB device operation status +*/ +uint8_t iap_report_send (usb_dev *udev, uint8_t *report, uint32_t len) +{ + usbd_ep_send (udev, IAP_IN_EP, report, len); + + return USBD_OK; +} + +/*! + \brief initialize the IAP device + \param[in] udev: pointer to USB device instance + \param[in] config_index: configuration index + \param[out] none + \retval USB device operation status +*/ +static uint8_t iap_init (usb_dev *udev, uint8_t config_index) +{ + static __ALIGN_BEGIN usbd_iap_handler iap_handler __ALIGN_END; + + /* initialize Tx endpoint */ + usbd_ep_setup(udev, &(iap_config_desc.hid_epin)); + + /* initialize Rx endpoint */ + usbd_ep_setup(udev, &(iap_config_desc.hid_epout)); + + /* unlock the internal flash */ + fmc_unlock(); + + memset((void *)&iap_handler, 0U, sizeof(usbd_iap_handler)); + + /* prepare receive data */ + usbd_ep_recev(udev, IAP_OUT_EP, iap_handler.report_buf, IAP_OUT_PACKET); + + iap_handler.base_address = APP_LOADED_ADDR; + + udev->dev.class_data[USBD_IAP_INTERFACE] = (void *)&iap_handler; + + return USBD_OK; +} + +/*! + \brief de-initialize the iap device + \param[in] udev: pointer to USB device instance + \param[in] config_index: configuration index + \param[out] none + \retval USB device operation status +*/ +static uint8_t iap_deinit (usb_dev *udev, uint8_t config_index) +{ + /* deinitialize iap endpoints */ + usbd_ep_clear (udev, IAP_IN_EP); + usbd_ep_clear (udev, IAP_OUT_EP); + + /* lock the internal flash */ + fmc_lock(); + + return USBD_OK; +} + +/*! + \brief handle the iap class-specific requests + \param[in] udev: pointer to USB device instance + \param[in] req: device class-specific request + \param[out] none + \retval USB device operation status +*/ +static uint8_t iap_req_handler (usb_dev *udev, usb_req *req) +{ + usb_transc *transc = &udev->dev.transc_in[0]; + + usbd_iap_handler *iap = (usbd_iap_handler *)udev->dev.class_data[USBD_IAP_INTERFACE]; + + switch (req->bRequest) { + case GET_REPORT: + /* no use for this driver */ + break; + + case GET_IDLE: + transc->xfer_buf = (uint8_t *)&iap->idlestate; + transc->remain_len = 1U; + break; + + case GET_PROTOCOL: + transc->xfer_buf = (uint8_t *)&iap->protocol; + transc->remain_len = 1U; + break; + + case SET_REPORT: + iap->reportID = (uint8_t)(req->wValue); + break; + + case SET_IDLE: + iap->idlestate = (uint8_t)(req->wValue >> 8U); + break; + + case SET_PROTOCOL: + iap->protocol = (uint8_t)(req->wValue); + break; + + case USB_GET_DESCRIPTOR: + if (USB_DESCTYPE_REPORT == (req->wValue >> 8U)) { + transc->remain_len = USB_MIN(USB_DESC_LEN_IAP_REPORT, req->wLength); + transc->xfer_buf = (uint8_t *)iap_report_desc; + } + break; + + default: + return USBD_FAIL; + } + + return USBD_OK; +} + +/*! + \brief handle data out stage + \param[in] udev: pointer to USB device instance + \param[in] ep_num: endpoint identifier + \param[out] none + \retval none +*/ +static uint8_t iap_data_out (usb_dev *udev ,uint8_t ep_num) +{ + usbd_iap_handler *iap = (usbd_iap_handler *)udev->dev.class_data[USBD_IAP_INTERFACE]; + + if (0x01U == iap->report_buf[0]) { + switch (iap->report_buf[1]) { + case IAP_DNLOAD: + iap_req_dnload(udev); + break; + + case IAP_ERASE: + iap_req_erase(udev); + break; + + case IAP_OPTION_BYTE1: + iap_req_optionbyte(udev, 0x01U); + break; + + case IAP_LEAVE: + iap_req_leave(udev); + break; + + case IAP_GETBIN_ADDRESS: + iap_address_send(udev); + break; + + case IAP_OPTION_BYTE2: + iap_req_optionbyte(udev, 0x02U); + break; + + default: + break; + } + } + + usbd_ep_recev(udev, IAP_OUT_EP, iap->report_buf, IAP_OUT_PACKET); + + return USBD_OK; +} + +/*! + \brief handle the IAP_DNLOAD request + \param[in] udev: pointer to usb device instance + \param[out] none + \retval none +*/ +static void iap_req_dnload(usb_dev *udev) +{ + usbd_iap_handler *iap = (usbd_iap_handler *)udev->dev.class_data[USBD_IAP_INTERFACE]; + + if (0U != iap->transfer_times) { + if (1U == iap->transfer_times) { + if (0U == iap->lps) { + iap_data_write(&iap->report_buf[2], iap->base_address, TRANSFER_SIZE); + } else { + iap_data_write(&iap->report_buf[2], iap->base_address, iap->file_length % TRANSFER_SIZE); + iap->lps = 0U; + } + + iap->dev_status[0] = 0x02U; + iap->dev_status[1] = 0x02U; + iap_report_send (udev, iap->dev_status, IAP_IN_PACKET); + } else { + iap_data_write(&iap->report_buf[2], iap->base_address, TRANSFER_SIZE); + + iap->base_address += TRANSFER_SIZE; + } + + iap->transfer_times--; + } +} + +/*! + \brief handle the IAP_ERASE request + \param[in] udev: pointer to usb device instance + \param[out] none + \retval none +*/ +static void iap_req_erase(usb_dev *udev) +{ + uint32_t addr = 0U; + + usbd_iap_handler *iap = (usbd_iap_handler *)udev->dev.class_data[USBD_IAP_INTERFACE]; + + /* get base address to erase */ + iap->base_address = iap->report_buf[2]; + iap->base_address |= iap->report_buf[3] << 8U; + iap->base_address |= iap->report_buf[4] << 16U; + iap->base_address |= iap->report_buf[5] << 24U; + + /* get file length */ + iap->file_length = iap->report_buf[7]; + iap->file_length |= iap->report_buf[8] << 8U; + iap->file_length |= iap->report_buf[9] << 16U; + iap->file_length |= iap->report_buf[10] << 24U; + + iap->lps = iap->file_length % TRANSFER_SIZE; + if (0U == iap->lps) { + iap->transfer_times = iap->file_length / TRANSFER_SIZE; + } else { + iap->transfer_times = iap->file_length / TRANSFER_SIZE + 1U; + } + + /* check if the address is in protected area */ + if (IS_PROTECTED_AREA(iap->base_address)) { + return; + } + + addr = iap->base_address; + + /* unlock the flash program erase controller */ + fmc_unlock(); + + flash_erase(addr, iap->file_length, iap->report_buf); + + fmc_lock(); + + iap->dev_status[0] = 0x02U; + iap->dev_status[1] = 0x01U; + + usbd_ep_send(udev, IAP_IN_EP, iap->dev_status, IAP_IN_PACKET); +} + +/*! + \brief handle the IAP_OPTION_BYTE request + \param[in] udev: pointer to USB device instance + \param[in] option_num: number of option byte + \param[out] none + \retval none +*/ +static void iap_req_optionbyte(usb_dev *udev, uint8_t option_num) +{ + uint8_t i = 0U; + uint32_t address = 0U; + + usbd_iap_handler *iap = (usbd_iap_handler *)udev->dev.class_data[USBD_IAP_INTERFACE]; + + iap->option_byte[0]= 0x02U; + + if (0x01U == option_num) { + address = OPT_BYTE_ADDR1; +#ifdef OPT_BYTE_ADDR2 + } else if (0x02U == option_num) { + address = OPT_BYTE_ADDR2; +#endif + } else { + return; + } + + for (i = 1U; i < 17U; i++) { + iap->option_byte[i] = *(uint8_t *)address; + address++; + } + + iap_report_send (udev, iap->option_byte, IAP_IN_PACKET); +} + +/*! + \brief handle the IAP_LEAVE request + \param[in] udev: pointer to usb device instance + \param[out] none + \retval none +*/ +static void iap_req_leave(usb_dev *udev) +{ + /* lock the internal flash */ + fmc_lock(); + + /* generate system reset to allow jumping to the user code */ + eclic_system_reset(); +} + +/*! + \brief handle the IAP_SEND_ADDRESS request + \param[in] udev: pointer to usb device instance + \param[out] none + \retval none +*/ +static void iap_address_send(usb_dev *udev) +{ + usbd_iap_handler *iap = (usbd_iap_handler *)udev->dev.class_data[USBD_IAP_INTERFACE]; + + iap->bin_addr[0] = 0x02U; + + iap->bin_addr[1] = (uint8_t)(APP_LOADED_ADDR); + iap->bin_addr[2] = (uint8_t)(APP_LOADED_ADDR >> 8U); + iap->bin_addr[3] = (uint8_t)(APP_LOADED_ADDR >> 16U); + iap->bin_addr[4] = (uint8_t)(APP_LOADED_ADDR >> 24U); + + iap_report_send (udev, iap->bin_addr, IAP_IN_PACKET); +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Include/usbd_msc_bbb.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Include/usbd_msc_bbb.h new file mode 100644 index 0000000000..ea9c0fdb79 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Include/usbd_msc_bbb.h @@ -0,0 +1,101 @@ +/*! + \file usbd_msc_bbb.h + \brief the header file of the usbd_msc_bot.c file + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USBD_MSC_BBB_H +#define __USBD_MSC_BBB_H + +#include "usbd_core.h" +#include "msc_bbb.h" +#include "usbd_msc_mem.h" +#include "usbd_msc_scsi.h" + +/* MSC BBB state */ +enum msc_bbb_state { + BBB_IDLE = 0U, /*!< idle state */ + BBB_DATA_OUT, /*!< data OUT state */ + BBB_DATA_IN, /*!< data IN state */ + BBB_LAST_DATA_IN, /*!< last data IN state */ + BBB_SEND_DATA /*!< send immediate data state */ +}; + +/* MSC BBB status */ +enum msc_bbb_status { + BBB_STATUS_NORMAL = 0U, /*!< normal status */ + BBB_STATUS_RECOVERY, /*!< recovery status*/ + BBB_STATUS_ERROR /*!< error status */ +}; + +typedef struct +{ + uint8_t bbb_data[MSC_MEDIA_PACKET_SIZE]; + + uint8_t max_lun; + uint8_t bbb_state; + uint8_t bbb_status; + + uint32_t bbb_datalen; + + msc_bbb_cbw bbb_cbw; + msc_bbb_csw bbb_csw; + + uint8_t scsi_sense_head; + uint8_t scsi_sense_tail; + + uint32_t scsi_blk_size[MEM_LUN_NUM]; + uint32_t scsi_blk_nbr[MEM_LUN_NUM]; + + uint32_t scsi_blk_addr; + uint32_t scsi_blk_len; + uint32_t scsi_disk_pop; + + msc_scsi_sense scsi_sense[SENSE_LIST_DEEPTH]; +} usbd_msc_handler; + +/* function declarations */ +/* initialize the bbb process */ +void msc_bbb_init (usb_core_driver *pudev); +/* reset the BBB machine */ +void msc_bbb_reset (usb_core_driver *pudev); +/* de-initialize the BBB machine */ +void msc_bbb_deinit (usb_core_driver *pudev); +/* handle BBB data IN stage */ +void msc_bbb_data_in (usb_core_driver *pudev, uint8_t ep_num); +/* handle BBB data OUT stage */ +void msc_bbb_data_out (usb_core_driver *pudev, uint8_t ep_num); +/* send the CSW(command status wrapper) */ +void msc_bbb_csw_send (usb_core_driver *pudev, uint8_t csw_status); +/* complete the clear feature request */ +void msc_bbb_clrfeature (usb_core_driver *pudev, uint8_t ep_num); + +#endif /* __USBD_MSC_BBB_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Include/usbd_msc_core.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Include/usbd_msc_core.h new file mode 100644 index 0000000000..fc8269c8b5 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Include/usbd_msc_core.h @@ -0,0 +1,59 @@ +/*! + \file usbd_msc_core.h + \brief the header file of USB MSC device class core functions + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USBD_MSC_CORE_H +#define __USBD_MSC_CORE_H + +#include "usbd_core.h" +#include "usb_msc.h" + +#define USB_MSC_CONFIG_DESC_SIZE 32U + +#define MSC_EPIN_SIZE MSC_DATA_PACKET_SIZE +#define MSC_EPOUT_SIZE MSC_DATA_PACKET_SIZE + +/* USB configuration descriptor structure */ +typedef struct +{ + usb_desc_config config; + + usb_desc_itf msc_itf; + usb_desc_ep msc_epin; + usb_desc_ep msc_epout; +} usb_desc_config_set; + +extern usb_desc msc_desc; +extern usb_class_core msc_class; + +#endif /* __USBD_MSC_CORE_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Include/usbd_msc_data.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Include/usbd_msc_data.h new file mode 100644 index 0000000000..3460d51312 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Include/usbd_msc_data.h @@ -0,0 +1,49 @@ +/*! + \file usbd_msc_data.h + \brief the header file of the usbd_msc_data.c file + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USBD_MSC_DATA_H +#define __USBD_MSC_DATA_H + +#include "usbd_conf.h" + +#define MODE_SENSE6_LENGTH 8U +#define MODE_SENSE10_LENGTH 8U +#define INQUIRY_PAGE00_LENGTH 96U +#define FORMAT_CAPACITIES_LENGTH 20U + +extern const uint8_t msc_page00_inquiry_data[]; +extern const uint8_t msc_mode_sense6_data[]; +extern const uint8_t msc_mode_sense10_data[]; + +#endif /* __USBD_MSC_DATA_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Include/usbd_msc_mem.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Include/usbd_msc_mem.h new file mode 100644 index 0000000000..e7a2e8ce5b --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Include/usbd_msc_mem.h @@ -0,0 +1,59 @@ +/*! + \file usbd_msc_mem.h + \brief header file for storage memory + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USBD_MSC_MEM_H +#define __USBD_MSC_MEM_H + +#include "usbd_conf.h" + +#define USBD_STD_INQUIRY_LENGTH 36U + +typedef struct +{ + int8_t (*mem_init) (uint8_t lun); + int8_t (*mem_ready) (uint8_t lun); + int8_t (*mem_protected) (uint8_t lun); + int8_t (*mem_read) (uint8_t lun, uint8_t *buf, uint32_t block_addr, uint16_t block_len); + int8_t (*mem_write) (uint8_t lun, uint8_t *buf, uint32_t block_addr, uint16_t block_len); + int8_t (*mem_maxlun) (void); + + uint8_t *mem_toc_data; + uint8_t *mem_inquiry_data[MEM_LUN_NUM]; + uint32_t mem_block_size[MEM_LUN_NUM]; + uint32_t mem_block_len[MEM_LUN_NUM]; +}usbd_mem_cb; + +extern usbd_mem_cb *usbd_mem_fops; + +#endif /* __USBD_MSC_MEM_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Include/usbd_msc_scsi.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Include/usbd_msc_scsi.h new file mode 100644 index 0000000000..7e519b1dba --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Include/usbd_msc_scsi.h @@ -0,0 +1,50 @@ +/*! + \file usbd_msc_scsi.h + \brief the header file of the usbd_msc_scsi.c file + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USBD_MSC_SCSI_H +#define __USBD_MSC_SCSI_H + +#include "usbd_msc_data.h" +#include "usbd_msc_bbb.h" +#include "msc_scsi.h" + +#define SENSE_LIST_DEEPTH 4U + +/* function declarations */ +/* process SCSI commands */ +int8_t scsi_process_cmd (usb_core_driver *pudev, uint8_t lun, uint8_t *cmd); +/* load the last error code in the error list */ +void scsi_sense_code (usb_core_driver *pudev, uint8_t lun, uint8_t skey, uint8_t asc); + +#endif /* __USBD_MSC_SCSI_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Source/usbd_msc_bbb.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Source/usbd_msc_bbb.c new file mode 100644 index 0000000000..7a002c5e81 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Source/usbd_msc_bbb.c @@ -0,0 +1,287 @@ +/*! + \file usbd_msc_bbb.c + \brief USB BBB(Bulk/Bulk/Bulk) protocol core functions + \note BBB means Bulk-only transport protocol for USB MSC + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "usbd_enum.h" +#include "usbd_msc_bbb.h" + +/* local function prototypes ('static') */ +static void msc_bbb_cbw_decode (usb_core_driver *pudev); +static void msc_bbb_data_send (usb_core_driver *pudev, uint8_t *pbuf, uint32_t Len); +static void msc_bbb_abort (usb_core_driver *pudev); + +/*! + \brief initialize the bbb process + \param[in] pudev: pointer to USB device instance + \param[out] none + \retval none +*/ +void msc_bbb_init (usb_core_driver *pudev) +{ + uint8_t lun_num; + + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + msc->bbb_state = BBB_IDLE; + msc->bbb_status = BBB_STATUS_NORMAL; + + /* init the storage logic unit */ + for(lun_num = 0U; lun_num < MEM_LUN_NUM; lun_num++) { + usbd_mem_fops->mem_init(lun_num); + } + + /* flush the Rx FIFO */ + usbd_fifo_flush (pudev, MSC_OUT_EP); + + /* flush the Tx FIFO */ + usbd_fifo_flush (pudev, MSC_IN_EP); + + /* prepare endpoint to receive the first BBB CBW */ + usbd_ep_recev (pudev, MSC_OUT_EP, (uint8_t *)&msc->bbb_cbw, BBB_CBW_LENGTH); +} + +/*! + \brief reset the BBB machine + \param[in] pudev: pointer to USB device instance + \param[out] none + \retval none +*/ +void msc_bbb_reset (usb_core_driver *pudev) +{ + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + msc->bbb_state = BBB_IDLE; + msc->bbb_status = BBB_STATUS_RECOVERY; + + /* prepare endpoint to receive the first BBB command */ + usbd_ep_recev (pudev, MSC_OUT_EP, (uint8_t *)&msc->bbb_cbw, BBB_CBW_LENGTH); +} + +/*! + \brief de-initialize the BBB machine + \param[in] pudev: pointer to USB device instance + \param[out] none + \retval none +*/ +void msc_bbb_deinit (usb_core_driver *pudev) +{ + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + msc->bbb_state = BBB_IDLE; +} + +/*! + \brief handle BBB data IN stage + \param[in] pudev: pointer to USB device instance + \param[in] ep_num: endpoint number + \param[out] none + \retval none +*/ +void msc_bbb_data_in (usb_core_driver *pudev, uint8_t ep_num) +{ + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + switch (msc->bbb_state) { + case BBB_DATA_IN: + if (scsi_process_cmd (pudev, msc->bbb_cbw.bCBWLUN, &msc->bbb_cbw.CBWCB[0]) < 0) { + msc_bbb_csw_send (pudev, CSW_CMD_FAILED); + } + break; + + case BBB_SEND_DATA: + case BBB_LAST_DATA_IN: + msc_bbb_csw_send (pudev, CSW_CMD_PASSED); + break; + + default: + break; + } +} + +/*! + \brief handle BBB data OUT stage + \param[in] pudev: pointer to USB device instance + \param[in] ep_num: endpoint number + \param[out] none + \retval none +*/ +void msc_bbb_data_out (usb_core_driver *pudev, uint8_t ep_num) +{ + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + switch (msc->bbb_state) { + case BBB_IDLE: + msc_bbb_cbw_decode (pudev); + break; + + case BBB_DATA_OUT: + if (scsi_process_cmd (pudev, msc->bbb_cbw.bCBWLUN, &msc->bbb_cbw.CBWCB[0]) < 0) { + msc_bbb_csw_send (pudev, CSW_CMD_FAILED); + } + break; + + default: + break; + } +} + +/*! + \brief send the CSW(command status wrapper) + \param[in] pudev: pointer to USB device instance + \param[in] csw_status: CSW status + \param[out] none + \retval none +*/ +void msc_bbb_csw_send (usb_core_driver *pudev, uint8_t csw_status) +{ + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + msc->bbb_csw.dCSWSignature = BBB_CSW_SIGNATURE; + msc->bbb_csw.bCSWStatus = csw_status; + msc->bbb_state = BBB_IDLE; + + usbd_ep_send (pudev, MSC_IN_EP, (uint8_t *)&msc->bbb_csw, BBB_CSW_LENGTH); + + /* prapare endpoint to receive next command */ + usbd_ep_recev (pudev, MSC_OUT_EP, (uint8_t *)&msc->bbb_cbw, BBB_CBW_LENGTH); +} + +/*! + \brief complete the clear feature request + \param[in] pudev: pointer to USB device instance + \param[in] ep_num: endpoint number + \param[out] none + \retval none +*/ +void msc_bbb_clrfeature (usb_core_driver *pudev, uint8_t ep_num) +{ + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + if (msc->bbb_status == BBB_STATUS_ERROR)/* bad CBW signature */ { + usbd_ep_stall(pudev, MSC_IN_EP); + + msc->bbb_status = BBB_STATUS_NORMAL; + } else if(((ep_num & 0x80U) == 0x80U) && (msc->bbb_status != BBB_STATUS_RECOVERY)) { + msc_bbb_csw_send (pudev, CSW_CMD_FAILED); + } else { + + } +} + +/*! + \brief decode the CBW command and set the BBB state machine accordingly + \param[in] pudev: pointer to USB device instance + \param[out] none + \retval none +*/ +static void msc_bbb_cbw_decode (usb_core_driver *pudev) +{ + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + msc->bbb_csw.dCSWTag = msc->bbb_cbw.dCBWTag; + msc->bbb_csw.dCSWDataResidue = msc->bbb_cbw.dCBWDataTransferLength; + + if ((BBB_CBW_LENGTH != usbd_rxcount_get (pudev, MSC_OUT_EP)) || + (BBB_CBW_SIGNATURE != msc->bbb_cbw.dCBWSignature)|| + (msc->bbb_cbw.bCBWLUN > 1U) || + (msc->bbb_cbw.bCBWCBLength < 1U) || + (msc->bbb_cbw.bCBWCBLength > 16U)) { + /* illegal command handler */ + scsi_sense_code (pudev, msc->bbb_cbw.bCBWLUN, ILLEGAL_REQUEST, INVALID_CDB); + + msc->bbb_status = BBB_STATUS_ERROR; + + msc_bbb_abort (pudev); + } else { + if (scsi_process_cmd (pudev, msc->bbb_cbw.bCBWLUN, &msc->bbb_cbw.CBWCB[0]) < 0) { + msc_bbb_abort (pudev); + } else if ((BBB_DATA_IN != msc->bbb_state) && + (BBB_DATA_OUT != msc->bbb_state) && + (BBB_LAST_DATA_IN != msc->bbb_state)) { /* burst xfer handled internally */ + if (msc->bbb_datalen > 0U) { + msc_bbb_data_send (pudev, msc->bbb_data, msc->bbb_datalen); + } else if (0U == msc->bbb_datalen) { + msc_bbb_csw_send (pudev, CSW_CMD_PASSED); + } else { + + } + } else { + + } + } +} + +/*! + \brief send the requested data + \param[in] pudev: pointer to USB device instance + \param[in] buf: pointer to data buffer + \param[in] len: data length + \param[out] none + \retval none +*/ +static void msc_bbb_data_send (usb_core_driver *pudev, uint8_t *buf, uint32_t len) +{ + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + len = USB_MIN (msc->bbb_cbw.dCBWDataTransferLength, len); + + msc->bbb_csw.dCSWDataResidue -= len; + msc->bbb_csw.bCSWStatus = CSW_CMD_PASSED; + msc->bbb_state = BBB_SEND_DATA; + + usbd_ep_send (pudev, MSC_IN_EP, buf, len); +} + +/*! + \brief abort the current transfer + \param[in] pudev: pointer to USB device instance + \param[out] none + \retval none +*/ +static void msc_bbb_abort (usb_core_driver *pudev) +{ + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + if ((0U == msc->bbb_cbw.bmCBWFlags) && + (0U != msc->bbb_cbw.dCBWDataTransferLength) && + (BBB_STATUS_NORMAL == msc->bbb_status)) { + usbd_ep_stall(pudev, MSC_OUT_EP); + } + + usbd_ep_stall(pudev, MSC_IN_EP); + + if (msc->bbb_status == BBB_STATUS_ERROR) { + usbd_ep_recev (pudev, MSC_OUT_EP, (uint8_t *)&msc->bbb_cbw, BBB_CBW_LENGTH); + } +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Source/usbd_msc_core.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Source/usbd_msc_core.c new file mode 100644 index 0000000000..c6f1bfc77d --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Source/usbd_msc_core.c @@ -0,0 +1,319 @@ +/*! + \file usbd_msc_core.c + \brief USB MSC device class core functions + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 + \version 2020-12-11, V1.1.1, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "usbd_enum.h" +#include "usbd_msc_bbb.h" +#include "usbd_msc_core.h" +#include + +#define USBD_VID 0x28E9U +#define USBD_PID 0x028FU + +/* local function prototypes ('static') */ +static uint8_t msc_core_init (usb_dev *pudev, uint8_t config_index); +static uint8_t msc_core_deinit (usb_dev *pudev, uint8_t config_index); +static uint8_t msc_core_req (usb_dev *pudev, usb_req *req); +static uint8_t msc_core_in (usb_dev *pudev, uint8_t ep_num); +static uint8_t msc_core_out (usb_dev *pudev, uint8_t ep_num); + +usb_class_core msc_class = +{ + .init = msc_core_init, + .deinit = msc_core_deinit, + + .req_proc = msc_core_req, + + .data_in = msc_core_in, + .data_out = msc_core_out +}; + +/* note: it should use the C99 standard when compiling the below codes */ +/* USB standard device descriptor */ +__ALIGN_BEGIN const usb_desc_dev msc_dev_desc __ALIGN_END = +{ + .header = { + .bLength = USB_DEV_DESC_LEN, + .bDescriptorType = USB_DESCTYPE_DEV + }, + .bcdUSB = 0x0200U, + .bDeviceClass = 0x00U, + .bDeviceSubClass = 0x00U, + .bDeviceProtocol = 0x00U, + .bMaxPacketSize0 = USB_FS_EP0_MAX_LEN, + .idVendor = USBD_VID, + .idProduct = USBD_PID, + .bcdDevice = 0x0100U, + .iManufacturer = STR_IDX_MFC, + .iProduct = STR_IDX_PRODUCT, + .iSerialNumber = STR_IDX_SERIAL, + .bNumberConfigurations = USBD_CFG_MAX_NUM +}; + +/* USB device configuration descriptor */ +__ALIGN_BEGIN const usb_desc_config_set msc_config_desc __ALIGN_END = +{ + .config = + { + .header = { + .bLength = sizeof(usb_desc_config), + .bDescriptorType = USB_DESCTYPE_CONFIG + }, + .wTotalLength = USB_MSC_CONFIG_DESC_SIZE, + .bNumInterfaces = 0x01U, + .bConfigurationValue = 0x01U, + .iConfiguration = 0x00U, + .bmAttributes = 0xC0U, + .bMaxPower = 0x32U + }, + + .msc_itf = + { + .header = { + .bLength = sizeof(usb_desc_itf), + .bDescriptorType = USB_DESCTYPE_ITF + }, + .bInterfaceNumber = 0x00U, + .bAlternateSetting = 0x00U, + .bNumEndpoints = 0x02U, + .bInterfaceClass = USB_CLASS_MSC, + .bInterfaceSubClass = USB_MSC_SUBCLASS_SCSI, + .bInterfaceProtocol = USB_MSC_PROTOCOL_BBB, + .iInterface = 0x00U + }, + + .msc_epin = + { + .header = { + .bLength = sizeof(usb_desc_ep), + .bDescriptorType = USB_DESCTYPE_EP + }, + .bEndpointAddress = MSC_IN_EP, + .bmAttributes = USB_EP_ATTR_BULK, + .wMaxPacketSize = MSC_EPIN_SIZE, + .bInterval = 0x00U + }, + + .msc_epout = + { + .header = { + .bLength = sizeof(usb_desc_ep), + .bDescriptorType = USB_DESCTYPE_EP + }, + .bEndpointAddress = MSC_OUT_EP, + .bmAttributes = USB_EP_ATTR_BULK, + .wMaxPacketSize = MSC_EPOUT_SIZE, + .bInterval = 0x00U + } +}; + +/* USB language ID descriptor */ +__ALIGN_BEGIN const usb_desc_LANGID usbd_language_id_desc __ALIGN_END = +{ + .header = + { + .bLength = sizeof(usb_desc_LANGID), + .bDescriptorType = USB_DESCTYPE_STR + }, + .wLANGID = ENG_LANGID +}; + +/* USB manufacture string */ +static __ALIGN_BEGIN const usb_desc_str manufacturer_string __ALIGN_END = +{ + .header = + { + .bLength = USB_STRING_LEN(10U), + .bDescriptorType = USB_DESCTYPE_STR, + }, + .unicode_string = {'G', 'i', 'g', 'a', 'D', 'e', 'v', 'i', 'c', 'e'} +}; + +/* USB product string */ +static __ALIGN_BEGIN const usb_desc_str product_string __ALIGN_END = +{ + .header = + { + .bLength = USB_STRING_LEN(12U), + .bDescriptorType = USB_DESCTYPE_STR, + }, + .unicode_string = {'G', 'D', '3', '2', '-', 'U', 'S', 'B', '_', 'M', 'S', 'C'} +}; + +/* USBD serial string */ +static __ALIGN_BEGIN usb_desc_str serial_string __ALIGN_END = +{ + .header = + { + .bLength = USB_STRING_LEN(12U), + .bDescriptorType = USB_DESCTYPE_STR, + } +}; + +/* USB string descriptor */ +void *const usbd_msc_strings[] = +{ + [STR_IDX_LANGID] = (uint8_t *)&usbd_language_id_desc, + [STR_IDX_MFC] = (uint8_t *)&manufacturer_string, + [STR_IDX_PRODUCT] = (uint8_t *)&product_string, + [STR_IDX_SERIAL] = (uint8_t *)&serial_string +}; + +usb_desc msc_desc = { + .dev_desc = (uint8_t *)&msc_dev_desc, + .config_desc = (uint8_t *)&msc_config_desc, + .strings = usbd_msc_strings +}; + +static __ALIGN_BEGIN uint8_t usbd_msc_maxlun = 0U __ALIGN_END; + +/*! + \brief initialize the MSC device + \param[in] pudev: pointer to USB device instance + \param[in] config_index: configuration index + \param[out] none + \retval USB device operation status +*/ +static uint8_t msc_core_init (usb_dev *pudev, uint8_t config_index) +{ + static __ALIGN_BEGIN usbd_msc_handler msc_handler __ALIGN_END; + + memset((void *)&msc_handler, 0U, sizeof(usbd_msc_handler)); + + pudev->dev.class_data[USBD_MSC_INTERFACE] = (void *)&msc_handler; + + /* configure MSC Tx endpoint */ + usbd_ep_setup (pudev, &(msc_config_desc.msc_epin)); + + /* configure MSC Rx endpoint */ + usbd_ep_setup (pudev, &(msc_config_desc.msc_epout)); + + /* init the BBB layer */ + msc_bbb_init(pudev); + + return USBD_OK; +} + +/*! + \brief de-initialize the MSC device + \param[in] pudev: pointer to USB device instance + \param[in] config_index: configuration index + \param[out] none + \retval USB device operation status +*/ +static uint8_t msc_core_deinit (usb_dev *pudev, uint8_t config_index) +{ + /* clear MSC endpoints */ + usbd_ep_clear (pudev, MSC_IN_EP); + usbd_ep_clear (pudev, MSC_OUT_EP); + + /* un-init the BBB layer */ + msc_bbb_deinit(pudev); + + return USBD_OK; +} + +/*! + \brief handle the MSC class-specific and standard requests + \param[in] pudev: pointer to USB device instance + \param[in] req: device class-specific request + \param[out] none + \retval USB device operation status +*/ +static uint8_t msc_core_req (usb_dev *pudev, usb_req *req) +{ + usb_transc *transc = &pudev->dev.transc_in[0]; + + switch (req->bRequest) { + case BBB_GET_MAX_LUN : + if((0U == req->wValue) && + (1U == req->wLength) && + (0x80U == (req->bmRequestType & 0x80U))) { + usbd_msc_maxlun = (uint8_t)usbd_mem_fops->mem_maxlun(); + + transc->xfer_buf = &usbd_msc_maxlun; + transc->remain_len = 1U; + } else { + return USBD_FAIL; + } + break; + + case BBB_RESET : + if((0U == req->wValue) && + (0U == req->wLength) && + (0x80U != (req->bmRequestType & 0x80U))) { + msc_bbb_reset(pudev); + } else { + return USBD_FAIL; + } + break; + + case USB_CLEAR_FEATURE: + msc_bbb_clrfeature (pudev, (uint8_t)req->wIndex); + break; + + default: + return USBD_FAIL; + } + + return USBD_OK; +} + +/*! + \brief handle data in stage + \param[in] pudev: pointer to USB device instance + \param[in] ep_num: the endpoint number + \param[out] none + \retval none +*/ +static uint8_t msc_core_in (usb_dev *pudev, uint8_t ep_num) +{ + msc_bbb_data_in(pudev, ep_num); + + return USBD_OK; +} + +/*! + \brief handle data out stage + \param[in] pudev: pointer to USB device instance + \param[in] ep_num: the endpoint number + \param[out] none + \retval none +*/ +static uint8_t msc_core_out (usb_dev *pudev, uint8_t ep_num) +{ + msc_bbb_data_out (pudev, ep_num); + + return USBD_OK; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Source/usbd_msc_data.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Source/usbd_msc_data.c new file mode 100644 index 0000000000..9d7646bfee --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Source/usbd_msc_data.c @@ -0,0 +1,73 @@ +/*! + \file usbd_msc_data.c + \brief USB MSC vital inquiry pages and sense data + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "usbd_msc_data.h" + +/* USB mass storage page 0 inquiry data */ +const uint8_t msc_page00_inquiry_data[] = +{ + 0x00U, + 0x00U, + 0x00U, + 0x00U, + (INQUIRY_PAGE00_LENGTH - 4U), + 0x80U, + 0x83U, +}; + +/* USB mass storage sense 6 data */ +const uint8_t msc_mode_sense6_data[] = +{ + 0x00U, + 0x00U, + 0x00U, + 0x00U, + 0x00U, + 0x00U, + 0x00U, + 0x00U +}; + +/* USB mass storage sense 10 data */ +const uint8_t msc_mode_sense10_data[] = +{ + 0x00U, + 0x06U, + 0x00U, + 0x00U, + 0x00U, + 0x00U, + 0x00U, + 0x00U +}; diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Source/usbd_msc_scsi.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Source/usbd_msc_scsi.c new file mode 100644 index 0000000000..c699691402 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/msc/Source/usbd_msc_scsi.c @@ -0,0 +1,686 @@ +/*! + \file usbd_msc_scsi.c + \brief USB SCSI layer functions + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "usbd_enum.h" +#include "usbd_msc_bbb.h" +#include "usbd_msc_scsi.h" +#include "usbd_msc_data.h" + +/* local function prototypes ('static') */ +static int8_t scsi_test_unit_ready (usb_core_driver *pudev, uint8_t lun, uint8_t *params); +static int8_t scsi_inquiry (usb_core_driver *pudev, uint8_t lun, uint8_t *params); +static int8_t scsi_read_format_capacity (usb_core_driver *pudev, uint8_t lun, uint8_t *params); +static int8_t scsi_read_capacity10 (usb_core_driver *pudev, uint8_t lun, uint8_t *params); +static int8_t scsi_request_sense (usb_core_driver *pudev, uint8_t lun, uint8_t *params); +static int8_t scsi_mode_sense6 (usb_core_driver *pudev, uint8_t lun, uint8_t *params); +static int8_t scsi_toc_cmd_read (usb_core_driver *pudev, uint8_t lun, uint8_t *params); +static int8_t scsi_mode_sense10 (usb_core_driver *pudev, uint8_t lun, uint8_t *params); +static int8_t scsi_write10 (usb_core_driver *pudev, uint8_t lun, uint8_t *params); +static int8_t scsi_read10 (usb_core_driver *pudev, uint8_t lun, uint8_t *params); +static int8_t scsi_verify10 (usb_core_driver *pudev, uint8_t lun, uint8_t *params); +static int8_t scsi_process_read (usb_core_driver *pudev, uint8_t lun); +static int8_t scsi_process_write (usb_core_driver *pudev, uint8_t lun); + +static inline int8_t scsi_check_address_range (usb_core_driver *pudev, uint8_t lun, uint32_t blk_offset, uint16_t blk_nbr); +static inline int8_t scsi_format_cmd (usb_core_driver *pudev, uint8_t lun); +static inline int8_t scsi_start_stop_unit (usb_core_driver *pudev, uint8_t lun, uint8_t *params); +static inline int8_t scsi_allow_medium_removal (usb_core_driver *pudev, uint8_t lun, uint8_t *params); + +/*! + \brief process SCSI commands + \param[in] pudev: pointer to USB device instance + \param[in] lun: logical unit number + \param[in] params: command parameters + \param[out] none + \retval status +*/ +int8_t scsi_process_cmd(usb_core_driver *pudev, uint8_t lun, uint8_t *params) +{ + switch (params[0]) { + case SCSI_TEST_UNIT_READY: + return scsi_test_unit_ready (pudev, lun, params); + + case SCSI_REQUEST_SENSE: + return scsi_request_sense (pudev, lun, params); + + case SCSI_INQUIRY: + return scsi_inquiry (pudev, lun, params); + + case SCSI_START_STOP_UNIT: + return scsi_start_stop_unit (pudev, lun, params); + + case SCSI_ALLOW_MEDIUM_REMOVAL: + return scsi_allow_medium_removal (pudev, lun, params); + + case SCSI_MODE_SENSE6: + return scsi_mode_sense6 (pudev, lun, params); + + case SCSI_MODE_SENSE10: + return scsi_mode_sense10 (pudev, lun, params); + + case SCSI_READ_FORMAT_CAPACITIES: + return scsi_read_format_capacity (pudev, lun, params); + + case SCSI_READ_CAPACITY10: + return scsi_read_capacity10 (pudev, lun, params); + + case SCSI_READ10: + return scsi_read10 (pudev, lun, params); + + case SCSI_WRITE10: + return scsi_write10 (pudev, lun, params); + + case SCSI_VERIFY10: + return scsi_verify10 (pudev, lun, params); + + case SCSI_FORMAT_UNIT: + return scsi_format_cmd (pudev, lun); + + case SCSI_READ_TOC_DATA: + return scsi_toc_cmd_read (pudev, lun, params); + + default: + scsi_sense_code (pudev, lun, ILLEGAL_REQUEST, INVALID_CDB); + return -1; + } +} + +/*! + \brief load the last error code in the error list + \param[in] pudev: pointer to USB device instance + \param[in] lun: logical unit number + \param[in] skey: sense key + \param[in] asc: additional aense key + \param[out] none + \retval none +*/ +void scsi_sense_code (usb_core_driver *pudev, uint8_t lun, uint8_t skey, uint8_t asc) +{ + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + msc->scsi_sense[msc->scsi_sense_tail].SenseKey = skey; + msc->scsi_sense[msc->scsi_sense_tail].ASC = asc << 8U; + msc->scsi_sense_tail++; + + if (SENSE_LIST_DEEPTH == msc->scsi_sense_tail) { + msc->scsi_sense_tail = 0U; + } +} + +/*! + \brief process SCSI Test Unit Ready command + \param[in] pudev: pointer to USB device instance + \param[in] lun: logical unit number + \param[in] params: command parameters + \param[out] none + \retval status +*/ +static int8_t scsi_test_unit_ready (usb_core_driver *pudev, uint8_t lun, uint8_t *params) +{ + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + /* case 9 : Hi > D0 */ + if (0U != msc->bbb_cbw.dCBWDataTransferLength) { + scsi_sense_code (pudev, msc->bbb_cbw.bCBWLUN, ILLEGAL_REQUEST, INVALID_CDB); + + return -1; + } + + if (0 != usbd_mem_fops->mem_ready(lun)) { + scsi_sense_code(pudev, lun, NOT_READY, MEDIUM_NOT_PRESENT); + + return -1; + } + + if (1U == msc->scsi_disk_pop) { + usbd_disconnect (pudev); + } + + msc->bbb_datalen = 0U; + + return 0; +} + +/*! + \brief process Inquiry command + \param[in] pudev: pointer to USB device instance + \param[in] lun: logical unit number + \param[in] params: command parameters + \param[out] none + \retval status +*/ +static int8_t scsi_inquiry (usb_core_driver *pudev, uint8_t lun, uint8_t *params) +{ + uint8_t *page = NULL; + uint16_t len = 0U; + + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + if (params[1] & 0x01U) { + /* Evpd is set */ + page = (uint8_t *)msc_page00_inquiry_data; + + len = INQUIRY_PAGE00_LENGTH; + } else { + page = (uint8_t *)usbd_mem_fops->mem_inquiry_data[lun]; + + len = (uint16_t)(page[4] + 5U); + + if (params[4] <= len) { + len = params[4]; + } + } + + msc->bbb_datalen = len; + + while (len) { + len--; + msc->bbb_data[len] = page[len]; + } + + return 0; +} + +/*! + \brief process Read Capacity 10 command + \param[in] pudev: pointer to USB device instance + \param[in] lun: logical unit number + \param[in] params: command parameters + \param[out] none + \retval status +*/ +static int8_t scsi_read_capacity10 (usb_core_driver *pudev, uint8_t lun, uint8_t *params) +{ + uint32_t blk_num = usbd_mem_fops->mem_block_len[lun] - 1U; + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + msc->scsi_blk_nbr[lun] = usbd_mem_fops->mem_block_len[lun]; + msc->scsi_blk_size[lun] = usbd_mem_fops->mem_block_size[lun]; + + msc->bbb_data[0] = (uint8_t)(blk_num >> 24U); + msc->bbb_data[1] = (uint8_t)(blk_num >> 16U); + msc->bbb_data[2] = (uint8_t)(blk_num >> 8U); + msc->bbb_data[3] = (uint8_t)(blk_num); + + msc->bbb_data[4] = (uint8_t)(msc->scsi_blk_size[lun] >> 24U); + msc->bbb_data[5] = (uint8_t)(msc->scsi_blk_size[lun] >> 16U); + msc->bbb_data[6] = (uint8_t)(msc->scsi_blk_size[lun] >> 8U); + msc->bbb_data[7] = (uint8_t)(msc->scsi_blk_size[lun]); + + msc->bbb_datalen = 8U; + + return 0; +} + +/*! + \brief process Read Format Capacity command + \param[in] pudev: pointer to USB device instance + \param[in] lun: logical unit number + \param[in] params: command parameters + \param[out] none + \retval status +*/ +static int8_t scsi_read_format_capacity (usb_core_driver *pudev, uint8_t lun, uint8_t *params) +{ + uint16_t i = 0U; + uint32_t blk_size = usbd_mem_fops->mem_block_size[lun]; + uint32_t blk_num = usbd_mem_fops->mem_block_len[lun]; + uint32_t blk_nbr = blk_num - 1U; + + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + for (i = 0U; i < 12U; i++) { + msc->bbb_data[i] = 0U; + } + + msc->bbb_data[3] = 0x08U; + msc->bbb_data[4] = (uint8_t)(blk_nbr >> 24U); + msc->bbb_data[5] = (uint8_t)(blk_nbr >> 16U); + msc->bbb_data[6] = (uint8_t)(blk_nbr >> 8U); + msc->bbb_data[7] = (uint8_t)(blk_nbr); + + msc->bbb_data[8] = 0x02U; + msc->bbb_data[9] = (uint8_t)(blk_size >> 16U); + msc->bbb_data[10] = (uint8_t)(blk_size >> 8U); + msc->bbb_data[11] = (uint8_t)(blk_size); + + msc->bbb_datalen = 12U; + + return 0; +} + +/*! + \brief process Mode Sense6 command + \param[in] pudev: pointer to USB device instance + \param[in] lun: logical unit number + \param[in] params: command parameters + \param[out] none + \retval status +*/ +static int8_t scsi_mode_sense6 (usb_core_driver *pudev, uint8_t lun, uint8_t *params) +{ + uint16_t len = 8U; + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + msc->bbb_datalen = len; + + while (len) { + len--; + msc->bbb_data[len] = msc_mode_sense6_data[len]; + } + + return 0; +} + +/*! + \brief process Mode Sense10 command + \param[in] pudev: pointer to USB device instance + \param[in] lun: logical unit number + \param[in] params: command parameters + \param[out] none + \retval status +*/ +static int8_t scsi_mode_sense10 (usb_core_driver *pudev, uint8_t lun, uint8_t *params) +{ + uint16_t len = 8U; + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + msc->bbb_datalen = len; + + while (len) { + len--; + msc->bbb_data[len] = msc_mode_sense10_data[len]; + } + + return 0; +} + +/*! + \brief process Request Sense command + \param[in] pudev: pointer to USB device instance + \param[in] lun: logical unit number + \param[in] params: command parameters + \param[out] none + \retval status +*/ +static int8_t scsi_request_sense (usb_core_driver *pudev, uint8_t lun, uint8_t *params) +{ + uint8_t i = 0U; + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + for (i = 0U; i < REQUEST_SENSE_DATA_LEN; i++) { + msc->bbb_data[i] = 0U; + } + + msc->bbb_data[0] = 0x70U; + msc->bbb_data[7] = REQUEST_SENSE_DATA_LEN - 6U; + + if ((msc->scsi_sense_head != msc->scsi_sense_tail)) { + msc->bbb_data[2] = msc->scsi_sense[msc->scsi_sense_head].SenseKey; + msc->bbb_data[12] = msc->scsi_sense[msc->scsi_sense_head].ASCQ; + msc->bbb_data[13] = msc->scsi_sense[msc->scsi_sense_head].ASC; + msc->scsi_sense_head++; + + if (msc->scsi_sense_head == SENSE_LIST_DEEPTH) { + msc->scsi_sense_head = 0U; + } + } + + msc->bbb_datalen = USB_MIN(REQUEST_SENSE_DATA_LEN, params[4]); + + return 0; +} + +/*! + \brief process Start Stop Unit command + \param[in] pudev: pointer to USB device instance + \param[in] lun: logical unit number + \param[in] params: command parameters + \param[out] none + \retval status +*/ +static inline int8_t scsi_start_stop_unit (usb_core_driver *pudev, uint8_t lun, uint8_t *params) +{ + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + msc->bbb_datalen = 0U; + msc->scsi_disk_pop = 1U; + + return 0; +} + +/*! + \brief process Allow Medium Removal command + \param[in] pudev: pointer to USB device instance + \param[in] lun: logical unit number + \param[in] params: command parameters + \param[out] none + \retval status +*/ +static inline int8_t scsi_allow_medium_removal (usb_core_driver *pudev, uint8_t lun, uint8_t *params) +{ + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + msc->bbb_datalen = 0U; + + return 0; +} + +/*! + \brief process Read10 command + \param[in] pudev: pointer to USB device instance + \param[in] lun: logical unit number + \param[in] params: command parameters + \param[out] none + \retval status +*/ +static int8_t scsi_read10 (usb_core_driver *pudev, uint8_t lun, uint8_t *params) +{ + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + if (msc->bbb_state == BBB_IDLE) { + /* direction is from device to host */ + if (0x80U != (msc->bbb_cbw.bmCBWFlags & 0x80U)) { + scsi_sense_code (pudev, msc->bbb_cbw.bCBWLUN, ILLEGAL_REQUEST, INVALID_CDB); + + return -1; + } + + if (0 != usbd_mem_fops->mem_ready(lun)) { + scsi_sense_code (pudev, lun, NOT_READY, MEDIUM_NOT_PRESENT); + + return -1; + } + + msc->scsi_blk_addr = (params[2] << 24U) | (params[3] << 16U) | \ + (params[4] << 8U) | params[5]; + + msc->scsi_blk_len = (params[7] << 8U) | params[8]; + + if (scsi_check_address_range (pudev, lun, msc->scsi_blk_addr, (uint16_t)msc->scsi_blk_len) < 0) { + return -1; /* error */ + } + + msc->bbb_state = BBB_DATA_IN; + + msc->scsi_blk_addr *= msc->scsi_blk_size[lun]; + msc->scsi_blk_len *= msc->scsi_blk_size[lun]; + + /* cases 4,5 : Hi <> Dn */ + if (msc->bbb_cbw.dCBWDataTransferLength != msc->scsi_blk_len) { + scsi_sense_code (pudev, msc->bbb_cbw.bCBWLUN, ILLEGAL_REQUEST, INVALID_CDB); + + return -1; + } + } + + msc->bbb_datalen = MSC_MEDIA_PACKET_SIZE; + + return scsi_process_read (pudev, lun); +} + +/*! + \brief process Write10 command + \param[in] pudev: pointer to USB device instance + \param[in] lun: logical unit number + \param[in] params: command parameters + \param[out] none + \retval status +*/ +static int8_t scsi_write10 (usb_core_driver *pudev, uint8_t lun, uint8_t *params) +{ + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + if (BBB_IDLE == msc->bbb_state) { + /* case 8 : Hi <> Do */ + if (0x80U == (msc->bbb_cbw.bmCBWFlags & 0x80U)) { + scsi_sense_code (pudev, msc->bbb_cbw.bCBWLUN, ILLEGAL_REQUEST, INVALID_CDB); + + return -1; + } + + /* check whether media is ready */ + if (0 != usbd_mem_fops->mem_ready(lun)) { + scsi_sense_code (pudev, lun, NOT_READY, MEDIUM_NOT_PRESENT); + + return -1; + } + + /* check if media is write-protected */ + if (0 != usbd_mem_fops->mem_protected(lun)) { + scsi_sense_code (pudev, lun, NOT_READY, WRITE_PROTECTED); + + return -1; + } + + msc->scsi_blk_addr = (params[2] << 24U) | (params[3] << 16U) | \ + (params[4] << 8U) | params[5]; + + msc->scsi_blk_len = (params[7] << 8U) | params[8]; + + /* check if LBA address is in the right range */ + if (scsi_check_address_range (pudev, lun, msc->scsi_blk_addr, (uint16_t)msc->scsi_blk_len) < 0) { + return -1; /* error */ + } + + msc->scsi_blk_addr *= msc->scsi_blk_size[lun]; + msc->scsi_blk_len *= msc->scsi_blk_size[lun]; + + /* cases 3,11,13 : Hn,Ho <> D0 */ + if (msc->bbb_cbw.dCBWDataTransferLength != msc->scsi_blk_len) { + scsi_sense_code (pudev, msc->bbb_cbw.bCBWLUN, ILLEGAL_REQUEST, INVALID_CDB); + + return -1; + } + + /* prepare endpoint to receive first data packet */ + msc->bbb_state = BBB_DATA_OUT; + + usbd_ep_recev (pudev, + MSC_OUT_EP, + msc->bbb_data, + USB_MIN (msc->scsi_blk_len, MSC_MEDIA_PACKET_SIZE)); + } else { /* write process ongoing */ + return scsi_process_write (pudev, lun); + } + + return 0; +} + +/*! + \brief process Verify10 command + \param[in] pudev: pointer to USB device instance + \param[in] lun: logical unit number + \param[in] params: command parameters + \param[out] none + \retval status +*/ +static int8_t scsi_verify10 (usb_core_driver *pudev, uint8_t lun, uint8_t *params) +{ + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + if (0x02U == (params[1] & 0x02U)) { + scsi_sense_code (pudev, lun, ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND); + + return -1; /* error, verify mode not supported*/ + } + + if (scsi_check_address_range (pudev, lun, msc->scsi_blk_addr, (uint16_t)msc->scsi_blk_len) < 0) { + return -1; /* error */ + } + + msc->bbb_datalen = 0U; + + return 0; +} + +/*! + \brief check address range + \param[in] pudev: pointer to USB device instance + \param[in] lun: logical unit number + \param[in] blk_offset: block offset + \param[in] blk_nbr: number of block to be processed + \param[out] none + \retval status +*/ +static inline int8_t scsi_check_address_range (usb_core_driver *pudev, uint8_t lun, uint32_t blk_offset, uint16_t blk_nbr) +{ + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + if ((blk_offset + blk_nbr) > msc->scsi_blk_nbr[lun]) { + scsi_sense_code (pudev, lun, ILLEGAL_REQUEST, ADDRESS_OUT_OF_RANGE); + + return -1; + } + + return 0; +} + +/*! + \brief handle read process + \param[in] pudev: pointer to USB device instance + \param[in] lun: logical unit number + \param[out] none + \retval status +*/ +static int8_t scsi_process_read (usb_core_driver *pudev, uint8_t lun) +{ + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + uint32_t len = USB_MIN(msc->scsi_blk_len, MSC_MEDIA_PACKET_SIZE); + + if (usbd_mem_fops->mem_read(lun, + msc->bbb_data, + msc->scsi_blk_addr, + (uint16_t)(len / msc->scsi_blk_size[lun])) < 0) { + scsi_sense_code(pudev, lun, HARDWARE_ERROR, UNRECOVERED_READ_ERROR); + + return -1; + } + + usbd_ep_send (pudev, MSC_IN_EP, msc->bbb_data, len); + + msc->scsi_blk_addr += len; + msc->scsi_blk_len -= len; + + /* case 6 : Hi = Di */ + msc->bbb_csw.dCSWDataResidue -= len; + + if (0U == msc->scsi_blk_len) { + msc->bbb_state = BBB_LAST_DATA_IN; + } + + return 0; +} + +/*! + \brief handle write process + \param[in] pudev: pointer to USB device instance + \param[in] lun: logical unit number + \param[out] none + \retval status +*/ +static int8_t scsi_process_write (usb_core_driver *pudev, uint8_t lun) +{ + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + uint32_t len = USB_MIN(msc->scsi_blk_len, MSC_MEDIA_PACKET_SIZE); + + if (usbd_mem_fops->mem_write (lun, + msc->bbb_data, + msc->scsi_blk_addr, + (uint16_t)(len / msc->scsi_blk_size[lun])) < 0) { + scsi_sense_code(pudev, lun, HARDWARE_ERROR, WRITE_FAULT); + + return -1; + } + + msc->scsi_blk_addr += len; + msc->scsi_blk_len -= len; + + /* case 12 : Ho = Do */ + msc->bbb_csw.dCSWDataResidue -= len; + + if (0U == msc->scsi_blk_len) { + msc_bbb_csw_send (pudev, CSW_CMD_PASSED); + } else { + /* prapare endpoint to receive next packet */ + usbd_ep_recev (pudev, + MSC_OUT_EP, + msc->bbb_data, + USB_MIN (msc->scsi_blk_len, MSC_MEDIA_PACKET_SIZE)); + } + + return 0; +} + +/*! + \brief process Format Unit command + \param[in] pudev: pointer to USB device instance + \param[in] lun: logical unit number + \param[out] none + \retval status +*/ +static inline int8_t scsi_format_cmd (usb_core_driver *pudev, uint8_t lun) +{ + return 0; +} + +/*! + \brief process Read_Toc command + \param[in] pudev: pointer to USB device instance + \param[in] lun: logical unit number + \param[in] params: command parameters + \param[out] none + \retval status +*/ +static int8_t scsi_toc_cmd_read (usb_core_driver *pudev, uint8_t lun, uint8_t *params) +{ + uint8_t* pPage; + uint16_t len; + + usbd_msc_handler *msc = (usbd_msc_handler *)pudev->dev.class_data[USBD_MSC_INTERFACE]; + + pPage = (uint8_t *)&usbd_mem_fops->mem_toc_data[lun * READ_TOC_CMD_LEN]; + len = (uint16_t)pPage[1] + 2U; + + msc->bbb_datalen = len; + + while (len) { + len--; + msc->bbb_data[len] = pPage[len]; + } + + return 0; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/printer/Include/printer_core.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/printer/Include/printer_core.h new file mode 100644 index 0000000000..2d3f5dbde5 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/printer/Include/printer_core.h @@ -0,0 +1,78 @@ +/*! + \file printer_core.h + \brief the header file of USB printer device class core functions + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __PRINTER_CORE_H +#define __PRINTER_CORE_H + +#include "usbd_enum.h" +#include "usb_ch9_std.h" + +/* USB printing device class code */ +#define USB_CLASS_PRINTER 0x07U + +/* printing device subclass code */ +#define USB_SUBCLASS_PRINTER 0x01U + +/* printing device protocol code */ +#define PROTOCOL_UNIDIRECTIONAL_ITF 0x01U +#define PROTOCOL_BI_DIRECTIONAL_ITF 0x02U +#define PROTOCOL_1284_4_ITF 0x03U +#define PROTOCOL_VENDOR 0xFFU + +#define DEVICE_ID_LEN 103U + +#define USB_PRINTER_CONFIG_DESC_LEN 32U + +/* printing device specific-class request */ +#define GET_DEVICE_ID 0x00U +#define GET_PORT_STATUS 0x01U +#define SOFT_RESET 0x02U + +#pragma pack(1) + +/* USB configuration descriptor struct */ +typedef struct +{ + usb_desc_config config; + usb_desc_itf printer_itf; + usb_desc_ep printer_epin; + usb_desc_ep printer_epout; +} usb_printer_desc_config_set; + +#pragma pack() + +extern usb_desc printer_desc; +extern usb_class_core usbd_printer_cb; + +#endif /* __PRINTER_CORE_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/printer/Source/printer_core.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/printer/Source/printer_core.c new file mode 100644 index 0000000000..1c69b86bdd --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/class/printer/Source/printer_core.c @@ -0,0 +1,309 @@ +/*! + \file printer_core.c + \brief USB printer device class core functions + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "printer_core.h" + +#define USBD_VID 0x28E9U +#define USBD_PID 0x028DU + +/* printer port status: paper not empty/selected/no error */ +static uint8_t g_port_status = 0x18U; + +uint8_t g_printer_data_buf[PRINTER_OUT_PACKET]; + +uint8_t PRINTER_DEVICE_ID[DEVICE_ID_LEN] = +{ + 0x00, 0x67, + 'M', 'A', 'N', 'U', 'F', 'A', 'C', 'T', 'U', 'R', 'E', 'R', ':', + 'G', 'I', 'G', 'A', ' ', 'D', 'E', 'V', 'I', 'C', 'E', '-', ';', + 'C', 'O', 'M', 'M', 'A', 'N', 'D', ' ', 'S', 'E', 'T', ':', + 'P', 'C', 'L', ',', 'M', 'P', 'L', ';', + 'M', 'O', 'D', 'E', 'L', ':', + 'L', 'a', 's', 'e', 'r', 'B', 'e', 'a', 'm', '?', ';', + 'C', 'O', 'M', 'M', 'E', 'N', 'T', ':', + 'G', 'o', 'o', 'd', ' ', '!', ';', + 'A', 'C', 'T', 'I', 'V', 'E', ' ', 'C', 'O', 'M', 'M', 'A', 'N', 'D', ' ', 'S', 'E', 'T', ':', + 'P', 'C', 'L', ';' +}; + +/* USB standard device descriptor */ +const usb_desc_dev printer_dev_desc = +{ + .header = + { + .bLength = USB_DEV_DESC_LEN, + .bDescriptorType = USB_DESCTYPE_DEV, + }, + .bcdUSB = 0x0200U, + .bDeviceClass = 0x00U, + .bDeviceSubClass = 0x00U, + .bDeviceProtocol = 0x00U, + .bMaxPacketSize0 = USB_FS_EP0_MAX_LEN, + .idVendor = USBD_VID, + .idProduct = USBD_PID, + .bcdDevice = 0x0100U, + .iManufacturer = STR_IDX_MFC, + .iProduct = STR_IDX_PRODUCT, + .iSerialNumber = STR_IDX_SERIAL, + .bNumberConfigurations = USBD_CFG_MAX_NUM, +}; +/* USB device configuration descriptor */ +const usb_printer_desc_config_set printer_config_desc = +{ + .config = + { + .header = + { + .bLength = sizeof(usb_desc_config), + .bDescriptorType = USB_DESCTYPE_CONFIG + }, + .wTotalLength = USB_PRINTER_CONFIG_DESC_LEN, + .bNumInterfaces = 0x01U, + .bConfigurationValue = 0x01U, + .iConfiguration = 0x00U, + .bmAttributes = 0xA0U, + .bMaxPower = 0x32U + }, + + .printer_itf = + { + .header = + { + .bLength = sizeof(usb_desc_itf), + .bDescriptorType = USB_DESCTYPE_ITF + }, + .bInterfaceNumber = 0x00U, + .bAlternateSetting = 0x00U, + .bNumEndpoints = 0x02U, + .bInterfaceClass = USB_CLASS_PRINTER, + .bInterfaceSubClass = USB_SUBCLASS_PRINTER, + .bInterfaceProtocol = PROTOCOL_BI_DIRECTIONAL_ITF, + .iInterface = 0x00U + }, + + .printer_epin = + { + .header = + { + .bLength = sizeof(usb_desc_ep), + .bDescriptorType = USB_DESCTYPE_EP + }, + .bEndpointAddress = PRINTER_IN_EP, + .bmAttributes = USB_EP_ATTR_BULK, + .wMaxPacketSize = PRINTER_IN_PACKET, + .bInterval = 0x00U + }, + + .printer_epout = + { + .header = + { + .bLength = sizeof(usb_desc_ep), + .bDescriptorType = USB_DESCTYPE_EP + }, + .bEndpointAddress = PRINTER_OUT_EP, + .bmAttributes = USB_EP_ATTR_BULK, + .wMaxPacketSize = PRINTER_OUT_PACKET, + .bInterval = 0x00U + }, +}; + +/* USB language ID Descriptor */ +static const usb_desc_LANGID usbd_language_id_desc = +{ + .header = + { + .bLength = sizeof(usb_desc_LANGID), + .bDescriptorType = USB_DESCTYPE_STR, + }, + .wLANGID = ENG_LANGID +}; + +/* USB manufacture string */ +static const usb_desc_str manufacturer_string = +{ + .header = + { + .bLength = USB_STRING_LEN(10U), + .bDescriptorType = USB_DESCTYPE_STR, + }, + .unicode_string = {'G', 'i', 'g', 'a', 'D', 'e', 'v', 'i', 'c', 'e'} +}; + +/* USB product string */ +static const usb_desc_str product_string = +{ + .header = + { + .bLength = USB_STRING_LEN(16U), + .bDescriptorType = USB_DESCTYPE_STR, + }, + .unicode_string = {'G', 'D', '3', '2', '-', 'U', 'S', 'B', '_', 'P', 'r', 'i', 'n', 't', 'e', 'r'} +}; + +/* USBD serial string */ +static usb_desc_str serial_string = +{ + .header = + { + .bLength = USB_STRING_LEN(12U), + .bDescriptorType = USB_DESCTYPE_STR, + } +}; + +/* USB string descriptor */ +static void *const usbd_msc_strings[] = +{ + [STR_IDX_LANGID] = (uint8_t *)&usbd_language_id_desc, + [STR_IDX_MFC] = (uint8_t *)&manufacturer_string, + [STR_IDX_PRODUCT] = (uint8_t *)&product_string, + [STR_IDX_SERIAL] = (uint8_t *)&serial_string +}; + +usb_desc printer_desc = { + .dev_desc = (uint8_t *)&printer_dev_desc, + .config_desc = (uint8_t *)&printer_config_desc, + .strings = usbd_msc_strings +}; + +/* local function prototypes ('static') */ +static uint8_t printer_init (usb_dev *udev, uint8_t config_index); +static uint8_t printer_deinit (usb_dev *udev, uint8_t config_index); +static uint8_t printer_req (usb_dev *udev, usb_req *req); +static uint8_t printer_in (usb_dev *udev, uint8_t ep_num); +static uint8_t printer_out (usb_dev *udev, uint8_t ep_num); + +usb_class_core usbd_printer_cb = { + .init = printer_init, + .deinit = printer_deinit, + + .req_proc = printer_req, + + .data_in = printer_in, + .data_out = printer_out +}; + +/*! + \brief initialize the printer device + \param[in] udev: pointer to usb device instance + \param[in] config_index: configuration index + \param[out] none + \retval usb device operation status +*/ +static uint8_t printer_init (usb_dev *udev, uint8_t config_index) +{ + /* initialize the data Tx endpoint */ + usbd_ep_setup (udev, &(printer_config_desc.printer_epin)); + + /* initialize the data Rx endpoint */ + usbd_ep_setup (udev, &(printer_config_desc.printer_epout)); + + /* prepare to receive data */ + usbd_ep_recev(udev, PRINTER_OUT_EP, g_printer_data_buf, PRINTER_OUT_PACKET); + + return USBD_OK; +} + +/*! + \brief de-initialize the printer device + \param[in] udev: pointer to usb device instance + \param[in] config_index: configuration index + \param[out] none + \retval usb device operation status +*/ +static uint8_t printer_deinit (usb_dev *udev, uint8_t config_index) +{ + /* deinitialize the data Tx/Rx endpoint */ + usbd_ep_clear (udev, PRINTER_IN_EP); + usbd_ep_clear (udev, PRINTER_OUT_EP); + + return USBD_OK; +} + +/*! + \brief handle the printer class-specific requests + \param[in] udev: pointer to usb device instance + \param[in] req: device class-specific request + \param[out] none + \retval usb device operation status +*/ +static uint8_t printer_req(usb_dev *udev, usb_req *req) +{ + usb_transc *transc = &udev->dev.transc_in[0]; + + switch (req->bRequest) { + case GET_DEVICE_ID: + transc->xfer_buf = (uint8_t *)PRINTER_DEVICE_ID; + transc->remain_len = DEVICE_ID_LEN; + break; + + case GET_PORT_STATUS: + transc->xfer_buf = (uint8_t *)&g_port_status; + transc->remain_len = 1U; + break; + + case SOFT_RESET: + usbd_ep_recev(udev, PRINTER_OUT_EP, g_printer_data_buf, PRINTER_OUT_PACKET); + break; + + default: + return USBD_FAIL; + } + + return USBD_OK; +} + +/*! + \brief handle printer data + \param[in] udev: pointer to USB device instance + \param[in] ep_num: endpoint number + \param[out] none + \retval USB device operation status +*/ +static uint8_t printer_in (usb_dev *udev, uint8_t ep_num) +{ + return USBD_OK; +} + +/*! + \brief handle printer data + \param[in] udev: pointer to USB device instance + \param[in] ep_num: endpoint number + \param[out] none + \retval USB device operation status +*/ +static uint8_t printer_out (usb_dev *udev, uint8_t ep_num) +{ + return USBD_OK; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Include/usbd_core.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Include/usbd_core.h new file mode 100644 index 0000000000..c39dbfdf9a --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Include/usbd_core.h @@ -0,0 +1,103 @@ +/*! + \file usbd_core.h + \brief USB device mode core functions protype + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USBD_CORE_H +#define __USBD_CORE_H + +#include "drv_usb_core.h" +#include "drv_usb_dev.h" + +typedef enum +{ + USBD_OK = 0U, /*!< status OK */ + USBD_BUSY, /*!< status busy */ + USBD_FAIL, /*!< status fail */ +} usbd_status; + +enum _usbd_status { + USBD_DEFAULT = 1U, /*!< default status */ + USBD_ADDRESSED = 2U, /*!< address send status */ + USBD_CONFIGURED = 3U, /*!< configured status */ + USBD_SUSPENDED = 4U /*!< suspended status */ +}; + +/* static inline function definitions */ + +/*! + \brief set USB device address + \param[in] udev: pointer to USB core instance + \param[in] addr: device address to set + \param[out] none + \retval none +*/ +static inline void usbd_addr_set (usb_core_driver *udev, uint8_t addr) +{ + usb_devaddr_set(udev, addr); +} + +/*! + \brief get the received data length + \param[in] udev: pointer to USB device instance + \param[in] ep_num: endpoint number + \param[out] none + \retval USB device operation cur_status +*/ +static inline uint16_t usbd_rxcount_get (usb_core_driver *udev, uint8_t ep_num) +{ + return (uint16_t)udev->dev.transc_out[ep_num].xfer_count; +} + +/* function declarations */ +/* initializes the USB device-mode stack and load the class driver */ +void usbd_init (usb_core_driver *udev, usb_core_enum core, usb_desc *desc, usb_class_core *class_core); +/* endpoint initialization */ +uint32_t usbd_ep_setup (usb_core_driver *udev, const usb_desc_ep *ep_desc); +/* configure the endpoint when it is disabled */ +uint32_t usbd_ep_clear (usb_core_driver *udev, uint8_t ep_addr); +/* endpoint prepare to receive data */ +uint32_t usbd_ep_recev (usb_core_driver *udev, uint8_t ep_addr, uint8_t *pbuf, uint32_t len); +/* endpoint prepare to transmit data */ +uint32_t usbd_ep_send (usb_core_driver *udev, uint8_t ep_addr, uint8_t *pbuf, uint32_t len); +/* set an endpoint to STALL status */ +uint32_t usbd_ep_stall (usb_core_driver *udev, uint8_t ep_addr); +/* clear endpoint STALLed status */ +uint32_t usbd_ep_stall_clear (usb_core_driver *udev, uint8_t ep_addr); +/* flush the endpoint FIFOs */ +uint32_t usbd_fifo_flush (usb_core_driver *udev, uint8_t ep_addr); +/* device connect */ +void usbd_connect (usb_core_driver *udev); +/* device disconnect */ +void usbd_disconnect (usb_core_driver *udev); + +#endif /* __USBD_CORE_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Include/usbd_enum.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Include/usbd_enum.h new file mode 100644 index 0000000000..baa3543575 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Include/usbd_enum.h @@ -0,0 +1,105 @@ +/*! + \file usbd_enum.h + \brief USB enumeration definitions + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USBD_ENUM_H +#define __USBD_ENUM_H + +#include "usbd_core.h" +#include "usbd_conf.h" +#include + +#ifndef NULL + #define NULL 0U +#endif + +typedef enum _usb_reqsta { + REQ_SUPP = 0x0U, /* request support */ + REQ_NOTSUPP = 0x1U, /* request not support */ +} usb_reqsta; + +/* string descriptor index */ +enum _str_index +{ + STR_IDX_LANGID = 0x0U, /* language ID string index */ + STR_IDX_MFC = 0x1U, /* manufacturer string index */ + STR_IDX_PRODUCT = 0x2U, /* product string index */ + STR_IDX_SERIAL = 0x3U, /* serial string index */ + STR_IDX_CONFIG = 0x4U, /* configuration string index */ + STR_IDX_ITF = 0x5U, /* interface string index */ +#ifndef WINUSB_EXEMPT_DRIVER + STR_IDX_MAX = 0x6U, /* string maximum index */ +#else + STR_IDX_MAX = 0xEFU, /* string maximum index */ +#endif /* WINUSB_EXEMPT_DRIVER */ +}; + +typedef enum _usb_pwrsta { + USB_PWRSTA_SELF_POWERED = 0x1U, /* USB is in self powered status */ + USB_PWRSTA_REMOTE_WAKEUP = 0x2U, /* USB is in remote wakeup status */ +} usb_pwrsta; + +typedef enum _usb_feature +{ + USB_FEATURE_EP_HALT = 0x0U, /* USB has endpoint halt feature */ + USB_FEATURE_REMOTE_WAKEUP = 0x1U, /* USB has endpoint remote wakeup feature */ + USB_FEATURE_TEST_MODE = 0x2U, /* USB has endpoint test mode feature */ +} usb_feature; + +#define ENG_LANGID 0x0409U /* english language ID */ +#define CHN_LANGID 0x0804U /* chinese language ID */ + +/* USB device exported macros */ +#define CTL_EP(ep) (((ep) == 0x00U) || ((ep) == 0x80U)) + +#define DEVICE_ID1 (0x1FFFF7E8U) /* device ID1 */ +#define DEVICE_ID2 (0x1FFFF7ECU) /* device ID2 */ +#define DEVICE_ID3 (0x1FFFF7F0U) /* device ID3 */ + +#define DEVICE_ID (0x40022100U) + +/* function declarations */ +/* handle USB standard device request */ +usb_reqsta usbd_standard_request (usb_core_driver *udev, usb_req *req); +/* handle USB device class request */ +usb_reqsta usbd_class_request (usb_core_driver *udev, usb_req *req); +/* handle USB vendor request */ +usb_reqsta usbd_vendor_request (usb_core_driver *udev, usb_req *req); +/* handle USB enumeration error */ +void usbd_enum_error (usb_core_driver *udev, usb_req *req); +/* convert hex 32bits value into unicode char */ +void int_to_unicode (uint32_t value, uint8_t *pbuf, uint8_t len); +/* get serial string */ +void serial_string_get (uint16_t *unicode_str); + +#endif /* __USBD_ENUM_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Include/usbd_transc.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Include/usbd_transc.h new file mode 100644 index 0000000000..42b7af72eb --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Include/usbd_transc.h @@ -0,0 +1,56 @@ +/*! + \file usbd_transc.h + \brief USB transaction core functions prototype + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USBD_TRANSC_H +#define __USBD_TRANSC_H + +#include "usbd_core.h" + +/* function declarations */ +/* USB send data in the control transaction */ +usbd_status usbd_ctl_send (usb_core_driver *udev); +/* USB receive data in control transaction */ +usbd_status usbd_ctl_recev (usb_core_driver *udev); +/* USB send control transaction status */ +usbd_status usbd_ctl_status_send (usb_core_driver *udev); +/* USB control receive status */ +usbd_status usbd_ctl_status_recev (usb_core_driver *udev); +/* USB setup stage processing */ +uint8_t usbd_setup_transc (usb_core_driver *udev); +/* data out stage processing */ +uint8_t usbd_out_transc (usb_core_driver *udev, uint8_t ep_num); +/* data in stage processing */ +uint8_t usbd_in_transc (usb_core_driver *udev, uint8_t ep_num); + +#endif /* __USBD_TRANSC_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Source/usbd_core.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Source/usbd_core.c new file mode 100644 index 0000000000..8ab438ceeb --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Source/usbd_core.c @@ -0,0 +1,320 @@ +/*! + \file usbd_core.c + \brief USB device mode core functions + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "usbd_core.h" +#include "usbd_enum.h" +#include "drv_usb_hw.h" + +/* endpoint type */ +const uint32_t ep_type[] = { + [USB_EP_ATTR_CTL] = (uint32_t)USB_EPTYPE_CTRL, + [USB_EP_ATTR_BULK] = (uint32_t)USB_EPTYPE_BULK, + [USB_EP_ATTR_INT] = (uint32_t)USB_EPTYPE_INTR, + [USB_EP_ATTR_ISO] = (uint32_t)USB_EPTYPE_ISOC +}; + +/*! + \brief initializes the USB device-mode stack and load the class driver + \param[in] udev: pointer to USB core instance + \param[in] core: USB core type + \param[in] desc: pointer to USB descriptor + \param[in] class_core: class driver + \param[out] none + \retval none +*/ +void usbd_init (usb_core_driver *udev, usb_core_enum core, usb_desc *desc, usb_class_core *class_core) +{ + udev->dev.desc = desc; + + /* class callbacks */ + udev->dev.class_core = class_core; + + /* create serial string */ + serial_string_get(udev->dev.desc->strings[STR_IDX_SERIAL]); + + /* configure USB capabilities */ + (void)usb_basic_init (&udev->bp, &udev->regs, core); + + usb_globalint_disable(&udev->regs); + + /* initializes the USB core*/ + (void)usb_core_init (udev->bp, &udev->regs); + + /* set device disconnect */ + usbd_disconnect (udev); + +#ifndef USE_OTG_MODE + usb_curmode_set(&udev->regs, DEVICE_MODE); +#endif + + /* initializes device mode */ + (void)usb_devcore_init (udev); + + usb_globalint_enable(&udev->regs); + + /* set device connect */ + usbd_connect (udev); + + udev->dev.cur_status = (uint8_t)USBD_DEFAULT; +} + +/*! + \brief endpoint initialization + \param[in] udev: pointer to USB core instance + \param[in] ep_desc: pointer to endpoint descriptor + \param[out] none + \retval none +*/ +uint32_t usbd_ep_setup (usb_core_driver *udev, const usb_desc_ep *ep_desc) +{ + usb_transc *transc; + + uint8_t ep_addr = ep_desc->bEndpointAddress; + uint16_t max_len = ep_desc->wMaxPacketSize; + + /* set endpoint direction */ + if (EP_DIR(ep_addr)) { + transc = &udev->dev.transc_in[EP_ID(ep_addr)]; + + transc->ep_addr.dir = 1U; + } else { + transc = &udev->dev.transc_out[ep_addr]; + + transc->ep_addr.dir = 0U; + } + + transc->ep_addr.num = EP_ID(ep_addr); + transc->max_len = max_len; + transc->ep_type = (uint8_t)ep_type[ep_desc->bmAttributes & (uint8_t)USB_EPTYPE_MASK]; + + /* active USB endpoint function */ + (void)usb_transc_active (udev, transc); + + return 0U; +} + +/*! + \brief configure the endpoint when it is disabled + \param[in] udev: pointer to USB core instance + \param[in] ep_addr: endpoint address + in this parameter: + bit0..bit6: endpoint number (0..7) + bit7: endpoint direction which can be IN(1) or OUT(0) + \param[out] none + \retval none +*/ +uint32_t usbd_ep_clear (usb_core_driver *udev, uint8_t ep_addr) +{ + usb_transc *transc; + + if (EP_DIR(ep_addr)) { + transc = &udev->dev.transc_in[EP_ID(ep_addr)]; + } else { + transc = &udev->dev.transc_out[ep_addr]; + } + + /* deactivate USB endpoint function */ + (void)usb_transc_deactivate (udev, transc); + + return 0U; +} + +/*! + \brief endpoint prepare to receive data + \param[in] udev: pointer to USB core instance + \param[in] ep_addr: endpoint address + in this parameter: + bit0..bit6: endpoint number (0..7) + bit7: endpoint direction which can be IN(1) or OUT(0) + \param[in] pbuf: user buffer address pointer + \param[in] len: buffer length + \param[out] none + \retval none +*/ +uint32_t usbd_ep_recev (usb_core_driver *udev, uint8_t ep_addr, uint8_t *pbuf, uint32_t len) +{ + usb_transc *transc = &udev->dev.transc_out[EP_ID(ep_addr)]; + + /* setup the transfer */ + transc->xfer_buf = pbuf; + transc->xfer_len = len; + transc->xfer_count = 0U; + + if ((uint8_t)USB_USE_DMA == udev->bp.transfer_mode) { + transc->dma_addr = (uint32_t)pbuf; + } + + /* start the transfer */ + (void)usb_transc_outxfer (udev, transc); + + return 0U; +} + +/*! + \brief endpoint prepare to transmit data + \param[in] udev: pointer to USB core instance + \param[in] ep_addr: endpoint address + in this parameter: + bit0..bit6: endpoint number (0..7) + bit7: endpoint direction which can be IN(1) or OUT(0) + \param[in] pbuf: transmit buffer address pointer + \param[in] len: buffer length + \param[out] none + \retval none +*/ +uint32_t usbd_ep_send (usb_core_driver *udev, uint8_t ep_addr, uint8_t *pbuf, uint32_t len) +{ + usb_transc *transc = &udev->dev.transc_in[EP_ID(ep_addr)]; + + /* setup the transfer */ + transc->xfer_buf = pbuf; + transc->xfer_len = len; + transc->xfer_count = 0U; + + if ((uint8_t)USB_USE_DMA == udev->bp.transfer_mode) { + transc->dma_addr = (uint32_t)pbuf; + } + + /* start the transfer */ + (void)usb_transc_inxfer (udev, transc); + + return 0U; +} + +/*! + \brief set an endpoint to STALL status + \param[in] udev: pointer to USB core instance + \param[in] ep_addr: endpoint address + in this parameter: + bit0..bit6: endpoint number (0..7) + bit7: endpoint direction which can be IN(1) or OUT(0) + \param[out] none + \retval none +*/ +uint32_t usbd_ep_stall (usb_core_driver *udev, uint8_t ep_addr) +{ + usb_transc *transc = NULL; + + if (EP_DIR(ep_addr)) { + transc = &udev->dev.transc_in[EP_ID(ep_addr)]; + } else { + transc = &udev->dev.transc_out[ep_addr]; + } + + transc->ep_stall = 1U; + + (void)usb_transc_stall (udev, transc); + + return (0U); +} + +/*! + \brief clear endpoint STALLed status + \param[in] udev: pointer to usb core instance + \param[in] ep_addr: endpoint address + in this parameter: + bit0..bit6: endpoint number (0..7) + bit7: endpoint direction which can be IN(1) or OUT(0) + \param[out] none + \retval none +*/ +uint32_t usbd_ep_stall_clear (usb_core_driver *udev, uint8_t ep_addr) +{ + usb_transc *transc = NULL; + + if (EP_DIR(ep_addr)) { + transc = &udev->dev.transc_in[EP_ID(ep_addr)]; + } else { + transc = &udev->dev.transc_out[ep_addr]; + } + + transc->ep_stall = 0U; + + (void)usb_transc_clrstall (udev, transc); + + return (0U); +} + +/*! + \brief flush the endpoint FIFOs + \param[in] udev: pointer to USB core instance + \param[in] ep_addr: endpoint address + in this parameter: + bit0..bit6: endpoint number (0..7) + bit7: endpoint direction which can be IN(1) or OUT(0) + \param[out] none + \retval none +*/ +uint32_t usbd_fifo_flush (usb_core_driver *udev, uint8_t ep_addr) +{ + if (EP_DIR(ep_addr)) { + (void)usb_txfifo_flush (&udev->regs, EP_ID(ep_addr)); + } else { + (void)usb_rxfifo_flush (&udev->regs); + } + + return (0U); +} + +/*! + \brief device connect + \param[in] udev: pointer to USB device instance + \param[out] none + \retval none +*/ +void usbd_connect (usb_core_driver *udev) +{ +#ifndef USE_OTG_MODE + /* connect device */ + usb_dev_connect (udev); + + usb_mdelay(3U); +#endif /* USE_OTG_MODE */ +} + +/*! + \brief device disconnect + \param[in] udev: pointer to USB device instance + \param[out] none + \retval none +*/ +void usbd_disconnect (usb_core_driver *udev) +{ +#ifndef USE_OTG_MODE + /* disconnect device for 3ms */ + usb_dev_disconnect (udev); + + usb_mdelay(3U); +#endif /* USE_OTG_MODE */ +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Source/usbd_enum.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Source/usbd_enum.c new file mode 100644 index 0000000000..4da3f95fbe --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Source/usbd_enum.c @@ -0,0 +1,764 @@ +/*! + \file usbd_enum.c + \brief USB enumeration function + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "usbd_enum.h" +#include "usb_ch9_std.h" + +#ifdef WINUSB_EXEMPT_DRIVER + +extern usbd_status usbd_OEM_req(usb_dev *udev, usb_req *req); + +#endif /* WINUSB_EXEMPT_DRIVER */ + +/* local function prototypes ('static') */ +static usb_reqsta _usb_std_reserved (usb_core_driver *udev, usb_req *req); +static uint8_t* _usb_dev_desc_get (usb_core_driver *udev, uint8_t index, uint16_t *len); +static uint8_t* _usb_config_desc_get (usb_core_driver *udev, uint8_t index, uint16_t *len); +static uint8_t* _usb_bos_desc_get (usb_core_driver *udev, uint8_t index, uint16_t *len); +static uint8_t* _usb_str_desc_get (usb_core_driver *udev, uint8_t index, uint16_t *len); +static usb_reqsta _usb_std_getstatus (usb_core_driver *udev, usb_req *req); +static usb_reqsta _usb_std_clearfeature (usb_core_driver *udev, usb_req *req); +static usb_reqsta _usb_std_setfeature (usb_core_driver *udev, usb_req *req); +static usb_reqsta _usb_std_setaddress (usb_core_driver *udev, usb_req *req); +static usb_reqsta _usb_std_getdescriptor (usb_core_driver *udev, usb_req *req); +static usb_reqsta _usb_std_setdescriptor (usb_core_driver *udev, usb_req *req); +static usb_reqsta _usb_std_getconfiguration (usb_core_driver *udev, usb_req *req); +static usb_reqsta _usb_std_setconfiguration (usb_core_driver *udev, usb_req *req); +static usb_reqsta _usb_std_getinterface (usb_core_driver *udev, usb_req *req); +static usb_reqsta _usb_std_setinterface (usb_core_driver *udev, usb_req *req); +static usb_reqsta _usb_std_synchframe (usb_core_driver *udev, usb_req *req); + +static usb_reqsta (*_std_dev_req[])(usb_core_driver *udev, usb_req *req) = +{ + [USB_GET_STATUS] = _usb_std_getstatus, + [USB_CLEAR_FEATURE] = _usb_std_clearfeature, + [USB_RESERVED2] = _usb_std_reserved, + [USB_SET_FEATURE] = _usb_std_setfeature, + [USB_RESERVED4] = _usb_std_reserved, + [USB_SET_ADDRESS] = _usb_std_setaddress, + [USB_GET_DESCRIPTOR] = _usb_std_getdescriptor, + [USB_SET_DESCRIPTOR] = _usb_std_setdescriptor, + [USB_GET_CONFIGURATION] = _usb_std_getconfiguration, + [USB_SET_CONFIGURATION] = _usb_std_setconfiguration, + [USB_GET_INTERFACE] = _usb_std_getinterface, + [USB_SET_INTERFACE] = _usb_std_setinterface, + [USB_SYNCH_FRAME] = _usb_std_synchframe, +}; + +/* get standard descriptor handler */ +static uint8_t* (*std_desc_get[])(usb_core_driver *udev, uint8_t index, uint16_t *len) = { + [(uint8_t)USB_DESCTYPE_DEV - 1U] = _usb_dev_desc_get, + [(uint8_t)USB_DESCTYPE_CONFIG - 1U] = _usb_config_desc_get, + [(uint8_t)USB_DESCTYPE_STR - 1U] = _usb_str_desc_get +}; + +/*! + \brief handle USB standard device request + \param[in] udev: pointer to USB device instance + \param[in] req: pointer to USB device request + \param[out] none + \retval USB device request status +*/ +usb_reqsta usbd_standard_request (usb_core_driver *udev, usb_req *req) +{ + return (*_std_dev_req[req->bRequest])(udev, req); +} + +/*! + \brief handle USB device class request + \param[in] udev: pointer to USB device instance + \param[in] req: pointer to USB device class request + \param[out] none + \retval USB device request status +*/ +usb_reqsta usbd_class_request (usb_core_driver *udev, usb_req *req) +{ + if ((uint8_t)USBD_CONFIGURED == udev->dev.cur_status) { + if (BYTE_LOW(req->wIndex) <= USBD_ITF_MAX_NUM) { + /* call device class handle function */ + return (usb_reqsta)udev->dev.class_core->req_proc(udev, req); + } + } + + return REQ_NOTSUPP; +} + +/*! + \brief handle USB vendor request + \param[in] udev: pointer to USB device instance + \param[in] req: pointer to USB vendor request + \param[out] none + \retval USB device request status +*/ +usb_reqsta usbd_vendor_request (usb_core_driver *udev, usb_req *req) +{ + (void)udev; + (void)req; + + /* added by user... */ +#ifdef WINUSB_EXEMPT_DRIVER + usbd_OEM_req(udev, req); +#endif + + return REQ_SUPP; +} + +/*! + \brief handle USB enumeration error + \param[in] udev: pointer to USB device instance + \param[in] req: pointer to USB device request + \param[out] none + \retval none +*/ +void usbd_enum_error (usb_core_driver *udev, usb_req *req) +{ + (void)req; + + (void)usbd_ep_stall (udev, 0x80U); + (void)usbd_ep_stall (udev, 0x00U); + + usb_ctlep_startout(udev); +} + +/*! + \brief convert hex 32bits value into unicode char + \param[in] value: hex 32bits value + \param[in] pbuf: buffer pointer to store unicode char + \param[in] len: value length + \param[out] none + \retval none +*/ +void int_to_unicode (uint32_t value, uint8_t *pbuf, uint8_t len) +{ + uint8_t index; + + for (index = 0U; index < len; index++) { + if ((value >> 28U) < 0x0AU) { + pbuf[2U * index] = (uint8_t)((value >> 28U) + '0'); + } else { + pbuf[2U * index] = (uint8_t)((value >> 28U) + 'A' - 10U); + } + + value = value << 4U; + + pbuf[2U * index + 1U] = 0U; + } +} + +/*! + \brief convert hex 32bits value into unicode char + \param[in] unicode_str: pointer to unicode string + \param[out] none + \retval none +*/ +void serial_string_get (uint16_t *unicode_str) +{ + if ((unicode_str[0] & 0x00FFU) != 6U) { + uint32_t DeviceSerial0, DeviceSerial1, DeviceSerial2; + + DeviceSerial0 = *(uint32_t*)DEVICE_ID1; + DeviceSerial1 = *(uint32_t*)DEVICE_ID2; + DeviceSerial2 = *(uint32_t*)DEVICE_ID3; + + DeviceSerial0 += DeviceSerial2; + + if (0U != DeviceSerial0) { + int_to_unicode(DeviceSerial0, (uint8_t*)&(unicode_str[1]), 8U); + int_to_unicode(DeviceSerial1, (uint8_t*)&(unicode_str[9]), 4U); + } + } else { + uint32_t device_serial = *(uint32_t*)DEVICE_ID; + + if(0U != device_serial) { + unicode_str[1] = (uint16_t)(device_serial & 0x0000FFFFU); + unicode_str[2] = (uint16_t)((device_serial & 0xFFFF0000U) >> 16U); + + } + } +} + +/*! + \brief no operation, just for reserved + \param[in] udev: pointer to USB device instance + \param[in] req: pointer to USB vendor request + \param[out] none + \retval USB device request status +*/ +static usb_reqsta _usb_std_reserved (usb_core_driver *udev, usb_req *req) +{ + (void)udev; + (void)req; + + /* no operation... */ + + return REQ_NOTSUPP; +} + +/*! + \brief get the device descriptor + \param[in] udev: pointer to USB device instance + \param[in] index: no use + \param[out] len: data length pointer + \retval descriptor buffer pointer +*/ +static uint8_t* _usb_dev_desc_get (usb_core_driver *udev, uint8_t index, uint16_t *len) +{ + (void)index; + + *len = udev->dev.desc->dev_desc[0]; + + return udev->dev.desc->dev_desc; +} + +/*! + \brief get the configuration descriptor + \brief[in] udev: pointer to USB device instance + \brief[in] index: no use + \param[out] len: data length pointer + \retval descriptor buffer pointer +*/ +static uint8_t* _usb_config_desc_get (usb_core_driver *udev, uint8_t index, uint16_t *len) +{ + (void)index; + + *len = udev->dev.desc->config_desc[2]; + + return udev->dev.desc->config_desc; +} + +/*! + \brief get the BOS descriptor + \brief[in] udev: pointer to USB device instance + \brief[in] index: no use + \param[out] len: data length pointer + \retval descriptor buffer pointer +*/ +static uint8_t* _usb_bos_desc_get (usb_core_driver *udev, uint8_t index, uint16_t *len) +{ + (void)index; + + *len = udev->dev.desc->bos_desc[2]; + + return udev->dev.desc->bos_desc; +} + +/*! + \brief get string descriptor + \param[in] udev: pointer to USB device instance + \param[in] index: string descriptor index + \param[out] len: pointer to string length + \retval descriptor buffer pointer +*/ +static uint8_t* _usb_str_desc_get (usb_core_driver *udev, uint8_t index, uint16_t *len) +{ + uint8_t *desc = udev->dev.desc->strings[index]; + + *len = desc[0]; + + return desc; +} + +/*! + \brief handle Get_Status request + \param[in] udev: pointer to USB device instance + \param[in] req: pointer to USB device request + \param[out] none + \retval USB device request status +*/ +static usb_reqsta _usb_std_getstatus (usb_core_driver *udev, usb_req *req) +{ + uint8_t recp = BYTE_LOW(req->wIndex); + usb_reqsta req_status = REQ_NOTSUPP; + usb_transc *transc = &udev->dev.transc_in[0]; + + static uint8_t status[2] = {0}; + + switch(req->bmRequestType & (uint8_t)USB_RECPTYPE_MASK) { + case USB_RECPTYPE_DEV: + if (((uint8_t)USBD_ADDRESSED == udev->dev.cur_status) || \ + ((uint8_t)USBD_CONFIGURED == udev->dev.cur_status)) { + + if (udev->dev.pm.power_mode) { + status[0] = USB_STATUS_SELF_POWERED; + } else { + status[0] = 0U; + } + + if (udev->dev.pm.dev_remote_wakeup) { + status[0] |= USB_STATUS_REMOTE_WAKEUP; + } else { + status[0] = 0U; + } + + req_status = REQ_SUPP; + } + break; + + case USB_RECPTYPE_ITF: + if (((uint8_t)USBD_CONFIGURED == udev->dev.cur_status) && (recp <= USBD_ITF_MAX_NUM)) { + req_status = REQ_SUPP; + } + break; + + case USB_RECPTYPE_EP: + if ((uint8_t)USBD_CONFIGURED == udev->dev.cur_status) { + if (0x80U == (recp & 0x80U)) { + status[0] = udev->dev.transc_in[EP_ID(recp)].ep_stall; + } else { + status[0] = udev->dev.transc_out[recp].ep_stall; + } + + req_status = REQ_SUPP; + } + break; + + default: + break; + } + + if (REQ_SUPP == req_status) { + transc->xfer_buf = status; + transc->remain_len = 2U; + } + + return req_status; +} + +/*! + \brief handle USB Clear_Feature request + \param[in] udev: pointer to USB device instance + \param[in] req: USB device request + \param[out] none + \retval USB device request status +*/ +static usb_reqsta _usb_std_clearfeature (usb_core_driver *udev, usb_req *req) +{ + uint8_t ep = 0U; + + switch(req->bmRequestType & (uint8_t)USB_RECPTYPE_MASK) { + case USB_RECPTYPE_DEV: + if (((uint8_t)USBD_ADDRESSED == udev->dev.cur_status) || \ + ((uint8_t)USBD_CONFIGURED == udev->dev.cur_status)) { + + /* clear device remote wakeup feature */ + if ((uint16_t)USB_FEATURE_REMOTE_WAKEUP == req->wValue) { + udev->dev.pm.dev_remote_wakeup = 0U; + + return REQ_SUPP; + } + } + break; + + case USB_RECPTYPE_ITF: + break; + + case USB_RECPTYPE_EP: + /* get endpoint address */ + ep = BYTE_LOW(req->wIndex); + + if ((uint8_t)USBD_CONFIGURED == udev->dev.cur_status) { + /* clear endpoint halt feature */ + if (((uint16_t)USB_FEATURE_EP_HALT == req->wValue) && (!CTL_EP(ep))) { + (void)usbd_ep_stall_clear (udev, ep); + + (void)udev->dev.class_core->req_proc (udev, req); + } + + return REQ_SUPP; + } + break; + + default: + break; + } + + return REQ_NOTSUPP; +} + +/*! + \brief handle USB Set_Feature request + \param[in] udev: pointer to USB device instance + \param[in] req: pointer to USB device request + \param[out] none + \retval USB device request status +*/ +static usb_reqsta _usb_std_setfeature (usb_core_driver *udev, usb_req *req) +{ + uint8_t ep = 0U; + + switch (req->bmRequestType & (uint8_t)USB_RECPTYPE_MASK) { + case USB_RECPTYPE_DEV: + if (((uint8_t)USBD_ADDRESSED == udev->dev.cur_status) || \ + ((uint8_t)USBD_CONFIGURED == udev->dev.cur_status)) { + /* set device remote wakeup feature */ + if ((uint16_t)USB_FEATURE_REMOTE_WAKEUP == req->wValue) { + udev->dev.pm.dev_remote_wakeup = 1U; + } + + return REQ_SUPP; + } + break; + + case USB_RECPTYPE_ITF: + break; + + case USB_RECPTYPE_EP: + /* get endpoint address */ + ep = BYTE_LOW(req->wIndex); + + if ((uint8_t)USBD_CONFIGURED == udev->dev.cur_status) { + /* set endpoint halt feature */ + if (((uint16_t)USB_FEATURE_EP_HALT == req->wValue) && (!CTL_EP(ep))) { + (void)usbd_ep_stall (udev, ep); + } + + return REQ_SUPP; + } + break; + + default: + break; + } + + return REQ_NOTSUPP; +} + +/*! + \brief handle USB Set_Address request + \param[in] udev: pointer to USB device instance + \param[in] req: pointer to USB device request + \param[out] none + \retval USB device request status +*/ +static usb_reqsta _usb_std_setaddress (usb_core_driver *udev, usb_req *req) +{ + if ((0U == req->wIndex) && (0U == req->wLength)) { + udev->dev.dev_addr = (uint8_t)(req->wValue) & 0x7FU; + + if (udev->dev.cur_status != (uint8_t)USBD_CONFIGURED) { + usbd_addr_set (udev, udev->dev.dev_addr); + + if (udev->dev.dev_addr) { + udev->dev.cur_status = (uint8_t)USBD_ADDRESSED; + } else { + udev->dev.cur_status = (uint8_t)USBD_DEFAULT; + } + + return REQ_SUPP; + } + } + + return REQ_NOTSUPP; +} + +/*! + \brief handle USB Get_Descriptor request + \param[in] udev: pointer to USB device instance + \param[in] req: pointer to USB device request + \param[out] none + \retval USB device request status +*/ +static usb_reqsta _usb_std_getdescriptor (usb_core_driver *udev, usb_req *req) +{ + uint8_t desc_type = 0U; + uint8_t desc_index = 0U; + + usb_reqsta status = REQ_NOTSUPP; + + usb_transc *transc = &udev->dev.transc_in[0]; + + /* get device standard descriptor */ + switch (req->bmRequestType & USB_RECPTYPE_MASK) { + case USB_RECPTYPE_DEV: + desc_type = BYTE_HIGH(req->wValue); + desc_index = BYTE_LOW(req->wValue); + + switch (desc_type) { + case USB_DESCTYPE_DEV: + transc->xfer_buf = std_desc_get[desc_type - 1U](udev, desc_index, (uint16_t *)&(transc->remain_len)); + + if (64U == req->wLength) { + transc->remain_len = 8U; + } + break; + + case USB_DESCTYPE_CONFIG: + transc->xfer_buf = std_desc_get[desc_type - 1U](udev, desc_index, (uint16_t *)&(transc->remain_len)); + break; + + case USB_DESCTYPE_STR: + if (desc_index < (uint8_t)STR_IDX_MAX) { + transc->xfer_buf = std_desc_get[desc_type - 1U](udev, desc_index, (uint16_t *)&(transc->remain_len)); + } + break; + + case USB_DESCTYPE_ITF: + case USB_DESCTYPE_EP: + case USB_DESCTYPE_DEV_QUALIFIER: + case USB_DESCTYPE_OTHER_SPD_CONFIG: + case USB_DESCTYPE_ITF_POWER: + break; + + case USB_DESCTYPE_BOS: + transc->xfer_buf = _usb_bos_desc_get(udev, desc_index, (uint16_t *)&(transc->remain_len)); + break; + + default: + break; + } + break; + + case USB_RECPTYPE_ITF: + /* get device class special descriptor */ + status = (usb_reqsta)(udev->dev.class_core->req_proc(udev, req)); + break; + + case USB_RECPTYPE_EP: + break; + + default: + break; + } + + if ((0U != transc->remain_len) && (0U != req->wLength)) { + if (transc->remain_len < req->wLength) { + if ((transc->remain_len >= transc->max_len) && (0U == (transc->remain_len % transc->max_len))) { + udev->dev.control.ctl_zlp = 1U; + } + } else { + transc->remain_len = req->wLength; + } + + status = REQ_SUPP; + } + + return status; +} + +/*! + \brief handle USB Set_Descriptor request + \param[in] udev: pointer to USB device instance + \param[in] req: pointer to USB device request + \param[out] none + \retval USB device request status +*/ +static usb_reqsta _usb_std_setdescriptor (usb_core_driver *udev, usb_req *req) +{ + (void)udev; + (void)req; + + /* no handle... */ + return REQ_SUPP; +} + +/*! + \brief handle USB Get_Configuration request + \param[in] udev: pointer to USB device instance + \param[in] req: pointer to USB device request + \param[out] none + \retval USB device request status +*/ +static usb_reqsta _usb_std_getconfiguration (usb_core_driver *udev, usb_req *req) +{ + (void)req; + + usb_reqsta req_status = REQ_NOTSUPP; + usb_transc *transc = &udev->dev.transc_in[0]; + + switch (udev->dev.cur_status) { + case USBD_ADDRESSED: + if (USB_DEFAULT_CONFIG == udev->dev.config) { + req_status = REQ_SUPP; + } + break; + + case USBD_CONFIGURED: + if (udev->dev.config != USB_DEFAULT_CONFIG) { + req_status = REQ_SUPP; + } + break; + + default: + break; + } + + if (REQ_SUPP == req_status) { + transc->xfer_buf = &(udev->dev.config); + transc->remain_len = 1U; + } + + return req_status; +} + +/*! + \brief handle USB Set_Configuration request + \param[in] udev: pointer to USB device instance + \param[in] req: pointer to USB device request + \param[out] none + \retval USB device request status +*/ +static usb_reqsta _usb_std_setconfiguration (usb_core_driver *udev, usb_req *req) +{ + static uint8_t config; + usb_reqsta status = REQ_NOTSUPP; + + config = (uint8_t)(req->wValue); + + if (config <= USBD_CFG_MAX_NUM) { + switch (udev->dev.cur_status) { + case USBD_ADDRESSED: + if (config){ + (void)udev->dev.class_core->init(udev, config); + + udev->dev.config = config; + udev->dev.cur_status = (uint8_t)USBD_CONFIGURED; + } + + status = REQ_SUPP; + break; + + case USBD_CONFIGURED: + if (USB_DEFAULT_CONFIG == config) { + (void)udev->dev.class_core->deinit(udev, config); + + udev->dev.config = config; + udev->dev.cur_status = (uint8_t)USBD_ADDRESSED; + } else if (config != udev->dev.config) { + /* clear old configuration */ + (void)udev->dev.class_core->deinit(udev, config); + + /* set new configuration */ + udev->dev.config = config; + + (void)udev->dev.class_core->init(udev, config); + } else { + /* no operation */ + } + + status = REQ_SUPP; + break; + + case USBD_DEFAULT: + break; + + default: + break; + } + } + + return status; +} + +/*! + \brief handle USB Get_Interface request + \param[in] udev: pointer to USB device instance + \param[in] req: pointer to USB device request + \param[out] none + \retval USB device request status +*/ +static usb_reqsta _usb_std_getinterface (usb_core_driver *udev, usb_req *req) +{ + switch (udev->dev.cur_status) { + case USBD_DEFAULT: + break; + + case USBD_ADDRESSED: + break; + + case USBD_CONFIGURED: + if (BYTE_LOW(req->wIndex) <= USBD_ITF_MAX_NUM) { + usb_transc *transc = &udev->dev.transc_in[0]; + + transc->xfer_buf = &(udev->dev.class_core->alter_set); + transc->remain_len = 1U; + + return REQ_SUPP; + } + break; + + default: + break; + } + + return REQ_NOTSUPP; +} + +/*! + \brief handle USB Set_Interface request + \param[in] udev: pointer to USB device instance + \param[in] req: pointer to USB device request + \param[out] none + \retval USB device request status +*/ +static usb_reqsta _usb_std_setinterface (usb_core_driver *udev, usb_req *req) +{ + switch (udev->dev.cur_status) { + case USBD_DEFAULT: + break; + + case USBD_ADDRESSED: + break; + + case USBD_CONFIGURED: + if (BYTE_LOW(req->wIndex) <= USBD_ITF_MAX_NUM) { + if (NULL != udev->dev.class_core->set_intf) { + (void)udev->dev.class_core->set_intf (udev, req); + } + + return REQ_SUPP; + } + break; + + default: + break; + } + + return REQ_NOTSUPP; +} + +/*! + \brief handle USB SynchFrame request + \param[in] udev: pointer to USB device instance + \param[in] req: pointer to USB device request + \param[out] none + \retval USB device request status +*/ +static usb_reqsta _usb_std_synchframe (usb_core_driver *udev, usb_req *req) +{ + (void)udev; + (void)req; + + /* no handle */ + return REQ_SUPP; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Source/usbd_transc.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Source/usbd_transc.c new file mode 100644 index 0000000000..f5a99590e4 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/device/core/Source/usbd_transc.c @@ -0,0 +1,265 @@ +/*! + \file usbd_transc.c + \brief USB transaction core functions + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 + \version 2020-12-11, V1.1.1, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "usbd_enum.h" +#include "usbd_transc.h" + +/*! + \brief USB send data in the control transaction + \param[in] udev: pointer to USB device instance + \param[out] none + \retval USB device operation cur_status +*/ +usbd_status usbd_ctl_send (usb_core_driver *udev) +{ + usb_transc *transc = &udev->dev.transc_in[0]; + + (void)usbd_ep_send(udev, 0U, transc->xfer_buf, transc->remain_len); + + if (transc->remain_len > transc->max_len) { + udev->dev.control.ctl_state = (uint8_t)USB_CTL_DATA_IN; + } else { + udev->dev.control.ctl_state = (uint8_t)USB_CTL_LAST_DATA_IN; + } + + return USBD_OK; +} + +/*! + \brief USB receive data in control transaction + \param[in] udev: pointer to USB device instance + \param[out] none + \retval USB device operation cur_status +*/ +usbd_status usbd_ctl_recev (usb_core_driver *udev) +{ + usb_transc *transc = &udev->dev.transc_out[0]; + + (void)usbd_ep_recev (udev, 0U, transc->xfer_buf, transc->remain_len); + + if (transc->remain_len > transc->max_len) { + udev->dev.control.ctl_state = (uint8_t)USB_CTL_DATA_OUT; + } else { + udev->dev.control.ctl_state = (uint8_t)USB_CTL_LAST_DATA_OUT; + } + + return USBD_OK; +} + +/*! + \brief USB send control transaction status + \param[in] udev: pointer to USB device instance + \param[out] none + \retval USB device operation cur_status +*/ +usbd_status usbd_ctl_status_send (usb_core_driver *udev) +{ + udev->dev.control.ctl_state = (uint8_t)USB_CTL_STATUS_IN; + + (void)usbd_ep_send (udev, 0U, NULL, 0U); + + usb_ctlep_startout(udev); + + return USBD_OK; +} + +/*! + \brief USB control receive status + \param[in] udev: pointer to USB device instance + \param[out] none + \retval USB device operation cur_status +*/ +usbd_status usbd_ctl_status_recev (usb_core_driver *udev) +{ + udev->dev.control.ctl_state = (uint8_t)USB_CTL_STATUS_OUT; + + (void)usbd_ep_recev (udev, 0U, NULL, 0U); + + usb_ctlep_startout(udev); + + return USBD_OK; +} + +/*! + \brief USB setup stage processing + \param[in] udev: pointer to USB device instance + \param[out] none + \retval USB device operation cur_status +*/ +uint8_t usbd_setup_transc (usb_core_driver *udev) +{ + usb_reqsta reqstat = REQ_NOTSUPP; + + usb_req req = udev->dev.control.req; + + switch (req.bmRequestType & USB_REQTYPE_MASK) { + /* standard device request */ + case USB_REQTYPE_STRD: + reqstat = usbd_standard_request (udev, &req); + break; + + /* device class request */ + case USB_REQTYPE_CLASS: + reqstat = usbd_class_request (udev, &req); + break; + + /* vendor defined request */ + case USB_REQTYPE_VENDOR: + reqstat = usbd_vendor_request (udev, &req); + break; + + default: + break; + } + + if (REQ_SUPP == reqstat) { + if (0U == req.wLength) { + (void)usbd_ctl_status_send (udev); + } else { + if (req.bmRequestType & 0x80U) { + (void)usbd_ctl_send (udev); + } else { + (void)usbd_ctl_recev (udev); + } + } + } else { + usbd_enum_error (udev, &req); + } + + return (uint8_t)USBD_OK; +} + +/*! + \brief data out stage processing + \param[in] udev: pointer to USB device instance + \param[in] ep_num: endpoint identifier(0..7) + \param[out] none + \retval USB device operation cur_status +*/ +uint8_t usbd_out_transc (usb_core_driver *udev, uint8_t ep_num) +{ + if (0U == ep_num) { + usb_transc *transc = &udev->dev.transc_out[0]; + + switch (udev->dev.control.ctl_state) { + case USB_CTL_DATA_OUT: + /* update transfer length */ + transc->remain_len -= transc->max_len; + + if ((uint8_t)USB_USE_DMA == udev->bp.transfer_mode) { + transc->xfer_buf += transc->max_len; + } + + (void)usbd_ctl_recev (udev); + break; + + case USB_CTL_LAST_DATA_OUT: + if (udev->dev.cur_status == (uint8_t)USBD_CONFIGURED) { + if (udev->dev.class_core->ctlx_out != NULL) { + (void)udev->dev.class_core->ctlx_out (udev); + } + } + + transc->remain_len = 0U; + + (void)usbd_ctl_status_send (udev); + break; + + default: + break; + } + } else if ((udev->dev.class_core->data_out != NULL) && (udev->dev.cur_status == (uint8_t)USBD_CONFIGURED)) { + (void)udev->dev.class_core->data_out (udev, ep_num); + } else { + /* no operation */ + } + + return (uint8_t)USBD_OK; +} + +/*! + \brief data in stage processing + \param[in] udev: pointer to USB device instance + \param[in] ep_num: endpoint identifier(0..7) + \param[out] none + \retval USB device operation cur_status +*/ +uint8_t usbd_in_transc (usb_core_driver *udev, uint8_t ep_num) +{ + if (0U == ep_num) { + usb_transc *transc = &udev->dev.transc_in[0]; + + switch (udev->dev.control.ctl_state) { + case USB_CTL_DATA_IN: + /* update transfer length */ + transc->remain_len -= transc->max_len; + + if ((uint8_t)USB_USE_DMA == udev->bp.transfer_mode) { + transc->xfer_buf += transc->max_len; + } + + (void)usbd_ctl_send (udev); + break; + + case USB_CTL_LAST_DATA_IN: + /* last packet is MPS multiple, so send ZLP packet */ + if (udev->dev.control.ctl_zlp) { + (void)usbd_ep_send (udev, 0U, NULL, 0U); + + udev->dev.control.ctl_zlp = 0U; + } else { + if (udev->dev.cur_status == (uint8_t)USBD_CONFIGURED) { + if (udev->dev.class_core->ctlx_in != NULL) { + (void)udev->dev.class_core->ctlx_in (udev); + } + } + + transc->remain_len = 0U; + + (void)usbd_ctl_status_recev (udev); + } + break; + + default: + break; + } + } else { + if ((udev->dev.cur_status == (uint8_t)USBD_CONFIGURED) && (udev->dev.class_core->data_in != NULL)) { + (void)udev->dev.class_core->data_in (udev, ep_num); + } + } + + return (uint8_t)USBD_OK; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usb_core.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usb_core.h new file mode 100644 index 0000000000..83939f2df5 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usb_core.h @@ -0,0 +1,163 @@ +/*! + \file drv_usb_core.h + \brief USB core low level driver header file + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __DRV_USB_CORE_H +#define __DRV_USB_CORE_H + +#include "drv_usb_regs.h" +#include "usb_ch9_std.h" + +#define USB_FS_EP0_MAX_LEN 64U /*!< maximum packet size of endpoint 0 */ +#define HC_MAX_PACKET_COUNT 140U /*!< maximum packet count */ + +#define EP_ID(x) ((uint8_t)((x) & 0x7FU)) /*!< endpoint number */ +#define EP_DIR(x) ((uint8_t)((x) >> 7)) /*!< endpoint direction */ + +enum _usb_mode { + DEVICE_MODE = 0U, /*!< device mode */ + HOST_MODE, /*!< host mode */ + OTG_MODE /*!< OTG mode */ +}; + +enum _usb_eptype { + USB_EPTYPE_CTRL = 0U, /*!< control endpoint type */ + USB_EPTYPE_ISOC = 1U, /*!< isochronous endpoint type */ + USB_EPTYPE_BULK = 2U, /*!< bulk endpoint type */ + USB_EPTYPE_INTR = 3U, /*!< interrupt endpoint type */ + USB_EPTYPE_MASK = 3U /*!< endpoint type mask */ +}; + +typedef enum +{ + USB_OTG_OK = 0U, /*!< USB OTG status OK*/ + USB_OTG_FAIL /*!< USB OTG status fail*/ +} usb_otg_status; + +typedef enum +{ + USB_OK = 0U, /*!< USB status OK*/ + USB_FAIL /*!< USB status fail*/ +} usb_status; + +typedef enum +{ + USB_USE_FIFO, /*!< USB use FIFO transfer mode */ + USB_USE_DMA /*!< USB use DMA transfer mode */ +} usb_transfer_mode; + +typedef struct +{ + uint8_t core_enum; /*!< USB core type */ + uint8_t core_speed; /*!< USB core speed */ + uint8_t num_pipe; /*!< USB host channel numbers */ + uint8_t num_ep; /*!< USB device endpoint numbers */ + uint8_t transfer_mode; /*!< USB transfer mode */ + uint8_t phy_itf; /*!< USB core PHY interface */ + uint8_t sof_enable; /*!< USB SOF output */ + uint8_t low_power; /*!< USB low power */ + uint8_t lpm_enable; /*!< USB link power mode(LPM) */ + uint8_t vbus_sensing_enable; /*!< USB VBUS sensing feature */ + uint8_t use_dedicated_ep1; /*!< USB dedicated endpoint1 interrupt */ + uint8_t use_external_vbus; /*!< enable or disable the use of the external VBUS */ + uint32_t base_reg; /*!< base register address */ +} usb_core_basic; + +/* static inline function definitions */ + +/*! + \brief get the global interrupts + \param[in] usb_regs: pointer to USB core registers + \param[out] none + \retval interrupt status +*/ +static inline uint32_t usb_coreintr_get(usb_core_regs *usb_regs) +{ + return usb_regs->gr->GINTEN & usb_regs->gr->GINTF; +} + +/*! + \brief set USB RX FIFO size + \param[in] usb_regs: pointer to USB core registers + \param[in] size: assigned FIFO size + \param[out] none + \retval none +*/ +static inline void usb_set_rxfifo(usb_core_regs *usb_regs, uint16_t size) +{ + usb_regs->gr->GRFLEN = size; +} + +/*! + \brief enable the global interrupts + \param[in] usb_regs: pointer to USB core registers + \param[out] none + \retval none +*/ +static inline void usb_globalint_enable(usb_core_regs *usb_regs) +{ + /* enable USB global interrupt */ + usb_regs->gr->GAHBCS |= GAHBCS_GINTEN; +} + +/*! + \brief disable the global interrupts + \param[in] usb_regs: pointer to USB core registers + \param[out] none + \retval none +*/ +static inline void usb_globalint_disable(usb_core_regs *usb_regs) +{ + /* disable USB global interrupt */ + usb_regs->gr->GAHBCS &= ~GAHBCS_GINTEN; +} + +/* function declarations */ +/* configure core capabilities */ +usb_status usb_basic_init (usb_core_basic *usb_basic, usb_core_regs *usb_regs, usb_core_enum usb_core); +/* initializes the USB controller registers and prepares the core device mode or host mode operation */ +usb_status usb_core_init (usb_core_basic usb_basic, usb_core_regs *usb_regs); +/* write a packet into the Tx FIFO associated with the endpoint */ +usb_status usb_txfifo_write (usb_core_regs *usb_regs, uint8_t *src_buf, uint8_t fifo_num, uint16_t byte_count); +/* read a packet from the Rx FIFO associated with the endpoint */ +void *usb_rxfifo_read (usb_core_regs *usb_regs, uint8_t *dest_buf, uint16_t byte_count); +/* flush a Tx FIFO or all Tx FIFOs */ +usb_status usb_txfifo_flush (usb_core_regs *usb_regs, uint8_t fifo_num); +/* flush the entire Rx FIFO */ +usb_status usb_rxfifo_flush (usb_core_regs *usb_regs); +/* set endpoint or channel TX FIFO size */ +void usb_set_txfifo(usb_core_regs *usb_regs, uint8_t fifo, uint16_t size); +/* set USB current mode */ +void usb_curmode_set(usb_core_regs *usb_regs, uint8_t mode); + +#endif /* __DRV_USB_CORE_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usb_dev.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usb_dev.h new file mode 100644 index 0000000000..93c91fd1e1 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usb_dev.h @@ -0,0 +1,300 @@ +/*! + \file drv_usb_dev.h + \brief USB device low level driver header file + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 + \version 2020-12-11, V1.1.1, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __DRV_USB_DEV_H +#define __DRV_USB_DEV_H + +#include "usbd_conf.h" +#include "drv_usb_core.h" + +enum usb_ctl_status { + USB_CTL_IDLE = 0U, /*!< USB control transfer idle state */ + USB_CTL_DATA_IN, /*!< USB control transfer data in state */ + USB_CTL_LAST_DATA_IN, /*!< USB control transfer last data in state */ + USB_CTL_DATA_OUT, /*!< USB control transfer data out state */ + USB_CTL_LAST_DATA_OUT, /*!< USB control transfer last data out state */ + USB_CTL_STATUS_IN, /*!< USB control transfer status in state*/ + USB_CTL_STATUS_OUT /*!< USB control transfer status out state */ +}; + +#define EP_IN(x) ((uint8_t)(0x80U | (x))) /*!< device IN endpoint */ +#define EP_OUT(x) ((uint8_t)(x)) /*!< device OUT endpoint */ + +/* USB descriptor */ +typedef struct _usb_desc { + uint8_t *dev_desc; /*!< device descriptor */ + uint8_t *config_desc; /*!< configure descriptor */ + uint8_t *bos_desc; /*!< BOS descriptor */ + + void* const *strings; /*!< string descriptor */ +} usb_desc; + +/* USB power management */ +typedef struct _usb_pm { + uint8_t power_mode; /*!< power mode */ + uint8_t power_low; /*!< power low */ + uint8_t dev_remote_wakeup; /*!< remote wakeup */ + uint8_t remote_wakeup_on; /*!< remote wakeup on */ +} usb_pm; + +/* USB control information */ +typedef struct _usb_control { + usb_req req; /*!< USB standard device request */ + + uint8_t ctl_state; /*!< USB control transfer state */ + uint8_t ctl_zlp; /*!< zero length package */ +} usb_control; + +typedef struct +{ + struct { + uint8_t num: 4; /*!< the endpoint number.it can be from 0 to 6 */ + uint8_t pad: 3; /*!< padding between number and direction */ + uint8_t dir: 1; /*!< the endpoint direction */ + } ep_addr; + + uint8_t ep_type; /*!< USB endpoint type */ + uint8_t ep_stall; /*!< USB endpoint stall status */ + + uint8_t frame_num; /*!< number of frame */ + uint16_t max_len; /*!< Maximum packet length */ + + /* transaction level variables */ + uint8_t *xfer_buf; /*!< transmit buffer */ + uint32_t xfer_len; /*!< transmit buffer length */ + uint32_t xfer_count; /*!< transmit buffer count */ + + uint32_t remain_len; /*!< remain packet length */ + + uint32_t dma_addr; /*!< DMA address */ +} usb_transc; + +typedef struct _usb_core_driver usb_dev; + +typedef struct _usb_class_core +{ + uint8_t command; /*!< device class request command */ + uint8_t alter_set; /*!< alternative set */ + + uint8_t (*init) (usb_dev *udev, uint8_t config_index); /*!< initialize handler */ + uint8_t (*deinit) (usb_dev *udev, uint8_t config_index); /*!< de-initialize handler */ + + uint8_t (*req_proc) (usb_dev *udev, usb_req *req); /*!< device request handler */ + + uint8_t (*set_intf) (usb_dev *udev, usb_req *req); /*!< device set interface callback */ + + uint8_t (*ctlx_in) (usb_dev *udev); /*!< device contrl in callback */ + uint8_t (*ctlx_out) (usb_dev *udev); /*!< device contrl out callback */ + + uint8_t (*data_in) (usb_dev *udev, uint8_t ep_num); /*!< device data in handler */ + uint8_t (*data_out) (usb_dev *udev, uint8_t ep_num); /*!< device data out handler */ + + uint8_t (*SOF) (usb_dev *udev); /*!< Start of frame handler */ + + uint8_t (*incomplete_isoc_in) (usb_dev *udev); /*!< Incomplete synchronization IN transfer handler */ + uint8_t (*incomplete_isoc_out) (usb_dev *udev); /*!< Incomplete synchronization OUT transfer handler */ +} usb_class_core; + +typedef struct _usb_perp_dev +{ + uint8_t config; /*!< configuration */ + uint8_t dev_addr; /*!< device address */ + + __IO uint8_t cur_status; /*!< current status */ + __IO uint8_t backup_status; /*!< backup status */ + + usb_transc transc_in[USBFS_MAX_TX_FIFOS]; /*!< endpoint IN transaction */ + usb_transc transc_out[USBFS_MAX_TX_FIFOS]; /*!< endpoint OUT transaction */ + + usb_pm pm; /*!< power management */ + usb_control control; /*!< USB control information */ + usb_desc *desc; /*!< USB descriptors pointer */ + usb_class_core *class_core; /*!< class driver */ + void *class_data[USBD_ITF_MAX_NUM]; /*!< class data pointer */ + void *user_data; /*!< user data pointer */ + void *pdata; /*!< reserved data pointer */ +} usb_perp_dev; + +typedef struct _usb_core_driver +{ + usb_core_basic bp; /*!< USB basic parameters */ + usb_core_regs regs; /*!< USB registers */ + usb_perp_dev dev; /*!< USB peripheral device */ +} usb_core_driver; + +/* static inline function definitions */ + +/*! + \brief configure the USB device to be disconnected + \param[in] udev: pointer to USB device + \param[out] none + \retval operation status +*/ +static inline void usb_dev_disconnect (usb_core_driver *udev) +{ + udev->regs.dr->DCTL |= DCTL_SD; +} + +/*! + \brief configure the USB device to be connected + \param[in] udev: pointer to USB device + \param[out] none + \retval operation status +*/ +static inline void usb_dev_connect (usb_core_driver *udev) +{ + udev->regs.dr->DCTL &= ~DCTL_SD; +} + +/*! + \brief set the USB device address + \param[in] udev: pointer to USB device + \param[in] dev_addr: device address for setting + \param[out] none + \retval operation status +*/ +static inline void usb_devaddr_set (usb_core_driver *udev, uint8_t dev_addr) +{ + udev->regs.dr->DCFG &= ~DCFG_DAR; + udev->regs.dr->DCFG |= (uint32_t)dev_addr << 4; +} + +/*! + \brief read device all OUT endpoint interrupt register + \param[in] udev: pointer to USB device + \param[out] none + \retval interrupt status +*/ +static inline uint32_t usb_oepintnum_read (usb_core_driver *udev) +{ + uint32_t value = udev->regs.dr->DAEPINT; + + value &= udev->regs.dr->DAEPINTEN; + + return (value & DAEPINT_OEPITB) >> 16; +} + +/*! + \brief read device OUT endpoint interrupt flag register + \param[in] udev: pointer to USB device + \param[in] ep_num: endpoint number + \param[out] none + \retval interrupt status +*/ +static inline uint32_t usb_oepintr_read (usb_core_driver *udev, uint8_t ep_num) +{ + uint32_t value = udev->regs.er_out[ep_num]->DOEPINTF; + + value &= udev->regs.dr->DOEPINTEN; + + return value; +} + +/*! + \brief read device all IN endpoint interrupt register + \param[in] udev: pointer to USB device + \param[out] none + \retval interrupt status +*/ +static inline uint32_t usb_iepintnum_read (usb_core_driver *udev) +{ + uint32_t value = udev->regs.dr->DAEPINT; + + value &= udev->regs.dr->DAEPINTEN; + + return value & DAEPINT_IEPITB; +} + +/*! + \brief set remote wakeup signaling + \param[in] udev: pointer to USB device + \param[out] none + \retval none +*/ +static inline void usb_rwkup_set (usb_core_driver *udev) +{ + if (udev->dev.pm.dev_remote_wakeup) { + /* enable remote wakeup signaling */ + udev->regs.dr->DCTL |= DCTL_RWKUP; + } +} + +/*! + \brief reset remote wakeup signaling + \param[in] udev: pointer to USB device + \param[out] none + \retval none +*/ +static inline void usb_rwkup_reset (usb_core_driver *udev) +{ + if (udev->dev.pm.dev_remote_wakeup) { + /* disable remote wakeup signaling */ + udev->regs.dr->DCTL &= ~DCTL_RWKUP; + } +} + +/* function declarations */ +/* initialize USB core registers for device mode */ +usb_status usb_devcore_init (usb_core_driver *udev); +/* enable the USB device mode interrupts */ +usb_status usb_devint_enable (usb_core_driver *udev); +/* active the USB endpoint 0 transaction */ +usb_status usb_transc0_active (usb_core_driver *udev, usb_transc *transc); +/* active the USB transaction */ +usb_status usb_transc_active (usb_core_driver *udev, usb_transc *transc); +/* deactivate the USB transaction */ +usb_status usb_transc_deactivate (usb_core_driver *udev, usb_transc *transc); +/* configure USB transaction to start IN transfer */ +usb_status usb_transc_inxfer (usb_core_driver *udev, usb_transc *transc); +/* configure USB transaction to start OUT transfer */ +usb_status usb_transc_outxfer (usb_core_driver *udev, usb_transc *transc); +/* set the USB transaction STALL status */ +usb_status usb_transc_stall (usb_core_driver *udev, usb_transc *transc); +/* clear the USB transaction STALL status */ +usb_status usb_transc_clrstall (usb_core_driver *udev, usb_transc *transc); +/* read device IN endpoint interrupt flag register */ +uint32_t usb_iepintr_read (usb_core_driver *udev, uint8_t ep_num); +/* configures OUT endpoint 0 to receive SETUP packets */ +void usb_ctlep_startout (usb_core_driver *udev); +/* active remote wakeup signaling */ +void usb_rwkup_active (usb_core_driver *udev); +/* active USB core clock */ +void usb_clock_active (usb_core_driver *udev); +/* USB device suspend */ +void usb_dev_suspend (usb_core_driver *udev); +/* stop the device and clean up FIFOs */ +void usb_dev_stop (usb_core_driver *udev); + +#endif /* __DRV_USB_DEV_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usb_host.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usb_host.h new file mode 100644 index 0000000000..14a0989978 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usb_host.h @@ -0,0 +1,193 @@ +/*! + \file drv_usb_host.h + \brief USB host mode low level driver header file + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __DRV_USB_HOST_H +#define __DRV_USB_HOST_H + +#include "drv_usb_regs.h" +#include "usb_ch9_std.h" +#include "drv_usb_core.h" + +typedef enum _usb_pipe_status +{ + PIPE_IDLE = 0U, + PIPE_XF, + PIPE_HALTED, + PIPE_NAK, + PIPE_NYET, + PIPE_STALL, + PIPE_TRACERR, + PIPE_BBERR, + PIPE_REQOVR, + PIPE_DTGERR, +} usb_pipe_staus; + +typedef enum _usb_pipe_mode +{ + PIPE_PERIOD = 0U, + PIPE_NON_PERIOD = 1U +} usb_pipe_mode; + +typedef enum _usb_urb_state +{ + URB_IDLE = 0U, + URB_DONE, + URB_NOTREADY, + URB_ERROR, + URB_STALL, + URB_PING +} usb_urb_state; + +typedef struct _usb_pipe +{ + uint8_t in_used; + uint8_t dev_addr; + uint32_t dev_speed; + + struct { + uint8_t num; + uint8_t dir; + uint8_t type; + uint16_t mps; + } ep; + + uint8_t ping; + uint32_t DPID; + + uint8_t *xfer_buf; + uint32_t xfer_len; + uint32_t xfer_count; + + uint8_t data_toggle_in; + uint8_t data_toggle_out; + + __IO uint32_t err_count; + __IO usb_pipe_staus pp_status; + __IO usb_urb_state urb_state; +} usb_pipe; + + +typedef struct _usb_host_drv +{ + __IO uint32_t connect_status; + __IO uint32_t port_enabled; + __IO uint32_t backup_xfercount[USBFS_MAX_TX_FIFOS]; + + usb_pipe pipe[USBFS_MAX_TX_FIFOS]; + void *data; +} usb_host_drv; + +typedef struct _usb_core_driver +{ + usb_core_basic bp; + usb_core_regs regs; + usb_host_drv host; +} usb_core_driver; + +/*! + \brief get USB even frame + \param[in] pudev: pointer to USB device + \param[out] none + \retval none +*/ +static inline uint8_t usb_frame_even (usb_core_driver *pudev) +{ + return (uint8_t)!(pudev->regs.hr->HFINFR & 0x01U); +} + +/*! + \brief configure USB clock of PHY + \param[in] pudev: pointer to USB device + \param[in] clock: PHY clock + \param[out] none + \retval none +*/ +static inline void usb_phyclock_config (usb_core_driver *pudev, uint8_t clock) +{ + pudev->regs.hr->HCTL &= ~HCTL_CLKSEL; + pudev->regs.hr->HCTL |= clock; +} + +/*! + \brief read USB port + \param[in] pudev: pointer to USB device + \param[out] none + \retval port status +*/ +static inline uint32_t usb_port_read (usb_core_driver *pudev) +{ + return *pudev->regs.HPCS & ~(HPCS_PE | HPCS_PCD | HPCS_PEDC); +} + +/*! + \brief get USB current speed + \param[in] pudev: pointer to USB device + \param[out] none + \retval USB current speed +*/ +static inline uint32_t usb_curspeed_get (usb_core_driver *pudev) +{ + return *pudev->regs.HPCS & HPCS_PS; +} + +/*! + \brief get USB current frame + \param[in] pudev: pointer to USB device + \param[out] none + \retval USB current frame +*/ +static inline uint32_t usb_curframe_get (usb_core_driver *pudev) +{ + return (pudev->regs.hr->HFINFR & 0xFFFFU); +} + +/* function declarations */ +/* initializes USB core for host mode */ +usb_status usb_host_init (usb_core_driver *pudev); +/* control the VBUS to power */ +void usb_portvbus_switch (usb_core_driver *pudev, uint8_t state); +/* reset host port */ +uint32_t usb_port_reset (usb_core_driver *pudev); +/* initialize host pipe */ +usb_status usb_pipe_init (usb_core_driver *pudev, uint8_t pipe_num); +/* prepare host pipe for transferring packets */ +usb_status usb_pipe_xfer (usb_core_driver *pudev, uint8_t pipe_num); +/* halt host pipe */ +usb_status usb_pipe_halt (usb_core_driver *pudev, uint8_t pipe_num); +/* configure host pipe to do ping operation */ +usb_status usb_pipe_ping (usb_core_driver *pudev, uint8_t pipe_num); +/* stop the USB host and clean up FIFO */ +void usb_host_stop (usb_core_driver *pudev); + +#endif /* __DRV_USB_HOST_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usb_hw.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usb_hw.h new file mode 100644 index 0000000000..b8b423a0d5 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usb_hw.h @@ -0,0 +1,69 @@ +/*! + \file drv_usb_hw.h + \brief usb hardware configuration header file + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __DRV_USB_HW_H +#define __DRV_USB_HW_H + +#include "usb_conf.h" + +/* function declarations */ +/* configure USB clock */ +void usb_rcu_config (void); +/* configure USB interrupt */ +void usb_intr_config (void); +/* initializes delay unit using Timer2 */ +void usb_timer_init (void); +/* delay in micro seconds */ +void usb_udelay (const uint32_t usec); +/* delay in milliseconds */ +void usb_mdelay (const uint32_t msec); +/* configures system clock after wakeup from STOP mode */ +void system_clk_config_stop(void); + +/* configure the CTC peripheral */ +#ifdef USE_IRC48M + void ctc_config(void); +#endif /* USE_IRC48M */ + +#ifdef USE_HOST_MODE + void systick_config(void); + + /* configure USB VBus */ + void usb_vbus_config (void); + + /* drive USB VBus */ + void usb_vbus_drive (uint8_t State); +#endif /* USE_HOST_MODE */ + +#endif /* __DRV_USB_HW_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usb_regs.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usb_regs.h new file mode 100644 index 0000000000..877aea76cb --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usb_regs.h @@ -0,0 +1,657 @@ +/*! + \file drv_usb_regs.h + \brief USB cell registers definition and handle macros + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __DRV_USB_REGS_H +#define __DRV_USB_REGS_H + +#include "usb_conf.h" + +#define USBHS_REG_BASE 0x40040000L /*!< base address of USBHS registers */ +#define USBFS_REG_BASE 0x50000000L /*!< base address of USBFS registers */ + +#define USBFS_MAX_TX_FIFOS 15U /*!< FIFO number */ + +#define USBFS_MAX_PACKET_SIZE 64U /*!< USBFS max packet size */ +#define USBFS_MAX_CHANNEL_COUNT 8U /*!< USBFS host channel count */ +#define USBFS_MAX_EP_COUNT 4U /*!< USBFS device endpoint count */ +#define USBFS_MAX_FIFO_WORDLEN 320U /*!< USBFS max fifo size in words */ + +#define USBHS_MAX_PACKET_SIZE 512U /*!< USBHS max packet size */ +#define USBHS_MAX_CHANNEL_COUNT 12U /*!< USBHS host channel count */ +#define USBHS_MAX_EP_COUNT 6U /*!< USBHS device endpoint count */ +#define USBHS_MAX_FIFO_WORDLEN 1280U /*!< USBHS max fifo size in words */ + +#define USB_DATA_FIFO_OFFSET 0x1000U /*!< USB data fifo offset */ +#define USB_DATA_FIFO_SIZE 0x1000U /*!< USB data fifo size */ + +typedef enum +{ + USB_CORE_ENUM_HS = 0, /*!< USB core type is HS */ + USB_CORE_ENUM_FS = 1 /*!< USB core type is FS */ +} usb_core_enum; + +enum USB_SPEED { + USB_SPEED_UNKNOWN = 0, /*!< USB speed unknown */ + USB_SPEED_LOW, /*!< USB speed low */ + USB_SPEED_FULL, /*!< USB speed full */ + USB_SPEED_HIGH, /*!< USB speed high */ +}; + +enum usb_reg_offset { + USB_REG_OFFSET_CORE = 0x0000U, /*!< global OTG control and status register */ + USB_REG_OFFSET_DEV = 0x0800U, /*!< device mode control and status registers */ + USB_REG_OFFSET_EP = 0x0020U, + USB_REG_OFFSET_EP_IN = 0x0900U, /*!< device IN endpoint 0 control register */ + USB_REG_OFFSET_EP_OUT = 0x0B00U, /*!< device OUT endpoint 0 control register */ + USB_REG_OFFSET_HOST = 0x0400U, /*!< host control register */ + USB_REG_OFFSET_CH = 0x0020U, + USB_REG_OFFSET_PORT = 0x0440U, /*!< host port control and status register */ + USB_REG_OFFSET_CH_INOUT = 0x0500U, /*!< Host channel-x control registers */ + USB_REG_OFFSET_PWRCLKCTL = 0x0E00U, /*!< power and clock register */ +}; + +typedef struct +{ + __IO uint32_t GOTGCS; /*!< USB global OTG control and status register 000h */ + __IO uint32_t GOTGINTF; /*!< USB global OTG interrupt flag register 004h */ + __IO uint32_t GAHBCS; /*!< USB global AHB control and status register 008h */ + __IO uint32_t GUSBCS; /*!< USB global USB control and status register 00Ch */ + __IO uint32_t GRSTCTL; /*!< USB global reset control register 010h */ + __IO uint32_t GINTF; /*!< USB global interrupt flag register 014h */ + __IO uint32_t GINTEN; /*!< USB global interrupt enable register 018h */ + __IO uint32_t GRSTATR; /*!< USB receive status debug read register 01Ch */ + __IO uint32_t GRSTATP; /*!< USB receive status and pop register 020h */ + __IO uint32_t GRFLEN; /*!< USB global receive FIFO length register 024h */ + __IO uint32_t DIEP0TFLEN_HNPTFLEN; /*!< USB device IN endpoint 0/host non-periodic transmit FIFO length register 028h */ + __IO uint32_t HNPTFQSTAT; /*!< USB host non-periodic FIFO/queue status register 02Ch */ + uint32_t Reserved30[2]; /*!< Reserved 030h */ + __IO uint32_t GCCFG; /*!< USB global core configuration register 038h */ + __IO uint32_t CID; /*!< USB core ID register 03Ch */ + uint32_t Reserved40[48]; /*!< Reserved 040h-0FFh */ + __IO uint32_t HPTFLEN; /*!< USB host periodic transmit FIFO length register 100h */ + __IO uint32_t DIEPTFLEN[15]; /*!< USB device IN endpoint transmit FIFO length register 104h */ +} usb_gr; + +typedef struct +{ + __IO uint32_t HCTL; /*!< USB host control register 400h */ + __IO uint32_t HFT; /*!< USB host frame interval register 404h */ + __IO uint32_t HFINFR; /*!< USB host frame information remaining register 408h */ + uint32_t Reserved40C; /*!< Reserved 40Ch */ + __IO uint32_t HPTFQSTAT; /*!< USB host periodic transmit FIFO/queue status register 410h */ + __IO uint32_t HACHINT; /*!< USB host all channels interrupt register 414h */ + __IO uint32_t HACHINTEN; /*!< USB host all channels interrupt enable register 418h */ +} usb_hr; + +typedef struct +{ + __IO uint32_t HCHCTL; /*!< USB host channel control register 500h */ + __IO uint32_t HCHSTCTL; /*!< Reserved 504h */ + __IO uint32_t HCHINTF; /*!< USB host channel interrupt flag register 508h */ + __IO uint32_t HCHINTEN; /*!< USB host channel interrupt enable register 50Ch */ + __IO uint32_t HCHLEN; /*!< USB host channel transfer length register 510h */ + __IO uint32_t HCHDMAADDR; /*!< USB host channel-x DMA address register 514h*/ + uint32_t Reserved[2]; +} usb_pr; + +typedef struct +{ + __IO uint32_t DCFG; /*!< USB device configuration register 800h */ + __IO uint32_t DCTL; /*!< USB device control register 804h */ + __IO uint32_t DSTAT; /*!< USB device status register 808h */ + uint32_t Reserved0C; /*!< Reserved 80Ch */ + __IO uint32_t DIEPINTEN; /*!< USB device IN endpoint common interrupt enable register 810h */ + __IO uint32_t DOEPINTEN; /*!< USB device OUT endpoint common interrupt enable register 814h */ + __IO uint32_t DAEPINT; /*!< USB device all endpoints interrupt register 818h */ + __IO uint32_t DAEPINTEN; /*!< USB device all endpoints interrupt enable register 81Ch */ + uint32_t Reserved20; /*!< Reserved 820h */ + uint32_t Reserved24; /*!< Reserved 824h */ + __IO uint32_t DVBUSDT; /*!< USB device VBUS discharge time register 828h */ + __IO uint32_t DVBUSPT; /*!< USB device VBUS pulsing time register 82Ch */ + __IO uint32_t DTHRCTL; /*!< dev threshold control 830h */ + __IO uint32_t DIEPFEINTEN; /*!< USB Device IN endpoint FIFO empty interrupt enable register 834h */ + __IO uint32_t DEP1INT; /*!< USB device endpoint 1 interrupt register 838h */ + __IO uint32_t DEP1INTEN; /*!< USB device endpoint 1 interrupt enable register 83Ch */ + uint32_t Reserved40; /*!< Reserved 840h */ + __IO uint32_t DIEP1INTEN; /*!< USB device IN endpoint-1 interrupt enable register 844h */ + uint32_t Reserved48[15]; /*!< Reserved 848-880h */ + __IO uint32_t DOEP1INTEN; /*!< USB device OUT endpoint-1 interrupt enable register 884h */ +} usb_dr; + +typedef struct +{ + __IO uint32_t DIEPCTL; /*!< USB device IN endpoint control register 900h + (EpNum * 20h) + 00h */ + uint32_t Reserved04; /*!< Reserved 900h + (EpNum * 20h) + 04h */ + __IO uint32_t DIEPINTF; /*!< USB device IN endpoint interrupt flag register 900h + (EpNum * 20h) + 08h */ + uint32_t Reserved0C; /*!< Reserved 900h + (EpNum * 20h) + 0Ch */ + __IO uint32_t DIEPLEN; /*!< USB device IN endpoint transfer length register 900h + (EpNum * 20h) + 10h */ + __IO uint32_t DIEPDMAADDR; /*!< Device IN endpoint-x DMA address register 900h + (EpNum * 20h) + 14h */ + __IO uint32_t DIEPTFSTAT; /*!< USB device IN endpoint transmit FIFO status register 900h + (EpNum * 20h) + 18h */ +} usb_erin; + +typedef struct +{ + __IO uint32_t DOEPCTL; /*!< USB device IN endpoint control register B00h + (EpNum * 20h) + 00h */ + uint32_t Reserved04; /*!< Reserved B00h + (EpNum * 20h) + 04h */ + __IO uint32_t DOEPINTF; /*!< USB device IN endpoint interrupt flag register B00h + (EpNum * 20h) + 08h */ + uint32_t Reserved0C; /*!< Reserved B00h + (EpNum * 20h) + 0Ch */ + __IO uint32_t DOEPLEN; /*!< USB device IN endpoint transfer length register B00h + (EpNum * 20h) + 10h */ + __IO uint32_t DOEPDMAADDR; /*!< Device OUT endpoint-x DMA address register B00h + (EpNum * 20h) + 0Ch */ +} usb_erout; + +typedef struct _usb_regs +{ + usb_gr *gr; /*!< USBFS global registers */ + usb_dr *dr; /*!< Device control and status registers */ + usb_hr *hr; /*!< Host control and status registers */ + usb_erin *er_in[6]; /*!< USB device IN endpoint register */ + usb_erout *er_out[6]; /*!< USB device OUT endpoint register */ + usb_pr *pr[15]; /*!< USB Host channel-x control register */ + + __IO uint32_t *HPCS; /*!< USB host port control and status register */ + __IO uint32_t *DFIFO[USBFS_MAX_TX_FIFOS]; + __IO uint32_t *PWRCLKCTL; /*!< USB power and clock control register */ +} usb_core_regs; + +/* global OTG control and status register bits definitions */ +#define GOTGCS_BSV BIT(19) /*!< B-Session Valid */ +#define GOTGCS_ASV BIT(18) /*!< A-session valid */ +#define GOTGCS_DI BIT(17) /*!< debounce interval */ +#define GOTGCS_CIDPS BIT(16) /*!< id pin status */ +#define GOTGCS_DHNPEN BIT(11) /*!< device HNP enable */ +#define GOTGCS_HHNPEN BIT(10) /*!< host HNP enable */ +#define GOTGCS_HNPREQ BIT(9) /*!< HNP request */ +#define GOTGCS_HNPS BIT(8) /*!< HNP successes */ +#define GOTGCS_SRPREQ BIT(1) /*!< SRP request */ +#define GOTGCS_SRPS BIT(0) /*!< SRP successes */ + +/* global OTG interrupt flag register bits definitions */ +#define GOTGINTF_DF BIT(19) /*!< debounce finish */ +#define GOTGINTF_ADTO BIT(18) /*!< A-device timeout */ +#define GOTGINTF_HNPDET BIT(17) /*!< host negotiation request detected */ +#define GOTGINTF_HNPEND BIT(9) /*!< HNP end */ +#define GOTGINTF_SRPEND BIT(8) /*!< SRP end */ +#define GOTGINTF_SESEND BIT(2) /*!< session end */ + +/* global AHB control and status register bits definitions */ +#define GAHBCS_PTXFTH BIT(8) /*!< periodic Tx FIFO threshold */ +#define GAHBCS_TXFTH BIT(7) /*!< tx FIFO threshold */ +#define GAHBCS_DMAEN BIT(5) /*!< DMA function Enable */ +#define GAHBCS_BURST BITS(1, 4) /*!< the AHB burst type used by DMA */ +#define GAHBCS_GINTEN BIT(0) /*!< global interrupt enable */ + +/* global USB control and status register bits definitions */ +#define GUSBCS_FDM BIT(30) /*!< force device mode */ +#define GUSBCS_FHM BIT(29) /*!< force host mode */ +#define GUSBCS_ULPIEOI BIT(21) /*!< ULPI external over-current indicator */ +#define GUSBCS_ULPIEVD BIT(20) /*!< ULPI external VBUS driver */ +#define GUSBCS_UTT BITS(10, 13) /*!< USB turnaround time */ +#define GUSBCS_HNPCEN BIT(9) /*!< HNP capability enable */ +#define GUSBCS_SRPCEN BIT(8) /*!< SRP capability enable */ +#define GUSBCS_EMBPHY BIT(6) /*!< embedded PHY selected */ +#define GUSBCS_TOC BITS(0, 2) /*!< timeout calibration */ + +/* global reset control register bits definitions */ +#define GRSTCTL_DMAIDL BIT(31) /*!< DMA idle state */ +#define GRSTCTL_DMABSY BIT(30) /*!< DMA busy */ +#define GRSTCTL_TXFNUM BITS(6, 10) /*!< tx FIFO number */ +#define GRSTCTL_TXFF BIT(5) /*!< tx FIFO flush */ +#define GRSTCTL_RXFF BIT(4) /*!< rx FIFO flush */ +#define GRSTCTL_HFCRST BIT(2) /*!< host frame counter reset */ +#define GRSTCTL_HCSRST BIT(1) /*!< HCLK soft reset */ +#define GRSTCTL_CSRST BIT(0) /*!< core soft reset */ + +/* global interrupt flag register bits definitions */ +#define GINTF_WKUPIF BIT(31) /*!< wakeup interrupt flag */ +#define GINTF_SESIF BIT(30) /*!< session interrupt flag */ +#define GINTF_DISCIF BIT(29) /*!< disconnect interrupt flag */ +#define GINTF_IDPSC BIT(28) /*!< id pin status change */ +#define GINTF_PTXFEIF BIT(26) /*!< periodic tx FIFO empty interrupt flag */ +#define GINTF_HCIF BIT(25) /*!< host channels interrupt flag */ +#define GINTF_HPIF BIT(24) /*!< host port interrupt flag */ +#define GINTF_PXNCIF BIT(21) /*!< periodic transfer not complete interrupt flag */ +#define GINTF_ISOONCIF BIT(21) /*!< isochronous OUT transfer not complete interrupt flag */ +#define GINTF_ISOINCIF BIT(20) /*!< isochronous IN transfer not complete interrupt flag */ +#define GINTF_OEPIF BIT(19) /*!< OUT endpoint interrupt flag */ +#define GINTF_IEPIF BIT(18) /*!< IN endpoint interrupt flag */ +#define GINTF_EOPFIF BIT(15) /*!< end of periodic frame interrupt flag */ +#define GINTF_ISOOPDIF BIT(14) /*!< isochronous OUT packet dropped interrupt flag */ +#define GINTF_ENUMFIF BIT(13) /*!< enumeration finished */ +#define GINTF_RST BIT(12) /*!< USB reset */ +#define GINTF_SP BIT(11) /*!< USB suspend */ +#define GINTF_ESP BIT(10) /*!< early suspend */ +#define GINTF_GONAK BIT(7) /*!< global OUT NAK effective */ +#define GINTF_GNPINAK BIT(6) /*!< global IN non-periodic NAK effective */ +#define GINTF_NPTXFEIF BIT(5) /*!< non-periodic tx FIFO empty interrupt flag */ +#define GINTF_RXFNEIF BIT(4) /*!< rx FIFO non-empty interrupt flag */ +#define GINTF_SOF BIT(3) /*!< start of frame */ +#define GINTF_OTGIF BIT(2) /*!< OTG interrupt flag */ +#define GINTF_MFIF BIT(1) /*!< mode fault interrupt flag */ +#define GINTF_COPM BIT(0) /*!< current operation mode */ + +/* global interrupt enable register bits definitions */ +#define GINTEN_WKUPIE BIT(31) /*!< wakeup interrupt enable */ +#define GINTEN_SESIE BIT(30) /*!< session interrupt enable */ +#define GINTEN_DISCIE BIT(29) /*!< disconnect interrupt enable */ +#define GINTEN_IDPSCIE BIT(28) /*!< id pin status change interrupt enable */ +#define GINTEN_PTXFEIE BIT(26) /*!< periodic tx FIFO empty interrupt enable */ +#define GINTEN_HCIE BIT(25) /*!< host channels interrupt enable */ +#define GINTEN_HPIE BIT(24) /*!< host port interrupt enable */ +#define GINTEN_IPXIE BIT(21) /*!< periodic transfer not complete interrupt enable */ +#define GINTEN_ISOONCIE BIT(21) /*!< isochronous OUT transfer not complete interrupt enable */ +#define GINTEN_ISOINCIE BIT(20) /*!< isochronous IN transfer not complete interrupt enable */ +#define GINTEN_OEPIE BIT(19) /*!< OUT endpoints interrupt enable */ +#define GINTEN_IEPIE BIT(18) /*!< IN endpoints interrupt enable */ +#define GINTEN_EOPFIE BIT(15) /*!< end of periodic frame interrupt enable */ +#define GINTEN_ISOOPDIE BIT(14) /*!< isochronous OUT packet dropped interrupt enable */ +#define GINTEN_ENUMFIE BIT(13) /*!< enumeration finish enable */ +#define GINTEN_RSTIE BIT(12) /*!< USB reset interrupt enable */ +#define GINTEN_SPIE BIT(11) /*!< USB suspend interrupt enable */ +#define GINTEN_ESPIE BIT(10) /*!< early suspend interrupt enable */ +#define GINTEN_GONAKIE BIT(7) /*!< global OUT NAK effective interrupt enable */ +#define GINTEN_GNPINAKIE BIT(6) /*!< global non-periodic IN NAK effective interrupt enable */ +#define GINTEN_NPTXFEIE BIT(5) /*!< non-periodic Tx FIFO empty interrupt enable */ +#define GINTEN_RXFNEIE BIT(4) /*!< receive FIFO non-empty interrupt enable */ +#define GINTEN_SOFIE BIT(3) /*!< start of frame interrupt enable */ +#define GINTEN_OTGIE BIT(2) /*!< OTG interrupt enable */ +#define GINTEN_MFIE BIT(1) /*!< mode fault interrupt enable */ + +/* global receive status read and pop register bits definitions */ +#define GRSTATRP_RPCKST BITS(17, 20) /*!< received packet status */ +#define GRSTATRP_DPID BITS(15, 16) /*!< data PID */ +#define GRSTATRP_BCOUNT BITS(4, 14) /*!< byte count */ +#define GRSTATRP_CNUM BITS(0, 3) /*!< channel number */ +#define GRSTATRP_EPNUM BITS(0, 3) /*!< endpoint number */ + +/* global receive FIFO length register bits definitions */ +#define GRFLEN_RXFD BITS(0, 15) /*!< rx FIFO depth */ + +/* host non-periodic transmit FIFO length register bits definitions */ +#define HNPTFLEN_HNPTXFD BITS(16, 31) /*!< non-periodic Tx FIFO depth */ +#define HNPTFLEN_HNPTXRSAR BITS(0, 15) /*!< non-periodic Tx RAM start address */ + +/* USB IN endpoint 0 transmit FIFO length register bits definitions */ +#define DIEP0TFLEN_IEP0TXFD BITS(16, 31) /*!< IN Endpoint 0 Tx FIFO depth */ +#define DIEP0TFLEN_IEP0TXRSAR BITS(0, 15) /*!< IN Endpoint 0 TX RAM start address */ + +/* host non-periodic transmit FIFO/queue status register bits definitions */ +#define HNPTFQSTAT_NPTXRQTOP BITS(24, 30) /*!< top entry of the non-periodic Tx request queue */ +#define HNPTFQSTAT_NPTXRQS BITS(16, 23) /*!< non-periodic Tx request queue space */ +#define HNPTFQSTAT_NPTXFS BITS(0, 15) /*!< non-periodic Tx FIFO space */ +#define HNPTFQSTAT_CNUM BITS(27, 30) /*!< channel number*/ +#define HNPTFQSTAT_EPNUM BITS(27, 30) /*!< endpoint number */ +#define HNPTFQSTAT_TYPE BITS(25, 26) /*!< token type */ +#define HNPTFQSTAT_TMF BIT(24) /*!< terminate flag */ + +/* global core configuration register bits definitions */ +#define GCCFG_VBUSIG BIT(21) /*!< vbus ignored */ +#define GCCFG_SOFOEN BIT(20) /*!< SOF output enable */ +#define GCCFG_VBUSBCEN BIT(19) /*!< the VBUS B-device comparer enable */ +#define GCCFG_VBUSACEN BIT(18) /*!< the VBUS A-device comparer enable */ +#define GCCFG_PWRON BIT(16) /*!< power on */ + +/* core ID register bits definitions */ +#define CID_CID BITS(0, 31) /*!< core ID */ + +/* host periodic transmit FIFO length register bits definitions */ +#define HPTFLEN_HPTXFD BITS(16, 31) /*!< host periodic Tx FIFO depth */ +#define HPTFLEN_HPTXFSAR BITS(0, 15) /*!< host periodic Tx RAM start address */ + +/* device IN endpoint transmit FIFO length register bits definitions */ +#define DIEPTFLEN_IEPTXFD BITS(16, 31) /*!< IN endpoint Tx FIFO x depth */ +#define DIEPTFLEN_IEPTXRSAR BITS(0, 15) /*!< IN endpoint FIFOx Tx x RAM start address */ + +/* host control register bits definitions */ +#define HCTL_SPDFSLS BIT(2) /*!< speed limited to FS and LS */ +#define HCTL_CLKSEL BITS(0, 1) /*!< clock select for USB clock */ + +/* host frame interval register bits definitions */ +#define HFT_FRI BITS(0, 15) /*!< frame interval */ + +/* host frame information remaining register bits definitions */ +#define HFINFR_FRT BITS(16, 31) /*!< frame remaining time */ +#define HFINFR_FRNUM BITS(0, 15) /*!< frame number */ + +/* host periodic transmit FIFO/queue status register bits definitions */ +#define HPTFQSTAT_PTXREQT BITS(24, 31) /*!< top entry of the periodic Tx request queue */ +#define HPTFQSTAT_PTXREQS BITS(16, 23) /*!< periodic Tx request queue space */ +#define HPTFQSTAT_PTXFS BITS(0, 15) /*!< periodic Tx FIFO space */ +#define HPTFQSTAT_OEFRM BIT(31) /*!< odd/eveb frame */ +#define HPTFQSTAT_CNUM BITS(27, 30) /*!< channel number */ +#define HPTFQSTAT_EPNUM BITS(27, 30) /*!< endpoint number */ +#define HPTFQSTAT_TYPE BITS(25, 26) /*!< token type */ +#define HPTFQSTAT_TMF BIT(24) /*!< terminate flag */ + +#define TFQSTAT_TXFS BITS(0, 15) +#define TFQSTAT_CNUM BITS(27, 30) + +/* host all channels interrupt register bits definitions */ +#define HACHINT_HACHINT BITS(0, 11) /*!< host all channel interrupts */ + +/* host all channels interrupt enable register bits definitions */ +#define HACHINTEN_CINTEN BITS(0, 11) /*!< channel interrupt enable */ + +/* host port control and status register bits definitions */ +#define HPCS_PS BITS(17, 18) /*!< port speed */ +#define HPCS_PP BIT(12) /*!< port power */ +#define HPCS_PLST BITS(10, 11) /*!< port line status */ +#define HPCS_PRST BIT(8) /*!< port reset */ +#define HPCS_PSP BIT(7) /*!< port suspend */ +#define HPCS_PREM BIT(6) /*!< port resume */ +#define HPCS_PEDC BIT(3) /*!< port enable/disable change */ +#define HPCS_PE BIT(2) /*!< port enable */ +#define HPCS_PCD BIT(1) /*!< port connect detected */ +#define HPCS_PCST BIT(0) /*!< port connect status */ + +/* host channel-x control register bits definitions */ +#define HCHCTL_CEN BIT(31) /*!< channel enable */ +#define HCHCTL_CDIS BIT(30) /*!< channel disable */ +#define HCHCTL_ODDFRM BIT(29) /*!< odd frame */ +#define HCHCTL_DAR BITS(22, 28) /*!< device address */ +#define HCHCTL_MPC BITS(20, 21) /*!< multiple packet count */ +#define HCHCTL_EPTYPE BITS(18, 19) /*!< endpoint type */ +#define HCHCTL_LSD BIT(17) /*!< low-speed device */ +#define HCHCTL_EPDIR BIT(15) /*!< endpoint direction */ +#define HCHCTL_EPNUM BITS(11, 14) /*!< endpoint number */ +#define HCHCTL_MPL BITS(0, 10) /*!< maximum packet length */ + +/* host channel-x split transaction register bits definitions */ +#define HCHSTCTL_SPLEN BIT(31) /*!< enable high-speed split transaction */ +#define HCHSTCTL_CSPLT BIT(16) /*!< complete-split enable */ +#define HCHSTCTL_ISOPCE BITS(14, 15) /*!< isochronous OUT payload continuation encoding */ +#define HCHSTCTL_HADDR BITS(7, 13) /*!< HUB address */ +#define HCHSTCTL_PADDR BITS(0, 6) /*!< port address */ + +/* host channel-x interrupt flag register bits definitions */ +#define HCHINTF_DTER BIT(10) /*!< data toggle error */ +#define HCHINTF_REQOVR BIT(9) /*!< request queue overrun */ +#define HCHINTF_BBER BIT(8) /*!< babble error */ +#define HCHINTF_USBER BIT(7) /*!< USB bus Error */ +#define HCHINTF_NYET BIT(6) /*!< NYET */ +#define HCHINTF_ACK BIT(5) /*!< ACK */ +#define HCHINTF_NAK BIT(4) /*!< NAK */ +#define HCHINTF_STALL BIT(3) /*!< STALL */ +#define HCHINTF_DMAER BIT(2) /*!< DMA error */ +#define HCHINTF_CH BIT(1) /*!< channel halted */ +#define HCHINTF_TF BIT(0) /*!< transfer finished */ + +/* host channel-x interrupt enable register bits definitions */ +#define HCHINTEN_DTERIE BIT(10) /*!< data toggle error interrupt enable */ +#define HCHINTEN_REQOVRIE BIT(9) /*!< request queue overrun interrupt enable */ +#define HCHINTEN_BBERIE BIT(8) /*!< babble error interrupt enable */ +#define HCHINTEN_USBERIE BIT(7) /*!< USB bus error interrupt enable */ +#define HCHINTEN_NYETIE BIT(6) /*!< NYET interrupt enable */ +#define HCHINTEN_ACKIE BIT(5) /*!< ACK interrupt enable */ +#define HCHINTEN_NAKIE BIT(4) /*!< NAK interrupt enable */ +#define HCHINTEN_STALLIE BIT(3) /*!< STALL interrupt enable */ +#define HCHINTEN_DMAERIE BIT(2) /*!< DMA error interrupt enable */ +#define HCHINTEN_CHIE BIT(1) /*!< channel halted interrupt enable */ +#define HCHINTEN_TFIE BIT(0) /*!< transfer finished interrupt enable */ + +/* host channel-x transfer length register bits definitions */ +#define HCHLEN_PING BIT(31) /*!< PING token request */ +#define HCHLEN_DPID BITS(29, 30) /*!< data PID */ +#define HCHLEN_PCNT BITS(19, 28) /*!< packet count */ +#define HCHLEN_TLEN BITS(0, 18) /*!< transfer length */ + +/* host channel-x DMA address register bits definitions */ +#define HCHDMAADDR_DMAADDR BITS(0, 31) /*!< DMA address */ + +#define PORT_SPEED(x) (((uint32_t)(x) << 17) & HPCS_PS) /*!< Port speed */ + +#define PORT_SPEED_HIGH PORT_SPEED(0U) /*!< high speed */ +#define PORT_SPEED_FULL PORT_SPEED(1U) /*!< full speed */ +#define PORT_SPEED_LOW PORT_SPEED(2U) /*!< low speed */ + +#define PIPE_CTL_DAR(x) (((uint32_t)(x) << 22) & HCHCTL_DAR) /*!< device address */ +#define PIPE_CTL_EPTYPE(x) (((uint32_t)(x) << 18) & HCHCTL_EPTYPE) /*!< endpoint type */ +#define PIPE_CTL_EPNUM(x) (((uint32_t)(x) << 11) & HCHCTL_EPNUM) /*!< endpoint number */ +#define PIPE_CTL_EPDIR(x) (((uint32_t)(x) << 15) & HCHCTL_EPDIR) /*!< endpoint direction */ +#define PIPE_CTL_EPMPL(x) (((uint32_t)(x) << 0) & HCHCTL_MPL) /*!< maximum packet length */ +#define PIPE_CTL_LSD(x) (((uint32_t)(x) << 17) & HCHCTL_LSD) /*!< low-Speed device */ + +#define PIPE_XFER_PCNT(x) (((uint32_t)(x) << 19) & HCHLEN_PCNT) /*!< packet count */ +#define PIPE_XFER_DPID(x) (((uint32_t)(x) << 29) & HCHLEN_DPID) /*!< data PID */ + +#define PIPE_DPID_DATA0 PIPE_XFER_DPID(0) /*!< DATA0 */ +#define PIPE_DPID_DATA1 PIPE_XFER_DPID(2) /*!< DATA1 */ +#define PIPE_DPID_DATA2 PIPE_XFER_DPID(1) /*!< DATA2 */ +#define PIPE_DPID_SETUP PIPE_XFER_DPID(3) /*!< MDATA (non-control)/SETUP (control) */ + +extern const uint32_t PIPE_DPID[2]; + +/* device configuration registers bits definitions */ +#define DCFG_EOPFT BITS(11, 12) /*!< end of periodic frame time */ +#define DCFG_DAR BITS(4, 10) /*!< device address */ +#define DCFG_NZLSOH BIT(2) /*!< non-zero-length status OUT handshake */ +#define DCFG_DS BITS(0, 1) /*!< device speed */ + +/* device control registers bits definitions */ +#define DCTL_POIF BIT(11) /*!< power-on initialization finished */ +#define DCTL_CGONAK BIT(10) /*!< clear global OUT NAK */ +#define DCTL_SGONAK BIT(9) /*!< set global OUT NAK */ +#define DCTL_CGINAK BIT(8) /*!< clear global IN NAK */ +#define DCTL_SGINAK BIT(7) /*!< set global IN NAK */ +#define DCTL_GONS BIT(3) /*!< global OUT NAK status */ +#define DCTL_GINS BIT(2) /*!< global IN NAK status */ +#define DCTL_SD BIT(1) /*!< soft disconnect */ +#define DCTL_RWKUP BIT(0) /*!< remote wakeup */ + +/* device status registers bits definitions */ +#define DSTAT_FNRSOF BITS(8, 21) /*!< the frame number of the received SOF. */ +#define DSTAT_ES BITS(1, 2) /*!< enumerated speed */ +#define DSTAT_SPST BIT(0) /*!< suspend status */ + +/* device IN endpoint common interrupt enable registers bits definitions */ +#define DIEPINTEN_NAKEN BIT(13) /*!< NAK handshake sent by USBHS interrupt enable bit */ +#define DIEPINTEN_TXFEEN BIT(7) /*!< transmit FIFO empty interrupt enable bit */ +#define DIEPINTEN_IEPNEEN BIT(6) /*!< IN endpoint NAK effective interrupt enable bit */ +#define DIEPINTEN_EPTXFUDEN BIT(4) /*!< endpoint Tx FIFO underrun interrupt enable bit */ +#define DIEPINTEN_CITOEN BIT(3) /*!< control In Timeout interrupt enable bit */ +#define DIEPINTEN_EPDISEN BIT(1) /*!< endpoint disabled interrupt enable bit */ +#define DIEPINTEN_TFEN BIT(0) /*!< transfer finished interrupt enable bit */ + +/* device OUT endpoint common interrupt enable registers bits definitions */ +#define DOEPINTEN_NYETEN BIT(14) /*!< NYET handshake is sent interrupt enable bit */ +#define DOEPINTEN_BTBSTPEN BIT(6) /*!< back-to-back SETUP packets interrupt enable bit */ +#define DOEPINTEN_EPRXFOVREN BIT(4) /*!< endpoint Rx FIFO overrun interrupt enable bit */ +#define DOEPINTEN_STPFEN BIT(3) /*!< SETUP phase finished interrupt enable bit */ +#define DOEPINTEN_EPDISEN BIT(1) /*!< endpoint disabled interrupt enable bit */ +#define DOEPINTEN_TFEN BIT(0) /*!< transfer finished interrupt enable bit */ + +/* device all endpoints interrupt registers bits definitions */ +#define DAEPINT_OEPITB BITS(16, 21) /*!< device all OUT endpoint interrupt bits */ +#define DAEPINT_IEPITB BITS(0, 5) /*!< device all IN endpoint interrupt bits */ + +/* device all endpoints interrupt enable registers bits definitions */ +#define DAEPINTEN_OEPIE BITS(16, 21) /*!< OUT endpoint interrupt enable */ +#define DAEPINTEN_IEPIE BITS(0, 3) /*!< IN endpoint interrupt enable */ + +/* device Vbus discharge time registers bits definitions */ +#define DVBUSDT_DVBUSDT BITS(0, 15) /*!< device VBUS discharge time */ + +/* device Vbus pulsing time registers bits definitions */ +#define DVBUSPT_DVBUSPT BITS(0, 11) /*!< device VBUS pulsing time */ + +/* device IN endpoint FIFO empty interrupt enable register bits definitions */ +#define DIEPFEINTEN_IEPTXFEIE BITS(0, 5) /*!< IN endpoint Tx FIFO empty interrupt enable bits */ + +/* device endpoint 0 control register bits definitions */ +#define DEP0CTL_EPEN BIT(31) /*!< endpoint enable */ +#define DEP0CTL_EPD BIT(30) /*!< endpoint disable */ +#define DEP0CTL_SNAK BIT(27) /*!< set NAK */ +#define DEP0CTL_CNAK BIT(26) /*!< clear NAK */ +#define DIEP0CTL_TXFNUM BITS(22, 25) /*!< tx FIFO number */ +#define DEP0CTL_STALL BIT(21) /*!< STALL handshake */ +#define DOEP0CTL_SNOOP BIT(20) /*!< snoop mode */ +#define DEP0CTL_EPTYPE BITS(18, 19) /*!< endpoint type */ +#define DEP0CTL_NAKS BIT(17) /*!< NAK status */ +#define DEP0CTL_EPACT BIT(15) /*!< endpoint active */ +#define DEP0CTL_MPL BITS(0, 1) /*!< maximum packet length */ + +/* device endpoint x control register bits definitions */ +#define DEPCTL_EPEN BIT(31) /*!< endpoint enable */ +#define DEPCTL_EPD BIT(30) /*!< endpoint disable */ +#define DEPCTL_SODDFRM BIT(29) /*!< set odd frame */ +#define DEPCTL_SD1PID BIT(29) /*!< set DATA1 PID */ +#define DEPCTL_SEVNFRM BIT(28) /*!< set even frame */ +#define DEPCTL_SD0PID BIT(28) /*!< set DATA0 PID */ +#define DEPCTL_SNAK BIT(27) /*!< set NAK */ +#define DEPCTL_CNAK BIT(26) /*!< clear NAK */ +#define DIEPCTL_TXFNUM BITS(22, 25) /*!< tx FIFO number */ +#define DEPCTL_STALL BIT(21) /*!< STALL handshake */ +#define DOEPCTL_SNOOP BIT(20) /*!< snoop mode */ +#define DEPCTL_EPTYPE BITS(18, 19) /*!< endpoint type */ +#define DEPCTL_NAKS BIT(17) /*!< NAK status */ +#define DEPCTL_EOFRM BIT(16) /*!< even/odd frame */ +#define DEPCTL_DPID BIT(16) /*!< endpoint data PID */ +#define DEPCTL_EPACT BIT(15) /*!< endpoint active */ +#define DEPCTL_MPL BITS(0, 10) /*!< maximum packet length */ + +/* device IN endpoint-x interrupt flag register bits definitions */ +#define DIEPINTF_NAK BIT(13) /*!< NAK handshake sent by USBHS */ +#define DIEPINTF_TXFE BIT(7) /*!< transmit FIFO empty */ +#define DIEPINTF_IEPNE BIT(6) /*!< IN endpoint NAK effective */ +#define DIEPINTF_EPTXFUD BIT(4) /*!< endpoint Tx FIFO underrun */ +#define DIEPINTF_CITO BIT(3) /*!< control In Timeout interrupt */ +#define DIEPINTF_EPDIS BIT(1) /*!< endpoint disabled */ +#define DIEPINTF_TF BIT(0) /*!< transfer finished */ + +/* device OUT endpoint-x interrupt flag register bits definitions */ +#define DOEPINTF_NYET BIT(14) /*!< NYET handshake is sent */ +#define DOEPINTF_BTBSTP BIT(6) /*!< back-to-back SETUP packets */ +#define DOEPINTF_EPRXFOVR BIT(4) /*!< endpoint Rx FIFO overrun */ +#define DOEPINTF_STPF BIT(3) /*!< SETUP phase finished */ +#define DOEPINTF_EPDIS BIT(1) /*!< endpoint disabled */ +#define DOEPINTF_TF BIT(0) /*!< transfer finished */ + +/* device IN endpoint 0 transfer length register bits definitions */ +#define DIEP0LEN_PCNT BITS(19, 20) /*!< packet count */ +#define DIEP0LEN_TLEN BITS(0, 6) /*!< transfer length */ + +/* device OUT endpoint 0 transfer length register bits definitions */ +#define DOEP0LEN_STPCNT BITS(29, 30) /*!< SETUP packet count */ +#define DOEP0LEN_PCNT BIT(19) /*!< packet count */ +#define DOEP0LEN_TLEN BITS(0, 6) /*!< transfer length */ + +/* device OUT endpoint-x transfer length register bits definitions */ +#define DOEPLEN_RXDPID BITS(29, 30) /*!< received data PID */ +#define DOEPLEN_STPCNT BITS(29, 30) /*!< SETUP packet count */ +#define DIEPLEN_MCNT BITS(29, 30) /*!< multi count */ +#define DEPLEN_PCNT BITS(19, 28) /*!< packet count */ +#define DEPLEN_TLEN BITS(0, 18) /*!< transfer length */ + +/* device IN endpoint-x DMA address register bits definitions */ +#define DIEPDMAADDR_DMAADDR BITS(0, 31) /*!< DMA address */ + +/* device OUT endpoint-x DMA address register bits definitions */ +#define DOEPDMAADDR_DMAADDR BITS(0, 31) /*!< DMA address */ + +/* device IN endpoint-x transmit FIFO status register bits definitions */ +#define DIEPTFSTAT_IEPTFS BITS(0, 15) /*!< IN endpoint Tx FIFO space remaining */ + +/* USB power and clock registers bits definition */ +#define PWRCLKCTL_SHCLK BIT(1) /*!< stop HCLK */ +#define PWRCLKCTL_SUCLK BIT(0) /*!< stop the USB clock */ + +#define RSTAT_GOUT_NAK 1U /* global OUT NAK (triggers an interrupt) */ +#define RSTAT_DATA_UPDT 2U /* OUT data packet received */ +#define RSTAT_XFER_COMP 3U /* OUT transfer completed (triggers an interrupt) */ +#define RSTAT_SETUP_COMP 4U /* SETUP transaction completed (triggers an interrupt) */ +#define RSTAT_SETUP_UPDT 6U /* SETUP data packet received */ + +#define DSTAT_EM_HS_PHY_30MHZ_60MHZ 0U /* USB enumerate speed use high-speed PHY clock in 30MHz or 60MHz */ +#define DSTAT_EM_FS_PHY_30MHZ_60MHZ 1U /* USB enumerate speed use full-speed PHY clock in 30MHz or 60MHz */ +#define DSTAT_EM_LS_PHY_6MHZ 2U /* USB enumerate speed use low-speed PHY clock in 6MHz */ +#define DSTAT_EM_FS_PHY_48MHZ 3U /* USB enumerate speed use full-speed PHY clock in 48MHz */ + +#define DPID_DATA0 0U /* device endpoint data PID is DATA0 */ +#define DPID_DATA1 2U /* device endpoint data PID is DATA1 */ +#define DPID_DATA2 1U /* device endpoint data PID is DATA2 */ +#define DPID_MDATA 3U /* device endpoint data PID is MDATA */ + +#define GAHBCS_DMAINCR(regval) (GAHBCS_BURST & ((regval) << 1)) /*!< AHB burst type used by DMA*/ + +#define DMA_INCR0 GAHBCS_DMAINCR(0U) /*!< single burst type used by DMA*/ +#define DMA_INCR1 GAHBCS_DMAINCR(1U) /*!< 4-beat incrementing burst type used by DMA*/ +#define DMA_INCR4 GAHBCS_DMAINCR(3U) /*!< 8-beat incrementing burst type used by DMA*/ +#define DMA_INCR8 GAHBCS_DMAINCR(5U) /*!< 16-beat incrementing burst type used by DMA*/ +#define DMA_INCR16 GAHBCS_DMAINCR(7U) /*!< 32-beat incrementing burst type used by DMA*/ + +#define DCFG_PFRI(regval) (DCFG_EOPFT & ((regval) << 11)) /*!< end of periodic frame time configuration */ + +#define FRAME_INTERVAL_80 DCFG_PFRI(0U) /*!< 80% of the frame time */ +#define FRAME_INTERVAL_85 DCFG_PFRI(1U) /*!< 85% of the frame time */ +#define FRAME_INTERVAL_90 DCFG_PFRI(2U) /*!< 90% of the frame time */ +#define FRAME_INTERVAL_95 DCFG_PFRI(3U) /*!< 95% of the frame time */ + +#define DCFG_DEVSPEED(regval) (DCFG_DS & ((regval) << 0)) /*!< device speed configuration */ + +#define USB_SPEED_EXP_HIGH DCFG_DEVSPEED(0U) /*!< device external PHY high speed */ +#define USB_SPEED_EXP_FULL DCFG_DEVSPEED(1U) /*!< device external PHY full speed */ +#define USB_SPEED_INP_FULL DCFG_DEVSPEED(3U) /*!< device internal PHY full speed */ + +#define DEP0_MPL(regval) (DEP0CTL_MPL & ((regval) << 0)) /*!< maximum packet length configuration */ + +#define EP0MPL_64 DEP0_MPL(0U) /*!< maximum packet length 64 bytes */ +#define EP0MPL_32 DEP0_MPL(1U) /*!< maximum packet length 32 bytes */ +#define EP0MPL_16 DEP0_MPL(2U) /*!< maximum packet length 16 bytes */ +#define EP0MPL_8 DEP0_MPL(3U) /*!< maximum packet length 8 bytes */ + +#define DOEP0_TLEN(regval) (DOEP0LEN_TLEN & ((regval) << 0)) /*!< Transfer length */ +#define DOEP0_PCNT(regval) (DOEP0LEN_PCNT & ((regval) << 19)) /*!< Packet count */ +#define DOEP0_STPCNT(regval) (DOEP0LEN_STPCNT & ((regval) << 29)) /*!< SETUP packet count */ + +#define USB_ULPI_PHY 1U /*!< ULPI interface external PHY */ +#define USB_EMBEDDED_PHY 2U /*!< Embedded PHY */ + +#define GRXSTS_PKTSTS_IN 2U +#define GRXSTS_PKTSTS_IN_XFER_COMP 3U +#define GRXSTS_PKTSTS_DATA_TOGGLE_ERR 5U +#define GRXSTS_PKTSTS_CH_HALTED 7U + +#define HCTL_30_60MHZ 0U /*!< USB clock 30-60MHZ */ +#define HCTL_48MHZ 1U /*!< USB clock 48MHZ */ +#define HCTL_6MHZ 2U /*!< USB clock 6MHZ */ + +#define EP0_OUT ((uint8_t)0x00) /*!< endpoint out 0 */ +#define EP0_IN ((uint8_t)0x80) /*!< endpoint in 0 */ +#define EP1_OUT ((uint8_t)0x01) /*!< endpoint out 1 */ +#define EP1_IN ((uint8_t)0x81) /*!< endpoint in 1 */ +#define EP2_OUT ((uint8_t)0x02) /*!< endpoint out 2 */ +#define EP2_IN ((uint8_t)0x82) /*!< endpoint in 2 */ +#define EP3_OUT ((uint8_t)0x03) /*!< endpoint out 3 */ +#define EP3_IN ((uint8_t)0x83) /*!< endpoint in 3 */ + +#endif /* __DRV_USB_REGS_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usbd_int.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usbd_int.h new file mode 100644 index 0000000000..2bc2720d00 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usbd_int.h @@ -0,0 +1,45 @@ +/*! + \file drv_usbd_int.h + \brief USB device mode interrupt header file + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __DRV_USBD_INT_H +#define __DRV_USBD_INT_H + +#include "drv_usb_core.h" +#include "drv_usb_dev.h" + +/* function declarations */ +/* USB device-mode interrupts global service routine handler */ +void usbd_isr (usb_core_driver *udev); + +#endif /* __DRV_USBD_INT_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usbh_int.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usbh_int.h new file mode 100644 index 0000000000..a7be33a979 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Include/drv_usbh_int.h @@ -0,0 +1,56 @@ +/*! + \file drv_usbh_int.h.h + \brief USB host mode interrupt management header file + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __DRV_USBH_INT_H +#define __DRV_USBH_INT_H + +#include "drv_usb_host.h" +#include "usbh_core.h" + +typedef struct _usbh_int_cb +{ + uint8_t (*connect) (usbh_host *puhost); + uint8_t (*disconnect) (usbh_host *puhost); + uint8_t (*port_enabled) (usbh_host *puhost); + uint8_t (*port_disabled) (usbh_host *puhost); + uint8_t (*SOF) (usbh_host *puhost); +} usbh_int_cb; + +extern usbh_int_cb *usbh_int_fop; + +/* function declarations */ +/* handle global host interrupt */ +uint32_t usbh_isr (usb_core_driver *pudev); + +#endif /* __DRV_USBH_INT_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Source/drv_usb_core.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Source/drv_usb_core.c new file mode 100644 index 0000000000..80d2d39811 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Source/drv_usb_core.c @@ -0,0 +1,343 @@ +/*! + \file drv_usb_core.c + \brief USB core driver which can operate in host and device mode + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "drv_usb_core.h" +#include "drv_usb_hw.h" + +/* local function prototypes ('static') */ +static void usb_core_reset (usb_core_regs *usb_regs); + +/*! + \brief configure USB core basic + \param[in] usb_basic: pointer to usb capabilities + \param[in] usb_regs: USB core registers + \param[in] usb_core: USB core + \param[out] none + \retval operation status +*/ +usb_status usb_basic_init (usb_core_basic *usb_basic, + usb_core_regs *usb_regs, + usb_core_enum usb_core) +{ + /* configure USB default transfer mode as FIFO mode */ + usb_basic->transfer_mode = (uint8_t)USB_USE_FIFO; + + /* USB default speed is full-speed */ + usb_basic->core_speed = (uint8_t)USB_SPEED_FULL; + + usb_basic->core_enum = (uint8_t)usb_core; + + switch (usb_core) { + case USB_CORE_ENUM_FS: + usb_basic->base_reg = (uint32_t)USBFS_REG_BASE; + + /* set the host channel numbers */ + usb_basic->num_pipe = USBFS_MAX_CHANNEL_COUNT; + + /* set the device endpoint numbers */ + usb_basic->num_ep = USBFS_MAX_EP_COUNT; + + /* USBFS core use embedded physical layer */ + usb_basic->phy_itf = USB_EMBEDDED_PHY; + break; + + default: + return USB_FAIL; + } + + usb_basic->sof_enable = USB_SOF_OUTPUT; + usb_basic->low_power = USB_LOW_POWER; + + /* assign main registers address */ + *usb_regs = (usb_core_regs) { + .gr = (usb_gr*) (usb_basic->base_reg + USB_REG_OFFSET_CORE), + .hr = (usb_hr*) (usb_basic->base_reg + USB_REG_OFFSET_HOST), + .dr = (usb_dr*) (usb_basic->base_reg + USB_REG_OFFSET_DEV), + + .HPCS = (uint32_t*) (usb_basic->base_reg + USB_REG_OFFSET_PORT), + .PWRCLKCTL = (uint32_t*) (usb_basic->base_reg + USB_REG_OFFSET_PWRCLKCTL) + }; + + /* assign device endpoint registers address */ + for (uint8_t i = 0U; i < usb_basic->num_ep; i++) { + usb_regs->er_in[i] = (usb_erin *) \ + (usb_basic->base_reg + USB_REG_OFFSET_EP_IN + (i * USB_REG_OFFSET_EP)); + + usb_regs->er_out[i] = (usb_erout *)\ + (usb_basic->base_reg + USB_REG_OFFSET_EP_OUT + (i * USB_REG_OFFSET_EP)); + } + + /* assign host pipe registers address */ + for (uint8_t i = 0U; i < usb_basic->num_pipe; i++) { + usb_regs->pr[i] = (usb_pr *) \ + (usb_basic->base_reg + USB_REG_OFFSET_CH_INOUT + (i * USB_REG_OFFSET_CH)); + + usb_regs->DFIFO[i] = (uint32_t *) \ + (usb_basic->base_reg + USB_DATA_FIFO_OFFSET + (i * USB_DATA_FIFO_SIZE)); + } + + return USB_OK; +} + +/*! + \brief initializes the USB controller registers and + prepares the core device mode or host mode operation + \param[in] usb_basic: pointer to USB capabilities + \param[in] usb_regs: pointer to USB core registers + \param[out] none + \retval operation status +*/ +usb_status usb_core_init (usb_core_basic usb_basic, usb_core_regs *usb_regs) +{ + if (USB_ULPI_PHY == usb_basic.phy_itf) { + usb_regs->gr->GCCFG &= ~GCCFG_PWRON; + + if (usb_basic.sof_enable) { + usb_regs->gr->GCCFG |= GCCFG_SOFOEN; + } + + /* init the ULPI interface */ + usb_regs->gr->GUSBCS &= ~(GUSBCS_EMBPHY | GUSBCS_ULPIEOI); + +#ifdef USBHS_EXTERNAL_VBUS_ENABLED + /* use external VBUS driver */ + usb_regs->gr->GUSBCS |= GUSBCS_ULPIEVD; +#else + /* use internal VBUS driver */ + usb_regs->gr->GUSBCS &= ~GUSBCS_ULPIEVD; +#endif /* USBHS_EXTERNAL_VBUS_ENABLED */ + + /* soft reset the core */ + usb_core_reset (usb_regs); + } else { + usb_regs->gr->GUSBCS |= GUSBCS_EMBPHY; + + /* soft reset the core */ + usb_core_reset (usb_regs); + + /* active the transceiver and enable VBUS sensing */ + usb_regs->gr->GCCFG |= GCCFG_PWRON | GCCFG_VBUSACEN | GCCFG_VBUSBCEN; + +#ifndef VBUS_SENSING_ENABLED + usb_regs->gr->GCCFG |= GCCFG_VBUSIG; +#endif /* VBUS_SENSING_ENABLED */ + + /* enable SOF output */ + if (usb_basic.sof_enable) { + usb_regs->gr->GCCFG |= GCCFG_SOFOEN; + } + + usb_mdelay(20U); + } + + if ((uint8_t)USB_USE_DMA == usb_basic.transfer_mode) { + usb_regs->gr->GAHBCS &= ~GAHBCS_BURST; + usb_regs->gr->GAHBCS |= DMA_INCR8 | GAHBCS_DMAEN; + } + +#ifdef USE_OTG_MODE + + /* enable USB OTG features */ + usb_regs->gr->GUSBCS |= GUSBCS_HNPCEN | GUSBCS_SRPCEN; + + /* enable the USB wakeup and suspend interrupts */ + usb_regs->gr->GINTF = 0xBFFFFFFFU; + + usb_regs->gr->GINTEN = GINTEN_WKUPIE | GINTEN_SPIE | \ + GINTEN_OTGIE | GINTEN_SESIE | GINTEN_CIDPSCIE; + +#endif /* USE_OTG_MODE */ + + return USB_OK; +} + +/*! + \brief write a packet into the Tx FIFO associated with the endpoint + \param[in] usb_regs: pointer to USB core registers + \param[in] src_buf: pointer to source buffer + \param[in] fifo_num: FIFO number which is in (0..3) + \param[in] byte_count: packet byte count + \param[out] none + \retval operation status +*/ +usb_status usb_txfifo_write (usb_core_regs *usb_regs, + uint8_t *src_buf, + uint8_t fifo_num, + uint16_t byte_count) +{ + uint32_t word_count = (byte_count + 3U) / 4U; + + __IO uint32_t *fifo = usb_regs->DFIFO[fifo_num]; + + while (word_count-- > 0U) { + *fifo = *((__packed uint32_t *)src_buf); + + src_buf += 4U; + } + + return USB_OK; +} + +/*! + \brief read a packet from the Rx FIFO associated with the endpoint + \param[in] usb_regs: pointer to USB core registers + \param[in] dest_buf: pointer to destination buffer + \param[in] byte_count: packet byte count + \param[out] none + \retval void type pointer +*/ +void *usb_rxfifo_read (usb_core_regs *usb_regs, uint8_t *dest_buf, uint16_t byte_count) +{ + uint32_t word_count = (byte_count + 3U) / 4U; + + __IO uint32_t *fifo = usb_regs->DFIFO[0]; + + while (word_count-- > 0U) { + *(__packed uint32_t *)dest_buf = *fifo; + + dest_buf += 4U; + } + + return ((void *)dest_buf); +} + +/*! + \brief flush a Tx FIFO or all Tx FIFOs + \param[in] usb_regs: pointer to USB core registers + \param[in] fifo_num: FIFO number which is in (0..3) + \param[out] none + \retval operation status +*/ +usb_status usb_txfifo_flush (usb_core_regs *usb_regs, uint8_t fifo_num) +{ + usb_regs->gr->GRSTCTL = ((uint32_t)fifo_num << 6U) | GRSTCTL_TXFF; + + /* wait for Tx FIFO flush bit is set */ + while (usb_regs->gr->GRSTCTL & GRSTCTL_TXFF) { + /* no operation */ + } + + /* wait for 3 PHY clocks*/ + usb_udelay(3U); + + return USB_OK; +} + +/*! + \brief flush the entire Rx FIFO + \param[in] usb_regs: pointer to usb core registers + \param[out] none + \retval operation status +*/ +usb_status usb_rxfifo_flush (usb_core_regs *usb_regs) +{ + usb_regs->gr->GRSTCTL = GRSTCTL_RXFF; + + /* wait for Rx FIFO flush bit is set */ + while (usb_regs->gr->GRSTCTL & GRSTCTL_RXFF) { + /* no operation */ + } + + /* wait for 3 PHY clocks */ + usb_udelay(3U); + + return USB_OK; +} + +/*! + \brief set endpoint or channel TX FIFO size + \param[in] usb_regs: pointer to USB core registers + \param[in] fifo: TX FIFO number + \param[in] size: assigned TX FIFO size + \param[out] none + \retval none +*/ +void usb_set_txfifo(usb_core_regs *usb_regs, uint8_t fifo, uint16_t size) +{ + uint32_t tx_offset; + + tx_offset = usb_regs->gr->GRFLEN; + + if (fifo == 0U) { + usb_regs->gr->DIEP0TFLEN_HNPTFLEN = ((uint32_t)size << 16) | tx_offset; + } else { + tx_offset += (usb_regs->gr->DIEP0TFLEN_HNPTFLEN) >> 16; + + for (uint8_t i = 0U; i < (fifo - 1U); i++) { + tx_offset += (usb_regs->gr->DIEPTFLEN[i] >> 16); + } + + /* Multiply Tx_Size by 2 to get higher performance */ + usb_regs->gr->DIEPTFLEN[fifo - 1U] = ((uint32_t)size << 16) | tx_offset; + } +} + +/*! + \brief set USB current mode + \param[in] usb_regs: pointer to USB core registers + \param[out] none + \retval none +*/ +void usb_curmode_set(usb_core_regs *usb_regs, uint8_t mode) +{ + usb_regs->gr->GUSBCS &= ~(GUSBCS_FDM | GUSBCS_FHM); + + if (DEVICE_MODE == mode) { + usb_regs->gr->GUSBCS |= GUSBCS_FDM; + } else if (HOST_MODE == mode) { + usb_regs->gr->GUSBCS |= GUSBCS_FHM; + } else { + /* OTG mode and other mode can not be here! */ + } +} + +/*! + \brief configure USB core to soft reset + \param[in] usb_regs: pointer to USB core registers + \param[out] none + \retval none +*/ +static void usb_core_reset (usb_core_regs *usb_regs) +{ + /* enable core soft reset */ + usb_regs->gr->GRSTCTL |= GRSTCTL_CSRST; + + /* wait for the core to be soft reset */ + while (usb_regs->gr->GRSTCTL & GRSTCTL_CSRST) { + /* no operation */ + } + + /* wait for additional 3 PHY clocks */ + usb_udelay(3U); +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Source/drv_usb_dev.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Source/drv_usb_dev.c new file mode 100644 index 0000000000..726b8ad1ed --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Source/drv_usb_dev.c @@ -0,0 +1,612 @@ +/*! + \file drv_usb_dev.c + \brief USB device mode low level driver + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "drv_usb_hw.h" +#include "drv_usb_core.h" +#include "drv_usb_dev.h" + +/* endpoint 0 max packet length */ +static const uint8_t EP0_MAXLEN[4] = { + [DSTAT_EM_HS_PHY_30MHZ_60MHZ] = EP0MPL_64, + [DSTAT_EM_FS_PHY_30MHZ_60MHZ] = EP0MPL_64, + [DSTAT_EM_FS_PHY_48MHZ] = EP0MPL_64, + [DSTAT_EM_LS_PHY_6MHZ] = EP0MPL_8 +}; + +#ifdef USB_FS_CORE + +/* USB endpoint Tx FIFO size */ +static uint16_t USBFS_TX_FIFO_SIZE[USBFS_MAX_EP_COUNT] = +{ + (uint16_t)TX0_FIFO_FS_SIZE, + (uint16_t)TX1_FIFO_FS_SIZE, + (uint16_t)TX2_FIFO_FS_SIZE, + (uint16_t)TX3_FIFO_FS_SIZE +}; + +#endif /* USBFS_CORE */ + +/*! + \brief initialize USB core registers for device mode + \param[in] udev: pointer to USB device + \param[out] none + \retval operation status +*/ +usb_status usb_devcore_init (usb_core_driver *udev) +{ + uint8_t i; + + /* restart the PHY clock (maybe don't need to...) */ + *udev->regs.PWRCLKCTL = 0U; + + /* config periodic frame interval to default value */ + udev->regs.dr->DCFG &= ~DCFG_EOPFT; + udev->regs.dr->DCFG |= FRAME_INTERVAL_80; + + udev->regs.dr->DCFG &= ~DCFG_DS; + +#ifdef USB_FS_CORE + if (udev->bp.core_enum == (uint8_t)USB_CORE_ENUM_FS) { + /* set full-speed PHY */ + udev->regs.dr->DCFG |= USB_SPEED_INP_FULL; + + /* set Rx FIFO size */ + usb_set_rxfifo(&udev->regs, RX_FIFO_FS_SIZE); + + /* set endpoint 0 to 3's Tx FIFO length and RAM address */ + for (i = 0U; i < USBFS_MAX_EP_COUNT; i++) { + usb_set_txfifo(&udev->regs, i, USBFS_TX_FIFO_SIZE[i]); + } + } +#endif /* USB_FS_CORE */ + + /* make sure all FIFOs are flushed */ + + /* flush all Tx FIFOs */ + (void)usb_txfifo_flush (&udev->regs, 0x10U); + + /* flush entire Rx FIFO */ + (void)usb_rxfifo_flush (&udev->regs); + + /* clear all pending device interrupts */ + udev->regs.dr->DIEPINTEN = 0U; + udev->regs.dr->DOEPINTEN = 0U; + udev->regs.dr->DAEPINT = 0xFFFFFFFFU; + udev->regs.dr->DAEPINTEN = 0U; + + /* configure all IN/OUT endpoints */ + for (i = 0U; i < udev->bp.num_ep; i++) { + if (udev->regs.er_in[i]->DIEPCTL & DEPCTL_EPEN) { + udev->regs.er_in[i]->DIEPCTL |= DEPCTL_EPD | DEPCTL_SNAK; + } else { + udev->regs.er_in[i]->DIEPCTL = 0U; + } + + /* set IN endpoint transfer length to 0 */ + udev->regs.er_in[i]->DIEPLEN = 0U; + + /* clear all pending IN endpoint interrupts */ + udev->regs.er_in[i]->DIEPINTF = 0xFFU; + + if (udev->regs.er_out[i]->DOEPCTL & DEPCTL_EPEN) { + udev->regs.er_out[i]->DOEPCTL |= DEPCTL_EPD | DEPCTL_SNAK; + } else { + udev->regs.er_out[i]->DOEPCTL = 0U; + } + + /* set OUT endpoint transfer length to 0 */ + udev->regs.er_out[i]->DOEPLEN = 0U; + + /* clear all pending OUT endpoint interrupts */ + udev->regs.er_out[i]->DOEPINTF = 0xFFU; + } + + udev->regs.dr->DIEPINTEN |= DIEPINTEN_EPTXFUDEN; + + (void)usb_devint_enable (udev); + + return USB_OK; +} + +/*! + \brief enable the USB device mode interrupts + \param[in] udev: pointer to USB device + \param[out] none + \retval operation status +*/ +usb_status usb_devint_enable (usb_core_driver *udev) +{ + /* clear any pending USB OTG interrupts */ + udev->regs.gr->GOTGINTF = 0xFFFFFFFFU; + + /* clear any pending interrupts */ + udev->regs.gr->GINTF = 0xBFFFFFFFU; + + /* enable the USB wakeup and suspend interrupts */ + udev->regs.gr->GINTEN = GINTEN_WKUPIE | GINTEN_SPIE; + + /* enable device_mode-related interrupts */ + if ((uint8_t)USB_USE_FIFO == udev->bp.transfer_mode) { + udev->regs.gr->GINTEN |= GINTEN_RXFNEIE; + } + + udev->regs.gr->GINTEN |= GINTEN_RSTIE | GINTEN_ENUMFIE | GINTEN_IEPIE |\ + GINTEN_OEPIE | GINTEN_SOFIE | GINTEN_ISOONCIE | GINTEN_ISOINCIE; + +#ifdef VBUS_SENSING_ENABLED + udev->regs.gr->GINTEN |= GINTEN_SESIE | GINTEN_OTGIE; +#endif /* VBUS_SENSING_ENABLED */ + + return USB_OK; +} + +/*! + \brief active the USB endpoint0 transaction + \param[in] udev: pointer to USB device + \param[in] transc: the USB endpoint0 transaction + \param[out] none + \retval operation status +*/ +usb_status usb_transc0_active (usb_core_driver *udev, usb_transc *transc) +{ + __IO uint32_t *reg_addr = NULL; + + /* get the endpoint number */ + uint8_t ep_num = transc->ep_addr.num; + + if (ep_num) { + /* not endpoint 0 */ + return USB_FAIL; + } + + if (transc->ep_addr.dir) { + reg_addr = &udev->regs.er_in[0]->DIEPCTL; + } else { + reg_addr = &udev->regs.er_out[0]->DOEPCTL; + } + + /* endpoint 0 is activated after USB clock is enabled */ + + *reg_addr &= ~(DEPCTL_MPL | DEPCTL_EPTYPE | DIEPCTL_TXFNUM); + + /* set endpoint 0 maximum packet length */ + *reg_addr |= EP0_MAXLEN[udev->regs.dr->DSTAT & DSTAT_ES]; + + /* activate endpoint */ + *reg_addr |= ((uint32_t)transc->ep_type << 18U) | ((uint32_t)ep_num << 22U) | DEPCTL_SD0PID | DEPCTL_EPACT; + + return USB_OK; +} + +/*! + \brief active the USB transaction + \param[in] udev: pointer to USB device + \param[in] transc: the USB transaction + \param[out] none + \retval status +*/ +usb_status usb_transc_active (usb_core_driver *udev, usb_transc *transc) +{ + __IO uint32_t *reg_addr = NULL; + __IO uint32_t epinten = 0U; + + /* get the endpoint number */ + uint8_t ep_num = transc->ep_addr.num; + + /* enable endpoint interrupt number */ + if (transc->ep_addr.dir) { + reg_addr = &udev->regs.er_in[ep_num]->DIEPCTL; + + epinten = 1U << ep_num; + } else { + reg_addr = &udev->regs.er_out[ep_num]->DOEPCTL; + + epinten = 1U << (16U + ep_num); + } + + /* if the endpoint is not active, need change the endpoint control register */ + if (!(*reg_addr & DEPCTL_EPACT)) { + *reg_addr &= ~(DEPCTL_MPL | DEPCTL_EPTYPE | DIEPCTL_TXFNUM); + + /* set endpoint maximum packet length */ + if (0U == ep_num) { + *reg_addr |= EP0_MAXLEN[udev->regs.dr->DSTAT & DSTAT_ES]; + } else { + *reg_addr |= transc->max_len; + } + + /* activate endpoint */ + *reg_addr |= ((uint32_t)transc->ep_type << 18U) | ((uint32_t)ep_num << 22U) | DEPCTL_SD0PID | DEPCTL_EPACT; + } + + + /* enable the interrupts for this endpoint */ + udev->regs.dr->DAEPINTEN |= epinten; + + return USB_OK; +} + +/*! + \brief deactivate the USB transaction + \param[in] udev: pointer to USB device + \param[in] transc: the USB transaction + \param[out] none + \retval status +*/ +usb_status usb_transc_deactivate(usb_core_driver *udev, usb_transc *transc) +{ + uint32_t epinten = 0U; + + uint8_t ep_num = transc->ep_addr.num; + + /* disable endpoint interrupt number */ + if (transc->ep_addr.dir) { + epinten = 1U << ep_num; + + udev->regs.er_in[ep_num]->DIEPCTL &= ~DEPCTL_EPACT; + } else { + epinten = 1U << (ep_num + 16U); + + udev->regs.er_out[ep_num]->DOEPCTL &= ~DEPCTL_EPACT; + } + + + /* disable the interrupts for this endpoint */ + udev->regs.dr->DAEPINTEN &= ~epinten; + + return USB_OK; +} + +/*! + \brief configure USB transaction to start IN transfer + \param[in] udev: pointer to USB device + \param[in] transc: the USB IN transaction + \param[out] none + \retval operation status +*/ +usb_status usb_transc_inxfer (usb_core_driver *udev, usb_transc *transc) +{ + usb_status status = USB_OK; + + uint8_t ep_num = transc->ep_addr.num; + + __IO uint32_t epctl = udev->regs.er_in[ep_num]->DIEPCTL; + __IO uint32_t eplen = udev->regs.er_in[ep_num]->DIEPLEN; + + eplen &= ~(DEPLEN_TLEN | DEPLEN_PCNT); + + /* zero length packet or endpoint 0 */ + if (0U == transc->xfer_len) { + /* set transfer packet count to 1 */ + eplen |= 1U << 19U; + } else { + /* set transfer packet count */ + if (0U == ep_num) { + transc->xfer_len = USB_MIN(transc->xfer_len, transc->max_len); + + eplen |= 1U << 19U; + } else { + eplen |= (((transc->xfer_len - 1U) + transc->max_len) / transc->max_len) << 19U; + } + + /* set endpoint transfer length */ + eplen |= transc->xfer_len; + + if (transc->ep_type == (uint8_t)USB_EPTYPE_ISOC) { + eplen |= DIEPLEN_MCNT & (1U << 29U); + } + } + + udev->regs.er_in[ep_num]->DIEPLEN = eplen; + + if (transc->ep_type == (uint8_t)USB_EPTYPE_ISOC) { + if (((udev->regs.dr->DSTAT & DSTAT_FNRSOF) >> 8U) & 0x01U) { + epctl |= DEPCTL_SEVNFRM; + } else { + epctl |= DEPCTL_SODDFRM; + } + } + + if ((uint8_t)USB_USE_DMA == udev->bp.transfer_mode) { + udev->regs.er_in[ep_num]->DIEPDMAADDR = transc->dma_addr; + } + + /* enable the endpoint and clear the NAK */ + epctl |= DEPCTL_CNAK | DEPCTL_EPEN; + + udev->regs.er_in[ep_num]->DIEPCTL = epctl; + + if ((uint8_t)USB_USE_FIFO == udev->bp.transfer_mode) { + udev->regs.er_in[ep_num]->DIEPCTL = epctl; + + if (transc->ep_type != (uint8_t)USB_EPTYPE_ISOC) { + /* enable the Tx FIFO empty interrupt for this endpoint */ + if (transc->xfer_len > 0U) { + udev->regs.dr->DIEPFEINTEN |= 1U << ep_num; + } + } else { + (void)usb_txfifo_write (&udev->regs, transc->xfer_buf, ep_num, (uint16_t)transc->xfer_len); + } + } + + return status; +} + +/*! + \brief configure usb transaction to start OUT transfer + \param[in] udev: pointer to usb device + \param[in] transc: the usb OUT transaction + \param[out] none + \retval status +*/ +usb_status usb_transc_outxfer (usb_core_driver *udev, usb_transc *transc) +{ + usb_status status = USB_OK; + + uint8_t ep_num = transc->ep_addr.num; + + uint32_t epctl = udev->regs.er_out[ep_num]->DOEPCTL; + uint32_t eplen = udev->regs.er_out[ep_num]->DOEPLEN; + + eplen &= ~(DEPLEN_TLEN | DEPLEN_PCNT); + + /* zero length packet or endpoint 0 */ + if ((0U == transc->xfer_len) || (0U == ep_num)) { + /* set the transfer length to max packet size */ + eplen |= transc->max_len; + + /* set the transfer packet count to 1 */ + eplen |= 1U << 19U; + } else { + /* configure the transfer size and packet count as follows: + * pktcnt = N + * xfersize = N * maxpacket + */ + uint32_t packet_count = (transc->xfer_len + transc->max_len - 1U) / transc->max_len; + + eplen |= packet_count << 19U; + eplen |= packet_count * transc->max_len; + } + + udev->regs.er_out[ep_num]->DOEPLEN = eplen; + + if ((uint8_t)USB_USE_DMA == udev->bp.transfer_mode) { + udev->regs.er_out[ep_num]->DOEPDMAADDR = transc->dma_addr; + } + + if (transc->ep_type == (uint8_t)USB_EPTYPE_ISOC) { + if (transc->frame_num) { + epctl |= DEPCTL_SD1PID; + } else { + epctl |= DEPCTL_SD0PID; + } + } + + /* enable the endpoint and clear the NAK */ + epctl |= DEPCTL_EPEN | DEPCTL_CNAK; + + udev->regs.er_out[ep_num]->DOEPCTL = epctl; + + return status; +} + +/*! + \brief set the USB transaction STALL status + \param[in] udev: pointer to USB device + \param[in] transc: the USB transaction + \param[out] none + \retval status +*/ +usb_status usb_transc_stall (usb_core_driver *udev, usb_transc *transc) +{ + __IO uint32_t *reg_addr = NULL; + + uint8_t ep_num = transc->ep_addr.num; + + if (transc->ep_addr.dir) { + reg_addr = &(udev->regs.er_in[ep_num]->DIEPCTL); + + /* set the endpoint disable bit */ + if (*reg_addr & DEPCTL_EPEN) { + *reg_addr |= DEPCTL_EPD; + } + } else { + /* set the endpoint stall bit */ + reg_addr = &(udev->regs.er_out[ep_num]->DOEPCTL); + } + + /* set the endpoint stall bit */ + *reg_addr |= DEPCTL_STALL; + + return USB_OK; +} + +/*! + \brief clear the USB transaction STALL status + \param[in] udev: pointer to USB device + \param[in] transc: the USB transaction + \param[out] none + \retval operation status +*/ +usb_status usb_transc_clrstall(usb_core_driver *udev, usb_transc *transc) +{ + __IO uint32_t *reg_addr = NULL; + + uint8_t ep_num = transc->ep_addr.num; + + if (transc->ep_addr.dir) { + reg_addr = &(udev->regs.er_in[ep_num]->DIEPCTL); + } else { + reg_addr = &(udev->regs.er_out[ep_num]->DOEPCTL); + } + + /* clear the endpoint stall bits */ + *reg_addr &= ~DEPCTL_STALL; + + /* reset data PID of the periodic endpoints */ + if ((transc->ep_type == (uint8_t)USB_EPTYPE_INTR) || (transc->ep_type == (uint8_t)USB_EPTYPE_BULK)) { + *reg_addr |= DEPCTL_SD0PID; + } + + return USB_OK; +} + +/*! + \brief read device IN endpoint interrupt flag register + \param[in] udev: pointer to USB device + \param[in] ep_num: endpoint number + \param[out] none + \retval interrupt value +*/ +uint32_t usb_iepintr_read (usb_core_driver *udev, uint8_t ep_num) +{ + uint32_t value = 0U, fifoemptymask, commonintmask; + + commonintmask = udev->regs.dr->DIEPINTEN; + fifoemptymask = udev->regs.dr->DIEPFEINTEN; + + /* check FIFO empty interrupt enable bit */ + commonintmask |= ((fifoemptymask >> ep_num) & 0x1U) << 7; + + value = udev->regs.er_in[ep_num]->DIEPINTF & commonintmask; + + return value; +} + +/*! + \brief configures OUT endpoint 0 to receive SETUP packets + \param[in] udev: pointer to USB device + \param[out] none + \retval none +*/ +void usb_ctlep_startout (usb_core_driver *udev) +{ + /* set OUT endpoint 0 receive length to 24 bytes, 1 packet and 3 setup packets */ + udev->regs.er_out[0]->DOEPLEN = DOEP0_TLEN(8U * 3U) | DOEP0_PCNT(1U) | DOEP0_STPCNT(3U); + + if ((uint8_t)USB_USE_DMA == udev->bp.transfer_mode) { + udev->regs.er_out[0]->DOEPDMAADDR = (uint32_t)&udev->dev.control.req; + + /* endpoint enable */ + udev->regs.er_out[0]->DOEPCTL |= DEPCTL_EPACT | DEPCTL_EPEN; + } +} + +/*! + \brief active remote wakeup signaling + \param[in] udev: pointer to USB device + \param[out] none + \retval none +*/ +void usb_rwkup_active (usb_core_driver *udev) +{ + if (udev->dev.pm.dev_remote_wakeup) { + if (udev->regs.dr->DSTAT & DSTAT_SPST) { + if (udev->bp.low_power) { + /* ungate USB core clock */ + *udev->regs.PWRCLKCTL &= ~(PWRCLKCTL_SHCLK | PWRCLKCTL_SUCLK); + } + + /* active remote wakeup signaling */ + udev->regs.dr->DCTL |= DCTL_RWKUP; + + usb_mdelay(5U); + + udev->regs.dr->DCTL &= ~DCTL_RWKUP; + } + } +} + +/*! + \brief active USB core clock + \param[in] udev: pointer to USB device + \param[out] none + \retval none +*/ +void usb_clock_active (usb_core_driver *udev) +{ + if (udev->bp.low_power) { + if (udev->regs.dr->DSTAT & DSTAT_SPST) { + /* un-gate USB Core clock */ + *udev->regs.PWRCLKCTL &= ~(PWRCLKCTL_SHCLK | PWRCLKCTL_SUCLK); + } + } +} + +/*! + \brief USB device suspend + \param[in] udev: pointer to USB device + \param[out] none + \retval none +*/ +void usb_dev_suspend (usb_core_driver *udev) +{ + __IO uint32_t devstat = udev->regs.dr->DSTAT; + + if ((udev->bp.low_power) && (devstat & DSTAT_SPST)) { + /* switch-off the USB clocks */ + *udev->regs.PWRCLKCTL |= PWRCLKCTL_SHCLK; + + /* enter DEEP_SLEEP mode with LDO in low power mode */ + pmu_to_deepsleepmode(PMU_LDO_LOWPOWER, WFI_CMD); + } +} + +/*! + \brief stop the device and clean up FIFOs + \param[in] udev: pointer to USB device + \param[out] none + \retval none +*/ +void usb_dev_stop (usb_core_driver *udev) +{ + uint32_t i; + + udev->dev.cur_status = 1U; + + /* clear all interrupt flag and enable bits */ + for (i = 0U; i < udev->bp.num_ep; i++) { + udev->regs.er_in[i]->DIEPINTF = 0xFFU; + udev->regs.er_out[i]->DOEPINTF = 0xFFU; + } + + udev->regs.dr->DIEPINTEN = 0U; + udev->regs.dr->DOEPINTEN = 0U; + udev->regs.dr->DAEPINTEN = 0U; + udev->regs.dr->DAEPINT = 0xFFFFFFFFU; + + /* flush the FIFO */ + (void)usb_rxfifo_flush (&udev->regs); + (void)usb_txfifo_flush (&udev->regs, 0x10U); +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Source/drv_usb_host.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Source/drv_usb_host.c new file mode 100644 index 0000000000..ca17b4f6fb --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Source/drv_usb_host.c @@ -0,0 +1,452 @@ +/*! + \file drv_usb_host.c + \brief USB host mode low level driver + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "drv_usb_hw.h" +#include "drv_usb_core.h" +#include "drv_usb_host.h" + +const uint32_t PIPE_DPID[2] = { + PIPE_DPID_DATA0, + PIPE_DPID_DATA1 +}; + +/*! + \brief initializes USB core for host mode + \param[in] pudev: pointer to selected usb host + \param[out] none + \retval operation status +*/ +usb_status usb_host_init (usb_core_driver *pudev) +{ + uint32_t i = 0U, inten = 0U; + + uint32_t nptxfifolen = 0U; + uint32_t ptxfifolen = 0U; + + /* restart the PHY Clock */ + *pudev->regs.PWRCLKCTL = 0U; + + /* support FS/LS only */ + pudev->regs.hr->HCTL &= ~HCTL_SPDFSLS; + + /* configure data FIFOs size */ +#ifdef USB_FS_CORE + if (USB_CORE_ENUM_FS == pudev->bp.core_enum) { + /* set Rx FIFO size */ + pudev->regs.gr->GRFLEN = USB_RX_FIFO_FS_SIZE; + + /* set non-periodic Tx FIFO size and address */ + nptxfifolen |= USB_RX_FIFO_FS_SIZE; + nptxfifolen |= USB_HTX_NPFIFO_FS_SIZE << 16U; + pudev->regs.gr->DIEP0TFLEN_HNPTFLEN = nptxfifolen; + + /* set periodic Tx FIFO size and address */ + ptxfifolen |= USB_RX_FIFO_FS_SIZE + USB_HTX_NPFIFO_FS_SIZE; + ptxfifolen |= USB_HTX_PFIFO_FS_SIZE << 16U; + pudev->regs.gr->HPTFLEN = ptxfifolen; + } +#endif /* USB_FS_CORE */ + +#ifdef USE_OTG_MODE + + /* clear host set hnp enable in the usb_otg control register */ + pudev->regs.gr->GOTGCS &= ~GOTGCS_HHNPEN; + +#endif /* USE_OTG_MODE */ + + /* make sure the FIFOs are flushed */ + + /* flush all Tx FIFOs in device or host mode */ + usb_txfifo_flush (&pudev->regs, 0x10U); + + /* flush the entire Rx FIFO */ + usb_rxfifo_flush (&pudev->regs); + + /* disable all interrupts */ + pudev->regs.gr->GINTEN = 0U; + + /* clear any pending USB OTG interrupts */ + pudev->regs.gr->GOTGINTF = 0xFFFFFFFFU; + + /* enable the USB wakeup and suspend interrupts */ + pudev->regs.gr->GINTF = 0xBFFFFFFFU; + + /* clear all pending host channel interrupts */ + for (i = 0U; i < pudev->bp.num_pipe; i++) { + pudev->regs.pr[i]->HCHINTF = 0xFFFFFFFFU; + pudev->regs.pr[i]->HCHINTEN = 0U; + } + +#ifndef USE_OTG_MODE + usb_portvbus_switch (pudev, 1U); +#endif /* USE_OTG_MODE */ + + pudev->regs.gr->GINTEN = GINTEN_WKUPIE | GINTEN_SPIE; + + /* enable host_mode-related interrupts */ + if (USB_USE_FIFO == pudev->bp.transfer_mode) { + inten = GINTEN_RXFNEIE; + } + + inten |= GINTEN_SESIE | GINTEN_HPIE | GINTEN_HCIE | GINTEN_ISOINCIE; + + pudev->regs.gr->GINTEN |= inten; + + inten = GINTEN_DISCIE | GINTEN_SOFIE; + + pudev->regs.gr->GINTEN &= ~inten; + + return USB_OK; +} + +/*! + \brief control the VBUS to power + \param[in] pudev: pointer to selected usb host + \param[in] state: VBUS state + \param[out] none + \retval none +*/ +void usb_portvbus_switch (usb_core_driver *pudev, uint8_t state) +{ + uint32_t port = 0U; + + /* enable or disable the external charge pump */ + usb_vbus_drive (state); + + /* turn on the host port power. */ + port = usb_port_read (pudev); + + if (!(port & HPCS_PP) && (1U == state)) { + port |= HPCS_PP; + } + + if ((port & HPCS_PP) && (0U == state)) { + port &= ~HPCS_PP; + } + + *pudev->regs.HPCS = port; + + usb_mdelay (200U); +} + +/*! + \brief reset host port + \param[in] pudev: pointer to usb device + \param[out] none + \retval operation status +*/ +uint32_t usb_port_reset (usb_core_driver *pudev) +{ + __IO uint32_t port = usb_port_read (pudev); + + *pudev->regs.HPCS = port | HPCS_PRST; + + usb_mdelay(20U); /* see note */ + + *pudev->regs.HPCS = port & ~HPCS_PRST; + + usb_mdelay(20U); + + return 1U; +} + +/*! + \brief initialize host pipe + \param[in] pudev: pointer to usb device + \param[in] pipe_num: host pipe number which is in (0..7) + \param[out] none + \retval operation status +*/ +usb_status usb_pipe_init (usb_core_driver *pudev, uint8_t pipe_num) +{ + usb_status status = USB_OK; + + __IO uint32_t pp_ctl = 0U; + __IO uint32_t pp_inten = HCHINTEN_TFIE; + + usb_pipe *pp = &pudev->host.pipe[pipe_num]; + + /* clear old interrupt conditions for this host channel */ + pudev->regs.pr[pipe_num]->HCHINTF = 0xFFFFFFFFU; + + if (USB_USE_DMA == pudev->bp.transfer_mode) { + pp_inten |= HCHINTEN_DMAERIE; + } + + if (pp->ep.dir) { + pp_inten |= HCHINTEN_BBERIE; + } + + /* enable channel interrupts required for this transfer */ + switch (pp->ep.type) { + case USB_EPTYPE_CTRL: + case USB_EPTYPE_BULK: + pp_inten |= HCHINTEN_STALLIE | HCHINTEN_USBERIE \ + | HCHINTEN_DTERIE | HCHINTEN_NAKIE; + + if (!pp->ep.dir) { + pp_inten |= HCHINTEN_NYETIE; + + if (pp->ping) { + pp_inten |= HCHINTEN_ACKIE; + } + } + break; + + case USB_EPTYPE_INTR: + pp_inten |= HCHINTEN_STALLIE | HCHINTEN_USBERIE | HCHINTEN_DTERIE \ + | HCHINTEN_NAKIE | HCHINTEN_REQOVRIE; + break; + + case USB_EPTYPE_ISOC: + pp_inten |= HCHINTEN_REQOVRIE | HCHINTEN_ACKIE; + + if (pp->ep.dir) { + pp_inten |= HCHINTEN_USBERIE; + } + break; + + default: + break; + } + + pudev->regs.pr[pipe_num]->HCHINTEN = pp_inten; + + /* enable the top level host channel interrupt */ + pudev->regs.hr->HACHINTEN |= 1U << pipe_num; + + /* make sure host channel interrupts are enabled */ + pudev->regs.gr->GINTEN |= GINTEN_HCIE; + + /* program the host channel control register */ + pp_ctl |= PIPE_CTL_DAR(pp->dev_addr); + pp_ctl |= PIPE_CTL_EPNUM(pp->ep.num); + pp_ctl |= PIPE_CTL_EPDIR(pp->ep.dir); + pp_ctl |= PIPE_CTL_EPTYPE(pp->ep.type); + pp_ctl |= PIPE_CTL_LSD(pp->dev_speed == PORT_SPEED_LOW); + + pp_ctl |= pp->ep.mps; + pp_ctl |= ((uint32_t)(pp->ep.type == USB_EPTYPE_INTR) << 29U) & HCHCTL_ODDFRM; + + pudev->regs.pr[pipe_num]->HCHCTL = pp_ctl; + + return status; +} + +/*! + \brief prepare host channel for transferring packets + \param[in] pudev: pointer to usb device + \param[in] pipe_num: host pipe number which is in (0..7) + \param[out] none + \retval operation status +*/ +usb_status usb_pipe_xfer (usb_core_driver *pudev, uint8_t pipe_num) +{ + usb_status status = USB_OK; + + uint16_t dword_len = 0U; + uint16_t packet_count = 0U; + + __IO uint32_t pp_ctl = 0U; + + usb_pipe *pp = &pudev->host.pipe[pipe_num]; + + uint16_t max_packet_len = pp->ep.mps; + + /* compute the expected number of packets associated to the transfer */ + if (pp->xfer_len > 0U) { + packet_count = (uint16_t)((pp->xfer_len + max_packet_len - 1U) / max_packet_len); + + if (packet_count > HC_MAX_PACKET_COUNT) { + packet_count = HC_MAX_PACKET_COUNT; + pp->xfer_len = (uint16_t)(packet_count * max_packet_len); + } + } else { + packet_count = 1U; + } + + if (pp->ep.dir) { + pp->xfer_len = (uint16_t)(packet_count * max_packet_len); + } + + /* initialize the host channel transfer information */ + pudev->regs.pr[pipe_num]->HCHLEN = pp->xfer_len | pp->DPID | PIPE_XFER_PCNT(packet_count); + + if (USB_USE_DMA == pudev->bp.transfer_mode) { + pudev->regs.pr[pipe_num]->HCHDMAADDR = (unsigned int)pp->xfer_buf; + } + + pp_ctl = pudev->regs.pr[pipe_num]->HCHCTL; + + if (usb_frame_even(pudev)) { + pp_ctl |= HCHCTL_ODDFRM; + } else { + pp_ctl &= ~HCHCTL_ODDFRM; + } + + /* set host channel enabled */ + pp_ctl |= HCHCTL_CEN; + pp_ctl &= ~HCHCTL_CDIS; + + pudev->regs.pr[pipe_num]->HCHCTL = pp_ctl; + + if (USB_USE_FIFO == pudev->bp.transfer_mode) { + if ((0U == pp->ep.dir) && (pp->xfer_len > 0U)) { + switch (pp->ep.type) { + /* non-periodic transfer */ + case USB_EPTYPE_CTRL: + case USB_EPTYPE_BULK: + dword_len = (uint16_t)((pp->xfer_len + 3U) / 4U); + + /* check if there is enough space in fifo space */ + if (dword_len > (pudev->regs.gr->HNPTFQSTAT & HNPTFQSTAT_NPTXFS)) { + /* need to process data in nptxfempty interrupt */ + pudev->regs.gr->GINTEN |= GINTEN_NPTXFEIE; + } + break; + + /* periodic transfer */ + case USB_EPTYPE_INTR: + case USB_EPTYPE_ISOC: + dword_len = (uint16_t)((pp->xfer_len + 3U) / 4U); + + /* check if there is enough space in fifo space */ + if (dword_len > (pudev->regs.hr->HPTFQSTAT & HPTFQSTAT_PTXFS)) { + /* need to process data in ptxfempty interrupt */ + pudev->regs.gr->GINTEN |= GINTEN_PTXFEIE; + } + break; + + default: + break; + } + + /* write packet into the tx fifo. */ + usb_txfifo_write (&pudev->regs, pp->xfer_buf, pipe_num, (uint16_t)pp->xfer_len); + } + } + + return status; +} + +/*! + \brief halt pipe + \param[in] pudev: pointer to usb device + \param[in] pipe_num: host pipe number which is in (0..7) + \param[out] none + \retval operation status +*/ +usb_status usb_pipe_halt (usb_core_driver *pudev, uint8_t pipe_num) +{ + __IO uint32_t pp_ctl = pudev->regs.pr[pipe_num]->HCHCTL; + + uint8_t ep_type = (uint8_t)((pp_ctl & HCHCTL_EPTYPE) >> 18U); + + pp_ctl |= HCHCTL_CEN | HCHCTL_CDIS; + + switch (ep_type) { + case USB_EPTYPE_CTRL: + case USB_EPTYPE_BULK: + if (0U == (pudev->regs.gr->HNPTFQSTAT & HNPTFQSTAT_NPTXFS)) { + pp_ctl &= ~HCHCTL_CEN; + } + break; + + case USB_EPTYPE_INTR: + case USB_EPTYPE_ISOC: + if (0U == (pudev->regs.hr->HPTFQSTAT & HPTFQSTAT_PTXFS)) { + pp_ctl &= ~HCHCTL_CEN; + } + break; + + default: + break; + } + + pudev->regs.pr[pipe_num]->HCHCTL = pp_ctl; + + return USB_OK; +} + +/*! + \brief configure host pipe to do ping operation + \param[in] pudev: pointer to usb device + \param[in] pipe_num: host pipe number which is in (0..7) + \param[out] none + \retval operation status +*/ +usb_status usb_pipe_ping (usb_core_driver *pudev, uint8_t pipe_num) +{ + uint32_t pp_ctl = 0U; + + pudev->regs.pr[pipe_num]->HCHLEN = HCHLEN_PING | (HCHLEN_PCNT & (1U << 19U)); + + pp_ctl = pudev->regs.pr[pipe_num]->HCHCTL; + + pp_ctl |= HCHCTL_CEN; + pp_ctl &= ~HCHCTL_CDIS; + + pudev->regs.pr[pipe_num]->HCHCTL = pp_ctl; + + return USB_OK; +} + +/*! + \brief stop the USB host and clean up FIFO + \param[in] pudev: pointer to usb device + \param[out] none + \retval none +*/ +void usb_host_stop (usb_core_driver *pudev) +{ + uint32_t i; + __IO uint32_t pp_ctl = 0U; + + pudev->regs.hr->HACHINTEN = 0x0U; + pudev->regs.hr->HACHINT = 0xFFFFFFFFU; + + /* flush out any leftover queued requests. */ + for (i = 0U; i < pudev->bp.num_pipe; i++) { + pp_ctl = pudev->regs.pr[i]->HCHCTL; + + pp_ctl &= ~(HCHCTL_CEN | HCHCTL_EPDIR); + pp_ctl |= HCHCTL_CDIS; + + pudev->regs.pr[i]->HCHCTL = pp_ctl; + } + + /* flush the FIFO */ + usb_rxfifo_flush (&pudev->regs); + usb_txfifo_flush (&pudev->regs, 0x10U); +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Source/drv_usbd_int.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Source/drv_usbd_int.c new file mode 100644 index 0000000000..4550e6386c --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Source/drv_usbd_int.c @@ -0,0 +1,489 @@ +/*! + \file drv_usbd_int.c + \brief USB device mode interrupt routines + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 + \version 2021-05-19, V1.1.1, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "usbd_conf.h" +#include "drv_usbd_int.h" +#include "usbd_transc.h" + +/* local function prototypes ('static') */ +static uint32_t usbd_int_epout (usb_core_driver *udev); +static uint32_t usbd_int_epin (usb_core_driver *udev); +static uint32_t usbd_int_rxfifo (usb_core_driver *udev); +static uint32_t usbd_int_reset (usb_core_driver *udev); +static uint32_t usbd_int_enumfinish (usb_core_driver *udev); +static uint32_t usbd_int_suspend (usb_core_driver *udev); +static uint32_t usbd_emptytxfifo_write (usb_core_driver *udev, uint32_t ep_num); + +static const uint8_t USB_SPEED[4] = { + [DSTAT_EM_HS_PHY_30MHZ_60MHZ] = (uint8_t)USB_SPEED_HIGH, + [DSTAT_EM_FS_PHY_30MHZ_60MHZ] = (uint8_t)USB_SPEED_FULL, + [DSTAT_EM_FS_PHY_48MHZ] = (uint8_t)USB_SPEED_FULL, + [DSTAT_EM_LS_PHY_6MHZ] = (uint8_t)USB_SPEED_LOW +}; + +/*! + \brief USB device-mode interrupts global service routine handler + \param[in] udev: pointer to USB device instance + \param[out] none + \retval none +*/ +void usbd_isr (usb_core_driver *udev) +{ + if (HOST_MODE != (udev->regs.gr->GINTF & GINTF_COPM)) { + uint32_t intr = udev->regs.gr->GINTF & udev->regs.gr->GINTEN; + + /* there are no interrupts, avoid spurious interrupt */ + if (!intr) { + return; + } + + /* OUT endpoints interrupts */ + if (intr & GINTF_OEPIF) { + (void)usbd_int_epout (udev); + } + + /* IN endpoints interrupts */ + if (intr & GINTF_IEPIF) { + (void)usbd_int_epin (udev); + } + + /* suspend interrupt */ + if (intr & GINTF_SP) { + (void)usbd_int_suspend (udev); + } + + /* wakeup interrupt */ + if (intr & GINTF_WKUPIF) { + /* inform upper layer by the resume event */ + udev->dev.cur_status = USBD_CONFIGURED; + + /* clear interrupt */ + udev->regs.gr->GINTF = GINTF_WKUPIF; + } + + /* start of frame interrupt */ + if (intr & GINTF_SOF) { + if (udev->dev.class_core->SOF) { + (void)udev->dev.class_core->SOF(udev); + } + + /* clear interrupt */ + udev->regs.gr->GINTF = GINTF_SOF; + } + + /* receive FIFO not empty interrupt */ + if (intr & GINTF_RXFNEIF) { + (void)usbd_int_rxfifo (udev); + } + + /* USB reset interrupt */ + if (intr & GINTF_RST) { + (void)usbd_int_reset (udev); + } + + /* enumeration has been done interrupt */ + if (intr & GINTF_ENUMFIF) { + (void)usbd_int_enumfinish (udev); + } + + /* incomplete synchronization IN transfer interrupt*/ + if (intr & GINTF_ISOINCIF) { + if (NULL != udev->dev.class_core->incomplete_isoc_in) { + (void)udev->dev.class_core->incomplete_isoc_in(udev); + } + + /* Clear interrupt */ + udev->regs.gr->GINTF = GINTF_ISOINCIF; + } + + /* incomplete synchronization OUT transfer interrupt*/ + if (intr & GINTF_ISOONCIF) { + if (NULL != udev->dev.class_core->incomplete_isoc_out) { + (void)udev->dev.class_core->incomplete_isoc_out(udev); + } + + /* clear interrupt */ + udev->regs.gr->GINTF = GINTF_ISOONCIF; + } + +#ifdef VBUS_SENSING_ENABLED + + /* Session request interrupt */ + if (intr & GINTF_SESIF) { + udev->regs.gr->GINTF = GINTF_SESIF; + } + + /* OTG mode interrupt */ + if (intr & GINTF_OTGIF) { + if(udev->regs.gr->GOTGINTF & GOTGINTF_SESEND) { + + } + + /* Clear OTG interrupt */ + udev->regs.gr->GINTF = GINTF_OTGIF; + } +#endif /* VBUS_SENSING_ENABLED */ + } +} + +/*! + \brief indicates that an OUT endpoint has a pending interrupt + \param[in] udev: pointer to USB device instance + \param[out] none + \retval operation status +*/ +static uint32_t usbd_int_epout (usb_core_driver *udev) +{ + uint32_t epintnum = 0U; + uint8_t ep_num = 0U; + + for (epintnum = usb_oepintnum_read (udev); epintnum; epintnum >>= 1, ep_num++) { + if (epintnum & 0x01U) { + __IO uint32_t oepintr = usb_oepintr_read (udev, ep_num); + + /* transfer complete interrupt */ + if (oepintr & DOEPINTF_TF) { + /* clear the bit in DOEPINTF for this interrupt */ + udev->regs.er_out[ep_num]->DOEPINTF = DOEPINTF_TF; + + if ((uint8_t)USB_USE_DMA == udev->bp.transfer_mode) { + __IO uint32_t eplen = udev->regs.er_out[ep_num]->DOEPLEN; + + udev->dev.transc_out[ep_num].xfer_count = udev->dev.transc_out[ep_num].max_len - \ + (eplen & DEPLEN_TLEN); + } + + /* inform upper layer: data ready */ + (void)usbd_out_transc (udev, ep_num); + + if ((uint8_t)USB_USE_DMA == udev->bp.transfer_mode) { + if ((0U == ep_num) && ((uint8_t)USB_CTL_STATUS_OUT == udev->dev.control.ctl_state)) { + usb_ctlep_startout (udev); + } + } + } + + /* setup phase finished interrupt (control endpoints) */ + if (oepintr & DOEPINTF_STPF) { + /* inform the upper layer that a setup packet is available */ + (void)usbd_setup_transc (udev); + + udev->regs.er_out[ep_num]->DOEPINTF = DOEPINTF_STPF; + } + } + } + + return 1U; +} + +/*! + \brief indicates that an IN endpoint has a pending interrupt + \param[in] udev: pointer to USB device instance + \param[out] none + \retval operation status +*/ +static uint32_t usbd_int_epin (usb_core_driver *udev) +{ + uint32_t epintnum = 0U; + uint8_t ep_num = 0U; + + for (epintnum = usb_iepintnum_read (udev); epintnum; epintnum >>= 1, ep_num++) { + if (epintnum & 0x1U) { + __IO uint32_t iepintr = usb_iepintr_read (udev, ep_num); + + if (iepintr & DIEPINTF_TF) { + udev->regs.er_in[ep_num]->DIEPINTF = DIEPINTF_TF; + + /* data transmission is completed */ + (void)usbd_in_transc (udev, ep_num); + + if ((uint8_t)USB_USE_DMA == udev->bp.transfer_mode) { + if ((0U == ep_num) && ((uint8_t)USB_CTL_STATUS_IN == udev->dev.control.ctl_state)) { + usb_ctlep_startout (udev); + } + } + } + + if (iepintr & DIEPINTF_TXFE) { + usbd_emptytxfifo_write (udev, (uint32_t)ep_num); + + udev->regs.er_in[ep_num]->DIEPINTF = DIEPINTF_TXFE; + } + } + } + + return 1U; +} + + + +/*! + \brief handle the RX status queue level interrupt + \param[in] udev: pointer to USB device instance + \param[out] none + \retval operation status +*/ +static uint32_t usbd_int_rxfifo (usb_core_driver *udev) +{ + usb_transc *transc = NULL; + + uint8_t data_PID = 0U; + uint32_t bcount = 0U; + + __IO uint32_t devrxstat = 0U; + + /* disable the Rx status queue non-empty interrupt */ + udev->regs.gr->GINTEN &= ~GINTEN_RXFNEIE; + + /* get the status from the top of the FIFO */ + devrxstat = udev->regs.gr->GRSTATP; + + uint8_t ep_num = (uint8_t)(devrxstat & GRSTATRP_EPNUM); + + transc = &udev->dev.transc_out[ep_num]; + + bcount = (devrxstat & GRSTATRP_BCOUNT) >> 4U; + data_PID = (uint8_t)((devrxstat & GRSTATRP_DPID) >> 15U); + + switch ((devrxstat & GRSTATRP_RPCKST) >> 17U) { + case RSTAT_GOUT_NAK: + break; + + case RSTAT_DATA_UPDT: + if (bcount > 0U) { + (void)usb_rxfifo_read (&udev->regs, transc->xfer_buf, (uint16_t)bcount); + + transc->xfer_buf += bcount; + transc->xfer_count += bcount; + } + break; + + case RSTAT_XFER_COMP: + /* trigger the OUT endpoint interrupt */ + break; + + case RSTAT_SETUP_COMP: + /* trigger the OUT endpoint interrupt */ + break; + + case RSTAT_SETUP_UPDT: + if ((0U == transc->ep_addr.num) && (8U == bcount) && (DPID_DATA0 == data_PID)) { + /* copy the setup packet received in FIFO into the setup buffer in RAM */ + (void)usb_rxfifo_read (&udev->regs, (uint8_t *)&udev->dev.control.req, (uint16_t)bcount); + + transc->xfer_count += bcount; + } + break; + + default: + break; + } + + /* enable the Rx status queue level interrupt */ + udev->regs.gr->GINTEN |= GINTEN_RXFNEIE; + + return 1U; +} + +/*! + \brief handle USB reset interrupt + \param[in] udev: pointer to USB device instance + \param[out] none + \retval status +*/ +static uint32_t usbd_int_reset (usb_core_driver *udev) +{ + uint32_t i; + + /* clear the remote wakeup signaling */ + udev->regs.dr->DCTL &= ~DCTL_RWKUP; + + /* flush the Tx FIFO */ + (void)usb_txfifo_flush (&udev->regs, 0U); + + for (i = 0U; i < udev->bp.num_ep; i++) { + udev->regs.er_in[i]->DIEPINTF = 0xFFU; + udev->regs.er_out[i]->DOEPINTF = 0xFFU; + } + + /* clear all pending device endpoint interrupts */ + udev->regs.dr->DAEPINT = 0xFFFFFFFFU; + + /* enable endpoint 0 interrupts */ + udev->regs.dr->DAEPINTEN = 1U | (1U << 16U); + + /* enable OUT endpoint interrupts */ + udev->regs.dr->DOEPINTEN = DOEPINTEN_STPFEN | DOEPINTEN_TFEN; + + /* enable IN endpoint interrupts */ + udev->regs.dr->DIEPINTEN = DIEPINTEN_TFEN; + + /* reset device address */ + udev->regs.dr->DCFG &= ~DCFG_DAR; + + /* configure endpoint 0 to receive SETUP packets */ + usb_ctlep_startout (udev); + + /* clear USB reset interrupt */ + udev->regs.gr->GINTF = GINTF_RST; + + udev->dev.transc_out[0].ep_type = USB_EPTYPE_CTRL; + udev->dev.transc_out[0].max_len = USB_FS_EP0_MAX_LEN; + + (void)usb_transc_active (udev, &udev->dev.transc_out[0]); + + udev->dev.transc_in[0].ep_addr.dir = 1U; + udev->dev.transc_in[0].ep_type = USB_EPTYPE_CTRL; + udev->dev.transc_in[0].max_len = USB_FS_EP0_MAX_LEN; + + (void)usb_transc_active (udev, &udev->dev.transc_in[0]); + + /* upon reset call user call back */ + udev->dev.cur_status = (uint8_t)USBD_DEFAULT; + + return 1U; +} + +/*! + \brief handle USB speed enumeration finish interrupt + \param[in] udev: pointer to USB device instance + \param[out] none + \retval status +*/ +static uint32_t usbd_int_enumfinish (usb_core_driver *udev) +{ + uint8_t enum_speed = (uint8_t)((udev->regs.dr->DSTAT & DSTAT_ES) >> 1U); + + udev->regs.dr->DCTL &= ~DCTL_CGINAK; + udev->regs.dr->DCTL |= DCTL_CGINAK; + + udev->regs.gr->GUSBCS &= ~GUSBCS_UTT; + + /* set USB turn-around time based on device speed and PHY interface */ + if (USB_SPEED[enum_speed] == (uint8_t)USB_SPEED_HIGH) { + udev->bp.core_speed = (uint8_t)USB_SPEED_HIGH; + + udev->regs.gr->GUSBCS |= 0x09U << 10U; + } else { + udev->bp.core_speed = (uint8_t)USB_SPEED_FULL; + + udev->regs.gr->GUSBCS |= 0x05U << 10U; + } + + /* clear interrupt */ + udev->regs.gr->GINTF = GINTF_ENUMFIF; + + return 1U; +} + +/*! + \brief USB suspend interrupt handler + \param[in] udev: pointer to USB device instance + \param[out] none + \retval operation status +*/ +static uint32_t usbd_int_suspend (usb_core_driver *udev) +{ + __IO uint8_t low_power = udev->bp.low_power; + __IO uint8_t suspend = (uint8_t)(udev->regs.dr->DSTAT & DSTAT_SPST); + __IO uint8_t is_configured = (udev->dev.cur_status == (uint8_t)USBD_CONFIGURED)? 1U : 0U; + + udev->dev.backup_status = udev->dev.cur_status; + udev->dev.cur_status = (uint8_t)USBD_SUSPENDED; + + if (low_power && suspend && is_configured) { + /* switch-off the OTG clocks */ + *udev->regs.PWRCLKCTL |= PWRCLKCTL_SUCLK | PWRCLKCTL_SHCLK; + + /* enter DEEP_SLEEP mode with LDO in low power mode */ + pmu_to_deepsleepmode(PMU_LDO_LOWPOWER, WFI_CMD); + } + + /* clear interrupt */ + udev->regs.gr->GINTF = GINTF_SP; + + return 1U; +} + +/*! + \brief check FIFO for the next packet to be loaded + \param[in] udev: pointer to USB device instance + \param[in] ep_num: endpoint identifier which is in (0..3) + \param[out] none + \retval status +*/ +static uint32_t usbd_emptytxfifo_write (usb_core_driver *udev, uint32_t ep_num) +{ + uint32_t len; + uint32_t word_count; + + usb_transc *transc = &udev->dev.transc_in[ep_num]; + + len = transc->xfer_len - transc->xfer_count; + + /* get the data length to write */ + if (len > transc->max_len) { + len = transc->max_len; + } + + word_count = (len + 3U) / 4U; + + while (((udev->regs.er_in[ep_num]->DIEPTFSTAT & DIEPTFSTAT_IEPTFS) >= word_count) && \ + (transc->xfer_count < transc->xfer_len)) { + len = transc->xfer_len - transc->xfer_count; + + if (len > transc->max_len) { + len = transc->max_len; + } + + /* write FIFO in word(4bytes) */ + word_count = (len + 3U) / 4U; + + /* write the FIFO */ + (void)usb_txfifo_write (&udev->regs, transc->xfer_buf, (uint8_t)ep_num, (uint16_t)len); + + transc->xfer_buf += len; + transc->xfer_count += len; + + if (transc->xfer_count == transc->xfer_len) { + /* disable the device endpoint FIFO empty interrupt */ + udev->regs.dr->DIEPFEINTEN &= ~(0x01U << ep_num); + } + } + + return 1U; +} + + diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Source/drv_usbh_int.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Source/drv_usbh_int.c new file mode 100644 index 0000000000..5a74c1faa6 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/driver/Source/drv_usbh_int.c @@ -0,0 +1,622 @@ +/*! + \file drv_usbh_int.c + \brief USB host mode interrupt handler file + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "drv_usb_core.h" +#include "drv_usb_host.h" +#include "drv_usbh_int.h" +#include "usbh_core.h" + +#if defined (__CC_ARM) /*!< ARM compiler */ + #pragma O0 +#elif defined (__GNUC__) /*!< GNU compiler */ + #pragma GCC optimize ("O0") +#elif defined (__TASKING__) /*!< TASKING compiler */ + #pragma optimize=0 +#endif /* __CC_ARM */ + +/* local function prototypes ('static') */ +static uint32_t usbh_int_port (usb_core_driver *pudev); +static uint32_t usbh_int_pipe (usb_core_driver *pudev); +static uint32_t usbh_int_pipe_in (usb_core_driver *pudev, uint32_t pp_num); +static uint32_t usbh_int_pipe_out (usb_core_driver *pudev, uint32_t pp_num); +static uint32_t usbh_int_rxfifonoempty (usb_core_driver *pudev); +static uint32_t usbh_int_txfifoempty (usb_core_driver *pudev, usb_pipe_mode pp_mode); + +/*! + \brief handle global host interrupt + \param[in] pudev: pointer to USB core instance + \param[out] none + \retval operation status +*/ +uint32_t usbh_isr (usb_core_driver *pudev) +{ + uint32_t retval = 0U; + + __IO uint32_t intr = 0U; + + /* check if host mode */ + if (HOST_MODE == (pudev->regs.gr->GINTF & GINTF_COPM)) { + intr = usb_coreintr_get(&pudev->regs); + + if (!intr) { + return 0U; + } + + if (intr & GINTF_SOF) { + usbh_int_fop->SOF(pudev->host.data); + + /* clear interrupt */ + pudev->regs.gr->GINTF = GINTF_SOF; + } + + if (intr & GINTF_RXFNEIF) { + retval |= usbh_int_rxfifonoempty (pudev); + } + + if (intr & GINTF_NPTXFEIF) { + retval |= usbh_int_txfifoempty (pudev, PIPE_NON_PERIOD); + } + + if (intr & GINTF_PTXFEIF) { + retval |= usbh_int_txfifoempty (pudev, PIPE_PERIOD); + } + + if (intr & GINTF_HCIF) { + retval |= usbh_int_pipe (pudev); + } + + if (intr & GINTF_HPIF) { + retval |= usbh_int_port (pudev); + } + + if (intr & GINTF_DISCIF) { + usbh_int_fop->disconnect(pudev->host.data); + + /* clear interrupt */ + pudev->regs.gr->GINTF = GINTF_DISCIF; + } + + if (intr & GINTF_ISOONCIF) { + pudev->regs.pr[0]->HCHCTL |= HCHCTL_CEN | HCHCTL_CDIS; + + /* clear interrupt */ + pudev->regs.gr->GINTF = GINTF_ISOONCIF; + } + + if (intr & GINTF_SESIF) { + usb_portvbus_switch (pudev, 1U); + + pudev->regs.gr->GINTF = GINTF_SESIF; + } + + if (intr & GINTF_WKUPIF) { + /* clear interrupt */ + pudev->regs.gr->GINTF = GINTF_WKUPIF; + } + } + + return retval; +} + +/*! + \brief handle USB pipe halt + \param[in] pudev: pointer to USB core instance + \param[in] pp_num: pp_num: host channel number which is in (0..7) + \param[in] pp_int: pipe interrupt + \param[in] pp_status: pipe status + \param[out] none + \retval none +*/ +static inline void usb_pp_halt (usb_core_driver *pudev, + uint8_t pp_num, + uint32_t pp_int, + usb_pipe_staus pp_status) +{ + pudev->regs.pr[pp_num]->HCHINTEN |= HCHINTEN_CHIE; + + usb_pipe_halt(pudev, pp_num); + + pudev->regs.pr[pp_num]->HCHINTF = pp_int; + + pudev->host.pipe[pp_num].pp_status = pp_status; +} + +/*! + \brief handle the host port interrupt + \param[in] pudev: pointer to USB device instance + \param[out] none + \retval operation status +*/ +#if defined (__ICCARM__) /*!< IAR compiler */ + #pragma optimize = none +#endif /* __ICCARM */ +static uint32_t usbh_int_port (usb_core_driver *pudev) +{ + uint32_t retval = 0U; + + /* note: when the USB PHY use USB HS PHY, the flag is needed */ + uint8_t port_reset = 0U; + + __IO uint32_t port_state = *pudev->regs.HPCS; + + /* clear the interrupt bits in GINTSTS */ + port_state &= ~(HPCS_PE | HPCS_PCD | HPCS_PEDC); + + /* port connect detected */ + if (*pudev->regs.HPCS & HPCS_PCD) { + port_state |= HPCS_PCD; + + usbh_int_fop->connect(pudev->host.data); + + retval |= 1U; + } + + /* port enable changed */ + if (*pudev->regs.HPCS & HPCS_PEDC) { + port_state |= HPCS_PEDC; + + if (*pudev->regs.HPCS & HPCS_PE) { + uint32_t port_speed = usb_curspeed_get(pudev); + uint32_t clock_type = pudev->regs.hr->HCTL & HCTL_CLKSEL; + + pudev->host.connect_status = 1U; + + if (PORT_SPEED_LOW == port_speed) { + pudev->regs.hr->HFT = 6000U; + + if (HCTL_6MHZ != clock_type) { + if (USB_EMBEDDED_PHY == pudev->bp.phy_itf) { + usb_phyclock_config (pudev, HCTL_6MHZ); + } + + port_reset = 1U; + } + } else if (PORT_SPEED_FULL == port_speed) { + pudev->regs.hr->HFT = 48000U; + + if (HCTL_48MHZ != clock_type) { + usb_phyclock_config (pudev, HCTL_48MHZ); + } + + port_reset = 1U; + } else { + /* for high speed device and others */ + port_reset = 1U; + } + + usbh_int_fop->port_enabled(pudev->host.data); + + pudev->regs.gr->GINTEN |= GINTEN_DISCIE | GINTEN_SOFIE; + } else { + usbh_int_fop->port_disabled(pudev->host.data); + } + } + + if (port_reset) { + usb_port_reset(pudev); + } + + /* clear port interrupts */ + *pudev->regs.HPCS = port_state; + + return retval; +} + +/*! + \brief handle all host channels interrupt + \param[in] pudev: pointer to USB device instance + \param[out] none + \retval operation status +*/ +static uint32_t usbh_int_pipe (usb_core_driver *pudev) +{ + uint32_t pp_num = 0U; + uint32_t retval = 0U; + + for (pp_num = 0U; pp_num < pudev->bp.num_pipe; pp_num++) { + if ((pudev->regs.hr->HACHINT & HACHINT_HACHINT) & (1UL << pp_num)) { + if (pudev->regs.pr[pp_num]->HCHCTL & HCHCTL_EPDIR) { + retval |= usbh_int_pipe_in (pudev, pp_num); + } else { + retval |= usbh_int_pipe_out (pudev, pp_num); + } + } + } + + return retval; +} + +/*! + \brief handle the IN channel interrupt + \param[in] pudev: pointer to USB device instance + \param[in] pp_num: host channel number which is in (0..7) + \param[out] none + \retval operation status +*/ +#if defined (__ICCARM__) /*!< IAR compiler */ + #pragma optimize = none +#endif /* __ICCARM */ +static uint32_t usbh_int_pipe_in (usb_core_driver *pudev, uint32_t pp_num) +{ + usb_pr *pp_reg = pudev->regs.pr[pp_num]; + + usb_pipe *pp = &pudev->host.pipe[pp_num]; + + __IO uint32_t intr_pp = pp_reg->HCHINTF & pp_reg->HCHINTEN; + + uint8_t ep_type = (uint8_t)((pp_reg->HCHCTL & HCHCTL_EPTYPE) >> 18U); + + if (intr_pp & HCHINTF_ACK) { + pp_reg->HCHINTF = HCHINTF_ACK; + } else if (intr_pp & HCHINTF_STALL) { + usb_pp_halt (pudev, (uint8_t)pp_num, HCHINTF_STALL, PIPE_STALL); + pp_reg->HCHINTF = HCHINTF_NAK; + + /* note: When there is a 'STALL', reset also NAK, + else, the pudev->host.pp_status = HC_STALL + will be overwritten by 'NAK' in code below */ + intr_pp &= ~HCHINTF_NAK; + } else if (intr_pp & HCHINTF_DTER) { + usb_pp_halt (pudev, (uint8_t)pp_num, HCHINTF_DTER, PIPE_DTGERR); + pp_reg->HCHINTF = HCHINTF_NAK; + } else { + /* no operation */ + } + + if (intr_pp & HCHINTF_REQOVR) { + usb_pp_halt (pudev, (uint8_t)pp_num, HCHINTF_REQOVR, PIPE_REQOVR); + } else if (intr_pp & HCHINTF_TF) { + if ((uint8_t)USB_USE_DMA == pudev->bp.transfer_mode) { + pudev->host.backup_xfercount[pp_num] = pp->xfer_len - (pp_reg->HCHLEN & HCHLEN_TLEN); + } + + pp->pp_status = PIPE_XF; + pp->err_count = 0U; + + pp_reg->HCHINTF = HCHINTF_TF; + + switch (ep_type) { + case USB_EPTYPE_CTRL: + case USB_EPTYPE_BULK: + usb_pp_halt (pudev, (uint8_t)pp_num, HCHINTF_NAK, PIPE_XF); + + pp->data_toggle_in ^= 1U; + break; + + case USB_EPTYPE_INTR: + case USB_EPTYPE_ISOC: + pp_reg->HCHCTL |= HCHCTL_ODDFRM; + pp->urb_state = URB_DONE; + break; + + default: + break; + } + } else if (intr_pp & HCHINTF_CH) { + pp_reg->HCHINTEN &= ~HCHINTEN_CHIE; + + switch (pp->pp_status) { + case PIPE_XF: + pp->urb_state = URB_DONE; + break; + + case PIPE_STALL: + pp->urb_state = URB_STALL; + break; + + case PIPE_TRACERR: + case PIPE_DTGERR: + pp->err_count = 0U; + pp->urb_state = URB_ERROR; + + pp->data_toggle_in ^= 1U; + break; + + case PIPE_IDLE: + case PIPE_HALTED: + case PIPE_NAK: + case PIPE_NYET: + case PIPE_BBERR: + case PIPE_REQOVR: + default: + if((uint8_t)USB_EPTYPE_INTR == ep_type) { + pp->data_toggle_in ^= 1U; + } + break; + } + + pp_reg->HCHINTF = HCHINTF_CH; + } else if (intr_pp & HCHINTF_USBER) { + pp->err_count++; + usb_pp_halt (pudev, (uint8_t)pp_num, HCHINTF_USBER, PIPE_TRACERR); + } else if (intr_pp & HCHINTF_NAK) { + switch (ep_type) { + case USB_EPTYPE_CTRL: + case USB_EPTYPE_BULK: + /* re-activate the channel */ + pp_reg->HCHCTL = (pp_reg->HCHCTL | HCHCTL_CEN) & ~HCHCTL_CDIS; + break; + + case USB_EPTYPE_INTR: + pp_reg->HCHINTEN |= HCHINTEN_CHIE; + + (void)usb_pipe_halt(pudev, (uint8_t)pp_num); + break; + + default: + break; + } + + pp->pp_status = PIPE_NAK; + + pp_reg->HCHINTF = HCHINTF_NAK; + } else { + /* no operation */ + } + + return 1U; +} + +/*! + \brief handle the OUT channel interrupt + \param[in] pudev: pointer to USB device instance + \param[in] pp_num: host channel number which is in (0..7) + \param[out] none + \retval operation status +*/ +#if defined (__ICCARM__) /*!< IAR compiler */ + #pragma optimize = none +#endif /* __ICCARM */ +static uint32_t usbh_int_pipe_out (usb_core_driver *pudev, uint32_t pp_num) +{ + usb_pr *pp_reg = pudev->regs.pr[pp_num]; + + usb_pipe *pp = &pudev->host.pipe[pp_num]; + + uint32_t intr_pp = pp_reg->HCHINTF & pp_reg->HCHINTEN; + + if (intr_pp & HCHINTF_ACK) { + if (URB_PING == pp->urb_state) { + pp->err_count = 0U; + usb_pp_halt (pudev, (uint8_t)pp_num, HCHINTF_TF, PIPE_XF); + } + + pp_reg->HCHINTF = HCHINTF_ACK; + } else if (intr_pp & HCHINTF_STALL) { + usb_pp_halt (pudev, (uint8_t)pp_num, HCHINTF_STALL, PIPE_STALL); + } else if (intr_pp & HCHINTF_DTER) { + usb_pp_halt (pudev, (uint8_t)pp_num, HCHINTF_DTER, PIPE_DTGERR); + pp_reg->HCHINTF = HCHINTF_NAK; + } else if (intr_pp & HCHINTF_REQOVR) { + usb_pp_halt (pudev, (uint8_t)pp_num, HCHINTF_REQOVR, PIPE_REQOVR); + } else if (intr_pp & HCHINTF_TF) { + pp->err_count = 0U; + usb_pp_halt (pudev, (uint8_t)pp_num, HCHINTF_TF, PIPE_XF); + } else if (intr_pp & HCHINTF_NAK) { + pp->err_count = 0U; + usb_pp_halt (pudev, (uint8_t)pp_num, HCHINTF_NAK, PIPE_NAK); + } else if (intr_pp & HCHINTF_USBER) { + pp->err_count++; + usb_pp_halt (pudev, (uint8_t)pp_num, HCHINTF_USBER, PIPE_TRACERR); + } else if (intr_pp & HCHINTF_NYET) { + pp->err_count = 0U; + usb_pp_halt (pudev, (uint8_t)pp_num, HCHINTF_NYET, PIPE_NYET); + } else if (intr_pp & HCHINTF_CH) { + pudev->regs.pr[pp_num]->HCHINTEN &= ~HCHINTEN_CHIE; + + switch (pp->pp_status) { + case PIPE_XF: + pp->urb_state = URB_DONE; + + if ((uint8_t)USB_EPTYPE_BULK == ((pp_reg->HCHCTL & HCHCTL_EPTYPE) >> 18U)) { + pp->data_toggle_out ^= 1U; + } + break; + + case PIPE_NAK: + + if (URB_PING == pp->urb_state) { + (void)usb_pipe_ping (pudev, (uint8_t)pp_num); + } else { + pp->urb_state = URB_NOTREADY; + } + break; + + case PIPE_NYET: + if (1U == pudev->host.pipe[pp_num].ping) { + (void)usb_pipe_ping (pudev, (uint8_t)pp_num); + pp->urb_state = URB_PING; + } + else { + pp->urb_state = URB_NOTREADY; + } + break; + + case PIPE_STALL: + pp->urb_state = URB_STALL; + break; + + case PIPE_TRACERR: + if (3U == pp->err_count) { + pp->urb_state = URB_ERROR; + pp->err_count = 0U; + } + break; + + case PIPE_IDLE: + case PIPE_HALTED: + case PIPE_BBERR: + case PIPE_REQOVR: + case PIPE_DTGERR: + default: + break; + } + + pp_reg->HCHINTF = HCHINTF_CH; + } else { + /* no operation */ + } + + return 1U; +} + +/*! + \brief handle the RX FIFO non-empty interrupt + \param[in] pudev: pointer to USB device instance + \param[out] none + \retval operation status +*/ +#if defined (__ICCARM__) /*!< IAR compiler */ + #pragma optimize = none +#endif /* __ICCARM */ +static uint32_t usbh_int_rxfifonoempty (usb_core_driver *pudev) +{ + uint32_t count = 0U; + + __IO uint8_t pp_num = 0U; + __IO uint32_t rx_stat = 0U; + + /* disable the RX status queue level interrupt */ + pudev->regs.gr->GINTEN &= ~GINTEN_RXFNEIE; + + rx_stat = pudev->regs.gr->GRSTATP; + pp_num = (uint8_t)(rx_stat & GRSTATRP_CNUM); + + switch ((rx_stat & GRSTATRP_RPCKST) >> 17U) { + case GRXSTS_PKTSTS_IN: + count = (rx_stat & GRSTATRP_BCOUNT) >> 4U; + + /* read the data into the host buffer. */ + if ((count > 0U) && (NULL != pudev->host.pipe[pp_num].xfer_buf)) { + (void)usb_rxfifo_read (&pudev->regs, pudev->host.pipe[pp_num].xfer_buf, (uint16_t)count); + + /* manage multiple transfer packet */ + pudev->host.pipe[pp_num].xfer_buf += count; + pudev->host.pipe[pp_num].xfer_count += count; + + pudev->host.backup_xfercount[pp_num] = pudev->host.pipe[pp_num].xfer_count; + + if (pudev->regs.pr[pp_num]->HCHLEN & HCHLEN_PCNT) { + /* re-activate the channel when more packets are expected */ + __IO uint32_t pp_ctl = pudev->regs.pr[pp_num]->HCHCTL; + + pp_ctl |= HCHCTL_CEN; + pp_ctl &= ~HCHCTL_CDIS; + + pudev->regs.pr[pp_num]->HCHCTL = pp_ctl; + } + } + break; + + case GRXSTS_PKTSTS_IN_XFER_COMP: + break; + + case GRXSTS_PKTSTS_DATA_TOGGLE_ERR: + count = (rx_stat & GRSTATRP_BCOUNT) >> 4U; + + while (count > 0U) { + rx_stat = pudev->regs.gr->GRSTATP; + count--; + } + break; + + case GRXSTS_PKTSTS_CH_HALTED: + break; + + default: + break; + } + + /* enable the RX status queue level interrupt */ + pudev->regs.gr->GINTEN |= GINTEN_RXFNEIE; + + return 1U; +} + +/*! + \brief handle the TX FIFO empty interrupt + \param[in] pudev: pointer to USB device instance + \param[in] pp_mode: pipe mode + \param[out] none + \retval operation status +*/ +#if defined (__ICCARM__) /*!< IAR compiler */ + #pragma optimize = none +#endif /* __ICCARM */ +static uint32_t usbh_int_txfifoempty (usb_core_driver *pudev, usb_pipe_mode pp_mode) +{ + uint8_t pp_num = 0U; + uint16_t word_count = 0U, len = 0U; + __IO uint32_t *txfiforeg = 0U, txfifostate = 0U; + + if (PIPE_NON_PERIOD == pp_mode) { + txfiforeg = &pudev->regs.gr->HNPTFQSTAT; + } else if (PIPE_PERIOD == pp_mode) { + txfiforeg = &pudev->regs.hr->HPTFQSTAT; + } else { + return 0U; + } + + txfifostate = *txfiforeg; + + pp_num = (uint8_t)((txfifostate & TFQSTAT_CNUM) >> 27U); + + word_count = (uint16_t)(pudev->host.pipe[pp_num].xfer_len + 3U) / 4U; + + while (((txfifostate & TFQSTAT_TXFS) >= word_count) && (0U != pudev->host.pipe[pp_num].xfer_len)) { + len = (uint16_t)(txfifostate & TFQSTAT_TXFS) * 4U; + + if (len > pudev->host.pipe[pp_num].xfer_len) { + /* last packet */ + len = (uint16_t)pudev->host.pipe[pp_num].xfer_len; + + if (PIPE_NON_PERIOD == pp_mode) { + pudev->regs.gr->GINTEN &= ~GINTEN_NPTXFEIE; + } else { + pudev->regs.gr->GINTEN &= ~GINTEN_PTXFEIE; + } + } + + word_count = (uint16_t)((pudev->host.pipe[pp_num].xfer_len + 3U) / 4U); + usb_txfifo_write (&pudev->regs, pudev->host.pipe[pp_num].xfer_buf, pp_num, len); + + pudev->host.pipe[pp_num].xfer_buf += len; + pudev->host.pipe[pp_num].xfer_len -= len; + pudev->host.pipe[pp_num].xfer_count += len; + + txfifostate = *txfiforeg; + } + + return 1U; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Include/usbh_hid_core.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Include/usbh_hid_core.h new file mode 100644 index 0000000000..e3f5e5109f --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Include/usbh_hid_core.h @@ -0,0 +1,212 @@ +/*! + \file usbh_hid_core.h + \brief header file for the usbh_hid_core.c + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USBH_HID_CORE_H +#define __USBH_HID_CORE_H + +#include "usb_hid.h" +#include "usbh_enum.h" +#include "usbh_transc.h" + +#define HID_MIN_POLL 10U +#define HID_REPORT_SIZE 16U +#define HID_MAX_USAGE 10U +#define HID_MAX_NBR_REPORT_FMT 10U +#define HID_QUEUE_SIZE 10U + +#define HID_ITEM_LONG 0xFEU + +#define HID_ITEM_TYPE_MAIN 0x00U +#define HID_ITEM_TYPE_GLOBAL 0x01U +#define HID_ITEM_TYPE_LOCAL 0x02U +#define HID_ITEM_TYPE_RESERVED 0x03U + +#define HID_MAIN_ITEM_TAG_INPUT 0x08U +#define HID_MAIN_ITEM_TAG_OUTPUT 0x09U +#define HID_MAIN_ITEM_TAG_COLLECTION 0x0AU +#define HID_MAIN_ITEM_TAG_FEATURE 0x0BU +#define HID_MAIN_ITEM_TAG_ENDCOLLECTION 0x0CU + +#define HID_GLOBAL_ITEM_TAG_USAGE_PAGE 0x00U +#define HID_GLOBAL_ITEM_TAG_LOG_MIN 0x01U +#define HID_GLOBAL_ITEM_TAG_LOG_MAX 0x02U +#define HID_GLOBAL_ITEM_TAG_PHY_MIN 0x03U +#define HID_GLOBAL_ITEM_TAG_PHY_MAX 0x04U +#define HID_GLOBAL_ITEM_TAG_UNIT_EXPONENT 0x05U +#define HID_GLOBAL_ITEM_TAG_UNIT 0x06U +#define HID_GLOBAL_ITEM_TAG_REPORT_SIZE 0x07U +#define HID_GLOBAL_ITEM_TAG_REPORT_ID 0x08U +#define HID_GLOBAL_ITEM_TAG_REPORT_COUNT 0x09U +#define HID_GLOBAL_ITEM_TAG_PUSH 0x0AU +#define HID_GLOBAL_ITEM_TAG_POP 0x0BU + +#define HID_LOCAL_ITEM_TAG_USAGE 0x00U +#define HID_LOCAL_ITEM_TAG_USAGE_MIN 0x01U +#define HID_LOCAL_ITEM_TAG_USAGE_MAX 0x02U +#define HID_LOCAL_ITEM_TAG_DESIGNATOR_INDEX 0x03U +#define HID_LOCAL_ITEM_TAG_DESIGNATOR_MIN 0x04U +#define HID_LOCAL_ITEM_TAG_DESIGNATOR_MAX 0x05U +#define HID_LOCAL_ITEM_TAG_STRING_INDEX 0x07U +#define HID_LOCAL_ITEM_TAG_STRING_MIN 0x08U +#define HID_LOCAL_ITEM_TAG_STRING_MAX 0x09U +#define HID_LOCAL_ITEM_TAG_DELIMITER 0x0AU + +#define USB_HID_DESC_SIZE 9U + +/* states for HID state machine */ +typedef enum { + HID_INIT = 0U, + HID_IDLE, + HID_SEND_DATA, + HID_BUSY, + HID_GET_DATA, + HID_SYNC, + HID_POLL, + HID_ERROR, +} hid_state; + +typedef enum { + HID_REQ_INIT = 0U, + HID_REQ_IDLE, + HID_REQ_GET_REPORT_DESC, + HID_REQ_GET_HID_DESC, + HID_REQ_SET_IDLE, + HID_REQ_SET_PROTOCOL, + HID_REQ_SET_REPORT, +} hid_ctlstate; + +typedef enum +{ + HID_MOUSE = 0x01U, + HID_KEYBOARD = 0x02U, + HID_UNKNOWN = 0xFFU, +} hid_type; + +typedef struct _hid_report_data +{ + uint8_t ReportID; + uint8_t ReportType; + uint16_t UsagePage; + uint32_t Usage[HID_MAX_USAGE]; + uint32_t NbrUsage; + uint32_t UsageMin; + uint32_t UsageMax; + int32_t LogMin; + int32_t LogMax; + int32_t PhyMin; + int32_t PhyMax; + int32_t UnitExp; + uint32_t Unit; + uint32_t ReportSize; + uint32_t ReportCnt; + uint32_t Flag; + uint32_t PhyUsage; + uint32_t AppUsage; + uint32_t LogUsage; +} hid_report_data; + +typedef struct _hid_report_ID +{ + uint8_t size; /*!< report size return by the device ID */ + uint8_t reportID; /*!< report ID */ + uint8_t type; /*!< report type (INPUT/OUTPUT/FEATURE) */ +} hid_report_ID; + +typedef struct _hid_collection +{ + uint32_t usage; + uint8_t type; + struct _hid_collection *next_ptr; +} hid_collection; + +typedef struct _hid_appcollection +{ + uint32_t usage; + uint8_t type; + uint8_t nbr_report_fmt; + hid_report_data report_data[HID_MAX_NBR_REPORT_FMT]; +} hid_appcollection; + +typedef struct +{ + uint8_t *buf; + uint16_t head; + uint16_t tail; + uint16_t size; + uint8_t lock; +} data_fifo; + +/* structure for HID process */ +typedef struct _hid_process +{ + uint8_t pipe_in; + uint8_t pipe_out; + uint8_t ep_addr; + uint8_t ep_in; + uint8_t ep_out; + __IO uint8_t data_ready; + uint8_t *pdata; + uint16_t len; + uint16_t poll; + + __IO uint32_t timer; + + data_fifo fifo; + usb_desc_hid hid_desc; + hid_report_data hid_report; + + hid_state state; + hid_ctlstate ctl_state; + usbh_status (*init)(usb_core_driver *pudev, usbh_host *puhost); + void (*machine)(usb_core_driver *pudev, usbh_host *puhost); +} usbh_hid_handler; + +extern usbh_class usbh_hid; + +/* function declarations */ +/* set HID report */ +usbh_status usbh_set_report (usb_core_driver *pudev, + usbh_host *puhost, + uint8_t report_type, + uint8_t report_ID, + uint8_t report_len, + uint8_t *report_buf); +/* read data from FIFO */ +uint16_t usbh_hid_fifo_read (data_fifo *fifo, void *buf, uint16_t nbytes); +/* write data to FIFO */ +uint16_t usbh_hid_fifo_write (data_fifo *fifo, void *buf, uint16_t nbytes); +/* initialize FIFO */ +void usbh_hid_fifo_init (data_fifo *fifo, uint8_t *buf, uint16_t size); + +#endif /* __USBH_HID_CORE_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Include/usbh_hid_keybd.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Include/usbh_hid_keybd.h new file mode 100644 index 0000000000..4777afe29e --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Include/usbh_hid_keybd.h @@ -0,0 +1,303 @@ +/*! + \file usbh_hid_keybd.h + \brief header file for usbh_hid_keybd.c + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USBH_HID_KEYBD_H +#define __USBH_HID_KEYBD_H + +#include "usb_conf.h" +#include "usbh_hid_core.h" + +//#define AZERTY_KEYBOARD +#define QWERTY_KEYBOARD + +#define KBD_LEFT_CTRL 0x01U +#define KBD_LEFT_SHIFT 0x02U +#define KBD_LEFT_ALT 0x04U +#define KBD_LEFT_GUI 0x08U +#define KBD_RIGHT_CTRL 0x10U +#define KBD_RIGHT_SHIFT 0x20U +#define KBD_RIGHT_ALT 0x40U +#define KBD_RIGHT_GUI 0x80U + +#define KEY_NONE 0x00U +#define KEY_ERRORROLLOVER 0x01U +#define KEY_POSTFAIL 0x02U +#define KEY_ERRORUNDEFINED 0x03U +#define KEY_A 0x04U +#define KEY_B 0x05U +#define KEY_C 0x06U +#define KEY_D 0x07U +#define KEY_E 0x08U +#define KEY_F 0x09U +#define KEY_G 0x0AU +#define KEY_H 0x0BU +#define KEY_I 0x0CU +#define KEY_J 0x0DU +#define KEY_K 0x0EU +#define KEY_L 0x0FU +#define KEY_M 0x10U +#define KEY_N 0x11U +#define KEY_O 0x12U +#define KEY_P 0x13U +#define KEY_Q 0x14U +#define KEY_R 0x15U +#define KEY_S 0x16U +#define KEY_T 0x17U +#define KEY_U 0x18U +#define KEY_V 0x19U +#define KEY_W 0x1AU +#define KEY_X 0x1BU +#define KEY_Y 0x1CU +#define KEY_Z 0x1DU +#define KEY_1_EXCLAMATION_MARK 0x1EU +#define KEY_2_AT 0x1FU +#define KEY_3_NUMBER_SIGN 0x20U +#define KEY_4_DOLLAR 0x21U +#define KEY_5_PERCENT 0x22U +#define KEY_6_CARET 0x23U +#define KEY_7_AMPERSAND 0x24U +#define KEY_8_ASTERISK 0x25U +#define KEY_9_OPARENTHESIS 0x26U +#define KEY_0_CPARENTHESIS 0x27U +#define KEY_ENTER 0x28U +#define KEY_ESCAPE 0x29U +#define KEY_BACKSPACE 0x2AU +#define KEY_TAB 0x2BU +#define KEY_SPACEBAR 0x2CU +#define KEY_MINUS_UNDERSCORE 0x2DU +#define KEY_EQUAL_PLUS 0x2EU +#define KEY_OBRACKET_AND_OBRACE 0x2FU +#define KEY_CBRACKET_AND_CBRACE 0x30U +#define KEY_BACKSLASH_VERTICAL_BAR 0x31U +#define KEY_NONUS_NUMBER_SIGN_TILDE 0x32U +#define KEY_SEMICOLON_COLON 0x33U +#define KEY_SINGLE_AND_DOUBLE_QUOTE 0x34U +#define KEY_GRAVE ACCENT AND TILDE 0x35U +#define KEY_COMMA_AND_LESS 0x36U +#define KEY_DOT_GREATER 0x37U +#define KEY_SLASH_QUESTION 0x38U +#define KEY_CAPS LOCK 0x39U +#define KEY_F1 0x3AU +#define KEY_F2 0x3BU +#define KEY_F3 0x3CU +#define KEY_F4 0x3DU +#define KEY_F5 0x3EU +#define KEY_F6 0x3FU +#define KEY_F7 0x40U +#define KEY_F8 0x41U +#define KEY_F9 0x42U +#define KEY_F10 0x43U +#define KEY_F11 0x44U +#define KEY_F12 0x45U +#define KEY_PRINTSCREEN 0x46U +#define KEY_SCROLL LOCK 0x47U +#define KEY_PAUSE 0x48U +#define KEY_INSERT 0x49U +#define KEY_HOME 0x4AU +#define KEY_PAGEUP 0x4BU +#define KEY_DELETE 0x4CU +#define KEY_END1 0x4DU +#define KEY_PAGEDOWN 0x4EU +#define KEY_RIGHTARROW 0x4FU +#define KEY_LEFTARROW 0x50U +#define KEY_DOWNARROW 0x51U +#define KEY_UPARROW 0x52U +#define KEY_KEYPAD_NUM_LOCK_AND_CLEAR 0x53U +#define KEY_KEYPAD_SLASH 0x54U +#define KEY_KEYPAD_ASTERIKS 0x55U +#define KEY_KEYPAD_MINUS 0x56U +#define KEY_KEYPAD_PLUS 0x57U +#define KEY_KEYPAD_ENTER 0x58U +#define KEY_KEYPAD_1_END 0x59U +#define KEY_KEYPAD_2_DOWN_ARROW 0x5AU +#define KEY_KEYPAD_3_PAGEDN 0x5BU +#define KEY_KEYPAD_4_LEFT_ARROW 0x5CU +#define KEY_KEYPAD_5 0x5DU +#define KEY_KEYPAD_6_RIGHT_ARROW 0x5EU +#define KEY_KEYPAD_7_HOME 0x5FU +#define KEY_KEYPAD_8_UP_ARROW 0x60U +#define KEY_KEYPAD_9_PAGEUP 0x61U +#define KEY_KEYPAD_0_INSERT 0x62U +#define KEY_KEYPAD_DECIMAL_SEPARATOR_DELETE 0x63U +#define KEY_NONUS_BACK_SLASH_VERTICAL_BAR 0x64U +#define KEY_APPLICATION 0x65U +#define KEY_POWER 0x66U +#define KEY_KEYPAD_EQUAL 0x67U +#define KEY_F13 0x68U +#define KEY_F14 0x69U +#define KEY_F15 0x6AU +#define KEY_F16 0x6BU +#define KEY_F17 0x6CU +#define KEY_F18 0x6DU +#define KEY_F19 0x6EU +#define KEY_F20 0x6FU +#define KEY_F21 0x70U +#define KEY_F22 0x71U +#define KEY_F23 0x72U +#define KEY_F24 0x73U +#define KEY_EXECUTE 0x74U +#define KEY_HELP 0x75U +#define KEY_MENU 0x76U +#define KEY_SELECT 0x77U +#define KEY_STOP 0x78U +#define KEY_AGAIN 0x79U +#define KEY_UNDO 0x7AU +#define KEY_CUT 0x7BU +#define KEY_COPY 0x7CU +#define KEY_PASTE 0x7DU +#define KEY_FIND 0x7EU +#define KEY_MUTE 0x7FU +#define KEY_VOLUME_UP 0x80U +#define KEY_VOLUME_DOWN 0x81U +#define KEY_LOCKING_CAPS_LOCK 0x82U +#define KEY_LOCKING_NUM_LOCK 0x83U +#define KEY_LOCKING_SCROLL_LOCK 0x84U +#define KEY_KEYPAD_COMMA 0x85U +#define KEY_KEYPAD_EQUAL_SIGN 0x86U +#define KEY_INTERNATIONAL1 0x87U +#define KEY_INTERNATIONAL2 0x88U +#define KEY_INTERNATIONAL3 0x89U +#define KEY_INTERNATIONAL4 0x8AU +#define KEY_INTERNATIONAL5 0x8BU +#define KEY_INTERNATIONAL6 0x8CU +#define KEY_INTERNATIONAL7 0x8DU +#define KEY_INTERNATIONAL8 0x8EU +#define KEY_INTERNATIONAL9 0x8FU +#define KEY_LANG1 0x90U +#define KEY_LANG2 0x91U +#define KEY_LANG3 0x92U +#define KEY_LANG4 0x93U +#define KEY_LANG5 0x94U +#define KEY_LANG6 0x95U +#define KEY_LANG7 0x96U +#define KEY_LANG8 0x97U +#define KEY_LANG9 0x98U +#define KEY_ALTERNATE_ERASE 0x99U +#define KEY_SYSREQ 0x9AU +#define KEY_CANCEL 0x9BU +#define KEY_CLEAR 0x9CU +#define KEY_PRIOR 0x9DU +#define KEY_RETURN 0x9EU +#define KEY_SEPARATOR 0x9FU +#define KEY_OUT 0xA0U +#define KEY_OPER 0xA1U +#define KEY_CLEAR_AGAIN 0xA2U +#define KEY_CRSEL 0xA3U +#define KEY_EXSEL 0xA4U +#define KEY_KEYPAD_00 0xB0U +#define KEY_KEYPAD_000 0xB1U +#define KEY_THOUSANDS_SEPARATOR 0xB2U +#define KEY_DECIMAL_SEPARATOR 0xB3U +#define KEY_CURRENCY_UNIT 0xB4U +#define KEY_CURRENCY_SUB_UNIT 0xB5U +#define KEY_KEYPAD_OPARENTHESIS 0xB6U +#define KEY_KEYPAD_CPARENTHESIS 0xB7U +#define KEY_KEYPAD_OBRACE 0xB8U +#define KEY_KEYPAD_CBRACE 0xB9U +#define KEY_KEYPAD_TAB 0xBAU +#define KEY_KEYPAD_BACKSPACE 0xBBU +#define KEY_KEYPAD_A 0xBCU +#define KEY_KEYPAD_B 0xBDU +#define KEY_KEYPAD_C 0xBEU +#define KEY_KEYPAD_D 0xBFU +#define KEY_KEYPAD_E 0xC0U +#define KEY_KEYPAD_F 0xC1U +#define KEY_KEYPAD_XOR 0xC2U +#define KEY_KEYPAD_CARET 0xC3U +#define KEY_KEYPAD_PERCENT 0xC4U +#define KEY_KEYPAD_LESS 0xC5U +#define KEY_KEYPAD_GREATER 0xC6U +#define KEY_KEYPAD_AMPERSAND 0xC7U +#define KEY_KEYPAD_LOGICAL_AND 0xC8U +#define KEY_KEYPAD_VERTICAL_BAR 0xC9U +#define KEY_KEYPAD_LOGIACL_OR 0xCAU +#define KEY_KEYPAD_COLON 0xCBU +#define KEY_KEYPAD_NUMBER_SIGN 0xCCU +#define KEY_KEYPAD_SPACE 0xCDU +#define KEY_KEYPAD_AT 0xCEU +#define KEY_KEYPAD_EXCLAMATION_MARK 0xCFU +#define KEY_KEYPAD_MEMORY_STORE 0xD0U +#define KEY_KEYPAD_MEMORY_RECALL 0xD1U +#define KEY_KEYPAD_MEMORY_CLEAR 0xD2U +#define KEY_KEYPAD_MEMORY_ADD 0xD3U +#define KEY_KEYPAD_MEMORY_SUBTRACT 0xD4U +#define KEY_KEYPAD_MEMORY_MULTIPLY 0xD5U +#define KEY_KEYPAD_MEMORY_DIVIDE 0xD6U +#define KEY_KEYPAD_PLUSMINUS 0xD7U +#define KEY_KEYPAD_CLEAR 0xD8U +#define KEY_KEYPAD_CLEAR_ENTRY 0xD9U +#define KEY_KEYPAD_BINARY 0xDAU +#define KEY_KEYPAD_OCTAL 0xDBU +#define KEY_KEYPAD_DECIMAL 0xDCU +#define KEY_KEYPAD_HEXADECIMAL 0xDDU +#define KEY_LEFTCONTROL 0xE0U +#define KEY_LEFTSHIFT 0xE1U +#define KEY_LEFTALT 0xE2U +#define KEY_LEFT_GUI 0xE3U +#define KEY_RIGHTCONTROL 0xE4U +#define KEY_RIGHTSHIFT 0xE5U +#define KEY_RIGHTALT 0xE6U +#define KEY_RIGHT_GUI 0xE7U + +#define KBR_MAX_NBR_PRESSED 6U + +typedef struct +{ + uint8_t state; + uint8_t lctrl; + uint8_t lshift; + uint8_t lalt; + uint8_t lgui; + uint8_t rctrl; + uint8_t rshift; + uint8_t ralt; + uint8_t rgui; + uint8_t keys[6]; +} hid_keybd_info; + +/* function declarations */ +/* initialize keyboard */ +void USR_KEYBRD_Init (void); +/* process keyboard data */ +void USR_KEYBRD_ProcessData (uint8_t pbuf); +/* initialize the keyboard function */ +usbh_status usbh_hid_keybd_init (usb_core_driver *pudev, usbh_host *puhost); +/* get keyboard information */ +hid_keybd_info *usbh_hid_keybd_info_get (usb_core_driver *pudev, usbh_host *puhost); +/* get the ascii code of hid */ +uint8_t usbh_hid_ascii_code_get (hid_keybd_info *info); +/* keyboard machine */ +void usbh_hid_keybrd_machine (usb_core_driver *pudev, usbh_host *puhost); + +#endif /* __USBH_HID_KEYBD_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Include/usbh_hid_mouse.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Include/usbh_hid_mouse.h new file mode 100644 index 0000000000..a09e108679 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Include/usbh_hid_mouse.h @@ -0,0 +1,59 @@ +/*! + \file usbh_hid_mouse.h + \brief header file for the usbh_hid_mouse.c + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USBH_HID_MOUSE_H +#define __USBH_HID_MOUSE_H + +#include "usbh_hid_core.h" + +typedef struct _hid_mouse_info +{ + uint8_t x; + uint8_t y; + uint8_t buttons[3]; +} hid_mouse_info; + +/* function declarations */ +/* initialize mouse */ +void USR_MOUSE_Init (void); +/* process mouse data */ +void USR_MOUSE_ProcessData (hid_mouse_info *data); +/* initialize mouse function */ +usbh_status usbh_hid_mouse_init (usb_core_driver *pudev, usbh_host *puhost); +/* get mouse information */ +hid_mouse_info *usbh_hid_mouse_info_get (usb_core_driver *pudev, usbh_host *puhost); +/* mouse machine */ +void usbh_hid_mouse_machine (usb_core_driver *pudev, usbh_host *puhost); + +#endif /* __USBH_HID_MOUSE_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Include/usbh_hid_parser.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Include/usbh_hid_parser.h new file mode 100644 index 0000000000..796af7c5f6 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Include/usbh_hid_parser.h @@ -0,0 +1,61 @@ +/*! + \file usbh_hid_core.h + \brief header file for the usbh_hid_core.c + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USBH_HID_PARSER_H +#define __USBH_HID_PARSER_H + +#include "usbh_hid_core.h" +#include "usbh_hid_usage.h" + +typedef struct +{ + uint8_t *data; + uint32_t size; + uint8_t shift; + uint8_t count; + uint8_t sign; + uint32_t logical_min; /*min value device can return*/ + uint32_t logical_max; /*max value device can return*/ + uint32_t physical_min; /*min vale read can report*/ + uint32_t physical_max; /*max value read can report*/ + uint32_t resolution; +} hid_report_item; + +/* function declarations */ +/* read a hid report item */ +uint32_t hid_item_read (hid_report_item *ri, uint8_t ndx); +/* write a hid report item */ +uint32_t hid_item_write (hid_report_item *ri, uint32_t value, uint8_t ndx); + +#endif /* __USBH_HID_PARSER_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Include/usbh_hid_usage.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Include/usbh_hid_usage.h new file mode 100644 index 0000000000..2bcb7d9d12 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Include/usbh_hid_usage.h @@ -0,0 +1,141 @@ +/*! + \file usbh_hid_core.h + \brief header file for the usbh_hid_core.c + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USDH_HID_USAGE_H +#define __USDH_HID_USAGE_H + +/* HID 1.11 usage pages */ +#define HID_USAGE_PAGE_UNDEFINED uint16_t (0x00) /* Undefined */ + +/* top level pages */ +#define HID_USAGE_PAGE_GEN_DES uint16_t (0x01) /* Generic Desktop Controls*/ +#define HID_USAGE_PAGE_SIM_CTR uint16_t (0x02) /* Simulation Controls */ +#define HID_USAGE_PAGE_VR_CTR uint16_t (0x03) /* VR Controls */ +#define HID_USAGE_PAGE_SPORT_CTR uint16_t (0x04) /* Sport Controls */ +#define HID_USAGE_PAGE_GAME_CTR uint16_t (0x05) /* Game Controls */ +#define HID_USAGE_PAGE_GEN_DEV uint16_t (0x06) /* Generic Device Controls */ +#define HID_USAGE_PAGE_KEYB uint16_t (0x07) /* Keyboard/Keypad */ +#define HID_USAGE_PAGE_LED uint16_t (0x08) /* LEDs */ +#define HID_USAGE_PAGE_BUTTON uint16_t (0x09) /* Button */ +#define HID_USAGE_PAGE_ORDINAL uint16_t (0x0A) /* Ordinal */ +#define HID_USAGE_PAGE_PHONE uint16_t (0x0B) /* Telephony */ +#define HID_USAGE_PAGE_CONSUMER uint16_t (0x0C) /* Consumer */ +#define HID_USAGE_PAGE_DIGITIZER uint16_t (0x0D) /* Digitizer*/ +#define HID_USAGE_PAGE_PID uint16_t (0x0F) /* PID Page (force feedback and related devices) */ +#define HID_USAGE_PAGE_UNICODE uint16_t (0x10) /* Unicode */ +#define HID_USAGE_PAGE_ALNUM_DISP uint16_t (0x14) /* Alphanumeric Display */ +/* end of top level pages */ + +#define HID_USAGE_PAGE_MEDICAL uint16_t (0x40) /* Medical Instruments */ + +/* 80-83 Monitor pages USB Device Class Definition for Monitor Devices */ +/* 84-87 Power pages USB Device Class Definition for Power Devices */ +#define HID_USAGE_PAGE_BARCODE uint16_t (0x8C) /* Bar Code Scanner page */ +#define HID_USAGE_PAGE_SCALE uint16_t (0x8D) /* Scale page */ +#define HID_USAGE_PAGE_MSR uint16_t (0x8E) /* Magnetic Stripe Reading (MSR) Devices */ +#define HID_USAGE_PAGE_POS uint16_t (0x8F) /* Reserved Point of Sale pages */ +#define HID_USAGE_PAGE_CAMERA_CTR uint16_t (0x90) /* Camera Control Page */ +#define HID_USAGE_PAGE_ARCADE uint16_t (0x91) /* Arcade Page */ + +/* usage definitions for the "generic desktop" page */ +#define HID_USAGE_UNDEFINED uint16_t (0x00) /* Undefined */ +#define HID_USAGE_POINTER uint16_t (0x01) /* Pointer (Physical Collection) */ +#define HID_USAGE_MOUSE uint16_t (0x02) /* Mouse (Application Collection) */ +#define HID_USAGE_JOYSTICK uint16_t (0x04) /* Joystick (Application Collection) */ +#define HID_USAGE_GAMEPAD uint16_t (0x05) /* Game Pad (Application Collection) */ +#define HID_USAGE_KBD uint16_t (0x06) /* Keyboard (Application Collection) */ +#define HID_USAGE_KEYPAD uint16_t (0x07) /* Keypad (Application Collection) */ +#define HID_USAGE_MAX_CTR uint16_t (0x08) /* Multi-axis Controller (Application Collection) */ +#define HID_USAGE_X uint16_t (0x30) /* X (Dynamic Value) */ +#define HID_USAGE_Y uint16_t (0x31) /* Y (Dynamic Value) */ +#define HID_USAGE_Z uint16_t (0x32) /* Z (Dynamic Value) */ +#define HID_USAGE_RX uint16_t (0x33) /* Rx (Dynamic Value) */ +#define HID_USAGE_RY uint16_t (0x34) /* Ry (Dynamic Value) */ +#define HID_USAGE_RZ uint16_t (0x35) /* Rz (Dynamic Value) */ +#define HID_USAGE_SLIDER uint16_t (0x36) /* Slider (Dynamic Value) */ +#define HID_USAGE_DIAL uint16_t (0x37) /* Dial (Dynamic Value) */ +#define HID_USAGE_WHEEL uint16_t (0x38) /* Wheel (Dynamic Value) */ +#define HID_USAGE_HATSW uint16_t (0x39) /* Hat switch (Dynamic Value) */ +#define HID_USAGE_COUNTEDBUF uint16_t (0x3A) /* Counted Buffer (Logical Collection) */ +#define HID_USAGE_BYTECOUNT uint16_t (0x3B) /* Byte Count (Dynamic Value) */ +#define HID_USAGE_MOTIONWAKE uint16_t (0x3C) /* Motion Wakeup (One Shot Control) */ +#define HID_USAGE_START uint16_t (0x3D) /* Start (On/Off Control) */ +#define HID_USAGE_SELECT uint16_t (0x3E) /* Select (On/Off Control) */ +#define HID_USAGE_VX uint16_t (0x40) /* Vx (Dynamic Value) */ +#define HID_USAGE_VY uint16_t (0x41) /* Vy (Dynamic Value) */ +#define HID_USAGE_VZ uint16_t (0x42) /* Vz (Dynamic Value) */ +#define HID_USAGE_VBRX uint16_t (0x43) /* Vbrx (Dynamic Value) */ +#define HID_USAGE_VBRY uint16_t (0x44) /* Vbry (Dynamic Value) */ +#define HID_USAGE_VBRZ uint16_t (0x45) /* Vbrz (Dynamic Value) */ +#define HID_USAGE_VNO uint16_t (0x46) /* Vno (Dynamic Value) */ +#define HID_USAGE_FEATNOTIF uint16_t (0x47) /* Feature Notification (Dynamic Value),(Dynamic Flag) */ +#define HID_USAGE_SYSCTL uint16_t (0x80) /* System Control (Application Collection) */ +#define HID_USAGE_PWDOWN uint16_t (0x81) /* System Power Down (One Shot Control) */ +#define HID_USAGE_SLEEP uint16_t (0x82) /* System Sleep (One Shot Control) */ +#define HID_USAGE_WAKEUP uint16_t (0x83) /* System Wake Up (One Shot Control) */ +#define HID_USAGE_CONTEXTM uint16_t (0x84) /* System Context Menu (One Shot Control) */ +#define HID_USAGE_MAINM uint16_t (0x85) /* System Main Menu (One Shot Control) */ +#define HID_USAGE_APPM uint16_t (0x86) /* System App Menu (One Shot Control) */ +#define HID_USAGE_MENUHELP uint16_t (0x87) /* System Menu Help (One Shot Control) */ +#define HID_USAGE_MENUEXIT uint16_t (0x88) /* System Menu Exit (One Shot Control) */ +#define HID_USAGE_MENUSELECT uint16_t (0x89) /* System Menu Select (One Shot Control) */ +#define HID_USAGE_SYSM_RIGHT uint16_t (0x8A) /* System Menu Right (Re-Trigger Control) */ +#define HID_USAGE_SYSM_LEFT uint16_t (0x8B) /* System Menu Left (Re-Trigger Control) */ +#define HID_USAGE_SYSM_UP uint16_t (0x8C) /* System Menu Up (Re-Trigger Control) */ +#define HID_USAGE_SYSM_DOWN uint16_t (0x8D) /* System Menu Down (Re-Trigger Control) */ +#define HID_USAGE_COLDRESET uint16_t (0x8E) /* System Cold Restart (One Shot Control) */ +#define HID_USAGE_WARMRESET uint16_t (0x8F) /* System Warm Restart (One Shot Control) */ +#define HID_USAGE_DUP uint16_t (0x90) /* D-pad Up (On/Off Control) */ +#define HID_USAGE_DDOWN uint16_t (0x91) /* D-pad Down (On/Off Control) */ +#define HID_USAGE_DRIGHT uint16_t (0x92) /* D-pad Right (On/Off Control) */ +#define HID_USAGE_DLEFT uint16_t (0x93) /* D-pad Left (On/Off Control) */ +#define HID_USAGE_SYS_DOCK uint16_t (0xA0) /* System Dock (One Shot Control) */ +#define HID_USAGE_SYS_UNDOCK uint16_t (0xA1) /* System Undock (One Shot Control) */ +#define HID_USAGE_SYS_SETUP uint16_t (0xA2) /* System Setup (One Shot Control) */ +#define HID_USAGE_SYS_BREAK uint16_t (0xA3) /* System Break (One Shot Control) */ +#define HID_USAGE_SYS_DBGBRK uint16_t (0xA4) /* System Debugger Break (One Shot Control) */ +#define HID_USAGE_APP_BRK uint16_t (0xA5) /* Application Break (One Shot Control) */ +#define HID_USAGE_APP_DBGBRK uint16_t (0xA6) /* Application Debugger Break (One Shot Control) */ +#define HID_USAGE_SYS_SPKMUTE uint16_t (0xA7) /* System Speaker Mute (One Shot Control) */ +#define HID_USAGE_SYS_HIBERN uint16_t (0xA8) /* System Hibernate (One Shot Control) */ +#define HID_USAGE_SYS_SIDPINV uint16_t (0xB0) /* System Display Invert (One Shot Control) */ +#define HID_USAGE_SYS_DISPINT uint16_t (0xB1) /* System Display Internal (One Shot Control) */ +#define HID_USAGE_SYS_DISPEXT uint16_t (0xB2) /* System Display External (One Shot Control) */ +#define HID_USAGE_SYS_DISPBOTH uint16_t (0xB3) /* System Display Both (One Shot Control) */ +#define HID_USAGE_SYS_DISPDUAL uint16_t (0xB4) /* System Display Dual (One Shot Control) */ +#define HID_USAGE_SYS_DISPTGLIE uint16_t (0xB5) /* System Display Toggle Int/Ext (One Shot Control) */ +#define HID_USAGE_SYS_DISP_SWAP uint16_t (0xB6) /* System Display Swap Primary/Secondary (One Shot Control) */ +#define HID_USAGE_SYS_DIPS_LCDA uint16_t (0xB7) /* System Display LCD Autoscale (One Shot Control) */ + +#endif /* __USDH_HID_USAGE_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Source/usbh_hid_core.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Source/usbh_hid_core.c new file mode 100644 index 0000000000..a9ec57dce2 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Source/usbh_hid_core.c @@ -0,0 +1,675 @@ +/*! + \file usbh_hid_core.c + \brief USB host HID class driver + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "usbh_pipe.h" +#include "usbh_hid_core.h" +#include "usbh_hid_mouse.h" +#include "usbh_hid_keybd.h" +#include +#include + +/* local function prototypes ('static') */ +static void usbh_hiddesc_parse (usb_desc_hid *hid_desc, uint8_t *buf); +static void usbh_hid_itf_deinit (usbh_host *puhost); +static usbh_status usbh_hid_itf_init (usbh_host *puhost); +static usbh_status usbh_hid_class_req (usbh_host *puhost); +static usbh_status usbh_hid_handle (usbh_host *puhost); +static usbh_status usbh_hid_reportdesc_get (usbh_host *puhost, uint16_t len); +static usbh_status usbh_hid_sof(usbh_host *puhost); +static usbh_status usbh_hid_desc_get (usbh_host *puhost, uint16_t len); +static usbh_status usbh_set_idle (usbh_host *puhost, uint8_t duration, uint8_t report_ID); +static usbh_status usbh_set_protocol (usbh_host *puhost, uint8_t protocol); + +usbh_class usbh_hid = +{ + USB_HID_CLASS, + usbh_hid_itf_init, + usbh_hid_itf_deinit, + usbh_hid_class_req, + usbh_hid_handle, + usbh_hid_sof +}; + +/*! + \brief get report + \param[in] puhost: pointer to usb host + \param[in] report_type: duration for HID set idle request + \param[in] report_ID: targeted report ID for HID set idle request + \param[in] report_len: length of data report to be send + \param[in] report_buf: report buffer + \param[out] none + \retval operation status +*/ +usbh_status usbh_get_report (usbh_host *puhost, + uint8_t report_type, + uint8_t report_ID, + uint8_t report_len, + uint8_t *report_buf) +{ + usbh_status status = USBH_BUSY; + + if (CTL_IDLE == puhost->control.ctl_state) { + puhost->control.setup.req = (usb_req) { + .bmRequestType = USB_TRX_IN | USB_RECPTYPE_ITF | USB_REQTYPE_CLASS, + .bRequest = GET_REPORT, + .wValue = (report_type << 8U) | report_ID, + .wIndex = 0U, + .wLength = report_len + }; + + usbh_ctlstate_config (puhost, report_buf, report_len); + } + + status = usbh_ctl_handler (puhost); + + return status; +} + +/*! + \brief set report + \param[in] pudev: pointer to usb core instance + \param[in] puhost: pointer to usb host + \param[in] report_type: duration for HID set idle request + \param[in] report_ID: targeted report ID for HID set idle request + \param[in] report_len: length of data report to be send + \param[in] report_buf: report buffer + \param[out] none + \retval operation status +*/ +usbh_status usbh_set_report (usb_core_driver *pudev, + usbh_host *puhost, + uint8_t report_type, + uint8_t report_ID, + uint8_t report_len, + uint8_t *report_buf) +{ + usbh_status status = USBH_BUSY; + + if (CTL_IDLE == puhost->control.ctl_state) { + puhost->control.setup.req = (usb_req) { + .bmRequestType = USB_TRX_OUT | USB_RECPTYPE_ITF | USB_REQTYPE_CLASS, + .bRequest = SET_REPORT, + .wValue = (report_type << 8U) | report_ID, + .wIndex = 0U, + .wLength = report_len + }; + + usbh_ctlstate_config (puhost, report_buf, report_len); + } + + status = usbh_ctl_handler (puhost); + + return status; +} + +/*! + \brief de-initialize the host pipes used for the HID class + \param[in] puhost: pointer to usb host + \param[out] none + \retval operation status +*/ +void usbh_hid_itf_deinit (usbh_host *puhost) +{ + usbh_hid_handler *hid = (usbh_hid_handler *)puhost->active_class->class_data; + + if (0x00U != hid->pipe_in) { + usb_pipe_halt (puhost->data, hid->pipe_in); + + usbh_pipe_free (puhost->data, hid->pipe_in); + + hid->pipe_in = 0U; /* reset the pipe as free */ + } + + if (0x00U != hid->pipe_out) { + usb_pipe_halt (puhost->data, hid->pipe_out); + + usbh_pipe_free (puhost->data, hid->pipe_out); + + hid->pipe_out = 0U; /* reset the channel as free */ + } +} + +/*! + \brief return device type + \param[in] pudev: pointer to usb core instance + \param[in] puhost: pointer to usb host + \param[out] none + \retval hid_type +*/ +hid_type usbh_hid_device_type_get(usb_core_driver *pudev, usbh_host *puhost) +{ + hid_type type = HID_UNKNOWN; + uint8_t interface_protocol; + + if (HOST_CLASS_HANDLER == puhost->cur_state) { + interface_protocol = puhost->dev_prop.cfg_desc_set.itf_desc_set[puhost->dev_prop.cur_itf][0].itf_desc.bInterfaceProtocol; + + if (USB_HID_PROTOCOL_KEYBOARD == interface_protocol) { + type = HID_KEYBOARD; + } else { + if (USB_HID_PROTOCOL_MOUSE == interface_protocol) { + type = HID_MOUSE; + } + } + } + + return type; +} + +/*! + \brief return HID device poll time + \param[in] pudev: pointer to usb core instance + \param[in] puhost: pointer to usb host + \param[out] none + \retval poll time (ms) +*/ +uint8_t usbh_hid_poll_interval_get (usb_core_driver *pudev, usbh_host *puhost) +{ + usbh_hid_handler *hid = (usbh_hid_handler *)puhost->active_class->class_data; + + if ((HOST_CLASS_ENUM == puhost->cur_state) || + (HOST_USER_INPUT == puhost->cur_state) || + (HOST_CHECK_CLASS == puhost->cur_state) || + (HOST_CLASS_HANDLER == puhost->cur_state)) { + return (uint8_t)(hid->poll); + } else { + return 0U; + } +} + +/*! + \brief read from FIFO + \param[in] fifo: fifo address + \param[in] buf: read buffer + \param[in] nbytes: number of item to read + \param[out] none + \retval number of read items +*/ +uint16_t usbh_hid_fifo_read (data_fifo *fifo, void *buf, uint16_t nbytes) +{ + uint16_t i = 0U; + uint8_t *p = (uint8_t*) buf; + + if (0U == fifo->lock) { + fifo->lock = 1U; + + for (i = 0U; i < nbytes; i++) { + if (fifo->tail != fifo->head) { + *p++ = fifo->buf[fifo->tail]; + fifo->tail++; + + if (fifo->tail == fifo->size) { + fifo->tail = 0U; + } + } else { + fifo->lock = 0U; + + return i; + } + } + } + + fifo->lock = 0U; + + return nbytes; +} + +/*! + \brief write to FIFO + \param[in] fifo: fifo address + \param[in] buf: read buffer + \param[in] nbytes: number of item to read + \param[out] none + \retval number of write items +*/ +uint16_t usbh_hid_fifo_write (data_fifo *fifo, void *buf, uint16_t nbytes) +{ + uint16_t i = 0U; + uint8_t *p = (uint8_t*) buf; + + if (0U == fifo->lock) { + fifo->lock = 1U; + + for (i = 0U; i < nbytes; i++) { + if ((fifo->head + 1U == fifo->tail) || + ((fifo->head + 1U == fifo->size) && (0U == fifo->tail))) { + fifo->lock = 0U; + + return i; + } else { + fifo->buf[fifo->head] = *p++; + fifo->head++; + + if (fifo->head == fifo->size) { + fifo->head = 0U; + } + } + } + } + + fifo->lock = 0U; + + return nbytes; +} + +/*! + \brief initialize FIFO + \param[in] fifo: fifo address + \param[in] buf: read buffer + \param[in] size: size of FIFO + \param[out] none + \retval none +*/ +void usbh_hid_fifo_init (data_fifo *fifo, uint8_t *buf, uint16_t size) +{ + fifo->head = 0U; + fifo->tail = 0U; + fifo->lock = 0U; + fifo->size = size; + fifo->buf = buf; +} + +/*! + \brief initialize the hid class + \param[in] puhost: pointer to usb host + \param[out] none + \retval operation status +*/ +static usbh_status usbh_hid_itf_init (usbh_host *puhost) +{ + uint8_t num = 0U, ep_num = 0U, interface = 0U; + usbh_status status = USBH_BUSY; + + interface = usbh_interface_find(&puhost->dev_prop, USB_HID_CLASS, USB_HID_SUBCLASS_BOOT_ITF, 0xFFU); + + if (0xFFU == interface) { + puhost->usr_cb->dev_not_supported(); + + status = USBH_FAIL; + } else { + usbh_interface_select(&puhost->dev_prop, interface); + + static usbh_hid_handler hid_handler; + + memset((void*)&hid_handler, 0, sizeof(usbh_hid_handler)); + + hid_handler.state = HID_ERROR; + + uint8_t itf_protocol = puhost->dev_prop.cfg_desc_set.itf_desc_set[puhost->dev_prop.cur_itf][0].itf_desc.bInterfaceProtocol; + if (USB_HID_PROTOCOL_KEYBOARD == itf_protocol) { + hid_handler.init = usbh_hid_keybd_init; + hid_handler.machine = usbh_hid_keybrd_machine; + } else if (USB_HID_PROTOCOL_MOUSE == itf_protocol) { + hid_handler.init = usbh_hid_mouse_init; + hid_handler.machine = usbh_hid_mouse_machine; + } else { + status = USBH_FAIL; + } + + hid_handler.state = HID_INIT; + hid_handler.ctl_state = HID_REQ_INIT; + hid_handler.ep_addr = puhost->dev_prop.cfg_desc_set.itf_desc_set[puhost->dev_prop.cur_itf][0].ep_desc[0].bEndpointAddress; + hid_handler.len = puhost->dev_prop.cfg_desc_set.itf_desc_set[puhost->dev_prop.cur_itf][0].ep_desc[0].wMaxPacketSize; + hid_handler.poll = puhost->dev_prop.cfg_desc_set.itf_desc_set[puhost->dev_prop.cur_itf][0].ep_desc[0].bInterval; + + if (hid_handler.poll < HID_MIN_POLL) { + hid_handler.poll = HID_MIN_POLL; + } + + /* check for available number of endpoints */ + /* find the number of endpoints in the interface descriptor */ + /* choose the lower number in order not to overrun the buffer allocated */ + ep_num = USB_MIN(puhost->dev_prop.cfg_desc_set.itf_desc_set[puhost->dev_prop.cur_itf][0].itf_desc.bNumEndpoints, USBH_MAX_EP_NUM); + + /* decode endpoint IN and OUT address from interface descriptor */ + for (num = 0U; num < ep_num; num++) { + usb_desc_ep *ep_desc = &puhost->dev_prop.cfg_desc_set.itf_desc_set[puhost->dev_prop.cur_itf][0].ep_desc[num]; + + uint8_t ep_addr = ep_desc->bEndpointAddress; + + if (ep_addr & 0x80U) { + hid_handler.ep_in = ep_addr; + hid_handler.pipe_in = usbh_pipe_allocate (puhost->data, ep_addr); + + /* open channel for IN endpoint */ + usbh_pipe_create (puhost->data, + &puhost->dev_prop, + hid_handler.pipe_in, + USB_EPTYPE_INTR, + hid_handler.len); + + usbh_pipe_toggle_set(puhost->data, hid_handler.pipe_in, 0U); + } else { + hid_handler.ep_out = ep_addr; + hid_handler.pipe_out = usbh_pipe_allocate (puhost->data, ep_addr); + + /* open channel for OUT endpoint */ + usbh_pipe_create (puhost->data, + &puhost->dev_prop, + hid_handler.pipe_out, + USB_EPTYPE_INTR, + hid_handler.len); + + usbh_pipe_toggle_set(puhost->data, hid_handler.pipe_out, 0U); + } + } + + puhost->active_class->class_data = (void *)&hid_handler; + + status = USBH_OK; + } + + return status; +} + +/*! + \brief handle HID class requests for HID class + \param[in] puhost: pointer to usb host + \param[out] none + \retval operation status +*/ +static usbh_status usbh_hid_class_req (usbh_host *puhost) +{ + usbh_status status = USBH_BUSY; + usbh_status class_req_status = USBH_BUSY; + + usbh_hid_handler *hid = (usbh_hid_handler *)puhost->active_class->class_data; + + /* handle HID control state machine */ + switch (hid->ctl_state) { + case HID_REQ_INIT: + case HID_REQ_GET_HID_DESC: + /* get HID descriptor */ + if (USBH_OK == usbh_hid_desc_get (puhost, USB_HID_DESC_SIZE)) { + usbh_hiddesc_parse(&hid->hid_desc, puhost->dev_prop.data); + + hid->ctl_state = HID_REQ_GET_REPORT_DESC; + } + break; + + case HID_REQ_GET_REPORT_DESC: + /* get report descriptor */ + if (USBH_OK == usbh_hid_reportdesc_get(puhost, hid->hid_desc.wDescriptorLength)) { + hid->ctl_state = HID_REQ_SET_IDLE; + } + break; + + case HID_REQ_SET_IDLE: + class_req_status = usbh_set_idle (puhost, 0U, 0U); + + /* set idle */ + if (USBH_OK == class_req_status) { + hid->ctl_state = HID_REQ_SET_PROTOCOL; + } else { + if(USBH_NOT_SUPPORTED == class_req_status) { + hid->ctl_state = HID_REQ_SET_PROTOCOL; + } + } + break; + + case HID_REQ_SET_PROTOCOL: + /* set protocol */ + if (USBH_OK == usbh_set_protocol (puhost, 0U)) { + hid->ctl_state = HID_REQ_IDLE; + + /* all requests performed */ + status = USBH_OK; + } + break; + + case HID_REQ_IDLE: + default: + break; + } + + return status; +} + +/*! + \brief manage state machine for HID data transfers + \param[in] puhost: pointer to usb host + \param[out] none + \retval operation status +*/ +static usbh_status usbh_hid_handle (usbh_host *puhost) +{ + usbh_status status = USBH_OK; + usbh_hid_handler *hid = (usbh_hid_handler *)puhost->active_class->class_data; + + switch (hid->state) { + case HID_INIT: + hid->init(puhost->data, puhost); + hid->state = HID_IDLE; + break; + + case HID_IDLE: + hid->state = HID_SYNC; + status = USBH_OK; + break; + + case HID_SYNC: + /* sync with start of even frame */ + if (true == usb_frame_even(puhost->data)) { + hid->state = HID_GET_DATA; + } + break; + + case HID_GET_DATA: + usbh_data_recev (puhost->data, hid->pdata, hid->pipe_in, hid->len); + + hid->state = HID_POLL; + hid->timer = usb_curframe_get (puhost->data); + hid->data_ready = 0U; + break; + + case HID_POLL: + if (URB_DONE == usbh_urbstate_get (puhost->data, hid->pipe_in)) { + if (0U == hid->data_ready) { /* handle data once */ + usbh_hid_fifo_write(&hid->fifo, hid->pdata, hid->len); + hid->data_ready = 1U; + + hid->machine(puhost->data, puhost); + } + } else { + if (URB_STALL == usbh_urbstate_get (puhost->data, hid->pipe_in)) { /* IN endpoint stalled */ + /* issue clear feature on interrupt in endpoint */ + if (USBH_OK == (usbh_clrfeature (puhost, hid->ep_addr, hid->pipe_in))) { + /* change state to issue next in token */ + hid->state = HID_GET_DATA; + } + } + } + break; + + default: + break; + } + return status; +} + +/*! + \brief send get report descriptor command to the device + \param[in] puhost: pointer to usb host + \param[in] len: HID report descriptor length + \param[out] none + \retval operation status +*/ +static usbh_status usbh_hid_reportdesc_get (usbh_host *puhost, uint16_t len) +{ + usbh_status status = USBH_BUSY; + + if (CTL_IDLE == puhost->control.ctl_state) { + puhost->control.setup.req = (usb_req) { + .bmRequestType = USB_TRX_IN | USB_RECPTYPE_ITF | USB_REQTYPE_STRD, + .bRequest = USB_GET_DESCRIPTOR, + .wValue = USBH_DESC(USB_DESCTYPE_REPORT), + .wIndex = 0U, + .wLength = len + }; + + usbh_ctlstate_config (puhost, puhost->dev_prop.data, len); + } + + status = usbh_ctl_handler (puhost); + + return status; +} + +/*! + \brief managing the SOF process + \param[in] puhost: pointer to usb host + \param[out] none + \retval operation status +*/ +static usbh_status usbh_hid_sof(usbh_host *puhost) +{ + usbh_hid_handler *hid = (usbh_hid_handler *)puhost->active_class->class_data; + + if (HID_POLL == hid->state) { + uint32_t frame_count = usb_curframe_get (puhost->data); + + if ((frame_count > hid->timer) && ((frame_count - hid->timer) >= hid->poll)) { + hid->state = HID_GET_DATA; + } else if ((frame_count < hid->timer) && ((frame_count + 0x3FFFU - hid->timer) >= hid->poll)) { + hid->state = HID_GET_DATA; + } else { + /* no operation */ + } + } + + return USBH_OK; +} + +/*! + \brief send the command of get HID descriptor to the device + \param[in] puhost: pointer to usb host + \param[in] len: HID descriptor length + \param[out] none + \retval operation status +*/ +static usbh_status usbh_hid_desc_get (usbh_host *puhost, uint16_t len) +{ + usbh_status status = USBH_BUSY; + + if (CTL_IDLE == puhost->control.ctl_state) { + puhost->control.setup.req = (usb_req) { + .bmRequestType = USB_TRX_IN | USB_RECPTYPE_ITF | USB_REQTYPE_STRD, + .bRequest = USB_GET_DESCRIPTOR, + .wValue = USBH_DESC(USB_DESCTYPE_HID), + .wIndex = 0U, + .wLength = len + }; + + usbh_ctlstate_config (puhost, puhost->dev_prop.data, len); + } + + status = usbh_ctl_handler (puhost); + + return status; +} + +/*! + \brief set idle state + \param[in] puhost: pointer to usb host + \param[in] duration: duration for HID set idle request + \param[in] report_ID: targeted report ID for HID set idle request + \param[out] none + \retval operation status +*/ +static usbh_status usbh_set_idle (usbh_host *puhost, uint8_t duration, uint8_t report_ID) +{ + usbh_status status = USBH_BUSY; + + if (CTL_IDLE == puhost->control.ctl_state) { + puhost->control.setup.req = (usb_req) { + .bmRequestType = USB_TRX_OUT | USB_RECPTYPE_ITF | USB_REQTYPE_CLASS, + .bRequest = SET_IDLE, + .wValue = (duration << 8U) | report_ID, + .wIndex = 0U, + .wLength = 0U + }; + + usbh_ctlstate_config (puhost, NULL, 0U); + } + + status = usbh_ctl_handler (puhost); + + return status; +} + +/*! + \brief set protocol state + \param[in] puhost: pointer to usb host + \param[in] protocol: boot/report protocol + \param[out] none + \retval operation status +*/ +static usbh_status usbh_set_protocol (usbh_host *puhost, uint8_t protocol) +{ + usbh_status status = USBH_BUSY; + + if (CTL_IDLE == puhost->control.ctl_state) { + puhost->control.setup.req = (usb_req) { + .bmRequestType = USB_TRX_OUT | USB_RECPTYPE_ITF | USB_REQTYPE_CLASS, + .bRequest = SET_PROTOCOL, + .wValue = !protocol, + .wIndex = 0U, + .wLength = 0U + }; + + usbh_ctlstate_config (puhost, NULL, 0U); + } + + status = usbh_ctl_handler (puhost); + + return status; +} + +/*! + \brief parse the HID descriptor + \param[in] hid_desc: pointer to HID descriptor + \param[in] buf: pointer to buffer where the source descriptor is available + \param[out] none + \retval none +*/ +static void usbh_hiddesc_parse (usb_desc_hid *hid_desc, uint8_t *buf) +{ + hid_desc->header.bLength = *(uint8_t *)(buf + 0U); + hid_desc->header.bDescriptorType = *(uint8_t *)(buf + 1U); + hid_desc->bcdHID = BYTE_SWAP(buf + 2U); + hid_desc->bCountryCode = *(uint8_t *)(buf + 4U); + hid_desc->bNumDescriptors = *(uint8_t *)(buf + 5U); + hid_desc->bDescriptorType = *(uint8_t *)(buf + 6U); + hid_desc->wDescriptorLength = BYTE_SWAP(buf + 7U); +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Source/usbh_hid_keybd.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Source/usbh_hid_keybd.c new file mode 100644 index 0000000000..4332595497 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Source/usbh_hid_keybd.c @@ -0,0 +1,399 @@ +/*! + \file usbh_hid_keybd.c + \brief USB host HID keyboard driver + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "usbh_hid_keybd.h" +#include "usbh_hid_parser.h" +#include + +hid_keybd_info keybd_info; + +uint32_t keybd_report_data[2]; + +static const hid_report_item imp_0_lctrl = +{ + (uint8_t*)(void *)keybd_report_data + 0, /* data */ + 1, /* size */ + 0, /* shift */ + 0, /* count (only for array items) */ + 0, /* signed */ + 0, /* min value read can return */ + 1, /* max value read can return */ + 0, /* min vale device can report */ + 1, /* max value device can report */ + 1 /* resolution */ +}; + +static const hid_report_item imp_0_lshift = +{ + (uint8_t*)(void *)keybd_report_data + 0, /* data */ + 1, /* size */ + 1, /* shift */ + 0, /* count (only for array items) */ + 0, /* signed */ + 0, /* min value read can return */ + 1, /* max value read can return */ + 0, /* min vale device can report */ + 1, /* max value device can report */ + 1 /* resolution */ +}; + +static const hid_report_item imp_0_lalt = +{ + (uint8_t*)(void *)keybd_report_data + 0, /* data */ + 1, /* size */ + 2, /* shift */ + 0, /* count (only for array items) */ + 0, /* signed */ + 0, /* min value read can return */ + 1, /* max value read can return */ + 0, /* min vale device can report */ + 1, /* max value device can report */ + 1 /* resolution */ +}; + +static const hid_report_item imp_0_lgui = +{ + (uint8_t*)(void *)keybd_report_data + 0, /* data */ + 1, /* size */ + 3, /* shift */ + 0, /* count (only for array items) */ + 0, /* signed */ + 0, /* min value read can return */ + 1, /* max value read can return */ + 0, /* min vale device can report */ + 1, /* max value device can report */ + 1 /* resolution */ +}; + +static const hid_report_item imp_0_rctrl = +{ + (uint8_t*)(void *)keybd_report_data + 0, /* data */ + 1, /* size */ + 4, /* shift */ + 0, /* count (only for array items) */ + 0, /* signed */ + 0, /* min value read can return */ + 1, /* max value read can return */ + 0, /* min vale device can report */ + 1, /* max value device can report */ + 1 /* resolution */ +}; + +static const hid_report_item imp_0_rshift = +{ + (uint8_t*)(void *)keybd_report_data + 0, /* data */ + 1, /* size */ + 5, /* shift */ + 0, /* count (only for array items) */ + 0, /* signed */ + 0, /* min value read can return */ + 1, /* max value read can return */ + 0, /* min vale device can report */ + 1, /* max value device can report */ + 1 /* resolution */ +}; + +static const hid_report_item imp_0_ralt = +{ + (uint8_t*)(void *)keybd_report_data + 0, /* data */ + 1, /* size */ + 6, /* shift */ + 0, /* count (only for array items) */ + 0, /* signed */ + 0, /* min value read can return */ + 1, /* max value read can return */ + 0, /* min vale device can report */ + 1, /* max value device can report */ + 1 /* resolution */ +}; + +static const hid_report_item imp_0_rgui = +{ + (uint8_t*)(void *)keybd_report_data + 0, /* data */ + 1, /* size */ + 7, /* shift */ + 0, /* count (only for array items) */ + 0, /* signed */ + 0, /* min value read can return */ + 1, /* max value read can return */ + 0, /* min vale device can report */ + 1, /* max value device can report */ + 1 /* resolution */ +}; + +static const hid_report_item imp_0_key_array = +{ + (uint8_t*)(void *)keybd_report_data + 2, /* data */ + 8, /* size */ + 0, /* shift */ + 6, /* count (only for array items) */ + 0, /* signed */ + 0, /* min value read can return */ + 101, /* max value read can return */ + 0, /* min vale device can report */ + 101, /* max value device can report */ + 1 /* resolution */ +}; + +/* local constants */ +static const uint8_t hid_keybrd_codes[] = +{ + 0, 0, 0, 0, 31, 50, 48, 33, + 19, 34, 35, 36, 24, 37, 38, 39, /* 0x00 - 0x0F */ + 52, 51, 25, 26, 17, 20, 32, 21, + 23, 49, 18, 47, 22, 46, 2, 3, /* 0x10 - 0x1F */ + 4, 5, 6, 7, 8, 9, 10, 11, + 43, 110, 15, 16, 61, 12, 13, 27, /* 0x20 - 0x2F */ + 28, 29, 42, 40, 41, 1, 53, 54, + 55, 30, 112, 113, 114, 115, 116, 117, /* 0x30 - 0x3F */ + 118, 119, 120, 121, 122, 123, 124, 125, + 126, 75, 80, 85, 76, 81, 86, 89, /* 0x40 - 0x4F */ + 79, 84, 83, 90, 95, 100, 105, 106, + 108, 93, 98, 103, 92, 97, 102, 91, /* 0x50 - 0x5F */ + 96, 101, 99, 104, 45, 129, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, /* 0x60 - 0x6F */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, /* 0x70 - 0x7F */ + 0, 0, 0, 0, 0, 107, 0, 56, + 0, 0, 0, 0, 0, 0, 0, 0, /* 0x80 - 0x8F */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, /* 0x90 - 0x9F */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, /* 0xA0 - 0xAF */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, /* 0xB0 - 0xBF */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, /* 0xC0 - 0xCF */ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, /* 0xD0 - 0xDF */ + 58, 44, 60, 127, 64, 57, 62, 128 /* 0xE0 - 0xE7 */ +}; + +#ifdef QWERTY_KEYBOARD + +static const int8_t hid_keybrd_key[] = +{ + '\0', '`', '1', '2', '3', '4', '5', '6', + '7', '8', '9', '0', '-', '=', '\0', '\r', + '\t', 'q', 'w', 'e', 'r', 't', 'y', 'u', + 'i', 'o', 'p', '[', ']', '\\', + '\0', 'a', 's', 'd', 'f', 'g', 'h', 'j', + 'k', 'l', ';', '\'', '\0', '\n', + '\0', '\0', 'z', 'x', 'c', 'v', 'b', 'n', + 'm', ',', '.', '/', '\0', '\0', + '\0', '\0', '\0', ' ', '\0', '\0', '\0', '\0', + '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', + '\0', '\0', '\0', '\0', '\0', '\r', '\0', '\0', + '\0', '\0', '\0', '\0', '\0', '\0', + '\0', '\0', '7', '4', '1', + '\0', '/', '8', '5', '2', + '0', '*', '9', '6', '3', + '.', '-', '+', '\0', '\n', '\0', '\0', '\0', '\0', '\0', '\0', + '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', + '\0', '\0', '\0', '\0' +}; + +static const int8_t hid_keybrd_shiftkey[] = { + '\0', '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', + '_', '+', '\0', '\0', '\0', 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', + 'I', 'O', 'P', '{', '}', '|', '\0', 'A', 'S', 'D', 'F', 'G', + 'H', 'J', 'K', 'L', ':', '"', '\0', '\n', '\0', '\0', 'Z', 'X', + 'C', 'V', 'B', 'N', 'M', '<', '>', '?', '\0', '\0', '\0', '\0', + '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', + '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', + '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', + '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', + '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', + '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0' +}; + +#else + +static const int8_t hid_keybrd_key[] = { + '\0', '`', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', + '-', '=', '\0', '\r', '\t', 'a', 'z', 'e', 'r', 't', 'y', 'u', + 'i', 'o', 'p', '[', ']', '\\', '\0', 'q', 's', 'd', 'f', 'g', + 'h', 'j', 'k', 'l', 'm', '\0', '\0', '\n', '\0', '\0', 'w', 'x', + 'c', 'v', 'b', 'n', ',', ';', ':', '!', '\0', '\0', '\0', '\0', + '\0', ' ', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', + '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\r', '\0', '\0', '\0', + '\0', '\0', '\0', '\0', '\0', '\0', '\0', '7', '4', '1', '\0', '/', + '8', '5', '2', '0', '*', '9', '6', '3', '.', '-', '+', '\0', + '\n', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', + '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0' +}; + +static const int8_t hid_keybrd_shiftkey[] = { + '\0', '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', + '+', '\0', '\0', '\0', 'A', 'Z', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', + 'P', '{', '}', '*', '\0', 'Q', 'S', 'D', 'F', 'G', 'H', 'J', 'K', + 'L', 'M', '%', '\0', '\n', '\0', '\0', 'W', 'X', 'C', 'V', 'B', 'N', + '?', '.', '/', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', + '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', + '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', + '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', + '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', + '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0' +}; + +#endif + +/* local function prototypes ('static') */ +static usbh_status usbh_hid_keybrd_decode (usb_core_driver *pudev, usbh_host *puhost); + +/*! + \brief initialize the keyboard function + \param[in] pudev: pointer to usb core instance + \param[in] puhost: pointer to usb host + \param[out] none + \retval operation status +*/ +usbh_status usbh_hid_keybd_init (usb_core_driver *pudev, usbh_host *puhost) +{ + usbh_hid_handler *hid = (usbh_hid_handler *)puhost->active_class->class_data; + + keybd_info.lctrl = keybd_info.lshift = 0U; + keybd_info.lalt = keybd_info.lgui = 0U; + keybd_info.rctrl = keybd_info.rshift = 0U; + keybd_info.ralt = keybd_info.rgui = 0U; + + for (uint32_t x = 0U; x < (sizeof(keybd_report_data) / sizeof(uint32_t)); x++) { + keybd_report_data[x] = 0U; + } + + if (hid->len > (sizeof(keybd_report_data) / sizeof(uint32_t))) { + hid->len = (sizeof(keybd_report_data) / sizeof(uint32_t)); + } + + hid->pdata = (uint8_t*)(void *)keybd_report_data; + + usbh_hid_fifo_init (&hid->fifo, puhost->dev_prop.data, HID_QUEUE_SIZE * sizeof(keybd_report_data)); + + /* call user init*/ + USR_KEYBRD_Init(); + + return USBH_OK; +} + +/*! + \brief get keyboard information + \param[in] pudev: pointer to USB core instance + \param[in] puhost: pointer to USB host handler + \param[out] none + \retval keyboard information +*/ +hid_keybd_info *usbh_hid_keybd_info_get (usb_core_driver *pudev, usbh_host *puhost) +{ + if (USBH_OK == usbh_hid_keybrd_decode(pudev, puhost)) { + return &keybd_info; + } else { + return NULL; + } +} + +/*! + \brief get ascii code + \param[in] info: keyboard information + \param[out] none + \retval output +*/ +uint8_t usbh_hid_ascii_code_get (hid_keybd_info *info) +{ + uint8_t output; + if ((1U == info->lshift) || (info->rshift)) { + output = hid_keybrd_shiftkey[hid_keybrd_codes[info->keys[0]]]; + } else { + output = hid_keybrd_key[hid_keybrd_codes[info->keys[0]]]; + } + + return output; +} + +/*! + \brief decode the pressed keys + \param[in] pudev: pointer to usb core instance + \param[in] puhost: pointer to usb host + \param[out] none + \retval none +*/ +void usbh_hid_keybrd_machine (usb_core_driver *pudev, usbh_host *puhost) +{ + hid_keybd_info *k_pinfo; + + k_pinfo = usbh_hid_keybd_info_get(pudev, puhost); + + if (k_pinfo != NULL) { + char c = usbh_hid_ascii_code_get(k_pinfo); + + if (c != 0U) { + USR_KEYBRD_ProcessData(c); + } + } +} + +/*! + \brief decode keyboard information + \param[in] pudev: pointer to usb core instance + \param[in] puhost: pointer to usb host + \param[out] none + \retval operation status +*/ +static usbh_status usbh_hid_keybrd_decode (usb_core_driver *pudev, usbh_host *puhost) +{ + usbh_hid_handler *hid = (usbh_hid_handler *)puhost->active_class->class_data; + + if (hid->len == 0U) { + return USBH_FAIL; + } + + /* fill report */ + if (usbh_hid_fifo_read (&hid->fifo, &keybd_report_data, hid->len) == hid->len) { + keybd_info.lctrl = (uint8_t)hid_item_read((hid_report_item *)&imp_0_lctrl, 0U); + keybd_info.lshift = (uint8_t)hid_item_read((hid_report_item *)&imp_0_lshift, 0U); + keybd_info.lalt = (uint8_t)hid_item_read((hid_report_item *)&imp_0_lalt, 0U); + keybd_info.lgui = (uint8_t)hid_item_read((hid_report_item *)&imp_0_lgui, 0U); + keybd_info.rctrl = (uint8_t)hid_item_read((hid_report_item *)&imp_0_rctrl, 0U); + keybd_info.rshift = (uint8_t)hid_item_read((hid_report_item *)&imp_0_rshift, 0U); + keybd_info.ralt = (uint8_t)hid_item_read((hid_report_item *)&imp_0_ralt, 0U); + keybd_info.rgui = (uint8_t)hid_item_read((hid_report_item *)&imp_0_rgui, 0U); + + for (uint8_t x = 0U; x < sizeof(keybd_info.keys); x++) { + keybd_info.keys[x] = (uint8_t)hid_item_read((hid_report_item *)&imp_0_key_array, x); + } + + return USBH_OK; + } + + return USBH_FAIL; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Source/usbh_hid_mouse.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Source/usbh_hid_mouse.c new file mode 100644 index 0000000000..8d67377759 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Source/usbh_hid_mouse.c @@ -0,0 +1,216 @@ +/*! + \file usbh_hid_mouse.c + \brief USB host HID mouse driver + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "usbh_hid_mouse.h" +#include "usbh_hid_parser.h" + +hid_mouse_info mouse_info; +uint32_t mouse_report_data[1]; + +/* structures defining how to access items in a hid mouse report */ +/* access button 1 state. */ +static const hid_report_item prop_b1 = +{ + (uint8_t *)(void *)mouse_report_data + 0, /* data */ + 1, /* size */ + 0, /* shift */ + 0, /* count (only for array items) */ + 0, /* signed? */ + 0, /* min value read can return */ + 1, /* max value read can return */ + 0, /* min value device can report */ + 1, /* max value device can report */ + 1 /* resolution */ +}; + +/* access button 2 state. */ +static const hid_report_item prop_b2 = +{ + (uint8_t *)(void *)mouse_report_data + 0, /* data */ + 1, /* size */ + 1, /* shift */ + 0, /* count (only for array items) */ + 0, /* signed? */ + 0, /* min value read can return */ + 1, /* max value read can return */ + 0, /* min value device can report */ + 1, /* max value device can report */ + 1 /* resolution */ +}; + +/* access button 3 state. */ +static const hid_report_item prop_b3 = +{ + (uint8_t *)(void *)mouse_report_data + 0, /* data */ + 1, /* size */ + 2, /* shift */ + 0, /* count (only for array items) */ + 0, /* signed? */ + 0, /* min value read can return */ + 1, /* max value read can return */ + 0, /* min vale device can report */ + 1, /* max value device can report */ + 1 /* resolution */ +}; + +/* access x coordinate change. */ +static const hid_report_item prop_x = +{ + (uint8_t *)(void *)mouse_report_data + 1, /* data */ + 8, /* size */ + 0, /* shift */ + 0, /* count (only for array items) */ + 1, /* signed? */ + 0, /* min value read can return */ + 0xFFFF,/* max value read can return */ + 0, /* min vale device can report */ + 0xFFFF,/* max value device can report */ + 1 /* resolution */ +}; + +/* access y coordinate change. */ +static const hid_report_item prop_y = +{ + (uint8_t *)(void *)mouse_report_data + 2, /* data */ + 8, /* size */ + 0, /* shift */ + 0, /* count (only for array items) */ + 1, /* signed? */ + 0, /* min value read can return */ + 0xFFFF,/* max value read can return */ + 0, /* min vale device can report */ + 0xFFFF,/* max value device can report */ + 1 /* resolution */ +}; + +/* local function prototypes ('static') */ +static usbh_status usbh_hid_mouse_decode(usb_core_driver *pudev, usbh_host *puhost); + +/*! + \brief initialize the mouse function + \param[in] pudev: pointer to usb core instance + \param[in] puhost: pointer to usb host + \param[out] none + \retval none +*/ +usbh_status usbh_hid_mouse_init (usb_core_driver *pudev, usbh_host *puhost) +{ + usbh_hid_handler *hid = (usbh_hid_handler *)puhost->active_class->class_data; + + mouse_info.x = 0U; + mouse_info.y = 0U; + mouse_info.buttons[0] = 0U; + mouse_info.buttons[1] = 0U; + mouse_info.buttons[2] = 0U; + + mouse_report_data[0] = 0U; + + if(hid->len > sizeof(mouse_report_data)) { + hid->len = sizeof(mouse_report_data); + } + + hid->pdata = (uint8_t *)(void *)mouse_report_data; + + usbh_hid_fifo_init(&hid->fifo, puhost->dev_prop.data, HID_QUEUE_SIZE * sizeof(mouse_report_data)); + + USR_MOUSE_Init(); + + return USBH_OK; +} + +/*! + \brief get mouse information + \param[in] pudev: pointer to usb core instance + \param[in] puhost: pointer to usb host + \param[out] none + \retval mouse information +*/ +hid_mouse_info *usbh_hid_mouse_info_get (usb_core_driver *pudev, usbh_host *puhost) +{ + if(usbh_hid_mouse_decode(pudev, puhost)== USBH_OK) { + return &mouse_info; + } else { + return NULL; + } +} + +/*! + \brief decode mouse data + \param[in] pudev: pointer to usb core instance + \param[in] puhost: pointer to usb host + \param[out] none + \retval none +*/ +void usbh_hid_mouse_machine (usb_core_driver *pudev, usbh_host *puhost) +{ + hid_mouse_info *m_pinfo = NULL; + + m_pinfo = usbh_hid_mouse_info_get(pudev, puhost); + + if (NULL != m_pinfo) { + /* handle mouse data position */ + USR_MOUSE_ProcessData(&mouse_info); + } +} + +/*! + \brief decode mouse information + \param[in] pudev: pointer to usb core instance + \param[in] puhost: pointer to usb host + \param[out] none + \retval operation status +*/ +static usbh_status usbh_hid_mouse_decode(usb_core_driver *pudev, usbh_host *puhost) +{ + usbh_hid_handler *hid = (usbh_hid_handler *)puhost->active_class->class_data; + + if (0U == hid->len) { + return USBH_FAIL; + } + + /* fill report */ + if (usbh_hid_fifo_read(&hid->fifo, &mouse_report_data, hid->len) == hid->len) { + /* decode report */ + mouse_info.x = (uint8_t)hid_item_read((hid_report_item *)&prop_x, 0U); + mouse_info.y = (uint8_t)hid_item_read((hid_report_item *)&prop_y, 0U); + + mouse_info.buttons[0] = (uint8_t)hid_item_read((hid_report_item *)&prop_b1, 0U); + mouse_info.buttons[1] = (uint8_t)hid_item_read((hid_report_item *)&prop_b2, 0U); + mouse_info.buttons[2] = (uint8_t)hid_item_read((hid_report_item *)&prop_b3, 0U); + + return USBH_OK; + } + + return USBH_FAIL; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Source/usbh_hid_parser.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Source/usbh_hid_parser.c new file mode 100644 index 0000000000..4e51c360ec --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/hid/Source/usbh_hid_parser.c @@ -0,0 +1,148 @@ +/*! + \file usbh_hid_parser.c + \brief USB host HID parser driver + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "usbh_hid_parser.h" + +/*! + \brief read a hid report item + \param[in] ri: pointer to report item + \param[in] ndx: report index + \param[out] none + \retval operation status (0: fail otherwise: item value) +*/ +uint32_t hid_item_read (hid_report_item *ri, uint8_t ndx) +{ + uint32_t val = 0U; + uint32_t bofs = 0U; + uint8_t *data = ri->data; + uint8_t shift = ri->shift; + + /* get the logical value of the item */ + + /* if this is an array, wee may need to offset ri->data.*/ + if (ri->count > 0U) { + /* if app tries to read outside of the array. */ + if (ri->count <= ndx) { + return(0U); + } + + /* calculate bit offset */ + bofs = ndx * ri->size; + bofs += shift; + + /* calculate byte offset + shift pair from bit offset. */ + data += bofs / 8U; + shift = (uint8_t)(bofs % 8U); + } + + /* read data bytes in little endian order */ + for (uint32_t x = 0U; x < ((ri->size & 0x7U) ? (ri->size / 8U) + 1U : (ri->size / 8U)); x++) { + val=(uint32_t)((uint32_t)(*data) << (x * 8U)); + } + + val=(val >> shift) & ((1U << ri->size) - 1U); + + if ((val < ri->logical_min) || (val > ri->logical_max)) { + return(0U); + } + + /* convert logical value to physical value */ + /* see if the number is negative or not. */ + if ((ri->sign) && (val & (1U << (ri->size - 1U)))) { + /* yes, so sign extend value to 32 bits. */ + uint32_t vs = (uint32_t)((0xffffffffU & ~((1U << (ri->size)) - 1U)) | val); + + if (1U == ri->resolution) { + return((uint32_t)vs); + } + return((uint32_t)(vs * ri->resolution)); + } else { + if (1U == ri->resolution) { + return(val); + } + + return (val * ri->resolution); + } +} + +/*! + \brief write a hid report item + \param[in] ri: pointer to report item + \param[in] value: the value to be write + \param[in] ndx: report index + \param[out] none + \retval operation status (1: fail 0: Ok) +*/ +uint32_t hid_item_write(hid_report_item *ri, uint32_t value, uint8_t ndx) +{ + uint32_t mask; + uint32_t bofs; + uint8_t *data = ri->data; + uint8_t shift = ri->shift; + + if ((value < ri->physical_min) || (value > ri->physical_max)) { + return(1U); + } + + /* if this is an array, wee may need to offset ri->data.*/ + if (ri->count > 0U) { + /* if app tries to read outside of the array. */ + if (ri->count >= ndx) { + return(0U); + } + + /* calculate bit offset */ + bofs = ndx * ri->size; + bofs += shift; + + /* calculate byte offset + shift pair from bit offset. */ + data += bofs / 8U; + shift = (uint8_t)(bofs % 8U); + } + + /* convert physical value to logical value. */ + if (1U != ri->resolution) { + value = value / ri->resolution; + } + + /* write logical value to report in little endian order. */ + mask = (1U << ri->size) - 1U; + value = (value & mask) << shift; + + for (uint32_t x = 0U; x < ((ri->size & 0x7U) ? (ri->size / 8U) + 1U : (ri->size / 8U)); x++) { + *(ri->data + x) = (uint8_t)((*(ri->data+x) & ~(mask>>(x* 8U))) | ((value >> (x * 8U)) & (mask >> (x * 8U)))); + } + + return 0U; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Include/usbh_msc_bbb.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Include/usbh_msc_bbb.h new file mode 100644 index 0000000000..08f9001fb6 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Include/usbh_msc_bbb.h @@ -0,0 +1,150 @@ +/*! + \file usbh_msc_bbb.h + \brief header file for usbh_msc_bbb.c + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USBH_MSC_BBB_H +#define __USBH_MSC_BBB_H + +#include "usbh_enum.h" +#include "msc_bbb.h" + +typedef union { + msc_bbb_cbw field; + + uint8_t CBWArray[31]; +}usbh_cbw_pkt; + +typedef union { + msc_bbb_csw field; + + uint8_t CSWArray[13]; +}usbh_csw_pkt; + +enum usbh_msc_state { + USBH_MSC_BOT_INIT_STATE = 0U, + USBH_MSC_BOT_RESET, + USBH_MSC_GET_MAX_LUN, + USBH_MSC_TEST_UNIT_READY, + USBH_MSC_READ_CAPACITY10, + USBH_MSC_MODE_SENSE6, + USBH_MSC_REQUEST_SENSE, + USBH_MSC_BOT_USB_TRANSFERS, + USBH_MSC_DEFAULT_APPLI_STATE, + USBH_MSC_CTRL_ERROR_STATE, + USBH_MSC_UNRECOVERED_STATE +}; + +typedef enum +{ + BOT_OK = 0U, + BOT_FAIL, + BOT_PHASE_ERROR, + BOT_BUSY +} bot_status; + +typedef enum +{ + BOT_CMD_IDLE = 0U, + BOT_CMD_SEND, + BOT_CMD_WAIT, +} bot_cmd_state; + +/* csw status definitions */ +typedef enum +{ + BOT_CSW_CMD_PASSED = 0U, + BOT_CSW_CMD_FAILED, + BOT_CSW_PHASE_ERROR, +} bot_csw_status; + +typedef enum +{ + BOT_SEND_CBW = 1U, + BOT_SEND_CBW_WAIT, + BOT_DATA_IN, + BOT_DATA_IN_WAIT, + BOT_DATA_OUT, + BOT_DATA_OUT_WAIT, + BOT_RECEIVE_CSW, + BOT_RECEIVE_CSW_WAIT, + BOT_ERROR_IN, + BOT_ERROR_OUT, + BOT_UNRECOVERED_ERROR +} bot_state; + +typedef struct +{ + uint8_t *pbuf; + uint32_t data[16]; + bot_state state; + bot_state prev_state; + bot_cmd_state cmd_state; + usbh_cbw_pkt cbw; + usbh_csw_pkt csw; +} bot_handle; + +#define USBH_MSC_BOT_CBW_TAG 0x20304050U + +#define USBH_MSC_CSW_MAX_LENGTH 63U + +#define USBH_MSC_SEND_CSW_DISABLE 0U +#define USBH_MSC_SEND_CSW_ENABLE 1U + +#define USBH_MSC_DIR_IN 0U +#define USBH_MSC_DIR_OUT 1U +#define USBH_MSC_BOTH_DIR 2U + +#define USBH_MSC_PAGE_LENGTH 512U + +#define CBW_CB_LENGTH 16U +#define CBW_LENGTH 10U +#define CBW_LENGTH_TEST_UNIT_READY 0U + +#define MAX_BULK_STALL_COUNT_LIMIT 0x04U /*!< If STALL is seen on Bulk + Endpoint continously, this means + that device and Host has phase error + Hence a Reset is needed */ + +/* function declarations */ +/* initialize the mass storage parameters */ +void usbh_msc_bot_init (usbh_host *puhost); +/* manage the different states of BOT transfer and updates the status to upper layer */ +usbh_status usbh_msc_bot_process (usbh_host *puhost, uint8_t lun); +/* manages the different error handling for stall */ +usbh_status usbh_msc_bot_abort (usbh_host *puhost, uint8_t direction); +/* reset msc bot request struct */ +usbh_status usbh_msc_bot_reset (usbh_host *puhost); +/* decode the CSW received by the device and updates the same to upper layer */ +bot_csw_status usbh_msc_csw_decode (usbh_host *puhost); + +#endif /* __USBH_MSC_BBB_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Include/usbh_msc_core.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Include/usbh_msc_core.h new file mode 100644 index 0000000000..ea8c4ede72 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Include/usbh_msc_core.h @@ -0,0 +1,124 @@ +/*! + \file usbh_core.h + \brief header file for the usbh_core.c + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USBH_MSC_CORE_H +#define __USBH_MSC_CORE_H + +#include "usb_msc.h" +#include "usbh_msc_scsi.h" +#include "usbh_msc_bbb.h" + +#define MSC_MAX_SUPPORTED_LUN 2U + +typedef enum +{ + MSC_INIT = 0U, + MSC_IDLE, + MSC_TEST_UNIT_READY, + MSC_READ_CAPACITY10, + MSC_READ_INQUIRY, + MSC_REQUEST_SENSE, + MSC_READ, + MSC_WRITE, + MSC_UNRECOVERED_ERROR, + MSC_PERIODIC_CHECK, +} msc_state; + +typedef enum +{ + MSC_OK, + MSC_NOT_READY, + MSC_ERROR, +} msc_error; + +typedef enum +{ + MSC_REQ_IDLE = 0U, + MSC_REQ_RESET, + MSC_REQ_GET_MAX_LUN, + MSC_REQ_ERROR, +} msc_req_state; + +/* Structure for LUN */ +typedef struct +{ + msc_state state; + msc_error error; + msc_scsi_sense sense; + scsi_capacity capacity; + scsi_std_inquiry_data inquiry; + usbh_status prev_ready_state; + uint8_t state_changed; +} msc_lun; + +/* structure for msc process */ +typedef struct _msc_process +{ + uint8_t pipe_in; + uint8_t pipe_out; + uint8_t ep_in; + uint8_t ep_out; + uint16_t ep_size_in; + uint16_t ep_size_out; + uint8_t cur_lun; + uint16_t rw_lun; + uint32_t max_lun; + msc_state state; + msc_error error; + msc_req_state req_state; + msc_req_state prev_req_state; + bot_handle bot; + msc_lun unit[MSC_MAX_SUPPORTED_LUN]; + uint32_t timer; +} usbh_msc_handler; + +extern usbh_class usbh_msc; + +/* function declarations */ +/* get msc logic unit information */ +usbh_status usbh_msc_lun_info_get (usbh_host *puhost, uint8_t lun, msc_lun *info); +/* msc read interface */ +usbh_status usbh_msc_read (usbh_host *puhost, + uint8_t lun, + uint32_t address, + uint8_t *pbuf, + uint32_t length); +/* msc write interface */ +usbh_status usbh_msc_write (usbh_host *puhost, + uint8_t lun, + uint32_t address, + uint8_t *pbuf, + uint32_t length); + +#endif /* __USBH_MSC_CORE_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Include/usbh_msc_scsi.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Include/usbh_msc_scsi.h new file mode 100644 index 0000000000..44db871642 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Include/usbh_msc_scsi.h @@ -0,0 +1,100 @@ +/*! + \file usbh_msc_scsi.h + \brief header file for usbh_msc_scsi.c + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USBH_MSC_SCSI_H +#define __USBH_MSC_SCSI_H + +#include "msc_scsi.h" +#include "usbh_enum.h" + +/* capacity data */ +typedef struct +{ + uint32_t block_nbr; + uint16_t block_size; +} scsi_capacity; + +/* inquiry data */ +typedef struct +{ + uint8_t peripheral_qualifier; + uint8_t device_type; + uint8_t removable_media; + uint8_t vendor_id[9]; + uint8_t product_id[17]; + uint8_t revision_id[5]; +} scsi_std_inquiry_data; + +typedef struct +{ + uint32_t msc_capacity; + uint32_t msc_sense_key; + uint16_t msc_page_len; + uint8_t msc_write_protect; +}usbh_msc_parameter; + +#define DESC_REQUEST_SENSE 0x00U +#define ALLOCATION_LENGTH_REQUEST_SENSE 63U +#define XFER_LEN_MODE_SENSE6 63U + +#define MASK_MODE_SENSE_WRITE_PROTECT 0x80U +#define MODE_SENSE_PAGE_CONTROL_FIELD 0x00U +#define MODE_SENSE_PAGE_CODE 0x3FU +#define DISK_WRITE_PROTECTED 0x01U + +/* function declarations */ +/* send 'Inquiry' command to the device */ +usbh_status usbh_msc_scsi_inquiry (usbh_host *puhost, uint8_t lun, scsi_std_inquiry_data *inquiry); +/* send 'Test unit ready' command to the device */ +usbh_status usbh_msc_test_unitready (usbh_host *puhost, uint8_t lun); +/* send the read capacity command to the device */ +usbh_status usbh_msc_read_capacity10 (usbh_host *puhost, uint8_t lun, scsi_capacity *capacity); +/* send the mode sense6 command to the device */ +usbh_status usbh_msc_mode_sense6 (usbh_host *puhost, uint8_t lun); +/* send the Request Sense command to the device */ +usbh_status usbh_msc_request_sense (usbh_host *puhost, uint8_t lun, msc_scsi_sense *sense_data); +/* send the write10 command to the device */ +usbh_status usbh_msc_write10 (usbh_host *puhost, + uint8_t lun, + uint8_t *data_buf, + uint32_t addr, + uint32_t byte_num); +/* send the read10 command to the device */ +usbh_status usbh_msc_read10 (usbh_host *puhost, + uint8_t lun, + uint8_t *data_buf, + uint32_t addr, + uint32_t byte_num); + +#endif /* __USBH_MSC_SCSI_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Source/usbh_msc_bbb.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Source/usbh_msc_bbb.c new file mode 100644 index 0000000000..307da030fb --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Source/usbh_msc_bbb.c @@ -0,0 +1,362 @@ +/*! + \file usbh_msc_bbb.c + \brief USB MSC BBB protocol related functions + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "usbh_pipe.h" +#include "usbh_msc_core.h" +#include "usbh_msc_scsi.h" +#include "usbh_msc_bbb.h" +#include "usbh_transc.h" +#include "drv_usbh_int.h" + +/*! + \brief initialize the mass storage parameters + \param[in] puhost: pointer to usb host handler + \param[out] none + \retval none +*/ +void usbh_msc_bot_init (usbh_host *puhost) +{ + usbh_msc_handler *msc = (usbh_msc_handler *)puhost->active_class->class_data; + + msc->bot.cbw.field.dCBWSignature = BBB_CBW_SIGNATURE; + msc->bot.cbw.field.dCBWTag = USBH_MSC_BOT_CBW_TAG; + msc->bot.state = BOT_SEND_CBW; + msc->bot.cmd_state = BOT_CMD_SEND; +} + +/*! + \brief manage the different states of BOT transfer and updates the status to upper layer + \param[in] puhost: pointer to usb host handler + \param[in] lun: logic unit number + \param[out] none + \retval operation status +*/ +usbh_status usbh_msc_bot_process (usbh_host *puhost, uint8_t lun) +{ + bot_csw_status csw_status = BOT_CSW_CMD_FAILED; + usbh_status status = USBH_BUSY; + usbh_status error = USBH_BUSY; + usb_urb_state urb_status = URB_IDLE; + usbh_msc_handler *msc = (usbh_msc_handler *)puhost->active_class->class_data; + + switch (msc->bot.state) { + case BOT_SEND_CBW: + msc->bot.cbw.field.bCBWLUN = lun; + msc->bot.state = BOT_SEND_CBW_WAIT; + /* send CBW */ + usbh_data_send (puhost->data, + msc->bot.cbw.CBWArray, + msc->pipe_out, + BBB_CBW_LENGTH); + break; + + case BOT_SEND_CBW_WAIT: + urb_status = usbh_urbstate_get(puhost->data, msc->pipe_out); + + if (URB_DONE == urb_status) { + if (0U != msc->bot.cbw.field.dCBWDataTransferLength) { + if (USB_TRX_IN == (msc->bot.cbw.field.bmCBWFlags & USB_TRX_MASK)) { + msc->bot.state = BOT_DATA_IN; + } else { + msc->bot.state = BOT_DATA_OUT; + } + } else { + msc->bot.state = BOT_RECEIVE_CSW; + } + + } else if (URB_NOTREADY == urb_status) { + msc->bot.state = BOT_SEND_CBW; + } else { + if (URB_STALL == urb_status) { + msc->bot.state = BOT_ERROR_OUT; + } + } + break; + + case BOT_DATA_IN: + usbh_data_recev (puhost->data, + msc->bot.pbuf, + msc->pipe_in, + msc->ep_size_in); + + msc->bot.state = BOT_DATA_IN_WAIT; + break; + + case BOT_DATA_IN_WAIT: + urb_status = usbh_urbstate_get(puhost->data, msc->pipe_in); + + /* BOT DATA IN stage */ + if (URB_DONE == urb_status) { + if (msc->bot.cbw.field.dCBWDataTransferLength > msc->ep_size_in) { + msc->bot.pbuf += msc->ep_size_in; + msc->bot.cbw.field.dCBWDataTransferLength -= msc->ep_size_in; + } else { + msc->bot.cbw.field.dCBWDataTransferLength = 0U; + } + + if (msc->bot.cbw.field.dCBWDataTransferLength > 0U) { + usbh_data_recev (puhost->data, + msc->bot.pbuf, + msc->pipe_in, + msc->ep_size_in); + } else { + msc->bot.state = BOT_RECEIVE_CSW; + } + } else if(URB_STALL == urb_status) { + /* this is data stage stall condition */ + msc->bot.state = BOT_ERROR_IN; + } else { + /* no operation */ + } + break; + + case BOT_DATA_OUT: + usbh_data_send (puhost->data, + msc->bot.pbuf, + msc->pipe_out, + msc->ep_size_out); + + msc->bot.state = BOT_DATA_OUT_WAIT; + break; + + case BOT_DATA_OUT_WAIT: + /* BOT DATA OUT stage */ + urb_status = usbh_urbstate_get(puhost->data, msc->pipe_out); + if (URB_DONE == urb_status) { + if (msc->bot.cbw.field.dCBWDataTransferLength > msc->ep_size_out) { + msc->bot.pbuf += msc->ep_size_out; + msc->bot.cbw.field.dCBWDataTransferLength -= msc->ep_size_out; + } else { + msc->bot.cbw.field.dCBWDataTransferLength = 0; /* reset this value and keep in same state */ + } + + if (msc->bot.cbw.field.dCBWDataTransferLength > 0) { + usbh_data_send (puhost->data, + msc->bot.pbuf, + msc->pipe_out, + msc->ep_size_out); + } else { + msc->bot.state = BOT_RECEIVE_CSW; + } + } else if (URB_NOTREADY == urb_status) { + msc->bot.state = BOT_DATA_OUT; + } else if (URB_STALL == urb_status) { + msc->bot.state = BOT_ERROR_OUT; + } else { + /* no operation */ + } + break; + + case BOT_RECEIVE_CSW: + /* BOT CSW stage */ + usbh_data_recev (puhost->data, + msc->bot.csw.CSWArray, + msc->pipe_in, + BBB_CSW_LENGTH); + + msc->bot.state = BOT_RECEIVE_CSW_WAIT; + break; + + case BOT_RECEIVE_CSW_WAIT: + urb_status = usbh_urbstate_get(puhost->data, msc->pipe_in); + + /* decode CSW */ + if (URB_DONE == urb_status) { + msc->bot.state = BOT_SEND_CBW; + msc->bot.cmd_state = BOT_CMD_SEND; + + csw_status = usbh_msc_csw_decode(puhost); + if (BOT_CSW_CMD_PASSED == csw_status) { + status = USBH_OK; + } else { + status = USBH_FAIL; + } + } else if (URB_STALL == urb_status) { + msc->bot.state = BOT_ERROR_IN; + } else { + /* no operation */ + } + break; + + case BOT_ERROR_IN: + error = usbh_msc_bot_abort(puhost, USBH_MSC_DIR_IN); + + if (USBH_OK == error) { + msc->bot.state = BOT_RECEIVE_CSW; + } else if (USBH_UNRECOVERED_ERROR == status) { + /* this means that there is a stall error limit, do reset recovery */ + msc->bot.state = BOT_UNRECOVERED_ERROR; + } else { + /* no operation */ + } + break; + + case BOT_ERROR_OUT: + status = usbh_msc_bot_abort (puhost, USBH_MSC_DIR_OUT); + + if (USBH_OK == status) { + uint8_t toggle = usbh_pipe_toggle_get(puhost->data, msc->pipe_out); + usbh_pipe_toggle_set(puhost->data, msc->pipe_out, 1U - toggle); + usbh_pipe_toggle_set(puhost->data, msc->pipe_in, 0U); + msc->bot.state = BOT_ERROR_IN; + } else { + if (USBH_UNRECOVERED_ERROR == status) { + msc->bot.state = BOT_UNRECOVERED_ERROR; + } + } + break; + + case BOT_UNRECOVERED_ERROR: + status = usbh_msc_bot_reset(puhost); + if (USBH_OK == status) { + msc->bot.state = BOT_SEND_CBW; + } + break; + + default: + break; + } + + return status; +} + +/*! + \brief manages the different error handling for stall + \param[in] puhost: pointer to usb host handler + \param[in] direction: data IN or OUT + \param[out] none + \retval operation status +*/ +usbh_status usbh_msc_bot_abort (usbh_host *puhost, uint8_t direction) +{ + usbh_status status = USBH_BUSY; + usbh_msc_handler *msc = (usbh_msc_handler *)puhost->active_class->class_data; + + switch (direction) { + case USBH_MSC_DIR_IN : + /* send clrfeture command on bulk IN endpoint */ + status = usbh_clrfeature(puhost, + msc->ep_in, + msc->pipe_in); + break; + + case USBH_MSC_DIR_OUT : + /*send clrfeature command on bulk OUT endpoint */ + status = usbh_clrfeature(puhost, + msc->ep_out, + msc->pipe_out); + break; + + default: + break; + } + + return status; +} + +/*! + \brief reset msc bot transfer + \param[in] puhost: pointer to usb host handler + \param[out] none + \retval operation status +*/ +usbh_status usbh_msc_bot_reset (usbh_host *puhost) +{ + usbh_status status = USBH_BUSY; + + if (CTL_IDLE == puhost->control.ctl_state) { + puhost->control.setup.req = (usb_req) { + .bmRequestType = USB_TRX_OUT | USB_REQTYPE_CLASS | USB_RECPTYPE_ITF, + .bRequest = BBB_RESET, + .wValue = 0U, + .wIndex = 0U, + .wLength = 0U + }; + + usbh_ctlstate_config (puhost, NULL, 0U); + } + + status = usbh_ctl_handler (puhost); + + return status; +} + +/*! + \brief decode the CSW received by the device and updates the same to upper layer + \param[in] puhost: pointer to usb host + \param[out] none + \retval on success USBH_MSC_OK, on failure USBH_MSC_FAIL + \notes + Refer to USB Mass-Storage Class: BOT (www.usb.org) + 6.3.1 Valid CSW Conditions : + The host shall consider the CSW valid when: + 1. dCSWSignature is equal to 53425355h + 2. the CSW is 13 (Dh) bytes in length, + 3. dCSWTag matches the dCBWTag from the corresponding CBW. +*/ +bot_csw_status usbh_msc_csw_decode (usbh_host *puhost) +{ + bot_csw_status status = BOT_CSW_CMD_FAILED; + usbh_msc_handler *msc = (usbh_msc_handler *)puhost->active_class->class_data; + + /* checking if the transfer length is different than 13 */ + if (BBB_CSW_LENGTH != usbh_xfercount_get (puhost->data, msc->pipe_in)) { + status = BOT_CSW_PHASE_ERROR; + } else { + /* CSW length is correct */ + + /* check validity of the CSW Signature and CSWStatus */ + if (BBB_CSW_SIGNATURE == msc->bot.csw.field.dCSWSignature) { + /* check condition 1. dCSWSignature is equal to 53425355h */ + if (msc->bot.csw.field.dCSWTag == msc->bot.cbw.field.dCBWTag) { + /* check condition 3. dCSWTag matches the dCBWTag from the corresponding CBW */ + if (0U == msc->bot.csw.field.bCSWStatus) { + status = BOT_CSW_CMD_PASSED; + } else if (1U == msc->bot.csw.field.bCSWStatus) { + status = BOT_CSW_CMD_FAILED; + } else if (2U == msc->bot.csw.field.bCSWStatus) { + status = BOT_CSW_PHASE_ERROR; + } else { + /* no operation */ + } + } + } else { + /* If the CSW signature is not valid, we will return the phase error to + upper layers for reset recovery */ + status = BOT_CSW_PHASE_ERROR; + } + } + + return status; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Source/usbh_msc_core.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Source/usbh_msc_core.c new file mode 100644 index 0000000000..e45c4ece76 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Source/usbh_msc_core.c @@ -0,0 +1,562 @@ +/*! + \file usbh_core.c + \brief USB MSC(mass storage device) class driver + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 + \version 2021-02-25, V1.1.1, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "usbh_msc_core.h" +#include "usbh_msc_scsi.h" +#include "usbh_msc_bbb.h" +#include "usbh_pipe.h" +#include "usbh_transc.h" +#include +#include + +/* local function prototypes ('static') */ +static void usbh_msc_itf_deinit (usbh_host *puhost); +static usbh_status usbh_msc_itf_init (usbh_host *puhost); +static usbh_status usbh_msc_req (usbh_host *puhost); +static usbh_status usbh_msc_handle (usbh_host *puhost); +static usbh_status usbh_msc_maxlun_get (usbh_host *puhost, uint8_t *maxlun); +static usbh_status usbh_msc_rdwr_process(usbh_host *puhost, uint8_t lun); + +usbh_class usbh_msc = +{ + USB_CLASS_MSC, + usbh_msc_itf_init, + usbh_msc_itf_deinit, + usbh_msc_req, + usbh_msc_handle, +}; + +/*! + \brief interface initialization for MSC class + \param[in] puhost: pointer to usb host + \param[out] none + \retval operation status +*/ +static usbh_status usbh_msc_itf_init (usbh_host *puhost) +{ + usbh_status status = USBH_OK; + + uint8_t interface = usbh_interface_find(&puhost->dev_prop, MSC_CLASS, USB_MSC_SUBCLASS_SCSI, MSC_PROTOCOL); + + if (0xFFU == interface) { + puhost->usr_cb->dev_not_supported(); + + status = USBH_FAIL; + } else { + static usbh_msc_handler msc_handler; + + memset((void*)&msc_handler, 0, sizeof(usbh_msc_handler)); + + puhost->active_class->class_data = (void *)&msc_handler; + + usbh_interface_select(&puhost->dev_prop, interface); + + usb_desc_ep *ep_desc = &puhost->dev_prop.cfg_desc_set.itf_desc_set[interface][0].ep_desc[0]; + + if (ep_desc->bEndpointAddress & 0x80) { + msc_handler.ep_in = ep_desc->bEndpointAddress; + msc_handler.ep_size_in = ep_desc->wMaxPacketSize; + } else { + msc_handler.ep_out = ep_desc->bEndpointAddress; + msc_handler.ep_size_out = ep_desc->wMaxPacketSize; + } + + ep_desc = &puhost->dev_prop.cfg_desc_set.itf_desc_set[interface][0].ep_desc[1]; + + if (ep_desc->bEndpointAddress & 0x80) { + msc_handler.ep_in = ep_desc->bEndpointAddress; + msc_handler.ep_size_in = ep_desc->wMaxPacketSize; + } else { + msc_handler.ep_out = ep_desc->bEndpointAddress; + msc_handler.ep_size_out = ep_desc->wMaxPacketSize; + } + + msc_handler.state = MSC_INIT; + msc_handler.error = MSC_OK; + msc_handler.req_state = MSC_REQ_IDLE; + msc_handler.pipe_out = usbh_pipe_allocate(puhost->data, msc_handler.ep_out); + msc_handler.pipe_in = usbh_pipe_allocate(puhost->data, msc_handler.ep_in); + + usbh_msc_bot_init(puhost); + + /* open the new channels */ + usbh_pipe_create (puhost->data, + &puhost->dev_prop, + msc_handler.pipe_out, + USB_EPTYPE_BULK, + msc_handler.ep_size_out); + + usbh_pipe_create (puhost->data, + &puhost->dev_prop, + msc_handler.pipe_in, + USB_EPTYPE_BULK, + msc_handler.ep_size_in); + + usbh_pipe_toggle_set (puhost->data, msc_handler.pipe_out, 0U); + usbh_pipe_toggle_set (puhost->data, msc_handler.pipe_in, 0U); + } + + return status; +} + +/*! + \brief de-initialize interface by freeing host channels allocated to interface + \param[in] puhost: pointer to usb host + \param[out] none + \retval operation status +*/ +void usbh_msc_itf_deinit (usbh_host *puhost) +{ + usbh_msc_handler *msc = (usbh_msc_handler *)puhost->active_class->class_data; + + if (msc->pipe_out) { + usb_pipe_halt (puhost->data, msc->pipe_out); + usbh_pipe_free (puhost->data, msc->pipe_out); + + msc->pipe_out = 0U; + } + + if (msc->pipe_in) { + usb_pipe_halt (puhost->data, msc->pipe_in); + usbh_pipe_free (puhost->data, msc->pipe_in); + + msc->pipe_in = 0U; + } +} + +/*! + \brief initialize the MSC state machine + \param[in] puhost: pointer to usb host + \param[out] none + \retval operation status +*/ +static usbh_status usbh_msc_req (usbh_host *puhost) +{ + usbh_status status = USBH_BUSY; + usbh_msc_handler *msc = (usbh_msc_handler *)puhost->active_class->class_data; + + switch (msc->req_state) { + case MSC_REQ_IDLE: + case MSC_REQ_GET_MAX_LUN: + /* issue Get_MaxLun request */ + status = usbh_msc_maxlun_get (puhost, (uint8_t *)&msc->max_lun); + + if (USBH_OK == status) { + msc->max_lun = ((uint8_t)msc->max_lun > MSC_MAX_SUPPORTED_LUN) ? MSC_MAX_SUPPORTED_LUN : (uint8_t)msc->max_lun + 1U; + + for (uint8_t i = 0U; i < msc->max_lun; i++) { + msc->unit[i].prev_ready_state = USBH_FAIL; + msc->unit[i].state_changed = 0U; + } + } else { + if (USBH_NOT_SUPPORTED == status) { + msc->max_lun = 0U; + status = USBH_OK; + } + } + break; + + case MSC_REQ_ERROR: + /* issue clear feature request */ + if (USBH_OK == usbh_clrfeature(puhost, 0x00U, puhost->control.pipe_out_num)) { + msc->req_state = msc->prev_req_state; + } + break; + + default: + break; + } + + return status; +} + +/*! + \brief MSC state machine handler + \param[in] puhost: pointer to usb host + \param[out] none + \retval operation status +*/ +static usbh_status usbh_msc_handle (usbh_host *puhost) +{ + usbh_status status = USBH_BUSY; + uint8_t scsi_status = USBH_BUSY; + uint8_t ready_status = USBH_BUSY; + usbh_msc_handler *msc = (usbh_msc_handler *)puhost->active_class->class_data; + + + switch (msc->state) { + case MSC_INIT: + if (msc->cur_lun < msc->max_lun) { + msc->unit[msc->cur_lun].error = MSC_NOT_READY; + + switch (msc->unit[msc->cur_lun].state) { + case MSC_INIT: + msc->unit[msc->cur_lun].state = MSC_READ_INQUIRY; + msc->timer = puhost->control.timer; + break; + + case MSC_READ_INQUIRY: + scsi_status = usbh_msc_scsi_inquiry(puhost, msc->cur_lun, &msc->unit[msc->cur_lun].inquiry); + + if (USBH_OK == scsi_status) { + msc->unit[msc->cur_lun].state = MSC_TEST_UNIT_READY; + } else if (scsi_status == USBH_FAIL) { + msc->unit[msc->cur_lun].state = MSC_REQUEST_SENSE; + } else { + if (scsi_status == USBH_UNRECOVERED_ERROR) { + msc->unit[msc->cur_lun].state = MSC_IDLE; + msc->unit[msc->cur_lun].error = MSC_ERROR; + } + } + break; + + case MSC_TEST_UNIT_READY: + /* issue SCSI command TestUnitReady */ + ready_status = usbh_msc_test_unitready(puhost, msc->cur_lun); + + if (USBH_OK == ready_status) { + if (USBH_OK != msc->unit[msc->cur_lun].prev_ready_state) { + msc->unit[msc->cur_lun].state_changed = 1U; + } else { + msc->unit[msc->cur_lun].state_changed = 0U; + } + + msc->unit[msc->cur_lun].state = MSC_READ_CAPACITY10; + msc->unit[msc->cur_lun].error = MSC_OK; + msc->unit[msc->cur_lun].prev_ready_state = USBH_OK; + } else if (USBH_FAIL == ready_status) { + if (USBH_FAIL != msc->unit[msc->cur_lun].prev_ready_state) { + msc->unit[msc->cur_lun].state_changed = 1U; + } else { + msc->unit[msc->cur_lun].state_changed = 0U; + } + + msc->unit[msc->cur_lun].state = MSC_REQUEST_SENSE; + msc->unit[msc->cur_lun].error = MSC_NOT_READY; + msc->unit[msc->cur_lun].prev_ready_state = USBH_FAIL; + } else { + if (USBH_UNRECOVERED_ERROR == ready_status) { + msc->unit[msc->cur_lun].state = MSC_IDLE; + msc->unit[msc->cur_lun].error = MSC_ERROR; + } + } + break; + + case MSC_READ_CAPACITY10: + /* issue READ_CAPACITY10 SCSI command */ + scsi_status = usbh_msc_read_capacity10(puhost, msc->cur_lun, &msc->unit[msc->cur_lun].capacity); + + if (USBH_OK == scsi_status) { + if (1U == msc->unit[msc->cur_lun].state_changed) { + } + msc->unit[msc->cur_lun].state = MSC_IDLE; + msc->unit[msc->cur_lun].error = MSC_OK; + msc->cur_lun ++; + } else if (USBH_FAIL == scsi_status) { + msc->unit[msc->cur_lun].state = MSC_REQUEST_SENSE; + } else { + if (USBH_UNRECOVERED_ERROR == scsi_status) { + msc->unit[msc->cur_lun].state = MSC_IDLE; + msc->unit[msc->cur_lun].error = MSC_ERROR; + } + } + break; + + case MSC_REQUEST_SENSE: + /* issue RequestSense SCSI command for recovering error code */ + scsi_status = usbh_msc_request_sense (puhost, msc->cur_lun, &msc->unit[msc->cur_lun].sense); + if (USBH_OK == scsi_status) { + if ((msc->unit[msc->cur_lun].sense.SenseKey == UNIT_ATTENTION) || (msc->unit[msc->cur_lun].sense.SenseKey == NOT_READY)) { + if (((puhost->control.timer > msc->timer) && ((puhost->control.timer - msc->timer) < 10000U)) \ + || ((puhost->control.timer < msc->timer) && ((puhost->control.timer + 0x3FFFU - msc->timer) < 10000U))) { + msc->unit[msc->cur_lun].state = MSC_TEST_UNIT_READY; + break; + } + } + + msc->unit[msc->cur_lun].state = MSC_IDLE; + msc->cur_lun++; + } else if (USBH_FAIL == scsi_status) { + msc->unit[msc->cur_lun].state = MSC_UNRECOVERED_ERROR; + } else { + if (MSC_UNRECOVERED_ERROR == scsi_status) { + msc->unit[msc->cur_lun].state = MSC_IDLE; + msc->unit[msc->cur_lun].error = MSC_ERROR; + } + } + break; + + case MSC_UNRECOVERED_ERROR: + msc->cur_lun ++; + break; + + default: + break; + } + } else { + msc->cur_lun = 0U; + msc->state = MSC_IDLE; + } + break; + + case MSC_IDLE: + puhost->usr_cb->dev_user_app(); + status = USBH_OK; + break; + + default: + break; + } + + return status; +} + +/*! + \brief get max lun of the mass storage device + \param[in] puhost: pointer to USB host + \param[in] maxlun: pointer to max lun + \param[out] none + \retval operation status +*/ +static usbh_status usbh_msc_maxlun_get (usbh_host *puhost, uint8_t *maxlun) +{ + usbh_status status = USBH_BUSY; + + if (puhost->control.ctl_state == CTL_IDLE) { + puhost->control.setup.req = (usb_req) { + .bmRequestType = USB_TRX_IN | USB_REQTYPE_CLASS | USB_RECPTYPE_ITF, + .bRequest = BBB_GET_MAX_LUN, + .wValue = 0U, + .wIndex = 0U, + .wLength = 1U + }; + + usbh_ctlstate_config (puhost, maxlun, 1U); + } + + status = usbh_ctl_handler (puhost); + + return status; +} + +/*! + \brief get max lun of the mass storage device + \param[in] puhost: pointer to USB host + \param[in] lun: logic unit number + \param[out] none + \retval operation status +*/ +static usbh_status usbh_msc_rdwr_process(usbh_host *puhost, uint8_t lun) +{ + usbh_status error = USBH_BUSY; + usbh_status scsi_status = USBH_BUSY; + usbh_msc_handler *msc = (usbh_msc_handler *)puhost->active_class->class_data; + + /* switch msc req state machine */ + switch (msc->unit[lun].state) { + case MSC_READ: + scsi_status = usbh_msc_read10(puhost, lun, NULL, 0U, 0U); + + if (USBH_OK == scsi_status) { + msc->unit[lun].state = MSC_IDLE; + error = USBH_OK; + } else if (USBH_FAIL == scsi_status) { + msc->unit[lun].state = MSC_REQUEST_SENSE; + } else { + if (USBH_UNRECOVERED_ERROR == scsi_status) { + msc->unit[lun].state = MSC_UNRECOVERED_ERROR; + error = USBH_FAIL; + } + } + break; + + case MSC_WRITE: + scsi_status = usbh_msc_write10(puhost, lun, NULL, 0U, 0U); + + if (USBH_OK == scsi_status) { + msc->unit[lun].state = MSC_IDLE; + error = USBH_OK; + } else if(USBH_FAIL == scsi_status) { + msc->unit[lun].state = MSC_REQUEST_SENSE; + } else { + if (USBH_UNRECOVERED_ERROR == scsi_status) { + msc->unit[lun].state = MSC_UNRECOVERED_ERROR; + error = USBH_FAIL; + } + } + break; + + case MSC_REQUEST_SENSE: + scsi_status = usbh_msc_request_sense (puhost, lun, &msc->unit[lun].sense); + + if (USBH_OK == scsi_status) { + msc->unit[lun].state = MSC_IDLE; + msc->unit[lun].error = MSC_ERROR; + + error = USBH_FAIL; + } + + if (USBH_FAIL == scsi_status) { + } else { + if (USBH_UNRECOVERED_ERROR == scsi_status) { + msc->unit[lun].state = MSC_UNRECOVERED_ERROR; + error = USBH_FAIL; + } + } + break; + + default: + break; + } + + return error; +} + +/*! + \brief get lun information + \param[in] puhost: pointer to USB host + \param[in] lun: logic unit number + \param[in] info: pointer to lun information + \param[out] none + \retval operation status +*/ +usbh_status usbh_msc_lun_info_get (usbh_host *puhost, uint8_t lun, msc_lun *info) +{ + usbh_msc_handler *msc = (usbh_msc_handler *)puhost->active_class->class_data; + + if (HOST_CLASS_HANDLER == puhost->cur_state) { + memcpy(info, &msc->unit[lun], sizeof(msc_lun)); + + return USBH_OK; + } else { + return USBH_FAIL; + } +} + +/*! + \brief handle msc read operation + \param[in] puhost: pointer to USB host + \param[in] lun: logic unit number + \param[in] address: data address + \param[in] pbuf: pointer to data buffer + \param[in] length: buffer length + \param[out] none + \retval operation status +*/ +usbh_status usbh_msc_read (usbh_host *puhost, + uint8_t lun, + uint32_t address, + uint8_t *pbuf, + uint32_t length) +{ + uint32_t timeout = 0U; + usbh_msc_handler *msc = (usbh_msc_handler *)puhost->active_class->class_data; + usb_core_driver *pudev = (usb_core_driver *)puhost->data; + + if ((0U == pudev->host.connect_status) || + (HOST_CLASS_HANDLER != puhost->cur_state) || + (MSC_IDLE != msc->unit[lun].state)) { + return USBH_FAIL; + } + + msc->state = MSC_READ; + msc->unit[lun].state = MSC_READ; + msc->rw_lun = lun; + + usbh_msc_read10(puhost, lun, pbuf, address, length); + + timeout = puhost->control.timer; + + while (USBH_BUSY == usbh_msc_rdwr_process(puhost, lun)) { + if (((puhost->control.timer > timeout) && ((puhost->control.timer - timeout) > (1000U * length))) \ + || ((puhost->control.timer < timeout) && ((puhost->control.timer + 0x3FFFU - timeout) > (1000U * length))) \ + || (0U == pudev->host.connect_status)) { + msc->state = MSC_IDLE; + return USBH_FAIL; + } + } + + msc->state = MSC_IDLE; + + return USBH_OK; +} + +/*! + \brief handle msc write operation + \param[in] puhost: pointer to USB host + \param[in] lun: logic unit number + \param[in] address: data address + \param[in] pbuf: pointer to data buffer + \param[in] length: buffer length + \param[out] none + \retval operation status +*/ +usbh_status usbh_msc_write (usbh_host *puhost, + uint8_t lun, + uint32_t address, + uint8_t *pbuf, + uint32_t length) +{ + uint32_t timeout = 0U; + usb_core_driver *pudev = (usb_core_driver *)puhost->data; + usbh_msc_handler *msc = (usbh_msc_handler *)puhost->active_class->class_data; + + if ((0U == pudev->host.connect_status) || + (HOST_CLASS_HANDLER != puhost->cur_state) || + (MSC_IDLE != msc->unit[lun].state)) { + return USBH_FAIL; + } + + msc->state = MSC_WRITE; + msc->unit[lun].state = MSC_WRITE; + msc->rw_lun = lun; + + usbh_msc_write10(puhost, lun, pbuf, address, length); + + timeout = puhost->control.timer; + + while (USBH_BUSY == usbh_msc_rdwr_process(puhost, lun)) { + if (((puhost->control.timer > timeout) && ((puhost->control.timer - timeout) > (1000U * length))) \ + || ((puhost->control.timer < timeout) && ((puhost->control.timer + 0x3FFFU - timeout) > (1000U * length))) \ + || (0U == pudev->host.connect_status)) { + msc->state = MSC_IDLE; + return USBH_FAIL; + } + } + + msc->state = MSC_IDLE; + + return USBH_OK; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Source/usbh_msc_fatfs.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Source/usbh_msc_fatfs.c new file mode 100644 index 0000000000..b61a068699 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Source/usbh_msc_fatfs.c @@ -0,0 +1,233 @@ +/*! + \file usbh_msc_fatfs.c + \brief USB MSC host FATFS related functions + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "usb_conf.h" +#include "diskio.h" +#include "usbh_msc_core.h" + +static volatile DSTATUS state = STA_NOINIT; /* disk status */ + +extern usbh_host usb_host; + +/*! + \brief initialize the disk drive + \param[in] drv: physical drive number (0) + \param[out] none + \retval operation status +*/ +DSTATUS disk_initialize (BYTE drv) +{ + usb_core_driver *pudev = (usb_core_driver *)usb_host.data; + + if (pudev->host.connect_status) { + state &= ~STA_NOINIT; + } + + return state; +} + +/*! + \brief get disk status + \param[in] drv: physical drive number (0) + \param[out] none + \retval operation status +*/ +DSTATUS disk_status (BYTE drv) +{ + if (drv) { + return STA_NOINIT; /* supports only single drive */ + } + + return state; +} + +/*! + \brief read sectors + \param[in] drv: physical drive number (0) + \param[in] buff: pointer to the data buffer to store read data + \param[in] sector: start sector number (LBA) + \param[in] count: sector count (1..255) + \param[out] none + \retval operation status +*/ +DRESULT disk_read (BYTE drv, BYTE *buff, DWORD sector, UINT count) +{ + BYTE status = USBH_OK; + usb_core_driver *pudev = (usb_core_driver *)usb_host.data; + + if (drv || (!count)) { + return RES_PARERR; + } + + if (state & STA_NOINIT) { + return RES_NOTRDY; + } + + if (pudev->host.connect_status) { + do { + status = usbh_msc_read (&usb_host, drv, sector, buff, count); + + if (!pudev->host.connect_status) { + return RES_ERROR; + } + } while(status == USBH_BUSY); + } + + if (status == USBH_OK) { + return RES_OK; + } + + return RES_ERROR; +} + +#if _READONLY == 0U + +/*! + \brief write sectors + \param[in] drv: physical drive number (0) + \param[in] buff: pointer to the data buffer to store read data + \param[in] sector: start sector number (LBA) + \param[in] count: sector count (1..255) + \param[out] none + \retval operation status +*/ +DRESULT disk_write (BYTE drv, const BYTE *buff, DWORD sector, UINT count) +{ + BYTE status = USBH_OK; + usb_core_driver *pudev = (usb_core_driver *)usb_host.data; + + if ((!count) || drv) { + return RES_PARERR; + } + + if (state & STA_NOINIT) { + return RES_NOTRDY; + } + + if (state & STA_PROTECT) { + return RES_WRPRT; + } + + if (pudev->host.connect_status) { + do { + status = usbh_msc_write (&usb_host, drv, sector, (BYTE*)buff, count); + + if (!pudev->host.connect_status) { + return RES_ERROR; + } + } while(status == USBH_BUSY); + } + + if (status == USBH_OK) { + return RES_OK; + } + + return RES_ERROR; +} + +#endif /* _READONLY == 0 */ + +/*! + \brief I/O control function + \param[in] drv: physical drive number (0) + \param[in] ctrl: control code + \param[in] buff: pointer to the data buffer to store read data + \param[out] none + \retval operation status +*/ +DRESULT disk_ioctl (BYTE drv, BYTE ctrl, void *buff) +{ + DRESULT res = RES_OK; + msc_lun info; + + if (drv) { + return RES_PARERR; + } + + res = RES_ERROR; + + if (state & STA_NOINIT) { + return RES_NOTRDY; + } + + switch (ctrl) { + /* make sure that no pending write process */ + case CTRL_SYNC: + res = RES_OK; + break; + + /* get number of sectors on the disk (dword) */ + case GET_SECTOR_COUNT: + if (USBH_OK == usbh_msc_lun_info_get(&usb_host, drv, &info)) { + *(DWORD*)buff = (DWORD)info.capacity.block_nbr; + res = RES_OK; + } + break; + + /* get r/w sector size (word) */ + case GET_SECTOR_SIZE: + if (USBH_OK == usbh_msc_lun_info_get(&usb_host, drv, &info)) { + *(WORD*)buff = (DWORD)info.capacity.block_size; + res = RES_OK; + } + break; + + /* get erase block size in unit of sector (dword) */ + case GET_BLOCK_SIZE: + *(DWORD*)buff = 512; + break; + + default: + res = RES_PARERR; + break; + } + + return res; +} + +/*! + \brief get fat time + \param[in] none + \param[out] none + \retval time value +*/ +DWORD get_fattime(void) { + + return ((DWORD)(2019U - 1980U) << 25U) /* Year 2019 */ + | ((DWORD)1U << 21U) /* Month 1 */ + | ((DWORD)1U << 16U) /* Mday 1 */ + | ((DWORD)0U << 11U) /* Hour 0 */ + | ((DWORD)0U << 5U) /* Min 0 */ + | ((DWORD)0U >> 1U); /* Sec 0 */ +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Source/usbh_msc_scsi.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Source/usbh_msc_scsi.c new file mode 100644 index 0000000000..8ffd26cd6c --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/class/msc/Source/usbh_msc_scsi.c @@ -0,0 +1,397 @@ +/*! + \file usbh_msc_scsi.c + \brief USB MSC SCSI commands implementation + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "usbh_msc_core.h" +#include "usbh_msc_scsi.h" +#include "usbh_msc_bbb.h" +#include + +/*! + \brief send 'Inquiry' command to the device + \param[in] puhost: pointer to usb host handler + \param[in] lun: logic unit number + \param[in] inquiry: pointer to the inquiry structure + \param[out] none + \retval operation status +*/ +usbh_status usbh_msc_scsi_inquiry (usbh_host *puhost, uint8_t lun, scsi_std_inquiry_data *inquiry) +{ + usbh_status error = USBH_FAIL; + usbh_msc_handler *msc = (usbh_msc_handler *)puhost->active_class->class_data; + + switch (msc->bot.cmd_state) { + case BOT_CMD_SEND: + /* prepare the cbw and relevant field*/ + msc->bot.cbw.field.dCBWDataTransferLength = STANDARD_INQUIRY_DATA_LEN; + msc->bot.cbw.field.bmCBWFlags = USB_TRX_IN; + msc->bot.cbw.field.bCBWCBLength = CBW_LENGTH; + + memset(msc->bot.cbw.field.CBWCB, 0U, CBW_LENGTH); + + msc->bot.cbw.field.CBWCB[0] = SCSI_INQUIRY; + msc->bot.cbw.field.CBWCB[1] = (lun << 5U); + msc->bot.cbw.field.CBWCB[4] = 0x24U; + + msc->bot.state = BOT_SEND_CBW; + msc->bot.cmd_state = BOT_CMD_WAIT; + msc->bot.pbuf = (uint8_t *)(void *)msc->bot.data; + error = USBH_BUSY; + break; + + case BOT_CMD_WAIT: + error = usbh_msc_bot_process(puhost, lun); + + if (USBH_OK == error) { + memset(inquiry, 0U, sizeof(scsi_std_inquiry_data)); + + /* assign inquiry data */ + inquiry->device_type = msc->bot.pbuf[0] & 0x1FU; + inquiry->peripheral_qualifier = msc->bot.pbuf[0] >> 5U; + + if (0x80U == ((uint32_t)msc->bot.pbuf[1] & 0x80U)) { + inquiry->removable_media = 1U; + } else { + inquiry->removable_media = 0U; + } + + memcpy (inquiry->vendor_id, &msc->bot.pbuf[8], 8U); + memcpy (inquiry->product_id, &msc->bot.pbuf[16], 16U); + memcpy (inquiry->revision_id, &msc->bot.pbuf[32], 4U); + } + break; + + default: + break; + } + + return error; +} + +/*! + \brief send 'Test unit ready' command to the device + \param[in] puhost: pointer to USB host handler + \param[in] lun: logic unit number + \param[out] none + \retval operation status +*/ +usbh_status usbh_msc_test_unitready (usbh_host *puhost, uint8_t lun) +{ + usbh_status status = USBH_FAIL; + usbh_msc_handler *msc = (usbh_msc_handler *)puhost->active_class->class_data; + + + switch (msc->bot.cmd_state) { + case BOT_CMD_SEND: + /* prepare the CBW and relevant field */ + msc->bot.cbw.field.dCBWDataTransferLength = CBW_LENGTH_TEST_UNIT_READY; + msc->bot.cbw.field.bmCBWFlags = USB_TRX_OUT; + msc->bot.cbw.field.bCBWCBLength = CBW_LENGTH; + + memset(msc->bot.cbw.field.CBWCB, 0U, CBW_CB_LENGTH); + + msc->bot.cbw.field.CBWCB[0] = SCSI_TEST_UNIT_READY; + msc->bot.state = BOT_SEND_CBW; + msc->bot.cmd_state = BOT_CMD_WAIT; + + status = USBH_BUSY; + break; + + case BOT_CMD_WAIT: + status = usbh_msc_bot_process(puhost, lun); + break; + + default: + break; + } + + return status; +} + +/*! + \brief send the read capacity command to the device + \param[in] puhost: pointer to usb host handler + \param[in] lun: logic unit number + \param[in] capacity: pointer to scsi capacity + \param[out] none + \retval operation status +*/ +usbh_status usbh_msc_read_capacity10 (usbh_host *puhost, uint8_t lun, scsi_capacity *capacity) +{ + usbh_status status = USBH_FAIL; + usbh_msc_handler *msc = (usbh_msc_handler *)puhost->active_class->class_data; + + switch (msc->bot.cmd_state) { + case BOT_CMD_SEND: + /* prepare the CBW and relevant field */ + msc->bot.cbw.field.dCBWDataTransferLength = READ_CAPACITY10_DATA_LEN; + msc->bot.cbw.field.bmCBWFlags = USB_TRX_IN; + msc->bot.cbw.field.bCBWCBLength = CBW_LENGTH; + + memset(msc->bot.cbw.field.CBWCB, 0U, CBW_CB_LENGTH); + + msc->bot.cbw.field.CBWCB[0] = SCSI_READ_CAPACITY10; + msc->bot.state = BOT_SEND_CBW; + msc->bot.cmd_state = BOT_CMD_WAIT; + msc->bot.pbuf = (uint8_t *)(void *)msc->bot.data; + + status = USBH_BUSY; + break; + + case BOT_CMD_WAIT: + status = usbh_msc_bot_process(puhost, lun); + + if (USBH_OK == status) { + capacity->block_nbr = msc->bot.pbuf[3] | \ + ((uint32_t)msc->bot.pbuf[2] << 8U) | \ + ((uint32_t)msc->bot.pbuf[1] << 16U) | \ + ((uint32_t)msc->bot.pbuf[0] << 24U); + + capacity->block_size = (uint16_t)(msc->bot.pbuf[7] | ((uint32_t)msc->bot.pbuf[6] << 8U)); + } + break; + + default: + break; + } + + return status; +} + +/*! + \brief send the mode sense6 command to the device + \param[in] puhost: pointer to usb host handler + \param[in] lun: logic unit number + \param[out] none + \retval operation status +*/ +usbh_status usbh_msc_mode_sense6 (usbh_host *puhost, uint8_t lun) +{ + usbh_status status = USBH_FAIL; + usbh_msc_handler *msc = (usbh_msc_handler *)puhost->active_class->class_data; + + switch (msc->bot.cmd_state) { + case BOT_CMD_SEND: + /* prepare the CBW and relevant field */ + msc->bot.cbw.field.dCBWDataTransferLength = XFER_LEN_MODE_SENSE6; + msc->bot.cbw.field.bmCBWFlags = USB_TRX_IN; + msc->bot.cbw.field.bCBWCBLength = CBW_LENGTH; + + memset(msc->bot.cbw.field.CBWCB, 0U, CBW_CB_LENGTH); + + msc->bot.cbw.field.CBWCB[0] = SCSI_MODE_SENSE6; + msc->bot.cbw.field.CBWCB[2] = MODE_SENSE_PAGE_CONTROL_FIELD | MODE_SENSE_PAGE_CODE; + msc->bot.cbw.field.CBWCB[4] = XFER_LEN_MODE_SENSE6; + msc->bot.state = BOT_SEND_CBW; + msc->bot.cmd_state = BOT_CMD_WAIT; + msc->bot.pbuf = (uint8_t *)(void *)msc->bot.data; + + status = USBH_BUSY; + break; + + case BOT_CMD_WAIT: + status = usbh_msc_bot_process(puhost, lun); + + if (USBH_OK == status) { + if (msc->bot.data[2] & MASK_MODE_SENSE_WRITE_PROTECT) { + + } else { + + } + } + break; + + default: + break; + } + + return status; +} + +/*! + \brief send the Request Sense command to the device + \param[in] puhost: pointer to usb host handler + \param[in] lun: logic unit number + \param[in] sense_data: pointer to sense data + \param[out] none + \retval operation status +*/ +usbh_status usbh_msc_request_sense (usbh_host *puhost, uint8_t lun, msc_scsi_sense *sense_data) +{ + usbh_status status = USBH_FAIL; + usbh_msc_handler *msc = (usbh_msc_handler *)puhost->active_class->class_data; + + switch (msc->bot.cmd_state) { + case BOT_CMD_SEND: + /* prepare the cbw and relevant field */ + msc->bot.cbw.field.dCBWDataTransferLength = ALLOCATION_LENGTH_REQUEST_SENSE; + msc->bot.cbw.field.bmCBWFlags = USB_TRX_IN; + msc->bot.cbw.field.bCBWCBLength = CBW_LENGTH; + + memset(msc->bot.cbw.field.CBWCB, 0U, CBW_CB_LENGTH); + + msc->bot.cbw.field.CBWCB[0] = SCSI_REQUEST_SENSE; + msc->bot.cbw.field.CBWCB[1] = (lun << 5U); + msc->bot.cbw.field.CBWCB[4] = ALLOCATION_LENGTH_REQUEST_SENSE; + + msc->bot.state = BOT_SEND_CBW; + msc->bot.cmd_state = BOT_CMD_WAIT; + msc->bot.pbuf = (uint8_t *)(void *)msc->bot.data; + + status = USBH_BUSY; + break; + + case BOT_CMD_WAIT: + status = usbh_msc_bot_process(puhost, lun); + + if (status == USBH_OK) { + /* get sense data */ + sense_data->SenseKey = msc->bot.pbuf[2] & 0x0FU; + sense_data->ASC = msc->bot.pbuf[12]; + sense_data->ASCQ = msc->bot.pbuf[13]; + } + break; + + default: + break; + } + + return status; +} + +/*! + \brief send the write10 command to the device + \param[in] puhost: pointer to usb host handler + \param[in] lun: logic unit number + \param[in] data_buf: data buffer contains the data to write + \param[in] addr: address to which the data will be written + \param[in] sector_num: number of sector to be written + \param[out] none + \retval operation status +*/ +usbh_status usbh_msc_write10 (usbh_host *puhost, uint8_t lun, uint8_t *data_buf, uint32_t addr, uint32_t sector_num) +{ + usbh_status status = USBH_FAIL; + usbh_msc_handler *msc = (usbh_msc_handler *)puhost->active_class->class_data; + + switch (msc->bot.cmd_state) { + case BOT_CMD_SEND: + msc->bot.cbw.field.dCBWDataTransferLength = sector_num * msc->unit[lun].capacity.block_size; + msc->bot.cbw.field.bmCBWFlags = USB_TRX_OUT; + msc->bot.cbw.field.bCBWCBLength = CBW_LENGTH; + + memset(msc->bot.cbw.field.CBWCB, 0U, CBW_CB_LENGTH); + + msc->bot.cbw.field.CBWCB[0] = SCSI_WRITE10; + + /* logical block address */ + msc->bot.cbw.field.CBWCB[2] = (((uint8_t*)&addr)[3]); + msc->bot.cbw.field.CBWCB[3] = (((uint8_t*)&addr)[2]); + msc->bot.cbw.field.CBWCB[4] = (((uint8_t*)&addr)[1]); + msc->bot.cbw.field.CBWCB[5] = (((uint8_t*)&addr)[0]); + + /* transfer length */ + msc->bot.cbw.field.CBWCB[7] = (((uint8_t *)§or_num)[1]); + msc->bot.cbw.field.CBWCB[8] = (((uint8_t *)§or_num)[0]); + + msc->bot.state = BOT_SEND_CBW; + msc->bot.cmd_state = BOT_CMD_WAIT; + msc->bot.pbuf = data_buf; + + status = USBH_BUSY; + break; + + case BOT_CMD_WAIT: + status = usbh_msc_bot_process(puhost, lun); + break; + + default: + break; + } + + return status; +} + +/*! + \brief send the read10 command to the device + \param[in] puhost: pointer to usb host handler + \param[in] lun: logic unit number + \param[in] data_buf: data buffer contains the data to write + \param[in] addr: address to which the data will be read + \param[in] sector_num: number of sector to be read + \param[out] none + \retval operation status +*/ +usbh_status usbh_msc_read10 (usbh_host *puhost, uint8_t lun, uint8_t *data_buf, uint32_t addr, uint32_t sector_num) +{ + usbh_status status = USBH_FAIL; + usbh_msc_handler *msc = (usbh_msc_handler *)puhost->active_class->class_data; + + switch (msc->bot.cmd_state) { + case BOT_CMD_SEND: + /* prepare the CBW and relevant field */ + msc->bot.cbw.field.dCBWDataTransferLength = sector_num * msc->unit[lun].capacity.block_size; + msc->bot.cbw.field.bmCBWFlags = USB_TRX_IN; + msc->bot.cbw.field.bCBWCBLength = CBW_LENGTH; + + memset(msc->bot.cbw.field.CBWCB, 0U, CBW_CB_LENGTH); + + msc->bot.cbw.field.CBWCB[0] = SCSI_READ10; + + /* logical block address */ + msc->bot.cbw.field.CBWCB[2] = (((uint8_t*)&addr)[3]); + msc->bot.cbw.field.CBWCB[3] = (((uint8_t*)&addr)[2]); + msc->bot.cbw.field.CBWCB[4] = (((uint8_t*)&addr)[1]); + msc->bot.cbw.field.CBWCB[5] = (((uint8_t*)&addr)[0]); + + /* transfer length */ + msc->bot.cbw.field.CBWCB[7] = (((uint8_t *)§or_num)[1]); + msc->bot.cbw.field.CBWCB[8] = (((uint8_t *)§or_num)[0]); + + msc->bot.state = BOT_SEND_CBW; + msc->bot.cmd_state = BOT_CMD_WAIT; + msc->bot.pbuf = data_buf; + + status = USBH_BUSY; + break; + + case BOT_CMD_WAIT: + status = usbh_msc_bot_process(puhost, lun); + break; + + default: + break; + } + + return status; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Include/usbh_core.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Include/usbh_core.h new file mode 100644 index 0000000000..57e15de592 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Include/usbh_core.h @@ -0,0 +1,274 @@ +/*! + \file usbh_core.h + \brief USB host core state machine header file + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USBH_CORE_H +#define __USBH_CORE_H + +#include "usbh_conf.h" +#include "drv_usb_host.h" + +#define MSC_CLASS 0x08U +#define HID_CLASS 0x03U +#define MSC_PROTOCOL 0x50U +#define CBI_PROTOCOL 0x01U + +#define USBH_MAX_ERROR_COUNT 3U + +#define USBH_DEV_ADDR_DEFAULT 0U +#define USBH_DEV_ADDR 1U + +typedef enum +{ + USBH_OK = 0U, + USBH_BUSY, + USBH_FAIL, + USBH_NOT_SUPPORTED, + USBH_UNRECOVERED_ERROR, + USBH_SPEED_UNKNOWN_ERROR, + USBH_APPLY_DEINIT +} usbh_status; + +/* USB host global operation state */ +typedef enum +{ + HOST_DEFAULT = 0U, + HOST_DETECT_DEV_SPEED, + HOST_DEV_ATTACHED, + HOST_DEV_DETACHED, + HOST_ENUM, + HOST_SET_WAKEUP_FEATURE, + HOST_CHECK_CLASS, + HOST_CLASS_ENUM, + HOST_CLASS_HANDLER, + HOST_USER_INPUT, + HOST_SUSPENDED, + HOST_WAKEUP, + HOST_ERROR +} usb_host_state; + +/* USB host enumeration state */ +typedef enum +{ + ENUM_DEFAULT = 0U, + ENUM_GET_DEV_DESC, + ENUM_SET_ADDR, + ENUM_GET_CFG_DESC, + ENUM_GET_CFG_DESC_SET, + ENUM_GET_STR_DESC, +#ifdef USB_MTP + ENUM_GET_MTP_STR, +#endif + ENUM_SET_CONFIGURATION, + ENUM_DEV_CONFIGURED +} usbh_enum_state; + +/* USB host control transfer state */ +typedef enum +{ + CTL_IDLE = 0U, + CTL_SETUP, + CTL_SETUP_WAIT, + CTL_DATA_IN, + CTL_DATA_IN_WAIT, + CTL_DATA_OUT, + CTL_DATA_OUT_WAIT, + CTL_STATUS_IN, + CTL_STATUS_IN_WAIT, + CTL_STATUS_OUT, + CTL_STATUS_OUT_WAIT, + CTL_ERROR, + CTL_FINISH +} usbh_ctl_state; + +/* user action state */ +typedef enum +{ + USBH_USER_NO_RESP = 0U, + USBH_USER_RESP_OK = 1U, +} usbh_user_status; + +typedef enum +{ + USBH_PORT_EVENT = 1U, + USBH_URB_EVENT, + USBH_CONTROL_EVENT, + USBH_CLASS_EVENT, + USBH_STATE_CHANGED_EVENT, +}usbh_os_event; + +/* control transfer information */ +typedef struct _usbh_control +{ + uint8_t pipe_in_num; + uint8_t pipe_out_num; + uint8_t max_len; + uint8_t error_count; + + uint8_t *buf; + uint16_t ctl_len; + uint16_t timer; + + usb_setup setup; + usbh_ctl_state ctl_state; +} usbh_control; + +/* USB interface descriptor set */ +typedef struct _usb_desc_itf_set +{ + usb_desc_itf itf_desc; + usb_desc_ep ep_desc[USBH_MAX_EP_NUM]; +} usb_desc_itf_set; + +/* USB configure descriptor set */ +typedef struct _usb_desc_cfg_set +{ + usb_desc_config cfg_desc; + usb_desc_itf_set itf_desc_set[USBH_MAX_INTERFACES_NUM][USBH_MAX_ALT_SETTING]; +} usb_desc_cfg_set; + +/* USB device property */ +typedef struct +{ + uint8_t data[USBH_DATA_BUF_MAX_LEN]; /* if DMA is used, the data array must be located in the first position */ + uint8_t cur_itf; + uint8_t addr; + + uint32_t speed; + + usb_desc_dev dev_desc; + usb_desc_cfg_set cfg_desc_set; + +#if (USBH_KEEP_CFG_DESCRIPTOR == 1U) + uint8_t cfgdesc_rawdata[USBH_CFGSET_MAX_LEN]; +#endif /* (USBH_KEEP_CFG_DESCRIPTOR == 1U) */ +} usb_dev_prop; + +struct _usbh_host; + +/* device class callbacks */ +typedef struct +{ + uint8_t class_code; /*!< USB class type */ + + usbh_status (*class_init) (struct _usbh_host *phost); + void (*class_deinit) (struct _usbh_host *phost); + usbh_status (*class_requests) (struct _usbh_host *phost); + usbh_status (*class_machine) (struct _usbh_host *phost); + usbh_status (*class_sof) (struct _usbh_host *puhost); + + void *class_data; +} usbh_class; + +/* user callbacks */ +typedef struct +{ + void (*dev_init) (void); + void (*dev_deinit) (void); + void (*dev_attach) (void); + void (*dev_reset) (void); + void (*dev_detach) (void); + void (*dev_over_currented) (void); + void (*dev_speed_detected) (uint32_t dev_speed); + void (*dev_devdesc_assigned) (void *dev_desc); + void (*dev_address_set) (void); + + void (*dev_cfgdesc_assigned) (usb_desc_config *cfg_desc, + usb_desc_itf *itf_desc, + usb_desc_ep *ep_desc); + + void (*dev_mfc_str) (void *mfc_str); + void (*dev_prod_str) (void *prod_str); + void (*dev_seral_str) (void *serial_str); + void (*dev_enumerated) (void); + usbh_user_status (*dev_user_input) (void); + int (*dev_user_app) (void); + void (*dev_not_supported) (void); + void (*dev_error) (void); +} usbh_user_cb; + +/* host information */ +typedef struct _usbh_host +{ + usb_host_state cur_state; /*!< host state machine value */ + usb_host_state backup_state; /*!< backup of previous state machine value */ + usbh_enum_state enum_state; /*!< enumeration state machine */ + usbh_control control; /*!< USB host control state machine */ + usb_dev_prop dev_prop; /*!< USB device property */ + + usbh_class *uclass[USBH_MAX_SUPPORTED_CLASS]; /*!< USB host supported class */ + usbh_class *active_class; /*!< USB active class */ + usbh_user_cb *usr_cb; /*!< USB user callback */ + + uint8_t class_num; /*!< USB class number */ + + void *data; /*!< used for... */ +} usbh_host; + +/*! + \brief get USB URB state + \param[in] pudev: pointer to USB core instance + \param[in] pp_num: pipe number + \param[out] none + \retval none +*/ +static inline usb_urb_state usbh_urbstate_get (usb_core_driver *pudev, uint8_t pp_num) +{ + return pudev->host.pipe[pp_num].urb_state; +} + +/*! + \brief get USB transfer data count + \param[in] pudev: pointer to USB core instance + \param[in] pp_num: pipe number + \param[out] none + \retval none +*/ +static inline uint32_t usbh_xfercount_get (usb_core_driver *pudev, uint8_t pp_num) +{ + return pudev->host.backup_xfercount[pp_num]; +} + +/* function declarations */ +/* USB host stack initializations */ +void usbh_init (usbh_host *puhost, usbh_user_cb *user_cb); +/* USB host register device class */ +usbh_status usbh_class_register (usbh_host *puhost, usbh_class *puclass); +/* de-initialize USB host */ +usbh_status usbh_deinit (usbh_host *puhost); +/* USB host core main state machine process */ +void usbh_core_task (usbh_host *puhost); +/* handle the error on USB host side */ +void usbh_error_handler (usbh_host *puhost, usbh_status err_type); + +#endif /* __USBH_CORE_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Include/usbh_enum.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Include/usbh_enum.h new file mode 100644 index 0000000000..b31e690fdc --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Include/usbh_enum.h @@ -0,0 +1,71 @@ +/*! + \file usbh_enum.h + \brief USB host mode USB enumeration header file + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USBH_ENUM_H +#define __USBH_ENUM_H + +#include "usb_conf.h" +#include "usbh_core.h" + +/* function declarations */ +/* configure USB control status parameters */ +void usbh_ctlstate_config (usbh_host *puhost, uint8_t *buf, uint16_t len); +/* get device descriptor from the USB device */ +usbh_status usbh_devdesc_get (usbh_host *puhost, uint8_t len); +/* get configuration descriptor from the USB device */ +usbh_status usbh_cfgdesc_get (usbh_host *puhost, uint16_t len); +/* get string descriptor from the USB device */ +usbh_status usbh_strdesc_get (usbh_host *puhost,uint8_t str_index, uint8_t *buf, uint16_t len); +/* set the address to the connected device */ +usbh_status usbh_setaddress (usbh_host *puhost, uint8_t dev_addr); +/* set the configuration value to the connected device */ +usbh_status usbh_setcfg (usbh_host *puhost, uint16_t config); +/* set the interface value to the connected device */ +usbh_status usbh_setinterface (usbh_host *puhost, uint8_t itf_num, uint8_t alter_setting); +/* set or enable a specific device feature */ +usbh_status usbh_setdevfeature (usbh_host *puhost, uint8_t feature_selector, uint16_t windex); +/* clear or disable a specific device feature */ +usbh_status usbh_clrdevfeature (usbh_host *puhost, uint8_t feature_selector, uint16_t windex); +/* clear or disable a specific feature */ +usbh_status usbh_clrfeature (usbh_host *puhost, uint8_t ep_addr, uint8_t pp_num); +/* get the next descriptor header */ +usb_desc_header *usbh_nextdesc_get (uint8_t *pbuf, uint16_t *ptr); +/* select an interface */ +usbh_status usbh_interface_select (usb_dev_prop *udev, uint8_t interface); +/* find the interface index for a specific class */ +uint8_t usbh_interface_find (usb_dev_prop *udev, uint8_t main_class, uint8_t sub_class, uint8_t protocol); +/* find the interface index for a specific class interface and alternate setting number */ +uint8_t usbh_interfaceindex_find (usb_dev_prop *udev, uint8_t interface_number, uint8_t alt_settings); + +#endif /* __USBH_ENUM_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Include/usbh_pipe.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Include/usbh_pipe.h new file mode 100644 index 0000000000..8c7593c9b8 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Include/usbh_pipe.h @@ -0,0 +1,100 @@ +/*! + \file usbh_pipe.h + \brief USB host mode pipe header file + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USBH_PIPE_H +#define __USBH_PIPE_H + +#include "usbh_core.h" + +#define HC_MAX 8U + +#define HC_OK 0x0000U +#define HC_USED 0x8000U +#define HC_ERROR 0xFFFFU +#define HC_USED_MASK 0x7FFFU + +/*! + \brief set toggle for a pipe + \param[in] pudev: pointer to USB core instance + \param[in] pp_num: pipe number + \param[in] toggle: toggle (0/1) + \param[out] none + \retval operation status +*/ +static inline void usbh_pipe_toggle_set (usb_core_driver *pudev, uint8_t pp_num, uint8_t toggle) +{ + if (pudev->host.pipe[pp_num].ep.dir) { + pudev->host.pipe[pp_num].data_toggle_in = toggle; + } else { + pudev->host.pipe[pp_num].data_toggle_out = toggle; + } +} + +/*! + \brief get toggle flag of pipe + \param[in] pudev: pointer to USB core instance + \param[in] pp_num: pipe number + \param[out] none + \retval operation status +*/ +static inline uint8_t usbh_pipe_toggle_get (usb_core_driver *pudev, uint8_t pp_num) +{ + if (pudev->host.pipe[pp_num].ep.dir) { + return pudev->host.pipe[pp_num].data_toggle_in; + } else { + return pudev->host.pipe[pp_num].data_toggle_out; + } +} + +/* function declarations */ +/* create a pipe */ +uint8_t usbh_pipe_create (usb_core_driver *pudev, + usb_dev_prop *udev, + uint8_t pp_num, + uint8_t ep_type, + uint16_t ep_mpl); +/* modify a pipe */ +uint8_t usbh_pipe_update (usb_core_driver *pudev, + uint8_t pp_num, + uint8_t dev_addr, + uint32_t dev_speed, + uint16_t ep_mpl); +/* allocate a new pipe */ +uint8_t usbh_pipe_allocate (usb_core_driver *pudev, uint8_t ep_addr); +/* free a pipe */ +uint8_t usbh_pipe_free (usb_core_driver *pudev, uint8_t pp_num); +/* delete all USB host pipe */ +uint8_t usbh_pipe_delete (usb_core_driver *pudev); + +#endif /* __USBH_PIPE_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Include/usbh_transc.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Include/usbh_transc.h new file mode 100644 index 0000000000..975f49d68b --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Include/usbh_transc.h @@ -0,0 +1,51 @@ +/*! + \file usbh_transc.h + \brief USB host mode transactions header file + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USBH_TRANSC_H +#define __USBH_TRANSC_H + +#include "usb_conf.h" +#include "usbh_core.h" + +/* function declarations */ +/* send the setup packet to the USB device */ +usbh_status usbh_ctlsetup_send (usb_core_driver *pudev, uint8_t *buf, uint8_t pp_num); +/* send a data packet to the USB device */ +usbh_status usbh_data_send (usb_core_driver *pudev, uint8_t *buf, uint8_t pp_num, uint16_t len); +/* receive a data packet from the USB device */ +usbh_status usbh_data_recev (usb_core_driver *pudev, uint8_t *buf, uint8_t pp_num, uint16_t len); +/* USB control transfer handler */ +usbh_status usbh_ctl_handler (usbh_host *puhost); + +#endif /* __USBH_TRANSC_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Source/usbh_core.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Source/usbh_core.c new file mode 100644 index 0000000000..249af9192d --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Source/usbh_core.c @@ -0,0 +1,650 @@ +/*! + \file usbh_core.c + \brief USB host core state machine driver + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "drv_usb_hw.h" +#include "usbh_pipe.h" +#include "usbh_enum.h" +#include "usbh_core.h" +#include "drv_usbh_int.h" +#include + +usb_core_driver usbh_core; + +/* local function prototypes ('static') */ +static uint8_t usbh_sof (usbh_host *puhost); +static uint8_t usbh_connect (usbh_host *puhost); +static uint8_t usbh_disconnect (usbh_host *puhost); +static uint8_t usbh_port_enabled (usbh_host *puhost); +static uint8_t usbh_port_disabled (usbh_host *puhost); +static usbh_status usbh_enum_task (usbh_host *puhost); + +#ifdef USB_FS_LOW_PWR_ENABLE +static void usb_hwp_suspend(usb_core_driver *pudev); +static void usb_hwp_resume(usb_core_driver *pudev); +#endif + +usbh_int_cb usbh_int_op = +{ + usbh_connect, + usbh_disconnect, + usbh_port_enabled, + usbh_port_disabled, + usbh_sof +}; + +usbh_int_cb *usbh_int_fop = &usbh_int_op; + +/*! + \brief USB host stack initializations + \param[in] puhost: pointer to USB host + \param[in] user_cb: pointer to user callback + \param[out] none + \retval none +*/ +void usbh_init (usbh_host *puhost, usbh_user_cb *user_cb) +{ + /* host de-initializations */ + usbh_deinit(puhost); + + puhost->usr_cb = user_cb; + + usbh_core.host.connect_status = 0U; + + for (uint8_t i = 0U; i < USBFS_MAX_TX_FIFOS; i++) { + usbh_core.host.pipe[i].err_count = 0U; + usbh_core.host.pipe[i].pp_status = PIPE_IDLE; + usbh_core.host.backup_xfercount[i] = 0U; + } + + usbh_core.host.pipe[0].ep.mps = 8U; + +#ifdef USE_USB_FS + usb_basic_init (&usbh_core.bp, &usbh_core.regs, USB_CORE_ENUM_FS); +#endif /* USE_USB_FS */ + +#ifndef DUAL_ROLE_MODE_ENABLED + usb_globalint_disable(&usbh_core.regs); + + usb_core_init (usbh_core.bp, &usbh_core.regs); + +#ifndef USE_OTG_MODE + usb_curmode_set (&usbh_core.regs, HOST_MODE); +#endif /* USE_OTG_MODE */ + + usb_host_init (&usbh_core); + + usb_globalint_enable(&usbh_core.regs); +#endif /* DUAL_ROLE_MODE_ENABLED */ + + /* link driver to the stack */ + usbh_core.host.data = (void *)puhost; + puhost->data = (void *)&usbh_core; + + /* upon init call usr call back */ + puhost->usr_cb->dev_init(); +} + +/*! + \brief USB host register device class + \param[in] puhost: pointer to usb host instance + \param[in] puclass: pointer to USB device class + \param[out] none + \retval operation status +*/ +usbh_status usbh_class_register (usbh_host *puhost, usbh_class *puclass) +{ + usbh_status status = USBH_OK; + + if (NULL != puclass) { + if (puhost->class_num < USBH_MAX_SUPPORTED_CLASS) { + puhost->uclass[puhost->class_num++] = puclass; + } else { + status = USBH_FAIL; + } + } else { + status = USBH_FAIL; + } + + return status; +} + +/*! + \brief de-initialize USB host + \param[in] puhost: pointer to USB host + \param[out] none + \retval operation status +*/ +usbh_status usbh_deinit(usbh_host *puhost) +{ + /* software init */ + puhost->cur_state = HOST_DEFAULT; + puhost->backup_state = HOST_DEFAULT; + puhost->enum_state = ENUM_DEFAULT; + + puhost->control.ctl_state = CTL_IDLE; + puhost->control.max_len = USB_FS_EP0_MAX_LEN; + + puhost->dev_prop.addr = USBH_DEV_ADDR_DEFAULT; + puhost->dev_prop.speed = PORT_SPEED_FULL; + puhost->dev_prop.cur_itf = 0xFFU; + + usbh_pipe_free(&usbh_core, puhost->control.pipe_in_num); + usbh_pipe_free(&usbh_core, puhost->control.pipe_out_num); + + return USBH_OK; +} + +/*! + \brief USB host core main state machine process + \param[in] puhost: pointer to USB host + \param[out] none + \retval none +*/ +void usbh_core_task (usbh_host *puhost) +{ + volatile usbh_status status = USBH_FAIL; + + /* check for host port events */ + if (((0U == usbh_core.host.connect_status) || (0U == usbh_core.host.port_enabled)) && (HOST_DEFAULT != puhost->cur_state)) { + if (puhost->cur_state != HOST_DEV_DETACHED) { + puhost->cur_state = HOST_DEV_DETACHED; + } + } + + switch (puhost->cur_state) { + case HOST_DEFAULT: + if (usbh_core.host.connect_status) { + puhost->cur_state = HOST_DETECT_DEV_SPEED; + + usb_mdelay (100U); + + usb_port_reset (&usbh_core); + + puhost->usr_cb->dev_reset(); + } + break; + + case HOST_DETECT_DEV_SPEED: + if (usbh_core.host.port_enabled) { + puhost->cur_state = HOST_DEV_ATTACHED; + + puhost->dev_prop.speed = usb_curspeed_get (&usbh_core); + + puhost->usr_cb->dev_speed_detected(puhost->dev_prop.speed); + + usb_mdelay (50U); + } + break; + + case HOST_DEV_ATTACHED: + puhost->usr_cb->dev_attach(); + puhost->control.pipe_out_num = usbh_pipe_allocate(&usbh_core, 0x00U); + puhost->control.pipe_in_num = usbh_pipe_allocate(&usbh_core, 0x80U); + + /* open IN control pipe */ + usbh_pipe_create (&usbh_core, + &puhost->dev_prop, + puhost->control.pipe_in_num, + USB_EPTYPE_CTRL, + (uint16_t)puhost->control.max_len); + + /* open OUT control pipe */ + usbh_pipe_create (&usbh_core, + &puhost->dev_prop, + puhost->control.pipe_out_num, + USB_EPTYPE_CTRL, + (uint16_t)puhost->control.max_len); + + puhost->cur_state = HOST_ENUM; + break; + + case HOST_ENUM: + /* check for enumeration status */ + if (USBH_OK == usbh_enum_task (puhost)) { + /* the function shall return USBH_OK when full enumeration is complete */ + + /* user callback for end of device basic enumeration */ + puhost->usr_cb->dev_enumerated(); + +#ifdef USB_FS_LOW_PWR_ENABLE + puhost->cur_state = HOST_SUSPENDED; +#else + puhost->cur_state = HOST_SET_WAKEUP_FEATURE; +#endif + } + break; + + case HOST_SET_WAKEUP_FEATURE: + if ((puhost->dev_prop.cfg_desc_set.cfg_desc.bmAttributes) & (1U << 5)) { + if (usbh_setdevfeature(puhost, FEATURE_SELECTOR_REMOTEWAKEUP, 0U) == USBH_OK) { + puhost->cur_state = HOST_CHECK_CLASS; + } + } else { + puhost->cur_state = HOST_CHECK_CLASS; + } + break; + + case HOST_CHECK_CLASS: + if (puhost->class_num == 0U) { + puhost->cur_state = HOST_ERROR; + } else { + puhost->active_class = NULL; + + uint8_t itf_class = puhost->dev_prop.cfg_desc_set.itf_desc_set[0][0].itf_desc.bInterfaceClass; + + for (uint8_t index = 0U; index < puhost->class_num; index++) { + if ((puhost->uclass[index]->class_code == itf_class) || (0xFFU == itf_class)) { + puhost->active_class = puhost->uclass[index]; + } + } + + if (puhost->active_class != NULL) { + puhost->cur_state = HOST_USER_INPUT; + } else { + puhost->cur_state = HOST_ERROR; + } + } + break; + + case HOST_USER_INPUT: + /* the function should return user response true to move to class state */ + if (USBH_USER_RESP_OK == puhost->usr_cb->dev_user_input()) { + if ((USBH_OK == puhost->active_class->class_init(puhost))) { + puhost->cur_state = HOST_CLASS_ENUM; + } + } + break; + +#ifdef USB_FS_LOW_PWR_ENABLE + case HOST_SUSPENDED: + if (USBH_OK == usbh_setdevfeature(puhost, FEATURE_SELECTOR_DEV, 0U)) { + puhost->suspend_flag = 1; + usb_hwp_suspend(puhost->data); + puhost->usr_cb->dev_user_input(); + pmu_to_deepsleepmode(PMU_LDO_LOWPOWER, WFI_CMD); + puhost->cur_state = HOST_WAKEUP; + } + break; + + case HOST_WAKEUP: + if (USBH_OK == usbh_clrdevfeature(puhost, FEATURE_SELECTOR_DEV, 0U)) { + /* user callback for initalization */ + puhost->usr_cb->dev_init(); + + puhost->cur_state = HOST_CHECK_CLASS; + } + break; +#endif + + case HOST_CLASS_ENUM: + /* process class standard contol requests state machine */ + status = puhost->active_class->class_requests(puhost); + + if (USBH_OK == status) { + puhost->cur_state = HOST_CLASS_HANDLER; + } else { + usbh_error_handler (puhost, status); + } + break; + + case HOST_CLASS_HANDLER: + /* process class state machine */ + status = puhost->active_class->class_machine(puhost); + + usbh_error_handler (puhost, status); + break; + + case HOST_ERROR: + /* re-initilaize host for new enumeration */ + usbh_deinit (puhost); + puhost->usr_cb->dev_deinit(); + puhost->active_class->class_deinit(puhost); + break; + + case HOST_DEV_DETACHED: + /* manage user disconnect operations*/ + puhost->usr_cb->dev_detach(); + + /* re-initilaize host for new enumeration */ + usbh_deinit(puhost); + puhost->usr_cb->dev_deinit(); + puhost->active_class->class_deinit(puhost); + usbh_pipe_delete(&usbh_core); + puhost->cur_state = HOST_DEFAULT; + break; + + default: + break; + } +} + +/*! + \brief handle the error on USB host side + \param[in] puhost: pointer to USB host + \param[in] err_type: type of error or busy/OK state + \param[out] none + \retval none +*/ +void usbh_error_handler (usbh_host *puhost, usbh_status err_type) +{ + /* error unrecovered or not supported device speed */ + if ((USBH_SPEED_UNKNOWN_ERROR == err_type) || (USBH_UNRECOVERED_ERROR == err_type)) { + puhost->usr_cb->dev_error(); + + puhost->cur_state = HOST_ERROR; + } else if (USBH_APPLY_DEINIT == err_type) { + puhost->cur_state = HOST_ERROR; + + /* user callback for initalization */ + puhost->usr_cb->dev_init(); + } else { + /* no operation */ + } +} + +/*! + \brief USB SOF callback function from the interrupt + \param[in] puhost: pointer to usb host + \param[out] none + \retval operation status +*/ +static uint8_t usbh_sof (usbh_host *puhost) +{ + /* this callback could be used to implement a scheduler process */ + puhost->control.timer = (uint16_t)usb_curframe_get(&usbh_core); + + if (puhost->active_class != NULL) { + if (puhost->active_class->class_sof != NULL) { + puhost->active_class->class_sof(puhost); + } + } + + return 0U; +} + +/*! + \brief USB connect callback function from the interrupt + \param[in] puhost: pointer to usb host + \param[out] none + \retval operation status +*/ +static uint8_t usbh_connect (usbh_host *puhost) +{ + usbh_core.host.connect_status = 1U; + + return 0U; +} + +/*! + \brief USB disconnect callback function from the interrupt + \param[in] puhost: pointer to usb host + \param[out] none + \retval operation status +*/ +static uint8_t usbh_disconnect (usbh_host *puhost) +{ + usbh_core.host.connect_status = 0U; + + return 0U; +} + +/*! + \brief USB port enable callback function from the interrupt + \param[in] puhost: pointer to usb host + \param[out] none + \retval operation status +*/ +static uint8_t usbh_port_enabled (usbh_host *puhost) +{ + usbh_core.host.port_enabled = 1U; + + return 0U; +} + +/*! + \brief USB port disabled callback function from the interrupt + \param[in] puhost: pointer to usb host + \param[out] none + \retval operation status +*/ +static uint8_t usbh_port_disabled (usbh_host *puhost) +{ + usbh_core.host.port_enabled = 0U; + + return 0U; +} + +/*! + \brief handle the USB enumeration task + \param[in] puhost: pointer to host + \param[out] none + \retval none +*/ +static usbh_status usbh_enum_task (usbh_host *puhost) +{ + uint8_t str_buf[64]; + + usbh_status status = USBH_BUSY; + + static uint8_t index_mfc_str = 0U, index_prod_str = 0U, index_serial_str = 0U; + + switch (puhost->enum_state) { + case ENUM_DEFAULT: + /* get device descriptor for only 1st 8 bytes : to get ep0 maxpacketsize */ + if (USBH_OK == usbh_devdesc_get (puhost, 8U)) { + puhost->control.max_len = puhost->dev_prop.dev_desc.bMaxPacketSize0; + + /* modify control channels configuration for maximum packet size */ + usbh_pipe_update (&usbh_core, + puhost->control.pipe_out_num, + 0U, 0U, + (uint16_t)puhost->control.max_len); + + usbh_pipe_update (&usbh_core, + puhost->control.pipe_in_num, + 0U, 0U, + (uint16_t)puhost->control.max_len); + + puhost->enum_state = ENUM_GET_DEV_DESC; + } + break; + + case ENUM_GET_DEV_DESC: + /* get full device descriptor */ + if (USBH_OK == usbh_devdesc_get (puhost, USB_DEV_DESC_LEN)) { + puhost->usr_cb->dev_devdesc_assigned(&puhost->dev_prop.dev_desc); + + index_mfc_str = puhost->dev_prop.dev_desc.iManufacturer; + index_prod_str = puhost->dev_prop.dev_desc.iProduct; + index_serial_str = puhost->dev_prop.dev_desc.iSerialNumber; + + puhost->enum_state = ENUM_SET_ADDR; + } + break; + + case ENUM_SET_ADDR: + /* set address */ + if (USBH_OK == usbh_setaddress (puhost, USBH_DEV_ADDR)) { + usb_mdelay (2U); + + puhost->dev_prop.addr = USBH_DEV_ADDR; + + /* user callback for device address assigned */ + puhost->usr_cb->dev_address_set(); + + /* modify control channels to update device address */ + usbh_pipe_update (&usbh_core, + puhost->control.pipe_in_num, + puhost->dev_prop.addr, + 0U, 0U); + + usbh_pipe_update (&usbh_core, + puhost->control.pipe_out_num, + puhost->dev_prop.addr, + 0U, 0U); + + puhost->enum_state = ENUM_GET_CFG_DESC; + } + break; + + case ENUM_GET_CFG_DESC: + /* get standard configuration descriptor */ + if (USBH_OK == usbh_cfgdesc_get (puhost, USB_CFG_DESC_LEN)) { + puhost->enum_state = ENUM_GET_CFG_DESC_SET; + } + break; + + case ENUM_GET_CFG_DESC_SET: + /* get full config descriptor (config, interface, endpoints) */ + if (USBH_OK == usbh_cfgdesc_get (puhost, puhost->dev_prop.cfg_desc_set.cfg_desc.wTotalLength)) { + /* user callback for configuration descriptors available */ + puhost->usr_cb->dev_cfgdesc_assigned (&puhost->dev_prop.cfg_desc_set.cfg_desc, + &puhost->dev_prop.cfg_desc_set.itf_desc_set[0][0].itf_desc, + &puhost->dev_prop.cfg_desc_set.itf_desc_set[0][0].ep_desc[0]); + + puhost->enum_state = ENUM_GET_STR_DESC; + } + break; + + case ENUM_GET_STR_DESC: + if (index_mfc_str) { + if (USBH_OK == usbh_strdesc_get (puhost, + puhost->dev_prop.dev_desc.iManufacturer, + str_buf, + 0xFFU)) { + /* user callback for manufacturing string */ + puhost->usr_cb->dev_mfc_str(str_buf); + + index_mfc_str = 0U; + } + } else { + if (index_prod_str) { + /* check that product string is available */ + if (USBH_OK == usbh_strdesc_get (puhost, + puhost->dev_prop.dev_desc.iProduct, + str_buf, + 0xFFU)) { + puhost->usr_cb->dev_prod_str(str_buf); + + index_prod_str = 0U; + } + } else { + if (index_serial_str) { + if (USBH_OK == usbh_strdesc_get (puhost, + puhost->dev_prop.dev_desc.iSerialNumber, + str_buf, + 0xFFU)) { + puhost->usr_cb->dev_seral_str(str_buf); + puhost->enum_state = ENUM_SET_CONFIGURATION; + index_serial_str = 0U; + } + } else { + puhost->enum_state = ENUM_SET_CONFIGURATION; + } + } + } + break; + + case ENUM_SET_CONFIGURATION: + if (USBH_OK == usbh_setcfg (puhost, (uint16_t)puhost->dev_prop.cfg_desc_set.cfg_desc.bConfigurationValue)) { + puhost->enum_state = ENUM_DEV_CONFIGURED; + } + break; + + case ENUM_DEV_CONFIGURED: + status = USBH_OK; + break; + + default: + break; + } + + return status; +} + + +#ifdef USB_FS_LOW_PWR_ENABLE + +/*! + \brief handles the USB resume from suspend mode + \param[in] pudev: pointer to selected USB device + \param[out] none + \retval none +*/ +static void usb_hwp_resume(usb_core_driver *pudev) +{ + __IO uint32_t hprt = 0U; + + /* switch-on the clocks */ + *pudev->regs.PWRCLKCTL &= ~PWRCLKCTL_SUCLK; + + *pudev->regs.PWRCLKCTL &= ~PWRCLKCTL_SHCLK; + + hprt = usb_port_read(pudev); + + hprt &= ~HPCS_PSP; + hprt |= HPCS_PREM; + + *pudev->regs.HPCS = hprt; + + usb_mdelay (20U); + + hprt &= ~HPCS_PREM; + + *pudev->regs.HPCS = hprt; +} + +/*! + \brief handles the USB enter to suspend mode + \param[in] pudev: pointer to selected USB device + \param[out] none + \retval none +*/ +static void usb_hwp_suspend(usb_core_driver *pudev) +{ + __IO uint32_t hprt = 0U; + + hprt = usb_port_read(pudev); + + hprt |= HPCS_PSP; + + *pudev->regs.HPCS = hprt; + + /* switch-off the clocks */ + *pudev->regs.PWRCLKCTL |= PWRCLKCTL_SUCLK; + + *pudev->regs.PWRCLKCTL |= PWRCLKCTL_SHCLK; +} + +#endif diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Source/usbh_enum.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Source/usbh_enum.c new file mode 100644 index 0000000000..1189a21301 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Source/usbh_enum.c @@ -0,0 +1,693 @@ +/*! + \file usbh_enum.c + \brief USB host mode enumeration driver + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "usbh_pipe.h" +#include "usbh_transc.h" +#include "usbh_enum.h" + +/* local function prototypes ('static') */ +static void usbh_devdesc_parse (usb_desc_dev *dev_desc, uint8_t *buf, uint16_t len); +static void usbh_cfgdesc_parse (usb_desc_config *cfg_desc, uint8_t *buf); +static void usbh_cfgset_parse (usb_dev_prop *udev, uint8_t *buf); +static void usbh_itfdesc_parse (usb_desc_itf *itf_desc, uint8_t *buf); +static void usbh_epdesc_parse (usb_desc_ep *ep_desc, uint8_t *buf); +static void usbh_strdesc_parse (uint8_t *psrc, uint8_t *pdest, uint16_t len); + +/*! + \brief configure USB control status parameters + \param[in] puhost: pointer to usb host + \param[in] buf: control transfer data buffer pointer + \param[in] len: length of the data buffer + \param[out] none + \retval none +*/ +void usbh_ctlstate_config (usbh_host *puhost, uint8_t *buf, uint16_t len) +{ + /* prepare the transactions */ + puhost->control.buf = buf; + puhost->control.ctl_len = len; + + puhost->control.ctl_state = CTL_SETUP; +} + +/*! + \brief get device descriptor from the USB device + \param[in] puhost: pointer to usb host + \param[in] len: length of the descriptor + \param[out] none + \retval operation status +*/ +usbh_status usbh_devdesc_get (usbh_host *puhost, uint8_t len) +{ + usbh_status status = USBH_BUSY; + + usbh_control *usb_ctl = &puhost->control; + + if (CTL_IDLE == usb_ctl->ctl_state) { + usb_ctl->setup.req = (usb_req) { + .bmRequestType = USB_TRX_IN | USB_RECPTYPE_DEV | USB_REQTYPE_STRD, + .bRequest = USB_GET_DESCRIPTOR, + .wValue = USBH_DESC(USB_DESCTYPE_DEV), + .wIndex = 0U, + .wLength = len + }; + + usbh_ctlstate_config (puhost, puhost->dev_prop.data, (uint16_t)len); + } + + status = usbh_ctl_handler (puhost); + + if (USBH_OK == status) { + /* commands successfully sent and response received */ + usbh_devdesc_parse (&puhost->dev_prop.dev_desc, puhost->dev_prop.data, (uint16_t)len); + } + + return status; +} + +/*! + \brief get configuration descriptor from the USB device + \param[in] puhost: pointer to usb host + \param[in] len: length of the descriptor + \param[out] none + \retval operation status +*/ +usbh_status usbh_cfgdesc_get (usbh_host *puhost, uint16_t len) +{ + uint8_t *pdata = NULL; + + usbh_status status = USBH_BUSY; + + usbh_control *usb_ctl = &puhost->control; + +#if (USBH_KEEP_CFG_DESCRIPTOR == 1U) + pdata = puhost->dev_prop.cfgdesc_rawdata; +#else + pdata = puhost->dev_prop.data; +#endif + + if (CTL_IDLE == usb_ctl->ctl_state) { + usb_ctl->setup.req = (usb_req) { + .bmRequestType = USB_TRX_IN | USB_RECPTYPE_DEV | USB_REQTYPE_STRD, + .bRequest = USB_GET_DESCRIPTOR, + .wValue = USBH_DESC(USB_DESCTYPE_CONFIG), + .wIndex = 0U, + .wLength = len + }; + + usbh_ctlstate_config (puhost, pdata, len); + } + + status = usbh_ctl_handler (puhost); + + if (USBH_OK == status) { + if (len <= USB_CFG_DESC_LEN) { + usbh_cfgdesc_parse (&puhost->dev_prop.cfg_desc_set.cfg_desc, pdata); + } else { + usbh_cfgset_parse (&puhost->dev_prop, pdata); + } + } + + return status; +} + +/*! + \brief get string descriptor from the USB device + \param[in] puhost: pointer to usb host + \param[in] str_index: index for the string descriptor + \param[in] buf: buffer pointer to the string descriptor + \param[in] len: length of the descriptor + \param[out] none + \retval operation status +*/ +usbh_status usbh_strdesc_get (usbh_host *puhost, + uint8_t str_index, + uint8_t *buf, + uint16_t len) +{ + usbh_status status = USBH_BUSY; + + usbh_control *usb_ctl = &puhost->control; + + if (CTL_IDLE == usb_ctl->ctl_state) { + usb_ctl->setup.req = (usb_req) { + .bmRequestType = USB_TRX_IN | USB_RECPTYPE_DEV | USB_REQTYPE_STRD, + .bRequest = USB_GET_DESCRIPTOR, + .wValue = USBH_DESC(USB_DESCTYPE_STR) | str_index, + .wIndex = 0x0409U, + .wLength = len + }; + + usbh_ctlstate_config (puhost, puhost->dev_prop.data, len); + } + + status = usbh_ctl_handler (puhost); + + if (USBH_OK == status) { + /* commands successfully sent and response received */ + usbh_strdesc_parse (puhost->dev_prop.data, buf, len); + } + + return status; +} + +/*! + \brief set the address to the connected device + \param[in] puhost: pointer to usb host + \param[in] dev_addr: device address to assign + \param[out] none + \retval operation status +*/ +usbh_status usbh_setaddress (usbh_host *puhost, uint8_t dev_addr) +{ + usbh_status status = USBH_BUSY; + + usbh_control *usb_ctl = &puhost->control; + + if (CTL_IDLE == usb_ctl->ctl_state) { + usb_ctl->setup.req = (usb_req) { + .bmRequestType = USB_TRX_OUT | USB_RECPTYPE_DEV | USB_REQTYPE_STRD, + .bRequest = USB_SET_ADDRESS, + .wValue = (uint16_t)dev_addr, + .wIndex = 0U, + .wLength = 0U + }; + + usbh_ctlstate_config (puhost, NULL, 0U); + } + + status = usbh_ctl_handler (puhost); + + return status; +} + +/*! + \brief set the configuration value to the connected device + \param[in] puhost: pointer to usb host + \param[in] config_index: configuration value + \param[out] none + \retval operation status +*/ +usbh_status usbh_setcfg (usbh_host *puhost, uint16_t config_index) +{ + usbh_status status = USBH_BUSY; + + usbh_control *usb_ctl = &puhost->control; + + if (CTL_IDLE == usb_ctl->ctl_state) { + usb_ctl->setup.req = (usb_req) { + .bmRequestType = USB_TRX_OUT | USB_RECPTYPE_DEV | USB_REQTYPE_STRD, + .bRequest = USB_SET_CONFIGURATION, + .wValue = config_index, + .wIndex = 0U, + .wLength = 0U + }; + + usbh_ctlstate_config (puhost, NULL, 0U); + } + + status = usbh_ctl_handler (puhost); + + return status; +} + +/*! + \brief set the interface value to the connected device + \param[in] puhost: pointer to usb host + \param[in] itf_num: interface number + \param[in] set: alternated setting value + \param[out] none + \retval operation status +*/ +usbh_status usbh_setinterface (usbh_host *puhost, uint8_t itf_num, uint8_t set) +{ + usbh_status status = USBH_BUSY; + + usbh_control *usb_ctl = &puhost->control; + + if (CTL_IDLE == usb_ctl->ctl_state) { + usb_ctl->setup.req = (usb_req) { + .bmRequestType = USB_TRX_OUT | USB_RECPTYPE_ITF | USB_REQTYPE_STRD, + .bRequest = USB_SET_INTERFACE, + .wValue = set, + .wIndex = itf_num, + .wLength = 0U + }; + + usbh_ctlstate_config (puhost, NULL, 0U); + } + + status = usbh_ctl_handler (puhost); + + return status; +} + +/*! + \brief set the interface value to the connected device + \param[in] puhost: pointer to usb host + \param[in] feature_selector: feature selector + \param[in] windex: index value + \param[out] none + \retval operation status +*/ +usbh_status usbh_setdevfeature (usbh_host *puhost, uint8_t feature_selector, uint16_t windex) +{ + usbh_status status = USBH_BUSY; + + usbh_control *usb_ctl = &puhost->control; + + if (CTL_IDLE == usb_ctl->ctl_state) { + usb_ctl->setup.req = (usb_req) { + .bmRequestType = USB_TRX_OUT | USB_RECPTYPE_DEV | USB_REQTYPE_STRD, + .bRequest = USB_SET_FEATURE, + .wValue = feature_selector, + .wIndex = windex, + .wLength = 0U + }; + + usbh_ctlstate_config (puhost, NULL, 0U); + } + + status = usbh_ctl_handler (puhost); + + return status; +} + +/*! + \brief clear the interface value to the connected device + \param[in] puhost: pointer to usb host + \param[in] feature_selector: feature selector + \param[in] windex: index value + \param[out] none + \retval operation status +*/ +usbh_status usbh_clrdevfeature (usbh_host *puhost, uint8_t feature_selector, uint16_t windex) +{ + usbh_status status = USBH_BUSY; + + usbh_control *usb_ctl = &puhost->control; + + if (CTL_IDLE == usb_ctl->ctl_state) { + usb_ctl->setup.req = (usb_req) { + .bmRequestType = USB_TRX_OUT | USB_RECPTYPE_DEV | USB_REQTYPE_STRD, + .bRequest = USB_CLEAR_FEATURE, + .wValue = feature_selector, + .wIndex = windex, + .wLength = 0U + }; + + usbh_ctlstate_config (puhost, NULL, 0U); + } + + status = usbh_ctl_handler (puhost); + + return status; +} + +/*! + \brief clear or disable a specific feature + \param[in] puhost: pointer to usb host + \param[in] ep_addr: endpoint address + \param[in] pp_num: pipe number + \param[out] none + \retval operation status +*/ +usbh_status usbh_clrfeature (usbh_host *puhost, uint8_t ep_addr, uint8_t pp_num) +{ + usbh_status status = USBH_BUSY; + usbh_control *usb_ctl = &puhost->control; + usb_core_driver *pudev = (usb_core_driver *)puhost->data; + + if (CTL_IDLE == usb_ctl->ctl_state) { + usb_ctl->setup.req = (usb_req) { + .bmRequestType = USB_TRX_OUT | USB_RECPTYPE_EP | USB_REQTYPE_STRD, + .bRequest = USB_CLEAR_FEATURE, + .wValue = FEATURE_SELECTOR_EP, + .wIndex = ep_addr, + .wLength = 0U + }; + + if (EP_ID(ep_addr) == pudev->host.pipe[pp_num].ep.num) { + usbh_pipe_toggle_set(pudev, pp_num, 0U); + } else { + return USBH_FAIL; + } + + usbh_ctlstate_config (puhost, NULL, 0U); + } + + status = usbh_ctl_handler (puhost); + + return status; +} + +/*! + \brief get the next descriptor header + \param[in] pbuf: pointer to buffer where the configuration descriptor set is available + \param[in] ptr: data pointer inside the configuration descriptor set + \param[out] none + \retval return descriptor header +*/ +usb_desc_header *usbh_nextdesc_get (uint8_t *pbuf, uint16_t *ptr) +{ + usb_desc_header *pnext; + + *ptr += ((usb_desc_header *)pbuf)->bLength; + + pnext = (usb_desc_header *)((uint8_t *)pbuf + ((usb_desc_header *)pbuf)->bLength); + + return (pnext); +} + +/*! + \brief get the next descriptor header + \param[in] udev: pointer to device property + \param[in] interface: interface number + \param[out] none + \retval operation status +*/ +usbh_status usbh_interface_select (usb_dev_prop *udev, uint8_t interface) +{ + usbh_status status = USBH_OK; + + if (interface < udev->cfg_desc_set.cfg_desc.bNumInterfaces) { + udev->cur_itf = interface; + } else { + status = USBH_FAIL; + } + + return status; +} + +/*! + \brief find the interface index for a specific class + \param[in] udev: pointer to device property + \param[in] main_class: class code + \param[in] sub_class: subclass code + \param[in] protocol: Protocol code + \param[out] none + \retval interface index in the configuration structure + \note interface index 0xFF means interface index not found +*/ +uint8_t usbh_interface_find (usb_dev_prop *udev, uint8_t main_class, uint8_t sub_class, uint8_t protocol) +{ + usb_desc_itf *pif; + + uint8_t if_ix = 0U; + + pif = (usb_desc_itf *)0; + + while (if_ix < udev->cfg_desc_set.cfg_desc.bNumInterfaces) { + pif = &udev->cfg_desc_set.itf_desc_set[if_ix][0].itf_desc; + + if (((pif->bInterfaceClass == main_class) || (main_class == 0xFFU))&& + ((pif->bInterfaceSubClass == sub_class) || (sub_class == 0xFFU))&& + ((pif->bInterfaceProtocol == protocol) || (protocol == 0xFFU))) { + return if_ix; + } + + if_ix++; + } + + return 0xFFU; +} + +/*! + \brief find the interface index for a specific class interface and alternate setting number + \param[in] udev: pointer to device property + \param[in] interface_number: interface number + \param[in] alt_settings: alternate setting number + \param[out] none + \retval interface index in the configuration structure + \note interface index 0xFF means interface index not found +*/ +uint8_t usbh_interfaceindex_find (usb_dev_prop *udev, uint8_t interface_number, uint8_t alt_settings) +{ + usb_desc_itf *pif; + + uint8_t if_ix = 0U; + + pif = (usb_desc_itf *)0; + + while (if_ix < USBH_MAX_INTERFACES_NUM) { + pif = &udev->cfg_desc_set.itf_desc_set[if_ix][alt_settings].itf_desc; + + if ((pif->bInterfaceNumber == interface_number) && (pif->bAlternateSetting == alt_settings)) { + return if_ix; + } + + if_ix++; + } + + return 0xFFU; +} + +/*! + \brief parse the device descriptor + \param[in] dev_desc: pointer to usb device descriptor buffer + \param[in] buf: pointer to the source descriptor buffer + \param[in] len: length of the descriptor + \param[out] none + \retval none +*/ +static void usbh_devdesc_parse (usb_desc_dev *dev_desc, uint8_t *buf, uint16_t len) +{ + *dev_desc = (usb_desc_dev) { + .header = { + .bLength = *(uint8_t *)(buf + 0U), + .bDescriptorType = *(uint8_t *)(buf + 1U) + }, + + .bcdUSB = BYTE_SWAP(buf + 2U), + .bDeviceClass = *(uint8_t *)(buf + 4U), + .bDeviceSubClass = *(uint8_t *)(buf + 5U), + .bDeviceProtocol = *(uint8_t *)(buf + 6U), + .bMaxPacketSize0 = *(uint8_t *)(buf + 7U) + }; + + if (len > 8U) { + /* for 1st time after device connection, host may issue only 8 bytes for device descriptor length */ + dev_desc->idVendor = BYTE_SWAP(buf + 8U); + dev_desc->idProduct = BYTE_SWAP(buf + 10U); + dev_desc->bcdDevice = BYTE_SWAP(buf + 12U); + dev_desc->iManufacturer = *(uint8_t *)(buf + 14U); + dev_desc->iProduct = *(uint8_t *)(buf + 15U); + dev_desc->iSerialNumber = *(uint8_t *)(buf + 16U); + dev_desc->bNumberConfigurations = *(uint8_t *)(buf + 17U); + } +} + +/*! + \brief parse the configuration descriptor + \param[in] cfg_desc: pointer to usb configuration descriptor buffer + \param[in] buf: pointer to the source descriptor buffer + \param[out] none + \retval none +*/ +static void usbh_cfgdesc_parse (usb_desc_config *cfg_desc, uint8_t *buf) +{ + /* parse configuration descriptor */ + *cfg_desc = (usb_desc_config) { + .header = { + .bLength = *(uint8_t *)(buf + 0U), + .bDescriptorType = *(uint8_t *)(buf + 1U), + }, + + .wTotalLength = BYTE_SWAP(buf + 2U), + .bNumInterfaces = *(uint8_t *)(buf + 4U), + .bConfigurationValue = *(uint8_t *)(buf + 5U), + .iConfiguration = *(uint8_t *)(buf + 6U), + .bmAttributes = *(uint8_t *)(buf + 7U), + .bMaxPower = *(uint8_t *)(buf + 8U) + }; +} + +/*! + \brief parse the configuration descriptor set + \param[in] udev: pointer to device property + \param[in] buf: pointer to the source descriptor buffer + \param[out] none + \retval none +*/ +static void usbh_cfgset_parse (usb_dev_prop *udev, uint8_t *buf) +{ + usb_desc_ep *ep = NULL; + usb_desc_itf_set *itf = NULL; + usb_desc_itf itf_value; + usb_desc_config *cfg = NULL; + + usb_desc_header *pdesc = (usb_desc_header *)buf; + + uint8_t itf_index = 0U, ep_index = 0U, alt_setting = 0U; + uint8_t pre_itf_index = 0U; + uint16_t ptr; + + /* parse configuration descriptor */ + usbh_cfgdesc_parse (&udev->cfg_desc_set.cfg_desc, buf); + cfg = &udev->cfg_desc_set.cfg_desc; + ptr = USB_CFG_DESC_LEN; + + if (cfg->bNumInterfaces > USBH_MAX_INTERFACES_NUM) { + return; + } + + while (ptr < cfg->wTotalLength) { + pdesc = usbh_nextdesc_get ((uint8_t *)pdesc, &ptr); + + if (pdesc->bDescriptorType == USB_DESCTYPE_ITF) { + itf_index = *(((uint8_t *)pdesc) + 2U); + + if (pre_itf_index != itf_index) { + alt_setting = 0U; + } + + itf = &udev->cfg_desc_set.itf_desc_set[itf_index][alt_setting]; + + alt_setting++; + + if ((*((uint8_t *)pdesc + 3U)) < 3U) { + usbh_itfdesc_parse (&itf_value, (uint8_t *)pdesc); + + /* parse endpoint descriptors relative to the current interface */ + if (itf_value.bNumEndpoints > USBH_MAX_EP_NUM) { + return; + } + + usbh_itfdesc_parse (&itf->itf_desc, (uint8_t *)&itf_value); + + /* store the previous interface index */ + pre_itf_index = itf_index; + + if (0U == itf_value.bNumEndpoints) { + continue; + } + + for (ep_index = 0U; ep_index < itf_value.bNumEndpoints; ) { + pdesc = usbh_nextdesc_get ((void*)pdesc, &ptr); + + if (pdesc->bDescriptorType == USB_DESCTYPE_EP) { + ep = &itf->ep_desc[ep_index]; + + usbh_epdesc_parse (ep, (uint8_t *)pdesc); + + ep_index++; + } + } + } + } + } +} + +/*! + \brief parse the interface descriptor + \param[in] itf_desc: pointer to usb interface descriptor buffer + \param[in] buf: pointer to the source descriptor buffer + \param[out] none + \retval none +*/ +static void usbh_itfdesc_parse (usb_desc_itf *itf_desc, uint8_t *buf) +{ + *itf_desc = (usb_desc_itf) { + .header = { + .bLength = *(uint8_t *)(buf + 0U), + .bDescriptorType = *(uint8_t *)(buf + 1U), + }, + + .bInterfaceNumber = *(uint8_t *)(buf + 2U), + .bAlternateSetting = *(uint8_t *)(buf + 3U), + .bNumEndpoints = *(uint8_t *)(buf + 4U), + .bInterfaceClass = *(uint8_t *)(buf + 5U), + .bInterfaceSubClass = *(uint8_t *)(buf + 6U), + .bInterfaceProtocol = *(uint8_t *)(buf + 7U), + .iInterface = *(uint8_t *)(buf + 8U) + }; +} + +/*! + \brief parse the endpoint descriptor + \param[in] ep_desc: pointer to usb endpoint descriptor buffer + \param[in] buf: pointer to the source descriptor buffer + \param[out] none + \retval none +*/ +static void usbh_epdesc_parse (usb_desc_ep *ep_desc, uint8_t *buf) +{ + *ep_desc = (usb_desc_ep) { + .header = { + .bLength = *(uint8_t *)(buf + 0U), + .bDescriptorType = *(uint8_t *)(buf + 1U) + }, + + .bEndpointAddress = *(uint8_t *)(buf + 2U), + .bmAttributes = *(uint8_t *)(buf + 3U), + .wMaxPacketSize = BYTE_SWAP(buf + 4U), + .bInterval = *(uint8_t *)(buf + 6U) + }; +} + +/*! + \brief parse the string descriptor + \param[in] psrc: source pointer containing the descriptor data + \param[in] pdest: destination address pointer + \param[in] len: length of the descriptor + \param[out] none + \retval none +*/ +static void usbh_strdesc_parse (uint8_t *psrc, uint8_t *pdest, uint16_t len) +{ + uint16_t str_len = 0U, index = 0U; + + /* the unicode string descriptor is not NULL-terminated. The string length is + * computed by substracting two from the value of the first byte of the descriptor. + */ + + /* check which is lower size, the size of string or the length of bytes read from the device */ + if (USB_DESCTYPE_STR == psrc[1]) { + /* make sure the descriptor is string type */ + + /* psrc[0] contains Size of Descriptor, subtract 2 to get the length of string */ + str_len = USB_MIN((uint16_t)psrc[0] - 2U, len); + + psrc += 2U; /* adjust the offset ignoring the string len and descriptor type */ + + for (index = 0U; index < str_len; index += 2U) { + /* copy only the string and ignore the unicode id, hence add the src */ + *pdest = psrc[index]; + + pdest++; + } + + *pdest = 0U; /* mark end of string */ + } +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Source/usbh_pipe.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Source/usbh_pipe.c new file mode 100644 index 0000000000..76cda95110 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Source/usbh_pipe.c @@ -0,0 +1,174 @@ +/*! + \file usbh_pipe.c + \brief USB host mode pipe operation driver + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "usbh_pipe.h" + +/* local function prototypes ('static') */ +static uint16_t usbh_freepipe_get (usb_core_driver *pudev); + +/*! + \brief create a pipe + \param[in] pudev: pointer to usb core instance + \param[in] udev: USB device + \param[in] pp_num: pipe number + \param[in] ep_type: endpoint type + \param[in] ep_mpl: endpoint max packet length + \param[out] none + \retval operation status +*/ +uint8_t usbh_pipe_create (usb_core_driver *pudev, + usb_dev_prop *udev, + uint8_t pp_num, + uint8_t ep_type, + uint16_t ep_mpl) +{ + usb_pipe *pp = &pudev->host.pipe[pp_num]; + + pp->dev_addr = udev->addr; + pp->dev_speed = udev->speed; + pp->ep.type = ep_type; + pp->ep.mps = ep_mpl; + pp->ping = (uint8_t)(udev->speed == PORT_SPEED_HIGH); + + usb_pipe_init (pudev, pp_num); + + return HC_OK; +} + +/*! + \brief modify a pipe + \param[in] pudev: pointer to usb core instance + \param[in] pp_num: pipe number + \param[in] dev_addr: device address + \param[in] dev_speed: device speed + \param[in] ep_mpl: endpoint max packet length + \param[out] none + \retval operation status +*/ +uint8_t usbh_pipe_update (usb_core_driver *pudev, + uint8_t pp_num, + uint8_t dev_addr, + uint32_t dev_speed, + uint16_t ep_mpl) +{ + usb_pipe *pp = &pudev->host.pipe[pp_num]; + + if ((pp->dev_addr != dev_addr) && (dev_addr)) { + pp->dev_addr = dev_addr; + } + + if ((pp->dev_speed != dev_speed) && (dev_speed)) { + pp->dev_speed = dev_speed; + } + + if ((pp->ep.mps != ep_mpl) && (ep_mpl)) { + pp->ep.mps = ep_mpl; + } + + usb_pipe_init (pudev, pp_num); + + return HC_OK; +} + +/*! + \brief allocate a new pipe + \param[in] pudev: pointer to usb core instance + \param[in] ep_addr: endpoint address + \param[out] none + \retval operation status +*/ +uint8_t usbh_pipe_allocate (usb_core_driver *pudev, uint8_t ep_addr) +{ + uint16_t pp_num = usbh_freepipe_get (pudev); + + if (HC_ERROR != pp_num) { + pudev->host.pipe[pp_num].in_used = 1U; + pudev->host.pipe[pp_num].ep.dir = EP_DIR(ep_addr); + pudev->host.pipe[pp_num].ep.num = EP_ID(ep_addr); + } + + return (uint8_t)pp_num; +} + +/*! + \brief free a pipe + \param[in] pudev: pointer to usb core instance + \param[in] pp_num: pipe number + \param[out] none + \retval operation status +*/ +uint8_t usbh_pipe_free (usb_core_driver *pudev, uint8_t pp_num) +{ + if (pp_num < HC_MAX) { + pudev->host.pipe[pp_num].in_used = 0U; + } + + return USBH_OK; +} + +/*! + \brief delete all USB host pipe + \param[in] pudev: pointer to usb core instance + \param[out] none + \retval operation status +*/ +uint8_t usbh_pipe_delete (usb_core_driver *pudev) +{ + uint8_t pp_num = 0U; + + for (pp_num = 2U; pp_num < HC_MAX; pp_num++) { + pudev->host.pipe[pp_num] = (usb_pipe) {0}; + } + + return USBH_OK; +} + +/*! + \brief get a free pipe number for allocation + \param[in] pudev: pointer to usb core instance + \param[out] none + \retval operation status +*/ +static uint16_t usbh_freepipe_get (usb_core_driver *pudev) +{ + uint8_t pp_num = 0U; + + for (pp_num = 0U; pp_num < HC_MAX; pp_num++) { + if (0U == pudev->host.pipe[pp_num].in_used) { + return (uint16_t)pp_num; + } + } + + return HC_ERROR; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Source/usbh_transc.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Source/usbh_transc.c new file mode 100644 index 0000000000..ad20a423f7 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/host/core/Source/usbh_transc.c @@ -0,0 +1,370 @@ +/*! + \file usbh_transc.c + \brief USB host mode transactions driver + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#include "drv_usb_hw.h" +#include "usbh_pipe.h" +#include "usbh_transc.h" + +/* local function prototypes ('static') */ +static usb_urb_state usbh_urb_wait (usbh_host *puhost, uint8_t pp_num, uint32_t wait_time); +static void usbh_setup_transc (usbh_host *puhost); +static void usbh_data_in_transc (usbh_host *puhost); +static void usbh_data_out_transc (usbh_host *puhost); +static void usbh_status_in_transc (usbh_host *puhost); +static void usbh_status_out_transc (usbh_host *puhost); +static uint32_t usbh_request_submit (usb_core_driver *pudev, uint8_t pp_num); + +/*! + \brief send the setup packet to the USB device + \param[in] pudev: pointer to usb core instance + \param[in] buf: data buffer which will be sent to USB device + \param[in] pp_num: pipe number + \param[out] none + \retval operation status +*/ +usbh_status usbh_ctlsetup_send (usb_core_driver *pudev, uint8_t *buf, uint8_t pp_num) +{ + usb_pipe *pp = &pudev->host.pipe[pp_num]; + + pp->DPID = PIPE_DPID_SETUP; + pp->xfer_buf = buf; + pp->xfer_len = USB_SETUP_PACKET_LEN; + + return (usbh_status)usbh_request_submit (pudev, pp_num); +} + +/*! + \brief send a data packet to the USB device + \param[in] pudev: pointer to usb core instance + \param[in] buf: data buffer which will be sent to USB device + \param[in] pp_num: pipe number + \param[in] len: length of the data to be sent + \param[out] none + \retval operation status +*/ +usbh_status usbh_data_send (usb_core_driver *pudev, uint8_t *buf, uint8_t pp_num, uint16_t len) +{ + usb_pipe *pp = &pudev->host.pipe[pp_num]; + + pp->xfer_buf = buf; + pp->xfer_len = len; + + switch (pp->ep.type) { + case USB_EPTYPE_CTRL: + if (0U == len) { + pp->data_toggle_out = 1U; + } + + pp->DPID = PIPE_DPID[pp->data_toggle_out]; + break; + + case USB_EPTYPE_INTR: + pp->DPID = PIPE_DPID[pp->data_toggle_out]; + + pp->data_toggle_out ^= 1U; + break; + + case USB_EPTYPE_BULK: + pp->DPID = PIPE_DPID[pp->data_toggle_out]; + break; + + case USB_EPTYPE_ISOC: + pp->DPID = PIPE_DPID[0]; + break; + + default: + break; + } + + usbh_request_submit (pudev, pp_num); + + return USBH_OK; +} + +/*! + \brief receive a data packet from the USB device + \param[in] pudev: pointer to usb core instance + \param[in] buf: data buffer which will be received from USB device + \param[in] pp_num: pipe number + \param[in] len: length of the data to be received + \param[out] none + \retval operation status +*/ +usbh_status usbh_data_recev (usb_core_driver *pudev, uint8_t *buf, uint8_t pp_num, uint16_t len) +{ + usb_pipe *pp = &pudev->host.pipe[pp_num]; + + pp->xfer_buf = buf; + pp->xfer_len = len; + + switch (pp->ep.type) { + case USB_EPTYPE_CTRL: + pp->DPID = PIPE_DPID[1]; + break; + + case USB_EPTYPE_INTR: + pp->DPID = PIPE_DPID[pp->data_toggle_in]; + + /* Toggle DATA PID */ + pp->data_toggle_in ^= 1U; + break; + + case USB_EPTYPE_BULK: + pp->DPID = PIPE_DPID[pp->data_toggle_in]; + break; + + case USB_EPTYPE_ISOC: + pp->DPID = PIPE_DPID[0]; + break; + + default: + break; + } + + usbh_request_submit (pudev, pp_num); + + return USBH_OK; +} + +/*! + \brief USB control transfer handler + \param[in] puhost: pointer to USB host + \param[out] none + \retval operation status +*/ +usbh_status usbh_ctl_handler (usbh_host *puhost) +{ + usbh_status status = USBH_BUSY; + + switch (puhost->control.ctl_state) { + case CTL_SETUP: + usbh_setup_transc (puhost); + break; + + case CTL_DATA_IN: + usbh_data_in_transc (puhost); + break; + + case CTL_DATA_OUT: + usbh_data_out_transc (puhost); + break; + + case CTL_STATUS_IN: + usbh_status_in_transc (puhost); + break; + + case CTL_STATUS_OUT: + usbh_status_out_transc (puhost); + break; + + case CTL_FINISH: + puhost->control.ctl_state = CTL_IDLE; + + status = USBH_OK; + break; + + case CTL_ERROR: + if (++puhost->control.error_count <= USBH_MAX_ERROR_COUNT) { + /* do the transmission again, starting from SETUP packet */ + puhost->control.ctl_state = CTL_SETUP; + } else { + status = USBH_FAIL; + } + break; + + default: + break; + } + + return status; +} + +/*! + \brief wait for USB URB(USB request block) state + \param[in] puhost: pointer to USB host + \param[in] pp_num: pipe number + \param[in] wait_time: wait time + \param[out] none + \retval USB URB state +*/ +static usb_urb_state usbh_urb_wait (usbh_host *puhost, uint8_t pp_num, uint32_t wait_time) +{ + usb_urb_state urb_status = URB_IDLE; + + while (URB_DONE != (urb_status = usbh_urbstate_get(puhost->data, pp_num))) { + if (URB_NOTREADY == urb_status) { + break; + } else if (URB_STALL == urb_status) { + puhost->control.ctl_state = CTL_SETUP; + break; + } else if (URB_ERROR == urb_status) { + puhost->control.ctl_state = CTL_ERROR; + break; + } else if ((wait_time > 0U) && ((usb_curframe_get(puhost->data)- puhost->control.timer) > wait_time)) { + /* timeout for in transfer */ + puhost->control.ctl_state = CTL_ERROR; + break; + } else { + /* no operation, just wait */ + } + } + + return urb_status; +} + +/*! + \brief USB setup transaction + \param[in] puhost: pointer to USB host + \param[out] none + \retval none +*/ +static void usbh_setup_transc (usbh_host *puhost) +{ + /* send a SETUP packet */ + usbh_ctlsetup_send (puhost->data, + puhost->control.setup.data, + puhost->control.pipe_out_num); + + if (URB_DONE == usbh_urb_wait (puhost, puhost->control.pipe_out_num, 0U)) { + uint8_t dir = (puhost->control.setup.req.bmRequestType & USB_TRX_MASK); + + if (puhost->control.setup.req.wLength) { + if (USB_TRX_IN == dir) { + puhost->control.ctl_state = CTL_DATA_IN; + } else { + puhost->control.ctl_state = CTL_DATA_OUT; + } + } else { + if (USB_TRX_IN == dir) { + puhost->control.ctl_state = CTL_STATUS_OUT; + } else { + puhost->control.ctl_state = CTL_STATUS_IN; + } + } + + /* set the delay timer to enable timeout for data stage completion */ + puhost->control.timer = (uint16_t)usb_curframe_get(puhost->data); + } +} + +/*! + \brief USB data IN transaction + \param[in] puhost: pointer to USB host + \param[out] none + \retval none +*/ +static void usbh_data_in_transc (usbh_host *puhost) +{ + usbh_data_recev (puhost->data, + puhost->control.buf, + puhost->control.pipe_in_num, + puhost->control.ctl_len); + + if (URB_DONE == usbh_urb_wait (puhost, puhost->control.pipe_in_num, DATA_STAGE_TIMEOUT)) { + puhost->control.ctl_state = CTL_STATUS_OUT; + + puhost->control.timer = (uint16_t)usb_curframe_get(puhost->data); + } +} + +/*! + \brief USB data OUT transaction + \param[in] puhost: pointer to USB host + \param[out] none + \retval none +*/ +static void usbh_data_out_transc (usbh_host *puhost) +{ + usbh_pipe_toggle_set(puhost->data, puhost->control.pipe_out_num, 1U); + + usbh_data_send (puhost->data, + puhost->control.buf, + puhost->control.pipe_out_num, + puhost->control.ctl_len); + + if (URB_DONE == usbh_urb_wait (puhost, puhost->control.pipe_out_num, DATA_STAGE_TIMEOUT)) { + puhost->control.ctl_state = CTL_STATUS_IN; + + puhost->control.timer = (uint16_t)usb_curframe_get(puhost->data); + } +} + +/*! + \brief USB status IN transaction + \param[in] puhost: pointer to USB host + \param[out] none + \retval none +*/ +static void usbh_status_in_transc (usbh_host *puhost) +{ + uint8_t pp_num = puhost->control.pipe_in_num; + + usbh_data_recev (puhost->data, NULL, pp_num, 0U); + + if (URB_DONE == usbh_urb_wait (puhost, pp_num, NODATA_STAGE_TIMEOUT)) { + puhost->control.ctl_state = CTL_FINISH; + } +} + +/*! + \brief USB status OUT transaction + \param[in] puhost: pointer to USB host + \param[out] none + \retval none +*/ +static void usbh_status_out_transc (usbh_host *puhost) +{ + uint8_t pp_num = puhost->control.pipe_out_num; + + usbh_data_send (puhost->data, NULL, pp_num, 0U); + + if (URB_DONE == usbh_urb_wait (puhost, pp_num, NODATA_STAGE_TIMEOUT)) { + puhost->control.ctl_state = CTL_FINISH; + } +} + +/*! + \brief prepare a pipe and start a transfer + \param[in] pudev: pointer to usb core instance + \param[in] pp_num: pipe number + \param[out] none + \retval operation status +*/ +static uint32_t usbh_request_submit (usb_core_driver *pudev, uint8_t pp_num) +{ + pudev->host.pipe[pp_num].urb_state = URB_IDLE; + pudev->host.pipe[pp_num].xfer_count = 0U; + + return (uint32_t)usb_pipe_xfer (pudev, pp_num); +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/class/cdc/usb_cdc.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/class/cdc/usb_cdc.h new file mode 100644 index 0000000000..88d9970403 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/class/cdc/usb_cdc.h @@ -0,0 +1,180 @@ +/*! + \file usb_cdc.h + \brief the header file of communication device class standard + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USB_CDC_H +#define __USB_CDC_H + +#include "usb_ch9_std.h" + +/* communications device class code */ +#define USB_CLASS_CDC 0x02U + +/* communications interface class control protocol codes */ +#define USB_CDC_PROTOCOL_NONE 0x00U +#define USB_CDC_PROTOCOL_AT 0x01U +#define USB_CDC_PROTOCOL_VENDOR 0xFFU + +/* data interface class code */ +#define USB_CLASS_DATA 0x0AU + +#define USB_DESCTYPE_CDC_ACM 0x21U +#define USB_DESCTYPE_CS_INTERFACE 0x24U + +#define USB_CDC_ACM_CONFIG_DESC_SIZE 0x43U + +/* class-specific notification codes for pstn subclasses */ +#define USB_CDC_NOTIFY_SERIAL_STATE 0x20U + +/* class-specific request codes */ +#define SEND_ENCAPSULATED_COMMAND 0x00U +#define GET_ENCAPSULATED_RESPONSE 0x01U +#define SET_COMM_FEATURE 0x02U +#define GET_COMM_FEATURE 0x03U +#define CLEAR_COMM_FEATURE 0x04U + +#define SET_AUX_LINE_STATE 0x10U +#define SET_HOOK_STATE 0x11U +#define PULSE_SETUP 0x12U +#define SEND_PULSE 0x13U +#define SET_PULSE_TIME 0x14U +#define RING_AUX_JACK 0x15U + +#define SET_LINE_CODING 0x20U +#define GET_LINE_CODING 0x21U +#define SET_CONTROL_LINE_STATE 0x22U +#define SEND_BREAK 0x23U +#define NO_CMD 0xFFU + +#define SET_RINGER_PARMS 0x30U +#define GET_RINGER_PARMS 0x31U +#define SET_OPERATION_PARMS 0x32U +#define GET_OPERATION_PARMS 0x33U +#define SET_LINE_PARMS 0x34U +#define GET_LINE_PARMS 0x35U +#define DIAL_DIGITS 0x36U +#define SET_UNIT_PARAMETER 0x37U +#define GET_UNIT_PARAMETER 0x38U +#define CLEAR_UNIT_PARAMETER 0x39U +#define GET_PROFILE 0x3AU + +#define SET_ETHERNET_MULTICAST_FILTERS 0x40U +#define SET_ETHERNET_POWER_MANAGEMENT_PATTERN FILTER 0x41U +#define GET_ETHERNET_POWER_MANAGEMENT_PATTERN FILTER 0x42U +#define SET_ETHERNET_PACKET_FILTER 0x43U +#define GET_ETHERNET_STATISTIC 0x44U + +#define SET_ATM_DATA_FORMAT 0x50U +#define GET_ATM_DEVICE_STATISTICS 0x51U +#define SET_ATM_DEFAULT_VC 0x52U +#define GET_ATM_VC_STATISTICS 0x53U + +/* wValue for set control line state */ +#define CDC_ACTIVATE_CARRIER_SIGNAL_RTS 0x0002U +#define CDC_DEACTIVATE_CARRIER_SIGNAL_RTS 0x0000U +#define CDC_ACTIVATE_SIGNAL_DTR 0x0001U +#define CDC_DEACTIVATE_SIGNAL_DTR 0x0000U + +/* CDC subclass code */ +enum usb_cdc_subclass { + USB_CDC_SUBCLASS_RESERVED = 0U, /*!< reserved */ + USB_CDC_SUBCLASS_DLCM, /*!< direct line control mode */ + USB_CDC_SUBCLASS_ACM, /*!< abstract control mode */ + USB_CDC_SUBCLASS_TCM, /*!< telephone control mode */ + USB_CDC_SUBCLASS_MCM, /*!< multichannel control model */ + USB_CDC_SUBCLASS_CCM, /*!< CAPI control model */ + USB_CDC_SUBCLASS_ENCM, /*!< ethernet networking control model */ + USB_CDC_SUBCLASS_ANCM /*!< ATM networking control model */ +}; + +#pragma pack(1) + +/* cdc acm line coding structure */ +typedef struct { + uint32_t dwDTERate; /*!< data terminal rate */ + uint8_t bCharFormat; /*!< stop bits */ + uint8_t bParityType; /*!< parity */ + uint8_t bDataBits; /*!< data bits */ +} acm_line; + +/* notification structure */ +typedef struct { + uint8_t bmRequestType; /*!< type of request */ + uint8_t bNotification; /*!< communication interface class notifications */ + uint16_t wValue; /*!< value of notification */ + uint16_t wIndex; /*!< index of interface */ + uint16_t wLength; /*!< length of notification data */ +} acm_notification; + +typedef struct { + usb_desc_header header; /*!< descriptor header, including type and size. */ + uint8_t bDescriptorSubtype; /*!< bDescriptorSubtype: header function descriptor */ + uint16_t bcdCDC; /*!< bcdCDC: low byte of spec release number (CDC1.10) */ +} usb_desc_header_func; + +typedef struct { + usb_desc_header header; /*!< descriptor header, including type and size. */ + uint8_t bDescriptorSubtype; /*!< bDescriptorSubtype: call management function descriptor */ + uint8_t bmCapabilities; /*!< bmCapabilities: D0 is reset, D1 is ignored */ + uint8_t bDataInterface; /*!< bDataInterface: 1 interface used for call management */ +} usb_desc_call_managment_func; + +typedef struct { + usb_desc_header header; /*!< descriptor header, including type and size. */ + uint8_t bDescriptorSubtype; /*!< bDescriptorSubtype: abstract control management descriptor */ + uint8_t bmCapabilities; /*!< bmCapabilities: D1 */ +} usb_desc_acm_func; + +typedef struct { + usb_desc_header header; /*!< descriptor header, including type and size. */ + uint8_t bDescriptorSubtype; /*!< bDescriptorSubtype: union function descriptor */ + uint8_t bMasterInterface; /*!< bMasterInterface: communication class interface */ + uint8_t bSlaveInterface0; /*!< bSlaveInterface0: data class interface */ +} usb_desc_union_func; + +#pragma pack() + +typedef struct { + usb_desc_config config; + usb_desc_itf cmd_itf; + usb_desc_header_func cdc_header; + usb_desc_call_managment_func cdc_call_managment; + usb_desc_acm_func cdc_acm; + usb_desc_union_func cdc_union; + usb_desc_ep cdc_cmd_endpoint; + usb_desc_itf cdc_data_interface; + usb_desc_ep cdc_out_endpoint; + usb_desc_ep cdc_in_endpoint; +} usb_cdc_desc_config_set; + +#endif /* __USB_CDC_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/class/hid/usb_hid.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/class/hid/usb_hid.h new file mode 100644 index 0000000000..34325104b1 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/class/hid/usb_hid.h @@ -0,0 +1,83 @@ +/*! + \file usb_hid.h + \brief definitions for the USB HID class + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USB_HID_H +#define __USB_HID_H + +#include "usb_ch9_std.h" + +#define USB_HID_CLASS 0x03U + +#define USB_DESCTYPE_HID 0x21U +#define USB_DESCTYPE_REPORT 0x22U + +/* HID subclass code */ +#define USB_HID_SUBCLASS_BOOT_ITF 0x01U + +/* HID protocol codes */ +#define USB_HID_PROTOCOL_KEYBOARD 0x01U +#define USB_HID_PROTOCOL_MOUSE 0x02U + +#define GET_REPORT 0x01U +#define GET_IDLE 0x02U +#define GET_PROTOCOL 0x03U +#define SET_REPORT 0x09U +#define SET_IDLE 0x0AU +#define SET_PROTOCOL 0x0BU + +#pragma pack(1) + +typedef struct +{ + usb_desc_header header; /*!< regular descriptor header containing the descriptor's type and length */ + + uint16_t bcdHID; /*!< BCD encoded version that the HID descriptor and device complies to */ + uint8_t bCountryCode; /*!< country code of the localized device, or zero if universal */ + uint8_t bNumDescriptors; /*!< total number of HID report descriptors for the interface */ + uint8_t bDescriptorType; /*!< type of HID report */ + uint16_t wDescriptorLength; /*!< length of the associated HID report descriptor, in bytes */ +} usb_desc_hid; + +#pragma pack() + +typedef struct +{ + usb_desc_config config; + usb_desc_itf hid_itf; + usb_desc_hid hid_vendor; + usb_desc_ep hid_epin; + usb_desc_ep hid_epout; +}usb_hid_desc_config_set; + +#endif /* __USB_HID_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/class/msc/msc_bbb.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/class/msc/msc_bbb.h new file mode 100644 index 0000000000..9ad59a37f1 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/class/msc/msc_bbb.h @@ -0,0 +1,69 @@ +/*! + \file msc_bbb.h + \brief definitions for the USB MSC BBB(bulk/bulk/bulk) protocol + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __MSC_BBB_H +#define __MSC_BBB_H + +#include "usb_ch9_std.h" + +#define BBB_CBW_SIGNATURE 0x43425355U +#define BBB_CSW_SIGNATURE 0x53425355U +#define BBB_CBW_LENGTH 31U +#define BBB_CSW_LENGTH 13U + +typedef struct { + uint32_t dCBWSignature; + uint32_t dCBWTag; + uint32_t dCBWDataTransferLength; + uint8_t bmCBWFlags; + uint8_t bCBWLUN; + uint8_t bCBWCBLength; + uint8_t CBWCB[16]; +}msc_bbb_cbw; + +typedef struct { + uint32_t dCSWSignature; + uint32_t dCSWTag; + uint32_t dCSWDataResidue; + uint8_t bCSWStatus; +}msc_bbb_csw; + +/* CSW command status */ +enum msc_csw_status { + CSW_CMD_PASSED = 0, + CSW_CMD_FAILED, + CSW_PHASE_ERROR +}; + +#endif /* __MSC_BBB_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/class/msc/msc_scsi.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/class/msc/msc_scsi.h new file mode 100644 index 0000000000..7207c9c082 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/class/msc/msc_scsi.h @@ -0,0 +1,117 @@ +/*! + \file msc_scsi.h + \brief definitions for the USB MSC SCSI commands + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __MSC_SCSI_H +#define __MSC_SCSI_H + +#include "usb_ch9_std.h" + +/* SCSI commands */ +#define SCSI_FORMAT_UNIT 0x04U +#define SCSI_INQUIRY 0x12U +#define SCSI_MODE_SELECT6 0x15U +#define SCSI_MODE_SELECT10 0x55U +#define SCSI_MODE_SENSE6 0x1AU +#define SCSI_READ_TOC_DATA 0x43U +#define SCSI_MODE_SENSE10 0x5AU +#define SCSI_ALLOW_MEDIUM_REMOVAL 0x1EU +#define SCSI_READ6 0x08U +#define SCSI_READ10 0x28U +#define SCSI_READ12 0xA8U +#define SCSI_READ16 0x88U + +#define SCSI_READ_CAPACITY10 0x25U +#define SCSI_READ_CAPACITY16 0x9EU + +#define SCSI_REQUEST_SENSE 0x03U +#define SCSI_START_STOP_UNIT 0x1BU +#define SCSI_TEST_UNIT_READY 0x00U +#define SCSI_WRITE6 0x0AU +#define SCSI_WRITE10 0x2AU +#define SCSI_WRITE12 0xAAU +#define SCSI_WRITE16 0x8AU + +#define SCSI_VERIFY10 0x2FU +#define SCSI_VERIFY12 0xAFU +#define SCSI_VERIFY16 0x8FU + +#define SCSI_SEND_DIAGNOSTIC 0x1DU +#define SCSI_READ_FORMAT_CAPACITIES 0x23U + +#define INVALID_CDB 0x20U +#define INVALID_FIELED_IN_COMMAND 0x24U +#define PARAMETER_LIST_LENGTH_ERROR 0x1AU +#define INVALID_FIELD_IN_PARAMETER_LIST 0x26U +#define ADDRESS_OUT_OF_RANGE 0x21U +#define MEDIUM_NOT_PRESENT 0x3AU +#define MEDIUM_HAVE_CHANGED 0x28U +#define WRITE_PROTECTED 0x27U +#define UNRECOVERED_READ_ERROR 0x11U +#define WRITE_FAULT 0x03U + +#define READ_FORMAT_CAPACITY_DATA_LEN 0x0CU +#define READ_CAPACITY10_DATA_LEN 0x08U +#define MODE_SENSE10_DATA_LEN 0x08U +#define MODE_SENSE6_DATA_LEN 0x04U +#define READ_TOC_CMD_LEN 0x14U +#define REQUEST_SENSE_DATA_LEN 0x12U +#define STANDARD_INQUIRY_DATA_LEN 0x24U +#define BLKVFY 0x04U + +enum sense_state { + NO_SENSE = 0U, + RECOVERED_ERROR, + NOT_READY, + MEDIUM_ERROR, + HARDWARE_ERROR, + ILLEGAL_REQUEST, + UNIT_ATTENTION, + DATA_PROTECT, + BLANK_CHECK, + VENDOR_SPECIFIC, + COPY_ABORTED, + ABORTED_COMMAND, + RESERVED, + VOLUME_OVERFLOW, + MISCOMPARE +}; + +typedef struct { + uint8_t SenseKey; + uint32_t Information; + uint8_t ASC; + uint8_t ASCQ; +} msc_scsi_sense; + +#endif /* __MSC_SCSI_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/class/msc/usb_msc.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/class/msc/usb_msc.h new file mode 100644 index 0000000000..759fee5e1d --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/class/msc/usb_msc.h @@ -0,0 +1,68 @@ +/*! + \file usb_msc.h + \brief definitions for the USB MSC class + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USB_MSC_H +#define __USB_MSC_H + +#include "usb_ch9_std.h" + +/* mass storage device class code */ +#define USB_CLASS_MSC 0x08U + +/* mass storage subclass code */ +#define USB_MSC_SUBCLASS_RBC 0x01U +#define USB_MSC_SUBCLASS_ATAPI 0x02U +#define USB_MSC_SUBCLASS_UFI 0x04U +#define USB_MSC_SUBCLASS_SCSI 0x06U +#define USB_MSC_SUBCLASS_LOCKABLE 0x07U +#define USB_MSC_SUBCLASS_IEEE1667 0x08U + +/* mass storage interface class control protocol codes */ +#define USB_MSC_PROTOCOL_CBI 0x00U +#define USB_MSC_PROTOCOL_CBI_ALT 0x01U +#define USB_MSC_PROTOCOL_BBB 0x50U + +/* mass storage request codes */ +#define USB_MSC_REQ_CODES_ADSC 0x00U +#define USB_MSC_REQ_CODES_GET 0xFCU +#define USB_MSC_REQ_CODES_PUT 0xFDU +#define USB_MSC_REQ_CODES_GML 0xFEU +#define USB_MSC_REQ_CODES_BOMSR 0xFFU + +#define BBB_GET_MAX_LUN 0xFEU +#define BBB_RESET 0xFFU + +#define SCSI_CMD_LENGTH 16U + +#endif /* __USB_MSC_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/common/usb_ch9_std.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/common/usb_ch9_std.h new file mode 100644 index 0000000000..c398c0f1ca --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/GD32VF103_usbfs_library/ustd/common/usb_ch9_std.h @@ -0,0 +1,248 @@ +/*! + \file usb_ch9_std.h + \brief USB 2.0 standard defines + + \version 2020-08-04, V1.1.0, firmware for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef __USB_CH9_STD_H +#define __USB_CH9_STD_H + +#include "usb_conf.h" + +#define USB_DEV_QUALIFIER_DESC_LEN 0x0AU /*!< USB device qualifier descriptor length */ +#define USB_DEV_DESC_LEN 0x12U /*!< USB device descriptor length */ +#define USB_CFG_DESC_LEN 0x09U /*!< USB configuration descriptor length */ +#define USB_ITF_DESC_LEN 0x09U /*!< USB interface descriptor length */ +#define USB_EP_DESC_LEN 0x07U /*!< USB endpoint descriptor length */ +#define USB_IAD_DESC_LEN 0x08U /*!< USB IAD descriptor length */ +#define USB_OTG_DESC_LEN 0x03U /*!< USB device OTG descriptor length */ + +#define USB_SETUP_PACKET_LEN 0x08U /*!< USB setup packet length */ + +/* bit 7 of bmRequestType: data phase transfer direction */ +#define USB_TRX_MASK 0x80U /*!< USB transfer direction mask */ +#define USB_TRX_OUT 0x00U /*!< USB transfer OUT direction */ +#define USB_TRX_IN 0x80U /*!< USB transfer IN direction */ + +/* bit 6..5 of bmRequestType: request type */ +#define USB_REQTYPE_STRD 0x00U /*!< USB standard request */ +#define USB_REQTYPE_CLASS 0x20U /*!< USB class request */ +#define USB_REQTYPE_VENDOR 0x40U /*!< USB vendor request */ +#define USB_REQTYPE_MASK 0x60U /*!< USB request mask */ + +#define USBD_BUS_POWERED 0x00U /*!< USB bus power supply */ +#define USBD_SELF_POWERED 0x01U /*!< USB self power supply */ + +#define USB_STATUS_REMOTE_WAKEUP 2U /*!< USB is in remote wakeup status */ +#define USB_STATUS_SELF_POWERED 1U /*!< USB is in self powered status */ + +/* bit 4..0 of bmRequestType: recipient type */ +enum _usb_recp_type { + USB_RECPTYPE_DEV = 0x0U, /*!< USB device request type */ + USB_RECPTYPE_ITF = 0x1U, /*!< USB interface request type */ + USB_RECPTYPE_EP = 0x2U, /*!< USB endpoint request type */ + USB_RECPTYPE_MASK = 0x3U /*!< USB request type mask */ +}; + +/* bRequest value */ +enum _usb_request { + USB_GET_STATUS = 0x0U, /*!< USB get status request */ + USB_CLEAR_FEATURE = 0x1U, /*!< USB clear feature request */ + USB_RESERVED2 = 0x2U, + USB_SET_FEATURE = 0x3U, /*!< USB set feature request */ + USB_RESERVED4 = 0x4U, + USB_SET_ADDRESS = 0x5U, /*!< USB set address request */ + USB_GET_DESCRIPTOR = 0x6U, /*!< USB get descriptor request */ + USB_SET_DESCRIPTOR = 0x7U, /*!< USB set descriptor request */ + USB_GET_CONFIGURATION = 0x8U, /*!< USB get configuration request */ + USB_SET_CONFIGURATION = 0x9U, /*!< USB set configuration request */ + USB_GET_INTERFACE = 0xAU, /*!< USB get interface request */ + USB_SET_INTERFACE = 0xBU, /*!< USB set interface request */ + USB_SYNCH_FRAME = 0xCU /*!< USB synchronize frame request */ +}; + +/* descriptor types of USB specifications */ +enum _usb_desctype { + USB_DESCTYPE_DEV = 0x1U, /*!< USB device descriptor type */ + USB_DESCTYPE_CONFIG = 0x2U, /*!< USB configuration descriptor type */ + USB_DESCTYPE_STR = 0x3U, /*!< USB string descriptor type */ + USB_DESCTYPE_ITF = 0x4U, /*!< USB interface descriptor type */ + USB_DESCTYPE_EP = 0x5U, /*!< USB endpoint descriptor type */ + USB_DESCTYPE_DEV_QUALIFIER = 0x6U, /*!< USB device qualifier descriptor type */ + USB_DESCTYPE_OTHER_SPD_CONFIG = 0x7U, /*!< USB other speed configuration descriptor type */ + USB_DESCTYPE_ITF_POWER = 0x8U, /*!< USB interface power descriptor type */ + USB_DESCTYPE_IAD = 0xBU, /*!< USB interface association descriptor type */ + USB_DESCTYPE_BOS = 0xFU /*!< USB BOS descriptor type */ +}; + +/* USB Endpoint Descriptor bmAttributes bit definitions */ +/* bits 1..0 : transfer type */ +enum _usbx_type { + USB_EP_ATTR_CTL = 0x0U, /*!< USB control transfer type */ + USB_EP_ATTR_ISO = 0x1U, /*!< USB Isochronous transfer type */ + USB_EP_ATTR_BULK = 0x2U, /*!< USB Bulk transfer type */ + USB_EP_ATTR_INT = 0x3U /*!< USB Interrupt transfer type */ +}; + +/* bits 3..2 : Sync type (only if ISOCHRONOUS) */ +#define USB_EP_ATTR_NOSYNC 0x00U /*!< No Synchronization */ +#define USB_EP_ATTR_ASYNC 0x04U /*!< Asynchronous */ +#define USB_EP_ATTR_ADAPTIVE 0x08U /*!< Adaptive */ +#define USB_EP_ATTR_SYNC 0x0CU /*!< Synchronous */ +#define USB_EP_ATTR_SYNCTYPE 0x0CU /*!< Synchronous type */ + +/* bits 5..4 : usage type (only if ISOCHRONOUS) */ +#define USB_EP_ATTR_DATA 0x00U /*!< Data endpoint */ +#define USB_EP_ATTR_FEEDBACK 0x10U /*!< Feedback endpoint */ +#define USB_EP_ATTR_IMPLICIT_FEEDBACK_DATA 0x20U /*!< Implicit feedback Data endpoint */ +#define USB_EP_ATTR_USAGETYPE 0x30U /*!< Usage type */ + +/* endpoint max packet size bits12..11 */ +#define USB_EP_MPS_ADD_0 (0x00 << 11) /*!< None(1 transaction per microframe */ +#define USB_EP_MPS_ADD_1 (0x01 << 11) /*!< 1 additional(2 transaction per microframe */ +#define USB_EP_MPS_ADD_2 (0x02 << 11) /*!< 2 additional(3 transaction per microframe */ + +#define FEATURE_SELECTOR_EP 0x00U /*!< USB endpoint feature selector */ +#define FEATURE_SELECTOR_DEV 0x01U /*!< USB device feature selector */ +#define FEATURE_SELECTOR_REMOTEWAKEUP 0x01U /*!< USB feature selector remote wakeup */ + +#define BYTE_SWAP(addr) (((uint16_t)(*((uint8_t *)(addr)))) + \ + (uint16_t)(((uint16_t)(*(((uint8_t *)(addr)) + 1U))) << 8U)) + +#define BYTE_LOW(x) ((uint8_t)((x) & 0x00FFU)) +#define BYTE_HIGH(x) ((uint8_t)(((x) & 0xFF00U) >> 8U)) + +#define USB_MIN(a, b) (((a) < (b)) ? (a) : (b)) + +#define USB_DEFAULT_CONFIG 0U + +/* USB classes */ +#define USB_CLASS_HID 0x03U /*!< USB HID class */ +#define USB_CLASS_MSC 0x08U /*!< USB MSC class */ + +/* use the following values when USB host need to get descriptor */ +#define USBH_DESC(x) (((x)<< 8U) & 0xFF00U) + +/* as per USB specs 9.2.6.4 :standard request with data request timeout: 5sec + standard request with no data stage timeout : 50ms */ +#define DATA_STAGE_TIMEOUT 5000U /*!< USB data stage timeout*/ +#define NODATA_STAGE_TIMEOUT 50U /*!< USB no data stage timeout*/ + +#pragma pack(1) + +/* USB standard device request structure */ +typedef struct _usb_req { + uint8_t bmRequestType; /*!< type of request */ + uint8_t bRequest; /*!< request of setup packet */ + uint16_t wValue; /*!< value of setup packet */ + uint16_t wIndex; /*!< index of setup packet */ + uint16_t wLength; /*!< length of setup packet */ +} usb_req; + +/* USB setup packet define */ +typedef union _usb_setup { + uint8_t data[8]; + + usb_req req; +} usb_setup; + +/* USB descriptor defines */ + +typedef struct _usb_desc_header { + uint8_t bLength; /*!< size of the descriptor */ + uint8_t bDescriptorType; /*!< type of the descriptor */ +} usb_desc_header; + +typedef struct _usb_desc_dev { + usb_desc_header header; /*!< descriptor header, including type and size */ + + uint16_t bcdUSB; /*!< BCD of the supported USB specification */ + uint8_t bDeviceClass; /*!< USB device class */ + uint8_t bDeviceSubClass; /*!< USB device subclass */ + uint8_t bDeviceProtocol; /*!< USB device protocol */ + uint8_t bMaxPacketSize0; /*!< size of the control (address 0) endpoint's bank in bytes */ + uint16_t idVendor; /*!< vendor ID for the USB product */ + uint16_t idProduct; /*!< unique product ID for the USB product */ + uint16_t bcdDevice; /*!< product release (version) number */ + uint8_t iManufacturer; /*!< string index for the manufacturer's name */ + uint8_t iProduct; /*!< string index for the product name/details */ + uint8_t iSerialNumber; /*!< string index for the product's globally unique hexadecimal serial number */ + uint8_t bNumberConfigurations; /*!< total number of configurations supported by the device */ +} usb_desc_dev; + +typedef struct _usb_desc_config { + usb_desc_header header; /*!< descriptor header, including type and size */ + + uint16_t wTotalLength; /*!< size of the configuration descriptor header,and all sub descriptors inside the configuration */ + uint8_t bNumInterfaces; /*!< total number of interfaces in the configuration */ + uint8_t bConfigurationValue; /*!< configuration index of the current configuration */ + uint8_t iConfiguration; /*!< index of a string descriptor describing the configuration */ + uint8_t bmAttributes; /*!< configuration attributes */ + uint8_t bMaxPower; /*!< maximum power consumption of the device while in the current configuration */ +} usb_desc_config; + +typedef struct _usb_desc_itf { + usb_desc_header header; /*!< descriptor header, including type and size */ + + uint8_t bInterfaceNumber; /*!< index of the interface in the current configuration */ + uint8_t bAlternateSetting; /*!< alternate setting for the interface number */ + uint8_t bNumEndpoints; /*!< total number of endpoints in the interface */ + uint8_t bInterfaceClass; /*!< interface class ID */ + uint8_t bInterfaceSubClass; /*!< interface subclass ID */ + uint8_t bInterfaceProtocol; /*!< interface protocol ID */ + uint8_t iInterface; /*!< index of the string descriptor describing the interface */ +} usb_desc_itf; + +typedef struct _usb_desc_ep { + usb_desc_header header; /*!< descriptor header, including type and size. */ + + uint8_t bEndpointAddress; /*!< logical address of the endpoint */ + uint8_t bmAttributes; /*!< endpoint attributes */ + uint16_t wMaxPacketSize; /*!< size of the endpoint bank, in bytes */ + uint8_t bInterval; /*!< polling interval in milliseconds for the endpoint if it is an INTERRUPT or ISOCHRONOUS type */ +} usb_desc_ep; + +typedef struct _usb_desc_LANGID { + usb_desc_header header; /*!< descriptor header, including type and size. */ + uint16_t wLANGID; /*!< LANGID code */ +} usb_desc_LANGID; + +typedef struct _usb_desc_str { + usb_desc_header header; /*!< descriptor header, including type and size. */ + uint16_t unicode_string[64]; /*!< unicode string data */ +} usb_desc_str; + +#pragma pack() + +/* compute string descriptor length */ +#define USB_STRING_LEN(unicode_chars) (sizeof(usb_desc_header) + ((unicode_chars) << 1U)) + +#endif /* __USB_CH9_STD_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/n200_eclic.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/n200_eclic.h new file mode 100644 index 0000000000..a7b3240a5e --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/n200_eclic.h @@ -0,0 +1,46 @@ +/* See LICENSE file for licence details */ + +#ifndef N200_ECLIC_H +#define N200_ECLIC_H + +#include + +#define ECLICINTCTLBITS 4 + +/*ECLIC memory map */ +/* Offset */ +/* 0x0000 1B RW ecliccfg */ +#define ECLIC_CFG_OFFSET 0x0 +/* 0x0004 4B R eclicinfo */ +#define ECLIC_INFO_OFFSET 0x4 +/* 0x000B 1B RW mintthresh */ +#define ECLIC_MTH_OFFSET 0xB + +/* 0x1000+4*i 1B/input RW eclicintip[i] */ +#define ECLIC_INT_IP_OFFSET _AC(0x1000,UL) +/* 0x1001+4*i 1B/input RW eclicintie[i] */ +#define ECLIC_INT_IE_OFFSET _AC(0x1001,UL) +/* 0x1002+4*i 1B/input RW eclicintattr[i]*/ +#define ECLIC_INT_ATTR_OFFSET _AC(0x1002,UL) + +#define ECLIC_INT_ATTR_SHV 0x01 +#define ECLIC_INT_ATTR_TRIG_LEVEL 0x00 +#define ECLIC_INT_ATTR_TRIG_EDGE 0x02 +#define ECLIC_INT_ATTR_TRIG_POS 0x00 +#define ECLIC_INT_ATTR_TRIG_NEG 0x04 + +/* 0x1003+4*i 1B/input RW eclicintctl[i] */ +#define ECLIC_INT_CTRL_OFFSET _AC(0x1003,UL) + +#define ECLIC_ADDR_BASE 0xd2000000 + + +#define ECLIC_CFG_NLBITS_MASK _AC(0x1E,UL) +#define ECLIC_CFG_NLBITS_LSB (1u) + +#define MSIP_HANDLER eclic_msip_handler +#define MTIME_HANDLER eclic_mtip_handler +#define BWEI_HANDLER eclic_bwei_handler +#define PMOVI_HANDLER eclic_pmovi_handler + +#endif diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/n200_func.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/n200_func.c new file mode 100644 index 0000000000..fb8b0e950a --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/n200_func.c @@ -0,0 +1,424 @@ +/* See LICENSE for license details. */ +#include +#include +#include +#include + +#if defined (__ICCRISCV__) + #include "compiler.h" +#elif defined ( __GNUC__ ) + #include +#endif + +#include "riscv_encoding.h" +#include "n200_func.h" + +/* Configure PMP to make all the address space accesable and executable */ +void pmp_open_all_space(void){ + /* Config entry0 addr to all 1s to make the range cover all space */ + asm volatile ("li x6, 0xffffffff":::"x6"); + asm volatile ("csrw pmpaddr0, x6":::); + /* Config entry0 cfg to make it NAPOT address mode, and R/W/X okay */ + asm volatile ("li x6, 0x7f":::"x6"); + asm volatile ("csrw pmpcfg0, x6":::); +} + +void switch_m2u_mode(void){ +#if defined (__ICCRISCV__) + clear_csr (CSR_MSTATUS,MSTATUS_MPP); +#elif defined ( __GNUC__ ) + clear_csr (mstatus,MSTATUS_MPP); +#endif + /* printf("\nIn the m2u function, the mstatus is 0x%x\n", read_csr(mstatus)); */ + /* printf("\nIn the m2u function, the mepc is 0x%x\n", read_csr(mepc)); */ +#if defined ( __GNUC__ ) + asm volatile ("la x6, 1f ":::"x6"); +#endif + asm volatile ("csrw mepc, x6":::); + asm volatile ("mret":::); + asm volatile ("1:":::); +} + +uint32_t mtime_lo(void) +{ + return *(volatile uint32_t *)(TIMER_CTRL_ADDR + TIMER_MTIME); +} + + +uint32_t mtime_hi(void) +{ + return *(volatile uint32_t *)(TIMER_CTRL_ADDR + TIMER_MTIME + 4); +} + +uint64_t get_timer_value(void) +{ + while (1) { + uint32_t hi = mtime_hi(); + uint32_t lo = mtime_lo(); + if (hi == mtime_hi()) + return ((uint64_t)hi << 32) | lo; + } +} + +uint32_t get_timer_freq(void) +{ + return TIMER_FREQ; +} + +uint64_t get_instret_value(void) +{ + while (1) { +#if defined (__ICCRISCV__) + uint32_t hi = read_csr(CSR_MINSTRETH); + uint32_t lo = read_csr(CSR_MINSTRETH); + if (hi == read_csr(CSR_MINSTRETH)) +#elif defined ( __GNUC__ ) + uint32_t hi = read_csr(minstreth); + uint32_t lo = read_csr(minstret); + if (hi == read_csr(minstreth)) +#endif + + return ((uint64_t)hi << 32) | lo; + } +} + +uint64_t get_cycle_value(void) +{ + while (1) { +#if defined (__ICCRISCV__) + uint32_t hi = read_csr(CSR_MCYCLEH); + uint32_t lo = read_csr(CSR_MCYCLE); + if (hi == read_csr(CSR_MCYCLEH)) +#elif defined ( __GNUC__ ) + uint32_t hi = read_csr(mcycleh); + uint32_t lo = read_csr(mcycle); + if (hi == read_csr(mcycleh)) +#endif + + return ((uint64_t)hi << 32) | lo; + } +} + +uint32_t __attribute__((noinline)) measure_cpu_freq(size_t n) +{ + uint32_t start_mtime, delta_mtime; + uint32_t mtime_freq = get_timer_freq(); + + /* Don't start measuruing until we see an mtime tick */ + uint32_t tmp = mtime_lo(); + do { + start_mtime = mtime_lo(); + } while (start_mtime == tmp); + +#if defined (__ICCRISCV__) + uint32_t start_mcycle = read_csr(CSR_MCYCLE); +#elif defined ( __GNUC__ ) + uint32_t start_mcycle = read_csr(mcycle); +#endif + + do { + delta_mtime = mtime_lo() - start_mtime; + } while (delta_mtime < n); + +#if defined (__ICCRISCV__) + uint32_t delta_mcycle = read_csr(CSR_MCYCLE) - start_mcycle; +#elif defined ( __GNUC__ ) + uint32_t delta_mcycle = read_csr(mcycle) - start_mcycle; +#endif + + return (delta_mcycle / delta_mtime) * mtime_freq + + ((delta_mcycle % delta_mtime) * mtime_freq) / delta_mtime; +} + +uint32_t get_cpu_freq(void) +{ + uint32_t cpu_freq; + + /* warm up */ + measure_cpu_freq(1); + /* measure for real */ + cpu_freq = measure_cpu_freq(100); + + return cpu_freq; +} + +/* Note that there are no assertions or bounds checking on these */ +/* parameter values. */ +void eclic_init ( uint32_t num_irq ) +{ + + typedef volatile uint32_t vuint32_t; + + /* clear cfg register */ + *(volatile uint8_t*)(ECLIC_ADDR_BASE+ECLIC_CFG_OFFSET)=0; + + /* clear minthresh register */ + *(volatile uint8_t*)(ECLIC_ADDR_BASE+ECLIC_MTH_OFFSET)=0; + + /* clear all IP/IE/ATTR/CTRL bits for all interrupt sources */ + vuint32_t * ptr; + + vuint32_t * base = (vuint32_t*)(ECLIC_ADDR_BASE + ECLIC_INT_IP_OFFSET); + vuint32_t * upper = (vuint32_t*)(base + num_irq*4); + + for (ptr = base; ptr < upper; ptr=ptr+4){ + *ptr = 0; + } +} + +void eclic_enable_interrupt (uint32_t source) { + *(volatile uint8_t*)(ECLIC_ADDR_BASE+ECLIC_INT_IE_OFFSET+source*4) = 1; +} + +void eclic_disable_interrupt (uint32_t source){ + *(volatile uint8_t*)(ECLIC_ADDR_BASE+ECLIC_INT_IE_OFFSET+source*4) = 0; +} + +void eclic_set_pending(uint32_t source){ + *(volatile uint8_t*)(ECLIC_ADDR_BASE+ECLIC_INT_IP_OFFSET+source*4) = 1; +} + +void eclic_clear_pending(uint32_t source){ + *(volatile uint8_t*)(ECLIC_ADDR_BASE+ECLIC_INT_IP_OFFSET+source*4) = 0; +} + +void eclic_set_intctrl (uint32_t source, uint8_t intctrl){ + *(volatile uint8_t*)(ECLIC_ADDR_BASE+ECLIC_INT_CTRL_OFFSET+source*4) = intctrl; +} + +uint8_t eclic_get_intctrl (uint32_t source){ + return *(volatile uint8_t*)(ECLIC_ADDR_BASE+ECLIC_INT_CTRL_OFFSET+source*4); +} + +void eclic_set_intattr (uint32_t source, uint8_t intattr){ + *(volatile uint8_t*)(ECLIC_ADDR_BASE+ECLIC_INT_ATTR_OFFSET+source*4) = intattr; +} + +uint8_t eclic_get_intattr (uint32_t source){ + return *(volatile uint8_t*)(ECLIC_ADDR_BASE+ECLIC_INT_ATTR_OFFSET+source*4); +} + +void eclic_set_cliccfg (uint8_t cliccfg){ + *(volatile uint8_t*)(ECLIC_ADDR_BASE+ECLIC_CFG_OFFSET) = cliccfg; +} + +uint8_t eclic_get_cliccfg (void){ + return *(volatile uint8_t*)(ECLIC_ADDR_BASE+ECLIC_CFG_OFFSET); +} + +void eclic_set_mth (uint8_t mth){ + *(volatile uint8_t*)(ECLIC_ADDR_BASE+ECLIC_MTH_OFFSET) = mth; +} + +uint8_t eclic_get_mth (void){ + return *(volatile uint8_t*)(ECLIC_ADDR_BASE+ECLIC_MTH_OFFSET); +} + +/* sets nlbits */ +void eclic_set_nlbits(uint8_t nlbits) { + /* shift nlbits to correct position */ + uint8_t nlbits_shifted = nlbits << ECLIC_CFG_NLBITS_LSB; + + /* read the current cliccfg */ + uint8_t old_cliccfg = eclic_get_cliccfg(); + uint8_t new_cliccfg = (old_cliccfg & (~ECLIC_CFG_NLBITS_MASK)) | (ECLIC_CFG_NLBITS_MASK & nlbits_shifted); + + eclic_set_cliccfg(new_cliccfg); +} + +/* get nlbits */ +uint8_t eclic_get_nlbits(void) { + /* extract nlbits */ + uint8_t nlbits = eclic_get_cliccfg(); + nlbits = (nlbits & ECLIC_CFG_NLBITS_MASK) >> ECLIC_CFG_NLBITS_LSB; + return nlbits; +} + +/* sets an interrupt level based encoding of nlbits and ECLICINTCTLBITS */ +void eclic_set_irq_lvl(uint32_t source, uint8_t lvl) { + /* extract nlbits */ + uint8_t nlbits = eclic_get_nlbits(); + if (nlbits > ECLICINTCTLBITS) { + nlbits = ECLICINTCTLBITS; + } + + /* shift lvl right to mask off unused bits */ + lvl = lvl >> (8-nlbits); + /* shift lvl into correct bit position */ + lvl = lvl << (8-nlbits); + + /* write to clicintctrl */ + uint8_t current_intctrl = eclic_get_intctrl(source); + /* shift intctrl left to mask off unused bits */ + current_intctrl = current_intctrl << nlbits; + /* shift intctrl into correct bit position */ + current_intctrl = current_intctrl >> nlbits; + + eclic_set_intctrl(source, (current_intctrl | lvl)); +} + +/* gets an interrupt level based encoding of nlbits */ +uint8_t eclic_get_irq_lvl(uint32_t source) { + /* extract nlbits */ + uint8_t nlbits = eclic_get_nlbits(); + if (nlbits > ECLICINTCTLBITS) { + nlbits = ECLICINTCTLBITS; + } + + uint8_t intctrl = eclic_get_intctrl(source); + + /* shift intctrl */ + intctrl = intctrl >> (8-nlbits); + /* shift intctrl */ + uint8_t lvl = intctrl << (8-nlbits); + + return lvl; +} + +void eclic_set_irq_lvl_abs(uint32_t source, uint8_t lvl_abs) { + /* extract nlbits */ + uint8_t nlbits = eclic_get_nlbits(); + if (nlbits > ECLICINTCTLBITS) { + nlbits = ECLICINTCTLBITS; + } + + /* shift lvl_abs into correct bit position */ + uint8_t lvl = lvl_abs << (8-nlbits); + + /* write to clicintctrl */ + uint8_t current_intctrl = eclic_get_intctrl(source); + /* shift intctrl left to mask off unused bits */ + current_intctrl = current_intctrl << nlbits; + /* shift intctrl into correct bit position */ + current_intctrl = current_intctrl >> nlbits; + + eclic_set_intctrl(source, (current_intctrl | lvl)); +} + +uint8_t eclic_get_irq_lvl_abs(uint32_t source) { + /* extract nlbits */ + uint8_t nlbits = eclic_get_nlbits(); + if (nlbits > ECLICINTCTLBITS) { + nlbits = ECLICINTCTLBITS; + } + + uint8_t intctrl = eclic_get_intctrl(source); + + /* shift intctrl */ + intctrl = intctrl >> (8-nlbits); + /* shift intctrl */ + uint8_t lvl_abs = intctrl; + + return lvl_abs; +} + +/* sets an interrupt priority based encoding of nlbits and ECLICINTCTLBITS */ +uint8_t eclic_set_irq_priority(uint32_t source, uint8_t priority) { + /* extract nlbits */ + uint8_t nlbits = eclic_get_nlbits(); + if (nlbits >= ECLICINTCTLBITS) { + nlbits = ECLICINTCTLBITS; + return 0; + } + + /* shift priority into correct bit position */ + priority = priority << (8 - ECLICINTCTLBITS); + + /* write to eclicintctrl */ + uint8_t current_intctrl = eclic_get_intctrl(source); + /* shift intctrl right to mask off unused bits */ + current_intctrl = current_intctrl >> (8-nlbits); + /* shift intctrl into correct bit position */ + current_intctrl = current_intctrl << (8-nlbits); + + eclic_set_intctrl(source, (current_intctrl | priority)); + + return priority; +} + +/* gets an interrupt priority based encoding of nlbits */ +uint8_t eclic_get_irq_priority(uint32_t source) { + /* extract nlbits */ + uint8_t nlbits = eclic_get_nlbits(); + if (nlbits > ECLICINTCTLBITS) { + nlbits = ECLICINTCTLBITS; + } + + uint8_t intctrl = eclic_get_intctrl(source); + + /* shift intctrl */ + intctrl = intctrl << nlbits; + /* shift intctrl */ + uint8_t priority = intctrl >> (nlbits+(8 - ECLICINTCTLBITS)); + + return priority; +} + +void eclic_mode_enable() { +#if defined (__ICCRISCV__) + uint32_t mtvec_value = read_csr(CSR_MTVEC); + mtvec_value = mtvec_value & 0xFFFFFFC0; + mtvec_value = mtvec_value | 0x00000003; + write_csr(CSR_MTVEC,mtvec_value); +#elif defined ( __GNUC__ ) + uint32_t mtvec_value = read_csr(mtvec); + mtvec_value = mtvec_value & 0xFFFFFFC0; + mtvec_value = mtvec_value | 0x00000003; + write_csr(mtvec,mtvec_value); +#endif + +} + +/* sets vector-mode or non-vector mode */ +void eclic_set_vmode(uint32_t source) { + /* read the current attr */ + uint8_t old_intattr = eclic_get_intattr(source); + /* Keep other bits unchanged and only set the LSB bit */ + uint8_t new_intattr = (old_intattr | 0x1); + + eclic_set_intattr(source,new_intattr); +} + +void eclic_set_nonvmode(uint32_t source) { + /* read the current attr */ + uint8_t old_intattr = eclic_get_intattr(source); + /* Keep other bits unchanged and only clear the LSB bit*/ + uint8_t new_intattr = (old_intattr & (~0x1)); + + eclic_set_intattr(source,new_intattr); +} + +/* sets interrupt as level sensitive +Bit 1, trig[0], is defined as "edge-triggered" (0: level-triggered, 1: edge-triggered); +Bit 2, trig[1], is defined as "negative-edge" (0: positive-edge, 1: negative-edge).*/ + +void eclic_set_level_trig(uint32_t source) { + /* read the current attr */ + uint8_t old_intattr = eclic_get_intattr(source); + /* Keep other bits unchanged and only clear the bit 1 */ + uint8_t new_intattr = (old_intattr & (~0x2)); + + eclic_set_intattr(source,new_intattr); +} + +void eclic_set_posedge_trig(uint32_t source) { + /* read the current attr */ + uint8_t old_intattr = eclic_get_intattr(source); + /* Keep other bits unchanged and only set the bit 1 */ + uint8_t new_intattr = (old_intattr | 0x2); + /* Keep other bits unchanged and only clear the bit 2 */ + new_intattr = (old_intattr & (~0x4)); + + eclic_set_intattr(source,new_intattr); +} + +void eclic_set_negedge_trig(uint32_t source) { + /*read the current attr */ + uint8_t old_intattr = eclic_get_intattr(source); + /* Keep other bits unchanged and only set the bit 1*/ + uint8_t new_intattr = (old_intattr | 0x2); + /* Keep other bits unchanged and only set the bit 2*/ + new_intattr = (old_intattr | 0x4); + + eclic_set_intattr(source,new_intattr); +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/n200_func.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/n200_func.h new file mode 100644 index 0000000000..9af91ae20a --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/n200_func.h @@ -0,0 +1,105 @@ +/* See LICENSE file for licence details */ + +#ifndef N200_FUNC_H +#define N200_FUNC_H + + +#include +#include "n200_timer.h" +#include "n200_eclic.h" + +#define ECLIC_GROUP_LEVEL0_PRIO4 0 +#define ECLIC_GROUP_LEVEL1_PRIO3 1 +#define ECLIC_GROUP_LEVEL2_PRIO2 2 +#define ECLIC_GROUP_LEVEL3_PRIO1 3 +#define ECLIC_GROUP_LEVEL4_PRIO0 4 + +void pmp_open_all_space(void); + +void switch_m2u_mode(void); + +uint32_t get_mtime_freq(void); + +uint32_t mtime_lo(void); + +uint32_t mtime_hi(void); + +uint64_t get_mtime_value(void); + +uint64_t get_instret_value(void); + +uint64_t get_cycle_value(void); + +uint32_t get_cpu_freq(void); + +uint32_t __attribute__((noinline)) measure_cpu_freq(size_t n); + +/* ECLIC relevant functions */ +void eclic_init ( uint32_t num_irq ); +uint64_t get_timer_value(void); +void eclic_enable_interrupt (uint32_t source); +void eclic_disable_interrupt (uint32_t source); + +void eclic_set_pending(uint32_t source); +void eclic_clear_pending(uint32_t source); + +void eclic_set_intctrl (uint32_t source, uint8_t intctrl); +uint8_t eclic_get_intctrl (uint32_t source); + +void eclic_set_intattr (uint32_t source, uint8_t intattr); +uint8_t eclic_get_intattr (uint32_t source); + +void eclic_set_cliccfg (uint8_t cliccfg); +uint8_t eclic_get_cliccfg (void); + +void eclic_set_mth (uint8_t mth); +uint8_t eclic_get_mth(void); + +/* sets nlbits */ +void eclic_set_nlbits(uint8_t nlbits); + + +/* get nlbits */ +uint8_t eclic_get_nlbits(void); + +void eclic_set_irq_lvl(uint32_t source, uint8_t lvl); +uint8_t eclic_get_irq_lvl(uint32_t source); + +void eclic_set_irq_lvl_abs(uint32_t source, uint8_t lvl_abs); +uint8_t eclic_get_irq_lvl_abs(uint32_t source); + +uint8_t eclic_set_irq_priority(uint32_t source, uint8_t priority); +uint8_t eclic_get_irq_priority(uint32_t source); + +void eclic_mode_enable(void); + +void eclic_set_vmode(uint32_t source); +void eclic_set_nonvmode(uint32_t source); + +void eclic_set_level_trig(uint32_t source); +void eclic_set_posedge_trig(uint32_t source); +void eclic_set_negedge_trig(uint32_t source); + + +/** \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 ("csrs 0x810, 0x1"); + __asm volatile ("wfi"); + __asm volatile ("csrc 0x810, 0x1"); +} + + +#endif diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/n200_func.s b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/n200_func.s new file mode 100644 index 0000000000..77ba94116d --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/n200_func.s @@ -0,0 +1,26445 @@ + .file "n200_func.c" + .option nopic + .text +.Ltext0: + .cfi_sections .debug_frame + .align 1 + .globl pmp_open_all_space + .type pmp_open_all_space, @function +pmp_open_all_space: +.LFB6: + .file 1 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers\\n200_func.c" + .loc 1 17 30 + .cfi_startproc + addi sp,sp,-16 + .cfi_def_cfa_offset 16 + sw s0,12(sp) + .cfi_offset 8, -4 + addi s0,sp,16 + .cfi_def_cfa 8, 0 + .loc 1 19 5 + #APP +# 19 "D:\rt-thread\bsp\gd32\risc-v\libraries\GD32VF103_Firmware_Library\RISCV\drivers\n200_func.c" 1 + li x6, 0xffffffff +# 0 "" 2 + .loc 1 20 5 +# 20 "D:\rt-thread\bsp\gd32\risc-v\libraries\GD32VF103_Firmware_Library\RISCV\drivers\n200_func.c" 1 + csrw pmpaddr0, x6 +# 0 "" 2 + .loc 1 22 5 +# 22 "D:\rt-thread\bsp\gd32\risc-v\libraries\GD32VF103_Firmware_Library\RISCV\drivers\n200_func.c" 1 + li x6, 0x7f +# 0 "" 2 + .loc 1 23 5 +# 23 "D:\rt-thread\bsp\gd32\risc-v\libraries\GD32VF103_Firmware_Library\RISCV\drivers\n200_func.c" 1 + csrw pmpcfg0, x6 +# 0 "" 2 + .loc 1 24 1 + #NO_APP + nop + lw s0,12(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 16 + addi sp,sp,16 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE6: + .size pmp_open_all_space, .-pmp_open_all_space + .align 1 + .globl switch_m2u_mode + .type switch_m2u_mode, @function +switch_m2u_mode: +.LFB7: + .loc 1 26 27 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 +.LBB2: + .loc 1 30 186 + li a5,8192 + addi a5,a5,-2048 + #APP +# 30 "D:\rt-thread\bsp\gd32\risc-v\libraries\GD32VF103_Firmware_Library\RISCV\drivers\n200_func.c" 1 + csrrc a5, mstatus, a5 +# 0 "" 2 + #NO_APP + sw a5,-20(s0) +.LBE2: + .loc 1 35 5 + #APP +# 35 "D:\rt-thread\bsp\gd32\risc-v\libraries\GD32VF103_Firmware_Library\RISCV\drivers\n200_func.c" 1 + la x6, 1f +# 0 "" 2 + .loc 1 37 5 +# 37 "D:\rt-thread\bsp\gd32\risc-v\libraries\GD32VF103_Firmware_Library\RISCV\drivers\n200_func.c" 1 + csrw mepc, x6 +# 0 "" 2 + .loc 1 38 5 +# 38 "D:\rt-thread\bsp\gd32\risc-v\libraries\GD32VF103_Firmware_Library\RISCV\drivers\n200_func.c" 1 + mret +# 0 "" 2 + .loc 1 39 5 +# 39 "D:\rt-thread\bsp\gd32\risc-v\libraries\GD32VF103_Firmware_Library\RISCV\drivers\n200_func.c" 1 + 1: +# 0 "" 2 + .loc 1 40 1 + #NO_APP + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE7: + .size switch_m2u_mode, .-switch_m2u_mode + .align 1 + .globl mtime_lo + .type mtime_lo, @function +mtime_lo: +.LFB8: + .loc 1 43 1 + .cfi_startproc + addi sp,sp,-16 + .cfi_def_cfa_offset 16 + sw s0,12(sp) + .cfi_offset 8, -4 + addi s0,sp,16 + .cfi_def_cfa 8, 0 + .loc 1 44 10 + li a5,-788529152 + lw a5,0(a5) + .loc 1 45 1 + mv a0,a5 + lw s0,12(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 16 + addi sp,sp,16 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE8: + .size mtime_lo, .-mtime_lo + .align 1 + .globl mtime_hi + .type mtime_hi, @function +mtime_hi: +.LFB9: + .loc 1 49 1 + .cfi_startproc + addi sp,sp,-16 + .cfi_def_cfa_offset 16 + sw s0,12(sp) + .cfi_offset 8, -4 + addi s0,sp,16 + .cfi_def_cfa 8, 0 + .loc 1 50 10 + li a5,-788529152 + addi a5,a5,4 + lw a5,0(a5) + .loc 1 51 1 + mv a0,a5 + lw s0,12(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 16 + addi sp,sp,16 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE9: + .size mtime_hi, .-mtime_hi + .align 1 + .globl get_timer_value + .type get_timer_value, @function +get_timer_value: +.LFB10: + .loc 1 54 1 + .cfi_startproc + addi sp,sp,-64 + .cfi_def_cfa_offset 64 + sw ra,60(sp) + sw s0,56(sp) + sw s2,52(sp) + sw s3,48(sp) + sw s4,44(sp) + sw s5,40(sp) + sw s6,36(sp) + sw s7,32(sp) + sw s8,28(sp) + sw s9,24(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + .cfi_offset 18, -12 + .cfi_offset 19, -16 + .cfi_offset 20, -20 + .cfi_offset 21, -24 + .cfi_offset 22, -28 + .cfi_offset 23, -32 + .cfi_offset 24, -36 + .cfi_offset 25, -40 + addi s0,sp,64 + .cfi_def_cfa 8, 0 +.L10: +.LBB3: + .loc 1 56 19 + call mtime_hi + sw a0,-52(s0) + .loc 1 57 19 + call mtime_lo + sw a0,-56(s0) + .loc 1 58 15 + call mtime_hi + mv a4,a0 + .loc 1 58 8 + lw a5,-52(s0) + bne a5,a4,.L10 + .loc 1 59 15 + lw a5,-52(s0) + mv s8,a5 + li s9,0 + .loc 1 59 28 + slli s3,s8,0 + li s2,0 + .loc 1 59 35 + lw a5,-56(s0) + mv s4,a5 + li s5,0 + or s6,s2,s4 + or s7,s3,s5 + mv a4,s6 + mv a5,s7 +.LBE3: + .loc 1 61 1 + mv a0,a4 + mv a1,a5 + lw ra,60(sp) + .cfi_restore 1 + lw s0,56(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 64 + lw s2,52(sp) + .cfi_restore 18 + lw s3,48(sp) + .cfi_restore 19 + lw s4,44(sp) + .cfi_restore 20 + lw s5,40(sp) + .cfi_restore 21 + lw s6,36(sp) + .cfi_restore 22 + lw s7,32(sp) + .cfi_restore 23 + lw s8,28(sp) + .cfi_restore 24 + lw s9,24(sp) + .cfi_restore 25 + addi sp,sp,64 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE10: + .size get_timer_value, .-get_timer_value + .align 1 + .globl get_timer_freq + .type get_timer_freq, @function +get_timer_freq: +.LFB11: + .loc 1 64 1 + .cfi_startproc + addi sp,sp,-16 + .cfi_def_cfa_offset 16 + sw s0,12(sp) + .cfi_offset 8, -4 + addi s0,sp,16 + .cfi_def_cfa 8, 0 + .loc 1 65 11 + lla a5,SystemCoreClock + lw a5,0(a5) + .loc 1 65 36 + srli a5,a5,2 + .loc 1 66 1 + mv a0,a5 + lw s0,12(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 16 + addi sp,sp,16 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE11: + .size get_timer_freq, .-get_timer_freq + .align 1 + .globl get_instret_value + .type get_instret_value, @function +get_instret_value: +.LFB12: + .loc 1 69 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 +.L17: +.LBB4: +.LBB5: + .loc 1 76 43 + #APP +# 76 "D:\rt-thread\bsp\gd32\risc-v\libraries\GD32VF103_Firmware_Library\RISCV\drivers\n200_func.c" 1 + csrr t1, minstreth +# 0 "" 2 + #NO_APP + sw t1,-20(s0) + .loc 1 76 97 + lw t1,-20(s0) +.LBE5: + .loc 1 76 14 + sw t1,-24(s0) +.LBB6: + .loc 1 77 43 + #APP +# 77 "D:\rt-thread\bsp\gd32\risc-v\libraries\GD32VF103_Firmware_Library\RISCV\drivers\n200_func.c" 1 + csrr t1, minstret +# 0 "" 2 + #NO_APP + sw t1,-28(s0) + .loc 1 77 96 + lw t1,-28(s0) +.LBE6: + .loc 1 77 14 + sw t1,-32(s0) +.LBB7: + .loc 1 78 39 + #APP +# 78 "D:\rt-thread\bsp\gd32\risc-v\libraries\GD32VF103_Firmware_Library\RISCV\drivers\n200_func.c" 1 + csrr t1, minstreth +# 0 "" 2 + #NO_APP + sw t1,-36(s0) + .loc 1 78 93 + lw t3,-36(s0) +.LBE7: + .loc 1 78 8 + lw t1,-24(s0) + bne t3,t1,.L17 + .loc 1 81 15 + lw t1,-24(s0) + mv a6,t1 + li a7,0 + .loc 1 81 28 + slli a5,a6,0 + li a4,0 + .loc 1 81 35 + lw a6,-32(s0) + mv a2,a6 + li a3,0 + or a0,a4,a2 + or a1,a5,a3 + mv a4,a0 + mv a5,a1 +.LBE4: + .loc 1 83 1 + mv a0,a4 + mv a1,a5 + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE12: + .size get_instret_value, .-get_instret_value + .align 1 + .globl get_cycle_value + .type get_cycle_value, @function +get_cycle_value: +.LFB13: + .loc 1 86 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 +.L22: +.LBB8: +.LBB9: + .loc 1 93 43 + #APP +# 93 "D:\rt-thread\bsp\gd32\risc-v\libraries\GD32VF103_Firmware_Library\RISCV\drivers\n200_func.c" 1 + csrr t1, mcycleh +# 0 "" 2 + #NO_APP + sw t1,-20(s0) + .loc 1 93 95 + lw t1,-20(s0) +.LBE9: + .loc 1 93 14 + sw t1,-24(s0) +.LBB10: + .loc 1 94 43 + #APP +# 94 "D:\rt-thread\bsp\gd32\risc-v\libraries\GD32VF103_Firmware_Library\RISCV\drivers\n200_func.c" 1 + csrr t1, mcycle +# 0 "" 2 + #NO_APP + sw t1,-28(s0) + .loc 1 94 94 + lw t1,-28(s0) +.LBE10: + .loc 1 94 14 + sw t1,-32(s0) +.LBB11: + .loc 1 95 39 + #APP +# 95 "D:\rt-thread\bsp\gd32\risc-v\libraries\GD32VF103_Firmware_Library\RISCV\drivers\n200_func.c" 1 + csrr t1, mcycleh +# 0 "" 2 + #NO_APP + sw t1,-36(s0) + .loc 1 95 91 + lw t3,-36(s0) +.LBE11: + .loc 1 95 8 + lw t1,-24(s0) + bne t3,t1,.L22 + .loc 1 98 15 + lw t1,-24(s0) + mv a6,t1 + li a7,0 + .loc 1 98 28 + slli a5,a6,0 + li a4,0 + .loc 1 98 35 + lw a6,-32(s0) + mv a2,a6 + li a3,0 + or a0,a4,a2 + or a1,a5,a3 + mv a4,a0 + mv a5,a1 +.LBE8: + .loc 1 100 1 + mv a0,a4 + mv a1,a5 + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE13: + .size get_cycle_value, .-get_cycle_value + .align 1 + .globl measure_cpu_freq + .type measure_cpu_freq, @function +measure_cpu_freq: +.LFB14: + .loc 1 103 1 + .cfi_startproc + addi sp,sp,-64 + .cfi_def_cfa_offset 64 + sw ra,60(sp) + sw s0,56(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,64 + .cfi_def_cfa 8, 0 + sw a0,-52(s0) + .loc 1 105 25 + call get_timer_freq + sw a0,-20(s0) + .loc 1 108 18 + call mtime_lo + sw a0,-24(s0) +.L25: + .loc 1 110 19 discriminator 1 + call mtime_lo + sw a0,-28(s0) + .loc 1 111 3 discriminator 1 + lw a4,-28(s0) + lw a5,-24(s0) + beq a4,a5,.L25 +.LBB12: + .loc 1 116 51 + #APP +# 116 "D:\rt-thread\bsp\gd32\risc-v\libraries\GD32VF103_Firmware_Library\RISCV\drivers\n200_func.c" 1 + csrr a5, mcycle +# 0 "" 2 + #NO_APP + sw a5,-32(s0) + .loc 1 116 102 + lw a5,-32(s0) +.LBE12: + .loc 1 116 12 + sw a5,-36(s0) +.L26: + .loc 1 120 19 discriminator 1 + call mtime_lo + mv a4,a0 + .loc 1 120 17 discriminator 1 + lw a5,-28(s0) + sub a5,a4,a5 + sw a5,-40(s0) + .loc 1 121 3 discriminator 1 + lw a4,-40(s0) + lw a5,-52(s0) + bltu a4,a5,.L26 +.LBB13: + .loc 1 126 51 + #APP +# 126 "D:\rt-thread\bsp\gd32\risc-v\libraries\GD32VF103_Firmware_Library\RISCV\drivers\n200_func.c" 1 + csrr a5, mcycle +# 0 "" 2 + #NO_APP + sw a5,-44(s0) + .loc 1 126 102 + lw a4,-44(s0) +.LBE13: + .loc 1 126 12 + lw a5,-36(s0) + sub a5,a4,a5 + sw a5,-48(s0) + .loc 1 129 24 + lw a4,-48(s0) + lw a5,-40(s0) + divu a4,a4,a5 + .loc 1 129 39 + lw a5,-20(s0) + mul a4,a4,a5 + .loc 1 130 27 + lw a3,-48(s0) + lw a5,-40(s0) + remu a3,a3,a5 + .loc 1 130 42 + lw a5,-20(s0) + mul a3,a3,a5 + .loc 1 130 56 + lw a5,-40(s0) + divu a5,a3,a5 + .loc 1 130 10 + add a5,a4,a5 + .loc 1 131 1 + mv a0,a5 + lw ra,60(sp) + .cfi_restore 1 + lw s0,56(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 64 + addi sp,sp,64 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE14: + .size measure_cpu_freq, .-measure_cpu_freq + .align 1 + .globl get_cpu_freq + .type get_cpu_freq, @function +get_cpu_freq: +.LFB15: + .loc 1 134 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw ra,28(sp) + sw s0,24(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + .loc 1 138 3 + li a0,1 + call measure_cpu_freq + .loc 1 140 14 + li a0,100 + call measure_cpu_freq + sw a0,-20(s0) + .loc 1 142 10 + lw a5,-20(s0) + .loc 1 143 1 + mv a0,a5 + lw ra,28(sp) + .cfi_restore 1 + lw s0,24(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE15: + .size get_cpu_freq, .-get_cpu_freq + .align 1 + .globl eclic_init + .type eclic_init, @function +eclic_init: +.LFB16: + .loc 1 148 1 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw s0,44(sp) + .cfi_offset 8, -4 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 153 3 + li a5,-771751936 + .loc 1 153 40 + sb zero,0(a5) + .loc 1 156 3 + li a5,-771751936 + addi a5,a5,11 + .loc 1 156 40 + sb zero,0(a5) + .loc 1 161 15 + li a5,-771747840 + sw a5,-24(s0) + .loc 1 162 41 + lw a5,-36(s0) + slli a5,a5,4 + .loc 1 162 15 + lw a4,-24(s0) + add a5,a4,a5 + sw a5,-28(s0) + .loc 1 164 12 + lw a5,-24(s0) + sw a5,-20(s0) + .loc 1 164 3 + j .L31 +.L32: + .loc 1 165 10 discriminator 3 + lw a5,-20(s0) + sw zero,0(a5) + .loc 1 164 36 discriminator 3 + lw a5,-20(s0) + addi a5,a5,16 + sw a5,-20(s0) +.L31: + .loc 1 164 3 discriminator 1 + lw a4,-20(s0) + lw a5,-28(s0) + bltu a4,a5,.L32 + .loc 1 167 1 + nop + nop + lw s0,44(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE16: + .size eclic_init, .-eclic_init + .align 1 + .globl eclic_enable_interrupt + .type eclic_enable_interrupt, @function +eclic_enable_interrupt: +.LFB17: + .loc 1 169 47 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 170 55 + lw a5,-20(s0) + slli a4,a5,2 + .loc 1 170 48 + li a5,-771747840 + addi a5,a5,1 + add a5,a4,a5 + .loc 1 170 6 + mv a4,a5 + .loc 1 170 59 + li a5,1 + sb a5,0(a4) + .loc 1 171 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE17: + .size eclic_enable_interrupt, .-eclic_enable_interrupt + .align 1 + .globl eclic_disable_interrupt + .type eclic_disable_interrupt, @function +eclic_disable_interrupt: +.LFB18: + .loc 1 173 47 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 174 55 + lw a5,-20(s0) + slli a4,a5,2 + .loc 1 174 48 + li a5,-771747840 + addi a5,a5,1 + add a5,a4,a5 + .loc 1 174 59 + sb zero,0(a5) + .loc 1 175 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE18: + .size eclic_disable_interrupt, .-eclic_disable_interrupt + .align 1 + .globl eclic_set_pending + .type eclic_set_pending, @function +eclic_set_pending: +.LFB19: + .loc 1 177 40 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 178 48 + lw a4,-20(s0) + li a5,880803840 + addi a5,a5,1024 + add a5,a4,a5 + slli a5,a5,2 + .loc 1 178 6 + mv a4,a5 + .loc 1 178 59 + li a5,1 + sb a5,0(a4) + .loc 1 179 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE19: + .size eclic_set_pending, .-eclic_set_pending + .align 1 + .globl eclic_clear_pending + .type eclic_clear_pending, @function +eclic_clear_pending: +.LFB20: + .loc 1 181 42 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 182 48 + lw a4,-20(s0) + li a5,880803840 + addi a5,a5,1024 + add a5,a4,a5 + slli a5,a5,2 + .loc 1 182 59 + sb zero,0(a5) + .loc 1 183 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE20: + .size eclic_clear_pending, .-eclic_clear_pending + .align 1 + .globl eclic_set_intctrl + .type eclic_set_intctrl, @function +eclic_set_intctrl: +.LFB21: + .loc 1 185 58 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + mv a5,a1 + sb a5,-21(s0) + .loc 1 186 53 + lw a5,-20(s0) + slli a4,a5,2 + .loc 1 186 46 + li a5,-771747840 + addi a5,a5,3 + add a5,a4,a5 + .loc 1 186 4 + mv a4,a5 + .loc 1 186 57 + lbu a5,-21(s0) + sb a5,0(a4) + .loc 1 187 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE21: + .size eclic_set_intctrl, .-eclic_set_intctrl + .align 1 + .globl eclic_get_intctrl + .type eclic_get_intctrl, @function +eclic_get_intctrl: +.LFB22: + .loc 1 189 44 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 190 60 + lw a5,-20(s0) + slli a4,a5,2 + .loc 1 190 53 + li a5,-771747840 + addi a5,a5,3 + add a5,a4,a5 + .loc 1 190 10 + lbu a5,0(a5) + andi a5,a5,0xff + .loc 1 191 1 + mv a0,a5 + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE22: + .size eclic_get_intctrl, .-eclic_get_intctrl + .align 1 + .globl eclic_set_intattr + .type eclic_set_intattr, @function +eclic_set_intattr: +.LFB23: + .loc 1 193 58 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + mv a5,a1 + sb a5,-21(s0) + .loc 1 194 53 + lw a5,-20(s0) + slli a4,a5,2 + .loc 1 194 46 + li a5,-771747840 + addi a5,a5,2 + add a5,a4,a5 + .loc 1 194 4 + mv a4,a5 + .loc 1 194 57 + lbu a5,-21(s0) + sb a5,0(a4) + .loc 1 195 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE23: + .size eclic_set_intattr, .-eclic_set_intattr + .align 1 + .globl eclic_get_intattr + .type eclic_get_intattr, @function +eclic_get_intattr: +.LFB24: + .loc 1 197 44 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + .loc 1 198 60 + lw a5,-20(s0) + slli a4,a5,2 + .loc 1 198 53 + li a5,-771747840 + addi a5,a5,2 + add a5,a4,a5 + .loc 1 198 10 + lbu a5,0(a5) + andi a5,a5,0xff + .loc 1 199 1 + mv a0,a5 + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE24: + .size eclic_get_intattr, .-eclic_get_intattr + .align 1 + .globl eclic_set_cliccfg + .type eclic_set_cliccfg, @function +eclic_set_cliccfg: +.LFB25: + .loc 1 201 41 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + mv a5,a0 + sb a5,-17(s0) + .loc 1 202 3 + li a5,-771751936 + .loc 1 202 41 + lbu a4,-17(s0) + sb a4,0(a5) + .loc 1 203 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE25: + .size eclic_set_cliccfg, .-eclic_set_cliccfg + .align 1 + .globl eclic_get_cliccfg + .type eclic_get_cliccfg, @function +eclic_get_cliccfg: +.LFB26: + .loc 1 205 33 + .cfi_startproc + addi sp,sp,-16 + .cfi_def_cfa_offset 16 + sw s0,12(sp) + .cfi_offset 8, -4 + addi s0,sp,16 + .cfi_def_cfa 8, 0 + .loc 1 206 10 + li a5,-771751936 + lbu a5,0(a5) + andi a5,a5,0xff + .loc 1 207 1 + mv a0,a5 + lw s0,12(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 16 + addi sp,sp,16 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE26: + .size eclic_get_cliccfg, .-eclic_get_cliccfg + .align 1 + .globl eclic_set_mth + .type eclic_set_mth, @function +eclic_set_mth: +.LFB27: + .loc 1 209 33 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + mv a5,a0 + sb a5,-17(s0) + .loc 1 210 3 + li a5,-771751936 + addi a5,a5,11 + .loc 1 210 41 + lbu a4,-17(s0) + sb a4,0(a5) + .loc 1 211 1 + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE27: + .size eclic_set_mth, .-eclic_set_mth + .align 1 + .globl eclic_get_mth + .type eclic_get_mth, @function +eclic_get_mth: +.LFB28: + .loc 1 213 29 + .cfi_startproc + addi sp,sp,-16 + .cfi_def_cfa_offset 16 + sw s0,12(sp) + .cfi_offset 8, -4 + addi s0,sp,16 + .cfi_def_cfa 8, 0 + .loc 1 214 10 + li a5,-771751936 + addi a5,a5,11 + lbu a5,0(a5) + andi a5,a5,0xff + .loc 1 215 1 + mv a0,a5 + lw s0,12(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 16 + addi sp,sp,16 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE28: + .size eclic_get_mth, .-eclic_get_mth + .align 1 + .globl eclic_set_nlbits + .type eclic_set_nlbits, @function +eclic_set_nlbits: +.LFB29: + .loc 1 218 39 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw ra,44(sp) + sw s0,40(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + mv a5,a0 + sb a5,-33(s0) + .loc 1 220 11 + lbu a5,-33(s0) + slli a5,a5,1 + sb a5,-17(s0) + .loc 1 223 25 + call eclic_get_cliccfg + mv a5,a0 + sb a5,-18(s0) + .loc 1 224 38 + lbu a5,-18(s0) + andi a5,a5,-31 + andi a4,a5,0xff + .loc 1 224 65 + lbu a5,-17(s0) + andi a5,a5,30 + andi a5,a5,0xff + .loc 1 224 11 + or a5,a4,a5 + sb a5,-19(s0) + .loc 1 226 3 + lbu a5,-19(s0) + mv a0,a5 + call eclic_set_cliccfg + .loc 1 227 1 + nop + lw ra,44(sp) + .cfi_restore 1 + lw s0,40(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE29: + .size eclic_set_nlbits, .-eclic_set_nlbits + .align 1 + .globl eclic_get_nlbits + .type eclic_get_nlbits, @function +eclic_get_nlbits: +.LFB30: + .loc 1 230 32 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw ra,28(sp) + sw s0,24(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + .loc 1 232 20 + call eclic_get_cliccfg + mv a5,a0 + sb a5,-17(s0) + .loc 1 233 32 + lbu a5,-17(s0) + srli a5,a5,1 + andi a5,a5,0xff + .loc 1 233 10 + andi a5,a5,15 + sb a5,-17(s0) + .loc 1 234 10 + lbu a5,-17(s0) + .loc 1 235 1 + mv a0,a5 + lw ra,28(sp) + .cfi_restore 1 + lw s0,24(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE30: + .size eclic_get_nlbits, .-eclic_get_nlbits + .align 1 + .globl eclic_set_irq_lvl + .type eclic_set_irq_lvl, @function +eclic_set_irq_lvl: +.LFB31: + .loc 1 238 54 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw ra,44(sp) + sw s0,40(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + mv a5,a1 + sb a5,-37(s0) + .loc 1 240 20 + call eclic_get_nlbits + mv a5,a0 + sb a5,-17(s0) + .loc 1 241 6 + lbu a4,-17(s0) + li a5,4 + bleu a4,a5,.L53 + .loc 1 242 12 + li a5,4 + sb a5,-17(s0) +.L53: + .loc 1 246 13 + lbu a4,-37(s0) + .loc 1 246 18 + lbu a5,-17(s0) + li a3,8 + sub a5,a3,a5 + .loc 1 246 13 + sra a5,a4,a5 + .loc 1 246 7 + sb a5,-37(s0) + .loc 1 248 13 + lbu a4,-37(s0) + .loc 1 248 18 + lbu a5,-17(s0) + li a3,8 + sub a5,a3,a5 + .loc 1 248 13 + sll a5,a4,a5 + .loc 1 248 7 + sb a5,-37(s0) + .loc 1 251 29 + lw a0,-36(s0) + call eclic_get_intctrl + mv a5,a0 + sb a5,-18(s0) + .loc 1 253 37 + lbu a4,-18(s0) + lbu a5,-17(s0) + sll a5,a4,a5 + .loc 1 253 19 + sb a5,-18(s0) + .loc 1 255 37 + lbu a4,-18(s0) + lbu a5,-17(s0) + sra a5,a4,a5 + .loc 1 255 19 + sb a5,-18(s0) + .loc 1 257 3 + lbu a4,-18(s0) + lbu a5,-37(s0) + or a5,a4,a5 + andi a5,a5,0xff + mv a1,a5 + lw a0,-36(s0) + call eclic_set_intctrl + .loc 1 258 1 + nop + lw ra,44(sp) + .cfi_restore 1 + lw s0,40(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE31: + .size eclic_set_irq_lvl, .-eclic_set_irq_lvl + .align 1 + .globl eclic_get_irq_lvl + .type eclic_get_irq_lvl, @function +eclic_get_irq_lvl: +.LFB32: + .loc 1 261 44 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw ra,44(sp) + sw s0,40(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 263 20 + call eclic_get_nlbits + mv a5,a0 + sb a5,-17(s0) + .loc 1 264 6 + lbu a4,-17(s0) + li a5,4 + bleu a4,a5,.L55 + .loc 1 265 12 + li a5,4 + sb a5,-17(s0) +.L55: + .loc 1 268 21 + lw a0,-36(s0) + call eclic_get_intctrl + mv a5,a0 + sb a5,-18(s0) + .loc 1 271 21 + lbu a4,-18(s0) + .loc 1 271 26 + lbu a5,-17(s0) + li a3,8 + sub a5,a3,a5 + .loc 1 271 21 + sra a5,a4,a5 + .loc 1 271 11 + sb a5,-18(s0) + .loc 1 273 25 + lbu a4,-18(s0) + .loc 1 273 30 + lbu a5,-17(s0) + li a3,8 + sub a5,a3,a5 + .loc 1 273 25 + sll a5,a4,a5 + .loc 1 273 11 + sb a5,-19(s0) + .loc 1 275 10 + lbu a5,-19(s0) + .loc 1 276 1 + mv a0,a5 + lw ra,44(sp) + .cfi_restore 1 + lw s0,40(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE32: + .size eclic_get_irq_lvl, .-eclic_get_irq_lvl + .align 1 + .globl eclic_set_irq_lvl_abs + .type eclic_set_irq_lvl_abs, @function +eclic_set_irq_lvl_abs: +.LFB33: + .loc 1 278 62 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw ra,44(sp) + sw s0,40(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + mv a5,a1 + sb a5,-37(s0) + .loc 1 280 20 + call eclic_get_nlbits + mv a5,a0 + sb a5,-17(s0) + .loc 1 281 6 + lbu a4,-17(s0) + li a5,4 + bleu a4,a5,.L58 + .loc 1 282 12 + li a5,4 + sb a5,-17(s0) +.L58: + .loc 1 286 25 + lbu a4,-37(s0) + .loc 1 286 30 + lbu a5,-17(s0) + li a3,8 + sub a5,a3,a5 + .loc 1 286 25 + sll a5,a4,a5 + .loc 1 286 11 + sb a5,-18(s0) + .loc 1 289 29 + lw a0,-36(s0) + call eclic_get_intctrl + mv a5,a0 + sb a5,-19(s0) + .loc 1 291 37 + lbu a4,-19(s0) + lbu a5,-17(s0) + sll a5,a4,a5 + .loc 1 291 19 + sb a5,-19(s0) + .loc 1 293 37 + lbu a4,-19(s0) + lbu a5,-17(s0) + sra a5,a4,a5 + .loc 1 293 19 + sb a5,-19(s0) + .loc 1 295 3 + lbu a4,-19(s0) + lbu a5,-18(s0) + or a5,a4,a5 + andi a5,a5,0xff + mv a1,a5 + lw a0,-36(s0) + call eclic_set_intctrl + .loc 1 296 1 + nop + lw ra,44(sp) + .cfi_restore 1 + lw s0,40(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE33: + .size eclic_set_irq_lvl_abs, .-eclic_set_irq_lvl_abs + .align 1 + .globl eclic_get_irq_lvl_abs + .type eclic_get_irq_lvl_abs, @function +eclic_get_irq_lvl_abs: +.LFB34: + .loc 1 298 48 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw ra,44(sp) + sw s0,40(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 300 20 + call eclic_get_nlbits + mv a5,a0 + sb a5,-17(s0) + .loc 1 301 6 + lbu a4,-17(s0) + li a5,4 + bleu a4,a5,.L60 + .loc 1 302 12 + li a5,4 + sb a5,-17(s0) +.L60: + .loc 1 305 21 + lw a0,-36(s0) + call eclic_get_intctrl + mv a5,a0 + sb a5,-18(s0) + .loc 1 308 21 + lbu a4,-18(s0) + .loc 1 308 26 + lbu a5,-17(s0) + li a3,8 + sub a5,a3,a5 + .loc 1 308 21 + sra a5,a4,a5 + .loc 1 308 11 + sb a5,-18(s0) + .loc 1 310 11 + lbu a5,-18(s0) + sb a5,-19(s0) + .loc 1 312 10 + lbu a5,-19(s0) + .loc 1 313 1 + mv a0,a5 + lw ra,44(sp) + .cfi_restore 1 + lw s0,40(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE34: + .size eclic_get_irq_lvl_abs, .-eclic_get_irq_lvl_abs + .align 1 + .globl eclic_set_irq_priority + .type eclic_set_irq_priority, @function +eclic_set_irq_priority: +.LFB35: + .loc 1 316 67 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw ra,44(sp) + sw s0,40(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + mv a5,a1 + sb a5,-37(s0) + .loc 1 318 22 + call eclic_get_nlbits + mv a5,a0 + sb a5,-17(s0) + .loc 1 319 8 + lbu a4,-17(s0) + li a5,3 + bleu a4,a5,.L63 + .loc 1 320 16 + li a5,4 + sb a5,-17(s0) + .loc 1 321 16 + li a5,0 + j .L64 +.L63: + .loc 1 325 14 + lbu a5,-37(s0) + slli a5,a5,4 + sb a5,-37(s0) + .loc 1 328 31 + lw a0,-36(s0) + call eclic_get_intctrl + mv a5,a0 + sb a5,-18(s0) + .loc 1 330 39 + lbu a4,-18(s0) + .loc 1 330 44 + lbu a5,-17(s0) + li a3,8 + sub a5,a3,a5 + .loc 1 330 39 + sra a5,a4,a5 + .loc 1 330 21 + sb a5,-18(s0) + .loc 1 332 39 + lbu a4,-18(s0) + .loc 1 332 44 + lbu a5,-17(s0) + li a3,8 + sub a5,a3,a5 + .loc 1 332 39 + sll a5,a4,a5 + .loc 1 332 21 + sb a5,-18(s0) + .loc 1 334 5 + lbu a4,-18(s0) + lbu a5,-37(s0) + or a5,a4,a5 + andi a5,a5,0xff + mv a1,a5 + lw a0,-36(s0) + call eclic_set_intctrl + .loc 1 336 12 + lbu a5,-37(s0) +.L64: + .loc 1 337 1 + mv a0,a5 + lw ra,44(sp) + .cfi_restore 1 + lw s0,40(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE35: + .size eclic_set_irq_priority, .-eclic_set_irq_priority + .align 1 + .globl eclic_get_irq_priority + .type eclic_get_irq_priority, @function +eclic_get_irq_priority: +.LFB36: + .loc 1 340 49 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw ra,44(sp) + sw s0,40(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 342 22 + call eclic_get_nlbits + mv a5,a0 + sb a5,-17(s0) + .loc 1 343 8 + lbu a4,-17(s0) + li a5,4 + bleu a4,a5,.L66 + .loc 1 344 18 + li a5,4 + sb a5,-17(s0) +.L66: + .loc 1 347 23 + lw a0,-36(s0) + call eclic_get_intctrl + mv a5,a0 + sb a5,-18(s0) + .loc 1 350 23 + lbu a4,-18(s0) + lbu a5,-17(s0) + sll a5,a4,a5 + .loc 1 350 13 + sb a5,-18(s0) + .loc 1 352 32 + lbu a4,-18(s0) + .loc 1 352 42 + lbu a5,-17(s0) + addi a5,a5,4 + .loc 1 352 32 + sra a5,a4,a5 + .loc 1 352 13 + sb a5,-19(s0) + .loc 1 354 12 + lbu a5,-19(s0) + .loc 1 355 1 + mv a0,a5 + lw ra,44(sp) + .cfi_restore 1 + lw s0,40(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE36: + .size eclic_get_irq_priority, .-eclic_get_irq_priority + .align 1 + .globl eclic_mode_enable + .type eclic_mode_enable, @function +eclic_mode_enable: +.LFB37: + .loc 1 357 26 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw s0,28(sp) + .cfi_offset 8, -4 + addi s0,sp,32 + .cfi_def_cfa 8, 0 +.LBB14: + .loc 1 364 50 + #APP +# 364 "D:\rt-thread\bsp\gd32\risc-v\libraries\GD32VF103_Firmware_Library\RISCV\drivers\n200_func.c" 1 + csrr a5, mtvec +# 0 "" 2 + #NO_APP + sw a5,-20(s0) + .loc 1 364 100 + lw a5,-20(s0) +.LBE14: + .loc 1 364 12 + sw a5,-24(s0) + .loc 1 365 15 + lw a5,-24(s0) + andi a5,a5,-64 + sw a5,-24(s0) + .loc 1 366 15 + lw a5,-24(s0) + ori a5,a5,3 + sw a5,-24(s0) + .loc 1 367 146 + lw a5,-24(s0) + #APP +# 367 "D:\rt-thread\bsp\gd32\risc-v\libraries\GD32VF103_Firmware_Library\RISCV\drivers\n200_func.c" 1 + csrw mtvec, a5 +# 0 "" 2 + .loc 1 370 1 + #NO_APP + nop + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE37: + .size eclic_mode_enable, .-eclic_mode_enable + .align 1 + .globl eclic_set_vmode + .type eclic_set_vmode, @function +eclic_set_vmode: +.LFB38: + .loc 1 373 39 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw ra,44(sp) + sw s0,40(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 375 25 + lw a0,-36(s0) + call eclic_get_intattr + mv a5,a0 + sb a5,-17(s0) + .loc 1 377 11 + lbu a5,-17(s0) + ori a5,a5,1 + sb a5,-18(s0) + .loc 1 379 3 + lbu a5,-18(s0) + mv a1,a5 + lw a0,-36(s0) + call eclic_set_intattr + .loc 1 380 1 + nop + lw ra,44(sp) + .cfi_restore 1 + lw s0,40(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE38: + .size eclic_set_vmode, .-eclic_set_vmode + .align 1 + .globl eclic_set_nonvmode + .type eclic_set_nonvmode, @function +eclic_set_nonvmode: +.LFB39: + .loc 1 382 42 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw ra,44(sp) + sw s0,40(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 384 25 + lw a0,-36(s0) + call eclic_get_intattr + mv a5,a0 + sb a5,-17(s0) + .loc 1 386 11 + lbu a5,-17(s0) + andi a5,a5,-2 + sb a5,-18(s0) + .loc 1 388 3 + lbu a5,-18(s0) + mv a1,a5 + lw a0,-36(s0) + call eclic_set_intattr + .loc 1 389 1 + nop + lw ra,44(sp) + .cfi_restore 1 + lw s0,40(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE39: + .size eclic_set_nonvmode, .-eclic_set_nonvmode + .align 1 + .globl eclic_set_level_trig + .type eclic_set_level_trig, @function +eclic_set_level_trig: +.LFB40: + .loc 1 395 44 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw ra,44(sp) + sw s0,40(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 397 25 + lw a0,-36(s0) + call eclic_get_intattr + mv a5,a0 + sb a5,-17(s0) + .loc 1 399 11 + lbu a5,-17(s0) + andi a5,a5,-3 + sb a5,-18(s0) + .loc 1 401 3 + lbu a5,-18(s0) + mv a1,a5 + lw a0,-36(s0) + call eclic_set_intattr + .loc 1 402 1 + nop + lw ra,44(sp) + .cfi_restore 1 + lw s0,40(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE40: + .size eclic_set_level_trig, .-eclic_set_level_trig + .align 1 + .globl eclic_set_posedge_trig + .type eclic_set_posedge_trig, @function +eclic_set_posedge_trig: +.LFB41: + .loc 1 404 46 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw ra,44(sp) + sw s0,40(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 406 25 + lw a0,-36(s0) + call eclic_get_intattr + mv a5,a0 + sb a5,-17(s0) + .loc 1 408 11 + lbu a5,-17(s0) + ori a5,a5,2 + sb a5,-18(s0) + .loc 1 410 15 + lbu a5,-17(s0) + andi a5,a5,-5 + sb a5,-18(s0) + .loc 1 412 3 + lbu a5,-18(s0) + mv a1,a5 + lw a0,-36(s0) + call eclic_set_intattr + .loc 1 413 1 + nop + lw ra,44(sp) + .cfi_restore 1 + lw s0,40(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE41: + .size eclic_set_posedge_trig, .-eclic_set_posedge_trig + .align 1 + .globl eclic_set_negedge_trig + .type eclic_set_negedge_trig, @function +eclic_set_negedge_trig: +.LFB42: + .loc 1 415 46 + .cfi_startproc + addi sp,sp,-48 + .cfi_def_cfa_offset 48 + sw ra,44(sp) + sw s0,40(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,48 + .cfi_def_cfa 8, 0 + sw a0,-36(s0) + .loc 1 417 25 + lw a0,-36(s0) + call eclic_get_intattr + mv a5,a0 + sb a5,-17(s0) + .loc 1 419 11 + lbu a5,-17(s0) + ori a5,a5,2 + sb a5,-18(s0) + .loc 1 421 15 + lbu a5,-17(s0) + ori a5,a5,4 + sb a5,-18(s0) + .loc 1 423 3 + lbu a5,-18(s0) + mv a1,a5 + lw a0,-36(s0) + call eclic_set_intattr + .loc 1 424 1 + nop + lw ra,44(sp) + .cfi_restore 1 + lw s0,40(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 48 + addi sp,sp,48 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE42: + .size eclic_set_negedge_trig, .-eclic_set_negedge_trig +.Letext0: + .file 2 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\machine\\_default_types.h" + .file 3 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_stdint.h" + .file 4 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\lib\\gcc\\riscv-none-embed\\10.2.0\\include\\stddef.h" + .file 5 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral/system_gd32vf103.h" + .section .debug_info,"",@progbits +.Ldebug_info0: + .4byte 0xa33 + .2byte 0x4 + .4byte .Ldebug_abbrev0 + .byte 0x4 + .byte 0x1 + .4byte .LASF4419 + .byte 0xc + .4byte .LASF4420 + .4byte .LASF4421 + .4byte .Ltext0 + .4byte .Letext0-.Ltext0 + .4byte .Ldebug_line0 + .4byte .Ldebug_macro0 + .byte 0x2 + .byte 0x4 + .byte 0x7 + .4byte .LASF4341 + .byte 0x2 + .byte 0x1 + .byte 0x6 + .4byte .LASF4342 + .byte 0x3 + .4byte .LASF4347 + .byte 0x2 + .byte 0x2b + .byte 0x17 + .4byte 0x43 + .byte 0x2 + .byte 0x1 + .byte 0x8 + .4byte .LASF4343 + .byte 0x2 + .byte 0x2 + .byte 0x5 + .4byte .LASF4344 + .byte 0x2 + .byte 0x2 + .byte 0x7 + .4byte .LASF4345 + .byte 0x2 + .byte 0x4 + .byte 0x5 + .4byte .LASF4346 + .byte 0x3 + .4byte .LASF4348 + .byte 0x2 + .byte 0x4f + .byte 0x1b + .4byte 0x6b + .byte 0x2 + .byte 0x4 + .byte 0x7 + .4byte .LASF4349 + .byte 0x2 + .byte 0x8 + .byte 0x5 + .4byte .LASF4350 + .byte 0x3 + .4byte .LASF4351 + .byte 0x2 + .byte 0x69 + .byte 0x20 + .4byte 0x85 + .byte 0x2 + .byte 0x8 + .byte 0x7 + .4byte .LASF4352 + .byte 0x4 + .byte 0x4 + .byte 0x5 + .string "int" + .byte 0x3 + .4byte .LASF4353 + .byte 0x3 + .byte 0x18 + .byte 0x13 + .4byte 0x37 + .byte 0x3 + .4byte .LASF4354 + .byte 0x3 + .byte 0x30 + .byte 0x14 + .4byte 0x5f + .byte 0x5 + .4byte 0x9f + .byte 0x3 + .4byte .LASF4355 + .byte 0x3 + .byte 0x3c + .byte 0x14 + .4byte 0x79 + .byte 0x6 + .4byte .LASF4422 + .byte 0x5 + .byte 0x35 + .byte 0x11 + .4byte 0x9f + .byte 0x3 + .4byte .LASF4356 + .byte 0x4 + .byte 0xd1 + .byte 0x16 + .4byte 0x29 + .byte 0x2 + .byte 0x10 + .byte 0x4 + .4byte .LASF4357 + .byte 0x2 + .byte 0x1 + .byte 0x8 + .4byte .LASF377 + .byte 0x7 + .4byte .LASF4360 + .byte 0x1 + .2byte 0x19f + .byte 0x6 + .4byte .LFB42 + .4byte .LFE42-.LFB42 + .byte 0x1 + .byte 0x9c + .4byte 0x12a + .byte 0x8 + .4byte .LASF4362 + .byte 0x1 + .2byte 0x19f + .byte 0x26 + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0x9 + .4byte .LASF4358 + .byte 0x1 + .2byte 0x1a1 + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6f + .byte 0x9 + .4byte .LASF4359 + .byte 0x1 + .2byte 0x1a3 + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6e + .byte 0 + .byte 0x7 + .4byte .LASF4361 + .byte 0x1 + .2byte 0x194 + .byte 0x6 + .4byte .LFB41 + .4byte .LFE41-.LFB41 + .byte 0x1 + .byte 0x9c + .4byte 0x172 + .byte 0x8 + .4byte .LASF4362 + .byte 0x1 + .2byte 0x194 + .byte 0x26 + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0x9 + .4byte .LASF4358 + .byte 0x1 + .2byte 0x196 + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6f + .byte 0x9 + .4byte .LASF4359 + .byte 0x1 + .2byte 0x198 + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6e + .byte 0 + .byte 0x7 + .4byte .LASF4363 + .byte 0x1 + .2byte 0x18b + .byte 0x6 + .4byte .LFB40 + .4byte .LFE40-.LFB40 + .byte 0x1 + .byte 0x9c + .4byte 0x1ba + .byte 0x8 + .4byte .LASF4362 + .byte 0x1 + .2byte 0x18b + .byte 0x24 + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0x9 + .4byte .LASF4358 + .byte 0x1 + .2byte 0x18d + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6f + .byte 0x9 + .4byte .LASF4359 + .byte 0x1 + .2byte 0x18f + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6e + .byte 0 + .byte 0x7 + .4byte .LASF4364 + .byte 0x1 + .2byte 0x17e + .byte 0x6 + .4byte .LFB39 + .4byte .LFE39-.LFB39 + .byte 0x1 + .byte 0x9c + .4byte 0x202 + .byte 0x8 + .4byte .LASF4362 + .byte 0x1 + .2byte 0x17e + .byte 0x22 + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0x9 + .4byte .LASF4358 + .byte 0x1 + .2byte 0x180 + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6f + .byte 0x9 + .4byte .LASF4359 + .byte 0x1 + .2byte 0x182 + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6e + .byte 0 + .byte 0x7 + .4byte .LASF4365 + .byte 0x1 + .2byte 0x175 + .byte 0x6 + .4byte .LFB38 + .4byte .LFE38-.LFB38 + .byte 0x1 + .byte 0x9c + .4byte 0x24a + .byte 0x8 + .4byte .LASF4362 + .byte 0x1 + .2byte 0x175 + .byte 0x1f + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0x9 + .4byte .LASF4358 + .byte 0x1 + .2byte 0x177 + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6f + .byte 0x9 + .4byte .LASF4359 + .byte 0x1 + .2byte 0x179 + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6e + .byte 0 + .byte 0xa + .4byte .LASF4366 + .byte 0x1 + .2byte 0x165 + .byte 0x6 + .4byte .LFB37 + .4byte .LFE37-.LFB37 + .byte 0x1 + .byte 0x9c + .4byte 0x28c + .byte 0x9 + .4byte .LASF4367 + .byte 0x1 + .2byte 0x16c + .byte 0xc + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0xb + .4byte .LBB14 + .4byte .LBE14-.LBB14 + .byte 0x9 + .4byte .LASF4368 + .byte 0x1 + .2byte 0x16c + .byte 0x2b + .4byte 0x6b + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0 + .byte 0xc + .4byte .LASF4372 + .byte 0x1 + .2byte 0x154 + .byte 0x9 + .4byte 0x93 + .4byte .LFB36 + .4byte .LFE36-.LFB36 + .byte 0x1 + .byte 0x9c + .4byte 0x2e8 + .byte 0x8 + .4byte .LASF4362 + .byte 0x1 + .2byte 0x154 + .byte 0x29 + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0x9 + .4byte .LASF4369 + .byte 0x1 + .2byte 0x156 + .byte 0xd + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6f + .byte 0x9 + .4byte .LASF4370 + .byte 0x1 + .2byte 0x15b + .byte 0xd + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6e + .byte 0x9 + .4byte .LASF4371 + .byte 0x1 + .2byte 0x160 + .byte 0xd + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6d + .byte 0 + .byte 0xc + .4byte .LASF4373 + .byte 0x1 + .2byte 0x13c + .byte 0x9 + .4byte 0x93 + .4byte .LFB35 + .4byte .LFE35-.LFB35 + .byte 0x1 + .byte 0x9c + .4byte 0x344 + .byte 0x8 + .4byte .LASF4362 + .byte 0x1 + .2byte 0x13c + .byte 0x29 + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0x8 + .4byte .LASF4371 + .byte 0x1 + .2byte 0x13c + .byte 0x39 + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x5b + .byte 0x9 + .4byte .LASF4369 + .byte 0x1 + .2byte 0x13e + .byte 0xd + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6f + .byte 0x9 + .4byte .LASF4374 + .byte 0x1 + .2byte 0x148 + .byte 0xd + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6e + .byte 0 + .byte 0xc + .4byte .LASF4375 + .byte 0x1 + .2byte 0x12a + .byte 0x9 + .4byte 0x93 + .4byte .LFB34 + .4byte .LFE34-.LFB34 + .byte 0x1 + .byte 0x9c + .4byte 0x3a0 + .byte 0x8 + .4byte .LASF4362 + .byte 0x1 + .2byte 0x12a + .byte 0x28 + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0x9 + .4byte .LASF4369 + .byte 0x1 + .2byte 0x12c + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6f + .byte 0x9 + .4byte .LASF4370 + .byte 0x1 + .2byte 0x131 + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6e + .byte 0x9 + .4byte .LASF4376 + .byte 0x1 + .2byte 0x136 + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6d + .byte 0 + .byte 0x7 + .4byte .LASF4377 + .byte 0x1 + .2byte 0x116 + .byte 0x6 + .4byte .LFB33 + .4byte .LFE33-.LFB33 + .byte 0x1 + .byte 0x9c + .4byte 0x408 + .byte 0x8 + .4byte .LASF4362 + .byte 0x1 + .2byte 0x116 + .byte 0x25 + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0x8 + .4byte .LASF4376 + .byte 0x1 + .2byte 0x116 + .byte 0x35 + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x5b + .byte 0x9 + .4byte .LASF4369 + .byte 0x1 + .2byte 0x118 + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6f + .byte 0xd + .string "lvl" + .byte 0x1 + .2byte 0x11e + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6e + .byte 0x9 + .4byte .LASF4374 + .byte 0x1 + .2byte 0x121 + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6d + .byte 0 + .byte 0xc + .4byte .LASF4378 + .byte 0x1 + .2byte 0x105 + .byte 0x9 + .4byte 0x93 + .4byte .LFB32 + .4byte .LFE32-.LFB32 + .byte 0x1 + .byte 0x9c + .4byte 0x464 + .byte 0x8 + .4byte .LASF4362 + .byte 0x1 + .2byte 0x105 + .byte 0x24 + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0x9 + .4byte .LASF4369 + .byte 0x1 + .2byte 0x107 + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6f + .byte 0x9 + .4byte .LASF4370 + .byte 0x1 + .2byte 0x10c + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6e + .byte 0xd + .string "lvl" + .byte 0x1 + .2byte 0x111 + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6d + .byte 0 + .byte 0xe + .4byte .LASF4379 + .byte 0x1 + .byte 0xee + .byte 0x6 + .4byte .LFB31 + .4byte .LFE31-.LFB31 + .byte 0x1 + .byte 0x9c + .4byte 0x4b7 + .byte 0xf + .4byte .LASF4362 + .byte 0x1 + .byte 0xee + .byte 0x21 + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0x10 + .string "lvl" + .byte 0x1 + .byte 0xee + .byte 0x31 + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x5b + .byte 0x11 + .4byte .LASF4369 + .byte 0x1 + .byte 0xf0 + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6f + .byte 0x11 + .4byte .LASF4374 + .byte 0x1 + .byte 0xfb + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6e + .byte 0 + .byte 0x12 + .4byte .LASF4380 + .byte 0x1 + .byte 0xe6 + .byte 0x9 + .4byte 0x93 + .4byte .LFB30 + .4byte .LFE30-.LFB30 + .byte 0x1 + .byte 0x9c + .4byte 0x4e1 + .byte 0x11 + .4byte .LASF4369 + .byte 0x1 + .byte 0xe8 + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6f + .byte 0 + .byte 0xe + .4byte .LASF4381 + .byte 0x1 + .byte 0xda + .byte 0x6 + .4byte .LFB29 + .4byte .LFE29-.LFB29 + .byte 0x1 + .byte 0x9c + .4byte 0x534 + .byte 0xf + .4byte .LASF4369 + .byte 0x1 + .byte 0xda + .byte 0x1f + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x5f + .byte 0x11 + .4byte .LASF4382 + .byte 0x1 + .byte 0xdc + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6f + .byte 0x11 + .4byte .LASF4383 + .byte 0x1 + .byte 0xdf + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6e + .byte 0x11 + .4byte .LASF4384 + .byte 0x1 + .byte 0xe0 + .byte 0xb + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6d + .byte 0 + .byte 0x13 + .4byte .LASF4386 + .byte 0x1 + .byte 0xd5 + .byte 0x9 + .4byte 0x93 + .4byte .LFB28 + .4byte .LFE28-.LFB28 + .byte 0x1 + .byte 0x9c + .byte 0x14 + .4byte .LASF4385 + .byte 0x1 + .byte 0xd1 + .byte 0x6 + .4byte .LFB27 + .4byte .LFE27-.LFB27 + .byte 0x1 + .byte 0x9c + .4byte 0x570 + .byte 0x10 + .string "mth" + .byte 0x1 + .byte 0xd1 + .byte 0x1d + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6f + .byte 0 + .byte 0x13 + .4byte .LASF4387 + .byte 0x1 + .byte 0xcd + .byte 0x9 + .4byte 0x93 + .4byte .LFB26 + .4byte .LFE26-.LFB26 + .byte 0x1 + .byte 0x9c + .byte 0x14 + .4byte .LASF4388 + .byte 0x1 + .byte 0xc9 + .byte 0x6 + .4byte .LFB25 + .4byte .LFE25-.LFB25 + .byte 0x1 + .byte 0x9c + .4byte 0x5ac + .byte 0xf + .4byte .LASF4389 + .byte 0x1 + .byte 0xc9 + .byte 0x21 + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6f + .byte 0 + .byte 0x15 + .4byte .LASF4390 + .byte 0x1 + .byte 0xc5 + .byte 0x9 + .4byte 0x93 + .4byte .LFB24 + .4byte .LFE24-.LFB24 + .byte 0x1 + .byte 0x9c + .4byte 0x5d6 + .byte 0xf + .4byte .LASF4362 + .byte 0x1 + .byte 0xc5 + .byte 0x25 + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x14 + .4byte .LASF4391 + .byte 0x1 + .byte 0xc1 + .byte 0x6 + .4byte .LFB23 + .4byte .LFE23-.LFB23 + .byte 0x1 + .byte 0x9c + .4byte 0x60b + .byte 0xf + .4byte .LASF4362 + .byte 0x1 + .byte 0xc1 + .byte 0x22 + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0xf + .4byte .LASF4392 + .byte 0x1 + .byte 0xc1 + .byte 0x32 + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6b + .byte 0 + .byte 0x15 + .4byte .LASF4393 + .byte 0x1 + .byte 0xbd + .byte 0x9 + .4byte 0x93 + .4byte .LFB22 + .4byte .LFE22-.LFB22 + .byte 0x1 + .byte 0x9c + .4byte 0x635 + .byte 0xf + .4byte .LASF4362 + .byte 0x1 + .byte 0xbd + .byte 0x25 + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x14 + .4byte .LASF4394 + .byte 0x1 + .byte 0xb9 + .byte 0x6 + .4byte .LFB21 + .4byte .LFE21-.LFB21 + .byte 0x1 + .byte 0x9c + .4byte 0x66a + .byte 0xf + .4byte .LASF4362 + .byte 0x1 + .byte 0xb9 + .byte 0x22 + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0xf + .4byte .LASF4370 + .byte 0x1 + .byte 0xb9 + .byte 0x32 + .4byte 0x93 + .byte 0x2 + .byte 0x91 + .byte 0x6b + .byte 0 + .byte 0x14 + .4byte .LASF4395 + .byte 0x1 + .byte 0xb5 + .byte 0x6 + .4byte .LFB20 + .4byte .LFE20-.LFB20 + .byte 0x1 + .byte 0x9c + .4byte 0x690 + .byte 0xf + .4byte .LASF4362 + .byte 0x1 + .byte 0xb5 + .byte 0x23 + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x14 + .4byte .LASF4396 + .byte 0x1 + .byte 0xb1 + .byte 0x6 + .4byte .LFB19 + .4byte .LFE19-.LFB19 + .byte 0x1 + .byte 0x9c + .4byte 0x6b6 + .byte 0xf + .4byte .LASF4362 + .byte 0x1 + .byte 0xb1 + .byte 0x21 + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x14 + .4byte .LASF4397 + .byte 0x1 + .byte 0xad + .byte 0x6 + .4byte .LFB18 + .4byte .LFE18-.LFB18 + .byte 0x1 + .byte 0x9c + .4byte 0x6dc + .byte 0xf + .4byte .LASF4362 + .byte 0x1 + .byte 0xad + .byte 0x28 + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x14 + .4byte .LASF4398 + .byte 0x1 + .byte 0xa9 + .byte 0x6 + .4byte .LFB17 + .4byte .LFE17-.LFB17 + .byte 0x1 + .byte 0x9c + .4byte 0x702 + .byte 0xf + .4byte .LASF4362 + .byte 0x1 + .byte 0xa9 + .byte 0x27 + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x14 + .4byte .LASF4399 + .byte 0x1 + .byte 0x93 + .byte 0x6 + .4byte .LFB16 + .4byte .LFE16-.LFB16 + .byte 0x1 + .byte 0x9c + .4byte 0x767 + .byte 0xf + .4byte .LASF4400 + .byte 0x1 + .byte 0x93 + .byte 0x1c + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0x3 + .4byte .LASF4401 + .byte 0x1 + .byte 0x96 + .byte 0x1d + .4byte 0xab + .byte 0x16 + .string "ptr" + .byte 0x1 + .byte 0x9f + .byte 0xf + .4byte 0x742 + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0x17 + .byte 0x4 + .4byte 0x727 + .byte 0x11 + .4byte .LASF4402 + .byte 0x1 + .byte 0xa1 + .byte 0xf + .4byte 0x742 + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0x11 + .4byte .LASF4403 + .byte 0x1 + .byte 0xa2 + .byte 0xf + .4byte 0x742 + .byte 0x2 + .byte 0x91 + .byte 0x64 + .byte 0 + .byte 0x12 + .4byte .LASF4404 + .byte 0x1 + .byte 0x85 + .byte 0xa + .4byte 0x9f + .4byte .LFB15 + .4byte .LFE15-.LFB15 + .byte 0x1 + .byte 0x9c + .4byte 0x791 + .byte 0x11 + .4byte .LASF4405 + .byte 0x1 + .byte 0x87 + .byte 0xc + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x12 + .4byte .LASF4406 + .byte 0x1 + .byte 0x66 + .byte 0x24 + .4byte 0x9f + .4byte .LFB14 + .4byte .LFE14-.LFB14 + .byte 0x1 + .byte 0x9c + .4byte 0x849 + .byte 0x10 + .string "n" + .byte 0x1 + .byte 0x66 + .byte 0x3c + .4byte 0xc8 + .byte 0x2 + .byte 0x91 + .byte 0x4c + .byte 0x11 + .4byte .LASF4407 + .byte 0x1 + .byte 0x68 + .byte 0xc + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x64 + .byte 0x11 + .4byte .LASF4408 + .byte 0x1 + .byte 0x68 + .byte 0x19 + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x58 + .byte 0x11 + .4byte .LASF4409 + .byte 0x1 + .byte 0x69 + .byte 0xc + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0x16 + .string "tmp" + .byte 0x1 + .byte 0x6c + .byte 0xc + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0x11 + .4byte .LASF4410 + .byte 0x1 + .byte 0x74 + .byte 0xc + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0x11 + .4byte .LASF4411 + .byte 0x1 + .byte 0x7e + .byte 0xc + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x50 + .byte 0x18 + .4byte .LBB12 + .4byte .LBE12-.LBB12 + .4byte 0x82f + .byte 0x11 + .4byte .LASF4368 + .byte 0x1 + .byte 0x74 + .byte 0x2c + .4byte 0x6b + .byte 0x2 + .byte 0x91 + .byte 0x60 + .byte 0 + .byte 0xb + .4byte .LBB13 + .4byte .LBE13-.LBB13 + .byte 0x11 + .4byte .LASF4368 + .byte 0x1 + .byte 0x7e + .byte 0x2c + .4byte 0x6b + .byte 0x2 + .byte 0x91 + .byte 0x54 + .byte 0 + .byte 0 + .byte 0x15 + .4byte .LASF4412 + .byte 0x1 + .byte 0x55 + .byte 0xa + .4byte 0xb0 + .4byte .LFB13 + .4byte .LFE13-.LFB13 + .byte 0x1 + .byte 0x9c + .4byte 0x8dd + .byte 0xb + .4byte .LBB8 + .4byte .LBE8-.LBB8 + .byte 0x16 + .string "hi" + .byte 0x1 + .byte 0x5d + .byte 0xe + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0x16 + .string "lo" + .byte 0x1 + .byte 0x5e + .byte 0xe + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x60 + .byte 0x18 + .4byte .LBB9 + .4byte .LBE9-.LBB9 + .4byte 0x8a5 + .byte 0x11 + .4byte .LASF4368 + .byte 0x1 + .byte 0x5d + .byte 0x24 + .4byte 0x6b + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x18 + .4byte .LBB10 + .4byte .LBE10-.LBB10 + .4byte 0x8c2 + .byte 0x11 + .4byte .LASF4368 + .byte 0x1 + .byte 0x5e + .byte 0x24 + .4byte 0x6b + .byte 0x2 + .byte 0x91 + .byte 0x64 + .byte 0 + .byte 0xb + .4byte .LBB11 + .4byte .LBE11-.LBB11 + .byte 0x11 + .4byte .LASF4368 + .byte 0x1 + .byte 0x5f + .byte 0x20 + .4byte 0x6b + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0 + .byte 0 + .byte 0 + .byte 0x15 + .4byte .LASF4413 + .byte 0x1 + .byte 0x44 + .byte 0xa + .4byte 0xb0 + .4byte .LFB12 + .4byte .LFE12-.LFB12 + .byte 0x1 + .byte 0x9c + .4byte 0x971 + .byte 0xb + .4byte .LBB4 + .4byte .LBE4-.LBB4 + .byte 0x16 + .string "hi" + .byte 0x1 + .byte 0x4c + .byte 0xe + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0x16 + .string "lo" + .byte 0x1 + .byte 0x4d + .byte 0xe + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x60 + .byte 0x18 + .4byte .LBB5 + .4byte .LBE5-.LBB5 + .4byte 0x939 + .byte 0x11 + .4byte .LASF4368 + .byte 0x1 + .byte 0x4c + .byte 0x24 + .4byte 0x6b + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0x18 + .4byte .LBB6 + .4byte .LBE6-.LBB6 + .4byte 0x956 + .byte 0x11 + .4byte .LASF4368 + .byte 0x1 + .byte 0x4d + .byte 0x24 + .4byte 0x6b + .byte 0x2 + .byte 0x91 + .byte 0x64 + .byte 0 + .byte 0xb + .4byte .LBB7 + .4byte .LBE7-.LBB7 + .byte 0x11 + .4byte .LASF4368 + .byte 0x1 + .byte 0x4e + .byte 0x20 + .4byte 0x6b + .byte 0x2 + .byte 0x91 + .byte 0x5c + .byte 0 + .byte 0 + .byte 0 + .byte 0x13 + .4byte .LASF4414 + .byte 0x1 + .byte 0x3f + .byte 0xa + .4byte 0x9f + .4byte .LFB11 + .4byte .LFE11-.LFB11 + .byte 0x1 + .byte 0x9c + .byte 0x12 + .4byte .LASF4415 + .byte 0x1 + .byte 0x35 + .byte 0xa + .4byte 0xb0 + .4byte .LFB10 + .4byte .LFE10-.LFB10 + .byte 0x1 + .byte 0x9c + .4byte 0x9c8 + .byte 0xb + .4byte .LBB3 + .4byte .LBE3-.LBB3 + .byte 0x16 + .string "hi" + .byte 0x1 + .byte 0x38 + .byte 0xe + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x4c + .byte 0x16 + .string "lo" + .byte 0x1 + .byte 0x39 + .byte 0xe + .4byte 0x9f + .byte 0x2 + .byte 0x91 + .byte 0x48 + .byte 0 + .byte 0 + .byte 0x13 + .4byte .LASF4416 + .byte 0x1 + .byte 0x30 + .byte 0xa + .4byte 0x9f + .4byte .LFB9 + .4byte .LFE9-.LFB9 + .byte 0x1 + .byte 0x9c + .byte 0x13 + .4byte .LASF4417 + .byte 0x1 + .byte 0x2a + .byte 0xa + .4byte 0x9f + .4byte .LFB8 + .4byte .LFE8-.LFB8 + .byte 0x1 + .byte 0x9c + .byte 0x14 + .4byte .LASF4418 + .byte 0x1 + .byte 0x1a + .byte 0x6 + .4byte .LFB7 + .4byte .LFE7-.LFB7 + .byte 0x1 + .byte 0x9c + .4byte 0xa24 + .byte 0xb + .4byte .LBB2 + .4byte .LBE2-.LBB2 + .byte 0x11 + .4byte .LASF4368 + .byte 0x1 + .byte 0x1e + .byte 0x16 + .4byte 0x6b + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0 + .byte 0 + .byte 0x19 + .4byte .LASF4423 + .byte 0x1 + .byte 0x11 + .byte 0x6 + .4byte .LFB6 + .4byte .LFE6-.LFB6 + .byte 0x1 + .byte 0x9c + .byte 0 + .section .debug_abbrev,"",@progbits +.Ldebug_abbrev0: + .byte 0x1 + .byte 0x11 + .byte 0x1 + .byte 0x25 + .byte 0xe + .byte 0x13 + .byte 0xb + .byte 0x3 + .byte 0xe + .byte 0x1b + .byte 0xe + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x10 + .byte 0x17 + .byte 0x99,0x42 + .byte 0x17 + .byte 0 + .byte 0 + .byte 0x2 + .byte 0x24 + .byte 0 + .byte 0xb + .byte 0xb + .byte 0x3e + .byte 0xb + .byte 0x3 + .byte 0xe + .byte 0 + .byte 0 + .byte 0x3 + .byte 0x16 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x4 + .byte 0x24 + .byte 0 + .byte 0xb + .byte 0xb + .byte 0x3e + .byte 0xb + .byte 0x3 + .byte 0x8 + .byte 0 + .byte 0 + .byte 0x5 + .byte 0x35 + .byte 0 + .byte 0x49 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x6 + .byte 0x34 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x3f + .byte 0x19 + .byte 0x3c + .byte 0x19 + .byte 0 + .byte 0 + .byte 0x7 + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x96,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x8 + .byte 0x5 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0x9 + .byte 0x34 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0xa + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0xb + .byte 0xb + .byte 0x1 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0 + .byte 0 + .byte 0xc + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x49 + .byte 0x13 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x96,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0xd + .byte 0x34 + .byte 0 + .byte 0x3 + .byte 0x8 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0x5 + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0xe + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x96,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0xf + .byte 0x5 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0x10 + .byte 0x5 + .byte 0 + .byte 0x3 + .byte 0x8 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0x11 + .byte 0x34 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0x12 + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x49 + .byte 0x13 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x96,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x13 + .byte 0x2e + .byte 0 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x49 + .byte 0x13 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0 + .byte 0 + .byte 0x14 + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x15 + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x49 + .byte 0x13 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x16 + .byte 0x34 + .byte 0 + .byte 0x3 + .byte 0x8 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0x17 + .byte 0xf + .byte 0 + .byte 0xb + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x18 + .byte 0xb + .byte 0x1 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x19 + .byte 0x2e + .byte 0 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0 + .byte 0 + .byte 0 + .section .debug_aranges,"",@progbits + .4byte 0x1c + .2byte 0x2 + .4byte .Ldebug_info0 + .byte 0x4 + .byte 0 + .2byte 0 + .2byte 0 + .4byte .Ltext0 + .4byte .Letext0-.Ltext0 + .4byte 0 + .4byte 0 + .section .debug_macro,"",@progbits +.Ldebug_macro0: + .2byte 0x4 + .byte 0x2 + .4byte .Ldebug_line0 + .byte 0x3 + .byte 0 + .byte 0x1 + .byte 0x5 + .byte 0x1 + .4byte .LASF0 + .byte 0x5 + .byte 0x2 + .4byte .LASF1 + .byte 0x5 + .byte 0x3 + .4byte .LASF2 + .byte 0x5 + .byte 0x4 + .4byte .LASF3 + .byte 0x5 + .byte 0x5 + .4byte .LASF4 + .byte 0x5 + .byte 0x6 + .4byte .LASF5 + .byte 0x5 + .byte 0x7 + .4byte .LASF6 + .byte 0x5 + .byte 0x8 + .4byte .LASF7 + .byte 0x5 + .byte 0x9 + .4byte .LASF8 + .byte 0x5 + .byte 0xa + .4byte .LASF9 + .byte 0x5 + .byte 0xb + .4byte .LASF10 + .byte 0x5 + .byte 0xc + .4byte .LASF11 + .byte 0x5 + .byte 0xd + .4byte .LASF12 + .byte 0x5 + .byte 0xe + .4byte .LASF13 + .byte 0x5 + .byte 0xf + .4byte .LASF14 + .byte 0x5 + .byte 0x10 + .4byte .LASF15 + .byte 0x5 + .byte 0x11 + .4byte .LASF16 + .byte 0x5 + .byte 0x12 + .4byte .LASF17 + .byte 0x5 + .byte 0x13 + .4byte .LASF18 + .byte 0x5 + .byte 0x14 + .4byte .LASF19 + .byte 0x5 + .byte 0x15 + .4byte .LASF20 + .byte 0x5 + .byte 0x16 + .4byte .LASF21 + .byte 0x5 + .byte 0x17 + .4byte .LASF22 + .byte 0x5 + .byte 0x18 + .4byte .LASF23 + .byte 0x5 + .byte 0x19 + .4byte .LASF24 + .byte 0x5 + .byte 0x1a + .4byte .LASF25 + .byte 0x5 + .byte 0x1b + .4byte .LASF26 + .byte 0x5 + .byte 0x1c + .4byte .LASF27 + .byte 0x5 + .byte 0x1d + .4byte .LASF28 + .byte 0x5 + .byte 0x1e + .4byte .LASF29 + .byte 0x5 + .byte 0x1f + .4byte .LASF30 + .byte 0x5 + .byte 0x20 + .4byte .LASF31 + .byte 0x5 + .byte 0x21 + .4byte .LASF32 + .byte 0x5 + .byte 0x22 + .4byte .LASF33 + .byte 0x5 + .byte 0x23 + .4byte .LASF34 + .byte 0x5 + .byte 0x24 + .4byte .LASF35 + .byte 0x5 + .byte 0x25 + .4byte .LASF36 + .byte 0x5 + .byte 0x26 + .4byte .LASF37 + .byte 0x5 + .byte 0x27 + .4byte .LASF38 + .byte 0x5 + .byte 0x28 + .4byte .LASF39 + .byte 0x5 + .byte 0x29 + .4byte .LASF40 + .byte 0x5 + .byte 0x2a + .4byte .LASF41 + .byte 0x5 + .byte 0x2b + .4byte .LASF42 + .byte 0x5 + .byte 0x2c + .4byte .LASF43 + .byte 0x5 + .byte 0x2d + .4byte .LASF44 + .byte 0x5 + .byte 0x2e + .4byte .LASF45 + .byte 0x5 + .byte 0x2f + .4byte .LASF46 + .byte 0x5 + .byte 0x30 + .4byte .LASF47 + .byte 0x5 + .byte 0x31 + .4byte .LASF48 + .byte 0x5 + .byte 0x32 + .4byte .LASF49 + .byte 0x5 + .byte 0x33 + .4byte .LASF50 + .byte 0x5 + .byte 0x34 + .4byte .LASF51 + .byte 0x5 + .byte 0x35 + .4byte .LASF52 + .byte 0x5 + .byte 0x36 + .4byte .LASF53 + .byte 0x5 + .byte 0x37 + .4byte .LASF54 + .byte 0x5 + .byte 0x38 + .4byte .LASF55 + .byte 0x5 + .byte 0x39 + .4byte .LASF56 + .byte 0x5 + .byte 0x3a + .4byte .LASF57 + .byte 0x5 + .byte 0x3b + .4byte .LASF58 + .byte 0x5 + .byte 0x3c + .4byte .LASF59 + .byte 0x5 + .byte 0x3d + .4byte .LASF60 + .byte 0x5 + .byte 0x3e + .4byte .LASF61 + .byte 0x5 + .byte 0x3f + .4byte .LASF62 + .byte 0x5 + .byte 0x40 + .4byte .LASF63 + .byte 0x5 + .byte 0x41 + .4byte .LASF64 + .byte 0x5 + .byte 0x42 + .4byte .LASF65 + .byte 0x5 + .byte 0x43 + .4byte .LASF66 + .byte 0x5 + .byte 0x44 + .4byte .LASF67 + .byte 0x5 + .byte 0x45 + .4byte .LASF68 + .byte 0x5 + .byte 0x46 + .4byte .LASF69 + .byte 0x5 + .byte 0x47 + .4byte .LASF70 + .byte 0x5 + .byte 0x48 + .4byte .LASF71 + .byte 0x5 + .byte 0x49 + .4byte .LASF72 + .byte 0x5 + .byte 0x4a + .4byte .LASF73 + .byte 0x5 + .byte 0x4b + .4byte .LASF74 + .byte 0x5 + .byte 0x4c + .4byte .LASF75 + .byte 0x5 + .byte 0x4d + .4byte .LASF76 + .byte 0x5 + .byte 0x4e + .4byte .LASF77 + .byte 0x5 + .byte 0x4f + .4byte .LASF78 + .byte 0x5 + .byte 0x50 + .4byte .LASF79 + .byte 0x5 + .byte 0x51 + .4byte .LASF80 + .byte 0x5 + .byte 0x52 + .4byte .LASF81 + .byte 0x5 + .byte 0x53 + .4byte .LASF82 + .byte 0x5 + .byte 0x54 + .4byte .LASF83 + .byte 0x5 + .byte 0x55 + .4byte .LASF84 + .byte 0x5 + .byte 0x56 + .4byte .LASF85 + .byte 0x5 + .byte 0x57 + .4byte .LASF86 + .byte 0x5 + .byte 0x58 + .4byte .LASF87 + .byte 0x5 + .byte 0x59 + .4byte .LASF88 + .byte 0x5 + .byte 0x5a + .4byte .LASF89 + .byte 0x5 + .byte 0x5b + .4byte .LASF90 + .byte 0x5 + .byte 0x5c + .4byte .LASF91 + .byte 0x5 + .byte 0x5d + .4byte .LASF92 + .byte 0x5 + .byte 0x5e + .4byte .LASF93 + .byte 0x5 + .byte 0x5f + .4byte .LASF94 + .byte 0x5 + .byte 0x60 + .4byte .LASF95 + .byte 0x5 + .byte 0x61 + .4byte .LASF96 + .byte 0x5 + .byte 0x62 + .4byte .LASF97 + .byte 0x5 + .byte 0x63 + .4byte .LASF98 + .byte 0x5 + .byte 0x64 + .4byte .LASF99 + .byte 0x5 + .byte 0x65 + .4byte .LASF100 + .byte 0x5 + .byte 0x66 + .4byte .LASF101 + .byte 0x5 + .byte 0x67 + .4byte .LASF102 + .byte 0x5 + .byte 0x68 + .4byte .LASF103 + .byte 0x5 + .byte 0x69 + .4byte .LASF104 + .byte 0x5 + .byte 0x6a + .4byte .LASF105 + .byte 0x5 + .byte 0x6b + .4byte .LASF106 + .byte 0x5 + .byte 0x6c + .4byte .LASF107 + .byte 0x5 + .byte 0x6d + .4byte .LASF108 + .byte 0x5 + .byte 0x6e + .4byte .LASF109 + .byte 0x5 + .byte 0x6f + .4byte .LASF110 + .byte 0x5 + .byte 0x70 + .4byte .LASF111 + .byte 0x5 + .byte 0x71 + .4byte .LASF112 + .byte 0x5 + .byte 0x72 + .4byte .LASF113 + .byte 0x5 + .byte 0x73 + .4byte .LASF114 + .byte 0x5 + .byte 0x74 + .4byte .LASF115 + .byte 0x5 + .byte 0x75 + .4byte .LASF116 + .byte 0x5 + .byte 0x76 + .4byte .LASF117 + .byte 0x5 + .byte 0x77 + .4byte .LASF118 + .byte 0x5 + .byte 0x78 + .4byte .LASF119 + .byte 0x5 + .byte 0x79 + .4byte .LASF120 + .byte 0x5 + .byte 0x7a + .4byte .LASF121 + .byte 0x5 + .byte 0x7b + .4byte .LASF122 + .byte 0x5 + .byte 0x7c + .4byte .LASF123 + .byte 0x5 + .byte 0x7d + .4byte .LASF124 + .byte 0x5 + .byte 0x7e + .4byte .LASF125 + .byte 0x5 + .byte 0x7f + .4byte .LASF126 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF127 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF128 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF129 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF130 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF131 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF132 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF133 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF134 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF135 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF136 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF137 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF138 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF139 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF140 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF141 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF142 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF143 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF144 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF145 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF146 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF147 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF148 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF149 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF150 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF151 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF152 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF153 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF154 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF155 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF156 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF157 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF158 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF159 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF160 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF161 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF162 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF163 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF164 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF165 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF166 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF167 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF168 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF169 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF170 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF171 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF172 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF173 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF174 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF175 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF176 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF177 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF178 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF179 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF180 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF181 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF182 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF183 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF184 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF185 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF186 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF187 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF188 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF189 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF190 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF191 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF192 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF193 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF194 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF195 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF196 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF197 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF198 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF199 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF200 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF201 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF202 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF203 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF204 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF205 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF206 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF207 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF208 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF209 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF210 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF211 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF212 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF213 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF214 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF215 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF216 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF217 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF218 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF219 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF220 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF221 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF222 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF223 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF224 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF225 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF226 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF227 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF228 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF229 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF230 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF231 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF232 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF233 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF234 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF235 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF236 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF237 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF238 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF239 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF240 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF241 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF242 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF243 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF244 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF245 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF246 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF247 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF248 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF249 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF250 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF251 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF252 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF253 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF254 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF255 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF256 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF257 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF258 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF259 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF260 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF261 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF262 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF263 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF264 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF265 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF266 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF267 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF268 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF269 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF270 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF271 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF272 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF273 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF274 + .byte 0x5 + .byte 0x94,0x2 + .4byte .LASF275 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF276 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF277 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF278 + .byte 0x5 + .byte 0x98,0x2 + .4byte .LASF279 + .byte 0x5 + .byte 0x99,0x2 + .4byte .LASF280 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF281 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF282 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF283 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF284 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF285 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF286 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF287 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF288 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF289 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF290 + .byte 0x5 + .byte 0xa4,0x2 + .4byte .LASF291 + .byte 0x5 + .byte 0xa5,0x2 + .4byte .LASF292 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF293 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF294 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF295 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF296 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF297 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF298 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF299 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF300 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF301 + .byte 0x5 + .byte 0xaf,0x2 + .4byte .LASF302 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF303 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF304 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF305 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF306 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF307 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF308 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF309 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF310 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF311 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF312 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF313 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF314 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF315 + .byte 0x5 + .byte 0xbd,0x2 + .4byte .LASF316 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF317 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF318 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF319 + .byte 0x5 + .byte 0x1 + .4byte .LASF320 + .byte 0x5 + .byte 0x2 + .4byte .LASF321 + .byte 0x5 + .byte 0x3 + .4byte .LASF322 + .byte 0x5 + .byte 0x4 + .4byte .LASF323 + .byte 0x5 + .byte 0x5 + .4byte .LASF324 + .byte 0x5 + .byte 0x6 + .4byte .LASF325 + .byte 0x5 + .byte 0x7 + .4byte .LASF326 + .byte 0x5 + .byte 0x8 + .4byte .LASF327 + .byte 0x5 + .byte 0x9 + .4byte .LASF328 + .file 6 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral/gd32vf103.h" + .byte 0x3 + .byte 0x2 + .byte 0x6 + .byte 0x7 + .4byte .Ldebug_macro2 + .byte 0x3 + .byte 0xaf,0x1 + .byte 0x5 + .byte 0x5 + .byte 0x28 + .4byte .LASF340 + .file 7 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\stdint.h" + .byte 0x3 + .byte 0x2e + .byte 0x7 + .byte 0x5 + .byte 0xa + .4byte .LASF341 + .byte 0x3 + .byte 0xc + .byte 0x2 + .byte 0x5 + .byte 0x6 + .4byte .LASF342 + .file 8 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\features.h" + .byte 0x3 + .byte 0x8 + .byte 0x8 + .byte 0x5 + .byte 0x16 + .4byte .LASF343 + .file 9 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\_newlib_version.h" + .byte 0x3 + .byte 0x1c + .byte 0x9 + .byte 0x7 + .4byte .Ldebug_macro3 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro5 + .byte 0x4 + .file 10 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_intsup.h" + .byte 0x3 + .byte 0xd + .byte 0xa + .byte 0x7 + .4byte .Ldebug_macro6 + .byte 0x4 + .byte 0x3 + .byte 0xe + .byte 0x3 + .byte 0x7 + .4byte .Ldebug_macro7 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro8 + .byte 0x4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro9 + .file 11 "board/gd32vf103_libopt.h" + .byte 0x3 + .byte 0xec,0x1 + .byte 0xb + .byte 0x5 + .byte 0x25 + .4byte .LASF526 + .file 12 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_adc.h" + .byte 0x3 + .byte 0x27 + .byte 0xc + .byte 0x5 + .byte 0x25 + .4byte .LASF527 + .byte 0x3 + .byte 0x27 + .byte 0x6 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro10 + .byte 0x4 + .file 13 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_bkp.h" + .byte 0x3 + .byte 0x28 + .byte 0xd + .byte 0x7 + .4byte .Ldebug_macro11 + .byte 0x4 + .file 14 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_can.h" + .byte 0x3 + .byte 0x29 + .byte 0xe + .byte 0x7 + .4byte .Ldebug_macro12 + .byte 0x4 + .file 15 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_crc.h" + .byte 0x3 + .byte 0x2a + .byte 0xf + .byte 0x7 + .4byte .Ldebug_macro13 + .byte 0x4 + .file 16 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dac.h" + .byte 0x3 + .byte 0x2b + .byte 0x10 + .byte 0x7 + .4byte .Ldebug_macro14 + .byte 0x4 + .file 17 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dma.h" + .byte 0x3 + .byte 0x2c + .byte 0x11 + .byte 0x7 + .4byte .Ldebug_macro15 + .byte 0x4 + .file 18 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_eclic.h" + .byte 0x3 + .byte 0x2d + .byte 0x12 + .byte 0x7 + .4byte .Ldebug_macro16 + .byte 0x4 + .file 19 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_exmc.h" + .byte 0x3 + .byte 0x2e + .byte 0x13 + .byte 0x7 + .4byte .Ldebug_macro17 + .byte 0x4 + .file 20 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_exti.h" + .byte 0x3 + .byte 0x2f + .byte 0x14 + .byte 0x7 + .4byte .Ldebug_macro18 + .byte 0x4 + .file 21 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_fmc.h" + .byte 0x3 + .byte 0x30 + .byte 0x15 + .byte 0x7 + .4byte .Ldebug_macro19 + .byte 0x4 + .file 22 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_gpio.h" + .byte 0x3 + .byte 0x31 + .byte 0x16 + .byte 0x7 + .4byte .Ldebug_macro20 + .byte 0x4 + .file 23 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_i2c.h" + .byte 0x3 + .byte 0x32 + .byte 0x17 + .byte 0x7 + .4byte .Ldebug_macro21 + .byte 0x4 + .file 24 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_fwdgt.h" + .byte 0x3 + .byte 0x33 + .byte 0x18 + .byte 0x7 + .4byte .Ldebug_macro22 + .byte 0x4 + .file 25 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dbg.h" + .byte 0x3 + .byte 0x34 + .byte 0x19 + .byte 0x7 + .4byte .Ldebug_macro23 + .byte 0x4 + .file 26 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_pmu.h" + .byte 0x3 + .byte 0x35 + .byte 0x1a + .byte 0x7 + .4byte .Ldebug_macro24 + .byte 0x4 + .file 27 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_rcu.h" + .byte 0x3 + .byte 0x36 + .byte 0x1b + .byte 0x7 + .4byte .Ldebug_macro25 + .byte 0x4 + .file 28 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_rtc.h" + .byte 0x3 + .byte 0x37 + .byte 0x1c + .byte 0x7 + .4byte .Ldebug_macro26 + .byte 0x4 + .file 29 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_spi.h" + .byte 0x3 + .byte 0x38 + .byte 0x1d + .byte 0x7 + .4byte .Ldebug_macro27 + .byte 0x4 + .file 30 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_timer.h" + .byte 0x3 + .byte 0x39 + .byte 0x1e + .byte 0x7 + .4byte .Ldebug_macro28 + .byte 0x4 + .file 31 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_usart.h" + .byte 0x3 + .byte 0x3a + .byte 0x1f + .byte 0x7 + .4byte .Ldebug_macro29 + .byte 0x4 + .file 32 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_wwdgt.h" + .byte 0x3 + .byte 0x3b + .byte 0x20 + .byte 0x7 + .4byte .Ldebug_macro30 + .byte 0x4 + .file 33 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_func.h" + .byte 0x3 + .byte 0x3c + .byte 0x21 + .byte 0x5 + .byte 0x4 + .4byte .LASF3074 + .byte 0x3 + .byte 0x7 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro31 + .byte 0x4 + .file 34 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_timer.h" + .byte 0x3 + .byte 0x8 + .byte 0x22 + .byte 0x7 + .4byte .Ldebug_macro32 + .byte 0x4 + .file 35 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_eclic.h" + .byte 0x3 + .byte 0x9 + .byte 0x23 + .byte 0x5 + .byte 0x4 + .4byte .LASF3138 + .file 36 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/riscv_const.h" + .byte 0x3 + .byte 0x6 + .byte 0x24 + .byte 0x7 + .4byte .Ldebug_macro33 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro34 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro35 + .byte 0x4 + .byte 0x4 + .byte 0x4 + .file 37 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\stdio.h" + .byte 0x3 + .byte 0x3 + .byte 0x25 + .byte 0x5 + .byte 0x1b + .4byte .LASF3169 + .file 38 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\_ansi.h" + .byte 0x3 + .byte 0x1d + .byte 0x26 + .byte 0x5 + .byte 0x8 + .4byte .LASF3170 + .file 39 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\newlib.h" + .byte 0x3 + .byte 0xa + .byte 0x27 + .byte 0x7 + .4byte .Ldebug_macro36 + .byte 0x4 + .file 40 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\config.h" + .byte 0x3 + .byte 0xb + .byte 0x28 + .byte 0x5 + .byte 0x2 + .4byte .LASF3185 + .file 41 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\machine\\ieeefp.h" + .byte 0x3 + .byte 0x4 + .byte 0x29 + .byte 0x7 + .4byte .Ldebug_macro37 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro38 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro39 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro40 + .file 42 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\cdefs.h" + .byte 0x3 + .byte 0x23 + .byte 0x2a + .byte 0x5 + .byte 0x2b + .4byte .LASF3207 + .byte 0x3 + .byte 0x2f + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro41 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro42 + .byte 0x4 + .byte 0x3 + .byte 0x24 + .byte 0x4 + .byte 0x4 + .byte 0x5 + .byte 0x27 + .4byte .LASF3330 + .file 43 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\lib\\gcc\\riscv-none-embed\\10.2.0\\include\\stdarg.h" + .byte 0x3 + .byte 0x28 + .byte 0x2b + .byte 0x7 + .4byte .Ldebug_macro43 + .byte 0x4 + .file 44 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\reent.h" + .byte 0x3 + .byte 0x3c + .byte 0x2c + .byte 0x5 + .byte 0xb + .4byte .LASF3333 + .byte 0x3 + .byte 0xd + .byte 0x26 + .byte 0x4 + .byte 0x3 + .byte 0xe + .byte 0x4 + .byte 0x4 + .file 45 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_types.h" + .byte 0x3 + .byte 0xf + .byte 0x2d + .byte 0x7 + .4byte .Ldebug_macro44 + .byte 0x3 + .byte 0x18 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro45 + .byte 0x4 + .file 46 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\machine\\_types.h" + .byte 0x3 + .byte 0x1b + .byte 0x2e + .byte 0x5 + .byte 0x6 + .4byte .LASF3338 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro46 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro47 + .file 47 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\lock.h" + .byte 0x3 + .byte 0x22 + .byte 0x2f + .byte 0x7 + .4byte .Ldebug_macro48 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro49 + .byte 0x4 + .file 48 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\types.h" + .byte 0x3 + .byte 0x3d + .byte 0x30 + .byte 0x7 + .4byte .Ldebug_macro50 + .file 49 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_pthreadtypes.h" + .byte 0x3 + .byte 0xdf,0x1 + .byte 0x31 + .byte 0x5 + .byte 0x13 + .4byte .LASF3443 + .byte 0x4 + .file 50 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\machine\\types.h" + .byte 0x3 + .byte 0xe0,0x1 + .byte 0x32 + .byte 0x4 + .byte 0x6 + .byte 0xe4,0x1 + .4byte .LASF3444 + .byte 0x4 + .byte 0x5 + .byte 0x43 + .4byte .LASF3445 + .file 51 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\stdio.h" + .byte 0x3 + .byte 0x4f + .byte 0x33 + .byte 0x7 + .4byte .Ldebug_macro51 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro52 + .byte 0x4 + .file 52 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\stdlib.h" + .byte 0x3 + .byte 0x4 + .byte 0x34 + .byte 0x5 + .byte 0x8 + .4byte .LASF3497 + .byte 0x3 + .byte 0xa + .byte 0x29 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro53 + .byte 0x3 + .byte 0x10 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro41 + .byte 0x4 + .file 53 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\machine\\stdlib.h" + .byte 0x3 + .byte 0x14 + .byte 0x35 + .byte 0x5 + .byte 0x2 + .4byte .LASF3499 + .byte 0x4 + .file 54 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\alloca.h" + .byte 0x3 + .byte 0x16 + .byte 0x36 + .byte 0x7 + .4byte .Ldebug_macro54 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro55 + .byte 0x4 + .file 55 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\string.h" + .byte 0x3 + .byte 0x5 + .byte 0x37 + .byte 0x7 + .4byte .Ldebug_macro56 + .byte 0x3 + .byte 0x11 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro41 + .byte 0x4 + .file 56 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\string.h" + .byte 0x3 + .byte 0xaf,0x1 + .byte 0x38 + .byte 0x5 + .byte 0xd + .4byte .LASF3509 + .byte 0x4 + .byte 0x4 + .file 57 "D:\\rt-thread\\components\\libc\\compilers\\common/unistd.h" + .byte 0x3 + .byte 0xa + .byte 0x39 + .file 58 "D:\\rt-thread\\components\\libc\\compilers\\common/sys/unistd.h" + .byte 0x3 + .byte 0xa + .byte 0x3a + .byte 0x5 + .byte 0xd + .4byte .LASF3510 + .byte 0x3 + .byte 0xf + .byte 0x4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro57 + .byte 0x4 + .byte 0x4 + .file 59 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers\\riscv_encoding.h" + .byte 0x3 + .byte 0xd + .byte 0x3b + .byte 0x7 + .4byte .Ldebug_macro58 + .byte 0x4 + .file 60 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers\\n200_func.h" + .byte 0x3 + .byte 0xe + .byte 0x3c + .byte 0x4 + .byte 0x4 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103.h.37.6b141d903229e2235d36f2860fb69b6b,comdat +.Ldebug_macro2: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF329 + .byte 0x5 + .byte 0x35 + .4byte .LASF330 + .byte 0x5 + .byte 0x37 + .4byte .LASF331 + .byte 0x5 + .byte 0x38 + .4byte .LASF332 + .byte 0x5 + .byte 0x40 + .4byte .LASF333 + .byte 0x5 + .byte 0x41 + .4byte .LASF334 + .byte 0x5 + .byte 0x49 + .4byte .LASF335 + .byte 0x5 + .byte 0x4e + .4byte .LASF336 + .byte 0x5 + .byte 0x53 + .4byte .LASF337 + .byte 0x5 + .byte 0x58 + .4byte .LASF338 + .byte 0x5 + .byte 0x5d + .4byte .LASF339 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._newlib_version.h.4.bfdf54b0af045d4a71376ae00f63a22c,comdat +.Ldebug_macro3: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4 + .4byte .LASF344 + .byte 0x5 + .byte 0x6 + .4byte .LASF345 + .byte 0x5 + .byte 0x7 + .4byte .LASF346 + .byte 0x5 + .byte 0x8 + .4byte .LASF347 + .byte 0x5 + .byte 0x9 + .4byte .LASF348 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.features.h.33.4ac7543a40bbf4e11e60e29e36a3b28e,comdat +.Ldebug_macro4: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x21 + .4byte .LASF349 + .byte 0x5 + .byte 0x28 + .4byte .LASF350 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF351 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF352 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF353 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF354 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF355 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF356 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF357 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF358 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF359 + .byte 0x5 + .byte 0xca,0x2 + .4byte .LASF360 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._default_types.h.15.247e5cd201eca3442cbf5404108c4935,comdat +.Ldebug_macro5: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xf + .4byte .LASF361 + .byte 0x5 + .byte 0x1a + .4byte .LASF362 + .byte 0x5 + .byte 0x21 + .4byte .LASF363 + .byte 0x5 + .byte 0x2f + .4byte .LASF364 + .byte 0x5 + .byte 0x3d + .4byte .LASF365 + .byte 0x5 + .byte 0x53 + .4byte .LASF366 + .byte 0x5 + .byte 0x6d + .4byte .LASF367 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF368 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF369 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF370 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF371 + .byte 0x6 + .byte 0xf4,0x1 + .4byte .LASF372 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._intsup.h.10.48bafbb683905c4daa4565a85aeeb264,comdat +.Ldebug_macro6: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xa + .4byte .LASF373 + .byte 0x5 + .byte 0x10 + .4byte .LASF374 + .byte 0x6 + .byte 0x2b + .4byte .LASF375 + .byte 0x6 + .byte 0x2c + .4byte .LASF376 + .byte 0x6 + .byte 0x2d + .4byte .LASF377 + .byte 0x6 + .byte 0x2e + .4byte .LASF378 + .byte 0x2 + .byte 0x2f + .string "int" + .byte 0x6 + .byte 0x30 + .4byte .LASF379 + .byte 0x6 + .byte 0x31 + .4byte .LASF380 + .byte 0x6 + .byte 0x32 + .4byte .LASF381 + .byte 0x5 + .byte 0x33 + .4byte .LASF382 + .byte 0x5 + .byte 0x34 + .4byte .LASF383 + .byte 0x5 + .byte 0x35 + .4byte .LASF384 + .byte 0x5 + .byte 0x36 + .4byte .LASF385 + .byte 0x5 + .byte 0x37 + .4byte .LASF386 + .byte 0x5 + .byte 0x38 + .4byte .LASF387 + .byte 0x5 + .byte 0x39 + .4byte .LASF388 + .byte 0x5 + .byte 0x3a + .4byte .LASF389 + .byte 0x5 + .byte 0x43 + .4byte .LASF390 + .byte 0x5 + .byte 0x4a + .4byte .LASF391 + .byte 0x5 + .byte 0x52 + .4byte .LASF392 + .byte 0x5 + .byte 0x5d + .4byte .LASF393 + .byte 0x5 + .byte 0x68 + .4byte .LASF394 + .byte 0x5 + .byte 0x71 + .4byte .LASF395 + .byte 0x5 + .byte 0x78 + .4byte .LASF396 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF397 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF398 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF399 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF400 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF401 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF402 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF403 + .byte 0x6 + .byte 0xb8,0x1 + .4byte .LASF375 + .byte 0x6 + .byte 0xb9,0x1 + .4byte .LASF376 + .byte 0x6 + .byte 0xba,0x1 + .4byte .LASF377 + .byte 0x6 + .byte 0xbb,0x1 + .4byte .LASF378 + .byte 0x2 + .byte 0xbc,0x1 + .string "int" + .byte 0x6 + .byte 0xbd,0x1 + .4byte .LASF381 + .byte 0x6 + .byte 0xc2,0x1 + .4byte .LASF379 + .byte 0x6 + .byte 0xc3,0x1 + .4byte .LASF380 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._stdint.h.10.c24fa3af3bc1706662bb5593a907e841,comdat +.Ldebug_macro7: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xa + .4byte .LASF404 + .byte 0x5 + .byte 0x15 + .4byte .LASF405 + .byte 0x5 + .byte 0x19 + .4byte .LASF406 + .byte 0x5 + .byte 0x1b + .4byte .LASF407 + .byte 0x5 + .byte 0x21 + .4byte .LASF408 + .byte 0x5 + .byte 0x25 + .4byte .LASF409 + .byte 0x5 + .byte 0x27 + .4byte .LASF410 + .byte 0x5 + .byte 0x2d + .4byte .LASF411 + .byte 0x5 + .byte 0x31 + .4byte .LASF412 + .byte 0x5 + .byte 0x33 + .4byte .LASF413 + .byte 0x5 + .byte 0x39 + .4byte .LASF414 + .byte 0x5 + .byte 0x3d + .4byte .LASF415 + .byte 0x5 + .byte 0x3f + .4byte .LASF416 + .byte 0x5 + .byte 0x44 + .4byte .LASF417 + .byte 0x5 + .byte 0x49 + .4byte .LASF418 + .byte 0x5 + .byte 0x4e + .4byte .LASF419 + .byte 0x5 + .byte 0x53 + .4byte .LASF420 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stdint.h.23.d53047a68f4a85177f80b422d52785ed,comdat +.Ldebug_macro8: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x17 + .4byte .LASF421 + .byte 0x5 + .byte 0x1d + .4byte .LASF422 + .byte 0x5 + .byte 0x23 + .4byte .LASF423 + .byte 0x5 + .byte 0x29 + .4byte .LASF424 + .byte 0x5 + .byte 0x35 + .4byte .LASF425 + .byte 0x5 + .byte 0x3f + .4byte .LASF426 + .byte 0x5 + .byte 0x49 + .4byte .LASF427 + .byte 0x5 + .byte 0x53 + .4byte .LASF428 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF429 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF430 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF431 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF432 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF433 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF434 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF435 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF436 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF437 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF438 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF439 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF440 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF441 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF442 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF443 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF444 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF445 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF446 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF447 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF448 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF449 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF450 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF451 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF452 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF453 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF454 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF455 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF456 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF457 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF458 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF459 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF460 + .byte 0x5 + .byte 0x98,0x2 + .4byte .LASF461 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF462 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF463 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF464 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF465 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF466 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF467 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF468 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF469 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF470 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF471 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF472 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF473 + .byte 0x5 + .byte 0xe2,0x2 + .4byte .LASF474 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF475 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF476 + .byte 0x5 + .byte 0xf6,0x2 + .4byte .LASF477 + .byte 0x5 + .byte 0x80,0x3 + .4byte .LASF478 + .byte 0x5 + .byte 0x85,0x3 + .4byte .LASF479 + .byte 0x5 + .byte 0x8c,0x3 + .4byte .LASF480 + .byte 0x5 + .byte 0x8d,0x3 + .4byte .LASF481 + .byte 0x5 + .byte 0x98,0x3 + .4byte .LASF482 + .byte 0x5 + .byte 0x99,0x3 + .4byte .LASF483 + .byte 0x5 + .byte 0xa4,0x3 + .4byte .LASF484 + .byte 0x5 + .byte 0xa5,0x3 + .4byte .LASF485 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF486 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF487 + .byte 0x5 + .byte 0xc1,0x3 + .4byte .LASF488 + .byte 0x5 + .byte 0xc2,0x3 + .4byte .LASF489 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103.h.185.cffba7180870c0512d04c724c6463ab0,comdat +.Ldebug_macro9: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF490 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF491 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF492 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF493 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF494 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF495 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF496 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF497 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF498 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF499 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF500 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF501 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF502 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF503 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF504 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF505 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF506 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF507 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF508 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF509 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF510 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF511 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF512 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF513 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF514 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF515 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF516 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF517 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF518 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF519 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF520 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF521 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF522 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF523 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF524 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF525 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_adc.h.42.14cb8f90e4b5922f8a25d63c78535a21,comdat +.Ldebug_macro10: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x2a + .4byte .LASF528 + .byte 0x5 + .byte 0x2b + .4byte .LASF529 + .byte 0x5 + .byte 0x2e + .4byte .LASF530 + .byte 0x5 + .byte 0x2f + .4byte .LASF531 + .byte 0x5 + .byte 0x30 + .4byte .LASF532 + .byte 0x5 + .byte 0x31 + .4byte .LASF533 + .byte 0x5 + .byte 0x32 + .4byte .LASF534 + .byte 0x5 + .byte 0x33 + .4byte .LASF535 + .byte 0x5 + .byte 0x34 + .4byte .LASF536 + .byte 0x5 + .byte 0x35 + .4byte .LASF537 + .byte 0x5 + .byte 0x36 + .4byte .LASF538 + .byte 0x5 + .byte 0x37 + .4byte .LASF539 + .byte 0x5 + .byte 0x38 + .4byte .LASF540 + .byte 0x5 + .byte 0x39 + .4byte .LASF541 + .byte 0x5 + .byte 0x3a + .4byte .LASF542 + .byte 0x5 + .byte 0x3b + .4byte .LASF543 + .byte 0x5 + .byte 0x3c + .4byte .LASF544 + .byte 0x5 + .byte 0x3d + .4byte .LASF545 + .byte 0x5 + .byte 0x3e + .4byte .LASF546 + .byte 0x5 + .byte 0x3f + .4byte .LASF547 + .byte 0x5 + .byte 0x40 + .4byte .LASF548 + .byte 0x5 + .byte 0x41 + .4byte .LASF549 + .byte 0x5 + .byte 0x42 + .4byte .LASF550 + .byte 0x5 + .byte 0x46 + .4byte .LASF551 + .byte 0x5 + .byte 0x47 + .4byte .LASF552 + .byte 0x5 + .byte 0x48 + .4byte .LASF553 + .byte 0x5 + .byte 0x49 + .4byte .LASF554 + .byte 0x5 + .byte 0x4a + .4byte .LASF555 + .byte 0x5 + .byte 0x4d + .4byte .LASF556 + .byte 0x5 + .byte 0x4e + .4byte .LASF557 + .byte 0x5 + .byte 0x4f + .4byte .LASF558 + .byte 0x5 + .byte 0x50 + .4byte .LASF559 + .byte 0x5 + .byte 0x51 + .4byte .LASF560 + .byte 0x5 + .byte 0x52 + .4byte .LASF561 + .byte 0x5 + .byte 0x53 + .4byte .LASF562 + .byte 0x5 + .byte 0x54 + .4byte .LASF563 + .byte 0x5 + .byte 0x55 + .4byte .LASF564 + .byte 0x5 + .byte 0x56 + .4byte .LASF565 + .byte 0x5 + .byte 0x57 + .4byte .LASF566 + .byte 0x5 + .byte 0x58 + .4byte .LASF567 + .byte 0x5 + .byte 0x59 + .4byte .LASF568 + .byte 0x5 + .byte 0x5c + .4byte .LASF569 + .byte 0x5 + .byte 0x5d + .4byte .LASF570 + .byte 0x5 + .byte 0x5e + .4byte .LASF571 + .byte 0x5 + .byte 0x5f + .4byte .LASF572 + .byte 0x5 + .byte 0x60 + .4byte .LASF573 + .byte 0x5 + .byte 0x61 + .4byte .LASF574 + .byte 0x5 + .byte 0x62 + .4byte .LASF575 + .byte 0x5 + .byte 0x63 + .4byte .LASF576 + .byte 0x5 + .byte 0x64 + .4byte .LASF577 + .byte 0x5 + .byte 0x65 + .4byte .LASF578 + .byte 0x5 + .byte 0x66 + .4byte .LASF579 + .byte 0x5 + .byte 0x67 + .4byte .LASF580 + .byte 0x5 + .byte 0x68 + .4byte .LASF581 + .byte 0x5 + .byte 0x6b + .4byte .LASF582 + .byte 0x5 + .byte 0x6e + .4byte .LASF583 + .byte 0x5 + .byte 0x71 + .4byte .LASF584 + .byte 0x5 + .byte 0x74 + .4byte .LASF585 + .byte 0x5 + .byte 0x77 + .4byte .LASF586 + .byte 0x5 + .byte 0x78 + .4byte .LASF587 + .byte 0x5 + .byte 0x7b + .4byte .LASF588 + .byte 0x5 + .byte 0x7c + .4byte .LASF589 + .byte 0x5 + .byte 0x7f + .4byte .LASF590 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF591 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF592 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF593 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF594 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF595 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF596 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF597 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF598 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF599 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF600 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF601 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF602 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF603 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF604 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF605 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF606 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF607 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF608 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF609 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF610 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF611 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF612 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF613 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF614 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF615 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF616 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF617 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF618 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF619 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF620 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF621 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF622 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF623 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF624 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF625 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF626 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF627 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF628 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF629 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF630 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF631 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF632 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF633 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF634 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF635 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF636 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF637 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF638 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF639 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF640 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF641 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF642 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF643 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF644 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF645 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF646 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF647 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF648 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF649 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF650 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF651 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF652 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF653 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF654 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF655 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF656 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF657 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF658 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF659 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF660 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF661 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF662 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF663 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF664 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF665 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF666 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF667 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF668 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF669 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF670 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF671 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF672 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF673 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF674 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF675 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF676 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF677 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF678 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF679 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF680 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF681 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF682 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF683 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF684 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF685 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF686 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF687 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF688 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF689 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF690 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF691 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF692 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF693 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF694 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF695 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF696 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF697 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF698 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF699 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF700 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF701 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF702 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF703 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF704 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF705 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF706 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF707 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF708 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF709 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_bkp.h.37.565cdaf530a41cd40ed21e5fda39a6ed,comdat +.Ldebug_macro11: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF710 + .byte 0x5 + .byte 0x2a + .4byte .LASF711 + .byte 0x5 + .byte 0x2d + .4byte .LASF712 + .byte 0x5 + .byte 0x2e + .4byte .LASF713 + .byte 0x5 + .byte 0x2f + .4byte .LASF714 + .byte 0x5 + .byte 0x30 + .4byte .LASF715 + .byte 0x5 + .byte 0x31 + .4byte .LASF716 + .byte 0x5 + .byte 0x32 + .4byte .LASF717 + .byte 0x5 + .byte 0x33 + .4byte .LASF718 + .byte 0x5 + .byte 0x34 + .4byte .LASF719 + .byte 0x5 + .byte 0x35 + .4byte .LASF720 + .byte 0x5 + .byte 0x36 + .4byte .LASF721 + .byte 0x5 + .byte 0x37 + .4byte .LASF722 + .byte 0x5 + .byte 0x38 + .4byte .LASF723 + .byte 0x5 + .byte 0x39 + .4byte .LASF724 + .byte 0x5 + .byte 0x3a + .4byte .LASF725 + .byte 0x5 + .byte 0x3b + .4byte .LASF726 + .byte 0x5 + .byte 0x3c + .4byte .LASF727 + .byte 0x5 + .byte 0x3d + .4byte .LASF728 + .byte 0x5 + .byte 0x3e + .4byte .LASF729 + .byte 0x5 + .byte 0x3f + .4byte .LASF730 + .byte 0x5 + .byte 0x40 + .4byte .LASF731 + .byte 0x5 + .byte 0x41 + .4byte .LASF732 + .byte 0x5 + .byte 0x42 + .4byte .LASF733 + .byte 0x5 + .byte 0x43 + .4byte .LASF734 + .byte 0x5 + .byte 0x44 + .4byte .LASF735 + .byte 0x5 + .byte 0x45 + .4byte .LASF736 + .byte 0x5 + .byte 0x46 + .4byte .LASF737 + .byte 0x5 + .byte 0x47 + .4byte .LASF738 + .byte 0x5 + .byte 0x48 + .4byte .LASF739 + .byte 0x5 + .byte 0x49 + .4byte .LASF740 + .byte 0x5 + .byte 0x4a + .4byte .LASF741 + .byte 0x5 + .byte 0x4b + .4byte .LASF742 + .byte 0x5 + .byte 0x4c + .4byte .LASF743 + .byte 0x5 + .byte 0x4d + .4byte .LASF744 + .byte 0x5 + .byte 0x4e + .4byte .LASF745 + .byte 0x5 + .byte 0x4f + .4byte .LASF746 + .byte 0x5 + .byte 0x50 + .4byte .LASF747 + .byte 0x5 + .byte 0x51 + .4byte .LASF748 + .byte 0x5 + .byte 0x52 + .4byte .LASF749 + .byte 0x5 + .byte 0x53 + .4byte .LASF750 + .byte 0x5 + .byte 0x54 + .4byte .LASF751 + .byte 0x5 + .byte 0x55 + .4byte .LASF752 + .byte 0x5 + .byte 0x56 + .4byte .LASF753 + .byte 0x5 + .byte 0x57 + .4byte .LASF754 + .byte 0x5 + .byte 0x58 + .4byte .LASF755 + .byte 0x5 + .byte 0x59 + .4byte .LASF756 + .byte 0x5 + .byte 0x5d + .4byte .LASF757 + .byte 0x5 + .byte 0x60 + .4byte .LASF758 + .byte 0x5 + .byte 0x61 + .4byte .LASF759 + .byte 0x5 + .byte 0x62 + .4byte .LASF760 + .byte 0x5 + .byte 0x63 + .4byte .LASF761 + .byte 0x5 + .byte 0x66 + .4byte .LASF762 + .byte 0x5 + .byte 0x67 + .4byte .LASF763 + .byte 0x5 + .byte 0x6a + .4byte .LASF764 + .byte 0x5 + .byte 0x6b + .4byte .LASF765 + .byte 0x5 + .byte 0x6c + .4byte .LASF766 + .byte 0x5 + .byte 0x6d + .4byte .LASF767 + .byte 0x5 + .byte 0x6e + .4byte .LASF768 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF769 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF770 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF771 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF772 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF773 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF774 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF775 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF776 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF777 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF778 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_can.h.39.9380e444d8240972fa3c91ce629786a4,comdat +.Ldebug_macro12: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF779 + .byte 0x5 + .byte 0x2c + .4byte .LASF780 + .byte 0x5 + .byte 0x2d + .4byte .LASF781 + .byte 0x5 + .byte 0x30 + .4byte .LASF782 + .byte 0x5 + .byte 0x31 + .4byte .LASF783 + .byte 0x5 + .byte 0x32 + .4byte .LASF784 + .byte 0x5 + .byte 0x33 + .4byte .LASF785 + .byte 0x5 + .byte 0x34 + .4byte .LASF786 + .byte 0x5 + .byte 0x35 + .4byte .LASF787 + .byte 0x5 + .byte 0x36 + .4byte .LASF788 + .byte 0x5 + .byte 0x37 + .4byte .LASF789 + .byte 0x5 + .byte 0x38 + .4byte .LASF790 + .byte 0x5 + .byte 0x39 + .4byte .LASF791 + .byte 0x5 + .byte 0x3a + .4byte .LASF792 + .byte 0x5 + .byte 0x3b + .4byte .LASF793 + .byte 0x5 + .byte 0x3c + .4byte .LASF794 + .byte 0x5 + .byte 0x3d + .4byte .LASF795 + .byte 0x5 + .byte 0x3e + .4byte .LASF796 + .byte 0x5 + .byte 0x3f + .4byte .LASF797 + .byte 0x5 + .byte 0x40 + .4byte .LASF798 + .byte 0x5 + .byte 0x41 + .4byte .LASF799 + .byte 0x5 + .byte 0x42 + .4byte .LASF800 + .byte 0x5 + .byte 0x43 + .4byte .LASF801 + .byte 0x5 + .byte 0x44 + .4byte .LASF802 + .byte 0x5 + .byte 0x45 + .4byte .LASF803 + .byte 0x5 + .byte 0x46 + .4byte .LASF804 + .byte 0x5 + .byte 0x47 + .4byte .LASF805 + .byte 0x5 + .byte 0x48 + .4byte .LASF806 + .byte 0x5 + .byte 0x49 + .4byte .LASF807 + .byte 0x5 + .byte 0x4a + .4byte .LASF808 + .byte 0x5 + .byte 0x4b + .4byte .LASF809 + .byte 0x5 + .byte 0x4c + .4byte .LASF810 + .byte 0x5 + .byte 0x4d + .4byte .LASF811 + .byte 0x5 + .byte 0x4e + .4byte .LASF812 + .byte 0x5 + .byte 0x4f + .4byte .LASF813 + .byte 0x5 + .byte 0x50 + .4byte .LASF814 + .byte 0x5 + .byte 0x51 + .4byte .LASF815 + .byte 0x5 + .byte 0x52 + .4byte .LASF816 + .byte 0x5 + .byte 0x53 + .4byte .LASF817 + .byte 0x5 + .byte 0x54 + .4byte .LASF818 + .byte 0x5 + .byte 0x55 + .4byte .LASF819 + .byte 0x5 + .byte 0x56 + .4byte .LASF820 + .byte 0x5 + .byte 0x57 + .4byte .LASF821 + .byte 0x5 + .byte 0x58 + .4byte .LASF822 + .byte 0x5 + .byte 0x59 + .4byte .LASF823 + .byte 0x5 + .byte 0x5a + .4byte .LASF824 + .byte 0x5 + .byte 0x5b + .4byte .LASF825 + .byte 0x5 + .byte 0x5c + .4byte .LASF826 + .byte 0x5 + .byte 0x5d + .4byte .LASF827 + .byte 0x5 + .byte 0x5e + .4byte .LASF828 + .byte 0x5 + .byte 0x5f + .4byte .LASF829 + .byte 0x5 + .byte 0x60 + .4byte .LASF830 + .byte 0x5 + .byte 0x61 + .4byte .LASF831 + .byte 0x5 + .byte 0x62 + .4byte .LASF832 + .byte 0x5 + .byte 0x63 + .4byte .LASF833 + .byte 0x5 + .byte 0x64 + .4byte .LASF834 + .byte 0x5 + .byte 0x65 + .4byte .LASF835 + .byte 0x5 + .byte 0x66 + .4byte .LASF836 + .byte 0x5 + .byte 0x67 + .4byte .LASF837 + .byte 0x5 + .byte 0x68 + .4byte .LASF838 + .byte 0x5 + .byte 0x69 + .4byte .LASF839 + .byte 0x5 + .byte 0x6a + .4byte .LASF840 + .byte 0x5 + .byte 0x6b + .4byte .LASF841 + .byte 0x5 + .byte 0x6c + .4byte .LASF842 + .byte 0x5 + .byte 0x6d + .4byte .LASF843 + .byte 0x5 + .byte 0x6e + .4byte .LASF844 + .byte 0x5 + .byte 0x6f + .4byte .LASF845 + .byte 0x5 + .byte 0x70 + .4byte .LASF846 + .byte 0x5 + .byte 0x71 + .4byte .LASF847 + .byte 0x5 + .byte 0x72 + .4byte .LASF848 + .byte 0x5 + .byte 0x73 + .4byte .LASF849 + .byte 0x5 + .byte 0x74 + .4byte .LASF850 + .byte 0x5 + .byte 0x75 + .4byte .LASF851 + .byte 0x5 + .byte 0x76 + .4byte .LASF852 + .byte 0x5 + .byte 0x77 + .4byte .LASF853 + .byte 0x5 + .byte 0x78 + .4byte .LASF854 + .byte 0x5 + .byte 0x79 + .4byte .LASF855 + .byte 0x5 + .byte 0x7a + .4byte .LASF856 + .byte 0x5 + .byte 0x7b + .4byte .LASF857 + .byte 0x5 + .byte 0x7c + .4byte .LASF858 + .byte 0x5 + .byte 0x7d + .4byte .LASF859 + .byte 0x5 + .byte 0x7e + .4byte .LASF860 + .byte 0x5 + .byte 0x7f + .4byte .LASF861 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF862 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF863 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF864 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF865 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF866 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF867 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF868 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF869 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF870 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF871 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF872 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF873 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF874 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF875 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF876 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF877 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF878 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF879 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF880 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF881 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF882 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF883 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF884 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF885 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF886 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF887 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF888 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF889 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF890 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF891 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF892 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF893 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF894 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF895 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF896 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF897 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF898 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF899 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF900 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF901 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF902 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF903 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF904 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF905 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF906 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF907 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF908 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF909 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF910 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF911 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF912 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF913 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF914 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF915 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF916 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF917 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF918 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF919 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF920 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF921 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF922 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF923 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF924 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF925 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF926 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF927 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF928 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF929 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF930 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF931 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF932 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF933 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF934 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF935 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF936 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF937 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF938 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF939 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF940 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF941 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF942 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF943 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF944 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF945 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF946 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF947 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF948 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF949 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF950 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF951 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF952 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF953 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF954 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF955 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF956 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF957 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF958 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF959 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF960 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF961 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF962 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF963 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF964 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF965 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF966 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF967 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF968 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF969 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF970 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF971 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF972 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF973 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF974 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF975 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF976 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF977 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF978 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF979 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF980 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF981 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF982 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF983 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF984 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF985 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF986 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF987 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF988 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF989 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF990 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF991 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF992 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF993 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF994 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF995 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF996 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF997 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF998 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF999 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF1000 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF1001 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF1002 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF1003 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF1004 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF1005 + .byte 0x5 + .byte 0xe4,0x3 + .4byte .LASF1006 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF1007 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF1008 + .byte 0x5 + .byte 0xed,0x3 + .4byte .LASF1009 + .byte 0x5 + .byte 0xf0,0x3 + .4byte .LASF1010 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF1011 + .byte 0x5 + .byte 0xf6,0x3 + .4byte .LASF1012 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF1013 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF1014 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF1015 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF1016 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF1017 + .byte 0x5 + .byte 0x88,0x4 + .4byte .LASF1018 + .byte 0x5 + .byte 0x8b,0x4 + .4byte .LASF1019 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF1020 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF1021 + .byte 0x5 + .byte 0x94,0x4 + .4byte .LASF1022 + .byte 0x5 + .byte 0x97,0x4 + .4byte .LASF1023 + .byte 0x5 + .byte 0x9a,0x4 + .4byte .LASF1024 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF1025 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF1026 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF1027 + .byte 0x5 + .byte 0xa6,0x4 + .4byte .LASF1028 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF1029 + .byte 0x5 + .byte 0xac,0x4 + .4byte .LASF1030 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF1031 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF1032 + .byte 0x5 + .byte 0xb5,0x4 + .4byte .LASF1033 + .byte 0x5 + .byte 0xb8,0x4 + .4byte .LASF1034 + .byte 0x5 + .byte 0xbb,0x4 + .4byte .LASF1035 + .byte 0x5 + .byte 0xbe,0x4 + .4byte .LASF1036 + .byte 0x5 + .byte 0xc1,0x4 + .4byte .LASF1037 + .byte 0x5 + .byte 0xc4,0x4 + .4byte .LASF1038 + .byte 0x5 + .byte 0xc7,0x4 + .4byte .LASF1039 + .byte 0x5 + .byte 0xc8,0x4 + .4byte .LASF1040 + .byte 0x5 + .byte 0xc9,0x4 + .4byte .LASF1041 + .byte 0x5 + .byte 0xca,0x4 + .4byte .LASF1042 + .byte 0x5 + .byte 0xcb,0x4 + .4byte .LASF1043 + .byte 0x5 + .byte 0xcc,0x4 + .4byte .LASF1044 + .byte 0x5 + .byte 0xcd,0x4 + .4byte .LASF1045 + .byte 0x5 + .byte 0xce,0x4 + .4byte .LASF1046 + .byte 0x5 + .byte 0xcf,0x4 + .4byte .LASF1047 + .byte 0x5 + .byte 0xd1,0x4 + .4byte .LASF1048 + .byte 0x5 + .byte 0xd4,0x4 + .4byte .LASF1049 + .byte 0x5 + .byte 0xd5,0x4 + .4byte .LASF1050 + .byte 0x5 + .byte 0xd6,0x4 + .4byte .LASF1051 + .byte 0x5 + .byte 0xd7,0x4 + .4byte .LASF1052 + .byte 0x5 + .byte 0xda,0x4 + .4byte .LASF1053 + .byte 0x5 + .byte 0xdb,0x4 + .4byte .LASF1054 + .byte 0x5 + .byte 0xdc,0x4 + .4byte .LASF1055 + .byte 0x5 + .byte 0xdd,0x4 + .4byte .LASF1056 + .byte 0x5 + .byte 0xe0,0x4 + .4byte .LASF1057 + .byte 0x5 + .byte 0xe1,0x4 + .4byte .LASF1058 + .byte 0x5 + .byte 0xe2,0x4 + .4byte .LASF1059 + .byte 0x5 + .byte 0xe3,0x4 + .4byte .LASF1060 + .byte 0x5 + .byte 0xe4,0x4 + .4byte .LASF1061 + .byte 0x5 + .byte 0xe5,0x4 + .4byte .LASF1062 + .byte 0x5 + .byte 0xe6,0x4 + .4byte .LASF1063 + .byte 0x5 + .byte 0xe7,0x4 + .4byte .LASF1064 + .byte 0x5 + .byte 0xe8,0x4 + .4byte .LASF1065 + .byte 0x5 + .byte 0xe9,0x4 + .4byte .LASF1066 + .byte 0x5 + .byte 0xea,0x4 + .4byte .LASF1067 + .byte 0x5 + .byte 0xeb,0x4 + .4byte .LASF1068 + .byte 0x5 + .byte 0xec,0x4 + .4byte .LASF1069 + .byte 0x5 + .byte 0xed,0x4 + .4byte .LASF1070 + .byte 0x5 + .byte 0xee,0x4 + .4byte .LASF1071 + .byte 0x5 + .byte 0xef,0x4 + .4byte .LASF1072 + .byte 0x5 + .byte 0xf2,0x4 + .4byte .LASF1073 + .byte 0x5 + .byte 0xf3,0x4 + .4byte .LASF1074 + .byte 0x5 + .byte 0xf4,0x4 + .4byte .LASF1075 + .byte 0x5 + .byte 0xf5,0x4 + .4byte .LASF1076 + .byte 0x5 + .byte 0xf6,0x4 + .4byte .LASF1077 + .byte 0x5 + .byte 0xf7,0x4 + .4byte .LASF1078 + .byte 0x5 + .byte 0xf8,0x4 + .4byte .LASF1079 + .byte 0x5 + .byte 0xf9,0x4 + .4byte .LASF1080 + .byte 0x5 + .byte 0xfc,0x4 + .4byte .LASF1081 + .byte 0x5 + .byte 0xfd,0x4 + .4byte .LASF1082 + .byte 0x5 + .byte 0xfe,0x4 + .4byte .LASF1083 + .byte 0x5 + .byte 0xff,0x4 + .4byte .LASF1084 + .byte 0x5 + .byte 0x82,0x5 + .4byte .LASF1085 + .byte 0x5 + .byte 0x83,0x5 + .4byte .LASF1086 + .byte 0x5 + .byte 0x86,0x5 + .4byte .LASF1087 + .byte 0x5 + .byte 0x87,0x5 + .4byte .LASF1088 + .byte 0x5 + .byte 0x8a,0x5 + .4byte .LASF1089 + .byte 0x5 + .byte 0x8c,0x5 + .4byte .LASF1090 + .byte 0x5 + .byte 0x8d,0x5 + .4byte .LASF1091 + .byte 0x5 + .byte 0x90,0x5 + .4byte .LASF1092 + .byte 0x5 + .byte 0x91,0x5 + .4byte .LASF1093 + .byte 0x5 + .byte 0x92,0x5 + .4byte .LASF1094 + .byte 0x5 + .byte 0x95,0x5 + .4byte .LASF1095 + .byte 0x5 + .byte 0x96,0x5 + .4byte .LASF1096 + .byte 0x5 + .byte 0x99,0x5 + .4byte .LASF1097 + .byte 0x5 + .byte 0x9a,0x5 + .4byte .LASF1098 + .byte 0x5 + .byte 0x9d,0x5 + .4byte .LASF1099 + .byte 0x5 + .byte 0xa0,0x5 + .4byte .LASF1100 + .byte 0x5 + .byte 0xa1,0x5 + .4byte .LASF1101 + .byte 0x5 + .byte 0xa4,0x5 + .4byte .LASF1102 + .byte 0x5 + .byte 0xa7,0x5 + .4byte .LASF1103 + .byte 0x5 + .byte 0xa8,0x5 + .4byte .LASF1104 + .byte 0x5 + .byte 0xa9,0x5 + .4byte .LASF1105 + .byte 0x5 + .byte 0xaa,0x5 + .4byte .LASF1106 + .byte 0x5 + .byte 0xab,0x5 + .4byte .LASF1107 + .byte 0x5 + .byte 0xac,0x5 + .4byte .LASF1108 + .byte 0x5 + .byte 0xad,0x5 + .4byte .LASF1109 + .byte 0x5 + .byte 0xae,0x5 + .4byte .LASF1110 + .byte 0x5 + .byte 0xaf,0x5 + .4byte .LASF1111 + .byte 0x5 + .byte 0xb0,0x5 + .4byte .LASF1112 + .byte 0x5 + .byte 0xb1,0x5 + .4byte .LASF1113 + .byte 0x5 + .byte 0xb2,0x5 + .4byte .LASF1114 + .byte 0x5 + .byte 0xb3,0x5 + .4byte .LASF1115 + .byte 0x5 + .byte 0xb4,0x5 + .4byte .LASF1116 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_crc.h.37.f77f53f1516fc65e49eac544ab82df8c,comdat +.Ldebug_macro13: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1117 + .byte 0x5 + .byte 0x2a + .4byte .LASF1118 + .byte 0x5 + .byte 0x2d + .4byte .LASF1119 + .byte 0x5 + .byte 0x2e + .4byte .LASF1120 + .byte 0x5 + .byte 0x2f + .4byte .LASF1121 + .byte 0x5 + .byte 0x33 + .4byte .LASF1122 + .byte 0x5 + .byte 0x36 + .4byte .LASF1123 + .byte 0x5 + .byte 0x39 + .4byte .LASF1124 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dac.h.37.c64e29f692c863eb577e59c8c0ad940a,comdat +.Ldebug_macro14: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1125 + .byte 0x5 + .byte 0x2a + .4byte .LASF1126 + .byte 0x5 + .byte 0x2b + .4byte .LASF1127 + .byte 0x5 + .byte 0x2c + .4byte .LASF1128 + .byte 0x5 + .byte 0x2f + .4byte .LASF1129 + .byte 0x5 + .byte 0x30 + .4byte .LASF1130 + .byte 0x5 + .byte 0x31 + .4byte .LASF1131 + .byte 0x5 + .byte 0x32 + .4byte .LASF1132 + .byte 0x5 + .byte 0x33 + .4byte .LASF1133 + .byte 0x5 + .byte 0x34 + .4byte .LASF1134 + .byte 0x5 + .byte 0x35 + .4byte .LASF1135 + .byte 0x5 + .byte 0x36 + .4byte .LASF1136 + .byte 0x5 + .byte 0x37 + .4byte .LASF1137 + .byte 0x5 + .byte 0x38 + .4byte .LASF1138 + .byte 0x5 + .byte 0x39 + .4byte .LASF1139 + .byte 0x5 + .byte 0x3a + .4byte .LASF1140 + .byte 0x5 + .byte 0x3b + .4byte .LASF1141 + .byte 0x5 + .byte 0x3f + .4byte .LASF1142 + .byte 0x5 + .byte 0x40 + .4byte .LASF1143 + .byte 0x5 + .byte 0x41 + .4byte .LASF1144 + .byte 0x5 + .byte 0x42 + .4byte .LASF1145 + .byte 0x5 + .byte 0x43 + .4byte .LASF1146 + .byte 0x5 + .byte 0x44 + .4byte .LASF1147 + .byte 0x5 + .byte 0x45 + .4byte .LASF1148 + .byte 0x5 + .byte 0x46 + .4byte .LASF1149 + .byte 0x5 + .byte 0x47 + .4byte .LASF1150 + .byte 0x5 + .byte 0x48 + .4byte .LASF1151 + .byte 0x5 + .byte 0x49 + .4byte .LASF1152 + .byte 0x5 + .byte 0x4a + .4byte .LASF1153 + .byte 0x5 + .byte 0x4b + .4byte .LASF1154 + .byte 0x5 + .byte 0x4c + .4byte .LASF1155 + .byte 0x5 + .byte 0x4f + .4byte .LASF1156 + .byte 0x5 + .byte 0x50 + .4byte .LASF1157 + .byte 0x5 + .byte 0x53 + .4byte .LASF1158 + .byte 0x5 + .byte 0x56 + .4byte .LASF1159 + .byte 0x5 + .byte 0x59 + .4byte .LASF1160 + .byte 0x5 + .byte 0x5c + .4byte .LASF1161 + .byte 0x5 + .byte 0x5f + .4byte .LASF1162 + .byte 0x5 + .byte 0x62 + .4byte .LASF1163 + .byte 0x5 + .byte 0x65 + .4byte .LASF1164 + .byte 0x5 + .byte 0x66 + .4byte .LASF1165 + .byte 0x5 + .byte 0x69 + .4byte .LASF1166 + .byte 0x5 + .byte 0x6a + .4byte .LASF1167 + .byte 0x5 + .byte 0x6d + .4byte .LASF1168 + .byte 0x5 + .byte 0x6e + .4byte .LASF1169 + .byte 0x5 + .byte 0x71 + .4byte .LASF1170 + .byte 0x5 + .byte 0x74 + .4byte .LASF1171 + .byte 0x5 + .byte 0x78 + .4byte .LASF1172 + .byte 0x5 + .byte 0x79 + .4byte .LASF1173 + .byte 0x5 + .byte 0x7a + .4byte .LASF1174 + .byte 0x5 + .byte 0x7b + .4byte .LASF1175 + .byte 0x5 + .byte 0x7c + .4byte .LASF1176 + .byte 0x5 + .byte 0x7d + .4byte .LASF1177 + .byte 0x5 + .byte 0x7e + .4byte .LASF1178 + .byte 0x5 + .byte 0x7f + .4byte .LASF1179 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF1180 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF1181 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF1182 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1183 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1184 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF1185 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1186 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1187 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF1188 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF1189 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1190 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1191 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1192 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF1193 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF1194 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF1195 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF1196 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1197 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1198 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1199 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1200 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1201 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF1202 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF1203 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1204 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1205 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1206 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1207 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1208 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1209 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1210 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1211 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1212 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1213 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF1214 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1215 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1216 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1217 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1218 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1219 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1220 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF1221 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF1222 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1223 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1224 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1225 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dma.h.38.2c314170096cba83b58f6eccfc84a5f7,comdat +.Ldebug_macro15: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x26 + .4byte .LASF1226 + .byte 0x5 + .byte 0x2b + .4byte .LASF1227 + .byte 0x5 + .byte 0x2c + .4byte .LASF1228 + .byte 0x5 + .byte 0x2f + .4byte .LASF1229 + .byte 0x5 + .byte 0x30 + .4byte .LASF1230 + .byte 0x5 + .byte 0x32 + .4byte .LASF1231 + .byte 0x5 + .byte 0x33 + .4byte .LASF1232 + .byte 0x5 + .byte 0x34 + .4byte .LASF1233 + .byte 0x5 + .byte 0x35 + .4byte .LASF1234 + .byte 0x5 + .byte 0x37 + .4byte .LASF1235 + .byte 0x5 + .byte 0x38 + .4byte .LASF1236 + .byte 0x5 + .byte 0x39 + .4byte .LASF1237 + .byte 0x5 + .byte 0x3a + .4byte .LASF1238 + .byte 0x5 + .byte 0x3c + .4byte .LASF1239 + .byte 0x5 + .byte 0x3d + .4byte .LASF1240 + .byte 0x5 + .byte 0x3e + .4byte .LASF1241 + .byte 0x5 + .byte 0x3f + .4byte .LASF1242 + .byte 0x5 + .byte 0x41 + .4byte .LASF1243 + .byte 0x5 + .byte 0x42 + .4byte .LASF1244 + .byte 0x5 + .byte 0x43 + .4byte .LASF1245 + .byte 0x5 + .byte 0x44 + .4byte .LASF1246 + .byte 0x5 + .byte 0x46 + .4byte .LASF1247 + .byte 0x5 + .byte 0x47 + .4byte .LASF1248 + .byte 0x5 + .byte 0x48 + .4byte .LASF1249 + .byte 0x5 + .byte 0x49 + .4byte .LASF1250 + .byte 0x5 + .byte 0x4b + .4byte .LASF1251 + .byte 0x5 + .byte 0x4c + .4byte .LASF1252 + .byte 0x5 + .byte 0x4d + .4byte .LASF1253 + .byte 0x5 + .byte 0x4e + .4byte .LASF1254 + .byte 0x5 + .byte 0x50 + .4byte .LASF1255 + .byte 0x5 + .byte 0x51 + .4byte .LASF1256 + .byte 0x5 + .byte 0x52 + .4byte .LASF1257 + .byte 0x5 + .byte 0x53 + .4byte .LASF1258 + .byte 0x5 + .byte 0x57 + .4byte .LASF1259 + .byte 0x5 + .byte 0x58 + .4byte .LASF1260 + .byte 0x5 + .byte 0x59 + .4byte .LASF1261 + .byte 0x5 + .byte 0x5a + .4byte .LASF1262 + .byte 0x5 + .byte 0x5d + .4byte .LASF1263 + .byte 0x5 + .byte 0x5e + .4byte .LASF1264 + .byte 0x5 + .byte 0x5f + .4byte .LASF1265 + .byte 0x5 + .byte 0x60 + .4byte .LASF1266 + .byte 0x5 + .byte 0x63 + .4byte .LASF1267 + .byte 0x5 + .byte 0x64 + .4byte .LASF1268 + .byte 0x5 + .byte 0x65 + .4byte .LASF1269 + .byte 0x5 + .byte 0x66 + .4byte .LASF1270 + .byte 0x5 + .byte 0x67 + .4byte .LASF1271 + .byte 0x5 + .byte 0x68 + .4byte .LASF1272 + .byte 0x5 + .byte 0x69 + .4byte .LASF1273 + .byte 0x5 + .byte 0x6a + .4byte .LASF1274 + .byte 0x5 + .byte 0x6b + .4byte .LASF1275 + .byte 0x5 + .byte 0x6c + .4byte .LASF1276 + .byte 0x5 + .byte 0x6d + .4byte .LASF1277 + .byte 0x5 + .byte 0x6e + .4byte .LASF1278 + .byte 0x5 + .byte 0x71 + .4byte .LASF1279 + .byte 0x5 + .byte 0x74 + .4byte .LASF1280 + .byte 0x5 + .byte 0x77 + .4byte .LASF1281 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1282 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1283 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1284 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1285 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1286 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1287 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1288 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1289 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1290 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1291 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1292 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1293 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1294 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1295 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1296 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1297 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1298 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1299 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1300 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1301 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1302 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF1303 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1304 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1305 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1306 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1307 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1308 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF1309 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF1310 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF1311 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF1312 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF1313 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1314 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF1315 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF1316 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1317 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1318 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF1319 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF1320 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1321 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF1322 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1323 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1324 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_eclic.h.37.7db9f8893169694757dea82a4b9eed61,comdat +.Ldebug_macro16: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1325 + .byte 0x5 + .byte 0x2a + .4byte .LASF1326 + .byte 0x5 + .byte 0x2b + .4byte .LASF1327 + .byte 0x5 + .byte 0x2c + .4byte .LASF1328 + .byte 0x5 + .byte 0x2d + .4byte .LASF1329 + .byte 0x5 + .byte 0x2e + .4byte .LASF1330 + .byte 0x5 + .byte 0x30 + .4byte .LASF1331 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_exmc.h.37.96699be4b910beb81cdfd35650becbf1,comdat +.Ldebug_macro17: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1332 + .byte 0x5 + .byte 0x2a + .4byte .LASF1333 + .byte 0x5 + .byte 0x2e + .4byte .LASF1334 + .byte 0x5 + .byte 0x2f + .4byte .LASF1335 + .byte 0x5 + .byte 0x30 + .4byte .LASF1336 + .byte 0x5 + .byte 0x35 + .4byte .LASF1337 + .byte 0x5 + .byte 0x36 + .4byte .LASF1338 + .byte 0x5 + .byte 0x37 + .4byte .LASF1339 + .byte 0x5 + .byte 0x38 + .4byte .LASF1340 + .byte 0x5 + .byte 0x39 + .4byte .LASF1341 + .byte 0x5 + .byte 0x3a + .4byte .LASF1342 + .byte 0x5 + .byte 0x3b + .4byte .LASF1343 + .byte 0x5 + .byte 0x3c + .4byte .LASF1344 + .byte 0x5 + .byte 0x3d + .4byte .LASF1345 + .byte 0x5 + .byte 0x40 + .4byte .LASF1346 + .byte 0x5 + .byte 0x41 + .4byte .LASF1347 + .byte 0x5 + .byte 0x42 + .4byte .LASF1348 + .byte 0x5 + .byte 0x43 + .4byte .LASF1349 + .byte 0x5 + .byte 0x5e + .4byte .LASF1350 + .byte 0x5 + .byte 0x5f + .4byte .LASF1351 + .byte 0x5 + .byte 0x62 + .4byte .LASF1352 + .byte 0x5 + .byte 0x63 + .4byte .LASF1353 + .byte 0x5 + .byte 0x64 + .4byte .LASF1354 + .byte 0x5 + .byte 0x67 + .4byte .LASF1355 + .byte 0x5 + .byte 0x68 + .4byte .LASF1356 + .byte 0x5 + .byte 0x69 + .4byte .LASF1357 + .byte 0x5 + .byte 0x6a + .4byte .LASF1358 + .byte 0x5 + .byte 0x6d + .4byte .LASF1359 + .byte 0x5 + .byte 0x70 + .4byte .LASF1360 + .byte 0x5 + .byte 0x71 + .4byte .LASF1361 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_exti.h.37.a48547bbdeb43685ea30e1aa7e1bc0e9,comdat +.Ldebug_macro18: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1362 + .byte 0x5 + .byte 0x2a + .4byte .LASF1363 + .byte 0x5 + .byte 0x2d + .4byte .LASF1364 + .byte 0x5 + .byte 0x2e + .4byte .LASF1365 + .byte 0x5 + .byte 0x2f + .4byte .LASF1366 + .byte 0x5 + .byte 0x30 + .4byte .LASF1367 + .byte 0x5 + .byte 0x31 + .4byte .LASF1368 + .byte 0x5 + .byte 0x32 + .4byte .LASF1369 + .byte 0x5 + .byte 0x36 + .4byte .LASF1370 + .byte 0x5 + .byte 0x37 + .4byte .LASF1371 + .byte 0x5 + .byte 0x38 + .4byte .LASF1372 + .byte 0x5 + .byte 0x39 + .4byte .LASF1373 + .byte 0x5 + .byte 0x3a + .4byte .LASF1374 + .byte 0x5 + .byte 0x3b + .4byte .LASF1375 + .byte 0x5 + .byte 0x3c + .4byte .LASF1376 + .byte 0x5 + .byte 0x3d + .4byte .LASF1377 + .byte 0x5 + .byte 0x3e + .4byte .LASF1378 + .byte 0x5 + .byte 0x3f + .4byte .LASF1379 + .byte 0x5 + .byte 0x40 + .4byte .LASF1380 + .byte 0x5 + .byte 0x41 + .4byte .LASF1381 + .byte 0x5 + .byte 0x42 + .4byte .LASF1382 + .byte 0x5 + .byte 0x43 + .4byte .LASF1383 + .byte 0x5 + .byte 0x44 + .4byte .LASF1384 + .byte 0x5 + .byte 0x45 + .4byte .LASF1385 + .byte 0x5 + .byte 0x46 + .4byte .LASF1386 + .byte 0x5 + .byte 0x47 + .4byte .LASF1387 + .byte 0x5 + .byte 0x48 + .4byte .LASF1388 + .byte 0x5 + .byte 0x4b + .4byte .LASF1389 + .byte 0x5 + .byte 0x4c + .4byte .LASF1390 + .byte 0x5 + .byte 0x4d + .4byte .LASF1391 + .byte 0x5 + .byte 0x4e + .4byte .LASF1392 + .byte 0x5 + .byte 0x4f + .4byte .LASF1393 + .byte 0x5 + .byte 0x50 + .4byte .LASF1394 + .byte 0x5 + .byte 0x51 + .4byte .LASF1395 + .byte 0x5 + .byte 0x52 + .4byte .LASF1396 + .byte 0x5 + .byte 0x53 + .4byte .LASF1397 + .byte 0x5 + .byte 0x54 + .4byte .LASF1398 + .byte 0x5 + .byte 0x55 + .4byte .LASF1399 + .byte 0x5 + .byte 0x56 + .4byte .LASF1400 + .byte 0x5 + .byte 0x57 + .4byte .LASF1401 + .byte 0x5 + .byte 0x58 + .4byte .LASF1402 + .byte 0x5 + .byte 0x59 + .4byte .LASF1403 + .byte 0x5 + .byte 0x5a + .4byte .LASF1404 + .byte 0x5 + .byte 0x5b + .4byte .LASF1405 + .byte 0x5 + .byte 0x5c + .4byte .LASF1406 + .byte 0x5 + .byte 0x5d + .4byte .LASF1407 + .byte 0x5 + .byte 0x60 + .4byte .LASF1408 + .byte 0x5 + .byte 0x61 + .4byte .LASF1409 + .byte 0x5 + .byte 0x62 + .4byte .LASF1410 + .byte 0x5 + .byte 0x63 + .4byte .LASF1411 + .byte 0x5 + .byte 0x64 + .4byte .LASF1412 + .byte 0x5 + .byte 0x65 + .4byte .LASF1413 + .byte 0x5 + .byte 0x66 + .4byte .LASF1414 + .byte 0x5 + .byte 0x67 + .4byte .LASF1415 + .byte 0x5 + .byte 0x68 + .4byte .LASF1416 + .byte 0x5 + .byte 0x69 + .4byte .LASF1417 + .byte 0x5 + .byte 0x6a + .4byte .LASF1418 + .byte 0x5 + .byte 0x6b + .4byte .LASF1419 + .byte 0x5 + .byte 0x6c + .4byte .LASF1420 + .byte 0x5 + .byte 0x6d + .4byte .LASF1421 + .byte 0x5 + .byte 0x6e + .4byte .LASF1422 + .byte 0x5 + .byte 0x6f + .4byte .LASF1423 + .byte 0x5 + .byte 0x70 + .4byte .LASF1424 + .byte 0x5 + .byte 0x71 + .4byte .LASF1425 + .byte 0x5 + .byte 0x72 + .4byte .LASF1426 + .byte 0x5 + .byte 0x75 + .4byte .LASF1427 + .byte 0x5 + .byte 0x76 + .4byte .LASF1428 + .byte 0x5 + .byte 0x77 + .4byte .LASF1429 + .byte 0x5 + .byte 0x78 + .4byte .LASF1430 + .byte 0x5 + .byte 0x79 + .4byte .LASF1431 + .byte 0x5 + .byte 0x7a + .4byte .LASF1432 + .byte 0x5 + .byte 0x7b + .4byte .LASF1433 + .byte 0x5 + .byte 0x7c + .4byte .LASF1434 + .byte 0x5 + .byte 0x7d + .4byte .LASF1435 + .byte 0x5 + .byte 0x7e + .4byte .LASF1436 + .byte 0x5 + .byte 0x7f + .4byte .LASF1437 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF1438 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF1439 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF1440 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF1441 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF1442 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1443 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1444 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF1445 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1446 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1447 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF1448 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF1449 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1450 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1451 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1452 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF1453 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF1454 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF1455 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF1456 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1457 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF1458 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF1459 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1460 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1461 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1462 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1463 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF1464 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1465 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1466 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1467 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1468 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1469 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF1470 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF1471 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1472 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1473 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1474 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1475 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1476 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF1477 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1478 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1479 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1480 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1481 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1482 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1483 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_fmc.h.39.cad093dc97f9756dd7521b8e6602cd12,comdat +.Ldebug_macro19: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF1484 + .byte 0x5 + .byte 0x2c + .4byte .LASF1485 + .byte 0x5 + .byte 0x2d + .4byte .LASF1486 + .byte 0x5 + .byte 0x30 + .4byte .LASF1487 + .byte 0x5 + .byte 0x31 + .4byte .LASF1488 + .byte 0x5 + .byte 0x32 + .4byte .LASF1489 + .byte 0x5 + .byte 0x33 + .4byte .LASF1490 + .byte 0x5 + .byte 0x34 + .4byte .LASF1491 + .byte 0x5 + .byte 0x35 + .4byte .LASF1492 + .byte 0x5 + .byte 0x36 + .4byte .LASF1493 + .byte 0x5 + .byte 0x37 + .4byte .LASF1494 + .byte 0x5 + .byte 0x38 + .4byte .LASF1495 + .byte 0x5 + .byte 0x3a + .4byte .LASF1496 + .byte 0x5 + .byte 0x3b + .4byte .LASF1497 + .byte 0x5 + .byte 0x3c + .4byte .LASF1498 + .byte 0x5 + .byte 0x3d + .4byte .LASF1499 + .byte 0x5 + .byte 0x3e + .4byte .LASF1500 + .byte 0x5 + .byte 0x3f + .4byte .LASF1501 + .byte 0x5 + .byte 0x43 + .4byte .LASF1502 + .byte 0x5 + .byte 0x46 + .4byte .LASF1503 + .byte 0x5 + .byte 0x49 + .4byte .LASF1504 + .byte 0x5 + .byte 0x4c + .4byte .LASF1505 + .byte 0x5 + .byte 0x4d + .4byte .LASF1506 + .byte 0x5 + .byte 0x4e + .4byte .LASF1507 + .byte 0x5 + .byte 0x4f + .4byte .LASF1508 + .byte 0x5 + .byte 0x52 + .4byte .LASF1509 + .byte 0x5 + .byte 0x53 + .4byte .LASF1510 + .byte 0x5 + .byte 0x54 + .4byte .LASF1511 + .byte 0x5 + .byte 0x55 + .4byte .LASF1512 + .byte 0x5 + .byte 0x56 + .4byte .LASF1513 + .byte 0x5 + .byte 0x57 + .4byte .LASF1514 + .byte 0x5 + .byte 0x58 + .4byte .LASF1515 + .byte 0x5 + .byte 0x59 + .4byte .LASF1516 + .byte 0x5 + .byte 0x5a + .4byte .LASF1517 + .byte 0x5 + .byte 0x5b + .4byte .LASF1518 + .byte 0x5 + .byte 0x5e + .4byte .LASF1519 + .byte 0x5 + .byte 0x61 + .4byte .LASF1520 + .byte 0x5 + .byte 0x62 + .4byte .LASF1521 + .byte 0x5 + .byte 0x63 + .4byte .LASF1522 + .byte 0x5 + .byte 0x64 + .4byte .LASF1523 + .byte 0x5 + .byte 0x67 + .4byte .LASF1524 + .byte 0x5 + .byte 0x6a + .4byte .LASF1525 + .byte 0x5 + .byte 0x6d + .4byte .LASF1526 + .byte 0x5 + .byte 0x71 + .4byte .LASF1527 + .byte 0x5 + .byte 0x72 + .4byte .LASF1528 + .byte 0x5 + .byte 0x73 + .4byte .LASF1529 + .byte 0x5 + .byte 0x74 + .4byte .LASF1530 + .byte 0x5 + .byte 0x75 + .4byte .LASF1531 + .byte 0x5 + .byte 0x76 + .4byte .LASF1532 + .byte 0x5 + .byte 0x77 + .4byte .LASF1533 + .byte 0x5 + .byte 0x78 + .4byte .LASF1534 + .byte 0x5 + .byte 0x7b + .4byte .LASF1535 + .byte 0x5 + .byte 0x7c + .4byte .LASF1536 + .byte 0x5 + .byte 0x7d + .4byte .LASF1537 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1538 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1539 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1540 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1541 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1542 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1543 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1544 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1545 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1546 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1547 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1548 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1549 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF1550 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1551 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1552 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1553 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1554 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1555 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF1556 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF1557 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1558 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1559 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF1560 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1561 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1562 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF1563 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF1564 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF1565 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1566 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1567 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF1568 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF1569 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1570 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1571 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF1572 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF1573 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1574 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1575 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF1576 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF1577 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF1578 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1579 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF1580 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF1581 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1582 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1583 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF1584 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF1585 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF1586 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1587 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1588 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF1589 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF1590 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF1591 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF1592 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF1593 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF1594 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF1595 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1596 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1597 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_gpio.h.37.1c15e50fe61c140e18cbdcae4553472f,comdat +.Ldebug_macro20: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1598 + .byte 0x5 + .byte 0x2a + .4byte .LASF1599 + .byte 0x5 + .byte 0x2b + .4byte .LASF1600 + .byte 0x5 + .byte 0x2c + .4byte .LASF1601 + .byte 0x5 + .byte 0x2d + .4byte .LASF1602 + .byte 0x5 + .byte 0x2e + .4byte .LASF1603 + .byte 0x5 + .byte 0x31 + .4byte .LASF1604 + .byte 0x5 + .byte 0x36 + .4byte .LASF1605 + .byte 0x5 + .byte 0x37 + .4byte .LASF1606 + .byte 0x5 + .byte 0x38 + .4byte .LASF1607 + .byte 0x5 + .byte 0x39 + .4byte .LASF1608 + .byte 0x5 + .byte 0x3a + .4byte .LASF1609 + .byte 0x5 + .byte 0x3b + .4byte .LASF1610 + .byte 0x5 + .byte 0x3c + .4byte .LASF1611 + .byte 0x5 + .byte 0x3f + .4byte .LASF1612 + .byte 0x5 + .byte 0x40 + .4byte .LASF1613 + .byte 0x5 + .byte 0x41 + .4byte .LASF1614 + .byte 0x5 + .byte 0x42 + .4byte .LASF1615 + .byte 0x5 + .byte 0x43 + .4byte .LASF1616 + .byte 0x5 + .byte 0x44 + .4byte .LASF1617 + .byte 0x5 + .byte 0x45 + .4byte .LASF1618 + .byte 0x5 + .byte 0x49 + .4byte .LASF1619 + .byte 0x5 + .byte 0x4a + .4byte .LASF1620 + .byte 0x5 + .byte 0x4b + .4byte .LASF1621 + .byte 0x5 + .byte 0x4c + .4byte .LASF1622 + .byte 0x5 + .byte 0x4d + .4byte .LASF1623 + .byte 0x5 + .byte 0x4e + .4byte .LASF1624 + .byte 0x5 + .byte 0x4f + .4byte .LASF1625 + .byte 0x5 + .byte 0x50 + .4byte .LASF1626 + .byte 0x5 + .byte 0x51 + .4byte .LASF1627 + .byte 0x5 + .byte 0x52 + .4byte .LASF1628 + .byte 0x5 + .byte 0x53 + .4byte .LASF1629 + .byte 0x5 + .byte 0x54 + .4byte .LASF1630 + .byte 0x5 + .byte 0x55 + .4byte .LASF1631 + .byte 0x5 + .byte 0x56 + .4byte .LASF1632 + .byte 0x5 + .byte 0x57 + .4byte .LASF1633 + .byte 0x5 + .byte 0x58 + .4byte .LASF1634 + .byte 0x5 + .byte 0x5b + .4byte .LASF1635 + .byte 0x5 + .byte 0x5c + .4byte .LASF1636 + .byte 0x5 + .byte 0x5d + .4byte .LASF1637 + .byte 0x5 + .byte 0x5e + .4byte .LASF1638 + .byte 0x5 + .byte 0x5f + .4byte .LASF1639 + .byte 0x5 + .byte 0x60 + .4byte .LASF1640 + .byte 0x5 + .byte 0x61 + .4byte .LASF1641 + .byte 0x5 + .byte 0x62 + .4byte .LASF1642 + .byte 0x5 + .byte 0x63 + .4byte .LASF1643 + .byte 0x5 + .byte 0x64 + .4byte .LASF1644 + .byte 0x5 + .byte 0x65 + .4byte .LASF1645 + .byte 0x5 + .byte 0x66 + .4byte .LASF1646 + .byte 0x5 + .byte 0x67 + .4byte .LASF1647 + .byte 0x5 + .byte 0x68 + .4byte .LASF1648 + .byte 0x5 + .byte 0x69 + .4byte .LASF1649 + .byte 0x5 + .byte 0x6a + .4byte .LASF1650 + .byte 0x5 + .byte 0x6d + .4byte .LASF1651 + .byte 0x5 + .byte 0x6e + .4byte .LASF1652 + .byte 0x5 + .byte 0x6f + .4byte .LASF1653 + .byte 0x5 + .byte 0x70 + .4byte .LASF1654 + .byte 0x5 + .byte 0x71 + .4byte .LASF1655 + .byte 0x5 + .byte 0x72 + .4byte .LASF1656 + .byte 0x5 + .byte 0x73 + .4byte .LASF1657 + .byte 0x5 + .byte 0x74 + .4byte .LASF1658 + .byte 0x5 + .byte 0x75 + .4byte .LASF1659 + .byte 0x5 + .byte 0x76 + .4byte .LASF1660 + .byte 0x5 + .byte 0x77 + .4byte .LASF1661 + .byte 0x5 + .byte 0x78 + .4byte .LASF1662 + .byte 0x5 + .byte 0x79 + .4byte .LASF1663 + .byte 0x5 + .byte 0x7a + .4byte .LASF1664 + .byte 0x5 + .byte 0x7b + .4byte .LASF1665 + .byte 0x5 + .byte 0x7c + .4byte .LASF1666 + .byte 0x5 + .byte 0x7f + .4byte .LASF1667 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF1668 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF1669 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF1670 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF1671 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF1672 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1673 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1674 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF1675 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF1676 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF1677 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1678 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1679 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF1680 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF1681 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1682 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF1683 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF1684 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF1685 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF1686 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1687 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF1688 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF1689 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1690 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1691 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1692 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1693 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF1694 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF1695 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1696 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1697 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1698 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1699 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1700 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1701 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF1702 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF1703 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1704 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1705 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1706 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1707 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1708 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF1709 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1710 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1711 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1712 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1713 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1714 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF1715 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1716 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1717 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1718 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF1719 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF1720 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF1721 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1722 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF1723 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF1724 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1725 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1726 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF1727 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF1728 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1729 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1730 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF1731 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF1732 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF1733 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF1734 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1735 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF1736 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF1737 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1738 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF1739 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF1740 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF1741 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF1742 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1743 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1744 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF1745 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF1746 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1747 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF1748 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1749 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1750 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1751 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1752 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF1753 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF1754 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1755 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1756 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF1757 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF1758 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF1759 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1760 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF1761 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF1762 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1763 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1764 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF1765 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1766 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1767 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF1768 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF1769 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF1770 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF1771 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF1772 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF1773 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF1774 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1775 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1776 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF1777 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF1778 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF1779 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF1780 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF1781 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF1782 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF1783 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF1784 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF1785 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF1786 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF1787 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF1788 + .byte 0x5 + .byte 0x94,0x2 + .4byte .LASF1789 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF1790 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF1791 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF1792 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF1793 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF1794 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF1795 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF1796 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF1797 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF1798 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF1799 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF1800 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF1801 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF1802 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF1803 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF1804 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF1805 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF1806 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF1807 + .byte 0x5 + .byte 0xaf,0x2 + .4byte .LASF1808 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF1809 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF1810 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF1811 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF1812 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF1813 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF1814 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF1815 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF1816 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF1817 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF1818 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF1819 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF1820 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF1821 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF1822 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF1823 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF1824 + .byte 0x5 + .byte 0xc2,0x2 + .4byte .LASF1825 + .byte 0x5 + .byte 0xc3,0x2 + .4byte .LASF1826 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF1827 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF1828 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF1829 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF1830 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF1831 + .byte 0x5 + .byte 0xc9,0x2 + .4byte .LASF1832 + .byte 0x5 + .byte 0xca,0x2 + .4byte .LASF1833 + .byte 0x5 + .byte 0xcb,0x2 + .4byte .LASF1834 + .byte 0x5 + .byte 0xcc,0x2 + .4byte .LASF1835 + .byte 0x5 + .byte 0xcd,0x2 + .4byte .LASF1836 + .byte 0x5 + .byte 0xce,0x2 + .4byte .LASF1837 + .byte 0x5 + .byte 0xd1,0x2 + .4byte .LASF1838 + .byte 0x5 + .byte 0xd2,0x2 + .4byte .LASF1839 + .byte 0x5 + .byte 0xd3,0x2 + .4byte .LASF1840 + .byte 0x5 + .byte 0xd4,0x2 + .4byte .LASF1841 + .byte 0x5 + .byte 0xd5,0x2 + .4byte .LASF1842 + .byte 0x5 + .byte 0xd6,0x2 + .4byte .LASF1843 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF1844 + .byte 0x5 + .byte 0xd8,0x2 + .4byte .LASF1845 + .byte 0x5 + .byte 0xd9,0x2 + .4byte .LASF1846 + .byte 0x5 + .byte 0xda,0x2 + .4byte .LASF1847 + .byte 0x5 + .byte 0xdb,0x2 + .4byte .LASF1848 + .byte 0x5 + .byte 0xdc,0x2 + .4byte .LASF1849 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF1850 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF1851 + .byte 0x5 + .byte 0xdf,0x2 + .4byte .LASF1852 + .byte 0x5 + .byte 0xe0,0x2 + .4byte .LASF1853 + .byte 0x5 + .byte 0xe1,0x2 + .4byte .LASF1854 + .byte 0x5 + .byte 0xe4,0x2 + .4byte .LASF1855 + .byte 0x5 + .byte 0xe5,0x2 + .4byte .LASF1856 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF1857 + .byte 0x5 + .byte 0xe7,0x2 + .4byte .LASF1858 + .byte 0x5 + .byte 0xe8,0x2 + .4byte .LASF1859 + .byte 0x5 + .byte 0xe9,0x2 + .4byte .LASF1860 + .byte 0x5 + .byte 0xea,0x2 + .4byte .LASF1861 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF1862 + .byte 0x5 + .byte 0xec,0x2 + .4byte .LASF1863 + .byte 0x5 + .byte 0xed,0x2 + .4byte .LASF1864 + .byte 0x5 + .byte 0xee,0x2 + .4byte .LASF1865 + .byte 0x5 + .byte 0xef,0x2 + .4byte .LASF1866 + .byte 0x5 + .byte 0xf0,0x2 + .4byte .LASF1867 + .byte 0x5 + .byte 0xf1,0x2 + .4byte .LASF1868 + .byte 0x5 + .byte 0xf2,0x2 + .4byte .LASF1869 + .byte 0x5 + .byte 0xf3,0x2 + .4byte .LASF1870 + .byte 0x5 + .byte 0xf4,0x2 + .4byte .LASF1871 + .byte 0x5 + .byte 0xf5,0x2 + .4byte .LASF1872 + .byte 0x5 + .byte 0xf6,0x2 + .4byte .LASF1873 + .byte 0x5 + .byte 0xf7,0x2 + .4byte .LASF1874 + .byte 0x5 + .byte 0xf8,0x2 + .4byte .LASF1875 + .byte 0x5 + .byte 0xf9,0x2 + .4byte .LASF1876 + .byte 0x5 + .byte 0xfa,0x2 + .4byte .LASF1877 + .byte 0x5 + .byte 0xfb,0x2 + .4byte .LASF1878 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_i2c.h.37.9d7fb50529db8c5d4a0b10c3b5a1de79,comdat +.Ldebug_macro21: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1879 + .byte 0x5 + .byte 0x2a + .4byte .LASF1880 + .byte 0x5 + .byte 0x2b + .4byte .LASF1881 + .byte 0x5 + .byte 0x2e + .4byte .LASF1882 + .byte 0x5 + .byte 0x2f + .4byte .LASF1883 + .byte 0x5 + .byte 0x30 + .4byte .LASF1884 + .byte 0x5 + .byte 0x31 + .4byte .LASF1885 + .byte 0x5 + .byte 0x32 + .4byte .LASF1886 + .byte 0x5 + .byte 0x33 + .4byte .LASF1887 + .byte 0x5 + .byte 0x34 + .4byte .LASF1888 + .byte 0x5 + .byte 0x35 + .4byte .LASF1889 + .byte 0x5 + .byte 0x36 + .4byte .LASF1890 + .byte 0x5 + .byte 0x37 + .4byte .LASF1891 + .byte 0x5 + .byte 0x3a + .4byte .LASF1892 + .byte 0x5 + .byte 0x3b + .4byte .LASF1893 + .byte 0x5 + .byte 0x3c + .4byte .LASF1894 + .byte 0x5 + .byte 0x3d + .4byte .LASF1895 + .byte 0x5 + .byte 0x3e + .4byte .LASF1896 + .byte 0x5 + .byte 0x3f + .4byte .LASF1897 + .byte 0x5 + .byte 0x40 + .4byte .LASF1898 + .byte 0x5 + .byte 0x41 + .4byte .LASF1899 + .byte 0x5 + .byte 0x42 + .4byte .LASF1900 + .byte 0x5 + .byte 0x43 + .4byte .LASF1901 + .byte 0x5 + .byte 0x44 + .4byte .LASF1902 + .byte 0x5 + .byte 0x45 + .4byte .LASF1903 + .byte 0x5 + .byte 0x46 + .4byte .LASF1904 + .byte 0x5 + .byte 0x47 + .4byte .LASF1905 + .byte 0x5 + .byte 0x4a + .4byte .LASF1906 + .byte 0x5 + .byte 0x4b + .4byte .LASF1907 + .byte 0x5 + .byte 0x4c + .4byte .LASF1908 + .byte 0x5 + .byte 0x4d + .4byte .LASF1909 + .byte 0x5 + .byte 0x4e + .4byte .LASF1910 + .byte 0x5 + .byte 0x4f + .4byte .LASF1911 + .byte 0x5 + .byte 0x52 + .4byte .LASF1912 + .byte 0x5 + .byte 0x53 + .4byte .LASF1913 + .byte 0x5 + .byte 0x54 + .4byte .LASF1914 + .byte 0x5 + .byte 0x55 + .4byte .LASF1915 + .byte 0x5 + .byte 0x58 + .4byte .LASF1916 + .byte 0x5 + .byte 0x59 + .4byte .LASF1917 + .byte 0x5 + .byte 0x5c + .4byte .LASF1918 + .byte 0x5 + .byte 0x5f + .4byte .LASF1919 + .byte 0x5 + .byte 0x60 + .4byte .LASF1920 + .byte 0x5 + .byte 0x61 + .4byte .LASF1921 + .byte 0x5 + .byte 0x62 + .4byte .LASF1922 + .byte 0x5 + .byte 0x63 + .4byte .LASF1923 + .byte 0x5 + .byte 0x64 + .4byte .LASF1924 + .byte 0x5 + .byte 0x65 + .4byte .LASF1925 + .byte 0x5 + .byte 0x66 + .4byte .LASF1926 + .byte 0x5 + .byte 0x67 + .4byte .LASF1927 + .byte 0x5 + .byte 0x68 + .4byte .LASF1928 + .byte 0x5 + .byte 0x69 + .4byte .LASF1929 + .byte 0x5 + .byte 0x6a + .4byte .LASF1930 + .byte 0x5 + .byte 0x6b + .4byte .LASF1931 + .byte 0x5 + .byte 0x6c + .4byte .LASF1932 + .byte 0x5 + .byte 0x6f + .4byte .LASF1933 + .byte 0x5 + .byte 0x70 + .4byte .LASF1934 + .byte 0x5 + .byte 0x71 + .4byte .LASF1935 + .byte 0x5 + .byte 0x72 + .4byte .LASF1936 + .byte 0x5 + .byte 0x73 + .4byte .LASF1937 + .byte 0x5 + .byte 0x74 + .4byte .LASF1938 + .byte 0x5 + .byte 0x75 + .4byte .LASF1939 + .byte 0x5 + .byte 0x76 + .4byte .LASF1940 + .byte 0x5 + .byte 0x79 + .4byte .LASF1941 + .byte 0x5 + .byte 0x7a + .4byte .LASF1942 + .byte 0x5 + .byte 0x7b + .4byte .LASF1943 + .byte 0x5 + .byte 0x7e + .4byte .LASF1944 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF1945 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1946 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1947 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF1948 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF1949 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1950 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1951 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1952 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1953 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1954 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1955 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF1956 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF1957 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF1958 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1959 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1960 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1961 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF1962 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1963 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1964 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1965 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1966 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1967 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1968 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF1969 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1970 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1971 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1972 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1973 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1974 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF1975 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF1976 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF1977 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF1978 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1979 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1980 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF1981 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF1982 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF1983 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF1984 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF1985 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF1986 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF1987 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF1988 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF1989 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF1990 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_fwdgt.h.37.ec91e2ec679929e46ec494cd499250b4,comdat +.Ldebug_macro22: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1991 + .byte 0x5 + .byte 0x2a + .4byte .LASF1992 + .byte 0x5 + .byte 0x2d + .4byte .LASF1993 + .byte 0x5 + .byte 0x2e + .4byte .LASF1994 + .byte 0x5 + .byte 0x2f + .4byte .LASF1995 + .byte 0x5 + .byte 0x30 + .4byte .LASF1996 + .byte 0x5 + .byte 0x34 + .4byte .LASF1997 + .byte 0x5 + .byte 0x37 + .4byte .LASF1998 + .byte 0x5 + .byte 0x3a + .4byte .LASF1999 + .byte 0x5 + .byte 0x3d + .4byte .LASF2000 + .byte 0x5 + .byte 0x3e + .4byte .LASF2001 + .byte 0x5 + .byte 0x42 + .4byte .LASF2002 + .byte 0x5 + .byte 0x43 + .4byte .LASF2003 + .byte 0x5 + .byte 0x44 + .4byte .LASF2004 + .byte 0x5 + .byte 0x45 + .4byte .LASF2005 + .byte 0x5 + .byte 0x46 + .4byte .LASF2006 + .byte 0x5 + .byte 0x47 + .4byte .LASF2007 + .byte 0x5 + .byte 0x48 + .4byte .LASF2008 + .byte 0x5 + .byte 0x49 + .4byte .LASF2009 + .byte 0x5 + .byte 0x4c + .4byte .LASF2010 + .byte 0x5 + .byte 0x4d + .4byte .LASF2011 + .byte 0x5 + .byte 0x4e + .4byte .LASF2012 + .byte 0x5 + .byte 0x4f + .4byte .LASF2013 + .byte 0x5 + .byte 0x52 + .4byte .LASF2014 + .byte 0x5 + .byte 0x53 + .4byte .LASF2015 + .byte 0x5 + .byte 0x56 + .4byte .LASF2016 + .byte 0x5 + .byte 0x57 + .4byte .LASF2017 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dbg.h.37.c757ea48294705efe800a8cbb43f6f24,comdat +.Ldebug_macro23: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2018 + .byte 0x5 + .byte 0x2a + .4byte .LASF2019 + .byte 0x5 + .byte 0x2d + .4byte .LASF2020 + .byte 0x5 + .byte 0x2e + .4byte .LASF2021 + .byte 0x5 + .byte 0x32 + .4byte .LASF2022 + .byte 0x5 + .byte 0x35 + .4byte .LASF2023 + .byte 0x5 + .byte 0x36 + .4byte .LASF2024 + .byte 0x5 + .byte 0x37 + .4byte .LASF2025 + .byte 0x5 + .byte 0x38 + .4byte .LASF2026 + .byte 0x5 + .byte 0x39 + .4byte .LASF2027 + .byte 0x5 + .byte 0x3a + .4byte .LASF2028 + .byte 0x5 + .byte 0x3b + .4byte .LASF2029 + .byte 0x5 + .byte 0x3c + .4byte .LASF2030 + .byte 0x5 + .byte 0x3d + .4byte .LASF2031 + .byte 0x5 + .byte 0x3e + .4byte .LASF2032 + .byte 0x5 + .byte 0x3f + .4byte .LASF2033 + .byte 0x5 + .byte 0x40 + .4byte .LASF2034 + .byte 0x5 + .byte 0x41 + .4byte .LASF2035 + .byte 0x5 + .byte 0x42 + .4byte .LASF2036 + .byte 0x5 + .byte 0x43 + .4byte .LASF2037 + .byte 0x5 + .byte 0x44 + .4byte .LASF2038 + .byte 0x5 + .byte 0x5a + .4byte .LASF2039 + .byte 0x5 + .byte 0x5b + .4byte .LASF2040 + .byte 0x5 + .byte 0x5c + .4byte .LASF2041 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_pmu.h.37.edf842f53f3092f282c7bccaf9512833,comdat +.Ldebug_macro24: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2042 + .byte 0x5 + .byte 0x2a + .4byte .LASF2043 + .byte 0x5 + .byte 0x2d + .4byte .LASF2044 + .byte 0x5 + .byte 0x2e + .4byte .LASF2045 + .byte 0x5 + .byte 0x32 + .4byte .LASF2046 + .byte 0x5 + .byte 0x33 + .4byte .LASF2047 + .byte 0x5 + .byte 0x34 + .4byte .LASF2048 + .byte 0x5 + .byte 0x35 + .4byte .LASF2049 + .byte 0x5 + .byte 0x36 + .4byte .LASF2050 + .byte 0x5 + .byte 0x37 + .4byte .LASF2051 + .byte 0x5 + .byte 0x38 + .4byte .LASF2052 + .byte 0x5 + .byte 0x3b + .4byte .LASF2053 + .byte 0x5 + .byte 0x3c + .4byte .LASF2054 + .byte 0x5 + .byte 0x3d + .4byte .LASF2055 + .byte 0x5 + .byte 0x3e + .4byte .LASF2056 + .byte 0x5 + .byte 0x42 + .4byte .LASF2057 + .byte 0x5 + .byte 0x43 + .4byte .LASF2058 + .byte 0x5 + .byte 0x44 + .4byte .LASF2059 + .byte 0x5 + .byte 0x45 + .4byte .LASF2060 + .byte 0x5 + .byte 0x46 + .4byte .LASF2061 + .byte 0x5 + .byte 0x47 + .4byte .LASF2062 + .byte 0x5 + .byte 0x48 + .4byte .LASF2063 + .byte 0x5 + .byte 0x49 + .4byte .LASF2064 + .byte 0x5 + .byte 0x4a + .4byte .LASF2065 + .byte 0x5 + .byte 0x4d + .4byte .LASF2066 + .byte 0x5 + .byte 0x4e + .4byte .LASF2067 + .byte 0x5 + .byte 0x4f + .4byte .LASF2068 + .byte 0x5 + .byte 0x52 + .4byte .LASF2069 + .byte 0x5 + .byte 0x53 + .4byte .LASF2070 + .byte 0x5 + .byte 0x56 + .4byte .LASF2071 + .byte 0x5 + .byte 0x57 + .4byte .LASF2072 + .byte 0x5 + .byte 0x5a + .4byte .LASF2073 + .byte 0x5 + .byte 0x5b + .4byte .LASF2074 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_rcu.h.37.486a61f16467981517fe8072f0668f9d,comdat +.Ldebug_macro25: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2075 + .byte 0x5 + .byte 0x2a + .4byte .LASF2076 + .byte 0x5 + .byte 0x2e + .4byte .LASF2077 + .byte 0x5 + .byte 0x2f + .4byte .LASF2078 + .byte 0x5 + .byte 0x30 + .4byte .LASF2079 + .byte 0x5 + .byte 0x31 + .4byte .LASF2080 + .byte 0x5 + .byte 0x32 + .4byte .LASF2081 + .byte 0x5 + .byte 0x33 + .4byte .LASF2082 + .byte 0x5 + .byte 0x34 + .4byte .LASF2083 + .byte 0x5 + .byte 0x35 + .4byte .LASF2084 + .byte 0x5 + .byte 0x36 + .4byte .LASF2085 + .byte 0x5 + .byte 0x37 + .4byte .LASF2086 + .byte 0x5 + .byte 0x38 + .4byte .LASF2087 + .byte 0x5 + .byte 0x39 + .4byte .LASF2088 + .byte 0x5 + .byte 0x3a + .4byte .LASF2089 + .byte 0x5 + .byte 0x3f + .4byte .LASF2090 + .byte 0x5 + .byte 0x40 + .4byte .LASF2091 + .byte 0x5 + .byte 0x41 + .4byte .LASF2092 + .byte 0x5 + .byte 0x42 + .4byte .LASF2093 + .byte 0x5 + .byte 0x43 + .4byte .LASF2094 + .byte 0x5 + .byte 0x44 + .4byte .LASF2095 + .byte 0x5 + .byte 0x45 + .4byte .LASF2096 + .byte 0x5 + .byte 0x46 + .4byte .LASF2097 + .byte 0x5 + .byte 0x47 + .4byte .LASF2098 + .byte 0x5 + .byte 0x48 + .4byte .LASF2099 + .byte 0x5 + .byte 0x49 + .4byte .LASF2100 + .byte 0x5 + .byte 0x4a + .4byte .LASF2101 + .byte 0x5 + .byte 0x4b + .4byte .LASF2102 + .byte 0x5 + .byte 0x4c + .4byte .LASF2103 + .byte 0x5 + .byte 0x4f + .4byte .LASF2104 + .byte 0x5 + .byte 0x50 + .4byte .LASF2105 + .byte 0x5 + .byte 0x51 + .4byte .LASF2106 + .byte 0x5 + .byte 0x52 + .4byte .LASF2107 + .byte 0x5 + .byte 0x53 + .4byte .LASF2108 + .byte 0x5 + .byte 0x54 + .4byte .LASF2109 + .byte 0x5 + .byte 0x55 + .4byte .LASF2110 + .byte 0x5 + .byte 0x56 + .4byte .LASF2111 + .byte 0x5 + .byte 0x57 + .4byte .LASF2112 + .byte 0x5 + .byte 0x58 + .4byte .LASF2113 + .byte 0x5 + .byte 0x59 + .4byte .LASF2114 + .byte 0x5 + .byte 0x5a + .4byte .LASF2115 + .byte 0x5 + .byte 0x5b + .4byte .LASF2116 + .byte 0x5 + .byte 0x5e + .4byte .LASF2117 + .byte 0x5 + .byte 0x5f + .4byte .LASF2118 + .byte 0x5 + .byte 0x60 + .4byte .LASF2119 + .byte 0x5 + .byte 0x61 + .4byte .LASF2120 + .byte 0x5 + .byte 0x62 + .4byte .LASF2121 + .byte 0x5 + .byte 0x63 + .4byte .LASF2122 + .byte 0x5 + .byte 0x64 + .4byte .LASF2123 + .byte 0x5 + .byte 0x65 + .4byte .LASF2124 + .byte 0x5 + .byte 0x66 + .4byte .LASF2125 + .byte 0x5 + .byte 0x67 + .4byte .LASF2126 + .byte 0x5 + .byte 0x68 + .4byte .LASF2127 + .byte 0x5 + .byte 0x69 + .4byte .LASF2128 + .byte 0x5 + .byte 0x6a + .4byte .LASF2129 + .byte 0x5 + .byte 0x6b + .4byte .LASF2130 + .byte 0x5 + .byte 0x6c + .4byte .LASF2131 + .byte 0x5 + .byte 0x6d + .4byte .LASF2132 + .byte 0x5 + .byte 0x6e + .4byte .LASF2133 + .byte 0x5 + .byte 0x6f + .4byte .LASF2134 + .byte 0x5 + .byte 0x70 + .4byte .LASF2135 + .byte 0x5 + .byte 0x71 + .4byte .LASF2136 + .byte 0x5 + .byte 0x72 + .4byte .LASF2137 + .byte 0x5 + .byte 0x73 + .4byte .LASF2138 + .byte 0x5 + .byte 0x74 + .4byte .LASF2139 + .byte 0x5 + .byte 0x77 + .4byte .LASF2140 + .byte 0x5 + .byte 0x78 + .4byte .LASF2141 + .byte 0x5 + .byte 0x79 + .4byte .LASF2142 + .byte 0x5 + .byte 0x7a + .4byte .LASF2143 + .byte 0x5 + .byte 0x7b + .4byte .LASF2144 + .byte 0x5 + .byte 0x7c + .4byte .LASF2145 + .byte 0x5 + .byte 0x7d + .4byte .LASF2146 + .byte 0x5 + .byte 0x7e + .4byte .LASF2147 + .byte 0x5 + .byte 0x7f + .4byte .LASF2148 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF2149 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF2150 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF2151 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF2152 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF2153 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF2154 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF2155 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF2156 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF2157 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2158 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2159 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF2160 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF2161 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF2162 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2163 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF2164 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF2165 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF2166 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF2167 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2168 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2169 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF2170 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2171 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF2172 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF2173 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2174 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF2175 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF2176 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF2177 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF2178 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF2179 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF2180 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF2181 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2182 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2183 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2184 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2185 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF2186 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF2187 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF2188 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF2189 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF2190 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF2191 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF2192 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2193 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF2194 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF2195 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2196 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2197 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2198 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2199 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF2200 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF2201 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2202 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2203 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2204 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2205 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2206 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF2207 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF2208 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF2209 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF2210 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF2211 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF2212 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2213 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF2214 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF2215 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF2216 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF2217 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF2218 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF2219 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2220 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF2221 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF2222 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF2223 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF2224 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF2225 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF2226 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF2227 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2228 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2229 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF2230 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF2231 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2232 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2233 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2234 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF2235 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF2236 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF2237 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF2238 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF2239 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF2240 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF2241 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF2242 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF2243 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF2244 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF2245 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF2246 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF2247 + .byte 0x5 + .byte 0xaa,0x3 + .4byte .LASF2248 + .byte 0x5 + .byte 0xab,0x3 + .4byte .LASF2249 + .byte 0x5 + .byte 0xac,0x3 + .4byte .LASF2250 + .byte 0x5 + .byte 0xad,0x3 + .4byte .LASF2251 + .byte 0x5 + .byte 0xb0,0x3 + .4byte .LASF2252 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF2253 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF2254 + .byte 0x5 + .byte 0xb3,0x3 + .4byte .LASF2255 + .byte 0x5 + .byte 0xb6,0x3 + .4byte .LASF2256 + .byte 0x5 + .byte 0xb7,0x3 + .4byte .LASF2257 + .byte 0x5 + .byte 0xb8,0x3 + .4byte .LASF2258 + .byte 0x5 + .byte 0xb9,0x3 + .4byte .LASF2259 + .byte 0x5 + .byte 0xba,0x3 + .4byte .LASF2260 + .byte 0x5 + .byte 0xbb,0x3 + .4byte .LASF2261 + .byte 0x5 + .byte 0xbc,0x3 + .4byte .LASF2262 + .byte 0x5 + .byte 0xbd,0x3 + .4byte .LASF2263 + .byte 0x5 + .byte 0xbe,0x3 + .4byte .LASF2264 + .byte 0x5 + .byte 0xbf,0x3 + .4byte .LASF2265 + .byte 0x5 + .byte 0xc2,0x3 + .4byte .LASF2266 + .byte 0x5 + .byte 0xc3,0x3 + .4byte .LASF2267 + .byte 0x5 + .byte 0xc4,0x3 + .4byte .LASF2268 + .byte 0x5 + .byte 0xc5,0x3 + .4byte .LASF2269 + .byte 0x5 + .byte 0xc6,0x3 + .4byte .LASF2270 + .byte 0x5 + .byte 0xc7,0x3 + .4byte .LASF2271 + .byte 0x5 + .byte 0xca,0x3 + .4byte .LASF2272 + .byte 0x5 + .byte 0xcb,0x3 + .4byte .LASF2273 + .byte 0x5 + .byte 0xcc,0x3 + .4byte .LASF2274 + .byte 0x5 + .byte 0xcd,0x3 + .4byte .LASF2275 + .byte 0x5 + .byte 0xce,0x3 + .4byte .LASF2276 + .byte 0x5 + .byte 0xcf,0x3 + .4byte .LASF2277 + .byte 0x5 + .byte 0xd2,0x3 + .4byte .LASF2278 + .byte 0x5 + .byte 0xd3,0x3 + .4byte .LASF2279 + .byte 0x5 + .byte 0xd4,0x3 + .4byte .LASF2280 + .byte 0x5 + .byte 0xd5,0x3 + .4byte .LASF2281 + .byte 0x5 + .byte 0xd6,0x3 + .4byte .LASF2282 + .byte 0x5 + .byte 0xd7,0x3 + .4byte .LASF2283 + .byte 0x5 + .byte 0xda,0x3 + .4byte .LASF2284 + .byte 0x5 + .byte 0xdb,0x3 + .4byte .LASF2285 + .byte 0x5 + .byte 0xde,0x3 + .4byte .LASF2286 + .byte 0x5 + .byte 0xe0,0x3 + .4byte .LASF2287 + .byte 0x5 + .byte 0xe1,0x3 + .4byte .LASF2288 + .byte 0x5 + .byte 0xe2,0x3 + .4byte .LASF2289 + .byte 0x5 + .byte 0xe3,0x3 + .4byte .LASF2290 + .byte 0x5 + .byte 0xe4,0x3 + .4byte .LASF2291 + .byte 0x5 + .byte 0xe5,0x3 + .4byte .LASF2292 + .byte 0x5 + .byte 0xe6,0x3 + .4byte .LASF2293 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF2294 + .byte 0x5 + .byte 0xe8,0x3 + .4byte .LASF2295 + .byte 0x5 + .byte 0xe9,0x3 + .4byte .LASF2296 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF2297 + .byte 0x5 + .byte 0xeb,0x3 + .4byte .LASF2298 + .byte 0x5 + .byte 0xec,0x3 + .4byte .LASF2299 + .byte 0x5 + .byte 0xed,0x3 + .4byte .LASF2300 + .byte 0x5 + .byte 0xee,0x3 + .4byte .LASF2301 + .byte 0x5 + .byte 0xef,0x3 + .4byte .LASF2302 + .byte 0x5 + .byte 0xf0,0x3 + .4byte .LASF2303 + .byte 0x5 + .byte 0xf1,0x3 + .4byte .LASF2304 + .byte 0x5 + .byte 0xf2,0x3 + .4byte .LASF2305 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF2306 + .byte 0x5 + .byte 0xf4,0x3 + .4byte .LASF2307 + .byte 0x5 + .byte 0xf5,0x3 + .4byte .LASF2308 + .byte 0x5 + .byte 0xf6,0x3 + .4byte .LASF2309 + .byte 0x5 + .byte 0xf7,0x3 + .4byte .LASF2310 + .byte 0x5 + .byte 0xf8,0x3 + .4byte .LASF2311 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF2312 + .byte 0x5 + .byte 0xfa,0x3 + .4byte .LASF2313 + .byte 0x5 + .byte 0xfb,0x3 + .4byte .LASF2314 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF2315 + .byte 0x5 + .byte 0xfd,0x3 + .4byte .LASF2316 + .byte 0x5 + .byte 0xfe,0x3 + .4byte .LASF2317 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF2318 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF2319 + .byte 0x5 + .byte 0x83,0x4 + .4byte .LASF2320 + .byte 0x5 + .byte 0x84,0x4 + .4byte .LASF2321 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF2322 + .byte 0x5 + .byte 0x86,0x4 + .4byte .LASF2323 + .byte 0x5 + .byte 0x89,0x4 + .4byte .LASF2324 + .byte 0x5 + .byte 0x8a,0x4 + .4byte .LASF2325 + .byte 0x5 + .byte 0x8b,0x4 + .4byte .LASF2326 + .byte 0x5 + .byte 0x8c,0x4 + .4byte .LASF2327 + .byte 0x5 + .byte 0x8d,0x4 + .4byte .LASF2328 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF2329 + .byte 0x5 + .byte 0x8f,0x4 + .4byte .LASF2330 + .byte 0x5 + .byte 0x90,0x4 + .4byte .LASF2331 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF2332 + .byte 0x5 + .byte 0x92,0x4 + .4byte .LASF2333 + .byte 0x5 + .byte 0x95,0x4 + .4byte .LASF2334 + .byte 0x5 + .byte 0x96,0x4 + .4byte .LASF2335 + .byte 0x5 + .byte 0x97,0x4 + .4byte .LASF2336 + .byte 0x5 + .byte 0x98,0x4 + .4byte .LASF2337 + .byte 0x5 + .byte 0x99,0x4 + .4byte .LASF2338 + .byte 0x5 + .byte 0x9c,0x4 + .4byte .LASF2339 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF2340 + .byte 0x5 + .byte 0x9e,0x4 + .4byte .LASF2341 + .byte 0x5 + .byte 0x9f,0x4 + .4byte .LASF2342 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF2343 + .byte 0x5 + .byte 0xa1,0x4 + .4byte .LASF2344 + .byte 0x5 + .byte 0xa2,0x4 + .4byte .LASF2345 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF2346 + .byte 0x5 + .byte 0xa4,0x4 + .4byte .LASF2347 + .byte 0x5 + .byte 0xa5,0x4 + .4byte .LASF2348 + .byte 0x5 + .byte 0xa6,0x4 + .4byte .LASF2349 + .byte 0x5 + .byte 0xa7,0x4 + .4byte .LASF2350 + .byte 0x5 + .byte 0xa8,0x4 + .4byte .LASF2351 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF2352 + .byte 0x5 + .byte 0xaa,0x4 + .4byte .LASF2353 + .byte 0x5 + .byte 0xab,0x4 + .4byte .LASF2354 + .byte 0x5 + .byte 0xac,0x4 + .4byte .LASF2355 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF2356 + .byte 0x5 + .byte 0xb0,0x4 + .4byte .LASF2357 + .byte 0x5 + .byte 0xb1,0x4 + .4byte .LASF2358 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF2359 + .byte 0x5 + .byte 0xb3,0x4 + .4byte .LASF2360 + .byte 0x5 + .byte 0xb4,0x4 + .4byte .LASF2361 + .byte 0x5 + .byte 0xb5,0x4 + .4byte .LASF2362 + .byte 0x5 + .byte 0xb6,0x4 + .4byte .LASF2363 + .byte 0x5 + .byte 0xb7,0x4 + .4byte .LASF2364 + .byte 0x5 + .byte 0xb8,0x4 + .4byte .LASF2365 + .byte 0x5 + .byte 0xb9,0x4 + .4byte .LASF2366 + .byte 0x5 + .byte 0xba,0x4 + .4byte .LASF2367 + .byte 0x5 + .byte 0xbb,0x4 + .4byte .LASF2368 + .byte 0x5 + .byte 0xbc,0x4 + .4byte .LASF2369 + .byte 0x5 + .byte 0xbd,0x4 + .4byte .LASF2370 + .byte 0x5 + .byte 0xbe,0x4 + .4byte .LASF2371 + .byte 0x5 + .byte 0xbf,0x4 + .4byte .LASF2372 + .byte 0x5 + .byte 0xc2,0x4 + .4byte .LASF2373 + .byte 0x5 + .byte 0xc3,0x4 + .4byte .LASF2374 + .byte 0x5 + .byte 0xc4,0x4 + .4byte .LASF2375 + .byte 0x5 + .byte 0xc5,0x4 + .4byte .LASF2376 + .byte 0x5 + .byte 0xc6,0x4 + .4byte .LASF2377 + .byte 0x5 + .byte 0xc7,0x4 + .4byte .LASF2378 + .byte 0x5 + .byte 0xc8,0x4 + .4byte .LASF2379 + .byte 0x5 + .byte 0xc9,0x4 + .4byte .LASF2380 + .byte 0x5 + .byte 0xca,0x4 + .4byte .LASF2381 + .byte 0x5 + .byte 0xcb,0x4 + .4byte .LASF2382 + .byte 0x5 + .byte 0xcc,0x4 + .4byte .LASF2383 + .byte 0x5 + .byte 0xcf,0x4 + .4byte .LASF2384 + .byte 0x5 + .byte 0xd0,0x4 + .4byte .LASF2385 + .byte 0x5 + .byte 0xd1,0x4 + .4byte .LASF2386 + .byte 0x5 + .byte 0xd2,0x4 + .4byte .LASF2387 + .byte 0x5 + .byte 0xd3,0x4 + .4byte .LASF2388 + .byte 0x5 + .byte 0xd4,0x4 + .4byte .LASF2389 + .byte 0x5 + .byte 0xd5,0x4 + .4byte .LASF2390 + .byte 0x5 + .byte 0xd6,0x4 + .4byte .LASF2391 + .byte 0x5 + .byte 0xd7,0x4 + .4byte .LASF2392 + .byte 0x5 + .byte 0xd8,0x4 + .4byte .LASF2393 + .byte 0x5 + .byte 0xd9,0x4 + .4byte .LASF2394 + .byte 0x5 + .byte 0xdd,0x4 + .4byte .LASF2395 + .byte 0x5 + .byte 0xde,0x4 + .4byte .LASF2396 + .byte 0x5 + .byte 0xe1,0x4 + .4byte .LASF2397 + .byte 0x5 + .byte 0xe2,0x4 + .4byte .LASF2398 + .byte 0x5 + .byte 0xe5,0x4 + .4byte .LASF2399 + .byte 0x5 + .byte 0xe6,0x4 + .4byte .LASF2400 + .byte 0x5 + .byte 0xea,0x4 + .4byte .LASF2401 + .byte 0x5 + .byte 0xeb,0x4 + .4byte .LASF2402 + .byte 0x5 + .byte 0xec,0x4 + .4byte .LASF2403 + .byte 0x5 + .byte 0xed,0x4 + .4byte .LASF2404 + .byte 0x5 + .byte 0xee,0x4 + .4byte .LASF2405 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_rtc.h.37.3521dc979060c1ebaf2d43fd52b94dac,comdat +.Ldebug_macro26: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2406 + .byte 0x5 + .byte 0x2a + .4byte .LASF2407 + .byte 0x5 + .byte 0x2d + .4byte .LASF2408 + .byte 0x5 + .byte 0x2e + .4byte .LASF2409 + .byte 0x5 + .byte 0x2f + .4byte .LASF2410 + .byte 0x5 + .byte 0x30 + .4byte .LASF2411 + .byte 0x5 + .byte 0x31 + .4byte .LASF2412 + .byte 0x5 + .byte 0x32 + .4byte .LASF2413 + .byte 0x5 + .byte 0x33 + .4byte .LASF2414 + .byte 0x5 + .byte 0x34 + .4byte .LASF2415 + .byte 0x5 + .byte 0x35 + .4byte .LASF2416 + .byte 0x5 + .byte 0x36 + .4byte .LASF2417 + .byte 0x5 + .byte 0x3a + .4byte .LASF2418 + .byte 0x5 + .byte 0x3b + .4byte .LASF2419 + .byte 0x5 + .byte 0x3c + .4byte .LASF2420 + .byte 0x5 + .byte 0x3f + .4byte .LASF2421 + .byte 0x5 + .byte 0x40 + .4byte .LASF2422 + .byte 0x5 + .byte 0x41 + .4byte .LASF2423 + .byte 0x5 + .byte 0x42 + .4byte .LASF2424 + .byte 0x5 + .byte 0x43 + .4byte .LASF2425 + .byte 0x5 + .byte 0x44 + .4byte .LASF2426 + .byte 0x5 + .byte 0x47 + .4byte .LASF2427 + .byte 0x5 + .byte 0x4a + .4byte .LASF2428 + .byte 0x5 + .byte 0x4d + .4byte .LASF2429 + .byte 0x5 + .byte 0x50 + .4byte .LASF2430 + .byte 0x5 + .byte 0x53 + .4byte .LASF2431 + .byte 0x5 + .byte 0x56 + .4byte .LASF2432 + .byte 0x5 + .byte 0x59 + .4byte .LASF2433 + .byte 0x5 + .byte 0x5c + .4byte .LASF2434 + .byte 0x5 + .byte 0x60 + .4byte .LASF2435 + .byte 0x5 + .byte 0x61 + .4byte .LASF2436 + .byte 0x5 + .byte 0x62 + .4byte .LASF2437 + .byte 0x5 + .byte 0x65 + .4byte .LASF2438 + .byte 0x5 + .byte 0x66 + .4byte .LASF2439 + .byte 0x5 + .byte 0x67 + .4byte .LASF2440 + .byte 0x5 + .byte 0x6a + .4byte .LASF2441 + .byte 0x5 + .byte 0x6b + .4byte .LASF2442 + .byte 0x5 + .byte 0x6c + .4byte .LASF2443 + .byte 0x5 + .byte 0x6d + .4byte .LASF2444 + .byte 0x5 + .byte 0x6e + .4byte .LASF2445 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_spi.h.37.5b2da83109360bb35c1791b7dcc5009b,comdat +.Ldebug_macro27: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2446 + .byte 0x5 + .byte 0x2a + .4byte .LASF2447 + .byte 0x5 + .byte 0x2b + .4byte .LASF2448 + .byte 0x5 + .byte 0x2c + .4byte .LASF2449 + .byte 0x5 + .byte 0x2f + .4byte .LASF2450 + .byte 0x5 + .byte 0x30 + .4byte .LASF2451 + .byte 0x5 + .byte 0x31 + .4byte .LASF2452 + .byte 0x5 + .byte 0x32 + .4byte .LASF2453 + .byte 0x5 + .byte 0x33 + .4byte .LASF2454 + .byte 0x5 + .byte 0x34 + .4byte .LASF2455 + .byte 0x5 + .byte 0x35 + .4byte .LASF2456 + .byte 0x5 + .byte 0x36 + .4byte .LASF2457 + .byte 0x5 + .byte 0x37 + .4byte .LASF2458 + .byte 0x5 + .byte 0x3b + .4byte .LASF2459 + .byte 0x5 + .byte 0x3c + .4byte .LASF2460 + .byte 0x5 + .byte 0x3d + .4byte .LASF2461 + .byte 0x5 + .byte 0x3e + .4byte .LASF2462 + .byte 0x5 + .byte 0x3f + .4byte .LASF2463 + .byte 0x5 + .byte 0x40 + .4byte .LASF2464 + .byte 0x5 + .byte 0x41 + .4byte .LASF2465 + .byte 0x5 + .byte 0x42 + .4byte .LASF2466 + .byte 0x5 + .byte 0x43 + .4byte .LASF2467 + .byte 0x5 + .byte 0x44 + .4byte .LASF2468 + .byte 0x5 + .byte 0x45 + .4byte .LASF2469 + .byte 0x5 + .byte 0x46 + .4byte .LASF2470 + .byte 0x5 + .byte 0x47 + .4byte .LASF2471 + .byte 0x5 + .byte 0x48 + .4byte .LASF2472 + .byte 0x5 + .byte 0x4b + .4byte .LASF2473 + .byte 0x5 + .byte 0x4c + .4byte .LASF2474 + .byte 0x5 + .byte 0x4d + .4byte .LASF2475 + .byte 0x5 + .byte 0x4e + .4byte .LASF2476 + .byte 0x5 + .byte 0x4f + .4byte .LASF2477 + .byte 0x5 + .byte 0x50 + .4byte .LASF2478 + .byte 0x5 + .byte 0x51 + .4byte .LASF2479 + .byte 0x5 + .byte 0x52 + .4byte .LASF2480 + .byte 0x5 + .byte 0x55 + .4byte .LASF2481 + .byte 0x5 + .byte 0x56 + .4byte .LASF2482 + .byte 0x5 + .byte 0x57 + .4byte .LASF2483 + .byte 0x5 + .byte 0x58 + .4byte .LASF2484 + .byte 0x5 + .byte 0x59 + .4byte .LASF2485 + .byte 0x5 + .byte 0x5a + .4byte .LASF2486 + .byte 0x5 + .byte 0x5b + .4byte .LASF2487 + .byte 0x5 + .byte 0x5c + .4byte .LASF2488 + .byte 0x5 + .byte 0x5d + .4byte .LASF2489 + .byte 0x5 + .byte 0x60 + .4byte .LASF2490 + .byte 0x5 + .byte 0x63 + .4byte .LASF2491 + .byte 0x5 + .byte 0x66 + .4byte .LASF2492 + .byte 0x5 + .byte 0x69 + .4byte .LASF2493 + .byte 0x5 + .byte 0x6c + .4byte .LASF2494 + .byte 0x5 + .byte 0x6d + .4byte .LASF2495 + .byte 0x5 + .byte 0x6e + .4byte .LASF2496 + .byte 0x5 + .byte 0x6f + .4byte .LASF2497 + .byte 0x5 + .byte 0x70 + .4byte .LASF2498 + .byte 0x5 + .byte 0x71 + .4byte .LASF2499 + .byte 0x5 + .byte 0x72 + .4byte .LASF2500 + .byte 0x5 + .byte 0x73 + .4byte .LASF2501 + .byte 0x5 + .byte 0x76 + .4byte .LASF2502 + .byte 0x5 + .byte 0x77 + .4byte .LASF2503 + .byte 0x5 + .byte 0x78 + .4byte .LASF2504 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF2505 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF2506 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2507 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2508 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF2509 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2510 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF2511 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF2512 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2513 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2514 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF2515 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2516 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2517 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF2518 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF2519 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF2520 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF2521 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF2522 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2523 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2524 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2525 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2526 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF2527 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF2528 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF2529 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF2530 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF2531 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF2532 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF2533 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2534 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF2535 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF2536 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2537 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2538 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2539 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2540 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2541 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2542 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2543 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2544 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2545 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF2546 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF2547 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF2548 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF2549 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2550 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF2551 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF2552 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF2553 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF2554 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF2555 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF2556 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2557 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF2558 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF2559 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF2560 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF2561 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF2562 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2563 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2564 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF2565 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF2566 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2567 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF2568 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2569 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2570 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF2571 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF2572 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF2573 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF2574 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF2575 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF2576 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF2577 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF2578 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF2579 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF2580 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF2581 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF2582 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF2583 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF2584 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF2585 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF2586 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF2587 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF2588 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_timer.h.37.41e31e3c41519d549a8819d7a508d7a5,comdat +.Ldebug_macro28: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2589 + .byte 0x5 + .byte 0x2a + .4byte .LASF2590 + .byte 0x5 + .byte 0x2b + .4byte .LASF2591 + .byte 0x5 + .byte 0x2c + .4byte .LASF2592 + .byte 0x5 + .byte 0x2d + .4byte .LASF2593 + .byte 0x5 + .byte 0x2e + .4byte .LASF2594 + .byte 0x5 + .byte 0x2f + .4byte .LASF2595 + .byte 0x5 + .byte 0x30 + .4byte .LASF2596 + .byte 0x5 + .byte 0x33 + .4byte .LASF2597 + .byte 0x5 + .byte 0x34 + .4byte .LASF2598 + .byte 0x5 + .byte 0x35 + .4byte .LASF2599 + .byte 0x5 + .byte 0x36 + .4byte .LASF2600 + .byte 0x5 + .byte 0x37 + .4byte .LASF2601 + .byte 0x5 + .byte 0x38 + .4byte .LASF2602 + .byte 0x5 + .byte 0x39 + .4byte .LASF2603 + .byte 0x5 + .byte 0x3a + .4byte .LASF2604 + .byte 0x5 + .byte 0x3b + .4byte .LASF2605 + .byte 0x5 + .byte 0x3c + .4byte .LASF2606 + .byte 0x5 + .byte 0x3d + .4byte .LASF2607 + .byte 0x5 + .byte 0x3e + .4byte .LASF2608 + .byte 0x5 + .byte 0x3f + .4byte .LASF2609 + .byte 0x5 + .byte 0x40 + .4byte .LASF2610 + .byte 0x5 + .byte 0x41 + .4byte .LASF2611 + .byte 0x5 + .byte 0x42 + .4byte .LASF2612 + .byte 0x5 + .byte 0x43 + .4byte .LASF2613 + .byte 0x5 + .byte 0x44 + .4byte .LASF2614 + .byte 0x5 + .byte 0x45 + .4byte .LASF2615 + .byte 0x5 + .byte 0x46 + .4byte .LASF2616 + .byte 0x5 + .byte 0x4a + .4byte .LASF2617 + .byte 0x5 + .byte 0x4b + .4byte .LASF2618 + .byte 0x5 + .byte 0x4c + .4byte .LASF2619 + .byte 0x5 + .byte 0x4d + .4byte .LASF2620 + .byte 0x5 + .byte 0x4e + .4byte .LASF2621 + .byte 0x5 + .byte 0x4f + .4byte .LASF2622 + .byte 0x5 + .byte 0x50 + .4byte .LASF2623 + .byte 0x5 + .byte 0x51 + .4byte .LASF2624 + .byte 0x5 + .byte 0x54 + .4byte .LASF2625 + .byte 0x5 + .byte 0x55 + .4byte .LASF2626 + .byte 0x5 + .byte 0x56 + .4byte .LASF2627 + .byte 0x5 + .byte 0x57 + .4byte .LASF2628 + .byte 0x5 + .byte 0x58 + .4byte .LASF2629 + .byte 0x5 + .byte 0x59 + .4byte .LASF2630 + .byte 0x5 + .byte 0x5a + .4byte .LASF2631 + .byte 0x5 + .byte 0x5b + .4byte .LASF2632 + .byte 0x5 + .byte 0x5c + .4byte .LASF2633 + .byte 0x5 + .byte 0x5d + .4byte .LASF2634 + .byte 0x5 + .byte 0x5e + .4byte .LASF2635 + .byte 0x5 + .byte 0x5f + .4byte .LASF2636 + .byte 0x5 + .byte 0x62 + .4byte .LASF2637 + .byte 0x5 + .byte 0x63 + .4byte .LASF2638 + .byte 0x5 + .byte 0x64 + .4byte .LASF2639 + .byte 0x5 + .byte 0x65 + .4byte .LASF2640 + .byte 0x5 + .byte 0x66 + .4byte .LASF2641 + .byte 0x5 + .byte 0x67 + .4byte .LASF2642 + .byte 0x5 + .byte 0x68 + .4byte .LASF2643 + .byte 0x5 + .byte 0x6b + .4byte .LASF2644 + .byte 0x5 + .byte 0x6c + .4byte .LASF2645 + .byte 0x5 + .byte 0x6d + .4byte .LASF2646 + .byte 0x5 + .byte 0x6e + .4byte .LASF2647 + .byte 0x5 + .byte 0x6f + .4byte .LASF2648 + .byte 0x5 + .byte 0x70 + .4byte .LASF2649 + .byte 0x5 + .byte 0x71 + .4byte .LASF2650 + .byte 0x5 + .byte 0x72 + .4byte .LASF2651 + .byte 0x5 + .byte 0x73 + .4byte .LASF2652 + .byte 0x5 + .byte 0x74 + .4byte .LASF2653 + .byte 0x5 + .byte 0x75 + .4byte .LASF2654 + .byte 0x5 + .byte 0x76 + .4byte .LASF2655 + .byte 0x5 + .byte 0x77 + .4byte .LASF2656 + .byte 0x5 + .byte 0x78 + .4byte .LASF2657 + .byte 0x5 + .byte 0x79 + .4byte .LASF2658 + .byte 0x5 + .byte 0x7c + .4byte .LASF2659 + .byte 0x5 + .byte 0x7d + .4byte .LASF2660 + .byte 0x5 + .byte 0x7e + .4byte .LASF2661 + .byte 0x5 + .byte 0x7f + .4byte .LASF2662 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF2663 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF2664 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF2665 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF2666 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF2667 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF2668 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF2669 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF2670 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF2671 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF2672 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2673 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2674 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF2675 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF2676 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF2677 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2678 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF2679 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2680 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2681 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF2682 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF2683 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF2684 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2685 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF2686 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF2687 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2688 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF2689 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF2690 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF2691 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF2692 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF2693 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2694 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2695 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2696 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2697 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF2698 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF2699 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF2700 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF2701 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF2702 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF2703 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF2704 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF2705 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2706 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2707 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2708 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2709 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2710 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF2711 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF2712 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2713 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2714 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2715 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2716 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2717 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF2718 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF2719 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF2720 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF2721 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2722 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF2723 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF2724 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2725 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF2726 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF2727 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF2728 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2729 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2730 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF2731 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF2732 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF2733 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF2734 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2735 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF2736 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2737 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2738 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF2739 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF2740 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF2741 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF2742 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF2743 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF2744 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF2745 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF2746 + .byte 0x5 + .byte 0xa4,0x2 + .4byte .LASF2747 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF2748 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF2749 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF2750 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF2751 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF2752 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF2753 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF2754 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF2755 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF2756 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF2757 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF2758 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF2759 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF2760 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF2761 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF2762 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF2763 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF2764 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF2765 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF2766 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF2767 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF2768 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF2769 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF2770 + .byte 0x5 + .byte 0xc2,0x2 + .4byte .LASF2771 + .byte 0x5 + .byte 0xc3,0x2 + .4byte .LASF2772 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF2773 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF2774 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF2775 + .byte 0x5 + .byte 0xc9,0x2 + .4byte .LASF2776 + .byte 0x5 + .byte 0xcc,0x2 + .4byte .LASF2777 + .byte 0x5 + .byte 0xcd,0x2 + .4byte .LASF2778 + .byte 0x5 + .byte 0xce,0x2 + .4byte .LASF2779 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF2780 + .byte 0x5 + .byte 0xd0,0x2 + .4byte .LASF2781 + .byte 0x5 + .byte 0xd1,0x2 + .4byte .LASF2782 + .byte 0x5 + .byte 0xd2,0x2 + .4byte .LASF2783 + .byte 0x5 + .byte 0xd3,0x2 + .4byte .LASF2784 + .byte 0x5 + .byte 0xd4,0x2 + .4byte .LASF2785 + .byte 0x5 + .byte 0xd5,0x2 + .4byte .LASF2786 + .byte 0x5 + .byte 0xd6,0x2 + .4byte .LASF2787 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF2788 + .byte 0x5 + .byte 0xd8,0x2 + .4byte .LASF2789 + .byte 0x5 + .byte 0xd9,0x2 + .4byte .LASF2790 + .byte 0x5 + .byte 0xda,0x2 + .4byte .LASF2791 + .byte 0x5 + .byte 0xdb,0x2 + .4byte .LASF2792 + .byte 0x5 + .byte 0xdc,0x2 + .4byte .LASF2793 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF2794 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF2795 + .byte 0x5 + .byte 0xdf,0x2 + .4byte .LASF2796 + .byte 0x5 + .byte 0xe2,0x2 + .4byte .LASF2797 + .byte 0x5 + .byte 0xe3,0x2 + .4byte .LASF2798 + .byte 0x5 + .byte 0xe4,0x2 + .4byte .LASF2799 + .byte 0x5 + .byte 0xe5,0x2 + .4byte .LASF2800 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF2801 + .byte 0x5 + .byte 0xe7,0x2 + .4byte .LASF2802 + .byte 0x5 + .byte 0xe8,0x2 + .4byte .LASF2803 + .byte 0x5 + .byte 0xe9,0x2 + .4byte .LASF2804 + .byte 0x5 + .byte 0xea,0x2 + .4byte .LASF2805 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF2806 + .byte 0x5 + .byte 0xec,0x2 + .4byte .LASF2807 + .byte 0x5 + .byte 0xed,0x2 + .4byte .LASF2808 + .byte 0x5 + .byte 0xee,0x2 + .4byte .LASF2809 + .byte 0x5 + .byte 0xef,0x2 + .4byte .LASF2810 + .byte 0x5 + .byte 0xf0,0x2 + .4byte .LASF2811 + .byte 0x5 + .byte 0xf1,0x2 + .4byte .LASF2812 + .byte 0x5 + .byte 0xf2,0x2 + .4byte .LASF2813 + .byte 0x5 + .byte 0xf3,0x2 + .4byte .LASF2814 + .byte 0x5 + .byte 0xf4,0x2 + .4byte .LASF2815 + .byte 0x5 + .byte 0xf7,0x2 + .4byte .LASF2816 + .byte 0x5 + .byte 0xf8,0x2 + .4byte .LASF2817 + .byte 0x5 + .byte 0xf9,0x2 + .4byte .LASF2818 + .byte 0x5 + .byte 0xfa,0x2 + .4byte .LASF2819 + .byte 0x5 + .byte 0xfb,0x2 + .4byte .LASF2820 + .byte 0x5 + .byte 0xfc,0x2 + .4byte .LASF2821 + .byte 0x5 + .byte 0xfd,0x2 + .4byte .LASF2822 + .byte 0x5 + .byte 0xfe,0x2 + .4byte .LASF2823 + .byte 0x5 + .byte 0x81,0x3 + .4byte .LASF2824 + .byte 0x5 + .byte 0x82,0x3 + .4byte .LASF2825 + .byte 0x5 + .byte 0x83,0x3 + .4byte .LASF2826 + .byte 0x5 + .byte 0x84,0x3 + .4byte .LASF2827 + .byte 0x5 + .byte 0x85,0x3 + .4byte .LASF2828 + .byte 0x5 + .byte 0x88,0x3 + .4byte .LASF2829 + .byte 0x5 + .byte 0x89,0x3 + .4byte .LASF2830 + .byte 0x5 + .byte 0x8c,0x3 + .4byte .LASF2831 + .byte 0x5 + .byte 0x8d,0x3 + .4byte .LASF2832 + .byte 0x5 + .byte 0x90,0x3 + .4byte .LASF2833 + .byte 0x5 + .byte 0x91,0x3 + .4byte .LASF2834 + .byte 0x5 + .byte 0x92,0x3 + .4byte .LASF2835 + .byte 0x5 + .byte 0x93,0x3 + .4byte .LASF2836 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF2837 + .byte 0x5 + .byte 0x97,0x3 + .4byte .LASF2838 + .byte 0x5 + .byte 0x9a,0x3 + .4byte .LASF2839 + .byte 0x5 + .byte 0x9b,0x3 + .4byte .LASF2840 + .byte 0x5 + .byte 0x9e,0x3 + .4byte .LASF2841 + .byte 0x5 + .byte 0x9f,0x3 + .4byte .LASF2842 + .byte 0x5 + .byte 0xa3,0x3 + .4byte .LASF2843 + .byte 0x5 + .byte 0xa4,0x3 + .4byte .LASF2844 + .byte 0x5 + .byte 0xa7,0x3 + .4byte .LASF2845 + .byte 0x5 + .byte 0xa8,0x3 + .4byte .LASF2846 + .byte 0x5 + .byte 0xab,0x3 + .4byte .LASF2847 + .byte 0x5 + .byte 0xac,0x3 + .4byte .LASF2848 + .byte 0x5 + .byte 0xaf,0x3 + .4byte .LASF2849 + .byte 0x5 + .byte 0xb0,0x3 + .4byte .LASF2850 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF2851 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF2852 + .byte 0x5 + .byte 0xb3,0x3 + .4byte .LASF2853 + .byte 0x5 + .byte 0xb6,0x3 + .4byte .LASF2854 + .byte 0x5 + .byte 0xb7,0x3 + .4byte .LASF2855 + .byte 0x5 + .byte 0xba,0x3 + .4byte .LASF2856 + .byte 0x5 + .byte 0xbb,0x3 + .4byte .LASF2857 + .byte 0x5 + .byte 0xbc,0x3 + .4byte .LASF2858 + .byte 0x5 + .byte 0xbd,0x3 + .4byte .LASF2859 + .byte 0x5 + .byte 0xc0,0x3 + .4byte .LASF2860 + .byte 0x5 + .byte 0xc1,0x3 + .4byte .LASF2861 + .byte 0x5 + .byte 0xc4,0x3 + .4byte .LASF2862 + .byte 0x5 + .byte 0xc5,0x3 + .4byte .LASF2863 + .byte 0x5 + .byte 0xc8,0x3 + .4byte .LASF2864 + .byte 0x5 + .byte 0xc9,0x3 + .4byte .LASF2865 + .byte 0x5 + .byte 0xcc,0x3 + .4byte .LASF2866 + .byte 0x5 + .byte 0xcd,0x3 + .4byte .LASF2867 + .byte 0x5 + .byte 0xd0,0x3 + .4byte .LASF2868 + .byte 0x5 + .byte 0xd1,0x3 + .4byte .LASF2869 + .byte 0x5 + .byte 0xd4,0x3 + .4byte .LASF2870 + .byte 0x5 + .byte 0xd5,0x3 + .4byte .LASF2871 + .byte 0x5 + .byte 0xd8,0x3 + .4byte .LASF2872 + .byte 0x5 + .byte 0xd9,0x3 + .4byte .LASF2873 + .byte 0x5 + .byte 0xda,0x3 + .4byte .LASF2874 + .byte 0x5 + .byte 0xdb,0x3 + .4byte .LASF2875 + .byte 0x5 + .byte 0xdc,0x3 + .4byte .LASF2876 + .byte 0x5 + .byte 0xdd,0x3 + .4byte .LASF2877 + .byte 0x5 + .byte 0xde,0x3 + .4byte .LASF2878 + .byte 0x5 + .byte 0xdf,0x3 + .4byte .LASF2879 + .byte 0x5 + .byte 0xe2,0x3 + .4byte .LASF2880 + .byte 0x5 + .byte 0xe3,0x3 + .4byte .LASF2881 + .byte 0x5 + .byte 0xe6,0x3 + .4byte .LASF2882 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF2883 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF2884 + .byte 0x5 + .byte 0xeb,0x3 + .4byte .LASF2885 + .byte 0x5 + .byte 0xee,0x3 + .4byte .LASF2886 + .byte 0x5 + .byte 0xef,0x3 + .4byte .LASF2887 + .byte 0x5 + .byte 0xf2,0x3 + .4byte .LASF2888 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF2889 + .byte 0x5 + .byte 0xf4,0x3 + .4byte .LASF2890 + .byte 0x5 + .byte 0xf7,0x3 + .4byte .LASF2891 + .byte 0x5 + .byte 0xf8,0x3 + .4byte .LASF2892 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF2893 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF2894 + .byte 0x5 + .byte 0xfd,0x3 + .4byte .LASF2895 + .byte 0x5 + .byte 0xfe,0x3 + .4byte .LASF2896 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF2897 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF2898 + .byte 0x5 + .byte 0x83,0x4 + .4byte .LASF2899 + .byte 0x5 + .byte 0x84,0x4 + .4byte .LASF2900 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF2901 + .byte 0x5 + .byte 0x86,0x4 + .4byte .LASF2902 + .byte 0x5 + .byte 0x87,0x4 + .4byte .LASF2903 + .byte 0x5 + .byte 0x88,0x4 + .4byte .LASF2904 + .byte 0x5 + .byte 0x89,0x4 + .4byte .LASF2905 + .byte 0x5 + .byte 0x8a,0x4 + .4byte .LASF2906 + .byte 0x5 + .byte 0x8d,0x4 + .4byte .LASF2907 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF2908 + .byte 0x5 + .byte 0x8f,0x4 + .4byte .LASF2909 + .byte 0x5 + .byte 0x90,0x4 + .4byte .LASF2910 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF2911 + .byte 0x5 + .byte 0x92,0x4 + .4byte .LASF2912 + .byte 0x5 + .byte 0x93,0x4 + .4byte .LASF2913 + .byte 0x5 + .byte 0x94,0x4 + .4byte .LASF2914 + .byte 0x5 + .byte 0x95,0x4 + .4byte .LASF2915 + .byte 0x5 + .byte 0x98,0x4 + .4byte .LASF2916 + .byte 0x5 + .byte 0x99,0x4 + .4byte .LASF2917 + .byte 0x5 + .byte 0x9a,0x4 + .4byte .LASF2918 + .byte 0x5 + .byte 0x9b,0x4 + .4byte .LASF2919 + .byte 0x5 + .byte 0x9c,0x4 + .4byte .LASF2920 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF2921 + .byte 0x5 + .byte 0x9e,0x4 + .4byte .LASF2922 + .byte 0x5 + .byte 0x9f,0x4 + .4byte .LASF2923 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF2924 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF2925 + .byte 0x5 + .byte 0xa4,0x4 + .4byte .LASF2926 + .byte 0x5 + .byte 0xa7,0x4 + .4byte .LASF2927 + .byte 0x5 + .byte 0xa8,0x4 + .4byte .LASF2928 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF2929 + .byte 0x5 + .byte 0xaa,0x4 + .4byte .LASF2930 + .byte 0x5 + .byte 0xab,0x4 + .4byte .LASF2931 + .byte 0x5 + .byte 0xae,0x4 + .4byte .LASF2932 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF2933 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF2934 + .byte 0x5 + .byte 0xb3,0x4 + .4byte .LASF2935 + .byte 0x5 + .byte 0xb6,0x4 + .4byte .LASF2936 + .byte 0x5 + .byte 0xb7,0x4 + .4byte .LASF2937 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_usart.h.38.bd493dc3b9236603b2fca39bcddb0020,comdat +.Ldebug_macro29: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x26 + .4byte .LASF2938 + .byte 0x5 + .byte 0x2b + .4byte .LASF2939 + .byte 0x5 + .byte 0x2c + .4byte .LASF2940 + .byte 0x5 + .byte 0x2d + .4byte .LASF2941 + .byte 0x5 + .byte 0x2e + .4byte .LASF2942 + .byte 0x5 + .byte 0x2f + .4byte .LASF2943 + .byte 0x5 + .byte 0x32 + .4byte .LASF2944 + .byte 0x5 + .byte 0x33 + .4byte .LASF2945 + .byte 0x5 + .byte 0x34 + .4byte .LASF2946 + .byte 0x5 + .byte 0x35 + .4byte .LASF2947 + .byte 0x5 + .byte 0x36 + .4byte .LASF2948 + .byte 0x5 + .byte 0x37 + .4byte .LASF2949 + .byte 0x5 + .byte 0x38 + .4byte .LASF2950 + .byte 0x5 + .byte 0x3c + .4byte .LASF2951 + .byte 0x5 + .byte 0x3d + .4byte .LASF2952 + .byte 0x5 + .byte 0x3e + .4byte .LASF2953 + .byte 0x5 + .byte 0x3f + .4byte .LASF2954 + .byte 0x5 + .byte 0x40 + .4byte .LASF2955 + .byte 0x5 + .byte 0x41 + .4byte .LASF2956 + .byte 0x5 + .byte 0x42 + .4byte .LASF2957 + .byte 0x5 + .byte 0x43 + .4byte .LASF2958 + .byte 0x5 + .byte 0x44 + .4byte .LASF2959 + .byte 0x5 + .byte 0x45 + .4byte .LASF2960 + .byte 0x5 + .byte 0x48 + .4byte .LASF2961 + .byte 0x5 + .byte 0x4b + .4byte .LASF2962 + .byte 0x5 + .byte 0x4c + .4byte .LASF2963 + .byte 0x5 + .byte 0x4f + .4byte .LASF2964 + .byte 0x5 + .byte 0x50 + .4byte .LASF2965 + .byte 0x5 + .byte 0x51 + .4byte .LASF2966 + .byte 0x5 + .byte 0x52 + .4byte .LASF2967 + .byte 0x5 + .byte 0x53 + .4byte .LASF2968 + .byte 0x5 + .byte 0x54 + .4byte .LASF2969 + .byte 0x5 + .byte 0x55 + .4byte .LASF2970 + .byte 0x5 + .byte 0x56 + .4byte .LASF2971 + .byte 0x5 + .byte 0x57 + .4byte .LASF2972 + .byte 0x5 + .byte 0x58 + .4byte .LASF2973 + .byte 0x5 + .byte 0x59 + .4byte .LASF2974 + .byte 0x5 + .byte 0x5a + .4byte .LASF2975 + .byte 0x5 + .byte 0x5b + .4byte .LASF2976 + .byte 0x5 + .byte 0x5c + .4byte .LASF2977 + .byte 0x5 + .byte 0x5f + .4byte .LASF2978 + .byte 0x5 + .byte 0x60 + .4byte .LASF2979 + .byte 0x5 + .byte 0x61 + .4byte .LASF2980 + .byte 0x5 + .byte 0x62 + .4byte .LASF2981 + .byte 0x5 + .byte 0x63 + .4byte .LASF2982 + .byte 0x5 + .byte 0x64 + .4byte .LASF2983 + .byte 0x5 + .byte 0x65 + .4byte .LASF2984 + .byte 0x5 + .byte 0x66 + .4byte .LASF2985 + .byte 0x5 + .byte 0x67 + .4byte .LASF2986 + .byte 0x5 + .byte 0x6a + .4byte .LASF2987 + .byte 0x5 + .byte 0x6b + .4byte .LASF2988 + .byte 0x5 + .byte 0x6c + .4byte .LASF2989 + .byte 0x5 + .byte 0x6d + .4byte .LASF2990 + .byte 0x5 + .byte 0x6e + .4byte .LASF2991 + .byte 0x5 + .byte 0x6f + .4byte .LASF2992 + .byte 0x5 + .byte 0x70 + .4byte .LASF2993 + .byte 0x5 + .byte 0x71 + .4byte .LASF2994 + .byte 0x5 + .byte 0x72 + .4byte .LASF2995 + .byte 0x5 + .byte 0x73 + .4byte .LASF2996 + .byte 0x5 + .byte 0x74 + .4byte .LASF2997 + .byte 0x5 + .byte 0x77 + .4byte .LASF2998 + .byte 0x5 + .byte 0x78 + .4byte .LASF2999 + .byte 0x5 + .byte 0x7c + .4byte .LASF3000 + .byte 0x5 + .byte 0x7d + .4byte .LASF3001 + .byte 0x5 + .byte 0x7e + .4byte .LASF3002 + .byte 0x5 + .byte 0x7f + .4byte .LASF3003 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF3004 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF3005 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF3006 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF3007 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF3008 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF3009 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF3010 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF3011 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF3012 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF3013 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF3014 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF3015 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF3016 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF3017 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF3018 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF3019 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF3020 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF3021 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF3022 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF3023 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF3024 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF3025 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF3026 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF3027 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF3028 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF3029 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF3030 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF3031 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF3032 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF3033 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF3034 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF3035 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF3036 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF3037 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF3038 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF3039 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF3040 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF3041 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF3042 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF3043 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF3044 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF3045 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF3046 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF3047 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF3048 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF3049 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF3050 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF3051 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF3052 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF3053 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF3054 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF3055 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF3056 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF3057 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_wwdgt.h.37.3e64b838fd471007da900965463a8419,comdat +.Ldebug_macro30: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF3058 + .byte 0x5 + .byte 0x2a + .4byte .LASF3059 + .byte 0x5 + .byte 0x2d + .4byte .LASF3060 + .byte 0x5 + .byte 0x2e + .4byte .LASF3061 + .byte 0x5 + .byte 0x2f + .4byte .LASF3062 + .byte 0x5 + .byte 0x33 + .4byte .LASF3063 + .byte 0x5 + .byte 0x34 + .4byte .LASF3064 + .byte 0x5 + .byte 0x37 + .4byte .LASF3065 + .byte 0x5 + .byte 0x38 + .4byte .LASF3066 + .byte 0x5 + .byte 0x39 + .4byte .LASF3067 + .byte 0x5 + .byte 0x3c + .4byte .LASF3068 + .byte 0x5 + .byte 0x3f + .4byte .LASF3069 + .byte 0x5 + .byte 0x40 + .4byte .LASF3070 + .byte 0x5 + .byte 0x41 + .4byte .LASF3071 + .byte 0x5 + .byte 0x42 + .4byte .LASF3072 + .byte 0x5 + .byte 0x43 + .4byte .LASF3073 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stddef.h.39.144cf5ddcd53cbfdac30259dc1a6c87f,comdat +.Ldebug_macro31: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF3075 + .byte 0x5 + .byte 0x28 + .4byte .LASF3076 + .byte 0x5 + .byte 0x2a + .4byte .LASF3077 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF3078 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF3079 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF3080 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF3081 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF3082 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF3083 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF3084 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF3085 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF3086 + .byte 0x6 + .byte 0x9b,0x1 + .4byte .LASF3087 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF3088 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF3089 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF3090 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF3091 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF3092 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF3093 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF3094 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF3095 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF3096 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF3097 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF3098 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF3099 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF3100 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF3101 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF3102 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF3103 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF3104 + .byte 0x6 + .byte 0xe7,0x1 + .4byte .LASF3105 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF3106 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF3107 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF3108 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF3109 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF3110 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF3111 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF3112 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF3113 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF3114 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF3115 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF3116 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF3117 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF3118 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF3119 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF3120 + .byte 0x6 + .byte 0x9f,0x2 + .4byte .LASF3121 + .byte 0x6 + .byte 0xd4,0x2 + .4byte .LASF3122 + .byte 0x6 + .byte 0x86,0x3 + .4byte .LASF3123 + .byte 0x5 + .byte 0x8b,0x3 + .4byte .LASF3124 + .byte 0x6 + .byte 0x91,0x3 + .4byte .LASF3125 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF3126 + .byte 0x5 + .byte 0x9b,0x3 + .4byte .LASF3127 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_timer.h.4.7cbfcb0f457964ecd81bc2aaf47d8b32,comdat +.Ldebug_macro32: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4 + .4byte .LASF3128 + .byte 0x5 + .byte 0x6 + .4byte .LASF3129 + .byte 0x5 + .byte 0x7 + .4byte .LASF3130 + .byte 0x5 + .byte 0x8 + .4byte .LASF3131 + .byte 0x5 + .byte 0x9 + .4byte .LASF3132 + .byte 0x5 + .byte 0xa + .4byte .LASF3133 + .byte 0x5 + .byte 0xb + .4byte .LASF3134 + .byte 0x5 + .byte 0xd + .4byte .LASF3135 + .byte 0x5 + .byte 0xe + .4byte .LASF3136 + .byte 0x5 + .byte 0xf + .4byte .LASF3137 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.riscv_const.h.5.95ac0744d59bfc0d17f4e8adf85ccb42,comdat +.Ldebug_macro33: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x5 + .4byte .LASF3139 + .byte 0x5 + .byte 0xb + .4byte .LASF3140 + .byte 0x5 + .byte 0xc + .4byte .LASF3141 + .byte 0x5 + .byte 0xf + .4byte .LASF3142 + .byte 0x5 + .byte 0x10 + .4byte .LASF3143 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_eclic.h.8.88844f0cdf4d8e1ef4e06c0cb5147462,comdat +.Ldebug_macro34: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x8 + .4byte .LASF3144 + .byte 0x5 + .byte 0xd + .4byte .LASF3145 + .byte 0x5 + .byte 0xf + .4byte .LASF3146 + .byte 0x5 + .byte 0x11 + .4byte .LASF3147 + .byte 0x5 + .byte 0x14 + .4byte .LASF3148 + .byte 0x5 + .byte 0x16 + .4byte .LASF3149 + .byte 0x5 + .byte 0x18 + .4byte .LASF3150 + .byte 0x5 + .byte 0x1a + .4byte .LASF3151 + .byte 0x5 + .byte 0x1b + .4byte .LASF3152 + .byte 0x5 + .byte 0x1c + .4byte .LASF3153 + .byte 0x5 + .byte 0x1d + .4byte .LASF3154 + .byte 0x5 + .byte 0x1e + .4byte .LASF3155 + .byte 0x5 + .byte 0x21 + .4byte .LASF3156 + .byte 0x5 + .byte 0x23 + .4byte .LASF3157 + .byte 0x5 + .byte 0x26 + .4byte .LASF3158 + .byte 0x5 + .byte 0x27 + .4byte .LASF3159 + .byte 0x5 + .byte 0x29 + .4byte .LASF3160 + .byte 0x5 + .byte 0x2a + .4byte .LASF3161 + .byte 0x5 + .byte 0x2b + .4byte .LASF3162 + .byte 0x5 + .byte 0x2c + .4byte .LASF3163 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_func.h.11.5e6cb65336aea242ab47b239a06795e1,comdat +.Ldebug_macro35: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xb + .4byte .LASF3164 + .byte 0x5 + .byte 0xc + .4byte .LASF3165 + .byte 0x5 + .byte 0xd + .4byte .LASF3166 + .byte 0x5 + .byte 0xe + .4byte .LASF3167 + .byte 0x5 + .byte 0xf + .4byte .LASF3168 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.newlib.h.8.542bedab3c90294c348821966b79eb81,comdat +.Ldebug_macro36: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x8 + .4byte .LASF3171 + .byte 0x5 + .byte 0x12 + .4byte .LASF3172 + .byte 0x5 + .byte 0x15 + .4byte .LASF3173 + .byte 0x5 + .byte 0x18 + .4byte .LASF3174 + .byte 0x5 + .byte 0x1b + .4byte .LASF3175 + .byte 0x5 + .byte 0x25 + .4byte .LASF3176 + .byte 0x5 + .byte 0x2b + .4byte .LASF3177 + .byte 0x5 + .byte 0x35 + .4byte .LASF3178 + .byte 0x5 + .byte 0x3c + .4byte .LASF3179 + .byte 0x5 + .byte 0x3f + .4byte .LASF3180 + .byte 0x5 + .byte 0x45 + .4byte .LASF3181 + .byte 0x5 + .byte 0x48 + .4byte .LASF3182 + .byte 0x5 + .byte 0x4b + .4byte .LASF3183 + .byte 0x5 + .byte 0x4e + .4byte .LASF3184 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.ieeefp.h.202.4f2759f5758fd82153cfbf98692f2ced,comdat +.Ldebug_macro37: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF3186 + .byte 0x5 + .byte 0xec,0x3 + .4byte .LASF3187 + .byte 0x5 + .byte 0xef,0x3 + .4byte .LASF3188 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.config.h.83.13bbc8852bfac55b724c9822481355b5,comdat +.Ldebug_macro38: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x53 + .4byte .LASF3189 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF3190 + .byte 0x6 + .byte 0xe6,0x1 + .4byte .LASF3191 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF3192 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF3193 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF3194 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF3195 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._ansi.h.31.de524f58584151836e90d8620a16f8e8,comdat +.Ldebug_macro39: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x1f + .4byte .LASF3196 + .byte 0x5 + .byte 0x20 + .4byte .LASF3197 + .byte 0x5 + .byte 0x21 + .4byte .LASF3198 + .byte 0x5 + .byte 0x25 + .4byte .LASF3199 + .byte 0x5 + .byte 0x2b + .4byte .LASF3200 + .byte 0x5 + .byte 0x45 + .4byte .LASF3201 + .byte 0x5 + .byte 0x49 + .4byte .LASF3202 + .byte 0x5 + .byte 0x4a + .4byte .LASF3203 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stdio.h.31.7c0e28c411445f3f9c5b11accf882760,comdat +.Ldebug_macro40: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x1f + .4byte .LASF3204 + .byte 0x5 + .byte 0x21 + .4byte .LASF3205 + .byte 0x5 + .byte 0x22 + .4byte .LASF3206 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stddef.h.155.ba788add86a0e365f264484f110c3c29,comdat +.Ldebug_macro41: + .2byte 0x4 + .byte 0 + .byte 0x6 + .byte 0x9b,0x1 + .4byte .LASF3087 + .byte 0x6 + .byte 0xe7,0x1 + .4byte .LASF3105 + .byte 0x6 + .byte 0xd4,0x2 + .4byte .LASF3122 + .byte 0x6 + .byte 0x86,0x3 + .4byte .LASF3123 + .byte 0x5 + .byte 0x8b,0x3 + .4byte .LASF3124 + .byte 0x6 + .byte 0x91,0x3 + .4byte .LASF3125 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF3126 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.cdefs.h.49.39045112216f6a021dbdffe3bf5accce,comdat +.Ldebug_macro42: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x31 + .4byte .LASF3208 + .byte 0x5 + .byte 0x32 + .4byte .LASF3209 + .byte 0x5 + .byte 0x33 + .4byte .LASF3210 + .byte 0x5 + .byte 0x36 + .4byte .LASF3211 + .byte 0x5 + .byte 0x39 + .4byte .LASF3212 + .byte 0x5 + .byte 0x3a + .4byte .LASF3213 + .byte 0x5 + .byte 0x3c + .4byte .LASF3214 + .byte 0x5 + .byte 0x3d + .4byte .LASF3215 + .byte 0x5 + .byte 0x3e + .4byte .LASF3216 + .byte 0x5 + .byte 0x3f + .4byte .LASF3217 + .byte 0x5 + .byte 0x42 + .4byte .LASF3218 + .byte 0x5 + .byte 0x43 + .4byte .LASF3219 + .byte 0x5 + .byte 0x44 + .4byte .LASF3220 + .byte 0x5 + .byte 0x4e + .4byte .LASF3221 + .byte 0x5 + .byte 0x51 + .4byte .LASF3222 + .byte 0x5 + .byte 0x5e + .4byte .LASF3223 + .byte 0x5 + .byte 0x5f + .4byte .LASF3224 + .byte 0x5 + .byte 0x6b + .4byte .LASF3225 + .byte 0x5 + .byte 0x6c + .4byte .LASF3226 + .byte 0x5 + .byte 0x70 + .4byte .LASF3227 + .byte 0x5 + .byte 0x71 + .4byte .LASF3228 + .byte 0x5 + .byte 0x72 + .4byte .LASF3229 + .byte 0x5 + .byte 0x75 + .4byte .LASF3230 + .byte 0x5 + .byte 0x78 + .4byte .LASF3231 + .byte 0x5 + .byte 0x7f + .4byte .LASF3232 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF3233 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF3234 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF3235 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF3236 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF3237 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF3238 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF3239 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF3240 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF3241 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF3242 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF3243 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF3244 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF3245 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF3246 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF3247 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF3248 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF3249 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF3250 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF3251 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF3252 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF3253 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF3254 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF3255 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF3256 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF3257 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF3258 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF3259 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF3260 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF3261 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF3262 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF3263 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF3264 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF3265 + .byte 0x5 + .byte 0xdc,0x2 + .4byte .LASF3266 + .byte 0x5 + .byte 0xee,0x2 + .4byte .LASF3267 + .byte 0x5 + .byte 0xf4,0x2 + .4byte .LASF3268 + .byte 0x5 + .byte 0xf5,0x2 + .4byte .LASF3269 + .byte 0x5 + .byte 0xfc,0x2 + .4byte .LASF3270 + .byte 0x5 + .byte 0x82,0x3 + .4byte .LASF3271 + .byte 0x5 + .byte 0x88,0x3 + .4byte .LASF3272 + .byte 0x5 + .byte 0x89,0x3 + .4byte .LASF3273 + .byte 0x5 + .byte 0x90,0x3 + .4byte .LASF3274 + .byte 0x5 + .byte 0x91,0x3 + .4byte .LASF3275 + .byte 0x5 + .byte 0x98,0x3 + .4byte .LASF3276 + .byte 0x5 + .byte 0x9e,0x3 + .4byte .LASF3277 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF3278 + .byte 0x5 + .byte 0xd3,0x3 + .4byte .LASF3279 + .byte 0x5 + .byte 0xd4,0x3 + .4byte .LASF3280 + .byte 0x5 + .byte 0xdb,0x3 + .4byte .LASF3281 + .byte 0x5 + .byte 0xdc,0x3 + .4byte .LASF3282 + .byte 0x5 + .byte 0xdf,0x3 + .4byte .LASF3283 + .byte 0x5 + .byte 0xe9,0x3 + .4byte .LASF3284 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF3285 + .byte 0x5 + .byte 0xf4,0x3 + .4byte .LASF3286 + .byte 0x5 + .byte 0x8a,0x4 + .4byte .LASF3287 + .byte 0x5 + .byte 0x8c,0x4 + .4byte .LASF3288 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF3289 + .byte 0x5 + .byte 0x8f,0x4 + .4byte .LASF3290 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF3291 + .byte 0x5 + .byte 0x9b,0x4 + .4byte .LASF3292 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF3293 + .byte 0x5 + .byte 0xa5,0x4 + .4byte .LASF3294 + .byte 0x5 + .byte 0xa8,0x4 + .4byte .LASF3295 + .byte 0x5 + .byte 0xac,0x4 + .4byte .LASF3296 + .byte 0x5 + .byte 0xae,0x4 + .4byte .LASF3297 + .byte 0x5 + .byte 0xd1,0x4 + .4byte .LASF3298 + .byte 0x5 + .byte 0xd5,0x4 + .4byte .LASF3299 + .byte 0x5 + .byte 0xd9,0x4 + .4byte .LASF3300 + .byte 0x5 + .byte 0xdd,0x4 + .4byte .LASF3301 + .byte 0x5 + .byte 0xe1,0x4 + .4byte .LASF3302 + .byte 0x5 + .byte 0xe5,0x4 + .4byte .LASF3303 + .byte 0x5 + .byte 0xe9,0x4 + .4byte .LASF3304 + .byte 0x5 + .byte 0xed,0x4 + .4byte .LASF3305 + .byte 0x5 + .byte 0xf4,0x4 + .4byte .LASF3306 + .byte 0x5 + .byte 0xf5,0x4 + .4byte .LASF3307 + .byte 0x5 + .byte 0xf6,0x4 + .4byte .LASF3308 + .byte 0x5 + .byte 0xf7,0x4 + .4byte .LASF3309 + .byte 0x5 + .byte 0xf8,0x4 + .4byte .LASF3310 + .byte 0x5 + .byte 0x8d,0x5 + .4byte .LASF3311 + .byte 0x5 + .byte 0x8e,0x5 + .4byte .LASF3312 + .byte 0x5 + .byte 0xa0,0x5 + .4byte .LASF3313 + .byte 0x5 + .byte 0xa6,0x5 + .4byte .LASF3314 + .byte 0x5 + .byte 0xa9,0x5 + .4byte .LASF3315 + .byte 0x5 + .byte 0xab,0x5 + .4byte .LASF3316 + .byte 0x5 + .byte 0xaf,0x5 + .4byte .LASF3317 + .byte 0x5 + .byte 0xb1,0x5 + .4byte .LASF3318 + .byte 0x5 + .byte 0xb5,0x5 + .4byte .LASF3319 + .byte 0x5 + .byte 0xb8,0x5 + .4byte .LASF3320 + .byte 0x5 + .byte 0xba,0x5 + .4byte .LASF3321 + .byte 0x5 + .byte 0xbe,0x5 + .4byte .LASF3322 + .byte 0x5 + .byte 0xc0,0x5 + .4byte .LASF3323 + .byte 0x5 + .byte 0xc2,0x5 + .4byte .LASF3324 + .byte 0x5 + .byte 0xc6,0x5 + .4byte .LASF3325 + .byte 0x5 + .byte 0xd1,0x5 + .4byte .LASF3326 + .byte 0x5 + .byte 0xd2,0x5 + .4byte .LASF3327 + .byte 0x5 + .byte 0xd6,0x5 + .4byte .LASF3328 + .byte 0x5 + .byte 0xd7,0x5 + .4byte .LASF3329 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stdarg.h.34.3a23a216c0c293b3d2ea2e89281481e6,comdat +.Ldebug_macro43: + .2byte 0x4 + .byte 0 + .byte 0x6 + .byte 0x22 + .4byte .LASF3331 + .byte 0x5 + .byte 0x27 + .4byte .LASF3332 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._types.h.20.dd0d04dca3800a0d2a6129b87f3adbb2,comdat +.Ldebug_macro44: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x14 + .4byte .LASF3334 + .byte 0x5 + .byte 0x16 + .4byte .LASF3205 + .byte 0x5 + .byte 0x17 + .4byte .LASF3335 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stddef.h.155.3588ebfdd1e8c7ede80509bb9c3b8009,comdat +.Ldebug_macro45: + .2byte 0x4 + .byte 0 + .byte 0x6 + .byte 0x9b,0x1 + .4byte .LASF3087 + .byte 0x6 + .byte 0xe7,0x1 + .4byte .LASF3105 + .byte 0x6 + .byte 0xd4,0x2 + .4byte .LASF3122 + .byte 0x5 + .byte 0xd9,0x2 + .4byte .LASF3336 + .byte 0x6 + .byte 0xe0,0x2 + .4byte .LASF3337 + .byte 0x6 + .byte 0x86,0x3 + .4byte .LASF3123 + .byte 0x5 + .byte 0x8b,0x3 + .4byte .LASF3124 + .byte 0x6 + .byte 0x91,0x3 + .4byte .LASF3125 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF3126 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._types.h.127.34941de1b2539d59d5cac00e0dd27a45,comdat +.Ldebug_macro46: + .2byte 0x4 + .byte 0 + .byte 0x6 + .byte 0x7f + .4byte .LASF3339 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF3340 + .byte 0x6 + .byte 0x94,0x1 + .4byte .LASF376 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF3341 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF3342 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF3343 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF3344 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.reent.h.17.e292bf8b0bec6c96e131a54347145a30,comdat +.Ldebug_macro47: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x11 + .4byte .LASF3345 + .byte 0x5 + .byte 0x15 + .4byte .LASF3346 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.lock.h.2.c0958401bd0ce484d507ee19aacab817,comdat +.Ldebug_macro48: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x2 + .4byte .LASF3347 + .byte 0x5 + .byte 0xe + .4byte .LASF3348 + .byte 0x5 + .byte 0xf + .4byte .LASF3349 + .byte 0x5 + .byte 0x10 + .4byte .LASF3350 + .byte 0x5 + .byte 0x11 + .4byte .LASF3351 + .byte 0x5 + .byte 0x12 + .4byte .LASF3352 + .byte 0x5 + .byte 0x13 + .4byte .LASF3353 + .byte 0x5 + .byte 0x14 + .4byte .LASF3354 + .byte 0x5 + .byte 0x15 + .4byte .LASF3355 + .byte 0x5 + .byte 0x16 + .4byte .LASF3356 + .byte 0x5 + .byte 0x17 + .4byte .LASF3357 + .byte 0x5 + .byte 0x18 + .4byte .LASF3358 + .byte 0x5 + .byte 0x19 + .4byte .LASF3359 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.reent.h.77.dcd6129ff07fe81bd5636db29abe53b2,comdat +.Ldebug_macro49: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4d + .4byte .LASF3360 + .byte 0x5 + .byte 0x69 + .4byte .LASF3361 + .byte 0x5 + .byte 0x6f + .4byte .LASF3362 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF3363 + .byte 0x5 + .byte 0xbd,0x2 + .4byte .LASF3364 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF3365 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF3366 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF3367 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF3368 + .byte 0x5 + .byte 0xc2,0x2 + .4byte .LASF3369 + .byte 0x5 + .byte 0xc3,0x2 + .4byte .LASF3370 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF3371 + .byte 0x5 + .byte 0xd0,0x2 + .4byte .LASF3372 + .byte 0x5 + .byte 0xd1,0x2 + .4byte .LASF3373 + .byte 0x5 + .byte 0xa0,0x5 + .4byte .LASF3374 + .byte 0x5 + .byte 0xbc,0x5 + .4byte .LASF3375 + .byte 0x5 + .byte 0xbf,0x5 + .4byte .LASF3376 + .byte 0x5 + .byte 0xef,0x5 + .4byte .LASF3377 + .byte 0x5 + .byte 0xfd,0x5 + .4byte .LASF3378 + .byte 0x5 + .byte 0xfe,0x5 + .4byte .LASF3379 + .byte 0x5 + .byte 0xff,0x5 + .4byte .LASF3380 + .byte 0x5 + .byte 0x80,0x6 + .4byte .LASF3381 + .byte 0x5 + .byte 0x81,0x6 + .4byte .LASF3382 + .byte 0x5 + .byte 0x82,0x6 + .4byte .LASF3383 + .byte 0x5 + .byte 0x83,0x6 + .4byte .LASF3384 + .byte 0x5 + .byte 0x85,0x6 + .4byte .LASF3385 + .byte 0x5 + .byte 0x86,0x6 + .4byte .LASF3386 + .byte 0x5 + .byte 0x87,0x6 + .4byte .LASF3387 + .byte 0x5 + .byte 0x88,0x6 + .4byte .LASF3388 + .byte 0x5 + .byte 0x89,0x6 + .4byte .LASF3389 + .byte 0x5 + .byte 0x8a,0x6 + .4byte .LASF3390 + .byte 0x5 + .byte 0x8b,0x6 + .4byte .LASF3391 + .byte 0x5 + .byte 0x8c,0x6 + .4byte .LASF3392 + .byte 0x5 + .byte 0x8d,0x6 + .4byte .LASF3393 + .byte 0x5 + .byte 0x8e,0x6 + .4byte .LASF3394 + .byte 0x5 + .byte 0x8f,0x6 + .4byte .LASF3395 + .byte 0x5 + .byte 0x90,0x6 + .4byte .LASF3396 + .byte 0x5 + .byte 0x91,0x6 + .4byte .LASF3397 + .byte 0x5 + .byte 0x92,0x6 + .4byte .LASF3398 + .byte 0x5 + .byte 0x93,0x6 + .4byte .LASF3399 + .byte 0x5 + .byte 0x94,0x6 + .4byte .LASF3400 + .byte 0x5 + .byte 0x95,0x6 + .4byte .LASF3401 + .byte 0x5 + .byte 0x96,0x6 + .4byte .LASF3402 + .byte 0x5 + .byte 0x97,0x6 + .4byte .LASF3403 + .byte 0x5 + .byte 0x98,0x6 + .4byte .LASF3404 + .byte 0x5 + .byte 0x99,0x6 + .4byte .LASF3405 + .byte 0x5 + .byte 0x9a,0x6 + .4byte .LASF3406 + .byte 0x5 + .byte 0x9b,0x6 + .4byte .LASF3407 + .byte 0x5 + .byte 0x9c,0x6 + .4byte .LASF3408 + .byte 0x5 + .byte 0xa0,0x6 + .4byte .LASF3409 + .byte 0x5 + .byte 0xa8,0x6 + .4byte .LASF3410 + .byte 0x5 + .byte 0xb0,0x6 + .4byte .LASF3411 + .byte 0x5 + .byte 0xc0,0x6 + .4byte .LASF3412 + .byte 0x5 + .byte 0xc3,0x6 + .4byte .LASF3413 + .byte 0x5 + .byte 0xc9,0x6 + .4byte .LASF3414 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.types.h.40.c2dcbbb5c1f4f0e5cb716ebf7776da48,comdat +.Ldebug_macro50: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x28 + .4byte .LASF3415 + .byte 0x5 + .byte 0x2c + .4byte .LASF3416 + .byte 0x5 + .byte 0x62 + .4byte .LASF3417 + .byte 0x5 + .byte 0x67 + .4byte .LASF3418 + .byte 0x5 + .byte 0x6c + .4byte .LASF3419 + .byte 0x5 + .byte 0x6d + .4byte .LASF3420 + .byte 0x5 + .byte 0x72 + .4byte .LASF3421 + .byte 0x5 + .byte 0x73 + .4byte .LASF3422 + .byte 0x5 + .byte 0x78 + .4byte .LASF3423 + .byte 0x5 + .byte 0x7c + .4byte .LASF3424 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF3425 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF3426 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF3427 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF3428 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF3429 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF3430 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF3431 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF3432 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF3433 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF3434 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF3435 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF3436 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF3437 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF3438 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF3439 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF3440 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF3441 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF3442 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stdio.h.2.4aa87247282eca6c8f36f9de33d8df1a,comdat +.Ldebug_macro51: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x2 + .4byte .LASF3446 + .byte 0x5 + .byte 0xd + .4byte .LASF3447 + .byte 0x5 + .byte 0x15 + .4byte .LASF3448 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stdio.h.81.b348624b6806a74def9195c754308a00,comdat +.Ldebug_macro52: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x51 + .4byte .LASF3449 + .byte 0x5 + .byte 0x52 + .4byte .LASF3450 + .byte 0x5 + .byte 0x53 + .4byte .LASF3451 + .byte 0x5 + .byte 0x54 + .4byte .LASF3452 + .byte 0x5 + .byte 0x56 + .4byte .LASF3453 + .byte 0x5 + .byte 0x57 + .4byte .LASF3454 + .byte 0x5 + .byte 0x58 + .4byte .LASF3455 + .byte 0x5 + .byte 0x59 + .4byte .LASF3456 + .byte 0x5 + .byte 0x5a + .4byte .LASF3457 + .byte 0x5 + .byte 0x5b + .4byte .LASF3458 + .byte 0x5 + .byte 0x5c + .4byte .LASF3459 + .byte 0x5 + .byte 0x5d + .4byte .LASF3460 + .byte 0x5 + .byte 0x5e + .4byte .LASF3461 + .byte 0x5 + .byte 0x5f + .4byte .LASF3462 + .byte 0x5 + .byte 0x63 + .4byte .LASF3463 + .byte 0x5 + .byte 0x66 + .4byte .LASF3464 + .byte 0x5 + .byte 0x67 + .4byte .LASF3465 + .byte 0x5 + .byte 0x72 + .4byte .LASF3466 + .byte 0x5 + .byte 0x73 + .4byte .LASF3467 + .byte 0x5 + .byte 0x74 + .4byte .LASF3468 + .byte 0x5 + .byte 0x76 + .4byte .LASF3469 + .byte 0x5 + .byte 0x7b + .4byte .LASF3470 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF3471 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF3472 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF3473 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF3474 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF3475 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF3476 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF3477 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF3478 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF3479 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF3480 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF3481 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF3482 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF3483 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF3484 + .byte 0x5 + .byte 0x8e,0x5 + .4byte .LASF3485 + .byte 0x5 + .byte 0xab,0x5 + .4byte .LASF3486 + .byte 0x5 + .byte 0xcf,0x5 + .4byte .LASF3487 + .byte 0x5 + .byte 0xd0,0x5 + .4byte .LASF3488 + .byte 0x5 + .byte 0xd1,0x5 + .4byte .LASF3489 + .byte 0x5 + .byte 0xd2,0x5 + .4byte .LASF3490 + .byte 0x5 + .byte 0xd6,0x5 + .4byte .LASF3491 + .byte 0x5 + .byte 0xd7,0x5 + .4byte .LASF3492 + .byte 0x5 + .byte 0xd8,0x5 + .4byte .LASF3493 + .byte 0x5 + .byte 0xff,0x5 + .4byte .LASF3494 + .byte 0x5 + .byte 0x80,0x6 + .4byte .LASF3495 + .byte 0x5 + .byte 0x8e,0x6 + .4byte .LASF3496 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stdlib.h.13.4ed386f5c1a80d71e72172885d946ef2,comdat +.Ldebug_macro53: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xd + .4byte .LASF3205 + .byte 0x5 + .byte 0xe + .4byte .LASF3498 + .byte 0x5 + .byte 0xf + .4byte .LASF3206 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.alloca.h.8.dfc0c703c47ec3e69746825b17d9e66d,comdat +.Ldebug_macro54: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x8 + .4byte .LASF3500 + .byte 0x6 + .byte 0xd + .4byte .LASF3501 + .byte 0x5 + .byte 0x10 + .4byte .LASF3502 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stdlib.h.56.b4ddaf162082f284ba35b4444af99a9a,comdat +.Ldebug_macro55: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x38 + .4byte .LASF3503 + .byte 0x5 + .byte 0x3c + .4byte .LASF3504 + .byte 0x5 + .byte 0x3d + .4byte .LASF3505 + .byte 0x5 + .byte 0x3f + .4byte .LASF3506 + .byte 0x5 + .byte 0x43 + .4byte .LASF3507 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.string.h.8.c4b8571ce60dff2817f43fec8b86aecd,comdat +.Ldebug_macro56: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x8 + .4byte .LASF3508 + .byte 0x5 + .byte 0xf + .4byte .LASF3205 + .byte 0x5 + .byte 0x10 + .4byte .LASF3206 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.unistd.h.22.3ec6b4596b960d9f35140931ce8c2bd0,comdat +.Ldebug_macro57: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x16 + .4byte .LASF3511 + .byte 0x5 + .byte 0x17 + .4byte .LASF3512 + .byte 0x5 + .byte 0x18 + .4byte .LASF3513 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.riscv_encoding.h.4.141a3f782f9378c77348fd1925237eaf,comdat +.Ldebug_macro58: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4 + .4byte .LASF3514 + .byte 0x5 + .byte 0x6 + .4byte .LASF3515 + .byte 0x5 + .byte 0x7 + .4byte .LASF3516 + .byte 0x5 + .byte 0x8 + .4byte .LASF3517 + .byte 0x5 + .byte 0x9 + .4byte .LASF3518 + .byte 0x5 + .byte 0xa + .4byte .LASF3519 + .byte 0x5 + .byte 0xb + .4byte .LASF3520 + .byte 0x5 + .byte 0xc + .4byte .LASF3521 + .byte 0x5 + .byte 0xd + .4byte .LASF3522 + .byte 0x5 + .byte 0xe + .4byte .LASF3523 + .byte 0x5 + .byte 0xf + .4byte .LASF3524 + .byte 0x5 + .byte 0x10 + .4byte .LASF3525 + .byte 0x5 + .byte 0x11 + .4byte .LASF3526 + .byte 0x5 + .byte 0x12 + .4byte .LASF3527 + .byte 0x5 + .byte 0x13 + .4byte .LASF3528 + .byte 0x5 + .byte 0x14 + .4byte .LASF3529 + .byte 0x5 + .byte 0x15 + .4byte .LASF3530 + .byte 0x5 + .byte 0x16 + .4byte .LASF3531 + .byte 0x5 + .byte 0x17 + .4byte .LASF3532 + .byte 0x5 + .byte 0x1a + .4byte .LASF3533 + .byte 0x5 + .byte 0x1b + .4byte .LASF3534 + .byte 0x5 + .byte 0x1c + .4byte .LASF3535 + .byte 0x5 + .byte 0x1d + .4byte .LASF3536 + .byte 0x5 + .byte 0x1e + .4byte .LASF3537 + .byte 0x5 + .byte 0x1f + .4byte .LASF3538 + .byte 0x5 + .byte 0x20 + .4byte .LASF3539 + .byte 0x5 + .byte 0x21 + .4byte .LASF3540 + .byte 0x5 + .byte 0x22 + .4byte .LASF3541 + .byte 0x5 + .byte 0x23 + .4byte .LASF3542 + .byte 0x5 + .byte 0x25 + .4byte .LASF3543 + .byte 0x5 + .byte 0x26 + .4byte .LASF3544 + .byte 0x5 + .byte 0x27 + .4byte .LASF3545 + .byte 0x5 + .byte 0x28 + .4byte .LASF3546 + .byte 0x5 + .byte 0x29 + .4byte .LASF3547 + .byte 0x5 + .byte 0x2a + .4byte .LASF3548 + .byte 0x5 + .byte 0x2b + .4byte .LASF3549 + .byte 0x5 + .byte 0x2c + .4byte .LASF3550 + .byte 0x5 + .byte 0x2d + .4byte .LASF3551 + .byte 0x5 + .byte 0x2e + .4byte .LASF3552 + .byte 0x5 + .byte 0x2f + .4byte .LASF3553 + .byte 0x5 + .byte 0x30 + .4byte .LASF3554 + .byte 0x5 + .byte 0x31 + .4byte .LASF3555 + .byte 0x5 + .byte 0x32 + .4byte .LASF3556 + .byte 0x5 + .byte 0x34 + .4byte .LASF3557 + .byte 0x5 + .byte 0x35 + .4byte .LASF3558 + .byte 0x5 + .byte 0x36 + .4byte .LASF3559 + .byte 0x5 + .byte 0x37 + .4byte .LASF3560 + .byte 0x5 + .byte 0x38 + .4byte .LASF3561 + .byte 0x5 + .byte 0x39 + .4byte .LASF3562 + .byte 0x5 + .byte 0x3b + .4byte .LASF3563 + .byte 0x5 + .byte 0x3c + .4byte .LASF3564 + .byte 0x5 + .byte 0x3d + .4byte .LASF3565 + .byte 0x5 + .byte 0x3f + .4byte .LASF3566 + .byte 0x5 + .byte 0x40 + .4byte .LASF3567 + .byte 0x5 + .byte 0x41 + .4byte .LASF3568 + .byte 0x5 + .byte 0x42 + .4byte .LASF3569 + .byte 0x5 + .byte 0x43 + .4byte .LASF3570 + .byte 0x5 + .byte 0x44 + .4byte .LASF3571 + .byte 0x5 + .byte 0x45 + .4byte .LASF3572 + .byte 0x5 + .byte 0x46 + .4byte .LASF3573 + .byte 0x5 + .byte 0x47 + .4byte .LASF3574 + .byte 0x5 + .byte 0x48 + .4byte .LASF3575 + .byte 0x5 + .byte 0x49 + .4byte .LASF3576 + .byte 0x5 + .byte 0x4a + .4byte .LASF3577 + .byte 0x5 + .byte 0x4c + .4byte .LASF3578 + .byte 0x5 + .byte 0x4d + .4byte .LASF3579 + .byte 0x5 + .byte 0x4f + .4byte .LASF3580 + .byte 0x5 + .byte 0x50 + .4byte .LASF3581 + .byte 0x5 + .byte 0x51 + .4byte .LASF3582 + .byte 0x5 + .byte 0x52 + .4byte .LASF3583 + .byte 0x5 + .byte 0x53 + .4byte .LASF3584 + .byte 0x5 + .byte 0x55 + .4byte .LASF3585 + .byte 0x5 + .byte 0x56 + .4byte .LASF3586 + .byte 0x5 + .byte 0x57 + .4byte .LASF3587 + .byte 0x5 + .byte 0x58 + .4byte .LASF3588 + .byte 0x5 + .byte 0x59 + .4byte .LASF3589 + .byte 0x5 + .byte 0x5a + .4byte .LASF3590 + .byte 0x5 + .byte 0x5c + .4byte .LASF3591 + .byte 0x5 + .byte 0x5d + .4byte .LASF3592 + .byte 0x5 + .byte 0x5e + .4byte .LASF3593 + .byte 0x5 + .byte 0x5f + .4byte .LASF3594 + .byte 0x5 + .byte 0x60 + .4byte .LASF3595 + .byte 0x5 + .byte 0x61 + .4byte .LASF3596 + .byte 0x5 + .byte 0x62 + .4byte .LASF3597 + .byte 0x5 + .byte 0x63 + .4byte .LASF3598 + .byte 0x5 + .byte 0x64 + .4byte .LASF3599 + .byte 0x5 + .byte 0x66 + .4byte .LASF3600 + .byte 0x5 + .byte 0x67 + .4byte .LASF3601 + .byte 0x5 + .byte 0x68 + .4byte .LASF3602 + .byte 0x5 + .byte 0x69 + .4byte .LASF3603 + .byte 0x5 + .byte 0x6a + .4byte .LASF3604 + .byte 0x5 + .byte 0x6b + .4byte .LASF3605 + .byte 0x5 + .byte 0x6c + .4byte .LASF3606 + .byte 0x5 + .byte 0x6d + .4byte .LASF3607 + .byte 0x5 + .byte 0x6e + .4byte .LASF3608 + .byte 0x5 + .byte 0x70 + .4byte .LASF3609 + .byte 0x5 + .byte 0x71 + .4byte .LASF3610 + .byte 0x5 + .byte 0x73 + .4byte .LASF3611 + .byte 0x5 + .byte 0x74 + .4byte .LASF3612 + .byte 0x5 + .byte 0x75 + .4byte .LASF3613 + .byte 0x5 + .byte 0x76 + .4byte .LASF3614 + .byte 0x5 + .byte 0x78 + .4byte .LASF3615 + .byte 0x5 + .byte 0x79 + .4byte .LASF3616 + .byte 0x5 + .byte 0x7a + .4byte .LASF3617 + .byte 0x5 + .byte 0x7b + .4byte .LASF3618 + .byte 0x5 + .byte 0x7c + .4byte .LASF3619 + .byte 0x5 + .byte 0x7d + .4byte .LASF3620 + .byte 0x5 + .byte 0x7f + .4byte .LASF3621 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF3622 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF3623 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF3624 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF3625 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF3626 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF3627 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF3628 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF3629 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF3630 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF3631 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF3632 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF3633 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF3634 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF3635 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF3636 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF3637 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF3638 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF3639 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF3640 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF3641 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF3642 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF3643 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF3644 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF3645 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF3646 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF3647 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF3648 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF3649 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF3650 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF3651 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF3652 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF3653 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF3654 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF3655 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF3656 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF3657 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF3658 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF3659 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF3660 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF3661 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF3662 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF3663 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF3664 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF3665 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF3666 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF3667 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF3668 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF3669 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF3670 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF3671 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF3672 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF3673 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF3674 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF3675 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF3676 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF3677 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF3678 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF3679 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF3680 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF3681 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF3682 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF3683 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF3684 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF3685 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF3686 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF3687 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF3688 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF3689 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF3690 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF3691 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF3692 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF3693 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF3694 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF3695 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF3696 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF3697 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF3698 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF3699 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF3700 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF3701 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF3702 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF3703 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF3704 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF3705 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF3706 + .byte 0x5 + .byte 0x94,0x2 + .4byte .LASF3707 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF3708 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF3709 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF3710 + .byte 0x5 + .byte 0x98,0x2 + .4byte .LASF3711 + .byte 0x5 + .byte 0x99,0x2 + .4byte .LASF3712 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF3713 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF3714 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF3715 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF3716 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF3717 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF3718 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF3719 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF3720 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF3721 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF3722 + .byte 0x5 + .byte 0xa4,0x2 + .4byte .LASF3723 + .byte 0x5 + .byte 0xa5,0x2 + .4byte .LASF3724 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF3725 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF3726 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF3727 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF3728 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF3729 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF3730 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF3731 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF3732 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF3733 + .byte 0x5 + .byte 0xaf,0x2 + .4byte .LASF3734 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF3735 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF3736 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF3737 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF3738 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF3739 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF3740 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF3741 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF3742 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF3743 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF3744 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF3745 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF3746 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF3747 + .byte 0x5 + .byte 0xbd,0x2 + .4byte .LASF3748 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF3749 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF3750 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF3751 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF3752 + .byte 0x5 + .byte 0xc2,0x2 + .4byte .LASF3753 + .byte 0x5 + .byte 0xc3,0x2 + .4byte .LASF3754 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF3755 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF3756 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF3757 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF3758 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF3759 + .byte 0x5 + .byte 0xc9,0x2 + .4byte .LASF3760 + .byte 0x5 + .byte 0xca,0x2 + .4byte .LASF3761 + .byte 0x5 + .byte 0xcb,0x2 + .4byte .LASF3762 + .byte 0x5 + .byte 0xcc,0x2 + .4byte .LASF3763 + .byte 0x5 + .byte 0xcd,0x2 + .4byte .LASF3764 + .byte 0x5 + .byte 0xce,0x2 + .4byte .LASF3765 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF3766 + .byte 0x5 + .byte 0xd0,0x2 + .4byte .LASF3767 + .byte 0x5 + .byte 0xd1,0x2 + .4byte .LASF3768 + .byte 0x5 + .byte 0xd2,0x2 + .4byte .LASF3769 + .byte 0x5 + .byte 0xd3,0x2 + .4byte .LASF3770 + .byte 0x5 + .byte 0xd4,0x2 + .4byte .LASF3771 + .byte 0x5 + .byte 0xd5,0x2 + .4byte .LASF3772 + .byte 0x5 + .byte 0xd6,0x2 + .4byte .LASF3773 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF3774 + .byte 0x5 + .byte 0xd8,0x2 + .4byte .LASF3775 + .byte 0x5 + .byte 0xd9,0x2 + .4byte .LASF3776 + .byte 0x5 + .byte 0xda,0x2 + .4byte .LASF3777 + .byte 0x5 + .byte 0xdb,0x2 + .4byte .LASF3778 + .byte 0x5 + .byte 0xdc,0x2 + .4byte .LASF3779 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF3780 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF3781 + .byte 0x5 + .byte 0xdf,0x2 + .4byte .LASF3782 + .byte 0x5 + .byte 0xe0,0x2 + .4byte .LASF3783 + .byte 0x5 + .byte 0xe1,0x2 + .4byte .LASF3784 + .byte 0x5 + .byte 0xe2,0x2 + .4byte .LASF3785 + .byte 0x5 + .byte 0xe3,0x2 + .4byte .LASF3786 + .byte 0x5 + .byte 0xe4,0x2 + .4byte .LASF3787 + .byte 0x5 + .byte 0xe5,0x2 + .4byte .LASF3788 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF3789 + .byte 0x5 + .byte 0xe7,0x2 + .4byte .LASF3790 + .byte 0x5 + .byte 0xe8,0x2 + .4byte .LASF3791 + .byte 0x5 + .byte 0xe9,0x2 + .4byte .LASF3792 + .byte 0x5 + .byte 0xea,0x2 + .4byte .LASF3793 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF3794 + .byte 0x5 + .byte 0xec,0x2 + .4byte .LASF3795 + .byte 0x5 + .byte 0xed,0x2 + .4byte .LASF3796 + .byte 0x5 + .byte 0xee,0x2 + .4byte .LASF3797 + .byte 0x5 + .byte 0xef,0x2 + .4byte .LASF3798 + .byte 0x5 + .byte 0xf0,0x2 + .4byte .LASF3799 + .byte 0x5 + .byte 0xf1,0x2 + .4byte .LASF3800 + .byte 0x5 + .byte 0xf2,0x2 + .4byte .LASF3801 + .byte 0x5 + .byte 0xf3,0x2 + .4byte .LASF3802 + .byte 0x5 + .byte 0xf4,0x2 + .4byte .LASF3803 + .byte 0x5 + .byte 0xf5,0x2 + .4byte .LASF3804 + .byte 0x5 + .byte 0xf6,0x2 + .4byte .LASF3805 + .byte 0x5 + .byte 0xf7,0x2 + .4byte .LASF3806 + .byte 0x5 + .byte 0xf8,0x2 + .4byte .LASF3807 + .byte 0x5 + .byte 0xf9,0x2 + .4byte .LASF3808 + .byte 0x5 + .byte 0xfa,0x2 + .4byte .LASF3809 + .byte 0x5 + .byte 0xfb,0x2 + .4byte .LASF3810 + .byte 0x5 + .byte 0xfc,0x2 + .4byte .LASF3811 + .byte 0x5 + .byte 0xfd,0x2 + .4byte .LASF3812 + .byte 0x5 + .byte 0xfe,0x2 + .4byte .LASF3813 + .byte 0x5 + .byte 0xff,0x2 + .4byte .LASF3814 + .byte 0x5 + .byte 0x80,0x3 + .4byte .LASF3815 + .byte 0x5 + .byte 0x81,0x3 + .4byte .LASF3816 + .byte 0x5 + .byte 0x82,0x3 + .4byte .LASF3817 + .byte 0x5 + .byte 0x83,0x3 + .4byte .LASF3818 + .byte 0x5 + .byte 0x84,0x3 + .4byte .LASF3819 + .byte 0x5 + .byte 0x85,0x3 + .4byte .LASF3820 + .byte 0x5 + .byte 0x86,0x3 + .4byte .LASF3821 + .byte 0x5 + .byte 0x87,0x3 + .4byte .LASF3822 + .byte 0x5 + .byte 0x88,0x3 + .4byte .LASF3823 + .byte 0x5 + .byte 0x89,0x3 + .4byte .LASF3824 + .byte 0x5 + .byte 0x8a,0x3 + .4byte .LASF3825 + .byte 0x5 + .byte 0x8b,0x3 + .4byte .LASF3826 + .byte 0x5 + .byte 0x8c,0x3 + .4byte .LASF3827 + .byte 0x5 + .byte 0x8d,0x3 + .4byte .LASF3828 + .byte 0x5 + .byte 0x8e,0x3 + .4byte .LASF3829 + .byte 0x5 + .byte 0x8f,0x3 + .4byte .LASF3830 + .byte 0x5 + .byte 0x90,0x3 + .4byte .LASF3831 + .byte 0x5 + .byte 0x91,0x3 + .4byte .LASF3832 + .byte 0x5 + .byte 0x92,0x3 + .4byte .LASF3833 + .byte 0x5 + .byte 0x93,0x3 + .4byte .LASF3834 + .byte 0x5 + .byte 0x94,0x3 + .4byte .LASF3835 + .byte 0x5 + .byte 0x95,0x3 + .4byte .LASF3836 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF3837 + .byte 0x5 + .byte 0x97,0x3 + .4byte .LASF3838 + .byte 0x5 + .byte 0x98,0x3 + .4byte .LASF3839 + .byte 0x5 + .byte 0x99,0x3 + .4byte .LASF3840 + .byte 0x5 + .byte 0x9a,0x3 + .4byte .LASF3841 + .byte 0x5 + .byte 0x9b,0x3 + .4byte .LASF3842 + .byte 0x5 + .byte 0x9c,0x3 + .4byte .LASF3843 + .byte 0x5 + .byte 0x9d,0x3 + .4byte .LASF3844 + .byte 0x5 + .byte 0x9e,0x3 + .4byte .LASF3845 + .byte 0x5 + .byte 0x9f,0x3 + .4byte .LASF3846 + .byte 0x5 + .byte 0xa0,0x3 + .4byte .LASF3847 + .byte 0x5 + .byte 0xa1,0x3 + .4byte .LASF3848 + .byte 0x5 + .byte 0xa2,0x3 + .4byte .LASF3849 + .byte 0x5 + .byte 0xa3,0x3 + .4byte .LASF3850 + .byte 0x5 + .byte 0xa4,0x3 + .4byte .LASF3851 + .byte 0x5 + .byte 0xa5,0x3 + .4byte .LASF3852 + .byte 0x5 + .byte 0xa6,0x3 + .4byte .LASF3853 + .byte 0x5 + .byte 0xa7,0x3 + .4byte .LASF3854 + .byte 0x5 + .byte 0xa8,0x3 + .4byte .LASF3855 + .byte 0x5 + .byte 0xa9,0x3 + .4byte .LASF3856 + .byte 0x5 + .byte 0xaa,0x3 + .4byte .LASF3857 + .byte 0x5 + .byte 0xab,0x3 + .4byte .LASF3858 + .byte 0x5 + .byte 0xac,0x3 + .4byte .LASF3859 + .byte 0x5 + .byte 0xad,0x3 + .4byte .LASF3860 + .byte 0x5 + .byte 0xae,0x3 + .4byte .LASF3861 + .byte 0x5 + .byte 0xaf,0x3 + .4byte .LASF3862 + .byte 0x5 + .byte 0xb0,0x3 + .4byte .LASF3863 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF3864 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF3865 + .byte 0x5 + .byte 0xb3,0x3 + .4byte .LASF3866 + .byte 0x5 + .byte 0xb4,0x3 + .4byte .LASF3867 + .byte 0x5 + .byte 0xb5,0x3 + .4byte .LASF3868 + .byte 0x5 + .byte 0xb6,0x3 + .4byte .LASF3869 + .byte 0x5 + .byte 0xb7,0x3 + .4byte .LASF3870 + .byte 0x5 + .byte 0xb8,0x3 + .4byte .LASF3871 + .byte 0x5 + .byte 0xb9,0x3 + .4byte .LASF3872 + .byte 0x5 + .byte 0xba,0x3 + .4byte .LASF3873 + .byte 0x5 + .byte 0xbb,0x3 + .4byte .LASF3874 + .byte 0x5 + .byte 0xbc,0x3 + .4byte .LASF3875 + .byte 0x5 + .byte 0xbd,0x3 + .4byte .LASF3876 + .byte 0x5 + .byte 0xbe,0x3 + .4byte .LASF3877 + .byte 0x5 + .byte 0xbf,0x3 + .4byte .LASF3878 + .byte 0x5 + .byte 0xc0,0x3 + .4byte .LASF3879 + .byte 0x5 + .byte 0xc1,0x3 + .4byte .LASF3880 + .byte 0x5 + .byte 0xc2,0x3 + .4byte .LASF3881 + .byte 0x5 + .byte 0xc3,0x3 + .4byte .LASF3882 + .byte 0x5 + .byte 0xc4,0x3 + .4byte .LASF3883 + .byte 0x5 + .byte 0xc5,0x3 + .4byte .LASF3884 + .byte 0x5 + .byte 0xc6,0x3 + .4byte .LASF3885 + .byte 0x5 + .byte 0xc7,0x3 + .4byte .LASF3886 + .byte 0x5 + .byte 0xc8,0x3 + .4byte .LASF3887 + .byte 0x5 + .byte 0xc9,0x3 + .4byte .LASF3888 + .byte 0x5 + .byte 0xca,0x3 + .4byte .LASF3889 + .byte 0x5 + .byte 0xcb,0x3 + .4byte .LASF3890 + .byte 0x5 + .byte 0xcc,0x3 + .4byte .LASF3891 + .byte 0x5 + .byte 0xcd,0x3 + .4byte .LASF3892 + .byte 0x5 + .byte 0xce,0x3 + .4byte .LASF3893 + .byte 0x5 + .byte 0xcf,0x3 + .4byte .LASF3894 + .byte 0x5 + .byte 0xd0,0x3 + .4byte .LASF3895 + .byte 0x5 + .byte 0xd1,0x3 + .4byte .LASF3896 + .byte 0x5 + .byte 0xd2,0x3 + .4byte .LASF3897 + .byte 0x5 + .byte 0xd3,0x3 + .4byte .LASF3898 + .byte 0x5 + .byte 0xd4,0x3 + .4byte .LASF3899 + .byte 0x5 + .byte 0xd5,0x3 + .4byte .LASF3900 + .byte 0x5 + .byte 0xd6,0x3 + .4byte .LASF3901 + .byte 0x5 + .byte 0xd7,0x3 + .4byte .LASF3902 + .byte 0x5 + .byte 0xd8,0x3 + .4byte .LASF3903 + .byte 0x5 + .byte 0xd9,0x3 + .4byte .LASF3904 + .byte 0x5 + .byte 0xda,0x3 + .4byte .LASF3905 + .byte 0x5 + .byte 0xdb,0x3 + .4byte .LASF3906 + .byte 0x5 + .byte 0xdc,0x3 + .4byte .LASF3907 + .byte 0x5 + .byte 0xdd,0x3 + .4byte .LASF3908 + .byte 0x5 + .byte 0xde,0x3 + .4byte .LASF3909 + .byte 0x5 + .byte 0xdf,0x3 + .4byte .LASF3910 + .byte 0x5 + .byte 0xe0,0x3 + .4byte .LASF3911 + .byte 0x5 + .byte 0xe1,0x3 + .4byte .LASF3912 + .byte 0x5 + .byte 0xe2,0x3 + .4byte .LASF3913 + .byte 0x5 + .byte 0xe3,0x3 + .4byte .LASF3914 + .byte 0x5 + .byte 0xe4,0x3 + .4byte .LASF3915 + .byte 0x5 + .byte 0xe5,0x3 + .4byte .LASF3916 + .byte 0x5 + .byte 0xe6,0x3 + .4byte .LASF3917 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF3918 + .byte 0x5 + .byte 0xe8,0x3 + .4byte .LASF3919 + .byte 0x5 + .byte 0xe9,0x3 + .4byte .LASF3920 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF3921 + .byte 0x5 + .byte 0xeb,0x3 + .4byte .LASF3922 + .byte 0x5 + .byte 0xec,0x3 + .4byte .LASF3923 + .byte 0x5 + .byte 0xed,0x3 + .4byte .LASF3924 + .byte 0x5 + .byte 0xee,0x3 + .4byte .LASF3925 + .byte 0x5 + .byte 0xef,0x3 + .4byte .LASF3926 + .byte 0x5 + .byte 0xf0,0x3 + .4byte .LASF3927 + .byte 0x5 + .byte 0xf1,0x3 + .4byte .LASF3928 + .byte 0x5 + .byte 0xf2,0x3 + .4byte .LASF3929 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF3930 + .byte 0x5 + .byte 0xf4,0x3 + .4byte .LASF3931 + .byte 0x5 + .byte 0xf5,0x3 + .4byte .LASF3932 + .byte 0x5 + .byte 0xf6,0x3 + .4byte .LASF3933 + .byte 0x5 + .byte 0xf7,0x3 + .4byte .LASF3934 + .byte 0x5 + .byte 0xf8,0x3 + .4byte .LASF3935 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF3936 + .byte 0x5 + .byte 0xfa,0x3 + .4byte .LASF3937 + .byte 0x5 + .byte 0xfb,0x3 + .4byte .LASF3938 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF3939 + .byte 0x5 + .byte 0xfd,0x3 + .4byte .LASF3940 + .byte 0x5 + .byte 0xfe,0x3 + .4byte .LASF3941 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF3942 + .byte 0x5 + .byte 0x80,0x4 + .4byte .LASF3943 + .byte 0x5 + .byte 0x81,0x4 + .4byte .LASF3944 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF3945 + .byte 0x5 + .byte 0x83,0x4 + .4byte .LASF3946 + .byte 0x5 + .byte 0x84,0x4 + .4byte .LASF3947 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF3948 + .byte 0x5 + .byte 0x86,0x4 + .4byte .LASF3949 + .byte 0x5 + .byte 0x87,0x4 + .4byte .LASF3950 + .byte 0x5 + .byte 0x88,0x4 + .4byte .LASF3951 + .byte 0x5 + .byte 0x89,0x4 + .4byte .LASF3952 + .byte 0x5 + .byte 0x8a,0x4 + .4byte .LASF3953 + .byte 0x5 + .byte 0x8b,0x4 + .4byte .LASF3954 + .byte 0x5 + .byte 0x8c,0x4 + .4byte .LASF3955 + .byte 0x5 + .byte 0x8d,0x4 + .4byte .LASF3956 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF3957 + .byte 0x5 + .byte 0x8f,0x4 + .4byte .LASF3958 + .byte 0x5 + .byte 0x90,0x4 + .4byte .LASF3959 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF3960 + .byte 0x5 + .byte 0x92,0x4 + .4byte .LASF3961 + .byte 0x5 + .byte 0x93,0x4 + .4byte .LASF3962 + .byte 0x5 + .byte 0x94,0x4 + .4byte .LASF3963 + .byte 0x5 + .byte 0x95,0x4 + .4byte .LASF3964 + .byte 0x5 + .byte 0x96,0x4 + .4byte .LASF3965 + .byte 0x5 + .byte 0x97,0x4 + .4byte .LASF3966 + .byte 0x5 + .byte 0x98,0x4 + .4byte .LASF3967 + .byte 0x5 + .byte 0x99,0x4 + .4byte .LASF3968 + .byte 0x5 + .byte 0x9a,0x4 + .4byte .LASF3969 + .byte 0x5 + .byte 0x9b,0x4 + .4byte .LASF3970 + .byte 0x5 + .byte 0x9c,0x4 + .4byte .LASF3971 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF3972 + .byte 0x5 + .byte 0x9e,0x4 + .4byte .LASF3973 + .byte 0x5 + .byte 0x9f,0x4 + .4byte .LASF3974 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF3975 + .byte 0x5 + .byte 0xa1,0x4 + .4byte .LASF3976 + .byte 0x5 + .byte 0xa2,0x4 + .4byte .LASF3977 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF3978 + .byte 0x5 + .byte 0xa4,0x4 + .4byte .LASF3979 + .byte 0x5 + .byte 0xa5,0x4 + .4byte .LASF3980 + .byte 0x5 + .byte 0xa6,0x4 + .4byte .LASF3981 + .byte 0x5 + .byte 0xa7,0x4 + .4byte .LASF3982 + .byte 0x5 + .byte 0xa8,0x4 + .4byte .LASF3983 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF3984 + .byte 0x5 + .byte 0xaa,0x4 + .4byte .LASF3985 + .byte 0x5 + .byte 0xab,0x4 + .4byte .LASF3986 + .byte 0x5 + .byte 0xac,0x4 + .4byte .LASF3987 + .byte 0x5 + .byte 0xad,0x4 + .4byte .LASF3988 + .byte 0x5 + .byte 0xae,0x4 + .4byte .LASF3989 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF3990 + .byte 0x5 + .byte 0xb0,0x4 + .4byte .LASF3991 + .byte 0x5 + .byte 0xb1,0x4 + .4byte .LASF3992 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF3993 + .byte 0x5 + .byte 0xb3,0x4 + .4byte .LASF3994 + .byte 0x5 + .byte 0xb4,0x4 + .4byte .LASF3995 + .byte 0x5 + .byte 0xb5,0x4 + .4byte .LASF3996 + .byte 0x5 + .byte 0xb6,0x4 + .4byte .LASF3997 + .byte 0x5 + .byte 0xb7,0x4 + .4byte .LASF3998 + .byte 0x5 + .byte 0xb8,0x4 + .4byte .LASF3999 + .byte 0x5 + .byte 0xb9,0x4 + .4byte .LASF4000 + .byte 0x5 + .byte 0xba,0x4 + .4byte .LASF4001 + .byte 0x5 + .byte 0xbb,0x4 + .4byte .LASF4002 + .byte 0x5 + .byte 0xbc,0x4 + .4byte .LASF4003 + .byte 0x5 + .byte 0xbd,0x4 + .4byte .LASF4004 + .byte 0x5 + .byte 0xbe,0x4 + .4byte .LASF4005 + .byte 0x5 + .byte 0xbf,0x4 + .4byte .LASF4006 + .byte 0x5 + .byte 0xc0,0x4 + .4byte .LASF4007 + .byte 0x5 + .byte 0xc1,0x4 + .4byte .LASF4008 + .byte 0x5 + .byte 0xc2,0x4 + .4byte .LASF4009 + .byte 0x5 + .byte 0xc3,0x4 + .4byte .LASF4010 + .byte 0x5 + .byte 0xc4,0x4 + .4byte .LASF4011 + .byte 0x5 + .byte 0xc5,0x4 + .4byte .LASF4012 + .byte 0x5 + .byte 0xc6,0x4 + .4byte .LASF4013 + .byte 0x5 + .byte 0xc7,0x4 + .4byte .LASF4014 + .byte 0x5 + .byte 0xc8,0x4 + .4byte .LASF4015 + .byte 0x5 + .byte 0xc9,0x4 + .4byte .LASF4016 + .byte 0x5 + .byte 0xca,0x4 + .4byte .LASF4017 + .byte 0x5 + .byte 0xcb,0x4 + .4byte .LASF4018 + .byte 0x5 + .byte 0xcc,0x4 + .4byte .LASF4019 + .byte 0x5 + .byte 0xcd,0x4 + .4byte .LASF4020 + .byte 0x5 + .byte 0xce,0x4 + .4byte .LASF4021 + .byte 0x5 + .byte 0xcf,0x4 + .4byte .LASF4022 + .byte 0x5 + .byte 0xd0,0x4 + .4byte .LASF4023 + .byte 0x5 + .byte 0xd1,0x4 + .4byte .LASF4024 + .byte 0x5 + .byte 0xd2,0x4 + .4byte .LASF4025 + .byte 0x5 + .byte 0xd3,0x4 + .4byte .LASF4026 + .byte 0x5 + .byte 0xd4,0x4 + .4byte .LASF4027 + .byte 0x5 + .byte 0xd5,0x4 + .4byte .LASF4028 + .byte 0x5 + .byte 0xd6,0x4 + .4byte .LASF4029 + .byte 0x5 + .byte 0xd7,0x4 + .4byte .LASF4030 + .byte 0x5 + .byte 0xd8,0x4 + .4byte .LASF4031 + .byte 0x5 + .byte 0xd9,0x4 + .4byte .LASF4032 + .byte 0x5 + .byte 0xda,0x4 + .4byte .LASF4033 + .byte 0x5 + .byte 0xdb,0x4 + .4byte .LASF4034 + .byte 0x5 + .byte 0xdc,0x4 + .4byte .LASF4035 + .byte 0x5 + .byte 0xdd,0x4 + .4byte .LASF4036 + .byte 0x5 + .byte 0xde,0x4 + .4byte .LASF4037 + .byte 0x5 + .byte 0xdf,0x4 + .4byte .LASF4038 + .byte 0x5 + .byte 0xe0,0x4 + .4byte .LASF4039 + .byte 0x5 + .byte 0xe1,0x4 + .4byte .LASF4040 + .byte 0x5 + .byte 0xe2,0x4 + .4byte .LASF4041 + .byte 0x5 + .byte 0xe3,0x4 + .4byte .LASF4042 + .byte 0x5 + .byte 0xe4,0x4 + .4byte .LASF4043 + .byte 0x5 + .byte 0xe5,0x4 + .4byte .LASF4044 + .byte 0x5 + .byte 0xe6,0x4 + .4byte .LASF4045 + .byte 0x5 + .byte 0xe7,0x4 + .4byte .LASF4046 + .byte 0x5 + .byte 0xe8,0x4 + .4byte .LASF4047 + .byte 0x5 + .byte 0xe9,0x4 + .4byte .LASF4048 + .byte 0x5 + .byte 0xea,0x4 + .4byte .LASF4049 + .byte 0x5 + .byte 0xeb,0x4 + .4byte .LASF4050 + .byte 0x5 + .byte 0xec,0x4 + .4byte .LASF4051 + .byte 0x5 + .byte 0xed,0x4 + .4byte .LASF4052 + .byte 0x5 + .byte 0xee,0x4 + .4byte .LASF4053 + .byte 0x5 + .byte 0xef,0x4 + .4byte .LASF4054 + .byte 0x5 + .byte 0xf0,0x4 + .4byte .LASF4055 + .byte 0x5 + .byte 0xf1,0x4 + .4byte .LASF4056 + .byte 0x5 + .byte 0xf2,0x4 + .4byte .LASF4057 + .byte 0x5 + .byte 0xf3,0x4 + .4byte .LASF4058 + .byte 0x5 + .byte 0xf4,0x4 + .4byte .LASF4059 + .byte 0x5 + .byte 0xf5,0x4 + .4byte .LASF4060 + .byte 0x5 + .byte 0xf6,0x4 + .4byte .LASF4061 + .byte 0x5 + .byte 0xf7,0x4 + .4byte .LASF4062 + .byte 0x5 + .byte 0xf8,0x4 + .4byte .LASF4063 + .byte 0x5 + .byte 0xf9,0x4 + .4byte .LASF4064 + .byte 0x5 + .byte 0xfa,0x4 + .4byte .LASF4065 + .byte 0x5 + .byte 0xfb,0x4 + .4byte .LASF4066 + .byte 0x5 + .byte 0xfc,0x4 + .4byte .LASF4067 + .byte 0x5 + .byte 0xfd,0x4 + .4byte .LASF4068 + .byte 0x5 + .byte 0xfe,0x4 + .4byte .LASF4069 + .byte 0x5 + .byte 0xff,0x4 + .4byte .LASF4070 + .byte 0x5 + .byte 0x80,0x5 + .4byte .LASF4071 + .byte 0x5 + .byte 0x81,0x5 + .4byte .LASF4072 + .byte 0x5 + .byte 0x82,0x5 + .4byte .LASF4073 + .byte 0x5 + .byte 0x83,0x5 + .4byte .LASF4074 + .byte 0x5 + .byte 0x84,0x5 + .4byte .LASF4075 + .byte 0x5 + .byte 0x85,0x5 + .4byte .LASF4076 + .byte 0x5 + .byte 0x86,0x5 + .4byte .LASF4077 + .byte 0x5 + .byte 0x87,0x5 + .4byte .LASF4078 + .byte 0x5 + .byte 0x88,0x5 + .4byte .LASF4079 + .byte 0x5 + .byte 0x89,0x5 + .4byte .LASF4080 + .byte 0x5 + .byte 0x8a,0x5 + .4byte .LASF4081 + .byte 0x5 + .byte 0x8b,0x5 + .4byte .LASF4082 + .byte 0x5 + .byte 0x8c,0x5 + .4byte .LASF4083 + .byte 0x5 + .byte 0x8d,0x5 + .4byte .LASF4084 + .byte 0x5 + .byte 0x8e,0x5 + .4byte .LASF4085 + .byte 0x5 + .byte 0x8f,0x5 + .4byte .LASF4086 + .byte 0x5 + .byte 0x90,0x5 + .4byte .LASF4087 + .byte 0x5 + .byte 0x91,0x5 + .4byte .LASF4088 + .byte 0x5 + .byte 0x92,0x5 + .4byte .LASF4089 + .byte 0x5 + .byte 0x93,0x5 + .4byte .LASF4090 + .byte 0x5 + .byte 0x94,0x5 + .4byte .LASF4091 + .byte 0x5 + .byte 0x95,0x5 + .4byte .LASF4092 + .byte 0x5 + .byte 0x96,0x5 + .4byte .LASF4093 + .byte 0x5 + .byte 0x97,0x5 + .4byte .LASF4094 + .byte 0x5 + .byte 0x98,0x5 + .4byte .LASF4095 + .byte 0x5 + .byte 0x99,0x5 + .4byte .LASF4096 + .byte 0x5 + .byte 0x9a,0x5 + .4byte .LASF4097 + .byte 0x5 + .byte 0x9b,0x5 + .4byte .LASF4098 + .byte 0x5 + .byte 0x9c,0x5 + .4byte .LASF4099 + .byte 0x5 + .byte 0x9d,0x5 + .4byte .LASF4100 + .byte 0x5 + .byte 0x9e,0x5 + .4byte .LASF4101 + .byte 0x5 + .byte 0x9f,0x5 + .4byte .LASF4102 + .byte 0x5 + .byte 0xa0,0x5 + .4byte .LASF4103 + .byte 0x5 + .byte 0xa1,0x5 + .4byte .LASF4104 + .byte 0x5 + .byte 0xa2,0x5 + .4byte .LASF4105 + .byte 0x5 + .byte 0xa3,0x5 + .4byte .LASF4106 + .byte 0x5 + .byte 0xa4,0x5 + .4byte .LASF4107 + .byte 0x5 + .byte 0xa5,0x5 + .4byte .LASF4108 + .byte 0x5 + .byte 0xa6,0x5 + .4byte .LASF4109 + .byte 0x5 + .byte 0xa7,0x5 + .4byte .LASF4110 + .byte 0x5 + .byte 0xa8,0x5 + .4byte .LASF4111 + .byte 0x5 + .byte 0xa9,0x5 + .4byte .LASF4112 + .byte 0x5 + .byte 0xaa,0x5 + .4byte .LASF4113 + .byte 0x5 + .byte 0xab,0x5 + .4byte .LASF4114 + .byte 0x5 + .byte 0xac,0x5 + .4byte .LASF4115 + .byte 0x5 + .byte 0xad,0x5 + .4byte .LASF4116 + .byte 0x5 + .byte 0xae,0x5 + .4byte .LASF4117 + .byte 0x5 + .byte 0xaf,0x5 + .4byte .LASF4118 + .byte 0x5 + .byte 0xb0,0x5 + .4byte .LASF4119 + .byte 0x5 + .byte 0xb1,0x5 + .4byte .LASF4120 + .byte 0x5 + .byte 0xb2,0x5 + .4byte .LASF4121 + .byte 0x5 + .byte 0xb3,0x5 + .4byte .LASF4122 + .byte 0x5 + .byte 0xb4,0x5 + .4byte .LASF4123 + .byte 0x5 + .byte 0xb5,0x5 + .4byte .LASF4124 + .byte 0x5 + .byte 0xb6,0x5 + .4byte .LASF4125 + .byte 0x5 + .byte 0xb7,0x5 + .4byte .LASF4126 + .byte 0x5 + .byte 0xb8,0x5 + .4byte .LASF4127 + .byte 0x5 + .byte 0xb9,0x5 + .4byte .LASF4128 + .byte 0x5 + .byte 0xba,0x5 + .4byte .LASF4129 + .byte 0x5 + .byte 0xbb,0x5 + .4byte .LASF4130 + .byte 0x5 + .byte 0xbc,0x5 + .4byte .LASF4131 + .byte 0x5 + .byte 0xbd,0x5 + .4byte .LASF4132 + .byte 0x5 + .byte 0xbe,0x5 + .4byte .LASF4133 + .byte 0x5 + .byte 0xbf,0x5 + .4byte .LASF4134 + .byte 0x5 + .byte 0xc0,0x5 + .4byte .LASF4135 + .byte 0x5 + .byte 0xc1,0x5 + .4byte .LASF4136 + .byte 0x5 + .byte 0xc2,0x5 + .4byte .LASF4137 + .byte 0x5 + .byte 0xc3,0x5 + .4byte .LASF4138 + .byte 0x5 + .byte 0xc4,0x5 + .4byte .LASF4139 + .byte 0x5 + .byte 0xc5,0x5 + .4byte .LASF4140 + .byte 0x5 + .byte 0xc6,0x5 + .4byte .LASF4141 + .byte 0x5 + .byte 0xc7,0x5 + .4byte .LASF4142 + .byte 0x5 + .byte 0xc8,0x5 + .4byte .LASF4143 + .byte 0x5 + .byte 0xc9,0x5 + .4byte .LASF4144 + .byte 0x5 + .byte 0xca,0x5 + .4byte .LASF4145 + .byte 0x5 + .byte 0xcb,0x5 + .4byte .LASF4146 + .byte 0x5 + .byte 0xcc,0x5 + .4byte .LASF4147 + .byte 0x5 + .byte 0xcd,0x5 + .4byte .LASF4148 + .byte 0x5 + .byte 0xce,0x5 + .4byte .LASF4149 + .byte 0x5 + .byte 0xcf,0x5 + .4byte .LASF4150 + .byte 0x5 + .byte 0xd0,0x5 + .4byte .LASF4151 + .byte 0x5 + .byte 0xd1,0x5 + .4byte .LASF4152 + .byte 0x5 + .byte 0xd2,0x5 + .4byte .LASF4153 + .byte 0x5 + .byte 0xd3,0x5 + .4byte .LASF4154 + .byte 0x5 + .byte 0xd4,0x5 + .4byte .LASF4155 + .byte 0x5 + .byte 0xd5,0x5 + .4byte .LASF4156 + .byte 0x5 + .byte 0xd6,0x5 + .4byte .LASF4157 + .byte 0x5 + .byte 0xd7,0x5 + .4byte .LASF4158 + .byte 0x5 + .byte 0xd8,0x5 + .4byte .LASF4159 + .byte 0x5 + .byte 0xd9,0x5 + .4byte .LASF4160 + .byte 0x5 + .byte 0xda,0x5 + .4byte .LASF4161 + .byte 0x5 + .byte 0xdb,0x5 + .4byte .LASF4162 + .byte 0x5 + .byte 0xdc,0x5 + .4byte .LASF4163 + .byte 0x5 + .byte 0xdd,0x5 + .4byte .LASF4164 + .byte 0x5 + .byte 0xde,0x5 + .4byte .LASF4165 + .byte 0x5 + .byte 0xdf,0x5 + .4byte .LASF4166 + .byte 0x5 + .byte 0xe0,0x5 + .4byte .LASF4167 + .byte 0x5 + .byte 0xe1,0x5 + .4byte .LASF4168 + .byte 0x5 + .byte 0xe2,0x5 + .4byte .LASF4169 + .byte 0x5 + .byte 0xe3,0x5 + .4byte .LASF4170 + .byte 0x5 + .byte 0xe4,0x5 + .4byte .LASF4171 + .byte 0x5 + .byte 0xe5,0x5 + .4byte .LASF4172 + .byte 0x5 + .byte 0xe6,0x5 + .4byte .LASF4173 + .byte 0x5 + .byte 0xe7,0x5 + .4byte .LASF4174 + .byte 0x5 + .byte 0xe8,0x5 + .4byte .LASF4175 + .byte 0x5 + .byte 0xe9,0x5 + .4byte .LASF4176 + .byte 0x5 + .byte 0xea,0x5 + .4byte .LASF4177 + .byte 0x5 + .byte 0xeb,0x5 + .4byte .LASF4178 + .byte 0x5 + .byte 0xec,0x5 + .4byte .LASF4179 + .byte 0x5 + .byte 0xed,0x5 + .4byte .LASF4180 + .byte 0x5 + .byte 0xee,0x5 + .4byte .LASF4181 + .byte 0x5 + .byte 0xef,0x5 + .4byte .LASF4182 + .byte 0x5 + .byte 0xf0,0x5 + .4byte .LASF4183 + .byte 0x5 + .byte 0xf1,0x5 + .4byte .LASF4184 + .byte 0x5 + .byte 0xf2,0x5 + .4byte .LASF4185 + .byte 0x5 + .byte 0xf3,0x5 + .4byte .LASF4186 + .byte 0x5 + .byte 0xf4,0x5 + .4byte .LASF4187 + .byte 0x5 + .byte 0xf5,0x5 + .4byte .LASF4188 + .byte 0x5 + .byte 0xf6,0x5 + .4byte .LASF4189 + .byte 0x5 + .byte 0xf7,0x5 + .4byte .LASF4190 + .byte 0x5 + .byte 0xf8,0x5 + .4byte .LASF4191 + .byte 0x5 + .byte 0xf9,0x5 + .4byte .LASF4192 + .byte 0x5 + .byte 0xfa,0x5 + .4byte .LASF4193 + .byte 0x5 + .byte 0xfb,0x5 + .4byte .LASF4194 + .byte 0x5 + .byte 0xfc,0x5 + .4byte .LASF4195 + .byte 0x5 + .byte 0xfd,0x5 + .4byte .LASF4196 + .byte 0x5 + .byte 0xfe,0x5 + .4byte .LASF4197 + .byte 0x5 + .byte 0xff,0x5 + .4byte .LASF4198 + .byte 0x5 + .byte 0x80,0x6 + .4byte .LASF4199 + .byte 0x5 + .byte 0x81,0x6 + .4byte .LASF4200 + .byte 0x5 + .byte 0x82,0x6 + .4byte .LASF4201 + .byte 0x5 + .byte 0x83,0x6 + .4byte .LASF4202 + .byte 0x5 + .byte 0x84,0x6 + .4byte .LASF4203 + .byte 0x5 + .byte 0x85,0x6 + .4byte .LASF4204 + .byte 0x5 + .byte 0x86,0x6 + .4byte .LASF4205 + .byte 0x5 + .byte 0x87,0x6 + .4byte .LASF4206 + .byte 0x5 + .byte 0x88,0x6 + .4byte .LASF4207 + .byte 0x5 + .byte 0x89,0x6 + .4byte .LASF4208 + .byte 0x5 + .byte 0x8a,0x6 + .4byte .LASF4209 + .byte 0x5 + .byte 0x8b,0x6 + .4byte .LASF4210 + .byte 0x5 + .byte 0x8c,0x6 + .4byte .LASF4211 + .byte 0x5 + .byte 0x8d,0x6 + .4byte .LASF4212 + .byte 0x5 + .byte 0x8e,0x6 + .4byte .LASF4213 + .byte 0x5 + .byte 0x8f,0x6 + .4byte .LASF4214 + .byte 0x5 + .byte 0x90,0x6 + .4byte .LASF4215 + .byte 0x5 + .byte 0x91,0x6 + .4byte .LASF4216 + .byte 0x5 + .byte 0x92,0x6 + .4byte .LASF4217 + .byte 0x5 + .byte 0x93,0x6 + .4byte .LASF4218 + .byte 0x5 + .byte 0x94,0x6 + .4byte .LASF4219 + .byte 0x5 + .byte 0x95,0x6 + .4byte .LASF4220 + .byte 0x5 + .byte 0x96,0x6 + .4byte .LASF4221 + .byte 0x5 + .byte 0x97,0x6 + .4byte .LASF4222 + .byte 0x5 + .byte 0x98,0x6 + .4byte .LASF4223 + .byte 0x5 + .byte 0x99,0x6 + .4byte .LASF4224 + .byte 0x5 + .byte 0x9a,0x6 + .4byte .LASF4225 + .byte 0x5 + .byte 0x9b,0x6 + .4byte .LASF4226 + .byte 0x5 + .byte 0x9c,0x6 + .4byte .LASF4227 + .byte 0x5 + .byte 0x9d,0x6 + .4byte .LASF4228 + .byte 0x5 + .byte 0x9e,0x6 + .4byte .LASF4229 + .byte 0x5 + .byte 0x9f,0x6 + .4byte .LASF4230 + .byte 0x5 + .byte 0xa0,0x6 + .4byte .LASF4231 + .byte 0x5 + .byte 0xa1,0x6 + .4byte .LASF4232 + .byte 0x5 + .byte 0xa2,0x6 + .4byte .LASF4233 + .byte 0x5 + .byte 0xa3,0x6 + .4byte .LASF4234 + .byte 0x5 + .byte 0xa4,0x6 + .4byte .LASF4235 + .byte 0x5 + .byte 0xa5,0x6 + .4byte .LASF4236 + .byte 0x5 + .byte 0xa6,0x6 + .4byte .LASF4237 + .byte 0x5 + .byte 0xa7,0x6 + .4byte .LASF4238 + .byte 0x5 + .byte 0xa8,0x6 + .4byte .LASF4239 + .byte 0x5 + .byte 0xa9,0x6 + .4byte .LASF4240 + .byte 0x5 + .byte 0xaa,0x6 + .4byte .LASF4241 + .byte 0x5 + .byte 0xab,0x6 + .4byte .LASF4242 + .byte 0x5 + .byte 0xac,0x6 + .4byte .LASF4243 + .byte 0x5 + .byte 0xad,0x6 + .4byte .LASF4244 + .byte 0x5 + .byte 0xae,0x6 + .4byte .LASF4245 + .byte 0x5 + .byte 0xaf,0x6 + .4byte .LASF4246 + .byte 0x5 + .byte 0xb0,0x6 + .4byte .LASF4247 + .byte 0x5 + .byte 0xb1,0x6 + .4byte .LASF4248 + .byte 0x5 + .byte 0xb2,0x6 + .4byte .LASF4249 + .byte 0x5 + .byte 0xb3,0x6 + .4byte .LASF4250 + .byte 0x5 + .byte 0xb4,0x6 + .4byte .LASF4251 + .byte 0x5 + .byte 0xb5,0x6 + .4byte .LASF4252 + .byte 0x5 + .byte 0xb6,0x6 + .4byte .LASF4253 + .byte 0x5 + .byte 0xb7,0x6 + .4byte .LASF4254 + .byte 0x5 + .byte 0xb8,0x6 + .4byte .LASF4255 + .byte 0x5 + .byte 0xb9,0x6 + .4byte .LASF4256 + .byte 0x5 + .byte 0xba,0x6 + .4byte .LASF4257 + .byte 0x5 + .byte 0xbb,0x6 + .4byte .LASF4258 + .byte 0x5 + .byte 0xbc,0x6 + .4byte .LASF4259 + .byte 0x5 + .byte 0xbd,0x6 + .4byte .LASF4260 + .byte 0x5 + .byte 0xbe,0x6 + .4byte .LASF4261 + .byte 0x5 + .byte 0xbf,0x6 + .4byte .LASF4262 + .byte 0x5 + .byte 0xc0,0x6 + .4byte .LASF4263 + .byte 0x5 + .byte 0xc1,0x6 + .4byte .LASF4264 + .byte 0x5 + .byte 0xc2,0x6 + .4byte .LASF4265 + .byte 0x5 + .byte 0xc3,0x6 + .4byte .LASF4266 + .byte 0x5 + .byte 0xc4,0x6 + .4byte .LASF4267 + .byte 0x5 + .byte 0xc5,0x6 + .4byte .LASF4268 + .byte 0x5 + .byte 0xc6,0x6 + .4byte .LASF4269 + .byte 0x5 + .byte 0xc7,0x6 + .4byte .LASF4270 + .byte 0x5 + .byte 0xc8,0x6 + .4byte .LASF4271 + .byte 0x5 + .byte 0xc9,0x6 + .4byte .LASF4272 + .byte 0x5 + .byte 0xca,0x6 + .4byte .LASF4273 + .byte 0x5 + .byte 0xcb,0x6 + .4byte .LASF4274 + .byte 0x5 + .byte 0xcc,0x6 + .4byte .LASF4275 + .byte 0x5 + .byte 0xcd,0x6 + .4byte .LASF4276 + .byte 0x5 + .byte 0xce,0x6 + .4byte .LASF4277 + .byte 0x5 + .byte 0xcf,0x6 + .4byte .LASF4278 + .byte 0x5 + .byte 0xd0,0x6 + .4byte .LASF4279 + .byte 0x5 + .byte 0xd1,0x6 + .4byte .LASF4280 + .byte 0x5 + .byte 0xd2,0x6 + .4byte .LASF4281 + .byte 0x5 + .byte 0xd3,0x6 + .4byte .LASF4282 + .byte 0x5 + .byte 0xd4,0x6 + .4byte .LASF4283 + .byte 0x5 + .byte 0xd5,0x6 + .4byte .LASF4284 + .byte 0x5 + .byte 0xd6,0x6 + .4byte .LASF4285 + .byte 0x5 + .byte 0xd7,0x6 + .4byte .LASF4286 + .byte 0x5 + .byte 0xd8,0x6 + .4byte .LASF4287 + .byte 0x5 + .byte 0xd9,0x6 + .4byte .LASF4288 + .byte 0x5 + .byte 0xda,0x6 + .4byte .LASF4289 + .byte 0x5 + .byte 0xdb,0x6 + .4byte .LASF4290 + .byte 0x5 + .byte 0xdc,0x6 + .4byte .LASF4291 + .byte 0x5 + .byte 0xdd,0x6 + .4byte .LASF4292 + .byte 0x5 + .byte 0xde,0x6 + .4byte .LASF4293 + .byte 0x5 + .byte 0xdf,0x6 + .4byte .LASF4294 + .byte 0x5 + .byte 0xe0,0x6 + .4byte .LASF4295 + .byte 0x5 + .byte 0xe1,0x6 + .4byte .LASF4296 + .byte 0x5 + .byte 0xe2,0x6 + .4byte .LASF4297 + .byte 0x5 + .byte 0xe3,0x6 + .4byte .LASF4298 + .byte 0x5 + .byte 0xe4,0x6 + .4byte .LASF4299 + .byte 0x5 + .byte 0xe5,0x6 + .4byte .LASF4300 + .byte 0x5 + .byte 0xe6,0x6 + .4byte .LASF4301 + .byte 0x5 + .byte 0xe7,0x6 + .4byte .LASF4302 + .byte 0x5 + .byte 0xe8,0x6 + .4byte .LASF4303 + .byte 0x5 + .byte 0xe9,0x6 + .4byte .LASF4304 + .byte 0x5 + .byte 0xea,0x6 + .4byte .LASF4305 + .byte 0x5 + .byte 0xeb,0x6 + .4byte .LASF4306 + .byte 0x5 + .byte 0xec,0x6 + .4byte .LASF4307 + .byte 0x5 + .byte 0xed,0x6 + .4byte .LASF4308 + .byte 0x5 + .byte 0xee,0x6 + .4byte .LASF4309 + .byte 0x5 + .byte 0xef,0x6 + .4byte .LASF4310 + .byte 0x5 + .byte 0xf0,0x6 + .4byte .LASF4311 + .byte 0x5 + .byte 0xf1,0x6 + .4byte .LASF4312 + .byte 0x5 + .byte 0xf2,0x6 + .4byte .LASF4313 + .byte 0x5 + .byte 0xf3,0x6 + .4byte .LASF4314 + .byte 0x5 + .byte 0xf6,0x6 + .4byte .LASF4315 + .byte 0x5 + .byte 0xf7,0x6 + .4byte .LASF4316 + .byte 0x5 + .byte 0xf9,0x6 + .4byte .LASF4317 + .byte 0x5 + .byte 0xfb,0x6 + .4byte .LASF4318 + .byte 0x5 + .byte 0xfd,0x6 + .4byte .LASF4319 + .byte 0x5 + .byte 0xfe,0x6 + .4byte .LASF4320 + .byte 0x5 + .byte 0xff,0x6 + .4byte .LASF4321 + .byte 0x5 + .byte 0x80,0x7 + .4byte .LASF4322 + .byte 0x5 + .byte 0x81,0x7 + .4byte .LASF4323 + .byte 0x5 + .byte 0x83,0x7 + .4byte .LASF4324 + .byte 0x5 + .byte 0x84,0x7 + .4byte .LASF4325 + .byte 0x5 + .byte 0x85,0x7 + .4byte .LASF4326 + .byte 0x5 + .byte 0x87,0x7 + .4byte .LASF4327 + .byte 0x5 + .byte 0x88,0x7 + .4byte .LASF4328 + .byte 0x5 + .byte 0x8b,0x7 + .4byte .LASF4329 + .byte 0x5 + .byte 0x8c,0x7 + .4byte .LASF4330 + .byte 0x5 + .byte 0x8d,0x7 + .4byte .LASF4331 + .byte 0x5 + .byte 0x8e,0x7 + .4byte .LASF4332 + .byte 0x5 + .byte 0x8f,0x7 + .4byte .LASF4333 + .byte 0x5 + .byte 0x90,0x7 + .4byte .LASF4334 + .byte 0x5 + .byte 0x91,0x7 + .4byte .LASF4335 + .byte 0x5 + .byte 0x92,0x7 + .4byte .LASF4336 + .byte 0x5 + .byte 0x93,0x7 + .4byte .LASF4337 + .byte 0x5 + .byte 0x94,0x7 + .4byte .LASF4338 + .byte 0x5 + .byte 0x95,0x7 + .4byte .LASF4339 + .byte 0x5 + .byte 0x96,0x7 + .4byte .LASF4340 + .byte 0 + .section .debug_line,"",@progbits +.Ldebug_line0: + .section .debug_str,"MS",@progbits,1 +.LASF1189: + .string "DAC_WAVE_BIT_WIDTH_4 DWBW(3)" +.LASF328: + .string "_POSIX_C_SOURCE 1" +.LASF2499: + .string "SPI_I2SCTL_I2SOPMOD BITS(8,9)" +.LASF1587: + .string "OB_WP_25 ((uint32_t)0x02000000U)" +.LASF3011: + .string "USART_RECEIVE_ENABLE CTL0_REN(1)" +.LASF365: + .string "___int16_t_defined 1" +.LASF2260: + .string "RCU_AHB_CKSYS_DIV8 CFG0_AHBPSC(10)" +.LASF757: + .string "BKP_DATA BITS(0,15)" +.LASF884: + .string "CAN_CTL_RFOD BIT(3)" +.LASF1936: + .string "I2C_STAT1_RXGC BIT(4)" +.LASF3950: + .string "MASK_FCVT_S_WU 0xfff0007f" +.LASF3947: + .string "MATCH_FCVT_S_W 0xd0000053" +.LASF3161: + .string "MTIME_HANDLER eclic_mtip_handler" +.LASF4417: + .string "mtime_lo" +.LASF1717: + .string "GPIO_BC_CR2 BIT(2)" +.LASF3995: + .string "MATCH_C_JR 0x8002" +.LASF4322: + .string "CSR_PUSHMEPC 0x7EF" +.LASF2958: + .string "USART_STAT_TBE BIT(7)" +.LASF189: + .string "__LDBL_HAS_INFINITY__ 1" +.LASF834: + .string "CAN_F19DATA0(canx) REG32((canx) + 0x2D8U)" +.LASF1276: + .string "DMA_CHXCTL_MWIDTH BITS(10,11)" +.LASF2461: + .string "SPI_CTL0_MSTMOD BIT(2)" +.LASF2405: + .string "RCU_DEEPSLEEP_V_0_9 DSV_DSLPVS(3)" +.LASF1301: + .string "DMA_INT_HTF DMA_CHXCTL_HTFIE" +.LASF2988: + .string "USART_CTL2_IREN BIT(1)" +.LASF2139: + .string "RCU_INT_CKMIC BIT(23)" +.LASF4303: + .string "CSR_MHPMCOUNTER20H 0xb94" +.LASF2430: + .string "RTC_DIVL_DIV BITS(0,15)" +.LASF3110: + .string "_T_WCHAR " +.LASF536: + .string "ADC_IOFF1(adcx) REG32((adcx) + 0x18U)" +.LASF1614: + .string "AFIO_EXTISS0 REG32(AFIO + 0x08U)" +.LASF1974: + .string "I2C_DMA_OFF ((uint32_t)0x00000000U)" +.LASF2888: + .string "TIMER_IC_POLARITY_RISING ((uint16_t)0x0000U)" +.LASF2496: + .string "SPI_I2SCTL_CKPL BIT(3)" +.LASF826: + .string "CAN_F11DATA0(canx) REG32((canx) + 0x298U)" +.LASF4047: + .string "MATCH_C_SUBW 0x9c01" +.LASF150: + .string "__FLT_MAX_10_EXP__ 38" +.LASF2473: + .string "SPI_CTL1_DMAREN BIT(0)" +.LASF509: + .string "SPI_BASE (APB1_BUS_BASE + 0x00003800U)" +.LASF127: + .string "__INT_FAST16_WIDTH__ 32" +.LASF4240: + .string "CSR_MHPMEVENT24 0x338" +.LASF980: + .string "CAN_RFIFOMDATA0_DB1 BITS(8,15)" +.LASF4314: + .string "CSR_MHPMCOUNTER31H 0xb9f" +.LASF2987: + .string "USART_CTL2_ERRIE BIT(0)" +.LASF2715: + .string "TIMER_CHCTL2_CH2EN BIT(8)" +.LASF913: + .string "CAN_TSTAT_MTE2 BIT(19)" +.LASF4038: + .string "MASK_C_ANDI 0xec03" +.LASF3465: + .string "__SWID 0x2000" +.LASF2560: + .string "I2S_CKPL_HIGH SPI_I2SCTL_CKPL" +.LASF2202: + .string "RCU_APB1EN_I2C0EN BIT(21)" +.LASF3948: + .string "MASK_FCVT_S_W 0xfff0007f" +.LASF2450: + .string "SPI_CTL0(spix) REG32((spix) + 0x00U)" +.LASF2875: + .string "TIMER_OC_MODE_TOGGLE ((uint16_t)0x0030U)" +.LASF1471: + .string "EXTI_PD_PD6 BIT(6)" +.LASF1095: + .string "CAN_FILTERBITS_16BIT ((uint8_t)0x00U)" +.LASF4349: + .string "long unsigned int" +.LASF3245: + .string "__CC_SUPPORTS_VARADIC_XXX 1" +.LASF726: + .string "BKP_DATA14 REG16((BKP) + 0x50U)" +.LASF1768: + .string "AFIO_EXTI2_SS BITS(8, 11)" +.LASF2930: + .string "TIMER_EXT_TRI_PSC_DIV4 SMCFG_ETPSC(2)" +.LASF2410: + .string "RTC_PSCH REG32(RTC + 0x08U)" +.LASF4297: + .string "CSR_MHPMCOUNTER14H 0xb8e" +.LASF1776: + .string "AFIO_EXTI10_SS BITS(8, 11)" +.LASF4298: + .string "CSR_MHPMCOUNTER15H 0xb8f" +.LASF300: + .string "__SIZEOF_WCHAR_T__ 4" +.LASF3583: + .string "MCONTROL_ACTION_TRACE_STOP 3" +.LASF500: + .string "EXMC_BASE ((uint32_t)0xA0000000U)" +.LASF1670: + .string "GPIO_OCTL_OCTL3 BIT(3)" +.LASF1339: + .string "EXMC_SNCTL_NRTP BITS(2,3)" +.LASF307: + .string "__riscv_div 1" +.LASF3495: + .string "putchar_unlocked(_c) _putchar_unlocked(_c)" +.LASF3833: + .string "MATCH_LR_D 0x1000302f" +.LASF754: + .string "BKP_OCTL REG16((BKP) + 0x2CU)" +.LASF2774: + .string "TIMER_DMA_TRGD ((uint16_t)TIMER_DMAINTEN_TRGDEN)" +.LASF1407: + .string "EXTI_EVEN_EVEN18 BIT(18)" +.LASF4023: + .string "MATCH_C_FSW 0xe000" +.LASF2413: + .string "RTC_DIVL REG32(RTC + 0x14U)" +.LASF3625: + .string "IRQ_H_TIMER 6" +.LASF477: + .string "WCHAR_MAX (__WCHAR_MAX__)" +.LASF3847: + .string "MATCH_MRET 0x30200073" +.LASF2004: + .string "FWDGT_PSC_DIV8 ((uint8_t)PSC_PSC(1))" +.LASF3331: + .string "__need___va_list" +.LASF1036: + .string "GET_ERR_ERRN(regval) GET_BITS((uint32_t)(regval), 4U, 6U)" +.LASF3304: + .string "__DEVOLATILE(type,var) ((type)(__uintptr_t)(volatile void *)(var))" +.LASF2551: + .string "I2S_MODE_MASTERTX I2SCTL_I2SOPMOD(2)" +.LASF3103: + .string "_SIZET_ " +.LASF1338: + .string "EXMC_SNCTL_NRMUX BIT(1)" +.LASF3591: + .string "MIP_SSIP (1 << IRQ_S_SOFT)" +.LASF1328: + .string "ECLIC_PRIGROUP_LEVEL2_PRIO2 2" +.LASF2906: + .string "TIMER_SMCFG_TRGSEL_ETIFP SMCFG_TRGSEL(7)" +.LASF1115: + .string "CAN_INT_WAKEUP CAN_INTEN_WIE" +.LASF4326: + .string "CSR_TXEVT 0x812" +.LASF438: + .string "INT16_MIN (-__INT16_MAX__ - 1)" +.LASF1609: + .string "GPIO_BOP(gpiox) REG32((gpiox) + 0x10U)" +.LASF4176: + .string "CSR_MCAUSE 0x342" +.LASF1720: + .string "GPIO_BC_CR5 BIT(5)" +.LASF2298: + .string "RCU_PLL_MUL12 CFG0_PLLMF(10)" +.LASF580: + .string "ADC_CTL1_SWRCST BIT(22)" +.LASF2955: + .string "USART_STAT_IDLEF BIT(4)" +.LASF4019: + .string "MATCH_C_FSD 0xa000" +.LASF1225: + .string "DAC_TRIANGLE_AMPLITUDE_4095 DAC_WAVE_BIT_WIDTH_12" +.LASF3163: + .string "PMOVI_HANDLER eclic_pmovi_handler" +.LASF3714: + .string "MASK_XOR 0xfe00707f" +.LASF2556: + .string "I2S_STD_LSB I2SCTL_I2SSTD(2)" +.LASF1530: + .string "FMC_REGIDX_BITS(regidx,bitpos0,bitpos1) (((uint32_t)(regidx) << 12) | ((uint32_t)(bitpos0) << 6) | (uint32_t)(bitpos1))" +.LASF2063: + .string "PMU_LVDT_5 CTL_LVDT(5)" +.LASF340: + .string "SYSTEM_GD32VF103_H " +.LASF3858: + .string "MASK_CSRRS 0x707f" +.LASF4361: + .string "eclic_set_posedge_trig" +.LASF1515: + .string "FMC_CTL_LK BIT(7)" +.LASF497: + .string "SRAM_BASE ((uint32_t)0x20000000U)" +.LASF4271: + .string "CSR_HPMCOUNTER19H 0xc93" +.LASF3180: + .string "_HAVE_CC_INHIBIT_LOOP_TO_LIBCALL 1" +.LASF622: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH1 CTL1_ETSRC(1)" +.LASF458: + .string "UINT_FAST8_MAX (__UINT_FAST8_MAX__)" +.LASF1047: + .string "CAN_ERRN_7 ERR_ERRN(7U)" +.LASF4416: + .string "mtime_hi" +.LASF4377: + .string "eclic_set_irq_lvl_abs" +.LASF4182: + .string "CSR_TDATA3 0x7a3" +.LASF182: + .string "__LDBL_DECIMAL_DIG__ 36" +.LASF451: + .string "INT64_MAX (__INT64_MAX__)" +.LASF2553: + .string "I2SCTL_I2SSTD(regval) (BITS(4,5) & ((uint32_t)(regval) << 4))" +.LASF1187: + .string "DAC_WAVE_BIT_WIDTH_2 DWBW(1)" +.LASF412: + .string "_UINT32_T_DECLARED " +.LASF1277: + .string "DMA_CHXCTL_PRIO BITS(12,13)" +.LASF783: + .string "CAN_STAT(canx) REG32((canx) + 0x04U)" +.LASF1780: + .string "AFIO_EXTI14_SS BITS(8, 11)" +.LASF673: + .string "ADC_CHANNEL_13 ((uint8_t)0x0DU)" +.LASF1806: + .string "GPIO_EVENT_PIN_0 ((uint8_t)0x00U)" +.LASF2428: + .string "RTC_PSCL_PSC BITS(0,15)" +.LASF278: + .string "__FLT64X_HAS_DENORM__ 1" +.LASF2976: + .string "USART_CTL0_WL BIT(12)" +.LASF434: + .string "UINT8_MAX (__UINT8_MAX__)" +.LASF3330: + .string "__need___va_list " +.LASF1114: + .string "CAN_INT_ERR CAN_INTEN_ERRIE" +.LASF3902: + .string "MASK_FMIN_D 0xfe00707f" +.LASF3740: + .string "MASK_SRAW 0xfe00707f" +.LASF4192: + .string "CSR_MHPMCOUNTER7 0xb07" +.LASF1552: + .string "FMC_NSPC ((uint8_t)0xA5U)" +.LASF1016: + .string "TMDATA0_DB0(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF992: + .string "CAN_FW_FW(regval) BIT(regval)" +.LASF3806: + .string "MASK_AMOMINU_W 0xf800707f" +.LASF1899: + .string "I2C_CTL0_START BIT(8)" +.LASF4156: + .string "CSR_HPMCOUNTER30 0xc1e" +.LASF2296: + .string "RCU_PLL_MUL10 CFG0_PLLMF(8)" +.LASF1725: + .string "GPIO_BC_CR10 BIT(10)" +.LASF385: + .string "short +1" +.LASF4266: + .string "CSR_HPMCOUNTER14H 0xc8e" +.LASF1872: + .string "GPIO_TIMER4CH3_IREMAP ((uint32_t)0x00200001U)" +.LASF1601: + .string "GPIOC (GPIO_BASE + 0x00000800U)" +.LASF3270: + .string "__always_inline __inline__ __attribute__((__always_inline__))" +.LASF3877: + .string "MATCH_FSGNJN_S 0x20001053" +.LASF2807: + .string "TIMER_DMACFG_DMATC_10TRANSFER DMACFG_DMATC(9)" +.LASF701: + .string "OVSCR_OVSR(regval) (BITS(2,4) & ((uint32_t)(regval) << 2))" +.LASF3003: + .string "USART_REGIDX_BIT2(regidx,bitpos,regidx2,bitpos2) (((uint32_t)(regidx2) << 22) | (uint32_t)((bitpos2) << 16) | (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos)))" +.LASF4102: + .string "MASK_CUSTOM2_RS1 0x707f" +.LASF2984: + .string "USART_CTL1_CKEN BIT(11)" +.LASF4031: + .string "MATCH_C_LUI 0x6001" +.LASF1013: + .string "FCTL_HBC1F(regval) (BITS(8,13) & ((uint32_t)(regval) << 8))" +.LASF3571: + .string "MCONTROL_M (1<<6)" +.LASF624: + .string "ADC0_1_EXTTRIG_REGULAR_T1_CH1 CTL1_ETSRC(3)" +.LASF677: + .string "ADC_CHANNEL_17 ((uint8_t)0x11U)" +.LASF2235: + .string "RCU_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF4248: + .string "CSR_MVENDORID 0xf11" +.LASF2931: + .string "TIMER_EXT_TRI_PSC_DIV8 SMCFG_ETPSC(3)" +.LASF466: + .string "INT_FAST64_MAX (__INT_FAST64_MAX__)" +.LASF1822: + .string "GPIO_PIN_SOURCE_0 ((uint8_t)0x00U)" +.LASF4107: + .string "MATCH_CUSTOM2_RD_RS1 0x605b" +.LASF3238: + .string "__GNUCLIKE_MATH_BUILTIN_RELOPS " +.LASF511: + .string "I2C_BASE (APB1_BUS_BASE + 0x00005400U)" +.LASF3435: + .string "_MODE_T_DECLARED " +.LASF2989: + .string "USART_CTL2_IRLP BIT(2)" +.LASF2789: + .string "TIMER_DMACFG_DMATA_CAR DMACFG_DMATA(11)" +.LASF2783: + .string "TIMER_DMACFG_DMATA_SWEVG DMACFG_DMATA(5)" +.LASF4137: + .string "CSR_HPMCOUNTER11 0xc0b" +.LASF3607: + .string "MIE_HEIE MIP_HEIP" +.LASF2041: + .string "DBG_LOW_POWER_STANDBY DBG_CTL_STB_HOLD" +.LASF2839: + .string "TIMER_UPDATE_SRC_REGULAR TIMER_CTL0_UPS" +.LASF3250: + .string "__STRING(x) #x" +.LASF1763: + .string "AFIO_PCF0_SWJ_CFG BITS(24, 26)" +.LASF1554: + .string "OB_SPC_SPC ((uint32_t)0x000000FFU)" +.LASF510: + .string "USART_BASE (APB1_BUS_BASE + 0x00004400U)" +.LASF999: + .string "CAN_BIT_POS0(val) (((uint32_t)(val) >> 6) & 0x1FU)" +.LASF2557: + .string "I2S_STD_PCMSHORT I2SCTL_I2SSTD(3)" +.LASF2113: + .string "RCU_CFG0_USBFSPSC BITS(22,23)" +.LASF1143: + .string "DAC_CTL_DBOFF0 BIT(1)" +.LASF1427: + .string "EXTI_FTEN_FTEN0 BIT(0)" +.LASF2243: + .string "CTL_REG_OFFSET 0x00U" +.LASF2982: + .string "USART_CTL1_CPH BIT(9)" +.LASF1380: + .string "EXTI_INTEN_INTEN10 BIT(10)" +.LASF3663: + .string "rdinstret() read_csr(instret)" +.LASF1512: + .string "FMC_CTL_OBPG BIT(4)" +.LASF420: + .string "_UINTPTR_T_DECLARED " +.LASF1704: + .string "GPIO_BOP_CR5 BIT(21)" +.LASF1753: + .string "AFIO_PCF0_USART0_REMAP BIT(2)" +.LASF2300: + .string "RCU_PLL_MUL14 CFG0_PLLMF(12)" +.LASF1731: + .string "GPIO_LOCK_LK0 BIT(0)" +.LASF3139: + .string "_RISCV_CONST_H " +.LASF2533: + .string "I2S_AUDIOSAMPLE_11K ((uint32_t)11025U)" +.LASF2424: + .string "RTC_CTL_RSYNF BIT(3)" +.LASF1175: + .string "DAC_TRIGGER_T6_TRGO CTL_DTSEL(2)" +.LASF3083: + .string "_BSD_PTRDIFF_T_ " +.LASF1041: + .string "CAN_ERRN_1 ERR_ERRN(1U)" +.LASF2607: + .string "TIMER_PSC(timerx) REG32((timerx) + 0x28U)" +.LASF1907: + .string "I2C_CTL1_ERRIE BIT(8)" +.LASF4121: + .string "MATCH_CUSTOM3_RD_RS1_RS2 0x707b" +.LASF2544: + .string "I2S_FRAMEFORMAT_DT24B_CH32B (I2SCTL_DTLEN(1) | SPI_I2SCTL_CHLEN)" +.LASF2146: + .string "RCU_APB2RST_ADC0RST BIT(9)" +.LASF2535: + .string "I2S_AUDIOSAMPLE_22K ((uint32_t)22050U)" +.LASF2531: + .string "SPI_PSC_256 CTL0_PSC(7)" +.LASF3322: + .string "__requires_exclusive(...) __lock_annotate(exclusive_locks_required(__VA_ARGS__))" +.LASF50: + .string "__INT_LEAST16_TYPE__ short int" +.LASF3214: + .string "__attribute_malloc__ " +.LASF2437: + .string "RTC_INT_OVERFLOW RTC_INTEN_OVIE" +.LASF1849: + .string "GPIO_PIN_11 BIT(11)" +.LASF1130: + .string "DAC_SWT REG32(DAC + 0x04U)" +.LASF2350: + .string "RCU_PREDV0_DIV11 CFG1_PREDV0(10)" +.LASF2096: + .string "RCU_CTL_HXTALBPS BIT(18)" +.LASF668: + .string "ADC_CHANNEL_8 ((uint8_t)0x08U)" +.LASF2555: + .string "I2S_STD_MSB I2SCTL_I2SSTD(1)" +.LASF4327: + .string "CSR_MMISC_CTL 0x7d0" +.LASF3651: + .string "RISCV_PGLEVEL_BITS 10" +.LASF305: + .string "__riscv_atomic 1" +.LASF3683: + .string "MATCH_AUIPC 0x17" +.LASF550: + .string "ADC_OVSCR(adcx) REG32((adcx) + 0x80U)" +.LASF1229: + .string "DMA_INTF(dmax) REG32((dmax) + 0x00U)" +.LASF2131: + .string "RCU_INT_PLL2STBIE BIT(14)" +.LASF1890: + .string "I2C_RT(i2cx) REG32((i2cx) + 0x20U)" +.LASF3916: + .string "MASK_FEQ_S 0xfe00707f" +.LASF2585: + .string "I2S_FLAG_TXURERR SPI_STAT_TXURERR" +.LASF2578: + .string "SPI_FLAG_CONFERR SPI_STAT_CONFERR" +.LASF3182: + .string "_FSEEK_OPTIMIZATION 1" +.LASF1341: + .string "EXMC_SNCTL_NREN BIT(6)" +.LASF1440: + .string "EXTI_FTEN_FTEN13 BIT(13)" +.LASF3975: + .string "MATCH_FMADD_S 0x43" +.LASF1641: + .string "GPIO_CTL1_MD11 BITS(12, 13)" +.LASF3626: + .string "IRQ_M_TIMER 7" +.LASF547: + .string "ADC_IDATA2(adcx) REG32((adcx) + 0x44U)" +.LASF349: + .string "__GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))" +.LASF2655: + .string "TIMER_DMAINTEN_CH2DEN BIT(11)" +.LASF3649: + .string "MSTATUS_SD MSTATUS32_SD" +.LASF1922: + .string "I2C_STAT0_ADD10SEND BIT(3)" +.LASF2757: + .string "TIMER_FLAG_CH0 TIMER_INTF_CH0IF" +.LASF2116: + .string "RCU_CFG0_PLLMF_4 BIT(29)" +.LASF227: + .string "__FLT64_DECIMAL_DIG__ 17" +.LASF3393: + .string "_REENT_MP_FREELIST(ptr) ((ptr)->_freelist)" +.LASF4238: + .string "CSR_MHPMEVENT22 0x336" +.LASF3525: + .string "MSTATUS_FS 0x00006000" +.LASF898: + .string "CAN_STAT_LASTRX BIT(10)" +.LASF4375: + .string "eclic_get_irq_lvl_abs" +.LASF2279: + .string "RCU_CKADC_CKAPB2_DIV4 ((uint32_t)0x00000001U)" +.LASF2995: + .string "USART_CTL2_RTSEN BIT(8)" +.LASF1323: + .string "DMA_MEMORY_TO_MEMORY_ENABLE ((uint32_t)0x00000001U)" +.LASF3419: + .string "__clock_t_defined " +.LASF1833: + .string "GPIO_PIN_SOURCE_11 ((uint8_t)0x0BU)" +.LASF2494: + .string "SPI_I2SCTL_CHLEN BIT(0)" +.LASF758: + .string "BKP_OCTL_RCCV BITS(0,6)" +.LASF1257: + .string "DMA_CH6PADDR(dmax) REG32((dmax) + 0x88U)" +.LASF1630: + .string "GPIO_CTL0_CTL5 BITS(22, 23)" +.LASF761: + .string "BKP_OCTL_ROSEL BIT(9)" +.LASF4273: + .string "CSR_HPMCOUNTER21H 0xc95" +.LASF1967: + .string "I2C_SCLSTRETCH_ENABLE ((uint32_t)0x00000000U)" +.LASF794: + .string "CAN_TMI1(canx) REG32((canx) + 0x190U)" +.LASF4077: + .string "MATCH_CUSTOM0_RS1 0x200b" +.LASF464: + .string "UINT_FAST32_MAX (__UINT_FAST32_MAX__)" +.LASF665: + .string "ADC_CHANNEL_5 ((uint8_t)0x05U)" +.LASF531: + .string "ADC_CTL0(adcx) REG32((adcx) + 0x04U)" +.LASF1236: + .string "DMA_CH1CNT(dmax) REG32((dmax) + 0x20U)" +.LASF945: + .string "CAN_ERR_PERR BIT(1)" +.LASF2375: + .string "RCU_PLL1_MUL9 CFG1_PLL1MF(7)" +.LASF926: + .string "CAN_RFIFO1_RFL1 BITS(0,1)" +.LASF40: + .string "__SIG_ATOMIC_TYPE__ int" +.LASF3049: + .string "CLT2_RTSEN(regval) (BIT(8) & ((uint32_t)(regval) << 8))" +.LASF957: + .string "CAN_TMI_FT BIT(1)" +.LASF2144: + .string "RCU_APB2RST_PDRST BIT(5)" +.LASF3293: + .string "__strong_reference(sym,aliassym) extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)))" +.LASF4325: + .string "CSR_SLEEPVALUE 0x811" +.LASF1055: + .string "CAN_BT_SJW_3TQ ((uint8_t)0x02U)" +.LASF2168: + .string "RCU_APB1RST_BKPIRST BIT(27)" +.LASF3751: + .string "MATCH_LHU 0x5003" +.LASF3719: + .string "MATCH_OR 0x6033" +.LASF2768: + .string "TIMER_DMA_UPD ((uint16_t)TIMER_DMAINTEN_UPDEN)" +.LASF450: + .string "INT64_MIN (-__INT64_MAX__ - 1)" +.LASF3481: + .string "_stdin_r(x) ((x)->_stdin)" +.LASF3851: + .string "MATCH_SFENCE_VM 0x10400073" +.LASF641: + .string "ADC_SAMPLETIME_13POINT5 SAMPTX_SPT(2)" +.LASF1215: + .string "DAC_TRIANGLE_AMPLITUDE_3 DAC_WAVE_BIT_WIDTH_2" +.LASF2211: + .string "RCU_BDCTL_LXTALBPS BIT(2)" +.LASF812: + .string "CAN_FSCFG(canx) REG32((canx) + 0x20CU)" +.LASF2475: + .string "SPI_CTL1_NSSDRV BIT(2)" +.LASF3155: + .string "ECLIC_INT_ATTR_TRIG_NEG 0x04" +.LASF2301: + .string "RCU_PLL_MUL6_5 CFG0_PLLMF(13)" +.LASF44: + .string "__INT64_TYPE__ long long int" +.LASF903: + .string "CAN_TSTAT_MTE0 BIT(3)" +.LASF4381: + .string "eclic_set_nlbits" +.LASF638: + .string "SAMPTX_SPT(regval) (BITS(0,2) & ((uint32_t)(regval) << 0))" +.LASF1261: + .string "DMA_INTF_HTFIF BIT(2)" +.LASF2575: + .string "SPI_FLAG_RBNE SPI_STAT_RBNE" +.LASF4209: + .string "CSR_MHPMCOUNTER24 0xb18" +.LASF2912: + .string "TIMER_TRI_OUT_SRC_O0CPRE CTL1_MMC(4)" +.LASF3738: + .string "MASK_SRLW 0xfe00707f" +.LASF62: + .string "__UINT_FAST16_TYPE__ unsigned int" +.LASF3985: + .string "MATCH_FMSUB_D 0x2000047" +.LASF2805: + .string "TIMER_DMACFG_DMATC_8TRANSFER DMACFG_DMATC(7)" +.LASF4410: + .string "start_mcycle" +.LASF4263: + .string "CSR_HPMCOUNTER11H 0xc8b" +.LASF4064: + .string "MASK_C_FLWSP 0xe003" +.LASF3134: + .string "TIMER_MTIME_size 0x8" +.LASF1956: + .string "I2C_SMBUSMODE_ENABLE I2C_CTL0_SMBEN" +.LASF3876: + .string "MASK_FSGNJ_S 0xfe00707f" +.LASF363: + .string "__have_long32 1" +.LASF1336: + .string "EXMC_SNWTCFG0 REG32(EXMC + 0x104U)" +.LASF1240: + .string "DMA_CH2CNT(dmax) REG32((dmax) + 0x34U)" +.LASF3099: + .string "_BSD_SIZE_T_DEFINED_ " +.LASF4126: + .string "CSR_CYCLE 0xc00" +.LASF1099: + .string "CAN_FILTER_MASK_16BITS ((uint32_t)0x0000FFFFU)" +.LASF3532: + .string "MSTATUS64_SD 0x8000000000000000" +.LASF800: + .string "CAN_TMDATA02(canx) REG32((canx) + 0x1A8U)" +.LASF2181: + .string "RCU_APB2EN_PCEN BIT(4)" +.LASF1855: + .string "GPIO_SPI0_REMAP ((uint32_t)0x00000001U)" +.LASF2077: + .string "RCU_CTL REG32(RCU + 0x00U)" +.LASF3749: + .string "MATCH_LBU 0x4003" +.LASF1963: + .string "I2C_ACKPOS_NEXT ((uint32_t)0x00000000U)" +.LASF594: + .string "ADC_OVSCR_OVSR BITS(2,4)" +.LASF947: + .string "CAN_ERR_ERRN BITS(4,6)" +.LASF3958: + .string "MASK_FCVT_D_W 0xfff0007f" +.LASF4354: + .string "uint32_t" +.LASF195: + .string "__FLT16_MAX_EXP__ 16" +.LASF3037: + .string "CTL1_CPH(regval) (BIT(9) & ((uint32_t)(regval) << 9))" +.LASF1738: + .string "GPIO_LOCK_LK7 BIT(7)" +.LASF3762: + .string "MASK_SD 0x707f" +.LASF400: + .string "__LEAST8 \"hh\"" +.LASF1567: + .string "OB_WP_5 ((uint32_t)0x00000020U)" +.LASF204: + .string "__FLT16_HAS_INFINITY__ 1" +.LASF3702: + .string "MASK_ANDI 0x707f" +.LASF1262: + .string "DMA_INTF_ERRIF BIT(3)" +.LASF1148: + .string "DAC_CTL_DDMAEN0 BIT(12)" +.LASF2132: + .string "RCU_INT_IRC40KSTBIC BIT(16)" +.LASF1194: + .string "DAC_WAVE_BIT_WIDTH_9 DWBW(8)" +.LASF124: + .string "__INT_FAST8_MAX__ 0x7fffffff" +.LASF327: + .string "RT_USING_LIBC 1" +.LASF2323: + .string "RCU_CKUSB_CKPLL_DIV2 CFG0_USBPSC(3)" +.LASF2765: + .string "TIMER_FLAG_CH1O TIMER_INTF_CH1OF" +.LASF3230: + .string "__GNUCLIKE_CTOR_SECTION_HANDLING 1" +.LASF2710: + .string "TIMER_CHCTL2_CH0NP BIT(3)" +.LASF3437: + .string "__clockid_t_defined " +.LASF813: + .string "CAN_FAFIFO(canx) REG32((canx) + 0x214U)" +.LASF2592: + .string "TIMER2 (TIMER_BASE + 0x00000400U)" +.LASF1750: + .string "AFIO_EC_EOE BIT(7)" +.LASF2772: + .string "TIMER_DMA_CH3D ((uint16_t)TIMER_DMAINTEN_CH3DEN)" +.LASF3812: + .string "MASK_LR_W 0xf9f0707f" +.LASF4012: + .string "MASK_C_ADDI4SPN 0xe003" +.LASF4131: + .string "CSR_HPMCOUNTER5 0xc05" +.LASF39: + .string "__CHAR32_TYPE__ long unsigned int" +.LASF1986: + .string "DATA_RECV(regval) GET_BITS((uint32_t)(regval), 0, 7)" +.LASF2570: + .string "SPI_I2S_INT_FLAG_RXORERR ((uint8_t)0x02U)" +.LASF1155: + .string "DAC_CTL_DDMAEN1 BIT(28)" +.LASF4334: + .string "CAUSE_FAULT_LOAD 0x5" +.LASF1405: + .string "EXTI_EVEN_EVEN16 BIT(16)" +.LASF1393: + .string "EXTI_EVEN_EVEN4 BIT(4)" +.LASF3750: + .string "MASK_LBU 0x707f" +.LASF1062: + .string "CAN_BT_BS1_6TQ ((uint8_t)0x05U)" +.LASF3397: + .string "_REENT_STRTOK_LAST(ptr) ((ptr)->_new._reent._strtok_last)" +.LASF2832: + .string "TIMER_COUNTER_DOWN ((uint16_t)TIMER_CTL0_DIR)" +.LASF4101: + .string "MATCH_CUSTOM2_RS1 0x205b" +.LASF294: + .string "__GCC_ATOMIC_LONG_LOCK_FREE 2" +.LASF2897: + .string "TIMER_IC_PSC_DIV8 ((uint16_t)0x000CU)" +.LASF25: + .string "__BIGGEST_ALIGNMENT__ 16" +.LASF4005: + .string "MATCH_C_ADDIW 0x2001" +.LASF4358: + .string "old_intattr" +.LASF2127: + .string "RCU_INT_IRC8MSTBIE BIT(10)" +.LASF4195: + .string "CSR_MHPMCOUNTER10 0xb0a" +.LASF2904: + .string "TIMER_SMCFG_TRGSEL_CI0FE0 SMCFG_TRGSEL(5)" +.LASF859: + .string "CAN_F16DATA1(canx) REG32((canx) + 0x2C4U)" +.LASF639: + .string "ADC_SAMPLETIME_1POINT5 SAMPTX_SPT(0)" +.LASF3572: + .string "MCONTROL_H (1<<5)" +.LASF2665: + .string "TIMER_INTF_TRGIF BIT(6)" +.LASF3459: + .string "__SOPT 0x0400" +.LASF1169: + .string "DACC_R8DH_DAC1_DH BITS(8,15)" +.LASF2574: + .string "SPI_I2S_INT_FLAG_FERR ((uint8_t)0x06U)" +.LASF2449: + .string "SPI2 (SPI_BASE + 0x00000400U)" +.LASF2773: + .string "TIMER_DMA_CMTD ((uint16_t)TIMER_DMAINTEN_CMTDEN)" +.LASF3538: + .string "SSTATUS_FS 0x00006000" +.LASF1319: + .string "DMA_PRIORITY_MEDIUM CHCTL_PRIO(1U)" +.LASF3526: + .string "MSTATUS_XS 0x00018000" +.LASF1695: + .string "GPIO_BOP_BOP12 BIT(12)" +.LASF2009: + .string "FWDGT_PSC_DIV256 ((uint8_t)PSC_PSC(6))" +.LASF3085: + .string "_GCC_PTRDIFF_T " +.LASF3763: + .string "MATCH_FENCE 0xf" +.LASF1711: + .string "GPIO_BOP_CR12 BIT(28)" +.LASF3055: + .string "CTL2_IRLP(regval) (BIT(2) & ((uint32_t)(regval) << 2))" +.LASF1655: + .string "GPIO_ISTAT_ISTAT4 BIT(4)" +.LASF3310: + .string "__NULLABILITY_PRAGMA_POP " +.LASF1460: + .string "EXTI_SWIEV_SWIEV14 BIT(14)" +.LASF2515: + .string "SPI_NSS_SOFT SPI_CTL0_SWNSSEN" +.LASF177: + .string "__LDBL_MIN_EXP__ (-16381)" +.LASF3801: + .string "MATCH_AMOMIN_W 0x8000202f" +.LASF312: + .string "__riscv_arch_test 1" +.LASF2548: + .string "I2SCTL_I2SOPMOD(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF1082: + .string "CAN_MAILBOX1 ((uint8_t)0x01U)" +.LASF828: + .string "CAN_F13DATA0(canx) REG32((canx) + 0x2A8U)" +.LASF2286: + .string "PLLMF_4 RCU_CFG0_PLLMF_4" +.LASF1533: + .string "FMC_BIT_POS1(val) ((uint32_t)(val) & 0x1FU)" +.LASF386: + .string "__int20 +2" +.LASF4091: + .string "MATCH_CUSTOM1_RS1_RS2 0x302b" +.LASF342: + .string "_MACHINE__DEFAULT_TYPES_H " +.LASF551: + .string "ADC_STAT_WDE BIT(0)" +.LASF3882: + .string "MASK_FMIN_S 0xfe00707f" +.LASF1913: + .string "I2C_SADDR0_ADDRESS BITS(1,7)" +.LASF4287: + .string "CSR_MHPMCOUNTER4H 0xb84" +.LASF3237: + .string "__GNUCLIKE_BUILTIN_NEXT_ARG 1" +.LASF2518: + .string "SPI_ENDIAN_LSB SPI_CTL0_LF" +.LASF1662: + .string "GPIO_ISTAT_ISTAT11 BIT(11)" +.LASF4423: + .string "pmp_open_all_space" +.LASF2480: + .string "SPI_CTL1_TBEIE BIT(7)" +.LASF3783: + .string "MATCH_MULW 0x200003b" +.LASF1829: + .string "GPIO_PIN_SOURCE_7 ((uint8_t)0x07U)" +.LASF1490: + .string "FMC_STAT REG32((FMC) + 0x0CU)" +.LASF2400: + .string "RCU_I2S2SRC_CKPLL2_MUL2 RCU_CFG1_I2S2SEL" +.LASF2637: + .string "TIMER_SMCFG_SMC BITS(0,2)" +.LASF626: + .string "ADC0_1_EXTTRIG_REGULAR_T3_CH3 CTL1_ETSRC(5)" +.LASF1357: + .string "EXMC_MEMORY_TYPE_PSRAM SNCTL_NRTP(1)" +.LASF2540: + .string "I2S_AUDIOSAMPLE_192K ((uint32_t)192000U)" +.LASF1811: + .string "GPIO_EVENT_PIN_5 ((uint8_t)0x05U)" +.LASF799: + .string "CAN_TMP2(canx) REG32((canx) + 0x1A4U)" +.LASF929: + .string "CAN_RFIFO1_RFD1 BIT(5)" +.LASF879: + .string "CAN_RFIFOMDATA0(canx,bank) REG32((canx) + 0x1B8U + ((bank) * 0x10U))" +.LASF4332: + .string "CAUSE_BREAKPOINT 0x3" +.LASF2198: + .string "RCU_APB1EN_USART1EN BIT(17)" +.LASF2966: + .string "USART_CTL0_REN BIT(2)" +.LASF4173: + .string "CSR_MCOUNTEREN 0x306" +.LASF1296: + .string "DMA_FLAG_G DMA_INTF_GIF" +.LASF1841: + .string "GPIO_PIN_3 BIT(3)" +.LASF3696: + .string "MASK_SRLI 0xfc00707f" +.LASF805: + .string "CAN_RFIFOMDATA10(canx) REG32((canx) + 0x1BCU)" +.LASF1019: + .string "TMDATA0_DB3(regval) (BITS(24,31) & ((uint32_t)(regval) << 24))" +.LASF2402: + .string "RCU_DEEPSLEEP_V_1_2 DSV_DSLPVS(0)" +.LASF166: + .string "__DBL_DECIMAL_DIG__ 17" +.LASF2611: + .string "TIMER_CH1CV(timerx) REG32((timerx) + 0x38U)" +.LASF3335: + .string "__need_wint_t " +.LASF3605: + .string "MIE_MTIE MIP_MTIP" +.LASF135: + .string "__UINT_FAST64_MAX__ 0xffffffffffffffffULL" +.LASF1926: + .string "I2C_STAT0_BERR BIT(8)" +.LASF2334: + .string "BDCTL_RTCSRC(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF2011: + .string "FWDGT_WRITEACCESS_DISABLE ((uint16_t)0x0000U)" +.LASF1415: + .string "EXTI_RTEN_RTEN7 BIT(7)" +.LASF1182: + .string "DAC_WAVE_DISABLE CTL_DWM(0)" +.LASF2813: + .string "TIMER_DMACFG_DMATC_16TRANSFER DMACFG_DMATC(15)" +.LASF2996: + .string "USART_CTL2_CTSEN BIT(9)" +.LASF3859: + .string "MATCH_CSRRC 0x3073" +.LASF1637: + .string "GPIO_CTL1_MD9 BITS(4, 5)" +.LASF2537: + .string "I2S_AUDIOSAMPLE_44K ((uint32_t)44100U)" +.LASF1760: + .string "AFIO_PCF0_CAN_REMAP BITS(13, 14)" +.LASF2565: + .string "SPI_I2S_INT_TBE ((uint8_t)0x00U)" +.LASF4229: + .string "CSR_MHPMEVENT13 0x32d" +.LASF1645: + .string "GPIO_CTL1_MD13 BITS(20, 21)" +.LASF3828: + .string "MASK_AMOMINU_D 0xf800707f" +.LASF323: + .string "HAVE_CCONFIG_H 1" +.LASF46: + .string "__UINT16_TYPE__ short unsigned int" +.LASF941: + .string "CAN_INTEN_ERRIE BIT(15)" +.LASF430: + .string "INTPTR_MAX (__INTPTR_MAX__)" +.LASF3883: + .string "MATCH_FMAX_S 0x28001053" +.LASF3162: + .string "BWEI_HANDLER eclic_bwei_handler" +.LASF2978: + .string "USART_CTL1_ADDR BITS(0,3)" +.LASF71: + .string "__LONG_MAX__ 0x7fffffffL" +.LASF2558: + .string "I2S_STD_PCMLONG (I2SCTL_I2SSTD(3) | SPI_I2SCTL_PCMSMOD)" +.LASF2729: + .string "TIMER_CCHP_DTCFG BITS(0,7)" +.LASF1975: + .string "I2C_DMALST_ON I2C_CTL1_DMALST" +.LASF3708: + .string "MASK_SLL 0xfe00707f" +.LASF487: + .string "UINT64_C(x) __UINT64_C(x)" +.LASF3614: + .string "PRV_M 3" +.LASF4316: + .string "CSR_MNXTI 0x345" +.LASF2340: + .string "RCU_PREDV0_DIV1 CFG1_PREDV0(0)" +.LASF296: + .string "__GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1" +.LASF2639: + .string "TIMER_SMCFG_MSM BIT(7)" +.LASF3407: + .string "_REENT_SIGNAL_BUF(ptr) ((ptr)->_new._reent._signal_buf)" +.LASF4206: + .string "CSR_MHPMCOUNTER21 0xb15" +.LASF106: + .string "__INT_LEAST8_WIDTH__ 8" +.LASF2192: + .string "RCU_APB1EN_TIMER4EN BIT(3)" +.LASF4189: + .string "CSR_MHPMCOUNTER4 0xb04" +.LASF4401: + .string "vuint32_t" +.LASF4138: + .string "CSR_HPMCOUNTER12 0xc0c" +.LASF4301: + .string "CSR_MHPMCOUNTER18H 0xb92" +.LASF55: + .string "__UINT_LEAST32_TYPE__ long unsigned int" +.LASF2028: + .string "DBG_CTL_TIMER0_HOLD BIT(10)" +.LASF3475: + .string "SEEK_CUR 1" +.LASF1094: + .string "CAN_MODE_SLEEP ((uint8_t)0x04U)" +.LASF961: + .string "CAN_TMP_DLENC BITS(0,3)" +.LASF1084: + .string "CAN_NOMAILBOX ((uint8_t)0x03U)" +.LASF1344: + .string "EXMC_SNCTL_NRWTEN BIT(13)" +.LASF1794: + .string "GPIO_OSPEED_2MHZ ((uint8_t)0x02U)" +.LASF1132: + .string "DAC0_L12DH REG32(DAC + 0x0CU)" +.LASF3384: + .string "_REENT_CHECK_SIGNAL_BUF(ptr) " +.LASF2746: + .string "TIMER_INT_TRG TIMER_DMAINTEN_TRGIE" +.LASF361: + .string "__EXP(x) __ ##x ##__" +.LASF1521: + .string "FMC_OBSTAT_SPC BIT(1)" +.LASF2155: + .string "RCU_APB1RST_TIMER5RST BIT(4)" +.LASF2841: + .string "TIMER_ROS_STATE_ENABLE ((uint16_t)TIMER_CCHP_ROS)" +.LASF3726: + .string "MASK_SLLIW 0xfe00707f" +.LASF283: + .string "__GNUC_STDC_INLINE__ 1" +.LASF4082: + .string "MASK_CUSTOM0_RD 0x707f" +.LASF426: + .string "__int_fast16_t_defined 1" +.LASF1610: + .string "GPIO_BC(gpiox) REG32((gpiox) + 0x14U)" +.LASF4006: + .string "MASK_C_ADDIW 0xe003" +.LASF1079: + .string "CAN_BT_BS2_7TQ ((uint8_t)0x06U)" +.LASF284: + .string "__NO_INLINE__ 1" +.LASF2141: + .string "RCU_APB2RST_PARST BIT(2)" +.LASF1951: + .string "I2C_BIT_POS2(val) (((uint32_t)(val) & 0x1F0000U) >> 16)" +.LASF331: + .string "__O volatile" +.LASF2820: + .string "TIMER_EVENT_SRC_CH3G ((uint16_t)0x0010U)" +.LASF566: + .string "ADC_CTL0_SYNCM BITS(16,19)" +.LASF1954: + .string "I2C_STAT1_REG_OFFSET 0x18U" +.LASF868: + .string "CAN_F25DATA1(canx) REG32((canx) + 0x30CU)" +.LASF2634: + .string "TIMER_CTL1_ISO2 BIT(12)" +.LASF3687: + .string "MATCH_SLLI 0x1013" +.LASF969: + .string "CAN_TMDATA1_DB5 BITS(8,15)" +.LASF2476: + .string "SPI_CTL1_NSSP BIT(3)" +.LASF538: + .string "ADC_IOFF3(adcx) REG32((adcx) + 0x20U)" +.LASF4123: + .string "CSR_FFLAGS 0x1" +.LASF2735: + .string "TIMER_CCHP_OAEN BIT(14)" +.LASF1432: + .string "EXTI_FTEN_FTEN5 BIT(5)" +.LASF3342: + .string "_TIME_T_ __int_least64_t" +.LASF198: + .string "__FLT16_MAX__ 6.55040000000000000000000000000000000e+4F16" +.LASF3606: + .string "MIE_SEIE MIP_SEIP" +.LASF362: + .string "__have_longlong64 1" +.LASF851: + .string "CAN_F8DATA1(canx) REG32((canx) + 0x284U)" +.LASF894: + .string "CAN_STAT_WUIF BIT(3)" +.LASF4335: + .string "CAUSE_MISALIGNED_STORE 0x6" +.LASF29: + .string "__BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__" +.LASF1385: + .string "EXTI_INTEN_INTEN15 BIT(15)" +.LASF2452: + .string "SPI_STAT(spix) REG32((spix) + 0x08U)" +.LASF3480: + .string "stderr (_REENT->_stderr)" +.LASF403: + .string "__LEAST64 \"ll\"" +.LASF1947: + .string "I2C_REG_VAL(i2cx,offset) (REG32((i2cx) + (((uint32_t)(offset) & 0xFFFFU) >> 6)))" +.LASF1640: + .string "GPIO_CTL1_CTL10 BITS(10, 11)" +.LASF1058: + .string "CAN_BT_BS1_2TQ ((uint8_t)0x01U)" +.LASF1183: + .string "DAC_WAVE_MODE_LFSR CTL_DWM(1)" +.LASF2447: + .string "SPI0 (SPI_BASE + 0x0000F800U)" +.LASF1146: + .string "DAC_CTL_DWM0 BITS(6,7)" +.LASF3918: + .string "MASK_FLE_D 0xfe00707f" +.LASF2443: + .string "RTC_FLAG_OVERFLOW RTC_CTL_OVIF" +.LASF2599: + .string "TIMER_SMCFG(timerx) REG32((timerx) + 0x08U)" +.LASF2964: + .string "USART_CTL0_SBKCMD BIT(0)" +.LASF703: + .string "ADC_OVERSAMPLING_RATIO_MUL4 OVSCR_OVSR(1)" +.LASF1315: + .string "DMA_MEMORY_WIDTH_16BIT CHCTL_MWIDTH(1U)" +.LASF3789: + .string "MATCH_REMW 0x200603b" +.LASF2008: + .string "FWDGT_PSC_DIV128 ((uint8_t)PSC_PSC(5))" +.LASF4166: + .string "CSR_SPTBR 0x180" +.LASF3471: + .string "FOPEN_MAX 20" +.LASF3070: + .string "WWDGT_CFG_PSC_DIV1 CFG_PSC(0)" +.LASF1502: + .string "FMC_WS_WSCNT BITS(0,2)" +.LASF2940: + .string "USART2 (USART_BASE+(0x00000400U))" +.LASF0: + .string "__STDC__ 1" +.LASF1174: + .string "DAC_TRIGGER_T2_TRGO CTL_DTSEL(1)" +.LASF1689: + .string "GPIO_BOP_BOP6 BIT(6)" +.LASF2722: + .string "TIMER_PSC_PSC BITS(0,15)" +.LASF1107: + .string "CAN_INT_RFNE1 CAN_INTEN_RFNEIE1" +.LASF820: + .string "CAN_F5DATA0(canx) REG32((canx) + 0x268U)" +.LASF3540: + .string "SSTATUS_PUM 0x00040000" +.LASF3445: + .string "__FILE_defined " +.LASF2853: + .string "TIMER_CCHP_PROT_2 CCHP_PROT(3)" +.LASF387: + .string "__int20__ +2" +.LASF4046: + .string "MASK_C_AND 0xfc63" +.LASF1309: + .string "CHCTL_PWIDTH(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF3646: + .string "PTE_SOFT 0x300" +.LASF1904: + .string "I2C_CTL0_SALT BIT(13)" +.LASF1920: + .string "I2C_STAT0_ADDSEND BIT(1)" +.LASF858: + .string "CAN_F15DATA1(canx) REG32((canx) + 0x2BCU)" +.LASF3721: + .string "MATCH_AND 0x7033" +.LASF1210: + .string "DATA_ALIGN(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF3491: + .string "feof(p) __sfeof(p)" +.LASF1520: + .string "FMC_OBSTAT_OBERR BIT(0)" +.LASF2305: + .string "RCU_PLL_MUL19 (PLLMF_4 | CFG0_PLLMF(2))" +.LASF1569: + .string "OB_WP_7 ((uint32_t)0x00000080U)" +.LASF3681: + .string "MATCH_LUI 0x37" +.LASF617: + .string "ADC_DATAALIGN_RIGHT ((uint32_t)0x00000000U)" +.LASF3492: + .string "ferror(p) __sferror(p)" +.LASF350: + .string "__GNUC_PREREQ__(ma,mi) __GNUC_PREREQ(ma, mi)" +.LASF2254: + .string "RCU_SCSS_HXTAL CFG0_SCSS(1)" +.LASF1721: + .string "GPIO_BC_CR6 BIT(6)" +.LASF1445: + .string "EXTI_FTEN_FTEN18 BIT(18)" +.LASF3808: + .string "MASK_AMOMAXU_W 0xf800707f" +.LASF1594: + .string "OB_WP_ALL ((uint32_t)0xFFFFFFFFU)" +.LASF1497: + .string "OB_USER REG16((OB) + 0x02U)" +.LASF2534: + .string "I2S_AUDIOSAMPLE_16K ((uint32_t)16000U)" +.LASF1121: + .string "CRC_CTL REG32(CRC + 0x08U)" +.LASF2342: + .string "RCU_PREDV0_DIV3 CFG1_PREDV0(2)" +.LASF194: + .string "__FLT16_MIN_10_EXP__ (-4)" +.LASF653: + .string "ADC_INSERTED_CHANNEL ((uint8_t)0x02U)" +.LASF1901: + .string "I2C_CTL0_ACKEN BIT(10)" +.LASF2070: + .string "PMU_LDO_LOWPOWER PMU_CTL_LDOLP" +.LASF4393: + .string "eclic_get_intctrl" +.LASF3817: + .string "MATCH_AMOXOR_D 0x2000302f" +.LASF2172: + .string "RCU_AHBEN_DMA1EN BIT(1)" +.LASF2415: + .string "RTC_CNTL REG32(RTC + 0x1CU)" +.LASF2016: + .string "FWDGT_FLAG_PUD FWDGT_STAT_PUD" +.LASF1766: + .string "AFIO_EXTI0_SS BITS(0, 3)" +.LASF3009: + .string "USART_CTL2_REG_OFFSET (0x00000014U)" +.LASF413: + .string "__int32_t_defined 1" +.LASF11: + .string "__ATOMIC_ACQUIRE 2" +.LASF539: + .string "ADC_WDHT(adcx) REG32((adcx) + 0x24U)" +.LASF3850: + .string "MASK_DRET 0xffffffff" +.LASF3035: + .string "USART_CLEN_NONE CTL1_CLEN(0)" +.LASF175: + .string "__LDBL_MANT_DIG__ 113" +.LASF2549: + .string "I2S_MODE_SLAVETX I2SCTL_I2SOPMOD(0)" +.LASF2626: + .string "TIMER_CTL1_CCUC BIT(2)" +.LASF3341: + .string "_CLOCK_T_ unsigned long" +.LASF2562: + .string "SPI_DMA_RECEIVE ((uint8_t)0x01U)" +.LASF223: + .string "__FLT64_MIN_EXP__ (-1021)" +.LASF3309: + .string "__NULLABILITY_PRAGMA_PUSH " +.LASF4270: + .string "CSR_HPMCOUNTER18H 0xc92" +.LASF356: + .string "__MISC_VISIBLE 0" +.LASF18: + .string "__SIZEOF_LONG_LONG__ 8" +.LASF4028: + .string "MASK_C_JAL 0xe003" +.LASF548: + .string "ADC_IDATA3(adcx) REG32((adcx) + 0x48U)" +.LASF829: + .string "CAN_F14DATA0(canx) REG32((canx) + 0x2B0U)" +.LASF3705: + .string "MATCH_SUB 0x40000033" +.LASF1478: + .string "EXTI_PD_PD13 BIT(13)" +.LASF1556: + .string "OB_USER_USER ((uint32_t)0x00FF0000U)" +.LASF214: + .string "__FLT32_NORM_MAX__ 3.40282346638528859811704183484516925e+38F32" +.LASF922: + .string "CAN_RFIFO0_RFL0 BITS(0,1)" +.LASF1307: + .string "DMA_MEMORY_INCREASE_DISABLE ((uint8_t)0x00U)" +.LASF3313: + .string "__lock_annotate(x) " +.LASF3329: + .string "__pt_guarded_by(x) __lock_annotate(pt_guarded_by(x))" +.LASF232: + .string "__FLT64_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F64" +.LASF3819: + .string "MATCH_AMOOR_D 0x4000302f" +.LASF4115: + .string "MATCH_CUSTOM3_RS1_RS2 0x307b" +.LASF2290: + .string "RCU_PLL_MUL4 CFG0_PLLMF(2)" +.LASF2354: + .string "RCU_PREDV0_DIV15 CFG1_PREDV0(14)" +.LASF871: + .string "CAN_TMI(canx,bank) REG32((canx) + 0x180U + ((bank) * 0x10U))" +.LASF4237: + .string "CSR_MHPMEVENT21 0x335" +.LASF128: + .string "__INT_FAST32_MAX__ 0x7fffffff" +.LASF4007: + .string "MATCH_C_LDSP 0x6002" +.LASF2220: + .string "RCU_RSTSCK_SWRSTF BIT(28)" +.LASF2304: + .string "RCU_PLL_MUL18 (PLLMF_4 | CFG0_PLLMF(1))" +.LASF2670: + .string "TIMER_INTF_CH3OF BIT(12)" +.LASF3219: + .string "__unbounded " +.LASF4356: + .string "size_t" +.LASF3619: + .string "VM_SV39 9" +.LASF1903: + .string "I2C_CTL0_PECTRANS BIT(12)" +.LASF2712: + .string "TIMER_CHCTL2_CH1P BIT(5)" +.LASF3023: + .string "CTL0_WL(regval) (BIT(12) & ((uint32_t)(regval) << 12))" +.LASF282: + .string "__USER_LABEL_PREFIX__ " +.LASF1421: + .string "EXTI_RTEN_RTEN13 BIT(13)" +.LASF1207: + .string "DAC_LFSR_BITS9_0 DAC_WAVE_BIT_WIDTH_10" +.LASF532: + .string "ADC_CTL1(adcx) REG32((adcx) + 0x08U)" +.LASF1681: + .string "GPIO_OCTL_OCTL14 BIT(14)" +.LASF4215: + .string "CSR_MHPMCOUNTER30 0xb1e" +.LASF4396: + .string "eclic_set_pending" +.LASF4118: + .string "MASK_CUSTOM3_RD 0x707f" +.LASF3244: + .string "__CC_SUPPORTS_WARNING 1" +.LASF564: + .string "ADC_CTL0_DISIC BIT(12)" +.LASF1799: + .string "GPIO_EVENT_PORT_GPIOD ((uint8_t)0x03U)" +.LASF1066: + .string "CAN_BT_BS1_10TQ ((uint8_t)0x09U)" +.LASF1865: + .string "GPIO_TIMER1_FULL_REMAP ((uint32_t)0x00180300U)" +.LASF2248: + .string "CFG0_SCS(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF2318: + .string "RCU_PLL_MUL32 (PLLMF_4 | CFG0_PLLMF(15))" +.LASF1772: + .string "AFIO_EXTI6_SS BITS(8, 11)" +.LASF1254: + .string "DMA_CH5MADDR(dmax) REG32((dmax) + 0x78U)" +.LASF274: + .string "__FLT64X_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F64x" +.LASF4414: + .string "get_timer_freq" +.LASF3493: + .string "clearerr(p) __sclearerr(p)" +.LASF3172: + .string "_WANT_IO_C99_FORMATS 1" +.LASF2993: + .string "USART_CTL2_DENR BIT(6)" +.LASF1499: + .string "OB_WP1 REG16((OB) + 0x0AU)" +.LASF1124: + .string "CRC_CTL_RST BIT(0)" +.LASF3594: + .string "MIP_STIP (1 << IRQ_S_TIMER)" +.LASF994: + .string "CAN_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF180: + .string "__LDBL_MAX_10_EXP__ 4932" +.LASF2219: + .string "RCU_RSTSCK_PORRSTF BIT(27)" +.LASF85: + .string "__WINT_WIDTH__ 32" +.LASF1239: + .string "DMA_CH2CTL(dmax) REG32((dmax) + 0x30U)" +.LASF3125: + .string "__need_NULL" +.LASF2792: + .string "TIMER_DMACFG_DMATA_CH1CV DMACFG_DMATA(14)" +.LASF1537: + .string "FMC_OBSTAT_REG_OFFSET 0x1CU" +.LASF2719: + .string "TIMER_CHCTL2_CH3EN BIT(12)" +.LASF1674: + .string "GPIO_OCTL_OCTL7 BIT(7)" +.LASF2659: + .string "TIMER_INTF_UPIF BIT(0)" +.LASF2082: + .string "RCU_AHBEN REG32(RCU + 0x14U)" +.LASF2166: + .string "RCU_APB1RST_CAN0RST BIT(25)" +.LASF4140: + .string "CSR_HPMCOUNTER14 0xc0e" +.LASF541: + .string "ADC_RSQ0(adcx) REG32((adcx) + 0x2CU)" +.LASF2854: + .string "TIMER_BREAK_ENABLE ((uint16_t)TIMER_CCHP_BRKEN)" +.LASF2216: + .string "RCU_RSTSCK_IRC40KSTB BIT(1)" +.LASF2889: + .string "TIMER_IC_POLARITY_FALLING ((uint16_t)0x0002U)" +.LASF4241: + .string "CSR_MHPMEVENT25 0x339" +.LASF4208: + .string "CSR_MHPMCOUNTER23 0xb17" +.LASF988: + .string "CAN_FCTL_HBC1F BITS(8,13)" +.LASF3467: + .string "_IOLBF 1" +.LASF273: + .string "__FLT64X_MAX__ 1.18973149535723176508575932662800702e+4932F64x" +.LASF4369: + .string "nlbits" +.LASF2816: + .string "TIMER_EVENT_SRC_UPG ((uint16_t)0x0001U)" +.LASF2497: + .string "SPI_I2SCTL_I2SSTD BITS(4,5)" +.LASF525: + .string "USE_STDPERIPH_DRIVER " +.LASF3964: + .string "MASK_FCVT_D_LU 0xfff0007f" +.LASF2204: + .string "RCU_APB1EN_CAN0EN BIT(25)" +.LASF3686: + .string "MASK_ADDI 0x707f" +.LASF2303: + .string "RCU_PLL_MUL17 (PLLMF_4 | CFG0_PLLMF(0))" +.LASF3178: + .string "HAVE_INITFINI_ARRAY 1" +.LASF924: + .string "CAN_RFIFO0_RFO0 BIT(4)" +.LASF2344: + .string "RCU_PREDV0_DIV5 CFG1_PREDV0(4)" +.LASF2943: + .string "USART0 (USART_BASE+(0x0000F400U))" +.LASF3347: + .string "__SYS_LOCK_H__ " +.LASF3478: + .string "stdin (_REENT->_stdin)" +.LASF2106: + .string "RCU_CFG0_AHBPSC BITS(4,7)" +.LASF664: + .string "ADC_CHANNEL_4 ((uint8_t)0x04U)" +.LASF2367: + .string "RCU_PREDV1_DIV11 CFG1_PREDV1(10)" +.LASF1447: + .string "EXTI_SWIEV_SWIEV1 BIT(1)" +.LASF2246: + .string "CFG0_REG_OFFSET 0x04U" +.LASF102: + .string "__UINT32_MAX__ 0xffffffffUL" +.LASF3191: + .string "__RAND_MAX" +.LASF2891: + .string "TIMER_IC_SELECTION_DIRECTTI ((uint16_t)0x0001U)" +.LASF1374: + .string "EXTI_INTEN_INTEN4 BIT(4)" +.LASF2152: + .string "RCU_APB1RST_TIMER2RST BIT(1)" +.LASF1757: + .string "AFIO_PCF0_TIMER1_REMAP BITS(8, 9)" +.LASF3610: + .string "SIP_STIP MIP_STIP" +.LASF3194: + .string "__IMPORT " +.LASF2293: + .string "RCU_PLL_MUL7 CFG0_PLLMF(5)" +.LASF3913: + .string "MATCH_FLT_S 0xa0001053" +.LASF605: + .string "ADC_INSERTED_CHANNEL_AUTO ADC_CTL0_ICA" +.LASF3796: + .string "MASK_AMOXOR_W 0xf800707f" +.LASF833: + .string "CAN_F18DATA0(canx) REG32((canx) + 0x2D0U)" +.LASF1164: + .string "DACC_R12DH_DAC0_DH BITS(0,11)" +.LASF1327: + .string "ECLIC_PRIGROUP_LEVEL1_PRIO3 1" +.LASF2771: + .string "TIMER_DMA_CH2D ((uint16_t)TIMER_DMAINTEN_CH2DEN)" +.LASF2273: + .string "RCU_APB2_CKAHB_DIV1 CFG0_APB2PSC(0)" +.LASF1131: + .string "DAC0_R12DH REG32(DAC + 0x08U)" +.LASF2679: + .string "TIMER_CHCTL0_CH0MS BITS(0,1)" +.LASF1910: + .string "I2C_CTL1_DMAON BIT(11)" +.LASF108: + .string "__INT16_C(c) c" +.LASF318: + .string "__riscv_zifencei 2000000" +.LASF3747: + .string "MATCH_LD 0x3003" +.LASF275: + .string "__FLT64X_MIN__ 3.36210314311209350626267781732175260e-4932F64x" +.LASF528: + .string "ADC0 ADC_BASE" +.LASF1514: + .string "FMC_CTL_START BIT(6)" +.LASF3211: + .string "__ASMNAME(cname) __XSTRING (__USER_LABEL_PREFIX__) cname" +.LASF1075: + .string "CAN_BT_BS2_3TQ ((uint8_t)0x02U)" +.LASF3276: + .string "__returns_twice __attribute__((__returns_twice__))" +.LASF3855: + .string "MATCH_CSRRW 0x1073" +.LASF2027: + .string "DBG_CTL_WWDGT_HOLD BIT(9)" +.LASF4090: + .string "MASK_CUSTOM1_RS1 0x707f" +.LASF3848: + .string "MASK_MRET 0xffffffff" +.LASF165: + .string "__DBL_MAX_10_EXP__ 308" +.LASF3235: + .string "__GNUC_VA_LIST_COMPATIBILITY 1" +.LASF3356: + .string "__lock_try_acquire(lock) ((void) 0)" +.LASF37: + .string "__UINTMAX_TYPE__ long long unsigned int" +.LASF2618: + .string "TIMER_CTL0_UPDIS BIT(1)" +.LASF572: + .string "ADC_CTL1_RSTCLB BIT(3)" +.LASF4100: + .string "MASK_CUSTOM2 0x707f" +.LASF2357: + .string "RCU_PREDV1_DIV1 CFG1_PREDV1(0)" +.LASF3519: + .string "MSTATUS_UPIE 0x00000010" +.LASF1893: + .string "I2C_CTL0_SMBEN BIT(1)" +.LASF415: + .string "_UINT64_T_DECLARED " +.LASF503: + .string "AHB1_BUS_BASE ((uint32_t)0x40018000U)" +.LASF4275: + .string "CSR_HPMCOUNTER23H 0xc97" +.LASF3020: + .string "CTL0_WM(regval) (BIT(11) & ((uint32_t)(regval) << 11))" +.LASF3905: + .string "MATCH_FCVT_S_D 0x40100053" +.LASF2391: + .string "RCU_PLL2_MUL14 CFG1_PLL2MF(12)" +.LASF507: + .string "WWDGT_BASE (APB1_BUS_BASE + 0x00002C00U)" +.LASF1468: + .string "EXTI_PD_PD3 BIT(3)" +.LASF3137: + .string "TIMER_FREQ ((uint32_t)SystemCoreClock/4)" +.LASF1454: + .string "EXTI_SWIEV_SWIEV8 BIT(8)" +.LASF1629: + .string "GPIO_CTL0_MD5 BITS(20, 21)" +.LASF3405: + .string "_REENT_WCSRTOMBS_STATE(ptr) ((ptr)->_new._reent._wcsrtombs_state)" +.LASF1797: + .string "GPIO_EVENT_PORT_GPIOB ((uint8_t)0x01U)" +.LASF2177: + .string "RCU_AHBEN_USBFSEN BIT(12)" +.LASF965: + .string "CAN_TMDATA0_DB1 BITS(8,15)" +.LASF1803: + .string "GPIO_PORT_SOURCE_GPIOC ((uint8_t)0x02U)" +.LASF3474: + .string "SEEK_SET 0" +.LASF429: + .string "INTPTR_MIN (-__INTPTR_MAX__ - 1)" +.LASF1667: + .string "GPIO_OCTL_OCTL0 BIT(0)" +.LASF3338: + .string "_MACHINE__TYPES_H " +.LASF2932: + .string "TIMER_ETP_FALLING TIMER_SMCFG_ETP" +.LASF2025: + .string "DBG_CTL_STB_HOLD BIT(2)" +.LASF2823: + .string "TIMER_EVENT_SRC_BRKG ((uint16_t)0x0080U)" +.LASF1977: + .string "I2C_PEC_ENABLE I2C_CTL0_PECEN" +.LASF3940: + .string "MASK_FCVT_L_D 0xfff0007f" +.LASF1965: + .string "I2C_DUADEN_DISABLE ((uint32_t)0x00000000U)" +.LASF2871: + .string "TIMER_OCN_IDLE_STATE_LOW ((uint16_t)0x0000U)" +.LASF56: + .string "__UINT_LEAST64_TYPE__ long long unsigned int" +.LASF1584: + .string "OB_WP_22 ((uint32_t)0x00400000U)" +.LASF1122: + .string "CRC_DATA_DATA BITS(0, 31)" +.LASF1959: + .string "I2C_RECEIVER ((uint32_t)0x00000001U)" +.LASF2100: + .string "RCU_CTL_PLL1EN BIT(26)" +.LASF241: + .string "__FLT128_MAX_10_EXP__ 4932" +.LASF1367: + .string "EXTI_FTEN REG32(EXTI + 0x0CU)" +.LASF2026: + .string "DBG_CTL_FWDGT_HOLD BIT(8)" +.LASF1361: + .string "EXMC_NWAIT_POLARITY_HIGH ((uint32_t)0x00000200U)" +.LASF4158: + .string "CSR_SSTATUS 0x100" +.LASF1541: + .string "WS_WSCNT_0 WS_WSCNT(0)" +.LASF3869: + .string "MATCH_FSUB_S 0x8000053" +.LASF1282: + .string "DMA_FLAG_ADD(flag,shift) ((flag) << ((shift) * 4U))" +.LASF1743: + .string "GPIO_LOCK_LK12 BIT(12)" +.LASF682: + .string "ADC_INT_FLAG_EOC ADC_STAT_EOC" +.LASF51: + .string "__INT_LEAST32_TYPE__ long int" +.LASF865: + .string "CAN_F22DATA1(canx) REG32((canx) + 0x2F4U)" +.LASF2969: + .string "USART_CTL0_RBNEIE BIT(5)" +.LASF3311: + .string "__arg_type_tag(arg_kind,arg_idx,type_tag_idx) " +.LASF1589: + .string "OB_WP_27 ((uint32_t)0x08000000U)" +.LASF373: + .string "_SYS__INTSUP_H " +.LASF4026: + .string "MASK_C_ADDI 0xe003" +.LASF912: + .string "CAN_TSTAT_MAL2 BIT(18)" +.LASF2569: + .string "SPI_I2S_INT_FLAG_RBNE ((uint8_t)0x01U)" +.LASF1739: + .string "GPIO_LOCK_LK8 BIT(8)" +.LASF3054: + .string "USART_CTS_DISABLE CLT2_CTSEN(0)" +.LASF2800: + .string "TIMER_DMACFG_DMATC_3TRANSFER DMACFG_DMATC(2)" +.LASF2346: + .string "RCU_PREDV0_DIV7 CFG1_PREDV0(6)" +.LASF4000: + .string "MASK_C_EBREAK 0xffff" +.LASF2511: + .string "SPI_TRANSMODE_BDRECEIVE SPI_CTL0_BDEN" +.LASF3399: + .string "_REENT_MBTOWC_STATE(ptr) ((ptr)->_new._reent._mbtowc_state)" +.LASF2998: + .string "USART_GP_PSC BITS(0,7)" +.LASF798: + .string "CAN_TMI2(canx) REG32((canx) + 0x1A0U)" +.LASF3343: + .string "_CLOCKID_T_ unsigned long" +.LASF2135: + .string "RCU_INT_HXTALSTBIC BIT(19)" +.LASF4146: + .string "CSR_HPMCOUNTER20 0xc14" +.LASF2468: + .string "SPI_CTL0_FF16 BIT(11)" +.LASF3743: + .string "MATCH_LH 0x1003" +.LASF3695: + .string "MATCH_SRLI 0x5013" +.LASF809: + .string "CAN_RFIFOMDATA11(canx) REG32((canx) + 0x1CCU)" +.LASF2080: + .string "RCU_APB2RST REG32(RCU + 0x0CU)" +.LASF3685: + .string "MATCH_ADDI 0x13" +.LASF1588: + .string "OB_WP_26 ((uint32_t)0x04000000U)" +.LASF2109: + .string "RCU_CFG0_ADCPSC BITS(14,15)" +.LASF1196: + .string "DAC_WAVE_BIT_WIDTH_11 DWBW(10)" +.LASF389: + .string "long +4" +.LASF1265: + .string "DMA_INTC_HTFIFC BIT(2)" +.LASF1071: + .string "CAN_BT_BS1_15TQ ((uint8_t)0x0EU)" +.LASF3006: + .string "USART_STAT_REG_OFFSET (0x00000000U)" +.LASF2147: + .string "RCU_APB2RST_ADC1RST BIT(10)" +.LASF2251: + .string "RCU_CKSYSSRC_PLL CFG0_SCS(2)" +.LASF1896: + .string "I2C_CTL0_PECEN BIT(5)" +.LASF3337: + .string "__need_wint_t" +.LASF159: + .string "__FLT_HAS_QUIET_NAN__ 1" +.LASF4133: + .string "CSR_HPMCOUNTER7 0xc07" +.LASF630: + .string "ADC0_1_EXTTRIG_INSERTED_T0_TRGO CTL1_ETSIC(0)" +.LASF3582: + .string "MCONTROL_ACTION_TRACE_START 2" +.LASF3647: + .string "PTE_PPN_SHIFT 10" +.LASF2222: + .string "RCU_RSTSCK_WWDGTRSTF BIT(30)" +.LASF4294: + .string "CSR_MHPMCOUNTER11H 0xb8b" +.LASF2941: + .string "UART3 (USART_BASE+(0x00000800U))" +.LASF3386: + .string "_REENT_RAND_NEXT(ptr) ((ptr)->_new._reent._rand_next)" +.LASF2039: + .string "DBG_LOW_POWER_SLEEP DBG_CTL_SLP_HOLD" +.LASF589: + .string "ADC_ISQ_IL BITS(20,21)" +.LASF445: + .string "INT32_MAX (__INT32_MAX__)" +.LASF2373: + .string "CFG1_PLL1MF(regval) (BITS(8,11) & ((uint32_t)(regval) << 8))" +.LASF680: + .string "ADC_INT_EOIC ADC_STAT_EOIC" +.LASF2844: + .string "TIMER_IOS_STATE_DISABLE ((uint16_t)0x0000U)" +.LASF3473: + .string "L_tmpnam FILENAME_MAX" +.LASF1: + .string "__STDC_VERSION__ 201710L" +.LASF2763: + .string "TIMER_FLAG_BRK TIMER_INTF_BRKIF" +.LASF911: + .string "CAN_TSTAT_MTFNERR2 BIT(17)" +.LASF2359: + .string "RCU_PREDV1_DIV3 CFG1_PREDV1(2)" +.LASF2850: + .string "TIMER_CCHP_PROT_OFF CCHP_PROT(0)" +.LASF4315: + .string "CSR_MTVT 0x307" +.LASF3252: + .string "__const const" +.LASF3192: + .string "__RAND_MAX 0x7fffffff" +.LASF657: + .string "ADC_INSERTED_CHANNEL_1 ((uint8_t)0x01U)" +.LASF3254: + .string "__volatile volatile" +.LASF136: + .string "__INTPTR_MAX__ 0x7fffffff" +.LASF888: + .string "CAN_CTL_TTC BIT(7)" +.LASF1295: + .string "DMA_INT_FLAG_ERR DMA_INTF_ERRIF" +.LASF2232: + .string "RCU_DSV_DSLPVS BITS(0,1)" +.LASF3520: + .string "MSTATUS_SPIE 0x00000020" +.LASF2057: + .string "CTL_LVDT(regval) (BITS(5,7)&((uint32_t)(regval) << 5))" +.LASF224: + .string "__FLT64_MIN_10_EXP__ (-307)" +.LASF1745: + .string "GPIO_LOCK_LK14 BIT(14)" +.LASF621: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH0 CTL1_ETSRC(0)" +.LASF2649: + .string "TIMER_DMAINTEN_CMTIE BIT(5)" +.LASF2107: + .string "RCU_CFG0_APB1PSC BITS(8,10)" +.LASF606: + .string "CTL0_SYNCM(regval) (BITS(16,19) & ((uint32_t)(regval) << 16))" +.LASF1754: + .string "AFIO_PCF0_USART1_REMAP BIT(3)" +.LASF3946: + .string "MASK_FCLASS_D 0xfff0707f" +.LASF4228: + .string "CSR_MHPMEVENT12 0x32c" +.LASF2510: + .string "SPI_TRANSMODE_RECEIVEONLY SPI_CTL0_RO" +.LASF4188: + .string "CSR_MHPMCOUNTER3 0xb03" +.LASF4244: + .string "CSR_MHPMEVENT28 0x33c" +.LASF1820: + .string "GPIO_EVENT_PIN_14 ((uint8_t)0x0EU)" +.LASF3769: + .string "MATCH_MULH 0x2001033" +.LASF2849: + .string "CCHP_PROT(regval) ((uint16_t)(BITS(8, 9) & ((uint32_t)(regval) << 8U)))" +.LASF4073: + .string "MATCH_C_FSWSP 0xe002" +.LASF2285: + .string "RCU_PLLSRC_HXTAL RCU_CFG0_PLLSEL" +.LASF393: + .string "__INT16 \"h\"" +.LASF2754: + .string "TIMER_INT_FLAG_TRG TIMER_INT_TRG" +.LASF2325: + .string "RCU_CKOUT0SRC_NONE CFG0_CKOUT0SEL(0)" +.LASF4371: + .string "priority" +.LASF956: + .string "CAN_TMI_TEN BIT(0)" +.LASF4347: + .string "__uint8_t" +.LASF167: + .string "__DBL_MAX__ ((double)1.79769313486231570814527423731704357e+308L)" +.LASF2464: + .string "SPI_CTL0_LF BIT(7)" +.LASF3454: + .string "__SEOF 0x0020" +.LASF3414: + .string "_GLOBAL_ATEXIT (_GLOBAL_REENT->_atexit)" +.LASF600: + .string "ADC_FLAG_EOIC ADC_STAT_EOIC" +.LASF1128: + .string "DAC1 (1U)" +.LASF3981: + .string "MATCH_FNMADD_S 0x4f" +.LASF679: + .string "ADC_INT_EOC ADC_STAT_EOC" +.LASF3129: + .string "TIMER_MSIP 0xFFC" +.LASF3438: + .string "_CLOCKID_T_DECLARED " +.LASF3123: + .string "NULL" +.LASF781: + .string "CAN1 (CAN0 + 0x00000400U)" +.LASF3545: + .string "DCSR_FULLRESET (1<<28)" +.LASF1346: + .string "EXMC_SNTCFG_ASET BITS(0,3)" +.LASF117: + .string "__UINT8_C(c) c" +.LASF3220: + .string "__ptrvalue " +.LASF3566: + .string "MCONTROL_SELECT (1<<19)" +.LASF4311: + .string "CSR_MHPMCOUNTER28H 0xb9c" +.LASF330: + .string "__I volatile const" +.LASF1891: + .string "I2C_FMPCFG(i2cx) REG32((i2cx) + 0x90U)" +.LASF3645: + .string "PTE_D 0x080" +.LASF1002: + .string "TSTAT_REG_OFFSET ((uint8_t)0x08U)" +.LASF2847: + .string "TIMER_OUTAUTO_ENABLE ((uint16_t)TIMER_CCHP_OAEN)" +.LASF935: + .string "CAN_INTEN_RFFIE1 BIT(5)" +.LASF2266: + .string "CFG0_APB1PSC(regval) (BITS(8,10) & ((uint32_t)(regval) << 8))" +.LASF3202: + .string "_NOINLINE __attribute__ ((__noinline__))" +.LASF1713: + .string "GPIO_BOP_CR14 BIT(30)" +.LASF648: + .string "WDHT_WDHT(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF3105: + .string "__need_size_t" +.LASF1807: + .string "GPIO_EVENT_PIN_1 ((uint8_t)0x01U)" +.LASF228: + .string "__FLT64_MAX__ 1.79769313486231570814527423731704357e+308F64" +.LASF2253: + .string "RCU_SCSS_IRC8M CFG0_SCSS(0)" +.LASF176: + .string "__LDBL_DIG__ 33" +.LASF4408: + .string "delta_mtime" +.LASF1092: + .string "CAN_MODE_INITIALIZE ((uint8_t)0x01U)" +.LASF2986: + .string "USART_CTL1_LMEN BIT(14)" +.LASF34: + .string "__WCHAR_TYPE__ int" +.LASF977: + .string "CAN_RFIFOMP_FI BITS(8,15)" +.LASF1882: + .string "I2C_CTL0(i2cx) REG32((i2cx) + 0x00U)" +.LASF845: + .string "CAN_F2DATA1(canx) REG32((canx) + 0x254U)" +.LASF1636: + .string "GPIO_CTL1_CTL8 BITS(2, 3)" +.LASF1363: + .string "EXTI EXTI_BASE" +.LASF2038: + .string "DBG_CTL_CAN1_HOLD BIT(21)" +.LASF4127: + .string "CSR_TIME 0xc01" +.LASF2002: + .string "PSC_PSC(regval) (BITS(0,2) & ((uint32_t)(regval) << 0))" +.LASF1779: + .string "AFIO_EXTI13_SS BITS(4, 7)" +.LASF1397: + .string "EXTI_EVEN_EVEN8 BIT(8)" +.LASF324: + .string "GD32VF103V_EVAL 1" +.LASF1337: + .string "EXMC_SNCTL_NRBKEN BIT(0)" +.LASF2024: + .string "DBG_CTL_DSLP_HOLD BIT(1)" +.LASF642: + .string "ADC_SAMPLETIME_28POINT5 SAMPTX_SPT(3)" +.LASF792: + .string "CAN_TMDATA00(canx) REG32((canx) + 0x188U)" +.LASF4098: + .string "MASK_CUSTOM1_RD_RS1_RS2 0x707f" +.LASF2123: + .string "RCU_INT_PLL2STBIF BIT(6)" +.LASF84: + .string "__WCHAR_WIDTH__ 32" +.LASF4420: + .string "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers\\n200_func.c" +.LASF2252: + .string "CFG0_SCSS(regval) (BITS(2,3) & ((uint32_t)(regval) << 2))" +.LASF687: + .string "ADC_RESOLUTION_8B OVSCR_DRES(2)" +.LASF513: + .string "BKP_BASE (APB1_BUS_BASE + 0x00006C00U)" +.LASF2320: + .string "RCU_CKUSB_CKPLL_DIV1_5 CFG0_USBPSC(0)" +.LASF688: + .string "ADC_RESOLUTION_6B OVSCR_DRES(3)" +.LASF4036: + .string "MASK_C_SRAI 0xec03" +.LASF3814: + .string "MASK_SC_W 0xf800707f" +.LASF2339: + .string "CFG1_PREDV0(regval) (BITS(0,3) & ((uint32_t)(regval) << 0))" +.LASF772: + .string "OCTL_RCCV(regval) (BITS(0,6) & ((uint32_t)(regval) << 0))" +.LASF1944: + .string "I2C_RT_RISETIME BITS(0,5)" +.LASF2909: + .string "TIMER_TRI_OUT_SRC_ENABLE CTL1_MMC(1)" +.LASF2361: + .string "RCU_PREDV1_DIV5 CFG1_PREDV1(4)" +.LASF995: + .string "CAN_REG_VAL(canx,offset) (REG32((canx) + ((uint32_t)(offset) >> 6)))" +.LASF3212: + .string "__ptr_t void *" +.LASF967: + .string "CAN_TMDATA0_DB3 BITS(24,31)" +.LASF2440: + .string "RTC_INT_FLAG_OVERFLOW RTC_CTL_OVIF" +.LASF2064: + .string "PMU_LVDT_6 CTL_LVDT(6)" +.LASF4018: + .string "MASK_C_FLW 0xe003" +.LASF3366: + .string "_RAND48_SEED_2 (0x1234)" +.LASF1914: + .string "I2C_SADDR0_ADDRESS_H BITS(8,9)" +.LASF3327: + .string "__nosanitizethread " +.LASF1102: + .string "CAN_TIMEOUT ((uint32_t)0x0000FFFFU)" +.LASF1105: + .string "CAN_INT_RFF0 CAN_INTEN_RFFIE0" +.LASF2703: + .string "TIMER_CHCTL1_CH2CAPPSC BITS(2,3)" +.LASF1573: + .string "OB_WP_11 ((uint32_t)0x00000800U)" +.LASF81: + .string "__INT_WIDTH__ 32" +.LASF765: + .string "BKP_TPCS_TIR BIT(1)" +.LASF3426: + .string "_ID_T_DECLARED " +.LASF1483: + .string "EXTI_PD_PD18 BIT(18)" +.LASF202: + .string "__FLT16_DENORM_MIN__ 5.96046447753906250000000000000000000e-8F16" +.LASF3423: + .string "__daddr_t_defined " +.LASF612: + .string "ADC_DAUL_INSERTED_PARALLEL CTL0_SYNCM(5)" +.LASF437: + .string "UINT_LEAST8_MAX (__UINT_LEAST8_MAX__)" +.LASF1659: + .string "GPIO_ISTAT_ISTAT8 BIT(8)" +.LASF3813: + .string "MATCH_SC_W 0x1800202f" +.LASF780: + .string "CAN0 CAN_BASE" +.LASF399: + .string "__FAST64 \"ll\"" +.LASF1133: + .string "DAC0_R8DH REG32(DAC + 0x10U)" +.LASF1586: + .string "OB_WP_24 ((uint32_t)0x01000000U)" +.LASF173: + .string "__DBL_HAS_INFINITY__ 1" +.LASF1053: + .string "CAN_BT_SJW_1TQ ((uint8_t)0x00U)" +.LASF3536: + .string "SSTATUS_SPIE 0x00000020" +.LASF142: + .string "__FLT_EVAL_METHOD_TS_18661_3__ 0" +.LASF3679: + .string "MATCH_JAL 0x6f" +.LASF30: + .string "__FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__" +.LASF1921: + .string "I2C_STAT0_BTC BIT(2)" +.LASF3375: + .string "_REENT_STDIO_STREAM(var,index) &(var)->__sf[index]" +.LASF33: + .string "__PTRDIFF_TYPE__ int" +.LASF2880: + .string "TIMER_OC_SHADOW_ENABLE ((uint16_t)0x0008U)" +.LASF987: + .string "CAN_FCTL_FLD BIT(0)" +.LASF4383: + .string "old_cliccfg" +.LASF1426: + .string "EXTI_RTEN_RTEN18 BIT(18)" +.LASF3500: + .string "_NEWLIB_ALLOCA_H " +.LASF3008: + .string "USART_CTL1_REG_OFFSET (0x00000010U)" +.LASF1438: + .string "EXTI_FTEN_FTEN11 BIT(11)" +.LASF113: + .string "__INT_LEAST64_MAX__ 0x7fffffffffffffffLL" +.LASF93: + .string "__SIG_ATOMIC_MAX__ 0x7fffffff" +.LASF4418: + .string "switch_m2u_mode" +.LASF1897: + .string "I2C_CTL0_GCEN BIT(6)" +.LASF1039: + .string "ERR_ERRN(regval) (BITS(4,6) & ((uint32_t)(regval) << 4))" +.LASF3040: + .string "CTL1_CPL(regval) (BIT(10) & ((uint32_t)(regval) << 10))" +.LASF1995: + .string "FWDGT_RLD REG32((FWDGT) + 0x00000008U)" +.LASF2767: + .string "TIMER_FLAG_CH3O TIMER_INTF_CH3OF" +.LASF3398: + .string "_REENT_MBLEN_STATE(ptr) ((ptr)->_new._reent._mblen_state)" +.LASF3457: + .string "__SAPP 0x0100" +.LASF2857: + .string "TIMER_CH_1 ((uint16_t)0x0001U)" +.LASF1798: + .string "GPIO_EVENT_PORT_GPIOC ((uint8_t)0x02U)" +.LASF3428: + .string "_OFF_T_DECLARED " +.LASF3458: + .string "__SSTR 0x0200" +.LASF1003: + .string "RFIFO0_REG_OFFSET ((uint8_t)0x0CU)" +.LASF4236: + .string "CSR_MHPMEVENT20 0x334" +.LASF623: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH2 CTL1_ETSRC(2)" +.LASF2368: + .string "RCU_PREDV1_DIV12 CFG1_PREDV1(11)" +.LASF1845: + .string "GPIO_PIN_7 BIT(7)" +.LASF958: + .string "CAN_TMI_FF BIT(2)" +.LASF2213: + .string "RCU_BDCTL_RTCEN BIT(15)" +.LASF2019: + .string "DBG DBG_BASE" +.LASF1605: + .string "GPIO_CTL0(gpiox) REG32((gpiox) + 0x00U)" +.LASF2787: + .string "TIMER_DMACFG_DMATA_CNT DMACFG_DMATA(9)" +.LASF2760: + .string "TIMER_FLAG_CH3 TIMER_INTF_CH3IF" +.LASF3489: + .string "__sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF)))" +.LASF1390: + .string "EXTI_EVEN_EVEN1 BIT(1)" +.LASF976: + .string "CAN_RFIFOMP_DLENC BITS(0,3)" +.LASF4072: + .string "MASK_C_SWSP 0xe003" +.LASF3909: + .string "MATCH_FSQRT_D 0x5a000053" +.LASF1434: + .string "EXTI_FTEN_FTEN7 BIT(7)" +.LASF3098: + .string "_SIZE_T_DEFINED " +.LASF2779: + .string "TIMER_DMACFG_DMATA_CTL1 DMACFG_DMATA(1)" +.LASF436: + .string "INT_LEAST8_MAX (__INT_LEAST8_MAX__)" +.LASF4412: + .string "get_cycle_value" +.LASF1392: + .string "EXTI_EVEN_EVEN3 BIT(3)" +.LASF1572: + .string "OB_WP_10 ((uint32_t)0x00000400U)" +.LASF3259: + .string "__used __attribute__((__used__))" +.LASF3418: + .string "_BLKSIZE_T_DECLARED " +.LASF2277: + .string "RCU_APB2_CKAHB_DIV16 CFG0_APB2PSC(7)" +.LASF2020: + .string "DBG_ID REG32(DBG + 0x00U)" +.LASF3325: + .string "__no_lock_analysis __lock_annotate(no_thread_safety_analysis)" +.LASF17: + .string "__SIZEOF_LONG__ 4" +.LASF2006: + .string "FWDGT_PSC_DIV32 ((uint8_t)PSC_PSC(3))" +.LASF2720: + .string "TIMER_CHCTL2_CH3P BIT(13)" +.LASF2926: + .string "TIMER_MASTER_SLAVE_MODE_DISABLE ((uint32_t)0x00000000U)" +.LASF1591: + .string "OB_WP_29 ((uint32_t)0x20000000U)" +.LASF394: + .string "__INT32 \"l\"" +.LASF760: + .string "BKP_OCTL_ASOEN BIT(8)" +.LASF1292: + .string "DMA_INT_FLAG_G DMA_INTF_GIF" +.LASF1329: + .string "ECLIC_PRIGROUP_LEVEL3_PRIO1 3" +.LASF4291: + .string "CSR_MHPMCOUNTER8H 0xb88" +.LASF3164: + .string "ECLIC_GROUP_LEVEL0_PRIO4 0" +.LASF3921: + .string "MATCH_FEQ_D 0xa2002053" +.LASF4165: + .string "CSR_SIP 0x144" +.LASF2379: + .string "RCU_PLL1_MUL13 CFG1_PLL1MF(11)" +.LASF346: + .string "__NEWLIB__ 4" +.LASF3224: + .string "__END_DECLS " +.LASF1652: + .string "GPIO_ISTAT_ISTAT1 BIT(1)" +.LASF2723: + .string "TIMER_CAR_CARL BITS(0,15)" +.LASF3737: + .string "MATCH_SRLW 0x503b" +.LASF3119: + .string "_GCC_WCHAR_T " +.LASF4200: + .string "CSR_MHPMCOUNTER15 0xb0f" +.LASF1266: + .string "DMA_INTC_ERRIFC BIT(3)" +.LASF4160: + .string "CSR_STVEC 0x105" +.LASF1408: + .string "EXTI_RTEN_RTEN0 BIT(0)" +.LASF2184: + .string "RCU_APB2EN_ADC0EN BIT(9)" +.LASF2081: + .string "RCU_APB1RST REG32(RCU + 0x10U)" +.LASF1749: + .string "AFIO_EC_PORT BITS(4, 6)" +.LASF1029: + .string "GET_RFIFOMDATA0_DB1(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF3825: + .string "MATCH_AMOMAX_D 0xa000302f" +.LASF1506: + .string "FMC_STAT_PGERR BIT(2)" +.LASF259: + .string "__FLT32X_NORM_MAX__ 1.79769313486231570814527423731704357e+308F32x" +.LASF2718: + .string "TIMER_CHCTL2_CH2NP BIT(11)" +.LASF2770: + .string "TIMER_DMA_CH1D ((uint16_t)TIMER_DMAINTEN_CH1DEN)" +.LASF4409: + .string "mtime_freq" +.LASF2961: + .string "USART_DATA_DATA BITS(0,8)" +.LASF364: + .string "___int8_t_defined 1" +.LASF1459: + .string "EXTI_SWIEV_SWIEV13 BIT(13)" +.LASF4142: + .string "CSR_HPMCOUNTER16 0xc10" +.LASF2668: + .string "TIMER_INTF_CH1OF BIT(10)" +.LASF1932: + .string "I2C_STAT0_SMBALT BIT(15)" +.LASF459: + .string "INT_FAST16_MIN (-__INT_FAST16_MAX__ - 1)" +.LASF2214: + .string "RCU_BDCTL_BKPRST BIT(16)" +.LASF931: + .string "CAN_INTEN_RFNEIE0 BIT(1)" +.LASF2645: + .string "TIMER_DMAINTEN_CH0IE BIT(1)" +.LASF953: + .string "CAN_BT_SJW BITS(24,25)" +.LASF2755: + .string "TIMER_INT_FLAG_BRK TIMER_INT_BRK" +.LASF2018: + .string "GD32VF103_DBG_H " +.LASF439: + .string "INT16_MAX (__INT16_MAX__)" +.LASF112: + .string "__INT_LEAST32_WIDTH__ 32" +.LASF2455: + .string "SPI_RCRC(spix) REG32((spix) + 0x14U)" +.LASF1436: + .string "EXTI_FTEN_FTEN9 BIT(9)" +.LASF1192: + .string "DAC_WAVE_BIT_WIDTH_7 DWBW(6)" +.LASF151: + .string "__FLT_DECIMAL_DIG__ 9" +.LASF3033: + .string "USART_LBLEN_11B CTL1_LBLEN(1)" +.LASF3824: + .string "MASK_AMOMIN_D 0xf800707f" +.LASF1373: + .string "EXTI_INTEN_INTEN3 BIT(3)" +.LASF1838: + .string "GPIO_PIN_0 BIT(0)" +.LASF1096: + .string "CAN_FILTERBITS_32BIT ((uint8_t)0x01U)" +.LASF827: + .string "CAN_F12DATA0(canx) REG32((canx) + 0x2A0U)" +.LASF4050: + .string "MASK_C_ADDW 0xfc63" +.LASF2000: + .string "FWDGT_STAT_PUD BIT(0)" +.LASF4155: + .string "CSR_HPMCOUNTER29 0xc1d" +.LASF3502: + .string "alloca(size) __builtin_alloca(size)" +.LASF636: + .string "ADC0_1_EXTTRIG_INSERTED_EXTI_15 CTL1_ETSIC(6)" +.LASF2953: + .string "USART_STAT_NERR BIT(2)" +.LASF946: + .string "CAN_ERR_BOERR BIT(2)" +.LASF3980: + .string "MASK_FNMSUB_S 0x600007f" +.LASF844: + .string "CAN_F1DATA1(canx) REG32((canx) + 0x24CU)" +.LASF2696: + .string "TIMER_CHCTL1_CH2COMCTL BITS(4,6)" +.LASF4403: + .string "upper" +.LASF261: + .string "__FLT32X_EPSILON__ 2.22044604925031308084726333618164062e-16F32x" +.LASF3487: + .string "__sfeof(p) ((int)(((p)->_flags & __SEOF) != 0))" +.LASF4053: + .string "MATCH_C_BEQZ 0xc001" +.LASF2224: + .string "RCU_AHBRST_USBFSRST BIT(12)" +.LASF4357: + .string "long double" +.LASF3084: + .string "___int_ptrdiff_t_h " +.LASF3369: + .string "_RAND48_MULT_2 (0x0005)" +.LASF1498: + .string "OB_WP0 REG16((OB) + 0x08U)" +.LASF1581: + .string "OB_WP_19 ((uint32_t)0x00080000U)" +.LASF2501: + .string "SPI_I2SCTL_I2SSEL BIT(11)" +.LASF3203: + .string "_NOINLINE_STATIC _NOINLINE static" +.LASF2049: + .string "PMU_CTL_STBRST BIT(3)" +.LASF3401: + .string "_REENT_MBRLEN_STATE(ptr) ((ptr)->_new._reent._mbrlen_state)" +.LASF2577: + .string "SPI_FLAG_CRCERR SPI_STAT_CRCERR" +.LASF3648: + .string "PTE_TABLE(PTE) (((PTE) & (PTE_V | PTE_R | PTE_W | PTE_X)) == PTE_V)" +.LASF2622: + .string "TIMER_CTL0_CAM BITS(5,6)" +.LASF3240: + .string "__CC_SUPPORTS_INLINE 1" +.LASF1503: + .string "FMC_KEY_KEY BITS(0,31)" +.LASF1583: + .string "OB_WP_21 ((uint32_t)0x00200000U)" +.LASF3344: + .string "_TIMER_T_ unsigned long" +.LASF3568: + .string "MCONTROL_ACTION (0x3f<<12)" +.LASF2387: + .string "RCU_PLL2_MUL10 CFG1_PLL2MF(8)" +.LASF339: + .string "LXTAL_VALUE ((uint32_t)32768)" +.LASF480: + .string "INT8_C(x) __INT8_C(x)" +.LASF3857: + .string "MATCH_CSRRS 0x2073" +.LASF1170: + .string "DAC0_DO_DAC0_DO BITS(0,11)" +.LASF3074: + .string "N200_FUNC_H " +.LASF4129: + .string "CSR_HPMCOUNTER3 0xc03" +.LASF4114: + .string "MASK_CUSTOM3_RS1 0x707f" +.LASF1693: + .string "GPIO_BOP_BOP10 BIT(10)" +.LASF787: + .string "CAN_INTEN(canx) REG32((canx) + 0x14U)" +.LASF1626: + .string "GPIO_CTL0_CTL3 BITS(14, 15)" +.LASF2881: + .string "TIMER_OC_SHADOW_DISABLE ((uint16_t)0x0000U)" +.LASF1709: + .string "GPIO_BOP_CR10 BIT(26)" +.LASF2620: + .string "TIMER_CTL0_SPM BIT(3)" +.LASF4096: + .string "MASK_CUSTOM1_RD_RS1 0x707f" +.LASF3101: + .string "___int_size_t_h " +.LASF2148: + .string "RCU_APB2RST_TIMER0RST BIT(11)" +.LASF4254: + .string "CSR_INSTRETH 0xc82" +.LASF3962: + .string "MASK_FCVT_D_L 0xfff0007f" +.LASF1458: + .string "EXTI_SWIEV_SWIEV12 BIT(12)" +.LASF2835: + .string "TIMER_CKDIV_DIV2 CTL0_CKDIV(1)" +.LASF2711: + .string "TIMER_CHCTL2_CH1EN BIT(4)" +.LASF2441: + .string "RTC_FLAG_SECOND RTC_CTL_SCIF" +.LASF1563: + .string "OB_WP_1 ((uint32_t)0x00000002U)" +.LASF231: + .string "__FLT64_EPSILON__ 2.22044604925031308084726333618164062e-16F64" +.LASF4044: + .string "MASK_C_OR 0xfc63" +.LASF1874: + .string "GPIO_SWJ_NONJTRST_REMAP ((uint32_t)0x00300100U)" +.LASF3315: + .string "__locks_exclusive(...) __lock_annotate(exclusive_lock_function(__VA_ARGS__))" +.LASF3755: + .string "MATCH_SB 0x23" +.LASF3441: + .string "_USECONDS_T_DECLARED " +.LASF4422: + .string "SystemCoreClock" +.LASF4257: + .string "CSR_HPMCOUNTER5H 0xc85" +.LASF3273: + .string "__nonnull_all __attribute__((__nonnull__))" +.LASF3711: + .string "MATCH_SLTU 0x3033" +.LASF3379: + .string "_REENT_CHECK_MP(ptr) " +.LASF2766: + .string "TIMER_FLAG_CH2O TIMER_INTF_CH2OF" +.LASF1814: + .string "GPIO_EVENT_PIN_8 ((uint8_t)0x08U)" +.LASF1195: + .string "DAC_WAVE_BIT_WIDTH_10 DWBW(9)" +.LASF808: + .string "CAN_RFIFOMDATA01(canx) REG32((canx) + 0x1C8U)" +.LASF3893: + .string "MATCH_FDIV_D 0x1a000053" +.LASF1579: + .string "OB_WP_17 ((uint32_t)0x00020000U)" +.LASF277: + .string "__FLT64X_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F64x" +.LASF4405: + .string "cpu_freq" +.LASF2048: + .string "PMU_CTL_WURST BIT(2)" +.LASF3196: + .string "_BEGIN_STD_C " +.LASF3846: + .string "MASK_HRET 0xffffffff" +.LASF873: + .string "CAN_TMDATA0(canx,bank) REG32((canx) + 0x188U + ((bank) * 0x10U))" +.LASF158: + .string "__FLT_HAS_INFINITY__ 1" +.LASF4143: + .string "CSR_HPMCOUNTER17 0xc11" +.LASF4027: + .string "MATCH_C_JAL 0x2001" +.LASF3314: + .string "__lockable __lock_annotate(lockable)" +.LASF3881: + .string "MATCH_FMIN_S 0x28000053" +.LASF1429: + .string "EXTI_FTEN_FTEN2 BIT(2)" +.LASF3713: + .string "MATCH_XOR 0x4033" +.LASF3543: + .string "DCSR_XDEBUGVER (3U<<30)" +.LASF2563: + .string "SPI_CRC_TX ((uint8_t)0x00U)" +.LASF73: + .string "__WCHAR_MAX__ 0x7fffffff" +.LASF2365: + .string "RCU_PREDV1_DIV9 CFG1_PREDV1(8)" +.LASF4179: + .string "CSR_TSELECT 0x7a0" +.LASF3041: + .string "USART_CPL_LOW CTL1_CPL(0)" +.LASF4052: + .string "MASK_C_J 0xe003" +.LASF3835: + .string "MATCH_SC_D 0x1800302f" +.LASF2866: + .string "TIMER_OCN_POLARITY_HIGH ((uint16_t)0x0000U)" +.LASF2363: + .string "RCU_PREDV1_DIV7 CFG1_PREDV1(6)" +.LASF4234: + .string "CSR_MHPMEVENT18 0x332" +.LASF1218: + .string "DAC_TRIANGLE_AMPLITUDE_31 DAC_WAVE_BIT_WIDTH_5" +.LASF2092: + .string "RCU_CTL_IRC8MADJ BITS(3,7)" +.LASF524: + .string "USBFS_BASE (AHB1_BUS_BASE + 0x0FFE8000U)" +.LASF2907: + .string "CTL1_MMC(regval) (BITS(4, 6) & ((uint32_t)(regval) << 4U))" +.LASF3752: + .string "MASK_LHU 0x707f" +.LASF2212: + .string "RCU_BDCTL_RTCSRC BITS(8,9)" +.LASF660: + .string "ADC_CHANNEL_0 ((uint8_t)0x00U)" +.LASF209: + .string "__FLT32_MIN_10_EXP__ (-37)" +.LASF3179: + .string "_HAVE_LONG_DOUBLE 1" +.LASF122: + .string "__UINT_LEAST64_MAX__ 0xffffffffffffffffULL" +.LASF3392: + .string "_REENT_MP_P5S(ptr) ((ptr)->_p5s)" +.LASF2925: + .string "TIMER_MASTER_SLAVE_MODE_ENABLE TIMER_SMCFG_MSM" +.LASF2695: + .string "TIMER_CHCTL1_CH2COMSEN BIT(3)" +.LASF1950: + .string "I2C_REG_VAL2(i2cx,offset) (REG32((i2cx) + ((uint32_t)(offset) >> 22)))" +.LASF269: + .string "__FLT64X_MIN_10_EXP__ (-4931)" +.LASF601: + .string "ADC_FLAG_STIC ADC_STAT_STIC" +.LASF3165: + .string "ECLIC_GROUP_LEVEL1_PRIO3 1" +.LASF306: + .string "__riscv_mul 1" +.LASF2744: + .string "TIMER_INT_CH3 TIMER_DMAINTEN_CH3IE" +.LASF1804: + .string "GPIO_PORT_SOURCE_GPIOD ((uint8_t)0x03U)" +.LASF4279: + .string "CSR_HPMCOUNTER27H 0xc9b" +.LASF64: + .string "__UINT_FAST64_TYPE__ long long unsigned int" +.LASF3004: + .string "USART_REG_VAL2(usartx,offset) (REG32((usartx) + ((uint32_t)(offset) >> 22)))" +.LASF1906: + .string "I2C_CTL1_I2CCLK BITS(0,5)" +.LASF921: + .string "CAN_TSTAT_TMLS2 BIT(31)" +.LASF2658: + .string "TIMER_DMAINTEN_TRGDEN BIT(14)" +.LASF4074: + .string "MASK_C_FSWSP 0xe003" +.LASF3434: + .string "_SSIZE_T_DECLARED " +.LASF3484: + .string "__VALIST __gnuc_va_list" +.LASF146: + .string "__FLT_DIG__ 6" +.LASF454: + .string "INT_LEAST64_MAX (__INT_LEAST64_MAX__)" +.LASF936: + .string "CAN_INTEN_RFOIE1 BIT(6)" +.LASF276: + .string "__FLT64X_EPSILON__ 1.92592994438723585305597794258492732e-34F64x" +.LASF3251: + .string "__XSTRING(x) __STRING(x)" +.LASF3628: + .string "IRQ_H_EXT 10" +.LASF1596: + .string "FMC_SIZE (*(uint16_t *)0x1FFFF7E0U)" +.LASF2583: + .string "I2S_FLAG_TBE SPI_STAT_TBE" +.LASF1755: + .string "AFIO_PCF0_USART2_REMAP BITS(4, 5)" +.LASF3832: + .string "MASK_AMOSWAP_D 0xf800707f" +.LASF1870: + .string "GPIO_CAN0_FULL_REMAP ((uint32_t)0x001D6000U)" +.LASF3688: + .string "MASK_SLLI 0xfc00707f" +.LASF2521: + .string "SPI_CK_PL_LOW_PH_2EDGE SPI_CTL0_CKPH" +.LASF2282: + .string "RCU_CKADC_CKAPB2_DIV12 ((uint32_t)0x00000005U)" +.LASF910: + .string "CAN_TSTAT_MTF2 BIT(16)" +.LASF1565: + .string "OB_WP_3 ((uint32_t)0x00000008U)" +.LASF4159: + .string "CSR_SIE 0x104" +.LASF3197: + .string "_END_STD_C " +.LASF1308: + .string "DMA_MEMORY_INCREASE_ENABLE ((uint8_t)0x01U)" +.LASF917: + .string "CAN_TSTAT_TME1 BIT(27)" +.LASF3517: + .string "MSTATUS_HIE 0x00000004" +.LASF819: + .string "CAN_F4DATA0(canx) REG32((canx) + 0x260U)" +.LASF2114: + .string "RCU_CFG0_CKOUT0SEL BITS(24,27)" +.LASF3782: + .string "MASK_REMU 0xfe00707f" +.LASF2068: + .string "PMU_FLAG_LVD PMU_CS_LVDF" +.LASF489: + .string "UINTMAX_C(x) __UINTMAX_C(x)" +.LASF1358: + .string "EXMC_MEMORY_TYPE_NOR SNCTL_NRTP(2)" +.LASF2236: + .string "AHBEN_REG_OFFSET 0x14U" +.LASF595: + .string "ADC_OVSCR_OVSS BITS(5,8)" +.LASF1955: + .string "I2C_I2CMODE_ENABLE ((uint32_t)0x00000000U)" +.LASF314: + .string "__riscv_m 2000000" +.LASF1958: + .string "I2C_SMBUS_HOST I2C_CTL0_SMBSEL" +.LASF1961: + .string "I2C_ACK_DISABLE ((uint32_t)0x00000000U)" +.LASF4255: + .string "CSR_HPMCOUNTER3H 0xc83" +.LASF3403: + .string "_REENT_MBSRTOWCS_STATE(ptr) ((ptr)->_new._reent._mbsrtowcs_state)" +.LASF179: + .string "__LDBL_MAX_EXP__ 16384" +.LASF1559: + .string "OB_WP1_WP1 ((uint32_t)0x0000FF00U)" +.LASF23: + .string "__SIZEOF_SIZE_T__ 4" +.LASF337: + .string "IRC8M_STARTUP_TIMEOUT ((uint16_t)0x0500)" +.LASF4058: + .string "MASK_C_SLLI 0xe003" +.LASF1718: + .string "GPIO_BC_CR3 BIT(3)" +.LASF2289: + .string "RCU_PLL_MUL3 CFG0_PLLMF(1)" +.LASF1542: + .string "WS_WSCNT_1 WS_WSCNT(1)" +.LASF4122: + .string "MASK_CUSTOM3_RD_RS1_RS2 0x707f" +.LASF1101: + .string "CAN_FT_REMOTE ((uint32_t)0x00000002U)" +.LASF1241: + .string "DMA_CH2PADDR(dmax) REG32((dmax) + 0x38U)" +.LASF1511: + .string "FMC_CTL_MER BIT(2)" +.LASF1957: + .string "I2C_SMBUS_DEVICE ((uint32_t)0x00000000U)" +.LASF3996: + .string "MASK_C_JR 0xf07f" +.LASF1317: + .string "CHCTL_PRIO(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF3408: + .string "_REENT_GETDATE_ERR_P(ptr) (&((ptr)->_new._reent._getdate_err))" +.LASF2944: + .string "USART_STAT(usartx) REG32((usartx) + (0x00000000U))" +.LASF3218: + .string "__bounded " +.LASF2162: + .string "RCU_APB1RST_UART3RST BIT(19)" +.LASF2775: + .string "TIMER_DMAREQUEST_UPDATEEVENT TIMER_CTL1_DMAS" +.LASF255: + .string "__FLT32X_MAX_EXP__ 1024" +.LASF628: + .string "ADC0_1_EXTTRIG_REGULAR_NONE CTL1_ETSRC(7)" +.LASF2674: + .string "TIMER_SWEVG_CH2G BIT(3)" +.LASF1707: + .string "GPIO_BOP_CR8 BIT(24)" +.LASF3929: + .string "MATCH_FCVT_LU_S 0xc0300053" +.LASF2159: + .string "RCU_APB1RST_SPI2RST BIT(15)" +.LASF1730: + .string "GPIO_BC_CR15 BIT(15)" +.LASF104: + .string "__INT_LEAST8_MAX__ 0x7f" +.LASF2997: + .string "USART_CTL2_CTSIE BIT(10)" +.LASF3115: + .string "_WCHAR_T_DEFINED " +.LASF2033: + .string "DBG_CTL_I2C0_HOLD BIT(15)" +.LASF381: + .string "long" +.LASF3374: + .string "_N_LISTS 30" +.LASF3135: + .string "TIMER_CTRL_ADDR 0xd1000000" +.LASF2821: + .string "TIMER_EVENT_SRC_CMTG ((uint16_t)0x0020U)" +.LASF2208: + .string "RCU_APB1EN_DACEN BIT(29)" +.LASF1273: + .string "DMA_CHXCTL_PNAGA BIT(6)" +.LASF2683: + .string "TIMER_CHCTL0_CH0COMCEN BIT(7)" +.LASF3715: + .string "MATCH_SRL 0x5033" +.LASF3868: + .string "MASK_FADD_S 0xfe00007f" +.LASF63: + .string "__UINT_FAST32_TYPE__ unsigned int" +.LASF3050: + .string "USART_RTS_ENABLE CLT2_RTSEN(1)" +.LASF355: + .string "__LARGEFILE_VISIBLE 0" +.LASF3631: + .string "IRQ_HOST 13" +.LASF3680: + .string "MASK_JAL 0x7f" +.LASF4333: + .string "CAUSE_MISALIGNED_LOAD 0x4" +.LASF1852: + .string "GPIO_PIN_14 BIT(14)" +.LASF1173: + .string "DAC_TRIGGER_T5_TRGO CTL_DTSEL(0)" +.LASF2407: + .string "RTC RTC_BASE" +.LASF951: + .string "CAN_BT_BS1 BITS(16,19)" +.LASF1781: + .string "AFIO_EXTI15_SS BITS(12, 15)" +.LASF1472: + .string "EXTI_PD_PD7 BIT(7)" +.LASF1120: + .string "CRC_FDATA REG32(CRC + 0x04U)" +.LASF3485: + .string "__sgetc_raw_r(__ptr,__f) (--(__f)->_r < 0 ? __srget_r(__ptr, __f) : (int)(*(__f)->_p++))" +.LASF3667: + .string "MATCH_BNE 0x1063" +.LASF2119: + .string "RCU_INT_IRC8MSTBIF BIT(2)" +.LASF1545: + .string "OB_FWDGT_HW ((uint8_t)0x00U)" +.LASF1550: + .string "OB_BOOT_B0 ((uint8_t)0x08U)" +.LASF1011: + .string "FDATA_MASK_HIGH(regval) (BITS(16,31) & ((uint32_t)(regval) << 16))" +.LASF2217: + .string "RCU_RSTSCK_RSTFC BIT(24)" +.LASF998: + .string "CAN_REG_VALS(canx,offset) (REG32((canx) + ((uint32_t)(offset) >> 12)))" +.LASF3983: + .string "MATCH_FMADD_D 0x2000043" +.LASF1671: + .string "GPIO_OCTL_OCTL4 BIT(4)" +.LASF49: + .string "__INT_LEAST8_TYPE__ signed char" +.LASF1443: + .string "EXTI_FTEN_FTEN16 BIT(16)" +.LASF1287: + .string "DMA_CHCTL_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF785: + .string "CAN_RFIFO0(canx) REG32((canx) + 0x0CU)" +.LASF1326: + .string "ECLIC_PRIGROUP_LEVEL0_PRIO4 0" +.LASF2990: + .string "USART_CTL2_HDEN BIT(3)" +.LASF1208: + .string "DAC_LFSR_BITS10_0 DAC_WAVE_BIT_WIDTH_11" +.LASF2225: + .string "RCU_CFG1_PREDV0 BITS(0,3)" +.LASF3547: + .string "DCSR_EBREAKH (1<<14)" +.LASF1452: + .string "EXTI_SWIEV_SWIEV6 BIT(6)" +.LASF1360: + .string "EXMC_NWAIT_POLARITY_LOW ((uint32_t)0x00000000U)" +.LASF253: + .string "__FLT32X_MIN_EXP__ (-1021)" +.LASF3269: + .string "__pure __attribute__((__pure__))" +.LASF367: + .string "___int64_t_defined 1" +.LASF4124: + .string "CSR_FRM 0x2" +.LASF3712: + .string "MASK_SLTU 0xfe00707f" +.LASF2530: + .string "SPI_PSC_128 CTL0_PSC(6)" +.LASF196: + .string "__FLT16_MAX_10_EXP__ 4" +.LASF1056: + .string "CAN_BT_SJW_4TQ ((uint8_t)0x03U)" +.LASF3225: + .string "__GNUCLIKE_ASM 3" +.LASF3704: + .string "MASK_ADD 0xfe00707f" +.LASF4109: + .string "MATCH_CUSTOM2_RD_RS1_RS2 0x705b" +.LASF2245: + .string "INT_REG_OFFSET 0x08U" +.LASF229: + .string "__FLT64_NORM_MAX__ 1.79769313486231570814527423731704357e+308F64" +.LASF2058: + .string "PMU_LVDT_0 CTL_LVDT(0)" +.LASF4141: + .string "CSR_HPMCOUNTER15 0xc0f" +.LASF1259: + .string "DMA_INTF_GIF BIT(0)" +.LASF3709: + .string "MATCH_SLT 0x2033" +.LASF455: + .string "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)" +.LASF4231: + .string "CSR_MHPMEVENT15 0x32f" +.LASF4262: + .string "CSR_HPMCOUNTER10H 0xc8a" +.LASF1366: + .string "EXTI_RTEN REG32(EXTI + 0x08U)" +.LASF1290: + .string "DMA_CHMADDR_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF3534: + .string "SSTATUS_SIE 0x00000002" +.LASF3007: + .string "USART_CTL0_REG_OFFSET (0x0000000CU)" +.LASF1476: + .string "EXTI_PD_PD11 BIT(11)" +.LASF2523: + .string "CTL0_PSC(regval) (BITS(3,5) & ((uint32_t)(regval) << 3))" +.LASF676: + .string "ADC_CHANNEL_16 ((uint8_t)0x10U)" +.LASF3952: + .string "MASK_FCVT_S_L 0xfff0007f" +.LASF3431: + .string "_GID_T_DECLARED " +.LASF952: + .string "CAN_BT_BS2 BITS(20,22)" +.LASF1558: + .string "OB_WP0_WP0 ((uint32_t)0x000000FFU)" +.LASF226: + .string "__FLT64_MAX_10_EXP__ 308" +.LASF311: + .string "__riscv_cmodel_medany 1" +.LASF4167: + .string "CSR_MSTATUS 0x300" +.LASF2065: + .string "PMU_LVDT_7 CTL_LVDT(7)" +.LASF2372: + .string "RCU_PREDV1_DIV16 CFG1_PREDV1(15)" +.LASF2781: + .string "TIMER_DMACFG_DMATA_DMAINTEN DMACFG_DMATA(3)" +.LASF2250: + .string "RCU_CKSYSSRC_HXTAL CFG0_SCS(1)" +.LASF1332: + .string "GD32VF103_EXMC_H " +.LASF257: + .string "__FLT32X_DECIMAL_DIG__ 17" +.LASF2803: + .string "TIMER_DMACFG_DMATC_6TRANSFER DMACFG_DMATC(5)" +.LASF2910: + .string "TIMER_TRI_OUT_SRC_UPDATE CTL1_MMC(2)" +.LASF3412: + .string "_REENT _impure_ptr" +.LASF3305: + .string "__DEQUALIFY(type,var) ((type)(__uintptr_t)(const volatile void *)(var))" +.LASF3046: + .string "CLT2_DENT(regval) (BIT(7) & ((uint32_t)(regval) << 7))" +.LASF2394: + .string "RCU_PLL2_MUL20 CFG1_PLL2MF(15)" +.LASF70: + .string "__INT_MAX__ 0x7fffffff" +.LASF2520: + .string "SPI_CK_PL_HIGH_PH_1EDGE SPI_CTL0_CKPL" +.LASF4087: + .string "MATCH_CUSTOM1 0x2b" +.LASF1419: + .string "EXTI_RTEN_RTEN11 BIT(11)" +.LASF1243: + .string "DMA_CH3CTL(dmax) REG32((dmax) + 0x44U)" +.LASF2517: + .string "SPI_ENDIAN_MSB ((uint32_t)0x00000000U)" +.LASF1216: + .string "DAC_TRIANGLE_AMPLITUDE_7 DAC_WAVE_BIT_WIDTH_3" +.LASF1679: + .string "GPIO_OCTL_OCTL12 BIT(12)" +.LASF3933: + .string "MATCH_FCLASS_S 0xe0001053" +.LASF3455: + .string "__SERR 0x0040" +.LASF3334: + .string "_SYS__TYPES_H " +.LASF4169: + .string "CSR_MEDELEG 0x302" +.LASF133: + .string "__UINT_FAST16_MAX__ 0xffffffffU" +.LASF3233: + .string "__GNUCLIKE_BUILTIN_STDARG 1" +.LASF1867: + .string "GPIO_TIMER2_FULL_REMAP ((uint32_t)0x001A0C00U)" +.LASF2013: + .string "FWDGT_KEY_ENABLE ((uint16_t)0xCCCCU)" +.LASF2761: + .string "TIMER_FLAG_CMT TIMER_INTF_CMTIF" +.LASF2477: + .string "SPI_CTL1_TMOD BIT(4)" +.LASF2769: + .string "TIMER_DMA_CH0D ((uint16_t)TIMER_DMAINTEN_CH0DEN)" +.LASF2115: + .string "RCU_CFG0_ADCPSC_2 BIT(28)" +.LASF1465: + .string "EXTI_PD_PD0 BIT(0)" +.LASF120: + .string "__UINT_LEAST32_MAX__ 0xffffffffUL" +.LASF1227: + .string "DMA0 (DMA_BASE)" +.LASF2666: + .string "TIMER_INTF_BRKIF BIT(7)" +.LASF555: + .string "ADC_STAT_STRC BIT(4)" +.LASF3216: + .string "__attribute_format_strfmon__(a,b) " +.LASF2259: + .string "RCU_AHB_CKSYS_DIV4 CFG0_AHBPSC(9)" +.LASF1916: + .string "I2C_SADDR1_DUADEN BIT(0)" +.LASF447: + .string "INT_LEAST32_MIN (-__INT_LEAST32_MAX__ - 1)" +.LASF1819: + .string "GPIO_EVENT_PIN_13 ((uint8_t)0x0DU)" +.LASF3510: + .string "__SYS_UNISTD_H__ " +.LASF431: + .string "UINTPTR_MAX (__UINTPTR_MAX__)" +.LASF19: + .string "__SIZEOF_SHORT__ 2" +.LASF1279: + .string "DMA_CHXCNT_CNT BITS(0,15)" +.LASF3895: + .string "MATCH_FSGNJ_D 0x22000053" +.LASF3839: + .string "MATCH_EBREAK 0x100073" +.LASF1063: + .string "CAN_BT_BS1_7TQ ((uint8_t)0x06U)" +.LASF407: + .string "__int8_t_defined 1" +.LASF1253: + .string "DMA_CH5PADDR(dmax) REG32((dmax) + 0x74U)" +.LASF1764: + .string "AFIO_PCF0_SPI2_REMAP BIT(28)" +.LASF1298: + .string "DMA_FLAG_HTF DMA_INTF_HTFIF" +.LASF35: + .string "__WINT_TYPE__ unsigned int" +.LASF972: + .string "CAN_RFIFOMI_FT BIT(1)" +.LASF3577: + .string "MCONTROL_LOAD (1<<0)" +.LASF1353: + .string "EXMC_NOR_DATABUS_WIDTH_8B SNCTL_NRW(0)" +.LASF3248: + .string "__CONCAT1(x,y) x ## y" +.LASF1111: + .string "CAN_INT_PERR CAN_INTEN_PERRIE" +.LASF110: + .string "__INT_LEAST32_MAX__ 0x7fffffffL" +.LASF3183: + .string "_WIDE_ORIENT 1" +.LASF1352: + .string "SNCTL_NRW(regval) (BITS(4,5) & ((uint32_t)(regval) << 4))" +.LASF2435: + .string "RTC_INT_SECOND RTC_INTEN_SCIE" +.LASF490: + .string "REG32(addr) (*(volatile uint32_t *)(uint32_t)(addr))" +.LASF2675: + .string "TIMER_SWEVG_CH3G BIT(4)" +.LASF3635: + .string "CONFIG_STRING_ADDR 0x0000100C" +.LASF4355: + .string "uint64_t" +.LASF3920: + .string "MASK_FLT_D 0xfe00707f" +.LASF3563: + .string "MCONTROL_TYPE(xlen) (0xfULL<<((xlen)-4))" +.LASF2269: + .string "RCU_APB1_CKAHB_DIV4 CFG0_APB1PSC(5)" +.LASF4065: + .string "MATCH_C_MV 0x8002" +.LASF148: + .string "__FLT_MIN_10_EXP__ (-37)" +.LASF4004: + .string "MASK_C_SD 0xe003" +.LASF3320: + .string "__asserts_exclusive(...) __lock_annotate(assert_exclusive_lock(__VA_ARGS__))" +.LASF3508: + .string "_STRING_H_ " +.LASF1732: + .string "GPIO_LOCK_LK1 BIT(1)" +.LASF3542: + .string "SSTATUS64_SD 0x8000000000000000" +.LASF351: + .string "__ATFILE_VISIBLE 0" +.LASF3891: + .string "MATCH_FMUL_D 0x12000053" +.LASF4059: + .string "MATCH_C_FLDSP 0x2002" +.LASF3466: + .string "_IOFBF 0" +.LASF2203: + .string "RCU_APB1EN_I2C1EN BIT(22)" +.LASF2502: + .string "SPI_I2SPSC_DIV BITS(0,7)" +.LASF667: + .string "ADC_CHANNEL_7 ((uint8_t)0x07U)" +.LASF1334: + .string "EXMC_SNCTL0 REG32(EXMC + 0x00U)" +.LASF1934: + .string "I2C_STAT1_I2CBSY BIT(1)" +.LASF4105: + .string "MATCH_CUSTOM2_RD 0x405b" +.LASF1701: + .string "GPIO_BOP_CR2 BIT(18)" +.LASF811: + .string "CAN_FMCFG(canx) REG32((canx) + 0x204U)" +.LASF891: + .string "CAN_STAT_IWS BIT(0)" +.LASF4319: + .string "CSR_MTVT2 0x7EC" +.LASF850: + .string "CAN_F7DATA1(canx) REG32((canx) + 0x27CU)" +.LASF3662: + .string "rdcycle() read_csr(cycle)" +.LASF3630: + .string "IRQ_COP 12" +.LASF709: + .string "ADC_OVERSAMPLING_RATIO_MUL256 OVSCR_OVSR(7)" +.LASF1859: + .string "GPIO_USART2_PARTIAL_REMAP ((uint32_t)0x00140010U)" +.LASF4154: + .string "CSR_HPMCOUNTER28 0xc1c" +.LASF506: + .string "RTC_BASE (APB1_BUS_BASE + 0x00002800U)" +.LASF1139: + .string "DACC_R8DH REG32(DAC + 0x28U)" +.LASF1698: + .string "GPIO_BOP_BOP15 BIT(15)" +.LASF3296: + .string "__sym_compat(sym,impl,verid) __asm__(\".symver \" #impl \", \" #sym \"@\" #verid)" +.LASF3253: + .string "__signed signed" +.LASF2867: + .string "TIMER_OCN_POLARITY_LOW ((uint16_t)0x0008U)" +.LASF978: + .string "CAN_RFIFOMP_TS BITS(16,31)" +.LASF573: + .string "ADC_CTL1_DMA BIT(8)" +.LASF2882: + .string "TIMER_OC_FAST_ENABLE ((uint16_t)0x0004)" +.LASF3562: + .string "DCSR_CAUSE_HALT 5" +.LASF1093: + .string "CAN_MODE_NORMAL ((uint8_t)0x02U)" +.LASF1260: + .string "DMA_INTF_FTFIF BIT(1)" +.LASF766: + .string "BKP_TPCS_TPIE BIT(2)" +.LASF1463: + .string "EXTI_SWIEV_SWIEV17 BIT(17)" +.LASF949: + .string "CAN_ERR_RECNT BITS(24,31)" +.LASF1400: + .string "EXTI_EVEN_EVEN11 BIT(11)" +.LASF1127: + .string "DAC0 (0U)" +.LASF968: + .string "CAN_TMDATA1_DB4 BITS(0,7)" +.LASF2414: + .string "RTC_CNTH REG32(RTC + 0x18U)" +.LASF2206: + .string "RCU_APB1EN_BKPIEN BIT(27)" +.LASF1562: + .string "OB_WP_0 ((uint32_t)0x00000001U)" +.LASF3430: + .string "_UID_T_DECLARED " +.LASF114: + .string "__INT64_C(c) c ## LL" +.LASF3189: + .string "_READ_WRITE_RETURN_TYPE _ssize_t" +.LASF235: + .string "__FLT64_HAS_QUIET_NAN__ 1" +.LASF1653: + .string "GPIO_ISTAT_ISTAT2 BIT(2)" +.LASF205: + .string "__FLT16_HAS_QUIET_NAN__ 1" +.LASF4148: + .string "CSR_HPMCOUNTER22 0xc16" +.LASF4202: + .string "CSR_MHPMCOUNTER17 0xb11" +.LASF4292: + .string "CSR_MHPMCOUNTER9H 0xb89" +.LASF3580: + .string "MCONTROL_ACTION_DEBUG_EXCEPTION 0" +.LASF485: + .string "UINT32_C(x) __UINT32_C(x)" +.LASF237: + .string "__FLT128_DIG__ 33" +.LASF616: + .string "ADC_DAUL_INSERTED_TRIGGER_ROTATION CTL0_SYNCM(9)" +.LASF3644: + .string "PTE_A 0x040" +.LASF1665: + .string "GPIO_ISTAT_ISTAT14 BIT(14)" +.LASF3539: + .string "SSTATUS_XS 0x00018000" +.LASF2161: + .string "RCU_APB1RST_USART2RST BIT(18)" +.LASF3052: + .string "CLT2_CTSEN(regval) (BIT(9) & ((uint32_t)(regval) << 9))" +.LASF2908: + .string "TIMER_TRI_OUT_SRC_RESET CTL1_MMC(0)" +.LASF1576: + .string "OB_WP_14 ((uint32_t)0x00004000U)" +.LASF1403: + .string "EXTI_EVEN_EVEN14 BIT(14)" +.LASF3559: + .string "DCSR_CAUSE_HWBP 2" +.LASF2965: + .string "USART_CTL0_RWU BIT(1)" +.LASF767: + .string "BKP_TPCS_TEF BIT(8)" +.LASF2037: + .string "DBG_CTL_TIMER6_HOLD BIT(20)" +.LASF788: + .string "CAN_ERR(canx) REG32((canx) + 0x18U)" +.LASF1172: + .string "CTL_DTSEL(regval) (BITS(3,5) & ((uint32_t)(regval) << 3))" +.LASF2672: + .string "TIMER_SWEVG_CH0G BIT(1)" +.LASF3287: + .string "__printflike(fmtarg,firstvararg) __attribute__((__format__ (__printf__, fmtarg, firstvararg)))" +.LASF569: + .string "ADC_CTL1_ADCON BIT(0)" +.LASF242: + .string "__FLT128_DECIMAL_DIG__ 36" +.LASF4095: + .string "MATCH_CUSTOM1_RD_RS1 0x602b" +.LASF325: + .string "__RTTHREAD__ 1" +.LASF2950: + .string "USART_GP(usartx) REG32((usartx) + (0x00000018U))" +.LASF2493: + .string "SPI_TCRC_TCRC BITS(0,15)" +.LASF2059: + .string "PMU_LVDT_1 CTL_LVDT(1)" +.LASF2822: + .string "TIMER_EVENT_SRC_TRGG ((uint16_t)0x0040U)" +.LASF2280: + .string "RCU_CKADC_CKAPB2_DIV6 ((uint32_t)0x00000002U)" +.LASF2972: + .string "USART_CTL0_PERRIE BIT(8)" +.LASF1575: + .string "OB_WP_13 ((uint32_t)0x00002000U)" +.LASF3917: + .string "MATCH_FLE_D 0xa2000053" +.LASF2689: + .string "TIMER_CHCTL0_CH0CAPPSC BITS(2,3)" +.LASF3838: + .string "MASK_ECALL 0xffffffff" +.LASF4398: + .string "eclic_enable_interrupt" +.LASF2465: + .string "SPI_CTL0_SWNSS BIT(8)" +.LASF4272: + .string "CSR_HPMCOUNTER20H 0xc94" +.LASF1343: + .string "EXMC_SNCTL_WREN BIT(12)" +.LASF2409: + .string "RTC_CTL REG32(RTC + 0x04U)" +.LASF1112: + .string "CAN_INT_BO CAN_INTEN_BOIE" +.LASF2421: + .string "RTC_CTL_SCIF BIT(0)" +.LASF1597: + .string "SRAM_SIZE (*(uint16_t *)0x1FFFF7E2U)" +.LASF3411: + .string "__ATTRIBUTE_IMPURE_PTR__ " +.LASF308: + .string "__riscv_muldiv 1" +.LASF2317: + .string "RCU_PLL_MUL31 (PLLMF_4 | CFG0_PLLMF(14))" +.LASF2730: + .string "TIMER_CCHP_PROT BITS(8,9)" +.LASF1496: + .string "OB_SPC REG16((OB) + 0x00U)" +.LASF329: + .string "GD32VF103_H " +.LASF562: + .string "ADC_CTL0_ICA BIT(10)" +.LASF496: + .string "FLASH_BASE ((uint32_t)0x08000000U)" +.LASF2859: + .string "TIMER_CH_3 ((uint16_t)0x0003U)" +.LASF68: + .string "__SCHAR_MAX__ 0x7f" +.LASF293: + .string "__GCC_ATOMIC_INT_LOCK_FREE 2" +.LASF3232: + .string "__GNUCLIKE_BUILTIN_VARARGS 1" +.LASF258: + .string "__FLT32X_MAX__ 1.79769313486231570814527423731704357e+308F32x" +.LASF1097: + .string "CAN_FILTERMODE_MASK ((uint8_t)0x00U)" +.LASF1856: + .string "GPIO_I2C0_REMAP ((uint32_t)0x00000002U)" +.LASF2: + .string "__STDC_UTF_16__ 1" +.LASF2030: + .string "DBG_CTL_TIMER2_HOLD BIT(12)" +.LASF3967: + .string "MATCH_FLW 0x2007" +.LASF2189: + .string "RCU_APB1EN_TIMER1EN BIT(0)" +.LASF2911: + .string "TIMER_TRI_OUT_SRC_CH0 CTL1_MMC(3)" +.LASF2613: + .string "TIMER_CH3CV(timerx) REG32((timerx) + 0x40U)" +.LASF3204: + .string "_FSTDIO " +.LASF101: + .string "__UINT16_MAX__ 0xffff" +.LASF2433: + .string "RTC_ALRMH_ALRM BITS(0,15)" +.LASF1886: + .string "I2C_DATA(i2cx) REG32((i2cx) + 0x10U)" +.LASF773: + .string "RTC_OUTPUT_ALARM_PULSE ((uint16_t)0x0000U)" +.LASF4203: + .string "CSR_MHPMCOUNTER18 0xb12" +.LASF3965: + .string "MATCH_FMV_D_X 0xf2000053" +.LASF38: + .string "__CHAR16_TYPE__ short unsigned int" +.LASF1080: + .string "CAN_BT_BS2_8TQ ((uint8_t)0x07U)" +.LASF3410: + .string "_Kmax (sizeof (size_t) << 3)" +.LASF3056: + .string "USART_IRLP_LOW CTL2_IRLP(1)" +.LASF842: + .string "CAN_F27DATA0(canx) REG32((canx) + 0x318U)" +.LASF270: + .string "__FLT64X_MAX_EXP__ 16384" +.LASF2078: + .string "RCU_CFG0 REG32(RCU + 0x04U)" +.LASF3328: + .string "__guarded_by(x) __lock_annotate(guarded_by(x))" +.LASF778: + .string "BKP_INT_FLAG_TAMPER BKP_TPCS_TIF" +.LASF959: + .string "CAN_TMI_EFID BITS(3,31)" +.LASF1789: + .string "GPIO_MODE_OUT_OD ((uint8_t)0x14U)" +.LASF2741: + .string "TIMER_INT_CH0 TIMER_DMAINTEN_CH0IE" +.LASF3955: + .string "MATCH_FMV_S_X 0xf0000053" +.LASF1046: + .string "CAN_ERRN_6 ERR_ERRN(6U)" +.LASF3353: + .string "__lock_close_recursive(lock) ((void) 0)" +.LASF3460: + .string "__SNPT 0x0800" +.LASF3323: + .string "__requires_shared(...) __lock_annotate(shared_locks_required(__VA_ARGS__))" +.LASF3: + .string "__STDC_UTF_32__ 1" +.LASF1289: + .string "DMA_CHPADDR_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF359: + .string "__XSI_VISIBLE 0" +.LASF3181: + .string "_FVWRITE_IN_STREAMIO 1" +.LASF3025: + .string "USART_WL_9BIT CTL0_WL(1)" +.LASF3443: + .string "_SYS__PTHREADTYPES_H_ " +.LASF2538: + .string "I2S_AUDIOSAMPLE_48K ((uint32_t)48000U)" +.LASF1832: + .string "GPIO_PIN_SOURCE_10 ((uint8_t)0x0AU)" +.LASF2436: + .string "RTC_INT_ALARM RTC_INTEN_ALRMIE" +.LASF2215: + .string "RCU_RSTSCK_IRC40KEN BIT(0)" +.LASF2418: + .string "RTC_INTEN_SCIE BIT(0)" +.LASF1557: + .string "OB_USER_USER_N ((uint32_t)0xFF000000U)" +.LASF3636: + .string "EXT_IO_BASE 0x40000000" +.LASF1059: + .string "CAN_BT_BS1_3TQ ((uint8_t)0x02U)" +.LASF615: + .string "ADC_DAUL_REGULAL_FOLLOWUP_SLOW CTL0_SYNCM(8)" +.LASF2110: + .string "RCU_CFG0_PLLSEL BIT(16)" +.LASF565: + .string "ADC_CTL0_DISNUM BITS(13,15)" +.LASF2174: + .string "RCU_AHBEN_FMCSPEN BIT(4)" +.LASF2960: + .string "USART_STAT_CTSF BIT(9)" +.LASF693: + .string "ADC_OVERSAMPLING_SHIFT_1B OVSCR_OVSS(1)" +.LASF3231: + .string "__GNUCLIKE_BUILTIN_CONSTANT_P 1" +.LASF1010: + .string "BT_MODE(regval) (BITS(30,31) & ((uint32_t)(regval) << 30))" +.LASF4282: + .string "CSR_HPMCOUNTER30H 0xc9e" +.LASF6: + .string "__GNUC_MINOR__ 2" +.LASF234: + .string "__FLT64_HAS_INFINITY__ 1" +.LASF2353: + .string "RCU_PREDV0_DIV14 CFG1_PREDV0(13)" +.LASF1081: + .string "CAN_MAILBOX0 ((uint8_t)0x00U)" +.LASF3247: + .string "__P(protos) protos" +.LASF155: + .string "__FLT_EPSILON__ 1.19209289550781250000000000000000000e-7F" +.LASF592: + .string "ADC_RDATA_ADC1RDTR BITS(16,31)" +.LASF2606: + .string "TIMER_CNT(timerx) REG32((timerx) + 0x24U)" +.LASF3555: + .string "DCSR_STEP (1<<2)" +.LASF2242: + .string "RSTSCK_REG_OFFSET 0x24U" +.LASF3249: + .string "__CONCAT(x,y) __CONCAT1(x,y)" +.LASF3044: + .string "USART_DENR_ENABLE CLT2_DENR(1)" +.LASF152: + .string "__FLT_MAX__ 3.40282346638528859811704183484516925e+38F" +.LASF3821: + .string "MATCH_AMOAND_D 0x6000302f" +.LASF832: + .string "CAN_F17DATA0(canx) REG32((canx) + 0x2C8U)" +.LASF370: + .string "___int_least32_t_defined 1" +.LASF1388: + .string "EXTI_INTEN_INTEN18 BIT(18)" +.LASF3863: + .string "MATCH_CSRRSI 0x6073" +.LASF2812: + .string "TIMER_DMACFG_DMATC_15TRANSFER DMACFG_DMATC(14)" +.LASF2175: + .string "RCU_AHBEN_CRCEN BIT(6)" +.LASF2525: + .string "SPI_PSC_4 CTL0_PSC(1)" +.LASF1412: + .string "EXTI_RTEN_RTEN4 BIT(4)" +.LASF41: + .string "__INT8_TYPE__ signed char" +.LASF556: + .string "ADC_CTL0_WDCHSEL BITS(0,4)" +.LASF1524: + .string "FMC_WP_WP BITS(0,31)" +.LASF1200: + .string "DAC_LFSR_BITS2_0 DAC_WAVE_BIT_WIDTH_3" +.LASF3138: + .string "N200_ECLIC_H " +.LASF2642: + .string "TIMER_SMCFG_SMC1 BIT(14)" +.LASF2825: + .string "TIMER_COUNTER_EDGE CTL0_CAM(0)" +.LASF1810: + .string "GPIO_EVENT_PIN_4 ((uint8_t)0x04U)" +.LASF570: + .string "ADC_CTL1_CTN BIT(1)" +.LASF4252: + .string "CSR_CYCLEH 0xc80" +.LASF4048: + .string "MASK_C_SUBW 0xfc63" +.LASF3788: + .string "MASK_DIVUW 0xfe00707f" +.LASF2974: + .string "USART_CTL0_PCEN BIT(10)" +.LASF4223: + .string "CSR_MHPMEVENT7 0x327" +.LASF1627: + .string "GPIO_CTL0_MD4 BITS(16, 17)" +.LASF3301: + .string "__SCCSID(s) struct __hack" +.LASF582: + .string "ADC_SAMPTX_SPTN BITS(0,2)" +.LASF3692: + .string "MASK_SLTIU 0x707f" +.LASF449: + .string "UINT_LEAST32_MAX (__UINT_LEAST32_MAX__)" +.LASF1656: + .string "GPIO_ISTAT_ISTAT5 BIT(5)" +.LASF3676: + .string "MASK_BGEU 0x707f" +.LASF2739: + .string "TIMER_DMATB_DMATB BITS(0,15)" +.LASF3160: + .string "MSIP_HANDLER eclic_msip_handler" +.LASF3618: + .string "VM_SV32 8" +.LASF3564: + .string "MCONTROL_DMODE(xlen) (1ULL<<((xlen)-5))" +.LASF2963: + .string "USART_BAUD_INTDIV BITS(4,15)" +.LASF3048: + .string "USART_DENT_DISABLE CLT2_DENT(0)" +.LASF1377: + .string "EXTI_INTEN_INTEN7 BIT(7)" +.LASF1842: + .string "GPIO_PIN_4 BIT(4)" +.LASF1049: + .string "CAN_NORMAL_MODE ((uint8_t)0x00U)" +.LASF4057: + .string "MATCH_C_SLLI 0x2" +.LASF382: + .string "signed +0" +.LASF1321: + .string "DMA_PRIORITY_ULTRA_HIGH CHCTL_PRIO(3U)" +.LASF1828: + .string "GPIO_PIN_SOURCE_6 ((uint8_t)0x06U)" +.LASF4372: + .string "eclic_get_irq_priority" +.LASF684: + .string "OVSCR_DRES(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF1141: + .string "DAC1_DO REG32(DAC + 0x30U)" +.LASF3865: + .string "MATCH_CSRRCI 0x7073" +.LASF1162: + .string "DAC1_L12DH_DAC1_DH BITS(4,15)" +.LASF4302: + .string "CSR_MHPMCOUNTER19H 0xb93" +.LASF1747: + .string "GPIO_LOCK_LKK BIT(16)" +.LASF107: + .string "__INT_LEAST16_MAX__ 0x7fff" +.LASF103: + .string "__UINT64_MAX__ 0xffffffffffffffffULL" +.LASF4281: + .string "CSR_HPMCOUNTER29H 0xc9d" +.LASF3281: + .string "__null_sentinel __attribute__((__sentinel__))" +.LASF3907: + .string "MATCH_FCVT_D_S 0x42000053" +.LASF3427: + .string "_INO_T_DECLARED " +.LASF423: + .string "__int_least32_t_defined 1" +.LASF3864: + .string "MASK_CSRRSI 0x707f" +.LASF1248: + .string "DMA_CH4CNT(dmax) REG32((dmax) + 0x5CU)" +.LASF1244: + .string "DMA_CH3CNT(dmax) REG32((dmax) + 0x48U)" +.LASF2145: + .string "RCU_APB2RST_PERST BIT(6)" +.LASF1538: + .string "UNLOCK_KEY0 ((uint32_t)0x45670123U)" +.LASF3894: + .string "MASK_FDIV_D 0xfe00007f" +.LASF2682: + .string "TIMER_CHCTL0_CH0COMCTL BITS(4,6)" +.LASF410: + .string "__int16_t_defined 1" +.LASF4392: + .string "intattr" +.LASF2915: + .string "TIMER_TRI_OUT_SRC_O3CPRE CTL1_MMC(7)" +.LASF651: + .string "ISQ_IL(regval) (BITS(20,21) & ((uint32_t)(regval) << 20))" +.LASF4222: + .string "CSR_MHPMEVENT6 0x326" +.LASF1184: + .string "DAC_WAVE_MODE_TRIANGLE CTL_DWM(2)" +.LASF3998: + .string "MASK_C_JALR 0xf07f" +.LASF156: + .string "__FLT_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F" +.LASF2315: + .string "RCU_PLL_MUL29 (PLLMF_4 | CFG0_PLLMF(12))" +.LASF2624: + .string "TIMER_CTL0_CKDIV BITS(8,9)" +.LASF4172: + .string "CSR_MTVEC 0x305" +.LASF3409: + .string "_REENT_INIT_PTR(var) { memset((var), 0, sizeof(*(var))); _REENT_INIT_PTR_ZEROED(var); }" +.LASF3229: + .string "__GNUCLIKE___SECTION 1" +.LASF1040: + .string "CAN_ERRN_0 ERR_ERRN(0U)" +.LASF4379: + .string "eclic_set_irq_lvl" +.LASF1481: + .string "EXTI_PD_PD16 BIT(16)" +.LASF3184: + .string "_UNBUF_STREAM_OPT 1" +.LASF521: + .string "RCU_BASE (AHB1_BUS_BASE + 0x00009000U)" +.LASF695: + .string "ADC_OVERSAMPLING_SHIFT_3B OVSCR_OVSS(3)" +.LASF3784: + .string "MASK_MULW 0xfe00707f" +.LASF1108: + .string "CAN_INT_RFF1 CAN_INTEN_RFFIE1" +.LASF3299: + .string "__RCSID(s) struct __hack" +.LASF1043: + .string "CAN_ERRN_3 ERR_ERRN(3U)" +.LASF2201: + .string "RCU_APB1EN_UART4EN BIT(20)" +.LASF3807: + .string "MATCH_AMOMAXU_W 0xe000202f" +.LASF2182: + .string "RCU_APB2EN_PDEN BIT(5)" +.LASF211: + .string "__FLT32_MAX_10_EXP__ 38" +.LASF3000: + .string "USART_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF4259: + .string "CSR_HPMCOUNTER7H 0xc87" +.LASF933: + .string "CAN_INTEN_RFOIE0 BIT(3)" +.LASF3031: + .string "CTL1_LBLEN(regval) (BIT(5) & ((uint32_t)(regval) << 5))" +.LASF4304: + .string "CSR_MHPMCOUNTER21H 0xb95" +.LASF3903: + .string "MATCH_FMAX_D 0x2a001053" +.LASF4258: + .string "CSR_HPMCOUNTER6H 0xc86" +.LASF3892: + .string "MASK_FMUL_D 0xfe00007f" +.LASF3707: + .string "MATCH_SLL 0x1033" +.LASF69: + .string "__SHRT_MAX__ 0x7fff" +.LASF2690: + .string "TIMER_CHCTL0_CH0CAPFLT BITS(4,7)" +.LASF796: + .string "CAN_TMDATA01(canx) REG32((canx) + 0x198U)" +.LASF2458: + .string "SPI_I2SPSC(spix) REG32((spix) + 0x20U)" +.LASF1988: + .string "I2C_DTCY_16_9 I2C_CKCFG_DTCY" +.LASF3531: + .string "MSTATUS32_SD 0x80000000" +.LASF1424: + .string "EXTI_RTEN_RTEN16 BIT(16)" +.LASF2261: + .string "RCU_AHB_CKSYS_DIV16 CFG0_AHBPSC(11)" +.LASF4013: + .string "MATCH_C_FLD 0x2000" +.LASF3541: + .string "SSTATUS32_SD 0x80000000" +.LASF4376: + .string "lvl_abs" +.LASF2432: + .string "RTC_CNTL_CNT BITS(0,15)" +.LASF1927: + .string "I2C_STAT0_LOSTARB BIT(9)" +.LASF2855: + .string "TIMER_BREAK_DISABLE ((uint16_t)0x0000U)" +.LASF3641: + .string "PTE_X 0x008" +.LASF557: + .string "ADC_CTL0_EOCIE BIT(5)" +.LASF72: + .string "__LONG_LONG_MAX__ 0x7fffffffffffffffLL" +.LASF2795: + .string "TIMER_DMACFG_DMATA_CCHP DMACFG_DMATA(17)" +.LASF83: + .string "__LONG_LONG_WIDTH__ 64" +.LASF2522: + .string "SPI_CK_PL_HIGH_PH_2EDGE (SPI_CTL0_CKPL | SPI_CTL0_CKPH)" +.LASF45: + .string "__UINT8_TYPE__ unsigned char" +.LASF2270: + .string "RCU_APB1_CKAHB_DIV8 CFG0_APB1PSC(6)" +.LASF105: + .string "__INT8_C(c) c" +.LASF397: + .string "__FAST16 " +.LASF3079: + .string "_T_PTRDIFF_ " +.LASF1076: + .string "CAN_BT_BS2_4TQ ((uint8_t)0x03U)" +.LASF804: + .string "CAN_RFIFOMDATA00(canx) REG32((canx) + 0x1B8U)" +.LASF2980: + .string "USART_CTL1_LBDIE BIT(6)" +.LASF129: + .string "__INT_FAST32_WIDTH__ 32" +.LASF1370: + .string "EXTI_INTEN_INTEN0 BIT(0)" +.LASF2066: + .string "PMU_FLAG_WAKEUP PMU_CS_WUF" +.LASF3319: + .string "__unlocks(...) __lock_annotate(unlock_function(__VA_ARGS__))" +.LASF1911: + .string "I2C_CTL1_DMALST BIT(12)" +.LASF2597: + .string "TIMER_CTL0(timerx) REG32((timerx) + 0x00U)" +.LASF3382: + .string "_REENT_CHECK_EMERGENCY(ptr) " +.LASF315: + .string "__riscv_a 2000000" +.LASF1202: + .string "DAC_LFSR_BITS4_0 DAC_WAVE_BIT_WIDTH_5" +.LASF3208: + .string "__PMT(args) args" +.LASF499: + .string "DBG_BASE ((uint32_t)0xE0042000U)" +.LASF3925: + .string "MATCH_FCVT_WU_S 0xc0100053" +.LASF1109: + .string "CAN_INT_RFO1 CAN_INTEN_RFOIE1" +.LASF2069: + .string "PMU_LDO_NORMAL ((uint32_t)0x00000000U)" +.LASF2390: + .string "RCU_PLL2_MUL13 CFG1_PLL2MF(11)" +.LASF260: + .string "__FLT32X_MIN__ 2.22507385850720138309023271733240406e-308F32x" +.LASF243: + .string "__FLT128_MAX__ 1.18973149535723176508575932662800702e+4932F128" +.LASF3131: + .string "TIMER_MTIMECMP 0x8" +.LASF2439: + .string "RTC_INT_FLAG_ALARM RTC_CTL_ALRMIF" +.LASF948: + .string "CAN_ERR_TECNT BITS(16,23)" +.LASF75: + .string "__WINT_MAX__ 0xffffffffU" +.LASF533: + .string "ADC_SAMPT0(adcx) REG32((adcx) + 0x0CU)" +.LASF756: + .string "BKP_TPCS REG16((BKP) + 0x34U)" +.LASF3452: + .string "__SWR 0x0008" +.LASF2596: + .string "TIMER6 (TIMER_BASE + 0x00001400U)" +.LASF824: + .string "CAN_F9DATA0(canx) REG32((canx) + 0x288U)" +.LASF98: + .string "__INT32_MAX__ 0x7fffffffL" +.LASF1908: + .string "I2C_CTL1_EVIE BIT(9)" +.LASF3292: + .string "__printf0like(fmtarg,firstvararg) " +.LASF1532: + .string "FMC_BIT_POS0(val) (((uint32_t)(val) >> 6) & 0x1FU)" +.LASF1964: + .string "I2C_ACKPOS_CURRENT ((uint32_t)0x00000001U)" +.LASF2546: + .string "I2S_MCKOUT_DISABLE ((uint32_t)0x00000000U)" +.LASF3463: + .string "__SL64 0x8000" +.LASF1501: + .string "OB_WP3 REG16((OB) + 0x0EU)" +.LASF2416: + .string "RTC_ALRMH REG32(RTC + 0x20U)" +.LASF862: + .string "CAN_F19DATA1(canx) REG32((canx) + 0x2DCU)" +.LASF4391: + .string "eclic_set_intattr" +.LASF2545: + .string "I2S_FRAMEFORMAT_DT32B_CH32B (I2SCTL_DTLEN(2) | SPI_I2SCTL_CHLEN)" +.LASF3934: + .string "MASK_FCLASS_S 0xfff0707f" +.LASF3765: + .string "MATCH_FENCE_I 0x100f" +.LASF1634: + .string "GPIO_CTL0_CTL7 BITS(30, 31)" +.LASF2337: + .string "RCU_RTCSRC_IRC40K BDCTL_RTCSRC(2)" +.LASF3096: + .string "_BSD_SIZE_T_ " +.LASF2467: + .string "SPI_CTL0_RO BIT(10)" +.LASF1028: + .string "GET_RFIFOMDATA0_DB0(regval) GET_BITS((uint32_t)(regval), 0U, 7U)" +.LASF471: + .string "SIZE_MAX (__SIZE_MAX__)" +.LASF1310: + .string "DMA_PERIPHERAL_WIDTH_8BIT CHCTL_PWIDTH(0U)" +.LASF3226: + .string "__GNUCLIKE_MATH_BUILTIN_CONSTANTS " +.LASF2074: + .string "WFE_CMD ((uint8_t)0x01U)" +.LASF42: + .string "__INT16_TYPE__ short int" +.LASF47: + .string "__UINT32_TYPE__ long unsigned int" +.LASF2444: + .string "RTC_FLAG_RSYN RTC_CTL_RSYNF" +.LASF4205: + .string "CSR_MHPMCOUNTER20 0xb14" +.LASF2322: + .string "RCU_CKUSB_CKPLL_DIV2_5 CFG0_USBPSC(2)" +.LASF3289: + .string "__format_arg(fmtarg) __attribute__((__format_arg__ (fmtarg)))" +.LASF76: + .string "__WINT_MIN__ 0U" +.LASF1945: + .string "I2C_FMPCFG_FMPEN BIT(0)" +.LASF2623: + .string "TIMER_CTL0_ARSE BIT(7)" +.LASF428: + .string "__int_fast64_t_defined 1" +.LASF1937: + .string "I2C_STAT1_DEFSMB BIT(5)" +.LASF937: + .string "CAN_INTEN_WERRIE BIT(8)" +.LASF3733: + .string "MATCH_SUBW 0x4000003b" +.LASF1690: + .string "GPIO_BOP_BOP7 BIT(7)" +.LASF3078: + .string "_PTRDIFF_T " +.LASF697: + .string "ADC_OVERSAMPLING_SHIFT_5B OVSCR_OVSS(5)" +.LASF3118: + .string "__INT_WCHAR_T_H " +.LASF3394: + .string "_REENT_ASCTIME_BUF(ptr) ((ptr)->_new._reent._asctime_buf)" +.LASF2894: + .string "TIMER_IC_PSC_DIV1 ((uint16_t)0x0000U)" +.LASF2745: + .string "TIMER_INT_CMT TIMER_DMAINTEN_CMTIE" +.LASF576: + .string "ADC_CTL1_ETEIC BIT(15)" +.LASF3185: + .string "__SYS_CONFIG_H__ " +.LASF1508: + .string "FMC_STAT_ENDF BIT(5)" +.LASF1286: + .string "DMA_CHMADDR(dma,channel) REG32(((dma) + 0x14U) + 0x14U * (uint32_t)(channel))" +.LASF2438: + .string "RTC_INT_FLAG_SECOND RTC_CTL_SCIF" +.LASF2865: + .string "TIMER_OC_POLARITY_LOW ((uint16_t)0x0002U)" +.LASF2335: + .string "RCU_RTCSRC_NONE BDCTL_RTCSRC(0)" +.LASF74: + .string "__WCHAR_MIN__ (-__WCHAR_MAX__ - 1)" +.LASF2034: + .string "DBG_CTL_I2C1_HOLD BIT(16)" +.LASF1335: + .string "EXMC_SNTCFG0 REG32(EXMC + 0x04U)" +.LASF3661: + .string "rdtime() read_csr(time)" +.LASF421: + .string "__int_least8_t_defined 1" +.LASF950: + .string "CAN_BT_BAUDPSC BITS(0,9)" +.LASF4152: + .string "CSR_HPMCOUNTER26 0xc1a" +.LASF1722: + .string "GPIO_BC_CR7 BIT(7)" +.LASF3318: + .string "__trylocks_shared(...) __lock_annotate(shared_trylock_function(__VA_ARGS__))" +.LASF2667: + .string "TIMER_INTF_CH0OF BIT(9)" +.LASF1416: + .string "EXTI_RTEN_RTEN8 BIT(8)" +.LASF1190: + .string "DAC_WAVE_BIT_WIDTH_5 DWBW(4)" +.LASF245: + .string "__FLT128_MIN__ 3.36210314311209350626267781732175260e-4932F128" +.LASF3581: + .string "MCONTROL_ACTION_DEBUG_MODE 1" +.LASF608: + .string "ADC_DAUL_REGULAL_PARALLEL_INSERTED_PARALLEL CTL0_SYNCM(1)" +.LASF1004: + .string "RFIFO1_REG_OFFSET ((uint8_t)0x10U)" +.LASF3939: + .string "MATCH_FCVT_L_D 0xc2200053" +.LASF2199: + .string "RCU_APB1EN_USART2EN BIT(18)" +.LASF3599: + .string "MIP_MEIP (1 << IRQ_M_EXT)" +.LASF138: + .string "__UINTPTR_MAX__ 0xffffffffU" +.LASF417: + .string "_INTMAX_T_DECLARED " +.LASF109: + .string "__INT_LEAST16_WIDTH__ 16" +.LASF2992: + .string "USART_CTL2_SCEN BIT(5)" +.LASF634: + .string "ADC0_1_EXTTRIG_INSERTED_T2_CH3 CTL1_ETSIC(4)" +.LASF2495: + .string "SPI_I2SCTL_DTLEN BITS(1,2)" +.LASF3633: + .string "DEFAULT_NMIVEC 0x00001004" +.LASF2532: + .string "I2S_AUDIOSAMPLE_8K ((uint32_t)8000U)" +.LASF3546: + .string "DCSR_EBREAKM (1<<15)" +.LASF3710: + .string "MASK_SLT 0xfe00707f" +.LASF3908: + .string "MASK_FCVT_D_S 0xfff0007f" +.LASF954: + .string "CAN_BT_LCMOD BIT(30)" +.LASF1401: + .string "EXTI_EVEN_EVEN12 BIT(12)" +.LASF405: + .string "_INT8_T_DECLARED " +.LASF147: + .string "__FLT_MIN_EXP__ (-125)" +.LASF4139: + .string "CSR_HPMCOUNTER13 0xc0d" +.LASF1136: + .string "DAC1_R8DH REG32(DAC + 0x1CU)" +.LASF2644: + .string "TIMER_DMAINTEN_UPIE BIT(0)" +.LASF4373: + .string "eclic_set_irq_priority" +.LASF3284: + .string "__offsetof(type,field) offsetof(type, field)" +.LASF1571: + .string "OB_WP_9 ((uint32_t)0x00000200U)" +.LASF3650: + .string "SSTATUS_SD SSTATUS32_SD" +.LASF3616: + .string "VM_MBB 1" +.LASF2777: + .string "DMACFG_DMATA(regval) (BITS(0, 4) & ((uint32_t)(regval) << 0U))" +.LASF2617: + .string "TIMER_CTL0_CEN BIT(0)" +.LASF3364: + .string "_RAND48_SEED_0 (0x330e)" +.LASF1631: + .string "GPIO_CTL0_MD6 BITS(24, 25)" +.LASF643: + .string "ADC_SAMPLETIME_41POINT5 SAMPTX_SPT(4)" +.LASF1177: + .string "DAC_TRIGGER_T1_TRGO CTL_DTSEL(4)" +.LASF1072: + .string "CAN_BT_BS1_16TQ ((uint8_t)0x0FU)" +.LASF2156: + .string "RCU_APB1RST_TIMER6RST BIT(5)" +.LASF4196: + .string "CSR_MHPMCOUNTER11 0xb0b" +.LASF1238: + .string "DMA_CH1MADDR(dmax) REG32((dmax) + 0x28U)" +.LASF4307: + .string "CSR_MHPMCOUNTER24H 0xb98" +.LASF1985: + .string "DATA_TRANS(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF689: + .string "ADC_OVERSAMPLING_ALL_CONVERT 0" +.LASF188: + .string "__LDBL_HAS_DENORM__ 1" +.LASF944: + .string "CAN_ERR_WERR BIT(0)" +.LASF2590: + .string "TIMER0 (TIMER_BASE + 0x00012C00U)" +.LASF1365: + .string "EXTI_EVEN REG32(EXTI + 0x04U)" +.LASF1090: + .string "CAN_SFID_MASK ((uint32_t)0x000007FFU)" +.LASF3718: + .string "MASK_SRA 0xfe00707f" +.LASF2140: + .string "RCU_APB2RST_AFRST BIT(0)" +.LASF161: + .string "__DBL_DIG__ 15" +.LASF1694: + .string "GPIO_BOP_BOP11 BIT(11)" +.LASF1877: + .string "GPIO_TIMER1ITI1_REMAP ((uint32_t)0x00202000U)" +.LASF3282: + .string "__exported __attribute__((__visibility__(\"default\")))" +.LASF3627: + .string "IRQ_S_EXT 9" +.LASF2271: + .string "RCU_APB1_CKAHB_DIV16 CFG0_APB1PSC(7)" +.LASF1158: + .string "DAC0_R12DH_DAC0_DH BITS(0,11)" +.LASF3358: + .string "__lock_release(lock) ((void) 0)" +.LASF3802: + .string "MASK_AMOMIN_W 0xf800707f" +.LASF183: + .string "__LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L" +.LASF763: + .string "BKP_TPCTL_TPAL BIT(1)" +.LASF7: + .string "__GNUC_PATCHLEVEL__ 0" +.LASF1619: + .string "GPIO_CTL0_MD0 BITS(0, 1)" +.LASF2924: + .string "TIMER_SLAVE_MODE_EXTERNAL0 SMCFG_SMC(7)" +.LASF2975: + .string "USART_CTL0_WM BIT(11)" +.LASF1993: + .string "FWDGT_CTL REG32((FWDGT) + 0x00000000U)" +.LASF2798: + .string "TIMER_DMACFG_DMATC_1TRANSFER DMACFG_DMATC(0)" +.LASF418: + .string "_UINTMAX_T_DECLARED " +.LASF1485: + .string "FMC FMC_BASE" +.LASF3999: + .string "MATCH_C_EBREAK 0x9002" +.LASF4267: + .string "CSR_HPMCOUNTER15H 0xc8f" +.LASF2786: + .string "TIMER_DMACFG_DMATA_CHCTL2 DMACFG_DMATA(8)" +.LASF1683: + .string "GPIO_BOP_BOP0 BIT(0)" +.LASF749: + .string "BKP_DATA37 REG16((BKP) + 0xACU)" +.LASF1940: + .string "I2C_STAT1_PECV BITS(8,15)" +.LASF3923: + .string "MATCH_FCVT_W_S 0xc0000053" +.LASF1923: + .string "I2C_STAT0_STPDET BIT(4)" +.LASF4374: + .string "current_intctrl" +.LASF902: + .string "CAN_TSTAT_MAL0 BIT(2)" +.LASF3640: + .string "PTE_W 0x004" +.LASF4011: + .string "MATCH_C_ADDI4SPN 0x0" +.LASF96: + .string "__INT8_MAX__ 0x7f" +.LASF3307: + .string "_Nullable " +.LASF1204: + .string "DAC_LFSR_BITS6_0 DAC_WAVE_BIT_WIDTH_7" +.LASF317: + .string "__riscv_zicsr 2000000" +.LASF2650: + .string "TIMER_DMAINTEN_TRGIE BIT(6)" +.LASF95: + .string "__SIG_ATOMIC_WIDTH__ 32" +.LASF699: + .string "ADC_OVERSAMPLING_SHIFT_7B OVSCR_OVSS(7)" +.LASF3699: + .string "MATCH_ORI 0x6013" +.LASF2307: + .string "RCU_PLL_MUL21 (PLLMF_4 | CFG0_PLLMF(4))" +.LASF2142: + .string "RCU_APB2RST_PBRST BIT(3)" +.LASF2654: + .string "TIMER_DMAINTEN_CH1DEN BIT(10)" +.LASF1675: + .string "GPIO_OCTL_OCTL8 BIT(8)" +.LASF4051: + .string "MATCH_C_J 0xa001" +.LASF997: + .string "CAN_REGIDX_BITS(regidx,bitpos0,bitpos1) (((uint32_t)(regidx) << 12) | ((uint32_t)(bitpos0) << 6) | (uint32_t)(bitpos1))" +.LASF1953: + .string "I2C_STAT0_REG_OFFSET 0x14U" +.LASF1715: + .string "GPIO_BC_CR0 BIT(0)" +.LASF3017: + .string "USART_PM_NONE CTL0_PM(0)" +.LASF4246: + .string "CSR_MHPMEVENT30 0x33e" +.LASF4220: + .string "CSR_MHPMEVENT4 0x324" +.LASF3779: + .string "MATCH_REM 0x2006033" +.LASF1034: + .string "GET_RFIFOMDATA1_DB6(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF1976: + .string "I2C_DMALST_OFF ((uint32_t)0x00000000U)" +.LASF3501: + .string "alloca" +.LASF867: + .string "CAN_F24DATA1(canx) REG32((canx) + 0x304U)" +.LASF2706: + .string "TIMER_CHCTL1_CH3CAPFLT BITS(12,15)" +.LASF663: + .string "ADC_CHANNEL_3 ((uint8_t)0x03U)" +.LASF54: + .string "__UINT_LEAST16_TYPE__ short unsigned int" +.LASF3354: + .string "__lock_acquire(lock) ((void) 0)" +.LASF1351: + .string "EXMC_SNTCFG(region) REG32(EXMC + 0x04U + 0x08U * (region))" +.LASF190: + .string "__LDBL_HAS_QUIET_NAN__ 1" +.LASF2329: + .string "RCU_CKOUT0SRC_CKPLL_DIV2 CFG0_CKOUT0SEL(7)" +.LASF4194: + .string "CSR_MHPMCOUNTER9 0xb09" +.LASF3380: + .string "_REENT_CHECK_TM(ptr) " +.LASF4110: + .string "MASK_CUSTOM2_RD_RS1_RS2 0x707f" +.LASF3966: + .string "MASK_FMV_D_X 0xfff0707f" +.LASF4232: + .string "CSR_MHPMEVENT16 0x330" +.LASF1978: + .string "I2C_PEC_DISABLE ((uint32_t)0x00000000U)" +.LASF2054: + .string "PMU_CS_STBF BIT(1)" +.LASF2403: + .string "RCU_DEEPSLEEP_V_1_1 DSV_DSLPVS(1)" +.LASF4112: + .string "MASK_CUSTOM3 0x707f" +.LASF3991: + .string "MATCH_C_NOP 0x1" +.LASF2705: + .string "TIMER_CHCTL1_CH3CAPPSC BITS(10,11)" +.LASF1767: + .string "AFIO_EXTI1_SS BITS(4, 7)" +.LASF1774: + .string "AFIO_EXTI8_SS BITS(0, 3)" +.LASF4224: + .string "CSR_MHPMEVENT8 0x328" +.LASF4276: + .string "CSR_HPMCOUNTER24H 0xc98" +.LASF2806: + .string "TIMER_DMACFG_DMATC_9TRANSFER DMACFG_DMATC(8)" +.LASF4204: + .string "CSR_MHPMCOUNTER19 0xb13" +.LASF1802: + .string "GPIO_PORT_SOURCE_GPIOB ((uint8_t)0x01U)" +.LASF3086: + .string "_PTRDIFF_T_DECLARED " +.LASF3385: + .string "_REENT_SIGNGAM(ptr) ((ptr)->_new._reent._gamma_signgam)" +.LASF435: + .string "INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)" +.LASF964: + .string "CAN_TMDATA0_DB0 BITS(0,7)" +.LASF1469: + .string "EXTI_PD_PD4 BIT(4)" +.LASF2778: + .string "TIMER_DMACFG_DMATA_CTL0 DMACFG_DMATA(0)" +.LASF4135: + .string "CSR_HPMCOUNTER9 0xc09" +.LASF3706: + .string "MASK_SUB 0xfe00707f" +.LASF1206: + .string "DAC_LFSR_BITS8_0 DAC_WAVE_BIT_WIDTH_9" +.LASF2808: + .string "TIMER_DMACFG_DMATC_11TRANSFER DMACFG_DMATC(10)" +.LASF2956: + .string "USART_STAT_RBNE BIT(5)" +.LASF1560: + .string "OB_WP2_WP2 ((uint32_t)0x00FF0000U)" +.LASF215: + .string "__FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32" +.LASF3960: + .string "MASK_FCVT_D_WU 0xfff0007f" +.LASF857: + .string "CAN_F14DATA1(canx) REG32((canx) + 0x2B4U)" +.LASF2831: + .string "TIMER_COUNTER_UP ((uint16_t)0x0000U)" +.LASF4345: + .string "short unsigned int" +.LASF741: + .string "BKP_DATA29 REG16((BKP) + 0x8CU)" +.LASF4056: + .string "MASK_C_BNEZ 0xe003" +.LASF1322: + .string "DMA_MEMORY_TO_MEMORY_DISABLE ((uint32_t)0x00000000U)" +.LASF207: + .string "__FLT32_DIG__ 6" +.LASF900: + .string "CAN_TSTAT_MTF0 BIT(0)" +.LASF292: + .string "__GCC_ATOMIC_SHORT_LOCK_FREE 1" +.LASF1643: + .string "GPIO_CTL1_MD12 BITS(16, 17)" +.LASF1145: + .string "DAC_CTL_DTSEL0 BITS(3,5)" +.LASF2593: + .string "TIMER3 (TIMER_BASE + 0x00000800U)" +.LASF2791: + .string "TIMER_DMACFG_DMATA_CH0CV DMACFG_DMATA(13)" +.LASF3815: + .string "MATCH_AMOADD_D 0x302f" +.LASF3128: + .string "N200_TIMER_H " +.LASF1144: + .string "DAC_CTL_DTEN0 BIT(2)" +.LASF575: + .string "ADC_CTL1_ETSIC BITS(12,14)" +.LASF3130: + .string "TIMER_MSIP_size 0x4" +.LASF2050: + .string "PMU_CTL_LVDEN BIT(4)" +.LASF3073: + .string "WWDGT_CFG_PSC_DIV8 CFG_PSC(3)" +.LASF3584: + .string "MCONTROL_ACTION_TRACE_EMIT 4" +.LASF2918: + .string "TIMER_ENCODER_MODE0 SMCFG_SMC(1)" +.LASF3264: + .string "__alloc_size2(n,x) __attribute__((__alloc_size__(n, x)))" +.LASF3336: + .string "_WINT_T " +.LASF1862: + .string "GPIO_TIMER0_FULL_REMAP ((uint32_t)0x001600C0U)" +.LASF3660: + .string "clear_csr(reg,bit) ({ unsigned long __tmp; if (__builtin_constant_p(bit) && (unsigned long)(bit) < 32) asm volatile (\"csrrc %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"i\"(bit)); else asm volatile (\"csrrc %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"r\"(bit)); __tmp; })" +.LASF2748: + .string "TIMER_INT_FLAG_UP TIMER_INT_UP" +.LASF3698: + .string "MASK_SRAI 0xfc00707f" +.LASF1320: + .string "DMA_PRIORITY_HIGH CHCTL_PRIO(2U)" +.LASF1546: + .string "OB_DEEPSLEEP_NRST ((uint8_t)0x02U)" +.LASF298: + .string "__GCC_HAVE_DWARF2_CFI_ASM 1" +.LASF896: + .string "CAN_STAT_TS BIT(8)" +.LASF1863: + .string "GPIO_TIMER1_PARTIAL_REMAP0 ((uint32_t)0x00180100U)" +.LASF411: + .string "_INT32_T_DECLARED " +.LASF1455: + .string "EXTI_SWIEV_SWIEV9 BIT(9)" +.LASF1668: + .string "GPIO_OCTL_OCTL1 BIT(1)" +.LASF2188: + .string "RCU_APB2EN_USART0EN BIT(14)" +.LASF3843: + .string "MATCH_SRET 0x10200073" +.LASF4125: + .string "CSR_FCSR 0x3" +.LASF1736: + .string "GPIO_LOCK_LK5 BIT(5)" +.LASF717: + .string "BKP_DATA5 REG16((BKP) + 0x18U)" +.LASF611: + .string "ADC_DAUL_INSERTED_PARALLEL_REGULAL_FOLLOWUP_SLOW CTL0_SYNCM(4)" +.LASF1274: + .string "DMA_CHXCTL_MNAGA BIT(7)" +.LASF2491: + .string "SPI_CRCPOLY_CRCPOLY BITS(0,15)" +.LASF3317: + .string "__trylocks_exclusive(...) __lock_annotate(exclusive_trylock_function(__VA_ARGS__))" +.LASF2610: + .string "TIMER_CH0CV(timerx) REG32((timerx) + 0x34U)" +.LASF1900: + .string "I2C_CTL0_STOP BIT(9)" +.LASF398: + .string "__FAST32 " +.LASF1250: + .string "DMA_CH4MADDR(dmax) REG32((dmax) + 0x64U)" +.LASF1381: + .string "EXTI_INTEN_INTEN11 BIT(11)" +.LASF66: + .string "__UINTPTR_TYPE__ unsigned int" +.LASF729: + .string "BKP_DATA17 REG16((BKP) + 0x5CU)" +.LASF3391: + .string "_REENT_MP_RESULT_K(ptr) ((ptr)->_result_k)" +.LASF1705: + .string "GPIO_BOP_CR6 BIT(22)" +.LASF303: + .string "__riscv 1" +.LASF4421: + .string "D:\\\\rt-thread\\\\bsp\\\\gd32\\\\risc-v\\\\gd32vf103v-eval" +.LASF3548: + .string "DCSR_EBREAKS (1<<13)" +.LASF145: + .string "__FLT_MANT_DIG__ 24" +.LASF3213: + .string "__long_double_t long double" +.LASF467: + .string "UINT_FAST64_MAX (__UINT_FAST64_MAX__)" +.LASF2629: + .string "TIMER_CTL1_TI0S BIT(7)" +.LASF3010: + .string "CTL0_REN(regval) (BIT(2) & ((uint32_t)(regval) << 2))" +.LASF774: + .string "RTC_OUTPUT_SECOND_PULSE ((uint16_t)0x0200U)" +.LASF823: + .string "CAN_F8DATA0(canx) REG32((canx) + 0x280U)" +.LASF4066: + .string "MASK_C_MV 0xf003" +.LASF3198: + .string "_NOTHROW " +.LASF2999: + .string "USART_GP_GUAT BITS(8,15)" +.LASF2426: + .string "RTC_CTL_LWOFF BIT(5)" +.LASF1751: + .string "AFIO_PCF0_SPI0_REMAP BIT(0)" +.LASF1068: + .string "CAN_BT_BS1_12TQ ((uint8_t)0x0BU)" +.LASF656: + .string "ADC_INSERTED_CHANNEL_0 ((uint8_t)0x00U)" +.LASF3797: + .string "MATCH_AMOOR_W 0x4000202f" +.LASF1885: + .string "I2C_SADDR1(i2cx) REG32((i2cx) + 0x0CU)" +.LASF577: + .string "ADC_CTL1_ETSRC BITS(17,19)" +.LASF2858: + .string "TIMER_CH_2 ((uint16_t)0x0002U)" +.LASF1051: + .string "CAN_SILENT_MODE ((uint8_t)0x02U)" +.LASF3830: + .string "MASK_AMOMAXU_D 0xf800707f" +.LASF2568: + .string "SPI_I2S_INT_FLAG_TBE ((uint8_t)0x00U)" +.LASF2846: + .string "TIMER_BREAK_POLARITY_HIGH ((uint16_t)TIMER_CCHP_BRKP)" +.LASF2621: + .string "TIMER_CTL0_DIR BIT(4)" +.LASF2550: + .string "I2S_MODE_SLAVERX I2SCTL_I2SOPMOD(1)" +.LASF375: + .string "signed" +.LASF4092: + .string "MASK_CUSTOM1_RS1_RS2 0x707f" +.LASF974: + .string "CAN_RFIFOMI_EFID BITS(3,31)" +.LASF4116: + .string "MASK_CUSTOM3_RS1_RS2 0x707f" +.LASF2736: + .string "TIMER_CCHP_POEN BIT(15)" +.LASF2507: + .string "SPI_BIDIRECTIONAL_TRANSMIT SPI_CTL0_BDOEN" +.LASF552: + .string "ADC_STAT_EOC BIT(1)" +.LASF353: + .string "__GNU_VISIBLE 0" +.LASF4382: + .string "nlbits_shifted" +.LASF2890: + .string "TIMER_IC_POLARITY_BOTH_EDGE ((uint16_t)0x000AU)" +.LASF2378: + .string "RCU_PLL1_MUL12 CFG1_PLL1MF(10)" +.LASF1638: + .string "GPIO_CTL1_CTL9 BITS(6, 7)" +.LASF1441: + .string "EXTI_FTEN_FTEN14 BIT(14)" +.LASF1543: + .string "WS_WSCNT_2 WS_WSCNT(2)" +.LASF2633: + .string "TIMER_CTL1_ISO1N BIT(11)" +.LASF1251: + .string "DMA_CH5CTL(dmax) REG32((dmax) + 0x6CU)" +.LASF2178: + .string "RCU_APB2EN_AFEN BIT(0)" +.LASF1272: + .string "DMA_CHXCTL_CMEN BIT(5)" +.LASF2185: + .string "RCU_APB2EN_ADC1EN BIT(10)" +.LASF3800: + .string "MASK_AMOAND_W 0xf800707f" +.LASF279: + .string "__FLT64X_HAS_INFINITY__ 1" +.LASF1180: + .string "DAC_TRIGGER_SOFTWARE CTL_DTSEL(7)" +.LASF1618: + .string "AFIO_PCF1 REG32(AFIO + 0x1CU)" +.LASF2349: + .string "RCU_PREDV0_DIV10 CFG1_PREDV0(9)" +.LASF2205: + .string "RCU_APB1EN_CAN1EN BIT(26)" +.LASF222: + .string "__FLT64_DIG__ 15" +.LASF4402: + .string "base" +.LASF2788: + .string "TIMER_DMACFG_DMATA_PSC DMACFG_DMATA(10)" +.LASF3372: + .string "_REENT_ASCTIME_SIZE 26" +.LASF2845: + .string "TIMER_BREAK_POLARITY_LOW ((uint16_t)0x0000U)" +.LASF3854: + .string "MASK_WFI 0xffffffff" +.LASF3989: + .string "MATCH_FNMADD_D 0x200004f" +.LASF4: + .string "__STDC_HOSTED__ 1" +.LASF3930: + .string "MASK_FCVT_LU_S 0xfff0007f" +.LASF3561: + .string "DCSR_CAUSE_STEP 4" +.LASF1364: + .string "EXTI_INTEN REG32(EXTI + 0x00U)" +.LASF675: + .string "ADC_CHANNEL_15 ((uint8_t)0x0FU)" +.LASF401: + .string "__LEAST16 \"h\"" +.LASF1540: + .string "WS_WSCNT(regval) (BITS(0,2) & ((uint32_t)(regval)))" +.LASF4331: + .string "CAUSE_ILLEGAL_INSTRUCTION 0x2" +.LASF4310: + .string "CSR_MHPMCOUNTER27H 0xb9b" +.LASF1448: + .string "EXTI_SWIEV_SWIEV2 BIT(2)" +.LASF4283: + .string "CSR_HPMCOUNTER31H 0xc9f" +.LASF2878: + .string "TIMER_OC_MODE_PWM0 ((uint16_t)0x0060U)" +.LASF2676: + .string "TIMER_SWEVG_CMTG BIT(5)" +.LASF2153: + .string "RCU_APB1RST_TIMER3RST BIT(2)" +.LASF4002: + .string "MASK_C_LD 0xe003" +.LASF1247: + .string "DMA_CH4CTL(dmax) REG32((dmax) + 0x58U)" +.LASF2003: + .string "FWDGT_PSC_DIV4 ((uint8_t)PSC_PSC(0))" +.LASF1990: + .string "I2C_ADDFORMAT_10BITS I2C_SADDR0_ADDFORMAT" +.LASF1197: + .string "DAC_WAVE_BIT_WIDTH_12 DWBW(11)" +.LASF1624: + .string "GPIO_CTL0_CTL2 BITS(10, 11)" +.LASF3158: + .string "ECLIC_CFG_NLBITS_MASK _AC(0x1E,UL)" +.LASF2244: + .string "BDCTL_REG_OFFSET 0x20U" +.LASF1214: + .string "DAC_TRIANGLE_AMPLITUDE_1 DAC_WAVE_BIT_WIDTH_1" +.LASF1318: + .string "DMA_PRIORITY_LOW CHCTL_PRIO(0U)" +.LASF3029: + .string "USART_STB_2BIT CTL1_STB(2)" +.LASF3053: + .string "USART_CTS_ENABLE CLT2_CTSEN(1)" +.LASF2962: + .string "USART_BAUD_FRADIV BITS(0,3)" +.LASF2619: + .string "TIMER_CTL0_UPS BIT(2)" +.LASF1787: + .string "GPIO_MODE_IPD ((uint8_t)0x28U)" +.LASF4360: + .string "eclic_set_negedge_trig" +.LASF475: + .string "PTRDIFF_MIN (-PTRDIFF_MAX - 1)" +.LASF2179: + .string "RCU_APB2EN_PAEN BIT(2)" +.LASF2169: + .string "RCU_APB1RST_PMURST BIT(28)" +.LASF4132: + .string "CSR_HPMCOUNTER6 0xc06" +.LASF3736: + .string "MASK_SLLW 0xfe00707f" +.LASF1354: + .string "EXMC_NOR_DATABUS_WIDTH_16B SNCTL_NRW(1)" +.LASF4264: + .string "CSR_HPMCOUNTER12H 0xc8c" +.LASF923: + .string "CAN_RFIFO0_RFF0 BIT(3)" +.LASF3690: + .string "MASK_SLTI 0x707f" +.LASF2031: + .string "DBG_CTL_TIMER3_HOLD BIT(13)" +.LASF4086: + .string "MASK_CUSTOM0_RD_RS1_RS2 0x707f" +.LASF849: + .string "CAN_F6DATA1(canx) REG32((canx) + 0x274U)" +.LASF1551: + .string "OB_USER_MASK ((uint8_t)0xF0U)" +.LASF1519: + .string "FMC_ADDR0_ADDR BITS(0,31)" +.LASF1824: + .string "GPIO_PIN_SOURCE_2 ((uint8_t)0x02U)" +.LASF549: + .string "ADC_RDATA(adcx) REG32((adcx) + 0x4CU)" +.LASF1677: + .string "GPIO_OCTL_OCTL10 BIT(10)" +.LASF2598: + .string "TIMER_CTL1(timerx) REG32((timerx) + 0x04U)" +.LASF2292: + .string "RCU_PLL_MUL6 CFG0_PLLMF(4)" +.LASF4178: + .string "CSR_MIP 0x344" +.LASF4407: + .string "start_mtime" +.LASF1894: + .string "I2C_CTL0_SMBSEL BIT(3)" +.LASF2752: + .string "TIMER_INT_FLAG_CH3 TIMER_INT_CH3" +.LASF1312: + .string "DMA_PERIPHERAL_WIDTH_32BIT CHCTL_PWIDTH(2U)" +.LASF2971: + .string "USART_CTL0_TBEIE BIT(7)" +.LASF2747: + .string "TIMER_INT_BRK TIMER_DMAINTEN_BRKIE" +.LASF1156: + .string "DAC_SWT_SWTR0 BIT(0)" +.LASF3449: + .string "__SLBF 0x0001" +.LASF2892: + .string "TIMER_IC_SELECTION_INDIRECTTI ((uint16_t)0x0002U)" +.LASF4211: + .string "CSR_MHPMCOUNTER26 0xb1a" +.LASF4317: + .string "CSR_MCOUNTINHIBIT 0x320" +.LASF887: + .string "CAN_CTL_ABOR BIT(6)" +.LASF26: + .string "__ORDER_LITTLE_ENDIAN__ 1234" +.LASF3239: + .string "__GNUCLIKE_BUILTIN_MEMCPY 1" +.LASF2470: + .string "SPI_CTL0_CRCEN BIT(13)" +.LASF3554: + .string "DCSR_HALT (1<<3)" +.LASF1123: + .string "CRC_FDATA_FDATA BITS(0, 7)" +.LASF3974: + .string "MASK_FSD 0x707f" +.LASF4017: + .string "MATCH_C_FLW 0x6000" +.LASF3291: + .string "__strftimelike(fmtarg,firstvararg) __attribute__((__format__ (__strftime__, fmtarg, firstvararg)))" +.LASF983: + .string "CAN_RFIFOMDATA1_DB4 BITS(0,7)" +.LASF818: + .string "CAN_F3DATA0(canx) REG32((canx) + 0x258U)" +.LASF3834: + .string "MASK_LR_D 0xf9f0707f" +.LASF1348: + .string "EXMC_SNTCFG_DSET BITS(8,15)" +.LASF4352: + .string "long long unsigned int" +.LASF2044: + .string "PMU_CTL REG32((PMU) + 0x00U)" +.LASF2264: + .string "RCU_AHB_CKSYS_DIV256 CFG0_AHBPSC(14)" +.LASF2615: + .string "TIMER_DMACFG(timerx) REG32((timerx) + 0x48U)" +.LASF171: + .string "__DBL_DENORM_MIN__ ((double)4.94065645841246544176568792868221372e-324L)" +.LASF986: + .string "CAN_RFIFOMDATA1_DB7 BITS(24,31)" +.LASF1313: + .string "CHCTL_MWIDTH(regval) (BITS(10,11) & ((uint32_t)(regval) << 10))" +.LASF856: + .string "CAN_F13DATA1(canx) REG32((canx) + 0x2ACU)" +.LASF4217: + .string "CSR_MUCOUNTEREN 0x320" +.LASF1119: + .string "CRC_DATA REG32(CRC + 0x00U)" +.LASF3888: + .string "MASK_FADD_D 0xfe00007f" +.LASF473: + .string "SIG_ATOMIC_MAX (__STDINT_EXP(INT_MAX))" +.LASF2075: + .string "GD32VF103_RCU_H " +.LASF784: + .string "CAN_TSTAT(canx) REG32((canx) + 0x08U)" +.LASF3509: + .string "_SYS_STRING_H " +.LASF2275: + .string "RCU_APB2_CKAHB_DIV4 CFG0_APB2PSC(5)" +.LASF1518: + .string "FMC_CTL_ENDIE BIT(12)" +.LASF1398: + .string "EXTI_EVEN_EVEN9 BIT(9)" +.LASF1280: + .string "DMA_CHXPADDR_PADDR BITS(0,31)" +.LASF3529: + .string "MSTATUS_MXR 0x00080000" +.LASF899: + .string "CAN_STAT_RXL BIT(11)" +.LASF3818: + .string "MASK_AMOXOR_D 0xf800707f" +.LASF1539: + .string "UNLOCK_KEY1 ((uint32_t)0xCDEF89ABU)" +.LASF1970: + .string "I2C_GCEN_DISABLE ((uint32_t)0x00000000U)" +.LASF4364: + .string "eclic_set_nonvmode" +.LASF2934: + .string "TIMER_HALLINTERFACE_ENABLE TIMER_CTL1_TI0S" +.LASF3637: + .string "DRAM_BASE 0x80000000" +.LASF4049: + .string "MATCH_C_ADDW 0x9c21" +.LASF940: + .string "CAN_INTEN_ERRNIE BIT(11)" +.LASF3992: + .string "MASK_C_NOP 0xffff" +.LASF724: + .string "BKP_DATA12 REG16((BKP) + 0x48U)" +.LASF3956: + .string "MASK_FMV_S_X 0xfff0707f" +.LASF4343: + .string "unsigned char" +.LASF1406: + .string "EXTI_EVEN_EVEN17 BIT(17)" +.LASF3028: + .string "USART_STB_0_5BIT CTL1_STB(1)" +.LASF2662: + .string "TIMER_INTF_CH2IF BIT(3)" +.LASF2514: + .string "SPI_FRAMESIZE_8BIT ((uint32_t)0x00000000U)" +.LASF248: + .string "__FLT128_HAS_DENORM__ 1" +.LASF4185: + .string "CSR_DSCRATCH 0x7b2" +.LASF3624: + .string "IRQ_S_TIMER 5" +.LASF1088: + .string "CAN_FIFO1 ((uint8_t)0x01U)" +.LASF2749: + .string "TIMER_INT_FLAG_CH0 TIMER_INT_CH0" +.LASF2837: + .string "TIMER_SP_MODE_SINGLE TIMER_CTL0_SPM" +.LASF4221: + .string "CSR_MHPMEVENT5 0x325" +.LASF786: + .string "CAN_RFIFO1(canx) REG32((canx) + 0x10U)" +.LASF3395: + .string "_REENT_TM(ptr) (&(ptr)->_new._reent._localtime_buf)" +.LASF4359: + .string "new_intattr" +.LASF1972: + .string "I2C_SRESET_RESET ((uint32_t)0x00000000U)" +.LASF3729: + .string "MATCH_SRAIW 0x4000501b" +.LASF3346: + .string "__Long long" +.LASF2095: + .string "RCU_CTL_HXTALSTB BIT(17)" +.LASF1699: + .string "GPIO_BOP_CR0 BIT(16)" +.LASF1647: + .string "GPIO_CTL1_MD14 BITS(24, 25)" +.LASF2714: + .string "TIMER_CHCTL2_CH1NP BIT(7)" +.LASF1660: + .string "GPIO_ISTAT_ISTAT9 BIT(9)" +.LASF1433: + .string "EXTI_FTEN_FTEN6 BIT(6)" +.LASF1952: + .string "I2C_CTL1_REG_OFFSET 0x04U" +.LASF2759: + .string "TIMER_FLAG_CH2 TIMER_INTF_CH2IF" +.LASF2921: + .string "TIMER_SLAVE_MODE_RESTART SMCFG_SMC(4)" +.LASF4212: + .string "CSR_MHPMCOUNTER27 0xb1b" +.LASF2579: + .string "SPI_FLAG_RXORERR SPI_STAT_RXORERR" +.LASF2295: + .string "RCU_PLL_MUL9 CFG0_PLLMF(7)" +.LASF705: + .string "ADC_OVERSAMPLING_RATIO_MUL16 OVSCR_OVSR(3)" +.LASF1931: + .string "I2C_STAT0_SMBTO BIT(14)" +.LASF1696: + .string "GPIO_BOP_BOP13 BIT(13)" +.LASF1224: + .string "DAC_TRIANGLE_AMPLITUDE_2047 DAC_WAVE_BIT_WIDTH_11" +.LASF3720: + .string "MASK_OR 0xfe00707f" +.LASF2864: + .string "TIMER_OC_POLARITY_HIGH ((uint16_t)0x0000U)" +.LASF3464: + .string "__SNLK 0x0001" +.LASF1712: + .string "GPIO_BOP_CR13 BIT(29)" +.LASF4168: + .string "CSR_MISA 0x301" +.LASF3223: + .string "__BEGIN_DECLS " +.LASF3377: + .ascii "_REENT_INIT_PTR_ZEROED(var) { (var)->_stdin = _REENT_STDIO_S" + .ascii "TREAM(var, 0); (var)->_stdout = _REENT_STDIO_STREAM(var, 1);" + .ascii " (var)->_stderr = _REENT_STDIO_STREAM(var, 2); (var)->_new._" + .ascii "reent._rand_next = 1; (var)->_new._reent._r48._seed[0] = _RA" + .ascii "ND48_SEED_0; (var)->_new._reent._r48._seed[1] = _RAND48_S" + .string "EED_1; (var)->_new._reent._r48._seed[2] = _RAND48_SEED_2; (var)->_new._reent._r48._mult[0] = _RAND48_MULT_0; (var)->_new._reent._r48._mult[1] = _RAND48_MULT_1; (var)->_new._reent._r48._mult[2] = _RAND48_MULT_2; (var)->_new._reent._r48._add = _RAND48_ADD; }" +.LASF2125: + .string "RCU_INT_IRC40KSTBIE BIT(8)" +.LASF1461: + .string "EXTI_SWIEV_SWIEV15 BIT(15)" +.LASF1735: + .string "GPIO_LOCK_LK4 BIT(4)" +.LASF1816: + .string "GPIO_EVENT_PIN_10 ((uint8_t)0x0AU)" +.LASF463: + .string "INT_FAST32_MAX (__INT_FAST32_MAX__)" +.LASF2709: + .string "TIMER_CHCTL2_CH0NEN BIT(2)" +.LASF3205: + .string "__need_size_t " +.LASF1998: + .string "FWDGT_PSC_PSC BITS(0,2)" +.LASF3734: + .string "MASK_SUBW 0xfe00707f" +.LASF4081: + .string "MATCH_CUSTOM0_RD 0x400b" +.LASF3421: + .string "__time_t_defined " +.LASF2586: + .string "I2S_FLAG_RXORERR SPI_STAT_RXORERR" +.LASF3899: + .string "MATCH_FSGNJX_D 0x22002053" +.LASF2693: + .string "TIMER_CHCTL1_CH2MS BITS(0,1)" +.LASF1981: + .string "I2C_SALTSEND_ENABLE I2C_CTL0_SALT" +.LASF1026: + .string "GET_RFIFOMP_DLENC(regval) GET_BITS((uint32_t)(regval), 0U, 3U)" +.LASF2543: + .string "I2S_FRAMEFORMAT_DT16B_CH32B (I2SCTL_DTLEN(0) | SPI_I2SCTL_CHLEN)" +.LASF2469: + .string "SPI_CTL0_CRCNT BIT(12)" +.LASF67: + .string "__GXX_ABI_VERSION 1014" +.LASF2903: + .string "TIMER_SMCFG_TRGSEL_CI0F_ED SMCFG_TRGSEL(4)" +.LASF3976: + .string "MASK_FMADD_S 0x600007f" +.LASF527: + .string "GD32VF103_ADC_H " +.LASF265: + .string "__FLT32X_HAS_QUIET_NAN__ 1" +.LASF4386: + .string "eclic_get_mth" +.LASF841: + .string "CAN_F26DATA0(canx) REG32((canx) + 0x310U)" +.LASF347: + .string "__NEWLIB_MINOR__ 1" +.LASF1284: + .string "DMA_CHCNT(dma,channel) REG32(((dma) + 0x0CU) + 0x14U * (uint32_t)(channel))" +.LASF981: + .string "CAN_RFIFOMDATA0_DB2 BITS(16,23)" +.LASF2332: + .string "RCU_CKOUT0SRC_EXT1 CFG0_CKOUT0SEL(10)" +.LASF1391: + .string "EXTI_EVEN_EVEN2 BIT(2)" +.LASF186: + .string "__LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L" +.LASF578: + .string "ADC_CTL1_ETERC BIT(20)" +.LASF402: + .string "__LEAST32 \"l\"" +.LASF581: + .string "ADC_CTL1_TSVREN BIT(23)" +.LASF1507: + .string "FMC_STAT_WPERR BIT(4)" +.LASF3255: + .string "__weak_symbol __attribute__((__weak__))" +.LASF271: + .string "__FLT64X_MAX_10_EXP__ 4932" +.LASF1368: + .string "EXTI_SWIEV REG32(EXTI + 0x10U)" +.LASF1509: + .string "FMC_CTL_PG BIT(0)" +.LASF2762: + .string "TIMER_FLAG_TRG TIMER_INTF_TRGIF" +.LASF3790: + .string "MASK_REMW 0xfe00707f" +.LASF2591: + .string "TIMER1 (TIMER_BASE + 0x00000000U)" +.LASF3638: + .string "PTE_V 0x001" +.LASF4367: + .string "mtvec_value" +.LASF1409: + .string "EXTI_RTEN_RTEN1 BIT(1)" +.LASF1038: + .string "GET_ERR_RECNT(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF2513: + .string "SPI_FRAMESIZE_16BIT SPI_CTL0_FF16" +.LASF285: + .string "__CHAR_UNSIGNED__ 1" +.LASF596: + .string "ADC_OVSCR_TOVS BIT(9)" +.LASF2732: + .string "TIMER_CCHP_ROS BIT(11)" +.LASF1642: + .string "GPIO_CTL1_CTL11 BITS(14, 15)" +.LASF1968: + .string "I2C_SCLSTRETCH_DISABLE I2C_CTL0_SS" +.LASF3941: + .string "MATCH_FCVT_LU_D 0xc2300053" +.LASF893: + .string "CAN_STAT_ERRIF BIT(2)" +.LASF3781: + .string "MATCH_REMU 0x2007033" +.LASF1635: + .string "GPIO_CTL1_MD8 BITS(0, 1)" +.LASF1349: + .string "EXMC_SNTCFG_BUSLAT BITS(16,19)" +.LASF1314: + .string "DMA_MEMORY_WIDTH_8BIT CHCTL_MWIDTH(0U)" +.LASF3332: + .string "__GNUC_VA_LIST " +.LASF2226: + .string "RCU_CFG1_PREDV1 BITS(4,7)" +.LASF123: + .string "__UINT64_C(c) c ## ULL" +.LASF3126: + .string "offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)" +.LASF2694: + .string "TIMER_CHCTL1_CH2COMFEN BIT(2)" +.LASF3133: + .string "TIMER_MTIME 0x0" +.LASF4039: + .string "MATCH_C_SUB 0x8c01" +.LASF1607: + .string "GPIO_ISTAT(gpiox) REG32((gpiox) + 0x08U)" +.LASF486: + .string "INT64_C(x) __INT64_C(x)" +.LASF2991: + .string "USART_CTL2_NKEN BIT(4)" +.LASF971: + .string "CAN_TMDATA1_DB7 BITS(24,31)" +.LASF169: + .string "__DBL_MIN__ ((double)2.22507385850720138309023271733240406e-308L)" +.LASF2873: + .string "TIMER_OC_MODE_ACTIVE ((uint16_t)0x0010U)" +.LASF1294: + .string "DMA_INT_FLAG_HTF DMA_INTF_HTFIF" +.LASF4035: + .string "MATCH_C_SRAI 0x8401" +.LASF831: + .string "CAN_F16DATA0(canx) REG32((canx) + 0x2C0U)" +.LASF299: + .string "__PRAGMA_REDEFINE_EXTNAME 1" +.LASF655: + .string "ADC_CHANNEL_DISCON_DISABLE ((uint8_t)0x04U)" +.LASF3497: + .string "_STDLIB_H_ " +.LASF520: + .string "DMA_BASE (AHB1_BUS_BASE + 0x00008000U)" +.LASF1118: + .string "CRC CRC_BASE" +.LASF1394: + .string "EXTI_EVEN_EVEN5 BIT(5)" +.LASF848: + .string "CAN_F5DATA1(canx) REG32((canx) + 0x26CU)" +.LASF885: + .string "CAN_CTL_ARD BIT(4)" +.LASF2973: + .string "USART_CTL0_PM BIT(9)" +.LASF1639: + .string "GPIO_CTL1_MD10 BITS(8, 9)" +.LASF3739: + .string "MATCH_SRAW 0x4000503b" +.LASF559: + .string "ADC_CTL0_EOICIE BIT(7)" +.LASF3772: + .string "MASK_MULHSU 0xfe00707f" +.LASF3490: + .string "__sfileno(p) ((p)->_file)" +.LASF3587: + .string "MCONTROL_MATCH_GE 2" +.LASF875: + .string "CAN_FDATA0(canx,bank) REG32((canx) + 0x240U + ((bank) * 0x8U) + 0x0U)" +.LASF4108: + .string "MASK_CUSTOM2_RD_RS1 0x707f" +.LASF914: + .string "CAN_TSTAT_MST2 BIT(23)" +.LASF3094: + .string "__SIZE_T " +.LASF4104: + .string "MASK_CUSTOM2_RS1_RS2 0x707f" +.LASF3503: + .string "__compar_fn_t_defined " +.LASF2486: + .string "SPI_STAT_CONFERR BIT(5)" +.LASF3272: + .string "__nonnull(x) __attribute__((__nonnull__ x))" +.LASF3716: + .string "MASK_SRL 0xfe00707f" +.LASF1873: + .string "GPIO_CAN1_REMAP ((uint32_t)0x00200040U)" +.LASF2316: + .string "RCU_PLL_MUL30 (PLLMF_4 | CFG0_PLLMF(13))" +.LASF348: + .string "__NEWLIB_PATCHLEVEL__ 0" +.LASF3154: + .string "ECLIC_INT_ATTR_TRIG_POS 0x00" +.LASF1741: + .string "GPIO_LOCK_LK10 BIT(10)" +.LASF1839: + .string "GPIO_PIN_1 BIT(1)" +.LASF3222: + .string "__has_feature(x) 0" +.LASF344: + .string "_NEWLIB_VERSION_H__ 1" +.LASF1345: + .string "EXMC_SNCTL_ASYNCWAIT BIT(15)" +.LASF1620: + .string "GPIO_CTL0_CTL0 BITS(2, 3)" +.LASF3171: + .string "__NEWLIB_H__ 1" +.LASF1100: + .string "CAN_FT_DATA ((uint32_t)0x00000000U)" +.LASF1835: + .string "GPIO_PIN_SOURCE_13 ((uint8_t)0x0DU)" +.LASF3488: + .string "__sferror(p) ((int)(((p)->_flags & __SERR) != 0))" +.LASF493: + .string "BIT(x) ((uint32_t)((uint32_t)0x01U<<(x)))" +.LASF3246: + .string "__CC_SUPPORTS_DYNAMIC_ARRAY_INIT 1" +.LASF291: + .string "__GCC_ATOMIC_WCHAR_T_LOCK_FREE 2" +.LASF2671: + .string "TIMER_SWEVG_UPG BIT(0)" +.LASF2099: + .string "RCU_CTL_PLLSTB BIT(25)" +.LASF2595: + .string "TIMER5 (TIMER_BASE + 0x00001000U)" +.LASF2957: + .string "USART_STAT_TC BIT(6)" +.LASF3988: + .string "MASK_FNMSUB_D 0x600007f" +.LASF1487: + .string "FMC_WS REG32((FMC) + 0x00U)" +.LASF2740: + .string "TIMER_INT_UP TIMER_DMAINTEN_UPIE" +.LASF3051: + .string "USART_RTS_DISABLE CLT2_RTSEN(0)" +.LASF2572: + .string "SPI_INT_FLAG_CRCERR ((uint8_t)0x04U)" +.LASF4001: + .string "MATCH_C_LD 0x6000" +.LASF1836: + .string "GPIO_PIN_SOURCE_14 ((uint8_t)0x0EU)" +.LASF1135: + .string "DAC1_L12DH REG32(DAC + 0x18U)" +.LASF2299: + .string "RCU_PLL_MUL13 CFG0_PLLMF(11)" +.LASF60: + .string "__INT_FAST64_TYPE__ long long int" +.LASF1149: + .string "DAC_CTL_DEN1 BIT(16)" +.LASF2651: + .string "TIMER_DMAINTEN_BRKIE BIT(7)" +.LASF2478: + .string "SPI_CTL1_ERRIE BIT(5)" +.LASF2933: + .string "TIMER_ETP_RISING ((uint32_t)0x00000000U)" +.LASF908: + .string "CAN_TSTAT_MTE1 BIT(11)" +.LASF197: + .string "__FLT16_DECIMAL_DIG__ 5" +.LASF498: + .string "OB_BASE ((uint32_t)0x1FFFF800U)" +.LASF1547: + .string "OB_DEEPSLEEP_RST ((uint8_t)0x00U)" +.LASF1615: + .string "AFIO_EXTISS1 REG32(AFIO + 0x0CU)" +.LASF2256: + .string "CFG0_AHBPSC(regval) (BITS(4,7) & ((uint32_t)(regval) << 4))" +.LASF247: + .string "__FLT128_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F128" +.LASF863: + .string "CAN_F20DATA1(canx) REG32((canx) + 0x2E4U)" +.LASF3367: + .string "_RAND48_MULT_0 (0xe66d)" +.LASF2979: + .string "USART_CTL1_LBLEN BIT(5)" +.LASF3741: + .string "MATCH_LB 0x3" +.LASF2073: + .string "WFI_CMD ((uint8_t)0x00U)" +.LASF2105: + .string "RCU_CFG0_SCSS BITS(2,3)" +.LASF22: + .string "__SIZEOF_LONG_DOUBLE__ 16" +.LASF21: + .string "__SIZEOF_DOUBLE__ 8" +.LASF149: + .string "__FLT_MAX_EXP__ 128" +.LASF815: + .string "CAN_F0DATA0(canx) REG32((canx) + 0x240U)" +.LASF640: + .string "ADC_SAMPLETIME_7POINT5 SAMPTX_SPT(1)" +.LASF619: + .string "ADC_CONTINUOUS_MODE ADC_CTL1_CTN" +.LASF3533: + .string "SSTATUS_UIE 0x00000001" +.LASF2371: + .string "RCU_PREDV1_DIV15 CFG1_PREDV1(14)" +.LASF191: + .string "__FLT16_MANT_DIG__ 11" +.LASF2504: + .string "SPI_I2SPSC_MCKOEN BIT(9)" +.LASF144: + .string "__FLT_RADIX__ 2" +.LASF1831: + .string "GPIO_PIN_SOURCE_9 ((uint8_t)0x09U)" +.LASF3348: + .string "__LOCK_INIT(class,lock) static int lock = 0;" +.LASF3942: + .string "MASK_FCVT_LU_D 0xfff0007f" +.LASF2884: + .string "TIMER_OC_CLEAR_ENABLE ((uint16_t)0x0080U)" +.LASF1962: + .string "I2C_ACK_ENABLE ((uint32_t)0x00000001U)" +.LASF1813: + .string "GPIO_EVENT_PIN_7 ((uint8_t)0x07U)" +.LASF2193: + .string "RCU_APB1EN_TIMER5EN BIT(4)" +.LASF966: + .string "CAN_TMDATA0_DB2 BITS(16,23)" +.LASF731: + .string "BKP_DATA19 REG16((BKP) + 0x64U)" +.LASF111: + .string "__INT32_C(c) c ## L" +.LASF934: + .string "CAN_INTEN_RFNEIE1 BIT(4)" +.LASF2098: + .string "RCU_CTL_PLLEN BIT(24)" +.LASF3777: + .string "MATCH_DIVU 0x2005033" +.LASF1342: + .string "EXMC_SNCTL_NRWTPOL BIT(9)" +.LASF1946: + .string "I2C_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF1269: + .string "DMA_CHXCTL_HTFIE BIT(2)" +.LASF2790: + .string "TIMER_DMACFG_DMATA_CREP DMACFG_DMATA(12)" +.LASF518: + .string "GPIO_BASE (APB2_BUS_BASE + 0x00000800U)" +.LASF2905: + .string "TIMER_SMCFG_TRGSEL_CI1FE1 SMCFG_TRGSEL(6)" +.LASF3516: + .string "MSTATUS_SIE 0x00000002" +.LASF1528: + .string "FMC_REG_VAL(offset) (REG32(FMC + ((uint32_t)(offset) >> 6)))" +.LASF82: + .string "__LONG_WIDTH__ 32" +.LASF2863: + .string "TIMER_CCXN_DISABLE ((uint16_t)0x0000U)" +.LASF737: + .string "BKP_DATA25 REG16((BKP) + 0x7CU)" +.LASF2646: + .string "TIMER_DMAINTEN_CH1IE BIT(2)" +.LASF4161: + .string "CSR_SSCRATCH 0x140" +.LASF3186: + .string "__IEEE_LITTLE_ENDIAN " +.LASF2233: + .string "RCU_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF869: + .string "CAN_F26DATA1(canx) REG32((canx) + 0x314U)" +.LASF14: + .string "__ATOMIC_CONSUME 1" +.LASF3748: + .string "MASK_LD 0x707f" +.LASF2326: + .string "RCU_CKOUT0SRC_CKSYS CFG0_CKOUT0SEL(4)" +.LASF3150: + .string "ECLIC_INT_ATTR_OFFSET _AC(0x1002,UL)" +.LASF4022: + .string "MASK_C_SW 0xe003" +.LASF216: + .string "__FLT32_EPSILON__ 1.19209289550781250000000000000000000e-7F32" +.LASF2794: + .string "TIMER_DMACFG_DMATA_CH3CV DMACFG_DMATA(16)" +.LASF341: + .string "_STDINT_H " +.LASF1430: + .string "EXTI_FTEN_FTEN3 BIT(3)" +.LASF419: + .string "_INTPTR_T_DECLARED " +.LASF1125: + .string "GD32VF103_DAC_H " +.LASF2843: + .string "TIMER_IOS_STATE_ENABLE ((uint16_t)TIMER_CCHP_IOS)" +.LASF1884: + .string "I2C_SADDR0(i2cx) REG32((i2cx) + 0x08U)" +.LASF1024: + .string "GET_RFIFOMI_EFID(regval) GET_BITS((uint32_t)(regval), 3U, 31U)" +.LASF2111: + .string "RCU_CFG0_PREDV0_LSB BIT(17)" +.LASF4078: + .string "MASK_CUSTOM0_RS1 0x707f" +.LASF354: + .string "__ISO_C_VISIBLE 2011" +.LASF2382: + .string "RCU_PLL1_MUL16 CFG1_PLL1MF(14)" +.LASF1032: + .string "GET_RFIFOMDATA1_DB4(regval) GET_BITS((uint32_t)(regval), 0U, 7U)" +.LASF3984: + .string "MASK_FMADD_D 0x600007f" +.LASF2648: + .string "TIMER_DMAINTEN_CH3IE BIT(4)" +.LASF3658: + .string "swap_csr(reg,val) ({ unsigned long __tmp; if (__builtin_constant_p(val) && (unsigned long)(val) < 32) asm volatile (\"csrrw %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"i\"(val)); else asm volatile (\"csrrw %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"r\"(val)); __tmp; })" +.LASF3900: + .string "MASK_FSGNJX_D 0xfe00707f" +.LASF3521: + .string "MSTATUS_HPIE 0x00000040" +.LASF3227: + .string "__GNUCLIKE___TYPEOF 1" +.LASF2801: + .string "TIMER_DMACFG_DMATC_4TRANSFER DMACFG_DMATC(3)" +.LASF4399: + .string "eclic_init" +.LASF2374: + .string "RCU_PLL1_MUL8 CFG1_PLL1MF(6)" +.LASF3026: + .string "CTL1_STB(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF3256: + .string "__dead2 __attribute__((__noreturn__))" +.LASF2780: + .string "TIMER_DMACFG_DMATA_SMCFG DMACFG_DMATA(2)" +.LASF1479: + .string "EXTI_PD_PD14 BIT(14)" +.LASF1213: + .string "DAC_ALIGN_8B_R DATA_ALIGN(2)" +.LASF2187: + .string "RCU_APB2EN_SPI0EN BIT(12)" +.LASF2968: + .string "USART_CTL0_IDLEIE BIT(4)" +.LASF1167: + .string "DACC_L12DH_DAC1_DH BITS(20,31)" +.LASF962: + .string "CAN_TMP_TSEN BIT(8)" +.LASF3831: + .string "MATCH_AMOSWAP_D 0x800302f" +.LASF178: + .string "__LDBL_MIN_10_EXP__ (-4931)" +.LASF13: + .string "__ATOMIC_ACQ_REL 4" +.LASF3157: + .string "ECLIC_ADDR_BASE 0xd2000000" +.LASF3871: + .string "MATCH_FMUL_S 0x10000053" +.LASF1982: + .string "I2C_SALTSEND_DISABLE ((uint32_t)0x00000000U)" +.LASF2519: + .string "SPI_CK_PL_LOW_PH_1EDGE ((uint32_t)0x00000000U)" +.LASF4029: + .string "MATCH_C_LI 0x4001" +.LASF4251: + .string "CSR_MHARTID 0xf14" +.LASF213: + .string "__FLT32_MAX__ 3.40282346638528859811704183484516925e+38F32" +.LASF2377: + .string "RCU_PLL1_MUL11 CFG1_PLL1MF(9)" +.LASF725: + .string "BKP_DATA13 REG16((BKP) + 0x4CU)" +.LASF1878: + .string "GPIO_EXMC_NADV_REMAP ((uint32_t)0x80000400U)" +.LASF730: + .string "BKP_DATA18 REG16((BKP) + 0x60U)" +.LASF1008: + .string "BT_BS2(regval) (BITS(20,22) & ((uint32_t)(regval) << 20))" +.LASF2815: + .string "TIMER_DMACFG_DMATC_18TRANSFER DMACFG_DMATC(17)" +.LASF4299: + .string "CSR_MHPMCOUNTER16H 0xb90" +.LASF692: + .string "ADC_OVERSAMPLING_SHIFT_NONE OVSCR_OVSS(0)" +.LASF1992: + .string "FWDGT FWDGT_BASE" +.LASF1422: + .string "EXTI_RTEN_RTEN14 BIT(14)" +.LASF3278: + .string "__restrict restrict" +.LASF4348: + .string "__uint32_t" +.LASF116: + .string "__UINT_LEAST8_MAX__ 0xff" +.LASF1682: + .string "GPIO_OCTL_OCTL15 BIT(15)" +.LASF1933: + .string "I2C_STAT1_MASTER BIT(0)" +.LASF3059: + .string "WWDGT WWDGT_BASE" +.LASF4256: + .string "CSR_HPMCOUNTER4H 0xc84" +.LASF3001: + .string "USART_REG_VAL(usartx,offset) (REG32((usartx) + (((uint32_t)(offset) & (0x0000FFFFU)) >> 6)))" +.LASF2321: + .string "RCU_CKUSB_CKPLL_DIV1 CFG0_USBPSC(1)" +.LASF474: + .string "PTRDIFF_MAX (__PTRDIFF_MAX__)" +.LASF930: + .string "CAN_INTEN_TMEIE BIT(0)" +.LASF1270: + .string "DMA_CHXCTL_ERRIE BIT(3)" +.LASF2419: + .string "RTC_INTEN_ALRMIE BIT(1)" +.LASF2902: + .string "TIMER_SMCFG_TRGSEL_ITI3 SMCFG_TRGSEL(3)" +.LASF3537: + .string "SSTATUS_SPP 0x00000100" +.LASF2338: + .string "RCU_RTCSRC_HXTAL_DIV_128 BDCTL_RTCSRC(3)" +.LASF3622: + .string "IRQ_H_SOFT 2" +.LASF4128: + .string "CSR_INSTRET 0xc02" +.LASF4061: + .string "MATCH_C_LWSP 0x4002" +.LASF4043: + .string "MATCH_C_OR 0x8c41" +.LASF256: + .string "__FLT32X_MAX_10_EXP__ 308" +.LASF3324: + .string "__requires_unlocked(...) __lock_annotate(locks_excluded(__VA_ARGS__))" +.LASF1848: + .string "GPIO_PIN_10 BIT(10)" +.LASF876: + .string "CAN_FDATA1(canx,bank) REG32((canx) + 0x240U + ((bank) * 0x8U) + 0x4U)" +.LASF4113: + .string "MATCH_CUSTOM3_RS1 0x207b" +.LASF803: + .string "CAN_RFIFOMP0(canx) REG32((canx) + 0x1B4U)" +.LASF2167: + .string "RCU_APB1RST_CAN1RST BIT(26)" +.LASF3173: + .string "_WANT_IO_LONG_LONG 1" +.LASF4274: + .string "CSR_HPMCOUNTER22H 0xc96" +.LASF2923: + .string "TIMER_SLAVE_MODE_EVENT SMCFG_SMC(6)" +.LASF3861: + .string "MATCH_CSRRWI 0x5073" +.LASF3856: + .string "MASK_CSRRW 0x707f" +.LASF793: + .string "CAN_TMDATA10(canx) REG32((canx) + 0x18CU)" +.LASF162: + .string "__DBL_MIN_EXP__ (-1021)" +.LASF482: + .string "INT16_C(x) __INT16_C(x)" +.LASF10: + .string "__ATOMIC_SEQ_CST 5" +.LASF1646: + .string "GPIO_CTL1_CTL13 BITS(22, 23)" +.LASF4079: + .string "MATCH_CUSTOM0_RS1_RS2 0x300b" +.LASF3498: + .string "__need_wchar_t " +.LASF3731: + .string "MATCH_ADDW 0x3b" +.LASF1871: + .string "GPIO_PD01_REMAP ((uint32_t)0x00008000U)" +.LASF2087: + .string "RCU_AHBRST REG32(RCU + 0x28U)" +.LASF928: + .string "CAN_RFIFO1_RFO1 BIT(4)" +.LASF1604: + .string "AFIO AFIO_BASE" +.LASF4187: + .string "CSR_MINSTRET 0xb02" +.LASF1355: + .string "SNCTL_NRTP(regval) (BITS(2,3) & ((uint32_t)(regval) << 2))" +.LASF843: + .string "CAN_F0DATA1(canx) REG32((canx) + 0x244U)" +.LASF1719: + .string "GPIO_BC_CR4 BIT(4)" +.LASF1221: + .string "DAC_TRIANGLE_AMPLITUDE_255 DAC_WAVE_BIT_WIDTH_8" +.LASF2630: + .string "TIMER_CTL1_ISO0 BIT(8)" +.LASF3116: + .string "_WCHAR_T_H " +.LASF3928: + .string "MASK_FCVT_L_S 0xfff0007f" +.LASF2032: + .string "DBG_CTL_CAN0_HOLD BIT(14)" +.LASF2489: + .string "SPI_STAT_FERR BIT(8)" +.LASF3816: + .string "MASK_AMOADD_D 0xf800707f" +.LASF4295: + .string "CSR_MHPMCOUNTER12H 0xb8c" +.LASF4186: + .string "CSR_MCYCLE 0xb00" +.LASF2919: + .string "TIMER_ENCODER_MODE1 SMCFG_SMC(2)" +.LASF250: + .string "__FLT128_HAS_QUIET_NAN__ 1" +.LASF2887: + .string "TIMER_UPDATECTL_CCUTRI TIMER_CTL1_CCUC" +.LASF544: + .string "ADC_ISQ(adcx) REG32((adcx) + 0x38U)" +.LASF2462: + .string "SPI_CTL0_PSC BITS(3,5)" +.LASF3511: + .string "STDIN_FILENO 0" +.LASF963: + .string "CAN_TMP_TS BITS(16,31)" +.LASF584: + .string "ADC_WDHT_WDHT BITS(0,11)" +.LASF3951: + .string "MATCH_FCVT_S_L 0xd0200053" +.LASF3262: + .string "__section(x) __attribute__((__section__(x)))" +.LASF3836: + .string "MASK_SC_D 0xf800707f" +.LASF2218: + .string "RCU_RSTSCK_EPRSTF BIT(26)" +.LASF3567: + .string "MCONTROL_TIMING (1<<18)" +.LASF3064: + .string "WWDGT_CTL_WDGTEN BIT(7)" +.LASF3018: + .string "USART_PM_EVEN CTL0_PM(2)" +.LASF3093: + .string "_T_SIZE " +.LASF3349: + .string "__LOCK_INIT_RECURSIVE(class,lock) static int lock = 0;" +.LASF481: + .string "UINT8_C(x) __UINT8_C(x)" +.LASF779: + .string "GD32VF103_CAN_H " +.LASF65: + .string "__INTPTR_TYPE__ int" +.LASF1969: + .string "I2C_GCEN_ENABLE I2C_CTL0_GCEN" +.LASF1771: + .string "AFIO_EXTI5_SS BITS(4, 7)" +.LASF2528: + .string "SPI_PSC_32 CTL0_PSC(4)" +.LASF2384: + .string "CFG1_PLL2MF(regval) (BITS(12,15) & ((uint32_t)(regval) << 12))" +.LASF4400: + .string "num_irq" +.LASF508: + .string "FWDGT_BASE (APB1_BUS_BASE + 0x00003000U)" +.LASF646: + .string "ADC_SAMPLETIME_239POINT5 SAMPTX_SPT(7)" +.LASF1305: + .string "DMA_PERIPH_INCREASE_DISABLE ((uint8_t)0x00U)" +.LASF1783: + .string "GPIO_MODE_SET(n,mode) ((uint32_t)((uint32_t)(mode) << (4U * (n))))" +.LASF1152: + .string "DAC_CTL_DTSEL1 BITS(19,21)" +.LASF36: + .string "__INTMAX_TYPE__ long long int" +.LASF4080: + .string "MASK_CUSTOM0_RS1_RS2 0x707f" +.LASF3376: + .ascii "_REENT_INIT(var) { 0, _REENT_STDIO_STREAM(&(var), 0), _REENT" + .ascii "_STDIO_STREAM(&(var), 1), _REENT_STDIO_STREAM(&(var), 2), 0," + .ascii " \"\", 0, _NULL, 0, _NULL, _NULL, 0, _NULL, _NULL, 0, _NULL," + .ascii " { { 0, _NULL, \"\", {0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 1, {" + .string " {_RAND48_SEED_0, _RAND48_SEED_1, _RAND48_SEED_2}, {_RAND48_MULT_0, _RAND48_MULT_1, _RAND48_MULT_2}, _RAND48_ADD }, {0, {0}}, {0, {0}}, {0, {0}}, \"\", \"\", 0, {0, {0}}, {0, {0}}, {0, {0}}, {0, {0}}, {0, {0}} } }, _REENT_INIT_ATEXIT _NULL, {_NULL, 0, _NULL} }" +.LASF1303: + .string "DMA_PERIPHERAL_TO_MEMORY ((uint8_t)0x00U)" +.LASF764: + .string "BKP_TPCS_TER BIT(0)" +.LASF2922: + .string "TIMER_SLAVE_MODE_PAUSE SMCFG_SMC(5)" +.LASF2627: + .string "TIMER_CTL1_DMAS BIT(3)" +.LASF495: + .string "GET_BITS(regval,start,end) (((regval) & BITS((start),(end))) >> (start))" +.LASF2954: + .string "USART_STAT_ORERR BIT(3)" +.LASF825: + .string "CAN_F10DATA0(canx) REG32((canx) + 0x290U)" +.LASF2017: + .string "FWDGT_FLAG_RUD FWDGT_STAT_RUD" +.LASF2408: + .string "RTC_INTEN REG32(RTC + 0x00U)" +.LASF3898: + .string "MASK_FSGNJN_D 0xfe00707f" +.LASF461: + .string "UINT_FAST16_MAX (__UINT_FAST16_MAX__)" +.LASF1590: + .string "OB_WP_28 ((uint32_t)0x10000000U)" +.LASF2383: + .string "RCU_PLL1_MUL20 CFG1_PLL1MF(15)" +.LASF3482: + .string "_stdout_r(x) ((x)->_stdout)" +.LASF1996: + .string "FWDGT_STAT REG32((FWDGT) + 0x0000000CU)" +.LASF3451: + .string "__SRD 0x0004" +.LASF4389: + .string "cliccfg" +.LASF671: + .string "ADC_CHANNEL_11 ((uint8_t)0x0BU)" +.LASF1672: + .string "GPIO_OCTL_OCTL5 BIT(5)" +.LASF2716: + .string "TIMER_CHCTL2_CH2P BIT(9)" +.LASF810: + .string "CAN_FCTL(canx) REG32((canx) + 0x200U)" +.LASF1129: + .string "DAC_CTL REG32(DAC + 0x00U)" +.LASF1230: + .string "DMA_INTC(dmax) REG32((dmax) + 0x04U)" +.LASF2742: + .string "TIMER_INT_CH1 TIMER_DMAINTEN_CH1IE" +.LASF2834: + .string "TIMER_CKDIV_DIV1 CTL0_CKDIV(0)" +.LASF2937: + .string "TIMER_CHVSEL_DISABLE ((uint16_t)0x0000U)" +.LASF3931: + .string "MATCH_FMV_X_S 0xe0000053" +.LASF1494: + .string "FMC_WP REG32((FMC) + 0x20U)" +.LASF89: + .string "__INTMAX_C(c) c ## LL" +.LASF1188: + .string "DAC_WAVE_BIT_WIDTH_3 DWBW(2)" +.LASF3691: + .string "MATCH_SLTIU 0x3013" +.LASF864: + .string "CAN_F21DATA1(canx) REG32((canx) + 0x2ECU)" +.LASF3674: + .string "MASK_BLTU 0x707f" +.LASF3106: + .string "__wchar_t__ " +.LASF2314: + .string "RCU_PLL_MUL28 (PLLMF_4 | CFG0_PLLMF(11))" +.LASF4321: + .string "CSR_PUSHMCAUSE 0x7EE" +.LASF4268: + .string "CSR_HPMCOUNTER16H 0xc90" +.LASF2398: + .string "RCU_I2S1SRC_CKPLL2_MUL2 RCU_CFG1_I2S1SEL" +.LASF302: + .string "__SIZEOF_PTRDIFF_T__ 4" +.LASF2827: + .string "TIMER_COUNTER_CENTER_UP CTL0_CAM(2)" +.LASF3927: + .string "MATCH_FCVT_L_S 0xc0200053" +.LASF1516: + .string "FMC_CTL_OBWEN BIT(9)" +.LASF890: + .string "CAN_CTL_DFZ BIT(16)" +.LASF3597: + .string "MIP_SEIP (1 << IRQ_S_EXT)" +.LASF3621: + .string "IRQ_S_SOFT 1" +.LASF1399: + .string "EXTI_EVEN_EVEN10 BIT(10)" +.LASF979: + .string "CAN_RFIFOMDATA0_DB0 BITS(0,7)" +.LASF909: + .string "CAN_TSTAT_MST1 BIT(15)" +.LASF3080: + .string "_T_PTRDIFF " +.LASF1860: + .string "GPIO_USART2_FULL_REMAP ((uint32_t)0x00140030U)" +.LASF3169: + .string "_STDIO_H_ " +.LASF644: + .string "ADC_SAMPLETIME_55POINT5 SAMPTX_SPT(5)" +.LASF502: + .string "APB2_BUS_BASE ((uint32_t)0x40010000U)" +.LASF534: + .string "ADC_SAMPT1(adcx) REG32((adcx) + 0x10U)" +.LASF4060: + .string "MASK_C_FLDSP 0xe003" +.LASF3874: + .string "MASK_FDIV_S 0xfe00007f" +.LASF2060: + .string "PMU_LVDT_2 CTL_LVDT(2)" +.LASF1740: + .string "GPIO_LOCK_LK9 BIT(9)" +.LASF3100: + .string "_SIZE_T_DECLARED " +.LASF2474: + .string "SPI_CTL1_DMATEN BIT(1)" +.LASF607: + .string "ADC_MODE_FREE CTL0_SYNCM(0)" +.LASF86: + .string "__PTRDIFF_WIDTH__ 32" +.LASF762: + .string "BKP_TPCTL_TPEN BIT(0)" +.LASF2348: + .string "RCU_PREDV0_DIV9 CFG1_PREDV0(8)" +.LASF3884: + .string "MASK_FMAX_S 0xfe00707f" +.LASF3937: + .string "MATCH_FCVT_WU_D 0xc2100053" +.LASF3088: + .string "__size_t__ " +.LASF2588: + .string "I2S_FLAG_FERR SPI_STAT_FERR" +.LASF603: + .string "CTL0_DISNUM(regval) (BITS(13,15) & ((uint32_t)(regval) << 13))" +.LASF2836: + .string "TIMER_CKDIV_DIV4 CTL0_CKDIV(2)" +.LASF4037: + .string "MATCH_C_ANDI 0x8801" +.LASF2352: + .string "RCU_PREDV0_DIV13 CFG1_PREDV0(12)" +.LASF3761: + .string "MATCH_SD 0x3023" +.LASF775: + .string "TAMPER_PIN_ACTIVE_HIGH ((uint16_t)0x0000U)" +.LASF3528: + .string "MSTATUS_PUM 0x00040000" +.LASF4008: + .string "MASK_C_LDSP 0xe003" +.LASF1219: + .string "DAC_TRIANGLE_AMPLITUDE_63 DAC_WAVE_BIT_WIDTH_6" +.LASF690: + .string "ADC_OVERSAMPLING_ONE_CONVERT 1" +.LASF4230: + .string "CSR_MHPMEVENT14 0x32e" +.LASF2948: + .string "USART_CTL1(usartx) REG32((usartx) + (0x00000010U))" +.LASF3357: + .string "__lock_try_acquire_recursive(lock) ((void) 0)" +.LASF1281: + .string "DMA_CHXMADDR_MADDR BITS(0,31)" +.LASF4413: + .string "get_instret_value" +.LASF3758: + .string "MASK_SH 0x707f" +.LASF1237: + .string "DMA_CH1PADDR(dmax) REG32((dmax) + 0x24U)" +.LASF1971: + .string "I2C_SRESET_SET I2C_CTL0_SRESET" +.LASF505: + .string "TIMER_BASE (APB1_BUS_BASE + 0x00000000U)" +.LASF942: + .string "CAN_INTEN_WIE BIT(16)" +.LASF1383: + .string "EXTI_INTEN_INTEN13 BIT(13)" +.LASF1818: + .string "GPIO_EVENT_PIN_12 ((uint8_t)0x0CU)" +.LASF2840: + .string "TIMER_UPDATE_SRC_GLOBAL ((uint32_t)0x00000000U)" +.LASF1451: + .string "EXTI_SWIEV_SWIEV5 BIT(5)" +.LASF3433: + .string "_KEY_T_DECLARED " +.LASF3728: + .string "MASK_SRLIW 0xfe00707f" +.LASF465: + .string "INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1)" +.LASF1466: + .string "EXTI_PD_PD1 BIT(1)" +.LASF3142: + .string "_BITUL(x) (_AC(1,UL) << (x))" +.LASF1060: + .string "CAN_BT_BS1_4TQ ((uint8_t)0x03U)" +.LASF3773: + .string "MATCH_MULHU 0x2003033" +.LASF3446: + .string "_NEWLIB_STDIO_H " +.LASF3499: + .string "_MACHSTDLIB_H_ " +.LASF3723: + .string "MATCH_ADDIW 0x1b" +.LASF4388: + .string "eclic_set_cliccfg" +.LASF4164: + .string "CSR_SBADADDR 0x143" +.LASF2023: + .string "DBG_CTL_SLP_HOLD BIT(0)" +.LASF1905: + .string "I2C_CTL0_SRESET BIT(15)" +.LASF160: + .string "__DBL_MANT_DIG__ 53" +.LASF2200: + .string "RCU_APB1EN_UART3EN BIT(19)" +.LASF666: + .string "ADC_CHANNEL_6 ((uint8_t)0x06U)" +.LASF915: + .string "CAN_TSTAT_NUM BITS(24,25)" +.LASF4216: + .string "CSR_MHPMCOUNTER31 0xb1f" +.LASF789: + .string "CAN_BT(canx) REG32((canx) + 0x1CU)" +.LASF1991: + .string "GD32VF103_FWDGT_H " +.LASF1147: + .string "DAC_CTL_DWBW0 BITS(8,11)" +.LASF1386: + .string "EXTI_INTEN_INTEN16 BIT(16)" +.LASF425: + .string "__int_fast8_t_defined 1" +.LASF620: + .string "CTL1_ETSRC(regval) (BITS(17,19) & ((uint32_t)(regval) << 17))" +.LASF2901: + .string "TIMER_SMCFG_TRGSEL_ITI2 SMCFG_TRGSEL(2)" +.LASF2083: + .string "RCU_APB2EN REG32(RCU + 0x18U)" +.LASF2809: + .string "TIMER_DMACFG_DMATC_12TRANSFER DMACFG_DMATC(11)" +.LASF625: + .string "ADC0_1_EXTTRIG_REGULAR_T2_TRGO CTL1_ETSRC(4)" +.LASF1283: + .string "DMA_CHCTL(dma,channel) REG32(((dma) + 0x08U) + 0x14U * (uint32_t)(channel))" +.LASF118: + .string "__UINT_LEAST16_MAX__ 0xffff" +.LASF1611: + .string "GPIO_LOCK(gpiox) REG32((gpiox) + 0x18U)" +.LASF2587: + .string "I2S_FLAG_TRANS SPI_STAT_TRANS" +.LASF1025: + .string "GET_RFIFOMI_SFID(regval) GET_BITS((uint32_t)(regval), 21U, 31U)" +.LASF3077: + .string "_ANSI_STDDEF_H " +.LASF1746: + .string "GPIO_LOCK_LK15 BIT(15)" +.LASF4380: + .string "eclic_get_nlbits" +.LASF4088: + .string "MASK_CUSTOM1 0x707f" +.LASF3422: + .string "_TIME_T_DECLARED " +.LASF3177: + .string "_MB_LEN_MAX 1" +.LASF440: + .string "UINT16_MAX (__UINT16_MAX__)" +.LASF61: + .string "__UINT_FAST8_TYPE__ unsigned int" +.LASF1510: + .string "FMC_CTL_PER BIT(1)" +.LASF3108: + .string "_WCHAR_T " +.LASF2423: + .string "RTC_CTL_OVIF BIT(2)" +.LASF838: + .string "CAN_F23DATA0(canx) REG32((canx) + 0x3F8U)" +.LASF3147: + .string "ECLIC_MTH_OFFSET 0xB" +.LASF1858: + .string "GPIO_USART1_REMAP ((uint32_t)0x00000008U)" +.LASF4308: + .string "CSR_MHPMCOUNTER25H 0xb99" +.LASF2101: + .string "RCU_CTL_PLL1STB BIT(27)" +.LASF1733: + .string "GPIO_LOCK_LK2 BIT(2)" +.LASF2554: + .string "I2S_STD_PHILLIPS I2SCTL_I2SSTD(0)" +.LASF1582: + .string "OB_WP_20 ((uint32_t)0x00100000U)" +.LASF491: + .string "REG16(addr) (*(volatile uint16_t *)(uint32_t)(addr))" +.LASF1331: + .string "__SEV eclic_send_event" +.LASF1033: + .string "GET_RFIFOMDATA1_DB5(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF1134: + .string "DAC1_R12DH REG32(DAC + 0x14U)" +.LASF837: + .string "CAN_F22DATA0(canx) REG32((canx) + 0x2F0U)" +.LASF2970: + .string "USART_CTL0_TCIE BIT(6)" +.LASF1020: + .string "TMDATA1_DB4(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF4076: + .string "MASK_CUSTOM0 0x707f" +.LASF1879: + .string "GD32VF103_I2C_H " +.LASF2420: + .string "RTC_INTEN_OVIE BIT(2)" +.LASF2842: + .string "TIMER_ROS_STATE_DISABLE ((uint16_t)0x0000U)" +.LASF4269: + .string "CSR_HPMCOUNTER17H 0xc91" +.LASF3852: + .string "MASK_SFENCE_VM 0xfff07fff" +.LASF3470: + .string "BUFSIZ 1024" +.LASF3935: + .string "MATCH_FCVT_W_D 0xc2000053" +.LASF1350: + .string "EXMC_SNCTL(region) REG32(EXMC + 0x08U * (region))" +.LASF2247: + .string "CFG1_REG_OFFSET 0x2CU" +.LASF141: + .string "__FLT_EVAL_METHOD__ 0" +.LASF1726: + .string "GPIO_BC_CR11 BIT(11)" +.LASF3977: + .string "MATCH_FMSUB_S 0x47" +.LASF1805: + .string "GPIO_PORT_SOURCE_GPIOE ((uint8_t)0x04U)" +.LASF4280: + .string "CSR_HPMCOUNTER28H 0xc9c" +.LASF4181: + .string "CSR_TDATA2 0x7a2" +.LASF3943: + .string "MATCH_FMV_X_D 0xe2000053" +.LASF2396: + .string "RCU_PREDV0SRC_CKPLL1 RCU_CFG1_PREDV0SEL" +.LASF2312: + .string "RCU_PLL_MUL26 (PLLMF_4 | CFG0_PLLMF(9))" +.LASF2138: + .string "RCU_INT_PLL2STBIC BIT(22)" +.LASF3878: + .string "MASK_FSGNJN_S 0xfe00707f" +.LASF484: + .string "INT32_C(x) __INT32_C(x)" +.LASF264: + .string "__FLT32X_HAS_INFINITY__ 1" +.LASF3387: + .string "_REENT_RAND48_SEED(ptr) ((ptr)->_new._reent._r48._seed)" +.LASF1650: + .string "GPIO_CTL1_CTL15 BITS(30, 31)" +.LASF2529: + .string "SPI_PSC_64 CTL0_PSC(5)" +.LASF3982: + .string "MASK_FNMADD_S 0x600007f" +.LASF3280: + .string "__predict_false(exp) __builtin_expect((exp), 0)" +.LASF710: + .string "GD32VF103_BKP_H " +.LASF2258: + .string "RCU_AHB_CKSYS_DIV2 CFG0_AHBPSC(8)" +.LASF2479: + .string "SPI_CTL1_RBNEIE BIT(6)" +.LASF3602: + .string "MIE_MSIE MIP_MSIP" +.LASF78: + .string "__SIZE_MAX__ 0xffffffffU" +.LASF4201: + .string "CSR_MHPMCOUNTER16 0xb10" +.LASF1686: + .string "GPIO_BOP_BOP3 BIT(3)" +.LASF2108: + .string "RCU_CFG0_APB2PSC BITS(11,13)" +.LASF3097: + .string "_SIZE_T_DEFINED_ " +.LASF736: + .string "BKP_DATA24 REG16((BKP) + 0x78U)" +.LASF1729: + .string "GPIO_BC_CR14 BIT(14)" +.LASF2163: + .string "RCU_APB1RST_UART4RST BIT(20)" +.LASF3530: + .string "MSTATUS_VM 0x1F000000" +.LASF4190: + .string "CSR_MHPMCOUNTER5 0xb05" +.LASF4340: + .string "CAUSE_MACHINE_ECALL 0xb" +.LASF251: + .string "__FLT32X_MANT_DIG__ 53" +.LASF2609: + .string "TIMER_CREP(timerx) REG32((timerx) + 0x30U)" +.LASF2341: + .string "RCU_PREDV0_DIV2 CFG1_PREDV0(1)" +.LASF289: + .string "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 1" +.LASF3700: + .string "MASK_ORI 0x707f" +.LASF1249: + .string "DMA_CH4PADDR(dmax) REG32((dmax) + 0x60U)" +.LASF2657: + .string "TIMER_DMAINTEN_CMTDEN BIT(13)" +.LASF3360: + .string "_ATEXIT_SIZE 32" +.LASF3596: + .string "MIP_MTIP (1 << IRQ_M_TIMER)" +.LASF352: + .string "__BSD_VISIBLE 0" +.LASF740: + .string "BKP_DATA28 REG16((BKP) + 0x88U)" +.LASF100: + .string "__UINT8_MAX__ 0xff" +.LASF2977: + .string "USART_CTL0_UEN BIT(13)" +.LASF3019: + .string "USART_PM_ODD CTL0_PM(3)" +.LASF9: + .string "__ATOMIC_RELAXED 0" +.LASF2281: + .string "RCU_CKADC_CKAPB2_DIV8 ((uint32_t)0x00000003U)" +.LASF652: + .string "ADC_REGULAR_CHANNEL ((uint8_t)0x01U)" +.LASF172: + .string "__DBL_HAS_DENORM__ 1" +.LASF3574: + .string "MCONTROL_U (1<<3)" +.LASF268: + .string "__FLT64X_MIN_EXP__ (-16381)" +.LASF4362: + .string "source" +.LASF3057: + .string "USART_IRLP_NORMAL CTL2_IRLP(0)" +.LASF3853: + .string "MATCH_WFI 0x10500073" +.LASF1179: + .string "DAC_TRIGGER_EXTI_9 CTL_DTSEL(6)" +.LASF1703: + .string "GPIO_BOP_CR4 BIT(20)" +.LASF1106: + .string "CAN_INT_RFO0 CAN_INTEN_RFOIE0" +.LASF4015: + .string "MATCH_C_LW 0x4000" +.LASF4243: + .string "CSR_MHPMEVENT27 0x33b" +.LASF4227: + .string "CSR_MHPMEVENT11 0x32b" +.LASF2389: + .string "RCU_PLL2_MUL12 CFG1_PLL2MF(10)" +.LASF2604: + .string "TIMER_CHCTL1(timerx) REG32((timerx) + 0x1CU)" +.LASF3390: + .string "_REENT_MP_RESULT(ptr) ((ptr)->_result)" +.LASF3486: + .string "__sgetc_r(__ptr,__p) __sgetc_raw_r(__ptr, __p)" +.LASF2228: + .string "RCU_CFG1_PLL2MF BITS(12,15)" +.LASF3351: + .string "__lock_init_recursive(lock) ((void) 0)" +.LASF3022: + .string "USART_WM_ADDR CTL0_WM(1)" +.LASF395: + .string "__INT64 \"ll\"" +.LASF1979: + .string "I2C_PECTRANS_ENABLE I2C_CTL0_PECTRANS" +.LASF3148: + .string "ECLIC_INT_IP_OFFSET _AC(0x1000,UL)" +.LASF3400: + .string "_REENT_WCTOMB_STATE(ptr) ((ptr)->_new._reent._wctomb_state)" +.LASF1126: + .string "DAC DAC_BASE" +.LASF1473: + .string "EXTI_PD_PD8 BIT(8)" +.LASF4183: + .string "CSR_DCSR 0x7b0" +.LASF975: + .string "CAN_RFIFOMI_SFID BITS(21,31)" +.LASF406: + .string "_UINT8_T_DECLARED " +.LASF993: + .string "CAN_FDATA_FD(regval) BIT(regval)" +.LASF2492: + .string "SPI_RCRC_RCRC BITS(0,15)" +.LASF154: + .string "__FLT_MIN__ 1.17549435082228750796873653722224568e-38F" +.LASF1077: + .string "CAN_BT_BS2_5TQ ((uint8_t)0x04U)" +.LASF1263: + .string "DMA_INTC_GIFC BIT(0)" +.LASF2571: + .string "SPI_INT_FLAG_CONFERR ((uint8_t)0x03U)" +.LASF2035: + .string "DBG_CTL_TIMER4_HOLD BIT(18)" +.LASF2508: + .string "SPI_BIDIRECTIONAL_RECEIVE (~SPI_CTL0_BDOEN)" +.LASF1549: + .string "OB_STDBY_RST ((uint8_t)0x00U)" +.LASF2207: + .string "RCU_APB1EN_PMUEN BIT(28)" +.LASF3440: + .string "_TIMER_T_DECLARED " +.LASF249: + .string "__FLT128_HAS_INFINITY__ 1" +.LASF3822: + .string "MASK_AMOAND_D 0xf800707f" +.LASF728: + .string "BKP_DATA16 REG16((BKP) + 0x58U)" +.LASF659: + .string "ADC_INSERTED_CHANNEL_3 ((uint8_t)0x03U)" +.LASF2724: + .string "TIMER_CREP_CREP BITS(0,7)" +.LASF1439: + .string "EXTI_FTEN_FTEN12 BIT(12)" +.LASF718: + .string "BKP_DATA6 REG16((BKP) + 0x1CU)" +.LASF1014: + .string "TMI_EFID(regval) (BITS(3,31) & ((uint32_t)(regval) << 3))" +.LASF583: + .string "ADC_IOFFX_IOFF BITS(0,11)" +.LASF1935: + .string "I2C_STAT1_TR BIT(2)" +.LASF2811: + .string "TIMER_DMACFG_DMATC_14TRANSFER DMACFG_DMATC(13)" +.LASF4042: + .string "MASK_C_XOR 0xfc63" +.LASF3735: + .string "MATCH_SLLW 0x103b" +.LASF802: + .string "CAN_RFIFOMI0(canx) REG32((canx) + 0x1B0U)" +.LASF446: + .string "UINT32_MAX (__UINT32_MAX__)" +.LASF1306: + .string "DMA_PERIPH_INCREASE_ENABLE ((uint8_t)0x01U)" +.LASF1005: + .string "ERR_REG_OFFSET ((uint8_t)0x18U)" +.LASF1997: + .string "FWDGT_CTL_CMD BITS(0,15)" +.LASF3590: + .string "MCONTROL_MATCH_MASK_HIGH 5" +.LASF609: + .string "ADC_DAUL_REGULAL_PARALLEL_INSERTED_ROTATION CTL0_SYNCM(2)" +.LASF739: + .string "BKP_DATA27 REG16((BKP) + 0x84U)" +.LASF218: + .string "__FLT32_HAS_DENORM__ 1" +.LASF301: + .string "__SIZEOF_WINT_T__ 4" +.LASF3513: + .string "STDERR_FILENO 2" +.LASF2879: + .string "TIMER_OC_MODE_PWM1 ((uint16_t)0x0070U)" +.LASF1989: + .string "I2C_ADDFORMAT_7BITS ((uint32_t)0x00000000U)" +.LASF990: + .string "CAN_FSCFG_FS(regval) BIT(regval)" +.LASF1585: + .string "OB_WP_23 ((uint32_t)0x00800000U)" +.LASF558: + .string "ADC_CTL0_WDEIE BIT(6)" +.LASF233: + .string "__FLT64_HAS_DENORM__ 1" +.LASF560: + .string "ADC_CTL0_SM BIT(8)" +.LASF1009: + .string "BT_SJW(regval) (BITS(24,25) & ((uint32_t)(regval) << 24))" +.LASF727: + .string "BKP_DATA15 REG16((BKP) + 0x54U)" +.LASF3535: + .string "SSTATUS_UPIE 0x00000010" +.LASF554: + .string "ADC_STAT_STIC BIT(3)" +.LASF2445: + .string "RTC_FLAG_LWOF RTC_CTL_LWOFF" +.LASF745: + .string "BKP_DATA33 REG16((BKP) + 0x9CU)" +.LASF4111: + .string "MATCH_CUSTOM3 0x7b" +.LASF4099: + .string "MATCH_CUSTOM2 0x5b" +.LASF817: + .string "CAN_F2DATA0(canx) REG32((canx) + 0x250U)" +.LASF2149: + .string "RCU_APB2RST_SPI0RST BIT(12)" +.LASF3156: + .string "ECLIC_INT_CTRL_OFFSET _AC(0x1003,UL)" +.LASF334: + .string "HXTAL_VALUE_25M HXTAL_VALUE" +.LASF3617: + .string "VM_MBBID 2" +.LASF94: + .string "__SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)" +.LASF2429: + .string "RTC_DIVH_DIV BITS(0,3)" +.LASF598: + .string "ADC_FLAG_WDE ADC_STAT_WDE" +.LASF157: + .string "__FLT_HAS_DENORM__ 1" +.LASF1915: + .string "I2C_SADDR0_ADDFORMAT BIT(15)" +.LASF468: + .string "INTMAX_MAX (__INTMAX_MAX__)" +.LASF390: + .string "_INTPTR_EQ_INT " +.LASF2738: + .string "TIMER_DMACFG_DMATC BITS(8,12)" +.LASF201: + .string "__FLT16_EPSILON__ 9.76562500000000000000000000000000000e-4F16" +.LASF2343: + .string "RCU_PREDV0_DIV4 CFG1_PREDV0(3)" +.LASF2137: + .string "RCU_INT_PLL1STBIC BIT(21)" +.LASF897: + .string "CAN_STAT_RS BIT(9)" +.LASF4214: + .string "CSR_MHPMCOUNTER29 0xb1d" +.LASF1598: + .string "GD32VF103_GPIO_H " +.LASF3611: + .string "PRV_U 0" +.LASF1395: + .string "EXTI_EVEN_EVEN6 BIT(6)" +.LASF1827: + .string "GPIO_PIN_SOURCE_5 ((uint8_t)0x05U)" +.LASF3114: + .string "_WCHAR_T_DEFINED_ " +.LASF2331: + .string "RCU_CKOUT0SRC_CKPLL2_DIV2 CFG0_CKOUT0SEL(9)" +.LASF4253: + .string "CSR_TIMEH 0xc81" +.LASF1809: + .string "GPIO_EVENT_PIN_3 ((uint8_t)0x03U)" +.LASF2005: + .string "FWDGT_PSC_DIV16 ((uint8_t)PSC_PSC(2))" +.LASF691: + .string "OVSCR_OVSS(regval) (BITS(5,8) & ((uint32_t)(regval) << 5))" +.LASF316: + .string "__riscv_c 2000000" +.LASF1413: + .string "EXTI_RTEN_RTEN5 BIT(5)" +.LASF2195: + .string "RCU_APB1EN_WWDGTEN BIT(11)" +.LASF3744: + .string "MASK_LH 0x707f" +.LASF3549: + .string "DCSR_EBREAKU (1<<12)" +.LASF3303: + .string "__DECONST(type,var) ((type)(__uintptr_t)(const void *)(var))" +.LASF3127: + .string "_GCC_MAX_ALIGN_T " +.LASF2785: + .string "TIMER_DMACFG_DMATA_CHCTL1 DMACFG_DMATA(7)" +.LASF1489: + .string "FMC_OBKEY REG32((FMC) + 0x08U)" +.LASF379: + .string "__int20" +.LASF2898: + .string "SMCFG_TRGSEL(regval) (BITS(4, 6) & ((uint32_t)(regval) << 4U))" +.LASF2062: + .string "PMU_LVDT_4 CTL_LVDT(4)" +.LASF733: + .string "BKP_DATA21 REG16((BKP) + 0x6CU)" +.LASF738: + .string "BKP_DATA26 REG16((BKP) + 0x80U)" +.LASF313: + .string "__riscv_i 2000000" +.LASF1762: + .string "AFIO_PCF0_TIMER4CH3_IREMAP BIT(16)" +.LASF2395: + .string "RCU_PREDV0SRC_HXTAL ((uint32_t)0x00000000U)" +.LASF797: + .string "CAN_TMDATA11(canx) REG32((canx) + 0x19CU)" +.LASF1324: + .string "DMA_CHANNEL_CNT_MASK DMA_CHXCNT_CNT" +.LASF2190: + .string "RCU_APB1EN_TIMER2EN BIT(1)" +.LASF3629: + .string "IRQ_M_EXT 11" +.LASF2406: + .string "GD32VF103_RTC_H " +.LASF4117: + .string "MATCH_CUSTOM3_RD 0x407b" +.LASF1085: + .string "CAN_FF_STANDARD ((uint32_t)0x00000000U)" +.LASF1657: + .string "GPIO_ISTAT_ISTAT6 BIT(6)" +.LASF2067: + .string "PMU_FLAG_STANDBY PMU_CS_STBF" +.LASF1252: + .string "DMA_CH5CNT(dmax) REG32((dmax) + 0x70U)" +.LASF79: + .string "__SCHAR_WIDTH__ 8" +.LASF2463: + .string "SPI_CTL0_SPIEN BIT(6)" +.LASF590: + .string "ADC_IDATAX_IDATAN BITS(0,15)" +.LASF2717: + .string "TIMER_CHCTL2_CH2NEN BIT(10)" +.LASF2021: + .string "DBG_CTL REG32(DBG + 0x04U)" +.LASF1138: + .string "DACC_L12DH REG32(DAC + 0x24U)" +.LASF1378: + .string "EXTI_INTEN_INTEN8 BIT(8)" +.LASF1843: + .string "GPIO_PIN_5 BIT(5)" +.LASF2701: + .string "TIMER_CHCTL1_CH3COMCTL BITS(12,14)" +.LASF3370: + .string "_RAND48_ADD (0x000b)" +.LASF3014: + .string "USART_TRANSMIT_ENABLE CTL0_TEN(1)" +.LASF522: + .string "FMC_BASE (AHB1_BUS_BASE + 0x0000A000U)" +.LASF3794: + .string "MASK_AMOADD_W 0xf800707f" +.LASF2488: + .string "SPI_STAT_TRANS BIT(7)" +.LASF904: + .string "CAN_TSTAT_MST0 BIT(7)" +.LASF2446: + .string "GD32VF103_SPI_H " +.LASF332: + .string "__IO volatile" +.LASF3722: + .string "MASK_AND 0xfe00707f" +.LASF2124: + .string "RCU_INT_CKMIF BIT(7)" +.LASF3776: + .string "MASK_DIV 0xfe00707f" +.LASF1117: + .string "GD32VF103_CRC_H " +.LASF751: + .string "BKP_DATA39 REG16((BKP) + 0xB4U)" +.LASF1580: + .string "OB_WP_18 ((uint32_t)0x00040000U)" +.LASF1193: + .string "DAC_WAVE_BIT_WIDTH_8 DWBW(7)" +.LASF1278: + .string "DMA_CHXCTL_M2M BIT(14)" +.LASF3804: + .string "MASK_AMOMAX_W 0xf800707f" +.LASF1917: + .string "I2C_SADDR1_ADDRESS2 BITS(1,7)" +.LASF4344: + .string "short int" +.LASF3340: + .string "unsigned signed" +.LASF2580: + .string "SPI_FLAG_TRANS SPI_STAT_TRANS" +.LASF1297: + .string "DMA_FLAG_FTF DMA_INTF_FTFIF" +.LASF1925: + .string "I2C_STAT0_TBE BIT(7)" +.LASF4260: + .string "CSR_HPMCOUNTER8H 0xc88" +.LASF1030: + .string "GET_RFIFOMDATA0_DB2(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF2001: + .string "FWDGT_STAT_RUD BIT(1)" +.LASF1574: + .string "OB_WP_12 ((uint32_t)0x00001000U)" +.LASF3745: + .string "MATCH_LW 0x2003" +.LASF1404: + .string "EXTI_EVEN_EVEN15 BIT(15)" +.LASF3121: + .string "_BSD_WCHAR_T_" +.LASF3873: + .string "MATCH_FDIV_S 0x18000053" +.LASF3732: + .string "MASK_ADDW 0xfe00707f" +.LASF3793: + .string "MATCH_AMOADD_W 0x202f" +.LASF3113: + .string "_BSD_WCHAR_T_ " +.LASF2094: + .string "RCU_CTL_HXTALEN BIT(16)" +.LASF2186: + .string "RCU_APB2EN_TIMER0EN BIT(11)" +.LASF208: + .string "__FLT32_MIN_EXP__ (-125)" +.LASF3469: + .string "EOF (-1)" +.LASF3512: + .string "STDOUT_FILENO 1" +.LASF1209: + .string "DAC_LFSR_BITS11_0 DAC_WAVE_BIT_WIDTH_12" +.LASF4150: + .string "CSR_HPMCOUNTER24 0xc18" +.LASF3089: + .string "__SIZE_T__ " +.LASF3759: + .string "MATCH_SW 0x2023" +.LASF4083: + .string "MATCH_CUSTOM0_RD_RS1 0x600b" +.LASF1983: + .string "I2C_ARP_ENABLE I2C_CTL0_ARPEN" +.LASF1999: + .string "FWDGT_RLD_RLD BITS(0,11)" +.LASF1866: + .string "GPIO_TIMER2_PARTIAL_REMAP ((uint32_t)0x001A0800U)" +.LASF2209: + .string "RCU_BDCTL_LXTALEN BIT(0)" +.LASF3764: + .string "MASK_FENCE 0x707f" +.LASF2158: + .string "RCU_APB1RST_SPI1RST BIT(14)" +.LASF3778: + .string "MASK_DIVU 0xfe00707f" +.LASF2345: + .string "RCU_PREDV0_DIV6 CFG1_PREDV0(5)" +.LASF2183: + .string "RCU_APB2EN_PEEN BIT(6)" +.LASF1800: + .string "GPIO_EVENT_PORT_GPIOE ((uint8_t)0x04U)" +.LASF2484: + .string "SPI_STAT_TXURERR BIT(3)" +.LASF1333: + .string "EXMC (EXMC_BASE)" +.LASF1050: + .string "CAN_LOOPBACK_MODE ((uint8_t)0x01U)" +.LASF384: + .string "char +0" +.LASF4336: + .string "CAUSE_FAULT_STORE 0x7" +.LASF1710: + .string "GPIO_BOP_CR11 BIT(27)" +.LASF1154: + .string "DAC_CTL_DWBW1 BITS(24,27)" +.LASF3799: + .string "MATCH_AMOAND_W 0x6000202f" +.LASF3505: + .string "EXIT_SUCCESS 0" +.LASF1007: + .string "BT_BS1(regval) (BITS(16,19) & ((uint32_t)(regval) << 16))" +.LASF3866: + .string "MASK_CSRRCI 0x707f" +.LASF444: + .string "INT32_MIN (-__INT32_MAX__ - 1)" +.LASF4365: + .string "eclic_set_vmode" +.LASF2046: + .string "PMU_CTL_LDOLP BIT(0)" +.LASF4323: + .string "CSR_PUSHMSUBM 0x7EB" +.LASF2656: + .string "TIMER_DMAINTEN_CH3DEN BIT(12)" +.LASF750: + .string "BKP_DATA38 REG16((BKP) + 0xB0U)" +.LASF512: + .string "CAN_BASE (APB1_BUS_BASE + 0x00006400U)" +.LASF2072: + .string "PMU_FLAG_RESET_STANDBY ((uint8_t)0x01U)" +.LASF2360: + .string "RCU_PREDV1_DIV4 CFG1_PREDV1(3)" +.LASF2472: + .string "SPI_CTL0_BDEN BIT(15)" +.LASF3175: + .string "_WANT_IO_LONG_DOUBLE 1" +.LASF4094: + .string "MASK_CUSTOM1_RD 0x707f" +.LASF3063: + .string "WWDGT_CTL_CNT BITS(0,6)" +.LASF1411: + .string "EXTI_RTEN_RTEN3 BIT(3)" +.LASF2230: + .string "RCU_CFG1_I2S1SEL BIT(17)" +.LASF1493: + .string "FMC_OBSTAT REG32((FMC) + 0x1CU)" +.LASF3416: + .string "_SYS_TYPES_H " +.LASF1784: + .string "GPIO_MODE_MASK(n) (0xFU << (4U * (n)))" +.LASF2860: + .string "TIMER_CCX_ENABLE ((uint16_t)0x0001U)" +.LASF1661: + .string "GPIO_ISTAT_ISTAT10 BIT(10)" +.LASF567: + .string "ADC_CTL0_IWDEN BIT(22)" +.LASF4097: + .string "MATCH_CUSTOM1_RD_RS1_RS2 0x702b" +.LASF2861: + .string "TIMER_CCX_DISABLE ((uint16_t)0x0000U)" +.LASF1371: + .string "EXTI_INTEN_INTEN1 BIT(1)" +.LASF3945: + .string "MATCH_FCLASS_D 0xe2001053" +.LASF369: + .string "___int_least16_t_defined 1" +.LASF2868: + .string "TIMER_OC_IDLE_STATE_HIGH ((uint16_t)0x0100)" +.LASF702: + .string "ADC_OVERSAMPLING_RATIO_MUL2 OVSCR_OVSR(0)" +.LASF15: + .string "__FINITE_MATH_ONLY__ 0" +.LASF3885: + .string "MATCH_FSQRT_S 0x58000053" +.LASF4032: + .string "MASK_C_LUI 0xe003" +.LASF1258: + .string "DMA_CH6MADDR(dmax) REG32((dmax) + 0x8CU)" +.LASF2967: + .string "USART_CTL0_TEN BIT(3)" +.LASF2358: + .string "RCU_PREDV1_DIV2 CFG1_PREDV1(1)" +.LASF3152: + .string "ECLIC_INT_ATTR_TRIG_LEVEL 0x00" +.LASF3809: + .string "MATCH_AMOSWAP_W 0x800202f" +.LASF2874: + .string "TIMER_OC_MODE_INACTIVE ((uint16_t)0x0020U)" +.LASF1513: + .string "FMC_CTL_OBER BIT(5)" +.LASF1073: + .string "CAN_BT_BS2_1TQ ((uint8_t)0x00U)" +.LASF807: + .string "CAN_RFIFOMP1(canx) REG32((canx) + 0x1C4U)" +.LASF2055: + .string "PMU_CS_LVDF BIT(2)" +.LASF3665: + .string "MATCH_BEQ 0x63" +.LASF925: + .string "CAN_RFIFO0_RFD0 BIT(5)" +.LASF3024: + .string "USART_WL_8BIT CTL0_WL(0)" +.LASF3151: + .string "ECLIC_INT_ATTR_SHV 0x01" +.LASF3030: + .string "USART_STB_1_5BIT CTL1_STB(3)" +.LASF3570: + .string "MCONTROL_MATCH (0xf<<7)" +.LASF212: + .string "__FLT32_DECIMAL_DIG__ 9" +.LASF3120: + .string "_WCHAR_T_DECLARED " +.LASF4003: + .string "MATCH_C_SD 0xe000" +.LASF2804: + .string "TIMER_DMACFG_DMATC_7TRANSFER DMACFG_DMATC(6)" +.LASF561: + .string "ADC_CTL0_WDSC BIT(9)" +.LASF704: + .string "ADC_OVERSAMPLING_RATIO_MUL8 OVSCR_OVSR(2)" +.LASF3209: + .string "__DOTS , ..." +.LASF366: + .string "___int32_t_defined 1" +.LASF2090: + .string "RCU_CTL_IRC8MEN BIT(0)" +.LASF1181: + .string "CTL_DWM(regval) (BITS(6,7) & ((uint32_t)(regval) << 6))" +.LASF4378: + .string "eclic_get_irq_lvl" +.LASF3550: + .string "DCSR_STOPCYCLE (1<<10)" +.LASF230: + .string "__FLT64_MIN__ 2.22507385850720138309023271733240406e-308F64" +.LASF3243: + .string "__CC_SUPPORTS___FUNC__ 1" +.LASF633: + .string "ADC0_1_EXTTRIG_INSERTED_T1_CH0 CTL1_ETSIC(3)" +.LASF3199: + .string "_LONG_DOUBLE long double" +.LASF1621: + .string "GPIO_CTL0_MD1 BITS(4, 5)" +.LASF4177: + .string "CSR_MBADADDR 0x343" +.LASF246: + .string "__FLT128_EPSILON__ 1.92592994438723585305597794258492732e-34F128" +.LASF2856: + .string "TIMER_CH_0 ((uint16_t)0x0000U)" +.LASF2164: + .string "RCU_APB1RST_I2C0RST BIT(21)" +.LASF2283: + .string "RCU_CKADC_CKAPB2_DIV16 ((uint32_t)0x00000007U)" +.LASF1488: + .string "FMC_KEY REG32((FMC) + 0x04U)" +.LASF2136: + .string "RCU_INT_PLLSTBIC BIT(20)" +.LASF1769: + .string "AFIO_EXTI3_SS BITS(12, 15)" +.LASF2893: + .string "TIMER_IC_SELECTION_ITS ((uint16_t)0x0003U)" +.LASF1613: + .string "AFIO_PCF0 REG32(AFIO + 0x04U)" +.LASF632: + .string "ADC0_1_EXTTRIG_INSERTED_T1_TRGO CTL1_ETSIC(2)" +.LASF3997: + .string "MATCH_C_JALR 0x9002" +.LASF4406: + .string "measure_cpu_freq" +.LASF3294: + .string "__weak_reference(sym,alias) __asm__(\".weak \" #alias); __asm__(\".equ \" #alias \", \" #sym)" +.LASF492: + .string "REG8(addr) (*(volatile uint8_t *)(uint32_t)(addr))" +.LASF4286: + .string "CSR_MHPMCOUNTER3H 0xb83" +.LASF906: + .string "CAN_TSTAT_MTFNERR1 BIT(9)" +.LASF2012: + .string "FWDGT_KEY_RELOAD ((uint16_t)0xAAAAU)" +.LASF1691: + .string "GPIO_BOP_BOP8 BIT(8)" +.LASF2509: + .string "SPI_TRANSMODE_FULLDUPLEX ((uint32_t)0x00000000U)" +.LASF3359: + .string "__lock_release_recursive(lock) ((void) 0)" +.LASF2632: + .string "TIMER_CTL1_ISO1 BIT(10)" +.LASF2920: + .string "TIMER_ENCODER_MODE2 SMCFG_SMC(3)" +.LASF3406: + .string "_REENT_L64A_BUF(ptr) ((ptr)->_new._reent._l64a_buf)" +.LASF422: + .string "__int_least16_t_defined 1" +.LASF1168: + .string "DACC_R8DH_DAC0_DH BITS(0,7)" +.LASF2347: + .string "RCU_PREDV0_DIV8 CFG1_PREDV0(7)" +.LASF3111: + .string "__WCHAR_T " +.LASF3556: + .string "DCSR_PRV (3<<0)" +.LASF408: + .string "_INT16_T_DECLARED " +.LASF3979: + .string "MATCH_FNMSUB_S 0x4b" +.LASF3461: + .string "__SOFF 0x1000" +.LASF2362: + .string "RCU_PREDV1_DIV6 CFG1_PREDV1(5)" +.LASF88: + .string "__INTMAX_MAX__ 0x7fffffffffffffffLL" +.LASF3671: + .string "MATCH_BGE 0x5063" +.LASF1045: + .string "CAN_ERRN_5 ERR_ERRN(5U)" +.LASF3504: + .string "EXIT_FAILURE 1" +.LASF4106: + .string "MASK_CUSTOM2_RD 0x707f" +.LASF918: + .string "CAN_TSTAT_TME2 BIT(28)" +.LASF4300: + .string "CSR_MHPMCOUNTER17H 0xb91" +.LASF1723: + .string "GPIO_BC_CR8 BIT(8)" +.LASF2697: + .string "TIMER_CHCTL1_CH2COMCEN BIT(7)" +.LASF2276: + .string "RCU_APB2_CKAHB_DIV8 CFG0_APB2PSC(6)" +.LASF90: + .string "__UINTMAX_MAX__ 0xffffffffffffffffULL" +.LASF4016: + .string "MASK_C_LW 0xe003" +.LASF4384: + .string "new_cliccfg" +.LASF614: + .string "ADC_DAUL_REGULAL_FOLLOWUP_FAST CTL0_SYNCM(7)" +.LASF2237: + .string "APB1EN_REG_OFFSET 0x1CU" +.LASF1889: + .string "I2C_CKCFG(i2cx) REG32((i2cx) + 0x1CU)" +.LASF2582: + .string "I2S_FLAG_RBNE SPI_STAT_RBNE" +.LASF4040: + .string "MASK_C_SUB 0xfc63" +.LASF3875: + .string "MATCH_FSGNJ_S 0x20000053" +.LASF3420: + .string "_CLOCK_T_DECLARED " +.LASF2297: + .string "RCU_PLL_MUL11 CFG0_PLLMF(9)" +.LASF1362: + .string "GD32VF103_EXTI_H " +.LASF377: + .string "char" +.LASF1756: + .string "AFIO_PCF0_TIMER0_REMAP BITS(6, 7)" +.LASF3938: + .string "MASK_FCVT_WU_D 0xfff0007f" +.LASF1340: + .string "EXMC_SNCTL_NRW BITS(4,5)" +.LASF32: + .string "__SIZE_TYPE__ unsigned int" +.LASF3573: + .string "MCONTROL_S (1<<4)" +.LASF3015: + .string "USART_TRANSMIT_DISABLE CTL0_TEN(0)" +.LASF2196: + .string "RCU_APB1EN_SPI1EN BIT(14)" +.LASF4180: + .string "CSR_TDATA1 0x7a1" +.LASF880: + .string "CAN_RFIFOMDATA1(canx,bank) REG32((canx) + 0x1BCU + ((bank) * 0x10U))" +.LASF2708: + .string "TIMER_CHCTL2_CH0P BIT(1)" +.LASF391: + .string "_INT32_EQ_LONG " +.LASF1069: + .string "CAN_BT_BS1_13TQ ((uint8_t)0x0CU)" +.LASF3971: + .string "MATCH_FSW 0x2027" +.LASF1846: + .string "GPIO_PIN_8 BIT(8)" +.LASF1928: + .string "I2C_STAT0_AERR BIT(10)" +.LASF2319: + .string "CFG0_USBPSC(regval) (BITS(22,23) & ((uint32_t)(regval) << 22))" +.LASF2869: + .string "TIMER_OC_IDLE_STATE_LOW ((uint16_t)0x0000)" +.LASF535: + .string "ADC_IOFF0(adcx) REG32((adcx) + 0x14U)" +.LASF1384: + .string "EXTI_INTEN_INTEN14 BIT(14)" +.LASF907: + .string "CAN_TSTAT_MAL1 BIT(10)" +.LASF31: + .string "__SIZEOF_POINTER__ 4" +.LASF2045: + .string "PMU_CS REG32((PMU) + 0x04U)" +.LASF4219: + .string "CSR_MHPMEVENT3 0x323" +.LASF597: + .string "ADC_OVSCR_DRES BITS(12,13)" +.LASF2376: + .string "RCU_PLL1_MUL10 CFG1_PLL1MF(8)" +.LASF217: + .string "__FLT32_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F32" +.LASF2088: + .string "RCU_CFG1 REG32(RCU + 0x2CU)" +.LASF1311: + .string "DMA_PERIPHERAL_WIDTH_16BIT CHCTL_PWIDTH(1U)" +.LASF2877: + .string "TIMER_OC_MODE_HIGH ((uint16_t)0x0050U)" +.LASF685: + .string "ADC_RESOLUTION_12B OVSCR_DRES(0)" +.LASF2883: + .string "TIMER_OC_FAST_DISABLE ((uint16_t)0x0000)" +.LASF4339: + .string "CAUSE_HYPERVISOR_ECALL 0xa" +.LASF1795: + .string "GPIO_OSPEED_50MHZ ((uint8_t)0x03U)" +.LASF686: + .string "ADC_RESOLUTION_10B OVSCR_DRES(1)" +.LASF2241: + .string "APB2RST_REG_OFFSET 0x0CU" +.LASF2994: + .string "USART_CTL2_DENT BIT(7)" +.LASF2796: + .string "TIMER_DMACFG_DMATA_DMACFG DMACFG_DMATA(18)" +.LASF2483: + .string "SPI_STAT_I2SCH BIT(2)" +.LASF3805: + .string "MATCH_AMOMINU_W 0xc000202f" +.LASF3012: + .string "USART_RECEIVE_DISABLE CTL0_REN(0)" +.LASF2631: + .string "TIMER_CTL1_ISO0N BIT(9)" +.LASF2685: + .string "TIMER_CHCTL0_CH1COMFEN BIT(10)" +.LASF2817: + .string "TIMER_EVENT_SRC_CH0G ((uint16_t)0x0002U)" +.LASF662: + .string "ADC_CHANNEL_2 ((uint8_t)0x02U)" +.LASF3067: + .string "WWDGT_CFG_EWIE BIT(9)" +.LASF1853: + .string "GPIO_PIN_15 BIT(15)" +.LASF4284: + .string "CSR_MCYCLEH 0xb80" +.LASF3791: + .string "MATCH_REMUW 0x200703b" +.LASF3483: + .string "_stderr_r(x) ((x)->_stderr)" +.LASF1527: + .string "FMC_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF3717: + .string "MATCH_SRA 0x40005033" +.LASF1103: + .string "CAN_INT_TME CAN_INTEN_TMEIE" +.LASF516: + .string "AFIO_BASE (APB2_BUS_BASE + 0x00000000U)" +.LASF1895: + .string "I2C_CTL0_ARPEN BIT(4)" +.LASF4390: + .string "eclic_get_intattr" +.LASF2160: + .string "RCU_APB1RST_USART1RST BIT(17)" +.LASF1924: + .string "I2C_STAT0_RBNE BIT(6)" +.LASF2393: + .string "RCU_PLL2_MUL16 CFG1_PLL2MF(14)" +.LASF1684: + .string "GPIO_BOP_BOP1 BIT(1)" +.LASF2764: + .string "TIMER_FLAG_CH0O TIMER_INTF_CH0OF" +.LASF707: + .string "ADC_OVERSAMPLING_RATIO_MUL64 OVSCR_OVSR(5)" +.LASF1042: + .string "CAN_ERRN_2 ERR_ERRN(2U)" +.LASF1617: + .string "AFIO_EXTISS3 REG32(AFIO + 0x14U)" +.LASF1444: + .string "EXTI_FTEN_FTEN17 BIT(17)" +.LASF2287: + .string "CFG0_PLLMF(regval) (BITS(18,21) & ((uint32_t)(regval) << 18))" +.LASF2386: + .string "RCU_PLL2_MUL9 CFG1_PLL2MF(7)" +.LASF2117: + .string "RCU_INT_IRC40KSTBIF BIT(0)" +.LASF2589: + .string "GD32VF103_TIMER_H " +.LASF1017: + .string "TMDATA0_DB1(regval) (BITS(8,15) & ((uint32_t)(regval) << 8))" +.LASF3076: + .string "_STDDEF_H_ " +.LASF4075: + .string "MATCH_CUSTOM0 0xb" +.LASF721: + .string "BKP_DATA9 REG16((BKP) + 0x28U)" +.LASF3424: + .string "__caddr_t_defined " +.LASF3552: + .string "DCSR_CAUSE (7<<6)" +.LASF3221: + .string "__has_extension __has_feature" +.LASF4233: + .string "CSR_MHPMEVENT17 0x331" +.LASF4247: + .string "CSR_MHPMEVENT31 0x33f" +.LASF2686: + .string "TIMER_CHCTL0_CH1COMSEN BIT(11)" +.LASF1676: + .string "GPIO_OCTL_OCTL9 BIT(9)" +.LASF4277: + .string "CSR_HPMCOUNTER25H 0xc99" +.LASF1716: + .string "GPIO_BC_CR1 BIT(1)" +.LASF2085: + .string "RCU_BDCTL REG32(RCU + 0x20U)" +.LASF989: + .string "CAN_FMCFG_FMOD(regval) BIT(regval)" +.LASF2079: + .string "RCU_INT REG32(RCU + 0x08U)" +.LASF3973: + .string "MATCH_FSD 0x3027" +.LASF3620: + .string "VM_SV48 10" +.LASF2584: + .string "I2S_FLAG_CH SPI_STAT_I2SCH" +.LASF2197: + .string "RCU_APB1EN_SPI2EN BIT(15)" +.LASF4119: + .string "MATCH_CUSTOM3_RD_RS1 0x607b" +.LASF920: + .string "CAN_TSTAT_TMLS1 BIT(30)" +.LASF478: + .string "WINT_MAX (__WINT_MAX__)" +.LASF855: + .string "CAN_F12DATA1(canx) REG32((canx) + 0x2A4U)" +.LASF3188: + .string "__OBSOLETE_MATH __OBSOLETE_MATH_DEFAULT" +.LASF4242: + .string "CSR_MHPMEVENT26 0x33a" +.LASF1015: + .string "TMI_SFID(regval) (BITS(21,31) & ((uint32_t)(regval) << 21))" +.LASF861: + .string "CAN_F18DATA1(canx) REG32((canx) + 0x2D4U)" +.LASF1564: + .string "OB_WP_2 ((uint32_t)0x00000004U)" +.LASF3068: + .string "WWDGT_STAT_EWIF BIT(0)" +.LASF1782: + .string "AFIO_PCF1_EXMC_NADV BIT(10)" +.LASF2221: + .string "RCU_RSTSCK_FWDGTRSTF BIT(29)" +.LASF4184: + .string "CSR_DPC 0x7b1" +.LASF1477: + .string "EXTI_PD_PD12 BIT(12)" +.LASF1022: + .string "TMDATA1_DB6(regval) (BITS(16,23) & ((uint32_t)(regval) << 16))" +.LASF1801: + .string "GPIO_PORT_SOURCE_GPIOA ((uint8_t)0x00U)" +.LASF200: + .string "__FLT16_MIN__ 6.10351562500000000000000000000000000e-5F16" +.LASF3609: + .string "SIP_SSIP MIP_SSIP" +.LASF2733: + .string "TIMER_CCHP_BRKEN BIT(12)" +.LASF2128: + .string "RCU_INT_HXTALSTBIE BIT(11)" +.LASF3911: + .string "MATCH_FLE_S 0xa0000053" +.LASF3914: + .string "MASK_FLT_S 0xfe00707f" +.LASF563: + .string "ADC_CTL0_DISRC BIT(11)" +.LASF3673: + .string "MATCH_BLTU 0x6063" +.LASF3608: + .string "MIE_MEIE MIP_MEIP" +.LASF295: + .string "__GCC_ATOMIC_LLONG_LOCK_FREE 1" +.LASF2336: + .string "RCU_RTCSRC_LXTAL BDCTL_RTCSRC(1)" +.LASF4067: + .string "MATCH_C_ADD 0x9002" +.LASF1234: + .string "DMA_CH0MADDR(dmax) REG32((dmax) + 0x14U)" +.LASF814: + .string "CAN_FW(canx) REG32((canx) + 0x21CU)" +.LASF1752: + .string "AFIO_PCF0_I2C0_REMAP BIT(1)" +.LASF2605: + .string "TIMER_CHCTL2(timerx) REG32((timerx) + 0x20U)" +.LASF4385: + .string "eclic_set_mth" +.LASF2936: + .string "TIMER_CHVSEL_ENABLE ((uint16_t)TIMER_CFG_OUTSEL)" +.LASF3910: + .string "MASK_FSQRT_D 0xfff0007f" +.LASF2330: + .string "RCU_CKOUT0SRC_CKPLL1 CFG0_CKOUT0SEL(8)" +.LASF3586: + .string "MCONTROL_MATCH_NAPOT 1" +.LASF2567: + .string "SPI_I2S_INT_ERR ((uint8_t)0x02U)" +.LASF3210: + .string "__THROW " +.LASF806: + .string "CAN_RFIFOMI1(canx) REG32((canx) + 0x1C0U)" +.LASF1470: + .string "EXTI_PD_PD5 BIT(5)" +.LASF1420: + .string "EXTI_RTEN_RTEN12 BIT(12)" +.LASF830: + .string "CAN_F15DATA0(canx) REG32((canx) + 0x2B8U)" +.LASF4136: + .string "CSR_HPMCOUNTER10 0xc0a" +.LASF3601: + .string "MIE_HSIE MIP_HSIP" +.LASF1680: + .string "GPIO_OCTL_OCTL13 BIT(13)" +.LASF3840: + .string "MASK_EBREAK 0xffffffff" +.LASF1939: + .string "I2C_STAT1_DUMODF BIT(7)" +.LASF530: + .string "ADC_STAT(adcx) REG32((adcx) + 0x00U)" +.LASF720: + .string "BKP_DATA8 REG16((BKP) + 0x24U)" +.LASF3032: + .string "USART_LBLEN_10B CTL1_LBLEN(0)" +.LASF427: + .string "__int_fast32_t_defined 1" +.LASF1669: + .string "GPIO_OCTL_OCTL2 BIT(2)" +.LASF57: + .string "__INT_FAST8_TYPE__ int" +.LASF1593: + .string "OB_WP_31 ((uint32_t)0x80000000U)" +.LASF1166: + .string "DACC_L12DH_DAC0_DH BITS(4,15)" +.LASF3600: + .string "MIE_SSIE MIP_SSIP" +.LASF3961: + .string "MATCH_FCVT_D_L 0xd2200053" +.LASF4213: + .string "CSR_MHPMCOUNTER28 0xb1c" +.LASF1044: + .string "CAN_ERRN_4 ERR_ERRN(4U)" +.LASF3339: + .string "__size_t" +.LASF3787: + .string "MATCH_DIVUW 0x200503b" +.LASF4313: + .string "CSR_MHPMCOUNTER30H 0xb9e" +.LASF955: + .string "CAN_BT_SCMOD BIT(31)" +.LASF4193: + .string "CSR_MHPMCOUNTER8 0xb08" +.LASF2691: + .string "TIMER_CHCTL0_CH1CAPPSC BITS(10,11)" +.LASF3774: + .string "MASK_MULHU 0xfe00707f" +.LASF2022: + .string "DBG_ID_ID_CODE BITS(0,31)" +.LASF649: + .string "WDLT_WDLT(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF4157: + .string "CSR_HPMCOUNTER31 0xc1f" +.LASF3792: + .string "MASK_REMUW 0xfe00707f" +.LASF1140: + .string "DAC0_DO REG32(DAC + 0x2CU)" +.LASF2427: + .string "RTC_PSCH_PSC BITS(0,3)" +.LASF1171: + .string "DAC1_DO_DAC1_DO BITS(0,11)" +.LASF1417: + .string "EXTI_RTEN_RTEN9 BIT(9)" +.LASF719: + .string "BKP_DATA7 REG16((BKP) + 0x20U)" +.LASF2257: + .string "RCU_AHB_CKSYS_DIV1 CFG0_AHBPSC(0)" +.LASF2061: + .string "PMU_LVDT_3 CTL_LVDT(3)" +.LASF1544: + .string "OB_FWDGT_SW ((uint8_t)0x01U)" +.LASF4296: + .string "CSR_MHPMCOUNTER13H 0xb8d" +.LASF1330: + .string "ECLIC_PRIGROUP_LEVEL4_PRIO0 4" +.LASF4225: + .string "CSR_MHPMEVENT9 0x329" +.LASF2641: + .string "TIMER_SMCFG_ETPSC BITS(12,13)" +.LASF452: + .string "UINT64_MAX (__UINT64_MAX__)" +.LASF1918: + .string "I2C_DATA_TRB BITS(0,7)" +.LASF3468: + .string "_IONBF 2" +.LASF1987: + .string "I2C_DTCY_2 ((uint32_t)0x00000000U)" +.LASF1578: + .string "OB_WP_16 ((uint32_t)0x00010000U)" +.LASF1737: + .string "GPIO_LOCK_LK6 BIT(6)" +.LASF3217: + .string "__flexarr [0]" +.LASF735: + .string "BKP_DATA23 REG16((BKP) + 0x74U)" +.LASF3959: + .string "MATCH_FCVT_D_WU 0xd2100053" +.LASF3524: + .string "MSTATUS_MPP 0x00001800" +.LASF4054: + .string "MASK_C_BEQZ 0xe003" +.LASF3867: + .string "MATCH_FADD_S 0x53" +.LASF4265: + .string "CSR_HPMCOUNTER13H 0xc8d" +.LASF3146: + .string "ECLIC_INFO_OFFSET 0x4" +.LASF883: + .string "CAN_CTL_TFO BIT(2)" +.LASF3795: + .string "MATCH_AMOXOR_W 0x2000202f" +.LASF2262: + .string "RCU_AHB_CKSYS_DIV64 CFG0_AHBPSC(12)" +.LASF2731: + .string "TIMER_CCHP_IOS BIT(10)" +.LASF3140: + .string "_AC(X,Y) (X ##Y)" +.LASF1773: + .string "AFIO_EXTI7_SS BITS(12, 15)" +.LASF2524: + .string "SPI_PSC_2 CTL0_PSC(0)" +.LASF895: + .string "CAN_STAT_SLPIF BIT(4)" +.LASF3200: + .string "_ATTRIBUTE(attrs) __attribute__ (attrs)" +.LASF59: + .string "__INT_FAST32_TYPE__ int" +.LASF2947: + .string "USART_CTL0(usartx) REG32((usartx) + (0x0000000CU))" +.LASF1857: + .string "GPIO_USART0_REMAP ((uint32_t)0x00000004U)" +.LASF752: + .string "BKP_DATA40 REG16((BKP) + 0xB8U)" +.LASF1450: + .string "EXTI_SWIEV_SWIEV4 BIT(4)" +.LASF2830: + .string "TIMER_PSC_RELOAD_UPDATE ((uint32_t)0x00000000U)" +.LASF1553: + .string "FMC_USPC ((uint8_t)0xBBU)" +.LASF2143: + .string "RCU_APB2RST_PCRST BIT(4)" +.LASF714: + .string "BKP_DATA2 REG16((BKP) + 0x0CU)" +.LASF1223: + .string "DAC_TRIANGLE_AMPLITUDE_1023 DAC_WAVE_BIT_WIDTH_10" +.LASF16: + .string "__SIZEOF_INT__ 4" +.LASF1608: + .string "GPIO_OCTL(gpiox) REG32((gpiox) + 0x0CU)" +.LASF1048: + .string "CAN_STATE_PENDING ((uint32_t)0x00000000U)" +.LASF383: + .string "unsigned +0" +.LASF28: + .string "__ORDER_PDP_ENDIAN__ 3412" +.LASF3957: + .string "MATCH_FCVT_D_W 0xd2000053" +.LASF1255: + .string "DMA_CH6CTL(dmax) REG32((dmax) + 0x80U)" +.LASF1702: + .string "GPIO_BOP_CR3 BIT(19)" +.LASF2485: + .string "SPI_STAT_CRCERR BIT(4)" +.LASF99: + .string "__INT64_MAX__ 0x7fffffffffffffffLL" +.LASF2126: + .string "RCU_INT_LXTALSTBIE BIT(9)" +.LASF2399: + .string "RCU_I2S2SRC_CKSYS ((uint32_t)0x00000000U)" +.LASF3005: + .string "USART_BIT_POS2(val) (((uint32_t)(val) & (0x001F0000U)) >> 16)" +.LASF3912: + .string "MASK_FLE_S 0xfe00707f" +.LASF878: + .string "CAN_RFIFOMP(canx,bank) REG32((canx) + 0x1B4U + ((bank) * 0x10U))" +.LASF3897: + .string "MATCH_FSGNJN_D 0x22001053" +.LASF674: + .string "ADC_CHANNEL_14 ((uint8_t)0x0EU)" +.LASF3969: + .string "MATCH_FLD 0x3007" +.LASF2173: + .string "RCU_AHBEN_SRAMSPEN BIT(2)" +.LASF593: + .string "ADC_OVSCR_OVSEN BIT(0)" +.LASF3890: + .string "MASK_FSUB_D 0xfe00007f" +.LASF2833: + .string "CTL0_CKDIV(regval) ((uint16_t)(BITS(8, 9) & ((uint32_t)(regval) << 8U)))" +.LASF2600: + .string "TIMER_DMAINTEN(timerx) REG32((timerx) + 0x0CU)" +.LASF3970: + .string "MASK_FLD 0x707f" +.LASF416: + .string "__int64_t_defined 1" +.LASF723: + .string "BKP_DATA11 REG16((BKP) + 0x44U)" +.LASF2103: + .string "RCU_CTL_PLL2STB BIT(29)" +.LASF3677: + .string "MATCH_JALR 0x67" +.LASF3462: + .string "__SORD 0x2000" +.LASF2885: + .string "TIMER_OC_CLEAR_DISABLE ((uint16_t)0x0000U)" +.LASF3448: + .string "_funlockfile(fp) (((fp)->_flags & __SSTR) ? 0 : __lock_release_recursive((fp)->_lock))" +.LASF4010: + .string "MASK_C_SDSP 0xe003" +.LASF378: + .string "short" +.LASF1356: + .string "EXMC_MEMORY_TYPE_SRAM SNCTL_NRTP(0)" +.LASF1464: + .string "EXTI_SWIEV_SWIEV18 BIT(18)" +.LASF1523: + .string "FMC_OBSTAT_DATA BITS(10,25)" +.LASF3228: + .string "__GNUCLIKE___OFFSETOF 1" +.LASF771: + .string "BKP_DATA_GET(regval) GET_BITS((uint32_t)(regval), 0, 15)" +.LASF2928: + .string "TIMER_EXT_TRI_PSC_OFF SMCFG_ETPSC(0)" +.LASF2364: + .string "RCU_PREDV1_DIV8 CFG1_PREDV1(7)" +.LASF991: + .string "CAN_FAFIFOR_FAF(regval) BIT(regval)" +.LASF3071: + .string "WWDGT_CFG_PSC_DIV2 CFG_PSC(1)" +.LASF3404: + .string "_REENT_WCRTOMB_STATE(ptr) ((ptr)->_new._reent._wcrtomb_state)" +.LASF4149: + .string "CSR_HPMCOUNTER23 0xc17" +.LASF4419: + .string "GNU C17 10.2.0 -march=rv32imac -mabi=ilp32 -mcmodel=medany -msmall-data-limit= 8 -march=rv32imac -g3 -O0" +.LASF1186: + .string "DAC_WAVE_BIT_WIDTH_1 DWBW(0)" +.LASF1517: + .string "FMC_CTL_ERRIE BIT(10)" +.LASF4328: + .string "CSR_MSUBM 0x7c4" +.LASF748: + .string "BKP_DATA36 REG16((BKP) + 0xA8U)" +.LASF870: + .string "CAN_F27DATA1(canx) REG32((canx) + 0x31CU)" +.LASF734: + .string "BKP_DATA22 REG16((BKP) + 0x70U)" +.LASF1012: + .string "FDATA_MASK_LOW(regval) (BITS(0,15) & ((uint32_t)(regval) << 0))" +.LASF3206: + .string "__need_NULL " +.LASF193: + .string "__FLT16_MIN_EXP__ (-13)" +.LASF2669: + .string "TIMER_INTF_CH2OF BIT(11)" +.LASF1823: + .string "GPIO_PIN_SOURCE_1 ((uint8_t)0x01U)" +.LASF2704: + .string "TIMER_CHCTL1_CH2CAPFLT BITS(4,7)" +.LASF4366: + .string "eclic_mode_enable" +.LASF2036: + .string "DBG_CTL_TIMER5_HOLD BIT(19)" +.LASF3476: + .string "SEEK_END 2" +.LASF3016: + .string "CTL0_PM(regval) (BITS(9,10) & ((uint32_t)(regval) << 9))" +.LASF2466: + .string "SPI_CTL0_SWNSSEN BIT(9)" +.LASF322: + .string "NO_INIT 1" +.LASF591: + .string "ADC_RDATA_RDATA BITS(0,15)" +.LASF938: + .string "CAN_INTEN_PERRIE BIT(9)" +.LASF1775: + .string "AFIO_EXTI9_SS BITS(4, 7)" +.LASF3242: + .string "__CC_SUPPORTS___INLINE__ 1" +.LASF2120: + .string "RCU_INT_HXTALSTBIF BIT(3)" +.LASF358: + .string "__SVID_VISIBLE 0" +.LASF2104: + .string "RCU_CFG0_SCS BITS(0,1)" +.LASF2673: + .string "TIMER_SWEVG_CH1G BIT(2)" +.LASF1449: + .string "EXTI_SWIEV_SWIEV3 BIT(3)" +.LASF1663: + .string "GPIO_ISTAT_ISTAT12 BIT(12)" +.LASF747: + .string "BKP_DATA35 REG16((BKP) + 0xA4U)" +.LASF3371: + .string "_REENT_EMERGENCY_SIZE 25" +.LASF1246: + .string "DMA_CH3MADDR(dmax) REG32((dmax) + 0x50U)" +.LASF1098: + .string "CAN_FILTERMODE_LIST ((uint8_t)0x01U)" +.LASF3827: + .string "MATCH_AMOMINU_D 0xc000302f" +.LASF3058: + .string "GD32VF103_WWDGT_H " +.LASF2240: + .string "APB1RST_REG_OFFSET 0x10U" +.LASF53: + .string "__UINT_LEAST8_TYPE__ unsigned char" +.LASF3880: + .string "MASK_FSGNJX_S 0xfe00707f" +.LASF4045: + .string "MATCH_C_AND 0x8c61" +.LASF1887: + .string "I2C_STAT0(i2cx) REG32((i2cx) + 0x14U)" +.LASF3308: + .string "_Null_unspecified " +.LASF2699: + .string "TIMER_CHCTL1_CH3COMFEN BIT(10)" +.LASF2263: + .string "RCU_AHB_CKSYS_DIV128 CFG0_AHBPSC(13)" +.LASF822: + .string "CAN_F7DATA0(canx) REG32((canx) + 0x278U)" +.LASF2227: + .string "RCU_CFG1_PLL1MF BITS(8,11)" +.LASF27: + .string "__ORDER_BIG_ENDIAN__ 4321" +.LASF722: + .string "BKP_DATA10 REG16((BKP) + 0x40U)" +.LASF939: + .string "CAN_INTEN_BOIE BIT(10)" +.LASF3560: + .string "DCSR_CAUSE_DEBUGINT 3" +.LASF1821: + .string "GPIO_EVENT_PIN_15 ((uint8_t)0x0FU)" +.LASF2876: + .string "TIMER_OC_MODE_LOW ((uint16_t)0x0040U)" +.LASF1666: + .string "GPIO_ISTAT_ISTAT15 BIT(15)" +.LASF3887: + .string "MATCH_FADD_D 0x2000053" +.LASF1792: + .string "GPIO_MODE_AF_PP ((uint8_t)0x18U)" +.LASF3593: + .string "MIP_MSIP (1 << IRQ_M_SOFT)" +.LASF3207: + .string "_SYS_CDEFS_H_ " +.LASF3345: + .string "_NULL 0" +.LASF4120: + .string "MASK_CUSTOM3_RD_RS1 0x707f" +.LASF1226: + .string "GD32VF103_DMA_H " +.LASF3655: + .string "write_fpu(reg,val) ({ if (__builtin_constant_p(val) && (unsigned long)(val) < 32) asm volatile (\"fmv.w.x \" #reg \", %0\" :: \"i\"(val)); else asm volatile (\"fmv.w.x \" #reg \", %0\" :: \"r\"(val)); })" +.LASF3378: + .string "_REENT_CHECK_RAND48(ptr) " +.LASF221: + .string "__FLT64_MANT_DIG__ 53" +.LASF3062: + .string "WWDGT_STAT REG32((WWDGT) + 0x00000008U)" +.LASF1157: + .string "DAC_SWT_SWTR1 BIT(1)" +.LASF2014: + .string "FWDGT_PSC_TIMEOUT ((uint32_t)0x000FFFFFU)" +.LASF2602: + .string "TIMER_SWEVG(timerx) REG32((timerx) + 0x14U)" +.LASF4163: + .string "CSR_SCAUSE 0x142" +.LASF1087: + .string "CAN_FIFO0 ((uint8_t)0x00U)" +.LASF3693: + .string "MATCH_XORI 0x4013" +.LASF2010: + .string "FWDGT_WRITEACCESS_ENABLE ((uint16_t)0x5555U)" +.LASF2700: + .string "TIMER_CHCTL1_CH3COMSEN BIT(11)" +.LASF3746: + .string "MASK_LW 0x707f" +.LASF3924: + .string "MASK_FCVT_W_S 0xfff0007f" +.LASF1949: + .string "I2C_REGIDX_BIT2(regidx,bitpos,regidx2,bitpos2) (((uint32_t)(regidx2) << 22) | (uint32_t)((bitpos2) << 16) | (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos)))" +.LASF3515: + .string "MSTATUS_UIE 0x00000001" +.LASF753: + .string "BKP_DATA41 REG16((BKP) + 0xBCU)" +.LASF2370: + .string "RCU_PREDV1_DIV14 CFG1_PREDV1(13)" +.LASF2076: + .string "RCU RCU_BASE" +.LASF2750: + .string "TIMER_INT_FLAG_CH1 TIMER_INT_CH1" +.LASF4170: + .string "CSR_MIDELEG 0x303" +.LASF1909: + .string "I2C_CTL1_BUFIE BIT(10)" +.LASF252: + .string "__FLT32X_DIG__ 15" +.LASF2635: + .string "TIMER_CTL1_ISO2N BIT(13)" +.LASF2824: + .string "CTL0_CAM(regval) ((uint16_t)(BITS(5, 6) & ((uint32_t)(regval) << 5U)))" +.LASF2043: + .string "PMU PMU_BASE" +.LASF4084: + .string "MASK_CUSTOM0_RD_RS1 0x707f" +.LASF4289: + .string "CSR_MHPMCOUNTER6H 0xb86" +.LASF3326: + .string "__nosanitizeaddress " +.LASF746: + .string "BKP_DATA34 REG16((BKP) + 0xA0U)" +.LASF2616: + .string "TIMER_DMATB(timerx) REG32((timerx) + 0x4CU)" +.LASF2547: + .string "I2S_MCKOUT_ENABLE SPI_I2SPSC_MCKOEN" +.LASF3820: + .string "MASK_AMOOR_D 0xf800707f" +.LASF618: + .string "ADC_DATAALIGN_LEFT ADC_CTL1_DAL" +.LASF368: + .string "___int_least8_t_defined 1" +.LASF2278: + .string "RCU_CKADC_CKAPB2_DIV2 ((uint32_t)0x00000000U)" +.LASF3575: + .string "MCONTROL_EXECUTE (1<<2)" +.LASF2180: + .string "RCU_APB2EN_PBEN BIT(3)" +.LASF801: + .string "CAN_TMDATA12(canx) REG32((canx) + 0x1ACU)" +.LASF669: + .string "ADC_CHANNEL_9 ((uint8_t)0x09U)" +.LASF1902: + .string "I2C_CTL0_POAP BIT(11)" +.LASF2561: + .string "SPI_DMA_TRANSMIT ((uint8_t)0x00U)" +.LASF174: + .string "__DBL_HAS_QUIET_NAN__ 1" +.LASF1744: + .string "GPIO_LOCK_LK13 BIT(13)" +.LASF396: + .string "__FAST8 " +.LASF2053: + .string "PMU_CS_WUF BIT(0)" +.LASF647: + .string "IOFFX_IOFF(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF1796: + .string "GPIO_EVENT_PORT_GPIOA ((uint8_t)0x00U)" +.LASF571: + .string "ADC_CTL1_CLB BIT(2)" +.LASF1708: + .string "GPIO_BOP_CR9 BIT(25)" +.LASF629: + .string "CTL1_ETSIC(regval) (BITS(12,14) & ((uint32_t)(regval) << 12))" +.LASF3829: + .string "MATCH_AMOMAXU_D 0xe000302f" +.LASF1759: + .string "AFIO_PCF0_TIMER3_REMAP BIT(12)" +.LASF3365: + .string "_RAND48_SEED_1 (0xabcd)" +.LASF2313: + .string "RCU_PLL_MUL27 (PLLMF_4 | CFG0_PLLMF(10))" +.LASF3558: + .string "DCSR_CAUSE_SWBP 1" +.LASF529: + .string "ADC1 (ADC_BASE + 0x400U)" +.LASF3919: + .string "MATCH_FLT_D 0xa2001053" +.LASF759: + .string "BKP_OCTL_COEN BIT(7)" +.LASF2487: + .string "SPI_STAT_RXORERR BIT(6)" +.LASF3653: + .string "RISCV_PGSIZE (1 << RISCV_PGSHIFT)" +.LASF1163: + .string "DAC1_R8DH_DAC1_DH BITS(0,7)" +.LASF2404: + .string "RCU_DEEPSLEEP_V_1_0 DSV_DSLPVS(2)" +.LASF2401: + .string "DSV_DSLPVS(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF2913: + .string "TIMER_TRI_OUT_SRC_O1CPRE CTL1_MMC(5)" +.LASF2758: + .string "TIMER_FLAG_CH1 TIMER_INTF_CH1IF" +.LASF3417: + .string "_BLKCNT_T_DECLARED " +.LASF1113: + .string "CAN_INT_ERRN CAN_INTEN_ERRNIE" +.LASF1064: + .string "CAN_BT_BS1_8TQ ((uint8_t)0x07U)" +.LASF310: + .string "__riscv_float_abi_soft 1" +.LASF2381: + .string "RCU_PLL1_MUL15 CFG1_PLL1MF(13)" +.LASF1232: + .string "DMA_CH0CNT(dmax) REG32((dmax) + 0x0CU)" +.LASF2952: + .string "USART_STAT_FERR BIT(1)" +.LASF4020: + .string "MASK_C_FSD 0xe003" +.LASF3569: + .string "MCONTROL_CHAIN (1<<11)" +.LASF2914: + .string "TIMER_TRI_OUT_SRC_O2CPRE CTL1_MMC(6)" +.LASF1592: + .string "OB_WP_30 ((uint32_t)0x40000000U)" +.LASF3268: + .string "__malloc_like __attribute__((__malloc__))" +.LASF2328: + .string "RCU_CKOUT0SRC_HXTAL CFG0_CKOUT0SEL(6)" +.LASF3926: + .string "MASK_FCVT_WU_S 0xfff0007f" +.LASF2029: + .string "DBG_CTL_TIMER1_HOLD BIT(11)" +.LASF239: + .string "__FLT128_MIN_10_EXP__ (-4931)" +.LASF1369: + .string "EXTI_PD REG32(EXTI + 0x14U)" +.LASF1758: + .string "AFIO_PCF0_TIMER2_REMAP BITS(10, 11)" +.LASF1960: + .string "I2C_TRANSMITTER ((uint32_t)0xFFFFFFFEU)" +.LASF4226: + .string "CSR_MHPMEVENT10 0x32a" +.LASF708: + .string "ADC_OVERSAMPLING_RATIO_MUL128 OVSCR_OVSR(6)" +.LASF1777: + .string "AFIO_EXTI11_SS BITS(12, 15)" +.LASF519: + .string "ADC_BASE (APB2_BUS_BASE + 0x00002400U)" +.LASF4171: + .string "CSR_MIE 0x304" +.LASF2434: + .string "RTC_ALRML_ALRM BITS(0,15)" +.LASF3701: + .string "MATCH_ANDI 0x7013" +.LASF545: + .string "ADC_IDATA0(adcx) REG32((adcx) + 0x3CU)" +.LASF4290: + .string "CSR_MHPMCOUNTER7H 0xb87" +.LASF2457: + .string "SPI_I2SCTL(spix) REG32((spix) + 0x1CU)" +.LASF1770: + .string "AFIO_EXTI4_SS BITS(0, 3)" +.LASF3684: + .string "MASK_AUIPC 0x7f" +.LASF3872: + .string "MASK_FMUL_S 0xfe00007f" +.LASF3944: + .string "MASK_FMV_X_D 0xfff0707f" +.LASF4199: + .string "CSR_MHPMCOUNTER14 0xb0e" +.LASF2268: + .string "RCU_APB1_CKAHB_DIV2 CFG0_APB1PSC(4)" +.LASF3285: + .string "__rangeof(type,start,end) (__offsetof(type, end) - __offsetof(type, start))" +.LASF3589: + .string "MCONTROL_MATCH_MASK_LOW 4" +.LASF905: + .string "CAN_TSTAT_MTF1 BIT(8)" +.LASF1785: + .string "GPIO_MODE_AIN ((uint8_t)0x00U)" +.LASF517: + .string "EXTI_BASE (APB2_BUS_BASE + 0x00000400U)" +.LASF2542: + .string "I2S_FRAMEFORMAT_DT16B_CH16B I2SCTL_DTLEN(0)" +.LASF4330: + .string "CAUSE_FAULT_FETCH 0x1" +.LASF1070: + .string "CAN_BT_BS1_14TQ ((uint8_t)0x0DU)" +.LASF1505: + .string "FMC_STAT_BUSY BIT(0)" +.LASF2417: + .string "RTC_ALRML REG32(RTC + 0x24U)" +.LASF3656: + .string "read_csr(reg) ({ unsigned long __tmp; asm volatile (\"csrr %0, \" #reg : \"=r\"(__tmp)); __tmp; })" +.LASF2663: + .string "TIMER_INTF_CH3IF BIT(4)" +.LASF1376: + .string "EXTI_INTEN_INTEN6 BIT(6)" +.LASF2385: + .string "RCU_PLL2_MUL8 CFG1_PLL2MF(6)" +.LASF3442: + .string "_SUSECONDS_T_DECLARED " +.LASF1622: + .string "GPIO_CTL0_CTL1 BITS(6, 7)" +.LASF2118: + .string "RCU_INT_LXTALSTBIF BIT(1)" +.LASF4070: + .string "MASK_C_FSDSP 0xe003" +.LASF4342: + .string "signed char" +.LASF163: + .string "__DBL_MIN_10_EXP__ (-307)" +.LASF333: + .string "HXTAL_VALUE ((uint32_t)8000000)" +.LASF610: + .string "ADC_DAUL_INSERTED_PARALLEL_REGULAL_FOLLOWUP_FAST CTL0_SYNCM(3)" +.LASF3523: + .string "MSTATUS_SPP 0x00000100" +.LASF236: + .string "__FLT128_MANT_DIG__ 113" +.LASF1847: + .string "GPIO_PIN_9 BIT(9)" +.LASF134: + .string "__UINT_FAST32_MAX__ 0xffffffffU" +.LASF2154: + .string "RCU_APB1RST_TIMER4RST BIT(3)" +.LASF627: + .string "ADC0_1_EXTTRIG_REGULAR_EXTI_11 CTL1_ETSRC(6)" +.LASF2089: + .string "RCU_DSV REG32(RCU + 0x34U)" +.LASF1000: + .string "CAN_BIT_POS1(val) ((uint32_t)(val) & 0x1FU)" +.LASF3978: + .string "MASK_FMSUB_S 0x600007f" +.LASF43: + .string "__INT32_TYPE__ long int" +.LASF2661: + .string "TIMER_INTF_CH1IF BIT(2)" +.LASF392: + .string "__INT8 \"hh\"" +.LASF2288: + .string "RCU_PLL_MUL2 CFG0_PLLMF(0)" +.LASF1761: + .string "AFIO_PCF0_PD01_REMAP BIT(15)" +.LASF1486: + .string "OB OB_BASE" +.LASF3266: + .string "__generic(expr,t,yes,no) _Generic(expr, t: yes, default: no)" +.LASF4353: + .string "uint8_t" +.LASF3187: + .string "__OBSOLETE_MATH_DEFAULT 1" +.LASF3694: + .string "MASK_XORI 0x707f" +.LASF3823: + .string "MATCH_AMOMIN_D 0x8000302f" +.LASF244: + .string "__FLT128_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F128" +.LASF4249: + .string "CSR_MARCHID 0xf12" +.LASF3034: + .string "CTL1_CLEN(regval) (BIT(8) & ((uint32_t)(regval) << 8))" +.LASF852: + .string "CAN_F9DATA1(canx) REG32((canx) + 0x28CU)" +.LASF3592: + .string "MIP_HSIP (1 << IRQ_H_SOFT)" +.LASF1142: + .string "DAC_CTL_DEN0 BIT(0)" +.LASF4312: + .string "CSR_MHPMCOUNTER29H 0xb9d" +.LASF2539: + .string "I2S_AUDIOSAMPLE_96K ((uint32_t)96000U)" +.LASF3333: + .string "_SYS_REENT_H_ " +.LASF433: + .string "INT8_MAX (__INT8_MAX__)" +.LASF3766: + .string "MASK_FENCE_I 0x707f" +.LASF1482: + .string "EXTI_PD_PD17 BIT(17)" +.LASF540: + .string "ADC_WDLT(adcx) REG32((adcx) + 0x28U)" +.LASF1065: + .string "CAN_BT_BS1_9TQ ((uint8_t)0x08U)" +.LASF1714: + .string "GPIO_BOP_CR15 BIT(31)" +.LASF121: + .string "__UINT32_C(c) c ## UL" +.LASF1612: + .string "AFIO_EC REG32(AFIO + 0x00U)" +.LASF2573: + .string "I2S_INT_FLAG_TXURERR ((uint8_t)0x05U)" +.LASF3659: + .string "set_csr(reg,bit) ({ unsigned long __tmp; if (__builtin_constant_p(bit) && (unsigned long)(bit) < 32) asm volatile (\"csrrs %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"i\"(bit)); else asm volatile (\"csrrs %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"r\"(bit)); __tmp; })" +.LASF1748: + .string "AFIO_EC_PIN BITS(0, 3)" +.LASF4370: + .string "intctrl" +.LASF77: + .string "__PTRDIFF_MAX__ 0x7fffffff" +.LASF2799: + .string "TIMER_DMACFG_DMATC_2TRANSFER DMACFG_DMATC(1)" +.LASF1687: + .string "GPIO_BOP_BOP4 BIT(4)" +.LASF3936: + .string "MASK_FCVT_W_D 0xfff0007f" +.LASF2051: + .string "PMU_CTL_LVDT BITS(5,7)" +.LASF3639: + .string "PTE_R 0x002" +.LASF3724: + .string "MASK_ADDIW 0x707f" +.LASF3798: + .string "MASK_AMOOR_W 0xf800707f" +.LASF2927: + .string "SMCFG_ETPSC(regval) (BITS(12, 13) & ((uint32_t)(regval) << 12U))" +.LASF1654: + .string "GPIO_ISTAT_ISTAT3 BIT(3)" +.LASF3297: + .string "__sym_default(sym,impl,verid) __asm__(\".symver \" #impl \", \" #sym \"@@\" #verid)" +.LASF1425: + .string "EXTI_RTEN_RTEN17 BIT(17)" +.LASF2482: + .string "SPI_STAT_TBE BIT(1)" +.LASF4144: + .string "CSR_HPMCOUNTER18 0xc12" +.LASF2983: + .string "USART_CTL1_CPL BIT(10)" +.LASF1437: + .string "EXTI_FTEN_FTEN10 BIT(10)" +.LASF388: + .string "int +2" +.LASF3496: + .string "L_ctermid 16" +.LASF2388: + .string "RCU_PLL2_MUL11 CFG1_PLL2MF(9)" +.LASF3632: + .string "DEFAULT_RSTVEC 0x00001000" +.LASF4285: + .string "CSR_MINSTRETH 0xb82" +.LASF2284: + .string "RCU_PLLSRC_IRC8M_DIV2 ((uint32_t)0x00000000U)" +.LASF2506: + .string "SPI_SLAVE ((uint32_t)0x00000000U)" +.LASF3527: + .string "MSTATUS_MPRV 0x00020000" +.LASF3588: + .string "MCONTROL_MATCH_LT 3" +.LASF2603: + .string "TIMER_CHCTL0(timerx) REG32((timerx) + 0x18U)" +.LASF2411: + .string "RTC_PSCL REG32(RTC + 0x0CU)" +.LASF220: + .string "__FLT32_HAS_QUIET_NAN__ 1" +.LASF1083: + .string "CAN_MAILBOX2 ((uint8_t)0x02U)" +.LASF4085: + .string "MATCH_CUSTOM0_RD_RS1_RS2 0x700b" +.LASF8: + .string "__VERSION__ \"10.2.0\"" +.LASF185: + .string "__LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L" +.LASF48: + .string "__UINT64_TYPE__ long long unsigned int" +.LASF1061: + .string "CAN_BT_BS1_5TQ ((uint8_t)0x04U)" +.LASF874: + .string "CAN_TMDATA1(canx,bank) REG32((canx) + 0x18CU + ((bank) * 0x10U))" +.LASF460: + .string "INT_FAST16_MAX (__INT_FAST16_MAX__)" +.LASF996: + .string "CAN_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF3896: + .string "MASK_FSGNJ_D 0xfe00707f" +.LASF4363: + .string "eclic_set_level_trig" +.LASF1536: + .string "FMC_CTL_REG_OFFSET 0x10U" +.LASF2828: + .string "TIMER_COUNTER_CENTER_BOTH CTL0_CAM(3)" +.LASF1778: + .string "AFIO_EXTI12_SS BITS(0, 3)" +.LASF1161: + .string "DAC1_R12DH_DAC1_DH BITS(0,11)" +.LASF1495: + .string "FMC_PID REG32((FMC) + 0x100U)" +.LASF3953: + .string "MATCH_FCVT_S_LU 0xd0300053" +.LASF3167: + .string "ECLIC_GROUP_LEVEL3_PRIO1 3" +.LASF1435: + .string "EXTI_FTEN_FTEN8 BIT(8)" +.LASF3643: + .string "PTE_G 0x020" +.LASF514: + .string "PMU_BASE (APB1_BUS_BASE + 0x00007000U)" +.LASF1375: + .string "EXTI_INTEN_INTEN5 BIT(5)" +.LASF1840: + .string "GPIO_PIN_2 BIT(2)" +.LASF2397: + .string "RCU_I2S1SRC_CKSYS ((uint32_t)0x00000000U)" +.LASF982: + .string "CAN_RFIFOMDATA0_DB3 BITS(24,31)" +.LASF2291: + .string "RCU_PLL_MUL5 CFG0_PLLMF(3)" +.LASF453: + .string "INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1)" +.LASF286: + .string "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1" +.LASF1812: + .string "GPIO_EVENT_PIN_6 ((uint8_t)0x06U)" +.LASF755: + .string "BKP_TPCTL REG16((BKP) + 0x30U)" +.LASF2007: + .string "FWDGT_PSC_DIV64 ((uint8_t)PSC_PSC(4))" +.LASF3047: + .string "USART_DENT_ENABLE CLT2_DENT(1)" +.LASF4153: + .string "CSR_HPMCOUNTER27 0xc1b" +.LASF442: + .string "INT_LEAST16_MAX (__INT_LEAST16_MAX__)" +.LASF2512: + .string "SPI_TRANSMODE_BDTRANSMIT (SPI_CTL0_BDEN | SPI_CTL0_BDOEN)" +.LASF309: + .string "__riscv_xlen 32" +.LASF3551: + .string "DCSR_STOPTIME (1<<9)" +.LASF2797: + .string "DMACFG_DMATC(regval) (BITS(8, 12) & ((uint32_t)(regval) << 8U))" +.LASF281: + .string "__REGISTER_PREFIX__ " +.LASF3413: + .string "_GLOBAL_REENT _global_impure_ptr" +.LASF1633: + .string "GPIO_CTL0_MD7 BITS(28, 29)" +.LASF20: + .string "__SIZEOF_FLOAT__ 4" +.LASF2949: + .string "USART_CTL2(usartx) REG32((usartx) + (0x00000014U))" +.LASF3862: + .string "MASK_CSRRWI 0x707f" +.LASF645: + .string "ADC_SAMPLETIME_71POINT5 SAMPTX_SPT(6)" +.LASF836: + .string "CAN_F21DATA0(canx) REG32((canx) + 0x2E8U)" +.LASF1428: + .string "EXTI_FTEN_FTEN1 BIT(1)" +.LASF2896: + .string "TIMER_IC_PSC_DIV4 ((uint16_t)0x0008U)" +.LASF3689: + .string "MATCH_SLTI 0x2013" +.LASF985: + .string "CAN_RFIFOMDATA1_DB6 BITS(16,23)" +.LASF1268: + .string "DMA_CHXCTL_FTFIE BIT(1)" +.LASF1245: + .string "DMA_CH3PADDR(dmax) REG32((dmax) + 0x4CU)" +.LASF1410: + .string "EXTI_RTEN_RTEN2 BIT(2)" +.LASF1256: + .string "DMA_CH6CNT(dmax) REG32((dmax) + 0x84U)" +.LASF2959: + .string "USART_STAT_LBDF BIT(8)" +.LASF585: + .string "ADC_WDLT_WDLT BITS(0,11)" +.LASF3300: + .string "__RCSID_SOURCE(s) struct __hack" +.LASF854: + .string "CAN_F11DATA1(canx) REG32((canx) + 0x29CU)" +.LASF744: + .string "BKP_DATA32 REG16((BKP) + 0x98U)" +.LASF1830: + .string "GPIO_PIN_SOURCE_8 ((uint8_t)0x08U)" +.LASF4394: + .string "eclic_set_intctrl" +.LASF3668: + .string "MASK_BNE 0x707f" +.LASF1054: + .string "CAN_BT_SJW_2TQ ((uint8_t)0x01U)" +.LASF376: + .string "unsigned" +.LASF476: + .string "WCHAR_MIN (__WCHAR_MIN__)" +.LASF1919: + .string "I2C_STAT0_SBSEND BIT(0)" +.LASF523: + .string "CRC_BASE (AHB1_BUS_BASE + 0x0000B000U)" +.LASF3444: + .string "__need_inttypes" +.LASF2564: + .string "SPI_CRC_RX ((uint8_t)0x01U)" +.LASF2751: + .string "TIMER_INT_FLAG_CH2 TIMER_INT_CH2" +.LASF2608: + .string "TIMER_CAR(timerx) REG32((timerx) + 0x2CU)" +.LASF3039: + .string "USART_CPH_2CK CTL1_CPH(1)" +.LASF2351: + .string "RCU_PREDV0_DIV12 CFG1_PREDV0(11)" +.LASF4093: + .string "MATCH_CUSTOM1_RD 0x402b" +.LASF1526: + .string "FMC_PID_PID BITS(0,31)" +.LASF4062: + .string "MASK_C_LWSP 0xe003" +.LASF140: + .string "__GCC_IEC_559_COMPLEX 0" +.LASF153: + .string "__FLT_NORM_MAX__ 3.40282346638528859811704183484516925e+38F" +.LASF219: + .string "__FLT32_HAS_INFINITY__ 1" +.LASF2294: + .string "RCU_PLL_MUL8 CFG0_PLLMF(6)" +.LASF1484: + .string "GD32VF103_FMC_H " +.LASF4346: + .string "long int" +.LASF3727: + .string "MATCH_SRLIW 0x501b" +.LASF2688: + .string "TIMER_CHCTL0_CH1COMCEN BIT(15)" +.LASF4250: + .string "CSR_MIMPID 0xf13" +.LASF2938: + .string "GD32VF103_USART_H " +.LASF24: + .string "__CHAR_BIT__ 8" +.LASF2900: + .string "TIMER_SMCFG_TRGSEL_ITI1 SMCFG_TRGSEL(1)" +.LASF3576: + .string "MCONTROL_STORE (1<<1)" +.LASF3678: + .string "MASK_JALR 0x707f" +.LASF3283: + .string "__hidden __attribute__((__visibility__(\"hidden\")))" +.LASF2886: + .string "TIMER_UPDATECTL_CCU ((uint32_t)0x00000000U)" +.LASF3290: + .string "__strfmonlike(fmtarg,firstvararg) __attribute__((__format__ (__strfmon__, fmtarg, firstvararg)))" +.LASF3042: + .string "USART_CPL_HIGH CTL1_CPL(1)" +.LASF716: + .string "BKP_DATA4 REG16((BKP) + 0x14U)" +.LASF203: + .string "__FLT16_HAS_DENORM__ 1" +.LASF1191: + .string "DAC_WAVE_BIT_WIDTH_6 DWBW(5)" +.LASF2425: + .string "RTC_CTL_CMF BIT(4)" +.LASF2814: + .string "TIMER_DMACFG_DMATC_17TRANSFER DMACFG_DMATC(16)" +.LASF3870: + .string "MASK_FSUB_S 0xfe00007f" +.LASF4198: + .string "CSR_MHPMCOUNTER13 0xb0d" +.LASF3302: + .string "__COPYRIGHT(s) struct __hack" +.LASF479: + .string "WINT_MIN (__WINT_MIN__)" +.LASF732: + .string "BKP_DATA20 REG16((BKP) + 0x68U)" +.LASF2047: + .string "PMU_CTL_STBMOD BIT(1)" +.LASF1825: + .string "GPIO_PIN_SOURCE_3 ((uint8_t)0x03U)" +.LASF1930: + .string "I2C_STAT0_PECERR BIT(12)" +.LASF335: + .string "HXTAL_STARTUP_TIMEOUT ((uint16_t)0xFFFF)" +.LASF254: + .string "__FLT32X_MIN_10_EXP__ (-307)" +.LASF1929: + .string "I2C_STAT0_OUERR BIT(11)" +.LASF1402: + .string "EXTI_EVEN_EVEN13 BIT(13)" +.LASF1431: + .string "EXTI_FTEN_FTEN4 BIT(4)" +.LASF637: + .string "ADC0_1_EXTTRIG_INSERTED_NONE CTL1_ETSIC(7)" +.LASF1534: + .string "FMC_REG_OFFSET_GET(flag) ((uint32_t)(flag) >> 12)" +.LASF3453: + .string "__SRW 0x0010" +.LASF542: + .string "ADC_RSQ1(adcx) REG32((adcx) + 0x30U)" +.LASF3368: + .string "_RAND48_MULT_1 (0xdeec)" +.LASF1793: + .string "GPIO_OSPEED_10MHZ ((uint8_t)0x01U)" +.LASF3993: + .string "MATCH_C_ADDI16SP 0x6101" +.LASF743: + .string "BKP_DATA31 REG16((BKP) + 0x94U)" +.LASF4033: + .string "MATCH_C_SRLI 0x8001" +.LASF3494: + .string "getchar_unlocked() _getchar_unlocked()" +.LASF92: + .string "__INTMAX_WIDTH__ 64" +.LASF2490: + .string "SPI_DATA_DATA BITS(0,15)" +.LASF2171: + .string "RCU_AHBEN_DMA0EN BIT(0)" +.LASF287: + .string "__GCC_ATOMIC_BOOL_LOCK_FREE 1" +.LASF635: + .string "ADC0_1_EXTTRIG_INSERTED_T3_TRGO CTL1_ETSIC(5)" +.LASF3361: + .string "_ATEXIT_INIT {_NULL, 0, {_NULL}, {{_NULL}, {_NULL}, 0, 0}}" +.LASF3425: + .string "_FSBLKCNT_T_DECLARED " +.LASF3456: + .string "__SMBF 0x0080" +.LASF184: + .string "__LDBL_NORM_MAX__ 1.18973149535723176508575932662800702e+4932L" +.LASF1888: + .string "I2C_STAT1(i2cx) REG32((i2cx) + 0x18U)" +.LASF338: + .string "IRC40K_VALUE ((uint32_t)40000)" +.LASF3672: + .string "MASK_BGE 0x707f" +.LASF2194: + .string "RCU_APB1EN_TIMER6EN BIT(5)" +.LASF3585: + .string "MCONTROL_MATCH_EQUAL 0" +.LASF670: + .string "ADC_CHANNEL_10 ((uint8_t)0x0AU)" +.LASF1021: + .string "TMDATA1_DB5(regval) (BITS(8,15) & ((uint32_t)(regval) << 8))" +.LASF2302: + .string "RCU_PLL_MUL16 CFG0_PLLMF(14)" +.LASF3112: + .string "_WCHAR_T_ " +.LASF2272: + .string "CFG0_APB2PSC(regval) (BITS(11,13) & ((uint32_t)(regval) << 11))" +.LASF1688: + .string "GPIO_BOP_BOP5 BIT(5)" +.LASF3082: + .string "_PTRDIFF_T_ " +.LASF2084: + .string "RCU_APB1EN REG32(RCU + 0x1CU)" +.LASF483: + .string "UINT16_C(x) __UINT16_C(x)" +.LASF1561: + .string "OB_WP3_WP3 ((uint32_t)0xFF000000U)" +.LASF3922: + .string "MASK_FEQ_D 0xfe00707f" +.LASF4069: + .string "MATCH_C_FSDSP 0xa002" +.LASF650: + .string "RSQ0_RL(regval) (BITS(20,23) & ((uint32_t)(regval) << 20))" +.LASF3901: + .string "MATCH_FMIN_D 0x2a000053" +.LASF2647: + .string "TIMER_DMAINTEN_CH2IE BIT(3)" +.LASF3771: + .string "MATCH_MULHSU 0x2002033" +.LASF3373: + .string "_REENT_SIGNAL_SIZE 24" +.LASF882: + .string "CAN_CTL_SLPWMOD BIT(1)" +.LASF847: + .string "CAN_F4DATA1(canx) REG32((canx) + 0x264U)" +.LASF1883: + .string "I2C_CTL1(i2cx) REG32((i2cx) + 0x04U)" +.LASF1522: + .string "FMC_OBSTAT_USER BITS(2,9)" +.LASF3657: + .string "write_csr(reg,val) ({ if (__builtin_constant_p(val) && (unsigned long)(val) < 32) asm volatile (\"csrw \" #reg \", %0\" :: \"i\"(val)); else asm volatile (\"csrw \" #reg \", %0\" :: \"r\"(val)); })" +.LASF319: + .string "__ELF__ 1" +.LASF715: + .string "BKP_DATA3 REG16((BKP) + 0x10U)" +.LASF238: + .string "__FLT128_MIN_EXP__ (-16381)" +.LASF130: + .string "__INT_FAST64_MAX__ 0x7fffffffffffffffLL" +.LASF2664: + .string "TIMER_INTF_CMTIF BIT(5)" +.LASF2459: + .string "SPI_CTL0_CKPH BIT(0)" +.LASF4030: + .string "MASK_C_LI 0xe003" +.LASF4337: + .string "CAUSE_USER_ECALL 0x8" +.LASF3972: + .string "MASK_FSW 0x707f" +.LASF2151: + .string "RCU_APB1RST_TIMER1RST BIT(0)" +.LASF2122: + .string "RCU_INT_PLL1STBIF BIT(5)" +.LASF2625: + .string "TIMER_CTL1_CCSE BIT(0)" +.LASF3756: + .string "MASK_SB 0x707f" +.LASF2680: + .string "TIMER_CHCTL0_CH0COMFEN BIT(2)" +.LASF3725: + .string "MATCH_SLLIW 0x101b" +.LASF2862: + .string "TIMER_CCXN_ENABLE ((uint16_t)0x0004U)" +.LASF2713: + .string "TIMER_CHCTL2_CH1NEN BIT(6)" +.LASF2793: + .string "TIMER_DMACFG_DMATA_CH2CV DMACFG_DMATA(15)" +.LASF3860: + .string "MASK_CSRRC 0x707f" +.LASF742: + .string "BKP_DATA30 REG16((BKP) + 0x90U)" +.LASF816: + .string "CAN_F1DATA0(canx) REG32((canx) + 0x248U)" +.LASF3312: + .string "__datatype_type_tag(kind,type) " +.LASF3986: + .string "MASK_FMSUB_D 0x600007f" +.LASF2086: + .string "RCU_RSTSCK REG32(RCU + 0x24U)" +.LASF970: + .string "CAN_TMDATA1_DB6 BITS(16,23)" +.LASF1228: + .string "DMA1 (DMA_BASE + 0x0400U)" +.LASF3081: + .string "__PTRDIFF_T " +.LASF2453: + .string "SPI_DATA(spix) REG32((spix) + 0x0CU)" +.LASF2643: + .string "TIMER_SMCFG_ETP BIT(15)" +.LASF2951: + .string "USART_STAT_PERR BIT(0)" +.LASF1037: + .string "GET_ERR_TECNT(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF2052: + .string "PMU_CTL_BKPWEN BIT(8)" +.LASF2239: + .string "AHBRST_REG_OFFSET 0x28U" +.LASF432: + .string "INT8_MIN (-__INT8_MAX__ - 1)" +.LASF2628: + .string "TIMER_CTL1_MMC BITS(4,6)" +.LASF3450: + .string "__SNBF 0x0002" +.LASF2442: + .string "RTC_FLAG_ALARM RTC_CTL_ALRMIF" +.LASF3518: + .string "MSTATUS_MIE 0x00000008" +.LASF1199: + .string "DAC_LFSR_BITS1_0 DAC_WAVE_BIT_WIDTH_2" +.LASF272: + .string "__FLT64X_DECIMAL_DIG__ 36" +.LASF3132: + .string "TIMER_MTIMECMP_size 0x8" +.LASF3994: + .string "MASK_C_ADDI16SP 0xef83" +.LASF1271: + .string "DMA_CHXCTL_DIR BIT(4)" +.LASF1456: + .string "EXTI_SWIEV_SWIEV10 BIT(10)" +.LASF866: + .string "CAN_F23DATA1(canx) REG32((canx) + 0x2FCU)" +.LASF586: + .string "ADC_RSQX_RSQN BITS(0,4)" +.LASF132: + .string "__UINT_FAST8_MAX__ 0xffffffffU" +.LASF2324: + .string "CFG0_CKOUT0SEL(regval) (BITS(24,27) & ((uint32_t)(regval) << 24))" +.LASF462: + .string "INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1)" +.LASF1980: + .string "I2C_PECTRANS_DISABLE ((uint32_t)0x00000000U)" +.LASF2249: + .string "RCU_CKSYSSRC_IRC8M CFG0_SCS(0)" +.LASF1359: + .string "EXMC_BANK0_NORSRAM_REGION0 ((uint32_t)0x00000000U)" +.LASF1001: + .string "STAT_REG_OFFSET ((uint8_t)0x04U)" +.LASF3061: + .string "WWDGT_CFG REG32((WWDGT) + 0x00000004U)" +.LASF3090: + .string "_SIZE_T " +.LASF1285: + .string "DMA_CHPADDR(dma,channel) REG32(((dma) + 0x10U) + 0x14U * (uint32_t)(channel))" +.LASF2306: + .string "RCU_PLL_MUL20 (PLLMF_4 | CFG0_PLLMF(3))" +.LASF3389: + .string "_REENT_RAND48_ADD(ptr) ((ptr)->_new._reent._r48._add)" +.LASF2112: + .string "RCU_CFG0_PLLMF BITS(18,21)" +.LASF2677: + .string "TIMER_SWEVG_TRGG BIT(6)" +.LASF574: + .string "ADC_CTL1_DAL BIT(11)" +.LASF2498: + .string "SPI_I2SCTL_PCMSMOD BIT(7)" +.LASF1151: + .string "DAC_CTL_DTEN1 BIT(18)" +.LASF2935: + .string "TIMER_HALLINTERFACE_DISABLE ((uint32_t)0x00000000U)" +.LASF3234: + .string "__GNUCLIKE_BUILTIN_VAALIST 1" +.LASF3544: + .string "DCSR_NDRESET (1<<29)" +.LASF672: + .string "ADC_CHANNEL_12 ((uint8_t)0x0CU)" +.LASF2380: + .string "RCU_PLL1_MUL14 CFG1_PLL1MF(12)" +.LASF170: + .string "__DBL_EPSILON__ ((double)2.22044604925031308084726333618164062e-16L)" +.LASF345: + .string "_NEWLIB_VERSION \"4.1.0\"" +.LASF3767: + .string "MATCH_MUL 0x2000033" +.LASF1948: + .string "I2C_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF2721: + .string "TIMER_CNT_CNT BITS(0,15)" +.LASF881: + .string "CAN_CTL_IWMOD BIT(0)" +.LASF1786: + .string "GPIO_MODE_IN_FLOATING ((uint8_t)0x04U)" +.LASF1938: + .string "I2C_STAT1_HSTSMB BIT(6)" +.LASF1727: + .string "GPIO_BC_CR12 BIT(12)" +.LASF3043: + .string "CLT2_DENR(regval) (BIT(6) & ((uint32_t)(regval) << 6))" +.LASF1474: + .string "EXTI_PD_PD9 BIT(9)" +.LASF4318: + .string "CSR_MNVEC 0x7C3" +.LASF706: + .string "ADC_OVERSAMPLING_RATIO_MUL32 OVSCR_OVSR(4)" +.LASF409: + .string "_UINT16_T_DECLARED " +.LASF3669: + .string "MATCH_BLT 0x4063" +.LASF2133: + .string "RCU_INT_LXTALSTBIC BIT(17)" +.LASF886: + .string "CAN_CTL_AWU BIT(5)" +.LASF4218: + .string "CSR_MSCOUNTEREN 0x321" +.LASF3697: + .string "MATCH_SRAI 0x40005013" +.LASF3963: + .string "MATCH_FCVT_D_LU 0xd2300053" +.LASF3904: + .string "MASK_FMAX_D 0xfe00707f" +.LASF2753: + .string "TIMER_INT_FLAG_CMT TIMER_INT_CMT" +.LASF1673: + .string "GPIO_OCTL_OCTL6 BIT(6)" +.LASF2636: + .string "TIMER_CTL1_ISO3 BIT(14)" +.LASF3190: + .string "_POINTER_INT long" +.LASF3288: + .string "__scanflike(fmtarg,firstvararg) __attribute__((__format__ (__scanf__, fmtarg, firstvararg)))" +.LASF326: + .string "RT_USING_NEWLIB 1" +.LASF2687: + .string "TIMER_CHCTL0_CH1COMCTL BITS(12,14)" +.LASF3271: + .string "__noinline __attribute__ ((__noinline__))" +.LASF2681: + .string "TIMER_CHCTL0_CH0COMSEN BIT(3)" +.LASF3472: + .string "FILENAME_MAX 1024" +.LASF901: + .string "CAN_TSTAT_MTFNERR0 BIT(1)" +.LASF2150: + .string "RCU_APB2RST_USART0RST BIT(14)" +.LASF456: + .string "INT_FAST8_MIN (-__INT_FAST8_MAX__ - 1)" +.LASF3730: + .string "MASK_SRAIW 0xfe00707f" +.LASF3170: + .string "_ANSIDECL_H_ " +.LASF694: + .string "ADC_OVERSAMPLING_SHIFT_2B OVSCR_OVSS(2)" +.LASF3603: + .string "MIE_STIE MIP_STIP" +.LASF1606: + .string "GPIO_CTL1(gpiox) REG32((gpiox) + 0x04U)" +.LASF3274: + .string "__fastcall __attribute__((__fastcall__))" +.LASF943: + .string "CAN_INTEN_SLPWIE BIT(17)" +.LASF4305: + .string "CSR_MHPMCOUNTER22H 0xb96" +.LASF1235: + .string "DMA_CH1CTL(dmax) REG32((dmax) + 0x1CU)" +.LASF1817: + .string "GPIO_EVENT_PIN_11 ((uint8_t)0x0BU)" +.LASF604: + .string "ADC_SCAN_MODE ADC_CTL0_SM" +.LASF131: + .string "__INT_FAST64_WIDTH__ 64" +.LASF2234: + .string "RCU_REG_VAL(periph) (REG32(RCU + ((uint32_t)(periph) >> 6)))" +.LASF2942: + .string "UART4 (USART_BASE+(0x00000C00U))" +.LASF3036: + .string "USART_CLEN_EN CTL1_CLEN(1)" +.LASF3267: + .string "__min_size(x) static (x)" +.LASF343: + .string "_SYS_FEATURES_H " +.LASF839: + .string "CAN_F24DATA0(canx) REG32((canx) + 0x300U)" +.LASF1706: + .string "GPIO_BOP_CR7 BIT(23)" +.LASF3949: + .string "MATCH_FCVT_S_WU 0xd0100053" +.LASF1078: + .string "CAN_BT_BS2_6TQ ((uint8_t)0x05U)" +.LASF1535: + .string "FMC_STAT_REG_OFFSET 0x0CU" +.LASF599: + .string "ADC_FLAG_EOC ADC_STAT_EOC" +.LASF654: + .string "ADC_REGULAR_INSERTED_CHANNEL ((uint8_t)0x03U)" +.LASF2737: + .string "TIMER_DMACFG_DMATA BITS(0,4)" +.LASF3666: + .string "MASK_BEQ 0x707f" +.LASF3837: + .string "MATCH_ECALL 0x73" +.LASF2851: + .string "TIMER_CCHP_PROT_0 CCHP_PROT(1)" +.LASF448: + .string "INT_LEAST32_MAX (__INT_LEAST32_MAX__)" +.LASF2899: + .string "TIMER_SMCFG_TRGSEL_ITI0 SMCFG_TRGSEL(0)" +.LASF3117: + .string "___int_wchar_t_h " +.LASF1875: + .string "GPIO_SWJ_DISABLE_REMAP ((uint32_t)0x00300200U)" +.LASF3383: + .string "_REENT_CHECK_MISC(ptr) " +.LASF3826: + .string "MASK_AMOMAX_D 0xf800707f" +.LASF2223: + .string "RCU_RSTSCK_LPRSTF BIT(31)" +.LASF3654: + .string "read_fpu(reg) ({ unsigned long __tmp; asm volatile (\"fmv.x.w %0, \" #reg : \"=r\"(__tmp)); __tmp; })" +.LASF4397: + .string "eclic_disable_interrupt" +.LASF3780: + .string "MASK_REM 0xfe00707f" +.LASF1568: + .string "OB_WP_6 ((uint32_t)0x00000040U)" +.LASF1851: + .string "GPIO_PIN_13 BIT(13)" +.LASF3136: + .string "TIMER_REG(offset) _REG32(TIMER_CTRL_ADDR, offset)" +.LASF711: + .string "BKP BKP_BASE" +.LASF1231: + .string "DMA_CH0CTL(dmax) REG32((dmax) + 0x08U)" +.LASF4411: + .string "delta_mcycle" +.LASF1165: + .string "DACC_R12DH_DAC1_DH BITS(16,27)" +.LASF1176: + .string "DAC_TRIGGER_T4_TRGO CTL_DTSEL(3)" +.LASF1057: + .string "CAN_BT_BS1_1TQ ((uint8_t)0x00U)" +.LASF2702: + .string "TIMER_CHCTL1_CH3COMCEN BIT(15)" +.LASF4063: + .string "MATCH_C_FLWSP 0x6002" +.LASF2527: + .string "SPI_PSC_16 CTL0_PSC(3)" +.LASF3159: + .string "ECLIC_CFG_NLBITS_LSB (1u)" +.LASF2422: + .string "RTC_CTL_ALRMIF BIT(1)" +.LASF2451: + .string "SPI_CTL1(spix) REG32((spix) + 0x04U)" +.LASF3578: + .string "MCONTROL_TYPE_NONE 0" +.LASF1201: + .string "DAC_LFSR_BITS3_0 DAC_WAVE_BIT_WIDTH_4" +.LASF3415: + .string "__BIT_TYPES_DEFINED__ 1" +.LASF126: + .string "__INT_FAST16_MAX__ 0x7fffffff" +.LASF602: + .string "ADC_FLAG_STRC ADC_STAT_STRC" +.LASF2784: + .string "TIMER_DMACFG_DMATA_CHCTL0 DMACFG_DMATA(6)" +.LASF1442: + .string "EXTI_FTEN_FTEN15 BIT(15)" +.LASF2071: + .string "PMU_FLAG_RESET_WAKEUP ((uint8_t)0x00U)" +.LASF4147: + .string "CSR_HPMCOUNTER21 0xc15" +.LASF380: + .string "__int20__" +.LASF262: + .string "__FLT32X_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F32x" +.LASF1467: + .string "EXTI_PD_PD2 BIT(2)" +.LASF1531: + .string "FMC_REG_VALS(offset) (REG32(FMC + ((uint32_t)(offset) >> 12)))" +.LASF488: + .string "INTMAX_C(x) __INTMAX_C(x)" +.LASF168: + .string "__DBL_NORM_MAX__ ((double)1.79769313486231570814527423731704357e+308L)" +.LASF3143: + .string "_BITULL(x) (_AC(1,ULL) << (x))" +.LASF1023: + .string "TMDATA1_DB7(regval) (BITS(24,31) & ((uint32_t)(regval) << 24))" +.LASF3069: + .string "CFG_PSC(regval) (BITS(7,8) & ((uint32_t)(regval) << 7))" +.LASF199: + .string "__FLT16_NORM_MAX__ 6.55040000000000000000000000000000000e+4F16" +.LASF2042: + .string "GD32VF103_PMU_H " +.LASF846: + .string "CAN_F3DATA1(canx) REG32((canx) + 0x25CU)" +.LASF3021: + .string "USART_WM_IDLE CTL0_WM(0)" +.LASF501: + .string "APB1_BUS_BASE ((uint32_t)0x40000000U)" +.LASF553: + .string "ADC_STAT_EOIC BIT(2)" +.LASF1876: + .string "GPIO_SPI2_REMAP ((uint32_t)0x00201100U)" +.LASF4134: + .string "CSR_HPMCOUNTER8 0xc08" +.LASF4089: + .string "MATCH_CUSTOM1_RS1 0x202b" +.LASF1994: + .string "FWDGT_PSC REG32((FWDGT) + 0x00000004U)" +.LASF3363: + .string "_REENT_SMALL_CHECK_INIT(ptr) " +.LASF2576: + .string "SPI_FLAG_TBE SPI_STAT_TBE" +.LASF1052: + .string "CAN_SILENT_LOOPBACK_MODE ((uint8_t)0x03U)" +.LASF2612: + .string "TIMER_CH2CV(timerx) REG32((timerx) + 0x3CU)" +.LASF3236: + .string "__compiler_membar() __asm __volatile(\" \" : : : \"memory\")" +.LASF3841: + .string "MATCH_URET 0x200073" +.LASF1788: + .string "GPIO_MODE_IPU ((uint8_t)0x48U)" +.LASF3915: + .string "MATCH_FEQ_S 0xa0002053" +.LASF3753: + .string "MATCH_LWU 0x6003" +.LASF1086: + .string "CAN_FF_EXTENDED ((uint32_t)0x00000004U)" +.LASF3124: + .string "NULL ((void *)0)" +.LASF443: + .string "UINT_LEAST16_MAX (__UINT_LEAST16_MAX__)" +.LASF1941: + .string "I2C_CKCFG_CLKC BITS(0,11)" +.LASF1475: + .string "EXTI_PD_PD10 BIT(10)" +.LASF1110: + .string "CAN_INT_WERR CAN_INTEN_WERRIE" +.LASF2091: + .string "RCU_CTL_IRC8MSTB BIT(1)" +.LASF1595: + .string "FMC_TIMEOUT_COUNT ((uint32_t)0x000F0000U)" +.LASF2471: + .string "SPI_CTL0_BDOEN BIT(14)" +.LASF3652: + .string "RISCV_PGSHIFT 12" +.LASF3849: + .string "MATCH_DRET 0x7b200073" +.LASF2640: + .string "TIMER_SMCFG_ETFC BITS(8,11)" +.LASF3803: + .string "MATCH_AMOMAX_W 0xa000202f" +.LASF1316: + .string "DMA_MEMORY_WIDTH_32BIT CHCTL_MWIDTH(2U)" +.LASF696: + .string "ADC_OVERSAMPLING_SHIFT_4B OVSCR_OVSS(4)" +.LASF1198: + .string "DAC_LFSR_BIT0 DAC_WAVE_BIT_WIDTH_1" +.LASF3279: + .string "__predict_true(exp) __builtin_expect((exp), 1)" +.LASF613: + .string "ADC_DAUL_REGULAL_PARALLEL CTL0_SYNCM(6)" +.LASF4415: + .string "get_timer_value" +.LASF1453: + .string "EXTI_SWIEV_SWIEV7 BIT(7)" +.LASF3786: + .string "MASK_DIVW 0xfe00707f" +.LASF3479: + .string "stdout (_REENT->_stdout)" +.LASF3879: + .string "MATCH_FSGNJX_S 0x20002053" +.LASF927: + .string "CAN_RFIFO1_RFF1 BIT(3)" +.LASF1734: + .string "GPIO_LOCK_LK3 BIT(3)" +.LASF3754: + .string "MASK_LWU 0x707f" +.LASF791: + .string "CAN_TMP0(canx) REG32((canx) + 0x184U)" +.LASF3507: + .string "MB_CUR_MAX __locale_mb_cur_max()" +.LASF1649: + .string "GPIO_CTL1_MD15 BITS(28, 29)" +.LASF1104: + .string "CAN_INT_RFNE0 CAN_INTEN_RFNEIE0" +.LASF1304: + .string "DMA_MEMORY_TO_PERIPHERAL ((uint8_t)0x01U)" +.LASF4329: + .string "CAUSE_MISALIGNED_FETCH 0x0" +.LASF1264: + .string "DMA_INTC_FTFIFC BIT(1)" +.LASF2652: + .string "TIMER_DMAINTEN_UPDEN BIT(8)" +.LASF1150: + .string "DAC_CTL_DBOFF1 BIT(17)" +.LASF1418: + .string "EXTI_RTEN_RTEN10 BIT(10)" +.LASF3321: + .string "__asserts_shared(...) __lock_annotate(assert_shared_lock(__VA_ARGS__))" +.LASF504: + .string "AHB3_BUS_BASE ((uint32_t)0x60000000U)" +.LASF3102: + .string "_GCC_SIZE_T " +.LASF1678: + .string "GPIO_OCTL_OCTL11 BIT(11)" +.LASF3277: + .string "__unreachable() __builtin_unreachable()" +.LASF2945: + .string "USART_DATA(usartx) REG32((usartx) + (0x00000004U))" +.LASF4245: + .string "CSR_MHPMEVENT29 0x33d" +.LASF3362: + .string "_REENT_INIT_ATEXIT _NULL, _ATEXIT_INIT," +.LASF1570: + .string "OB_WP_8 ((uint32_t)0x00000100U)" +.LASF777: + .string "BKP_FLAG_TAMPER BKP_TPCS_TEF" +.LASF374: + .string "__STDINT_EXP(x) __ ##x ##__" +.LASF776: + .string "TAMPER_PIN_ACTIVE_LOW ((uint16_t)0x0002U)" +.LASF1233: + .string "DMA_CH0PADDR(dmax) REG32((dmax) + 0x10U)" +.LASF3768: + .string "MASK_MUL 0xfe00707f" +.LASF3122: + .string "__need_wchar_t" +.LASF1765: + .string "AFIO_PCF0_TIMER1_ITI1_REMAP BIT(29)" +.LASF973: + .string "CAN_RFIFOMI_FF BIT(2)" +.LASF3436: + .string "_NLINK_T_DECLARED " +.LASF3201: + .string "_ELIDABLE_INLINE static __inline__" +.LASF139: + .string "__GCC_IEC_559 0" +.LASF1850: + .string "GPIO_PIN_12 BIT(12)" +.LASF3844: + .string "MASK_SRET 0xffffffff" +.LASF3664: + .string "RISCV_ENCODING_H " +.LASF320: + .string "USE_PLIC 1" +.LASF3889: + .string "MATCH_FSUB_D 0xa000053" +.LASF206: + .string "__FLT32_MANT_DIG__ 24" +.LASF932: + .string "CAN_INTEN_RFFIE0 BIT(2)" +.LASF3842: + .string "MASK_URET 0xffffffff" +.LASF1869: + .string "GPIO_CAN0_PARTIAL_REMAP ((uint32_t)0x001D4000U)" +.LASF1504: + .string "FMC_OBKEY_OBKEY BITS(0,31)" +.LASF321: + .string "USE_M_TIME 1" +.LASF3595: + .string "MIP_HTIP (1 << IRQ_H_TIMER)" +.LASF1220: + .string "DAC_TRIANGLE_AMPLITUDE_127 DAC_WAVE_BIT_WIDTH_7" +.LASF2660: + .string "TIMER_INTF_CH0IF BIT(1)" +.LASF2985: + .string "USART_CTL1_STB BITS(12,13)" +.LASF1492: + .string "FMC_ADDR REG32((FMC) + 0x14U)" +.LASF2734: + .string "TIMER_CCHP_BRKP BIT(13)" +.LASF3075: + .string "_STDDEF_H " +.LASF1302: + .string "DMA_INT_ERR DMA_CHXCTL_ERRIE" +.LASF1966: + .string "I2C_DUADEN_ENABLE ((uint32_t)0x00000001U)" +.LASF1457: + .string "EXTI_SWIEV_SWIEV11 BIT(11)" +.LASF3091: + .string "_SYS_SIZE_T_H " +.LASF80: + .string "__SHRT_WIDTH__ 16" +.LASF2559: + .string "I2S_CKPL_LOW ((uint32_t)0x00000000U)" +.LASF3522: + .string "MSTATUS_MPIE 0x00000080" +.LASF3615: + .string "VM_MBARE 0" +.LASF1868: + .string "GPIO_TIMER3_REMAP ((uint32_t)0x00001000U)" +.LASF4368: + .string "__tmp" +.LASF1491: + .string "FMC_CTL REG32((FMC) + 0x10U)" +.LASF1446: + .string "EXTI_SWIEV_SWIEV0 BIT(0)" +.LASF3388: + .string "_REENT_RAND48_MULT(ptr) ((ptr)->_new._reent._r48._mult)" +.LASF683: + .string "ADC_INT_FLAG_EOIC ADC_STAT_EOIC" +.LASF3845: + .string "MATCH_HRET 0x20200073" +.LASF1018: + .string "TMDATA0_DB2(regval) (BITS(16,23) & ((uint32_t)(regval) << 16))" +.LASF360: + .string "__SSP_FORTIFY_LEVEL 0" +.LASF2448: + .string "SPI1 SPI_BASE" +.LASF2412: + .string "RTC_DIVH REG32(RTC + 0x10U)" +.LASF3275: + .string "__result_use_check __attribute__((__warn_unused_result__))" +.LASF3095: + .string "_SIZE_T_ " +.LASF2355: + .string "RCU_PREDV0_DIV16 CFG1_PREDV0(15)" +.LASF658: + .string "ADC_INSERTED_CHANNEL_2 ((uint8_t)0x02U)" +.LASF2552: + .string "I2S_MODE_MASTERRX I2SCTL_I2SOPMOD(3)" +.LASF2810: + .string "TIMER_DMACFG_DMATC_13TRANSFER DMACFG_DMATC(12)" +.LASF4293: + .string "CSR_MHPMCOUNTER10H 0xb8a" +.LASF3613: + .string "PRV_H 2" +.LASF3260: + .string "__packed __attribute__((__packed__))" +.LASF288: + .string "__GCC_ATOMIC_CHAR_LOCK_FREE 1" +.LASF115: + .string "__INT_LEAST64_WIDTH__ 64" +.LASF1203: + .string "DAC_LFSR_BITS5_0 DAC_WAVE_BIT_WIDTH_6" +.LASF2356: + .string "CFG1_PREDV1(regval) (BITS(4,7) & ((uint32_t)(regval) << 4))" +.LASF2369: + .string "RCU_PREDV1_DIV13 CFG1_PREDV1(12)" +.LASF782: + .string "CAN_CTL(canx) REG32((canx) + 0x00U)" +.LASF4014: + .string "MASK_C_FLD 0xe003" +.LASF4387: + .string "eclic_get_cliccfg" +.LASF4306: + .string "CSR_MHPMCOUNTER23H 0xb97" +.LASF280: + .string "__FLT64X_HAS_QUIET_NAN__ 1" +.LASF568: + .string "ADC_CTL0_RWDEN BIT(23)" +.LASF1644: + .string "GPIO_CTL1_CTL12 BITS(18, 19)" +.LASF2684: + .string "TIMER_CHCTL0_CH1MS BITS(8,9)" +.LASF2829: + .string "TIMER_PSC_RELOAD_NOW TIMER_SWEVG_UPG" +.LASF2872: + .string "TIMER_OC_MODE_TIMING ((uint16_t)0x0000U)" +.LASF3675: + .string "MATCH_BGEU 0x7063" +.LASF3775: + .string "MATCH_DIV 0x2004033" +.LASF3306: + .string "_Nonnull " +.LASF3396: + .string "_REENT_EMERGENCY(ptr) ((ptr)->_emergency)" +.LASF1700: + .string "GPIO_BOP_CR1 BIT(17)" +.LASF58: + .string "__INT_FAST16_TYPE__ int" +.LASF3553: + .string "DCSR_DEBUGINT (1<<5)" +.LASF3263: + .string "__alloc_size(x) __attribute__((__alloc_size__(x)))" +.LASF889: + .string "CAN_CTL_SWRST BIT(15)" +.LASF3954: + .string "MASK_FCVT_S_LU 0xfff0007f" +.LASF4235: + .string "CSR_MHPMEVENT19 0x333" +.LASF2838: + .string "TIMER_SP_MODE_REPETITIVE ((uint32_t)0x00000000U)" +.LASF698: + .string "ADC_OVERSAMPLING_SHIFT_6B OVSCR_OVSS(6)" +.LASF2238: + .string "APB2EN_REG_OFFSET 0x18U" +.LASF1912: + .string "I2C_SADDR0_ADDRESS0 BIT(0)" +.LASF2516: + .string "SPI_NSS_HARD ((uint32_t)0x00000000U)" +.LASF1697: + .string "GPIO_BOP_BOP14 BIT(14)" +.LASF2210: + .string "RCU_BDCTL_LXTALSTB BIT(1)" +.LASF2311: + .string "RCU_PLL_MUL25 (PLLMF_4 | CFG0_PLLMF(8))" +.LASF4175: + .string "CSR_MEPC 0x341" +.LASF821: + .string "CAN_F6DATA0(canx) REG32((canx) + 0x270U)" +.LASF3316: + .string "__locks_shared(...) __lock_annotate(shared_lock_function(__VA_ARGS__))" +.LASF543: + .string "ADC_RSQ2(adcx) REG32((adcx) + 0x34U)" +.LASF3107: + .string "__WCHAR_T__ " +.LASF336: + .string "IRC8M_VALUE ((uint32_t)8000000)" +.LASF3261: + .string "__aligned(x) __attribute__((__aligned__(x)))" +.LASF1462: + .string "EXTI_SWIEV_SWIEV16 BIT(16)" +.LASF87: + .string "__SIZE_WIDTH__ 32" +.LASF1074: + .string "CAN_BT_BS2_2TQ ((uint8_t)0x01U)" +.LASF713: + .string "BKP_DATA1 REG16((BKP) + 0x08U)" +.LASF3092: + .string "_T_SIZE_ " +.LASF2526: + .string "SPI_PSC_8 CTL0_PSC(2)" +.LASF1808: + .string "GPIO_EVENT_PIN_2 ((uint8_t)0x02U)" +.LASF1599: + .string "GPIOA (GPIO_BASE + 0x00000000U)" +.LASF2265: + .string "RCU_AHB_CKSYS_DIV512 CFG0_AHBPSC(15)" +.LASF2165: + .string "RCU_APB1RST_I2C1RST BIT(22)" +.LASF472: + .string "SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)" +.LASF2743: + .string "TIMER_INT_CH2 TIMER_DMAINTEN_CH2IE" +.LASF1602: + .string "GPIOD (GPIO_BASE + 0x00000C00U)" +.LASF3355: + .string "__lock_acquire_recursive(lock) ((void) 0)" +.LASF2939: + .string "USART1 USART_BASE" +.LASF1664: + .string "GPIO_ISTAT_ISTAT13 BIT(13)" +.LASF3514: + .string "RISCV_CSR_ENCODING_H " +.LASF4041: + .string "MATCH_C_XOR 0x8c21" +.LASF441: + .string "INT_LEAST16_MIN (-__INT_LEAST16_MAX__ - 1)" +.LASF1854: + .string "GPIO_PIN_ALL BITS(0, 15)" +.LASF1211: + .string "DAC_ALIGN_12B_R DATA_ALIGN(0)" +.LASF537: + .string "ADC_IOFF2(adcx) REG32((adcx) + 0x1CU)" +.LASF4324: + .string "CSR_WFE 0x810" +.LASF2653: + .string "TIMER_DMAINTEN_CH0DEN BIT(9)" +.LASF52: + .string "__INT_LEAST64_TYPE__ long long int" +.LASF3193: + .string "__EXPORT " +.LASF3682: + .string "MASK_LUI 0x7f" +.LASF4055: + .string "MATCH_C_BNEZ 0xe001" +.LASF712: + .string "BKP_DATA0 REG16((BKP) + 0x04U)" +.LASF1826: + .string "GPIO_PIN_SOURCE_4 ((uint8_t)0x04U)" +.LASF1089: + .string "CAN_RFIF_RFL_MASK ((uint32_t)0x00000003U)" +.LASF2130: + .string "RCU_INT_PLL1STBIE BIT(13)" +.LASF4025: + .string "MATCH_C_ADDI 0x1" +.LASF1382: + .string "EXTI_INTEN_INTEN12 BIT(12)" +.LASF2134: + .string "RCU_INT_IRC8MSTBIC BIT(18)" +.LASF1529: + .string "FMC_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF3785: + .string "MATCH_DIVW 0x200403b" +.LASF3447: + .string "_flockfile(fp) (((fp)->_flags & __SSTR) ? 0 : __lock_acquire_recursive((fp)->_lock))" +.LASF1067: + .string "CAN_BT_BS1_11TQ ((uint8_t)0x0AU)" +.LASF769: + .string "BKP_DATA0_9(number) REG16((BKP) + 0x04U + (number) * 0x04U)" +.LASF3642: + .string "PTE_U 0x010" +.LASF4395: + .string "eclic_clear_pending" +.LASF1205: + .string "DAC_LFSR_BITS7_0 DAC_WAVE_BIT_WIDTH_8" +.LASF3144: + .string "ECLICINTCTLBITS 4" +.LASF1396: + .string "EXTI_EVEN_EVEN7 BIT(7)" +.LASF1898: + .string "I2C_CTL0_SS BIT(7)" +.LASF631: + .string "ADC0_1_EXTTRIG_INSERTED_T0_CH3 CTL1_ETSIC(1)" +.LASF3087: + .string "__need_ptrdiff_t" +.LASF1658: + .string "GPIO_ISTAT_ISTAT7 BIT(7)" +.LASF2536: + .string "I2S_AUDIOSAMPLE_32K ((uint32_t)32000U)" +.LASF2916: + .string "SMCFG_SMC(regval) (BITS(0, 2) & ((uint32_t)(regval) << 0U))" +.LASF4288: + .string "CSR_MHPMCOUNTER5H 0xb85" +.LASF240: + .string "__FLT128_MAX_EXP__ 16384" +.LASF3623: + .string "IRQ_M_SOFT 3" +.LASF3298: + .string "__FBSDID(s) struct __hack" +.LASF267: + .string "__FLT64X_DIG__ 33" +.LASF3579: + .string "MCONTROL_TYPE_MATCH 2" +.LASF2481: + .string "SPI_STAT_RBNE BIT(0)" +.LASF4068: + .string "MASK_C_ADD 0xf003" +.LASF4151: + .string "CSR_HPMCOUNTER25 0xc19" +.LASF1973: + .string "I2C_DMA_ON I2C_CTL1_DMAON" +.LASF1414: + .string "EXTI_RTEN_RTEN6 BIT(6)" +.LASF187: + .string "__LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L" +.LASF2802: + .string "TIMER_DMACFG_DMATC_5TRANSFER DMACFG_DMATC(4)" +.LASF1178: + .string "DAC_TRIGGER_T3_TRGO CTL_DTSEL(5)" +.LASF4278: + .string "CSR_HPMCOUNTER26H 0xc9a" +.LASF3886: + .string "MASK_FSQRT_S 0xfff0007f" +.LASF2500: + .string "SPI_I2SCTL_I2SEN BIT(10)" +.LASF1880: + .string "I2C0 I2C_BASE" +.LASF404: + .string "_SYS__STDINT_H " +.LASF1185: + .string "DWBW(regval) (BITS(8,11) & ((uint32_t)(regval) << 8))" +.LASF4350: + .string "long long int" +.LASF164: + .string "__DBL_MAX_EXP__ 1024" +.LASF4320: + .string "CSR_JALMNXTI 0x7ED" +.LASF2707: + .string "TIMER_CHCTL2_CH0EN BIT(0)" +.LASF91: + .string "__UINTMAX_C(c) c ## ULL" +.LASF2310: + .string "RCU_PLL_MUL24 (PLLMF_4 | CFG0_PLLMF(7))" +.LASF4261: + .string "CSR_HPMCOUNTER9H 0xc89" +.LASF2601: + .string "TIMER_INTF(timerx) REG32((timerx) + 0x10U)" +.LASF4191: + .string "CSR_MHPMCOUNTER6 0xb06" +.LASF3176: + .string "_REENT_CHECK_VERIFY 1" +.LASF700: + .string "ADC_OVERSAMPLING_SHIFT_8B OVSCR_OVSS(8)" +.LASF3506: + .string "RAND_MAX __RAND_MAX" +.LASF4009: + .string "MATCH_C_SDSP 0xe002" +.LASF2895: + .string "TIMER_IC_PSC_DIV2 ((uint16_t)0x0004U)" +.LASF297: + .string "__GCC_ATOMIC_POINTER_LOCK_FREE 2" +.LASF3598: + .string "MIP_HEIP (1 << IRQ_H_EXT)" +.LASF1379: + .string "EXTI_INTEN_INTEN9 BIT(9)" +.LASF1844: + .string "GPIO_PIN_6 BIT(6)" +.LASF3168: + .string "ECLIC_GROUP_LEVEL4_PRIO0 4" +.LASF4021: + .string "MATCH_C_SW 0xc000" +.LASF2456: + .string "SPI_TCRC(spix) REG32((spix) + 0x18U)" +.LASF2229: + .string "RCU_CFG1_PREDV0SEL BIT(16)" +.LASF1616: + .string "AFIO_EXTISS2 REG32(AFIO + 0x10U)" +.LASF515: + .string "DAC_BASE (APB1_BUS_BASE + 0x00007400U)" +.LASF1525: + .string "FMC_WSEN_WSEN BIT(0)" +.LASF2392: + .string "RCU_PLL2_MUL15 CFG1_PLL2MF(13)" +.LASF2698: + .string "TIMER_CHCTL1_CH3MS BITS(8,9)" +.LASF872: + .string "CAN_TMP(canx,bank) REG32((canx) + 0x184U + ((bank) * 0x10U))" +.LASF1791: + .string "GPIO_MODE_AF_OD ((uint8_t)0x1CU)" +.LASF3241: + .string "__CC_SUPPORTS___INLINE 1" +.LASF1389: + .string "EXTI_EVEN_EVEN0 BIT(0)" +.LASF3195: + .string "_READ_WRITE_BUFSIZE_TYPE int" +.LASF877: + .string "CAN_RFIFOMI(canx,bank) REG32((canx) + 0x1B0U + ((bank) * 0x10U))" +.LASF3810: + .string "MASK_AMOSWAP_W 0xf800707f" +.LASF1222: + .string "DAC_TRIANGLE_AMPLITUDE_511 DAC_WAVE_BIT_WIDTH_9" +.LASF681: + .string "ADC_INT_FLAG_WDE ADC_STAT_WDE" +.LASF3045: + .string "USART_DENR_DISABLE CLT2_DENR(0)" +.LASF1742: + .string "GPIO_LOCK_LK11 BIT(11)" +.LASF137: + .string "__INTPTR_WIDTH__ 32" +.LASF2503: + .string "SPI_I2SPSC_OF BIT(8)" +.LASF12: + .string "__ATOMIC_RELEASE 3" +.LASF1137: + .string "DACC_R12DH REG32(DAC + 0x20U)" +.LASF1628: + .string "GPIO_CTL0_CTL4 BITS(18, 19)" +.LASF457: + .string "INT_FAST8_MAX (__INT_FAST8_MAX__)" +.LASF1293: + .string "DMA_INT_FLAG_FTF DMA_INTF_FTFIF" +.LASF2692: + .string "TIMER_CHCTL0_CH1CAPFLT BITS(12,15)" +.LASF588: + .string "ADC_ISQ_ISQN BITS(0,4)" +.LASF4103: + .string "MATCH_CUSTOM2_RS1_RS2 0x305b" +.LASF3757: + .string "MATCH_SH 0x1023" +.LASF1288: + .string "DMA_CHCNT_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF2431: + .string "RTC_CNTH_CNT BITS(0,15)" +.LASF2333: + .string "RCU_CKOUT0SRC_CKPLL2 CFG0_CKOUT0SEL(11)" +.LASF3153: + .string "ECLIC_INT_ATTR_TRIG_EDGE 0x02" +.LASF1555: + .string "OB_SPC_SPC_N ((uint32_t)0x0000FF00U)" +.LASF1623: + .string "GPIO_CTL0_MD2 BITS(8, 9)" +.LASF960: + .string "CAN_TMI_SFID BITS(21,31)" +.LASF1291: + .string "DMA_CHINTF_RESET_VALUE (DMA_INTF_GIF | DMA_INTF_FTFIF | DMA_INTF_HTFIF | DMA_INTF_ERRIF)" +.LASF1387: + .string "EXTI_INTEN_INTEN17 BIT(17)" +.LASF2566: + .string "SPI_I2S_INT_RBNE ((uint8_t)0x01U)" +.LASF1217: + .string "DAC_TRIANGLE_AMPLITUDE_15 DAC_WAVE_BIT_WIDTH_4" +.LASF3477: + .string "TMP_MAX 26" +.LASF2191: + .string "RCU_APB1EN_TIMER3EN BIT(2)" +.LASF3065: + .string "WWDGT_CFG_WIN BITS(0,6)" +.LASF2309: + .string "RCU_PLL_MUL23 (PLLMF_4 | CFG0_PLLMF(6))" +.LASF143: + .string "__DEC_EVAL_METHOD__ 2" +.LASF2848: + .string "TIMER_OUTAUTO_DISABLE ((uint16_t)0x0000U)" +.LASF1728: + .string "GPIO_BC_CR13 BIT(13)" +.LASF225: + .string "__FLT64_MAX_EXP__ 1024" +.LASF2176: + .string "RCU_AHBEN_EXMCEN BIT(8)" +.LASF1212: + .string "DAC_ALIGN_12B_L DATA_ALIGN(1)" +.LASF1651: + .string "GPIO_ISTAT_ISTAT0 BIT(0)" +.LASF3027: + .string "USART_STB_1BIT CTL1_STB(0)" +.LASF2170: + .string "RCU_APB1RST_DACRST BIT(29)" +.LASF3166: + .string "ECLIC_GROUP_LEVEL2_PRIO2 2" +.LASF1943: + .string "I2C_CKCFG_FAST BIT(15)" +.LASF3066: + .string "WWDGT_CFG_PSC BITS(7,8)" +.LASF3352: + .string "__lock_close(lock) ((void) 0)" +.LASF892: + .string "CAN_STAT_SLPWS BIT(1)" +.LASF3174: + .string "_WANT_REGISTER_FINI 1" +.LASF3038: + .string "USART_CPH_1CK CTL1_CPH(0)" +.LASF4351: + .string "__uint64_t" +.LASF1242: + .string "DMA_CH2MADDR(dmax) REG32((dmax) + 0x3CU)" +.LASF1035: + .string "GET_RFIFOMDATA1_DB7(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF2460: + .string "SPI_CTL0_CKPL BIT(1)" +.LASF2870: + .string "TIMER_OCN_IDLE_STATE_HIGH ((uint16_t)0x0200U)" +.LASF1861: + .string "GPIO_TIMER0_PARTIAL_REMAP ((uint32_t)0x00160040U)" +.LASF1006: + .string "BT_BAUDPSC(regval) (BITS(0,9) & ((uint32_t)(regval) << 0))" +.LASF4197: + .string "CSR_MHPMCOUNTER12 0xb0c" +.LASF1500: + .string "OB_WP2 REG16((OB) + 0x0CU)" +.LASF1577: + .string "OB_WP_15 ((uint32_t)0x00008000U)" +.LASF4174: + .string "CSR_MSCRATCH 0x340" +.LASF2505: + .string "SPI_MASTER (SPI_CTL0_MSTMOD | SPI_CTL0_SWNSS)" +.LASF1031: + .string "GET_RFIFOMDATA0_DB3(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF587: + .string "ADC_RSQ0_RL BITS(20,23)" +.LASF5: + .string "__GNUC__ 10" +.LASF840: + .string "CAN_F25DATA0(canx) REG32((canx) + 0x308U)" +.LASF3432: + .string "_PID_T_DECLARED " +.LASF2776: + .string "TIMER_DMAREQUEST_CHANNELEVENT ((uint32_t)0x00000000U)" +.LASF2581: + .string "SPI_FLAG_FERR SPI_STAT_FERR" +.LASF4034: + .string "MASK_C_SRLI 0xec03" +.LASF3670: + .string "MASK_BLT 0x707f" +.LASF3060: + .string "WWDGT_CTL REG32((WWDGT) + 0x00000000U)" +.LASF2097: + .string "RCU_CTL_CKMEN BIT(19)" +.LASF2274: + .string "RCU_APB2_CKAHB_DIV2 CFG0_APB2PSC(4)" +.LASF678: + .string "ADC_INT_WDE ADC_STAT_WDE" +.LASF1834: + .string "GPIO_PIN_SOURCE_12 ((uint8_t)0x0CU)" +.LASF1027: + .string "GET_RFIFOMP_FI(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF2678: + .string "TIMER_SWEVG_BRKG BIT(7)" +.LASF1300: + .string "DMA_INT_FTF DMA_CHXCTL_FTFIE" +.LASF3295: + .string "__warn_references(sym,msg) __asm__(\".section .gnu.warning.\" #sym); __asm__(\".asciz \\\"\" msg \"\\\"\"); __asm__(\".previous\")" +.LASF1372: + .string "EXTI_INTEN_INTEN2 BIT(2)" +.LASF181: + .string "__DECIMAL_DIG__ 36" +.LASF97: + .string "__INT16_MAX__ 0x7fff" +.LASF3811: + .string "MATCH_LR_W 0x1000202f" +.LASF1648: + .string "GPIO_CTL1_CTL14 BITS(26, 27)" +.LASF3109: + .string "_T_WCHAR_ " +.LASF2040: + .string "DBG_LOW_POWER_DEEPSLEEP DBG_CTL_DSLP_HOLD" +.LASF2308: + .string "RCU_PLL_MUL22 (PLLMF_4 | CFG0_PLLMF(5))" +.LASF984: + .string "CAN_RFIFOMDATA1_DB5 BITS(8,15)" +.LASF4404: + .string "get_cpu_freq" +.LASF4145: + .string "CSR_HPMCOUNTER19 0xc13" +.LASF2826: + .string "TIMER_COUNTER_CENTER_DOWN CTL0_CAM(1)" +.LASF1325: + .string "GD32VF103_ECLIC_H " +.LASF1984: + .string "I2C_ARP_DISABLE ((uint32_t)0x00000000U)" +.LASF494: + .string "BITS(start,end) ((0xFFFFFFFFUL << (start)) & (0xFFFFFFFFUL >> (31U - (uint32_t)(end))))" +.LASF469: + .string "INTMAX_MIN (-INTMAX_MAX - 1)" +.LASF1480: + .string "EXTI_PD_PD15 BIT(15)" +.LASF3604: + .string "MIE_HTIE MIP_HTIP" +.LASF3760: + .string "MASK_SW 0x707f" +.LASF2056: + .string "PMU_CS_WUPEN BIT(8)" +.LASF790: + .string "CAN_TMI0(canx) REG32((canx) + 0x180U)" +.LASF2102: + .string "RCU_CTL_PLL2EN BIT(28)" +.LASF2121: + .string "RCU_INT_PLLSTBIF BIT(4)" +.LASF2327: + .string "RCU_CKOUT0SRC_IRC8M CFG0_CKOUT0SEL(5)" +.LASF1160: + .string "DAC0_R8DH_DAC0_DH BITS(0,7)" +.LASF4239: + .string "CSR_MHPMEVENT23 0x337" +.LASF3104: + .string "__size_t " +.LASF2541: + .string "I2SCTL_DTLEN(regval) (BITS(1,2) & ((uint32_t)(regval) << 1))" +.LASF3968: + .string "MASK_FLW 0x707f" +.LASF357: + .string "__POSIX_VISIBLE 199009" +.LASF4309: + .string "CSR_MHPMCOUNTER26H 0xb9a" +.LASF4207: + .string "CSR_MHPMCOUNTER22 0xb16" +.LASF3612: + .string "PRV_S 1" +.LASF3381: + .string "_REENT_CHECK_ASCTIME_BUF(ptr) " +.LASF2129: + .string "RCU_INT_PLLSTBIE BIT(12)" +.LASF2231: + .string "RCU_CFG1_I2S2SEL BIT(18)" +.LASF119: + .string "__UINT16_C(c) c" +.LASF1864: + .string "GPIO_TIMER1_PARTIAL_REMAP1 ((uint32_t)0x00180200U)" +.LASF1423: + .string "EXTI_RTEN_RTEN15 BIT(15)" +.LASF3149: + .string "ECLIC_INT_IE_OFFSET _AC(0x1001,UL)" +.LASF4338: + .string "CAUSE_SUPERVISOR_ECALL 0x9" +.LASF2725: + .string "TIMER_CH0CV_CH0VAL BITS(0,15)" +.LASF1625: + .string "GPIO_CTL0_MD3 BITS(12, 13)" +.LASF2981: + .string "USART_CTL1_CLEN BIT(8)" +.LASF835: + .string "CAN_F20DATA0(canx) REG32((canx) + 0x2E0U)" +.LASF1692: + .string "GPIO_BOP_BOP9 BIT(9)" +.LASF2594: + .string "TIMER4 (TIMER_BASE + 0x00000C00U)" +.LASF372: + .string "__EXP" +.LASF290: + .string "__GCC_ATOMIC_CHAR32_T_LOCK_FREE 2" +.LASF1881: + .string "I2C1 (I2C_BASE + 0x00000400U)" +.LASF3215: + .string "__attribute_pure__ " +.LASF795: + .string "CAN_TMP1(canx) REG32((canx) + 0x194U)" +.LASF4071: + .string "MATCH_C_SWSP 0xc002" +.LASF546: + .string "ADC_IDATA1(adcx) REG32((adcx) + 0x40U)" +.LASF2157: + .string "RCU_APB1RST_WWDGTRST BIT(11)" +.LASF263: + .string "__FLT32X_HAS_DENORM__ 1" +.LASF1600: + .string "GPIOB (GPIO_BASE + 0x00000400U)" +.LASF2917: + .string "TIMER_SLAVE_MODE_DISABLE SMCFG_SMC(0)" +.LASF2255: + .string "RCU_SCSS_PLL CFG0_SCSS(2)" +.LASF919: + .string "CAN_TSTAT_TMLS0 BIT(29)" +.LASF3258: + .string "__unused __attribute__((__unused__))" +.LASF853: + .string "CAN_F10DATA1(canx) REG32((canx) + 0x294U)" +.LASF1837: + .string "GPIO_PIN_SOURCE_15 ((uint8_t)0x0FU)" +.LASF3002: + .string "USART_BIT_POS(val) ((uint32_t)(val) & (0x0000001FU))" +.LASF1275: + .string "DMA_CHXCTL_PWIDTH BITS(8,9)" +.LASF2782: + .string "TIMER_DMACFG_DMATA_INTF DMACFG_DMATA(4)" +.LASF768: + .string "BKP_TPCS_TIF BIT(9)" +.LASF526: + .string "GD32VF103_LIBOPT_H " +.LASF2638: + .string "TIMER_SMCFG_TRGS BITS(4,6)" +.LASF4130: + .string "CSR_HPMCOUNTER4 0xc04" +.LASF1724: + .string "GPIO_BC_CR9 BIT(9)" +.LASF2726: + .string "TIMER_CH1CV_CH1VAL BITS(0,15)" +.LASF3257: + .string "__pure2 __attribute__((__const__))" +.LASF371: + .string "___int_least64_t_defined 1" +.LASF4210: + .string "CSR_MHPMCOUNTER25 0xb19" +.LASF2946: + .string "USART_BAUD(usartx) REG32((usartx) + (0x00000008U))" +.LASF210: + .string "__FLT32_MAX_EXP__ 128" +.LASF3286: + .string "__containerof(x,s,m) ({ const volatile __typeof(((s *)0)->m) *__x = (x); __DEQUALIFY(s *, (const volatile char *)__x - __offsetof(s, m));})" +.LASF3429: + .string "_DEV_T_DECLARED " +.LASF3987: + .string "MATCH_FNMSUB_D 0x200004b" +.LASF4162: + .string "CSR_SEPC 0x141" +.LASF3634: + .string "DEFAULT_MTVEC 0x00001010" +.LASF3565: + .string "MCONTROL_MASKMAX(xlen) (0x3fULL<<((xlen)-11))" +.LASF860: + .string "CAN_F17DATA1(canx) REG32((canx) + 0x24CU)" +.LASF1347: + .string "EXMC_SNTCFG_AHLD BITS(4,7)" +.LASF3557: + .string "DCSR_CAUSE_NONE 0" +.LASF4024: + .string "MASK_C_FSW 0xe003" +.LASF1790: + .string "GPIO_MODE_OUT_PP ((uint8_t)0x10U)" +.LASF3072: + .string "WWDGT_CFG_PSC_DIV4 CFG_PSC(2)" +.LASF3350: + .string "__lock_init(lock) ((void) 0)" +.LASF1603: + .string "GPIOE (GPIO_BASE + 0x00001000U)" +.LASF125: + .string "__INT_FAST8_WIDTH__ 32" +.LASF3145: + .string "ECLIC_CFG_OFFSET 0x0" +.LASF3770: + .string "MASK_MULH 0xfe00707f" +.LASF3265: + .string "__alloc_align(x) __attribute__((__alloc_align__(x)))" +.LASF2728: + .string "TIMER_CH3CV_CH3VAL BITS(0,15)" +.LASF2819: + .string "TIMER_EVENT_SRC_CH2G ((uint16_t)0x0008U)" +.LASF1091: + .string "CAN_EFID_MASK ((uint32_t)0x1FFFFFFFU)" +.LASF1116: + .string "CAN_INT_SLPW CAN_INTEN_SLPWIE" +.LASF2727: + .string "TIMER_CH2CV_CH2VAL BITS(0,15)" +.LASF304: + .string "__riscv_compressed 1" +.LASF266: + .string "__FLT64X_MANT_DIG__ 113" +.LASF1153: + .string "DAC_CTL_DWM1 BITS(22,23)" +.LASF2015: + .string "FWDGT_RLD_TIMEOUT ((uint32_t)0x000FFFFFU)" +.LASF1815: + .string "GPIO_EVENT_PIN_9 ((uint8_t)0x09U)" +.LASF1566: + .string "OB_WP_4 ((uint32_t)0x00000010U)" +.LASF470: + .string "UINTMAX_MAX (__UINTMAX_MAX__)" +.LASF916: + .string "CAN_TSTAT_TME0 BIT(26)" +.LASF661: + .string "ADC_CHANNEL_1 ((uint8_t)0x01U)" +.LASF3439: + .string "__timer_t_defined " +.LASF579: + .string "ADC_CTL1_SWICST BIT(21)" +.LASF1267: + .string "DMA_CHXCTL_CHEN BIT(0)" +.LASF2093: + .string "RCU_CTL_IRC8MCALIB BITS(8,15)" +.LASF2366: + .string "RCU_PREDV1_DIV10 CFG1_PREDV1(9)" +.LASF192: + .string "__FLT16_DIG__ 3" +.LASF3402: + .string "_REENT_MBRTOWC_STATE(ptr) ((ptr)->_new._reent._mbrtowc_state)" +.LASF2818: + .string "TIMER_EVENT_SRC_CH1G ((uint16_t)0x0004U)" +.LASF3013: + .string "CTL0_TEN(regval) (BIT(3) & ((uint32_t)(regval) << 3))" +.LASF3141: + .string "_AT(T,X) ((T)(X))" +.LASF4341: + .string "unsigned int" +.LASF2454: + .string "SPI_CRCPOLY(spix) REG32((spix) + 0x10U)" +.LASF1942: + .string "I2C_CKCFG_DTCY BIT(14)" +.LASF2267: + .string "RCU_APB1_CKAHB_DIV1 CFG0_APB1PSC(0)" +.LASF424: + .string "__int_least64_t_defined 1" +.LASF1892: + .string "I2C_CTL0_I2CEN BIT(0)" +.LASF770: + .string "BKP_DATA10_41(number) REG16((BKP) + 0x40U + ((number)-10U) * 0x04U)" +.LASF2614: + .string "TIMER_CCHP(timerx) REG32((timerx) + 0x44U)" +.LASF414: + .string "_INT64_T_DECLARED " +.LASF2756: + .string "TIMER_FLAG_UP TIMER_INTF_UPIF" +.LASF3906: + .string "MASK_FCVT_S_D 0xfff0007f" +.LASF1685: + .string "GPIO_BOP_BOP2 BIT(2)" +.LASF2852: + .string "TIMER_CCHP_PROT_1 CCHP_PROT(2)" +.LASF3742: + .string "MASK_LB 0x707f" +.LASF3932: + .string "MASK_FMV_X_S 0xfff0707f" +.LASF2929: + .string "TIMER_EXT_TRI_PSC_DIV2 SMCFG_ETPSC(1)" +.LASF1159: + .string "DAC0_L12DH_DAC0_DH BITS(4,15)" +.LASF1632: + .string "GPIO_CTL0_CTL6 BITS(26, 27)" +.LASF1548: + .string "OB_STDBY_NRST ((uint8_t)0x04U)" +.LASF1299: + .string "DMA_FLAG_ERR DMA_INTF_ERRIF" +.LASF3990: + .string "MASK_FNMADD_D 0x600007f" +.LASF3703: + .string "MATCH_ADD 0x33" + .ident "GCC: (xPack GNU RISC-V Embedded GCC x86_64) 10.2.0" diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/n200_timer.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/n200_timer.h new file mode 100644 index 0000000000..e27acd5fbe --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/n200_timer.h @@ -0,0 +1,18 @@ +/* See LICENSE file for licence details */ + +#ifndef N200_TIMER_H +#define N200_TIMER_H + +#define TIMER_MSIP 0xFFC +#define TIMER_MSIP_size 0x4 +#define TIMER_MTIMECMP 0x8 +#define TIMER_MTIMECMP_size 0x8 +#define TIMER_MTIME 0x0 +#define TIMER_MTIME_size 0x8 + +#define TIMER_CTRL_ADDR 0xd1000000 +#define TIMER_REG(offset) _REG32(TIMER_CTRL_ADDR, offset) +#define TIMER_FREQ ((uint32_t)SystemCoreClock/4) + +#endif + diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/riscv_bits.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/riscv_bits.h new file mode 100644 index 0000000000..bfe656feb0 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/riscv_bits.h @@ -0,0 +1,36 @@ +// See LICENSE for license details. +#ifndef _RISCV_BITS_H +#define _RISCV_BITS_H + +#define likely(x) __builtin_expect((x), 1) +#define unlikely(x) __builtin_expect((x), 0) + +#define ROUNDUP(a, b) ((((a)-1)/(b)+1)*(b)) +#define ROUNDDOWN(a, b) ((a)/(b)*(b)) + +#define MAX(a, b) ((a) > (b) ? (a) : (b)) +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define CLAMP(a, lo, hi) MIN(MAX(a, lo), hi) + +#define EXTRACT_FIELD(val, which) (((val) & (which)) / ((which) & ~((which)-1))) +#define INSERT_FIELD(val, which, fieldval) (((val) & ~(which)) | ((fieldval) * ((which) & ~((which)-1)))) + +#define STR(x) XSTR(x) +#define XSTR(x) #x + +#if __riscv_xlen == 64 +# define SLL32 sllw +# define STORE sd +# define LOAD ld +# define LWU lwu +# define LOG_REGBYTES 3 +#else +# define SLL32 sll +# define STORE sw +# define LOAD lw +# define LWU lw +# define LOG_REGBYTES 2 +#endif +#define REGBYTES (1 << LOG_REGBYTES) + +#endif diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/riscv_const.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/riscv_const.h new file mode 100644 index 0000000000..442460abc0 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/riscv_const.h @@ -0,0 +1,18 @@ +/* See LICENSE for license details.*/ +/* Derived from */ + +#ifndef _RISCV_CONST_H +#define _RISCV_CONST_H + +#ifdef __ASSEMBLER__ +#define _AC(X,Y) X +#define _AT(T,X) X +#else +#define _AC(X,Y) (X##Y) +#define _AT(T,X) ((T)(X)) +#endif /* !__ASSEMBLER__*/ + +#define _BITUL(x) (_AC(1,UL) << (x)) +#define _BITULL(x) (_AC(1,ULL) << (x)) + +#endif /* _NUCLEI_CONST_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/riscv_encoding.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/riscv_encoding.h new file mode 100644 index 0000000000..6853ad778a --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/drivers/riscv_encoding.h @@ -0,0 +1,1362 @@ +/* See LICENSE for license details.*/ + +#ifndef RISCV_CSR_ENCODING_H +#define RISCV_CSR_ENCODING_H + +#define MSTATUS_UIE 0x00000001 +#define MSTATUS_SIE 0x00000002 +#define MSTATUS_HIE 0x00000004 +#define MSTATUS_MIE 0x00000008 +#define MSTATUS_UPIE 0x00000010 +#define MSTATUS_SPIE 0x00000020 +#define MSTATUS_HPIE 0x00000040 +#define MSTATUS_MPIE 0x00000080 +#define MSTATUS_SPP 0x00000100 +#define MSTATUS_MPP 0x00001800 +#define MSTATUS_FS 0x00006000 +#define MSTATUS_XS 0x00018000 +#define MSTATUS_MPRV 0x00020000 +#define MSTATUS_PUM 0x00040000 +#define MSTATUS_MXR 0x00080000 +#define MSTATUS_VM 0x1F000000 +#define MSTATUS32_SD 0x80000000 +#define MSTATUS64_SD 0x8000000000000000 + + +#define SSTATUS_UIE 0x00000001 +#define SSTATUS_SIE 0x00000002 +#define SSTATUS_UPIE 0x00000010 +#define SSTATUS_SPIE 0x00000020 +#define SSTATUS_SPP 0x00000100 +#define SSTATUS_FS 0x00006000 +#define SSTATUS_XS 0x00018000 +#define SSTATUS_PUM 0x00040000 +#define SSTATUS32_SD 0x80000000 +#define SSTATUS64_SD 0x8000000000000000 + +#define DCSR_XDEBUGVER (3U<<30) +#define DCSR_NDRESET (1<<29) +#define DCSR_FULLRESET (1<<28) +#define DCSR_EBREAKM (1<<15) +#define DCSR_EBREAKH (1<<14) +#define DCSR_EBREAKS (1<<13) +#define DCSR_EBREAKU (1<<12) +#define DCSR_STOPCYCLE (1<<10) +#define DCSR_STOPTIME (1<<9) +#define DCSR_CAUSE (7<<6) +#define DCSR_DEBUGINT (1<<5) +#define DCSR_HALT (1<<3) +#define DCSR_STEP (1<<2) +#define DCSR_PRV (3<<0) + +#define DCSR_CAUSE_NONE 0 +#define DCSR_CAUSE_SWBP 1 +#define DCSR_CAUSE_HWBP 2 +#define DCSR_CAUSE_DEBUGINT 3 +#define DCSR_CAUSE_STEP 4 +#define DCSR_CAUSE_HALT 5 + +#define MCONTROL_TYPE(xlen) (0xfULL<<((xlen)-4)) +#define MCONTROL_DMODE(xlen) (1ULL<<((xlen)-5)) +#define MCONTROL_MASKMAX(xlen) (0x3fULL<<((xlen)-11)) + +#define MCONTROL_SELECT (1<<19) +#define MCONTROL_TIMING (1<<18) +#define MCONTROL_ACTION (0x3f<<12) +#define MCONTROL_CHAIN (1<<11) +#define MCONTROL_MATCH (0xf<<7) +#define MCONTROL_M (1<<6) +#define MCONTROL_H (1<<5) +#define MCONTROL_S (1<<4) +#define MCONTROL_U (1<<3) +#define MCONTROL_EXECUTE (1<<2) +#define MCONTROL_STORE (1<<1) +#define MCONTROL_LOAD (1<<0) + +#define MCONTROL_TYPE_NONE 0 +#define MCONTROL_TYPE_MATCH 2 + +#define MCONTROL_ACTION_DEBUG_EXCEPTION 0 +#define MCONTROL_ACTION_DEBUG_MODE 1 +#define MCONTROL_ACTION_TRACE_START 2 +#define MCONTROL_ACTION_TRACE_STOP 3 +#define MCONTROL_ACTION_TRACE_EMIT 4 + +#define MCONTROL_MATCH_EQUAL 0 +#define MCONTROL_MATCH_NAPOT 1 +#define MCONTROL_MATCH_GE 2 +#define MCONTROL_MATCH_LT 3 +#define MCONTROL_MATCH_MASK_LOW 4 +#define MCONTROL_MATCH_MASK_HIGH 5 + +#define MIP_SSIP (1 << IRQ_S_SOFT) +#define MIP_HSIP (1 << IRQ_H_SOFT) +#define MIP_MSIP (1 << IRQ_M_SOFT) +#define MIP_STIP (1 << IRQ_S_TIMER) +#define MIP_HTIP (1 << IRQ_H_TIMER) +#define MIP_MTIP (1 << IRQ_M_TIMER) +#define MIP_SEIP (1 << IRQ_S_EXT) +#define MIP_HEIP (1 << IRQ_H_EXT) +#define MIP_MEIP (1 << IRQ_M_EXT) + +#define MIE_SSIE MIP_SSIP +#define MIE_HSIE MIP_HSIP +#define MIE_MSIE MIP_MSIP +#define MIE_STIE MIP_STIP +#define MIE_HTIE MIP_HTIP +#define MIE_MTIE MIP_MTIP +#define MIE_SEIE MIP_SEIP +#define MIE_HEIE MIP_HEIP +#define MIE_MEIE MIP_MEIP + +#define SIP_SSIP MIP_SSIP +#define SIP_STIP MIP_STIP + +#define PRV_U 0 +#define PRV_S 1 +#define PRV_H 2 +#define PRV_M 3 + +#define VM_MBARE 0 +#define VM_MBB 1 +#define VM_MBBID 2 +#define VM_SV32 8 +#define VM_SV39 9 +#define VM_SV48 10 + +#define IRQ_S_SOFT 1 +#define IRQ_H_SOFT 2 +#define IRQ_M_SOFT 3 +#define IRQ_S_TIMER 5 +#define IRQ_H_TIMER 6 +#define IRQ_M_TIMER 7 +#define IRQ_S_EXT 9 +#define IRQ_H_EXT 10 +#define IRQ_M_EXT 11 +#define IRQ_COP 12 +#define IRQ_HOST 13 + +#define DEFAULT_RSTVEC 0x00001000 +#define DEFAULT_NMIVEC 0x00001004 +#define DEFAULT_MTVEC 0x00001010 +#define CONFIG_STRING_ADDR 0x0000100C +#define EXT_IO_BASE 0x40000000 +#define DRAM_BASE 0x80000000 + +/* page table entry (PTE) fields */ +#define PTE_V 0x001 /* Valid */ +#define PTE_R 0x002 /* Read */ +#define PTE_W 0x004 /* Write */ +#define PTE_X 0x008 /* Execute */ +#define PTE_U 0x010 /* User */ +#define PTE_G 0x020 /* Global */ +#define PTE_A 0x040 /* Accessed */ +#define PTE_D 0x080 /* Dirty */ +#define PTE_SOFT 0x300 /* Reserved for Software */ + +#define PTE_PPN_SHIFT 10 + +#define PTE_TABLE(PTE) (((PTE) & (PTE_V | PTE_R | PTE_W | PTE_X)) == PTE_V) + +#ifdef __riscv + +#ifdef __riscv64 +# define MSTATUS_SD MSTATUS64_SD +# define SSTATUS_SD SSTATUS64_SD +# define RISCV_PGLEVEL_BITS 9 +#else +# define MSTATUS_SD MSTATUS32_SD +# define SSTATUS_SD SSTATUS32_SD +# define RISCV_PGLEVEL_BITS 10 +#endif +#define RISCV_PGSHIFT 12 +#define RISCV_PGSIZE (1 << RISCV_PGSHIFT) + +#ifndef __ASSEMBLER__ + +#ifdef __GNUC__ + +#define read_fpu(reg) ({ unsigned long __tmp; \ + asm volatile ("fmv.x.w %0, " #reg : "=r"(__tmp)); \ + __tmp; }) + +#define write_fpu(reg, val) ({ \ + if (__builtin_constant_p(val) && (unsigned long)(val) < 32) \ + asm volatile ("fmv.w.x " #reg ", %0" :: "i"(val)); \ + else \ + asm volatile ("fmv.w.x " #reg ", %0" :: "r"(val)); }) + + +#define read_csr(reg) ({ unsigned long __tmp; \ + asm volatile ("csrr %0, " #reg : "=r"(__tmp)); \ + __tmp; }) + +#define write_csr(reg, val) ({ \ + if (__builtin_constant_p(val) && (unsigned long)(val) < 32) \ + asm volatile ("csrw " #reg ", %0" :: "i"(val)); \ + else \ + asm volatile ("csrw " #reg ", %0" :: "r"(val)); }) + +#define swap_csr(reg, val) ({ unsigned long __tmp; \ + if (__builtin_constant_p(val) && (unsigned long)(val) < 32) \ + asm volatile ("csrrw %0, " #reg ", %1" : "=r"(__tmp) : "i"(val)); \ + else \ + asm volatile ("csrrw %0, " #reg ", %1" : "=r"(__tmp) : "r"(val)); \ + __tmp; }) + +#define set_csr(reg, bit) ({ unsigned long __tmp; \ + if (__builtin_constant_p(bit) && (unsigned long)(bit) < 32) \ + asm volatile ("csrrs %0, " #reg ", %1" : "=r"(__tmp) : "i"(bit)); \ + else \ + asm volatile ("csrrs %0, " #reg ", %1" : "=r"(__tmp) : "r"(bit)); \ + __tmp; }) + +#define clear_csr(reg, bit) ({ unsigned long __tmp; \ + if (__builtin_constant_p(bit) && (unsigned long)(bit) < 32) \ + asm volatile ("csrrc %0, " #reg ", %1" : "=r"(__tmp) : "i"(bit)); \ + else \ + asm volatile ("csrrc %0, " #reg ", %1" : "=r"(__tmp) : "r"(bit)); \ + __tmp; }) + +#define rdtime() read_csr(time) +#define rdcycle() read_csr(cycle) +#define rdinstret() read_csr(instret) +#endif + +#endif + +#endif + +#endif +/* Automatically generated by parse-opcodes */ +#ifndef RISCV_ENCODING_H +#define RISCV_ENCODING_H +#define MATCH_BEQ 0x63 +#define MASK_BEQ 0x707f +#define MATCH_BNE 0x1063 +#define MASK_BNE 0x707f +#define MATCH_BLT 0x4063 +#define MASK_BLT 0x707f +#define MATCH_BGE 0x5063 +#define MASK_BGE 0x707f +#define MATCH_BLTU 0x6063 +#define MASK_BLTU 0x707f +#define MATCH_BGEU 0x7063 +#define MASK_BGEU 0x707f +#define MATCH_JALR 0x67 +#define MASK_JALR 0x707f +#define MATCH_JAL 0x6f +#define MASK_JAL 0x7f +#define MATCH_LUI 0x37 +#define MASK_LUI 0x7f +#define MATCH_AUIPC 0x17 +#define MASK_AUIPC 0x7f +#define MATCH_ADDI 0x13 +#define MASK_ADDI 0x707f +#define MATCH_SLLI 0x1013 +#define MASK_SLLI 0xfc00707f +#define MATCH_SLTI 0x2013 +#define MASK_SLTI 0x707f +#define MATCH_SLTIU 0x3013 +#define MASK_SLTIU 0x707f +#define MATCH_XORI 0x4013 +#define MASK_XORI 0x707f +#define MATCH_SRLI 0x5013 +#define MASK_SRLI 0xfc00707f +#define MATCH_SRAI 0x40005013 +#define MASK_SRAI 0xfc00707f +#define MATCH_ORI 0x6013 +#define MASK_ORI 0x707f +#define MATCH_ANDI 0x7013 +#define MASK_ANDI 0x707f +#define MATCH_ADD 0x33 +#define MASK_ADD 0xfe00707f +#define MATCH_SUB 0x40000033 +#define MASK_SUB 0xfe00707f +#define MATCH_SLL 0x1033 +#define MASK_SLL 0xfe00707f +#define MATCH_SLT 0x2033 +#define MASK_SLT 0xfe00707f +#define MATCH_SLTU 0x3033 +#define MASK_SLTU 0xfe00707f +#define MATCH_XOR 0x4033 +#define MASK_XOR 0xfe00707f +#define MATCH_SRL 0x5033 +#define MASK_SRL 0xfe00707f +#define MATCH_SRA 0x40005033 +#define MASK_SRA 0xfe00707f +#define MATCH_OR 0x6033 +#define MASK_OR 0xfe00707f +#define MATCH_AND 0x7033 +#define MASK_AND 0xfe00707f +#define MATCH_ADDIW 0x1b +#define MASK_ADDIW 0x707f +#define MATCH_SLLIW 0x101b +#define MASK_SLLIW 0xfe00707f +#define MATCH_SRLIW 0x501b +#define MASK_SRLIW 0xfe00707f +#define MATCH_SRAIW 0x4000501b +#define MASK_SRAIW 0xfe00707f +#define MATCH_ADDW 0x3b +#define MASK_ADDW 0xfe00707f +#define MATCH_SUBW 0x4000003b +#define MASK_SUBW 0xfe00707f +#define MATCH_SLLW 0x103b +#define MASK_SLLW 0xfe00707f +#define MATCH_SRLW 0x503b +#define MASK_SRLW 0xfe00707f +#define MATCH_SRAW 0x4000503b +#define MASK_SRAW 0xfe00707f +#define MATCH_LB 0x3 +#define MASK_LB 0x707f +#define MATCH_LH 0x1003 +#define MASK_LH 0x707f +#define MATCH_LW 0x2003 +#define MASK_LW 0x707f +#define MATCH_LD 0x3003 +#define MASK_LD 0x707f +#define MATCH_LBU 0x4003 +#define MASK_LBU 0x707f +#define MATCH_LHU 0x5003 +#define MASK_LHU 0x707f +#define MATCH_LWU 0x6003 +#define MASK_LWU 0x707f +#define MATCH_SB 0x23 +#define MASK_SB 0x707f +#define MATCH_SH 0x1023 +#define MASK_SH 0x707f +#define MATCH_SW 0x2023 +#define MASK_SW 0x707f +#define MATCH_SD 0x3023 +#define MASK_SD 0x707f +#define MATCH_FENCE 0xf +#define MASK_FENCE 0x707f +#define MATCH_FENCE_I 0x100f +#define MASK_FENCE_I 0x707f +#define MATCH_MUL 0x2000033 +#define MASK_MUL 0xfe00707f +#define MATCH_MULH 0x2001033 +#define MASK_MULH 0xfe00707f +#define MATCH_MULHSU 0x2002033 +#define MASK_MULHSU 0xfe00707f +#define MATCH_MULHU 0x2003033 +#define MASK_MULHU 0xfe00707f +#define MATCH_DIV 0x2004033 +#define MASK_DIV 0xfe00707f +#define MATCH_DIVU 0x2005033 +#define MASK_DIVU 0xfe00707f +#define MATCH_REM 0x2006033 +#define MASK_REM 0xfe00707f +#define MATCH_REMU 0x2007033 +#define MASK_REMU 0xfe00707f +#define MATCH_MULW 0x200003b +#define MASK_MULW 0xfe00707f +#define MATCH_DIVW 0x200403b +#define MASK_DIVW 0xfe00707f +#define MATCH_DIVUW 0x200503b +#define MASK_DIVUW 0xfe00707f +#define MATCH_REMW 0x200603b +#define MASK_REMW 0xfe00707f +#define MATCH_REMUW 0x200703b +#define MASK_REMUW 0xfe00707f +#define MATCH_AMOADD_W 0x202f +#define MASK_AMOADD_W 0xf800707f +#define MATCH_AMOXOR_W 0x2000202f +#define MASK_AMOXOR_W 0xf800707f +#define MATCH_AMOOR_W 0x4000202f +#define MASK_AMOOR_W 0xf800707f +#define MATCH_AMOAND_W 0x6000202f +#define MASK_AMOAND_W 0xf800707f +#define MATCH_AMOMIN_W 0x8000202f +#define MASK_AMOMIN_W 0xf800707f +#define MATCH_AMOMAX_W 0xa000202f +#define MASK_AMOMAX_W 0xf800707f +#define MATCH_AMOMINU_W 0xc000202f +#define MASK_AMOMINU_W 0xf800707f +#define MATCH_AMOMAXU_W 0xe000202f +#define MASK_AMOMAXU_W 0xf800707f +#define MATCH_AMOSWAP_W 0x800202f +#define MASK_AMOSWAP_W 0xf800707f +#define MATCH_LR_W 0x1000202f +#define MASK_LR_W 0xf9f0707f +#define MATCH_SC_W 0x1800202f +#define MASK_SC_W 0xf800707f +#define MATCH_AMOADD_D 0x302f +#define MASK_AMOADD_D 0xf800707f +#define MATCH_AMOXOR_D 0x2000302f +#define MASK_AMOXOR_D 0xf800707f +#define MATCH_AMOOR_D 0x4000302f +#define MASK_AMOOR_D 0xf800707f +#define MATCH_AMOAND_D 0x6000302f +#define MASK_AMOAND_D 0xf800707f +#define MATCH_AMOMIN_D 0x8000302f +#define MASK_AMOMIN_D 0xf800707f +#define MATCH_AMOMAX_D 0xa000302f +#define MASK_AMOMAX_D 0xf800707f +#define MATCH_AMOMINU_D 0xc000302f +#define MASK_AMOMINU_D 0xf800707f +#define MATCH_AMOMAXU_D 0xe000302f +#define MASK_AMOMAXU_D 0xf800707f +#define MATCH_AMOSWAP_D 0x800302f +#define MASK_AMOSWAP_D 0xf800707f +#define MATCH_LR_D 0x1000302f +#define MASK_LR_D 0xf9f0707f +#define MATCH_SC_D 0x1800302f +#define MASK_SC_D 0xf800707f +#define MATCH_ECALL 0x73 +#define MASK_ECALL 0xffffffff +#define MATCH_EBREAK 0x100073 +#define MASK_EBREAK 0xffffffff +#define MATCH_URET 0x200073 +#define MASK_URET 0xffffffff +#define MATCH_SRET 0x10200073 +#define MASK_SRET 0xffffffff +#define MATCH_HRET 0x20200073 +#define MASK_HRET 0xffffffff +#define MATCH_MRET 0x30200073 +#define MASK_MRET 0xffffffff +#define MATCH_DRET 0x7b200073 +#define MASK_DRET 0xffffffff +#define MATCH_SFENCE_VM 0x10400073 +#define MASK_SFENCE_VM 0xfff07fff +#define MATCH_WFI 0x10500073 +#define MASK_WFI 0xffffffff +#define MATCH_CSRRW 0x1073 +#define MASK_CSRRW 0x707f +#define MATCH_CSRRS 0x2073 +#define MASK_CSRRS 0x707f +#define MATCH_CSRRC 0x3073 +#define MASK_CSRRC 0x707f +#define MATCH_CSRRWI 0x5073 +#define MASK_CSRRWI 0x707f +#define MATCH_CSRRSI 0x6073 +#define MASK_CSRRSI 0x707f +#define MATCH_CSRRCI 0x7073 +#define MASK_CSRRCI 0x707f +#define MATCH_FADD_S 0x53 +#define MASK_FADD_S 0xfe00007f +#define MATCH_FSUB_S 0x8000053 +#define MASK_FSUB_S 0xfe00007f +#define MATCH_FMUL_S 0x10000053 +#define MASK_FMUL_S 0xfe00007f +#define MATCH_FDIV_S 0x18000053 +#define MASK_FDIV_S 0xfe00007f +#define MATCH_FSGNJ_S 0x20000053 +#define MASK_FSGNJ_S 0xfe00707f +#define MATCH_FSGNJN_S 0x20001053 +#define MASK_FSGNJN_S 0xfe00707f +#define MATCH_FSGNJX_S 0x20002053 +#define MASK_FSGNJX_S 0xfe00707f +#define MATCH_FMIN_S 0x28000053 +#define MASK_FMIN_S 0xfe00707f +#define MATCH_FMAX_S 0x28001053 +#define MASK_FMAX_S 0xfe00707f +#define MATCH_FSQRT_S 0x58000053 +#define MASK_FSQRT_S 0xfff0007f +#define MATCH_FADD_D 0x2000053 +#define MASK_FADD_D 0xfe00007f +#define MATCH_FSUB_D 0xa000053 +#define MASK_FSUB_D 0xfe00007f +#define MATCH_FMUL_D 0x12000053 +#define MASK_FMUL_D 0xfe00007f +#define MATCH_FDIV_D 0x1a000053 +#define MASK_FDIV_D 0xfe00007f +#define MATCH_FSGNJ_D 0x22000053 +#define MASK_FSGNJ_D 0xfe00707f +#define MATCH_FSGNJN_D 0x22001053 +#define MASK_FSGNJN_D 0xfe00707f +#define MATCH_FSGNJX_D 0x22002053 +#define MASK_FSGNJX_D 0xfe00707f +#define MATCH_FMIN_D 0x2a000053 +#define MASK_FMIN_D 0xfe00707f +#define MATCH_FMAX_D 0x2a001053 +#define MASK_FMAX_D 0xfe00707f +#define MATCH_FCVT_S_D 0x40100053 +#define MASK_FCVT_S_D 0xfff0007f +#define MATCH_FCVT_D_S 0x42000053 +#define MASK_FCVT_D_S 0xfff0007f +#define MATCH_FSQRT_D 0x5a000053 +#define MASK_FSQRT_D 0xfff0007f +#define MATCH_FLE_S 0xa0000053 +#define MASK_FLE_S 0xfe00707f +#define MATCH_FLT_S 0xa0001053 +#define MASK_FLT_S 0xfe00707f +#define MATCH_FEQ_S 0xa0002053 +#define MASK_FEQ_S 0xfe00707f +#define MATCH_FLE_D 0xa2000053 +#define MASK_FLE_D 0xfe00707f +#define MATCH_FLT_D 0xa2001053 +#define MASK_FLT_D 0xfe00707f +#define MATCH_FEQ_D 0xa2002053 +#define MASK_FEQ_D 0xfe00707f +#define MATCH_FCVT_W_S 0xc0000053 +#define MASK_FCVT_W_S 0xfff0007f +#define MATCH_FCVT_WU_S 0xc0100053 +#define MASK_FCVT_WU_S 0xfff0007f +#define MATCH_FCVT_L_S 0xc0200053 +#define MASK_FCVT_L_S 0xfff0007f +#define MATCH_FCVT_LU_S 0xc0300053 +#define MASK_FCVT_LU_S 0xfff0007f +#define MATCH_FMV_X_S 0xe0000053 +#define MASK_FMV_X_S 0xfff0707f +#define MATCH_FCLASS_S 0xe0001053 +#define MASK_FCLASS_S 0xfff0707f +#define MATCH_FCVT_W_D 0xc2000053 +#define MASK_FCVT_W_D 0xfff0007f +#define MATCH_FCVT_WU_D 0xc2100053 +#define MASK_FCVT_WU_D 0xfff0007f +#define MATCH_FCVT_L_D 0xc2200053 +#define MASK_FCVT_L_D 0xfff0007f +#define MATCH_FCVT_LU_D 0xc2300053 +#define MASK_FCVT_LU_D 0xfff0007f +#define MATCH_FMV_X_D 0xe2000053 +#define MASK_FMV_X_D 0xfff0707f +#define MATCH_FCLASS_D 0xe2001053 +#define MASK_FCLASS_D 0xfff0707f +#define MATCH_FCVT_S_W 0xd0000053 +#define MASK_FCVT_S_W 0xfff0007f +#define MATCH_FCVT_S_WU 0xd0100053 +#define MASK_FCVT_S_WU 0xfff0007f +#define MATCH_FCVT_S_L 0xd0200053 +#define MASK_FCVT_S_L 0xfff0007f +#define MATCH_FCVT_S_LU 0xd0300053 +#define MASK_FCVT_S_LU 0xfff0007f +#define MATCH_FMV_S_X 0xf0000053 +#define MASK_FMV_S_X 0xfff0707f +#define MATCH_FCVT_D_W 0xd2000053 +#define MASK_FCVT_D_W 0xfff0007f +#define MATCH_FCVT_D_WU 0xd2100053 +#define MASK_FCVT_D_WU 0xfff0007f +#define MATCH_FCVT_D_L 0xd2200053 +#define MASK_FCVT_D_L 0xfff0007f +#define MATCH_FCVT_D_LU 0xd2300053 +#define MASK_FCVT_D_LU 0xfff0007f +#define MATCH_FMV_D_X 0xf2000053 +#define MASK_FMV_D_X 0xfff0707f +#define MATCH_FLW 0x2007 +#define MASK_FLW 0x707f +#define MATCH_FLD 0x3007 +#define MASK_FLD 0x707f +#define MATCH_FSW 0x2027 +#define MASK_FSW 0x707f +#define MATCH_FSD 0x3027 +#define MASK_FSD 0x707f +#define MATCH_FMADD_S 0x43 +#define MASK_FMADD_S 0x600007f +#define MATCH_FMSUB_S 0x47 +#define MASK_FMSUB_S 0x600007f +#define MATCH_FNMSUB_S 0x4b +#define MASK_FNMSUB_S 0x600007f +#define MATCH_FNMADD_S 0x4f +#define MASK_FNMADD_S 0x600007f +#define MATCH_FMADD_D 0x2000043 +#define MASK_FMADD_D 0x600007f +#define MATCH_FMSUB_D 0x2000047 +#define MASK_FMSUB_D 0x600007f +#define MATCH_FNMSUB_D 0x200004b +#define MASK_FNMSUB_D 0x600007f +#define MATCH_FNMADD_D 0x200004f +#define MASK_FNMADD_D 0x600007f +#define MATCH_C_NOP 0x1 +#define MASK_C_NOP 0xffff +#define MATCH_C_ADDI16SP 0x6101 +#define MASK_C_ADDI16SP 0xef83 +#define MATCH_C_JR 0x8002 +#define MASK_C_JR 0xf07f +#define MATCH_C_JALR 0x9002 +#define MASK_C_JALR 0xf07f +#define MATCH_C_EBREAK 0x9002 +#define MASK_C_EBREAK 0xffff +#define MATCH_C_LD 0x6000 +#define MASK_C_LD 0xe003 +#define MATCH_C_SD 0xe000 +#define MASK_C_SD 0xe003 +#define MATCH_C_ADDIW 0x2001 +#define MASK_C_ADDIW 0xe003 +#define MATCH_C_LDSP 0x6002 +#define MASK_C_LDSP 0xe003 +#define MATCH_C_SDSP 0xe002 +#define MASK_C_SDSP 0xe003 +#define MATCH_C_ADDI4SPN 0x0 +#define MASK_C_ADDI4SPN 0xe003 +#define MATCH_C_FLD 0x2000 +#define MASK_C_FLD 0xe003 +#define MATCH_C_LW 0x4000 +#define MASK_C_LW 0xe003 +#define MATCH_C_FLW 0x6000 +#define MASK_C_FLW 0xe003 +#define MATCH_C_FSD 0xa000 +#define MASK_C_FSD 0xe003 +#define MATCH_C_SW 0xc000 +#define MASK_C_SW 0xe003 +#define MATCH_C_FSW 0xe000 +#define MASK_C_FSW 0xe003 +#define MATCH_C_ADDI 0x1 +#define MASK_C_ADDI 0xe003 +#define MATCH_C_JAL 0x2001 +#define MASK_C_JAL 0xe003 +#define MATCH_C_LI 0x4001 +#define MASK_C_LI 0xe003 +#define MATCH_C_LUI 0x6001 +#define MASK_C_LUI 0xe003 +#define MATCH_C_SRLI 0x8001 +#define MASK_C_SRLI 0xec03 +#define MATCH_C_SRAI 0x8401 +#define MASK_C_SRAI 0xec03 +#define MATCH_C_ANDI 0x8801 +#define MASK_C_ANDI 0xec03 +#define MATCH_C_SUB 0x8c01 +#define MASK_C_SUB 0xfc63 +#define MATCH_C_XOR 0x8c21 +#define MASK_C_XOR 0xfc63 +#define MATCH_C_OR 0x8c41 +#define MASK_C_OR 0xfc63 +#define MATCH_C_AND 0x8c61 +#define MASK_C_AND 0xfc63 +#define MATCH_C_SUBW 0x9c01 +#define MASK_C_SUBW 0xfc63 +#define MATCH_C_ADDW 0x9c21 +#define MASK_C_ADDW 0xfc63 +#define MATCH_C_J 0xa001 +#define MASK_C_J 0xe003 +#define MATCH_C_BEQZ 0xc001 +#define MASK_C_BEQZ 0xe003 +#define MATCH_C_BNEZ 0xe001 +#define MASK_C_BNEZ 0xe003 +#define MATCH_C_SLLI 0x2 +#define MASK_C_SLLI 0xe003 +#define MATCH_C_FLDSP 0x2002 +#define MASK_C_FLDSP 0xe003 +#define MATCH_C_LWSP 0x4002 +#define MASK_C_LWSP 0xe003 +#define MATCH_C_FLWSP 0x6002 +#define MASK_C_FLWSP 0xe003 +#define MATCH_C_MV 0x8002 +#define MASK_C_MV 0xf003 +#define MATCH_C_ADD 0x9002 +#define MASK_C_ADD 0xf003 +#define MATCH_C_FSDSP 0xa002 +#define MASK_C_FSDSP 0xe003 +#define MATCH_C_SWSP 0xc002 +#define MASK_C_SWSP 0xe003 +#define MATCH_C_FSWSP 0xe002 +#define MASK_C_FSWSP 0xe003 +#define MATCH_CUSTOM0 0xb +#define MASK_CUSTOM0 0x707f +#define MATCH_CUSTOM0_RS1 0x200b +#define MASK_CUSTOM0_RS1 0x707f +#define MATCH_CUSTOM0_RS1_RS2 0x300b +#define MASK_CUSTOM0_RS1_RS2 0x707f +#define MATCH_CUSTOM0_RD 0x400b +#define MASK_CUSTOM0_RD 0x707f +#define MATCH_CUSTOM0_RD_RS1 0x600b +#define MASK_CUSTOM0_RD_RS1 0x707f +#define MATCH_CUSTOM0_RD_RS1_RS2 0x700b +#define MASK_CUSTOM0_RD_RS1_RS2 0x707f +#define MATCH_CUSTOM1 0x2b +#define MASK_CUSTOM1 0x707f +#define MATCH_CUSTOM1_RS1 0x202b +#define MASK_CUSTOM1_RS1 0x707f +#define MATCH_CUSTOM1_RS1_RS2 0x302b +#define MASK_CUSTOM1_RS1_RS2 0x707f +#define MATCH_CUSTOM1_RD 0x402b +#define MASK_CUSTOM1_RD 0x707f +#define MATCH_CUSTOM1_RD_RS1 0x602b +#define MASK_CUSTOM1_RD_RS1 0x707f +#define MATCH_CUSTOM1_RD_RS1_RS2 0x702b +#define MASK_CUSTOM1_RD_RS1_RS2 0x707f +#define MATCH_CUSTOM2 0x5b +#define MASK_CUSTOM2 0x707f +#define MATCH_CUSTOM2_RS1 0x205b +#define MASK_CUSTOM2_RS1 0x707f +#define MATCH_CUSTOM2_RS1_RS2 0x305b +#define MASK_CUSTOM2_RS1_RS2 0x707f +#define MATCH_CUSTOM2_RD 0x405b +#define MASK_CUSTOM2_RD 0x707f +#define MATCH_CUSTOM2_RD_RS1 0x605b +#define MASK_CUSTOM2_RD_RS1 0x707f +#define MATCH_CUSTOM2_RD_RS1_RS2 0x705b +#define MASK_CUSTOM2_RD_RS1_RS2 0x707f +#define MATCH_CUSTOM3 0x7b +#define MASK_CUSTOM3 0x707f +#define MATCH_CUSTOM3_RS1 0x207b +#define MASK_CUSTOM3_RS1 0x707f +#define MATCH_CUSTOM3_RS1_RS2 0x307b +#define MASK_CUSTOM3_RS1_RS2 0x707f +#define MATCH_CUSTOM3_RD 0x407b +#define MASK_CUSTOM3_RD 0x707f +#define MATCH_CUSTOM3_RD_RS1 0x607b +#define MASK_CUSTOM3_RD_RS1 0x707f +#define MATCH_CUSTOM3_RD_RS1_RS2 0x707b +#define MASK_CUSTOM3_RD_RS1_RS2 0x707f +#define CSR_FFLAGS 0x1 +#define CSR_FRM 0x2 +#define CSR_FCSR 0x3 +#define CSR_CYCLE 0xc00 +#define CSR_TIME 0xc01 +#define CSR_INSTRET 0xc02 +#define CSR_HPMCOUNTER3 0xc03 +#define CSR_HPMCOUNTER4 0xc04 +#define CSR_HPMCOUNTER5 0xc05 +#define CSR_HPMCOUNTER6 0xc06 +#define CSR_HPMCOUNTER7 0xc07 +#define CSR_HPMCOUNTER8 0xc08 +#define CSR_HPMCOUNTER9 0xc09 +#define CSR_HPMCOUNTER10 0xc0a +#define CSR_HPMCOUNTER11 0xc0b +#define CSR_HPMCOUNTER12 0xc0c +#define CSR_HPMCOUNTER13 0xc0d +#define CSR_HPMCOUNTER14 0xc0e +#define CSR_HPMCOUNTER15 0xc0f +#define CSR_HPMCOUNTER16 0xc10 +#define CSR_HPMCOUNTER17 0xc11 +#define CSR_HPMCOUNTER18 0xc12 +#define CSR_HPMCOUNTER19 0xc13 +#define CSR_HPMCOUNTER20 0xc14 +#define CSR_HPMCOUNTER21 0xc15 +#define CSR_HPMCOUNTER22 0xc16 +#define CSR_HPMCOUNTER23 0xc17 +#define CSR_HPMCOUNTER24 0xc18 +#define CSR_HPMCOUNTER25 0xc19 +#define CSR_HPMCOUNTER26 0xc1a +#define CSR_HPMCOUNTER27 0xc1b +#define CSR_HPMCOUNTER28 0xc1c +#define CSR_HPMCOUNTER29 0xc1d +#define CSR_HPMCOUNTER30 0xc1e +#define CSR_HPMCOUNTER31 0xc1f +#define CSR_SSTATUS 0x100 +#define CSR_SIE 0x104 +#define CSR_STVEC 0x105 +#define CSR_SSCRATCH 0x140 +#define CSR_SEPC 0x141 +#define CSR_SCAUSE 0x142 +#define CSR_SBADADDR 0x143 +#define CSR_SIP 0x144 +#define CSR_SPTBR 0x180 +#define CSR_MSTATUS 0x300 +#define CSR_MISA 0x301 +#define CSR_MEDELEG 0x302 +#define CSR_MIDELEG 0x303 +#define CSR_MIE 0x304 +#define CSR_MTVEC 0x305 +#define CSR_MCOUNTEREN 0x306 +#define CSR_MSCRATCH 0x340 +#define CSR_MEPC 0x341 +#define CSR_MCAUSE 0x342 +#define CSR_MBADADDR 0x343 +#define CSR_MIP 0x344 +#define CSR_TSELECT 0x7a0 +#define CSR_TDATA1 0x7a1 +#define CSR_TDATA2 0x7a2 +#define CSR_TDATA3 0x7a3 +#define CSR_DCSR 0x7b0 +#define CSR_DPC 0x7b1 +#define CSR_DSCRATCH 0x7b2 +#define CSR_MCYCLE 0xb00 +#define CSR_MINSTRET 0xb02 +#define CSR_MHPMCOUNTER3 0xb03 +#define CSR_MHPMCOUNTER4 0xb04 +#define CSR_MHPMCOUNTER5 0xb05 +#define CSR_MHPMCOUNTER6 0xb06 +#define CSR_MHPMCOUNTER7 0xb07 +#define CSR_MHPMCOUNTER8 0xb08 +#define CSR_MHPMCOUNTER9 0xb09 +#define CSR_MHPMCOUNTER10 0xb0a +#define CSR_MHPMCOUNTER11 0xb0b +#define CSR_MHPMCOUNTER12 0xb0c +#define CSR_MHPMCOUNTER13 0xb0d +#define CSR_MHPMCOUNTER14 0xb0e +#define CSR_MHPMCOUNTER15 0xb0f +#define CSR_MHPMCOUNTER16 0xb10 +#define CSR_MHPMCOUNTER17 0xb11 +#define CSR_MHPMCOUNTER18 0xb12 +#define CSR_MHPMCOUNTER19 0xb13 +#define CSR_MHPMCOUNTER20 0xb14 +#define CSR_MHPMCOUNTER21 0xb15 +#define CSR_MHPMCOUNTER22 0xb16 +#define CSR_MHPMCOUNTER23 0xb17 +#define CSR_MHPMCOUNTER24 0xb18 +#define CSR_MHPMCOUNTER25 0xb19 +#define CSR_MHPMCOUNTER26 0xb1a +#define CSR_MHPMCOUNTER27 0xb1b +#define CSR_MHPMCOUNTER28 0xb1c +#define CSR_MHPMCOUNTER29 0xb1d +#define CSR_MHPMCOUNTER30 0xb1e +#define CSR_MHPMCOUNTER31 0xb1f +#define CSR_MUCOUNTEREN 0x320 +#define CSR_MSCOUNTEREN 0x321 +#define CSR_MHPMEVENT3 0x323 +#define CSR_MHPMEVENT4 0x324 +#define CSR_MHPMEVENT5 0x325 +#define CSR_MHPMEVENT6 0x326 +#define CSR_MHPMEVENT7 0x327 +#define CSR_MHPMEVENT8 0x328 +#define CSR_MHPMEVENT9 0x329 +#define CSR_MHPMEVENT10 0x32a +#define CSR_MHPMEVENT11 0x32b +#define CSR_MHPMEVENT12 0x32c +#define CSR_MHPMEVENT13 0x32d +#define CSR_MHPMEVENT14 0x32e +#define CSR_MHPMEVENT15 0x32f +#define CSR_MHPMEVENT16 0x330 +#define CSR_MHPMEVENT17 0x331 +#define CSR_MHPMEVENT18 0x332 +#define CSR_MHPMEVENT19 0x333 +#define CSR_MHPMEVENT20 0x334 +#define CSR_MHPMEVENT21 0x335 +#define CSR_MHPMEVENT22 0x336 +#define CSR_MHPMEVENT23 0x337 +#define CSR_MHPMEVENT24 0x338 +#define CSR_MHPMEVENT25 0x339 +#define CSR_MHPMEVENT26 0x33a +#define CSR_MHPMEVENT27 0x33b +#define CSR_MHPMEVENT28 0x33c +#define CSR_MHPMEVENT29 0x33d +#define CSR_MHPMEVENT30 0x33e +#define CSR_MHPMEVENT31 0x33f +#define CSR_MVENDORID 0xf11 +#define CSR_MARCHID 0xf12 +#define CSR_MIMPID 0xf13 +#define CSR_MHARTID 0xf14 +#define CSR_CYCLEH 0xc80 +#define CSR_TIMEH 0xc81 +#define CSR_INSTRETH 0xc82 +#define CSR_HPMCOUNTER3H 0xc83 +#define CSR_HPMCOUNTER4H 0xc84 +#define CSR_HPMCOUNTER5H 0xc85 +#define CSR_HPMCOUNTER6H 0xc86 +#define CSR_HPMCOUNTER7H 0xc87 +#define CSR_HPMCOUNTER8H 0xc88 +#define CSR_HPMCOUNTER9H 0xc89 +#define CSR_HPMCOUNTER10H 0xc8a +#define CSR_HPMCOUNTER11H 0xc8b +#define CSR_HPMCOUNTER12H 0xc8c +#define CSR_HPMCOUNTER13H 0xc8d +#define CSR_HPMCOUNTER14H 0xc8e +#define CSR_HPMCOUNTER15H 0xc8f +#define CSR_HPMCOUNTER16H 0xc90 +#define CSR_HPMCOUNTER17H 0xc91 +#define CSR_HPMCOUNTER18H 0xc92 +#define CSR_HPMCOUNTER19H 0xc93 +#define CSR_HPMCOUNTER20H 0xc94 +#define CSR_HPMCOUNTER21H 0xc95 +#define CSR_HPMCOUNTER22H 0xc96 +#define CSR_HPMCOUNTER23H 0xc97 +#define CSR_HPMCOUNTER24H 0xc98 +#define CSR_HPMCOUNTER25H 0xc99 +#define CSR_HPMCOUNTER26H 0xc9a +#define CSR_HPMCOUNTER27H 0xc9b +#define CSR_HPMCOUNTER28H 0xc9c +#define CSR_HPMCOUNTER29H 0xc9d +#define CSR_HPMCOUNTER30H 0xc9e +#define CSR_HPMCOUNTER31H 0xc9f +#define CSR_MCYCLEH 0xb80 +#define CSR_MINSTRETH 0xb82 +#define CSR_MHPMCOUNTER3H 0xb83 +#define CSR_MHPMCOUNTER4H 0xb84 +#define CSR_MHPMCOUNTER5H 0xb85 +#define CSR_MHPMCOUNTER6H 0xb86 +#define CSR_MHPMCOUNTER7H 0xb87 +#define CSR_MHPMCOUNTER8H 0xb88 +#define CSR_MHPMCOUNTER9H 0xb89 +#define CSR_MHPMCOUNTER10H 0xb8a +#define CSR_MHPMCOUNTER11H 0xb8b +#define CSR_MHPMCOUNTER12H 0xb8c +#define CSR_MHPMCOUNTER13H 0xb8d +#define CSR_MHPMCOUNTER14H 0xb8e +#define CSR_MHPMCOUNTER15H 0xb8f +#define CSR_MHPMCOUNTER16H 0xb90 +#define CSR_MHPMCOUNTER17H 0xb91 +#define CSR_MHPMCOUNTER18H 0xb92 +#define CSR_MHPMCOUNTER19H 0xb93 +#define CSR_MHPMCOUNTER20H 0xb94 +#define CSR_MHPMCOUNTER21H 0xb95 +#define CSR_MHPMCOUNTER22H 0xb96 +#define CSR_MHPMCOUNTER23H 0xb97 +#define CSR_MHPMCOUNTER24H 0xb98 +#define CSR_MHPMCOUNTER25H 0xb99 +#define CSR_MHPMCOUNTER26H 0xb9a +#define CSR_MHPMCOUNTER27H 0xb9b +#define CSR_MHPMCOUNTER28H 0xb9c +#define CSR_MHPMCOUNTER29H 0xb9d +#define CSR_MHPMCOUNTER30H 0xb9e +#define CSR_MHPMCOUNTER31H 0xb9f + + +#define CSR_MTVT 0x307 +#define CSR_MNXTI 0x345 + +#define CSR_MCOUNTINHIBIT 0x320 + +#define CSR_MNVEC 0x7C3 + +#define CSR_MTVT2 0x7EC +#define CSR_JALMNXTI 0x7ED +#define CSR_PUSHMCAUSE 0x7EE +#define CSR_PUSHMEPC 0x7EF +#define CSR_PUSHMSUBM 0x7EB + +#define CSR_WFE 0x810 +#define CSR_SLEEPVALUE 0x811 +#define CSR_TXEVT 0x812 + +#define CSR_MMISC_CTL 0x7d0 +#define CSR_MSUBM 0x7c4 + + +#define CAUSE_MISALIGNED_FETCH 0x0 +#define CAUSE_FAULT_FETCH 0x1 +#define CAUSE_ILLEGAL_INSTRUCTION 0x2 +#define CAUSE_BREAKPOINT 0x3 +#define CAUSE_MISALIGNED_LOAD 0x4 +#define CAUSE_FAULT_LOAD 0x5 +#define CAUSE_MISALIGNED_STORE 0x6 +#define CAUSE_FAULT_STORE 0x7 +#define CAUSE_USER_ECALL 0x8 +#define CAUSE_SUPERVISOR_ECALL 0x9 +#define CAUSE_HYPERVISOR_ECALL 0xa +#define CAUSE_MACHINE_ECALL 0xb +#endif +#ifdef DECLARE_INSN +DECLARE_INSN(beq, MATCH_BEQ, MASK_BEQ) +DECLARE_INSN(bne, MATCH_BNE, MASK_BNE) +DECLARE_INSN(blt, MATCH_BLT, MASK_BLT) +DECLARE_INSN(bge, MATCH_BGE, MASK_BGE) +DECLARE_INSN(bltu, MATCH_BLTU, MASK_BLTU) +DECLARE_INSN(bgeu, MATCH_BGEU, MASK_BGEU) +DECLARE_INSN(jalr, MATCH_JALR, MASK_JALR) +DECLARE_INSN(jal, MATCH_JAL, MASK_JAL) +DECLARE_INSN(lui, MATCH_LUI, MASK_LUI) +DECLARE_INSN(auipc, MATCH_AUIPC, MASK_AUIPC) +DECLARE_INSN(addi, MATCH_ADDI, MASK_ADDI) +DECLARE_INSN(slli, MATCH_SLLI, MASK_SLLI) +DECLARE_INSN(slti, MATCH_SLTI, MASK_SLTI) +DECLARE_INSN(sltiu, MATCH_SLTIU, MASK_SLTIU) +DECLARE_INSN(xori, MATCH_XORI, MASK_XORI) +DECLARE_INSN(srli, MATCH_SRLI, MASK_SRLI) +DECLARE_INSN(srai, MATCH_SRAI, MASK_SRAI) +DECLARE_INSN(ori, MATCH_ORI, MASK_ORI) +DECLARE_INSN(andi, MATCH_ANDI, MASK_ANDI) +DECLARE_INSN(add, MATCH_ADD, MASK_ADD) +DECLARE_INSN(sub, MATCH_SUB, MASK_SUB) +DECLARE_INSN(sll, MATCH_SLL, MASK_SLL) +DECLARE_INSN(slt, MATCH_SLT, MASK_SLT) +DECLARE_INSN(sltu, MATCH_SLTU, MASK_SLTU) +DECLARE_INSN(xor, MATCH_XOR, MASK_XOR) +DECLARE_INSN(srl, MATCH_SRL, MASK_SRL) +DECLARE_INSN(sra, MATCH_SRA, MASK_SRA) +DECLARE_INSN(or, MATCH_OR, MASK_OR) +DECLARE_INSN(and, MATCH_AND, MASK_AND) +DECLARE_INSN(addiw, MATCH_ADDIW, MASK_ADDIW) +DECLARE_INSN(slliw, MATCH_SLLIW, MASK_SLLIW) +DECLARE_INSN(srliw, MATCH_SRLIW, MASK_SRLIW) +DECLARE_INSN(sraiw, MATCH_SRAIW, MASK_SRAIW) +DECLARE_INSN(addw, MATCH_ADDW, MASK_ADDW) +DECLARE_INSN(subw, MATCH_SUBW, MASK_SUBW) +DECLARE_INSN(sllw, MATCH_SLLW, MASK_SLLW) +DECLARE_INSN(srlw, MATCH_SRLW, MASK_SRLW) +DECLARE_INSN(sraw, MATCH_SRAW, MASK_SRAW) +DECLARE_INSN(lb, MATCH_LB, MASK_LB) +DECLARE_INSN(lh, MATCH_LH, MASK_LH) +DECLARE_INSN(lw, MATCH_LW, MASK_LW) +DECLARE_INSN(ld, MATCH_LD, MASK_LD) +DECLARE_INSN(lbu, MATCH_LBU, MASK_LBU) +DECLARE_INSN(lhu, MATCH_LHU, MASK_LHU) +DECLARE_INSN(lwu, MATCH_LWU, MASK_LWU) +DECLARE_INSN(sb, MATCH_SB, MASK_SB) +DECLARE_INSN(sh, MATCH_SH, MASK_SH) +DECLARE_INSN(sw, MATCH_SW, MASK_SW) +DECLARE_INSN(sd, MATCH_SD, MASK_SD) +DECLARE_INSN(fence, MATCH_FENCE, MASK_FENCE) +DECLARE_INSN(fence_i, MATCH_FENCE_I, MASK_FENCE_I) +DECLARE_INSN(mul, MATCH_MUL, MASK_MUL) +DECLARE_INSN(mulh, MATCH_MULH, MASK_MULH) +DECLARE_INSN(mulhsu, MATCH_MULHSU, MASK_MULHSU) +DECLARE_INSN(mulhu, MATCH_MULHU, MASK_MULHU) +DECLARE_INSN(div, MATCH_DIV, MASK_DIV) +DECLARE_INSN(divu, MATCH_DIVU, MASK_DIVU) +DECLARE_INSN(rem, MATCH_REM, MASK_REM) +DECLARE_INSN(remu, MATCH_REMU, MASK_REMU) +DECLARE_INSN(mulw, MATCH_MULW, MASK_MULW) +DECLARE_INSN(divw, MATCH_DIVW, MASK_DIVW) +DECLARE_INSN(divuw, MATCH_DIVUW, MASK_DIVUW) +DECLARE_INSN(remw, MATCH_REMW, MASK_REMW) +DECLARE_INSN(remuw, MATCH_REMUW, MASK_REMUW) +DECLARE_INSN(amoadd_w, MATCH_AMOADD_W, MASK_AMOADD_W) +DECLARE_INSN(amoxor_w, MATCH_AMOXOR_W, MASK_AMOXOR_W) +DECLARE_INSN(amoor_w, MATCH_AMOOR_W, MASK_AMOOR_W) +DECLARE_INSN(amoand_w, MATCH_AMOAND_W, MASK_AMOAND_W) +DECLARE_INSN(amomin_w, MATCH_AMOMIN_W, MASK_AMOMIN_W) +DECLARE_INSN(amomax_w, MATCH_AMOMAX_W, MASK_AMOMAX_W) +DECLARE_INSN(amominu_w, MATCH_AMOMINU_W, MASK_AMOMINU_W) +DECLARE_INSN(amomaxu_w, MATCH_AMOMAXU_W, MASK_AMOMAXU_W) +DECLARE_INSN(amoswap_w, MATCH_AMOSWAP_W, MASK_AMOSWAP_W) +DECLARE_INSN(lr_w, MATCH_LR_W, MASK_LR_W) +DECLARE_INSN(sc_w, MATCH_SC_W, MASK_SC_W) +DECLARE_INSN(amoadd_d, MATCH_AMOADD_D, MASK_AMOADD_D) +DECLARE_INSN(amoxor_d, MATCH_AMOXOR_D, MASK_AMOXOR_D) +DECLARE_INSN(amoor_d, MATCH_AMOOR_D, MASK_AMOOR_D) +DECLARE_INSN(amoand_d, MATCH_AMOAND_D, MASK_AMOAND_D) +DECLARE_INSN(amomin_d, MATCH_AMOMIN_D, MASK_AMOMIN_D) +DECLARE_INSN(amomax_d, MATCH_AMOMAX_D, MASK_AMOMAX_D) +DECLARE_INSN(amominu_d, MATCH_AMOMINU_D, MASK_AMOMINU_D) +DECLARE_INSN(amomaxu_d, MATCH_AMOMAXU_D, MASK_AMOMAXU_D) +DECLARE_INSN(amoswap_d, MATCH_AMOSWAP_D, MASK_AMOSWAP_D) +DECLARE_INSN(lr_d, MATCH_LR_D, MASK_LR_D) +DECLARE_INSN(sc_d, MATCH_SC_D, MASK_SC_D) +DECLARE_INSN(ecall, MATCH_ECALL, MASK_ECALL) +DECLARE_INSN(ebreak, MATCH_EBREAK, MASK_EBREAK) +DECLARE_INSN(uret, MATCH_URET, MASK_URET) +DECLARE_INSN(sret, MATCH_SRET, MASK_SRET) +DECLARE_INSN(hret, MATCH_HRET, MASK_HRET) +DECLARE_INSN(mret, MATCH_MRET, MASK_MRET) +DECLARE_INSN(dret, MATCH_DRET, MASK_DRET) +DECLARE_INSN(sfence_vm, MATCH_SFENCE_VM, MASK_SFENCE_VM) +DECLARE_INSN(wfi, MATCH_WFI, MASK_WFI) +DECLARE_INSN(csrrw, MATCH_CSRRW, MASK_CSRRW) +DECLARE_INSN(csrrs, MATCH_CSRRS, MASK_CSRRS) +DECLARE_INSN(csrrc, MATCH_CSRRC, MASK_CSRRC) +DECLARE_INSN(csrrwi, MATCH_CSRRWI, MASK_CSRRWI) +DECLARE_INSN(csrrsi, MATCH_CSRRSI, MASK_CSRRSI) +DECLARE_INSN(csrrci, MATCH_CSRRCI, MASK_CSRRCI) +DECLARE_INSN(fadd_s, MATCH_FADD_S, MASK_FADD_S) +DECLARE_INSN(fsub_s, MATCH_FSUB_S, MASK_FSUB_S) +DECLARE_INSN(fmul_s, MATCH_FMUL_S, MASK_FMUL_S) +DECLARE_INSN(fdiv_s, MATCH_FDIV_S, MASK_FDIV_S) +DECLARE_INSN(fsgnj_s, MATCH_FSGNJ_S, MASK_FSGNJ_S) +DECLARE_INSN(fsgnjn_s, MATCH_FSGNJN_S, MASK_FSGNJN_S) +DECLARE_INSN(fsgnjx_s, MATCH_FSGNJX_S, MASK_FSGNJX_S) +DECLARE_INSN(fmin_s, MATCH_FMIN_S, MASK_FMIN_S) +DECLARE_INSN(fmax_s, MATCH_FMAX_S, MASK_FMAX_S) +DECLARE_INSN(fsqrt_s, MATCH_FSQRT_S, MASK_FSQRT_S) +DECLARE_INSN(fadd_d, MATCH_FADD_D, MASK_FADD_D) +DECLARE_INSN(fsub_d, MATCH_FSUB_D, MASK_FSUB_D) +DECLARE_INSN(fmul_d, MATCH_FMUL_D, MASK_FMUL_D) +DECLARE_INSN(fdiv_d, MATCH_FDIV_D, MASK_FDIV_D) +DECLARE_INSN(fsgnj_d, MATCH_FSGNJ_D, MASK_FSGNJ_D) +DECLARE_INSN(fsgnjn_d, MATCH_FSGNJN_D, MASK_FSGNJN_D) +DECLARE_INSN(fsgnjx_d, MATCH_FSGNJX_D, MASK_FSGNJX_D) +DECLARE_INSN(fmin_d, MATCH_FMIN_D, MASK_FMIN_D) +DECLARE_INSN(fmax_d, MATCH_FMAX_D, MASK_FMAX_D) +DECLARE_INSN(fcvt_s_d, MATCH_FCVT_S_D, MASK_FCVT_S_D) +DECLARE_INSN(fcvt_d_s, MATCH_FCVT_D_S, MASK_FCVT_D_S) +DECLARE_INSN(fsqrt_d, MATCH_FSQRT_D, MASK_FSQRT_D) +DECLARE_INSN(fle_s, MATCH_FLE_S, MASK_FLE_S) +DECLARE_INSN(flt_s, MATCH_FLT_S, MASK_FLT_S) +DECLARE_INSN(feq_s, MATCH_FEQ_S, MASK_FEQ_S) +DECLARE_INSN(fle_d, MATCH_FLE_D, MASK_FLE_D) +DECLARE_INSN(flt_d, MATCH_FLT_D, MASK_FLT_D) +DECLARE_INSN(feq_d, MATCH_FEQ_D, MASK_FEQ_D) +DECLARE_INSN(fcvt_w_s, MATCH_FCVT_W_S, MASK_FCVT_W_S) +DECLARE_INSN(fcvt_wu_s, MATCH_FCVT_WU_S, MASK_FCVT_WU_S) +DECLARE_INSN(fcvt_l_s, MATCH_FCVT_L_S, MASK_FCVT_L_S) +DECLARE_INSN(fcvt_lu_s, MATCH_FCVT_LU_S, MASK_FCVT_LU_S) +DECLARE_INSN(fmv_x_s, MATCH_FMV_X_S, MASK_FMV_X_S) +DECLARE_INSN(fclass_s, MATCH_FCLASS_S, MASK_FCLASS_S) +DECLARE_INSN(fcvt_w_d, MATCH_FCVT_W_D, MASK_FCVT_W_D) +DECLARE_INSN(fcvt_wu_d, MATCH_FCVT_WU_D, MASK_FCVT_WU_D) +DECLARE_INSN(fcvt_l_d, MATCH_FCVT_L_D, MASK_FCVT_L_D) +DECLARE_INSN(fcvt_lu_d, MATCH_FCVT_LU_D, MASK_FCVT_LU_D) +DECLARE_INSN(fmv_x_d, MATCH_FMV_X_D, MASK_FMV_X_D) +DECLARE_INSN(fclass_d, MATCH_FCLASS_D, MASK_FCLASS_D) +DECLARE_INSN(fcvt_s_w, MATCH_FCVT_S_W, MASK_FCVT_S_W) +DECLARE_INSN(fcvt_s_wu, MATCH_FCVT_S_WU, MASK_FCVT_S_WU) +DECLARE_INSN(fcvt_s_l, MATCH_FCVT_S_L, MASK_FCVT_S_L) +DECLARE_INSN(fcvt_s_lu, MATCH_FCVT_S_LU, MASK_FCVT_S_LU) +DECLARE_INSN(fmv_s_x, MATCH_FMV_S_X, MASK_FMV_S_X) +DECLARE_INSN(fcvt_d_w, MATCH_FCVT_D_W, MASK_FCVT_D_W) +DECLARE_INSN(fcvt_d_wu, MATCH_FCVT_D_WU, MASK_FCVT_D_WU) +DECLARE_INSN(fcvt_d_l, MATCH_FCVT_D_L, MASK_FCVT_D_L) +DECLARE_INSN(fcvt_d_lu, MATCH_FCVT_D_LU, MASK_FCVT_D_LU) +DECLARE_INSN(fmv_d_x, MATCH_FMV_D_X, MASK_FMV_D_X) +DECLARE_INSN(flw, MATCH_FLW, MASK_FLW) +DECLARE_INSN(fld, MATCH_FLD, MASK_FLD) +DECLARE_INSN(fsw, MATCH_FSW, MASK_FSW) +DECLARE_INSN(fsd, MATCH_FSD, MASK_FSD) +DECLARE_INSN(fmadd_s, MATCH_FMADD_S, MASK_FMADD_S) +DECLARE_INSN(fmsub_s, MATCH_FMSUB_S, MASK_FMSUB_S) +DECLARE_INSN(fnmsub_s, MATCH_FNMSUB_S, MASK_FNMSUB_S) +DECLARE_INSN(fnmadd_s, MATCH_FNMADD_S, MASK_FNMADD_S) +DECLARE_INSN(fmadd_d, MATCH_FMADD_D, MASK_FMADD_D) +DECLARE_INSN(fmsub_d, MATCH_FMSUB_D, MASK_FMSUB_D) +DECLARE_INSN(fnmsub_d, MATCH_FNMSUB_D, MASK_FNMSUB_D) +DECLARE_INSN(fnmadd_d, MATCH_FNMADD_D, MASK_FNMADD_D) +DECLARE_INSN(c_nop, MATCH_C_NOP, MASK_C_NOP) +DECLARE_INSN(c_addi16sp, MATCH_C_ADDI16SP, MASK_C_ADDI16SP) +DECLARE_INSN(c_jr, MATCH_C_JR, MASK_C_JR) +DECLARE_INSN(c_jalr, MATCH_C_JALR, MASK_C_JALR) +DECLARE_INSN(c_ebreak, MATCH_C_EBREAK, MASK_C_EBREAK) +DECLARE_INSN(c_ld, MATCH_C_LD, MASK_C_LD) +DECLARE_INSN(c_sd, MATCH_C_SD, MASK_C_SD) +DECLARE_INSN(c_addiw, MATCH_C_ADDIW, MASK_C_ADDIW) +DECLARE_INSN(c_ldsp, MATCH_C_LDSP, MASK_C_LDSP) +DECLARE_INSN(c_sdsp, MATCH_C_SDSP, MASK_C_SDSP) +DECLARE_INSN(c_addi4spn, MATCH_C_ADDI4SPN, MASK_C_ADDI4SPN) +DECLARE_INSN(c_fld, MATCH_C_FLD, MASK_C_FLD) +DECLARE_INSN(c_lw, MATCH_C_LW, MASK_C_LW) +DECLARE_INSN(c_flw, MATCH_C_FLW, MASK_C_FLW) +DECLARE_INSN(c_fsd, MATCH_C_FSD, MASK_C_FSD) +DECLARE_INSN(c_sw, MATCH_C_SW, MASK_C_SW) +DECLARE_INSN(c_fsw, MATCH_C_FSW, MASK_C_FSW) +DECLARE_INSN(c_addi, MATCH_C_ADDI, MASK_C_ADDI) +DECLARE_INSN(c_jal, MATCH_C_JAL, MASK_C_JAL) +DECLARE_INSN(c_li, MATCH_C_LI, MASK_C_LI) +DECLARE_INSN(c_lui, MATCH_C_LUI, MASK_C_LUI) +DECLARE_INSN(c_srli, MATCH_C_SRLI, MASK_C_SRLI) +DECLARE_INSN(c_srai, MATCH_C_SRAI, MASK_C_SRAI) +DECLARE_INSN(c_andi, MATCH_C_ANDI, MASK_C_ANDI) +DECLARE_INSN(c_sub, MATCH_C_SUB, MASK_C_SUB) +DECLARE_INSN(c_xor, MATCH_C_XOR, MASK_C_XOR) +DECLARE_INSN(c_or, MATCH_C_OR, MASK_C_OR) +DECLARE_INSN(c_and, MATCH_C_AND, MASK_C_AND) +DECLARE_INSN(c_subw, MATCH_C_SUBW, MASK_C_SUBW) +DECLARE_INSN(c_addw, MATCH_C_ADDW, MASK_C_ADDW) +DECLARE_INSN(c_j, MATCH_C_J, MASK_C_J) +DECLARE_INSN(c_beqz, MATCH_C_BEQZ, MASK_C_BEQZ) +DECLARE_INSN(c_bnez, MATCH_C_BNEZ, MASK_C_BNEZ) +DECLARE_INSN(c_slli, MATCH_C_SLLI, MASK_C_SLLI) +DECLARE_INSN(c_fldsp, MATCH_C_FLDSP, MASK_C_FLDSP) +DECLARE_INSN(c_lwsp, MATCH_C_LWSP, MASK_C_LWSP) +DECLARE_INSN(c_flwsp, MATCH_C_FLWSP, MASK_C_FLWSP) +DECLARE_INSN(c_mv, MATCH_C_MV, MASK_C_MV) +DECLARE_INSN(c_add, MATCH_C_ADD, MASK_C_ADD) +DECLARE_INSN(c_fsdsp, MATCH_C_FSDSP, MASK_C_FSDSP) +DECLARE_INSN(c_swsp, MATCH_C_SWSP, MASK_C_SWSP) +DECLARE_INSN(c_fswsp, MATCH_C_FSWSP, MASK_C_FSWSP) +DECLARE_INSN(custom0, MATCH_CUSTOM0, MASK_CUSTOM0) +DECLARE_INSN(custom0_rs1, MATCH_CUSTOM0_RS1, MASK_CUSTOM0_RS1) +DECLARE_INSN(custom0_rs1_rs2, MATCH_CUSTOM0_RS1_RS2, MASK_CUSTOM0_RS1_RS2) +DECLARE_INSN(custom0_rd, MATCH_CUSTOM0_RD, MASK_CUSTOM0_RD) +DECLARE_INSN(custom0_rd_rs1, MATCH_CUSTOM0_RD_RS1, MASK_CUSTOM0_RD_RS1) +DECLARE_INSN(custom0_rd_rs1_rs2, MATCH_CUSTOM0_RD_RS1_RS2, +MASK_CUSTOM0_RD_RS1_RS2) +DECLARE_INSN(custom1, MATCH_CUSTOM1, MASK_CUSTOM1) +DECLARE_INSN(custom1_rs1, MATCH_CUSTOM1_RS1, MASK_CUSTOM1_RS1) +DECLARE_INSN(custom1_rs1_rs2, MATCH_CUSTOM1_RS1_RS2, MASK_CUSTOM1_RS1_RS2) +DECLARE_INSN(custom1_rd, MATCH_CUSTOM1_RD, MASK_CUSTOM1_RD) +DECLARE_INSN(custom1_rd_rs1, MATCH_CUSTOM1_RD_RS1, MASK_CUSTOM1_RD_RS1) +DECLARE_INSN(custom1_rd_rs1_rs2, MATCH_CUSTOM1_RD_RS1_RS2, +MASK_CUSTOM1_RD_RS1_RS2) +DECLARE_INSN(custom2, MATCH_CUSTOM2, MASK_CUSTOM2) +DECLARE_INSN(custom2_rs1, MATCH_CUSTOM2_RS1, MASK_CUSTOM2_RS1) +DECLARE_INSN(custom2_rs1_rs2, MATCH_CUSTOM2_RS1_RS2, MASK_CUSTOM2_RS1_RS2) +DECLARE_INSN(custom2_rd, MATCH_CUSTOM2_RD, MASK_CUSTOM2_RD) +DECLARE_INSN(custom2_rd_rs1, MATCH_CUSTOM2_RD_RS1, MASK_CUSTOM2_RD_RS1) +DECLARE_INSN(custom2_rd_rs1_rs2, MATCH_CUSTOM2_RD_RS1_RS2, +MASK_CUSTOM2_RD_RS1_RS2) +DECLARE_INSN(custom3, MATCH_CUSTOM3, MASK_CUSTOM3) +DECLARE_INSN(custom3_rs1, MATCH_CUSTOM3_RS1, MASK_CUSTOM3_RS1) +DECLARE_INSN(custom3_rs1_rs2, MATCH_CUSTOM3_RS1_RS2, MASK_CUSTOM3_RS1_RS2) +DECLARE_INSN(custom3_rd, MATCH_CUSTOM3_RD, MASK_CUSTOM3_RD) +DECLARE_INSN(custom3_rd_rs1, MATCH_CUSTOM3_RD_RS1, MASK_CUSTOM3_RD_RS1) +DECLARE_INSN(custom3_rd_rs1_rs2, MATCH_CUSTOM3_RD_RS1_RS2, +MASK_CUSTOM3_RD_RS1_RS2) +#endif +#ifdef DECLARE_CSR +DECLARE_CSR(fflags, CSR_FFLAGS) +DECLARE_CSR(frm, CSR_FRM) +DECLARE_CSR(fcsr, CSR_FCSR) +DECLARE_CSR(cycle, CSR_CYCLE) +DECLARE_CSR(time, CSR_TIME) +DECLARE_CSR(instret, CSR_INSTRET) +DECLARE_CSR(hpmcounter3, CSR_HPMCOUNTER3) +DECLARE_CSR(hpmcounter4, CSR_HPMCOUNTER4) +DECLARE_CSR(hpmcounter5, CSR_HPMCOUNTER5) +DECLARE_CSR(hpmcounter6, CSR_HPMCOUNTER6) +DECLARE_CSR(hpmcounter7, CSR_HPMCOUNTER7) +DECLARE_CSR(hpmcounter8, CSR_HPMCOUNTER8) +DECLARE_CSR(hpmcounter9, CSR_HPMCOUNTER9) +DECLARE_CSR(hpmcounter10, CSR_HPMCOUNTER10) +DECLARE_CSR(hpmcounter11, CSR_HPMCOUNTER11) +DECLARE_CSR(hpmcounter12, CSR_HPMCOUNTER12) +DECLARE_CSR(hpmcounter13, CSR_HPMCOUNTER13) +DECLARE_CSR(hpmcounter14, CSR_HPMCOUNTER14) +DECLARE_CSR(hpmcounter15, CSR_HPMCOUNTER15) +DECLARE_CSR(hpmcounter16, CSR_HPMCOUNTER16) +DECLARE_CSR(hpmcounter17, CSR_HPMCOUNTER17) +DECLARE_CSR(hpmcounter18, CSR_HPMCOUNTER18) +DECLARE_CSR(hpmcounter19, CSR_HPMCOUNTER19) +DECLARE_CSR(hpmcounter20, CSR_HPMCOUNTER20) +DECLARE_CSR(hpmcounter21, CSR_HPMCOUNTER21) +DECLARE_CSR(hpmcounter22, CSR_HPMCOUNTER22) +DECLARE_CSR(hpmcounter23, CSR_HPMCOUNTER23) +DECLARE_CSR(hpmcounter24, CSR_HPMCOUNTER24) +DECLARE_CSR(hpmcounter25, CSR_HPMCOUNTER25) +DECLARE_CSR(hpmcounter26, CSR_HPMCOUNTER26) +DECLARE_CSR(hpmcounter27, CSR_HPMCOUNTER27) +DECLARE_CSR(hpmcounter28, CSR_HPMCOUNTER28) +DECLARE_CSR(hpmcounter29, CSR_HPMCOUNTER29) +DECLARE_CSR(hpmcounter30, CSR_HPMCOUNTER30) +DECLARE_CSR(hpmcounter31, CSR_HPMCOUNTER31) +DECLARE_CSR(sstatus, CSR_SSTATUS) +DECLARE_CSR(sie, CSR_SIE) +DECLARE_CSR(stvec, CSR_STVEC) +DECLARE_CSR(sscratch, CSR_SSCRATCH) +DECLARE_CSR(sepc, CSR_SEPC) +DECLARE_CSR(scause, CSR_SCAUSE) +DECLARE_CSR(sbadaddr, CSR_SBADADDR) +DECLARE_CSR(sip, CSR_SIP) +DECLARE_CSR(sptbr, CSR_SPTBR) +DECLARE_CSR(mstatus, CSR_MSTATUS) +DECLARE_CSR(misa, CSR_MISA) +DECLARE_CSR(medeleg, CSR_MEDELEG) +DECLARE_CSR(mideleg, CSR_MIDELEG) +DECLARE_CSR(mie, CSR_MIE) +DECLARE_CSR(mtvec, CSR_MTVEC) +DECLARE_CSR(mscratch, CSR_MSCRATCH) +DECLARE_CSR(mepc, CSR_MEPC) +DECLARE_CSR(mcause, CSR_MCAUSE) +DECLARE_CSR(mbadaddr, CSR_MBADADDR) +DECLARE_CSR(mip, CSR_MIP) +DECLARE_CSR(tselect, CSR_TSELECT) +DECLARE_CSR(tdata1, CSR_TDATA1) +DECLARE_CSR(tdata2, CSR_TDATA2) +DECLARE_CSR(tdata3, CSR_TDATA3) +DECLARE_CSR(dcsr, CSR_DCSR) +DECLARE_CSR(dpc, CSR_DPC) +DECLARE_CSR(dscratch, CSR_DSCRATCH) +DECLARE_CSR(mcycle, CSR_MCYCLE) +DECLARE_CSR(minstret, CSR_MINSTRET) +DECLARE_CSR(mhpmcounter3, CSR_MHPMCOUNTER3) +DECLARE_CSR(mhpmcounter4, CSR_MHPMCOUNTER4) +DECLARE_CSR(mhpmcounter5, CSR_MHPMCOUNTER5) +DECLARE_CSR(mhpmcounter6, CSR_MHPMCOUNTER6) +DECLARE_CSR(mhpmcounter7, CSR_MHPMCOUNTER7) +DECLARE_CSR(mhpmcounter8, CSR_MHPMCOUNTER8) +DECLARE_CSR(mhpmcounter9, CSR_MHPMCOUNTER9) +DECLARE_CSR(mhpmcounter10, CSR_MHPMCOUNTER10) +DECLARE_CSR(mhpmcounter11, CSR_MHPMCOUNTER11) +DECLARE_CSR(mhpmcounter12, CSR_MHPMCOUNTER12) +DECLARE_CSR(mhpmcounter13, CSR_MHPMCOUNTER13) +DECLARE_CSR(mhpmcounter14, CSR_MHPMCOUNTER14) +DECLARE_CSR(mhpmcounter15, CSR_MHPMCOUNTER15) +DECLARE_CSR(mhpmcounter16, CSR_MHPMCOUNTER16) +DECLARE_CSR(mhpmcounter17, CSR_MHPMCOUNTER17) +DECLARE_CSR(mhpmcounter18, CSR_MHPMCOUNTER18) +DECLARE_CSR(mhpmcounter19, CSR_MHPMCOUNTER19) +DECLARE_CSR(mhpmcounter20, CSR_MHPMCOUNTER20) +DECLARE_CSR(mhpmcounter21, CSR_MHPMCOUNTER21) +DECLARE_CSR(mhpmcounter22, CSR_MHPMCOUNTER22) +DECLARE_CSR(mhpmcounter23, CSR_MHPMCOUNTER23) +DECLARE_CSR(mhpmcounter24, CSR_MHPMCOUNTER24) +DECLARE_CSR(mhpmcounter25, CSR_MHPMCOUNTER25) +DECLARE_CSR(mhpmcounter26, CSR_MHPMCOUNTER26) +DECLARE_CSR(mhpmcounter27, CSR_MHPMCOUNTER27) +DECLARE_CSR(mhpmcounter28, CSR_MHPMCOUNTER28) +DECLARE_CSR(mhpmcounter29, CSR_MHPMCOUNTER29) +DECLARE_CSR(mhpmcounter30, CSR_MHPMCOUNTER30) +DECLARE_CSR(mhpmcounter31, CSR_MHPMCOUNTER31) +DECLARE_CSR(mucounteren, CSR_MUCOUNTEREN) +DECLARE_CSR(mscounteren, CSR_MSCOUNTEREN) +DECLARE_CSR(mhpmevent3, CSR_MHPMEVENT3) +DECLARE_CSR(mhpmevent4, CSR_MHPMEVENT4) +DECLARE_CSR(mhpmevent5, CSR_MHPMEVENT5) +DECLARE_CSR(mhpmevent6, CSR_MHPMEVENT6) +DECLARE_CSR(mhpmevent7, CSR_MHPMEVENT7) +DECLARE_CSR(mhpmevent8, CSR_MHPMEVENT8) +DECLARE_CSR(mhpmevent9, CSR_MHPMEVENT9) +DECLARE_CSR(mhpmevent10, CSR_MHPMEVENT10) +DECLARE_CSR(mhpmevent11, CSR_MHPMEVENT11) +DECLARE_CSR(mhpmevent12, CSR_MHPMEVENT12) +DECLARE_CSR(mhpmevent13, CSR_MHPMEVENT13) +DECLARE_CSR(mhpmevent14, CSR_MHPMEVENT14) +DECLARE_CSR(mhpmevent15, CSR_MHPMEVENT15) +DECLARE_CSR(mhpmevent16, CSR_MHPMEVENT16) +DECLARE_CSR(mhpmevent17, CSR_MHPMEVENT17) +DECLARE_CSR(mhpmevent18, CSR_MHPMEVENT18) +DECLARE_CSR(mhpmevent19, CSR_MHPMEVENT19) +DECLARE_CSR(mhpmevent20, CSR_MHPMEVENT20) +DECLARE_CSR(mhpmevent21, CSR_MHPMEVENT21) +DECLARE_CSR(mhpmevent22, CSR_MHPMEVENT22) +DECLARE_CSR(mhpmevent23, CSR_MHPMEVENT23) +DECLARE_CSR(mhpmevent24, CSR_MHPMEVENT24) +DECLARE_CSR(mhpmevent25, CSR_MHPMEVENT25) +DECLARE_CSR(mhpmevent26, CSR_MHPMEVENT26) +DECLARE_CSR(mhpmevent27, CSR_MHPMEVENT27) +DECLARE_CSR(mhpmevent28, CSR_MHPMEVENT28) +DECLARE_CSR(mhpmevent29, CSR_MHPMEVENT29) +DECLARE_CSR(mhpmevent30, CSR_MHPMEVENT30) +DECLARE_CSR(mhpmevent31, CSR_MHPMEVENT31) +DECLARE_CSR(mvendorid, CSR_MVENDORID) +DECLARE_CSR(marchid, CSR_MARCHID) +DECLARE_CSR(mimpid, CSR_MIMPID) +DECLARE_CSR(mhartid, CSR_MHARTID) +DECLARE_CSR(cycleh, CSR_CYCLEH) +DECLARE_CSR(timeh, CSR_TIMEH) +DECLARE_CSR(instreth, CSR_INSTRETH) +DECLARE_CSR(hpmcounter3h, CSR_HPMCOUNTER3H) +DECLARE_CSR(hpmcounter4h, CSR_HPMCOUNTER4H) +DECLARE_CSR(hpmcounter5h, CSR_HPMCOUNTER5H) +DECLARE_CSR(hpmcounter6h, CSR_HPMCOUNTER6H) +DECLARE_CSR(hpmcounter7h, CSR_HPMCOUNTER7H) +DECLARE_CSR(hpmcounter8h, CSR_HPMCOUNTER8H) +DECLARE_CSR(hpmcounter9h, CSR_HPMCOUNTER9H) +DECLARE_CSR(hpmcounter10h, CSR_HPMCOUNTER10H) +DECLARE_CSR(hpmcounter11h, CSR_HPMCOUNTER11H) +DECLARE_CSR(hpmcounter12h, CSR_HPMCOUNTER12H) +DECLARE_CSR(hpmcounter13h, CSR_HPMCOUNTER13H) +DECLARE_CSR(hpmcounter14h, CSR_HPMCOUNTER14H) +DECLARE_CSR(hpmcounter15h, CSR_HPMCOUNTER15H) +DECLARE_CSR(hpmcounter16h, CSR_HPMCOUNTER16H) +DECLARE_CSR(hpmcounter17h, CSR_HPMCOUNTER17H) +DECLARE_CSR(hpmcounter18h, CSR_HPMCOUNTER18H) +DECLARE_CSR(hpmcounter19h, CSR_HPMCOUNTER19H) +DECLARE_CSR(hpmcounter20h, CSR_HPMCOUNTER20H) +DECLARE_CSR(hpmcounter21h, CSR_HPMCOUNTER21H) +DECLARE_CSR(hpmcounter22h, CSR_HPMCOUNTER22H) +DECLARE_CSR(hpmcounter23h, CSR_HPMCOUNTER23H) +DECLARE_CSR(hpmcounter24h, CSR_HPMCOUNTER24H) +DECLARE_CSR(hpmcounter25h, CSR_HPMCOUNTER25H) +DECLARE_CSR(hpmcounter26h, CSR_HPMCOUNTER26H) +DECLARE_CSR(hpmcounter27h, CSR_HPMCOUNTER27H) +DECLARE_CSR(hpmcounter28h, CSR_HPMCOUNTER28H) +DECLARE_CSR(hpmcounter29h, CSR_HPMCOUNTER29H) +DECLARE_CSR(hpmcounter30h, CSR_HPMCOUNTER30H) +DECLARE_CSR(hpmcounter31h, CSR_HPMCOUNTER31H) +DECLARE_CSR(mcycleh, CSR_MCYCLEH) +DECLARE_CSR(minstreth, CSR_MINSTRETH) +DECLARE_CSR(mhpmcounter3h, CSR_MHPMCOUNTER3H) +DECLARE_CSR(mhpmcounter4h, CSR_MHPMCOUNTER4H) +DECLARE_CSR(mhpmcounter5h, CSR_MHPMCOUNTER5H) +DECLARE_CSR(mhpmcounter6h, CSR_MHPMCOUNTER6H) +DECLARE_CSR(mhpmcounter7h, CSR_MHPMCOUNTER7H) +DECLARE_CSR(mhpmcounter8h, CSR_MHPMCOUNTER8H) +DECLARE_CSR(mhpmcounter9h, CSR_MHPMCOUNTER9H) +DECLARE_CSR(mhpmcounter10h, CSR_MHPMCOUNTER10H) +DECLARE_CSR(mhpmcounter11h, CSR_MHPMCOUNTER11H) +DECLARE_CSR(mhpmcounter12h, CSR_MHPMCOUNTER12H) +DECLARE_CSR(mhpmcounter13h, CSR_MHPMCOUNTER13H) +DECLARE_CSR(mhpmcounter14h, CSR_MHPMCOUNTER14H) +DECLARE_CSR(mhpmcounter15h, CSR_MHPMCOUNTER15H) +DECLARE_CSR(mhpmcounter16h, CSR_MHPMCOUNTER16H) +DECLARE_CSR(mhpmcounter17h, CSR_MHPMCOUNTER17H) +DECLARE_CSR(mhpmcounter18h, CSR_MHPMCOUNTER18H) +DECLARE_CSR(mhpmcounter19h, CSR_MHPMCOUNTER19H) +DECLARE_CSR(mhpmcounter20h, CSR_MHPMCOUNTER20H) +DECLARE_CSR(mhpmcounter21h, CSR_MHPMCOUNTER21H) +DECLARE_CSR(mhpmcounter22h, CSR_MHPMCOUNTER22H) +DECLARE_CSR(mhpmcounter23h, CSR_MHPMCOUNTER23H) +DECLARE_CSR(mhpmcounter24h, CSR_MHPMCOUNTER24H) +DECLARE_CSR(mhpmcounter25h, CSR_MHPMCOUNTER25H) +DECLARE_CSR(mhpmcounter26h, CSR_MHPMCOUNTER26H) +DECLARE_CSR(mhpmcounter27h, CSR_MHPMCOUNTER27H) +DECLARE_CSR(mhpmcounter28h, CSR_MHPMCOUNTER28H) +DECLARE_CSR(mhpmcounter29h, CSR_MHPMCOUNTER29H) +DECLARE_CSR(mhpmcounter30h, CSR_MHPMCOUNTER30H) +DECLARE_CSR(mhpmcounter31h, CSR_MHPMCOUNTER31H) +#endif +#ifdef DECLARE_CAUSE +DECLARE_CAUSE("misaligned fetch", CAUSE_MISALIGNED_FETCH) +DECLARE_CAUSE("fault fetch", CAUSE_FAULT_FETCH) +DECLARE_CAUSE("illegal instruction", CAUSE_ILLEGAL_INSTRUCTION) +DECLARE_CAUSE("breakpoint", CAUSE_BREAKPOINT) +DECLARE_CAUSE("misaligned load", CAUSE_MISALIGNED_LOAD) +DECLARE_CAUSE("fault load", CAUSE_FAULT_LOAD) +DECLARE_CAUSE("misaligned store", CAUSE_MISALIGNED_STORE) +DECLARE_CAUSE("fault store", CAUSE_FAULT_STORE) +DECLARE_CAUSE("user_ecall", CAUSE_USER_ECALL) +DECLARE_CAUSE("supervisor_ecall", CAUSE_SUPERVISOR_ECALL) +DECLARE_CAUSE("hypervisor_ecall", CAUSE_HYPERVISOR_ECALL) +DECLARE_CAUSE("machine_ecall", CAUSE_MACHINE_ECALL) +#endif + diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/GD32VF103x4.lds b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/GD32VF103x4.lds new file mode 100644 index 0000000000..fe1d0befb6 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/GD32VF103x4.lds @@ -0,0 +1,200 @@ +OUTPUT_ARCH( "riscv" ) + +ENTRY( _start ) + +MEMORY +{ + /* Run in FLASH */ + flash (rxai!w) : ORIGIN = 0x08000000, LENGTH = 16k + ram (wxa!ri) : ORIGIN = 0x20000000, LENGTH = 6k + + /* Run in RAM */ +/* flash (rxai!w) : ORIGIN = 0x20000000, LENGTH = 4k + ram (wxa!ri) : ORIGIN = 0x20001000, LENGTH = 2K +*/ +} + + +SECTIONS +{ + __stack_size = DEFINED(__stack_size) ? __stack_size : 1K; + + + .init : + { + KEEP (*(SORT_NONE(.init))) + } >flash AT>flash + + .ilalign : + { + . = ALIGN(4); + PROVIDE( _ilm_lma = . ); + } >flash AT>flash + + .ialign : + { + PROVIDE( _ilm = . ); + } >flash AT>flash + + .text : + { + *(.rodata .rodata.*) + *(.text.unlikely .text.unlikely.*) + *(.text.startup .text.startup.*) + *(.text .text.*) + *(.gnu.linkonce.t.*) + + /* section information for finsh shell */ + . = ALIGN(4); + __fsymtab_start = .; + KEEP(*(FSymTab)) + __fsymtab_end = .; + . = ALIGN(4); + __vsymtab_start = .; + KEEP(*(VSymTab)) + __vsymtab_end = .; + . = ALIGN(4); + + /* section information for initial. */ + . = ALIGN(4); + __rt_init_start = .; + KEEP(*(SORT(.rti_fn*))) + __rt_init_end = .; + . = ALIGN(4); + + /* section information for modules */ + . = ALIGN(4); + __rtmsymtab_start = .; + KEEP(*(RTMSymTab)) + __rtmsymtab_end = .; + + } >flash AT>flash + + .fini : + { + KEEP (*(SORT_NONE(.fini))) + } >flash AT>flash + + . = ALIGN(4); + + PROVIDE (__etext = .); + PROVIDE (_etext = .);/*0x80022c8*/ + PROVIDE (etext = .);/*0x80022c8*/ + PROVIDE( _eilm = . ); + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >flash AT>flash + + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) + KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) + PROVIDE_HIDDEN (__init_array_end = .); + } >flash AT>flash + + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) + KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) + PROVIDE_HIDDEN (__fini_array_end = .); + } >flash AT>flash + + .ctors : + { + /* gcc uses crtbegin.o to find the start of + the constructors, so we make sure it is + first. Because this is a wildcard, it + doesn't matter if the user does not + actually link against crtbegin.o; the + linker won't look for a file to match a + wildcard. The wildcard also means that it + doesn't matter which directory crtbegin.o + is in. */ + KEEP (*crtbegin.o(.ctors)) + KEEP (*crtbegin?.o(.ctors)) + /* We don't want to include the .ctor section from + the crtend.o file until after the sorted ctors. + The .ctor section from the crtend file contains the + end of ctors marker and it must be last */ + KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + } >flash AT>flash + + .dtors : + { + KEEP (*crtbegin.o(.dtors)) + KEEP (*crtbegin?.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + } >flash AT>flash + + . = ALIGN(4); + PROVIDE( _eilm = . ); + + .lalign : + { + . = ALIGN(4); + PROVIDE( _data_lma = . ); + } >flash AT>flash + + .dalign : + { + . = ALIGN(4); + PROVIDE( _data = . ); + } >ram AT>flash + + + .data : + { + *(.rdata) + + *(.gnu.linkonce.r.*) + *(.data .data.*) + *(.gnu.linkonce.d.*) + . = ALIGN(8); + PROVIDE( __global_pointer$ = . + 0x800); + *(.sdata .sdata.*) + *(.gnu.linkonce.s.*) + . = ALIGN(8); + *(.srodata.cst16) + *(.srodata.cst8) + *(.srodata.cst4) + *(.srodata.cst2) + *(.srodata .srodata.*) + } >ram AT>flash + + . = ALIGN(4); + PROVIDE( _edata = . ); + PROVIDE( edata = . ); + + PROVIDE( _fbss = . ); /*0X200052A0 0X200002A0*/ + PROVIDE( __bss_start = . ); + .bss : + { + *(.sbss*) + *(.gnu.linkonce.sb.*) + *(.bss .bss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + . = ALIGN(4); + } >ram AT>ram + + . = ALIGN(8); + PROVIDE( _end = . ); /*0X2000,0340*/ + PROVIDE( end = . ); + + .stack ORIGIN(ram) + LENGTH(ram) - __stack_size : + { + PROVIDE( _heap_end = . ); + . = __stack_size; + PROVIDE( _sp = . ); + } >ram AT>ram +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/GD32VF103x6.lds b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/GD32VF103x6.lds new file mode 100644 index 0000000000..4aea1558d2 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/GD32VF103x6.lds @@ -0,0 +1,200 @@ +OUTPUT_ARCH( "riscv" ) + +ENTRY( _start ) + +MEMORY +{ + /* Run in FLASH */ + flash (rxai!w) : ORIGIN = 0x08000000, LENGTH = 32k + ram (wxa!ri) : ORIGIN = 0x20000000, LENGTH = 10k + + /* Run in RAM */ +/* flash (rxai!w) : ORIGIN = 0x20000000, LENGTH = 7k + ram (wxa!ri) : ORIGIN = 0x20001C00, LENGTH = 3K +*/ +} + + +SECTIONS +{ + __stack_size = DEFINED(__stack_size) ? __stack_size : 1K; + + + .init : + { + KEEP (*(SORT_NONE(.init))) + } >flash AT>flash + + .ilalign : + { + . = ALIGN(4); + PROVIDE( _ilm_lma = . ); + } >flash AT>flash + + .ialign : + { + PROVIDE( _ilm = . ); + } >flash AT>flash + + .text : + { + *(.rodata .rodata.*) + *(.text.unlikely .text.unlikely.*) + *(.text.startup .text.startup.*) + *(.text .text.*) + *(.gnu.linkonce.t.*) + + /* section information for finsh shell */ + . = ALIGN(4); + __fsymtab_start = .; + KEEP(*(FSymTab)) + __fsymtab_end = .; + . = ALIGN(4); + __vsymtab_start = .; + KEEP(*(VSymTab)) + __vsymtab_end = .; + . = ALIGN(4); + + /* section information for initial. */ + . = ALIGN(4); + __rt_init_start = .; + KEEP(*(SORT(.rti_fn*))) + __rt_init_end = .; + . = ALIGN(4); + + /* section information for modules */ + . = ALIGN(4); + __rtmsymtab_start = .; + KEEP(*(RTMSymTab)) + __rtmsymtab_end = .; + + } >flash AT>flash + + .fini : + { + KEEP (*(SORT_NONE(.fini))) + } >flash AT>flash + + . = ALIGN(4); + + PROVIDE (__etext = .); + PROVIDE (_etext = .);/*0x80022c8*/ + PROVIDE (etext = .);/*0x80022c8*/ + PROVIDE( _eilm = . ); + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >flash AT>flash + + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) + KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) + PROVIDE_HIDDEN (__init_array_end = .); + } >flash AT>flash + + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) + KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) + PROVIDE_HIDDEN (__fini_array_end = .); + } >flash AT>flash + + .ctors : + { + /* gcc uses crtbegin.o to find the start of + the constructors, so we make sure it is + first. Because this is a wildcard, it + doesn't matter if the user does not + actually link against crtbegin.o; the + linker won't look for a file to match a + wildcard. The wildcard also means that it + doesn't matter which directory crtbegin.o + is in. */ + KEEP (*crtbegin.o(.ctors)) + KEEP (*crtbegin?.o(.ctors)) + /* We don't want to include the .ctor section from + the crtend.o file until after the sorted ctors. + The .ctor section from the crtend file contains the + end of ctors marker and it must be last */ + KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + } >flash AT>flash + + .dtors : + { + KEEP (*crtbegin.o(.dtors)) + KEEP (*crtbegin?.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + } >flash AT>flash + + . = ALIGN(4); + PROVIDE( _eilm = . ); + + .lalign : + { + . = ALIGN(4); + PROVIDE( _data_lma = . ); + } >flash AT>flash + + .dalign : + { + . = ALIGN(4); + PROVIDE( _data = . ); + } >ram AT>flash + + + .data : + { + *(.rdata) + + *(.gnu.linkonce.r.*) + *(.data .data.*) + *(.gnu.linkonce.d.*) + . = ALIGN(8); + PROVIDE( __global_pointer$ = . + 0x800); + *(.sdata .sdata.*) + *(.gnu.linkonce.s.*) + . = ALIGN(8); + *(.srodata.cst16) + *(.srodata.cst8) + *(.srodata.cst4) + *(.srodata.cst2) + *(.srodata .srodata.*) + } >ram AT>flash + + . = ALIGN(4); + PROVIDE( _edata = . ); + PROVIDE( edata = . ); + + PROVIDE( _fbss = . ); /*0X200052A0 0X200002A0*/ + PROVIDE( __bss_start = . ); + .bss : + { + *(.sbss*) + *(.gnu.linkonce.sb.*) + *(.bss .bss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + . = ALIGN(4); + } >ram AT>ram + + . = ALIGN(8); + PROVIDE( _end = . ); /*0X2000,0340*/ + PROVIDE( end = . ); + + .stack ORIGIN(ram) + LENGTH(ram) - __stack_size : + { + PROVIDE( _heap_end = . ); + . = __stack_size; + PROVIDE( _sp = . ); + } >ram AT>ram +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/GD32VF103x8.lds b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/GD32VF103x8.lds new file mode 100644 index 0000000000..daa0369232 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/GD32VF103x8.lds @@ -0,0 +1,200 @@ +OUTPUT_ARCH( "riscv" ) + +ENTRY( _start ) + +MEMORY +{ + /* Run in FLASH */ + flash (rxai!w) : ORIGIN = 0x08000000, LENGTH = 64k + ram (wxa!ri) : ORIGIN = 0x20000000, LENGTH = 20k + + /* Run in RAM */ +/* flash (rxai!w) : ORIGIN = 0x20000000, LENGTH = 15k + ram (wxa!ri) : ORIGIN = 0x20003C00, LENGTH = 5K +*/ +} + + +SECTIONS +{ + __stack_size = DEFINED(__stack_size) ? __stack_size : 2K; + + + .init : + { + KEEP (*(SORT_NONE(.init))) + } >flash AT>flash + + .ilalign : + { + . = ALIGN(4); + PROVIDE( _ilm_lma = . ); + } >flash AT>flash + + .ialign : + { + PROVIDE( _ilm = . ); + } >flash AT>flash + + .text : + { + *(.rodata .rodata.*) + *(.text.unlikely .text.unlikely.*) + *(.text.startup .text.startup.*) + *(.text .text.*) + *(.gnu.linkonce.t.*) + + /* section information for finsh shell */ + . = ALIGN(4); + __fsymtab_start = .; + KEEP(*(FSymTab)) + __fsymtab_end = .; + . = ALIGN(4); + __vsymtab_start = .; + KEEP(*(VSymTab)) + __vsymtab_end = .; + . = ALIGN(4); + + /* section information for initial. */ + . = ALIGN(4); + __rt_init_start = .; + KEEP(*(SORT(.rti_fn*))) + __rt_init_end = .; + . = ALIGN(4); + + /* section information for modules */ + . = ALIGN(4); + __rtmsymtab_start = .; + KEEP(*(RTMSymTab)) + __rtmsymtab_end = .; + + } >flash AT>flash + + .fini : + { + KEEP (*(SORT_NONE(.fini))) + } >flash AT>flash + + . = ALIGN(4); + + PROVIDE (__etext = .); + PROVIDE (_etext = .);/*0x80022c8*/ + PROVIDE (etext = .);/*0x80022c8*/ + PROVIDE( _eilm = . ); + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >flash AT>flash + + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) + KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) + PROVIDE_HIDDEN (__init_array_end = .); + } >flash AT>flash + + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) + KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) + PROVIDE_HIDDEN (__fini_array_end = .); + } >flash AT>flash + + .ctors : + { + /* gcc uses crtbegin.o to find the start of + the constructors, so we make sure it is + first. Because this is a wildcard, it + doesn't matter if the user does not + actually link against crtbegin.o; the + linker won't look for a file to match a + wildcard. The wildcard also means that it + doesn't matter which directory crtbegin.o + is in. */ + KEEP (*crtbegin.o(.ctors)) + KEEP (*crtbegin?.o(.ctors)) + /* We don't want to include the .ctor section from + the crtend.o file until after the sorted ctors. + The .ctor section from the crtend file contains the + end of ctors marker and it must be last */ + KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + } >flash AT>flash + + .dtors : + { + KEEP (*crtbegin.o(.dtors)) + KEEP (*crtbegin?.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + } >flash AT>flash + + . = ALIGN(4); + PROVIDE( _eilm = . ); + + .lalign : + { + . = ALIGN(4); + PROVIDE( _data_lma = . ); + } >flash AT>flash + + .dalign : + { + . = ALIGN(4); + PROVIDE( _data = . ); + } >ram AT>flash + + + .data : + { + *(.rdata) + + *(.gnu.linkonce.r.*) + *(.data .data.*) + *(.gnu.linkonce.d.*) + . = ALIGN(8); + PROVIDE( __global_pointer$ = . + 0x800); + *(.sdata .sdata.*) + *(.gnu.linkonce.s.*) + . = ALIGN(8); + *(.srodata.cst16) + *(.srodata.cst8) + *(.srodata.cst4) + *(.srodata.cst2) + *(.srodata .srodata.*) + } >ram AT>flash + + . = ALIGN(4); + PROVIDE( _edata = . ); + PROVIDE( edata = . ); + + PROVIDE( _fbss = . ); /*0X200052A0 0X200002A0*/ + PROVIDE( __bss_start = . ); + .bss : + { + *(.sbss*) + *(.gnu.linkonce.sb.*) + *(.bss .bss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + . = ALIGN(4); + } >ram AT>ram + + . = ALIGN(8); + PROVIDE( _end = . ); /*0X2000,0340*/ + PROVIDE( end = . ); + + .stack ORIGIN(ram) + LENGTH(ram) - __stack_size : + { + PROVIDE( _heap_end = . ); + . = __stack_size; + PROVIDE( _sp = . ); + } >ram AT>ram +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/GD32VF103xB.lds b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/GD32VF103xB.lds new file mode 100644 index 0000000000..7651c00255 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/GD32VF103xB.lds @@ -0,0 +1,199 @@ +OUTPUT_ARCH( "riscv" ) + +ENTRY( _start ) + +MEMORY +{ + /* Run in FLASH */ + flash (rxai!w) : ORIGIN = 0x08000000, LENGTH = 128k + ram (wxa!ri) : ORIGIN = 0x20000000, LENGTH = 32K + + /* Run in RAM */ +/* flash (rxai!w) : ORIGIN = 0x20000000, LENGTH = 24k + ram (wxa!ri) : ORIGIN = 0x20006000, LENGTH = 8K +*/ +} + + +SECTIONS +{ + __stack_size = DEFINED(__stack_size) ? __stack_size : 4K; + + + .init : + { + KEEP (*(SORT_NONE(.init))) + } >flash AT>flash + + .ilalign : + { + . = ALIGN(4); + PROVIDE( _ilm_lma = . ); + } >flash AT>flash + + .ialign : + { + PROVIDE( _ilm = . ); + } >flash AT>flash + + .text : + { + *(.rodata .rodata.*) + *(.text.unlikely .text.unlikely.*) + *(.text.startup .text.startup.*) + *(.text .text.*) + *(.gnu.linkonce.t.*) + + /* section information for finsh shell */ + . = ALIGN(4); + __fsymtab_start = .; + KEEP(*(FSymTab)) + __fsymtab_end = .; + . = ALIGN(4); + __vsymtab_start = .; + KEEP(*(VSymTab)) + __vsymtab_end = .; + . = ALIGN(4); + + /* section information for initial. */ + . = ALIGN(4); + __rt_init_start = .; + KEEP(*(SORT(.rti_fn*))) + __rt_init_end = .; + . = ALIGN(4); + + /* section information for modules */ + . = ALIGN(4); + __rtmsymtab_start = .; + KEEP(*(RTMSymTab)) + __rtmsymtab_end = .; + } >flash AT>flash + + .fini : + { + KEEP (*(SORT_NONE(.fini))) + } >flash AT>flash + + . = ALIGN(4); + + PROVIDE (__etext = .); + PROVIDE (_etext = .);/*0x80022c8*/ + PROVIDE (etext = .);/*0x80022c8*/ + PROVIDE( _eilm = . ); + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >flash AT>flash + + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) + KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) + PROVIDE_HIDDEN (__init_array_end = .); + } >flash AT>flash + + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) + KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) + PROVIDE_HIDDEN (__fini_array_end = .); + } >flash AT>flash + + .ctors : + { + /* gcc uses crtbegin.o to find the start of + the constructors, so we make sure it is + first. Because this is a wildcard, it + doesn't matter if the user does not + actually link against crtbegin.o; the + linker won't look for a file to match a + wildcard. The wildcard also means that it + doesn't matter which directory crtbegin.o + is in. */ + KEEP (*crtbegin.o(.ctors)) + KEEP (*crtbegin?.o(.ctors)) + /* We don't want to include the .ctor section from + the crtend.o file until after the sorted ctors. + The .ctor section from the crtend file contains the + end of ctors marker and it must be last */ + KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + } >flash AT>flash + + .dtors : + { + KEEP (*crtbegin.o(.dtors)) + KEEP (*crtbegin?.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + } >flash AT>flash + + . = ALIGN(4); + PROVIDE( _eilm = . ); + + .lalign : + { + . = ALIGN(4); + PROVIDE( _data_lma = . ); + } >flash AT>flash + + .dalign : + { + . = ALIGN(4); + PROVIDE( _data = . ); + } >ram AT>flash + + + .data : + { + *(.rdata) + + *(.gnu.linkonce.r.*) + *(.data .data.*) + *(.gnu.linkonce.d.*) + . = ALIGN(8); + PROVIDE( __global_pointer$ = . + 0x800); + *(.sdata .sdata.*) + *(.gnu.linkonce.s.*) + . = ALIGN(8); + *(.srodata.cst16) + *(.srodata.cst8) + *(.srodata.cst4) + *(.srodata.cst2) + *(.srodata .srodata.*) + } >ram AT>flash + + . = ALIGN(4); + PROVIDE( _edata = . ); + PROVIDE( edata = . ); + + PROVIDE( _fbss = . ); /*0X200052A0 0X200002A0*/ + PROVIDE( __bss_start = . ); + .bss : + { + *(.sbss*) + *(.gnu.linkonce.sb.*) + *(.bss .bss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + . = ALIGN(4); + } >ram AT>ram + + . = ALIGN(8); + PROVIDE( _end = . ); /*0X2000,0340*/ + PROVIDE( end = . ); + + .stack ORIGIN(ram) + LENGTH(ram) - __stack_size : + { + PROVIDE( _heap_end = . ); + . = __stack_size; + PROVIDE( _sp = . ); + } >ram AT>ram +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/entry.S b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/entry.S new file mode 100644 index 0000000000..a95f968d2e --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/entry.S @@ -0,0 +1,286 @@ +// See LICENSE for license details + +#ifndef ENTRY_S +#define ENTRY_S + +#include "riscv_encoding.h" +#include "riscv_bits.h" +#include "n200_eclic.h" +#include "n200_timer.h" + +############################################### +############################################### +# Disable Interrupt +# +.macro DISABLE_MIE + csrc CSR_MSTATUS, MSTATUS_MIE +.endm + + +############################################### +############################################### +#Save caller registers +.macro SAVE_CONTEXT + +#ifdef __riscv_flen + #if (__riscv_flen==64 ) + addi sp, sp, -20*REGBYTES - 20*FPREGBYTES + #else + addi sp, sp, -20*REGBYTES + #endif +#else + addi sp, sp, -20*REGBYTES +#endif + STORE x1, 0*REGBYTES(sp) + STORE x4, 1*REGBYTES(sp) + STORE x5, 2*REGBYTES(sp) + STORE x6, 3*REGBYTES(sp) + STORE x7, 4*REGBYTES(sp) + STORE x10, 5*REGBYTES(sp) + STORE x11, 6*REGBYTES(sp) + STORE x12, 7*REGBYTES(sp) + STORE x13, 8*REGBYTES(sp) + STORE x14, 9*REGBYTES(sp) + STORE x15, 10*REGBYTES(sp) +#ifndef __riscv_32e + STORE x16, 11*REGBYTES(sp) + STORE x17, 12*REGBYTES(sp) + STORE x28, 13*REGBYTES(sp) + STORE x29, 14*REGBYTES(sp) + STORE x30, 15*REGBYTES(sp) + STORE x31, 16*REGBYTES(sp) +#endif + +#ifdef __riscv_flen + #if (__riscv_flen == 64) + FPSTORE f0, (20*REGBYTES + 0*FPREGBYTES)(sp) + FPSTORE f1, (20*REGBYTES + 1*FPREGBYTES)(sp) + FPSTORE f2, (20*REGBYTES + 2*FPREGBYTES)(sp) + FPSTORE f3, (20*REGBYTES + 3*FPREGBYTES)(sp) + FPSTORE f4, (20*REGBYTES + 4*FPREGBYTES)(sp) + FPSTORE f5, (20*REGBYTES + 5*FPREGBYTES)(sp) + FPSTORE f6, (20*REGBYTES + 6*FPREGBYTES)(sp) + FPSTORE f7, (20*REGBYTES + 7*FPREGBYTES)(sp) + FPSTORE f10, (20*REGBYTES + 8*FPREGBYTES)(sp) + FPSTORE f11, (20*REGBYTES + 9*FPREGBYTES)(sp) + FPSTORE f12, (20*REGBYTES + 10*FPREGBYTES)(sp) + FPSTORE f13, (20*REGBYTES + 11*FPREGBYTES)(sp) + FPSTORE f14, (20*REGBYTES + 12*FPREGBYTES)(sp) + FPSTORE f15, (20*REGBYTES + 13*FPREGBYTES)(sp) + FPSTORE f16, (20*REGBYTES + 14*FPREGBYTES)(sp) + FPSTORE f17, (20*REGBYTES + 15*FPREGBYTES)(sp) + FPSTORE f28, (20*REGBYTES + 16*FPREGBYTES)(sp) + FPSTORE f29, (20*REGBYTES + 17*FPREGBYTES)(sp) + FPSTORE f30, (20*REGBYTES + 18*FPREGBYTES)(sp) + FPSTORE f31, (20*REGBYTES + 19*FPREGBYTES)(sp) + #endif +#endif + + +.endm + + +############################################### +############################################### +#restore caller registers +.macro RESTORE_CONTEXT + LOAD x1, 0*REGBYTES(sp) + LOAD x4, 1*REGBYTES(sp) + LOAD x5, 2*REGBYTES(sp) + LOAD x6, 3*REGBYTES(sp) + LOAD x7, 4*REGBYTES(sp) + LOAD x10, 5*REGBYTES(sp) + LOAD x11, 6*REGBYTES(sp) + LOAD x12, 7*REGBYTES(sp) + LOAD x13, 8*REGBYTES(sp) + LOAD x14, 9*REGBYTES(sp) + LOAD x15, 10*REGBYTES(sp) +#ifndef __riscv_32e + LOAD x16, 11*REGBYTES(sp) + LOAD x17, 12*REGBYTES(sp) + LOAD x28, 13*REGBYTES(sp) + LOAD x29, 14*REGBYTES(sp) + LOAD x30, 15*REGBYTES(sp) + LOAD x31, 16*REGBYTES(sp) +#endif + + +#ifdef __riscv_flen + #if (__riscv_flen==64) +/* Restore fp caller registers */ + FPLOAD f0, (20*REGBYTES + 0*FPREGBYTES)(sp) + FPLOAD f1, (20*REGBYTES + 1*FPREGBYTES)(sp) + FPLOAD f2, (20*REGBYTES + 2*FPREGBYTES)(sp) + FPLOAD f3, (20*REGBYTES + 3*FPREGBYTES)(sp) + FPLOAD f4, (20*REGBYTES + 4*FPREGBYTES)(sp) + FPLOAD f5, (20*REGBYTES + 5*FPREGBYTES)(sp) + FPLOAD f6, (20*REGBYTES + 6*FPREGBYTES)(sp) + FPLOAD f7, (20*REGBYTES + 7*FPREGBYTES)(sp) + FPLOAD f10, (20*REGBYTES + 8*FPREGBYTES)(sp) + FPLOAD f11, (20*REGBYTES + 9*FPREGBYTES)(sp) + FPLOAD f12, (20*REGBYTES + 10*FPREGBYTES)(sp) + FPLOAD f13, (20*REGBYTES + 11*FPREGBYTES)(sp) + FPLOAD f14, (20*REGBYTES + 12*FPREGBYTES)(sp) + FPLOAD f15, (20*REGBYTES + 13*FPREGBYTES)(sp) + FPLOAD f16, (20*REGBYTES + 14*FPREGBYTES)(sp) + FPLOAD f17, (20*REGBYTES + 15*FPREGBYTES)(sp) + FPLOAD f28, (20*REGBYTES + 16*FPREGBYTES)(sp) + FPLOAD f29, (20*REGBYTES + 17*FPREGBYTES)(sp) + FPLOAD f30, (20*REGBYTES + 18*FPREGBYTES)(sp) + FPLOAD f31, (20*REGBYTES + 19*FPREGBYTES)(sp) + #endif +#endif + + +#ifdef __riscv_flen + #if(__riscv_flen == 64 ) + addi sp, sp, 20*REGBYTES + 20*FPREGBYTES + #else + addi sp, sp, 20*REGBYTES + #endif +#else +// De-allocate the stack space + addi sp, sp, 20*REGBYTES +#endif +.endm + +############################################### +############################################### +#restore caller registers +.macro RESTORE_CONTEXT_EXCPT_X5 + LOAD x1, 0*REGBYTES(sp) + LOAD x6, 2*REGBYTES(sp) + LOAD x7, 3*REGBYTES(sp) + LOAD x10, 4*REGBYTES(sp) + LOAD x11, 5*REGBYTES(sp) + LOAD x12, 6*REGBYTES(sp) + LOAD x13, 7*REGBYTES(sp) + LOAD x14, 8*REGBYTES(sp) + LOAD x15, 9*REGBYTES(sp) +#ifndef __riscv_32e + LOAD x16, 10*REGBYTES(sp) + LOAD x17, 11*REGBYTES(sp) + LOAD x28, 12*REGBYTES(sp) + LOAD x29, 13*REGBYTES(sp) + LOAD x30, 14*REGBYTES(sp) + LOAD x31, 15*REGBYTES(sp) +#endif +.endm + +############################################### +############################################### +#restore caller registers +.macro RESTORE_CONTEXT_ONLY_X5 + LOAD x5, 1*REGBYTES(sp) +.endm + +############################################### +############################################### +# Save the mepc and mstatus +# +.macro SAVE_EPC_STATUS + csrr x5, CSR_MEPC + STORE x5, 16*REGBYTES(sp) + csrr x5, CSR_MSTATUS + STORE x5, 17*REGBYTES(sp) + csrr x5, CSR_MSUBM + STORE x5, 18*REGBYTES(sp) +.endm + +############################################### +############################################### +# Restore the mepc and mstatus +# +.macro RESTORE_EPC_STATUS + LOAD x5, 16*REGBYTES(sp) + csrw CSR_MEPC, x5 + LOAD x5, 17*REGBYTES(sp) + csrw CSR_MSTATUS, x5 + LOAD x5, 18*REGBYTES(sp) + csrw CSR_MSUBM, x5 +.endm + + + +############################################### +############################################### +// Trap entry point +// + .section .text.trap + .align 6// In CLIC mode, the trap entry must be 64bytes aligned + .global trap_entry +.weak trap_entry +trap_entry: + // Allocate the stack space + // addi sp, sp, -19*REGBYTES + + // Save the caller saving registers (context) + SAVE_CONTEXT + // Save the MEPC/Mstatus/Msubm reg + SAVE_EPC_STATUS + + // Set the function argument + csrr a0, mcause + mv a1, sp + // Call the function + call handle_trap + + // Restore the MEPC/Mstatus/Msubm reg + RESTORE_EPC_STATUS + // Restore the caller saving registers (context) + RESTORE_CONTEXT + + // De-allocate the stack space + // addi sp, sp, 19*REGBYTES + // Return to regular code + mret + + +############################################### +############################################### +// IRQ entry point +// + .section .text.irq + .align 2 + .global irq_entry +.weak irq_entry +irq_entry: // -------------> This label will be set to MTVT2 register + // Allocate the stack space + + + SAVE_CONTEXT// Save 16 regs + + //------This special CSR read operation, which is actually use mcause as operand to directly store it to memory + csrrwi x0, CSR_PUSHMCAUSE, 17 + //------This special CSR read operation, which is actually use mepc as operand to directly store it to memory + csrrwi x0, CSR_PUSHMEPC, 18 + //------This special CSR read operation, which is actually use Msubm as operand to directly store it to memory + csrrwi x0, CSR_PUSHMSUBM, 19 + +service_loop: + //------This special CSR read/write operation, which is actually Claim the CLIC to find its pending highest + // ID, if the ID is not 0, then automatically enable the mstatus.MIE, and jump to its vector-entry-label, and + // update the link register + csrrw ra, CSR_JALMNXTI, ra + + //RESTORE_CONTEXT_EXCPT_X5 + + #---- Critical section with interrupts disabled ----------------------- + DISABLE_MIE # Disable interrupts + + LOAD x5, 19*REGBYTES(sp) + csrw CSR_MSUBM, x5 + LOAD x5, 18*REGBYTES(sp) + csrw CSR_MEPC, x5 + LOAD x5, 17*REGBYTES(sp) + csrw CSR_MCAUSE, x5 + + + RESTORE_CONTEXT + + + // Return to regular code + mret + + +#endif \ No newline at end of file diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/handlers.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/handlers.c new file mode 100644 index 0000000000..988cea2ad5 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/handlers.c @@ -0,0 +1,32 @@ +//See LICENSE for license details. +#include +#include +#include +#include "riscv_encoding.h" +#include "n200_func.h" + +__attribute__((weak)) uintptr_t handle_nmi() +{ + write(1, "nmi\n", 5); + //_exit(1); + return 0; +} + + +__attribute__((weak)) uintptr_t handle_trap(uintptr_t mcause, uintptr_t sp) +{ + if((mcause & 0xFFF) == 0xFFF) { + handle_nmi(); + } + write(1, "trap\n", 5); + //printf("In trap handler, the mcause is %d\n", mcause); + //printf("In trap handler, the mepc is 0x%x\n", read_csr(mepc)); + //printf("In trap handler, the mtval is 0x%x\n", read_csr(mbadaddr)); + //_exit(mcause); + return 0; +} + + + + + diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/handlers.s b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/handlers.s new file mode 100644 index 0000000000..59d4cea643 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/handlers.s @@ -0,0 +1,9542 @@ + .file "handlers.c" + .option nopic + .text +.Ltext0: + .cfi_sections .debug_frame + .section .rodata + .align 2 +.LC0: + .string "nmi\n" + .text + .align 1 + .weak handle_nmi + .type handle_nmi, @function +handle_nmi: +.LFB5: + .file 1 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\env_Eclipse\\handlers.c" + .loc 1 9 1 + .cfi_startproc + addi sp,sp,-16 + .cfi_def_cfa_offset 16 + sw ra,12(sp) + sw s0,8(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,16 + .cfi_def_cfa 8, 0 + .loc 1 10 3 + li a2,5 + lla a1,.LC0 + li a0,1 + call write + .loc 1 12 10 + li a5,0 + .loc 1 13 1 + mv a0,a5 + lw ra,12(sp) + .cfi_restore 1 + lw s0,8(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 16 + addi sp,sp,16 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE5: + .size handle_nmi, .-handle_nmi + .section .rodata + .align 2 +.LC1: + .string "trap\n" + .text + .align 1 + .weak handle_trap + .type handle_trap, @function +handle_trap: +.LFB6: + .loc 1 17 1 + .cfi_startproc + addi sp,sp,-32 + .cfi_def_cfa_offset 32 + sw ra,28(sp) + sw s0,24(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,32 + .cfi_def_cfa 8, 0 + sw a0,-20(s0) + sw a1,-24(s0) + .loc 1 18 14 + lw a4,-20(s0) + li a5,4096 + addi a5,a5,-1 + and a4,a4,a5 + .loc 1 18 5 + li a5,4096 + addi a5,a5,-1 + bne a4,a5,.L4 + .loc 1 19 7 + call handle_nmi +.L4: + .loc 1 21 3 + li a2,5 + lla a1,.LC1 + li a0,1 + call write + .loc 1 26 10 + li a5,0 + .loc 1 27 1 + mv a0,a5 + lw ra,28(sp) + .cfi_restore 1 + lw s0,24(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 32 + addi sp,sp,32 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE6: + .size handle_trap, .-handle_trap +.Letext0: + .file 2 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\machine\\_default_types.h" + .file 3 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_stdint.h" + .section .debug_info,"",@progbits +.Ldebug_info0: + .4byte 0xe0 + .2byte 0x4 + .4byte .Ldebug_abbrev0 + .byte 0x4 + .byte 0x1 + .4byte .LASF1745 + .byte 0xc + .4byte .LASF1746 + .4byte .LASF1747 + .4byte .Ltext0 + .4byte .Letext0-.Ltext0 + .4byte .Ldebug_line0 + .4byte .Ldebug_macro0 + .byte 0x2 + .byte 0x1 + .byte 0x6 + .4byte .LASF1732 + .byte 0x2 + .byte 0x1 + .byte 0x8 + .4byte .LASF1733 + .byte 0x2 + .byte 0x2 + .byte 0x5 + .4byte .LASF1734 + .byte 0x2 + .byte 0x2 + .byte 0x7 + .4byte .LASF1735 + .byte 0x2 + .byte 0x4 + .byte 0x5 + .4byte .LASF1736 + .byte 0x2 + .byte 0x4 + .byte 0x7 + .4byte .LASF1737 + .byte 0x2 + .byte 0x8 + .byte 0x5 + .4byte .LASF1738 + .byte 0x2 + .byte 0x8 + .byte 0x7 + .4byte .LASF1739 + .byte 0x3 + .byte 0x4 + .byte 0x5 + .string "int" + .byte 0x4 + .4byte .LASF1741 + .byte 0x2 + .byte 0xe8 + .byte 0x16 + .4byte 0x74 + .byte 0x2 + .byte 0x4 + .byte 0x7 + .4byte .LASF1740 + .byte 0x4 + .4byte .LASF1742 + .byte 0x3 + .byte 0x52 + .byte 0x15 + .4byte 0x68 + .byte 0x2 + .byte 0x10 + .byte 0x4 + .4byte .LASF1743 + .byte 0x2 + .byte 0x1 + .byte 0x8 + .4byte .LASF365 + .byte 0x5 + .4byte .LASF1748 + .byte 0x1 + .byte 0x10 + .byte 0x21 + .4byte 0x7b + .4byte .LFB6 + .4byte .LFE6-.LFB6 + .byte 0x1 + .byte 0x9c + .4byte 0xcd + .byte 0x6 + .4byte .LASF1744 + .byte 0x1 + .byte 0x10 + .byte 0x37 + .4byte 0x7b + .byte 0x2 + .byte 0x91 + .byte 0x6c + .byte 0x7 + .string "sp" + .byte 0x1 + .byte 0x10 + .byte 0x49 + .4byte 0x7b + .byte 0x2 + .byte 0x91 + .byte 0x68 + .byte 0 + .byte 0x8 + .4byte .LASF1749 + .byte 0x1 + .byte 0x8 + .byte 0x21 + .4byte 0x7b + .4byte .LFB5 + .4byte .LFE5-.LFB5 + .byte 0x1 + .byte 0x9c + .byte 0 + .section .debug_abbrev,"",@progbits +.Ldebug_abbrev0: + .byte 0x1 + .byte 0x11 + .byte 0x1 + .byte 0x25 + .byte 0xe + .byte 0x13 + .byte 0xb + .byte 0x3 + .byte 0xe + .byte 0x1b + .byte 0xe + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x10 + .byte 0x17 + .byte 0x99,0x42 + .byte 0x17 + .byte 0 + .byte 0 + .byte 0x2 + .byte 0x24 + .byte 0 + .byte 0xb + .byte 0xb + .byte 0x3e + .byte 0xb + .byte 0x3 + .byte 0xe + .byte 0 + .byte 0 + .byte 0x3 + .byte 0x24 + .byte 0 + .byte 0xb + .byte 0xb + .byte 0x3e + .byte 0xb + .byte 0x3 + .byte 0x8 + .byte 0 + .byte 0 + .byte 0x4 + .byte 0x16 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x5 + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x49 + .byte 0x13 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x96,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x6 + .byte 0x5 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0x7 + .byte 0x5 + .byte 0 + .byte 0x3 + .byte 0x8 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0x8 + .byte 0x2e + .byte 0 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x96,0x42 + .byte 0x19 + .byte 0 + .byte 0 + .byte 0 + .section .debug_aranges,"",@progbits + .4byte 0x1c + .2byte 0x2 + .4byte .Ldebug_info0 + .byte 0x4 + .byte 0 + .2byte 0 + .2byte 0 + .4byte .Ltext0 + .4byte .Letext0-.Ltext0 + .4byte 0 + .4byte 0 + .section .debug_macro,"",@progbits +.Ldebug_macro0: + .2byte 0x4 + .byte 0x2 + .4byte .Ldebug_line0 + .byte 0x3 + .byte 0 + .byte 0x1 + .byte 0x5 + .byte 0x1 + .4byte .LASF0 + .byte 0x5 + .byte 0x2 + .4byte .LASF1 + .byte 0x5 + .byte 0x3 + .4byte .LASF2 + .byte 0x5 + .byte 0x4 + .4byte .LASF3 + .byte 0x5 + .byte 0x5 + .4byte .LASF4 + .byte 0x5 + .byte 0x6 + .4byte .LASF5 + .byte 0x5 + .byte 0x7 + .4byte .LASF6 + .byte 0x5 + .byte 0x8 + .4byte .LASF7 + .byte 0x5 + .byte 0x9 + .4byte .LASF8 + .byte 0x5 + .byte 0xa + .4byte .LASF9 + .byte 0x5 + .byte 0xb + .4byte .LASF10 + .byte 0x5 + .byte 0xc + .4byte .LASF11 + .byte 0x5 + .byte 0xd + .4byte .LASF12 + .byte 0x5 + .byte 0xe + .4byte .LASF13 + .byte 0x5 + .byte 0xf + .4byte .LASF14 + .byte 0x5 + .byte 0x10 + .4byte .LASF15 + .byte 0x5 + .byte 0x11 + .4byte .LASF16 + .byte 0x5 + .byte 0x12 + .4byte .LASF17 + .byte 0x5 + .byte 0x13 + .4byte .LASF18 + .byte 0x5 + .byte 0x14 + .4byte .LASF19 + .byte 0x5 + .byte 0x15 + .4byte .LASF20 + .byte 0x5 + .byte 0x16 + .4byte .LASF21 + .byte 0x5 + .byte 0x17 + .4byte .LASF22 + .byte 0x5 + .byte 0x18 + .4byte .LASF23 + .byte 0x5 + .byte 0x19 + .4byte .LASF24 + .byte 0x5 + .byte 0x1a + .4byte .LASF25 + .byte 0x5 + .byte 0x1b + .4byte .LASF26 + .byte 0x5 + .byte 0x1c + .4byte .LASF27 + .byte 0x5 + .byte 0x1d + .4byte .LASF28 + .byte 0x5 + .byte 0x1e + .4byte .LASF29 + .byte 0x5 + .byte 0x1f + .4byte .LASF30 + .byte 0x5 + .byte 0x20 + .4byte .LASF31 + .byte 0x5 + .byte 0x21 + .4byte .LASF32 + .byte 0x5 + .byte 0x22 + .4byte .LASF33 + .byte 0x5 + .byte 0x23 + .4byte .LASF34 + .byte 0x5 + .byte 0x24 + .4byte .LASF35 + .byte 0x5 + .byte 0x25 + .4byte .LASF36 + .byte 0x5 + .byte 0x26 + .4byte .LASF37 + .byte 0x5 + .byte 0x27 + .4byte .LASF38 + .byte 0x5 + .byte 0x28 + .4byte .LASF39 + .byte 0x5 + .byte 0x29 + .4byte .LASF40 + .byte 0x5 + .byte 0x2a + .4byte .LASF41 + .byte 0x5 + .byte 0x2b + .4byte .LASF42 + .byte 0x5 + .byte 0x2c + .4byte .LASF43 + .byte 0x5 + .byte 0x2d + .4byte .LASF44 + .byte 0x5 + .byte 0x2e + .4byte .LASF45 + .byte 0x5 + .byte 0x2f + .4byte .LASF46 + .byte 0x5 + .byte 0x30 + .4byte .LASF47 + .byte 0x5 + .byte 0x31 + .4byte .LASF48 + .byte 0x5 + .byte 0x32 + .4byte .LASF49 + .byte 0x5 + .byte 0x33 + .4byte .LASF50 + .byte 0x5 + .byte 0x34 + .4byte .LASF51 + .byte 0x5 + .byte 0x35 + .4byte .LASF52 + .byte 0x5 + .byte 0x36 + .4byte .LASF53 + .byte 0x5 + .byte 0x37 + .4byte .LASF54 + .byte 0x5 + .byte 0x38 + .4byte .LASF55 + .byte 0x5 + .byte 0x39 + .4byte .LASF56 + .byte 0x5 + .byte 0x3a + .4byte .LASF57 + .byte 0x5 + .byte 0x3b + .4byte .LASF58 + .byte 0x5 + .byte 0x3c + .4byte .LASF59 + .byte 0x5 + .byte 0x3d + .4byte .LASF60 + .byte 0x5 + .byte 0x3e + .4byte .LASF61 + .byte 0x5 + .byte 0x3f + .4byte .LASF62 + .byte 0x5 + .byte 0x40 + .4byte .LASF63 + .byte 0x5 + .byte 0x41 + .4byte .LASF64 + .byte 0x5 + .byte 0x42 + .4byte .LASF65 + .byte 0x5 + .byte 0x43 + .4byte .LASF66 + .byte 0x5 + .byte 0x44 + .4byte .LASF67 + .byte 0x5 + .byte 0x45 + .4byte .LASF68 + .byte 0x5 + .byte 0x46 + .4byte .LASF69 + .byte 0x5 + .byte 0x47 + .4byte .LASF70 + .byte 0x5 + .byte 0x48 + .4byte .LASF71 + .byte 0x5 + .byte 0x49 + .4byte .LASF72 + .byte 0x5 + .byte 0x4a + .4byte .LASF73 + .byte 0x5 + .byte 0x4b + .4byte .LASF74 + .byte 0x5 + .byte 0x4c + .4byte .LASF75 + .byte 0x5 + .byte 0x4d + .4byte .LASF76 + .byte 0x5 + .byte 0x4e + .4byte .LASF77 + .byte 0x5 + .byte 0x4f + .4byte .LASF78 + .byte 0x5 + .byte 0x50 + .4byte .LASF79 + .byte 0x5 + .byte 0x51 + .4byte .LASF80 + .byte 0x5 + .byte 0x52 + .4byte .LASF81 + .byte 0x5 + .byte 0x53 + .4byte .LASF82 + .byte 0x5 + .byte 0x54 + .4byte .LASF83 + .byte 0x5 + .byte 0x55 + .4byte .LASF84 + .byte 0x5 + .byte 0x56 + .4byte .LASF85 + .byte 0x5 + .byte 0x57 + .4byte .LASF86 + .byte 0x5 + .byte 0x58 + .4byte .LASF87 + .byte 0x5 + .byte 0x59 + .4byte .LASF88 + .byte 0x5 + .byte 0x5a + .4byte .LASF89 + .byte 0x5 + .byte 0x5b + .4byte .LASF90 + .byte 0x5 + .byte 0x5c + .4byte .LASF91 + .byte 0x5 + .byte 0x5d + .4byte .LASF92 + .byte 0x5 + .byte 0x5e + .4byte .LASF93 + .byte 0x5 + .byte 0x5f + .4byte .LASF94 + .byte 0x5 + .byte 0x60 + .4byte .LASF95 + .byte 0x5 + .byte 0x61 + .4byte .LASF96 + .byte 0x5 + .byte 0x62 + .4byte .LASF97 + .byte 0x5 + .byte 0x63 + .4byte .LASF98 + .byte 0x5 + .byte 0x64 + .4byte .LASF99 + .byte 0x5 + .byte 0x65 + .4byte .LASF100 + .byte 0x5 + .byte 0x66 + .4byte .LASF101 + .byte 0x5 + .byte 0x67 + .4byte .LASF102 + .byte 0x5 + .byte 0x68 + .4byte .LASF103 + .byte 0x5 + .byte 0x69 + .4byte .LASF104 + .byte 0x5 + .byte 0x6a + .4byte .LASF105 + .byte 0x5 + .byte 0x6b + .4byte .LASF106 + .byte 0x5 + .byte 0x6c + .4byte .LASF107 + .byte 0x5 + .byte 0x6d + .4byte .LASF108 + .byte 0x5 + .byte 0x6e + .4byte .LASF109 + .byte 0x5 + .byte 0x6f + .4byte .LASF110 + .byte 0x5 + .byte 0x70 + .4byte .LASF111 + .byte 0x5 + .byte 0x71 + .4byte .LASF112 + .byte 0x5 + .byte 0x72 + .4byte .LASF113 + .byte 0x5 + .byte 0x73 + .4byte .LASF114 + .byte 0x5 + .byte 0x74 + .4byte .LASF115 + .byte 0x5 + .byte 0x75 + .4byte .LASF116 + .byte 0x5 + .byte 0x76 + .4byte .LASF117 + .byte 0x5 + .byte 0x77 + .4byte .LASF118 + .byte 0x5 + .byte 0x78 + .4byte .LASF119 + .byte 0x5 + .byte 0x79 + .4byte .LASF120 + .byte 0x5 + .byte 0x7a + .4byte .LASF121 + .byte 0x5 + .byte 0x7b + .4byte .LASF122 + .byte 0x5 + .byte 0x7c + .4byte .LASF123 + .byte 0x5 + .byte 0x7d + .4byte .LASF124 + .byte 0x5 + .byte 0x7e + .4byte .LASF125 + .byte 0x5 + .byte 0x7f + .4byte .LASF126 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF127 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF128 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF129 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF130 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF131 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF132 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF133 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF134 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF135 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF136 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF137 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF138 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF139 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF140 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF141 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF142 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF143 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF144 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF145 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF146 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF147 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF148 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF149 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF150 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF151 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF152 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF153 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF154 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF155 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF156 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF157 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF158 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF159 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF160 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF161 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF162 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF163 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF164 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF165 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF166 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF167 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF168 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF169 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF170 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF171 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF172 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF173 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF174 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF175 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF176 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF177 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF178 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF179 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF180 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF181 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF182 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF183 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF184 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF185 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF186 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF187 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF188 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF189 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF190 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF191 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF192 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF193 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF194 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF195 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF196 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF197 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF198 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF199 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF200 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF201 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF202 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF203 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF204 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF205 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF206 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF207 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF208 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF209 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF210 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF211 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF212 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF213 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF214 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF215 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF216 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF217 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF218 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF219 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF220 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF221 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF222 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF223 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF224 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF225 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF226 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF227 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF228 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF229 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF230 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF231 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF232 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF233 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF234 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF235 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF236 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF237 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF238 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF239 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF240 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF241 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF242 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF243 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF244 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF245 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF246 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF247 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF248 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF249 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF250 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF251 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF252 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF253 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF254 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF255 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF256 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF257 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF258 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF259 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF260 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF261 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF262 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF263 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF264 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF265 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF266 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF267 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF268 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF269 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF270 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF271 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF272 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF273 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF274 + .byte 0x5 + .byte 0x94,0x2 + .4byte .LASF275 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF276 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF277 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF278 + .byte 0x5 + .byte 0x98,0x2 + .4byte .LASF279 + .byte 0x5 + .byte 0x99,0x2 + .4byte .LASF280 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF281 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF282 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF283 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF284 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF285 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF286 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF287 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF288 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF289 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF290 + .byte 0x5 + .byte 0xa4,0x2 + .4byte .LASF291 + .byte 0x5 + .byte 0xa5,0x2 + .4byte .LASF292 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF293 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF294 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF295 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF296 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF297 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF298 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF299 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF300 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF301 + .byte 0x5 + .byte 0xaf,0x2 + .4byte .LASF302 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF303 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF304 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF305 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF306 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF307 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF308 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF309 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF310 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF311 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF312 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF313 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF314 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF315 + .byte 0x5 + .byte 0xbd,0x2 + .4byte .LASF316 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF317 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF318 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF319 + .byte 0x5 + .byte 0x1 + .4byte .LASF320 + .byte 0x5 + .byte 0x2 + .4byte .LASF321 + .byte 0x5 + .byte 0x3 + .4byte .LASF322 + .byte 0x5 + .byte 0x4 + .4byte .LASF323 + .byte 0x5 + .byte 0x5 + .4byte .LASF324 + .byte 0x5 + .byte 0x6 + .4byte .LASF325 + .byte 0x5 + .byte 0x7 + .4byte .LASF326 + .byte 0x5 + .byte 0x8 + .4byte .LASF327 + .byte 0x5 + .byte 0x9 + .4byte .LASF328 + .file 4 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\stdint.h" + .byte 0x3 + .byte 0x2 + .byte 0x4 + .byte 0x5 + .byte 0xa + .4byte .LASF329 + .byte 0x3 + .byte 0xc + .byte 0x2 + .byte 0x5 + .byte 0x6 + .4byte .LASF330 + .file 5 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\features.h" + .byte 0x3 + .byte 0x8 + .byte 0x5 + .byte 0x5 + .byte 0x16 + .4byte .LASF331 + .file 6 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\_newlib_version.h" + .byte 0x3 + .byte 0x1c + .byte 0x6 + .byte 0x7 + .4byte .Ldebug_macro2 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro3 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro4 + .byte 0x4 + .file 7 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_intsup.h" + .byte 0x3 + .byte 0xd + .byte 0x7 + .byte 0x7 + .4byte .Ldebug_macro5 + .byte 0x4 + .byte 0x3 + .byte 0xe + .byte 0x3 + .byte 0x7 + .4byte .Ldebug_macro6 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro7 + .byte 0x4 + .file 8 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\stdio.h" + .byte 0x3 + .byte 0x3 + .byte 0x8 + .byte 0x5 + .byte 0x1b + .4byte .LASF478 + .file 9 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\_ansi.h" + .byte 0x3 + .byte 0x1d + .byte 0x9 + .byte 0x5 + .byte 0x8 + .4byte .LASF479 + .file 10 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\newlib.h" + .byte 0x3 + .byte 0xa + .byte 0xa + .byte 0x7 + .4byte .Ldebug_macro8 + .byte 0x4 + .file 11 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\config.h" + .byte 0x3 + .byte 0xb + .byte 0xb + .byte 0x5 + .byte 0x2 + .4byte .LASF494 + .file 12 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\machine\\ieeefp.h" + .byte 0x3 + .byte 0x4 + .byte 0xc + .byte 0x7 + .4byte .Ldebug_macro9 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro10 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro11 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro12 + .file 13 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\cdefs.h" + .byte 0x3 + .byte 0x23 + .byte 0xd + .byte 0x5 + .byte 0x2b + .4byte .LASF516 + .file 14 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\lib\\gcc\\riscv-none-embed\\10.2.0\\include\\stddef.h" + .byte 0x3 + .byte 0x2f + .byte 0xe + .byte 0x7 + .4byte .Ldebug_macro13 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro14 + .byte 0x4 + .byte 0x3 + .byte 0x24 + .byte 0xe + .byte 0x7 + .4byte .Ldebug_macro15 + .byte 0x4 + .byte 0x5 + .byte 0x27 + .4byte .LASF692 + .file 15 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\lib\\gcc\\riscv-none-embed\\10.2.0\\include\\stdarg.h" + .byte 0x3 + .byte 0x28 + .byte 0xf + .byte 0x7 + .4byte .Ldebug_macro16 + .byte 0x4 + .file 16 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\reent.h" + .byte 0x3 + .byte 0x3c + .byte 0x10 + .byte 0x5 + .byte 0xb + .4byte .LASF695 + .byte 0x3 + .byte 0xd + .byte 0x9 + .byte 0x4 + .byte 0x3 + .byte 0xe + .byte 0xe + .byte 0x4 + .file 17 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_types.h" + .byte 0x3 + .byte 0xf + .byte 0x11 + .byte 0x7 + .4byte .Ldebug_macro17 + .byte 0x3 + .byte 0x18 + .byte 0xe + .byte 0x7 + .4byte .Ldebug_macro18 + .byte 0x4 + .file 18 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\machine\\_types.h" + .byte 0x3 + .byte 0x1b + .byte 0x12 + .byte 0x5 + .byte 0x6 + .4byte .LASF700 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro19 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro20 + .file 19 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\lock.h" + .byte 0x3 + .byte 0x22 + .byte 0x13 + .byte 0x7 + .4byte .Ldebug_macro21 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro22 + .byte 0x4 + .file 20 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\types.h" + .byte 0x3 + .byte 0x3d + .byte 0x14 + .byte 0x7 + .4byte .Ldebug_macro23 + .file 21 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_pthreadtypes.h" + .byte 0x3 + .byte 0xdf,0x1 + .byte 0x15 + .byte 0x5 + .byte 0x13 + .4byte .LASF805 + .byte 0x4 + .file 22 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\machine\\types.h" + .byte 0x3 + .byte 0xe0,0x1 + .byte 0x16 + .byte 0x4 + .byte 0x6 + .byte 0xe4,0x1 + .4byte .LASF806 + .byte 0x4 + .byte 0x5 + .byte 0x43 + .4byte .LASF807 + .file 23 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\stdio.h" + .byte 0x3 + .byte 0x4f + .byte 0x17 + .byte 0x7 + .4byte .Ldebug_macro24 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro25 + .byte 0x4 + .file 24 "D:\\rt-thread\\components\\libc\\compilers\\common/unistd.h" + .byte 0x3 + .byte 0x4 + .byte 0x18 + .file 25 "D:\\rt-thread\\components\\libc\\compilers\\common/sys/unistd.h" + .byte 0x3 + .byte 0xa + .byte 0x19 + .byte 0x5 + .byte 0xd + .4byte .LASF859 + .byte 0x3 + .byte 0xf + .byte 0xe + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro26 + .byte 0x4 + .byte 0x4 + .file 26 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/riscv_encoding.h" + .byte 0x3 + .byte 0x5 + .byte 0x1a + .byte 0x7 + .4byte .Ldebug_macro27 + .byte 0x4 + .file 27 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_func.h" + .byte 0x3 + .byte 0x6 + .byte 0x1b + .byte 0x5 + .byte 0x4 + .4byte .LASF1690 + .byte 0x3 + .byte 0x7 + .byte 0xe + .byte 0x4 + .file 28 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_timer.h" + .byte 0x3 + .byte 0x8 + .byte 0x1c + .byte 0x7 + .4byte .Ldebug_macro28 + .byte 0x4 + .file 29 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_eclic.h" + .byte 0x3 + .byte 0x9 + .byte 0x1d + .byte 0x5 + .byte 0x4 + .4byte .LASF1701 + .file 30 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/riscv_const.h" + .byte 0x3 + .byte 0x6 + .byte 0x1e + .byte 0x7 + .4byte .Ldebug_macro29 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro30 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro31 + .byte 0x4 + .byte 0x4 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._newlib_version.h.4.bfdf54b0af045d4a71376ae00f63a22c,comdat +.Ldebug_macro2: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4 + .4byte .LASF332 + .byte 0x5 + .byte 0x6 + .4byte .LASF333 + .byte 0x5 + .byte 0x7 + .4byte .LASF334 + .byte 0x5 + .byte 0x8 + .4byte .LASF335 + .byte 0x5 + .byte 0x9 + .4byte .LASF336 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.features.h.33.4ac7543a40bbf4e11e60e29e36a3b28e,comdat +.Ldebug_macro3: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x21 + .4byte .LASF337 + .byte 0x5 + .byte 0x28 + .4byte .LASF338 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF339 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF340 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF341 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF342 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF343 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF344 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF345 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF346 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF347 + .byte 0x5 + .byte 0xca,0x2 + .4byte .LASF348 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._default_types.h.15.247e5cd201eca3442cbf5404108c4935,comdat +.Ldebug_macro4: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xf + .4byte .LASF349 + .byte 0x5 + .byte 0x1a + .4byte .LASF350 + .byte 0x5 + .byte 0x21 + .4byte .LASF351 + .byte 0x5 + .byte 0x2f + .4byte .LASF352 + .byte 0x5 + .byte 0x3d + .4byte .LASF353 + .byte 0x5 + .byte 0x53 + .4byte .LASF354 + .byte 0x5 + .byte 0x6d + .4byte .LASF355 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF356 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF357 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF358 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF359 + .byte 0x6 + .byte 0xf4,0x1 + .4byte .LASF360 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._intsup.h.10.48bafbb683905c4daa4565a85aeeb264,comdat +.Ldebug_macro5: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xa + .4byte .LASF361 + .byte 0x5 + .byte 0x10 + .4byte .LASF362 + .byte 0x6 + .byte 0x2b + .4byte .LASF363 + .byte 0x6 + .byte 0x2c + .4byte .LASF364 + .byte 0x6 + .byte 0x2d + .4byte .LASF365 + .byte 0x6 + .byte 0x2e + .4byte .LASF366 + .byte 0x2 + .byte 0x2f + .string "int" + .byte 0x6 + .byte 0x30 + .4byte .LASF367 + .byte 0x6 + .byte 0x31 + .4byte .LASF368 + .byte 0x6 + .byte 0x32 + .4byte .LASF369 + .byte 0x5 + .byte 0x33 + .4byte .LASF370 + .byte 0x5 + .byte 0x34 + .4byte .LASF371 + .byte 0x5 + .byte 0x35 + .4byte .LASF372 + .byte 0x5 + .byte 0x36 + .4byte .LASF373 + .byte 0x5 + .byte 0x37 + .4byte .LASF374 + .byte 0x5 + .byte 0x38 + .4byte .LASF375 + .byte 0x5 + .byte 0x39 + .4byte .LASF376 + .byte 0x5 + .byte 0x3a + .4byte .LASF377 + .byte 0x5 + .byte 0x43 + .4byte .LASF378 + .byte 0x5 + .byte 0x4a + .4byte .LASF379 + .byte 0x5 + .byte 0x52 + .4byte .LASF380 + .byte 0x5 + .byte 0x5d + .4byte .LASF381 + .byte 0x5 + .byte 0x68 + .4byte .LASF382 + .byte 0x5 + .byte 0x71 + .4byte .LASF383 + .byte 0x5 + .byte 0x78 + .4byte .LASF384 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF385 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF386 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF387 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF388 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF389 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF390 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF391 + .byte 0x6 + .byte 0xb8,0x1 + .4byte .LASF363 + .byte 0x6 + .byte 0xb9,0x1 + .4byte .LASF364 + .byte 0x6 + .byte 0xba,0x1 + .4byte .LASF365 + .byte 0x6 + .byte 0xbb,0x1 + .4byte .LASF366 + .byte 0x2 + .byte 0xbc,0x1 + .string "int" + .byte 0x6 + .byte 0xbd,0x1 + .4byte .LASF369 + .byte 0x6 + .byte 0xc2,0x1 + .4byte .LASF367 + .byte 0x6 + .byte 0xc3,0x1 + .4byte .LASF368 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._stdint.h.10.c24fa3af3bc1706662bb5593a907e841,comdat +.Ldebug_macro6: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xa + .4byte .LASF392 + .byte 0x5 + .byte 0x15 + .4byte .LASF393 + .byte 0x5 + .byte 0x19 + .4byte .LASF394 + .byte 0x5 + .byte 0x1b + .4byte .LASF395 + .byte 0x5 + .byte 0x21 + .4byte .LASF396 + .byte 0x5 + .byte 0x25 + .4byte .LASF397 + .byte 0x5 + .byte 0x27 + .4byte .LASF398 + .byte 0x5 + .byte 0x2d + .4byte .LASF399 + .byte 0x5 + .byte 0x31 + .4byte .LASF400 + .byte 0x5 + .byte 0x33 + .4byte .LASF401 + .byte 0x5 + .byte 0x39 + .4byte .LASF402 + .byte 0x5 + .byte 0x3d + .4byte .LASF403 + .byte 0x5 + .byte 0x3f + .4byte .LASF404 + .byte 0x5 + .byte 0x44 + .4byte .LASF405 + .byte 0x5 + .byte 0x49 + .4byte .LASF406 + .byte 0x5 + .byte 0x4e + .4byte .LASF407 + .byte 0x5 + .byte 0x53 + .4byte .LASF408 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stdint.h.23.d53047a68f4a85177f80b422d52785ed,comdat +.Ldebug_macro7: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x17 + .4byte .LASF409 + .byte 0x5 + .byte 0x1d + .4byte .LASF410 + .byte 0x5 + .byte 0x23 + .4byte .LASF411 + .byte 0x5 + .byte 0x29 + .4byte .LASF412 + .byte 0x5 + .byte 0x35 + .4byte .LASF413 + .byte 0x5 + .byte 0x3f + .4byte .LASF414 + .byte 0x5 + .byte 0x49 + .4byte .LASF415 + .byte 0x5 + .byte 0x53 + .4byte .LASF416 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF417 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF418 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF419 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF420 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF421 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF422 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF423 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF424 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF425 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF426 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF427 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF428 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF429 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF430 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF431 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF432 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF433 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF434 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF435 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF436 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF437 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF438 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF439 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF440 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF441 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF442 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF443 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF444 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF445 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF446 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF447 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF448 + .byte 0x5 + .byte 0x98,0x2 + .4byte .LASF449 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF450 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF451 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF452 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF453 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF454 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF455 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF456 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF457 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF458 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF459 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF460 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF461 + .byte 0x5 + .byte 0xe2,0x2 + .4byte .LASF462 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF463 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF464 + .byte 0x5 + .byte 0xf6,0x2 + .4byte .LASF465 + .byte 0x5 + .byte 0x80,0x3 + .4byte .LASF466 + .byte 0x5 + .byte 0x85,0x3 + .4byte .LASF467 + .byte 0x5 + .byte 0x8c,0x3 + .4byte .LASF468 + .byte 0x5 + .byte 0x8d,0x3 + .4byte .LASF469 + .byte 0x5 + .byte 0x98,0x3 + .4byte .LASF470 + .byte 0x5 + .byte 0x99,0x3 + .4byte .LASF471 + .byte 0x5 + .byte 0xa4,0x3 + .4byte .LASF472 + .byte 0x5 + .byte 0xa5,0x3 + .4byte .LASF473 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF474 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF475 + .byte 0x5 + .byte 0xc1,0x3 + .4byte .LASF476 + .byte 0x5 + .byte 0xc2,0x3 + .4byte .LASF477 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.newlib.h.8.542bedab3c90294c348821966b79eb81,comdat +.Ldebug_macro8: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x8 + .4byte .LASF480 + .byte 0x5 + .byte 0x12 + .4byte .LASF481 + .byte 0x5 + .byte 0x15 + .4byte .LASF482 + .byte 0x5 + .byte 0x18 + .4byte .LASF483 + .byte 0x5 + .byte 0x1b + .4byte .LASF484 + .byte 0x5 + .byte 0x25 + .4byte .LASF485 + .byte 0x5 + .byte 0x2b + .4byte .LASF486 + .byte 0x5 + .byte 0x35 + .4byte .LASF487 + .byte 0x5 + .byte 0x3c + .4byte .LASF488 + .byte 0x5 + .byte 0x3f + .4byte .LASF489 + .byte 0x5 + .byte 0x45 + .4byte .LASF490 + .byte 0x5 + .byte 0x48 + .4byte .LASF491 + .byte 0x5 + .byte 0x4b + .4byte .LASF492 + .byte 0x5 + .byte 0x4e + .4byte .LASF493 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.ieeefp.h.202.4f2759f5758fd82153cfbf98692f2ced,comdat +.Ldebug_macro9: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF495 + .byte 0x5 + .byte 0xec,0x3 + .4byte .LASF496 + .byte 0x5 + .byte 0xef,0x3 + .4byte .LASF497 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.config.h.83.13bbc8852bfac55b724c9822481355b5,comdat +.Ldebug_macro10: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x53 + .4byte .LASF498 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF499 + .byte 0x6 + .byte 0xe6,0x1 + .4byte .LASF500 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF501 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF502 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF503 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF504 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._ansi.h.31.de524f58584151836e90d8620a16f8e8,comdat +.Ldebug_macro11: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x1f + .4byte .LASF505 + .byte 0x5 + .byte 0x20 + .4byte .LASF506 + .byte 0x5 + .byte 0x21 + .4byte .LASF507 + .byte 0x5 + .byte 0x25 + .4byte .LASF508 + .byte 0x5 + .byte 0x2b + .4byte .LASF509 + .byte 0x5 + .byte 0x45 + .4byte .LASF510 + .byte 0x5 + .byte 0x49 + .4byte .LASF511 + .byte 0x5 + .byte 0x4a + .4byte .LASF512 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stdio.h.31.7c0e28c411445f3f9c5b11accf882760,comdat +.Ldebug_macro12: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x1f + .4byte .LASF513 + .byte 0x5 + .byte 0x21 + .4byte .LASF514 + .byte 0x5 + .byte 0x22 + .4byte .LASF515 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stddef.h.181.c3f52a3b0f4c288bddb5dda1562858e2,comdat +.Ldebug_macro13: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF517 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF518 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF519 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF520 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF521 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF522 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF523 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF524 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF525 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF526 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF527 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF528 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF529 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF530 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF531 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF532 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF533 + .byte 0x6 + .byte 0xe7,0x1 + .4byte .LASF534 + .byte 0x6 + .byte 0x86,0x3 + .4byte .LASF535 + .byte 0x5 + .byte 0x8b,0x3 + .4byte .LASF536 + .byte 0x6 + .byte 0x91,0x3 + .4byte .LASF537 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.cdefs.h.49.39045112216f6a021dbdffe3bf5accce,comdat +.Ldebug_macro14: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x31 + .4byte .LASF538 + .byte 0x5 + .byte 0x32 + .4byte .LASF539 + .byte 0x5 + .byte 0x33 + .4byte .LASF540 + .byte 0x5 + .byte 0x36 + .4byte .LASF541 + .byte 0x5 + .byte 0x39 + .4byte .LASF542 + .byte 0x5 + .byte 0x3a + .4byte .LASF543 + .byte 0x5 + .byte 0x3c + .4byte .LASF544 + .byte 0x5 + .byte 0x3d + .4byte .LASF545 + .byte 0x5 + .byte 0x3e + .4byte .LASF546 + .byte 0x5 + .byte 0x3f + .4byte .LASF547 + .byte 0x5 + .byte 0x42 + .4byte .LASF548 + .byte 0x5 + .byte 0x43 + .4byte .LASF549 + .byte 0x5 + .byte 0x44 + .4byte .LASF550 + .byte 0x5 + .byte 0x4e + .4byte .LASF551 + .byte 0x5 + .byte 0x51 + .4byte .LASF552 + .byte 0x5 + .byte 0x5e + .4byte .LASF553 + .byte 0x5 + .byte 0x5f + .4byte .LASF554 + .byte 0x5 + .byte 0x6b + .4byte .LASF555 + .byte 0x5 + .byte 0x6c + .4byte .LASF556 + .byte 0x5 + .byte 0x70 + .4byte .LASF557 + .byte 0x5 + .byte 0x71 + .4byte .LASF558 + .byte 0x5 + .byte 0x72 + .4byte .LASF559 + .byte 0x5 + .byte 0x75 + .4byte .LASF560 + .byte 0x5 + .byte 0x78 + .4byte .LASF561 + .byte 0x5 + .byte 0x7f + .4byte .LASF562 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF563 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF564 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF565 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF566 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF567 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF568 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF569 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF570 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF571 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF572 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF573 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF574 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF575 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF576 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF577 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF578 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF579 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF580 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF581 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF582 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF583 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF584 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF585 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF586 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF587 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF588 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF589 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF590 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF591 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF592 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF593 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF594 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF595 + .byte 0x5 + .byte 0xdc,0x2 + .4byte .LASF596 + .byte 0x5 + .byte 0xee,0x2 + .4byte .LASF597 + .byte 0x5 + .byte 0xf4,0x2 + .4byte .LASF598 + .byte 0x5 + .byte 0xf5,0x2 + .4byte .LASF599 + .byte 0x5 + .byte 0xfc,0x2 + .4byte .LASF600 + .byte 0x5 + .byte 0x82,0x3 + .4byte .LASF601 + .byte 0x5 + .byte 0x88,0x3 + .4byte .LASF602 + .byte 0x5 + .byte 0x89,0x3 + .4byte .LASF603 + .byte 0x5 + .byte 0x90,0x3 + .4byte .LASF604 + .byte 0x5 + .byte 0x91,0x3 + .4byte .LASF605 + .byte 0x5 + .byte 0x98,0x3 + .4byte .LASF606 + .byte 0x5 + .byte 0x9e,0x3 + .4byte .LASF607 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF608 + .byte 0x5 + .byte 0xd3,0x3 + .4byte .LASF609 + .byte 0x5 + .byte 0xd4,0x3 + .4byte .LASF610 + .byte 0x5 + .byte 0xdb,0x3 + .4byte .LASF611 + .byte 0x5 + .byte 0xdc,0x3 + .4byte .LASF612 + .byte 0x5 + .byte 0xdf,0x3 + .4byte .LASF613 + .byte 0x5 + .byte 0xe9,0x3 + .4byte .LASF614 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF615 + .byte 0x5 + .byte 0xf4,0x3 + .4byte .LASF616 + .byte 0x5 + .byte 0x8a,0x4 + .4byte .LASF617 + .byte 0x5 + .byte 0x8c,0x4 + .4byte .LASF618 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF619 + .byte 0x5 + .byte 0x8f,0x4 + .4byte .LASF620 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF621 + .byte 0x5 + .byte 0x9b,0x4 + .4byte .LASF622 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF623 + .byte 0x5 + .byte 0xa5,0x4 + .4byte .LASF624 + .byte 0x5 + .byte 0xa8,0x4 + .4byte .LASF625 + .byte 0x5 + .byte 0xac,0x4 + .4byte .LASF626 + .byte 0x5 + .byte 0xae,0x4 + .4byte .LASF627 + .byte 0x5 + .byte 0xd1,0x4 + .4byte .LASF628 + .byte 0x5 + .byte 0xd5,0x4 + .4byte .LASF629 + .byte 0x5 + .byte 0xd9,0x4 + .4byte .LASF630 + .byte 0x5 + .byte 0xdd,0x4 + .4byte .LASF631 + .byte 0x5 + .byte 0xe1,0x4 + .4byte .LASF632 + .byte 0x5 + .byte 0xe5,0x4 + .4byte .LASF633 + .byte 0x5 + .byte 0xe9,0x4 + .4byte .LASF634 + .byte 0x5 + .byte 0xed,0x4 + .4byte .LASF635 + .byte 0x5 + .byte 0xf4,0x4 + .4byte .LASF636 + .byte 0x5 + .byte 0xf5,0x4 + .4byte .LASF637 + .byte 0x5 + .byte 0xf6,0x4 + .4byte .LASF638 + .byte 0x5 + .byte 0xf7,0x4 + .4byte .LASF639 + .byte 0x5 + .byte 0xf8,0x4 + .4byte .LASF640 + .byte 0x5 + .byte 0x8d,0x5 + .4byte .LASF641 + .byte 0x5 + .byte 0x8e,0x5 + .4byte .LASF642 + .byte 0x5 + .byte 0xa0,0x5 + .4byte .LASF643 + .byte 0x5 + .byte 0xa6,0x5 + .4byte .LASF644 + .byte 0x5 + .byte 0xa9,0x5 + .4byte .LASF645 + .byte 0x5 + .byte 0xab,0x5 + .4byte .LASF646 + .byte 0x5 + .byte 0xaf,0x5 + .4byte .LASF647 + .byte 0x5 + .byte 0xb1,0x5 + .4byte .LASF648 + .byte 0x5 + .byte 0xb5,0x5 + .4byte .LASF649 + .byte 0x5 + .byte 0xb8,0x5 + .4byte .LASF650 + .byte 0x5 + .byte 0xba,0x5 + .4byte .LASF651 + .byte 0x5 + .byte 0xbe,0x5 + .4byte .LASF652 + .byte 0x5 + .byte 0xc0,0x5 + .4byte .LASF653 + .byte 0x5 + .byte 0xc2,0x5 + .4byte .LASF654 + .byte 0x5 + .byte 0xc6,0x5 + .4byte .LASF655 + .byte 0x5 + .byte 0xd1,0x5 + .4byte .LASF656 + .byte 0x5 + .byte 0xd2,0x5 + .4byte .LASF657 + .byte 0x5 + .byte 0xd6,0x5 + .4byte .LASF658 + .byte 0x5 + .byte 0xd7,0x5 + .4byte .LASF659 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stddef.h.39.b727a6c3269d9d6ef9fc646b721a8287,comdat +.Ldebug_macro15: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF660 + .byte 0x5 + .byte 0x28 + .4byte .LASF661 + .byte 0x5 + .byte 0x2a + .4byte .LASF662 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF663 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF664 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF665 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF666 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF667 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF668 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF669 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF670 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF671 + .byte 0x6 + .byte 0x9b,0x1 + .4byte .LASF672 + .byte 0x6 + .byte 0xe7,0x1 + .4byte .LASF534 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF673 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF674 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF675 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF676 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF677 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF678 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF679 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF680 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF681 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF682 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF683 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF684 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF685 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF686 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF687 + .byte 0x6 + .byte 0x9f,0x2 + .4byte .LASF688 + .byte 0x6 + .byte 0xd4,0x2 + .4byte .LASF689 + .byte 0x6 + .byte 0x86,0x3 + .4byte .LASF535 + .byte 0x5 + .byte 0x8b,0x3 + .4byte .LASF536 + .byte 0x6 + .byte 0x91,0x3 + .4byte .LASF537 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF690 + .byte 0x5 + .byte 0x9b,0x3 + .4byte .LASF691 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stdarg.h.34.3a23a216c0c293b3d2ea2e89281481e6,comdat +.Ldebug_macro16: + .2byte 0x4 + .byte 0 + .byte 0x6 + .byte 0x22 + .4byte .LASF693 + .byte 0x5 + .byte 0x27 + .4byte .LASF694 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._types.h.20.dd0d04dca3800a0d2a6129b87f3adbb2,comdat +.Ldebug_macro17: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x14 + .4byte .LASF696 + .byte 0x5 + .byte 0x16 + .4byte .LASF514 + .byte 0x5 + .byte 0x17 + .4byte .LASF697 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stddef.h.155.3588ebfdd1e8c7ede80509bb9c3b8009,comdat +.Ldebug_macro18: + .2byte 0x4 + .byte 0 + .byte 0x6 + .byte 0x9b,0x1 + .4byte .LASF672 + .byte 0x6 + .byte 0xe7,0x1 + .4byte .LASF534 + .byte 0x6 + .byte 0xd4,0x2 + .4byte .LASF689 + .byte 0x5 + .byte 0xd9,0x2 + .4byte .LASF698 + .byte 0x6 + .byte 0xe0,0x2 + .4byte .LASF699 + .byte 0x6 + .byte 0x86,0x3 + .4byte .LASF535 + .byte 0x5 + .byte 0x8b,0x3 + .4byte .LASF536 + .byte 0x6 + .byte 0x91,0x3 + .4byte .LASF537 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF690 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._types.h.127.34941de1b2539d59d5cac00e0dd27a45,comdat +.Ldebug_macro19: + .2byte 0x4 + .byte 0 + .byte 0x6 + .byte 0x7f + .4byte .LASF701 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF702 + .byte 0x6 + .byte 0x94,0x1 + .4byte .LASF364 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF703 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF704 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF705 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF706 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.reent.h.17.e292bf8b0bec6c96e131a54347145a30,comdat +.Ldebug_macro20: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x11 + .4byte .LASF707 + .byte 0x5 + .byte 0x15 + .4byte .LASF708 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.lock.h.2.c0958401bd0ce484d507ee19aacab817,comdat +.Ldebug_macro21: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x2 + .4byte .LASF709 + .byte 0x5 + .byte 0xe + .4byte .LASF710 + .byte 0x5 + .byte 0xf + .4byte .LASF711 + .byte 0x5 + .byte 0x10 + .4byte .LASF712 + .byte 0x5 + .byte 0x11 + .4byte .LASF713 + .byte 0x5 + .byte 0x12 + .4byte .LASF714 + .byte 0x5 + .byte 0x13 + .4byte .LASF715 + .byte 0x5 + .byte 0x14 + .4byte .LASF716 + .byte 0x5 + .byte 0x15 + .4byte .LASF717 + .byte 0x5 + .byte 0x16 + .4byte .LASF718 + .byte 0x5 + .byte 0x17 + .4byte .LASF719 + .byte 0x5 + .byte 0x18 + .4byte .LASF720 + .byte 0x5 + .byte 0x19 + .4byte .LASF721 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.reent.h.77.dcd6129ff07fe81bd5636db29abe53b2,comdat +.Ldebug_macro22: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4d + .4byte .LASF722 + .byte 0x5 + .byte 0x69 + .4byte .LASF723 + .byte 0x5 + .byte 0x6f + .4byte .LASF724 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF725 + .byte 0x5 + .byte 0xbd,0x2 + .4byte .LASF726 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF727 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF728 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF729 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF730 + .byte 0x5 + .byte 0xc2,0x2 + .4byte .LASF731 + .byte 0x5 + .byte 0xc3,0x2 + .4byte .LASF732 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF733 + .byte 0x5 + .byte 0xd0,0x2 + .4byte .LASF734 + .byte 0x5 + .byte 0xd1,0x2 + .4byte .LASF735 + .byte 0x5 + .byte 0xa0,0x5 + .4byte .LASF736 + .byte 0x5 + .byte 0xbc,0x5 + .4byte .LASF737 + .byte 0x5 + .byte 0xbf,0x5 + .4byte .LASF738 + .byte 0x5 + .byte 0xef,0x5 + .4byte .LASF739 + .byte 0x5 + .byte 0xfd,0x5 + .4byte .LASF740 + .byte 0x5 + .byte 0xfe,0x5 + .4byte .LASF741 + .byte 0x5 + .byte 0xff,0x5 + .4byte .LASF742 + .byte 0x5 + .byte 0x80,0x6 + .4byte .LASF743 + .byte 0x5 + .byte 0x81,0x6 + .4byte .LASF744 + .byte 0x5 + .byte 0x82,0x6 + .4byte .LASF745 + .byte 0x5 + .byte 0x83,0x6 + .4byte .LASF746 + .byte 0x5 + .byte 0x85,0x6 + .4byte .LASF747 + .byte 0x5 + .byte 0x86,0x6 + .4byte .LASF748 + .byte 0x5 + .byte 0x87,0x6 + .4byte .LASF749 + .byte 0x5 + .byte 0x88,0x6 + .4byte .LASF750 + .byte 0x5 + .byte 0x89,0x6 + .4byte .LASF751 + .byte 0x5 + .byte 0x8a,0x6 + .4byte .LASF752 + .byte 0x5 + .byte 0x8b,0x6 + .4byte .LASF753 + .byte 0x5 + .byte 0x8c,0x6 + .4byte .LASF754 + .byte 0x5 + .byte 0x8d,0x6 + .4byte .LASF755 + .byte 0x5 + .byte 0x8e,0x6 + .4byte .LASF756 + .byte 0x5 + .byte 0x8f,0x6 + .4byte .LASF757 + .byte 0x5 + .byte 0x90,0x6 + .4byte .LASF758 + .byte 0x5 + .byte 0x91,0x6 + .4byte .LASF759 + .byte 0x5 + .byte 0x92,0x6 + .4byte .LASF760 + .byte 0x5 + .byte 0x93,0x6 + .4byte .LASF761 + .byte 0x5 + .byte 0x94,0x6 + .4byte .LASF762 + .byte 0x5 + .byte 0x95,0x6 + .4byte .LASF763 + .byte 0x5 + .byte 0x96,0x6 + .4byte .LASF764 + .byte 0x5 + .byte 0x97,0x6 + .4byte .LASF765 + .byte 0x5 + .byte 0x98,0x6 + .4byte .LASF766 + .byte 0x5 + .byte 0x99,0x6 + .4byte .LASF767 + .byte 0x5 + .byte 0x9a,0x6 + .4byte .LASF768 + .byte 0x5 + .byte 0x9b,0x6 + .4byte .LASF769 + .byte 0x5 + .byte 0x9c,0x6 + .4byte .LASF770 + .byte 0x5 + .byte 0xa0,0x6 + .4byte .LASF771 + .byte 0x5 + .byte 0xa8,0x6 + .4byte .LASF772 + .byte 0x5 + .byte 0xb0,0x6 + .4byte .LASF773 + .byte 0x5 + .byte 0xc0,0x6 + .4byte .LASF774 + .byte 0x5 + .byte 0xc3,0x6 + .4byte .LASF775 + .byte 0x5 + .byte 0xc9,0x6 + .4byte .LASF776 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.types.h.40.c2dcbbb5c1f4f0e5cb716ebf7776da48,comdat +.Ldebug_macro23: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x28 + .4byte .LASF777 + .byte 0x5 + .byte 0x2c + .4byte .LASF778 + .byte 0x5 + .byte 0x62 + .4byte .LASF779 + .byte 0x5 + .byte 0x67 + .4byte .LASF780 + .byte 0x5 + .byte 0x6c + .4byte .LASF781 + .byte 0x5 + .byte 0x6d + .4byte .LASF782 + .byte 0x5 + .byte 0x72 + .4byte .LASF783 + .byte 0x5 + .byte 0x73 + .4byte .LASF784 + .byte 0x5 + .byte 0x78 + .4byte .LASF785 + .byte 0x5 + .byte 0x7c + .4byte .LASF786 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF787 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF788 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF789 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF790 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF791 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF792 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF793 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF794 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF795 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF796 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF797 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF798 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF799 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF800 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF801 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF802 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF803 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF804 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stdio.h.2.4aa87247282eca6c8f36f9de33d8df1a,comdat +.Ldebug_macro24: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x2 + .4byte .LASF808 + .byte 0x5 + .byte 0xd + .4byte .LASF809 + .byte 0x5 + .byte 0x15 + .4byte .LASF810 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stdio.h.81.b348624b6806a74def9195c754308a00,comdat +.Ldebug_macro25: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x51 + .4byte .LASF811 + .byte 0x5 + .byte 0x52 + .4byte .LASF812 + .byte 0x5 + .byte 0x53 + .4byte .LASF813 + .byte 0x5 + .byte 0x54 + .4byte .LASF814 + .byte 0x5 + .byte 0x56 + .4byte .LASF815 + .byte 0x5 + .byte 0x57 + .4byte .LASF816 + .byte 0x5 + .byte 0x58 + .4byte .LASF817 + .byte 0x5 + .byte 0x59 + .4byte .LASF818 + .byte 0x5 + .byte 0x5a + .4byte .LASF819 + .byte 0x5 + .byte 0x5b + .4byte .LASF820 + .byte 0x5 + .byte 0x5c + .4byte .LASF821 + .byte 0x5 + .byte 0x5d + .4byte .LASF822 + .byte 0x5 + .byte 0x5e + .4byte .LASF823 + .byte 0x5 + .byte 0x5f + .4byte .LASF824 + .byte 0x5 + .byte 0x63 + .4byte .LASF825 + .byte 0x5 + .byte 0x66 + .4byte .LASF826 + .byte 0x5 + .byte 0x67 + .4byte .LASF827 + .byte 0x5 + .byte 0x72 + .4byte .LASF828 + .byte 0x5 + .byte 0x73 + .4byte .LASF829 + .byte 0x5 + .byte 0x74 + .4byte .LASF830 + .byte 0x5 + .byte 0x76 + .4byte .LASF831 + .byte 0x5 + .byte 0x7b + .4byte .LASF832 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF833 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF834 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF835 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF836 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF837 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF838 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF839 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF840 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF841 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF842 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF843 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF844 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF845 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF846 + .byte 0x5 + .byte 0x8e,0x5 + .4byte .LASF847 + .byte 0x5 + .byte 0xab,0x5 + .4byte .LASF848 + .byte 0x5 + .byte 0xcf,0x5 + .4byte .LASF849 + .byte 0x5 + .byte 0xd0,0x5 + .4byte .LASF850 + .byte 0x5 + .byte 0xd1,0x5 + .4byte .LASF851 + .byte 0x5 + .byte 0xd2,0x5 + .4byte .LASF852 + .byte 0x5 + .byte 0xd6,0x5 + .4byte .LASF853 + .byte 0x5 + .byte 0xd7,0x5 + .4byte .LASF854 + .byte 0x5 + .byte 0xd8,0x5 + .4byte .LASF855 + .byte 0x5 + .byte 0xff,0x5 + .4byte .LASF856 + .byte 0x5 + .byte 0x80,0x6 + .4byte .LASF857 + .byte 0x5 + .byte 0x8e,0x6 + .4byte .LASF858 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.unistd.h.22.3ec6b4596b960d9f35140931ce8c2bd0,comdat +.Ldebug_macro26: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x16 + .4byte .LASF860 + .byte 0x5 + .byte 0x17 + .4byte .LASF861 + .byte 0x5 + .byte 0x18 + .4byte .LASF862 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.riscv_encoding.h.4.141a3f782f9378c77348fd1925237eaf,comdat +.Ldebug_macro27: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4 + .4byte .LASF863 + .byte 0x5 + .byte 0x6 + .4byte .LASF864 + .byte 0x5 + .byte 0x7 + .4byte .LASF865 + .byte 0x5 + .byte 0x8 + .4byte .LASF866 + .byte 0x5 + .byte 0x9 + .4byte .LASF867 + .byte 0x5 + .byte 0xa + .4byte .LASF868 + .byte 0x5 + .byte 0xb + .4byte .LASF869 + .byte 0x5 + .byte 0xc + .4byte .LASF870 + .byte 0x5 + .byte 0xd + .4byte .LASF871 + .byte 0x5 + .byte 0xe + .4byte .LASF872 + .byte 0x5 + .byte 0xf + .4byte .LASF873 + .byte 0x5 + .byte 0x10 + .4byte .LASF874 + .byte 0x5 + .byte 0x11 + .4byte .LASF875 + .byte 0x5 + .byte 0x12 + .4byte .LASF876 + .byte 0x5 + .byte 0x13 + .4byte .LASF877 + .byte 0x5 + .byte 0x14 + .4byte .LASF878 + .byte 0x5 + .byte 0x15 + .4byte .LASF879 + .byte 0x5 + .byte 0x16 + .4byte .LASF880 + .byte 0x5 + .byte 0x17 + .4byte .LASF881 + .byte 0x5 + .byte 0x1a + .4byte .LASF882 + .byte 0x5 + .byte 0x1b + .4byte .LASF883 + .byte 0x5 + .byte 0x1c + .4byte .LASF884 + .byte 0x5 + .byte 0x1d + .4byte .LASF885 + .byte 0x5 + .byte 0x1e + .4byte .LASF886 + .byte 0x5 + .byte 0x1f + .4byte .LASF887 + .byte 0x5 + .byte 0x20 + .4byte .LASF888 + .byte 0x5 + .byte 0x21 + .4byte .LASF889 + .byte 0x5 + .byte 0x22 + .4byte .LASF890 + .byte 0x5 + .byte 0x23 + .4byte .LASF891 + .byte 0x5 + .byte 0x25 + .4byte .LASF892 + .byte 0x5 + .byte 0x26 + .4byte .LASF893 + .byte 0x5 + .byte 0x27 + .4byte .LASF894 + .byte 0x5 + .byte 0x28 + .4byte .LASF895 + .byte 0x5 + .byte 0x29 + .4byte .LASF896 + .byte 0x5 + .byte 0x2a + .4byte .LASF897 + .byte 0x5 + .byte 0x2b + .4byte .LASF898 + .byte 0x5 + .byte 0x2c + .4byte .LASF899 + .byte 0x5 + .byte 0x2d + .4byte .LASF900 + .byte 0x5 + .byte 0x2e + .4byte .LASF901 + .byte 0x5 + .byte 0x2f + .4byte .LASF902 + .byte 0x5 + .byte 0x30 + .4byte .LASF903 + .byte 0x5 + .byte 0x31 + .4byte .LASF904 + .byte 0x5 + .byte 0x32 + .4byte .LASF905 + .byte 0x5 + .byte 0x34 + .4byte .LASF906 + .byte 0x5 + .byte 0x35 + .4byte .LASF907 + .byte 0x5 + .byte 0x36 + .4byte .LASF908 + .byte 0x5 + .byte 0x37 + .4byte .LASF909 + .byte 0x5 + .byte 0x38 + .4byte .LASF910 + .byte 0x5 + .byte 0x39 + .4byte .LASF911 + .byte 0x5 + .byte 0x3b + .4byte .LASF912 + .byte 0x5 + .byte 0x3c + .4byte .LASF913 + .byte 0x5 + .byte 0x3d + .4byte .LASF914 + .byte 0x5 + .byte 0x3f + .4byte .LASF915 + .byte 0x5 + .byte 0x40 + .4byte .LASF916 + .byte 0x5 + .byte 0x41 + .4byte .LASF917 + .byte 0x5 + .byte 0x42 + .4byte .LASF918 + .byte 0x5 + .byte 0x43 + .4byte .LASF919 + .byte 0x5 + .byte 0x44 + .4byte .LASF920 + .byte 0x5 + .byte 0x45 + .4byte .LASF921 + .byte 0x5 + .byte 0x46 + .4byte .LASF922 + .byte 0x5 + .byte 0x47 + .4byte .LASF923 + .byte 0x5 + .byte 0x48 + .4byte .LASF924 + .byte 0x5 + .byte 0x49 + .4byte .LASF925 + .byte 0x5 + .byte 0x4a + .4byte .LASF926 + .byte 0x5 + .byte 0x4c + .4byte .LASF927 + .byte 0x5 + .byte 0x4d + .4byte .LASF928 + .byte 0x5 + .byte 0x4f + .4byte .LASF929 + .byte 0x5 + .byte 0x50 + .4byte .LASF930 + .byte 0x5 + .byte 0x51 + .4byte .LASF931 + .byte 0x5 + .byte 0x52 + .4byte .LASF932 + .byte 0x5 + .byte 0x53 + .4byte .LASF933 + .byte 0x5 + .byte 0x55 + .4byte .LASF934 + .byte 0x5 + .byte 0x56 + .4byte .LASF935 + .byte 0x5 + .byte 0x57 + .4byte .LASF936 + .byte 0x5 + .byte 0x58 + .4byte .LASF937 + .byte 0x5 + .byte 0x59 + .4byte .LASF938 + .byte 0x5 + .byte 0x5a + .4byte .LASF939 + .byte 0x5 + .byte 0x5c + .4byte .LASF940 + .byte 0x5 + .byte 0x5d + .4byte .LASF941 + .byte 0x5 + .byte 0x5e + .4byte .LASF942 + .byte 0x5 + .byte 0x5f + .4byte .LASF943 + .byte 0x5 + .byte 0x60 + .4byte .LASF944 + .byte 0x5 + .byte 0x61 + .4byte .LASF945 + .byte 0x5 + .byte 0x62 + .4byte .LASF946 + .byte 0x5 + .byte 0x63 + .4byte .LASF947 + .byte 0x5 + .byte 0x64 + .4byte .LASF948 + .byte 0x5 + .byte 0x66 + .4byte .LASF949 + .byte 0x5 + .byte 0x67 + .4byte .LASF950 + .byte 0x5 + .byte 0x68 + .4byte .LASF951 + .byte 0x5 + .byte 0x69 + .4byte .LASF952 + .byte 0x5 + .byte 0x6a + .4byte .LASF953 + .byte 0x5 + .byte 0x6b + .4byte .LASF954 + .byte 0x5 + .byte 0x6c + .4byte .LASF955 + .byte 0x5 + .byte 0x6d + .4byte .LASF956 + .byte 0x5 + .byte 0x6e + .4byte .LASF957 + .byte 0x5 + .byte 0x70 + .4byte .LASF958 + .byte 0x5 + .byte 0x71 + .4byte .LASF959 + .byte 0x5 + .byte 0x73 + .4byte .LASF960 + .byte 0x5 + .byte 0x74 + .4byte .LASF961 + .byte 0x5 + .byte 0x75 + .4byte .LASF962 + .byte 0x5 + .byte 0x76 + .4byte .LASF963 + .byte 0x5 + .byte 0x78 + .4byte .LASF964 + .byte 0x5 + .byte 0x79 + .4byte .LASF965 + .byte 0x5 + .byte 0x7a + .4byte .LASF966 + .byte 0x5 + .byte 0x7b + .4byte .LASF967 + .byte 0x5 + .byte 0x7c + .4byte .LASF968 + .byte 0x5 + .byte 0x7d + .4byte .LASF969 + .byte 0x5 + .byte 0x7f + .4byte .LASF970 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF971 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF972 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF973 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF974 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF975 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF976 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF977 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF978 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF979 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF980 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF981 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF982 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF983 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF984 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF985 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF986 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF987 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF988 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF989 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF990 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF991 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF992 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF993 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF994 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF995 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF996 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF997 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF998 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF999 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1000 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1001 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1002 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF1003 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF1004 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1005 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1006 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF1007 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF1008 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF1009 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1010 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1011 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF1012 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1013 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1014 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF1015 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF1016 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF1017 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1018 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1019 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF1020 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF1021 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF1022 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF1023 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF1024 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF1025 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF1026 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF1027 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF1028 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF1029 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF1030 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1031 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1032 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF1033 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF1034 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF1035 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF1036 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF1037 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF1038 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF1039 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF1040 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF1041 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF1042 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF1043 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF1044 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF1045 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF1046 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF1047 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF1048 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF1049 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF1050 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF1051 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF1052 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF1053 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF1054 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF1055 + .byte 0x5 + .byte 0x94,0x2 + .4byte .LASF1056 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF1057 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF1058 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF1059 + .byte 0x5 + .byte 0x98,0x2 + .4byte .LASF1060 + .byte 0x5 + .byte 0x99,0x2 + .4byte .LASF1061 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF1062 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF1063 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF1064 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF1065 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF1066 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF1067 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF1068 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF1069 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF1070 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF1071 + .byte 0x5 + .byte 0xa4,0x2 + .4byte .LASF1072 + .byte 0x5 + .byte 0xa5,0x2 + .4byte .LASF1073 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF1074 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF1075 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF1076 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF1077 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF1078 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF1079 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF1080 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF1081 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF1082 + .byte 0x5 + .byte 0xaf,0x2 + .4byte .LASF1083 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF1084 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF1085 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF1086 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF1087 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF1088 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF1089 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF1090 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF1091 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF1092 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF1093 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF1094 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF1095 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF1096 + .byte 0x5 + .byte 0xbd,0x2 + .4byte .LASF1097 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF1098 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF1099 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF1100 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF1101 + .byte 0x5 + .byte 0xc2,0x2 + .4byte .LASF1102 + .byte 0x5 + .byte 0xc3,0x2 + .4byte .LASF1103 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF1104 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF1105 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF1106 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF1107 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF1108 + .byte 0x5 + .byte 0xc9,0x2 + .4byte .LASF1109 + .byte 0x5 + .byte 0xca,0x2 + .4byte .LASF1110 + .byte 0x5 + .byte 0xcb,0x2 + .4byte .LASF1111 + .byte 0x5 + .byte 0xcc,0x2 + .4byte .LASF1112 + .byte 0x5 + .byte 0xcd,0x2 + .4byte .LASF1113 + .byte 0x5 + .byte 0xce,0x2 + .4byte .LASF1114 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF1115 + .byte 0x5 + .byte 0xd0,0x2 + .4byte .LASF1116 + .byte 0x5 + .byte 0xd1,0x2 + .4byte .LASF1117 + .byte 0x5 + .byte 0xd2,0x2 + .4byte .LASF1118 + .byte 0x5 + .byte 0xd3,0x2 + .4byte .LASF1119 + .byte 0x5 + .byte 0xd4,0x2 + .4byte .LASF1120 + .byte 0x5 + .byte 0xd5,0x2 + .4byte .LASF1121 + .byte 0x5 + .byte 0xd6,0x2 + .4byte .LASF1122 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF1123 + .byte 0x5 + .byte 0xd8,0x2 + .4byte .LASF1124 + .byte 0x5 + .byte 0xd9,0x2 + .4byte .LASF1125 + .byte 0x5 + .byte 0xda,0x2 + .4byte .LASF1126 + .byte 0x5 + .byte 0xdb,0x2 + .4byte .LASF1127 + .byte 0x5 + .byte 0xdc,0x2 + .4byte .LASF1128 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF1129 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF1130 + .byte 0x5 + .byte 0xdf,0x2 + .4byte .LASF1131 + .byte 0x5 + .byte 0xe0,0x2 + .4byte .LASF1132 + .byte 0x5 + .byte 0xe1,0x2 + .4byte .LASF1133 + .byte 0x5 + .byte 0xe2,0x2 + .4byte .LASF1134 + .byte 0x5 + .byte 0xe3,0x2 + .4byte .LASF1135 + .byte 0x5 + .byte 0xe4,0x2 + .4byte .LASF1136 + .byte 0x5 + .byte 0xe5,0x2 + .4byte .LASF1137 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF1138 + .byte 0x5 + .byte 0xe7,0x2 + .4byte .LASF1139 + .byte 0x5 + .byte 0xe8,0x2 + .4byte .LASF1140 + .byte 0x5 + .byte 0xe9,0x2 + .4byte .LASF1141 + .byte 0x5 + .byte 0xea,0x2 + .4byte .LASF1142 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF1143 + .byte 0x5 + .byte 0xec,0x2 + .4byte .LASF1144 + .byte 0x5 + .byte 0xed,0x2 + .4byte .LASF1145 + .byte 0x5 + .byte 0xee,0x2 + .4byte .LASF1146 + .byte 0x5 + .byte 0xef,0x2 + .4byte .LASF1147 + .byte 0x5 + .byte 0xf0,0x2 + .4byte .LASF1148 + .byte 0x5 + .byte 0xf1,0x2 + .4byte .LASF1149 + .byte 0x5 + .byte 0xf2,0x2 + .4byte .LASF1150 + .byte 0x5 + .byte 0xf3,0x2 + .4byte .LASF1151 + .byte 0x5 + .byte 0xf4,0x2 + .4byte .LASF1152 + .byte 0x5 + .byte 0xf5,0x2 + .4byte .LASF1153 + .byte 0x5 + .byte 0xf6,0x2 + .4byte .LASF1154 + .byte 0x5 + .byte 0xf7,0x2 + .4byte .LASF1155 + .byte 0x5 + .byte 0xf8,0x2 + .4byte .LASF1156 + .byte 0x5 + .byte 0xf9,0x2 + .4byte .LASF1157 + .byte 0x5 + .byte 0xfa,0x2 + .4byte .LASF1158 + .byte 0x5 + .byte 0xfb,0x2 + .4byte .LASF1159 + .byte 0x5 + .byte 0xfc,0x2 + .4byte .LASF1160 + .byte 0x5 + .byte 0xfd,0x2 + .4byte .LASF1161 + .byte 0x5 + .byte 0xfe,0x2 + .4byte .LASF1162 + .byte 0x5 + .byte 0xff,0x2 + .4byte .LASF1163 + .byte 0x5 + .byte 0x80,0x3 + .4byte .LASF1164 + .byte 0x5 + .byte 0x81,0x3 + .4byte .LASF1165 + .byte 0x5 + .byte 0x82,0x3 + .4byte .LASF1166 + .byte 0x5 + .byte 0x83,0x3 + .4byte .LASF1167 + .byte 0x5 + .byte 0x84,0x3 + .4byte .LASF1168 + .byte 0x5 + .byte 0x85,0x3 + .4byte .LASF1169 + .byte 0x5 + .byte 0x86,0x3 + .4byte .LASF1170 + .byte 0x5 + .byte 0x87,0x3 + .4byte .LASF1171 + .byte 0x5 + .byte 0x88,0x3 + .4byte .LASF1172 + .byte 0x5 + .byte 0x89,0x3 + .4byte .LASF1173 + .byte 0x5 + .byte 0x8a,0x3 + .4byte .LASF1174 + .byte 0x5 + .byte 0x8b,0x3 + .4byte .LASF1175 + .byte 0x5 + .byte 0x8c,0x3 + .4byte .LASF1176 + .byte 0x5 + .byte 0x8d,0x3 + .4byte .LASF1177 + .byte 0x5 + .byte 0x8e,0x3 + .4byte .LASF1178 + .byte 0x5 + .byte 0x8f,0x3 + .4byte .LASF1179 + .byte 0x5 + .byte 0x90,0x3 + .4byte .LASF1180 + .byte 0x5 + .byte 0x91,0x3 + .4byte .LASF1181 + .byte 0x5 + .byte 0x92,0x3 + .4byte .LASF1182 + .byte 0x5 + .byte 0x93,0x3 + .4byte .LASF1183 + .byte 0x5 + .byte 0x94,0x3 + .4byte .LASF1184 + .byte 0x5 + .byte 0x95,0x3 + .4byte .LASF1185 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF1186 + .byte 0x5 + .byte 0x97,0x3 + .4byte .LASF1187 + .byte 0x5 + .byte 0x98,0x3 + .4byte .LASF1188 + .byte 0x5 + .byte 0x99,0x3 + .4byte .LASF1189 + .byte 0x5 + .byte 0x9a,0x3 + .4byte .LASF1190 + .byte 0x5 + .byte 0x9b,0x3 + .4byte .LASF1191 + .byte 0x5 + .byte 0x9c,0x3 + .4byte .LASF1192 + .byte 0x5 + .byte 0x9d,0x3 + .4byte .LASF1193 + .byte 0x5 + .byte 0x9e,0x3 + .4byte .LASF1194 + .byte 0x5 + .byte 0x9f,0x3 + .4byte .LASF1195 + .byte 0x5 + .byte 0xa0,0x3 + .4byte .LASF1196 + .byte 0x5 + .byte 0xa1,0x3 + .4byte .LASF1197 + .byte 0x5 + .byte 0xa2,0x3 + .4byte .LASF1198 + .byte 0x5 + .byte 0xa3,0x3 + .4byte .LASF1199 + .byte 0x5 + .byte 0xa4,0x3 + .4byte .LASF1200 + .byte 0x5 + .byte 0xa5,0x3 + .4byte .LASF1201 + .byte 0x5 + .byte 0xa6,0x3 + .4byte .LASF1202 + .byte 0x5 + .byte 0xa7,0x3 + .4byte .LASF1203 + .byte 0x5 + .byte 0xa8,0x3 + .4byte .LASF1204 + .byte 0x5 + .byte 0xa9,0x3 + .4byte .LASF1205 + .byte 0x5 + .byte 0xaa,0x3 + .4byte .LASF1206 + .byte 0x5 + .byte 0xab,0x3 + .4byte .LASF1207 + .byte 0x5 + .byte 0xac,0x3 + .4byte .LASF1208 + .byte 0x5 + .byte 0xad,0x3 + .4byte .LASF1209 + .byte 0x5 + .byte 0xae,0x3 + .4byte .LASF1210 + .byte 0x5 + .byte 0xaf,0x3 + .4byte .LASF1211 + .byte 0x5 + .byte 0xb0,0x3 + .4byte .LASF1212 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF1213 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF1214 + .byte 0x5 + .byte 0xb3,0x3 + .4byte .LASF1215 + .byte 0x5 + .byte 0xb4,0x3 + .4byte .LASF1216 + .byte 0x5 + .byte 0xb5,0x3 + .4byte .LASF1217 + .byte 0x5 + .byte 0xb6,0x3 + .4byte .LASF1218 + .byte 0x5 + .byte 0xb7,0x3 + .4byte .LASF1219 + .byte 0x5 + .byte 0xb8,0x3 + .4byte .LASF1220 + .byte 0x5 + .byte 0xb9,0x3 + .4byte .LASF1221 + .byte 0x5 + .byte 0xba,0x3 + .4byte .LASF1222 + .byte 0x5 + .byte 0xbb,0x3 + .4byte .LASF1223 + .byte 0x5 + .byte 0xbc,0x3 + .4byte .LASF1224 + .byte 0x5 + .byte 0xbd,0x3 + .4byte .LASF1225 + .byte 0x5 + .byte 0xbe,0x3 + .4byte .LASF1226 + .byte 0x5 + .byte 0xbf,0x3 + .4byte .LASF1227 + .byte 0x5 + .byte 0xc0,0x3 + .4byte .LASF1228 + .byte 0x5 + .byte 0xc1,0x3 + .4byte .LASF1229 + .byte 0x5 + .byte 0xc2,0x3 + .4byte .LASF1230 + .byte 0x5 + .byte 0xc3,0x3 + .4byte .LASF1231 + .byte 0x5 + .byte 0xc4,0x3 + .4byte .LASF1232 + .byte 0x5 + .byte 0xc5,0x3 + .4byte .LASF1233 + .byte 0x5 + .byte 0xc6,0x3 + .4byte .LASF1234 + .byte 0x5 + .byte 0xc7,0x3 + .4byte .LASF1235 + .byte 0x5 + .byte 0xc8,0x3 + .4byte .LASF1236 + .byte 0x5 + .byte 0xc9,0x3 + .4byte .LASF1237 + .byte 0x5 + .byte 0xca,0x3 + .4byte .LASF1238 + .byte 0x5 + .byte 0xcb,0x3 + .4byte .LASF1239 + .byte 0x5 + .byte 0xcc,0x3 + .4byte .LASF1240 + .byte 0x5 + .byte 0xcd,0x3 + .4byte .LASF1241 + .byte 0x5 + .byte 0xce,0x3 + .4byte .LASF1242 + .byte 0x5 + .byte 0xcf,0x3 + .4byte .LASF1243 + .byte 0x5 + .byte 0xd0,0x3 + .4byte .LASF1244 + .byte 0x5 + .byte 0xd1,0x3 + .4byte .LASF1245 + .byte 0x5 + .byte 0xd2,0x3 + .4byte .LASF1246 + .byte 0x5 + .byte 0xd3,0x3 + .4byte .LASF1247 + .byte 0x5 + .byte 0xd4,0x3 + .4byte .LASF1248 + .byte 0x5 + .byte 0xd5,0x3 + .4byte .LASF1249 + .byte 0x5 + .byte 0xd6,0x3 + .4byte .LASF1250 + .byte 0x5 + .byte 0xd7,0x3 + .4byte .LASF1251 + .byte 0x5 + .byte 0xd8,0x3 + .4byte .LASF1252 + .byte 0x5 + .byte 0xd9,0x3 + .4byte .LASF1253 + .byte 0x5 + .byte 0xda,0x3 + .4byte .LASF1254 + .byte 0x5 + .byte 0xdb,0x3 + .4byte .LASF1255 + .byte 0x5 + .byte 0xdc,0x3 + .4byte .LASF1256 + .byte 0x5 + .byte 0xdd,0x3 + .4byte .LASF1257 + .byte 0x5 + .byte 0xde,0x3 + .4byte .LASF1258 + .byte 0x5 + .byte 0xdf,0x3 + .4byte .LASF1259 + .byte 0x5 + .byte 0xe0,0x3 + .4byte .LASF1260 + .byte 0x5 + .byte 0xe1,0x3 + .4byte .LASF1261 + .byte 0x5 + .byte 0xe2,0x3 + .4byte .LASF1262 + .byte 0x5 + .byte 0xe3,0x3 + .4byte .LASF1263 + .byte 0x5 + .byte 0xe4,0x3 + .4byte .LASF1264 + .byte 0x5 + .byte 0xe5,0x3 + .4byte .LASF1265 + .byte 0x5 + .byte 0xe6,0x3 + .4byte .LASF1266 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF1267 + .byte 0x5 + .byte 0xe8,0x3 + .4byte .LASF1268 + .byte 0x5 + .byte 0xe9,0x3 + .4byte .LASF1269 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF1270 + .byte 0x5 + .byte 0xeb,0x3 + .4byte .LASF1271 + .byte 0x5 + .byte 0xec,0x3 + .4byte .LASF1272 + .byte 0x5 + .byte 0xed,0x3 + .4byte .LASF1273 + .byte 0x5 + .byte 0xee,0x3 + .4byte .LASF1274 + .byte 0x5 + .byte 0xef,0x3 + .4byte .LASF1275 + .byte 0x5 + .byte 0xf0,0x3 + .4byte .LASF1276 + .byte 0x5 + .byte 0xf1,0x3 + .4byte .LASF1277 + .byte 0x5 + .byte 0xf2,0x3 + .4byte .LASF1278 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF1279 + .byte 0x5 + .byte 0xf4,0x3 + .4byte .LASF1280 + .byte 0x5 + .byte 0xf5,0x3 + .4byte .LASF1281 + .byte 0x5 + .byte 0xf6,0x3 + .4byte .LASF1282 + .byte 0x5 + .byte 0xf7,0x3 + .4byte .LASF1283 + .byte 0x5 + .byte 0xf8,0x3 + .4byte .LASF1284 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF1285 + .byte 0x5 + .byte 0xfa,0x3 + .4byte .LASF1286 + .byte 0x5 + .byte 0xfb,0x3 + .4byte .LASF1287 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF1288 + .byte 0x5 + .byte 0xfd,0x3 + .4byte .LASF1289 + .byte 0x5 + .byte 0xfe,0x3 + .4byte .LASF1290 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF1291 + .byte 0x5 + .byte 0x80,0x4 + .4byte .LASF1292 + .byte 0x5 + .byte 0x81,0x4 + .4byte .LASF1293 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF1294 + .byte 0x5 + .byte 0x83,0x4 + .4byte .LASF1295 + .byte 0x5 + .byte 0x84,0x4 + .4byte .LASF1296 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF1297 + .byte 0x5 + .byte 0x86,0x4 + .4byte .LASF1298 + .byte 0x5 + .byte 0x87,0x4 + .4byte .LASF1299 + .byte 0x5 + .byte 0x88,0x4 + .4byte .LASF1300 + .byte 0x5 + .byte 0x89,0x4 + .4byte .LASF1301 + .byte 0x5 + .byte 0x8a,0x4 + .4byte .LASF1302 + .byte 0x5 + .byte 0x8b,0x4 + .4byte .LASF1303 + .byte 0x5 + .byte 0x8c,0x4 + .4byte .LASF1304 + .byte 0x5 + .byte 0x8d,0x4 + .4byte .LASF1305 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF1306 + .byte 0x5 + .byte 0x8f,0x4 + .4byte .LASF1307 + .byte 0x5 + .byte 0x90,0x4 + .4byte .LASF1308 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF1309 + .byte 0x5 + .byte 0x92,0x4 + .4byte .LASF1310 + .byte 0x5 + .byte 0x93,0x4 + .4byte .LASF1311 + .byte 0x5 + .byte 0x94,0x4 + .4byte .LASF1312 + .byte 0x5 + .byte 0x95,0x4 + .4byte .LASF1313 + .byte 0x5 + .byte 0x96,0x4 + .4byte .LASF1314 + .byte 0x5 + .byte 0x97,0x4 + .4byte .LASF1315 + .byte 0x5 + .byte 0x98,0x4 + .4byte .LASF1316 + .byte 0x5 + .byte 0x99,0x4 + .4byte .LASF1317 + .byte 0x5 + .byte 0x9a,0x4 + .4byte .LASF1318 + .byte 0x5 + .byte 0x9b,0x4 + .4byte .LASF1319 + .byte 0x5 + .byte 0x9c,0x4 + .4byte .LASF1320 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF1321 + .byte 0x5 + .byte 0x9e,0x4 + .4byte .LASF1322 + .byte 0x5 + .byte 0x9f,0x4 + .4byte .LASF1323 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF1324 + .byte 0x5 + .byte 0xa1,0x4 + .4byte .LASF1325 + .byte 0x5 + .byte 0xa2,0x4 + .4byte .LASF1326 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF1327 + .byte 0x5 + .byte 0xa4,0x4 + .4byte .LASF1328 + .byte 0x5 + .byte 0xa5,0x4 + .4byte .LASF1329 + .byte 0x5 + .byte 0xa6,0x4 + .4byte .LASF1330 + .byte 0x5 + .byte 0xa7,0x4 + .4byte .LASF1331 + .byte 0x5 + .byte 0xa8,0x4 + .4byte .LASF1332 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF1333 + .byte 0x5 + .byte 0xaa,0x4 + .4byte .LASF1334 + .byte 0x5 + .byte 0xab,0x4 + .4byte .LASF1335 + .byte 0x5 + .byte 0xac,0x4 + .4byte .LASF1336 + .byte 0x5 + .byte 0xad,0x4 + .4byte .LASF1337 + .byte 0x5 + .byte 0xae,0x4 + .4byte .LASF1338 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF1339 + .byte 0x5 + .byte 0xb0,0x4 + .4byte .LASF1340 + .byte 0x5 + .byte 0xb1,0x4 + .4byte .LASF1341 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF1342 + .byte 0x5 + .byte 0xb3,0x4 + .4byte .LASF1343 + .byte 0x5 + .byte 0xb4,0x4 + .4byte .LASF1344 + .byte 0x5 + .byte 0xb5,0x4 + .4byte .LASF1345 + .byte 0x5 + .byte 0xb6,0x4 + .4byte .LASF1346 + .byte 0x5 + .byte 0xb7,0x4 + .4byte .LASF1347 + .byte 0x5 + .byte 0xb8,0x4 + .4byte .LASF1348 + .byte 0x5 + .byte 0xb9,0x4 + .4byte .LASF1349 + .byte 0x5 + .byte 0xba,0x4 + .4byte .LASF1350 + .byte 0x5 + .byte 0xbb,0x4 + .4byte .LASF1351 + .byte 0x5 + .byte 0xbc,0x4 + .4byte .LASF1352 + .byte 0x5 + .byte 0xbd,0x4 + .4byte .LASF1353 + .byte 0x5 + .byte 0xbe,0x4 + .4byte .LASF1354 + .byte 0x5 + .byte 0xbf,0x4 + .4byte .LASF1355 + .byte 0x5 + .byte 0xc0,0x4 + .4byte .LASF1356 + .byte 0x5 + .byte 0xc1,0x4 + .4byte .LASF1357 + .byte 0x5 + .byte 0xc2,0x4 + .4byte .LASF1358 + .byte 0x5 + .byte 0xc3,0x4 + .4byte .LASF1359 + .byte 0x5 + .byte 0xc4,0x4 + .4byte .LASF1360 + .byte 0x5 + .byte 0xc5,0x4 + .4byte .LASF1361 + .byte 0x5 + .byte 0xc6,0x4 + .4byte .LASF1362 + .byte 0x5 + .byte 0xc7,0x4 + .4byte .LASF1363 + .byte 0x5 + .byte 0xc8,0x4 + .4byte .LASF1364 + .byte 0x5 + .byte 0xc9,0x4 + .4byte .LASF1365 + .byte 0x5 + .byte 0xca,0x4 + .4byte .LASF1366 + .byte 0x5 + .byte 0xcb,0x4 + .4byte .LASF1367 + .byte 0x5 + .byte 0xcc,0x4 + .4byte .LASF1368 + .byte 0x5 + .byte 0xcd,0x4 + .4byte .LASF1369 + .byte 0x5 + .byte 0xce,0x4 + .4byte .LASF1370 + .byte 0x5 + .byte 0xcf,0x4 + .4byte .LASF1371 + .byte 0x5 + .byte 0xd0,0x4 + .4byte .LASF1372 + .byte 0x5 + .byte 0xd1,0x4 + .4byte .LASF1373 + .byte 0x5 + .byte 0xd2,0x4 + .4byte .LASF1374 + .byte 0x5 + .byte 0xd3,0x4 + .4byte .LASF1375 + .byte 0x5 + .byte 0xd4,0x4 + .4byte .LASF1376 + .byte 0x5 + .byte 0xd5,0x4 + .4byte .LASF1377 + .byte 0x5 + .byte 0xd6,0x4 + .4byte .LASF1378 + .byte 0x5 + .byte 0xd7,0x4 + .4byte .LASF1379 + .byte 0x5 + .byte 0xd8,0x4 + .4byte .LASF1380 + .byte 0x5 + .byte 0xd9,0x4 + .4byte .LASF1381 + .byte 0x5 + .byte 0xda,0x4 + .4byte .LASF1382 + .byte 0x5 + .byte 0xdb,0x4 + .4byte .LASF1383 + .byte 0x5 + .byte 0xdc,0x4 + .4byte .LASF1384 + .byte 0x5 + .byte 0xdd,0x4 + .4byte .LASF1385 + .byte 0x5 + .byte 0xde,0x4 + .4byte .LASF1386 + .byte 0x5 + .byte 0xdf,0x4 + .4byte .LASF1387 + .byte 0x5 + .byte 0xe0,0x4 + .4byte .LASF1388 + .byte 0x5 + .byte 0xe1,0x4 + .4byte .LASF1389 + .byte 0x5 + .byte 0xe2,0x4 + .4byte .LASF1390 + .byte 0x5 + .byte 0xe3,0x4 + .4byte .LASF1391 + .byte 0x5 + .byte 0xe4,0x4 + .4byte .LASF1392 + .byte 0x5 + .byte 0xe5,0x4 + .4byte .LASF1393 + .byte 0x5 + .byte 0xe6,0x4 + .4byte .LASF1394 + .byte 0x5 + .byte 0xe7,0x4 + .4byte .LASF1395 + .byte 0x5 + .byte 0xe8,0x4 + .4byte .LASF1396 + .byte 0x5 + .byte 0xe9,0x4 + .4byte .LASF1397 + .byte 0x5 + .byte 0xea,0x4 + .4byte .LASF1398 + .byte 0x5 + .byte 0xeb,0x4 + .4byte .LASF1399 + .byte 0x5 + .byte 0xec,0x4 + .4byte .LASF1400 + .byte 0x5 + .byte 0xed,0x4 + .4byte .LASF1401 + .byte 0x5 + .byte 0xee,0x4 + .4byte .LASF1402 + .byte 0x5 + .byte 0xef,0x4 + .4byte .LASF1403 + .byte 0x5 + .byte 0xf0,0x4 + .4byte .LASF1404 + .byte 0x5 + .byte 0xf1,0x4 + .4byte .LASF1405 + .byte 0x5 + .byte 0xf2,0x4 + .4byte .LASF1406 + .byte 0x5 + .byte 0xf3,0x4 + .4byte .LASF1407 + .byte 0x5 + .byte 0xf4,0x4 + .4byte .LASF1408 + .byte 0x5 + .byte 0xf5,0x4 + .4byte .LASF1409 + .byte 0x5 + .byte 0xf6,0x4 + .4byte .LASF1410 + .byte 0x5 + .byte 0xf7,0x4 + .4byte .LASF1411 + .byte 0x5 + .byte 0xf8,0x4 + .4byte .LASF1412 + .byte 0x5 + .byte 0xf9,0x4 + .4byte .LASF1413 + .byte 0x5 + .byte 0xfa,0x4 + .4byte .LASF1414 + .byte 0x5 + .byte 0xfb,0x4 + .4byte .LASF1415 + .byte 0x5 + .byte 0xfc,0x4 + .4byte .LASF1416 + .byte 0x5 + .byte 0xfd,0x4 + .4byte .LASF1417 + .byte 0x5 + .byte 0xfe,0x4 + .4byte .LASF1418 + .byte 0x5 + .byte 0xff,0x4 + .4byte .LASF1419 + .byte 0x5 + .byte 0x80,0x5 + .4byte .LASF1420 + .byte 0x5 + .byte 0x81,0x5 + .4byte .LASF1421 + .byte 0x5 + .byte 0x82,0x5 + .4byte .LASF1422 + .byte 0x5 + .byte 0x83,0x5 + .4byte .LASF1423 + .byte 0x5 + .byte 0x84,0x5 + .4byte .LASF1424 + .byte 0x5 + .byte 0x85,0x5 + .4byte .LASF1425 + .byte 0x5 + .byte 0x86,0x5 + .4byte .LASF1426 + .byte 0x5 + .byte 0x87,0x5 + .4byte .LASF1427 + .byte 0x5 + .byte 0x88,0x5 + .4byte .LASF1428 + .byte 0x5 + .byte 0x89,0x5 + .4byte .LASF1429 + .byte 0x5 + .byte 0x8a,0x5 + .4byte .LASF1430 + .byte 0x5 + .byte 0x8b,0x5 + .4byte .LASF1431 + .byte 0x5 + .byte 0x8c,0x5 + .4byte .LASF1432 + .byte 0x5 + .byte 0x8d,0x5 + .4byte .LASF1433 + .byte 0x5 + .byte 0x8e,0x5 + .4byte .LASF1434 + .byte 0x5 + .byte 0x8f,0x5 + .4byte .LASF1435 + .byte 0x5 + .byte 0x90,0x5 + .4byte .LASF1436 + .byte 0x5 + .byte 0x91,0x5 + .4byte .LASF1437 + .byte 0x5 + .byte 0x92,0x5 + .4byte .LASF1438 + .byte 0x5 + .byte 0x93,0x5 + .4byte .LASF1439 + .byte 0x5 + .byte 0x94,0x5 + .4byte .LASF1440 + .byte 0x5 + .byte 0x95,0x5 + .4byte .LASF1441 + .byte 0x5 + .byte 0x96,0x5 + .4byte .LASF1442 + .byte 0x5 + .byte 0x97,0x5 + .4byte .LASF1443 + .byte 0x5 + .byte 0x98,0x5 + .4byte .LASF1444 + .byte 0x5 + .byte 0x99,0x5 + .4byte .LASF1445 + .byte 0x5 + .byte 0x9a,0x5 + .4byte .LASF1446 + .byte 0x5 + .byte 0x9b,0x5 + .4byte .LASF1447 + .byte 0x5 + .byte 0x9c,0x5 + .4byte .LASF1448 + .byte 0x5 + .byte 0x9d,0x5 + .4byte .LASF1449 + .byte 0x5 + .byte 0x9e,0x5 + .4byte .LASF1450 + .byte 0x5 + .byte 0x9f,0x5 + .4byte .LASF1451 + .byte 0x5 + .byte 0xa0,0x5 + .4byte .LASF1452 + .byte 0x5 + .byte 0xa1,0x5 + .4byte .LASF1453 + .byte 0x5 + .byte 0xa2,0x5 + .4byte .LASF1454 + .byte 0x5 + .byte 0xa3,0x5 + .4byte .LASF1455 + .byte 0x5 + .byte 0xa4,0x5 + .4byte .LASF1456 + .byte 0x5 + .byte 0xa5,0x5 + .4byte .LASF1457 + .byte 0x5 + .byte 0xa6,0x5 + .4byte .LASF1458 + .byte 0x5 + .byte 0xa7,0x5 + .4byte .LASF1459 + .byte 0x5 + .byte 0xa8,0x5 + .4byte .LASF1460 + .byte 0x5 + .byte 0xa9,0x5 + .4byte .LASF1461 + .byte 0x5 + .byte 0xaa,0x5 + .4byte .LASF1462 + .byte 0x5 + .byte 0xab,0x5 + .4byte .LASF1463 + .byte 0x5 + .byte 0xac,0x5 + .4byte .LASF1464 + .byte 0x5 + .byte 0xad,0x5 + .4byte .LASF1465 + .byte 0x5 + .byte 0xae,0x5 + .4byte .LASF1466 + .byte 0x5 + .byte 0xaf,0x5 + .4byte .LASF1467 + .byte 0x5 + .byte 0xb0,0x5 + .4byte .LASF1468 + .byte 0x5 + .byte 0xb1,0x5 + .4byte .LASF1469 + .byte 0x5 + .byte 0xb2,0x5 + .4byte .LASF1470 + .byte 0x5 + .byte 0xb3,0x5 + .4byte .LASF1471 + .byte 0x5 + .byte 0xb4,0x5 + .4byte .LASF1472 + .byte 0x5 + .byte 0xb5,0x5 + .4byte .LASF1473 + .byte 0x5 + .byte 0xb6,0x5 + .4byte .LASF1474 + .byte 0x5 + .byte 0xb7,0x5 + .4byte .LASF1475 + .byte 0x5 + .byte 0xb8,0x5 + .4byte .LASF1476 + .byte 0x5 + .byte 0xb9,0x5 + .4byte .LASF1477 + .byte 0x5 + .byte 0xba,0x5 + .4byte .LASF1478 + .byte 0x5 + .byte 0xbb,0x5 + .4byte .LASF1479 + .byte 0x5 + .byte 0xbc,0x5 + .4byte .LASF1480 + .byte 0x5 + .byte 0xbd,0x5 + .4byte .LASF1481 + .byte 0x5 + .byte 0xbe,0x5 + .4byte .LASF1482 + .byte 0x5 + .byte 0xbf,0x5 + .4byte .LASF1483 + .byte 0x5 + .byte 0xc0,0x5 + .4byte .LASF1484 + .byte 0x5 + .byte 0xc1,0x5 + .4byte .LASF1485 + .byte 0x5 + .byte 0xc2,0x5 + .4byte .LASF1486 + .byte 0x5 + .byte 0xc3,0x5 + .4byte .LASF1487 + .byte 0x5 + .byte 0xc4,0x5 + .4byte .LASF1488 + .byte 0x5 + .byte 0xc5,0x5 + .4byte .LASF1489 + .byte 0x5 + .byte 0xc6,0x5 + .4byte .LASF1490 + .byte 0x5 + .byte 0xc7,0x5 + .4byte .LASF1491 + .byte 0x5 + .byte 0xc8,0x5 + .4byte .LASF1492 + .byte 0x5 + .byte 0xc9,0x5 + .4byte .LASF1493 + .byte 0x5 + .byte 0xca,0x5 + .4byte .LASF1494 + .byte 0x5 + .byte 0xcb,0x5 + .4byte .LASF1495 + .byte 0x5 + .byte 0xcc,0x5 + .4byte .LASF1496 + .byte 0x5 + .byte 0xcd,0x5 + .4byte .LASF1497 + .byte 0x5 + .byte 0xce,0x5 + .4byte .LASF1498 + .byte 0x5 + .byte 0xcf,0x5 + .4byte .LASF1499 + .byte 0x5 + .byte 0xd0,0x5 + .4byte .LASF1500 + .byte 0x5 + .byte 0xd1,0x5 + .4byte .LASF1501 + .byte 0x5 + .byte 0xd2,0x5 + .4byte .LASF1502 + .byte 0x5 + .byte 0xd3,0x5 + .4byte .LASF1503 + .byte 0x5 + .byte 0xd4,0x5 + .4byte .LASF1504 + .byte 0x5 + .byte 0xd5,0x5 + .4byte .LASF1505 + .byte 0x5 + .byte 0xd6,0x5 + .4byte .LASF1506 + .byte 0x5 + .byte 0xd7,0x5 + .4byte .LASF1507 + .byte 0x5 + .byte 0xd8,0x5 + .4byte .LASF1508 + .byte 0x5 + .byte 0xd9,0x5 + .4byte .LASF1509 + .byte 0x5 + .byte 0xda,0x5 + .4byte .LASF1510 + .byte 0x5 + .byte 0xdb,0x5 + .4byte .LASF1511 + .byte 0x5 + .byte 0xdc,0x5 + .4byte .LASF1512 + .byte 0x5 + .byte 0xdd,0x5 + .4byte .LASF1513 + .byte 0x5 + .byte 0xde,0x5 + .4byte .LASF1514 + .byte 0x5 + .byte 0xdf,0x5 + .4byte .LASF1515 + .byte 0x5 + .byte 0xe0,0x5 + .4byte .LASF1516 + .byte 0x5 + .byte 0xe1,0x5 + .4byte .LASF1517 + .byte 0x5 + .byte 0xe2,0x5 + .4byte .LASF1518 + .byte 0x5 + .byte 0xe3,0x5 + .4byte .LASF1519 + .byte 0x5 + .byte 0xe4,0x5 + .4byte .LASF1520 + .byte 0x5 + .byte 0xe5,0x5 + .4byte .LASF1521 + .byte 0x5 + .byte 0xe6,0x5 + .4byte .LASF1522 + .byte 0x5 + .byte 0xe7,0x5 + .4byte .LASF1523 + .byte 0x5 + .byte 0xe8,0x5 + .4byte .LASF1524 + .byte 0x5 + .byte 0xe9,0x5 + .4byte .LASF1525 + .byte 0x5 + .byte 0xea,0x5 + .4byte .LASF1526 + .byte 0x5 + .byte 0xeb,0x5 + .4byte .LASF1527 + .byte 0x5 + .byte 0xec,0x5 + .4byte .LASF1528 + .byte 0x5 + .byte 0xed,0x5 + .4byte .LASF1529 + .byte 0x5 + .byte 0xee,0x5 + .4byte .LASF1530 + .byte 0x5 + .byte 0xef,0x5 + .4byte .LASF1531 + .byte 0x5 + .byte 0xf0,0x5 + .4byte .LASF1532 + .byte 0x5 + .byte 0xf1,0x5 + .4byte .LASF1533 + .byte 0x5 + .byte 0xf2,0x5 + .4byte .LASF1534 + .byte 0x5 + .byte 0xf3,0x5 + .4byte .LASF1535 + .byte 0x5 + .byte 0xf4,0x5 + .4byte .LASF1536 + .byte 0x5 + .byte 0xf5,0x5 + .4byte .LASF1537 + .byte 0x5 + .byte 0xf6,0x5 + .4byte .LASF1538 + .byte 0x5 + .byte 0xf7,0x5 + .4byte .LASF1539 + .byte 0x5 + .byte 0xf8,0x5 + .4byte .LASF1540 + .byte 0x5 + .byte 0xf9,0x5 + .4byte .LASF1541 + .byte 0x5 + .byte 0xfa,0x5 + .4byte .LASF1542 + .byte 0x5 + .byte 0xfb,0x5 + .4byte .LASF1543 + .byte 0x5 + .byte 0xfc,0x5 + .4byte .LASF1544 + .byte 0x5 + .byte 0xfd,0x5 + .4byte .LASF1545 + .byte 0x5 + .byte 0xfe,0x5 + .4byte .LASF1546 + .byte 0x5 + .byte 0xff,0x5 + .4byte .LASF1547 + .byte 0x5 + .byte 0x80,0x6 + .4byte .LASF1548 + .byte 0x5 + .byte 0x81,0x6 + .4byte .LASF1549 + .byte 0x5 + .byte 0x82,0x6 + .4byte .LASF1550 + .byte 0x5 + .byte 0x83,0x6 + .4byte .LASF1551 + .byte 0x5 + .byte 0x84,0x6 + .4byte .LASF1552 + .byte 0x5 + .byte 0x85,0x6 + .4byte .LASF1553 + .byte 0x5 + .byte 0x86,0x6 + .4byte .LASF1554 + .byte 0x5 + .byte 0x87,0x6 + .4byte .LASF1555 + .byte 0x5 + .byte 0x88,0x6 + .4byte .LASF1556 + .byte 0x5 + .byte 0x89,0x6 + .4byte .LASF1557 + .byte 0x5 + .byte 0x8a,0x6 + .4byte .LASF1558 + .byte 0x5 + .byte 0x8b,0x6 + .4byte .LASF1559 + .byte 0x5 + .byte 0x8c,0x6 + .4byte .LASF1560 + .byte 0x5 + .byte 0x8d,0x6 + .4byte .LASF1561 + .byte 0x5 + .byte 0x8e,0x6 + .4byte .LASF1562 + .byte 0x5 + .byte 0x8f,0x6 + .4byte .LASF1563 + .byte 0x5 + .byte 0x90,0x6 + .4byte .LASF1564 + .byte 0x5 + .byte 0x91,0x6 + .4byte .LASF1565 + .byte 0x5 + .byte 0x92,0x6 + .4byte .LASF1566 + .byte 0x5 + .byte 0x93,0x6 + .4byte .LASF1567 + .byte 0x5 + .byte 0x94,0x6 + .4byte .LASF1568 + .byte 0x5 + .byte 0x95,0x6 + .4byte .LASF1569 + .byte 0x5 + .byte 0x96,0x6 + .4byte .LASF1570 + .byte 0x5 + .byte 0x97,0x6 + .4byte .LASF1571 + .byte 0x5 + .byte 0x98,0x6 + .4byte .LASF1572 + .byte 0x5 + .byte 0x99,0x6 + .4byte .LASF1573 + .byte 0x5 + .byte 0x9a,0x6 + .4byte .LASF1574 + .byte 0x5 + .byte 0x9b,0x6 + .4byte .LASF1575 + .byte 0x5 + .byte 0x9c,0x6 + .4byte .LASF1576 + .byte 0x5 + .byte 0x9d,0x6 + .4byte .LASF1577 + .byte 0x5 + .byte 0x9e,0x6 + .4byte .LASF1578 + .byte 0x5 + .byte 0x9f,0x6 + .4byte .LASF1579 + .byte 0x5 + .byte 0xa0,0x6 + .4byte .LASF1580 + .byte 0x5 + .byte 0xa1,0x6 + .4byte .LASF1581 + .byte 0x5 + .byte 0xa2,0x6 + .4byte .LASF1582 + .byte 0x5 + .byte 0xa3,0x6 + .4byte .LASF1583 + .byte 0x5 + .byte 0xa4,0x6 + .4byte .LASF1584 + .byte 0x5 + .byte 0xa5,0x6 + .4byte .LASF1585 + .byte 0x5 + .byte 0xa6,0x6 + .4byte .LASF1586 + .byte 0x5 + .byte 0xa7,0x6 + .4byte .LASF1587 + .byte 0x5 + .byte 0xa8,0x6 + .4byte .LASF1588 + .byte 0x5 + .byte 0xa9,0x6 + .4byte .LASF1589 + .byte 0x5 + .byte 0xaa,0x6 + .4byte .LASF1590 + .byte 0x5 + .byte 0xab,0x6 + .4byte .LASF1591 + .byte 0x5 + .byte 0xac,0x6 + .4byte .LASF1592 + .byte 0x5 + .byte 0xad,0x6 + .4byte .LASF1593 + .byte 0x5 + .byte 0xae,0x6 + .4byte .LASF1594 + .byte 0x5 + .byte 0xaf,0x6 + .4byte .LASF1595 + .byte 0x5 + .byte 0xb0,0x6 + .4byte .LASF1596 + .byte 0x5 + .byte 0xb1,0x6 + .4byte .LASF1597 + .byte 0x5 + .byte 0xb2,0x6 + .4byte .LASF1598 + .byte 0x5 + .byte 0xb3,0x6 + .4byte .LASF1599 + .byte 0x5 + .byte 0xb4,0x6 + .4byte .LASF1600 + .byte 0x5 + .byte 0xb5,0x6 + .4byte .LASF1601 + .byte 0x5 + .byte 0xb6,0x6 + .4byte .LASF1602 + .byte 0x5 + .byte 0xb7,0x6 + .4byte .LASF1603 + .byte 0x5 + .byte 0xb8,0x6 + .4byte .LASF1604 + .byte 0x5 + .byte 0xb9,0x6 + .4byte .LASF1605 + .byte 0x5 + .byte 0xba,0x6 + .4byte .LASF1606 + .byte 0x5 + .byte 0xbb,0x6 + .4byte .LASF1607 + .byte 0x5 + .byte 0xbc,0x6 + .4byte .LASF1608 + .byte 0x5 + .byte 0xbd,0x6 + .4byte .LASF1609 + .byte 0x5 + .byte 0xbe,0x6 + .4byte .LASF1610 + .byte 0x5 + .byte 0xbf,0x6 + .4byte .LASF1611 + .byte 0x5 + .byte 0xc0,0x6 + .4byte .LASF1612 + .byte 0x5 + .byte 0xc1,0x6 + .4byte .LASF1613 + .byte 0x5 + .byte 0xc2,0x6 + .4byte .LASF1614 + .byte 0x5 + .byte 0xc3,0x6 + .4byte .LASF1615 + .byte 0x5 + .byte 0xc4,0x6 + .4byte .LASF1616 + .byte 0x5 + .byte 0xc5,0x6 + .4byte .LASF1617 + .byte 0x5 + .byte 0xc6,0x6 + .4byte .LASF1618 + .byte 0x5 + .byte 0xc7,0x6 + .4byte .LASF1619 + .byte 0x5 + .byte 0xc8,0x6 + .4byte .LASF1620 + .byte 0x5 + .byte 0xc9,0x6 + .4byte .LASF1621 + .byte 0x5 + .byte 0xca,0x6 + .4byte .LASF1622 + .byte 0x5 + .byte 0xcb,0x6 + .4byte .LASF1623 + .byte 0x5 + .byte 0xcc,0x6 + .4byte .LASF1624 + .byte 0x5 + .byte 0xcd,0x6 + .4byte .LASF1625 + .byte 0x5 + .byte 0xce,0x6 + .4byte .LASF1626 + .byte 0x5 + .byte 0xcf,0x6 + .4byte .LASF1627 + .byte 0x5 + .byte 0xd0,0x6 + .4byte .LASF1628 + .byte 0x5 + .byte 0xd1,0x6 + .4byte .LASF1629 + .byte 0x5 + .byte 0xd2,0x6 + .4byte .LASF1630 + .byte 0x5 + .byte 0xd3,0x6 + .4byte .LASF1631 + .byte 0x5 + .byte 0xd4,0x6 + .4byte .LASF1632 + .byte 0x5 + .byte 0xd5,0x6 + .4byte .LASF1633 + .byte 0x5 + .byte 0xd6,0x6 + .4byte .LASF1634 + .byte 0x5 + .byte 0xd7,0x6 + .4byte .LASF1635 + .byte 0x5 + .byte 0xd8,0x6 + .4byte .LASF1636 + .byte 0x5 + .byte 0xd9,0x6 + .4byte .LASF1637 + .byte 0x5 + .byte 0xda,0x6 + .4byte .LASF1638 + .byte 0x5 + .byte 0xdb,0x6 + .4byte .LASF1639 + .byte 0x5 + .byte 0xdc,0x6 + .4byte .LASF1640 + .byte 0x5 + .byte 0xdd,0x6 + .4byte .LASF1641 + .byte 0x5 + .byte 0xde,0x6 + .4byte .LASF1642 + .byte 0x5 + .byte 0xdf,0x6 + .4byte .LASF1643 + .byte 0x5 + .byte 0xe0,0x6 + .4byte .LASF1644 + .byte 0x5 + .byte 0xe1,0x6 + .4byte .LASF1645 + .byte 0x5 + .byte 0xe2,0x6 + .4byte .LASF1646 + .byte 0x5 + .byte 0xe3,0x6 + .4byte .LASF1647 + .byte 0x5 + .byte 0xe4,0x6 + .4byte .LASF1648 + .byte 0x5 + .byte 0xe5,0x6 + .4byte .LASF1649 + .byte 0x5 + .byte 0xe6,0x6 + .4byte .LASF1650 + .byte 0x5 + .byte 0xe7,0x6 + .4byte .LASF1651 + .byte 0x5 + .byte 0xe8,0x6 + .4byte .LASF1652 + .byte 0x5 + .byte 0xe9,0x6 + .4byte .LASF1653 + .byte 0x5 + .byte 0xea,0x6 + .4byte .LASF1654 + .byte 0x5 + .byte 0xeb,0x6 + .4byte .LASF1655 + .byte 0x5 + .byte 0xec,0x6 + .4byte .LASF1656 + .byte 0x5 + .byte 0xed,0x6 + .4byte .LASF1657 + .byte 0x5 + .byte 0xee,0x6 + .4byte .LASF1658 + .byte 0x5 + .byte 0xef,0x6 + .4byte .LASF1659 + .byte 0x5 + .byte 0xf0,0x6 + .4byte .LASF1660 + .byte 0x5 + .byte 0xf1,0x6 + .4byte .LASF1661 + .byte 0x5 + .byte 0xf2,0x6 + .4byte .LASF1662 + .byte 0x5 + .byte 0xf3,0x6 + .4byte .LASF1663 + .byte 0x5 + .byte 0xf6,0x6 + .4byte .LASF1664 + .byte 0x5 + .byte 0xf7,0x6 + .4byte .LASF1665 + .byte 0x5 + .byte 0xf9,0x6 + .4byte .LASF1666 + .byte 0x5 + .byte 0xfb,0x6 + .4byte .LASF1667 + .byte 0x5 + .byte 0xfd,0x6 + .4byte .LASF1668 + .byte 0x5 + .byte 0xfe,0x6 + .4byte .LASF1669 + .byte 0x5 + .byte 0xff,0x6 + .4byte .LASF1670 + .byte 0x5 + .byte 0x80,0x7 + .4byte .LASF1671 + .byte 0x5 + .byte 0x81,0x7 + .4byte .LASF1672 + .byte 0x5 + .byte 0x83,0x7 + .4byte .LASF1673 + .byte 0x5 + .byte 0x84,0x7 + .4byte .LASF1674 + .byte 0x5 + .byte 0x85,0x7 + .4byte .LASF1675 + .byte 0x5 + .byte 0x87,0x7 + .4byte .LASF1676 + .byte 0x5 + .byte 0x88,0x7 + .4byte .LASF1677 + .byte 0x5 + .byte 0x8b,0x7 + .4byte .LASF1678 + .byte 0x5 + .byte 0x8c,0x7 + .4byte .LASF1679 + .byte 0x5 + .byte 0x8d,0x7 + .4byte .LASF1680 + .byte 0x5 + .byte 0x8e,0x7 + .4byte .LASF1681 + .byte 0x5 + .byte 0x8f,0x7 + .4byte .LASF1682 + .byte 0x5 + .byte 0x90,0x7 + .4byte .LASF1683 + .byte 0x5 + .byte 0x91,0x7 + .4byte .LASF1684 + .byte 0x5 + .byte 0x92,0x7 + .4byte .LASF1685 + .byte 0x5 + .byte 0x93,0x7 + .4byte .LASF1686 + .byte 0x5 + .byte 0x94,0x7 + .4byte .LASF1687 + .byte 0x5 + .byte 0x95,0x7 + .4byte .LASF1688 + .byte 0x5 + .byte 0x96,0x7 + .4byte .LASF1689 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_timer.h.4.7cbfcb0f457964ecd81bc2aaf47d8b32,comdat +.Ldebug_macro28: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4 + .4byte .LASF1691 + .byte 0x5 + .byte 0x6 + .4byte .LASF1692 + .byte 0x5 + .byte 0x7 + .4byte .LASF1693 + .byte 0x5 + .byte 0x8 + .4byte .LASF1694 + .byte 0x5 + .byte 0x9 + .4byte .LASF1695 + .byte 0x5 + .byte 0xa + .4byte .LASF1696 + .byte 0x5 + .byte 0xb + .4byte .LASF1697 + .byte 0x5 + .byte 0xd + .4byte .LASF1698 + .byte 0x5 + .byte 0xe + .4byte .LASF1699 + .byte 0x5 + .byte 0xf + .4byte .LASF1700 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.riscv_const.h.5.95ac0744d59bfc0d17f4e8adf85ccb42,comdat +.Ldebug_macro29: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x5 + .4byte .LASF1702 + .byte 0x5 + .byte 0xb + .4byte .LASF1703 + .byte 0x5 + .byte 0xc + .4byte .LASF1704 + .byte 0x5 + .byte 0xf + .4byte .LASF1705 + .byte 0x5 + .byte 0x10 + .4byte .LASF1706 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_eclic.h.8.88844f0cdf4d8e1ef4e06c0cb5147462,comdat +.Ldebug_macro30: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x8 + .4byte .LASF1707 + .byte 0x5 + .byte 0xd + .4byte .LASF1708 + .byte 0x5 + .byte 0xf + .4byte .LASF1709 + .byte 0x5 + .byte 0x11 + .4byte .LASF1710 + .byte 0x5 + .byte 0x14 + .4byte .LASF1711 + .byte 0x5 + .byte 0x16 + .4byte .LASF1712 + .byte 0x5 + .byte 0x18 + .4byte .LASF1713 + .byte 0x5 + .byte 0x1a + .4byte .LASF1714 + .byte 0x5 + .byte 0x1b + .4byte .LASF1715 + .byte 0x5 + .byte 0x1c + .4byte .LASF1716 + .byte 0x5 + .byte 0x1d + .4byte .LASF1717 + .byte 0x5 + .byte 0x1e + .4byte .LASF1718 + .byte 0x5 + .byte 0x21 + .4byte .LASF1719 + .byte 0x5 + .byte 0x23 + .4byte .LASF1720 + .byte 0x5 + .byte 0x26 + .4byte .LASF1721 + .byte 0x5 + .byte 0x27 + .4byte .LASF1722 + .byte 0x5 + .byte 0x29 + .4byte .LASF1723 + .byte 0x5 + .byte 0x2a + .4byte .LASF1724 + .byte 0x5 + .byte 0x2b + .4byte .LASF1725 + .byte 0x5 + .byte 0x2c + .4byte .LASF1726 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_func.h.11.5e6cb65336aea242ab47b239a06795e1,comdat +.Ldebug_macro31: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xb + .4byte .LASF1727 + .byte 0x5 + .byte 0xc + .4byte .LASF1728 + .byte 0x5 + .byte 0xd + .4byte .LASF1729 + .byte 0x5 + .byte 0xe + .4byte .LASF1730 + .byte 0x5 + .byte 0xf + .4byte .LASF1731 + .byte 0 + .section .debug_line,"",@progbits +.Ldebug_line0: + .section .debug_str,"MS",@progbits,1 +.LASF1149: + .string "MASK_AMOAND_W 0xf800707f" +.LASF1079: + .string "MASK_SRAIW 0xfe00707f" +.LASF1721: + .string "ECLIC_CFG_NLBITS_MASK _AC(0x1E,UL)" +.LASF842: + .string "stderr (_REENT->_stderr)" +.LASF280: + .string "__FLT64X_HAS_QUIET_NAN__ 1" +.LASF1322: + .string "MATCH_FSD 0x3027" +.LASF30: + .string "__FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__" +.LASF1740: + .string "unsigned int" +.LASF864: + .string "MSTATUS_UIE 0x00000001" +.LASF1704: + .string "_AT(T,X) ((T)(X))" +.LASF865: + .string "MSTATUS_SIE 0x00000002" +.LASF1452: + .string "MATCH_CUSTOM2_RS1_RS2 0x305b" +.LASF1500: + .string "CSR_HPMCOUNTER25 0xc19" +.LASF768: + .string "_REENT_L64A_BUF(ptr) ((ptr)->_new._reent._l64a_buf)" +.LASF207: + .string "__FLT32_DIG__ 6" +.LASF682: + .string "_WCHAR_T_DEFINED " +.LASF1091: + .string "MASK_LB 0x707f" +.LASF1539: + .string "CSR_MHPMCOUNTER5 0xb05" +.LASF344: + .string "__MISC_VISIBLE 0" +.LASF1431: + .string "MASK_CUSTOM0_RD 0x707f" +.LASF126: + .string "__INT_FAST16_MAX__ 0x7fffffff" +.LASF827: + .string "__SWID 0x2000" +.LASF740: + .string "_REENT_CHECK_RAND48(ptr) " +.LASF221: + .string "__FLT64_MANT_DIG__ 53" +.LASF1433: + .string "MASK_CUSTOM0_RD_RS1 0x707f" +.LASF890: + .string "SSTATUS32_SD 0x80000000" +.LASF93: + .string "__SIG_ATOMIC_MAX__ 0x7fffffff" +.LASF698: + .string "_WINT_T " +.LASF1207: + .string "MASK_CSRRS 0x707f" +.LASF1418: + .string "MATCH_C_FSDSP 0xa002" +.LASF853: + .string "feof(p) __sfeof(p)" +.LASF850: + .string "__sferror(p) ((int)(((p)->_flags & __SERR) != 0))" +.LASF1357: + .string "MASK_C_LDSP 0xe003" +.LASF968: + .string "VM_SV39 9" +.LASF219: + .string "__FLT32_HAS_INFINITY__ 1" +.LASF1017: + .string "MASK_BNE 0x707f" +.LASF1202: + .string "MATCH_WFI 0x10500073" +.LASF703: + .string "_CLOCK_T_ unsigned long" +.LASF350: + .string "__have_longlong64 1" +.LASF77: + .string "__PTRDIFF_MAX__ 0x7fffffff" +.LASF405: + .string "_INTMAX_T_DECLARED " +.LASF875: + .string "MSTATUS_XS 0x00018000" +.LASF224: + .string "__FLT64_MIN_10_EXP__ (-307)" +.LASF561: + .string "__GNUCLIKE_BUILTIN_CONSTANT_P 1" +.LASF34: + .string "__WCHAR_TYPE__ int" +.LASF617: + .string "__printflike(fmtarg,firstvararg) __attribute__((__format__ (__printf__, fmtarg, firstvararg)))" +.LASF1674: + .string "CSR_SLEEPVALUE 0x811" +.LASF985: + .string "EXT_IO_BASE 0x40000000" +.LASF1105: + .string "MASK_SB 0x707f" +.LASF638: + .string "_Null_unspecified " +.LASF504: + .string "_READ_WRITE_BUFSIZE_TYPE int" +.LASF210: + .string "__FLT32_MAX_EXP__ 128" +.LASF1673: + .string "CSR_WFE 0x810" +.LASF1070: + .string "MATCH_AND 0x7033" +.LASF824: + .string "__SORD 0x2000" +.LASF48: + .string "__UINT64_TYPE__ long long unsigned int" +.LASF165: + .string "__DBL_MAX_10_EXP__ 308" +.LASF1241: + .string "MASK_FMUL_D 0xfe00007f" +.LASF1037: + .string "MASK_SLLI 0xfc00707f" +.LASF1078: + .string "MATCH_SRAIW 0x4000501b" +.LASF135: + .string "__UINT_FAST64_MAX__ 0xffffffffffffffffULL" +.LASF859: + .string "__SYS_UNISTD_H__ " +.LASF870: + .string "MSTATUS_HPIE 0x00000040" +.LASF557: + .string "__GNUCLIKE___TYPEOF 1" +.LASF472: + .string "INT32_C(x) __INT32_C(x)" +.LASF1362: + .string "MATCH_C_FLD 0x2000" +.LASF387: + .string "__FAST64 \"ll\"" +.LASF169: + .string "__DBL_MIN__ ((double)2.22507385850720138309023271733240406e-308L)" +.LASF319: + .string "__ELF__ 1" +.LASF17: + .string "__SIZEOF_LONG__ 4" +.LASF383: + .string "__INT64 \"ll\"" +.LASF1244: + .string "MATCH_FSGNJ_D 0x22000053" +.LASF1018: + .string "MATCH_BLT 0x4063" +.LASF889: + .string "SSTATUS_PUM 0x00040000" +.LASF1282: + .string "MATCH_FCLASS_S 0xe0001053" +.LASF398: + .string "__int16_t_defined 1" +.LASF1430: + .string "MATCH_CUSTOM0_RD 0x400b" +.LASF1032: + .string "MATCH_AUIPC 0x17" +.LASF1685: + .string "CAUSE_FAULT_STORE 0x7" +.LASF1242: + .string "MATCH_FDIV_D 0x1a000053" +.LASF1076: + .string "MATCH_SRLIW 0x501b" +.LASF474: + .string "INT64_C(x) __INT64_C(x)" +.LASF1662: + .string "CSR_MHPMCOUNTER30H 0xb9e" +.LASF674: + .string "__WCHAR_T__ " +.LASF1670: + .string "CSR_PUSHMCAUSE 0x7EE" +.LASF868: + .string "MSTATUS_UPIE 0x00000010" +.LASF693: + .string "__need___va_list" +.LASF1275: + .string "MASK_FCVT_WU_S 0xfff0007f" +.LASF846: + .string "__VALIST __gnuc_va_list" +.LASF1511: + .string "CSR_SEPC 0x141" +.LASF1393: + .string "MASK_C_OR 0xfc63" +.LASF80: + .string "__SHRT_WIDTH__ 16" +.LASF1269: + .string "MASK_FLT_D 0xfe00707f" +.LASF1097: + .string "MASK_LD 0x707f" +.LASF1029: + .string "MASK_JAL 0x7f" +.LASF577: + .string "__P(protos) protos" +.LASF1285: + .string "MASK_FCVT_W_D 0xfff0007f" +.LASF358: + .string "___int_least32_t_defined 1" +.LASF1003: + .string "read_fpu(reg) ({ unsigned long __tmp; asm volatile (\"fmv.x.w %0, \" #reg : \"=r\"(__tmp)); __tmp; })" +.LASF127: + .string "__INT_FAST16_WIDTH__ 32" +.LASF158: + .string "__FLT_HAS_INFINITY__ 1" +.LASF198: + .string "__FLT16_MAX__ 6.55040000000000000000000000000000000e+4F16" +.LASF239: + .string "__FLT128_MIN_10_EXP__ (-4931)" +.LASF1245: + .string "MASK_FSGNJ_D 0xfe00707f" +.LASF1446: + .string "MATCH_CUSTOM1_RD_RS1_RS2 0x702b" +.LASF310: + .string "__riscv_float_abi_soft 1" +.LASF371: + .string "unsigned +0" +.LASF1064: + .string "MATCH_SRL 0x5033" +.LASF1479: + .string "CSR_HPMCOUNTER4 0xc04" +.LASF1156: + .string "MATCH_AMOMAXU_W 0xe000202f" +.LASF1604: + .string "CSR_HPMCOUNTER3H 0xc83" +.LASF1061: + .string "MASK_SLTU 0xfe00707f" +.LASF1425: + .string "MASK_CUSTOM0 0x707f" +.LASF1329: + .string "MASK_FNMSUB_S 0x600007f" +.LASF296: + .string "__GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1" +.LASF1001: + .string "RISCV_PGSHIFT 12" +.LASF1059: + .string "MASK_SLT 0xfe00707f" +.LASF609: + .string "__predict_true(exp) __builtin_expect((exp), 1)" +.LASF966: + .string "VM_MBBID 2" +.LASF1403: + .string "MASK_C_BEQZ 0xe003" +.LASF1675: + .string "CSR_TXEVT 0x812" +.LASF403: + .string "_UINT64_T_DECLARED " +.LASF591: + .string "__aligned(x) __attribute__((__aligned__(x)))" +.LASF1193: + .string "MASK_SRET 0xffffffff" +.LASF1002: + .string "RISCV_PGSIZE (1 << RISCV_PGSHIFT)" +.LASF1111: + .string "MASK_SD 0x707f" +.LASF664: + .string "_T_PTRDIFF_ " +.LASF176: + .string "__LDBL_DIG__ 33" +.LASF1438: + .string "MATCH_CUSTOM1_RS1 0x202b" +.LASF1073: + .string "MASK_ADDIW 0x707f" +.LASF513: + .string "_FSTDIO " +.LASF825: + .string "__SL64 0x8000" +.LASF780: + .string "_BLKSIZE_T_DECLARED " +.LASF549: + .string "__unbounded " +.LASF109: + .string "__INT_LEAST16_WIDTH__ 16" +.LASF1075: + .string "MASK_SLLIW 0xfe00707f" +.LASF942: + .string "MIP_MSIP (1 << IRQ_M_SOFT)" +.LASF836: + .string "SEEK_SET 0" +.LASF311: + .string "__riscv_cmodel_medany 1" +.LASF564: + .string "__GNUCLIKE_BUILTIN_VAALIST 1" +.LASF173: + .string "__DBL_HAS_INFINITY__ 1" +.LASF486: + .string "_MB_LEN_MAX 1" +.LASF203: + .string "__FLT16_HAS_DENORM__ 1" +.LASF949: + .string "MIE_SSIE MIP_SSIP" +.LASF655: + .string "__no_lock_analysis __lock_annotate(no_thread_safety_analysis)" +.LASF71: + .string "__LONG_MAX__ 0x7fffffffL" +.LASF450: + .string "INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1)" +.LASF69: + .string "__SHRT_MAX__ 0x7fff" +.LASF1510: + .string "CSR_SSCRATCH 0x140" +.LASF457: + .string "INTMAX_MIN (-INTMAX_MAX - 1)" +.LASF217: + .string "__FLT32_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F32" +.LASF924: + .string "MCONTROL_EXECUTE (1<<2)" +.LASF1437: + .string "MASK_CUSTOM1 0x707f" +.LASF1665: + .string "CSR_MNXTI 0x345" +.LASF1409: + .string "MASK_C_FLDSP 0xe003" +.LASF13: + .string "__ATOMIC_ACQ_REL 4" +.LASF1186: + .string "MATCH_ECALL 0x73" +.LASF767: + .string "_REENT_WCSRTOMBS_STATE(ptr) ((ptr)->_new._reent._wcsrtombs_state)" +.LASF101: + .string "__UINT16_MAX__ 0xffff" +.LASF839: + .string "TMP_MAX 26" +.LASF604: + .string "__fastcall __attribute__((__fastcall__))" +.LASF1535: + .string "CSR_MCYCLE 0xb00" +.LASF1602: + .string "CSR_TIMEH 0xc81" +.LASF245: + .string "__FLT128_MIN__ 3.36210314311209350626267781732175260e-4932F128" +.LASF511: + .string "_NOINLINE __attribute__ ((__noinline__))" +.LASF1432: + .string "MATCH_CUSTOM0_RD_RS1 0x600b" +.LASF130: + .string "__INT_FAST64_MAX__ 0x7fffffffffffffffLL" +.LASF1748: + .string "handle_trap" +.LASF543: + .string "__long_double_t long double" +.LASF1578: + .string "CSR_MHPMEVENT13 0x32d" +.LASF288: + .string "__GCC_ATOMIC_CHAR_LOCK_FREE 1" +.LASF62: + .string "__UINT_FAST16_TYPE__ unsigned int" +.LASF236: + .string "__FLT128_MANT_DIG__ 113" +.LASF481: + .string "_WANT_IO_C99_FORMATS 1" +.LASF905: + .string "DCSR_PRV (3<<0)" +.LASF103: + .string "__UINT64_MAX__ 0xffffffffffffffffULL" +.LASF1155: + .string "MASK_AMOMINU_W 0xf800707f" +.LASF1569: + .string "CSR_MHPMEVENT4 0x324" +.LASF16: + .string "__SIZEOF_INT__ 4" +.LASF256: + .string "__FLT32X_MAX_10_EXP__ 308" +.LASF85: + .string "__WINT_WIDTH__ 32" +.LASF368: + .string "__int20__" +.LASF1529: + .string "CSR_TDATA1 0x7a1" +.LASF1415: + .string "MASK_C_MV 0xf003" +.LASF40: + .string "__SIG_ATOMIC_TYPE__ int" +.LASF1313: + .string "MASK_FCVT_D_LU 0xfff0007f" +.LASF528: + .string "_BSD_SIZE_T_DEFINED_ " +.LASF25: + .string "__BIGGEST_ALIGNMENT__ 16" +.LASF199: + .string "__FLT16_NORM_MAX__ 6.55040000000000000000000000000000000e+4F16" +.LASF1219: + .string "MASK_FSUB_S 0xfe00007f" +.LASF896: + .string "DCSR_EBREAKH (1<<14)" +.LASF366: + .string "short" +.LASF1137: + .string "MASK_DIVUW 0xfe00707f" +.LASF983: + .string "DEFAULT_MTVEC 0x00001010" +.LASF1574: + .string "CSR_MHPMEVENT9 0x329" +.LASF1449: + .string "MASK_CUSTOM2 0x707f" +.LASF119: + .string "__UINT16_C(c) c" +.LASF299: + .string "__PRAGMA_REDEFINE_EXTNAME 1" +.LASF52: + .string "__INT_LEAST64_TYPE__ long long int" +.LASF1042: + .string "MATCH_XORI 0x4013" +.LASF1551: + .string "CSR_MHPMCOUNTER17 0xb11" +.LASF558: + .string "__GNUCLIKE___OFFSETOF 1" +.LASF716: + .string "__lock_acquire(lock) ((void) 0)" +.LASF1227: + .string "MASK_FSGNJN_S 0xfe00707f" +.LASF1463: + .string "MASK_CUSTOM3_RS1 0x707f" +.LASF1684: + .string "CAUSE_MISALIGNED_STORE 0x6" +.LASF1279: + .string "MASK_FCVT_LU_S 0xfff0007f" +.LASF654: + .string "__requires_unlocked(...) __lock_annotate(locks_excluded(__VA_ARGS__))" +.LASF1307: + .string "MASK_FCVT_D_W 0xfff0007f" +.LASF1056: + .string "MATCH_SLL 0x1033" +.LASF684: + .string "___int_wchar_t_h " +.LASF709: + .string "__SYS_LOCK_H__ " +.LASF1327: + .string "MASK_FMSUB_S 0x600007f" +.LASF743: + .string "_REENT_CHECK_ASCTIME_BUF(ptr) " +.LASF1050: + .string "MATCH_ANDI 0x7013" +.LASF1457: + .string "MASK_CUSTOM2_RD_RS1 0x707f" +.LASF1039: + .string "MASK_SLTI 0x707f" +.LASF1094: + .string "MATCH_LW 0x2003" +.LASF438: + .string "INT64_MIN (-__INT64_MAX__ - 1)" +.LASF1585: + .string "CSR_MHPMEVENT20 0x334" +.LASF854: + .string "ferror(p) __sferror(p)" +.LASF1723: + .string "MSIP_HANDLER eclic_msip_handler" +.LASF1486: + .string "CSR_HPMCOUNTER11 0xc0b" +.LASF1010: + .string "rdtime() read_csr(time)" +.LASF1420: + .string "MATCH_C_SWSP 0xc002" +.LASF734: + .string "_REENT_ASCTIME_SIZE 26" +.LASF45: + .string "__UINT8_TYPE__ unsigned char" +.LASF1177: + .string "MASK_AMOMINU_D 0xf800707f" +.LASF437: + .string "UINT_LEAST32_MAX (__UINT_LEAST32_MAX__)" +.LASF1484: + .string "CSR_HPMCOUNTER9 0xc09" +.LASF760: + .string "_REENT_MBLEN_STATE(ptr) ((ptr)->_new._reent._mblen_state)" +.LASF209: + .string "__FLT32_MIN_10_EXP__ (-37)" +.LASF1334: + .string "MATCH_FMSUB_D 0x2000047" +.LASF987: + .string "PTE_V 0x001" +.LASF37: + .string "__UINTMAX_TYPE__ long long unsigned int" +.LASF238: + .string "__FLT128_MIN_EXP__ (-16381)" +.LASF1292: + .string "MATCH_FMV_X_D 0xe2000053" +.LASF3: + .string "__STDC_UTF_32__ 1" +.LASF107: + .string "__INT_LEAST16_MAX__ 0x7fff" +.LASF582: + .string "__const const" +.LASF1023: + .string "MASK_BLTU 0x707f" +.LASF1256: + .string "MATCH_FCVT_D_S 0x42000053" +.LASF1259: + .string "MASK_FSQRT_D 0xfff0007f" +.LASF1195: + .string "MASK_HRET 0xffffffff" +.LASF1302: + .string "MATCH_FCVT_S_LU 0xd0300053" +.LASF927: + .string "MCONTROL_TYPE_NONE 0" +.LASF904: + .string "DCSR_STEP (1<<2)" +.LASF479: + .string "_ANSIDECL_H_ " +.LASF46: + .string "__UINT16_TYPE__ short unsigned int" +.LASF841: + .string "stdout (_REENT->_stdout)" +.LASF360: + .string "__EXP" +.LASF1210: + .string "MATCH_CSRRWI 0x5073" +.LASF891: + .string "SSTATUS64_SD 0x8000000000000000" +.LASF1270: + .string "MATCH_FEQ_D 0xa2002053" +.LASF521: + .string "_T_SIZE_ " +.LASF289: + .string "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 1" +.LASF784: + .string "_TIME_T_DECLARED " +.LASF1516: + .string "CSR_MSTATUS 0x300" +.LASF612: + .string "__exported __attribute__((__visibility__(\"default\")))" +.LASF1561: + .string "CSR_MHPMCOUNTER27 0xb1b" +.LASF1633: + .string "CSR_MCYCLEH 0xb80" +.LASF264: + .string "__FLT32X_HAS_INFINITY__ 1" +.LASF1298: + .string "MATCH_FCVT_S_WU 0xd0100053" +.LASF1547: + .string "CSR_MHPMCOUNTER13 0xb0d" +.LASF363: + .string "signed" +.LASF1661: + .string "CSR_MHPMCOUNTER29H 0xb9d" +.LASF1672: + .string "CSR_PUSHMSUBM 0x7EB" +.LASF105: + .string "__INT8_C(c) c" +.LASF1496: + .string "CSR_HPMCOUNTER21 0xc15" +.LASF849: + .string "__sfeof(p) ((int)(((p)->_flags & __SEOF) != 0))" +.LASF182: + .string "__LDBL_DECIMAL_DIG__ 36" +.LASF1375: + .string "MASK_C_ADDI 0xe003" +.LASF1608: + .string "CSR_HPMCOUNTER7H 0xc87" +.LASF622: + .string "__printf0like(fmtarg,firstvararg) " +.LASF835: + .string "L_tmpnam FILENAME_MAX" +.LASF495: + .string "__IEEE_LITTLE_ENDIAN " +.LASF149: + .string "__FLT_MAX_EXP__ 128" +.LASF99: + .string "__INT64_MAX__ 0x7fffffffffffffffLL" +.LASF719: + .string "__lock_try_acquire_recursive(lock) ((void) 0)" +.LASF571: + .string "__CC_SUPPORTS___INLINE 1" +.LASF1294: + .string "MATCH_FCLASS_D 0xe2001053" +.LASF1262: + .string "MATCH_FLT_S 0xa0001053" +.LASF307: + .string "__riscv_div 1" +.LASF715: + .string "__lock_close_recursive(lock) ((void) 0)" +.LASF746: + .string "_REENT_CHECK_SIGNAL_BUF(ptr) " +.LASF1107: + .string "MASK_SH 0x707f" +.LASF255: + .string "__FLT32X_MAX_EXP__ 1024" +.LASF574: + .string "__CC_SUPPORTS_WARNING 1" +.LASF206: + .string "__FLT32_MANT_DIG__ 24" +.LASF1030: + .string "MATCH_LUI 0x37" +.LASF61: + .string "__UINT_FAST8_TYPE__ unsigned int" +.LASF1583: + .string "CSR_MHPMEVENT18 0x332" +.LASF945: + .string "MIP_MTIP (1 << IRQ_M_TIMER)" +.LASF619: + .string "__format_arg(fmtarg) __attribute__((__format_arg__ (fmtarg)))" +.LASF788: + .string "_ID_T_DECLARED " +.LASF241: + .string "__FLT128_MAX_10_EXP__ 4932" +.LASF1699: + .string "TIMER_REG(offset) _REG32(TIMER_CTRL_ADDR, offset)" +.LASF349: + .string "__EXP(x) __ ##x ##__" +.LASF379: + .string "_INT32_EQ_LONG " +.LASF1458: + .string "MATCH_CUSTOM2_RD_RS1_RS2 0x705b" +.LASF428: + .string "UINT16_MAX (__UINT16_MAX__)" +.LASF877: + .string "MSTATUS_PUM 0x00040000" +.LASF1347: + .string "MASK_C_JALR 0xf07f" +.LASF871: + .string "MSTATUS_MPIE 0x00000080" +.LASF1146: + .string "MATCH_AMOOR_W 0x4000202f" +.LASF1363: + .string "MASK_C_FLD 0xe003" +.LASF552: + .string "__has_feature(x) 0" +.LASF733: + .string "_REENT_EMERGENCY_SIZE 25" +.LASF1108: + .string "MATCH_SW 0x2023" +.LASF439: + .string "INT64_MAX (__INT64_MAX__)" +.LASF1397: + .string "MASK_C_SUBW 0xfc63" +.LASF1572: + .string "CSR_MHPMEVENT7 0x327" +.LASF205: + .string "__FLT16_HAS_QUIET_NAN__ 1" +.LASF1642: + .string "CSR_MHPMCOUNTER10H 0xb8a" +.LASF1505: + .string "CSR_HPMCOUNTER30 0xc1e" +.LASF1191: + .string "MASK_URET 0xffffffff" +.LASF787: + .string "_FSBLKCNT_T_DECLARED " +.LASF8: + .string "__VERSION__ \"10.2.0\"" +.LASF1143: + .string "MASK_AMOADD_W 0xf800707f" +.LASF662: + .string "_ANSI_STDDEF_H " +.LASF282: + .string "__USER_LABEL_PREFIX__ " +.LASF544: + .string "__attribute_malloc__ " +.LASF1546: + .string "CSR_MHPMCOUNTER12 0xb0c" +.LASF1123: + .string "MASK_MULHU 0xfe00707f" +.LASF1746: + .string "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\env_Eclipse\\handlers.c" +.LASF412: + .string "__int_least64_t_defined 1" +.LASF933: + .string "MCONTROL_ACTION_TRACE_EMIT 4" +.LASF757: + .string "_REENT_TM(ptr) (&(ptr)->_new._reent._localtime_buf)" +.LASF194: + .string "__FLT16_MIN_10_EXP__ (-4)" +.LASF505: + .string "_BEGIN_STD_C " +.LASF1380: + .string "MATCH_C_LUI 0x6001" +.LASF1205: + .string "MASK_CSRRW 0x707f" +.LASF1197: + .string "MASK_MRET 0xffffffff" +.LASF1506: + .string "CSR_HPMCOUNTER31 0xc1f" +.LASF1517: + .string "CSR_MISA 0x301" +.LASF1060: + .string "MATCH_SLTU 0x3033" +.LASF633: + .string "__DECONST(type,var) ((type)(__uintptr_t)(const void *)(var))" +.LASF1131: + .string "MASK_REMU 0xfe00707f" +.LASF964: + .string "VM_MBARE 0" +.LASF1369: + .string "MASK_C_FSD 0xe003" +.LASF1161: + .string "MASK_LR_W 0xf9f0707f" +.LASF643: + .string "__lock_annotate(x) " +.LASF124: + .string "__INT_FAST8_MAX__ 0x7fffffff" +.LASF1694: + .string "TIMER_MTIMECMP 0x8" +.LASF675: + .string "_WCHAR_T " +.LASF448: + .string "INT_FAST16_MAX (__INT_FAST16_MAX__)" +.LASF1491: + .string "CSR_HPMCOUNTER16 0xc10" +.LASF858: + .string "L_ctermid 16" +.LASF1439: + .string "MASK_CUSTOM1_RS1 0x707f" +.LASF1066: + .string "MATCH_SRA 0x40005033" +.LASF208: + .string "__FLT32_MIN_EXP__ (-125)" +.LASF1718: + .string "ECLIC_INT_ATTR_TRIG_NEG 0x04" +.LASF1610: + .string "CSR_HPMCOUNTER9H 0xc89" +.LASF181: + .string "__DECIMAL_DIG__ 36" +.LASF163: + .string "__DBL_MIN_10_EXP__ (-307)" +.LASF1470: + .string "MATCH_CUSTOM3_RD_RS1_RS2 0x707b" +.LASF1475: + .string "CSR_CYCLE 0xc00" +.LASF374: + .string "__int20 +2" +.LASF670: + .string "_GCC_PTRDIFF_T " +.LASF262: + .string "__FLT32X_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F32x" +.LASF442: + .string "INT_LEAST64_MAX (__INT_LEAST64_MAX__)" +.LASF661: + .string "_STDDEF_H_ " +.LASF148: + .string "__FLT_MIN_10_EXP__ (-37)" +.LASF1478: + .string "CSR_HPMCOUNTER3 0xc03" +.LASF1261: + .string "MASK_FLE_S 0xfe00707f" +.LASF252: + .string "__FLT32X_DIG__ 15" +.LASF885: + .string "SSTATUS_SPIE 0x00000020" +.LASF1348: + .string "MATCH_C_EBREAK 0x9002" +.LASF1607: + .string "CSR_HPMCOUNTER6H 0xc86" +.LASF160: + .string "__DBL_MANT_DIG__ 53" +.LASF879: + .string "MSTATUS_VM 0x1F000000" +.LASF813: + .string "__SRD 0x0004" +.LASF74: + .string "__WCHAR_MIN__ (-__WCHAR_MAX__ - 1)" +.LASF86: + .string "__PTRDIFF_WIDTH__ 32" +.LASF628: + .string "__FBSDID(s) struct __hack" +.LASF1663: + .string "CSR_MHPMCOUNTER31H 0xb9f" +.LASF394: + .string "_UINT8_T_DECLARED " +.LASF1171: + .string "MASK_AMOAND_D 0xf800707f" +.LASF685: + .string "__INT_WCHAR_T_H " +.LASF1290: + .string "MATCH_FCVT_LU_D 0xc2300053" +.LASF426: + .string "INT16_MIN (-__INT16_MAX__ - 1)" +.LASF1058: + .string "MATCH_SLT 0x2033" +.LASF1400: + .string "MATCH_C_J 0xa001" +.LASF1405: + .string "MASK_C_BNEZ 0xe003" +.LASF1229: + .string "MASK_FSGNJX_S 0xfe00707f" +.LASF1183: + .string "MASK_LR_D 0xf9f0707f" +.LASF1099: + .string "MASK_LBU 0x707f" +.LASF75: + .string "__WINT_MAX__ 0xffffffffU" +.LASF155: + .string "__FLT_EPSILON__ 1.19209289550781250000000000000000000e-7F" +.LASF1540: + .string "CSR_MHPMCOUNTER6 0xb06" +.LASF1220: + .string "MATCH_FMUL_S 0x10000053" +.LASF986: + .string "DRAM_BASE 0x80000000" +.LASF269: + .string "__FLT64X_MIN_10_EXP__ (-4931)" +.LASF1134: + .string "MATCH_DIVW 0x200403b" +.LASF47: + .string "__UINT32_TYPE__ long unsigned int" +.LASF722: + .string "_ATEXIT_SIZE 32" +.LASF1296: + .string "MATCH_FCVT_S_W 0xd0000053" +.LASF1501: + .string "CSR_HPMCOUNTER26 0xc1a" +.LASF117: + .string "__UINT8_C(c) c" +.LASF953: + .string "MIE_HTIE MIP_HTIP" +.LASF914: + .string "MCONTROL_MASKMAX(xlen) (0x3fULL<<((xlen)-11))" +.LASF213: + .string "__FLT32_MAX__ 3.40282346638528859811704183484516925e+38F32" +.LASF483: + .string "_WANT_REGISTER_FINI 1" +.LASF390: + .string "__LEAST32 \"l\"" +.LASF1676: + .string "CSR_MMISC_CTL 0x7d0" +.LASF585: + .string "__weak_symbol __attribute__((__weak__))" +.LASF547: + .string "__flexarr [0]" +.LASF751: + .string "_REENT_RAND48_ADD(ptr) ((ptr)->_new._reent._r48._add)" +.LASF1049: + .string "MASK_ORI 0x707f" +.LASF1170: + .string "MATCH_AMOAND_D 0x6000302f" +.LASF1688: + .string "CAUSE_HYPERVISOR_ECALL 0xa" +.LASF1570: + .string "CSR_MHPMEVENT5 0x325" +.LASF1733: + .string "unsigned char" +.LASF170: + .string "__DBL_EPSILON__ ((double)2.22044604925031308084726333618164062e-16L)" +.LASF695: + .string "_SYS_REENT_H_ " +.LASF1247: + .string "MASK_FSGNJN_D 0xfe00707f" +.LASF720: + .string "__lock_release(lock) ((void) 0)" +.LASF26: + .string "__ORDER_LITTLE_ENDIAN__ 1234" +.LASF893: + .string "DCSR_NDRESET (1<<29)" +.LASF747: + .string "_REENT_SIGNGAM(ptr) ((ptr)->_new._reent._gamma_signgam)" +.LASF929: + .string "MCONTROL_ACTION_DEBUG_EXCEPTION 0" +.LASF523: + .string "__SIZE_T " +.LASF1168: + .string "MATCH_AMOOR_D 0x4000302f" +.LASF1358: + .string "MATCH_C_SDSP 0xe002" +.LASF1154: + .string "MATCH_AMOMINU_W 0xc000202f" +.LASF803: + .string "_USECONDS_T_DECLARED " +.LASF146: + .string "__FLT_DIG__ 6" +.LASF594: + .string "__alloc_size2(n,x) __attribute__((__alloc_size__(n, x)))" +.LASF384: + .string "__FAST8 " +.LASF164: + .string "__DBL_MAX_EXP__ 1024" +.LASF1391: + .string "MASK_C_XOR 0xfc63" +.LASF702: + .string "unsigned signed" +.LASF118: + .string "__UINT_LEAST16_MAX__ 0xffff" +.LASF1532: + .string "CSR_DCSR 0x7b0" +.LASF87: + .string "__SIZE_WIDTH__ 32" +.LASF1690: + .string "N200_FUNC_H " +.LASF611: + .string "__null_sentinel __attribute__((__sentinel__))" +.LASF1558: + .string "CSR_MHPMCOUNTER24 0xb18" +.LASF1611: + .string "CSR_HPMCOUNTER10H 0xc8a" +.LASF759: + .string "_REENT_STRTOK_LAST(ptr) ((ptr)->_new._reent._strtok_last)" +.LASF559: + .string "__GNUCLIKE___SECTION 1" +.LASF881: + .string "MSTATUS64_SD 0x8000000000000000" +.LASF997: + .string "PTE_TABLE(PTE) (((PTE) & (PTE_V | PTE_R | PTE_W | PTE_X)) == PTE_V)" +.LASF23: + .string "__SIZEOF_SIZE_T__ 4" +.LASF671: + .string "_PTRDIFF_T_DECLARED " +.LASF320: + .string "USE_PLIC 1" +.LASF1084: + .string "MATCH_SLLW 0x103b" +.LASF1310: + .string "MATCH_FCVT_D_L 0xd2200053" +.LASF1349: + .string "MASK_C_EBREAK 0xffff" +.LASF663: + .string "_PTRDIFF_T " +.LASF744: + .string "_REENT_CHECK_EMERGENCY(ptr) " +.LASF273: + .string "__FLT64X_MAX__ 1.18973149535723176508575932662800702e+4932F64x" +.LASF1151: + .string "MASK_AMOMIN_W 0xf800707f" +.LASF1621: + .string "CSR_HPMCOUNTER20H 0xc94" +.LASF1182: + .string "MATCH_LR_D 0x1000302f" +.LASF122: + .string "__UINT_LEAST64_MAX__ 0xffffffffffffffffULL" +.LASF409: + .string "__int_least8_t_defined 1" +.LASF721: + .string "__lock_release_recursive(lock) ((void) 0)" +.LASF982: + .string "DEFAULT_NMIVEC 0x00001004" +.LASF318: + .string "__riscv_zifencei 2000000" +.LASF1426: + .string "MATCH_CUSTOM0_RS1 0x200b" +.LASF1086: + .string "MATCH_SRLW 0x503b" +.LASF988: + .string "PTE_R 0x002" +.LASF943: + .string "MIP_STIP (1 << IRQ_S_TIMER)" +.LASF1398: + .string "MATCH_C_ADDW 0x9c21" +.LASF651: + .string "__asserts_shared(...) __lock_annotate(assert_shared_lock(__VA_ARGS__))" +.LASF1366: + .string "MATCH_C_FLW 0x6000" +.LASF570: + .string "__CC_SUPPORTS_INLINE 1" +.LASF470: + .string "INT16_C(x) __INT16_C(x)" +.LASF878: + .string "MSTATUS_MXR 0x00080000" +.LASF1297: + .string "MASK_FCVT_S_W 0xfff0007f" +.LASF1666: + .string "CSR_MCOUNTINHIBIT 0x320" +.LASF463: + .string "PTRDIFF_MIN (-PTRDIFF_MAX - 1)" +.LASF1055: + .string "MASK_SUB 0xfe00707f" +.LASF806: + .string "__need_inttypes" +.LASF166: + .string "__DBL_DECIMAL_DIG__ 17" +.LASF411: + .string "__int_least32_t_defined 1" +.LASF1480: + .string "CSR_HPMCOUNTER5 0xc05" +.LASF1096: + .string "MATCH_LD 0x3003" +.LASF1268: + .string "MATCH_FLT_D 0xa2001053" +.LASF1011: + .string "rdcycle() read_csr(cycle)" +.LASF1631: + .string "CSR_HPMCOUNTER30H 0xc9e" +.LASF1467: + .string "MASK_CUSTOM3_RD 0x707f" +.LASF944: + .string "MIP_HTIP (1 << IRQ_H_TIMER)" +.LASF271: + .string "__FLT64X_MAX_10_EXP__ 4932" +.LASF832: + .string "BUFSIZ 1024" +.LASF212: + .string "__FLT32_DECIMAL_DIG__ 9" +.LASF335: + .string "__NEWLIB_MINOR__ 1" +.LASF908: + .string "DCSR_CAUSE_HWBP 2" +.LASF765: + .string "_REENT_MBSRTOWCS_STATE(ptr) ((ptr)->_new._reent._mbsrtowcs_state)" +.LASF642: + .string "__datatype_type_tag(kind,type) " +.LASF1340: + .string "MATCH_C_NOP 0x1" +.LASF1600: + .string "CSR_MHARTID 0xf14" +.LASF1402: + .string "MATCH_C_BEQZ 0xc001" +.LASF681: + .string "_WCHAR_T_DEFINED_ " +.LASF496: + .string "__OBSOLETE_MATH_DEFAULT 1" +.LASF548: + .string "__bounded " +.LASF993: + .string "PTE_A 0x040" +.LASF35: + .string "__WINT_TYPE__ unsigned int" +.LASF906: + .string "DCSR_CAUSE_NONE 0" +.LASF1361: + .string "MASK_C_ADDI4SPN 0xe003" +.LASF1445: + .string "MASK_CUSTOM1_RD_RS1 0x707f" +.LASF356: + .string "___int_least8_t_defined 1" +.LASF1352: + .string "MATCH_C_SD 0xe000" +.LASF641: + .string "__arg_type_tag(arg_kind,arg_idx,type_tag_idx) " +.LASF1534: + .string "CSR_DSCRATCH 0x7b2" +.LASF1620: + .string "CSR_HPMCOUNTER19H 0xc93" +.LASF1325: + .string "MASK_FMADD_S 0x600007f" +.LASF1173: + .string "MASK_AMOMIN_D 0xf800707f" +.LASF1115: + .string "MASK_FENCE_I 0x707f" +.LASF97: + .string "__INT16_MAX__ 0x7fff" +.LASF145: + .string "__FLT_MANT_DIG__ 24" +.LASF372: + .string "char +0" +.LASF650: + .string "__asserts_exclusive(...) __lock_annotate(assert_exclusive_lock(__VA_ARGS__))" +.LASF1187: + .string "MASK_ECALL 0xffffffff" +.LASF1379: + .string "MASK_C_LI 0xe003" +.LASF1649: + .string "CSR_MHPMCOUNTER17H 0xb91" +.LASF958: + .string "SIP_SSIP MIP_SSIP" +.LASF235: + .string "__FLT64_HAS_QUIET_NAN__ 1" +.LASF1226: + .string "MATCH_FSGNJN_S 0x20001053" +.LASF1330: + .string "MATCH_FNMADD_S 0x4f" +.LASF1715: + .string "ECLIC_INT_ATTR_TRIG_LEVEL 0x00" +.LASF1272: + .string "MATCH_FCVT_W_S 0xc0000053" +.LASF1643: + .string "CSR_MHPMCOUNTER11H 0xb8b" +.LASF353: + .string "___int16_t_defined 1" +.LASF568: + .string "__GNUCLIKE_MATH_BUILTIN_RELOPS " +.LASF1332: + .string "MATCH_FMADD_D 0x2000043" +.LASF1020: + .string "MATCH_BGE 0x5063" +.LASF1255: + .string "MASK_FCVT_S_D 0xfff0007f" +.LASF1139: + .string "MASK_REMW 0xfe00707f" +.LASF692: + .string "__need___va_list " +.LASF1072: + .string "MATCH_ADDIW 0x1b" +.LASF1051: + .string "MASK_ANDI 0x707f" +.LASF1274: + .string "MATCH_FCVT_WU_S 0xc0100053" +.LASF1098: + .string "MATCH_LBU 0x4003" +.LASF900: + .string "DCSR_STOPTIME (1<<9)" +.LASF1276: + .string "MATCH_FCVT_L_S 0xc0200053" +.LASF683: + .string "_WCHAR_T_H " +.LASF104: + .string "__INT_LEAST8_MAX__ 0x7f" +.LASF857: + .string "putchar_unlocked(_c) _putchar_unlocked(_c)" +.LASF1208: + .string "MATCH_CSRRC 0x3073" +.LASF838: + .string "SEEK_END 2" +.LASF1653: + .string "CSR_MHPMCOUNTER21H 0xb95" +.LASF1218: + .string "MATCH_FSUB_S 0x8000053" +.LASF29: + .string "__BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__" +.LASF1335: + .string "MASK_FMSUB_D 0x600007f" +.LASF123: + .string "__UINT64_C(c) c ## ULL" +.LASF851: + .string "__sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF)))" +.LASF647: + .string "__trylocks_exclusive(...) __lock_annotate(exclusive_trylock_function(__VA_ARGS__))" +.LASF798: + .string "_NLINK_T_DECLARED " +.LASF1382: + .string "MATCH_C_SRLI 0x8001" +.LASF1617: + .string "CSR_HPMCOUNTER16H 0xc90" +.LASF376: + .string "int +2" +.LASF810: + .string "_funlockfile(fp) (((fp)->_flags & __SSTR) ? 0 : __lock_release_recursive((fp)->_lock))" +.LASF1493: + .string "CSR_HPMCOUNTER18 0xc12" +.LASF926: + .string "MCONTROL_LOAD (1<<0)" +.LASF1345: + .string "MASK_C_JR 0xf07f" +.LASF1388: + .string "MATCH_C_SUB 0x8c01" +.LASF378: + .string "_INTPTR_EQ_INT " +.LASF995: + .string "PTE_SOFT 0x300" +.LASF142: + .string "__FLT_EVAL_METHOD_TS_18661_3__ 0" +.LASF1407: + .string "MASK_C_SLLI 0xe003" +.LASF90: + .string "__UINTMAX_MAX__ 0xffffffffffffffffULL" +.LASF1515: + .string "CSR_SPTBR 0x180" +.LASF65: + .string "__INTPTR_TYPE__ int" +.LASF144: + .string "__FLT_RADIX__ 2" +.LASF1144: + .string "MATCH_AMOXOR_W 0x2000202f" +.LASF1359: + .string "MASK_C_SDSP 0xe003" +.LASF742: + .string "_REENT_CHECK_TM(ptr) " +.LASF1644: + .string "CSR_MHPMCOUNTER12H 0xb8c" +.LASF308: + .string "__riscv_muldiv 1" +.LASF1194: + .string "MATCH_HRET 0x20200073" +.LASF1448: + .string "MATCH_CUSTOM2 0x5b" +.LASF771: + .string "_REENT_INIT_PTR(var) { memset((var), 0, sizeof(*(var))); _REENT_INIT_PTR_ZEROED(var); }" +.LASF1473: + .string "CSR_FRM 0x2" +.LASF395: + .string "__int8_t_defined 1" +.LASF1102: + .string "MATCH_LWU 0x6003" +.LASF251: + .string "__FLT32X_MANT_DIG__ 53" +.LASF336: + .string "__NEWLIB_PATCHLEVEL__ 0" +.LASF713: + .string "__lock_init_recursive(lock) ((void) 0)" +.LASF1552: + .string "CSR_MHPMCOUNTER18 0xb12" +.LASF1745: + .string "GNU C17 10.2.0 -march=rv32imac -mabi=ilp32 -mcmodel=medany -msmall-data-limit= 8 -march=rv32imac -g3 -O0" +.LASF1163: + .string "MASK_SC_W 0xf800707f" +.LASF969: + .string "VM_SV48 10" +.LASF399: + .string "_INT32_T_DECLARED " +.LASF81: + .string "__INT_WIDTH__ 32" +.LASF1654: + .string "CSR_MHPMCOUNTER22H 0xb96" +.LASF445: + .string "INT_FAST8_MAX (__INT_FAST8_MAX__)" +.LASF1383: + .string "MASK_C_SRLI 0xec03" +.LASF1338: + .string "MATCH_FNMADD_D 0x200004f" +.LASF1691: + .string "N200_TIMER_H " +.LASF1635: + .string "CSR_MHPMCOUNTER3H 0xb83" +.LASF777: + .string "__BIT_TYPES_DEFINED__ 1" +.LASF1090: + .string "MATCH_LB 0x3" +.LASF413: + .string "__int_fast8_t_defined 1" +.LASF775: + .string "_GLOBAL_REENT _global_impure_ptr" +.LASF222: + .string "__FLT64_DIG__ 15" +.LASF385: + .string "__FAST16 " +.LASF1589: + .string "CSR_MHPMEVENT24 0x338" +.LASF355: + .string "___int64_t_defined 1" +.LASF1120: + .string "MATCH_MULHSU 0x2002033" +.LASF1487: + .string "CSR_HPMCOUNTER12 0xc0c" +.LASF567: + .string "__GNUCLIKE_BUILTIN_NEXT_ARG 1" +.LASF1305: + .string "MASK_FMV_S_X 0xfff0707f" +.LASF1230: + .string "MATCH_FMIN_S 0x28000053" +.LASF1240: + .string "MATCH_FMUL_D 0x12000053" +.LASF1716: + .string "ECLIC_INT_ATTR_TRIG_EDGE 0x02" +.LASF1678: + .string "CAUSE_MISALIGNED_FETCH 0x0" +.LASF1278: + .string "MATCH_FCVT_LU_S 0xc0300053" +.LASF1351: + .string "MASK_C_LD 0xe003" +.LASF257: + .string "__FLT32X_DECIMAL_DIG__ 17" +.LASF779: + .string "_BLKCNT_T_DECLARED " +.LASF290: + .string "__GCC_ATOMIC_CHAR32_T_LOCK_FREE 2" +.LASF42: + .string "__INT16_TYPE__ short int" +.LASF237: + .string "__FLT128_DIG__ 33" +.LASF1081: + .string "MASK_ADDW 0xfe00707f" +.LASF1645: + .string "CSR_MHPMCOUNTER13H 0xb8d" +.LASF989: + .string "PTE_W 0x004" +.LASF414: + .string "__int_fast16_t_defined 1" +.LASF749: + .string "_REENT_RAND48_SEED(ptr) ((ptr)->_new._reent._r48._seed)" +.LASF1065: + .string "MASK_SRL 0xfe00707f" +.LASF530: + .string "___int_size_t_h " +.LASF627: + .string "__sym_default(sym,impl,verid) __asm__(\".symver \" #impl \", \" #sym \"@@\" #verid)" +.LASF1087: + .string "MASK_SRLW 0xfe00707f" +.LASF1027: + .string "MASK_JALR 0x707f" +.LASF1028: + .string "MATCH_JAL 0x6f" +.LASF526: + .string "_SIZE_T_DEFINED_ " +.LASF1709: + .string "ECLIC_INFO_OFFSET 0x4" +.LASF1044: + .string "MATCH_SRLI 0x5013" +.LASF294: + .string "__GCC_ATOMIC_LONG_LOCK_FREE 2" +.LASF1747: + .string "D:\\\\rt-thread\\\\bsp\\\\gd32\\\\risc-v\\\\gd32vf103v-eval" +.LASF415: + .string "__int_fast32_t_defined 1" +.LASF1630: + .string "CSR_HPMCOUNTER29H 0xc9d" +.LASF1625: + .string "CSR_HPMCOUNTER24H 0xc98" +.LASF1655: + .string "CSR_MHPMCOUNTER23H 0xb97" +.LASF922: + .string "MCONTROL_S (1<<4)" +.LASF76: + .string "__WINT_MIN__ 0U" +.LASF1095: + .string "MASK_LW 0x707f" +.LASF795: + .string "_KEY_T_DECLARED " +.LASF1185: + .string "MASK_SC_D 0xf800707f" +.LASF535: + .string "NULL" +.LASF1587: + .string "CSR_MHPMEVENT22 0x336" +.LASF1150: + .string "MATCH_AMOMIN_W 0x8000202f" +.LASF950: + .string "MIE_HSIE MIP_HSIP" +.LASF312: + .string "__riscv_arch_test 1" +.LASF1353: + .string "MASK_C_SD 0xe003" +.LASF346: + .string "__SVID_VISIBLE 0" +.LASF938: + .string "MCONTROL_MATCH_MASK_LOW 4" +.LASF1562: + .string "CSR_MHPMCOUNTER28 0xb1c" +.LASF1138: + .string "MATCH_REMW 0x200603b" +.LASF1054: + .string "MATCH_SUB 0x40000033" +.LASF967: + .string "VM_SV32 8" +.LASF980: + .string "IRQ_HOST 13" +.LASF1273: + .string "MASK_FCVT_W_S 0xfff0007f" +.LASF741: + .string "_REENT_CHECK_MP(ptr) " +.LASF778: + .string "_SYS_TYPES_H " +.LASF1497: + .string "CSR_HPMCOUNTER22 0xc16" +.LASF1646: + .string "CSR_MHPMCOUNTER14H 0xb8e" +.LASF686: + .string "_GCC_WCHAR_T " +.LASF454: + .string "INT_FAST64_MAX (__INT_FAST64_MAX__)" +.LASF1601: + .string "CSR_CYCLEH 0xc80" +.LASF710: + .string "__LOCK_INIT(class,lock) static int lock = 0;" +.LASF1225: + .string "MASK_FSGNJ_S 0xfe00707f" +.LASF380: + .string "__INT8 \"hh\"" +.LASF1698: + .string "TIMER_CTRL_ADDR 0xd1000000" +.LASF110: + .string "__INT_LEAST32_MAX__ 0x7fffffffL" +.LASF131: + .string "__INT_FAST64_WIDTH__ 64" +.LASF185: + .string "__LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L" +.LASF1355: + .string "MASK_C_ADDIW 0xe003" +.LASF1153: + .string "MASK_AMOMAX_W 0xf800707f" +.LASF586: + .string "__dead2 __attribute__((__noreturn__))" +.LASF1706: + .string "_BITULL(x) (_AC(1,ULL) << (x))" +.LASF514: + .string "__need_size_t " +.LASF1364: + .string "MATCH_C_LW 0x4000" +.LASF98: + .string "__INT32_MAX__ 0x7fffffffL" +.LASF584: + .string "__volatile volatile" +.LASF1101: + .string "MASK_LHU 0x707f" +.LASF285: + .string "__CHAR_UNSIGNED__ 1" +.LASF1440: + .string "MATCH_CUSTOM1_RS1_RS2 0x302b" +.LASF177: + .string "__LDBL_MIN_EXP__ (-16381)" +.LASF688: + .string "_BSD_WCHAR_T_" +.LASF1707: + .string "ECLICINTCTLBITS 4" +.LASF68: + .string "__SCHAR_MAX__ 0x7f" +.LASF923: + .string "MCONTROL_U (1<<3)" +.LASF298: + .string "__GCC_HAVE_DWARF2_CFI_ASM 1" +.LASF1071: + .string "MASK_AND 0xfe00707f" +.LASF1062: + .string "MATCH_XOR 0x4033" +.LASF196: + .string "__FLT16_MAX_10_EXP__ 4" +.LASF822: + .string "__SNPT 0x0800" +.LASF534: + .string "__need_size_t" +.LASF89: + .string "__INTMAX_C(c) c ## LL" +.LASF1112: + .string "MATCH_FENCE 0xf" +.LASF1221: + .string "MASK_FMUL_S 0xfe00007f" +.LASF672: + .string "__need_ptrdiff_t" +.LASF1236: + .string "MATCH_FADD_D 0x2000053" +.LASF1521: + .string "CSR_MTVEC 0x305" +.LASF1381: + .string "MASK_C_LUI 0xe003" +.LASF1016: + .string "MATCH_BNE 0x1063" +.LASF432: + .string "INT32_MIN (-__INT32_MAX__ - 1)" +.LASF1573: + .string "CSR_MHPMEVENT8 0x328" +.LASF1129: + .string "MASK_REM 0xfe00707f" +.LASF616: + .string "__containerof(x,s,m) ({ const volatile __typeof(((s *)0)->m) *__x = (x); __DEQUALIFY(s *, (const volatile char *)__x - __offsetof(s, m));})" +.LASF1201: + .string "MASK_SFENCE_VM 0xfff07fff" +.LASF1342: + .string "MATCH_C_ADDI16SP 0x6101" +.LASF1019: + .string "MASK_BLT 0x707f" +.LASF1711: + .string "ECLIC_INT_IP_OFFSET _AC(0x1000,UL)" +.LASF555: + .string "__GNUCLIKE_ASM 3" +.LASF869: + .string "MSTATUS_SPIE 0x00000020" +.LASF159: + .string "__FLT_HAS_QUIET_NAN__ 1" +.LASF791: + .string "_DEV_T_DECLARED " +.LASF370: + .string "signed +0" +.LASF976: + .string "IRQ_S_EXT 9" +.LASF1712: + .string "ECLIC_INT_IE_OFFSET _AC(0x1001,UL)" +.LASF4: + .string "__STDC_HOSTED__ 1" +.LASF1468: + .string "MATCH_CUSTOM3_RD_RS1 0x607b" +.LASF1720: + .string "ECLIC_ADDR_BASE 0xd2000000" +.LASF739: + .ascii "_REENT_INIT_PTR_ZEROED(var) { (var)->_stdin = _REENT_STDIO_S" + .ascii "TREAM(var, 0); (var)->_stdout = _REENT_STDIO_STREAM(var, 1);" + .ascii " (var)->_stderr = _REENT_STDIO_STREAM(var, 2); (var)->_new._" + .ascii "reent._rand_next = 1; (var)->_new._reent._r48._seed[0] = _RA" + .ascii "ND48_SEED_0; (var)->_new._reent._r48._seed[1] = _RAND48_S" + .string "EED_1; (var)->_new._reent._r48._seed[2] = _RAND48_SEED_2; (var)->_new._reent._r48._mult[0] = _RAND48_MULT_0; (var)->_new._reent._r48._mult[1] = _RAND48_MULT_1; (var)->_new._reent._r48._mult[2] = _RAND48_MULT_2; (var)->_new._reent._r48._add = _RAND48_ADD; }" +.LASF1474: + .string "CSR_FCSR 0x3" +.LASF1175: + .string "MASK_AMOMAX_D 0xf800707f" +.LASF274: + .string "__FLT64X_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F64x" +.LASF1031: + .string "MASK_LUI 0x7f" +.LASF200: + .string "__FLT16_MIN__ 6.10351562500000000000000000000000000e-5F16" +.LASF753: + .string "_REENT_MP_RESULT_K(ptr) ((ptr)->_result_k)" +.LASF79: + .string "__SCHAR_WIDTH__ 8" +.LASF1190: + .string "MATCH_URET 0x200073" +.LASF1046: + .string "MATCH_SRAI 0x40005013" +.LASF28: + .string "__ORDER_PDP_ENDIAN__ 3412" +.LASF1435: + .string "MASK_CUSTOM0_RD_RS1_RS2 0x707f" +.LASF915: + .string "MCONTROL_SELECT (1<<19)" +.LASF1492: + .string "CSR_HPMCOUNTER17 0xc11" +.LASF1603: + .string "CSR_INSTRETH 0xc82" +.LASF656: + .string "__nosanitizeaddress " +.LASF129: + .string "__INT_FAST32_WIDTH__ 32" +.LASF1324: + .string "MATCH_FMADD_S 0x43" +.LASF60: + .string "__INT_FAST64_TYPE__ long long int" +.LASF601: + .string "__noinline __attribute__ ((__noinline__))" +.LASF1281: + .string "MASK_FMV_X_S 0xfff0707f" +.LASF545: + .string "__attribute_pure__ " +.LASF488: + .string "_HAVE_LONG_DOUBLE 1" +.LASF113: + .string "__INT_LEAST64_MAX__ 0x7fffffffffffffffLL" +.LASF121: + .string "__UINT32_C(c) c ## UL" +.LASF1280: + .string "MATCH_FMV_X_S 0xe0000053" +.LASF762: + .string "_REENT_WCTOMB_STATE(ptr) ((ptr)->_new._reent._wctomb_state)" +.LASF1026: + .string "MATCH_JALR 0x67" +.LASF959: + .string "SIP_STIP MIP_STIP" +.LASF1312: + .string "MATCH_FCVT_D_LU 0xd2300053" +.LASF1679: + .string "CAUSE_FAULT_FETCH 0x1" +.LASF1103: + .string "MASK_LWU 0x707f" +.LASF592: + .string "__section(x) __attribute__((__section__(x)))" +.LASF550: + .string "__ptrvalue " +.LASF1527: + .string "CSR_MIP 0x344" +.LASF1004: + .string "write_fpu(reg,val) ({ if (__builtin_constant_p(val) && (unsigned long)(val) < 32) asm volatile (\"fmv.w.x \" #reg \", %0\" :: \"i\"(val)); else asm volatile (\"fmv.w.x \" #reg \", %0\" :: \"r\"(val)); })" +.LASF1286: + .string "MATCH_FCVT_WU_D 0xc2100053" +.LASF465: + .string "WCHAR_MAX (__WCHAR_MAX__)" +.LASF1399: + .string "MASK_C_ADDW 0xfc63" +.LASF1427: + .string "MASK_CUSTOM0_RS1 0x707f" +.LASF92: + .string "__INTMAX_WIDTH__ 64" +.LASF941: + .string "MIP_HSIP (1 << IRQ_H_SOFT)" +.LASF1378: + .string "MATCH_C_LI 0x4001" +.LASF323: + .string "HAVE_CCONFIG_H 1" +.LASF1592: + .string "CSR_MHPMEVENT27 0x33b" +.LASF115: + .string "__INT_LEAST64_WIDTH__ 64" +.LASF1308: + .string "MATCH_FCVT_D_WU 0xd2100053" +.LASF640: + .string "__NULLABILITY_PRAGMA_POP " +.LASF332: + .string "_NEWLIB_VERSION_H__ 1" +.LASF419: + .string "UINTPTR_MAX (__UINTPTR_MAX__)" +.LASF1681: + .string "CAUSE_BREAKPOINT 0x3" +.LASF699: + .string "__need_wint_t" +.LASF1092: + .string "MATCH_LH 0x1003" +.LASF9: + .string "__ATOMIC_RELAXED 0" +.LASF1069: + .string "MASK_OR 0xfe00707f" +.LASF1683: + .string "CAUSE_FAULT_LOAD 0x5" +.LASF424: + .string "INT_LEAST8_MAX (__INT_LEAST8_MAX__)" +.LASF907: + .string "DCSR_CAUSE_SWBP 1" +.LASF1328: + .string "MATCH_FNMSUB_S 0x4b" +.LASF1157: + .string "MASK_AMOMAXU_W 0xf800707f" +.LASF1248: + .string "MATCH_FSGNJX_D 0x22002053" +.LASF1489: + .string "CSR_HPMCOUNTER14 0xc0e" +.LASF1541: + .string "CSR_MHPMCOUNTER7 0xb07" +.LASF830: + .string "_IONBF 2" +.LASF1595: + .string "CSR_MHPMEVENT30 0x33e" +.LASF334: + .string "__NEWLIB__ 4" +.LASF606: + .string "__returns_twice __attribute__((__returns_twice__))" +.LASF1454: + .string "MATCH_CUSTOM2_RD 0x405b" +.LASF171: + .string "__DBL_DENORM_MIN__ ((double)4.94065645841246544176568792868221372e-324L)" +.LASF1509: + .string "CSR_STVEC 0x105" +.LASF752: + .string "_REENT_MP_RESULT(ptr) ((ptr)->_result)" +.LASF139: + .string "__GCC_IEC_559 0" +.LASF783: + .string "__time_t_defined " +.LASF866: + .string "MSTATUS_HIE 0x00000004" +.LASF737: + .string "_REENT_STDIO_STREAM(var,index) &(var)->__sf[index]" +.LASF1271: + .string "MASK_FEQ_D 0xfe00707f" +.LASF64: + .string "__UINT_FAST64_TYPE__ long long unsigned int" +.LASF1122: + .string "MATCH_MULHU 0x2003033" +.LASF1317: + .string "MASK_FLW 0x707f" +.LASF807: + .string "__FILE_defined " +.LASF1235: + .string "MASK_FSQRT_S 0xfff0007f" +.LASF770: + .string "_REENT_GETDATE_ERR_P(ptr) (&((ptr)->_new._reent._getdate_err))" +.LASF1203: + .string "MASK_WFI 0xffffffff" +.LASF404: + .string "__int64_t_defined 1" +.LASF506: + .string "_END_STD_C " +.LASF408: + .string "_UINTPTR_T_DECLARED " +.LASF935: + .string "MCONTROL_MATCH_NAPOT 1" +.LASF707: + .string "_NULL 0" +.LASF1215: + .string "MASK_CSRRCI 0x707f" +.LASF501: + .string "__RAND_MAX 0x7fffffff" +.LASF673: + .string "__wchar_t__ " +.LASF1443: + .string "MASK_CUSTOM1_RD 0x707f" +.LASF1387: + .string "MASK_C_ANDI 0xec03" +.LASF317: + .string "__riscv_zicsr 2000000" +.LASF659: + .string "__pt_guarded_by(x) __lock_annotate(pt_guarded_by(x))" +.LASF687: + .string "_WCHAR_T_DECLARED " +.LASF1303: + .string "MASK_FCVT_S_LU 0xfff0007f" +.LASF1257: + .string "MASK_FCVT_D_S 0xfff0007f" +.LASF1508: + .string "CSR_SIE 0x104" +.LASF493: + .string "_UNBUF_STREAM_OPT 1" +.LASF626: + .string "__sym_compat(sym,impl,verid) __asm__(\".symver \" #impl \", \" #sym \"@\" #verid)" +.LASF106: + .string "__INT_LEAST8_WIDTH__ 8" +.LASF954: + .string "MIE_MTIE MIP_MTIP" +.LASF5: + .string "__GNUC__ 10" +.LASF1162: + .string "MATCH_SC_W 0x1800202f" +.LASF1258: + .string "MATCH_FSQRT_D 0x5a000053" +.LASF1243: + .string "MASK_FDIV_D 0xfe00007f" +.LASF58: + .string "__INT_FAST16_TYPE__ int" +.LASF427: + .string "INT16_MAX (__INT16_MAX__)" +.LASF1749: + .string "handle_nmi" +.LASF112: + .string "__INT_LEAST32_WIDTH__ 32" +.LASF1036: + .string "MATCH_SLLI 0x1013" +.LASF1179: + .string "MASK_AMOMAXU_D 0xf800707f" +.LASF847: + .string "__sgetc_raw_r(__ptr,__f) (--(__f)->_r < 0 ? __srget_r(__ptr, __f) : (int)(*(__f)->_p++))" +.LASF386: + .string "__FAST32 " +.LASF248: + .string "__FLT128_HAS_DENORM__ 1" +.LASF1390: + .string "MATCH_C_XOR 0x8c21" +.LASF1109: + .string "MASK_SW 0x707f" +.LASF1447: + .string "MASK_CUSTOM1_RD_RS1_RS2 0x707f" +.LASF364: + .string "unsigned" +.LASF826: + .string "__SNLK 0x0001" +.LASF140: + .string "__GCC_IEC_559_COMPLEX 0" +.LASF1311: + .string "MASK_FCVT_D_L 0xfff0007f" +.LASF524: + .string "_SIZE_T_ " +.LASF1626: + .string "CSR_HPMCOUNTER25H 0xc99" +.LASF956: + .string "MIE_HEIE MIP_HEIP" +.LASF531: + .string "_GCC_SIZE_T " +.LASF275: + .string "__FLT64X_MIN__ 3.36210314311209350626267781732175260e-4932F64x" +.LASF1198: + .string "MATCH_DRET 0x7b200073" +.LASF70: + .string "__INT_MAX__ 0x7fffffff" +.LASF1356: + .string "MATCH_C_LDSP 0x6002" +.LASF1667: + .string "CSR_MNVEC 0x7C3" +.LASF1421: + .string "MASK_C_SWSP 0xe003" +.LASF978: + .string "IRQ_M_EXT 11" +.LASF67: + .string "__GXX_ABI_VERSION 1014" +.LASF1367: + .string "MASK_C_FLW 0xe003" +.LASF1669: + .string "CSR_JALMNXTI 0x7ED" +.LASF800: + .string "_CLOCKID_T_DECLARED " +.LASF440: + .string "UINT64_MAX (__UINT64_MAX__)" +.LASF1333: + .string "MASK_FMADD_D 0x600007f" +.LASF300: + .string "__SIZEOF_WCHAR_T__ 4" +.LASF1377: + .string "MASK_C_JAL 0xe003" +.LASF623: + .string "__strong_reference(sym,aliassym) extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)))" +.LASF1012: + .string "rdinstret() read_csr(instret)" +.LASF96: + .string "__INT8_MAX__ 0x7f" +.LASF1556: + .string "CSR_MHPMCOUNTER22 0xb16" +.LASF1622: + .string "CSR_HPMCOUNTER21H 0xc95" +.LASF679: + .string "_WCHAR_T_ " +.LASF11: + .string "__ATOMIC_ACQUIRE 2" +.LASF880: + .string "MSTATUS32_SD 0x80000000" +.LASF1524: + .string "CSR_MEPC 0x341" +.LASF328: + .string "_POSIX_C_SOURCE 1" +.LASF562: + .string "__GNUCLIKE_BUILTIN_VARARGS 1" +.LASF772: + .string "_Kmax (sizeof (size_t) << 3)" +.LASF541: + .string "__ASMNAME(cname) __XSTRING (__USER_LABEL_PREFIX__) cname" +.LASF1586: + .string "CSR_MHPMEVENT21 0x335" +.LASF999: + .string "SSTATUS_SD SSTATUS32_SD" +.LASF1677: + .string "CSR_MSUBM 0x7c4" +.LASF357: + .string "___int_least16_t_defined 1" +.LASF1319: + .string "MASK_FLD 0x707f" +.LASF1481: + .string "CSR_HPMCOUNTER6 0xc06" +.LASF1034: + .string "MATCH_ADDI 0x13" +.LASF520: + .string "_SYS_SIZE_T_H " +.LASF201: + .string "__FLT16_EPSILON__ 9.76562500000000000000000000000000000e-4F16" +.LASF1419: + .string "MASK_C_FSDSP 0xe003" +.LASF955: + .string "MIE_SEIE MIP_SEIP" +.LASF133: + .string "__UINT_FAST16_MAX__ 0xffffffffU" +.LASF1410: + .string "MATCH_C_LWSP 0x4002" +.LASF447: + .string "INT_FAST16_MIN (-__INT_FAST16_MAX__ - 1)" +.LASF1213: + .string "MASK_CSRRSI 0x707f" +.LASF1519: + .string "CSR_MIDELEG 0x303" +.LASF748: + .string "_REENT_RAND_NEXT(ptr) ((ptr)->_new._reent._rand_next)" +.LASF1416: + .string "MATCH_C_ADD 0x9002" +.LASF646: + .string "__locks_shared(...) __lock_annotate(shared_lock_function(__VA_ARGS__))" +.LASF867: + .string "MSTATUS_MIE 0x00000008" +.LASF1744: + .string "mcause" +.LASF367: + .string "__int20" +.LASF78: + .string "__SIZE_MAX__ 0xffffffffU" +.LASF1306: + .string "MATCH_FCVT_D_W 0xd2000053" +.LASF729: + .string "_RAND48_MULT_0 (0xe66d)" +.LASF1731: + .string "ECLIC_GROUP_LEVEL4_PRIO0 4" +.LASF1147: + .string "MASK_AMOOR_W 0xf800707f" +.LASF393: + .string "_INT8_T_DECLARED " +.LASF758: + .string "_REENT_EMERGENCY(ptr) ((ptr)->_emergency)" +.LASF1035: + .string "MASK_ADDI 0x707f" +.LASF1211: + .string "MASK_CSRRWI 0x707f" +.LASF1040: + .string "MATCH_SLTIU 0x3013" +.LASF132: + .string "__UINT_FAST8_MAX__ 0xffffffffU" +.LASF774: + .string "_REENT _impure_ptr" +.LASF1136: + .string "MATCH_DIVUW 0x200503b" +.LASF471: + .string "UINT16_C(x) __UINT16_C(x)" +.LASF1323: + .string "MASK_FSD 0x707f" +.LASF449: + .string "UINT_FAST16_MAX (__UINT_FAST16_MAX__)" +.LASF1222: + .string "MATCH_FDIV_S 0x18000053" +.LASF946: + .string "MIP_SEIP (1 << IRQ_S_EXT)" +.LASF537: + .string "__need_NULL" +.LASF690: + .string "offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)" +.LASF333: + .string "_NEWLIB_VERSION \"4.1.0\"" +.LASF1130: + .string "MATCH_REMU 0x2007033" +.LASF706: + .string "_TIMER_T_ unsigned long" +.LASF590: + .string "__packed __attribute__((__packed__))" +.LASF634: + .string "__DEVOLATILE(type,var) ((type)(__uintptr_t)(volatile void *)(var))" +.LASF1555: + .string "CSR_MHPMCOUNTER21 0xb15" +.LASF1041: + .string "MASK_SLTIU 0x707f" +.LASF484: + .string "_WANT_IO_LONG_DOUBLE 1" +.LASF1647: + .string "CSR_MHPMCOUNTER15H 0xb8f" +.LASF819: + .string "__SAPP 0x0100" +.LASF1253: + .string "MASK_FMAX_D 0xfe00707f" +.LASF1200: + .string "MATCH_SFENCE_VM 0x10400073" +.LASF1135: + .string "MASK_DIVW 0xfe00707f" +.LASF597: + .string "__min_size(x) static (x)" +.LASF696: + .string "_SYS__TYPES_H " +.LASF984: + .string "CONFIG_STRING_ADDR 0x0000100C" +.LASF1346: + .string "MATCH_C_JALR 0x9002" +.LASF1671: + .string "CSR_PUSHMEPC 0x7EF" +.LASF817: + .string "__SERR 0x0040" +.LASF1580: + .string "CSR_MHPMEVENT15 0x32f" +.LASF629: + .string "__RCSID(s) struct __hack" +.LASF718: + .string "__lock_try_acquire(lock) ((void) 0)" +.LASF111: + .string "__INT32_C(c) c ## L" +.LASF180: + .string "__LDBL_MAX_10_EXP__ 4932" +.LASF554: + .string "__END_DECLS " +.LASF1459: + .string "MASK_CUSTOM2_RD_RS1_RS2 0x707f" +.LASF359: + .string "___int_least64_t_defined 1" +.LASF918: + .string "MCONTROL_CHAIN (1<<11)" +.LASF373: + .string "short +1" +.LASF1052: + .string "MATCH_ADD 0x33" +.LASF456: + .string "INTMAX_MAX (__INTMAX_MAX__)" +.LASF563: + .string "__GNUCLIKE_BUILTIN_STDARG 1" +.LASF1314: + .string "MATCH_FMV_D_X 0xf2000053" +.LASF1629: + .string "CSR_HPMCOUNTER28H 0xc9c" +.LASF1460: + .string "MATCH_CUSTOM3 0x7b" +.LASF992: + .string "PTE_G 0x020" +.LASF811: + .string "__SLBF 0x0001" +.LASF1024: + .string "MATCH_BGEU 0x7063" +.LASF1456: + .string "MATCH_CUSTOM2_RD_RS1 0x605b" +.LASF1164: + .string "MATCH_AMOADD_D 0x302f" +.LASF1118: + .string "MATCH_MULH 0x2001033" +.LASF478: + .string "_STDIO_H_ " +.LASF246: + .string "__FLT128_EPSILON__ 1.92592994438723585305597794258492732e-34F128" +.LASF1538: + .string "CSR_MHPMCOUNTER4 0xb04" +.LASF1735: + .string "short unsigned int" +.LASF1542: + .string "CSR_MHPMCOUNTER8 0xb08" +.LASF1732: + .string "signed char" +.LASF168: + .string "__DBL_NORM_MAX__ ((double)1.79769313486231570814527423731704357e+308L)" +.LASF389: + .string "__LEAST16 \"h\"" +.LASF1553: + .string "CSR_MHPMCOUNTER19 0xb13" +.LASF517: + .string "__size_t__ " +.LASF1254: + .string "MATCH_FCVT_S_D 0x40100053" +.LASF494: + .string "__SYS_CONFIG_H__ " +.LASF1238: + .string "MATCH_FSUB_D 0xa000053" +.LASF934: + .string "MCONTROL_MATCH_EQUAL 0" +.LASF610: + .string "__predict_false(exp) __builtin_expect((exp), 0)" +.LASF502: + .string "__EXPORT " +.LASF1652: + .string "CSR_MHPMCOUNTER20H 0xb94" +.LASF279: + .string "__FLT64X_HAS_INFINITY__ 1" +.LASF24: + .string "__CHAR_BIT__ 8" +.LASF36: + .string "__INTMAX_TYPE__ long long int" +.LASF831: + .string "EOF (-1)" +.LASF499: + .string "_POINTER_INT long" +.LASF794: + .string "_PID_T_DECLARED " +.LASF903: + .string "DCSR_HALT (1<<3)" +.LASF738: + .ascii "_REENT_INIT(var) { 0, _REENT_STDIO_STREAM(&(var), 0), _REENT" + .ascii "_STDIO_STREAM(&(var), 1), _REENT_STDIO_STREAM(&(var), 2), 0," + .ascii " \"\", 0, _NULL, 0, _NULL, _NULL, 0, _NULL, _NULL, 0, _NULL," + .ascii " { { 0, _NULL, \"\", {0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 1, {" + .string " {_RAND48_SEED_0, _RAND48_SEED_1, _RAND48_SEED_2}, {_RAND48_MULT_0, _RAND48_MULT_1, _RAND48_MULT_2}, _RAND48_ADD }, {0, {0}}, {0, {0}}, {0, {0}}, \"\", \"\", 0, {0, {0}}, {0, {0}}, {0, {0}}, {0, {0}}, {0, {0}} } }, _REENT_INIT_ATEXIT _NULL, {_NULL, 0, _NULL} }" +.LASF947: + .string "MIP_HEIP (1 << IRQ_H_EXT)" +.LASF267: + .string "__FLT64X_DIG__ 33" +.LASF1488: + .string "CSR_HPMCOUNTER13 0xc0d" +.LASF776: + .string "_GLOBAL_ATEXIT (_GLOBAL_REENT->_atexit)" +.LASF1045: + .string "MASK_SRLI 0xfc00707f" +.LASF602: + .string "__nonnull(x) __attribute__((__nonnull__ x))" +.LASF525: + .string "_BSD_SIZE_T_ " +.LASF1507: + .string "CSR_SSTATUS 0x100" +.LASF136: + .string "__INTPTR_MAX__ 0x7fffffff" +.LASF990: + .string "PTE_X 0x008" +.LASF1005: + .string "read_csr(reg) ({ unsigned long __tmp; asm volatile (\"csrr %0, \" #reg : \"=r\"(__tmp)); __tmp; })" +.LASF1284: + .string "MATCH_FCVT_W_D 0xc2000053" +.LASF315: + .string "__riscv_a 2000000" +.LASF1068: + .string "MATCH_OR 0x6033" +.LASF1575: + .string "CSR_MHPMEVENT10 0x32a" +.LASF532: + .string "_SIZET_ " +.LASF297: + .string "__GCC_ATOMIC_POINTER_LOCK_FREE 2" +.LASF636: + .string "_Nonnull " +.LASF861: + .string "STDOUT_FILENO 1" +.LASF823: + .string "__SOFF 0x1000" +.LASF1374: + .string "MATCH_C_ADDI 0x1" +.LASF730: + .string "_RAND48_MULT_1 (0xdeec)" +.LASF316: + .string "__riscv_c 2000000" +.LASF211: + .string "__FLT32_MAX_10_EXP__ 38" +.LASF1013: + .string "RISCV_ENCODING_H " +.LASF750: + .string "_REENT_RAND48_MULT(ptr) ((ptr)->_new._reent._r48._mult)" +.LASF1514: + .string "CSR_SIP 0x144" +.LASF375: + .string "__int20__ +2" +.LASF1389: + .string "MASK_C_SUB 0xfc63" +.LASF764: + .string "_REENT_MBRTOWC_STATE(ptr) ((ptr)->_new._reent._mbrtowc_state)" +.LASF188: + .string "__LDBL_HAS_DENORM__ 1" +.LASF485: + .string "_REENT_CHECK_VERIFY 1" +.LASF916: + .string "MCONTROL_TIMING (1<<18)" +.LASF1520: + .string "CSR_MIE 0x304" +.LASF1178: + .string "MATCH_AMOMAXU_D 0xe000302f" +.LASF1563: + .string "CSR_MHPMCOUNTER29 0xb1d" +.LASF792: + .string "_UID_T_DECLARED " +.LASF467: + .string "WINT_MIN (__WINT_MIN__)" +.LASF919: + .string "MCONTROL_MATCH (0xf<<7)" +.LASF1008: + .string "set_csr(reg,bit) ({ unsigned long __tmp; if (__builtin_constant_p(bit) && (unsigned long)(bit) < 32) asm volatile (\"csrrs %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"i\"(bit)); else asm volatile (\"csrrs %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"r\"(bit)); __tmp; })" +.LASF731: + .string "_RAND48_MULT_2 (0x0005)" +.LASF705: + .string "_CLOCKID_T_ unsigned long" +.LASF575: + .string "__CC_SUPPORTS_VARADIC_XXX 1" +.LASF1498: + .string "CSR_HPMCOUNTER23 0xc17" +.LASF293: + .string "__GCC_ATOMIC_INT_LOCK_FREE 2" +.LASF884: + .string "SSTATUS_UPIE 0x00000010" +.LASF225: + .string "__FLT64_MAX_EXP__ 1024" +.LASF313: + .string "__riscv_i 2000000" +.LASF644: + .string "__lockable __lock_annotate(lockable)" +.LASF551: + .string "__has_extension __has_feature" +.LASF281: + .string "__REGISTER_PREFIX__ " +.LASF1537: + .string "CSR_MHPMCOUNTER3 0xb03" +.LASF931: + .string "MCONTROL_ACTION_TRACE_START 2" +.LASF1343: + .string "MASK_C_ADDI16SP 0xef83" +.LASF860: + .string "STDIN_FILENO 0" +.LASF1000: + .string "RISCV_PGLEVEL_BITS 10" +.LASF951: + .string "MIE_MSIE MIP_MSIP" +.LASF714: + .string "__lock_close(lock) ((void) 0)" +.LASF837: + .string "SEEK_CUR 1" +.LASF1264: + .string "MATCH_FEQ_S 0xa0002053" +.LASF625: + .string "__warn_references(sym,msg) __asm__(\".section .gnu.warning.\" #sym); __asm__(\".asciz \\\"\" msg \"\\\"\"); __asm__(\".previous\")" +.LASF756: + .string "_REENT_ASCTIME_BUF(ptr) ((ptr)->_new._reent._asctime_buf)" +.LASF325: + .string "__RTTHREAD__ 1" +.LASF453: + .string "INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1)" +.LASF57: + .string "__INT_FAST8_TYPE__ int" +.LASF477: + .string "UINTMAX_C(x) __UINTMAX_C(x)" +.LASF1114: + .string "MATCH_FENCE_I 0x100f" +.LASF1594: + .string "CSR_MHPMEVENT29 0x33d" +.LASF569: + .string "__GNUCLIKE_BUILTIN_MEMCPY 1" +.LASF542: + .string "__ptr_t void *" +.LASF1710: + .string "ECLIC_MTH_OFFSET 0xB" +.LASF911: + .string "DCSR_CAUSE_HALT 5" +.LASF1423: + .string "MASK_C_FSWSP 0xe003" +.LASF1350: + .string "MATCH_C_LD 0x6000" +.LASF1461: + .string "MASK_CUSTOM3 0x707f" +.LASF1584: + .string "CSR_MHPMEVENT19 0x333" +.LASF343: + .string "__LARGEFILE_VISIBLE 0" +.LASF91: + .string "__UINTMAX_C(c) c ## ULL" +.LASF18: + .string "__SIZEOF_LONG_LONG__ 8" +.LASF652: + .string "__requires_exclusive(...) __lock_annotate(exclusive_locks_required(__VA_ARGS__))" +.LASF422: + .string "UINT8_MAX (__UINT8_MAX__)" +.LASF1736: + .string "long int" +.LASF1119: + .string "MASK_MULH 0xfe00707f" +.LASF754: + .string "_REENT_MP_P5S(ptr) ((ptr)->_p5s)" +.LASF1360: + .string "MATCH_C_ADDI4SPN 0x0" +.LASF1083: + .string "MASK_SUBW 0xfe00707f" +.LASF172: + .string "__DBL_HAS_DENORM__ 1" +.LASF339: + .string "__ATFILE_VISIBLE 0" +.LASF314: + .string "__riscv_m 2000000" +.LASF226: + .string "__FLT64_MAX_10_EXP__ 308" +.LASF197: + .string "__FLT16_DECIMAL_DIG__ 5" +.LASF1148: + .string "MATCH_AMOAND_W 0x6000202f" +.LASF736: + .string "_N_LISTS 30" +.LASF476: + .string "INTMAX_C(x) __INTMAX_C(x)" +.LASF1557: + .string "CSR_MHPMCOUNTER23 0xb17" +.LASF1465: + .string "MASK_CUSTOM3_RS1_RS2 0x707f" +.LASF1212: + .string "MATCH_CSRRSI 0x6073" +.LASF263: + .string "__FLT32X_HAS_DENORM__ 1" +.LASF599: + .string "__pure __attribute__((__pure__))" +.LASF1544: + .string "CSR_MHPMCOUNTER10 0xb0a" +.LASF283: + .string "__GNUC_STDC_INLINE__ 1" +.LASF1263: + .string "MASK_FLT_S 0xfe00707f" +.LASF261: + .string "__FLT32X_EPSILON__ 2.22044604925031308084726333618164062e-16F32x" +.LASF658: + .string "__guarded_by(x) __lock_annotate(guarded_by(x))" +.LASF1315: + .string "MASK_FMV_D_X 0xfff0707f" +.LASF446: + .string "UINT_FAST8_MAX (__UINT_FAST8_MAX__)" +.LASF538: + .string "__PMT(args) args" +.LASF429: + .string "INT_LEAST16_MIN (-__INT_LEAST16_MAX__ - 1)" +.LASF1466: + .string "MATCH_CUSTOM3_RD 0x407b" +.LASF667: + .string "_PTRDIFF_T_ " +.LASF84: + .string "__WCHAR_WIDTH__ 32" +.LASF1301: + .string "MASK_FCVT_S_L 0xfff0007f" +.LASF347: + .string "__XSI_VISIBLE 0" +.LASF621: + .string "__strftimelike(fmtarg,firstvararg) __attribute__((__format__ (__strftime__, fmtarg, firstvararg)))" +.LASF666: + .string "__PTRDIFF_T " +.LASF786: + .string "__caddr_t_defined " +.LASF1401: + .string "MASK_C_J 0xe003" +.LASF1605: + .string "CSR_HPMCOUNTER4H 0xc84" +.LASF833: + .string "FOPEN_MAX 20" +.LASF1025: + .string "MASK_BGEU 0x707f" +.LASF388: + .string "__LEAST8 \"hh\"" +.LASF1614: + .string "CSR_HPMCOUNTER13H 0xc8d" +.LASF218: + .string "__FLT32_HAS_DENORM__ 1" +.LASF620: + .string "__strfmonlike(fmtarg,firstvararg) __attribute__((__format__ (__strfmon__, fmtarg, firstvararg)))" +.LASF925: + .string "MCONTROL_STORE (1<<1)" +.LASF1373: + .string "MASK_C_FSW 0xe003" +.LASF1413: + .string "MASK_C_FLWSP 0xe003" +.LASF600: + .string "__always_inline __inline__ __attribute__((__always_inline__))" +.LASF183: + .string "__LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L" +.LASF1033: + .string "MASK_AUIPC 0x7f" +.LASF1536: + .string "CSR_MINSTRET 0xb02" +.LASF529: + .string "_SIZE_T_DECLARED " +.LASF1266: + .string "MATCH_FLE_D 0xa2000053" +.LASF972: + .string "IRQ_M_SOFT 3" +.LASF1693: + .string "TIMER_MSIP_size 0x4" +.LASF147: + .string "__FLT_MIN_EXP__ (-125)" +.LASF39: + .string "__CHAR32_TYPE__ long unsigned int" +.LASF1365: + .string "MASK_C_LW 0xe003" +.LASF708: + .string "__Long long" +.LASF292: + .string "__GCC_ATOMIC_SHORT_LOCK_FREE 1" +.LASF1566: + .string "CSR_MUCOUNTEREN 0x320" +.LASF1293: + .string "MASK_FMV_X_D 0xfff0707f" +.LASF1554: + .string "CSR_MHPMCOUNTER20 0xb14" +.LASF1742: + .string "uintptr_t" +.LASF31: + .string "__SIZEOF_POINTER__ 4" +.LASF539: + .string "__DOTS , ..." +.LASF468: + .string "INT8_C(x) __INT8_C(x)" +.LASF909: + .string "DCSR_CAUSE_DEBUGINT 3" +.LASF1121: + .string "MASK_MULHSU 0xfe00707f" +.LASF244: + .string "__FLT128_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F128" +.LASF1444: + .string "MATCH_CUSTOM1_RD_RS1 0x602b" +.LASF1743: + .string "long double" +.LASF1713: + .string "ECLIC_INT_ATTR_OFFSET _AC(0x1002,UL)" +.LASF1295: + .string "MASK_FCLASS_D 0xfff0707f" +.LASF33: + .string "__PTRDIFF_TYPE__ int" +.LASF797: + .string "_MODE_T_DECLARED " +.LASF522: + .string "_T_SIZE " +.LASF1174: + .string "MATCH_AMOMAX_D 0xa000302f" +.LASF137: + .string "__INTPTR_WIDTH__ 32" +.LASF1289: + .string "MASK_FCVT_L_D 0xfff0007f" +.LASF648: + .string "__trylocks_shared(...) __lock_annotate(shared_trylock_function(__VA_ARGS__))" +.LASF578: + .string "__CONCAT1(x,y) x ## y" +.LASF781: + .string "__clock_t_defined " +.LASF1503: + .string "CSR_HPMCOUNTER28 0xc1c" +.LASF605: + .string "__result_use_check __attribute__((__warn_unused_result__))" +.LASF161: + .string "__DBL_DIG__ 15" +.LASF73: + .string "__WCHAR_MAX__ 0x7fffffff" +.LASF337: + .string "__GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))" +.LASF1442: + .string "MATCH_CUSTOM1_RD 0x402b" +.LASF277: + .string "__FLT64X_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F64x" +.LASF1125: + .string "MASK_DIV 0xfe00707f" +.LASF234: + .string "__FLT64_HAS_INFINITY__ 1" +.LASF72: + .string "__LONG_LONG_MAX__ 0x7fffffffffffffffLL" +.LASF1371: + .string "MASK_C_SW 0xe003" +.LASF420: + .string "INT8_MIN (-__INT8_MAX__ - 1)" +.LASF270: + .string "__FLT64X_MAX_EXP__ 16384" +.LASF676: + .string "_T_WCHAR_ " +.LASF475: + .string "UINT64_C(x) __UINT64_C(x)" +.LASF1702: + .string "_RISCV_CONST_H " +.LASF489: + .string "_HAVE_CC_INHIBIT_LOOP_TO_LIBCALL 1" +.LASF1204: + .string "MATCH_CSRRW 0x1073" +.LASF1080: + .string "MATCH_ADDW 0x3b" +.LASF1237: + .string "MASK_FADD_D 0xfe00007f" +.LASF630: + .string "__RCSID_SOURCE(s) struct __hack" +.LASF940: + .string "MIP_SSIP (1 << IRQ_S_SOFT)" +.LASF1384: + .string "MATCH_C_SRAI 0x8401" +.LASF1354: + .string "MATCH_C_ADDIW 0x2001" +.LASF295: + .string "__GCC_ATOMIC_LLONG_LOCK_FREE 1" +.LASF516: + .string "_SYS_CDEFS_H_ " +.LASF1252: + .string "MATCH_FMAX_D 0x2a001053" +.LASF1192: + .string "MATCH_SRET 0x10200073" +.LASF965: + .string "VM_MBB 1" +.LASF1336: + .string "MATCH_FNMSUB_D 0x200004b" +.LASF152: + .string "__FLT_MAX__ 3.40282346638528859811704183484516925e+38F" +.LASF1441: + .string "MASK_CUSTOM1_RS1_RS2 0x707f" +.LASF83: + .string "__LONG_LONG_WIDTH__ 64" +.LASF1141: + .string "MASK_REMUW 0xfe00707f" +.LASF1717: + .string "ECLIC_INT_ATTR_TRIG_POS 0x00" +.LASF365: + .string "char" +.LASF1331: + .string "MASK_FNMADD_S 0x600007f" +.LASF1082: + .string "MATCH_SUBW 0x4000003b" +.LASF1523: + .string "CSR_MSCRATCH 0x340" +.LASF480: + .string "__NEWLIB_H__ 1" +.LASF1564: + .string "CSR_MHPMCOUNTER30 0xb1e" +.LASF452: + .string "UINT_FAST32_MAX (__UINT_FAST32_MAX__)" +.LASF1634: + .string "CSR_MINSTRETH 0xb82" +.LASF195: + .string "__FLT16_MAX_EXP__ 16" +.LASF898: + .string "DCSR_EBREAKU (1<<12)" +.LASF407: + .string "_INTPTR_T_DECLARED " +.LASF54: + .string "__UINT_LEAST16_TYPE__ short unsigned int" +.LASF1549: + .string "CSR_MHPMCOUNTER15 0xb0f" +.LASF821: + .string "__SOPT 0x0400" +.LASF921: + .string "MCONTROL_H (1<<5)" +.LASF190: + .string "__LDBL_HAS_QUIET_NAN__ 1" +.LASF1277: + .string "MASK_FCVT_L_S 0xfff0007f" +.LASF1376: + .string "MATCH_C_JAL 0x2001" +.LASF694: + .string "__GNUC_VA_LIST " +.LASF232: + .string "__FLT64_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F64" +.LASF519: + .string "_SIZE_T " +.LASF1729: + .string "ECLIC_GROUP_LEVEL2_PRIO2 2" +.LASF397: + .string "_UINT16_T_DECLARED " +.LASF418: + .string "INTPTR_MAX (__INTPTR_MAX__)" +.LASF1067: + .string "MASK_SRA 0xfe00707f" +.LASF1337: + .string "MASK_FNMSUB_D 0x600007f" +.LASF266: + .string "__FLT64X_MANT_DIG__ 113" +.LASF1429: + .string "MASK_CUSTOM0_RS1_RS2 0x707f" +.LASF897: + .string "DCSR_EBREAKS (1<<13)" +.LASF1726: + .string "PMOVI_HANDLER eclic_pmovi_handler" +.LASF1579: + .string "CSR_MHPMEVENT14 0x32e" +.LASF782: + .string "_CLOCK_T_DECLARED " +.LASF202: + .string "__FLT16_DENORM_MIN__ 5.96046447753906250000000000000000000e-8F16" +.LASF957: + .string "MIE_MEIE MIP_MEIP" +.LASF862: + .string "STDERR_FILENO 2" +.LASF191: + .string "__FLT16_MANT_DIG__ 11" +.LASF431: + .string "UINT_LEAST16_MAX (__UINT_LEAST16_MAX__)" +.LASF527: + .string "_SIZE_T_DEFINED " +.LASF421: + .string "INT8_MAX (__INT8_MAX__)" +.LASF243: + .string "__FLT128_MAX__ 1.18973149535723176508575932662800702e+4932F128" +.LASF1741: + .string "__uintptr_t" +.LASF487: + .string "HAVE_INITFINI_ARRAY 1" +.LASF974: + .string "IRQ_H_TIMER 6" +.LASF937: + .string "MCONTROL_MATCH_LT 3" +.LASF352: + .string "___int8_t_defined 1" +.LASF95: + .string "__SIG_ATOMIC_WIDTH__ 32" +.LASF1482: + .string "CSR_HPMCOUNTER7 0xc07" +.LASF1705: + .string "_BITUL(x) (_AC(1,UL) << (x))" +.LASF1656: + .string "CSR_MHPMCOUNTER24H 0xb98" +.LASF1009: + .string "clear_csr(reg,bit) ({ unsigned long __tmp; if (__builtin_constant_p(bit) && (unsigned long)(bit) < 32) asm volatile (\"csrrc %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"i\"(bit)); else asm volatile (\"csrrc %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"r\"(bit)); __tmp; })" +.LASF1567: + .string "CSR_MSCOUNTEREN 0x321" +.LASF303: + .string "__riscv 1" +.LASF1462: + .string "MATCH_CUSTOM3_RS1 0x207b" +.LASF1127: + .string "MASK_DIVU 0xfe00707f" +.LASF425: + .string "UINT_LEAST8_MAX (__UINT_LEAST8_MAX__)" +.LASF340: + .string "__BSD_VISIBLE 0" +.LASF515: + .string "__need_NULL " +.LASF901: + .string "DCSR_CAUSE (7<<6)" +.LASF423: + .string "INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)" +.LASF1214: + .string "MATCH_CSRRCI 0x7073" +.LASF895: + .string "DCSR_EBREAKM (1<<15)" +.LASF120: + .string "__UINT_LEAST32_MAX__ 0xffffffffUL" +.LASF1559: + .string "CSR_MHPMCOUNTER25 0xb19" +.LASF536: + .string "NULL ((void *)0)" +.LASF802: + .string "_TIMER_T_DECLARED " +.LASF892: + .string "DCSR_XDEBUGVER (3U<<30)" +.LASF1288: + .string "MATCH_FCVT_L_D 0xc2200053" +.LASF1612: + .string "CSR_HPMCOUNTER11H 0xc8b" +.LASF27: + .string "__ORDER_BIG_ENDIAN__ 4321" +.LASF975: + .string "IRQ_M_TIMER 7" +.LASF1231: + .string "MASK_FMIN_S 0xfe00707f" +.LASF883: + .string "SSTATUS_SIE 0x00000002" +.LASF443: + .string "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)" +.LASF278: + .string "__FLT64X_HAS_DENORM__ 1" +.LASF330: + .string "_MACHINE__DEFAULT_TYPES_H " +.LASF63: + .string "__UINT_FAST32_TYPE__ unsigned int" +.LASF94: + .string "__SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)" +.LASF793: + .string "_GID_T_DECLARED " +.LASF887: + .string "SSTATUS_FS 0x00006000" +.LASF1234: + .string "MATCH_FSQRT_S 0x58000053" +.LASF1526: + .string "CSR_MBADADDR 0x343" +.LASF434: + .string "UINT32_MAX (__UINT32_MAX__)" +.LASF962: + .string "PRV_H 2" +.LASF596: + .string "__generic(expr,t,yes,no) _Generic(expr, t: yes, default: no)" +.LASF1309: + .string "MASK_FCVT_D_WU 0xfff0007f" +.LASF1048: + .string "MATCH_ORI 0x6013" +.LASF1424: + .string "MATCH_CUSTOM0 0xb" +.LASF1370: + .string "MATCH_C_SW 0xc000" +.LASF258: + .string "__FLT32X_MAX__ 1.79769313486231570814527423731704357e+308F32x" +.LASF587: + .string "__pure2 __attribute__((__const__))" +.LASF1368: + .string "MATCH_C_FSD 0xa000" +.LASF689: + .string "__need_wchar_t" +.LASF151: + .string "__FLT_DECIMAL_DIG__ 9" +.LASF1471: + .string "MASK_CUSTOM3_RD_RS1_RS2 0x707f" +.LASF43: + .string "__INT32_TYPE__ long int" +.LASF665: + .string "_T_PTRDIFF " +.LASF1606: + .string "CSR_HPMCOUNTER5H 0xc85" +.LASF971: + .string "IRQ_H_SOFT 2" +.LASF973: + .string "IRQ_S_TIMER 5" +.LASF276: + .string "__FLT64X_EPSILON__ 1.92592994438723585305597794258492732e-34F64x" +.LASF657: + .string "__nosanitizethread " +.LASF1596: + .string "CSR_MHPMEVENT31 0x33f" +.LASF240: + .string "__FLT128_MAX_EXP__ 16384" +.LASF1417: + .string "MASK_C_ADD 0xf003" +.LASF1588: + .string "CSR_MHPMEVENT23 0x337" +.LASF66: + .string "__UINTPTR_TYPE__ unsigned int" +.LASF247: + .string "__FLT128_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F128" +.LASF305: + .string "__riscv_atomic 1" +.LASF15: + .string "__FINITE_MATH_ONLY__ 0" +.LASF1697: + .string "TIMER_MTIME_size 0x8" +.LASF1581: + .string "CSR_MHPMEVENT16 0x330" +.LASF820: + .string "__SSTR 0x0200" +.LASF1287: + .string "MASK_FCVT_WU_D 0xfff0007f" +.LASF1043: + .string "MASK_XORI 0x707f" +.LASF1727: + .string "ECLIC_GROUP_LEVEL0_PRIO4 0" +.LASF1668: + .string "CSR_MTVT2 0x7EC" +.LASF1: + .string "__STDC_VERSION__ 201710L" +.LASF1057: + .string "MASK_SLL 0xfe00707f" +.LASF977: + .string "IRQ_H_EXT 10" +.LASF1406: + .string "MATCH_C_SLLI 0x2" +.LASF728: + .string "_RAND48_SEED_2 (0x1234)" +.LASF462: + .string "PTRDIFF_MAX (__PTRDIFF_MAX__)" +.LASF0: + .string "__STDC__ 1" +.LASF458: + .string "UINTMAX_MAX (__UINTMAX_MAX__)" +.LASF1613: + .string "CSR_HPMCOUNTER12H 0xc8c" +.LASF435: + .string "INT_LEAST32_MIN (-__INT_LEAST32_MAX__ - 1)" +.LASF785: + .string "__daddr_t_defined " +.LASF1680: + .string "CAUSE_ILLEGAL_INSTRUCTION 0x2" +.LASF624: + .string "__weak_reference(sym,alias) __asm__(\".weak \" #alias); __asm__(\".equ \" #alias \", \" #sym)" +.LASF1700: + .string "TIMER_FREQ ((uint32_t)SystemCoreClock/4)" +.LASF1344: + .string "MATCH_C_JR 0x8002" +.LASF1265: + .string "MASK_FEQ_S 0xfe00707f" +.LASF381: + .string "__INT16 \"h\"" +.LASF362: + .string "__STDINT_EXP(x) __ ##x ##__" +.LASF1160: + .string "MATCH_LR_W 0x1000202f" +.LASF1053: + .string "MASK_ADD 0xfe00707f" +.LASF1007: + .string "swap_csr(reg,val) ({ unsigned long __tmp; if (__builtin_constant_p(val) && (unsigned long)(val) < 32) asm volatile (\"csrrw %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"i\"(val)); else asm volatile (\"csrrw %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"r\"(val)); __tmp; })" +.LASF1530: + .string "CSR_TDATA2 0x7a2" +.LASF1124: + .string "MATCH_DIV 0x2004033" +.LASF392: + .string "_SYS__STDINT_H " +.LASF581: + .string "__XSTRING(x) __STRING(x)" +.LASF631: + .string "__SCCSID(s) struct __hack" +.LASF287: + .string "__GCC_ATOMIC_BOOL_LOCK_FREE 1" +.LASF1176: + .string "MATCH_AMOMINU_D 0xc000302f" +.LASF1593: + .string "CSR_MHPMEVENT28 0x33c" +.LASF128: + .string "__INT_FAST32_MAX__ 0x7fffffff" +.LASF150: + .string "__FLT_MAX_10_EXP__ 38" +.LASF996: + .string "PTE_PPN_SHIFT 10" +.LASF1152: + .string "MATCH_AMOMAX_W 0xa000202f" +.LASF396: + .string "_INT16_T_DECLARED " +.LASF773: + .string "__ATTRIBUTE_IMPURE_PTR__ " +.LASF406: + .string "_UINTMAX_T_DECLARED " +.LASF1014: + .string "MATCH_BEQ 0x63" +.LASF1392: + .string "MATCH_C_OR 0x8c41" +.LASF1548: + .string "CSR_MHPMCOUNTER14 0xb0e" +.LASF377: + .string "long +4" +.LASF329: + .string "_STDINT_H " +.LASF745: + .string "_REENT_CHECK_MISC(ptr) " +.LASF1522: + .string "CSR_MCOUNTEREN 0x306" +.LASF482: + .string "_WANT_IO_LONG_LONG 1" +.LASF459: + .string "SIZE_MAX (__SIZE_MAX__)" +.LASF1624: + .string "CSR_HPMCOUNTER23H 0xc97" +.LASF204: + .string "__FLT16_HAS_INFINITY__ 1" +.LASF1223: + .string "MASK_FDIV_S 0xfe00007f" +.LASF304: + .string "__riscv_compressed 1" +.LASF1316: + .string "MATCH_FLW 0x2007" +.LASF1386: + .string "MATCH_C_ANDI 0x8801" +.LASF272: + .string "__FLT64X_DECIMAL_DIG__ 36" +.LASF618: + .string "__scanflike(fmtarg,firstvararg) __attribute__((__format__ (__scanf__, fmtarg, firstvararg)))" +.LASF473: + .string "UINT32_C(x) __UINT32_C(x)" +.LASF1169: + .string "MASK_AMOOR_D 0xf800707f" +.LASF970: + .string "IRQ_S_SOFT 1" +.LASF1591: + .string "CSR_MHPMEVENT26 0x33a" +.LASF816: + .string "__SEOF 0x0020" +.LASF21: + .string "__SIZEOF_DOUBLE__ 8" +.LASF134: + .string "__UINT_FAST32_MAX__ 0xffffffffU" +.LASF1021: + .string "MASK_BGE 0x707f" +.LASF215: + .string "__FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32" +.LASF1326: + .string "MATCH_FMSUB_S 0x47" +.LASF680: + .string "_BSD_WCHAR_T_ " +.LASF341: + .string "__GNU_VISIBLE 0" +.LASF814: + .string "__SWR 0x0008" +.LASF732: + .string "_RAND48_ADD (0x000b)" +.LASF660: + .string "_STDDEF_H " +.LASF796: + .string "_SSIZE_T_DECLARED " +.LASF1728: + .string "ECLIC_GROUP_LEVEL1_PRIO3 1" +.LASF726: + .string "_RAND48_SEED_0 (0x330e)" +.LASF1209: + .string "MASK_CSRRC 0x707f" +.LASF187: + .string "__LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L" +.LASF322: + .string "NO_INIT 1" +.LASF230: + .string "__FLT64_MIN__ 2.22507385850720138309023271733240406e-308F64" +.LASF1687: + .string "CAUSE_SUPERVISOR_ECALL 0x9" +.LASF88: + .string "__INTMAX_MAX__ 0x7fffffffffffffffLL" +.LASF653: + .string "__requires_shared(...) __lock_annotate(shared_locks_required(__VA_ARGS__))" +.LASF229: + .string "__FLT64_NORM_MAX__ 1.79769313486231570814527423731704357e+308F64" +.LASF1104: + .string "MATCH_SB 0x23" +.LASF1609: + .string "CSR_HPMCOUNTER8H 0xc88" +.LASF1597: + .string "CSR_MVENDORID 0xf11" +.LASF82: + .string "__LONG_WIDTH__ 32" +.LASF755: + .string "_REENT_MP_FREELIST(ptr) ((ptr)->_freelist)" +.LASF1142: + .string "MATCH_AMOADD_W 0x202f" +.LASF873: + .string "MSTATUS_MPP 0x00001800" +.LASF583: + .string "__signed signed" +.LASF1464: + .string "MATCH_CUSTOM3_RS1_RS2 0x307b" +.LASF348: + .string "__SSP_FORTIFY_LEVEL 0" +.LASF1528: + .string "CSR_TSELECT 0x7a0" +.LASF331: + .string "_SYS_FEATURES_H " +.LASF1636: + .string "CSR_MHPMCOUNTER4H 0xb84" +.LASF1395: + .string "MASK_C_AND 0xfc63" +.LASF125: + .string "__INT_FAST8_WIDTH__ 32" +.LASF1499: + .string "CSR_HPMCOUNTER24 0xc18" +.LASF1730: + .string "ECLIC_GROUP_LEVEL3_PRIO1 3" +.LASF608: + .string "__restrict restrict" +.LASF1145: + .string "MASK_AMOXOR_W 0xf800707f" +.LASF963: + .string "PRV_M 3" +.LASF1239: + .string "MASK_FSUB_D 0xfe00007f" +.LASF1422: + .string "MATCH_C_FSWSP 0xe002" +.LASF1117: + .string "MASK_MUL 0xfe00707f" +.LASF192: + .string "__FLT16_DIG__ 3" +.LASF701: + .string "__size_t" +.LASF455: + .string "UINT_FAST64_MAX (__UINT_FAST64_MAX__)" +.LASF306: + .string "__riscv_mul 1" +.LASF1623: + .string "CSR_HPMCOUNTER22H 0xc96" +.LASF603: + .string "__nonnull_all __attribute__((__nonnull__))" +.LASF510: + .string "_ELIDABLE_INLINE static __inline__" +.LASF593: + .string "__alloc_size(x) __attribute__((__alloc_size__(x)))" +.LASF595: + .string "__alloc_align(x) __attribute__((__alloc_align__(x)))" +.LASF677: + .string "_T_WCHAR " +.LASF490: + .string "_FVWRITE_IN_STREAMIO 1" +.LASF410: + .string "__int_least16_t_defined 1" +.LASF1650: + .string "CSR_MHPMCOUNTER18H 0xb92" +.LASF41: + .string "__INT8_TYPE__ signed char" +.LASF560: + .string "__GNUCLIKE_CTOR_SECTION_HANDLING 1" +.LASF1188: + .string "MATCH_EBREAK 0x100073" +.LASF1616: + .string "CSR_HPMCOUNTER15H 0xc8f" +.LASF286: + .string "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1" +.LASF1291: + .string "MASK_FCVT_LU_D 0xfff0007f" +.LASF613: + .string "__hidden __attribute__((__visibility__(\"hidden\")))" +.LASF1063: + .string "MASK_XOR 0xfe00707f" +.LASF1321: + .string "MASK_FSW 0x707f" +.LASF500: + .string "__RAND_MAX" +.LASF852: + .string "__sfileno(p) ((p)->_file)" +.LASF888: + .string "SSTATUS_XS 0x00018000" +.LASF338: + .string "__GNUC_PREREQ__(ma,mi) __GNUC_PREREQ(ma, mi)" +.LASF829: + .string "_IOLBF 1" +.LASF321: + .string "USE_M_TIME 1" +.LASF805: + .string "_SYS__PTHREADTYPES_H_ " +.LASF223: + .string "__FLT64_MIN_EXP__ (-1021)" +.LASF59: + .string "__INT_FAST32_TYPE__ int" +.LASF417: + .string "INTPTR_MIN (-__INTPTR_MAX__ - 1)" +.LASF712: + .string "__lock_init(lock) ((void) 0)" +.LASF920: + .string "MCONTROL_M (1<<6)" +.LASF637: + .string "_Nullable " +.LASF1126: + .string "MATCH_DIVU 0x2005033" +.LASF1637: + .string "CSR_MHPMCOUNTER5H 0xb85" +.LASF507: + .string "_NOTHROW " +.LASF572: + .string "__CC_SUPPORTS___INLINE__ 1" +.LASF844: + .string "_stdout_r(x) ((x)->_stdout)" +.LASF1450: + .string "MATCH_CUSTOM2_RS1 0x205b" +.LASF416: + .string "__int_fast64_t_defined 1" +.LASF1320: + .string "MATCH_FSW 0x2027" +.LASF1304: + .string "MATCH_FMV_S_X 0xf0000053" +.LASF939: + .string "MCONTROL_MATCH_MASK_HIGH 5" +.LASF724: + .string "_REENT_INIT_ATEXIT _NULL, _ATEXIT_INIT," +.LASF735: + .string "_REENT_SIGNAL_SIZE 24" +.LASF1167: + .string "MASK_AMOXOR_D 0xf800707f" +.LASF253: + .string "__FLT32X_MIN_EXP__ (-1021)" +.LASF327: + .string "RT_USING_LIBC 1" +.LASF863: + .string "RISCV_CSR_ENCODING_H " +.LASF668: + .string "_BSD_PTRDIFF_T_ " +.LASF678: + .string "__WCHAR_T " +.LASF1100: + .string "MATCH_LHU 0x5003" +.LASF573: + .string "__CC_SUPPORTS___FUNC__ 1" +.LASF717: + .string "__lock_acquire_recursive(lock) ((void) 0)" +.LASF1233: + .string "MASK_FMAX_S 0xfe00707f" +.LASF1110: + .string "MATCH_SD 0x3023" +.LASF1722: + .string "ECLIC_CFG_NLBITS_LSB (1u)" +.LASF1545: + .string "CSR_MHPMCOUNTER11 0xb0b" +.LASF1518: + .string "CSR_MEDELEG 0x302" +.LASF1166: + .string "MATCH_AMOXOR_D 0x2000302f" +.LASF108: + .string "__INT16_C(c) c" +.LASF1599: + .string "CSR_MIMPID 0xf13" +.LASF1196: + .string "MATCH_MRET 0x30200073" +.LASF912: + .string "MCONTROL_TYPE(xlen) (0xfULL<<((xlen)-4))" +.LASF460: + .string "SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)" +.LASF1408: + .string "MATCH_C_FLDSP 0x2002" +.LASF790: + .string "_OFF_T_DECLARED " +.LASF1494: + .string "CSR_HPMCOUNTER19 0xc13" +.LASF1657: + .string "CSR_MHPMCOUNTER25H 0xb99" +.LASF546: + .string "__attribute_format_strfmon__(a,b) " +.LASF249: + .string "__FLT128_HAS_INFINITY__ 1" +.LASF1404: + .string "MATCH_C_BNEZ 0xe001" +.LASF1739: + .string "long long unsigned int" +.LASF19: + .string "__SIZEOF_SHORT__ 2" +.LASF345: + .string "__POSIX_VISIBLE 199009" +.LASF351: + .string "__have_long32 1" +.LASF1180: + .string "MATCH_AMOSWAP_D 0x800302f" +.LASF55: + .string "__UINT_LEAST32_TYPE__ long unsigned int" +.LASF100: + .string "__UINT8_MAX__ 0xff" +.LASF818: + .string "__SMBF 0x0080" +.LASF930: + .string "MCONTROL_ACTION_DEBUG_MODE 1" +.LASF259: + .string "__FLT32X_NORM_MAX__ 1.79769313486231570814527423731704357e+308F32x" +.LASF1251: + .string "MASK_FMIN_D 0xfe00707f" +.LASF1477: + .string "CSR_INSTRET 0xc02" +.LASF1724: + .string "MTIME_HANDLER eclic_mtip_handler" +.LASF1627: + .string "CSR_HPMCOUNTER26H 0xc9a" +.LASF766: + .string "_REENT_WCRTOMB_STATE(ptr) ((ptr)->_new._reent._wcrtomb_state)" +.LASF553: + .string "__BEGIN_DECLS " +.LASF1414: + .string "MATCH_C_MV 0x8002" +.LASF1246: + .string "MATCH_FSGNJN_D 0x22001053" +.LASF301: + .string "__SIZEOF_WINT_T__ 4" +.LASF725: + .string "_REENT_SMALL_CHECK_INIT(ptr) " +.LASF1093: + .string "MASK_LH 0x707f" +.LASF697: + .string "__need_wint_t " +.LASF1436: + .string "MATCH_CUSTOM1 0x2b" +.LASF227: + .string "__FLT64_DECIMAL_DIG__ 17" +.LASF138: + .string "__UINTPTR_MAX__ 0xffffffffU" +.LASF1648: + .string "CSR_MHPMCOUNTER16H 0xb90" +.LASF886: + .string "SSTATUS_SPP 0x00000100" +.LASF1006: + .string "write_csr(reg,val) ({ if (__builtin_constant_p(val) && (unsigned long)(val) < 32) asm volatile (\"csrw \" #reg \", %0\" :: \"i\"(val)); else asm volatile (\"csrw \" #reg \", %0\" :: \"r\"(val)); })" +.LASF1618: + .string "CSR_HPMCOUNTER17H 0xc91" +.LASF1411: + .string "MASK_C_LWSP 0xe003" +.LASF1472: + .string "CSR_FFLAGS 0x1" +.LASF216: + .string "__FLT32_EPSILON__ 1.19209289550781250000000000000000000e-7F32" +.LASF14: + .string "__ATOMIC_CONSUME 1" +.LASF588: + .string "__unused __attribute__((__unused__))" +.LASF50: + .string "__INT_LEAST16_TYPE__ short int" +.LASF56: + .string "__UINT_LEAST64_TYPE__ long long unsigned int" +.LASF645: + .string "__locks_exclusive(...) __lock_annotate(exclusive_lock_function(__VA_ARGS__))" +.LASF1412: + .string "MATCH_C_FLWSP 0x6002" +.LASF1172: + .string "MATCH_AMOMIN_D 0x8000302f" +.LASF1639: + .string "CSR_MHPMCOUNTER7H 0xb87" +.LASF1339: + .string "MASK_FNMADD_D 0x600007f" +.LASF789: + .string "_INO_T_DECLARED " +.LASF1632: + .string "CSR_HPMCOUNTER31H 0xc9f" +.LASF1543: + .string "CSR_MHPMCOUNTER9 0xb09" +.LASF1453: + .string "MASK_CUSTOM2_RS1_RS2 0x707f" +.LASF444: + .string "INT_FAST8_MIN (-__INT_FAST8_MAX__ - 1)" +.LASF291: + .string "__GCC_ATOMIC_WCHAR_T_LOCK_FREE 2" +.LASF801: + .string "__timer_t_defined " +.LASF998: + .string "MSTATUS_SD MSTATUS32_SD" +.LASF302: + .string "__SIZEOF_PTRDIFF_T__ 4" +.LASF1703: + .string "_AC(X,Y) (X ##Y)" +.LASF1664: + .string "CSR_MTVT 0x307" +.LASF1658: + .string "CSR_MHPMCOUNTER26H 0xb9a" +.LASF932: + .string "MCONTROL_ACTION_TRACE_STOP 3" +.LASF354: + .string "___int32_t_defined 1" +.LASF1628: + .string "CSR_HPMCOUNTER27H 0xc9b" +.LASF509: + .string "_ATTRIBUTE(attrs) __attribute__ (attrs)" +.LASF1504: + .string "CSR_HPMCOUNTER29 0xc1d" +.LASF400: + .string "_UINT32_T_DECLARED " +.LASF809: + .string "_flockfile(fp) (((fp)->_flags & __SSTR) ? 0 : __lock_acquire_recursive((fp)->_lock))" +.LASF265: + .string "__FLT32X_HAS_QUIET_NAN__ 1" +.LASF649: + .string "__unlocks(...) __lock_annotate(unlock_function(__VA_ARGS__))" +.LASF1299: + .string "MASK_FCVT_S_WU 0xfff0007f" +.LASF114: + .string "__INT64_C(c) c ## LL" +.LASF1502: + .string "CSR_HPMCOUNTER27 0xc1b" +.LASF902: + .string "DCSR_DEBUGINT (1<<5)" +.LASF1132: + .string "MATCH_MULW 0x200003b" +.LASF566: + .string "__compiler_membar() __asm __volatile(\" \" : : : \"memory\")" +.LASF162: + .string "__DBL_MIN_EXP__ (-1021)" +.LASF268: + .string "__FLT64X_MIN_EXP__ (-16381)" +.LASF882: + .string "SSTATUS_UIE 0x00000001" +.LASF639: + .string "__NULLABILITY_PRAGMA_PUSH " +.LASF1619: + .string "CSR_HPMCOUNTER18H 0xc92" +.LASF763: + .string "_REENT_MBRLEN_STATE(ptr) ((ptr)->_new._reent._mbrlen_state)" +.LASF441: + .string "INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1)" +.LASF1701: + .string "N200_ECLIC_H " +.LASF1513: + .string "CSR_SBADADDR 0x143" +.LASF461: + .string "SIG_ATOMIC_MAX (__STDINT_EXP(INT_MAX))" +.LASF116: + .string "__UINT_LEAST8_MAX__ 0xff" +.LASF1216: + .string "MATCH_FADD_S 0x53" +.LASF576: + .string "__CC_SUPPORTS_DYNAMIC_ARRAY_INIT 1" +.LASF1189: + .string "MASK_EBREAK 0xffffffff" +.LASF1228: + .string "MATCH_FSGNJX_S 0x20002053" +.LASF1640: + .string "CSR_MHPMCOUNTER8H 0xb88" +.LASF1577: + .string "CSR_MHPMEVENT12 0x32c" +.LASF503: + .string "__IMPORT " +.LASF44: + .string "__INT64_TYPE__ long long int" +.LASF981: + .string "DEFAULT_RSTVEC 0x00001000" +.LASF1568: + .string "CSR_MHPMEVENT3 0x323" +.LASF615: + .string "__rangeof(type,start,end) (__offsetof(type, end) - __offsetof(type, start))" +.LASF598: + .string "__malloc_like __attribute__((__malloc__))" +.LASF669: + .string "___int_ptrdiff_t_h " +.LASF1659: + .string "CSR_MHPMCOUNTER27H 0xb9b" +.LASF250: + .string "__FLT128_HAS_QUIET_NAN__ 1" +.LASF812: + .string "__SNBF 0x0002" +.LASF1159: + .string "MASK_AMOSWAP_W 0xf800707f" +.LASF856: + .string "getchar_unlocked() _getchar_unlocked()" +.LASF512: + .string "_NOINLINE_STATIC _NOINLINE static" +.LASF1565: + .string "CSR_MHPMCOUNTER31 0xb1f" +.LASF508: + .string "_LONG_DOUBLE long double" +.LASF589: + .string "__used __attribute__((__used__))" +.LASF1455: + .string "MASK_CUSTOM2_RD 0x707f" +.LASF497: + .string "__OBSOLETE_MATH __OBSOLETE_MATH_DEFAULT" +.LASF723: + .string "_ATEXIT_INIT {_NULL, 0, {_NULL}, {{_NULL}, {_NULL}, 0, 0}}" +.LASF913: + .string "MCONTROL_DMODE(xlen) (1ULL<<((xlen)-5))" +.LASF1267: + .string "MASK_FLE_D 0xfe00707f" +.LASF220: + .string "__FLT32_HAS_QUIET_NAN__ 1" +.LASF12: + .string "__ATOMIC_RELEASE 3" +.LASF1550: + .string "CSR_MHPMCOUNTER16 0xb10" +.LASF184: + .string "__LDBL_NORM_MAX__ 1.18973149535723176508575932662800702e+4932L" +.LASF1738: + .string "long long int" +.LASF141: + .string "__FLT_EVAL_METHOD__ 0" +.LASF632: + .string "__COPYRIGHT(s) struct __hack" +.LASF498: + .string "_READ_WRITE_RETURN_TYPE _ssize_t" +.LASF492: + .string "_WIDE_ORIENT 1" +.LASF326: + .string "RT_USING_NEWLIB 1" +.LASF369: + .string "long" +.LASF1641: + .string "CSR_MHPMCOUNTER9H 0xb89" +.LASF1385: + .string "MASK_C_SRAI 0xec03" +.LASF899: + .string "DCSR_STOPCYCLE (1<<10)" +.LASF1249: + .string "MASK_FSGNJX_D 0xfe00707f" +.LASF193: + .string "__FLT16_MIN_EXP__ (-13)" +.LASF309: + .string "__riscv_xlen 32" +.LASF1719: + .string "ECLIC_INT_CTRL_OFFSET _AC(0x1003,UL)" +.LASF342: + .string "__ISO_C_VISIBLE 2011" +.LASF391: + .string "__LEAST64 \"ll\"" +.LASF1485: + .string "CSR_HPMCOUNTER10 0xc0a" +.LASF1660: + .string "CSR_MHPMCOUNTER28H 0xb9c" +.LASF430: + .string "INT_LEAST16_MAX (__INT_LEAST16_MAX__)" +.LASF1576: + .string "CSR_MHPMEVENT11 0x32b" +.LASF1015: + .string "MASK_BEQ 0x707f" +.LASF1483: + .string "CSR_HPMCOUNTER8 0xc08" +.LASF167: + .string "__DBL_MAX__ ((double)1.79769313486231570814527423731704357e+308L)" +.LASF1133: + .string "MASK_MULW 0xfe00707f" +.LASF936: + .string "MCONTROL_MATCH_GE 2" +.LASF1181: + .string "MASK_AMOSWAP_D 0xf800707f" +.LASF769: + .string "_REENT_SIGNAL_BUF(ptr) ((ptr)->_new._reent._signal_buf)" +.LASF1651: + .string "CSR_MHPMCOUNTER19H 0xb93" +.LASF579: + .string "__CONCAT(x,y) __CONCAT1(x,y)" +.LASF228: + .string "__FLT64_MAX__ 1.79769313486231570814527423731704357e+308F64" +.LASF174: + .string "__DBL_HAS_QUIET_NAN__ 1" +.LASF1533: + .string "CSR_DPC 0x7b1" +.LASF1199: + .string "MASK_DRET 0xffffffff" +.LASF284: + .string "__NO_INLINE__ 1" +.LASF917: + .string "MCONTROL_ACTION (0x3f<<12)" +.LASF156: + .string "__FLT_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F" +.LASF186: + .string "__LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L" +.LASF1116: + .string "MATCH_MUL 0x2000033" +.LASF436: + .string "INT_LEAST32_MAX (__INT_LEAST32_MAX__)" +.LASF469: + .string "UINT8_C(x) __UINT8_C(x)" +.LASF979: + .string "IRQ_COP 12" +.LASF254: + .string "__FLT32X_MIN_10_EXP__ (-307)" +.LASF1165: + .string "MASK_AMOADD_D 0xf800707f" +.LASF143: + .string "__DEC_EVAL_METHOD__ 2" +.LASF189: + .string "__LDBL_HAS_INFINITY__ 1" +.LASF1089: + .string "MASK_SRAW 0xfe00707f" +.LASF491: + .string "_FSEEK_OPTIMIZATION 1" +.LASF1737: + .string "long unsigned int" +.LASF828: + .string "_IOFBF 0" +.LASF704: + .string "_TIME_T_ __int_least64_t" +.LASF876: + .string "MSTATUS_MPRV 0x00020000" +.LASF565: + .string "__GNUC_VA_LIST_COMPATIBILITY 1" +.LASF153: + .string "__FLT_NORM_MAX__ 3.40282346638528859811704183484516925e+38F" +.LASF451: + .string "INT_FAST32_MAX (__INT_FAST32_MAX__)" +.LASF991: + .string "PTE_U 0x010" +.LASF1232: + .string "MATCH_FMAX_S 0x28001053" +.LASF1708: + .string "ECLIC_CFG_OFFSET 0x0" +.LASF1560: + .string "CSR_MHPMCOUNTER26 0xb1a" +.LASF948: + .string "MIP_MEIP (1 << IRQ_M_EXT)" +.LASF874: + .string "MSTATUS_FS 0x00006000" +.LASF22: + .string "__SIZEOF_LONG_DOUBLE__ 16" +.LASF1022: + .string "MATCH_BLTU 0x6063" +.LASF1682: + .string "CAUSE_MISALIGNED_LOAD 0x4" +.LASF1495: + .string "CSR_HPMCOUNTER20 0xc14" +.LASF233: + .string "__FLT64_HAS_DENORM__ 1" +.LASF910: + .string "DCSR_CAUSE_STEP 4" +.LASF242: + .string "__FLT128_DECIMAL_DIG__ 36" +.LASF157: + .string "__FLT_HAS_DENORM__ 1" +.LASF556: + .string "__GNUCLIKE_MATH_BUILTIN_CONSTANTS " +.LASF1638: + .string "CSR_MHPMCOUNTER6H 0xb86" +.LASF855: + .string "clearerr(p) __sclearerr(p)" +.LASF1250: + .string "MATCH_FMIN_D 0x2a000053" +.LASF691: + .string "_GCC_MAX_ALIGN_T " +.LASF175: + .string "__LDBL_MANT_DIG__ 113" +.LASF928: + .string "MCONTROL_TYPE_MATCH 2" +.LASF1692: + .string "TIMER_MSIP 0xFFC" +.LASF1318: + .string "MATCH_FLD 0x3007" +.LASF20: + .string "__SIZEOF_FLOAT__ 4" +.LASF1689: + .string "CAUSE_MACHINE_ECALL 0xb" +.LASF1582: + .string "CSR_MHPMEVENT17 0x331" +.LASF518: + .string "__SIZE_T__ " +.LASF32: + .string "__SIZE_TYPE__ unsigned int" +.LASF952: + .string "MIE_STIE MIP_STIP" +.LASF614: + .string "__offsetof(type,field) offsetof(type, field)" +.LASF1206: + .string "MATCH_CSRRS 0x2073" +.LASF53: + .string "__UINT_LEAST8_TYPE__ unsigned char" +.LASF727: + .string "_RAND48_SEED_1 (0xabcd)" +.LASF1140: + .string "MATCH_REMUW 0x200703b" +.LASF178: + .string "__LDBL_MIN_10_EXP__ (-4931)" +.LASF607: + .string "__unreachable() __builtin_unreachable()" +.LASF1469: + .string "MASK_CUSTOM3_RD_RS1 0x707f" +.LASF1372: + .string "MATCH_C_FSW 0xe000" +.LASF894: + .string "DCSR_FULLRESET (1<<28)" +.LASF580: + .string "__STRING(x) #x" +.LASF1341: + .string "MASK_C_NOP 0xffff" +.LASF402: + .string "_INT64_T_DECLARED " +.LASF1283: + .string "MASK_FCLASS_S 0xfff0707f" +.LASF961: + .string "PRV_S 1" +.LASF361: + .string "_SYS__INTSUP_H " +.LASF38: + .string "__CHAR16_TYPE__ short unsigned int" +.LASF1686: + .string "CAUSE_USER_ECALL 0x8" +.LASF761: + .string "_REENT_MBTOWC_STATE(ptr) ((ptr)->_new._reent._mbtowc_state)" +.LASF1590: + .string "CSR_MHPMEVENT25 0x339" +.LASF533: + .string "__size_t " +.LASF1725: + .string "BWEI_HANDLER eclic_bwei_handler" +.LASF1077: + .string "MASK_SRLIW 0xfe00707f" +.LASF1571: + .string "CSR_MHPMEVENT6 0x326" +.LASF834: + .string "FILENAME_MAX 1024" +.LASF815: + .string "__SRW 0x0010" +.LASF1113: + .string "MASK_FENCE 0x707f" +.LASF1224: + .string "MATCH_FSGNJ_S 0x20000053" +.LASF1038: + .string "MATCH_SLTI 0x2013" +.LASF540: + .string "__THROW " +.LASF464: + .string "WCHAR_MIN (__WCHAR_MIN__)" +.LASF1531: + .string "CSR_TDATA3 0x7a3" +.LASF1047: + .string "MASK_SRAI 0xfc00707f" +.LASF1184: + .string "MATCH_SC_D 0x1800302f" +.LASF1525: + .string "CSR_MCAUSE 0x342" +.LASF1434: + .string "MATCH_CUSTOM0_RD_RS1_RS2 0x700b" +.LASF1451: + .string "MASK_CUSTOM2_RS1 0x707f" +.LASF154: + .string "__FLT_MIN__ 1.17549435082228750796873653722224568e-38F" +.LASF382: + .string "__INT32 \"l\"" +.LASF799: + .string "__clockid_t_defined " +.LASF1598: + .string "CSR_MARCHID 0xf12" +.LASF49: + .string "__INT_LEAST8_TYPE__ signed char" +.LASF179: + .string "__LDBL_MAX_EXP__ 16384" +.LASF1260: + .string "MATCH_FLE_S 0xa0000053" +.LASF840: + .string "stdin (_REENT->_stdin)" +.LASF1734: + .string "short int" +.LASF1217: + .string "MASK_FADD_S 0xfe00007f" +.LASF700: + .string "_MACHINE__TYPES_H " +.LASF6: + .string "__GNUC_MINOR__ 2" +.LASF401: + .string "__int32_t_defined 1" +.LASF2: + .string "__STDC_UTF_16__ 1" +.LASF1696: + .string "TIMER_MTIME 0x0" +.LASF1490: + .string "CSR_HPMCOUNTER15 0xc0f" +.LASF1158: + .string "MATCH_AMOSWAP_W 0x800202f" +.LASF804: + .string "_SUSECONDS_T_DECLARED " +.LASF872: + .string "MSTATUS_SPP 0x00000100" +.LASF960: + .string "PRV_U 0" +.LASF1714: + .string "ECLIC_INT_ATTR_SHV 0x01" +.LASF1428: + .string "MATCH_CUSTOM0_RS1_RS2 0x300b" +.LASF635: + .string "__DEQUALIFY(type,var) ((type)(__uintptr_t)(const volatile void *)(var))" +.LASF1106: + .string "MATCH_SH 0x1023" +.LASF1074: + .string "MATCH_SLLIW 0x101b" +.LASF1088: + .string "MATCH_SRAW 0x4000503b" +.LASF1615: + .string "CSR_HPMCOUNTER14H 0xc8e" +.LASF1512: + .string "CSR_SCAUSE 0x142" +.LASF1695: + .string "TIMER_MTIMECMP_size 0x8" +.LASF1476: + .string "CSR_TIME 0xc01" +.LASF1300: + .string "MATCH_FCVT_S_L 0xd0200053" +.LASF994: + .string "PTE_D 0x080" +.LASF1394: + .string "MATCH_C_AND 0x8c61" +.LASF1128: + .string "MATCH_REM 0x2006033" +.LASF51: + .string "__INT_LEAST32_TYPE__ long int" +.LASF214: + .string "__FLT32_NORM_MAX__ 3.40282346638528859811704183484516925e+38F32" +.LASF10: + .string "__ATOMIC_SEQ_CST 5" +.LASF1396: + .string "MATCH_C_SUBW 0x9c01" +.LASF102: + .string "__UINT32_MAX__ 0xffffffffUL" +.LASF260: + .string "__FLT32X_MIN__ 2.22507385850720138309023271733240406e-308F32x" +.LASF231: + .string "__FLT64_EPSILON__ 2.22044604925031308084726333618164062e-16F64" +.LASF466: + .string "WINT_MAX (__WINT_MAX__)" +.LASF843: + .string "_stdin_r(x) ((x)->_stdin)" +.LASF845: + .string "_stderr_r(x) ((x)->_stderr)" +.LASF711: + .string "__LOCK_INIT_RECURSIVE(class,lock) static int lock = 0;" +.LASF324: + .string "GD32VF103V_EVAL 1" +.LASF808: + .string "_NEWLIB_STDIO_H " +.LASF7: + .string "__GNUC_PATCHLEVEL__ 0" +.LASF848: + .string "__sgetc_r(__ptr,__p) __sgetc_raw_r(__ptr, __p)" +.LASF1085: + .string "MASK_SLLW 0xfe00707f" +.LASF433: + .string "INT32_MAX (__INT32_MAX__)" + .ident "GCC: (xPack GNU RISC-V Embedded GCC x86_64) 10.2.0" diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/init.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/init.c new file mode 100644 index 0000000000..4f0499395e --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/init.c @@ -0,0 +1,34 @@ +//See LICENSE for license details. +#include +#include +#include +#include +#include "riscv_encoding.h" +#include "n200_func.h" + +extern uint32_t disable_mcycle_minstret(); +void _init() +{ + SystemInit(); + + //ECLIC init + eclic_init(ECLIC_NUM_INTERRUPTS); + eclic_mode_enable(); + + //printf("After ECLIC mode enabled, the mtvec value is %x \n\n\r", read_csr(mtvec)); + + // // It must be NOTED: + // // * In the RISC-V arch, if user mode and PMP supported, then by default if PMP is not configured + // // with valid entries, then user mode cannot access any memory, and cannot execute any instructions. + // // * So if switch to user-mode and still want to continue, then you must configure PMP first + //pmp_open_all_space(); + //switch_m2u_mode(); + + /* Before enter into main, add the cycle/instret disable by default to save power, + only use them when needed to measure the cycle/instret */ + disable_mcycle_minstret(); +} + +void _fini() +{ +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/init.s b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/init.s new file mode 100644 index 0000000000..2765d57537 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/init.s @@ -0,0 +1,23058 @@ + .file "init.c" + .option nopic + .text +.Ltext0: + .cfi_sections .debug_frame + .align 1 + .globl _init + .type _init, @function +_init: +.LFB5: + .file 1 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\env_Eclipse\\init.c" + .loc 1 11 1 + .cfi_startproc + addi sp,sp,-16 + .cfi_def_cfa_offset 16 + sw ra,12(sp) + sw s0,8(sp) + .cfi_offset 1, -4 + .cfi_offset 8, -8 + addi s0,sp,16 + .cfi_def_cfa 8, 0 + .loc 1 12 2 + call SystemInit + .loc 1 15 2 + li a0,87 + call eclic_init + .loc 1 16 2 + call eclic_mode_enable + .loc 1 29 2 + call disable_mcycle_minstret + .loc 1 30 1 + nop + lw ra,12(sp) + .cfi_restore 1 + lw s0,8(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 16 + addi sp,sp,16 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE5: + .size _init, .-_init + .align 1 + .globl _fini + .type _fini, @function +_fini: +.LFB6: + .loc 1 33 1 + .cfi_startproc + addi sp,sp,-16 + .cfi_def_cfa_offset 16 + sw s0,12(sp) + .cfi_offset 8, -4 + addi s0,sp,16 + .cfi_def_cfa 8, 0 + .loc 1 34 1 + nop + lw s0,12(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 16 + addi sp,sp,16 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE6: + .size _fini, .-_fini +.Letext0: + .file 2 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral/gd32vf103.h" + .section .debug_info,"",@progbits +.Ldebug_info0: + .4byte 0x23d + .2byte 0x4 + .4byte .Ldebug_abbrev0 + .byte 0x4 + .byte 0x1 + .4byte .LASF4406 + .byte 0xc + .4byte .LASF4407 + .4byte .LASF4408 + .4byte .Ltext0 + .4byte .Letext0-.Ltext0 + .4byte .Ldebug_line0 + .4byte .Ldebug_macro0 + .byte 0x2 + .4byte .LASF4409 + .byte 0x7 + .byte 0x4 + .4byte 0x1c8 + .byte 0x2 + .byte 0x61 + .byte 0xe + .4byte 0x1c8 + .byte 0x3 + .4byte .LASF4328 + .byte 0 + .byte 0x3 + .4byte .LASF4329 + .byte 0x3 + .byte 0x3 + .4byte .LASF4330 + .byte 0x7 + .byte 0x3 + .4byte .LASF4331 + .byte 0x11 + .byte 0x3 + .4byte .LASF4332 + .byte 0x12 + .byte 0x3 + .4byte .LASF4333 + .byte 0x13 + .byte 0x3 + .4byte .LASF4334 + .byte 0x14 + .byte 0x3 + .4byte .LASF4335 + .byte 0x15 + .byte 0x3 + .4byte .LASF4336 + .byte 0x16 + .byte 0x3 + .4byte .LASF4337 + .byte 0x17 + .byte 0x3 + .4byte .LASF4338 + .byte 0x18 + .byte 0x3 + .4byte .LASF4339 + .byte 0x19 + .byte 0x3 + .4byte .LASF4340 + .byte 0x1a + .byte 0x3 + .4byte .LASF4341 + .byte 0x1b + .byte 0x3 + .4byte .LASF4342 + .byte 0x1c + .byte 0x3 + .4byte .LASF4343 + .byte 0x1d + .byte 0x3 + .4byte .LASF4344 + .byte 0x1e + .byte 0x3 + .4byte .LASF4345 + .byte 0x1f + .byte 0x3 + .4byte .LASF4346 + .byte 0x20 + .byte 0x3 + .4byte .LASF4347 + .byte 0x21 + .byte 0x3 + .4byte .LASF4348 + .byte 0x22 + .byte 0x3 + .4byte .LASF4349 + .byte 0x23 + .byte 0x3 + .4byte .LASF4350 + .byte 0x24 + .byte 0x3 + .4byte .LASF4351 + .byte 0x25 + .byte 0x3 + .4byte .LASF4352 + .byte 0x26 + .byte 0x3 + .4byte .LASF4353 + .byte 0x27 + .byte 0x3 + .4byte .LASF4354 + .byte 0x28 + .byte 0x3 + .4byte .LASF4355 + .byte 0x29 + .byte 0x3 + .4byte .LASF4356 + .byte 0x2a + .byte 0x3 + .4byte .LASF4357 + .byte 0x2b + .byte 0x3 + .4byte .LASF4358 + .byte 0x2c + .byte 0x3 + .4byte .LASF4359 + .byte 0x2d + .byte 0x3 + .4byte .LASF4360 + .byte 0x2e + .byte 0x3 + .4byte .LASF4361 + .byte 0x2f + .byte 0x3 + .4byte .LASF4362 + .byte 0x30 + .byte 0x3 + .4byte .LASF4363 + .byte 0x31 + .byte 0x3 + .4byte .LASF4364 + .byte 0x32 + .byte 0x3 + .4byte .LASF4365 + .byte 0x33 + .byte 0x3 + .4byte .LASF4366 + .byte 0x34 + .byte 0x3 + .4byte .LASF4367 + .byte 0x35 + .byte 0x3 + .4byte .LASF4368 + .byte 0x36 + .byte 0x3 + .4byte .LASF4369 + .byte 0x37 + .byte 0x3 + .4byte .LASF4370 + .byte 0x38 + .byte 0x3 + .4byte .LASF4371 + .byte 0x39 + .byte 0x3 + .4byte .LASF4372 + .byte 0x3a + .byte 0x3 + .4byte .LASF4373 + .byte 0x3b + .byte 0x3 + .4byte .LASF4374 + .byte 0x3c + .byte 0x3 + .4byte .LASF4375 + .byte 0x3d + .byte 0x3 + .4byte .LASF4376 + .byte 0x43 + .byte 0x3 + .4byte .LASF4377 + .byte 0x45 + .byte 0x3 + .4byte .LASF4378 + .byte 0x46 + .byte 0x3 + .4byte .LASF4379 + .byte 0x47 + .byte 0x3 + .4byte .LASF4380 + .byte 0x48 + .byte 0x3 + .4byte .LASF4381 + .byte 0x49 + .byte 0x3 + .4byte .LASF4382 + .byte 0x4a + .byte 0x3 + .4byte .LASF4383 + .byte 0x4b + .byte 0x3 + .4byte .LASF4384 + .byte 0x4c + .byte 0x3 + .4byte .LASF4385 + .byte 0x4d + .byte 0x3 + .4byte .LASF4386 + .byte 0x4e + .byte 0x3 + .4byte .LASF4387 + .byte 0x4f + .byte 0x3 + .4byte .LASF4388 + .byte 0x52 + .byte 0x3 + .4byte .LASF4389 + .byte 0x53 + .byte 0x3 + .4byte .LASF4390 + .byte 0x54 + .byte 0x3 + .4byte .LASF4391 + .byte 0x55 + .byte 0x3 + .4byte .LASF4392 + .byte 0x56 + .byte 0x3 + .4byte .LASF4393 + .byte 0x57 + .byte 0 + .byte 0x4 + .byte 0x4 + .byte 0x7 + .4byte .LASF4394 + .byte 0x4 + .byte 0x1 + .byte 0x6 + .4byte .LASF4395 + .byte 0x4 + .byte 0x1 + .byte 0x8 + .4byte .LASF4396 + .byte 0x4 + .byte 0x2 + .byte 0x5 + .4byte .LASF4397 + .byte 0x4 + .byte 0x2 + .byte 0x7 + .4byte .LASF4398 + .byte 0x4 + .byte 0x4 + .byte 0x5 + .4byte .LASF4399 + .byte 0x4 + .byte 0x4 + .byte 0x7 + .4byte .LASF4400 + .byte 0x4 + .byte 0x8 + .byte 0x5 + .4byte .LASF4401 + .byte 0x4 + .byte 0x8 + .byte 0x7 + .4byte .LASF4402 + .byte 0x5 + .byte 0x4 + .byte 0x5 + .string "int" + .byte 0x4 + .byte 0x10 + .byte 0x4 + .4byte .LASF4403 + .byte 0x4 + .byte 0x1 + .byte 0x8 + .4byte .LASF377 + .byte 0x6 + .4byte .LASF4404 + .byte 0x1 + .byte 0x20 + .byte 0x6 + .4byte .LFB6 + .4byte .LFE6-.LFB6 + .byte 0x1 + .byte 0x9c + .byte 0x7 + .4byte .LASF4405 + .byte 0x1 + .byte 0xa + .byte 0x6 + .4byte .LFB5 + .4byte .LFE5-.LFB5 + .byte 0x1 + .byte 0x9c + .byte 0 + .section .debug_abbrev,"",@progbits +.Ldebug_abbrev0: + .byte 0x1 + .byte 0x11 + .byte 0x1 + .byte 0x25 + .byte 0xe + .byte 0x13 + .byte 0xb + .byte 0x3 + .byte 0xe + .byte 0x1b + .byte 0xe + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x10 + .byte 0x17 + .byte 0x99,0x42 + .byte 0x17 + .byte 0 + .byte 0 + .byte 0x2 + .byte 0x4 + .byte 0x1 + .byte 0x3 + .byte 0xe + .byte 0x3e + .byte 0xb + .byte 0xb + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x3 + .byte 0x28 + .byte 0 + .byte 0x3 + .byte 0xe + .byte 0x1c + .byte 0xb + .byte 0 + .byte 0 + .byte 0x4 + .byte 0x24 + .byte 0 + .byte 0xb + .byte 0xb + .byte 0x3e + .byte 0xb + .byte 0x3 + .byte 0xe + .byte 0 + .byte 0 + .byte 0x5 + .byte 0x24 + .byte 0 + .byte 0xb + .byte 0xb + .byte 0x3e + .byte 0xb + .byte 0x3 + .byte 0x8 + .byte 0 + .byte 0 + .byte 0x6 + .byte 0x2e + .byte 0 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0 + .byte 0 + .byte 0x7 + .byte 0x2e + .byte 0 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x96,0x42 + .byte 0x19 + .byte 0 + .byte 0 + .byte 0 + .section .debug_aranges,"",@progbits + .4byte 0x1c + .2byte 0x2 + .4byte .Ldebug_info0 + .byte 0x4 + .byte 0 + .2byte 0 + .2byte 0 + .4byte .Ltext0 + .4byte .Letext0-.Ltext0 + .4byte 0 + .4byte 0 + .section .debug_macro,"",@progbits +.Ldebug_macro0: + .2byte 0x4 + .byte 0x2 + .4byte .Ldebug_line0 + .byte 0x3 + .byte 0 + .byte 0x1 + .byte 0x5 + .byte 0x1 + .4byte .LASF0 + .byte 0x5 + .byte 0x2 + .4byte .LASF1 + .byte 0x5 + .byte 0x3 + .4byte .LASF2 + .byte 0x5 + .byte 0x4 + .4byte .LASF3 + .byte 0x5 + .byte 0x5 + .4byte .LASF4 + .byte 0x5 + .byte 0x6 + .4byte .LASF5 + .byte 0x5 + .byte 0x7 + .4byte .LASF6 + .byte 0x5 + .byte 0x8 + .4byte .LASF7 + .byte 0x5 + .byte 0x9 + .4byte .LASF8 + .byte 0x5 + .byte 0xa + .4byte .LASF9 + .byte 0x5 + .byte 0xb + .4byte .LASF10 + .byte 0x5 + .byte 0xc + .4byte .LASF11 + .byte 0x5 + .byte 0xd + .4byte .LASF12 + .byte 0x5 + .byte 0xe + .4byte .LASF13 + .byte 0x5 + .byte 0xf + .4byte .LASF14 + .byte 0x5 + .byte 0x10 + .4byte .LASF15 + .byte 0x5 + .byte 0x11 + .4byte .LASF16 + .byte 0x5 + .byte 0x12 + .4byte .LASF17 + .byte 0x5 + .byte 0x13 + .4byte .LASF18 + .byte 0x5 + .byte 0x14 + .4byte .LASF19 + .byte 0x5 + .byte 0x15 + .4byte .LASF20 + .byte 0x5 + .byte 0x16 + .4byte .LASF21 + .byte 0x5 + .byte 0x17 + .4byte .LASF22 + .byte 0x5 + .byte 0x18 + .4byte .LASF23 + .byte 0x5 + .byte 0x19 + .4byte .LASF24 + .byte 0x5 + .byte 0x1a + .4byte .LASF25 + .byte 0x5 + .byte 0x1b + .4byte .LASF26 + .byte 0x5 + .byte 0x1c + .4byte .LASF27 + .byte 0x5 + .byte 0x1d + .4byte .LASF28 + .byte 0x5 + .byte 0x1e + .4byte .LASF29 + .byte 0x5 + .byte 0x1f + .4byte .LASF30 + .byte 0x5 + .byte 0x20 + .4byte .LASF31 + .byte 0x5 + .byte 0x21 + .4byte .LASF32 + .byte 0x5 + .byte 0x22 + .4byte .LASF33 + .byte 0x5 + .byte 0x23 + .4byte .LASF34 + .byte 0x5 + .byte 0x24 + .4byte .LASF35 + .byte 0x5 + .byte 0x25 + .4byte .LASF36 + .byte 0x5 + .byte 0x26 + .4byte .LASF37 + .byte 0x5 + .byte 0x27 + .4byte .LASF38 + .byte 0x5 + .byte 0x28 + .4byte .LASF39 + .byte 0x5 + .byte 0x29 + .4byte .LASF40 + .byte 0x5 + .byte 0x2a + .4byte .LASF41 + .byte 0x5 + .byte 0x2b + .4byte .LASF42 + .byte 0x5 + .byte 0x2c + .4byte .LASF43 + .byte 0x5 + .byte 0x2d + .4byte .LASF44 + .byte 0x5 + .byte 0x2e + .4byte .LASF45 + .byte 0x5 + .byte 0x2f + .4byte .LASF46 + .byte 0x5 + .byte 0x30 + .4byte .LASF47 + .byte 0x5 + .byte 0x31 + .4byte .LASF48 + .byte 0x5 + .byte 0x32 + .4byte .LASF49 + .byte 0x5 + .byte 0x33 + .4byte .LASF50 + .byte 0x5 + .byte 0x34 + .4byte .LASF51 + .byte 0x5 + .byte 0x35 + .4byte .LASF52 + .byte 0x5 + .byte 0x36 + .4byte .LASF53 + .byte 0x5 + .byte 0x37 + .4byte .LASF54 + .byte 0x5 + .byte 0x38 + .4byte .LASF55 + .byte 0x5 + .byte 0x39 + .4byte .LASF56 + .byte 0x5 + .byte 0x3a + .4byte .LASF57 + .byte 0x5 + .byte 0x3b + .4byte .LASF58 + .byte 0x5 + .byte 0x3c + .4byte .LASF59 + .byte 0x5 + .byte 0x3d + .4byte .LASF60 + .byte 0x5 + .byte 0x3e + .4byte .LASF61 + .byte 0x5 + .byte 0x3f + .4byte .LASF62 + .byte 0x5 + .byte 0x40 + .4byte .LASF63 + .byte 0x5 + .byte 0x41 + .4byte .LASF64 + .byte 0x5 + .byte 0x42 + .4byte .LASF65 + .byte 0x5 + .byte 0x43 + .4byte .LASF66 + .byte 0x5 + .byte 0x44 + .4byte .LASF67 + .byte 0x5 + .byte 0x45 + .4byte .LASF68 + .byte 0x5 + .byte 0x46 + .4byte .LASF69 + .byte 0x5 + .byte 0x47 + .4byte .LASF70 + .byte 0x5 + .byte 0x48 + .4byte .LASF71 + .byte 0x5 + .byte 0x49 + .4byte .LASF72 + .byte 0x5 + .byte 0x4a + .4byte .LASF73 + .byte 0x5 + .byte 0x4b + .4byte .LASF74 + .byte 0x5 + .byte 0x4c + .4byte .LASF75 + .byte 0x5 + .byte 0x4d + .4byte .LASF76 + .byte 0x5 + .byte 0x4e + .4byte .LASF77 + .byte 0x5 + .byte 0x4f + .4byte .LASF78 + .byte 0x5 + .byte 0x50 + .4byte .LASF79 + .byte 0x5 + .byte 0x51 + .4byte .LASF80 + .byte 0x5 + .byte 0x52 + .4byte .LASF81 + .byte 0x5 + .byte 0x53 + .4byte .LASF82 + .byte 0x5 + .byte 0x54 + .4byte .LASF83 + .byte 0x5 + .byte 0x55 + .4byte .LASF84 + .byte 0x5 + .byte 0x56 + .4byte .LASF85 + .byte 0x5 + .byte 0x57 + .4byte .LASF86 + .byte 0x5 + .byte 0x58 + .4byte .LASF87 + .byte 0x5 + .byte 0x59 + .4byte .LASF88 + .byte 0x5 + .byte 0x5a + .4byte .LASF89 + .byte 0x5 + .byte 0x5b + .4byte .LASF90 + .byte 0x5 + .byte 0x5c + .4byte .LASF91 + .byte 0x5 + .byte 0x5d + .4byte .LASF92 + .byte 0x5 + .byte 0x5e + .4byte .LASF93 + .byte 0x5 + .byte 0x5f + .4byte .LASF94 + .byte 0x5 + .byte 0x60 + .4byte .LASF95 + .byte 0x5 + .byte 0x61 + .4byte .LASF96 + .byte 0x5 + .byte 0x62 + .4byte .LASF97 + .byte 0x5 + .byte 0x63 + .4byte .LASF98 + .byte 0x5 + .byte 0x64 + .4byte .LASF99 + .byte 0x5 + .byte 0x65 + .4byte .LASF100 + .byte 0x5 + .byte 0x66 + .4byte .LASF101 + .byte 0x5 + .byte 0x67 + .4byte .LASF102 + .byte 0x5 + .byte 0x68 + .4byte .LASF103 + .byte 0x5 + .byte 0x69 + .4byte .LASF104 + .byte 0x5 + .byte 0x6a + .4byte .LASF105 + .byte 0x5 + .byte 0x6b + .4byte .LASF106 + .byte 0x5 + .byte 0x6c + .4byte .LASF107 + .byte 0x5 + .byte 0x6d + .4byte .LASF108 + .byte 0x5 + .byte 0x6e + .4byte .LASF109 + .byte 0x5 + .byte 0x6f + .4byte .LASF110 + .byte 0x5 + .byte 0x70 + .4byte .LASF111 + .byte 0x5 + .byte 0x71 + .4byte .LASF112 + .byte 0x5 + .byte 0x72 + .4byte .LASF113 + .byte 0x5 + .byte 0x73 + .4byte .LASF114 + .byte 0x5 + .byte 0x74 + .4byte .LASF115 + .byte 0x5 + .byte 0x75 + .4byte .LASF116 + .byte 0x5 + .byte 0x76 + .4byte .LASF117 + .byte 0x5 + .byte 0x77 + .4byte .LASF118 + .byte 0x5 + .byte 0x78 + .4byte .LASF119 + .byte 0x5 + .byte 0x79 + .4byte .LASF120 + .byte 0x5 + .byte 0x7a + .4byte .LASF121 + .byte 0x5 + .byte 0x7b + .4byte .LASF122 + .byte 0x5 + .byte 0x7c + .4byte .LASF123 + .byte 0x5 + .byte 0x7d + .4byte .LASF124 + .byte 0x5 + .byte 0x7e + .4byte .LASF125 + .byte 0x5 + .byte 0x7f + .4byte .LASF126 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF127 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF128 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF129 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF130 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF131 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF132 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF133 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF134 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF135 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF136 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF137 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF138 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF139 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF140 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF141 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF142 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF143 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF144 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF145 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF146 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF147 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF148 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF149 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF150 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF151 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF152 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF153 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF154 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF155 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF156 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF157 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF158 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF159 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF160 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF161 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF162 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF163 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF164 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF165 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF166 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF167 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF168 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF169 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF170 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF171 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF172 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF173 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF174 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF175 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF176 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF177 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF178 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF179 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF180 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF181 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF182 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF183 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF184 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF185 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF186 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF187 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF188 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF189 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF190 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF191 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF192 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF193 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF194 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF195 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF196 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF197 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF198 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF199 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF200 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF201 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF202 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF203 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF204 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF205 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF206 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF207 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF208 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF209 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF210 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF211 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF212 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF213 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF214 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF215 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF216 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF217 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF218 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF219 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF220 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF221 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF222 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF223 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF224 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF225 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF226 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF227 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF228 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF229 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF230 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF231 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF232 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF233 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF234 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF235 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF236 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF237 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF238 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF239 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF240 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF241 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF242 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF243 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF244 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF245 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF246 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF247 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF248 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF249 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF250 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF251 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF252 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF253 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF254 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF255 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF256 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF257 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF258 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF259 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF260 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF261 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF262 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF263 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF264 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF265 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF266 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF267 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF268 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF269 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF270 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF271 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF272 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF273 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF274 + .byte 0x5 + .byte 0x94,0x2 + .4byte .LASF275 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF276 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF277 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF278 + .byte 0x5 + .byte 0x98,0x2 + .4byte .LASF279 + .byte 0x5 + .byte 0x99,0x2 + .4byte .LASF280 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF281 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF282 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF283 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF284 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF285 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF286 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF287 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF288 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF289 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF290 + .byte 0x5 + .byte 0xa4,0x2 + .4byte .LASF291 + .byte 0x5 + .byte 0xa5,0x2 + .4byte .LASF292 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF293 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF294 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF295 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF296 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF297 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF298 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF299 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF300 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF301 + .byte 0x5 + .byte 0xaf,0x2 + .4byte .LASF302 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF303 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF304 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF305 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF306 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF307 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF308 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF309 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF310 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF311 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF312 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF313 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF314 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF315 + .byte 0x5 + .byte 0xbd,0x2 + .4byte .LASF316 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF317 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF318 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF319 + .byte 0x5 + .byte 0x1 + .4byte .LASF320 + .byte 0x5 + .byte 0x2 + .4byte .LASF321 + .byte 0x5 + .byte 0x3 + .4byte .LASF322 + .byte 0x5 + .byte 0x4 + .4byte .LASF323 + .byte 0x5 + .byte 0x5 + .4byte .LASF324 + .byte 0x5 + .byte 0x6 + .4byte .LASF325 + .byte 0x5 + .byte 0x7 + .4byte .LASF326 + .byte 0x5 + .byte 0x8 + .4byte .LASF327 + .byte 0x5 + .byte 0x9 + .4byte .LASF328 + .byte 0x3 + .byte 0x2 + .byte 0x2 + .byte 0x7 + .4byte .Ldebug_macro2 + .file 3 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral/system_gd32vf103.h" + .byte 0x3 + .byte 0xaf,0x1 + .byte 0x3 + .byte 0x5 + .byte 0x28 + .4byte .LASF340 + .file 4 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\stdint.h" + .byte 0x3 + .byte 0x2e + .byte 0x4 + .byte 0x5 + .byte 0xa + .4byte .LASF341 + .file 5 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\machine\\_default_types.h" + .byte 0x3 + .byte 0xc + .byte 0x5 + .byte 0x5 + .byte 0x6 + .4byte .LASF342 + .file 6 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\features.h" + .byte 0x3 + .byte 0x8 + .byte 0x6 + .byte 0x5 + .byte 0x16 + .4byte .LASF343 + .file 7 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\_newlib_version.h" + .byte 0x3 + .byte 0x1c + .byte 0x7 + .byte 0x7 + .4byte .Ldebug_macro3 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro5 + .byte 0x4 + .file 8 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_intsup.h" + .byte 0x3 + .byte 0xd + .byte 0x8 + .byte 0x7 + .4byte .Ldebug_macro6 + .byte 0x4 + .file 9 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_stdint.h" + .byte 0x3 + .byte 0xe + .byte 0x9 + .byte 0x7 + .4byte .Ldebug_macro7 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro8 + .byte 0x4 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro9 + .file 10 "board/gd32vf103_libopt.h" + .byte 0x3 + .byte 0xec,0x1 + .byte 0xa + .byte 0x5 + .byte 0x25 + .4byte .LASF526 + .file 11 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_adc.h" + .byte 0x3 + .byte 0x27 + .byte 0xb + .byte 0x5 + .byte 0x25 + .4byte .LASF527 + .byte 0x3 + .byte 0x27 + .byte 0x2 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro10 + .byte 0x4 + .file 12 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_bkp.h" + .byte 0x3 + .byte 0x28 + .byte 0xc + .byte 0x7 + .4byte .Ldebug_macro11 + .byte 0x4 + .file 13 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_can.h" + .byte 0x3 + .byte 0x29 + .byte 0xd + .byte 0x7 + .4byte .Ldebug_macro12 + .byte 0x4 + .file 14 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_crc.h" + .byte 0x3 + .byte 0x2a + .byte 0xe + .byte 0x7 + .4byte .Ldebug_macro13 + .byte 0x4 + .file 15 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dac.h" + .byte 0x3 + .byte 0x2b + .byte 0xf + .byte 0x7 + .4byte .Ldebug_macro14 + .byte 0x4 + .file 16 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dma.h" + .byte 0x3 + .byte 0x2c + .byte 0x10 + .byte 0x7 + .4byte .Ldebug_macro15 + .byte 0x4 + .file 17 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_eclic.h" + .byte 0x3 + .byte 0x2d + .byte 0x11 + .byte 0x7 + .4byte .Ldebug_macro16 + .byte 0x4 + .file 18 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_exmc.h" + .byte 0x3 + .byte 0x2e + .byte 0x12 + .byte 0x7 + .4byte .Ldebug_macro17 + .byte 0x4 + .file 19 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_exti.h" + .byte 0x3 + .byte 0x2f + .byte 0x13 + .byte 0x7 + .4byte .Ldebug_macro18 + .byte 0x4 + .file 20 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_fmc.h" + .byte 0x3 + .byte 0x30 + .byte 0x14 + .byte 0x7 + .4byte .Ldebug_macro19 + .byte 0x4 + .file 21 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_gpio.h" + .byte 0x3 + .byte 0x31 + .byte 0x15 + .byte 0x7 + .4byte .Ldebug_macro20 + .byte 0x4 + .file 22 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_i2c.h" + .byte 0x3 + .byte 0x32 + .byte 0x16 + .byte 0x7 + .4byte .Ldebug_macro21 + .byte 0x4 + .file 23 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_fwdgt.h" + .byte 0x3 + .byte 0x33 + .byte 0x17 + .byte 0x7 + .4byte .Ldebug_macro22 + .byte 0x4 + .file 24 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_dbg.h" + .byte 0x3 + .byte 0x34 + .byte 0x18 + .byte 0x7 + .4byte .Ldebug_macro23 + .byte 0x4 + .file 25 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_pmu.h" + .byte 0x3 + .byte 0x35 + .byte 0x19 + .byte 0x7 + .4byte .Ldebug_macro24 + .byte 0x4 + .file 26 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_rcu.h" + .byte 0x3 + .byte 0x36 + .byte 0x1a + .byte 0x7 + .4byte .Ldebug_macro25 + .byte 0x4 + .file 27 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_rtc.h" + .byte 0x3 + .byte 0x37 + .byte 0x1b + .byte 0x7 + .4byte .Ldebug_macro26 + .byte 0x4 + .file 28 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_spi.h" + .byte 0x3 + .byte 0x38 + .byte 0x1c + .byte 0x7 + .4byte .Ldebug_macro27 + .byte 0x4 + .file 29 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_timer.h" + .byte 0x3 + .byte 0x39 + .byte 0x1d + .byte 0x7 + .4byte .Ldebug_macro28 + .byte 0x4 + .file 30 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_usart.h" + .byte 0x3 + .byte 0x3a + .byte 0x1e + .byte 0x7 + .4byte .Ldebug_macro29 + .byte 0x4 + .file 31 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\GD32VF103_standard_peripheral\\Include/gd32vf103_wwdgt.h" + .byte 0x3 + .byte 0x3b + .byte 0x1f + .byte 0x7 + .4byte .Ldebug_macro30 + .byte 0x4 + .file 32 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_func.h" + .byte 0x3 + .byte 0x3c + .byte 0x20 + .byte 0x5 + .byte 0x4 + .4byte .LASF3074 + .file 33 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\lib\\gcc\\riscv-none-embed\\10.2.0\\include\\stddef.h" + .byte 0x3 + .byte 0x7 + .byte 0x21 + .byte 0x7 + .4byte .Ldebug_macro31 + .byte 0x4 + .file 34 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_timer.h" + .byte 0x3 + .byte 0x8 + .byte 0x22 + .byte 0x7 + .4byte .Ldebug_macro32 + .byte 0x4 + .file 35 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/n200_eclic.h" + .byte 0x3 + .byte 0x9 + .byte 0x23 + .byte 0x5 + .byte 0x4 + .4byte .LASF3138 + .file 36 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/riscv_const.h" + .byte 0x3 + .byte 0x6 + .byte 0x24 + .byte 0x7 + .4byte .Ldebug_macro33 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro34 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro35 + .byte 0x4 + .byte 0x4 + .byte 0x4 + .file 37 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\stdio.h" + .byte 0x3 + .byte 0x4 + .byte 0x25 + .byte 0x5 + .byte 0x1b + .4byte .LASF3169 + .file 38 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\_ansi.h" + .byte 0x3 + .byte 0x1d + .byte 0x26 + .byte 0x5 + .byte 0x8 + .4byte .LASF3170 + .file 39 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\newlib.h" + .byte 0x3 + .byte 0xa + .byte 0x27 + .byte 0x7 + .4byte .Ldebug_macro36 + .byte 0x4 + .file 40 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\config.h" + .byte 0x3 + .byte 0xb + .byte 0x28 + .byte 0x5 + .byte 0x2 + .4byte .LASF3185 + .file 41 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\machine\\ieeefp.h" + .byte 0x3 + .byte 0x4 + .byte 0x29 + .byte 0x7 + .4byte .Ldebug_macro37 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro38 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro39 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro40 + .file 42 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\cdefs.h" + .byte 0x3 + .byte 0x23 + .byte 0x2a + .byte 0x5 + .byte 0x2b + .4byte .LASF3207 + .byte 0x3 + .byte 0x2f + .byte 0x21 + .byte 0x7 + .4byte .Ldebug_macro41 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro42 + .byte 0x4 + .byte 0x3 + .byte 0x24 + .byte 0x21 + .byte 0x4 + .byte 0x5 + .byte 0x27 + .4byte .LASF3330 + .file 43 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\lib\\gcc\\riscv-none-embed\\10.2.0\\include\\stdarg.h" + .byte 0x3 + .byte 0x28 + .byte 0x2b + .byte 0x7 + .4byte .Ldebug_macro43 + .byte 0x4 + .file 44 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\reent.h" + .byte 0x3 + .byte 0x3c + .byte 0x2c + .byte 0x5 + .byte 0xb + .4byte .LASF3333 + .byte 0x3 + .byte 0xd + .byte 0x26 + .byte 0x4 + .byte 0x3 + .byte 0xe + .byte 0x21 + .byte 0x4 + .file 45 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_types.h" + .byte 0x3 + .byte 0xf + .byte 0x2d + .byte 0x7 + .4byte .Ldebug_macro44 + .byte 0x3 + .byte 0x18 + .byte 0x21 + .byte 0x7 + .4byte .Ldebug_macro45 + .byte 0x4 + .file 46 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\machine\\_types.h" + .byte 0x3 + .byte 0x1b + .byte 0x2e + .byte 0x5 + .byte 0x6 + .4byte .LASF3338 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro46 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro47 + .file 47 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\lock.h" + .byte 0x3 + .byte 0x22 + .byte 0x2f + .byte 0x7 + .4byte .Ldebug_macro48 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro49 + .byte 0x4 + .file 48 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\types.h" + .byte 0x3 + .byte 0x3d + .byte 0x30 + .byte 0x7 + .4byte .Ldebug_macro50 + .file 49 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\_pthreadtypes.h" + .byte 0x3 + .byte 0xdf,0x1 + .byte 0x31 + .byte 0x5 + .byte 0x13 + .4byte .LASF3443 + .byte 0x4 + .file 50 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\machine\\types.h" + .byte 0x3 + .byte 0xe0,0x1 + .byte 0x32 + .byte 0x4 + .byte 0x6 + .byte 0xe4,0x1 + .4byte .LASF3444 + .byte 0x4 + .byte 0x5 + .byte 0x43 + .4byte .LASF3445 + .file 51 "d:\\gcc\\xpack-riscv-none-embed-gcc-10.2.0-1.2\\riscv-none-embed\\include\\sys\\stdio.h" + .byte 0x3 + .byte 0x4f + .byte 0x33 + .byte 0x7 + .4byte .Ldebug_macro51 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro52 + .byte 0x4 + .file 52 "D:\\rt-thread\\components\\libc\\compilers\\common/unistd.h" + .byte 0x3 + .byte 0x5 + .byte 0x34 + .file 53 "D:\\rt-thread\\components\\libc\\compilers\\common/sys/unistd.h" + .byte 0x3 + .byte 0xa + .byte 0x35 + .byte 0x5 + .byte 0xd + .4byte .LASF3497 + .byte 0x3 + .byte 0xf + .byte 0x21 + .byte 0x4 + .byte 0x7 + .4byte .Ldebug_macro53 + .byte 0x4 + .byte 0x4 + .file 54 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\drivers/riscv_encoding.h" + .byte 0x3 + .byte 0x6 + .byte 0x36 + .byte 0x7 + .4byte .Ldebug_macro54 + .byte 0x4 + .byte 0x4 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103.h.37.6b141d903229e2235d36f2860fb69b6b,comdat +.Ldebug_macro2: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF329 + .byte 0x5 + .byte 0x35 + .4byte .LASF330 + .byte 0x5 + .byte 0x37 + .4byte .LASF331 + .byte 0x5 + .byte 0x38 + .4byte .LASF332 + .byte 0x5 + .byte 0x40 + .4byte .LASF333 + .byte 0x5 + .byte 0x41 + .4byte .LASF334 + .byte 0x5 + .byte 0x49 + .4byte .LASF335 + .byte 0x5 + .byte 0x4e + .4byte .LASF336 + .byte 0x5 + .byte 0x53 + .4byte .LASF337 + .byte 0x5 + .byte 0x58 + .4byte .LASF338 + .byte 0x5 + .byte 0x5d + .4byte .LASF339 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._newlib_version.h.4.bfdf54b0af045d4a71376ae00f63a22c,comdat +.Ldebug_macro3: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4 + .4byte .LASF344 + .byte 0x5 + .byte 0x6 + .4byte .LASF345 + .byte 0x5 + .byte 0x7 + .4byte .LASF346 + .byte 0x5 + .byte 0x8 + .4byte .LASF347 + .byte 0x5 + .byte 0x9 + .4byte .LASF348 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.features.h.33.4ac7543a40bbf4e11e60e29e36a3b28e,comdat +.Ldebug_macro4: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x21 + .4byte .LASF349 + .byte 0x5 + .byte 0x28 + .4byte .LASF350 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF351 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF352 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF353 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF354 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF355 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF356 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF357 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF358 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF359 + .byte 0x5 + .byte 0xca,0x2 + .4byte .LASF360 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._default_types.h.15.247e5cd201eca3442cbf5404108c4935,comdat +.Ldebug_macro5: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xf + .4byte .LASF361 + .byte 0x5 + .byte 0x1a + .4byte .LASF362 + .byte 0x5 + .byte 0x21 + .4byte .LASF363 + .byte 0x5 + .byte 0x2f + .4byte .LASF364 + .byte 0x5 + .byte 0x3d + .4byte .LASF365 + .byte 0x5 + .byte 0x53 + .4byte .LASF366 + .byte 0x5 + .byte 0x6d + .4byte .LASF367 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF368 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF369 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF370 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF371 + .byte 0x6 + .byte 0xf4,0x1 + .4byte .LASF372 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._intsup.h.10.48bafbb683905c4daa4565a85aeeb264,comdat +.Ldebug_macro6: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xa + .4byte .LASF373 + .byte 0x5 + .byte 0x10 + .4byte .LASF374 + .byte 0x6 + .byte 0x2b + .4byte .LASF375 + .byte 0x6 + .byte 0x2c + .4byte .LASF376 + .byte 0x6 + .byte 0x2d + .4byte .LASF377 + .byte 0x6 + .byte 0x2e + .4byte .LASF378 + .byte 0x2 + .byte 0x2f + .string "int" + .byte 0x6 + .byte 0x30 + .4byte .LASF379 + .byte 0x6 + .byte 0x31 + .4byte .LASF380 + .byte 0x6 + .byte 0x32 + .4byte .LASF381 + .byte 0x5 + .byte 0x33 + .4byte .LASF382 + .byte 0x5 + .byte 0x34 + .4byte .LASF383 + .byte 0x5 + .byte 0x35 + .4byte .LASF384 + .byte 0x5 + .byte 0x36 + .4byte .LASF385 + .byte 0x5 + .byte 0x37 + .4byte .LASF386 + .byte 0x5 + .byte 0x38 + .4byte .LASF387 + .byte 0x5 + .byte 0x39 + .4byte .LASF388 + .byte 0x5 + .byte 0x3a + .4byte .LASF389 + .byte 0x5 + .byte 0x43 + .4byte .LASF390 + .byte 0x5 + .byte 0x4a + .4byte .LASF391 + .byte 0x5 + .byte 0x52 + .4byte .LASF392 + .byte 0x5 + .byte 0x5d + .4byte .LASF393 + .byte 0x5 + .byte 0x68 + .4byte .LASF394 + .byte 0x5 + .byte 0x71 + .4byte .LASF395 + .byte 0x5 + .byte 0x78 + .4byte .LASF396 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF397 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF398 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF399 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF400 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF401 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF402 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF403 + .byte 0x6 + .byte 0xb8,0x1 + .4byte .LASF375 + .byte 0x6 + .byte 0xb9,0x1 + .4byte .LASF376 + .byte 0x6 + .byte 0xba,0x1 + .4byte .LASF377 + .byte 0x6 + .byte 0xbb,0x1 + .4byte .LASF378 + .byte 0x2 + .byte 0xbc,0x1 + .string "int" + .byte 0x6 + .byte 0xbd,0x1 + .4byte .LASF381 + .byte 0x6 + .byte 0xc2,0x1 + .4byte .LASF379 + .byte 0x6 + .byte 0xc3,0x1 + .4byte .LASF380 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._stdint.h.10.c24fa3af3bc1706662bb5593a907e841,comdat +.Ldebug_macro7: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xa + .4byte .LASF404 + .byte 0x5 + .byte 0x15 + .4byte .LASF405 + .byte 0x5 + .byte 0x19 + .4byte .LASF406 + .byte 0x5 + .byte 0x1b + .4byte .LASF407 + .byte 0x5 + .byte 0x21 + .4byte .LASF408 + .byte 0x5 + .byte 0x25 + .4byte .LASF409 + .byte 0x5 + .byte 0x27 + .4byte .LASF410 + .byte 0x5 + .byte 0x2d + .4byte .LASF411 + .byte 0x5 + .byte 0x31 + .4byte .LASF412 + .byte 0x5 + .byte 0x33 + .4byte .LASF413 + .byte 0x5 + .byte 0x39 + .4byte .LASF414 + .byte 0x5 + .byte 0x3d + .4byte .LASF415 + .byte 0x5 + .byte 0x3f + .4byte .LASF416 + .byte 0x5 + .byte 0x44 + .4byte .LASF417 + .byte 0x5 + .byte 0x49 + .4byte .LASF418 + .byte 0x5 + .byte 0x4e + .4byte .LASF419 + .byte 0x5 + .byte 0x53 + .4byte .LASF420 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stdint.h.23.d53047a68f4a85177f80b422d52785ed,comdat +.Ldebug_macro8: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x17 + .4byte .LASF421 + .byte 0x5 + .byte 0x1d + .4byte .LASF422 + .byte 0x5 + .byte 0x23 + .4byte .LASF423 + .byte 0x5 + .byte 0x29 + .4byte .LASF424 + .byte 0x5 + .byte 0x35 + .4byte .LASF425 + .byte 0x5 + .byte 0x3f + .4byte .LASF426 + .byte 0x5 + .byte 0x49 + .4byte .LASF427 + .byte 0x5 + .byte 0x53 + .4byte .LASF428 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF429 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF430 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF431 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF432 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF433 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF434 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF435 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF436 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF437 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF438 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF439 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF440 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF441 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF442 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF443 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF444 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF445 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF446 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF447 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF448 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF449 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF450 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF451 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF452 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF453 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF454 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF455 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF456 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF457 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF458 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF459 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF460 + .byte 0x5 + .byte 0x98,0x2 + .4byte .LASF461 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF462 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF463 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF464 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF465 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF466 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF467 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF468 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF469 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF470 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF471 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF472 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF473 + .byte 0x5 + .byte 0xe2,0x2 + .4byte .LASF474 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF475 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF476 + .byte 0x5 + .byte 0xf6,0x2 + .4byte .LASF477 + .byte 0x5 + .byte 0x80,0x3 + .4byte .LASF478 + .byte 0x5 + .byte 0x85,0x3 + .4byte .LASF479 + .byte 0x5 + .byte 0x8c,0x3 + .4byte .LASF480 + .byte 0x5 + .byte 0x8d,0x3 + .4byte .LASF481 + .byte 0x5 + .byte 0x98,0x3 + .4byte .LASF482 + .byte 0x5 + .byte 0x99,0x3 + .4byte .LASF483 + .byte 0x5 + .byte 0xa4,0x3 + .4byte .LASF484 + .byte 0x5 + .byte 0xa5,0x3 + .4byte .LASF485 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF486 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF487 + .byte 0x5 + .byte 0xc1,0x3 + .4byte .LASF488 + .byte 0x5 + .byte 0xc2,0x3 + .4byte .LASF489 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103.h.185.cffba7180870c0512d04c724c6463ab0,comdat +.Ldebug_macro9: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF490 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF491 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF492 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF493 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF494 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF495 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF496 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF497 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF498 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF499 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF500 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF501 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF502 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF503 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF504 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF505 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF506 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF507 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF508 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF509 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF510 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF511 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF512 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF513 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF514 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF515 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF516 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF517 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF518 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF519 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF520 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF521 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF522 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF523 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF524 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF525 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_adc.h.42.14cb8f90e4b5922f8a25d63c78535a21,comdat +.Ldebug_macro10: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x2a + .4byte .LASF528 + .byte 0x5 + .byte 0x2b + .4byte .LASF529 + .byte 0x5 + .byte 0x2e + .4byte .LASF530 + .byte 0x5 + .byte 0x2f + .4byte .LASF531 + .byte 0x5 + .byte 0x30 + .4byte .LASF532 + .byte 0x5 + .byte 0x31 + .4byte .LASF533 + .byte 0x5 + .byte 0x32 + .4byte .LASF534 + .byte 0x5 + .byte 0x33 + .4byte .LASF535 + .byte 0x5 + .byte 0x34 + .4byte .LASF536 + .byte 0x5 + .byte 0x35 + .4byte .LASF537 + .byte 0x5 + .byte 0x36 + .4byte .LASF538 + .byte 0x5 + .byte 0x37 + .4byte .LASF539 + .byte 0x5 + .byte 0x38 + .4byte .LASF540 + .byte 0x5 + .byte 0x39 + .4byte .LASF541 + .byte 0x5 + .byte 0x3a + .4byte .LASF542 + .byte 0x5 + .byte 0x3b + .4byte .LASF543 + .byte 0x5 + .byte 0x3c + .4byte .LASF544 + .byte 0x5 + .byte 0x3d + .4byte .LASF545 + .byte 0x5 + .byte 0x3e + .4byte .LASF546 + .byte 0x5 + .byte 0x3f + .4byte .LASF547 + .byte 0x5 + .byte 0x40 + .4byte .LASF548 + .byte 0x5 + .byte 0x41 + .4byte .LASF549 + .byte 0x5 + .byte 0x42 + .4byte .LASF550 + .byte 0x5 + .byte 0x46 + .4byte .LASF551 + .byte 0x5 + .byte 0x47 + .4byte .LASF552 + .byte 0x5 + .byte 0x48 + .4byte .LASF553 + .byte 0x5 + .byte 0x49 + .4byte .LASF554 + .byte 0x5 + .byte 0x4a + .4byte .LASF555 + .byte 0x5 + .byte 0x4d + .4byte .LASF556 + .byte 0x5 + .byte 0x4e + .4byte .LASF557 + .byte 0x5 + .byte 0x4f + .4byte .LASF558 + .byte 0x5 + .byte 0x50 + .4byte .LASF559 + .byte 0x5 + .byte 0x51 + .4byte .LASF560 + .byte 0x5 + .byte 0x52 + .4byte .LASF561 + .byte 0x5 + .byte 0x53 + .4byte .LASF562 + .byte 0x5 + .byte 0x54 + .4byte .LASF563 + .byte 0x5 + .byte 0x55 + .4byte .LASF564 + .byte 0x5 + .byte 0x56 + .4byte .LASF565 + .byte 0x5 + .byte 0x57 + .4byte .LASF566 + .byte 0x5 + .byte 0x58 + .4byte .LASF567 + .byte 0x5 + .byte 0x59 + .4byte .LASF568 + .byte 0x5 + .byte 0x5c + .4byte .LASF569 + .byte 0x5 + .byte 0x5d + .4byte .LASF570 + .byte 0x5 + .byte 0x5e + .4byte .LASF571 + .byte 0x5 + .byte 0x5f + .4byte .LASF572 + .byte 0x5 + .byte 0x60 + .4byte .LASF573 + .byte 0x5 + .byte 0x61 + .4byte .LASF574 + .byte 0x5 + .byte 0x62 + .4byte .LASF575 + .byte 0x5 + .byte 0x63 + .4byte .LASF576 + .byte 0x5 + .byte 0x64 + .4byte .LASF577 + .byte 0x5 + .byte 0x65 + .4byte .LASF578 + .byte 0x5 + .byte 0x66 + .4byte .LASF579 + .byte 0x5 + .byte 0x67 + .4byte .LASF580 + .byte 0x5 + .byte 0x68 + .4byte .LASF581 + .byte 0x5 + .byte 0x6b + .4byte .LASF582 + .byte 0x5 + .byte 0x6e + .4byte .LASF583 + .byte 0x5 + .byte 0x71 + .4byte .LASF584 + .byte 0x5 + .byte 0x74 + .4byte .LASF585 + .byte 0x5 + .byte 0x77 + .4byte .LASF586 + .byte 0x5 + .byte 0x78 + .4byte .LASF587 + .byte 0x5 + .byte 0x7b + .4byte .LASF588 + .byte 0x5 + .byte 0x7c + .4byte .LASF589 + .byte 0x5 + .byte 0x7f + .4byte .LASF590 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF591 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF592 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF593 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF594 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF595 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF596 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF597 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF598 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF599 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF600 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF601 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF602 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF603 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF604 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF605 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF606 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF607 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF608 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF609 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF610 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF611 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF612 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF613 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF614 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF615 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF616 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF617 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF618 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF619 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF620 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF621 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF622 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF623 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF624 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF625 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF626 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF627 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF628 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF629 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF630 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF631 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF632 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF633 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF634 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF635 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF636 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF637 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF638 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF639 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF640 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF641 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF642 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF643 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF644 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF645 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF646 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF647 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF648 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF649 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF650 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF651 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF652 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF653 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF654 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF655 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF656 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF657 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF658 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF659 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF660 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF661 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF662 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF663 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF664 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF665 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF666 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF667 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF668 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF669 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF670 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF671 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF672 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF673 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF674 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF675 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF676 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF677 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF678 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF679 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF680 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF681 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF682 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF683 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF684 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF685 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF686 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF687 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF688 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF689 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF690 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF691 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF692 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF693 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF694 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF695 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF696 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF697 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF698 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF699 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF700 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF701 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF702 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF703 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF704 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF705 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF706 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF707 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF708 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF709 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_bkp.h.37.565cdaf530a41cd40ed21e5fda39a6ed,comdat +.Ldebug_macro11: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF710 + .byte 0x5 + .byte 0x2a + .4byte .LASF711 + .byte 0x5 + .byte 0x2d + .4byte .LASF712 + .byte 0x5 + .byte 0x2e + .4byte .LASF713 + .byte 0x5 + .byte 0x2f + .4byte .LASF714 + .byte 0x5 + .byte 0x30 + .4byte .LASF715 + .byte 0x5 + .byte 0x31 + .4byte .LASF716 + .byte 0x5 + .byte 0x32 + .4byte .LASF717 + .byte 0x5 + .byte 0x33 + .4byte .LASF718 + .byte 0x5 + .byte 0x34 + .4byte .LASF719 + .byte 0x5 + .byte 0x35 + .4byte .LASF720 + .byte 0x5 + .byte 0x36 + .4byte .LASF721 + .byte 0x5 + .byte 0x37 + .4byte .LASF722 + .byte 0x5 + .byte 0x38 + .4byte .LASF723 + .byte 0x5 + .byte 0x39 + .4byte .LASF724 + .byte 0x5 + .byte 0x3a + .4byte .LASF725 + .byte 0x5 + .byte 0x3b + .4byte .LASF726 + .byte 0x5 + .byte 0x3c + .4byte .LASF727 + .byte 0x5 + .byte 0x3d + .4byte .LASF728 + .byte 0x5 + .byte 0x3e + .4byte .LASF729 + .byte 0x5 + .byte 0x3f + .4byte .LASF730 + .byte 0x5 + .byte 0x40 + .4byte .LASF731 + .byte 0x5 + .byte 0x41 + .4byte .LASF732 + .byte 0x5 + .byte 0x42 + .4byte .LASF733 + .byte 0x5 + .byte 0x43 + .4byte .LASF734 + .byte 0x5 + .byte 0x44 + .4byte .LASF735 + .byte 0x5 + .byte 0x45 + .4byte .LASF736 + .byte 0x5 + .byte 0x46 + .4byte .LASF737 + .byte 0x5 + .byte 0x47 + .4byte .LASF738 + .byte 0x5 + .byte 0x48 + .4byte .LASF739 + .byte 0x5 + .byte 0x49 + .4byte .LASF740 + .byte 0x5 + .byte 0x4a + .4byte .LASF741 + .byte 0x5 + .byte 0x4b + .4byte .LASF742 + .byte 0x5 + .byte 0x4c + .4byte .LASF743 + .byte 0x5 + .byte 0x4d + .4byte .LASF744 + .byte 0x5 + .byte 0x4e + .4byte .LASF745 + .byte 0x5 + .byte 0x4f + .4byte .LASF746 + .byte 0x5 + .byte 0x50 + .4byte .LASF747 + .byte 0x5 + .byte 0x51 + .4byte .LASF748 + .byte 0x5 + .byte 0x52 + .4byte .LASF749 + .byte 0x5 + .byte 0x53 + .4byte .LASF750 + .byte 0x5 + .byte 0x54 + .4byte .LASF751 + .byte 0x5 + .byte 0x55 + .4byte .LASF752 + .byte 0x5 + .byte 0x56 + .4byte .LASF753 + .byte 0x5 + .byte 0x57 + .4byte .LASF754 + .byte 0x5 + .byte 0x58 + .4byte .LASF755 + .byte 0x5 + .byte 0x59 + .4byte .LASF756 + .byte 0x5 + .byte 0x5d + .4byte .LASF757 + .byte 0x5 + .byte 0x60 + .4byte .LASF758 + .byte 0x5 + .byte 0x61 + .4byte .LASF759 + .byte 0x5 + .byte 0x62 + .4byte .LASF760 + .byte 0x5 + .byte 0x63 + .4byte .LASF761 + .byte 0x5 + .byte 0x66 + .4byte .LASF762 + .byte 0x5 + .byte 0x67 + .4byte .LASF763 + .byte 0x5 + .byte 0x6a + .4byte .LASF764 + .byte 0x5 + .byte 0x6b + .4byte .LASF765 + .byte 0x5 + .byte 0x6c + .4byte .LASF766 + .byte 0x5 + .byte 0x6d + .4byte .LASF767 + .byte 0x5 + .byte 0x6e + .4byte .LASF768 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF769 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF770 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF771 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF772 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF773 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF774 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF775 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF776 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF777 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF778 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_can.h.39.9380e444d8240972fa3c91ce629786a4,comdat +.Ldebug_macro12: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF779 + .byte 0x5 + .byte 0x2c + .4byte .LASF780 + .byte 0x5 + .byte 0x2d + .4byte .LASF781 + .byte 0x5 + .byte 0x30 + .4byte .LASF782 + .byte 0x5 + .byte 0x31 + .4byte .LASF783 + .byte 0x5 + .byte 0x32 + .4byte .LASF784 + .byte 0x5 + .byte 0x33 + .4byte .LASF785 + .byte 0x5 + .byte 0x34 + .4byte .LASF786 + .byte 0x5 + .byte 0x35 + .4byte .LASF787 + .byte 0x5 + .byte 0x36 + .4byte .LASF788 + .byte 0x5 + .byte 0x37 + .4byte .LASF789 + .byte 0x5 + .byte 0x38 + .4byte .LASF790 + .byte 0x5 + .byte 0x39 + .4byte .LASF791 + .byte 0x5 + .byte 0x3a + .4byte .LASF792 + .byte 0x5 + .byte 0x3b + .4byte .LASF793 + .byte 0x5 + .byte 0x3c + .4byte .LASF794 + .byte 0x5 + .byte 0x3d + .4byte .LASF795 + .byte 0x5 + .byte 0x3e + .4byte .LASF796 + .byte 0x5 + .byte 0x3f + .4byte .LASF797 + .byte 0x5 + .byte 0x40 + .4byte .LASF798 + .byte 0x5 + .byte 0x41 + .4byte .LASF799 + .byte 0x5 + .byte 0x42 + .4byte .LASF800 + .byte 0x5 + .byte 0x43 + .4byte .LASF801 + .byte 0x5 + .byte 0x44 + .4byte .LASF802 + .byte 0x5 + .byte 0x45 + .4byte .LASF803 + .byte 0x5 + .byte 0x46 + .4byte .LASF804 + .byte 0x5 + .byte 0x47 + .4byte .LASF805 + .byte 0x5 + .byte 0x48 + .4byte .LASF806 + .byte 0x5 + .byte 0x49 + .4byte .LASF807 + .byte 0x5 + .byte 0x4a + .4byte .LASF808 + .byte 0x5 + .byte 0x4b + .4byte .LASF809 + .byte 0x5 + .byte 0x4c + .4byte .LASF810 + .byte 0x5 + .byte 0x4d + .4byte .LASF811 + .byte 0x5 + .byte 0x4e + .4byte .LASF812 + .byte 0x5 + .byte 0x4f + .4byte .LASF813 + .byte 0x5 + .byte 0x50 + .4byte .LASF814 + .byte 0x5 + .byte 0x51 + .4byte .LASF815 + .byte 0x5 + .byte 0x52 + .4byte .LASF816 + .byte 0x5 + .byte 0x53 + .4byte .LASF817 + .byte 0x5 + .byte 0x54 + .4byte .LASF818 + .byte 0x5 + .byte 0x55 + .4byte .LASF819 + .byte 0x5 + .byte 0x56 + .4byte .LASF820 + .byte 0x5 + .byte 0x57 + .4byte .LASF821 + .byte 0x5 + .byte 0x58 + .4byte .LASF822 + .byte 0x5 + .byte 0x59 + .4byte .LASF823 + .byte 0x5 + .byte 0x5a + .4byte .LASF824 + .byte 0x5 + .byte 0x5b + .4byte .LASF825 + .byte 0x5 + .byte 0x5c + .4byte .LASF826 + .byte 0x5 + .byte 0x5d + .4byte .LASF827 + .byte 0x5 + .byte 0x5e + .4byte .LASF828 + .byte 0x5 + .byte 0x5f + .4byte .LASF829 + .byte 0x5 + .byte 0x60 + .4byte .LASF830 + .byte 0x5 + .byte 0x61 + .4byte .LASF831 + .byte 0x5 + .byte 0x62 + .4byte .LASF832 + .byte 0x5 + .byte 0x63 + .4byte .LASF833 + .byte 0x5 + .byte 0x64 + .4byte .LASF834 + .byte 0x5 + .byte 0x65 + .4byte .LASF835 + .byte 0x5 + .byte 0x66 + .4byte .LASF836 + .byte 0x5 + .byte 0x67 + .4byte .LASF837 + .byte 0x5 + .byte 0x68 + .4byte .LASF838 + .byte 0x5 + .byte 0x69 + .4byte .LASF839 + .byte 0x5 + .byte 0x6a + .4byte .LASF840 + .byte 0x5 + .byte 0x6b + .4byte .LASF841 + .byte 0x5 + .byte 0x6c + .4byte .LASF842 + .byte 0x5 + .byte 0x6d + .4byte .LASF843 + .byte 0x5 + .byte 0x6e + .4byte .LASF844 + .byte 0x5 + .byte 0x6f + .4byte .LASF845 + .byte 0x5 + .byte 0x70 + .4byte .LASF846 + .byte 0x5 + .byte 0x71 + .4byte .LASF847 + .byte 0x5 + .byte 0x72 + .4byte .LASF848 + .byte 0x5 + .byte 0x73 + .4byte .LASF849 + .byte 0x5 + .byte 0x74 + .4byte .LASF850 + .byte 0x5 + .byte 0x75 + .4byte .LASF851 + .byte 0x5 + .byte 0x76 + .4byte .LASF852 + .byte 0x5 + .byte 0x77 + .4byte .LASF853 + .byte 0x5 + .byte 0x78 + .4byte .LASF854 + .byte 0x5 + .byte 0x79 + .4byte .LASF855 + .byte 0x5 + .byte 0x7a + .4byte .LASF856 + .byte 0x5 + .byte 0x7b + .4byte .LASF857 + .byte 0x5 + .byte 0x7c + .4byte .LASF858 + .byte 0x5 + .byte 0x7d + .4byte .LASF859 + .byte 0x5 + .byte 0x7e + .4byte .LASF860 + .byte 0x5 + .byte 0x7f + .4byte .LASF861 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF862 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF863 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF864 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF865 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF866 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF867 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF868 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF869 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF870 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF871 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF872 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF873 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF874 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF875 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF876 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF877 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF878 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF879 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF880 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF881 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF882 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF883 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF884 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF885 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF886 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF887 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF888 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF889 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF890 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF891 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF892 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF893 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF894 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF895 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF896 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF897 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF898 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF899 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF900 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF901 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF902 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF903 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF904 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF905 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF906 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF907 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF908 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF909 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF910 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF911 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF912 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF913 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF914 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF915 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF916 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF917 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF918 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF919 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF920 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF921 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF922 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF923 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF924 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF925 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF926 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF927 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF928 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF929 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF930 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF931 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF932 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF933 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF934 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF935 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF936 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF937 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF938 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF939 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF940 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF941 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF942 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF943 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF944 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF945 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF946 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF947 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF948 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF949 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF950 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF951 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF952 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF953 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF954 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF955 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF956 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF957 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF958 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF959 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF960 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF961 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF962 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF963 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF964 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF965 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF966 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF967 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF968 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF969 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF970 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF971 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF972 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF973 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF974 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF975 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF976 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF977 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF978 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF979 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF980 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF981 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF982 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF983 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF984 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF985 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF986 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF987 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF988 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF989 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF990 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF991 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF992 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF993 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF994 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF995 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF996 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF997 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF998 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF999 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF1000 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF1001 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF1002 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF1003 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF1004 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF1005 + .byte 0x5 + .byte 0xe4,0x3 + .4byte .LASF1006 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF1007 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF1008 + .byte 0x5 + .byte 0xed,0x3 + .4byte .LASF1009 + .byte 0x5 + .byte 0xf0,0x3 + .4byte .LASF1010 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF1011 + .byte 0x5 + .byte 0xf6,0x3 + .4byte .LASF1012 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF1013 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF1014 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF1015 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF1016 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF1017 + .byte 0x5 + .byte 0x88,0x4 + .4byte .LASF1018 + .byte 0x5 + .byte 0x8b,0x4 + .4byte .LASF1019 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF1020 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF1021 + .byte 0x5 + .byte 0x94,0x4 + .4byte .LASF1022 + .byte 0x5 + .byte 0x97,0x4 + .4byte .LASF1023 + .byte 0x5 + .byte 0x9a,0x4 + .4byte .LASF1024 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF1025 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF1026 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF1027 + .byte 0x5 + .byte 0xa6,0x4 + .4byte .LASF1028 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF1029 + .byte 0x5 + .byte 0xac,0x4 + .4byte .LASF1030 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF1031 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF1032 + .byte 0x5 + .byte 0xb5,0x4 + .4byte .LASF1033 + .byte 0x5 + .byte 0xb8,0x4 + .4byte .LASF1034 + .byte 0x5 + .byte 0xbb,0x4 + .4byte .LASF1035 + .byte 0x5 + .byte 0xbe,0x4 + .4byte .LASF1036 + .byte 0x5 + .byte 0xc1,0x4 + .4byte .LASF1037 + .byte 0x5 + .byte 0xc4,0x4 + .4byte .LASF1038 + .byte 0x5 + .byte 0xc7,0x4 + .4byte .LASF1039 + .byte 0x5 + .byte 0xc8,0x4 + .4byte .LASF1040 + .byte 0x5 + .byte 0xc9,0x4 + .4byte .LASF1041 + .byte 0x5 + .byte 0xca,0x4 + .4byte .LASF1042 + .byte 0x5 + .byte 0xcb,0x4 + .4byte .LASF1043 + .byte 0x5 + .byte 0xcc,0x4 + .4byte .LASF1044 + .byte 0x5 + .byte 0xcd,0x4 + .4byte .LASF1045 + .byte 0x5 + .byte 0xce,0x4 + .4byte .LASF1046 + .byte 0x5 + .byte 0xcf,0x4 + .4byte .LASF1047 + .byte 0x5 + .byte 0xd1,0x4 + .4byte .LASF1048 + .byte 0x5 + .byte 0xd4,0x4 + .4byte .LASF1049 + .byte 0x5 + .byte 0xd5,0x4 + .4byte .LASF1050 + .byte 0x5 + .byte 0xd6,0x4 + .4byte .LASF1051 + .byte 0x5 + .byte 0xd7,0x4 + .4byte .LASF1052 + .byte 0x5 + .byte 0xda,0x4 + .4byte .LASF1053 + .byte 0x5 + .byte 0xdb,0x4 + .4byte .LASF1054 + .byte 0x5 + .byte 0xdc,0x4 + .4byte .LASF1055 + .byte 0x5 + .byte 0xdd,0x4 + .4byte .LASF1056 + .byte 0x5 + .byte 0xe0,0x4 + .4byte .LASF1057 + .byte 0x5 + .byte 0xe1,0x4 + .4byte .LASF1058 + .byte 0x5 + .byte 0xe2,0x4 + .4byte .LASF1059 + .byte 0x5 + .byte 0xe3,0x4 + .4byte .LASF1060 + .byte 0x5 + .byte 0xe4,0x4 + .4byte .LASF1061 + .byte 0x5 + .byte 0xe5,0x4 + .4byte .LASF1062 + .byte 0x5 + .byte 0xe6,0x4 + .4byte .LASF1063 + .byte 0x5 + .byte 0xe7,0x4 + .4byte .LASF1064 + .byte 0x5 + .byte 0xe8,0x4 + .4byte .LASF1065 + .byte 0x5 + .byte 0xe9,0x4 + .4byte .LASF1066 + .byte 0x5 + .byte 0xea,0x4 + .4byte .LASF1067 + .byte 0x5 + .byte 0xeb,0x4 + .4byte .LASF1068 + .byte 0x5 + .byte 0xec,0x4 + .4byte .LASF1069 + .byte 0x5 + .byte 0xed,0x4 + .4byte .LASF1070 + .byte 0x5 + .byte 0xee,0x4 + .4byte .LASF1071 + .byte 0x5 + .byte 0xef,0x4 + .4byte .LASF1072 + .byte 0x5 + .byte 0xf2,0x4 + .4byte .LASF1073 + .byte 0x5 + .byte 0xf3,0x4 + .4byte .LASF1074 + .byte 0x5 + .byte 0xf4,0x4 + .4byte .LASF1075 + .byte 0x5 + .byte 0xf5,0x4 + .4byte .LASF1076 + .byte 0x5 + .byte 0xf6,0x4 + .4byte .LASF1077 + .byte 0x5 + .byte 0xf7,0x4 + .4byte .LASF1078 + .byte 0x5 + .byte 0xf8,0x4 + .4byte .LASF1079 + .byte 0x5 + .byte 0xf9,0x4 + .4byte .LASF1080 + .byte 0x5 + .byte 0xfc,0x4 + .4byte .LASF1081 + .byte 0x5 + .byte 0xfd,0x4 + .4byte .LASF1082 + .byte 0x5 + .byte 0xfe,0x4 + .4byte .LASF1083 + .byte 0x5 + .byte 0xff,0x4 + .4byte .LASF1084 + .byte 0x5 + .byte 0x82,0x5 + .4byte .LASF1085 + .byte 0x5 + .byte 0x83,0x5 + .4byte .LASF1086 + .byte 0x5 + .byte 0x86,0x5 + .4byte .LASF1087 + .byte 0x5 + .byte 0x87,0x5 + .4byte .LASF1088 + .byte 0x5 + .byte 0x8a,0x5 + .4byte .LASF1089 + .byte 0x5 + .byte 0x8c,0x5 + .4byte .LASF1090 + .byte 0x5 + .byte 0x8d,0x5 + .4byte .LASF1091 + .byte 0x5 + .byte 0x90,0x5 + .4byte .LASF1092 + .byte 0x5 + .byte 0x91,0x5 + .4byte .LASF1093 + .byte 0x5 + .byte 0x92,0x5 + .4byte .LASF1094 + .byte 0x5 + .byte 0x95,0x5 + .4byte .LASF1095 + .byte 0x5 + .byte 0x96,0x5 + .4byte .LASF1096 + .byte 0x5 + .byte 0x99,0x5 + .4byte .LASF1097 + .byte 0x5 + .byte 0x9a,0x5 + .4byte .LASF1098 + .byte 0x5 + .byte 0x9d,0x5 + .4byte .LASF1099 + .byte 0x5 + .byte 0xa0,0x5 + .4byte .LASF1100 + .byte 0x5 + .byte 0xa1,0x5 + .4byte .LASF1101 + .byte 0x5 + .byte 0xa4,0x5 + .4byte .LASF1102 + .byte 0x5 + .byte 0xa7,0x5 + .4byte .LASF1103 + .byte 0x5 + .byte 0xa8,0x5 + .4byte .LASF1104 + .byte 0x5 + .byte 0xa9,0x5 + .4byte .LASF1105 + .byte 0x5 + .byte 0xaa,0x5 + .4byte .LASF1106 + .byte 0x5 + .byte 0xab,0x5 + .4byte .LASF1107 + .byte 0x5 + .byte 0xac,0x5 + .4byte .LASF1108 + .byte 0x5 + .byte 0xad,0x5 + .4byte .LASF1109 + .byte 0x5 + .byte 0xae,0x5 + .4byte .LASF1110 + .byte 0x5 + .byte 0xaf,0x5 + .4byte .LASF1111 + .byte 0x5 + .byte 0xb0,0x5 + .4byte .LASF1112 + .byte 0x5 + .byte 0xb1,0x5 + .4byte .LASF1113 + .byte 0x5 + .byte 0xb2,0x5 + .4byte .LASF1114 + .byte 0x5 + .byte 0xb3,0x5 + .4byte .LASF1115 + .byte 0x5 + .byte 0xb4,0x5 + .4byte .LASF1116 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_crc.h.37.f77f53f1516fc65e49eac544ab82df8c,comdat +.Ldebug_macro13: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1117 + .byte 0x5 + .byte 0x2a + .4byte .LASF1118 + .byte 0x5 + .byte 0x2d + .4byte .LASF1119 + .byte 0x5 + .byte 0x2e + .4byte .LASF1120 + .byte 0x5 + .byte 0x2f + .4byte .LASF1121 + .byte 0x5 + .byte 0x33 + .4byte .LASF1122 + .byte 0x5 + .byte 0x36 + .4byte .LASF1123 + .byte 0x5 + .byte 0x39 + .4byte .LASF1124 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dac.h.37.c64e29f692c863eb577e59c8c0ad940a,comdat +.Ldebug_macro14: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1125 + .byte 0x5 + .byte 0x2a + .4byte .LASF1126 + .byte 0x5 + .byte 0x2b + .4byte .LASF1127 + .byte 0x5 + .byte 0x2c + .4byte .LASF1128 + .byte 0x5 + .byte 0x2f + .4byte .LASF1129 + .byte 0x5 + .byte 0x30 + .4byte .LASF1130 + .byte 0x5 + .byte 0x31 + .4byte .LASF1131 + .byte 0x5 + .byte 0x32 + .4byte .LASF1132 + .byte 0x5 + .byte 0x33 + .4byte .LASF1133 + .byte 0x5 + .byte 0x34 + .4byte .LASF1134 + .byte 0x5 + .byte 0x35 + .4byte .LASF1135 + .byte 0x5 + .byte 0x36 + .4byte .LASF1136 + .byte 0x5 + .byte 0x37 + .4byte .LASF1137 + .byte 0x5 + .byte 0x38 + .4byte .LASF1138 + .byte 0x5 + .byte 0x39 + .4byte .LASF1139 + .byte 0x5 + .byte 0x3a + .4byte .LASF1140 + .byte 0x5 + .byte 0x3b + .4byte .LASF1141 + .byte 0x5 + .byte 0x3f + .4byte .LASF1142 + .byte 0x5 + .byte 0x40 + .4byte .LASF1143 + .byte 0x5 + .byte 0x41 + .4byte .LASF1144 + .byte 0x5 + .byte 0x42 + .4byte .LASF1145 + .byte 0x5 + .byte 0x43 + .4byte .LASF1146 + .byte 0x5 + .byte 0x44 + .4byte .LASF1147 + .byte 0x5 + .byte 0x45 + .4byte .LASF1148 + .byte 0x5 + .byte 0x46 + .4byte .LASF1149 + .byte 0x5 + .byte 0x47 + .4byte .LASF1150 + .byte 0x5 + .byte 0x48 + .4byte .LASF1151 + .byte 0x5 + .byte 0x49 + .4byte .LASF1152 + .byte 0x5 + .byte 0x4a + .4byte .LASF1153 + .byte 0x5 + .byte 0x4b + .4byte .LASF1154 + .byte 0x5 + .byte 0x4c + .4byte .LASF1155 + .byte 0x5 + .byte 0x4f + .4byte .LASF1156 + .byte 0x5 + .byte 0x50 + .4byte .LASF1157 + .byte 0x5 + .byte 0x53 + .4byte .LASF1158 + .byte 0x5 + .byte 0x56 + .4byte .LASF1159 + .byte 0x5 + .byte 0x59 + .4byte .LASF1160 + .byte 0x5 + .byte 0x5c + .4byte .LASF1161 + .byte 0x5 + .byte 0x5f + .4byte .LASF1162 + .byte 0x5 + .byte 0x62 + .4byte .LASF1163 + .byte 0x5 + .byte 0x65 + .4byte .LASF1164 + .byte 0x5 + .byte 0x66 + .4byte .LASF1165 + .byte 0x5 + .byte 0x69 + .4byte .LASF1166 + .byte 0x5 + .byte 0x6a + .4byte .LASF1167 + .byte 0x5 + .byte 0x6d + .4byte .LASF1168 + .byte 0x5 + .byte 0x6e + .4byte .LASF1169 + .byte 0x5 + .byte 0x71 + .4byte .LASF1170 + .byte 0x5 + .byte 0x74 + .4byte .LASF1171 + .byte 0x5 + .byte 0x78 + .4byte .LASF1172 + .byte 0x5 + .byte 0x79 + .4byte .LASF1173 + .byte 0x5 + .byte 0x7a + .4byte .LASF1174 + .byte 0x5 + .byte 0x7b + .4byte .LASF1175 + .byte 0x5 + .byte 0x7c + .4byte .LASF1176 + .byte 0x5 + .byte 0x7d + .4byte .LASF1177 + .byte 0x5 + .byte 0x7e + .4byte .LASF1178 + .byte 0x5 + .byte 0x7f + .4byte .LASF1179 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF1180 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF1181 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF1182 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1183 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1184 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF1185 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1186 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1187 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF1188 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF1189 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1190 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1191 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1192 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF1193 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF1194 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF1195 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF1196 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1197 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1198 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1199 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1200 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1201 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF1202 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF1203 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1204 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1205 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1206 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1207 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1208 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1209 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1210 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1211 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1212 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1213 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF1214 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1215 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1216 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1217 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1218 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1219 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1220 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF1221 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF1222 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1223 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1224 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1225 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dma.h.38.2c314170096cba83b58f6eccfc84a5f7,comdat +.Ldebug_macro15: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x26 + .4byte .LASF1226 + .byte 0x5 + .byte 0x2b + .4byte .LASF1227 + .byte 0x5 + .byte 0x2c + .4byte .LASF1228 + .byte 0x5 + .byte 0x2f + .4byte .LASF1229 + .byte 0x5 + .byte 0x30 + .4byte .LASF1230 + .byte 0x5 + .byte 0x32 + .4byte .LASF1231 + .byte 0x5 + .byte 0x33 + .4byte .LASF1232 + .byte 0x5 + .byte 0x34 + .4byte .LASF1233 + .byte 0x5 + .byte 0x35 + .4byte .LASF1234 + .byte 0x5 + .byte 0x37 + .4byte .LASF1235 + .byte 0x5 + .byte 0x38 + .4byte .LASF1236 + .byte 0x5 + .byte 0x39 + .4byte .LASF1237 + .byte 0x5 + .byte 0x3a + .4byte .LASF1238 + .byte 0x5 + .byte 0x3c + .4byte .LASF1239 + .byte 0x5 + .byte 0x3d + .4byte .LASF1240 + .byte 0x5 + .byte 0x3e + .4byte .LASF1241 + .byte 0x5 + .byte 0x3f + .4byte .LASF1242 + .byte 0x5 + .byte 0x41 + .4byte .LASF1243 + .byte 0x5 + .byte 0x42 + .4byte .LASF1244 + .byte 0x5 + .byte 0x43 + .4byte .LASF1245 + .byte 0x5 + .byte 0x44 + .4byte .LASF1246 + .byte 0x5 + .byte 0x46 + .4byte .LASF1247 + .byte 0x5 + .byte 0x47 + .4byte .LASF1248 + .byte 0x5 + .byte 0x48 + .4byte .LASF1249 + .byte 0x5 + .byte 0x49 + .4byte .LASF1250 + .byte 0x5 + .byte 0x4b + .4byte .LASF1251 + .byte 0x5 + .byte 0x4c + .4byte .LASF1252 + .byte 0x5 + .byte 0x4d + .4byte .LASF1253 + .byte 0x5 + .byte 0x4e + .4byte .LASF1254 + .byte 0x5 + .byte 0x50 + .4byte .LASF1255 + .byte 0x5 + .byte 0x51 + .4byte .LASF1256 + .byte 0x5 + .byte 0x52 + .4byte .LASF1257 + .byte 0x5 + .byte 0x53 + .4byte .LASF1258 + .byte 0x5 + .byte 0x57 + .4byte .LASF1259 + .byte 0x5 + .byte 0x58 + .4byte .LASF1260 + .byte 0x5 + .byte 0x59 + .4byte .LASF1261 + .byte 0x5 + .byte 0x5a + .4byte .LASF1262 + .byte 0x5 + .byte 0x5d + .4byte .LASF1263 + .byte 0x5 + .byte 0x5e + .4byte .LASF1264 + .byte 0x5 + .byte 0x5f + .4byte .LASF1265 + .byte 0x5 + .byte 0x60 + .4byte .LASF1266 + .byte 0x5 + .byte 0x63 + .4byte .LASF1267 + .byte 0x5 + .byte 0x64 + .4byte .LASF1268 + .byte 0x5 + .byte 0x65 + .4byte .LASF1269 + .byte 0x5 + .byte 0x66 + .4byte .LASF1270 + .byte 0x5 + .byte 0x67 + .4byte .LASF1271 + .byte 0x5 + .byte 0x68 + .4byte .LASF1272 + .byte 0x5 + .byte 0x69 + .4byte .LASF1273 + .byte 0x5 + .byte 0x6a + .4byte .LASF1274 + .byte 0x5 + .byte 0x6b + .4byte .LASF1275 + .byte 0x5 + .byte 0x6c + .4byte .LASF1276 + .byte 0x5 + .byte 0x6d + .4byte .LASF1277 + .byte 0x5 + .byte 0x6e + .4byte .LASF1278 + .byte 0x5 + .byte 0x71 + .4byte .LASF1279 + .byte 0x5 + .byte 0x74 + .4byte .LASF1280 + .byte 0x5 + .byte 0x77 + .4byte .LASF1281 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1282 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1283 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1284 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1285 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1286 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1287 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1288 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1289 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1290 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1291 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1292 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1293 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1294 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1295 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1296 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1297 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1298 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1299 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1300 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1301 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1302 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF1303 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1304 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1305 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1306 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1307 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1308 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF1309 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF1310 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF1311 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF1312 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF1313 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1314 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF1315 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF1316 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1317 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1318 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF1319 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF1320 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1321 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF1322 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1323 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1324 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_eclic.h.37.7db9f8893169694757dea82a4b9eed61,comdat +.Ldebug_macro16: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1325 + .byte 0x5 + .byte 0x2a + .4byte .LASF1326 + .byte 0x5 + .byte 0x2b + .4byte .LASF1327 + .byte 0x5 + .byte 0x2c + .4byte .LASF1328 + .byte 0x5 + .byte 0x2d + .4byte .LASF1329 + .byte 0x5 + .byte 0x2e + .4byte .LASF1330 + .byte 0x5 + .byte 0x30 + .4byte .LASF1331 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_exmc.h.37.96699be4b910beb81cdfd35650becbf1,comdat +.Ldebug_macro17: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1332 + .byte 0x5 + .byte 0x2a + .4byte .LASF1333 + .byte 0x5 + .byte 0x2e + .4byte .LASF1334 + .byte 0x5 + .byte 0x2f + .4byte .LASF1335 + .byte 0x5 + .byte 0x30 + .4byte .LASF1336 + .byte 0x5 + .byte 0x35 + .4byte .LASF1337 + .byte 0x5 + .byte 0x36 + .4byte .LASF1338 + .byte 0x5 + .byte 0x37 + .4byte .LASF1339 + .byte 0x5 + .byte 0x38 + .4byte .LASF1340 + .byte 0x5 + .byte 0x39 + .4byte .LASF1341 + .byte 0x5 + .byte 0x3a + .4byte .LASF1342 + .byte 0x5 + .byte 0x3b + .4byte .LASF1343 + .byte 0x5 + .byte 0x3c + .4byte .LASF1344 + .byte 0x5 + .byte 0x3d + .4byte .LASF1345 + .byte 0x5 + .byte 0x40 + .4byte .LASF1346 + .byte 0x5 + .byte 0x41 + .4byte .LASF1347 + .byte 0x5 + .byte 0x42 + .4byte .LASF1348 + .byte 0x5 + .byte 0x43 + .4byte .LASF1349 + .byte 0x5 + .byte 0x5e + .4byte .LASF1350 + .byte 0x5 + .byte 0x5f + .4byte .LASF1351 + .byte 0x5 + .byte 0x62 + .4byte .LASF1352 + .byte 0x5 + .byte 0x63 + .4byte .LASF1353 + .byte 0x5 + .byte 0x64 + .4byte .LASF1354 + .byte 0x5 + .byte 0x67 + .4byte .LASF1355 + .byte 0x5 + .byte 0x68 + .4byte .LASF1356 + .byte 0x5 + .byte 0x69 + .4byte .LASF1357 + .byte 0x5 + .byte 0x6a + .4byte .LASF1358 + .byte 0x5 + .byte 0x6d + .4byte .LASF1359 + .byte 0x5 + .byte 0x70 + .4byte .LASF1360 + .byte 0x5 + .byte 0x71 + .4byte .LASF1361 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_exti.h.37.a48547bbdeb43685ea30e1aa7e1bc0e9,comdat +.Ldebug_macro18: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1362 + .byte 0x5 + .byte 0x2a + .4byte .LASF1363 + .byte 0x5 + .byte 0x2d + .4byte .LASF1364 + .byte 0x5 + .byte 0x2e + .4byte .LASF1365 + .byte 0x5 + .byte 0x2f + .4byte .LASF1366 + .byte 0x5 + .byte 0x30 + .4byte .LASF1367 + .byte 0x5 + .byte 0x31 + .4byte .LASF1368 + .byte 0x5 + .byte 0x32 + .4byte .LASF1369 + .byte 0x5 + .byte 0x36 + .4byte .LASF1370 + .byte 0x5 + .byte 0x37 + .4byte .LASF1371 + .byte 0x5 + .byte 0x38 + .4byte .LASF1372 + .byte 0x5 + .byte 0x39 + .4byte .LASF1373 + .byte 0x5 + .byte 0x3a + .4byte .LASF1374 + .byte 0x5 + .byte 0x3b + .4byte .LASF1375 + .byte 0x5 + .byte 0x3c + .4byte .LASF1376 + .byte 0x5 + .byte 0x3d + .4byte .LASF1377 + .byte 0x5 + .byte 0x3e + .4byte .LASF1378 + .byte 0x5 + .byte 0x3f + .4byte .LASF1379 + .byte 0x5 + .byte 0x40 + .4byte .LASF1380 + .byte 0x5 + .byte 0x41 + .4byte .LASF1381 + .byte 0x5 + .byte 0x42 + .4byte .LASF1382 + .byte 0x5 + .byte 0x43 + .4byte .LASF1383 + .byte 0x5 + .byte 0x44 + .4byte .LASF1384 + .byte 0x5 + .byte 0x45 + .4byte .LASF1385 + .byte 0x5 + .byte 0x46 + .4byte .LASF1386 + .byte 0x5 + .byte 0x47 + .4byte .LASF1387 + .byte 0x5 + .byte 0x48 + .4byte .LASF1388 + .byte 0x5 + .byte 0x4b + .4byte .LASF1389 + .byte 0x5 + .byte 0x4c + .4byte .LASF1390 + .byte 0x5 + .byte 0x4d + .4byte .LASF1391 + .byte 0x5 + .byte 0x4e + .4byte .LASF1392 + .byte 0x5 + .byte 0x4f + .4byte .LASF1393 + .byte 0x5 + .byte 0x50 + .4byte .LASF1394 + .byte 0x5 + .byte 0x51 + .4byte .LASF1395 + .byte 0x5 + .byte 0x52 + .4byte .LASF1396 + .byte 0x5 + .byte 0x53 + .4byte .LASF1397 + .byte 0x5 + .byte 0x54 + .4byte .LASF1398 + .byte 0x5 + .byte 0x55 + .4byte .LASF1399 + .byte 0x5 + .byte 0x56 + .4byte .LASF1400 + .byte 0x5 + .byte 0x57 + .4byte .LASF1401 + .byte 0x5 + .byte 0x58 + .4byte .LASF1402 + .byte 0x5 + .byte 0x59 + .4byte .LASF1403 + .byte 0x5 + .byte 0x5a + .4byte .LASF1404 + .byte 0x5 + .byte 0x5b + .4byte .LASF1405 + .byte 0x5 + .byte 0x5c + .4byte .LASF1406 + .byte 0x5 + .byte 0x5d + .4byte .LASF1407 + .byte 0x5 + .byte 0x60 + .4byte .LASF1408 + .byte 0x5 + .byte 0x61 + .4byte .LASF1409 + .byte 0x5 + .byte 0x62 + .4byte .LASF1410 + .byte 0x5 + .byte 0x63 + .4byte .LASF1411 + .byte 0x5 + .byte 0x64 + .4byte .LASF1412 + .byte 0x5 + .byte 0x65 + .4byte .LASF1413 + .byte 0x5 + .byte 0x66 + .4byte .LASF1414 + .byte 0x5 + .byte 0x67 + .4byte .LASF1415 + .byte 0x5 + .byte 0x68 + .4byte .LASF1416 + .byte 0x5 + .byte 0x69 + .4byte .LASF1417 + .byte 0x5 + .byte 0x6a + .4byte .LASF1418 + .byte 0x5 + .byte 0x6b + .4byte .LASF1419 + .byte 0x5 + .byte 0x6c + .4byte .LASF1420 + .byte 0x5 + .byte 0x6d + .4byte .LASF1421 + .byte 0x5 + .byte 0x6e + .4byte .LASF1422 + .byte 0x5 + .byte 0x6f + .4byte .LASF1423 + .byte 0x5 + .byte 0x70 + .4byte .LASF1424 + .byte 0x5 + .byte 0x71 + .4byte .LASF1425 + .byte 0x5 + .byte 0x72 + .4byte .LASF1426 + .byte 0x5 + .byte 0x75 + .4byte .LASF1427 + .byte 0x5 + .byte 0x76 + .4byte .LASF1428 + .byte 0x5 + .byte 0x77 + .4byte .LASF1429 + .byte 0x5 + .byte 0x78 + .4byte .LASF1430 + .byte 0x5 + .byte 0x79 + .4byte .LASF1431 + .byte 0x5 + .byte 0x7a + .4byte .LASF1432 + .byte 0x5 + .byte 0x7b + .4byte .LASF1433 + .byte 0x5 + .byte 0x7c + .4byte .LASF1434 + .byte 0x5 + .byte 0x7d + .4byte .LASF1435 + .byte 0x5 + .byte 0x7e + .4byte .LASF1436 + .byte 0x5 + .byte 0x7f + .4byte .LASF1437 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF1438 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF1439 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF1440 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF1441 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF1442 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1443 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1444 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF1445 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1446 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1447 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF1448 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF1449 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1450 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1451 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1452 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF1453 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF1454 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF1455 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF1456 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1457 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF1458 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF1459 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1460 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1461 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1462 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1463 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF1464 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1465 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1466 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1467 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1468 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1469 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF1470 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF1471 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1472 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1473 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1474 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1475 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1476 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF1477 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1478 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1479 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1480 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1481 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1482 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1483 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_fmc.h.39.cad093dc97f9756dd7521b8e6602cd12,comdat +.Ldebug_macro19: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF1484 + .byte 0x5 + .byte 0x2c + .4byte .LASF1485 + .byte 0x5 + .byte 0x2d + .4byte .LASF1486 + .byte 0x5 + .byte 0x30 + .4byte .LASF1487 + .byte 0x5 + .byte 0x31 + .4byte .LASF1488 + .byte 0x5 + .byte 0x32 + .4byte .LASF1489 + .byte 0x5 + .byte 0x33 + .4byte .LASF1490 + .byte 0x5 + .byte 0x34 + .4byte .LASF1491 + .byte 0x5 + .byte 0x35 + .4byte .LASF1492 + .byte 0x5 + .byte 0x36 + .4byte .LASF1493 + .byte 0x5 + .byte 0x37 + .4byte .LASF1494 + .byte 0x5 + .byte 0x38 + .4byte .LASF1495 + .byte 0x5 + .byte 0x3a + .4byte .LASF1496 + .byte 0x5 + .byte 0x3b + .4byte .LASF1497 + .byte 0x5 + .byte 0x3c + .4byte .LASF1498 + .byte 0x5 + .byte 0x3d + .4byte .LASF1499 + .byte 0x5 + .byte 0x3e + .4byte .LASF1500 + .byte 0x5 + .byte 0x3f + .4byte .LASF1501 + .byte 0x5 + .byte 0x43 + .4byte .LASF1502 + .byte 0x5 + .byte 0x46 + .4byte .LASF1503 + .byte 0x5 + .byte 0x49 + .4byte .LASF1504 + .byte 0x5 + .byte 0x4c + .4byte .LASF1505 + .byte 0x5 + .byte 0x4d + .4byte .LASF1506 + .byte 0x5 + .byte 0x4e + .4byte .LASF1507 + .byte 0x5 + .byte 0x4f + .4byte .LASF1508 + .byte 0x5 + .byte 0x52 + .4byte .LASF1509 + .byte 0x5 + .byte 0x53 + .4byte .LASF1510 + .byte 0x5 + .byte 0x54 + .4byte .LASF1511 + .byte 0x5 + .byte 0x55 + .4byte .LASF1512 + .byte 0x5 + .byte 0x56 + .4byte .LASF1513 + .byte 0x5 + .byte 0x57 + .4byte .LASF1514 + .byte 0x5 + .byte 0x58 + .4byte .LASF1515 + .byte 0x5 + .byte 0x59 + .4byte .LASF1516 + .byte 0x5 + .byte 0x5a + .4byte .LASF1517 + .byte 0x5 + .byte 0x5b + .4byte .LASF1518 + .byte 0x5 + .byte 0x5e + .4byte .LASF1519 + .byte 0x5 + .byte 0x61 + .4byte .LASF1520 + .byte 0x5 + .byte 0x62 + .4byte .LASF1521 + .byte 0x5 + .byte 0x63 + .4byte .LASF1522 + .byte 0x5 + .byte 0x64 + .4byte .LASF1523 + .byte 0x5 + .byte 0x67 + .4byte .LASF1524 + .byte 0x5 + .byte 0x6a + .4byte .LASF1525 + .byte 0x5 + .byte 0x6d + .4byte .LASF1526 + .byte 0x5 + .byte 0x71 + .4byte .LASF1527 + .byte 0x5 + .byte 0x72 + .4byte .LASF1528 + .byte 0x5 + .byte 0x73 + .4byte .LASF1529 + .byte 0x5 + .byte 0x74 + .4byte .LASF1530 + .byte 0x5 + .byte 0x75 + .4byte .LASF1531 + .byte 0x5 + .byte 0x76 + .4byte .LASF1532 + .byte 0x5 + .byte 0x77 + .4byte .LASF1533 + .byte 0x5 + .byte 0x78 + .4byte .LASF1534 + .byte 0x5 + .byte 0x7b + .4byte .LASF1535 + .byte 0x5 + .byte 0x7c + .4byte .LASF1536 + .byte 0x5 + .byte 0x7d + .4byte .LASF1537 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1538 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1539 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1540 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1541 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1542 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1543 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1544 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1545 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1546 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF1547 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1548 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1549 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF1550 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1551 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1552 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1553 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1554 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1555 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF1556 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF1557 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1558 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1559 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF1560 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1561 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1562 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF1563 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF1564 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF1565 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1566 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1567 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF1568 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF1569 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1570 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1571 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF1572 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF1573 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1574 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1575 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF1576 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF1577 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF1578 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1579 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF1580 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF1581 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1582 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1583 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF1584 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF1585 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF1586 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1587 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1588 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF1589 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF1590 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF1591 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF1592 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF1593 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF1594 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF1595 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1596 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1597 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_gpio.h.37.1c15e50fe61c140e18cbdcae4553472f,comdat +.Ldebug_macro20: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1598 + .byte 0x5 + .byte 0x2a + .4byte .LASF1599 + .byte 0x5 + .byte 0x2b + .4byte .LASF1600 + .byte 0x5 + .byte 0x2c + .4byte .LASF1601 + .byte 0x5 + .byte 0x2d + .4byte .LASF1602 + .byte 0x5 + .byte 0x2e + .4byte .LASF1603 + .byte 0x5 + .byte 0x31 + .4byte .LASF1604 + .byte 0x5 + .byte 0x36 + .4byte .LASF1605 + .byte 0x5 + .byte 0x37 + .4byte .LASF1606 + .byte 0x5 + .byte 0x38 + .4byte .LASF1607 + .byte 0x5 + .byte 0x39 + .4byte .LASF1608 + .byte 0x5 + .byte 0x3a + .4byte .LASF1609 + .byte 0x5 + .byte 0x3b + .4byte .LASF1610 + .byte 0x5 + .byte 0x3c + .4byte .LASF1611 + .byte 0x5 + .byte 0x3f + .4byte .LASF1612 + .byte 0x5 + .byte 0x40 + .4byte .LASF1613 + .byte 0x5 + .byte 0x41 + .4byte .LASF1614 + .byte 0x5 + .byte 0x42 + .4byte .LASF1615 + .byte 0x5 + .byte 0x43 + .4byte .LASF1616 + .byte 0x5 + .byte 0x44 + .4byte .LASF1617 + .byte 0x5 + .byte 0x45 + .4byte .LASF1618 + .byte 0x5 + .byte 0x49 + .4byte .LASF1619 + .byte 0x5 + .byte 0x4a + .4byte .LASF1620 + .byte 0x5 + .byte 0x4b + .4byte .LASF1621 + .byte 0x5 + .byte 0x4c + .4byte .LASF1622 + .byte 0x5 + .byte 0x4d + .4byte .LASF1623 + .byte 0x5 + .byte 0x4e + .4byte .LASF1624 + .byte 0x5 + .byte 0x4f + .4byte .LASF1625 + .byte 0x5 + .byte 0x50 + .4byte .LASF1626 + .byte 0x5 + .byte 0x51 + .4byte .LASF1627 + .byte 0x5 + .byte 0x52 + .4byte .LASF1628 + .byte 0x5 + .byte 0x53 + .4byte .LASF1629 + .byte 0x5 + .byte 0x54 + .4byte .LASF1630 + .byte 0x5 + .byte 0x55 + .4byte .LASF1631 + .byte 0x5 + .byte 0x56 + .4byte .LASF1632 + .byte 0x5 + .byte 0x57 + .4byte .LASF1633 + .byte 0x5 + .byte 0x58 + .4byte .LASF1634 + .byte 0x5 + .byte 0x5b + .4byte .LASF1635 + .byte 0x5 + .byte 0x5c + .4byte .LASF1636 + .byte 0x5 + .byte 0x5d + .4byte .LASF1637 + .byte 0x5 + .byte 0x5e + .4byte .LASF1638 + .byte 0x5 + .byte 0x5f + .4byte .LASF1639 + .byte 0x5 + .byte 0x60 + .4byte .LASF1640 + .byte 0x5 + .byte 0x61 + .4byte .LASF1641 + .byte 0x5 + .byte 0x62 + .4byte .LASF1642 + .byte 0x5 + .byte 0x63 + .4byte .LASF1643 + .byte 0x5 + .byte 0x64 + .4byte .LASF1644 + .byte 0x5 + .byte 0x65 + .4byte .LASF1645 + .byte 0x5 + .byte 0x66 + .4byte .LASF1646 + .byte 0x5 + .byte 0x67 + .4byte .LASF1647 + .byte 0x5 + .byte 0x68 + .4byte .LASF1648 + .byte 0x5 + .byte 0x69 + .4byte .LASF1649 + .byte 0x5 + .byte 0x6a + .4byte .LASF1650 + .byte 0x5 + .byte 0x6d + .4byte .LASF1651 + .byte 0x5 + .byte 0x6e + .4byte .LASF1652 + .byte 0x5 + .byte 0x6f + .4byte .LASF1653 + .byte 0x5 + .byte 0x70 + .4byte .LASF1654 + .byte 0x5 + .byte 0x71 + .4byte .LASF1655 + .byte 0x5 + .byte 0x72 + .4byte .LASF1656 + .byte 0x5 + .byte 0x73 + .4byte .LASF1657 + .byte 0x5 + .byte 0x74 + .4byte .LASF1658 + .byte 0x5 + .byte 0x75 + .4byte .LASF1659 + .byte 0x5 + .byte 0x76 + .4byte .LASF1660 + .byte 0x5 + .byte 0x77 + .4byte .LASF1661 + .byte 0x5 + .byte 0x78 + .4byte .LASF1662 + .byte 0x5 + .byte 0x79 + .4byte .LASF1663 + .byte 0x5 + .byte 0x7a + .4byte .LASF1664 + .byte 0x5 + .byte 0x7b + .4byte .LASF1665 + .byte 0x5 + .byte 0x7c + .4byte .LASF1666 + .byte 0x5 + .byte 0x7f + .4byte .LASF1667 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF1668 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF1669 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF1670 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF1671 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF1672 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1673 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1674 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF1675 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF1676 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF1677 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1678 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1679 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF1680 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF1681 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1682 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF1683 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF1684 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF1685 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF1686 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF1687 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF1688 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF1689 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF1690 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF1691 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF1692 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF1693 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF1694 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF1695 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF1696 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF1697 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF1698 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF1699 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF1700 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF1701 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF1702 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF1703 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF1704 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF1705 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF1706 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF1707 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF1708 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF1709 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF1710 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF1711 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF1712 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF1713 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF1714 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF1715 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF1716 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF1717 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF1718 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF1719 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF1720 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF1721 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF1722 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF1723 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF1724 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF1725 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF1726 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF1727 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF1728 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF1729 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF1730 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF1731 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF1732 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF1733 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF1734 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1735 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF1736 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF1737 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF1738 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF1739 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF1740 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF1741 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF1742 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1743 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1744 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF1745 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF1746 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1747 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF1748 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1749 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1750 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1751 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1752 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF1753 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF1754 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1755 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1756 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF1757 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF1758 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF1759 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1760 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF1761 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF1762 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1763 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1764 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF1765 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1766 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1767 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF1768 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF1769 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF1770 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF1771 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF1772 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF1773 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF1774 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1775 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1776 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF1777 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF1778 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF1779 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF1780 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF1781 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF1782 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF1783 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF1784 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF1785 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF1786 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF1787 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF1788 + .byte 0x5 + .byte 0x94,0x2 + .4byte .LASF1789 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF1790 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF1791 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF1792 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF1793 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF1794 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF1795 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF1796 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF1797 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF1798 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF1799 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF1800 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF1801 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF1802 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF1803 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF1804 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF1805 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF1806 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF1807 + .byte 0x5 + .byte 0xaf,0x2 + .4byte .LASF1808 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF1809 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF1810 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF1811 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF1812 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF1813 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF1814 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF1815 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF1816 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF1817 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF1818 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF1819 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF1820 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF1821 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF1822 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF1823 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF1824 + .byte 0x5 + .byte 0xc2,0x2 + .4byte .LASF1825 + .byte 0x5 + .byte 0xc3,0x2 + .4byte .LASF1826 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF1827 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF1828 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF1829 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF1830 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF1831 + .byte 0x5 + .byte 0xc9,0x2 + .4byte .LASF1832 + .byte 0x5 + .byte 0xca,0x2 + .4byte .LASF1833 + .byte 0x5 + .byte 0xcb,0x2 + .4byte .LASF1834 + .byte 0x5 + .byte 0xcc,0x2 + .4byte .LASF1835 + .byte 0x5 + .byte 0xcd,0x2 + .4byte .LASF1836 + .byte 0x5 + .byte 0xce,0x2 + .4byte .LASF1837 + .byte 0x5 + .byte 0xd1,0x2 + .4byte .LASF1838 + .byte 0x5 + .byte 0xd2,0x2 + .4byte .LASF1839 + .byte 0x5 + .byte 0xd3,0x2 + .4byte .LASF1840 + .byte 0x5 + .byte 0xd4,0x2 + .4byte .LASF1841 + .byte 0x5 + .byte 0xd5,0x2 + .4byte .LASF1842 + .byte 0x5 + .byte 0xd6,0x2 + .4byte .LASF1843 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF1844 + .byte 0x5 + .byte 0xd8,0x2 + .4byte .LASF1845 + .byte 0x5 + .byte 0xd9,0x2 + .4byte .LASF1846 + .byte 0x5 + .byte 0xda,0x2 + .4byte .LASF1847 + .byte 0x5 + .byte 0xdb,0x2 + .4byte .LASF1848 + .byte 0x5 + .byte 0xdc,0x2 + .4byte .LASF1849 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF1850 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF1851 + .byte 0x5 + .byte 0xdf,0x2 + .4byte .LASF1852 + .byte 0x5 + .byte 0xe0,0x2 + .4byte .LASF1853 + .byte 0x5 + .byte 0xe1,0x2 + .4byte .LASF1854 + .byte 0x5 + .byte 0xe4,0x2 + .4byte .LASF1855 + .byte 0x5 + .byte 0xe5,0x2 + .4byte .LASF1856 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF1857 + .byte 0x5 + .byte 0xe7,0x2 + .4byte .LASF1858 + .byte 0x5 + .byte 0xe8,0x2 + .4byte .LASF1859 + .byte 0x5 + .byte 0xe9,0x2 + .4byte .LASF1860 + .byte 0x5 + .byte 0xea,0x2 + .4byte .LASF1861 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF1862 + .byte 0x5 + .byte 0xec,0x2 + .4byte .LASF1863 + .byte 0x5 + .byte 0xed,0x2 + .4byte .LASF1864 + .byte 0x5 + .byte 0xee,0x2 + .4byte .LASF1865 + .byte 0x5 + .byte 0xef,0x2 + .4byte .LASF1866 + .byte 0x5 + .byte 0xf0,0x2 + .4byte .LASF1867 + .byte 0x5 + .byte 0xf1,0x2 + .4byte .LASF1868 + .byte 0x5 + .byte 0xf2,0x2 + .4byte .LASF1869 + .byte 0x5 + .byte 0xf3,0x2 + .4byte .LASF1870 + .byte 0x5 + .byte 0xf4,0x2 + .4byte .LASF1871 + .byte 0x5 + .byte 0xf5,0x2 + .4byte .LASF1872 + .byte 0x5 + .byte 0xf6,0x2 + .4byte .LASF1873 + .byte 0x5 + .byte 0xf7,0x2 + .4byte .LASF1874 + .byte 0x5 + .byte 0xf8,0x2 + .4byte .LASF1875 + .byte 0x5 + .byte 0xf9,0x2 + .4byte .LASF1876 + .byte 0x5 + .byte 0xfa,0x2 + .4byte .LASF1877 + .byte 0x5 + .byte 0xfb,0x2 + .4byte .LASF1878 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_i2c.h.37.9d7fb50529db8c5d4a0b10c3b5a1de79,comdat +.Ldebug_macro21: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1879 + .byte 0x5 + .byte 0x2a + .4byte .LASF1880 + .byte 0x5 + .byte 0x2b + .4byte .LASF1881 + .byte 0x5 + .byte 0x2e + .4byte .LASF1882 + .byte 0x5 + .byte 0x2f + .4byte .LASF1883 + .byte 0x5 + .byte 0x30 + .4byte .LASF1884 + .byte 0x5 + .byte 0x31 + .4byte .LASF1885 + .byte 0x5 + .byte 0x32 + .4byte .LASF1886 + .byte 0x5 + .byte 0x33 + .4byte .LASF1887 + .byte 0x5 + .byte 0x34 + .4byte .LASF1888 + .byte 0x5 + .byte 0x35 + .4byte .LASF1889 + .byte 0x5 + .byte 0x36 + .4byte .LASF1890 + .byte 0x5 + .byte 0x37 + .4byte .LASF1891 + .byte 0x5 + .byte 0x3a + .4byte .LASF1892 + .byte 0x5 + .byte 0x3b + .4byte .LASF1893 + .byte 0x5 + .byte 0x3c + .4byte .LASF1894 + .byte 0x5 + .byte 0x3d + .4byte .LASF1895 + .byte 0x5 + .byte 0x3e + .4byte .LASF1896 + .byte 0x5 + .byte 0x3f + .4byte .LASF1897 + .byte 0x5 + .byte 0x40 + .4byte .LASF1898 + .byte 0x5 + .byte 0x41 + .4byte .LASF1899 + .byte 0x5 + .byte 0x42 + .4byte .LASF1900 + .byte 0x5 + .byte 0x43 + .4byte .LASF1901 + .byte 0x5 + .byte 0x44 + .4byte .LASF1902 + .byte 0x5 + .byte 0x45 + .4byte .LASF1903 + .byte 0x5 + .byte 0x46 + .4byte .LASF1904 + .byte 0x5 + .byte 0x47 + .4byte .LASF1905 + .byte 0x5 + .byte 0x4a + .4byte .LASF1906 + .byte 0x5 + .byte 0x4b + .4byte .LASF1907 + .byte 0x5 + .byte 0x4c + .4byte .LASF1908 + .byte 0x5 + .byte 0x4d + .4byte .LASF1909 + .byte 0x5 + .byte 0x4e + .4byte .LASF1910 + .byte 0x5 + .byte 0x4f + .4byte .LASF1911 + .byte 0x5 + .byte 0x52 + .4byte .LASF1912 + .byte 0x5 + .byte 0x53 + .4byte .LASF1913 + .byte 0x5 + .byte 0x54 + .4byte .LASF1914 + .byte 0x5 + .byte 0x55 + .4byte .LASF1915 + .byte 0x5 + .byte 0x58 + .4byte .LASF1916 + .byte 0x5 + .byte 0x59 + .4byte .LASF1917 + .byte 0x5 + .byte 0x5c + .4byte .LASF1918 + .byte 0x5 + .byte 0x5f + .4byte .LASF1919 + .byte 0x5 + .byte 0x60 + .4byte .LASF1920 + .byte 0x5 + .byte 0x61 + .4byte .LASF1921 + .byte 0x5 + .byte 0x62 + .4byte .LASF1922 + .byte 0x5 + .byte 0x63 + .4byte .LASF1923 + .byte 0x5 + .byte 0x64 + .4byte .LASF1924 + .byte 0x5 + .byte 0x65 + .4byte .LASF1925 + .byte 0x5 + .byte 0x66 + .4byte .LASF1926 + .byte 0x5 + .byte 0x67 + .4byte .LASF1927 + .byte 0x5 + .byte 0x68 + .4byte .LASF1928 + .byte 0x5 + .byte 0x69 + .4byte .LASF1929 + .byte 0x5 + .byte 0x6a + .4byte .LASF1930 + .byte 0x5 + .byte 0x6b + .4byte .LASF1931 + .byte 0x5 + .byte 0x6c + .4byte .LASF1932 + .byte 0x5 + .byte 0x6f + .4byte .LASF1933 + .byte 0x5 + .byte 0x70 + .4byte .LASF1934 + .byte 0x5 + .byte 0x71 + .4byte .LASF1935 + .byte 0x5 + .byte 0x72 + .4byte .LASF1936 + .byte 0x5 + .byte 0x73 + .4byte .LASF1937 + .byte 0x5 + .byte 0x74 + .4byte .LASF1938 + .byte 0x5 + .byte 0x75 + .4byte .LASF1939 + .byte 0x5 + .byte 0x76 + .4byte .LASF1940 + .byte 0x5 + .byte 0x79 + .4byte .LASF1941 + .byte 0x5 + .byte 0x7a + .4byte .LASF1942 + .byte 0x5 + .byte 0x7b + .4byte .LASF1943 + .byte 0x5 + .byte 0x7e + .4byte .LASF1944 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF1945 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF1946 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF1947 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF1948 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF1949 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF1950 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF1951 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF1952 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF1953 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF1954 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF1955 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF1956 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF1957 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF1958 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF1959 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF1960 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF1961 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF1962 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF1963 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF1964 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF1965 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF1966 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF1967 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF1968 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF1969 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF1970 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF1971 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF1972 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF1973 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF1974 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF1975 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF1976 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF1977 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF1978 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF1979 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF1980 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF1981 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF1982 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF1983 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF1984 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF1985 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF1986 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF1987 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF1988 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF1989 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF1990 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_fwdgt.h.37.ec91e2ec679929e46ec494cd499250b4,comdat +.Ldebug_macro22: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF1991 + .byte 0x5 + .byte 0x2a + .4byte .LASF1992 + .byte 0x5 + .byte 0x2d + .4byte .LASF1993 + .byte 0x5 + .byte 0x2e + .4byte .LASF1994 + .byte 0x5 + .byte 0x2f + .4byte .LASF1995 + .byte 0x5 + .byte 0x30 + .4byte .LASF1996 + .byte 0x5 + .byte 0x34 + .4byte .LASF1997 + .byte 0x5 + .byte 0x37 + .4byte .LASF1998 + .byte 0x5 + .byte 0x3a + .4byte .LASF1999 + .byte 0x5 + .byte 0x3d + .4byte .LASF2000 + .byte 0x5 + .byte 0x3e + .4byte .LASF2001 + .byte 0x5 + .byte 0x42 + .4byte .LASF2002 + .byte 0x5 + .byte 0x43 + .4byte .LASF2003 + .byte 0x5 + .byte 0x44 + .4byte .LASF2004 + .byte 0x5 + .byte 0x45 + .4byte .LASF2005 + .byte 0x5 + .byte 0x46 + .4byte .LASF2006 + .byte 0x5 + .byte 0x47 + .4byte .LASF2007 + .byte 0x5 + .byte 0x48 + .4byte .LASF2008 + .byte 0x5 + .byte 0x49 + .4byte .LASF2009 + .byte 0x5 + .byte 0x4c + .4byte .LASF2010 + .byte 0x5 + .byte 0x4d + .4byte .LASF2011 + .byte 0x5 + .byte 0x4e + .4byte .LASF2012 + .byte 0x5 + .byte 0x4f + .4byte .LASF2013 + .byte 0x5 + .byte 0x52 + .4byte .LASF2014 + .byte 0x5 + .byte 0x53 + .4byte .LASF2015 + .byte 0x5 + .byte 0x56 + .4byte .LASF2016 + .byte 0x5 + .byte 0x57 + .4byte .LASF2017 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_dbg.h.37.c757ea48294705efe800a8cbb43f6f24,comdat +.Ldebug_macro23: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2018 + .byte 0x5 + .byte 0x2a + .4byte .LASF2019 + .byte 0x5 + .byte 0x2d + .4byte .LASF2020 + .byte 0x5 + .byte 0x2e + .4byte .LASF2021 + .byte 0x5 + .byte 0x32 + .4byte .LASF2022 + .byte 0x5 + .byte 0x35 + .4byte .LASF2023 + .byte 0x5 + .byte 0x36 + .4byte .LASF2024 + .byte 0x5 + .byte 0x37 + .4byte .LASF2025 + .byte 0x5 + .byte 0x38 + .4byte .LASF2026 + .byte 0x5 + .byte 0x39 + .4byte .LASF2027 + .byte 0x5 + .byte 0x3a + .4byte .LASF2028 + .byte 0x5 + .byte 0x3b + .4byte .LASF2029 + .byte 0x5 + .byte 0x3c + .4byte .LASF2030 + .byte 0x5 + .byte 0x3d + .4byte .LASF2031 + .byte 0x5 + .byte 0x3e + .4byte .LASF2032 + .byte 0x5 + .byte 0x3f + .4byte .LASF2033 + .byte 0x5 + .byte 0x40 + .4byte .LASF2034 + .byte 0x5 + .byte 0x41 + .4byte .LASF2035 + .byte 0x5 + .byte 0x42 + .4byte .LASF2036 + .byte 0x5 + .byte 0x43 + .4byte .LASF2037 + .byte 0x5 + .byte 0x44 + .4byte .LASF2038 + .byte 0x5 + .byte 0x5a + .4byte .LASF2039 + .byte 0x5 + .byte 0x5b + .4byte .LASF2040 + .byte 0x5 + .byte 0x5c + .4byte .LASF2041 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_pmu.h.37.edf842f53f3092f282c7bccaf9512833,comdat +.Ldebug_macro24: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2042 + .byte 0x5 + .byte 0x2a + .4byte .LASF2043 + .byte 0x5 + .byte 0x2d + .4byte .LASF2044 + .byte 0x5 + .byte 0x2e + .4byte .LASF2045 + .byte 0x5 + .byte 0x32 + .4byte .LASF2046 + .byte 0x5 + .byte 0x33 + .4byte .LASF2047 + .byte 0x5 + .byte 0x34 + .4byte .LASF2048 + .byte 0x5 + .byte 0x35 + .4byte .LASF2049 + .byte 0x5 + .byte 0x36 + .4byte .LASF2050 + .byte 0x5 + .byte 0x37 + .4byte .LASF2051 + .byte 0x5 + .byte 0x38 + .4byte .LASF2052 + .byte 0x5 + .byte 0x3b + .4byte .LASF2053 + .byte 0x5 + .byte 0x3c + .4byte .LASF2054 + .byte 0x5 + .byte 0x3d + .4byte .LASF2055 + .byte 0x5 + .byte 0x3e + .4byte .LASF2056 + .byte 0x5 + .byte 0x42 + .4byte .LASF2057 + .byte 0x5 + .byte 0x43 + .4byte .LASF2058 + .byte 0x5 + .byte 0x44 + .4byte .LASF2059 + .byte 0x5 + .byte 0x45 + .4byte .LASF2060 + .byte 0x5 + .byte 0x46 + .4byte .LASF2061 + .byte 0x5 + .byte 0x47 + .4byte .LASF2062 + .byte 0x5 + .byte 0x48 + .4byte .LASF2063 + .byte 0x5 + .byte 0x49 + .4byte .LASF2064 + .byte 0x5 + .byte 0x4a + .4byte .LASF2065 + .byte 0x5 + .byte 0x4d + .4byte .LASF2066 + .byte 0x5 + .byte 0x4e + .4byte .LASF2067 + .byte 0x5 + .byte 0x4f + .4byte .LASF2068 + .byte 0x5 + .byte 0x52 + .4byte .LASF2069 + .byte 0x5 + .byte 0x53 + .4byte .LASF2070 + .byte 0x5 + .byte 0x56 + .4byte .LASF2071 + .byte 0x5 + .byte 0x57 + .4byte .LASF2072 + .byte 0x5 + .byte 0x5a + .4byte .LASF2073 + .byte 0x5 + .byte 0x5b + .4byte .LASF2074 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_rcu.h.37.486a61f16467981517fe8072f0668f9d,comdat +.Ldebug_macro25: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2075 + .byte 0x5 + .byte 0x2a + .4byte .LASF2076 + .byte 0x5 + .byte 0x2e + .4byte .LASF2077 + .byte 0x5 + .byte 0x2f + .4byte .LASF2078 + .byte 0x5 + .byte 0x30 + .4byte .LASF2079 + .byte 0x5 + .byte 0x31 + .4byte .LASF2080 + .byte 0x5 + .byte 0x32 + .4byte .LASF2081 + .byte 0x5 + .byte 0x33 + .4byte .LASF2082 + .byte 0x5 + .byte 0x34 + .4byte .LASF2083 + .byte 0x5 + .byte 0x35 + .4byte .LASF2084 + .byte 0x5 + .byte 0x36 + .4byte .LASF2085 + .byte 0x5 + .byte 0x37 + .4byte .LASF2086 + .byte 0x5 + .byte 0x38 + .4byte .LASF2087 + .byte 0x5 + .byte 0x39 + .4byte .LASF2088 + .byte 0x5 + .byte 0x3a + .4byte .LASF2089 + .byte 0x5 + .byte 0x3f + .4byte .LASF2090 + .byte 0x5 + .byte 0x40 + .4byte .LASF2091 + .byte 0x5 + .byte 0x41 + .4byte .LASF2092 + .byte 0x5 + .byte 0x42 + .4byte .LASF2093 + .byte 0x5 + .byte 0x43 + .4byte .LASF2094 + .byte 0x5 + .byte 0x44 + .4byte .LASF2095 + .byte 0x5 + .byte 0x45 + .4byte .LASF2096 + .byte 0x5 + .byte 0x46 + .4byte .LASF2097 + .byte 0x5 + .byte 0x47 + .4byte .LASF2098 + .byte 0x5 + .byte 0x48 + .4byte .LASF2099 + .byte 0x5 + .byte 0x49 + .4byte .LASF2100 + .byte 0x5 + .byte 0x4a + .4byte .LASF2101 + .byte 0x5 + .byte 0x4b + .4byte .LASF2102 + .byte 0x5 + .byte 0x4c + .4byte .LASF2103 + .byte 0x5 + .byte 0x4f + .4byte .LASF2104 + .byte 0x5 + .byte 0x50 + .4byte .LASF2105 + .byte 0x5 + .byte 0x51 + .4byte .LASF2106 + .byte 0x5 + .byte 0x52 + .4byte .LASF2107 + .byte 0x5 + .byte 0x53 + .4byte .LASF2108 + .byte 0x5 + .byte 0x54 + .4byte .LASF2109 + .byte 0x5 + .byte 0x55 + .4byte .LASF2110 + .byte 0x5 + .byte 0x56 + .4byte .LASF2111 + .byte 0x5 + .byte 0x57 + .4byte .LASF2112 + .byte 0x5 + .byte 0x58 + .4byte .LASF2113 + .byte 0x5 + .byte 0x59 + .4byte .LASF2114 + .byte 0x5 + .byte 0x5a + .4byte .LASF2115 + .byte 0x5 + .byte 0x5b + .4byte .LASF2116 + .byte 0x5 + .byte 0x5e + .4byte .LASF2117 + .byte 0x5 + .byte 0x5f + .4byte .LASF2118 + .byte 0x5 + .byte 0x60 + .4byte .LASF2119 + .byte 0x5 + .byte 0x61 + .4byte .LASF2120 + .byte 0x5 + .byte 0x62 + .4byte .LASF2121 + .byte 0x5 + .byte 0x63 + .4byte .LASF2122 + .byte 0x5 + .byte 0x64 + .4byte .LASF2123 + .byte 0x5 + .byte 0x65 + .4byte .LASF2124 + .byte 0x5 + .byte 0x66 + .4byte .LASF2125 + .byte 0x5 + .byte 0x67 + .4byte .LASF2126 + .byte 0x5 + .byte 0x68 + .4byte .LASF2127 + .byte 0x5 + .byte 0x69 + .4byte .LASF2128 + .byte 0x5 + .byte 0x6a + .4byte .LASF2129 + .byte 0x5 + .byte 0x6b + .4byte .LASF2130 + .byte 0x5 + .byte 0x6c + .4byte .LASF2131 + .byte 0x5 + .byte 0x6d + .4byte .LASF2132 + .byte 0x5 + .byte 0x6e + .4byte .LASF2133 + .byte 0x5 + .byte 0x6f + .4byte .LASF2134 + .byte 0x5 + .byte 0x70 + .4byte .LASF2135 + .byte 0x5 + .byte 0x71 + .4byte .LASF2136 + .byte 0x5 + .byte 0x72 + .4byte .LASF2137 + .byte 0x5 + .byte 0x73 + .4byte .LASF2138 + .byte 0x5 + .byte 0x74 + .4byte .LASF2139 + .byte 0x5 + .byte 0x77 + .4byte .LASF2140 + .byte 0x5 + .byte 0x78 + .4byte .LASF2141 + .byte 0x5 + .byte 0x79 + .4byte .LASF2142 + .byte 0x5 + .byte 0x7a + .4byte .LASF2143 + .byte 0x5 + .byte 0x7b + .4byte .LASF2144 + .byte 0x5 + .byte 0x7c + .4byte .LASF2145 + .byte 0x5 + .byte 0x7d + .4byte .LASF2146 + .byte 0x5 + .byte 0x7e + .4byte .LASF2147 + .byte 0x5 + .byte 0x7f + .4byte .LASF2148 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF2149 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF2150 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF2151 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF2152 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF2153 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF2154 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF2155 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF2156 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF2157 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2158 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2159 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF2160 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF2161 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF2162 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2163 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF2164 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF2165 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF2166 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF2167 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2168 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2169 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF2170 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2171 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF2172 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF2173 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2174 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF2175 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF2176 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF2177 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF2178 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF2179 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF2180 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF2181 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2182 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2183 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2184 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2185 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF2186 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF2187 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF2188 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF2189 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF2190 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF2191 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF2192 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2193 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF2194 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF2195 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2196 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2197 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2198 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2199 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF2200 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF2201 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2202 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2203 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2204 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2205 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2206 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF2207 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF2208 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF2209 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF2210 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF2211 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF2212 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2213 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF2214 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF2215 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF2216 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF2217 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF2218 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF2219 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2220 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF2221 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF2222 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF2223 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF2224 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF2225 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF2226 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF2227 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2228 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2229 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF2230 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF2231 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2232 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2233 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2234 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF2235 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF2236 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF2237 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF2238 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF2239 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF2240 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF2241 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF2242 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF2243 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF2244 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF2245 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF2246 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF2247 + .byte 0x5 + .byte 0xaa,0x3 + .4byte .LASF2248 + .byte 0x5 + .byte 0xab,0x3 + .4byte .LASF2249 + .byte 0x5 + .byte 0xac,0x3 + .4byte .LASF2250 + .byte 0x5 + .byte 0xad,0x3 + .4byte .LASF2251 + .byte 0x5 + .byte 0xb0,0x3 + .4byte .LASF2252 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF2253 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF2254 + .byte 0x5 + .byte 0xb3,0x3 + .4byte .LASF2255 + .byte 0x5 + .byte 0xb6,0x3 + .4byte .LASF2256 + .byte 0x5 + .byte 0xb7,0x3 + .4byte .LASF2257 + .byte 0x5 + .byte 0xb8,0x3 + .4byte .LASF2258 + .byte 0x5 + .byte 0xb9,0x3 + .4byte .LASF2259 + .byte 0x5 + .byte 0xba,0x3 + .4byte .LASF2260 + .byte 0x5 + .byte 0xbb,0x3 + .4byte .LASF2261 + .byte 0x5 + .byte 0xbc,0x3 + .4byte .LASF2262 + .byte 0x5 + .byte 0xbd,0x3 + .4byte .LASF2263 + .byte 0x5 + .byte 0xbe,0x3 + .4byte .LASF2264 + .byte 0x5 + .byte 0xbf,0x3 + .4byte .LASF2265 + .byte 0x5 + .byte 0xc2,0x3 + .4byte .LASF2266 + .byte 0x5 + .byte 0xc3,0x3 + .4byte .LASF2267 + .byte 0x5 + .byte 0xc4,0x3 + .4byte .LASF2268 + .byte 0x5 + .byte 0xc5,0x3 + .4byte .LASF2269 + .byte 0x5 + .byte 0xc6,0x3 + .4byte .LASF2270 + .byte 0x5 + .byte 0xc7,0x3 + .4byte .LASF2271 + .byte 0x5 + .byte 0xca,0x3 + .4byte .LASF2272 + .byte 0x5 + .byte 0xcb,0x3 + .4byte .LASF2273 + .byte 0x5 + .byte 0xcc,0x3 + .4byte .LASF2274 + .byte 0x5 + .byte 0xcd,0x3 + .4byte .LASF2275 + .byte 0x5 + .byte 0xce,0x3 + .4byte .LASF2276 + .byte 0x5 + .byte 0xcf,0x3 + .4byte .LASF2277 + .byte 0x5 + .byte 0xd2,0x3 + .4byte .LASF2278 + .byte 0x5 + .byte 0xd3,0x3 + .4byte .LASF2279 + .byte 0x5 + .byte 0xd4,0x3 + .4byte .LASF2280 + .byte 0x5 + .byte 0xd5,0x3 + .4byte .LASF2281 + .byte 0x5 + .byte 0xd6,0x3 + .4byte .LASF2282 + .byte 0x5 + .byte 0xd7,0x3 + .4byte .LASF2283 + .byte 0x5 + .byte 0xda,0x3 + .4byte .LASF2284 + .byte 0x5 + .byte 0xdb,0x3 + .4byte .LASF2285 + .byte 0x5 + .byte 0xde,0x3 + .4byte .LASF2286 + .byte 0x5 + .byte 0xe0,0x3 + .4byte .LASF2287 + .byte 0x5 + .byte 0xe1,0x3 + .4byte .LASF2288 + .byte 0x5 + .byte 0xe2,0x3 + .4byte .LASF2289 + .byte 0x5 + .byte 0xe3,0x3 + .4byte .LASF2290 + .byte 0x5 + .byte 0xe4,0x3 + .4byte .LASF2291 + .byte 0x5 + .byte 0xe5,0x3 + .4byte .LASF2292 + .byte 0x5 + .byte 0xe6,0x3 + .4byte .LASF2293 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF2294 + .byte 0x5 + .byte 0xe8,0x3 + .4byte .LASF2295 + .byte 0x5 + .byte 0xe9,0x3 + .4byte .LASF2296 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF2297 + .byte 0x5 + .byte 0xeb,0x3 + .4byte .LASF2298 + .byte 0x5 + .byte 0xec,0x3 + .4byte .LASF2299 + .byte 0x5 + .byte 0xed,0x3 + .4byte .LASF2300 + .byte 0x5 + .byte 0xee,0x3 + .4byte .LASF2301 + .byte 0x5 + .byte 0xef,0x3 + .4byte .LASF2302 + .byte 0x5 + .byte 0xf0,0x3 + .4byte .LASF2303 + .byte 0x5 + .byte 0xf1,0x3 + .4byte .LASF2304 + .byte 0x5 + .byte 0xf2,0x3 + .4byte .LASF2305 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF2306 + .byte 0x5 + .byte 0xf4,0x3 + .4byte .LASF2307 + .byte 0x5 + .byte 0xf5,0x3 + .4byte .LASF2308 + .byte 0x5 + .byte 0xf6,0x3 + .4byte .LASF2309 + .byte 0x5 + .byte 0xf7,0x3 + .4byte .LASF2310 + .byte 0x5 + .byte 0xf8,0x3 + .4byte .LASF2311 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF2312 + .byte 0x5 + .byte 0xfa,0x3 + .4byte .LASF2313 + .byte 0x5 + .byte 0xfb,0x3 + .4byte .LASF2314 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF2315 + .byte 0x5 + .byte 0xfd,0x3 + .4byte .LASF2316 + .byte 0x5 + .byte 0xfe,0x3 + .4byte .LASF2317 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF2318 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF2319 + .byte 0x5 + .byte 0x83,0x4 + .4byte .LASF2320 + .byte 0x5 + .byte 0x84,0x4 + .4byte .LASF2321 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF2322 + .byte 0x5 + .byte 0x86,0x4 + .4byte .LASF2323 + .byte 0x5 + .byte 0x89,0x4 + .4byte .LASF2324 + .byte 0x5 + .byte 0x8a,0x4 + .4byte .LASF2325 + .byte 0x5 + .byte 0x8b,0x4 + .4byte .LASF2326 + .byte 0x5 + .byte 0x8c,0x4 + .4byte .LASF2327 + .byte 0x5 + .byte 0x8d,0x4 + .4byte .LASF2328 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF2329 + .byte 0x5 + .byte 0x8f,0x4 + .4byte .LASF2330 + .byte 0x5 + .byte 0x90,0x4 + .4byte .LASF2331 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF2332 + .byte 0x5 + .byte 0x92,0x4 + .4byte .LASF2333 + .byte 0x5 + .byte 0x95,0x4 + .4byte .LASF2334 + .byte 0x5 + .byte 0x96,0x4 + .4byte .LASF2335 + .byte 0x5 + .byte 0x97,0x4 + .4byte .LASF2336 + .byte 0x5 + .byte 0x98,0x4 + .4byte .LASF2337 + .byte 0x5 + .byte 0x99,0x4 + .4byte .LASF2338 + .byte 0x5 + .byte 0x9c,0x4 + .4byte .LASF2339 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF2340 + .byte 0x5 + .byte 0x9e,0x4 + .4byte .LASF2341 + .byte 0x5 + .byte 0x9f,0x4 + .4byte .LASF2342 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF2343 + .byte 0x5 + .byte 0xa1,0x4 + .4byte .LASF2344 + .byte 0x5 + .byte 0xa2,0x4 + .4byte .LASF2345 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF2346 + .byte 0x5 + .byte 0xa4,0x4 + .4byte .LASF2347 + .byte 0x5 + .byte 0xa5,0x4 + .4byte .LASF2348 + .byte 0x5 + .byte 0xa6,0x4 + .4byte .LASF2349 + .byte 0x5 + .byte 0xa7,0x4 + .4byte .LASF2350 + .byte 0x5 + .byte 0xa8,0x4 + .4byte .LASF2351 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF2352 + .byte 0x5 + .byte 0xaa,0x4 + .4byte .LASF2353 + .byte 0x5 + .byte 0xab,0x4 + .4byte .LASF2354 + .byte 0x5 + .byte 0xac,0x4 + .4byte .LASF2355 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF2356 + .byte 0x5 + .byte 0xb0,0x4 + .4byte .LASF2357 + .byte 0x5 + .byte 0xb1,0x4 + .4byte .LASF2358 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF2359 + .byte 0x5 + .byte 0xb3,0x4 + .4byte .LASF2360 + .byte 0x5 + .byte 0xb4,0x4 + .4byte .LASF2361 + .byte 0x5 + .byte 0xb5,0x4 + .4byte .LASF2362 + .byte 0x5 + .byte 0xb6,0x4 + .4byte .LASF2363 + .byte 0x5 + .byte 0xb7,0x4 + .4byte .LASF2364 + .byte 0x5 + .byte 0xb8,0x4 + .4byte .LASF2365 + .byte 0x5 + .byte 0xb9,0x4 + .4byte .LASF2366 + .byte 0x5 + .byte 0xba,0x4 + .4byte .LASF2367 + .byte 0x5 + .byte 0xbb,0x4 + .4byte .LASF2368 + .byte 0x5 + .byte 0xbc,0x4 + .4byte .LASF2369 + .byte 0x5 + .byte 0xbd,0x4 + .4byte .LASF2370 + .byte 0x5 + .byte 0xbe,0x4 + .4byte .LASF2371 + .byte 0x5 + .byte 0xbf,0x4 + .4byte .LASF2372 + .byte 0x5 + .byte 0xc2,0x4 + .4byte .LASF2373 + .byte 0x5 + .byte 0xc3,0x4 + .4byte .LASF2374 + .byte 0x5 + .byte 0xc4,0x4 + .4byte .LASF2375 + .byte 0x5 + .byte 0xc5,0x4 + .4byte .LASF2376 + .byte 0x5 + .byte 0xc6,0x4 + .4byte .LASF2377 + .byte 0x5 + .byte 0xc7,0x4 + .4byte .LASF2378 + .byte 0x5 + .byte 0xc8,0x4 + .4byte .LASF2379 + .byte 0x5 + .byte 0xc9,0x4 + .4byte .LASF2380 + .byte 0x5 + .byte 0xca,0x4 + .4byte .LASF2381 + .byte 0x5 + .byte 0xcb,0x4 + .4byte .LASF2382 + .byte 0x5 + .byte 0xcc,0x4 + .4byte .LASF2383 + .byte 0x5 + .byte 0xcf,0x4 + .4byte .LASF2384 + .byte 0x5 + .byte 0xd0,0x4 + .4byte .LASF2385 + .byte 0x5 + .byte 0xd1,0x4 + .4byte .LASF2386 + .byte 0x5 + .byte 0xd2,0x4 + .4byte .LASF2387 + .byte 0x5 + .byte 0xd3,0x4 + .4byte .LASF2388 + .byte 0x5 + .byte 0xd4,0x4 + .4byte .LASF2389 + .byte 0x5 + .byte 0xd5,0x4 + .4byte .LASF2390 + .byte 0x5 + .byte 0xd6,0x4 + .4byte .LASF2391 + .byte 0x5 + .byte 0xd7,0x4 + .4byte .LASF2392 + .byte 0x5 + .byte 0xd8,0x4 + .4byte .LASF2393 + .byte 0x5 + .byte 0xd9,0x4 + .4byte .LASF2394 + .byte 0x5 + .byte 0xdd,0x4 + .4byte .LASF2395 + .byte 0x5 + .byte 0xde,0x4 + .4byte .LASF2396 + .byte 0x5 + .byte 0xe1,0x4 + .4byte .LASF2397 + .byte 0x5 + .byte 0xe2,0x4 + .4byte .LASF2398 + .byte 0x5 + .byte 0xe5,0x4 + .4byte .LASF2399 + .byte 0x5 + .byte 0xe6,0x4 + .4byte .LASF2400 + .byte 0x5 + .byte 0xea,0x4 + .4byte .LASF2401 + .byte 0x5 + .byte 0xeb,0x4 + .4byte .LASF2402 + .byte 0x5 + .byte 0xec,0x4 + .4byte .LASF2403 + .byte 0x5 + .byte 0xed,0x4 + .4byte .LASF2404 + .byte 0x5 + .byte 0xee,0x4 + .4byte .LASF2405 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_rtc.h.37.3521dc979060c1ebaf2d43fd52b94dac,comdat +.Ldebug_macro26: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2406 + .byte 0x5 + .byte 0x2a + .4byte .LASF2407 + .byte 0x5 + .byte 0x2d + .4byte .LASF2408 + .byte 0x5 + .byte 0x2e + .4byte .LASF2409 + .byte 0x5 + .byte 0x2f + .4byte .LASF2410 + .byte 0x5 + .byte 0x30 + .4byte .LASF2411 + .byte 0x5 + .byte 0x31 + .4byte .LASF2412 + .byte 0x5 + .byte 0x32 + .4byte .LASF2413 + .byte 0x5 + .byte 0x33 + .4byte .LASF2414 + .byte 0x5 + .byte 0x34 + .4byte .LASF2415 + .byte 0x5 + .byte 0x35 + .4byte .LASF2416 + .byte 0x5 + .byte 0x36 + .4byte .LASF2417 + .byte 0x5 + .byte 0x3a + .4byte .LASF2418 + .byte 0x5 + .byte 0x3b + .4byte .LASF2419 + .byte 0x5 + .byte 0x3c + .4byte .LASF2420 + .byte 0x5 + .byte 0x3f + .4byte .LASF2421 + .byte 0x5 + .byte 0x40 + .4byte .LASF2422 + .byte 0x5 + .byte 0x41 + .4byte .LASF2423 + .byte 0x5 + .byte 0x42 + .4byte .LASF2424 + .byte 0x5 + .byte 0x43 + .4byte .LASF2425 + .byte 0x5 + .byte 0x44 + .4byte .LASF2426 + .byte 0x5 + .byte 0x47 + .4byte .LASF2427 + .byte 0x5 + .byte 0x4a + .4byte .LASF2428 + .byte 0x5 + .byte 0x4d + .4byte .LASF2429 + .byte 0x5 + .byte 0x50 + .4byte .LASF2430 + .byte 0x5 + .byte 0x53 + .4byte .LASF2431 + .byte 0x5 + .byte 0x56 + .4byte .LASF2432 + .byte 0x5 + .byte 0x59 + .4byte .LASF2433 + .byte 0x5 + .byte 0x5c + .4byte .LASF2434 + .byte 0x5 + .byte 0x60 + .4byte .LASF2435 + .byte 0x5 + .byte 0x61 + .4byte .LASF2436 + .byte 0x5 + .byte 0x62 + .4byte .LASF2437 + .byte 0x5 + .byte 0x65 + .4byte .LASF2438 + .byte 0x5 + .byte 0x66 + .4byte .LASF2439 + .byte 0x5 + .byte 0x67 + .4byte .LASF2440 + .byte 0x5 + .byte 0x6a + .4byte .LASF2441 + .byte 0x5 + .byte 0x6b + .4byte .LASF2442 + .byte 0x5 + .byte 0x6c + .4byte .LASF2443 + .byte 0x5 + .byte 0x6d + .4byte .LASF2444 + .byte 0x5 + .byte 0x6e + .4byte .LASF2445 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_spi.h.37.5b2da83109360bb35c1791b7dcc5009b,comdat +.Ldebug_macro27: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2446 + .byte 0x5 + .byte 0x2a + .4byte .LASF2447 + .byte 0x5 + .byte 0x2b + .4byte .LASF2448 + .byte 0x5 + .byte 0x2c + .4byte .LASF2449 + .byte 0x5 + .byte 0x2f + .4byte .LASF2450 + .byte 0x5 + .byte 0x30 + .4byte .LASF2451 + .byte 0x5 + .byte 0x31 + .4byte .LASF2452 + .byte 0x5 + .byte 0x32 + .4byte .LASF2453 + .byte 0x5 + .byte 0x33 + .4byte .LASF2454 + .byte 0x5 + .byte 0x34 + .4byte .LASF2455 + .byte 0x5 + .byte 0x35 + .4byte .LASF2456 + .byte 0x5 + .byte 0x36 + .4byte .LASF2457 + .byte 0x5 + .byte 0x37 + .4byte .LASF2458 + .byte 0x5 + .byte 0x3b + .4byte .LASF2459 + .byte 0x5 + .byte 0x3c + .4byte .LASF2460 + .byte 0x5 + .byte 0x3d + .4byte .LASF2461 + .byte 0x5 + .byte 0x3e + .4byte .LASF2462 + .byte 0x5 + .byte 0x3f + .4byte .LASF2463 + .byte 0x5 + .byte 0x40 + .4byte .LASF2464 + .byte 0x5 + .byte 0x41 + .4byte .LASF2465 + .byte 0x5 + .byte 0x42 + .4byte .LASF2466 + .byte 0x5 + .byte 0x43 + .4byte .LASF2467 + .byte 0x5 + .byte 0x44 + .4byte .LASF2468 + .byte 0x5 + .byte 0x45 + .4byte .LASF2469 + .byte 0x5 + .byte 0x46 + .4byte .LASF2470 + .byte 0x5 + .byte 0x47 + .4byte .LASF2471 + .byte 0x5 + .byte 0x48 + .4byte .LASF2472 + .byte 0x5 + .byte 0x4b + .4byte .LASF2473 + .byte 0x5 + .byte 0x4c + .4byte .LASF2474 + .byte 0x5 + .byte 0x4d + .4byte .LASF2475 + .byte 0x5 + .byte 0x4e + .4byte .LASF2476 + .byte 0x5 + .byte 0x4f + .4byte .LASF2477 + .byte 0x5 + .byte 0x50 + .4byte .LASF2478 + .byte 0x5 + .byte 0x51 + .4byte .LASF2479 + .byte 0x5 + .byte 0x52 + .4byte .LASF2480 + .byte 0x5 + .byte 0x55 + .4byte .LASF2481 + .byte 0x5 + .byte 0x56 + .4byte .LASF2482 + .byte 0x5 + .byte 0x57 + .4byte .LASF2483 + .byte 0x5 + .byte 0x58 + .4byte .LASF2484 + .byte 0x5 + .byte 0x59 + .4byte .LASF2485 + .byte 0x5 + .byte 0x5a + .4byte .LASF2486 + .byte 0x5 + .byte 0x5b + .4byte .LASF2487 + .byte 0x5 + .byte 0x5c + .4byte .LASF2488 + .byte 0x5 + .byte 0x5d + .4byte .LASF2489 + .byte 0x5 + .byte 0x60 + .4byte .LASF2490 + .byte 0x5 + .byte 0x63 + .4byte .LASF2491 + .byte 0x5 + .byte 0x66 + .4byte .LASF2492 + .byte 0x5 + .byte 0x69 + .4byte .LASF2493 + .byte 0x5 + .byte 0x6c + .4byte .LASF2494 + .byte 0x5 + .byte 0x6d + .4byte .LASF2495 + .byte 0x5 + .byte 0x6e + .4byte .LASF2496 + .byte 0x5 + .byte 0x6f + .4byte .LASF2497 + .byte 0x5 + .byte 0x70 + .4byte .LASF2498 + .byte 0x5 + .byte 0x71 + .4byte .LASF2499 + .byte 0x5 + .byte 0x72 + .4byte .LASF2500 + .byte 0x5 + .byte 0x73 + .4byte .LASF2501 + .byte 0x5 + .byte 0x76 + .4byte .LASF2502 + .byte 0x5 + .byte 0x77 + .4byte .LASF2503 + .byte 0x5 + .byte 0x78 + .4byte .LASF2504 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF2505 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF2506 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2507 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2508 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF2509 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2510 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF2511 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF2512 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2513 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2514 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF2515 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2516 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2517 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF2518 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF2519 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF2520 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF2521 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF2522 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2523 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2524 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2525 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2526 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF2527 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF2528 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF2529 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF2530 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF2531 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF2532 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF2533 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2534 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF2535 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF2536 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2537 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2538 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2539 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2540 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2541 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2542 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2543 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2544 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2545 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF2546 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF2547 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF2548 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF2549 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2550 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF2551 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF2552 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF2553 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF2554 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF2555 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF2556 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2557 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF2558 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF2559 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF2560 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF2561 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF2562 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2563 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2564 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF2565 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF2566 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2567 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF2568 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2569 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2570 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF2571 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF2572 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF2573 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF2574 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF2575 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF2576 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF2577 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF2578 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF2579 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF2580 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF2581 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF2582 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF2583 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF2584 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF2585 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF2586 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF2587 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF2588 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_timer.h.37.41e31e3c41519d549a8819d7a508d7a5,comdat +.Ldebug_macro28: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF2589 + .byte 0x5 + .byte 0x2a + .4byte .LASF2590 + .byte 0x5 + .byte 0x2b + .4byte .LASF2591 + .byte 0x5 + .byte 0x2c + .4byte .LASF2592 + .byte 0x5 + .byte 0x2d + .4byte .LASF2593 + .byte 0x5 + .byte 0x2e + .4byte .LASF2594 + .byte 0x5 + .byte 0x2f + .4byte .LASF2595 + .byte 0x5 + .byte 0x30 + .4byte .LASF2596 + .byte 0x5 + .byte 0x33 + .4byte .LASF2597 + .byte 0x5 + .byte 0x34 + .4byte .LASF2598 + .byte 0x5 + .byte 0x35 + .4byte .LASF2599 + .byte 0x5 + .byte 0x36 + .4byte .LASF2600 + .byte 0x5 + .byte 0x37 + .4byte .LASF2601 + .byte 0x5 + .byte 0x38 + .4byte .LASF2602 + .byte 0x5 + .byte 0x39 + .4byte .LASF2603 + .byte 0x5 + .byte 0x3a + .4byte .LASF2604 + .byte 0x5 + .byte 0x3b + .4byte .LASF2605 + .byte 0x5 + .byte 0x3c + .4byte .LASF2606 + .byte 0x5 + .byte 0x3d + .4byte .LASF2607 + .byte 0x5 + .byte 0x3e + .4byte .LASF2608 + .byte 0x5 + .byte 0x3f + .4byte .LASF2609 + .byte 0x5 + .byte 0x40 + .4byte .LASF2610 + .byte 0x5 + .byte 0x41 + .4byte .LASF2611 + .byte 0x5 + .byte 0x42 + .4byte .LASF2612 + .byte 0x5 + .byte 0x43 + .4byte .LASF2613 + .byte 0x5 + .byte 0x44 + .4byte .LASF2614 + .byte 0x5 + .byte 0x45 + .4byte .LASF2615 + .byte 0x5 + .byte 0x46 + .4byte .LASF2616 + .byte 0x5 + .byte 0x4a + .4byte .LASF2617 + .byte 0x5 + .byte 0x4b + .4byte .LASF2618 + .byte 0x5 + .byte 0x4c + .4byte .LASF2619 + .byte 0x5 + .byte 0x4d + .4byte .LASF2620 + .byte 0x5 + .byte 0x4e + .4byte .LASF2621 + .byte 0x5 + .byte 0x4f + .4byte .LASF2622 + .byte 0x5 + .byte 0x50 + .4byte .LASF2623 + .byte 0x5 + .byte 0x51 + .4byte .LASF2624 + .byte 0x5 + .byte 0x54 + .4byte .LASF2625 + .byte 0x5 + .byte 0x55 + .4byte .LASF2626 + .byte 0x5 + .byte 0x56 + .4byte .LASF2627 + .byte 0x5 + .byte 0x57 + .4byte .LASF2628 + .byte 0x5 + .byte 0x58 + .4byte .LASF2629 + .byte 0x5 + .byte 0x59 + .4byte .LASF2630 + .byte 0x5 + .byte 0x5a + .4byte .LASF2631 + .byte 0x5 + .byte 0x5b + .4byte .LASF2632 + .byte 0x5 + .byte 0x5c + .4byte .LASF2633 + .byte 0x5 + .byte 0x5d + .4byte .LASF2634 + .byte 0x5 + .byte 0x5e + .4byte .LASF2635 + .byte 0x5 + .byte 0x5f + .4byte .LASF2636 + .byte 0x5 + .byte 0x62 + .4byte .LASF2637 + .byte 0x5 + .byte 0x63 + .4byte .LASF2638 + .byte 0x5 + .byte 0x64 + .4byte .LASF2639 + .byte 0x5 + .byte 0x65 + .4byte .LASF2640 + .byte 0x5 + .byte 0x66 + .4byte .LASF2641 + .byte 0x5 + .byte 0x67 + .4byte .LASF2642 + .byte 0x5 + .byte 0x68 + .4byte .LASF2643 + .byte 0x5 + .byte 0x6b + .4byte .LASF2644 + .byte 0x5 + .byte 0x6c + .4byte .LASF2645 + .byte 0x5 + .byte 0x6d + .4byte .LASF2646 + .byte 0x5 + .byte 0x6e + .4byte .LASF2647 + .byte 0x5 + .byte 0x6f + .4byte .LASF2648 + .byte 0x5 + .byte 0x70 + .4byte .LASF2649 + .byte 0x5 + .byte 0x71 + .4byte .LASF2650 + .byte 0x5 + .byte 0x72 + .4byte .LASF2651 + .byte 0x5 + .byte 0x73 + .4byte .LASF2652 + .byte 0x5 + .byte 0x74 + .4byte .LASF2653 + .byte 0x5 + .byte 0x75 + .4byte .LASF2654 + .byte 0x5 + .byte 0x76 + .4byte .LASF2655 + .byte 0x5 + .byte 0x77 + .4byte .LASF2656 + .byte 0x5 + .byte 0x78 + .4byte .LASF2657 + .byte 0x5 + .byte 0x79 + .4byte .LASF2658 + .byte 0x5 + .byte 0x7c + .4byte .LASF2659 + .byte 0x5 + .byte 0x7d + .4byte .LASF2660 + .byte 0x5 + .byte 0x7e + .4byte .LASF2661 + .byte 0x5 + .byte 0x7f + .4byte .LASF2662 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF2663 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF2664 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF2665 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF2666 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF2667 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF2668 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF2669 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF2670 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF2671 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF2672 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF2673 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF2674 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF2675 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF2676 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF2677 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF2678 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF2679 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF2680 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF2681 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF2682 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF2683 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF2684 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF2685 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF2686 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF2687 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF2688 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF2689 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF2690 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF2691 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF2692 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF2693 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF2694 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF2695 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF2696 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF2697 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF2698 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF2699 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF2700 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF2701 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF2702 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF2703 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF2704 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF2705 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF2706 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF2707 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF2708 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF2709 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF2710 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF2711 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF2712 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF2713 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF2714 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF2715 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF2716 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF2717 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF2718 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF2719 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF2720 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF2721 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF2722 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF2723 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF2724 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF2725 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF2726 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF2727 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF2728 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF2729 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF2730 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF2731 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF2732 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF2733 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF2734 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF2735 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF2736 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF2737 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF2738 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF2739 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF2740 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF2741 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF2742 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF2743 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF2744 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF2745 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF2746 + .byte 0x5 + .byte 0xa4,0x2 + .4byte .LASF2747 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF2748 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF2749 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF2750 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF2751 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF2752 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF2753 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF2754 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF2755 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF2756 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF2757 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF2758 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF2759 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF2760 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF2761 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF2762 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF2763 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF2764 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF2765 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF2766 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF2767 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF2768 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF2769 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF2770 + .byte 0x5 + .byte 0xc2,0x2 + .4byte .LASF2771 + .byte 0x5 + .byte 0xc3,0x2 + .4byte .LASF2772 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF2773 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF2774 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF2775 + .byte 0x5 + .byte 0xc9,0x2 + .4byte .LASF2776 + .byte 0x5 + .byte 0xcc,0x2 + .4byte .LASF2777 + .byte 0x5 + .byte 0xcd,0x2 + .4byte .LASF2778 + .byte 0x5 + .byte 0xce,0x2 + .4byte .LASF2779 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF2780 + .byte 0x5 + .byte 0xd0,0x2 + .4byte .LASF2781 + .byte 0x5 + .byte 0xd1,0x2 + .4byte .LASF2782 + .byte 0x5 + .byte 0xd2,0x2 + .4byte .LASF2783 + .byte 0x5 + .byte 0xd3,0x2 + .4byte .LASF2784 + .byte 0x5 + .byte 0xd4,0x2 + .4byte .LASF2785 + .byte 0x5 + .byte 0xd5,0x2 + .4byte .LASF2786 + .byte 0x5 + .byte 0xd6,0x2 + .4byte .LASF2787 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF2788 + .byte 0x5 + .byte 0xd8,0x2 + .4byte .LASF2789 + .byte 0x5 + .byte 0xd9,0x2 + .4byte .LASF2790 + .byte 0x5 + .byte 0xda,0x2 + .4byte .LASF2791 + .byte 0x5 + .byte 0xdb,0x2 + .4byte .LASF2792 + .byte 0x5 + .byte 0xdc,0x2 + .4byte .LASF2793 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF2794 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF2795 + .byte 0x5 + .byte 0xdf,0x2 + .4byte .LASF2796 + .byte 0x5 + .byte 0xe2,0x2 + .4byte .LASF2797 + .byte 0x5 + .byte 0xe3,0x2 + .4byte .LASF2798 + .byte 0x5 + .byte 0xe4,0x2 + .4byte .LASF2799 + .byte 0x5 + .byte 0xe5,0x2 + .4byte .LASF2800 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF2801 + .byte 0x5 + .byte 0xe7,0x2 + .4byte .LASF2802 + .byte 0x5 + .byte 0xe8,0x2 + .4byte .LASF2803 + .byte 0x5 + .byte 0xe9,0x2 + .4byte .LASF2804 + .byte 0x5 + .byte 0xea,0x2 + .4byte .LASF2805 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF2806 + .byte 0x5 + .byte 0xec,0x2 + .4byte .LASF2807 + .byte 0x5 + .byte 0xed,0x2 + .4byte .LASF2808 + .byte 0x5 + .byte 0xee,0x2 + .4byte .LASF2809 + .byte 0x5 + .byte 0xef,0x2 + .4byte .LASF2810 + .byte 0x5 + .byte 0xf0,0x2 + .4byte .LASF2811 + .byte 0x5 + .byte 0xf1,0x2 + .4byte .LASF2812 + .byte 0x5 + .byte 0xf2,0x2 + .4byte .LASF2813 + .byte 0x5 + .byte 0xf3,0x2 + .4byte .LASF2814 + .byte 0x5 + .byte 0xf4,0x2 + .4byte .LASF2815 + .byte 0x5 + .byte 0xf7,0x2 + .4byte .LASF2816 + .byte 0x5 + .byte 0xf8,0x2 + .4byte .LASF2817 + .byte 0x5 + .byte 0xf9,0x2 + .4byte .LASF2818 + .byte 0x5 + .byte 0xfa,0x2 + .4byte .LASF2819 + .byte 0x5 + .byte 0xfb,0x2 + .4byte .LASF2820 + .byte 0x5 + .byte 0xfc,0x2 + .4byte .LASF2821 + .byte 0x5 + .byte 0xfd,0x2 + .4byte .LASF2822 + .byte 0x5 + .byte 0xfe,0x2 + .4byte .LASF2823 + .byte 0x5 + .byte 0x81,0x3 + .4byte .LASF2824 + .byte 0x5 + .byte 0x82,0x3 + .4byte .LASF2825 + .byte 0x5 + .byte 0x83,0x3 + .4byte .LASF2826 + .byte 0x5 + .byte 0x84,0x3 + .4byte .LASF2827 + .byte 0x5 + .byte 0x85,0x3 + .4byte .LASF2828 + .byte 0x5 + .byte 0x88,0x3 + .4byte .LASF2829 + .byte 0x5 + .byte 0x89,0x3 + .4byte .LASF2830 + .byte 0x5 + .byte 0x8c,0x3 + .4byte .LASF2831 + .byte 0x5 + .byte 0x8d,0x3 + .4byte .LASF2832 + .byte 0x5 + .byte 0x90,0x3 + .4byte .LASF2833 + .byte 0x5 + .byte 0x91,0x3 + .4byte .LASF2834 + .byte 0x5 + .byte 0x92,0x3 + .4byte .LASF2835 + .byte 0x5 + .byte 0x93,0x3 + .4byte .LASF2836 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF2837 + .byte 0x5 + .byte 0x97,0x3 + .4byte .LASF2838 + .byte 0x5 + .byte 0x9a,0x3 + .4byte .LASF2839 + .byte 0x5 + .byte 0x9b,0x3 + .4byte .LASF2840 + .byte 0x5 + .byte 0x9e,0x3 + .4byte .LASF2841 + .byte 0x5 + .byte 0x9f,0x3 + .4byte .LASF2842 + .byte 0x5 + .byte 0xa3,0x3 + .4byte .LASF2843 + .byte 0x5 + .byte 0xa4,0x3 + .4byte .LASF2844 + .byte 0x5 + .byte 0xa7,0x3 + .4byte .LASF2845 + .byte 0x5 + .byte 0xa8,0x3 + .4byte .LASF2846 + .byte 0x5 + .byte 0xab,0x3 + .4byte .LASF2847 + .byte 0x5 + .byte 0xac,0x3 + .4byte .LASF2848 + .byte 0x5 + .byte 0xaf,0x3 + .4byte .LASF2849 + .byte 0x5 + .byte 0xb0,0x3 + .4byte .LASF2850 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF2851 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF2852 + .byte 0x5 + .byte 0xb3,0x3 + .4byte .LASF2853 + .byte 0x5 + .byte 0xb6,0x3 + .4byte .LASF2854 + .byte 0x5 + .byte 0xb7,0x3 + .4byte .LASF2855 + .byte 0x5 + .byte 0xba,0x3 + .4byte .LASF2856 + .byte 0x5 + .byte 0xbb,0x3 + .4byte .LASF2857 + .byte 0x5 + .byte 0xbc,0x3 + .4byte .LASF2858 + .byte 0x5 + .byte 0xbd,0x3 + .4byte .LASF2859 + .byte 0x5 + .byte 0xc0,0x3 + .4byte .LASF2860 + .byte 0x5 + .byte 0xc1,0x3 + .4byte .LASF2861 + .byte 0x5 + .byte 0xc4,0x3 + .4byte .LASF2862 + .byte 0x5 + .byte 0xc5,0x3 + .4byte .LASF2863 + .byte 0x5 + .byte 0xc8,0x3 + .4byte .LASF2864 + .byte 0x5 + .byte 0xc9,0x3 + .4byte .LASF2865 + .byte 0x5 + .byte 0xcc,0x3 + .4byte .LASF2866 + .byte 0x5 + .byte 0xcd,0x3 + .4byte .LASF2867 + .byte 0x5 + .byte 0xd0,0x3 + .4byte .LASF2868 + .byte 0x5 + .byte 0xd1,0x3 + .4byte .LASF2869 + .byte 0x5 + .byte 0xd4,0x3 + .4byte .LASF2870 + .byte 0x5 + .byte 0xd5,0x3 + .4byte .LASF2871 + .byte 0x5 + .byte 0xd8,0x3 + .4byte .LASF2872 + .byte 0x5 + .byte 0xd9,0x3 + .4byte .LASF2873 + .byte 0x5 + .byte 0xda,0x3 + .4byte .LASF2874 + .byte 0x5 + .byte 0xdb,0x3 + .4byte .LASF2875 + .byte 0x5 + .byte 0xdc,0x3 + .4byte .LASF2876 + .byte 0x5 + .byte 0xdd,0x3 + .4byte .LASF2877 + .byte 0x5 + .byte 0xde,0x3 + .4byte .LASF2878 + .byte 0x5 + .byte 0xdf,0x3 + .4byte .LASF2879 + .byte 0x5 + .byte 0xe2,0x3 + .4byte .LASF2880 + .byte 0x5 + .byte 0xe3,0x3 + .4byte .LASF2881 + .byte 0x5 + .byte 0xe6,0x3 + .4byte .LASF2882 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF2883 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF2884 + .byte 0x5 + .byte 0xeb,0x3 + .4byte .LASF2885 + .byte 0x5 + .byte 0xee,0x3 + .4byte .LASF2886 + .byte 0x5 + .byte 0xef,0x3 + .4byte .LASF2887 + .byte 0x5 + .byte 0xf2,0x3 + .4byte .LASF2888 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF2889 + .byte 0x5 + .byte 0xf4,0x3 + .4byte .LASF2890 + .byte 0x5 + .byte 0xf7,0x3 + .4byte .LASF2891 + .byte 0x5 + .byte 0xf8,0x3 + .4byte .LASF2892 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF2893 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF2894 + .byte 0x5 + .byte 0xfd,0x3 + .4byte .LASF2895 + .byte 0x5 + .byte 0xfe,0x3 + .4byte .LASF2896 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF2897 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF2898 + .byte 0x5 + .byte 0x83,0x4 + .4byte .LASF2899 + .byte 0x5 + .byte 0x84,0x4 + .4byte .LASF2900 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF2901 + .byte 0x5 + .byte 0x86,0x4 + .4byte .LASF2902 + .byte 0x5 + .byte 0x87,0x4 + .4byte .LASF2903 + .byte 0x5 + .byte 0x88,0x4 + .4byte .LASF2904 + .byte 0x5 + .byte 0x89,0x4 + .4byte .LASF2905 + .byte 0x5 + .byte 0x8a,0x4 + .4byte .LASF2906 + .byte 0x5 + .byte 0x8d,0x4 + .4byte .LASF2907 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF2908 + .byte 0x5 + .byte 0x8f,0x4 + .4byte .LASF2909 + .byte 0x5 + .byte 0x90,0x4 + .4byte .LASF2910 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF2911 + .byte 0x5 + .byte 0x92,0x4 + .4byte .LASF2912 + .byte 0x5 + .byte 0x93,0x4 + .4byte .LASF2913 + .byte 0x5 + .byte 0x94,0x4 + .4byte .LASF2914 + .byte 0x5 + .byte 0x95,0x4 + .4byte .LASF2915 + .byte 0x5 + .byte 0x98,0x4 + .4byte .LASF2916 + .byte 0x5 + .byte 0x99,0x4 + .4byte .LASF2917 + .byte 0x5 + .byte 0x9a,0x4 + .4byte .LASF2918 + .byte 0x5 + .byte 0x9b,0x4 + .4byte .LASF2919 + .byte 0x5 + .byte 0x9c,0x4 + .4byte .LASF2920 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF2921 + .byte 0x5 + .byte 0x9e,0x4 + .4byte .LASF2922 + .byte 0x5 + .byte 0x9f,0x4 + .4byte .LASF2923 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF2924 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF2925 + .byte 0x5 + .byte 0xa4,0x4 + .4byte .LASF2926 + .byte 0x5 + .byte 0xa7,0x4 + .4byte .LASF2927 + .byte 0x5 + .byte 0xa8,0x4 + .4byte .LASF2928 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF2929 + .byte 0x5 + .byte 0xaa,0x4 + .4byte .LASF2930 + .byte 0x5 + .byte 0xab,0x4 + .4byte .LASF2931 + .byte 0x5 + .byte 0xae,0x4 + .4byte .LASF2932 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF2933 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF2934 + .byte 0x5 + .byte 0xb3,0x4 + .4byte .LASF2935 + .byte 0x5 + .byte 0xb6,0x4 + .4byte .LASF2936 + .byte 0x5 + .byte 0xb7,0x4 + .4byte .LASF2937 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_usart.h.38.bd493dc3b9236603b2fca39bcddb0020,comdat +.Ldebug_macro29: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x26 + .4byte .LASF2938 + .byte 0x5 + .byte 0x2b + .4byte .LASF2939 + .byte 0x5 + .byte 0x2c + .4byte .LASF2940 + .byte 0x5 + .byte 0x2d + .4byte .LASF2941 + .byte 0x5 + .byte 0x2e + .4byte .LASF2942 + .byte 0x5 + .byte 0x2f + .4byte .LASF2943 + .byte 0x5 + .byte 0x32 + .4byte .LASF2944 + .byte 0x5 + .byte 0x33 + .4byte .LASF2945 + .byte 0x5 + .byte 0x34 + .4byte .LASF2946 + .byte 0x5 + .byte 0x35 + .4byte .LASF2947 + .byte 0x5 + .byte 0x36 + .4byte .LASF2948 + .byte 0x5 + .byte 0x37 + .4byte .LASF2949 + .byte 0x5 + .byte 0x38 + .4byte .LASF2950 + .byte 0x5 + .byte 0x3c + .4byte .LASF2951 + .byte 0x5 + .byte 0x3d + .4byte .LASF2952 + .byte 0x5 + .byte 0x3e + .4byte .LASF2953 + .byte 0x5 + .byte 0x3f + .4byte .LASF2954 + .byte 0x5 + .byte 0x40 + .4byte .LASF2955 + .byte 0x5 + .byte 0x41 + .4byte .LASF2956 + .byte 0x5 + .byte 0x42 + .4byte .LASF2957 + .byte 0x5 + .byte 0x43 + .4byte .LASF2958 + .byte 0x5 + .byte 0x44 + .4byte .LASF2959 + .byte 0x5 + .byte 0x45 + .4byte .LASF2960 + .byte 0x5 + .byte 0x48 + .4byte .LASF2961 + .byte 0x5 + .byte 0x4b + .4byte .LASF2962 + .byte 0x5 + .byte 0x4c + .4byte .LASF2963 + .byte 0x5 + .byte 0x4f + .4byte .LASF2964 + .byte 0x5 + .byte 0x50 + .4byte .LASF2965 + .byte 0x5 + .byte 0x51 + .4byte .LASF2966 + .byte 0x5 + .byte 0x52 + .4byte .LASF2967 + .byte 0x5 + .byte 0x53 + .4byte .LASF2968 + .byte 0x5 + .byte 0x54 + .4byte .LASF2969 + .byte 0x5 + .byte 0x55 + .4byte .LASF2970 + .byte 0x5 + .byte 0x56 + .4byte .LASF2971 + .byte 0x5 + .byte 0x57 + .4byte .LASF2972 + .byte 0x5 + .byte 0x58 + .4byte .LASF2973 + .byte 0x5 + .byte 0x59 + .4byte .LASF2974 + .byte 0x5 + .byte 0x5a + .4byte .LASF2975 + .byte 0x5 + .byte 0x5b + .4byte .LASF2976 + .byte 0x5 + .byte 0x5c + .4byte .LASF2977 + .byte 0x5 + .byte 0x5f + .4byte .LASF2978 + .byte 0x5 + .byte 0x60 + .4byte .LASF2979 + .byte 0x5 + .byte 0x61 + .4byte .LASF2980 + .byte 0x5 + .byte 0x62 + .4byte .LASF2981 + .byte 0x5 + .byte 0x63 + .4byte .LASF2982 + .byte 0x5 + .byte 0x64 + .4byte .LASF2983 + .byte 0x5 + .byte 0x65 + .4byte .LASF2984 + .byte 0x5 + .byte 0x66 + .4byte .LASF2985 + .byte 0x5 + .byte 0x67 + .4byte .LASF2986 + .byte 0x5 + .byte 0x6a + .4byte .LASF2987 + .byte 0x5 + .byte 0x6b + .4byte .LASF2988 + .byte 0x5 + .byte 0x6c + .4byte .LASF2989 + .byte 0x5 + .byte 0x6d + .4byte .LASF2990 + .byte 0x5 + .byte 0x6e + .4byte .LASF2991 + .byte 0x5 + .byte 0x6f + .4byte .LASF2992 + .byte 0x5 + .byte 0x70 + .4byte .LASF2993 + .byte 0x5 + .byte 0x71 + .4byte .LASF2994 + .byte 0x5 + .byte 0x72 + .4byte .LASF2995 + .byte 0x5 + .byte 0x73 + .4byte .LASF2996 + .byte 0x5 + .byte 0x74 + .4byte .LASF2997 + .byte 0x5 + .byte 0x77 + .4byte .LASF2998 + .byte 0x5 + .byte 0x78 + .4byte .LASF2999 + .byte 0x5 + .byte 0x7c + .4byte .LASF3000 + .byte 0x5 + .byte 0x7d + .4byte .LASF3001 + .byte 0x5 + .byte 0x7e + .4byte .LASF3002 + .byte 0x5 + .byte 0x7f + .4byte .LASF3003 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF3004 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF3005 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF3006 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF3007 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF3008 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF3009 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF3010 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF3011 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF3012 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF3013 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF3014 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF3015 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF3016 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF3017 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF3018 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF3019 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF3020 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF3021 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF3022 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF3023 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF3024 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF3025 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF3026 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF3027 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF3028 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF3029 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF3030 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF3031 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF3032 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF3033 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF3034 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF3035 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF3036 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF3037 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF3038 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF3039 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF3040 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF3041 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF3042 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF3043 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF3044 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF3045 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF3046 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF3047 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF3048 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF3049 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF3050 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF3051 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF3052 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF3053 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF3054 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF3055 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF3056 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF3057 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.gd32vf103_wwdgt.h.37.3e64b838fd471007da900965463a8419,comdat +.Ldebug_macro30: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x25 + .4byte .LASF3058 + .byte 0x5 + .byte 0x2a + .4byte .LASF3059 + .byte 0x5 + .byte 0x2d + .4byte .LASF3060 + .byte 0x5 + .byte 0x2e + .4byte .LASF3061 + .byte 0x5 + .byte 0x2f + .4byte .LASF3062 + .byte 0x5 + .byte 0x33 + .4byte .LASF3063 + .byte 0x5 + .byte 0x34 + .4byte .LASF3064 + .byte 0x5 + .byte 0x37 + .4byte .LASF3065 + .byte 0x5 + .byte 0x38 + .4byte .LASF3066 + .byte 0x5 + .byte 0x39 + .4byte .LASF3067 + .byte 0x5 + .byte 0x3c + .4byte .LASF3068 + .byte 0x5 + .byte 0x3f + .4byte .LASF3069 + .byte 0x5 + .byte 0x40 + .4byte .LASF3070 + .byte 0x5 + .byte 0x41 + .4byte .LASF3071 + .byte 0x5 + .byte 0x42 + .4byte .LASF3072 + .byte 0x5 + .byte 0x43 + .4byte .LASF3073 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stddef.h.39.144cf5ddcd53cbfdac30259dc1a6c87f,comdat +.Ldebug_macro31: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x27 + .4byte .LASF3075 + .byte 0x5 + .byte 0x28 + .4byte .LASF3076 + .byte 0x5 + .byte 0x2a + .4byte .LASF3077 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF3078 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF3079 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF3080 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF3081 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF3082 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF3083 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF3084 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF3085 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF3086 + .byte 0x6 + .byte 0x9b,0x1 + .4byte .LASF3087 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF3088 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF3089 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF3090 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF3091 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF3092 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF3093 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF3094 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF3095 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF3096 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF3097 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF3098 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF3099 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF3100 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF3101 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF3102 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF3103 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF3104 + .byte 0x6 + .byte 0xe7,0x1 + .4byte .LASF3105 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF3106 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF3107 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF3108 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF3109 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF3110 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF3111 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF3112 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF3113 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF3114 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF3115 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF3116 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF3117 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF3118 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF3119 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF3120 + .byte 0x6 + .byte 0x9f,0x2 + .4byte .LASF3121 + .byte 0x6 + .byte 0xd4,0x2 + .4byte .LASF3122 + .byte 0x6 + .byte 0x86,0x3 + .4byte .LASF3123 + .byte 0x5 + .byte 0x8b,0x3 + .4byte .LASF3124 + .byte 0x6 + .byte 0x91,0x3 + .4byte .LASF3125 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF3126 + .byte 0x5 + .byte 0x9b,0x3 + .4byte .LASF3127 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_timer.h.4.7cbfcb0f457964ecd81bc2aaf47d8b32,comdat +.Ldebug_macro32: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4 + .4byte .LASF3128 + .byte 0x5 + .byte 0x6 + .4byte .LASF3129 + .byte 0x5 + .byte 0x7 + .4byte .LASF3130 + .byte 0x5 + .byte 0x8 + .4byte .LASF3131 + .byte 0x5 + .byte 0x9 + .4byte .LASF3132 + .byte 0x5 + .byte 0xa + .4byte .LASF3133 + .byte 0x5 + .byte 0xb + .4byte .LASF3134 + .byte 0x5 + .byte 0xd + .4byte .LASF3135 + .byte 0x5 + .byte 0xe + .4byte .LASF3136 + .byte 0x5 + .byte 0xf + .4byte .LASF3137 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.riscv_const.h.5.95ac0744d59bfc0d17f4e8adf85ccb42,comdat +.Ldebug_macro33: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x5 + .4byte .LASF3139 + .byte 0x5 + .byte 0xb + .4byte .LASF3140 + .byte 0x5 + .byte 0xc + .4byte .LASF3141 + .byte 0x5 + .byte 0xf + .4byte .LASF3142 + .byte 0x5 + .byte 0x10 + .4byte .LASF3143 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_eclic.h.8.88844f0cdf4d8e1ef4e06c0cb5147462,comdat +.Ldebug_macro34: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x8 + .4byte .LASF3144 + .byte 0x5 + .byte 0xd + .4byte .LASF3145 + .byte 0x5 + .byte 0xf + .4byte .LASF3146 + .byte 0x5 + .byte 0x11 + .4byte .LASF3147 + .byte 0x5 + .byte 0x14 + .4byte .LASF3148 + .byte 0x5 + .byte 0x16 + .4byte .LASF3149 + .byte 0x5 + .byte 0x18 + .4byte .LASF3150 + .byte 0x5 + .byte 0x1a + .4byte .LASF3151 + .byte 0x5 + .byte 0x1b + .4byte .LASF3152 + .byte 0x5 + .byte 0x1c + .4byte .LASF3153 + .byte 0x5 + .byte 0x1d + .4byte .LASF3154 + .byte 0x5 + .byte 0x1e + .4byte .LASF3155 + .byte 0x5 + .byte 0x21 + .4byte .LASF3156 + .byte 0x5 + .byte 0x23 + .4byte .LASF3157 + .byte 0x5 + .byte 0x26 + .4byte .LASF3158 + .byte 0x5 + .byte 0x27 + .4byte .LASF3159 + .byte 0x5 + .byte 0x29 + .4byte .LASF3160 + .byte 0x5 + .byte 0x2a + .4byte .LASF3161 + .byte 0x5 + .byte 0x2b + .4byte .LASF3162 + .byte 0x5 + .byte 0x2c + .4byte .LASF3163 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.n200_func.h.11.5e6cb65336aea242ab47b239a06795e1,comdat +.Ldebug_macro35: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xb + .4byte .LASF3164 + .byte 0x5 + .byte 0xc + .4byte .LASF3165 + .byte 0x5 + .byte 0xd + .4byte .LASF3166 + .byte 0x5 + .byte 0xe + .4byte .LASF3167 + .byte 0x5 + .byte 0xf + .4byte .LASF3168 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.newlib.h.8.542bedab3c90294c348821966b79eb81,comdat +.Ldebug_macro36: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x8 + .4byte .LASF3171 + .byte 0x5 + .byte 0x12 + .4byte .LASF3172 + .byte 0x5 + .byte 0x15 + .4byte .LASF3173 + .byte 0x5 + .byte 0x18 + .4byte .LASF3174 + .byte 0x5 + .byte 0x1b + .4byte .LASF3175 + .byte 0x5 + .byte 0x25 + .4byte .LASF3176 + .byte 0x5 + .byte 0x2b + .4byte .LASF3177 + .byte 0x5 + .byte 0x35 + .4byte .LASF3178 + .byte 0x5 + .byte 0x3c + .4byte .LASF3179 + .byte 0x5 + .byte 0x3f + .4byte .LASF3180 + .byte 0x5 + .byte 0x45 + .4byte .LASF3181 + .byte 0x5 + .byte 0x48 + .4byte .LASF3182 + .byte 0x5 + .byte 0x4b + .4byte .LASF3183 + .byte 0x5 + .byte 0x4e + .4byte .LASF3184 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.ieeefp.h.202.4f2759f5758fd82153cfbf98692f2ced,comdat +.Ldebug_macro37: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF3186 + .byte 0x5 + .byte 0xec,0x3 + .4byte .LASF3187 + .byte 0x5 + .byte 0xef,0x3 + .4byte .LASF3188 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.config.h.83.13bbc8852bfac55b724c9822481355b5,comdat +.Ldebug_macro38: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x53 + .4byte .LASF3189 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF3190 + .byte 0x6 + .byte 0xe6,0x1 + .4byte .LASF3191 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF3192 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF3193 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF3194 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF3195 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._ansi.h.31.de524f58584151836e90d8620a16f8e8,comdat +.Ldebug_macro39: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x1f + .4byte .LASF3196 + .byte 0x5 + .byte 0x20 + .4byte .LASF3197 + .byte 0x5 + .byte 0x21 + .4byte .LASF3198 + .byte 0x5 + .byte 0x25 + .4byte .LASF3199 + .byte 0x5 + .byte 0x2b + .4byte .LASF3200 + .byte 0x5 + .byte 0x45 + .4byte .LASF3201 + .byte 0x5 + .byte 0x49 + .4byte .LASF3202 + .byte 0x5 + .byte 0x4a + .4byte .LASF3203 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stdio.h.31.7c0e28c411445f3f9c5b11accf882760,comdat +.Ldebug_macro40: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x1f + .4byte .LASF3204 + .byte 0x5 + .byte 0x21 + .4byte .LASF3205 + .byte 0x5 + .byte 0x22 + .4byte .LASF3206 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stddef.h.155.ba788add86a0e365f264484f110c3c29,comdat +.Ldebug_macro41: + .2byte 0x4 + .byte 0 + .byte 0x6 + .byte 0x9b,0x1 + .4byte .LASF3087 + .byte 0x6 + .byte 0xe7,0x1 + .4byte .LASF3105 + .byte 0x6 + .byte 0xd4,0x2 + .4byte .LASF3122 + .byte 0x6 + .byte 0x86,0x3 + .4byte .LASF3123 + .byte 0x5 + .byte 0x8b,0x3 + .4byte .LASF3124 + .byte 0x6 + .byte 0x91,0x3 + .4byte .LASF3125 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF3126 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.cdefs.h.49.39045112216f6a021dbdffe3bf5accce,comdat +.Ldebug_macro42: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x31 + .4byte .LASF3208 + .byte 0x5 + .byte 0x32 + .4byte .LASF3209 + .byte 0x5 + .byte 0x33 + .4byte .LASF3210 + .byte 0x5 + .byte 0x36 + .4byte .LASF3211 + .byte 0x5 + .byte 0x39 + .4byte .LASF3212 + .byte 0x5 + .byte 0x3a + .4byte .LASF3213 + .byte 0x5 + .byte 0x3c + .4byte .LASF3214 + .byte 0x5 + .byte 0x3d + .4byte .LASF3215 + .byte 0x5 + .byte 0x3e + .4byte .LASF3216 + .byte 0x5 + .byte 0x3f + .4byte .LASF3217 + .byte 0x5 + .byte 0x42 + .4byte .LASF3218 + .byte 0x5 + .byte 0x43 + .4byte .LASF3219 + .byte 0x5 + .byte 0x44 + .4byte .LASF3220 + .byte 0x5 + .byte 0x4e + .4byte .LASF3221 + .byte 0x5 + .byte 0x51 + .4byte .LASF3222 + .byte 0x5 + .byte 0x5e + .4byte .LASF3223 + .byte 0x5 + .byte 0x5f + .4byte .LASF3224 + .byte 0x5 + .byte 0x6b + .4byte .LASF3225 + .byte 0x5 + .byte 0x6c + .4byte .LASF3226 + .byte 0x5 + .byte 0x70 + .4byte .LASF3227 + .byte 0x5 + .byte 0x71 + .4byte .LASF3228 + .byte 0x5 + .byte 0x72 + .4byte .LASF3229 + .byte 0x5 + .byte 0x75 + .4byte .LASF3230 + .byte 0x5 + .byte 0x78 + .4byte .LASF3231 + .byte 0x5 + .byte 0x7f + .4byte .LASF3232 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF3233 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF3234 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF3235 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF3236 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF3237 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF3238 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF3239 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF3240 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF3241 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF3242 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF3243 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF3244 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF3245 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF3246 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF3247 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF3248 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF3249 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF3250 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF3251 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF3252 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF3253 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF3254 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF3255 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF3256 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF3257 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF3258 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF3259 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF3260 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF3261 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF3262 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF3263 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF3264 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF3265 + .byte 0x5 + .byte 0xdc,0x2 + .4byte .LASF3266 + .byte 0x5 + .byte 0xee,0x2 + .4byte .LASF3267 + .byte 0x5 + .byte 0xf4,0x2 + .4byte .LASF3268 + .byte 0x5 + .byte 0xf5,0x2 + .4byte .LASF3269 + .byte 0x5 + .byte 0xfc,0x2 + .4byte .LASF3270 + .byte 0x5 + .byte 0x82,0x3 + .4byte .LASF3271 + .byte 0x5 + .byte 0x88,0x3 + .4byte .LASF3272 + .byte 0x5 + .byte 0x89,0x3 + .4byte .LASF3273 + .byte 0x5 + .byte 0x90,0x3 + .4byte .LASF3274 + .byte 0x5 + .byte 0x91,0x3 + .4byte .LASF3275 + .byte 0x5 + .byte 0x98,0x3 + .4byte .LASF3276 + .byte 0x5 + .byte 0x9e,0x3 + .4byte .LASF3277 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF3278 + .byte 0x5 + .byte 0xd3,0x3 + .4byte .LASF3279 + .byte 0x5 + .byte 0xd4,0x3 + .4byte .LASF3280 + .byte 0x5 + .byte 0xdb,0x3 + .4byte .LASF3281 + .byte 0x5 + .byte 0xdc,0x3 + .4byte .LASF3282 + .byte 0x5 + .byte 0xdf,0x3 + .4byte .LASF3283 + .byte 0x5 + .byte 0xe9,0x3 + .4byte .LASF3284 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF3285 + .byte 0x5 + .byte 0xf4,0x3 + .4byte .LASF3286 + .byte 0x5 + .byte 0x8a,0x4 + .4byte .LASF3287 + .byte 0x5 + .byte 0x8c,0x4 + .4byte .LASF3288 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF3289 + .byte 0x5 + .byte 0x8f,0x4 + .4byte .LASF3290 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF3291 + .byte 0x5 + .byte 0x9b,0x4 + .4byte .LASF3292 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF3293 + .byte 0x5 + .byte 0xa5,0x4 + .4byte .LASF3294 + .byte 0x5 + .byte 0xa8,0x4 + .4byte .LASF3295 + .byte 0x5 + .byte 0xac,0x4 + .4byte .LASF3296 + .byte 0x5 + .byte 0xae,0x4 + .4byte .LASF3297 + .byte 0x5 + .byte 0xd1,0x4 + .4byte .LASF3298 + .byte 0x5 + .byte 0xd5,0x4 + .4byte .LASF3299 + .byte 0x5 + .byte 0xd9,0x4 + .4byte .LASF3300 + .byte 0x5 + .byte 0xdd,0x4 + .4byte .LASF3301 + .byte 0x5 + .byte 0xe1,0x4 + .4byte .LASF3302 + .byte 0x5 + .byte 0xe5,0x4 + .4byte .LASF3303 + .byte 0x5 + .byte 0xe9,0x4 + .4byte .LASF3304 + .byte 0x5 + .byte 0xed,0x4 + .4byte .LASF3305 + .byte 0x5 + .byte 0xf4,0x4 + .4byte .LASF3306 + .byte 0x5 + .byte 0xf5,0x4 + .4byte .LASF3307 + .byte 0x5 + .byte 0xf6,0x4 + .4byte .LASF3308 + .byte 0x5 + .byte 0xf7,0x4 + .4byte .LASF3309 + .byte 0x5 + .byte 0xf8,0x4 + .4byte .LASF3310 + .byte 0x5 + .byte 0x8d,0x5 + .4byte .LASF3311 + .byte 0x5 + .byte 0x8e,0x5 + .4byte .LASF3312 + .byte 0x5 + .byte 0xa0,0x5 + .4byte .LASF3313 + .byte 0x5 + .byte 0xa6,0x5 + .4byte .LASF3314 + .byte 0x5 + .byte 0xa9,0x5 + .4byte .LASF3315 + .byte 0x5 + .byte 0xab,0x5 + .4byte .LASF3316 + .byte 0x5 + .byte 0xaf,0x5 + .4byte .LASF3317 + .byte 0x5 + .byte 0xb1,0x5 + .4byte .LASF3318 + .byte 0x5 + .byte 0xb5,0x5 + .4byte .LASF3319 + .byte 0x5 + .byte 0xb8,0x5 + .4byte .LASF3320 + .byte 0x5 + .byte 0xba,0x5 + .4byte .LASF3321 + .byte 0x5 + .byte 0xbe,0x5 + .4byte .LASF3322 + .byte 0x5 + .byte 0xc0,0x5 + .4byte .LASF3323 + .byte 0x5 + .byte 0xc2,0x5 + .4byte .LASF3324 + .byte 0x5 + .byte 0xc6,0x5 + .4byte .LASF3325 + .byte 0x5 + .byte 0xd1,0x5 + .4byte .LASF3326 + .byte 0x5 + .byte 0xd2,0x5 + .4byte .LASF3327 + .byte 0x5 + .byte 0xd6,0x5 + .4byte .LASF3328 + .byte 0x5 + .byte 0xd7,0x5 + .4byte .LASF3329 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stdarg.h.34.3a23a216c0c293b3d2ea2e89281481e6,comdat +.Ldebug_macro43: + .2byte 0x4 + .byte 0 + .byte 0x6 + .byte 0x22 + .4byte .LASF3331 + .byte 0x5 + .byte 0x27 + .4byte .LASF3332 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._types.h.20.dd0d04dca3800a0d2a6129b87f3adbb2,comdat +.Ldebug_macro44: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x14 + .4byte .LASF3334 + .byte 0x5 + .byte 0x16 + .4byte .LASF3205 + .byte 0x5 + .byte 0x17 + .4byte .LASF3335 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stddef.h.155.3588ebfdd1e8c7ede80509bb9c3b8009,comdat +.Ldebug_macro45: + .2byte 0x4 + .byte 0 + .byte 0x6 + .byte 0x9b,0x1 + .4byte .LASF3087 + .byte 0x6 + .byte 0xe7,0x1 + .4byte .LASF3105 + .byte 0x6 + .byte 0xd4,0x2 + .4byte .LASF3122 + .byte 0x5 + .byte 0xd9,0x2 + .4byte .LASF3336 + .byte 0x6 + .byte 0xe0,0x2 + .4byte .LASF3337 + .byte 0x6 + .byte 0x86,0x3 + .4byte .LASF3123 + .byte 0x5 + .byte 0x8b,0x3 + .4byte .LASF3124 + .byte 0x6 + .byte 0x91,0x3 + .4byte .LASF3125 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF3126 + .byte 0 + .section .debug_macro,"G",@progbits,wm4._types.h.127.34941de1b2539d59d5cac00e0dd27a45,comdat +.Ldebug_macro46: + .2byte 0x4 + .byte 0 + .byte 0x6 + .byte 0x7f + .4byte .LASF3339 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF3340 + .byte 0x6 + .byte 0x94,0x1 + .4byte .LASF376 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF3341 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF3342 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF3343 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF3344 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.reent.h.17.e292bf8b0bec6c96e131a54347145a30,comdat +.Ldebug_macro47: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x11 + .4byte .LASF3345 + .byte 0x5 + .byte 0x15 + .4byte .LASF3346 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.lock.h.2.c0958401bd0ce484d507ee19aacab817,comdat +.Ldebug_macro48: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x2 + .4byte .LASF3347 + .byte 0x5 + .byte 0xe + .4byte .LASF3348 + .byte 0x5 + .byte 0xf + .4byte .LASF3349 + .byte 0x5 + .byte 0x10 + .4byte .LASF3350 + .byte 0x5 + .byte 0x11 + .4byte .LASF3351 + .byte 0x5 + .byte 0x12 + .4byte .LASF3352 + .byte 0x5 + .byte 0x13 + .4byte .LASF3353 + .byte 0x5 + .byte 0x14 + .4byte .LASF3354 + .byte 0x5 + .byte 0x15 + .4byte .LASF3355 + .byte 0x5 + .byte 0x16 + .4byte .LASF3356 + .byte 0x5 + .byte 0x17 + .4byte .LASF3357 + .byte 0x5 + .byte 0x18 + .4byte .LASF3358 + .byte 0x5 + .byte 0x19 + .4byte .LASF3359 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.reent.h.77.dcd6129ff07fe81bd5636db29abe53b2,comdat +.Ldebug_macro49: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4d + .4byte .LASF3360 + .byte 0x5 + .byte 0x69 + .4byte .LASF3361 + .byte 0x5 + .byte 0x6f + .4byte .LASF3362 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF3363 + .byte 0x5 + .byte 0xbd,0x2 + .4byte .LASF3364 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF3365 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF3366 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF3367 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF3368 + .byte 0x5 + .byte 0xc2,0x2 + .4byte .LASF3369 + .byte 0x5 + .byte 0xc3,0x2 + .4byte .LASF3370 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF3371 + .byte 0x5 + .byte 0xd0,0x2 + .4byte .LASF3372 + .byte 0x5 + .byte 0xd1,0x2 + .4byte .LASF3373 + .byte 0x5 + .byte 0xa0,0x5 + .4byte .LASF3374 + .byte 0x5 + .byte 0xbc,0x5 + .4byte .LASF3375 + .byte 0x5 + .byte 0xbf,0x5 + .4byte .LASF3376 + .byte 0x5 + .byte 0xef,0x5 + .4byte .LASF3377 + .byte 0x5 + .byte 0xfd,0x5 + .4byte .LASF3378 + .byte 0x5 + .byte 0xfe,0x5 + .4byte .LASF3379 + .byte 0x5 + .byte 0xff,0x5 + .4byte .LASF3380 + .byte 0x5 + .byte 0x80,0x6 + .4byte .LASF3381 + .byte 0x5 + .byte 0x81,0x6 + .4byte .LASF3382 + .byte 0x5 + .byte 0x82,0x6 + .4byte .LASF3383 + .byte 0x5 + .byte 0x83,0x6 + .4byte .LASF3384 + .byte 0x5 + .byte 0x85,0x6 + .4byte .LASF3385 + .byte 0x5 + .byte 0x86,0x6 + .4byte .LASF3386 + .byte 0x5 + .byte 0x87,0x6 + .4byte .LASF3387 + .byte 0x5 + .byte 0x88,0x6 + .4byte .LASF3388 + .byte 0x5 + .byte 0x89,0x6 + .4byte .LASF3389 + .byte 0x5 + .byte 0x8a,0x6 + .4byte .LASF3390 + .byte 0x5 + .byte 0x8b,0x6 + .4byte .LASF3391 + .byte 0x5 + .byte 0x8c,0x6 + .4byte .LASF3392 + .byte 0x5 + .byte 0x8d,0x6 + .4byte .LASF3393 + .byte 0x5 + .byte 0x8e,0x6 + .4byte .LASF3394 + .byte 0x5 + .byte 0x8f,0x6 + .4byte .LASF3395 + .byte 0x5 + .byte 0x90,0x6 + .4byte .LASF3396 + .byte 0x5 + .byte 0x91,0x6 + .4byte .LASF3397 + .byte 0x5 + .byte 0x92,0x6 + .4byte .LASF3398 + .byte 0x5 + .byte 0x93,0x6 + .4byte .LASF3399 + .byte 0x5 + .byte 0x94,0x6 + .4byte .LASF3400 + .byte 0x5 + .byte 0x95,0x6 + .4byte .LASF3401 + .byte 0x5 + .byte 0x96,0x6 + .4byte .LASF3402 + .byte 0x5 + .byte 0x97,0x6 + .4byte .LASF3403 + .byte 0x5 + .byte 0x98,0x6 + .4byte .LASF3404 + .byte 0x5 + .byte 0x99,0x6 + .4byte .LASF3405 + .byte 0x5 + .byte 0x9a,0x6 + .4byte .LASF3406 + .byte 0x5 + .byte 0x9b,0x6 + .4byte .LASF3407 + .byte 0x5 + .byte 0x9c,0x6 + .4byte .LASF3408 + .byte 0x5 + .byte 0xa0,0x6 + .4byte .LASF3409 + .byte 0x5 + .byte 0xa8,0x6 + .4byte .LASF3410 + .byte 0x5 + .byte 0xb0,0x6 + .4byte .LASF3411 + .byte 0x5 + .byte 0xc0,0x6 + .4byte .LASF3412 + .byte 0x5 + .byte 0xc3,0x6 + .4byte .LASF3413 + .byte 0x5 + .byte 0xc9,0x6 + .4byte .LASF3414 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.types.h.40.c2dcbbb5c1f4f0e5cb716ebf7776da48,comdat +.Ldebug_macro50: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x28 + .4byte .LASF3415 + .byte 0x5 + .byte 0x2c + .4byte .LASF3416 + .byte 0x5 + .byte 0x62 + .4byte .LASF3417 + .byte 0x5 + .byte 0x67 + .4byte .LASF3418 + .byte 0x5 + .byte 0x6c + .4byte .LASF3419 + .byte 0x5 + .byte 0x6d + .4byte .LASF3420 + .byte 0x5 + .byte 0x72 + .4byte .LASF3421 + .byte 0x5 + .byte 0x73 + .4byte .LASF3422 + .byte 0x5 + .byte 0x78 + .4byte .LASF3423 + .byte 0x5 + .byte 0x7c + .4byte .LASF3424 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF3425 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF3426 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF3427 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF3428 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF3429 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF3430 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF3431 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF3432 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF3433 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF3434 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF3435 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF3436 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF3437 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF3438 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF3439 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF3440 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF3441 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF3442 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stdio.h.2.4aa87247282eca6c8f36f9de33d8df1a,comdat +.Ldebug_macro51: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x2 + .4byte .LASF3446 + .byte 0x5 + .byte 0xd + .4byte .LASF3447 + .byte 0x5 + .byte 0x15 + .4byte .LASF3448 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.stdio.h.81.b348624b6806a74def9195c754308a00,comdat +.Ldebug_macro52: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x51 + .4byte .LASF3449 + .byte 0x5 + .byte 0x52 + .4byte .LASF3450 + .byte 0x5 + .byte 0x53 + .4byte .LASF3451 + .byte 0x5 + .byte 0x54 + .4byte .LASF3452 + .byte 0x5 + .byte 0x56 + .4byte .LASF3453 + .byte 0x5 + .byte 0x57 + .4byte .LASF3454 + .byte 0x5 + .byte 0x58 + .4byte .LASF3455 + .byte 0x5 + .byte 0x59 + .4byte .LASF3456 + .byte 0x5 + .byte 0x5a + .4byte .LASF3457 + .byte 0x5 + .byte 0x5b + .4byte .LASF3458 + .byte 0x5 + .byte 0x5c + .4byte .LASF3459 + .byte 0x5 + .byte 0x5d + .4byte .LASF3460 + .byte 0x5 + .byte 0x5e + .4byte .LASF3461 + .byte 0x5 + .byte 0x5f + .4byte .LASF3462 + .byte 0x5 + .byte 0x63 + .4byte .LASF3463 + .byte 0x5 + .byte 0x66 + .4byte .LASF3464 + .byte 0x5 + .byte 0x67 + .4byte .LASF3465 + .byte 0x5 + .byte 0x72 + .4byte .LASF3466 + .byte 0x5 + .byte 0x73 + .4byte .LASF3467 + .byte 0x5 + .byte 0x74 + .4byte .LASF3468 + .byte 0x5 + .byte 0x76 + .4byte .LASF3469 + .byte 0x5 + .byte 0x7b + .4byte .LASF3470 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF3471 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF3472 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF3473 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF3474 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF3475 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF3476 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF3477 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF3478 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF3479 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF3480 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF3481 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF3482 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF3483 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF3484 + .byte 0x5 + .byte 0x8e,0x5 + .4byte .LASF3485 + .byte 0x5 + .byte 0xab,0x5 + .4byte .LASF3486 + .byte 0x5 + .byte 0xcf,0x5 + .4byte .LASF3487 + .byte 0x5 + .byte 0xd0,0x5 + .4byte .LASF3488 + .byte 0x5 + .byte 0xd1,0x5 + .4byte .LASF3489 + .byte 0x5 + .byte 0xd2,0x5 + .4byte .LASF3490 + .byte 0x5 + .byte 0xd6,0x5 + .4byte .LASF3491 + .byte 0x5 + .byte 0xd7,0x5 + .4byte .LASF3492 + .byte 0x5 + .byte 0xd8,0x5 + .4byte .LASF3493 + .byte 0x5 + .byte 0xff,0x5 + .4byte .LASF3494 + .byte 0x5 + .byte 0x80,0x6 + .4byte .LASF3495 + .byte 0x5 + .byte 0x8e,0x6 + .4byte .LASF3496 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.unistd.h.22.3ec6b4596b960d9f35140931ce8c2bd0,comdat +.Ldebug_macro53: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x16 + .4byte .LASF3498 + .byte 0x5 + .byte 0x17 + .4byte .LASF3499 + .byte 0x5 + .byte 0x18 + .4byte .LASF3500 + .byte 0 + .section .debug_macro,"G",@progbits,wm4.riscv_encoding.h.4.141a3f782f9378c77348fd1925237eaf,comdat +.Ldebug_macro54: + .2byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4 + .4byte .LASF3501 + .byte 0x5 + .byte 0x6 + .4byte .LASF3502 + .byte 0x5 + .byte 0x7 + .4byte .LASF3503 + .byte 0x5 + .byte 0x8 + .4byte .LASF3504 + .byte 0x5 + .byte 0x9 + .4byte .LASF3505 + .byte 0x5 + .byte 0xa + .4byte .LASF3506 + .byte 0x5 + .byte 0xb + .4byte .LASF3507 + .byte 0x5 + .byte 0xc + .4byte .LASF3508 + .byte 0x5 + .byte 0xd + .4byte .LASF3509 + .byte 0x5 + .byte 0xe + .4byte .LASF3510 + .byte 0x5 + .byte 0xf + .4byte .LASF3511 + .byte 0x5 + .byte 0x10 + .4byte .LASF3512 + .byte 0x5 + .byte 0x11 + .4byte .LASF3513 + .byte 0x5 + .byte 0x12 + .4byte .LASF3514 + .byte 0x5 + .byte 0x13 + .4byte .LASF3515 + .byte 0x5 + .byte 0x14 + .4byte .LASF3516 + .byte 0x5 + .byte 0x15 + .4byte .LASF3517 + .byte 0x5 + .byte 0x16 + .4byte .LASF3518 + .byte 0x5 + .byte 0x17 + .4byte .LASF3519 + .byte 0x5 + .byte 0x1a + .4byte .LASF3520 + .byte 0x5 + .byte 0x1b + .4byte .LASF3521 + .byte 0x5 + .byte 0x1c + .4byte .LASF3522 + .byte 0x5 + .byte 0x1d + .4byte .LASF3523 + .byte 0x5 + .byte 0x1e + .4byte .LASF3524 + .byte 0x5 + .byte 0x1f + .4byte .LASF3525 + .byte 0x5 + .byte 0x20 + .4byte .LASF3526 + .byte 0x5 + .byte 0x21 + .4byte .LASF3527 + .byte 0x5 + .byte 0x22 + .4byte .LASF3528 + .byte 0x5 + .byte 0x23 + .4byte .LASF3529 + .byte 0x5 + .byte 0x25 + .4byte .LASF3530 + .byte 0x5 + .byte 0x26 + .4byte .LASF3531 + .byte 0x5 + .byte 0x27 + .4byte .LASF3532 + .byte 0x5 + .byte 0x28 + .4byte .LASF3533 + .byte 0x5 + .byte 0x29 + .4byte .LASF3534 + .byte 0x5 + .byte 0x2a + .4byte .LASF3535 + .byte 0x5 + .byte 0x2b + .4byte .LASF3536 + .byte 0x5 + .byte 0x2c + .4byte .LASF3537 + .byte 0x5 + .byte 0x2d + .4byte .LASF3538 + .byte 0x5 + .byte 0x2e + .4byte .LASF3539 + .byte 0x5 + .byte 0x2f + .4byte .LASF3540 + .byte 0x5 + .byte 0x30 + .4byte .LASF3541 + .byte 0x5 + .byte 0x31 + .4byte .LASF3542 + .byte 0x5 + .byte 0x32 + .4byte .LASF3543 + .byte 0x5 + .byte 0x34 + .4byte .LASF3544 + .byte 0x5 + .byte 0x35 + .4byte .LASF3545 + .byte 0x5 + .byte 0x36 + .4byte .LASF3546 + .byte 0x5 + .byte 0x37 + .4byte .LASF3547 + .byte 0x5 + .byte 0x38 + .4byte .LASF3548 + .byte 0x5 + .byte 0x39 + .4byte .LASF3549 + .byte 0x5 + .byte 0x3b + .4byte .LASF3550 + .byte 0x5 + .byte 0x3c + .4byte .LASF3551 + .byte 0x5 + .byte 0x3d + .4byte .LASF3552 + .byte 0x5 + .byte 0x3f + .4byte .LASF3553 + .byte 0x5 + .byte 0x40 + .4byte .LASF3554 + .byte 0x5 + .byte 0x41 + .4byte .LASF3555 + .byte 0x5 + .byte 0x42 + .4byte .LASF3556 + .byte 0x5 + .byte 0x43 + .4byte .LASF3557 + .byte 0x5 + .byte 0x44 + .4byte .LASF3558 + .byte 0x5 + .byte 0x45 + .4byte .LASF3559 + .byte 0x5 + .byte 0x46 + .4byte .LASF3560 + .byte 0x5 + .byte 0x47 + .4byte .LASF3561 + .byte 0x5 + .byte 0x48 + .4byte .LASF3562 + .byte 0x5 + .byte 0x49 + .4byte .LASF3563 + .byte 0x5 + .byte 0x4a + .4byte .LASF3564 + .byte 0x5 + .byte 0x4c + .4byte .LASF3565 + .byte 0x5 + .byte 0x4d + .4byte .LASF3566 + .byte 0x5 + .byte 0x4f + .4byte .LASF3567 + .byte 0x5 + .byte 0x50 + .4byte .LASF3568 + .byte 0x5 + .byte 0x51 + .4byte .LASF3569 + .byte 0x5 + .byte 0x52 + .4byte .LASF3570 + .byte 0x5 + .byte 0x53 + .4byte .LASF3571 + .byte 0x5 + .byte 0x55 + .4byte .LASF3572 + .byte 0x5 + .byte 0x56 + .4byte .LASF3573 + .byte 0x5 + .byte 0x57 + .4byte .LASF3574 + .byte 0x5 + .byte 0x58 + .4byte .LASF3575 + .byte 0x5 + .byte 0x59 + .4byte .LASF3576 + .byte 0x5 + .byte 0x5a + .4byte .LASF3577 + .byte 0x5 + .byte 0x5c + .4byte .LASF3578 + .byte 0x5 + .byte 0x5d + .4byte .LASF3579 + .byte 0x5 + .byte 0x5e + .4byte .LASF3580 + .byte 0x5 + .byte 0x5f + .4byte .LASF3581 + .byte 0x5 + .byte 0x60 + .4byte .LASF3582 + .byte 0x5 + .byte 0x61 + .4byte .LASF3583 + .byte 0x5 + .byte 0x62 + .4byte .LASF3584 + .byte 0x5 + .byte 0x63 + .4byte .LASF3585 + .byte 0x5 + .byte 0x64 + .4byte .LASF3586 + .byte 0x5 + .byte 0x66 + .4byte .LASF3587 + .byte 0x5 + .byte 0x67 + .4byte .LASF3588 + .byte 0x5 + .byte 0x68 + .4byte .LASF3589 + .byte 0x5 + .byte 0x69 + .4byte .LASF3590 + .byte 0x5 + .byte 0x6a + .4byte .LASF3591 + .byte 0x5 + .byte 0x6b + .4byte .LASF3592 + .byte 0x5 + .byte 0x6c + .4byte .LASF3593 + .byte 0x5 + .byte 0x6d + .4byte .LASF3594 + .byte 0x5 + .byte 0x6e + .4byte .LASF3595 + .byte 0x5 + .byte 0x70 + .4byte .LASF3596 + .byte 0x5 + .byte 0x71 + .4byte .LASF3597 + .byte 0x5 + .byte 0x73 + .4byte .LASF3598 + .byte 0x5 + .byte 0x74 + .4byte .LASF3599 + .byte 0x5 + .byte 0x75 + .4byte .LASF3600 + .byte 0x5 + .byte 0x76 + .4byte .LASF3601 + .byte 0x5 + .byte 0x78 + .4byte .LASF3602 + .byte 0x5 + .byte 0x79 + .4byte .LASF3603 + .byte 0x5 + .byte 0x7a + .4byte .LASF3604 + .byte 0x5 + .byte 0x7b + .4byte .LASF3605 + .byte 0x5 + .byte 0x7c + .4byte .LASF3606 + .byte 0x5 + .byte 0x7d + .4byte .LASF3607 + .byte 0x5 + .byte 0x7f + .4byte .LASF3608 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF3609 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF3610 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF3611 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF3612 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF3613 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF3614 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF3615 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF3616 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF3617 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF3618 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF3619 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF3620 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF3621 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF3622 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF3623 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF3624 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF3625 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF3626 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF3627 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF3628 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF3629 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF3630 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF3631 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF3632 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF3633 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF3634 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF3635 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF3636 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF3637 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF3638 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF3639 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF3640 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF3641 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF3642 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF3643 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF3644 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF3645 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF3646 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF3647 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF3648 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF3649 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF3650 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF3651 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF3652 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF3653 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF3654 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF3655 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF3656 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF3657 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF3658 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF3659 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF3660 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF3661 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF3662 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF3663 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF3664 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF3665 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF3666 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF3667 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF3668 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF3669 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF3670 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF3671 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF3672 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF3673 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF3674 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF3675 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF3676 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF3677 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF3678 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF3679 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF3680 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF3681 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF3682 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF3683 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF3684 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF3685 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF3686 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF3687 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF3688 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF3689 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF3690 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF3691 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF3692 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF3693 + .byte 0x5 + .byte 0x94,0x2 + .4byte .LASF3694 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF3695 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF3696 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF3697 + .byte 0x5 + .byte 0x98,0x2 + .4byte .LASF3698 + .byte 0x5 + .byte 0x99,0x2 + .4byte .LASF3699 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF3700 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF3701 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF3702 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF3703 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF3704 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF3705 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF3706 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF3707 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF3708 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF3709 + .byte 0x5 + .byte 0xa4,0x2 + .4byte .LASF3710 + .byte 0x5 + .byte 0xa5,0x2 + .4byte .LASF3711 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF3712 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF3713 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF3714 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF3715 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF3716 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF3717 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF3718 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF3719 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF3720 + .byte 0x5 + .byte 0xaf,0x2 + .4byte .LASF3721 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF3722 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF3723 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF3724 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF3725 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF3726 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF3727 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF3728 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF3729 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF3730 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF3731 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF3732 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF3733 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF3734 + .byte 0x5 + .byte 0xbd,0x2 + .4byte .LASF3735 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF3736 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF3737 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF3738 + .byte 0x5 + .byte 0xc1,0x2 + .4byte .LASF3739 + .byte 0x5 + .byte 0xc2,0x2 + .4byte .LASF3740 + .byte 0x5 + .byte 0xc3,0x2 + .4byte .LASF3741 + .byte 0x5 + .byte 0xc4,0x2 + .4byte .LASF3742 + .byte 0x5 + .byte 0xc5,0x2 + .4byte .LASF3743 + .byte 0x5 + .byte 0xc6,0x2 + .4byte .LASF3744 + .byte 0x5 + .byte 0xc7,0x2 + .4byte .LASF3745 + .byte 0x5 + .byte 0xc8,0x2 + .4byte .LASF3746 + .byte 0x5 + .byte 0xc9,0x2 + .4byte .LASF3747 + .byte 0x5 + .byte 0xca,0x2 + .4byte .LASF3748 + .byte 0x5 + .byte 0xcb,0x2 + .4byte .LASF3749 + .byte 0x5 + .byte 0xcc,0x2 + .4byte .LASF3750 + .byte 0x5 + .byte 0xcd,0x2 + .4byte .LASF3751 + .byte 0x5 + .byte 0xce,0x2 + .4byte .LASF3752 + .byte 0x5 + .byte 0xcf,0x2 + .4byte .LASF3753 + .byte 0x5 + .byte 0xd0,0x2 + .4byte .LASF3754 + .byte 0x5 + .byte 0xd1,0x2 + .4byte .LASF3755 + .byte 0x5 + .byte 0xd2,0x2 + .4byte .LASF3756 + .byte 0x5 + .byte 0xd3,0x2 + .4byte .LASF3757 + .byte 0x5 + .byte 0xd4,0x2 + .4byte .LASF3758 + .byte 0x5 + .byte 0xd5,0x2 + .4byte .LASF3759 + .byte 0x5 + .byte 0xd6,0x2 + .4byte .LASF3760 + .byte 0x5 + .byte 0xd7,0x2 + .4byte .LASF3761 + .byte 0x5 + .byte 0xd8,0x2 + .4byte .LASF3762 + .byte 0x5 + .byte 0xd9,0x2 + .4byte .LASF3763 + .byte 0x5 + .byte 0xda,0x2 + .4byte .LASF3764 + .byte 0x5 + .byte 0xdb,0x2 + .4byte .LASF3765 + .byte 0x5 + .byte 0xdc,0x2 + .4byte .LASF3766 + .byte 0x5 + .byte 0xdd,0x2 + .4byte .LASF3767 + .byte 0x5 + .byte 0xde,0x2 + .4byte .LASF3768 + .byte 0x5 + .byte 0xdf,0x2 + .4byte .LASF3769 + .byte 0x5 + .byte 0xe0,0x2 + .4byte .LASF3770 + .byte 0x5 + .byte 0xe1,0x2 + .4byte .LASF3771 + .byte 0x5 + .byte 0xe2,0x2 + .4byte .LASF3772 + .byte 0x5 + .byte 0xe3,0x2 + .4byte .LASF3773 + .byte 0x5 + .byte 0xe4,0x2 + .4byte .LASF3774 + .byte 0x5 + .byte 0xe5,0x2 + .4byte .LASF3775 + .byte 0x5 + .byte 0xe6,0x2 + .4byte .LASF3776 + .byte 0x5 + .byte 0xe7,0x2 + .4byte .LASF3777 + .byte 0x5 + .byte 0xe8,0x2 + .4byte .LASF3778 + .byte 0x5 + .byte 0xe9,0x2 + .4byte .LASF3779 + .byte 0x5 + .byte 0xea,0x2 + .4byte .LASF3780 + .byte 0x5 + .byte 0xeb,0x2 + .4byte .LASF3781 + .byte 0x5 + .byte 0xec,0x2 + .4byte .LASF3782 + .byte 0x5 + .byte 0xed,0x2 + .4byte .LASF3783 + .byte 0x5 + .byte 0xee,0x2 + .4byte .LASF3784 + .byte 0x5 + .byte 0xef,0x2 + .4byte .LASF3785 + .byte 0x5 + .byte 0xf0,0x2 + .4byte .LASF3786 + .byte 0x5 + .byte 0xf1,0x2 + .4byte .LASF3787 + .byte 0x5 + .byte 0xf2,0x2 + .4byte .LASF3788 + .byte 0x5 + .byte 0xf3,0x2 + .4byte .LASF3789 + .byte 0x5 + .byte 0xf4,0x2 + .4byte .LASF3790 + .byte 0x5 + .byte 0xf5,0x2 + .4byte .LASF3791 + .byte 0x5 + .byte 0xf6,0x2 + .4byte .LASF3792 + .byte 0x5 + .byte 0xf7,0x2 + .4byte .LASF3793 + .byte 0x5 + .byte 0xf8,0x2 + .4byte .LASF3794 + .byte 0x5 + .byte 0xf9,0x2 + .4byte .LASF3795 + .byte 0x5 + .byte 0xfa,0x2 + .4byte .LASF3796 + .byte 0x5 + .byte 0xfb,0x2 + .4byte .LASF3797 + .byte 0x5 + .byte 0xfc,0x2 + .4byte .LASF3798 + .byte 0x5 + .byte 0xfd,0x2 + .4byte .LASF3799 + .byte 0x5 + .byte 0xfe,0x2 + .4byte .LASF3800 + .byte 0x5 + .byte 0xff,0x2 + .4byte .LASF3801 + .byte 0x5 + .byte 0x80,0x3 + .4byte .LASF3802 + .byte 0x5 + .byte 0x81,0x3 + .4byte .LASF3803 + .byte 0x5 + .byte 0x82,0x3 + .4byte .LASF3804 + .byte 0x5 + .byte 0x83,0x3 + .4byte .LASF3805 + .byte 0x5 + .byte 0x84,0x3 + .4byte .LASF3806 + .byte 0x5 + .byte 0x85,0x3 + .4byte .LASF3807 + .byte 0x5 + .byte 0x86,0x3 + .4byte .LASF3808 + .byte 0x5 + .byte 0x87,0x3 + .4byte .LASF3809 + .byte 0x5 + .byte 0x88,0x3 + .4byte .LASF3810 + .byte 0x5 + .byte 0x89,0x3 + .4byte .LASF3811 + .byte 0x5 + .byte 0x8a,0x3 + .4byte .LASF3812 + .byte 0x5 + .byte 0x8b,0x3 + .4byte .LASF3813 + .byte 0x5 + .byte 0x8c,0x3 + .4byte .LASF3814 + .byte 0x5 + .byte 0x8d,0x3 + .4byte .LASF3815 + .byte 0x5 + .byte 0x8e,0x3 + .4byte .LASF3816 + .byte 0x5 + .byte 0x8f,0x3 + .4byte .LASF3817 + .byte 0x5 + .byte 0x90,0x3 + .4byte .LASF3818 + .byte 0x5 + .byte 0x91,0x3 + .4byte .LASF3819 + .byte 0x5 + .byte 0x92,0x3 + .4byte .LASF3820 + .byte 0x5 + .byte 0x93,0x3 + .4byte .LASF3821 + .byte 0x5 + .byte 0x94,0x3 + .4byte .LASF3822 + .byte 0x5 + .byte 0x95,0x3 + .4byte .LASF3823 + .byte 0x5 + .byte 0x96,0x3 + .4byte .LASF3824 + .byte 0x5 + .byte 0x97,0x3 + .4byte .LASF3825 + .byte 0x5 + .byte 0x98,0x3 + .4byte .LASF3826 + .byte 0x5 + .byte 0x99,0x3 + .4byte .LASF3827 + .byte 0x5 + .byte 0x9a,0x3 + .4byte .LASF3828 + .byte 0x5 + .byte 0x9b,0x3 + .4byte .LASF3829 + .byte 0x5 + .byte 0x9c,0x3 + .4byte .LASF3830 + .byte 0x5 + .byte 0x9d,0x3 + .4byte .LASF3831 + .byte 0x5 + .byte 0x9e,0x3 + .4byte .LASF3832 + .byte 0x5 + .byte 0x9f,0x3 + .4byte .LASF3833 + .byte 0x5 + .byte 0xa0,0x3 + .4byte .LASF3834 + .byte 0x5 + .byte 0xa1,0x3 + .4byte .LASF3835 + .byte 0x5 + .byte 0xa2,0x3 + .4byte .LASF3836 + .byte 0x5 + .byte 0xa3,0x3 + .4byte .LASF3837 + .byte 0x5 + .byte 0xa4,0x3 + .4byte .LASF3838 + .byte 0x5 + .byte 0xa5,0x3 + .4byte .LASF3839 + .byte 0x5 + .byte 0xa6,0x3 + .4byte .LASF3840 + .byte 0x5 + .byte 0xa7,0x3 + .4byte .LASF3841 + .byte 0x5 + .byte 0xa8,0x3 + .4byte .LASF3842 + .byte 0x5 + .byte 0xa9,0x3 + .4byte .LASF3843 + .byte 0x5 + .byte 0xaa,0x3 + .4byte .LASF3844 + .byte 0x5 + .byte 0xab,0x3 + .4byte .LASF3845 + .byte 0x5 + .byte 0xac,0x3 + .4byte .LASF3846 + .byte 0x5 + .byte 0xad,0x3 + .4byte .LASF3847 + .byte 0x5 + .byte 0xae,0x3 + .4byte .LASF3848 + .byte 0x5 + .byte 0xaf,0x3 + .4byte .LASF3849 + .byte 0x5 + .byte 0xb0,0x3 + .4byte .LASF3850 + .byte 0x5 + .byte 0xb1,0x3 + .4byte .LASF3851 + .byte 0x5 + .byte 0xb2,0x3 + .4byte .LASF3852 + .byte 0x5 + .byte 0xb3,0x3 + .4byte .LASF3853 + .byte 0x5 + .byte 0xb4,0x3 + .4byte .LASF3854 + .byte 0x5 + .byte 0xb5,0x3 + .4byte .LASF3855 + .byte 0x5 + .byte 0xb6,0x3 + .4byte .LASF3856 + .byte 0x5 + .byte 0xb7,0x3 + .4byte .LASF3857 + .byte 0x5 + .byte 0xb8,0x3 + .4byte .LASF3858 + .byte 0x5 + .byte 0xb9,0x3 + .4byte .LASF3859 + .byte 0x5 + .byte 0xba,0x3 + .4byte .LASF3860 + .byte 0x5 + .byte 0xbb,0x3 + .4byte .LASF3861 + .byte 0x5 + .byte 0xbc,0x3 + .4byte .LASF3862 + .byte 0x5 + .byte 0xbd,0x3 + .4byte .LASF3863 + .byte 0x5 + .byte 0xbe,0x3 + .4byte .LASF3864 + .byte 0x5 + .byte 0xbf,0x3 + .4byte .LASF3865 + .byte 0x5 + .byte 0xc0,0x3 + .4byte .LASF3866 + .byte 0x5 + .byte 0xc1,0x3 + .4byte .LASF3867 + .byte 0x5 + .byte 0xc2,0x3 + .4byte .LASF3868 + .byte 0x5 + .byte 0xc3,0x3 + .4byte .LASF3869 + .byte 0x5 + .byte 0xc4,0x3 + .4byte .LASF3870 + .byte 0x5 + .byte 0xc5,0x3 + .4byte .LASF3871 + .byte 0x5 + .byte 0xc6,0x3 + .4byte .LASF3872 + .byte 0x5 + .byte 0xc7,0x3 + .4byte .LASF3873 + .byte 0x5 + .byte 0xc8,0x3 + .4byte .LASF3874 + .byte 0x5 + .byte 0xc9,0x3 + .4byte .LASF3875 + .byte 0x5 + .byte 0xca,0x3 + .4byte .LASF3876 + .byte 0x5 + .byte 0xcb,0x3 + .4byte .LASF3877 + .byte 0x5 + .byte 0xcc,0x3 + .4byte .LASF3878 + .byte 0x5 + .byte 0xcd,0x3 + .4byte .LASF3879 + .byte 0x5 + .byte 0xce,0x3 + .4byte .LASF3880 + .byte 0x5 + .byte 0xcf,0x3 + .4byte .LASF3881 + .byte 0x5 + .byte 0xd0,0x3 + .4byte .LASF3882 + .byte 0x5 + .byte 0xd1,0x3 + .4byte .LASF3883 + .byte 0x5 + .byte 0xd2,0x3 + .4byte .LASF3884 + .byte 0x5 + .byte 0xd3,0x3 + .4byte .LASF3885 + .byte 0x5 + .byte 0xd4,0x3 + .4byte .LASF3886 + .byte 0x5 + .byte 0xd5,0x3 + .4byte .LASF3887 + .byte 0x5 + .byte 0xd6,0x3 + .4byte .LASF3888 + .byte 0x5 + .byte 0xd7,0x3 + .4byte .LASF3889 + .byte 0x5 + .byte 0xd8,0x3 + .4byte .LASF3890 + .byte 0x5 + .byte 0xd9,0x3 + .4byte .LASF3891 + .byte 0x5 + .byte 0xda,0x3 + .4byte .LASF3892 + .byte 0x5 + .byte 0xdb,0x3 + .4byte .LASF3893 + .byte 0x5 + .byte 0xdc,0x3 + .4byte .LASF3894 + .byte 0x5 + .byte 0xdd,0x3 + .4byte .LASF3895 + .byte 0x5 + .byte 0xde,0x3 + .4byte .LASF3896 + .byte 0x5 + .byte 0xdf,0x3 + .4byte .LASF3897 + .byte 0x5 + .byte 0xe0,0x3 + .4byte .LASF3898 + .byte 0x5 + .byte 0xe1,0x3 + .4byte .LASF3899 + .byte 0x5 + .byte 0xe2,0x3 + .4byte .LASF3900 + .byte 0x5 + .byte 0xe3,0x3 + .4byte .LASF3901 + .byte 0x5 + .byte 0xe4,0x3 + .4byte .LASF3902 + .byte 0x5 + .byte 0xe5,0x3 + .4byte .LASF3903 + .byte 0x5 + .byte 0xe6,0x3 + .4byte .LASF3904 + .byte 0x5 + .byte 0xe7,0x3 + .4byte .LASF3905 + .byte 0x5 + .byte 0xe8,0x3 + .4byte .LASF3906 + .byte 0x5 + .byte 0xe9,0x3 + .4byte .LASF3907 + .byte 0x5 + .byte 0xea,0x3 + .4byte .LASF3908 + .byte 0x5 + .byte 0xeb,0x3 + .4byte .LASF3909 + .byte 0x5 + .byte 0xec,0x3 + .4byte .LASF3910 + .byte 0x5 + .byte 0xed,0x3 + .4byte .LASF3911 + .byte 0x5 + .byte 0xee,0x3 + .4byte .LASF3912 + .byte 0x5 + .byte 0xef,0x3 + .4byte .LASF3913 + .byte 0x5 + .byte 0xf0,0x3 + .4byte .LASF3914 + .byte 0x5 + .byte 0xf1,0x3 + .4byte .LASF3915 + .byte 0x5 + .byte 0xf2,0x3 + .4byte .LASF3916 + .byte 0x5 + .byte 0xf3,0x3 + .4byte .LASF3917 + .byte 0x5 + .byte 0xf4,0x3 + .4byte .LASF3918 + .byte 0x5 + .byte 0xf5,0x3 + .4byte .LASF3919 + .byte 0x5 + .byte 0xf6,0x3 + .4byte .LASF3920 + .byte 0x5 + .byte 0xf7,0x3 + .4byte .LASF3921 + .byte 0x5 + .byte 0xf8,0x3 + .4byte .LASF3922 + .byte 0x5 + .byte 0xf9,0x3 + .4byte .LASF3923 + .byte 0x5 + .byte 0xfa,0x3 + .4byte .LASF3924 + .byte 0x5 + .byte 0xfb,0x3 + .4byte .LASF3925 + .byte 0x5 + .byte 0xfc,0x3 + .4byte .LASF3926 + .byte 0x5 + .byte 0xfd,0x3 + .4byte .LASF3927 + .byte 0x5 + .byte 0xfe,0x3 + .4byte .LASF3928 + .byte 0x5 + .byte 0xff,0x3 + .4byte .LASF3929 + .byte 0x5 + .byte 0x80,0x4 + .4byte .LASF3930 + .byte 0x5 + .byte 0x81,0x4 + .4byte .LASF3931 + .byte 0x5 + .byte 0x82,0x4 + .4byte .LASF3932 + .byte 0x5 + .byte 0x83,0x4 + .4byte .LASF3933 + .byte 0x5 + .byte 0x84,0x4 + .4byte .LASF3934 + .byte 0x5 + .byte 0x85,0x4 + .4byte .LASF3935 + .byte 0x5 + .byte 0x86,0x4 + .4byte .LASF3936 + .byte 0x5 + .byte 0x87,0x4 + .4byte .LASF3937 + .byte 0x5 + .byte 0x88,0x4 + .4byte .LASF3938 + .byte 0x5 + .byte 0x89,0x4 + .4byte .LASF3939 + .byte 0x5 + .byte 0x8a,0x4 + .4byte .LASF3940 + .byte 0x5 + .byte 0x8b,0x4 + .4byte .LASF3941 + .byte 0x5 + .byte 0x8c,0x4 + .4byte .LASF3942 + .byte 0x5 + .byte 0x8d,0x4 + .4byte .LASF3943 + .byte 0x5 + .byte 0x8e,0x4 + .4byte .LASF3944 + .byte 0x5 + .byte 0x8f,0x4 + .4byte .LASF3945 + .byte 0x5 + .byte 0x90,0x4 + .4byte .LASF3946 + .byte 0x5 + .byte 0x91,0x4 + .4byte .LASF3947 + .byte 0x5 + .byte 0x92,0x4 + .4byte .LASF3948 + .byte 0x5 + .byte 0x93,0x4 + .4byte .LASF3949 + .byte 0x5 + .byte 0x94,0x4 + .4byte .LASF3950 + .byte 0x5 + .byte 0x95,0x4 + .4byte .LASF3951 + .byte 0x5 + .byte 0x96,0x4 + .4byte .LASF3952 + .byte 0x5 + .byte 0x97,0x4 + .4byte .LASF3953 + .byte 0x5 + .byte 0x98,0x4 + .4byte .LASF3954 + .byte 0x5 + .byte 0x99,0x4 + .4byte .LASF3955 + .byte 0x5 + .byte 0x9a,0x4 + .4byte .LASF3956 + .byte 0x5 + .byte 0x9b,0x4 + .4byte .LASF3957 + .byte 0x5 + .byte 0x9c,0x4 + .4byte .LASF3958 + .byte 0x5 + .byte 0x9d,0x4 + .4byte .LASF3959 + .byte 0x5 + .byte 0x9e,0x4 + .4byte .LASF3960 + .byte 0x5 + .byte 0x9f,0x4 + .4byte .LASF3961 + .byte 0x5 + .byte 0xa0,0x4 + .4byte .LASF3962 + .byte 0x5 + .byte 0xa1,0x4 + .4byte .LASF3963 + .byte 0x5 + .byte 0xa2,0x4 + .4byte .LASF3964 + .byte 0x5 + .byte 0xa3,0x4 + .4byte .LASF3965 + .byte 0x5 + .byte 0xa4,0x4 + .4byte .LASF3966 + .byte 0x5 + .byte 0xa5,0x4 + .4byte .LASF3967 + .byte 0x5 + .byte 0xa6,0x4 + .4byte .LASF3968 + .byte 0x5 + .byte 0xa7,0x4 + .4byte .LASF3969 + .byte 0x5 + .byte 0xa8,0x4 + .4byte .LASF3970 + .byte 0x5 + .byte 0xa9,0x4 + .4byte .LASF3971 + .byte 0x5 + .byte 0xaa,0x4 + .4byte .LASF3972 + .byte 0x5 + .byte 0xab,0x4 + .4byte .LASF3973 + .byte 0x5 + .byte 0xac,0x4 + .4byte .LASF3974 + .byte 0x5 + .byte 0xad,0x4 + .4byte .LASF3975 + .byte 0x5 + .byte 0xae,0x4 + .4byte .LASF3976 + .byte 0x5 + .byte 0xaf,0x4 + .4byte .LASF3977 + .byte 0x5 + .byte 0xb0,0x4 + .4byte .LASF3978 + .byte 0x5 + .byte 0xb1,0x4 + .4byte .LASF3979 + .byte 0x5 + .byte 0xb2,0x4 + .4byte .LASF3980 + .byte 0x5 + .byte 0xb3,0x4 + .4byte .LASF3981 + .byte 0x5 + .byte 0xb4,0x4 + .4byte .LASF3982 + .byte 0x5 + .byte 0xb5,0x4 + .4byte .LASF3983 + .byte 0x5 + .byte 0xb6,0x4 + .4byte .LASF3984 + .byte 0x5 + .byte 0xb7,0x4 + .4byte .LASF3985 + .byte 0x5 + .byte 0xb8,0x4 + .4byte .LASF3986 + .byte 0x5 + .byte 0xb9,0x4 + .4byte .LASF3987 + .byte 0x5 + .byte 0xba,0x4 + .4byte .LASF3988 + .byte 0x5 + .byte 0xbb,0x4 + .4byte .LASF3989 + .byte 0x5 + .byte 0xbc,0x4 + .4byte .LASF3990 + .byte 0x5 + .byte 0xbd,0x4 + .4byte .LASF3991 + .byte 0x5 + .byte 0xbe,0x4 + .4byte .LASF3992 + .byte 0x5 + .byte 0xbf,0x4 + .4byte .LASF3993 + .byte 0x5 + .byte 0xc0,0x4 + .4byte .LASF3994 + .byte 0x5 + .byte 0xc1,0x4 + .4byte .LASF3995 + .byte 0x5 + .byte 0xc2,0x4 + .4byte .LASF3996 + .byte 0x5 + .byte 0xc3,0x4 + .4byte .LASF3997 + .byte 0x5 + .byte 0xc4,0x4 + .4byte .LASF3998 + .byte 0x5 + .byte 0xc5,0x4 + .4byte .LASF3999 + .byte 0x5 + .byte 0xc6,0x4 + .4byte .LASF4000 + .byte 0x5 + .byte 0xc7,0x4 + .4byte .LASF4001 + .byte 0x5 + .byte 0xc8,0x4 + .4byte .LASF4002 + .byte 0x5 + .byte 0xc9,0x4 + .4byte .LASF4003 + .byte 0x5 + .byte 0xca,0x4 + .4byte .LASF4004 + .byte 0x5 + .byte 0xcb,0x4 + .4byte .LASF4005 + .byte 0x5 + .byte 0xcc,0x4 + .4byte .LASF4006 + .byte 0x5 + .byte 0xcd,0x4 + .4byte .LASF4007 + .byte 0x5 + .byte 0xce,0x4 + .4byte .LASF4008 + .byte 0x5 + .byte 0xcf,0x4 + .4byte .LASF4009 + .byte 0x5 + .byte 0xd0,0x4 + .4byte .LASF4010 + .byte 0x5 + .byte 0xd1,0x4 + .4byte .LASF4011 + .byte 0x5 + .byte 0xd2,0x4 + .4byte .LASF4012 + .byte 0x5 + .byte 0xd3,0x4 + .4byte .LASF4013 + .byte 0x5 + .byte 0xd4,0x4 + .4byte .LASF4014 + .byte 0x5 + .byte 0xd5,0x4 + .4byte .LASF4015 + .byte 0x5 + .byte 0xd6,0x4 + .4byte .LASF4016 + .byte 0x5 + .byte 0xd7,0x4 + .4byte .LASF4017 + .byte 0x5 + .byte 0xd8,0x4 + .4byte .LASF4018 + .byte 0x5 + .byte 0xd9,0x4 + .4byte .LASF4019 + .byte 0x5 + .byte 0xda,0x4 + .4byte .LASF4020 + .byte 0x5 + .byte 0xdb,0x4 + .4byte .LASF4021 + .byte 0x5 + .byte 0xdc,0x4 + .4byte .LASF4022 + .byte 0x5 + .byte 0xdd,0x4 + .4byte .LASF4023 + .byte 0x5 + .byte 0xde,0x4 + .4byte .LASF4024 + .byte 0x5 + .byte 0xdf,0x4 + .4byte .LASF4025 + .byte 0x5 + .byte 0xe0,0x4 + .4byte .LASF4026 + .byte 0x5 + .byte 0xe1,0x4 + .4byte .LASF4027 + .byte 0x5 + .byte 0xe2,0x4 + .4byte .LASF4028 + .byte 0x5 + .byte 0xe3,0x4 + .4byte .LASF4029 + .byte 0x5 + .byte 0xe4,0x4 + .4byte .LASF4030 + .byte 0x5 + .byte 0xe5,0x4 + .4byte .LASF4031 + .byte 0x5 + .byte 0xe6,0x4 + .4byte .LASF4032 + .byte 0x5 + .byte 0xe7,0x4 + .4byte .LASF4033 + .byte 0x5 + .byte 0xe8,0x4 + .4byte .LASF4034 + .byte 0x5 + .byte 0xe9,0x4 + .4byte .LASF4035 + .byte 0x5 + .byte 0xea,0x4 + .4byte .LASF4036 + .byte 0x5 + .byte 0xeb,0x4 + .4byte .LASF4037 + .byte 0x5 + .byte 0xec,0x4 + .4byte .LASF4038 + .byte 0x5 + .byte 0xed,0x4 + .4byte .LASF4039 + .byte 0x5 + .byte 0xee,0x4 + .4byte .LASF4040 + .byte 0x5 + .byte 0xef,0x4 + .4byte .LASF4041 + .byte 0x5 + .byte 0xf0,0x4 + .4byte .LASF4042 + .byte 0x5 + .byte 0xf1,0x4 + .4byte .LASF4043 + .byte 0x5 + .byte 0xf2,0x4 + .4byte .LASF4044 + .byte 0x5 + .byte 0xf3,0x4 + .4byte .LASF4045 + .byte 0x5 + .byte 0xf4,0x4 + .4byte .LASF4046 + .byte 0x5 + .byte 0xf5,0x4 + .4byte .LASF4047 + .byte 0x5 + .byte 0xf6,0x4 + .4byte .LASF4048 + .byte 0x5 + .byte 0xf7,0x4 + .4byte .LASF4049 + .byte 0x5 + .byte 0xf8,0x4 + .4byte .LASF4050 + .byte 0x5 + .byte 0xf9,0x4 + .4byte .LASF4051 + .byte 0x5 + .byte 0xfa,0x4 + .4byte .LASF4052 + .byte 0x5 + .byte 0xfb,0x4 + .4byte .LASF4053 + .byte 0x5 + .byte 0xfc,0x4 + .4byte .LASF4054 + .byte 0x5 + .byte 0xfd,0x4 + .4byte .LASF4055 + .byte 0x5 + .byte 0xfe,0x4 + .4byte .LASF4056 + .byte 0x5 + .byte 0xff,0x4 + .4byte .LASF4057 + .byte 0x5 + .byte 0x80,0x5 + .4byte .LASF4058 + .byte 0x5 + .byte 0x81,0x5 + .4byte .LASF4059 + .byte 0x5 + .byte 0x82,0x5 + .4byte .LASF4060 + .byte 0x5 + .byte 0x83,0x5 + .4byte .LASF4061 + .byte 0x5 + .byte 0x84,0x5 + .4byte .LASF4062 + .byte 0x5 + .byte 0x85,0x5 + .4byte .LASF4063 + .byte 0x5 + .byte 0x86,0x5 + .4byte .LASF4064 + .byte 0x5 + .byte 0x87,0x5 + .4byte .LASF4065 + .byte 0x5 + .byte 0x88,0x5 + .4byte .LASF4066 + .byte 0x5 + .byte 0x89,0x5 + .4byte .LASF4067 + .byte 0x5 + .byte 0x8a,0x5 + .4byte .LASF4068 + .byte 0x5 + .byte 0x8b,0x5 + .4byte .LASF4069 + .byte 0x5 + .byte 0x8c,0x5 + .4byte .LASF4070 + .byte 0x5 + .byte 0x8d,0x5 + .4byte .LASF4071 + .byte 0x5 + .byte 0x8e,0x5 + .4byte .LASF4072 + .byte 0x5 + .byte 0x8f,0x5 + .4byte .LASF4073 + .byte 0x5 + .byte 0x90,0x5 + .4byte .LASF4074 + .byte 0x5 + .byte 0x91,0x5 + .4byte .LASF4075 + .byte 0x5 + .byte 0x92,0x5 + .4byte .LASF4076 + .byte 0x5 + .byte 0x93,0x5 + .4byte .LASF4077 + .byte 0x5 + .byte 0x94,0x5 + .4byte .LASF4078 + .byte 0x5 + .byte 0x95,0x5 + .4byte .LASF4079 + .byte 0x5 + .byte 0x96,0x5 + .4byte .LASF4080 + .byte 0x5 + .byte 0x97,0x5 + .4byte .LASF4081 + .byte 0x5 + .byte 0x98,0x5 + .4byte .LASF4082 + .byte 0x5 + .byte 0x99,0x5 + .4byte .LASF4083 + .byte 0x5 + .byte 0x9a,0x5 + .4byte .LASF4084 + .byte 0x5 + .byte 0x9b,0x5 + .4byte .LASF4085 + .byte 0x5 + .byte 0x9c,0x5 + .4byte .LASF4086 + .byte 0x5 + .byte 0x9d,0x5 + .4byte .LASF4087 + .byte 0x5 + .byte 0x9e,0x5 + .4byte .LASF4088 + .byte 0x5 + .byte 0x9f,0x5 + .4byte .LASF4089 + .byte 0x5 + .byte 0xa0,0x5 + .4byte .LASF4090 + .byte 0x5 + .byte 0xa1,0x5 + .4byte .LASF4091 + .byte 0x5 + .byte 0xa2,0x5 + .4byte .LASF4092 + .byte 0x5 + .byte 0xa3,0x5 + .4byte .LASF4093 + .byte 0x5 + .byte 0xa4,0x5 + .4byte .LASF4094 + .byte 0x5 + .byte 0xa5,0x5 + .4byte .LASF4095 + .byte 0x5 + .byte 0xa6,0x5 + .4byte .LASF4096 + .byte 0x5 + .byte 0xa7,0x5 + .4byte .LASF4097 + .byte 0x5 + .byte 0xa8,0x5 + .4byte .LASF4098 + .byte 0x5 + .byte 0xa9,0x5 + .4byte .LASF4099 + .byte 0x5 + .byte 0xaa,0x5 + .4byte .LASF4100 + .byte 0x5 + .byte 0xab,0x5 + .4byte .LASF4101 + .byte 0x5 + .byte 0xac,0x5 + .4byte .LASF4102 + .byte 0x5 + .byte 0xad,0x5 + .4byte .LASF4103 + .byte 0x5 + .byte 0xae,0x5 + .4byte .LASF4104 + .byte 0x5 + .byte 0xaf,0x5 + .4byte .LASF4105 + .byte 0x5 + .byte 0xb0,0x5 + .4byte .LASF4106 + .byte 0x5 + .byte 0xb1,0x5 + .4byte .LASF4107 + .byte 0x5 + .byte 0xb2,0x5 + .4byte .LASF4108 + .byte 0x5 + .byte 0xb3,0x5 + .4byte .LASF4109 + .byte 0x5 + .byte 0xb4,0x5 + .4byte .LASF4110 + .byte 0x5 + .byte 0xb5,0x5 + .4byte .LASF4111 + .byte 0x5 + .byte 0xb6,0x5 + .4byte .LASF4112 + .byte 0x5 + .byte 0xb7,0x5 + .4byte .LASF4113 + .byte 0x5 + .byte 0xb8,0x5 + .4byte .LASF4114 + .byte 0x5 + .byte 0xb9,0x5 + .4byte .LASF4115 + .byte 0x5 + .byte 0xba,0x5 + .4byte .LASF4116 + .byte 0x5 + .byte 0xbb,0x5 + .4byte .LASF4117 + .byte 0x5 + .byte 0xbc,0x5 + .4byte .LASF4118 + .byte 0x5 + .byte 0xbd,0x5 + .4byte .LASF4119 + .byte 0x5 + .byte 0xbe,0x5 + .4byte .LASF4120 + .byte 0x5 + .byte 0xbf,0x5 + .4byte .LASF4121 + .byte 0x5 + .byte 0xc0,0x5 + .4byte .LASF4122 + .byte 0x5 + .byte 0xc1,0x5 + .4byte .LASF4123 + .byte 0x5 + .byte 0xc2,0x5 + .4byte .LASF4124 + .byte 0x5 + .byte 0xc3,0x5 + .4byte .LASF4125 + .byte 0x5 + .byte 0xc4,0x5 + .4byte .LASF4126 + .byte 0x5 + .byte 0xc5,0x5 + .4byte .LASF4127 + .byte 0x5 + .byte 0xc6,0x5 + .4byte .LASF4128 + .byte 0x5 + .byte 0xc7,0x5 + .4byte .LASF4129 + .byte 0x5 + .byte 0xc8,0x5 + .4byte .LASF4130 + .byte 0x5 + .byte 0xc9,0x5 + .4byte .LASF4131 + .byte 0x5 + .byte 0xca,0x5 + .4byte .LASF4132 + .byte 0x5 + .byte 0xcb,0x5 + .4byte .LASF4133 + .byte 0x5 + .byte 0xcc,0x5 + .4byte .LASF4134 + .byte 0x5 + .byte 0xcd,0x5 + .4byte .LASF4135 + .byte 0x5 + .byte 0xce,0x5 + .4byte .LASF4136 + .byte 0x5 + .byte 0xcf,0x5 + .4byte .LASF4137 + .byte 0x5 + .byte 0xd0,0x5 + .4byte .LASF4138 + .byte 0x5 + .byte 0xd1,0x5 + .4byte .LASF4139 + .byte 0x5 + .byte 0xd2,0x5 + .4byte .LASF4140 + .byte 0x5 + .byte 0xd3,0x5 + .4byte .LASF4141 + .byte 0x5 + .byte 0xd4,0x5 + .4byte .LASF4142 + .byte 0x5 + .byte 0xd5,0x5 + .4byte .LASF4143 + .byte 0x5 + .byte 0xd6,0x5 + .4byte .LASF4144 + .byte 0x5 + .byte 0xd7,0x5 + .4byte .LASF4145 + .byte 0x5 + .byte 0xd8,0x5 + .4byte .LASF4146 + .byte 0x5 + .byte 0xd9,0x5 + .4byte .LASF4147 + .byte 0x5 + .byte 0xda,0x5 + .4byte .LASF4148 + .byte 0x5 + .byte 0xdb,0x5 + .4byte .LASF4149 + .byte 0x5 + .byte 0xdc,0x5 + .4byte .LASF4150 + .byte 0x5 + .byte 0xdd,0x5 + .4byte .LASF4151 + .byte 0x5 + .byte 0xde,0x5 + .4byte .LASF4152 + .byte 0x5 + .byte 0xdf,0x5 + .4byte .LASF4153 + .byte 0x5 + .byte 0xe0,0x5 + .4byte .LASF4154 + .byte 0x5 + .byte 0xe1,0x5 + .4byte .LASF4155 + .byte 0x5 + .byte 0xe2,0x5 + .4byte .LASF4156 + .byte 0x5 + .byte 0xe3,0x5 + .4byte .LASF4157 + .byte 0x5 + .byte 0xe4,0x5 + .4byte .LASF4158 + .byte 0x5 + .byte 0xe5,0x5 + .4byte .LASF4159 + .byte 0x5 + .byte 0xe6,0x5 + .4byte .LASF4160 + .byte 0x5 + .byte 0xe7,0x5 + .4byte .LASF4161 + .byte 0x5 + .byte 0xe8,0x5 + .4byte .LASF4162 + .byte 0x5 + .byte 0xe9,0x5 + .4byte .LASF4163 + .byte 0x5 + .byte 0xea,0x5 + .4byte .LASF4164 + .byte 0x5 + .byte 0xeb,0x5 + .4byte .LASF4165 + .byte 0x5 + .byte 0xec,0x5 + .4byte .LASF4166 + .byte 0x5 + .byte 0xed,0x5 + .4byte .LASF4167 + .byte 0x5 + .byte 0xee,0x5 + .4byte .LASF4168 + .byte 0x5 + .byte 0xef,0x5 + .4byte .LASF4169 + .byte 0x5 + .byte 0xf0,0x5 + .4byte .LASF4170 + .byte 0x5 + .byte 0xf1,0x5 + .4byte .LASF4171 + .byte 0x5 + .byte 0xf2,0x5 + .4byte .LASF4172 + .byte 0x5 + .byte 0xf3,0x5 + .4byte .LASF4173 + .byte 0x5 + .byte 0xf4,0x5 + .4byte .LASF4174 + .byte 0x5 + .byte 0xf5,0x5 + .4byte .LASF4175 + .byte 0x5 + .byte 0xf6,0x5 + .4byte .LASF4176 + .byte 0x5 + .byte 0xf7,0x5 + .4byte .LASF4177 + .byte 0x5 + .byte 0xf8,0x5 + .4byte .LASF4178 + .byte 0x5 + .byte 0xf9,0x5 + .4byte .LASF4179 + .byte 0x5 + .byte 0xfa,0x5 + .4byte .LASF4180 + .byte 0x5 + .byte 0xfb,0x5 + .4byte .LASF4181 + .byte 0x5 + .byte 0xfc,0x5 + .4byte .LASF4182 + .byte 0x5 + .byte 0xfd,0x5 + .4byte .LASF4183 + .byte 0x5 + .byte 0xfe,0x5 + .4byte .LASF4184 + .byte 0x5 + .byte 0xff,0x5 + .4byte .LASF4185 + .byte 0x5 + .byte 0x80,0x6 + .4byte .LASF4186 + .byte 0x5 + .byte 0x81,0x6 + .4byte .LASF4187 + .byte 0x5 + .byte 0x82,0x6 + .4byte .LASF4188 + .byte 0x5 + .byte 0x83,0x6 + .4byte .LASF4189 + .byte 0x5 + .byte 0x84,0x6 + .4byte .LASF4190 + .byte 0x5 + .byte 0x85,0x6 + .4byte .LASF4191 + .byte 0x5 + .byte 0x86,0x6 + .4byte .LASF4192 + .byte 0x5 + .byte 0x87,0x6 + .4byte .LASF4193 + .byte 0x5 + .byte 0x88,0x6 + .4byte .LASF4194 + .byte 0x5 + .byte 0x89,0x6 + .4byte .LASF4195 + .byte 0x5 + .byte 0x8a,0x6 + .4byte .LASF4196 + .byte 0x5 + .byte 0x8b,0x6 + .4byte .LASF4197 + .byte 0x5 + .byte 0x8c,0x6 + .4byte .LASF4198 + .byte 0x5 + .byte 0x8d,0x6 + .4byte .LASF4199 + .byte 0x5 + .byte 0x8e,0x6 + .4byte .LASF4200 + .byte 0x5 + .byte 0x8f,0x6 + .4byte .LASF4201 + .byte 0x5 + .byte 0x90,0x6 + .4byte .LASF4202 + .byte 0x5 + .byte 0x91,0x6 + .4byte .LASF4203 + .byte 0x5 + .byte 0x92,0x6 + .4byte .LASF4204 + .byte 0x5 + .byte 0x93,0x6 + .4byte .LASF4205 + .byte 0x5 + .byte 0x94,0x6 + .4byte .LASF4206 + .byte 0x5 + .byte 0x95,0x6 + .4byte .LASF4207 + .byte 0x5 + .byte 0x96,0x6 + .4byte .LASF4208 + .byte 0x5 + .byte 0x97,0x6 + .4byte .LASF4209 + .byte 0x5 + .byte 0x98,0x6 + .4byte .LASF4210 + .byte 0x5 + .byte 0x99,0x6 + .4byte .LASF4211 + .byte 0x5 + .byte 0x9a,0x6 + .4byte .LASF4212 + .byte 0x5 + .byte 0x9b,0x6 + .4byte .LASF4213 + .byte 0x5 + .byte 0x9c,0x6 + .4byte .LASF4214 + .byte 0x5 + .byte 0x9d,0x6 + .4byte .LASF4215 + .byte 0x5 + .byte 0x9e,0x6 + .4byte .LASF4216 + .byte 0x5 + .byte 0x9f,0x6 + .4byte .LASF4217 + .byte 0x5 + .byte 0xa0,0x6 + .4byte .LASF4218 + .byte 0x5 + .byte 0xa1,0x6 + .4byte .LASF4219 + .byte 0x5 + .byte 0xa2,0x6 + .4byte .LASF4220 + .byte 0x5 + .byte 0xa3,0x6 + .4byte .LASF4221 + .byte 0x5 + .byte 0xa4,0x6 + .4byte .LASF4222 + .byte 0x5 + .byte 0xa5,0x6 + .4byte .LASF4223 + .byte 0x5 + .byte 0xa6,0x6 + .4byte .LASF4224 + .byte 0x5 + .byte 0xa7,0x6 + .4byte .LASF4225 + .byte 0x5 + .byte 0xa8,0x6 + .4byte .LASF4226 + .byte 0x5 + .byte 0xa9,0x6 + .4byte .LASF4227 + .byte 0x5 + .byte 0xaa,0x6 + .4byte .LASF4228 + .byte 0x5 + .byte 0xab,0x6 + .4byte .LASF4229 + .byte 0x5 + .byte 0xac,0x6 + .4byte .LASF4230 + .byte 0x5 + .byte 0xad,0x6 + .4byte .LASF4231 + .byte 0x5 + .byte 0xae,0x6 + .4byte .LASF4232 + .byte 0x5 + .byte 0xaf,0x6 + .4byte .LASF4233 + .byte 0x5 + .byte 0xb0,0x6 + .4byte .LASF4234 + .byte 0x5 + .byte 0xb1,0x6 + .4byte .LASF4235 + .byte 0x5 + .byte 0xb2,0x6 + .4byte .LASF4236 + .byte 0x5 + .byte 0xb3,0x6 + .4byte .LASF4237 + .byte 0x5 + .byte 0xb4,0x6 + .4byte .LASF4238 + .byte 0x5 + .byte 0xb5,0x6 + .4byte .LASF4239 + .byte 0x5 + .byte 0xb6,0x6 + .4byte .LASF4240 + .byte 0x5 + .byte 0xb7,0x6 + .4byte .LASF4241 + .byte 0x5 + .byte 0xb8,0x6 + .4byte .LASF4242 + .byte 0x5 + .byte 0xb9,0x6 + .4byte .LASF4243 + .byte 0x5 + .byte 0xba,0x6 + .4byte .LASF4244 + .byte 0x5 + .byte 0xbb,0x6 + .4byte .LASF4245 + .byte 0x5 + .byte 0xbc,0x6 + .4byte .LASF4246 + .byte 0x5 + .byte 0xbd,0x6 + .4byte .LASF4247 + .byte 0x5 + .byte 0xbe,0x6 + .4byte .LASF4248 + .byte 0x5 + .byte 0xbf,0x6 + .4byte .LASF4249 + .byte 0x5 + .byte 0xc0,0x6 + .4byte .LASF4250 + .byte 0x5 + .byte 0xc1,0x6 + .4byte .LASF4251 + .byte 0x5 + .byte 0xc2,0x6 + .4byte .LASF4252 + .byte 0x5 + .byte 0xc3,0x6 + .4byte .LASF4253 + .byte 0x5 + .byte 0xc4,0x6 + .4byte .LASF4254 + .byte 0x5 + .byte 0xc5,0x6 + .4byte .LASF4255 + .byte 0x5 + .byte 0xc6,0x6 + .4byte .LASF4256 + .byte 0x5 + .byte 0xc7,0x6 + .4byte .LASF4257 + .byte 0x5 + .byte 0xc8,0x6 + .4byte .LASF4258 + .byte 0x5 + .byte 0xc9,0x6 + .4byte .LASF4259 + .byte 0x5 + .byte 0xca,0x6 + .4byte .LASF4260 + .byte 0x5 + .byte 0xcb,0x6 + .4byte .LASF4261 + .byte 0x5 + .byte 0xcc,0x6 + .4byte .LASF4262 + .byte 0x5 + .byte 0xcd,0x6 + .4byte .LASF4263 + .byte 0x5 + .byte 0xce,0x6 + .4byte .LASF4264 + .byte 0x5 + .byte 0xcf,0x6 + .4byte .LASF4265 + .byte 0x5 + .byte 0xd0,0x6 + .4byte .LASF4266 + .byte 0x5 + .byte 0xd1,0x6 + .4byte .LASF4267 + .byte 0x5 + .byte 0xd2,0x6 + .4byte .LASF4268 + .byte 0x5 + .byte 0xd3,0x6 + .4byte .LASF4269 + .byte 0x5 + .byte 0xd4,0x6 + .4byte .LASF4270 + .byte 0x5 + .byte 0xd5,0x6 + .4byte .LASF4271 + .byte 0x5 + .byte 0xd6,0x6 + .4byte .LASF4272 + .byte 0x5 + .byte 0xd7,0x6 + .4byte .LASF4273 + .byte 0x5 + .byte 0xd8,0x6 + .4byte .LASF4274 + .byte 0x5 + .byte 0xd9,0x6 + .4byte .LASF4275 + .byte 0x5 + .byte 0xda,0x6 + .4byte .LASF4276 + .byte 0x5 + .byte 0xdb,0x6 + .4byte .LASF4277 + .byte 0x5 + .byte 0xdc,0x6 + .4byte .LASF4278 + .byte 0x5 + .byte 0xdd,0x6 + .4byte .LASF4279 + .byte 0x5 + .byte 0xde,0x6 + .4byte .LASF4280 + .byte 0x5 + .byte 0xdf,0x6 + .4byte .LASF4281 + .byte 0x5 + .byte 0xe0,0x6 + .4byte .LASF4282 + .byte 0x5 + .byte 0xe1,0x6 + .4byte .LASF4283 + .byte 0x5 + .byte 0xe2,0x6 + .4byte .LASF4284 + .byte 0x5 + .byte 0xe3,0x6 + .4byte .LASF4285 + .byte 0x5 + .byte 0xe4,0x6 + .4byte .LASF4286 + .byte 0x5 + .byte 0xe5,0x6 + .4byte .LASF4287 + .byte 0x5 + .byte 0xe6,0x6 + .4byte .LASF4288 + .byte 0x5 + .byte 0xe7,0x6 + .4byte .LASF4289 + .byte 0x5 + .byte 0xe8,0x6 + .4byte .LASF4290 + .byte 0x5 + .byte 0xe9,0x6 + .4byte .LASF4291 + .byte 0x5 + .byte 0xea,0x6 + .4byte .LASF4292 + .byte 0x5 + .byte 0xeb,0x6 + .4byte .LASF4293 + .byte 0x5 + .byte 0xec,0x6 + .4byte .LASF4294 + .byte 0x5 + .byte 0xed,0x6 + .4byte .LASF4295 + .byte 0x5 + .byte 0xee,0x6 + .4byte .LASF4296 + .byte 0x5 + .byte 0xef,0x6 + .4byte .LASF4297 + .byte 0x5 + .byte 0xf0,0x6 + .4byte .LASF4298 + .byte 0x5 + .byte 0xf1,0x6 + .4byte .LASF4299 + .byte 0x5 + .byte 0xf2,0x6 + .4byte .LASF4300 + .byte 0x5 + .byte 0xf3,0x6 + .4byte .LASF4301 + .byte 0x5 + .byte 0xf6,0x6 + .4byte .LASF4302 + .byte 0x5 + .byte 0xf7,0x6 + .4byte .LASF4303 + .byte 0x5 + .byte 0xf9,0x6 + .4byte .LASF4304 + .byte 0x5 + .byte 0xfb,0x6 + .4byte .LASF4305 + .byte 0x5 + .byte 0xfd,0x6 + .4byte .LASF4306 + .byte 0x5 + .byte 0xfe,0x6 + .4byte .LASF4307 + .byte 0x5 + .byte 0xff,0x6 + .4byte .LASF4308 + .byte 0x5 + .byte 0x80,0x7 + .4byte .LASF4309 + .byte 0x5 + .byte 0x81,0x7 + .4byte .LASF4310 + .byte 0x5 + .byte 0x83,0x7 + .4byte .LASF4311 + .byte 0x5 + .byte 0x84,0x7 + .4byte .LASF4312 + .byte 0x5 + .byte 0x85,0x7 + .4byte .LASF4313 + .byte 0x5 + .byte 0x87,0x7 + .4byte .LASF4314 + .byte 0x5 + .byte 0x88,0x7 + .4byte .LASF4315 + .byte 0x5 + .byte 0x8b,0x7 + .4byte .LASF4316 + .byte 0x5 + .byte 0x8c,0x7 + .4byte .LASF4317 + .byte 0x5 + .byte 0x8d,0x7 + .4byte .LASF4318 + .byte 0x5 + .byte 0x8e,0x7 + .4byte .LASF4319 + .byte 0x5 + .byte 0x8f,0x7 + .4byte .LASF4320 + .byte 0x5 + .byte 0x90,0x7 + .4byte .LASF4321 + .byte 0x5 + .byte 0x91,0x7 + .4byte .LASF4322 + .byte 0x5 + .byte 0x92,0x7 + .4byte .LASF4323 + .byte 0x5 + .byte 0x93,0x7 + .4byte .LASF4324 + .byte 0x5 + .byte 0x94,0x7 + .4byte .LASF4325 + .byte 0x5 + .byte 0x95,0x7 + .4byte .LASF4326 + .byte 0x5 + .byte 0x96,0x7 + .4byte .LASF4327 + .byte 0 + .section .debug_line,"",@progbits +.Ldebug_line0: + .section .debug_str,"MS",@progbits,1 +.LASF1189: + .string "DAC_WAVE_BIT_WIDTH_4 DWBW(3)" +.LASF328: + .string "_POSIX_C_SOURCE 1" +.LASF2499: + .string "SPI_I2SCTL_I2SOPMOD BITS(8,9)" +.LASF1587: + .string "OB_WP_25 ((uint32_t)0x02000000U)" +.LASF3011: + .string "USART_RECEIVE_ENABLE CTL0_REN(1)" +.LASF365: + .string "___int16_t_defined 1" +.LASF2260: + .string "RCU_AHB_CKSYS_DIV8 CFG0_AHBPSC(10)" +.LASF757: + .string "BKP_DATA BITS(0,15)" +.LASF884: + .string "CAN_CTL_RFOD BIT(3)" +.LASF1936: + .string "I2C_STAT1_RXGC BIT(4)" +.LASF3937: + .string "MASK_FCVT_S_WU 0xfff0007f" +.LASF3934: + .string "MATCH_FCVT_S_W 0xd0000053" +.LASF4353: + .string "CAN0_RX0_IRQn" +.LASF3161: + .string "MTIME_HANDLER eclic_mtip_handler" +.LASF1717: + .string "GPIO_BC_CR2 BIT(2)" +.LASF3982: + .string "MATCH_C_JR 0x8002" +.LASF4309: + .string "CSR_PUSHMEPC 0x7EF" +.LASF2958: + .string "USART_STAT_TBE BIT(7)" +.LASF1400: + .string "EXTI_EVEN_EVEN11 BIT(11)" +.LASF834: + .string "CAN_F19DATA0(canx) REG32((canx) + 0x2D8U)" +.LASF1276: + .string "DMA_CHXCTL_MWIDTH BITS(10,11)" +.LASF2461: + .string "SPI_CTL0_MSTMOD BIT(2)" +.LASF2405: + .string "RCU_DEEPSLEEP_V_0_9 DSV_DSLPVS(3)" +.LASF1301: + .string "DMA_INT_HTF DMA_CHXCTL_HTFIE" +.LASF2988: + .string "USART_CTL2_IREN BIT(1)" +.LASF2139: + .string "RCU_INT_CKMIC BIT(23)" +.LASF4290: + .string "CSR_MHPMCOUNTER20H 0xb94" +.LASF2430: + .string "RTC_DIVL_DIV BITS(0,15)" +.LASF3110: + .string "_T_WCHAR " +.LASF2001: + .string "FWDGT_STAT_RUD BIT(1)" +.LASF536: + .string "ADC_IOFF1(adcx) REG32((adcx) + 0x18U)" +.LASF1614: + .string "AFIO_EXTISS0 REG32(AFIO + 0x08U)" +.LASF1974: + .string "I2C_DMA_OFF ((uint32_t)0x00000000U)" +.LASF2888: + .string "TIMER_IC_POLARITY_RISING ((uint16_t)0x0000U)" +.LASF2496: + .string "SPI_I2SCTL_CKPL BIT(3)" +.LASF826: + .string "CAN_F11DATA0(canx) REG32((canx) + 0x298U)" +.LASF4034: + .string "MATCH_C_SUBW 0x9c01" +.LASF150: + .string "__FLT_MAX_10_EXP__ 38" +.LASF2473: + .string "SPI_CTL1_DMAREN BIT(0)" +.LASF509: + .string "SPI_BASE (APB1_BUS_BASE + 0x00003800U)" +.LASF127: + .string "__INT_FAST16_WIDTH__ 32" +.LASF4227: + .string "CSR_MHPMEVENT24 0x338" +.LASF980: + .string "CAN_RFIFOMDATA0_DB1 BITS(8,15)" +.LASF4301: + .string "CSR_MHPMCOUNTER31H 0xb9f" +.LASF2987: + .string "USART_CTL2_ERRIE BIT(0)" +.LASF2715: + .string "TIMER_CHCTL2_CH2EN BIT(8)" +.LASF4093: + .string "MASK_CUSTOM2_RD 0x707f" +.LASF913: + .string "CAN_TSTAT_MTE2 BIT(19)" +.LASF4025: + .string "MASK_C_ANDI 0xec03" +.LASF3465: + .string "__SWID 0x2000" +.LASF3517: + .string "MSTATUS_VM 0x1F000000" +.LASF2560: + .string "I2S_CKPL_HIGH SPI_I2SCTL_CKPL" +.LASF2202: + .string "RCU_APB1EN_I2C0EN BIT(21)" +.LASF3935: + .string "MASK_FCVT_S_W 0xfff0007f" +.LASF2450: + .string "SPI_CTL0(spix) REG32((spix) + 0x00U)" +.LASF2875: + .string "TIMER_OC_MODE_TOGGLE ((uint16_t)0x0030U)" +.LASF1471: + .string "EXTI_PD_PD6 BIT(6)" +.LASF1095: + .string "CAN_FILTERBITS_16BIT ((uint8_t)0x00U)" +.LASF4400: + .string "long unsigned int" +.LASF3245: + .string "__CC_SUPPORTS_VARADIC_XXX 1" +.LASF726: + .string "BKP_DATA14 REG16((BKP) + 0x50U)" +.LASF1768: + .string "AFIO_EXTI2_SS BITS(8, 11)" +.LASF2930: + .string "TIMER_EXT_TRI_PSC_DIV4 SMCFG_ETPSC(2)" +.LASF2410: + .string "RTC_PSCH REG32(RTC + 0x08U)" +.LASF4284: + .string "CSR_MHPMCOUNTER14H 0xb8e" +.LASF1776: + .string "AFIO_EXTI10_SS BITS(8, 11)" +.LASF4285: + .string "CSR_MHPMCOUNTER15H 0xb8f" +.LASF300: + .string "__SIZEOF_WCHAR_T__ 4" +.LASF3570: + .string "MCONTROL_ACTION_TRACE_STOP 3" +.LASF500: + .string "EXMC_BASE ((uint32_t)0xA0000000U)" +.LASF1670: + .string "GPIO_OCTL_OCTL3 BIT(3)" +.LASF4362: + .string "TIMER2_IRQn" +.LASF1339: + .string "EXMC_SNCTL_NRTP BITS(2,3)" +.LASF307: + .string "__riscv_div 1" +.LASF3495: + .string "putchar_unlocked(_c) _putchar_unlocked(_c)" +.LASF3820: + .string "MATCH_LR_D 0x1000302f" +.LASF754: + .string "BKP_OCTL REG16((BKP) + 0x2CU)" +.LASF2774: + .string "TIMER_DMA_TRGD ((uint16_t)TIMER_DMAINTEN_TRGDEN)" +.LASF1407: + .string "EXTI_EVEN_EVEN18 BIT(18)" +.LASF4010: + .string "MATCH_C_FSW 0xe000" +.LASF2413: + .string "RTC_DIVL REG32(RTC + 0x14U)" +.LASF3612: + .string "IRQ_H_TIMER 6" +.LASF477: + .string "WCHAR_MAX (__WCHAR_MAX__)" +.LASF3834: + .string "MATCH_MRET 0x30200073" +.LASF2004: + .string "FWDGT_PSC_DIV8 ((uint8_t)PSC_PSC(1))" +.LASF3331: + .string "__need___va_list" +.LASF1036: + .string "GET_ERR_ERRN(regval) GET_BITS((uint32_t)(regval), 4U, 6U)" +.LASF3304: + .string "__DEVOLATILE(type,var) ((type)(__uintptr_t)(volatile void *)(var))" +.LASF2551: + .string "I2S_MODE_MASTERTX I2SCTL_I2SOPMOD(2)" +.LASF3103: + .string "_SIZET_ " +.LASF1338: + .string "EXMC_SNCTL_NRMUX BIT(1)" +.LASF3578: + .string "MIP_SSIP (1 << IRQ_S_SOFT)" +.LASF1328: + .string "ECLIC_PRIGROUP_LEVEL2_PRIO2 2" +.LASF2906: + .string "TIMER_SMCFG_TRGSEL_ETIFP SMCFG_TRGSEL(7)" +.LASF1115: + .string "CAN_INT_WAKEUP CAN_INTEN_WIE" +.LASF4313: + .string "CSR_TXEVT 0x812" +.LASF438: + .string "INT16_MIN (-__INT16_MAX__ - 1)" +.LASF1609: + .string "GPIO_BOP(gpiox) REG32((gpiox) + 0x10U)" +.LASF4163: + .string "CSR_MCAUSE 0x342" +.LASF1720: + .string "GPIO_BC_CR5 BIT(5)" +.LASF2298: + .string "RCU_PLL_MUL12 CFG0_PLLMF(10)" +.LASF580: + .string "ADC_CTL1_SWRCST BIT(22)" +.LASF2955: + .string "USART_STAT_IDLEF BIT(4)" +.LASF4006: + .string "MATCH_C_FSD 0xa000" +.LASF1225: + .string "DAC_TRIANGLE_AMPLITUDE_4095 DAC_WAVE_BIT_WIDTH_12" +.LASF3163: + .string "PMOVI_HANDLER eclic_pmovi_handler" +.LASF3701: + .string "MASK_XOR 0xfe00707f" +.LASF2556: + .string "I2S_STD_LSB I2SCTL_I2SSTD(2)" +.LASF1530: + .string "FMC_REGIDX_BITS(regidx,bitpos0,bitpos1) (((uint32_t)(regidx) << 12) | ((uint32_t)(bitpos0) << 6) | (uint32_t)(bitpos1))" +.LASF2063: + .string "PMU_LVDT_5 CTL_LVDT(5)" +.LASF340: + .string "SYSTEM_GD32VF103_H " +.LASF3845: + .string "MASK_CSRRS 0x707f" +.LASF1515: + .string "FMC_CTL_LK BIT(7)" +.LASF4258: + .string "CSR_HPMCOUNTER19H 0xc93" +.LASF3180: + .string "_HAVE_CC_INHIBIT_LOOP_TO_LIBCALL 1" +.LASF622: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH1 CTL1_ETSRC(1)" +.LASF458: + .string "UINT_FAST8_MAX (__UINT_FAST8_MAX__)" +.LASF1047: + .string "CAN_ERRN_7 ERR_ERRN(7U)" +.LASF3265: + .string "__alloc_align(x) __attribute__((__alloc_align__(x)))" +.LASF182: + .string "__LDBL_DECIMAL_DIG__ 36" +.LASF451: + .string "INT64_MAX (__INT64_MAX__)" +.LASF1772: + .string "AFIO_EXTI6_SS BITS(8, 11)" +.LASF1187: + .string "DAC_WAVE_BIT_WIDTH_2 DWBW(1)" +.LASF412: + .string "_UINT32_T_DECLARED " +.LASF1277: + .string "DMA_CHXCTL_PRIO BITS(12,13)" +.LASF783: + .string "CAN_STAT(canx) REG32((canx) + 0x04U)" +.LASF1780: + .string "AFIO_EXTI14_SS BITS(8, 11)" +.LASF673: + .string "ADC_CHANNEL_13 ((uint8_t)0x0DU)" +.LASF1806: + .string "GPIO_EVENT_PIN_0 ((uint8_t)0x00U)" +.LASF2428: + .string "RTC_PSCL_PSC BITS(0,15)" +.LASF278: + .string "__FLT64X_HAS_DENORM__ 1" +.LASF2976: + .string "USART_CTL0_WL BIT(12)" +.LASF434: + .string "UINT8_MAX (__UINT8_MAX__)" +.LASF3330: + .string "__need___va_list " +.LASF1114: + .string "CAN_INT_ERR CAN_INTEN_ERRIE" +.LASF3889: + .string "MASK_FMIN_D 0xfe00707f" +.LASF1106: + .string "CAN_INT_RFO0 CAN_INTEN_RFOIE0" +.LASF4179: + .string "CSR_MHPMCOUNTER7 0xb07" +.LASF1552: + .string "FMC_NSPC ((uint8_t)0xA5U)" +.LASF1016: + .string "TMDATA0_DB0(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF992: + .string "CAN_FW_FW(regval) BIT(regval)" +.LASF3793: + .string "MASK_AMOMINU_W 0xf800707f" +.LASF1899: + .string "I2C_CTL0_START BIT(8)" +.LASF4143: + .string "CSR_HPMCOUNTER30 0xc1e" +.LASF2296: + .string "RCU_PLL_MUL10 CFG0_PLLMF(8)" +.LASF1725: + .string "GPIO_BC_CR10 BIT(10)" +.LASF385: + .string "short +1" +.LASF4253: + .string "CSR_HPMCOUNTER14H 0xc8e" +.LASF1872: + .string "GPIO_TIMER4CH3_IREMAP ((uint32_t)0x00200001U)" +.LASF1601: + .string "GPIOC (GPIO_BASE + 0x00000800U)" +.LASF3270: + .string "__always_inline __inline__ __attribute__((__always_inline__))" +.LASF3864: + .string "MATCH_FSGNJN_S 0x20001053" +.LASF2807: + .string "TIMER_DMACFG_DMATC_10TRANSFER DMACFG_DMATC(9)" +.LASF701: + .string "OVSCR_OVSR(regval) (BITS(2,4) & ((uint32_t)(regval) << 2))" +.LASF3003: + .string "USART_REGIDX_BIT2(regidx,bitpos,regidx2,bitpos2) (((uint32_t)(regidx2) << 22) | (uint32_t)((bitpos2) << 16) | (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos)))" +.LASF4089: + .string "MASK_CUSTOM2_RS1 0x707f" +.LASF2984: + .string "USART_CTL1_CKEN BIT(11)" +.LASF4018: + .string "MATCH_C_LUI 0x6001" +.LASF1013: + .string "FCTL_HBC1F(regval) (BITS(8,13) & ((uint32_t)(regval) << 8))" +.LASF3558: + .string "MCONTROL_M (1<<6)" +.LASF3879: + .string "MASK_FMUL_D 0xfe00007f" +.LASF624: + .string "ADC0_1_EXTTRIG_REGULAR_T1_CH1 CTL1_ETSRC(3)" +.LASF677: + .string "ADC_CHANNEL_17 ((uint8_t)0x11U)" +.LASF2235: + .string "RCU_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF4235: + .string "CSR_MVENDORID 0xf11" +.LASF2576: + .string "SPI_FLAG_TBE SPI_STAT_TBE" +.LASF2931: + .string "TIMER_EXT_TRI_PSC_DIV8 SMCFG_ETPSC(3)" +.LASF466: + .string "INT_FAST64_MAX (__INT_FAST64_MAX__)" +.LASF1822: + .string "GPIO_PIN_SOURCE_0 ((uint8_t)0x00U)" +.LASF4094: + .string "MATCH_CUSTOM2_RD_RS1 0x605b" +.LASF3238: + .string "__GNUCLIKE_MATH_BUILTIN_RELOPS " +.LASF511: + .string "I2C_BASE (APB1_BUS_BASE + 0x00005400U)" +.LASF3435: + .string "_MODE_T_DECLARED " +.LASF2989: + .string "USART_CTL2_IRLP BIT(2)" +.LASF2789: + .string "TIMER_DMACFG_DMATA_CAR DMACFG_DMATA(11)" +.LASF2783: + .string "TIMER_DMACFG_DMATA_SWEVG DMACFG_DMATA(5)" +.LASF4124: + .string "CSR_HPMCOUNTER11 0xc0b" +.LASF3594: + .string "MIE_HEIE MIP_HEIP" +.LASF2041: + .string "DBG_LOW_POWER_STANDBY DBG_CTL_STB_HOLD" +.LASF2839: + .string "TIMER_UPDATE_SRC_REGULAR TIMER_CTL0_UPS" +.LASF3250: + .string "__STRING(x) #x" +.LASF1763: + .string "AFIO_PCF0_SWJ_CFG BITS(24, 26)" +.LASF1554: + .string "OB_SPC_SPC ((uint32_t)0x000000FFU)" +.LASF510: + .string "USART_BASE (APB1_BUS_BASE + 0x00004400U)" +.LASF1029: + .string "GET_RFIFOMDATA0_DB1(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF999: + .string "CAN_BIT_POS0(val) (((uint32_t)(val) >> 6) & 0x1FU)" +.LASF2557: + .string "I2S_STD_PCMSHORT I2SCTL_I2SSTD(3)" +.LASF2113: + .string "RCU_CFG0_USBFSPSC BITS(22,23)" +.LASF1143: + .string "DAC_CTL_DBOFF0 BIT(1)" +.LASF788: + .string "CAN_ERR(canx) REG32((canx) + 0x18U)" +.LASF1427: + .string "EXTI_FTEN_FTEN0 BIT(0)" +.LASF2243: + .string "CTL_REG_OFFSET 0x00U" +.LASF4299: + .string "CSR_MHPMCOUNTER29H 0xb9d" +.LASF2982: + .string "USART_CTL1_CPH BIT(9)" +.LASF1380: + .string "EXTI_INTEN_INTEN10 BIT(10)" +.LASF3650: + .string "rdinstret() read_csr(instret)" +.LASF1512: + .string "FMC_CTL_OBPG BIT(4)" +.LASF420: + .string "_UINTPTR_T_DECLARED " +.LASF1704: + .string "GPIO_BOP_CR5 BIT(21)" +.LASF1753: + .string "AFIO_PCF0_USART0_REMAP BIT(2)" +.LASF4349: + .string "DMA0_Channel5_IRQn" +.LASF2300: + .string "RCU_PLL_MUL14 CFG0_PLLMF(12)" +.LASF1731: + .string "GPIO_LOCK_LK0 BIT(0)" +.LASF3139: + .string "_RISCV_CONST_H " +.LASF2533: + .string "I2S_AUDIOSAMPLE_11K ((uint32_t)11025U)" +.LASF2424: + .string "RTC_CTL_RSYNF BIT(3)" +.LASF1175: + .string "DAC_TRIGGER_T6_TRGO CTL_DTSEL(2)" +.LASF3083: + .string "_BSD_PTRDIFF_T_ " +.LASF1041: + .string "CAN_ERRN_1 ERR_ERRN(1U)" +.LASF2607: + .string "TIMER_PSC(timerx) REG32((timerx) + 0x28U)" +.LASF1907: + .string "I2C_CTL1_ERRIE BIT(8)" +.LASF4335: + .string "TAMPER_IRQn" +.LASF2544: + .string "I2S_FRAMEFORMAT_DT24B_CH32B (I2SCTL_DTLEN(1) | SPI_I2SCTL_CHLEN)" +.LASF2146: + .string "RCU_APB2RST_ADC0RST BIT(9)" +.LASF2535: + .string "I2S_AUDIOSAMPLE_22K ((uint32_t)22050U)" +.LASF2531: + .string "SPI_PSC_256 CTL0_PSC(7)" +.LASF3322: + .string "__requires_exclusive(...) __lock_annotate(exclusive_locks_required(__VA_ARGS__))" +.LASF50: + .string "__INT_LEAST16_TYPE__ short int" +.LASF3214: + .string "__attribute_malloc__ " +.LASF2437: + .string "RTC_INT_OVERFLOW RTC_INTEN_OVIE" +.LASF1849: + .string "GPIO_PIN_11 BIT(11)" +.LASF1130: + .string "DAC_SWT REG32(DAC + 0x04U)" +.LASF2350: + .string "RCU_PREDV0_DIV11 CFG1_PREDV0(10)" +.LASF2096: + .string "RCU_CTL_HXTALBPS BIT(18)" +.LASF668: + .string "ADC_CHANNEL_8 ((uint8_t)0x08U)" +.LASF2555: + .string "I2S_STD_MSB I2SCTL_I2SSTD(1)" +.LASF4314: + .string "CSR_MMISC_CTL 0x7d0" +.LASF3638: + .string "RISCV_PGLEVEL_BITS 10" +.LASF305: + .string "__riscv_atomic 1" +.LASF4375: + .string "USBFS_WKUP_IRQn" +.LASF550: + .string "ADC_OVSCR(adcx) REG32((adcx) + 0x80U)" +.LASF1229: + .string "DMA_INTF(dmax) REG32((dmax) + 0x00U)" +.LASF2131: + .string "RCU_INT_PLL2STBIE BIT(14)" +.LASF1890: + .string "I2C_RT(i2cx) REG32((i2cx) + 0x20U)" +.LASF3903: + .string "MASK_FEQ_S 0xfe00707f" +.LASF2585: + .string "I2S_FLAG_TXURERR SPI_STAT_TXURERR" +.LASF2578: + .string "SPI_FLAG_CONFERR SPI_STAT_CONFERR" +.LASF3182: + .string "_FSEEK_OPTIMIZATION 1" +.LASF1341: + .string "EXMC_SNCTL_NREN BIT(6)" +.LASF1440: + .string "EXTI_FTEN_FTEN13 BIT(13)" +.LASF3962: + .string "MATCH_FMADD_S 0x43" +.LASF1641: + .string "GPIO_CTL1_MD11 BITS(12, 13)" +.LASF3613: + .string "IRQ_M_TIMER 7" +.LASF547: + .string "ADC_IDATA2(adcx) REG32((adcx) + 0x44U)" +.LASF349: + .string "__GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))" +.LASF2655: + .string "TIMER_DMAINTEN_CH2DEN BIT(11)" +.LASF3636: + .string "MSTATUS_SD MSTATUS32_SD" +.LASF1922: + .string "I2C_STAT0_ADD10SEND BIT(3)" +.LASF2757: + .string "TIMER_FLAG_CH0 TIMER_INTF_CH0IF" +.LASF2116: + .string "RCU_CFG0_PLLMF_4 BIT(29)" +.LASF227: + .string "__FLT64_DECIMAL_DIG__ 17" +.LASF3393: + .string "_REENT_MP_FREELIST(ptr) ((ptr)->_freelist)" +.LASF4225: + .string "CSR_MHPMEVENT22 0x336" +.LASF3512: + .string "MSTATUS_FS 0x00006000" +.LASF898: + .string "CAN_STAT_LASTRX BIT(10)" +.LASF2279: + .string "RCU_CKADC_CKAPB2_DIV4 ((uint32_t)0x00000001U)" +.LASF4344: + .string "DMA0_Channel0_IRQn" +.LASF2995: + .string "USART_CTL2_RTSEN BIT(8)" +.LASF1323: + .string "DMA_MEMORY_TO_MEMORY_ENABLE ((uint32_t)0x00000001U)" +.LASF3419: + .string "__clock_t_defined " +.LASF1833: + .string "GPIO_PIN_SOURCE_11 ((uint8_t)0x0BU)" +.LASF2494: + .string "SPI_I2SCTL_CHLEN BIT(0)" +.LASF758: + .string "BKP_OCTL_RCCV BITS(0,6)" +.LASF1257: + .string "DMA_CH6PADDR(dmax) REG32((dmax) + 0x88U)" +.LASF761: + .string "BKP_OCTL_ROSEL BIT(9)" +.LASF4260: + .string "CSR_HPMCOUNTER21H 0xc95" +.LASF1967: + .string "I2C_SCLSTRETCH_ENABLE ((uint32_t)0x00000000U)" +.LASF794: + .string "CAN_TMI1(canx) REG32((canx) + 0x190U)" +.LASF4064: + .string "MATCH_CUSTOM0_RS1 0x200b" +.LASF464: + .string "UINT_FAST32_MAX (__UINT_FAST32_MAX__)" +.LASF665: + .string "ADC_CHANNEL_5 ((uint8_t)0x05U)" +.LASF531: + .string "ADC_CTL0(adcx) REG32((adcx) + 0x04U)" +.LASF1236: + .string "DMA_CH1CNT(dmax) REG32((dmax) + 0x20U)" +.LASF945: + .string "CAN_ERR_PERR BIT(1)" +.LASF2375: + .string "RCU_PLL1_MUL9 CFG1_PLL1MF(7)" +.LASF926: + .string "CAN_RFIFO1_RFL1 BITS(0,1)" +.LASF40: + .string "__SIG_ATOMIC_TYPE__ int" +.LASF3049: + .string "CLT2_RTSEN(regval) (BIT(8) & ((uint32_t)(regval) << 8))" +.LASF957: + .string "CAN_TMI_FT BIT(1)" +.LASF2144: + .string "RCU_APB2RST_PDRST BIT(5)" +.LASF3293: + .string "__strong_reference(sym,aliassym) extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)))" +.LASF4312: + .string "CSR_SLEEPVALUE 0x811" +.LASF1055: + .string "CAN_BT_SJW_3TQ ((uint8_t)0x02U)" +.LASF2168: + .string "RCU_APB1RST_BKPIRST BIT(27)" +.LASF3738: + .string "MATCH_LHU 0x5003" +.LASF3706: + .string "MATCH_OR 0x6033" +.LASF2768: + .string "TIMER_DMA_UPD ((uint16_t)TIMER_DMAINTEN_UPDEN)" +.LASF450: + .string "INT64_MIN (-__INT64_MAX__ - 1)" +.LASF3481: + .string "_stdin_r(x) ((x)->_stdin)" +.LASF3838: + .string "MATCH_SFENCE_VM 0x10400073" +.LASF641: + .string "ADC_SAMPLETIME_13POINT5 SAMPTX_SPT(2)" +.LASF1215: + .string "DAC_TRIANGLE_AMPLITUDE_3 DAC_WAVE_BIT_WIDTH_2" +.LASF2211: + .string "RCU_BDCTL_LXTALBPS BIT(2)" +.LASF812: + .string "CAN_FSCFG(canx) REG32((canx) + 0x20CU)" +.LASF2475: + .string "SPI_CTL1_NSSDRV BIT(2)" +.LASF3155: + .string "ECLIC_INT_ATTR_TRIG_NEG 0x04" +.LASF2301: + .string "RCU_PLL_MUL6_5 CFG0_PLLMF(13)" +.LASF44: + .string "__INT64_TYPE__ long long int" +.LASF903: + .string "CAN_TSTAT_MTE0 BIT(3)" +.LASF638: + .string "SAMPTX_SPT(regval) (BITS(0,2) & ((uint32_t)(regval) << 0))" +.LASF1261: + .string "DMA_INTF_HTFIF BIT(2)" +.LASF2575: + .string "SPI_FLAG_RBNE SPI_STAT_RBNE" +.LASF4196: + .string "CSR_MHPMCOUNTER24 0xb18" +.LASF2912: + .string "TIMER_TRI_OUT_SRC_O0CPRE CTL1_MMC(4)" +.LASF62: + .string "__UINT_FAST16_TYPE__ unsigned int" +.LASF3972: + .string "MATCH_FMSUB_D 0x2000047" +.LASF2805: + .string "TIMER_DMACFG_DMATC_8TRANSFER DMACFG_DMATC(7)" +.LASF4250: + .string "CSR_HPMCOUNTER11H 0xc8b" +.LASF4051: + .string "MASK_C_FLWSP 0xe003" +.LASF3134: + .string "TIMER_MTIME_size 0x8" +.LASF1956: + .string "I2C_SMBUSMODE_ENABLE I2C_CTL0_SMBEN" +.LASF3863: + .string "MASK_FSGNJ_S 0xfe00707f" +.LASF363: + .string "__have_long32 1" +.LASF1336: + .string "EXMC_SNWTCFG0 REG32(EXMC + 0x104U)" +.LASF1240: + .string "DMA_CH2CNT(dmax) REG32((dmax) + 0x34U)" +.LASF3099: + .string "_BSD_SIZE_T_DEFINED_ " +.LASF4113: + .string "CSR_CYCLE 0xc00" +.LASF1099: + .string "CAN_FILTER_MASK_16BITS ((uint32_t)0x0000FFFFU)" +.LASF3519: + .string "MSTATUS64_SD 0x8000000000000000" +.LASF800: + .string "CAN_TMDATA02(canx) REG32((canx) + 0x1A8U)" +.LASF2181: + .string "RCU_APB2EN_PCEN BIT(4)" +.LASF1855: + .string "GPIO_SPI0_REMAP ((uint32_t)0x00000001U)" +.LASF4351: + .string "ADC0_1_IRQn" +.LASF2077: + .string "RCU_CTL REG32(RCU + 0x00U)" +.LASF3736: + .string "MATCH_LBU 0x4003" +.LASF4368: + .string "SPI0_IRQn" +.LASF947: + .string "CAN_ERR_ERRN BITS(4,6)" +.LASF3945: + .string "MASK_FCVT_D_W 0xfff0007f" +.LASF195: + .string "__FLT16_MAX_EXP__ 16" +.LASF3037: + .string "CTL1_CPH(regval) (BIT(9) & ((uint32_t)(regval) << 9))" +.LASF1738: + .string "GPIO_LOCK_LK7 BIT(7)" +.LASF3749: + .string "MASK_SD 0x707f" +.LASF400: + .string "__LEAST8 \"hh\"" +.LASF1567: + .string "OB_WP_5 ((uint32_t)0x00000020U)" +.LASF204: + .string "__FLT16_HAS_INFINITY__ 1" +.LASF3689: + .string "MASK_ANDI 0x707f" +.LASF1262: + .string "DMA_INTF_ERRIF BIT(3)" +.LASF1148: + .string "DAC_CTL_DDMAEN0 BIT(12)" +.LASF2132: + .string "RCU_INT_IRC40KSTBIC BIT(16)" +.LASF1194: + .string "DAC_WAVE_BIT_WIDTH_9 DWBW(8)" +.LASF124: + .string "__INT_FAST8_MAX__ 0x7fffffff" +.LASF327: + .string "RT_USING_LIBC 1" +.LASF7: + .string "__GNUC_PATCHLEVEL__ 0" +.LASF2323: + .string "RCU_CKUSB_CKPLL_DIV2 CFG0_USBPSC(3)" +.LASF2765: + .string "TIMER_FLAG_CH1O TIMER_INTF_CH1OF" +.LASF3230: + .string "__GNUCLIKE_CTOR_SECTION_HANDLING 1" +.LASF2710: + .string "TIMER_CHCTL2_CH0NP BIT(3)" +.LASF3437: + .string "__clockid_t_defined " +.LASF813: + .string "CAN_FAFIFO(canx) REG32((canx) + 0x214U)" +.LASF2592: + .string "TIMER2 (TIMER_BASE + 0x00000400U)" +.LASF1750: + .string "AFIO_EC_EOE BIT(7)" +.LASF2772: + .string "TIMER_DMA_CH3D ((uint16_t)TIMER_DMAINTEN_CH3DEN)" +.LASF3799: + .string "MASK_LR_W 0xf9f0707f" +.LASF3999: + .string "MASK_C_ADDI4SPN 0xe003" +.LASF4118: + .string "CSR_HPMCOUNTER5 0xc05" +.LASF39: + .string "__CHAR32_TYPE__ long unsigned int" +.LASF1986: + .string "DATA_RECV(regval) GET_BITS((uint32_t)(regval), 0, 7)" +.LASF2570: + .string "SPI_I2S_INT_FLAG_RXORERR ((uint8_t)0x02U)" +.LASF1155: + .string "DAC_CTL_DDMAEN1 BIT(28)" +.LASF1405: + .string "EXTI_EVEN_EVEN16 BIT(16)" +.LASF1393: + .string "EXTI_EVEN_EVEN4 BIT(4)" +.LASF3737: + .string "MASK_LBU 0x707f" +.LASF1062: + .string "CAN_BT_BS1_6TQ ((uint8_t)0x05U)" +.LASF3397: + .string "_REENT_STRTOK_LAST(ptr) ((ptr)->_new._reent._strtok_last)" +.LASF2832: + .string "TIMER_COUNTER_DOWN ((uint16_t)TIMER_CTL0_DIR)" +.LASF4386: + .string "DMA1_Channel3_IRQn" +.LASF294: + .string "__GCC_ATOMIC_LONG_LOCK_FREE 2" +.LASF2897: + .string "TIMER_IC_PSC_DIV8 ((uint16_t)0x000CU)" +.LASF25: + .string "__BIGGEST_ALIGNMENT__ 16" +.LASF3992: + .string "MATCH_C_ADDIW 0x2001" +.LASF2127: + .string "RCU_INT_IRC8MSTBIE BIT(10)" +.LASF3900: + .string "MATCH_FLT_S 0xa0001053" +.LASF4182: + .string "CSR_MHPMCOUNTER10 0xb0a" +.LASF2904: + .string "TIMER_SMCFG_TRGSEL_CI0FE0 SMCFG_TRGSEL(5)" +.LASF859: + .string "CAN_F16DATA1(canx) REG32((canx) + 0x2C4U)" +.LASF639: + .string "ADC_SAMPLETIME_1POINT5 SAMPTX_SPT(0)" +.LASF3559: + .string "MCONTROL_H (1<<5)" +.LASF2665: + .string "TIMER_INTF_TRGIF BIT(6)" +.LASF3459: + .string "__SOPT 0x0400" +.LASF1169: + .string "DACC_R8DH_DAC1_DH BITS(8,15)" +.LASF2574: + .string "SPI_I2S_INT_FLAG_FERR ((uint8_t)0x06U)" +.LASF2449: + .string "SPI2 (SPI_BASE + 0x00000400U)" +.LASF2773: + .string "TIMER_DMA_CMTD ((uint16_t)TIMER_DMAINTEN_CMTDEN)" +.LASF3525: + .string "SSTATUS_FS 0x00006000" +.LASF1319: + .string "DMA_PRIORITY_MEDIUM CHCTL_PRIO(1U)" +.LASF3513: + .string "MSTATUS_XS 0x00018000" +.LASF1695: + .string "GPIO_BOP_BOP12 BIT(12)" +.LASF2009: + .string "FWDGT_PSC_DIV256 ((uint8_t)PSC_PSC(6))" +.LASF3085: + .string "_GCC_PTRDIFF_T " +.LASF3750: + .string "MATCH_FENCE 0xf" +.LASF1711: + .string "GPIO_BOP_CR12 BIT(28)" +.LASF3055: + .string "CTL2_IRLP(regval) (BIT(2) & ((uint32_t)(regval) << 2))" +.LASF1655: + .string "GPIO_ISTAT_ISTAT4 BIT(4)" +.LASF3310: + .string "__NULLABILITY_PRAGMA_POP " +.LASF1460: + .string "EXTI_SWIEV_SWIEV14 BIT(14)" +.LASF2515: + .string "SPI_NSS_SOFT SPI_CTL0_SWNSSEN" +.LASF177: + .string "__LDBL_MIN_EXP__ (-16381)" +.LASF3788: + .string "MATCH_AMOMIN_W 0x8000202f" +.LASF312: + .string "__riscv_arch_test 1" +.LASF2548: + .string "I2SCTL_I2SOPMOD(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF1082: + .string "CAN_MAILBOX1 ((uint8_t)0x01U)" +.LASF828: + .string "CAN_F13DATA0(canx) REG32((canx) + 0x2A8U)" +.LASF2286: + .string "PLLMF_4 RCU_CFG0_PLLMF_4" +.LASF1533: + .string "FMC_BIT_POS1(val) ((uint32_t)(val) & 0x1FU)" +.LASF386: + .string "__int20 +2" +.LASF4078: + .string "MATCH_CUSTOM1_RS1_RS2 0x302b" +.LASF342: + .string "_MACHINE__DEFAULT_TYPES_H " +.LASF551: + .string "ADC_STAT_WDE BIT(0)" +.LASF3869: + .string "MASK_FMIN_S 0xfe00707f" +.LASF1913: + .string "I2C_SADDR0_ADDRESS BITS(1,7)" +.LASF4274: + .string "CSR_MHPMCOUNTER4H 0xb84" +.LASF3237: + .string "__GNUCLIKE_BUILTIN_NEXT_ARG 1" +.LASF2518: + .string "SPI_ENDIAN_LSB SPI_CTL0_LF" +.LASF1662: + .string "GPIO_ISTAT_ISTAT11 BIT(11)" +.LASF2480: + .string "SPI_CTL1_TBEIE BIT(7)" +.LASF3770: + .string "MATCH_MULW 0x200003b" +.LASF1829: + .string "GPIO_PIN_SOURCE_7 ((uint8_t)0x07U)" +.LASF1490: + .string "FMC_STAT REG32((FMC) + 0x0CU)" +.LASF2400: + .string "RCU_I2S2SRC_CKPLL2_MUL2 RCU_CFG1_I2S2SEL" +.LASF2637: + .string "TIMER_SMCFG_SMC BITS(0,2)" +.LASF626: + .string "ADC0_1_EXTTRIG_REGULAR_T3_CH3 CTL1_ETSRC(5)" +.LASF1357: + .string "EXMC_MEMORY_TYPE_PSRAM SNCTL_NRTP(1)" +.LASF2540: + .string "I2S_AUDIOSAMPLE_192K ((uint32_t)192000U)" +.LASF1811: + .string "GPIO_EVENT_PIN_5 ((uint8_t)0x05U)" +.LASF4370: + .string "USART0_IRQn" +.LASF929: + .string "CAN_RFIFO1_RFD1 BIT(5)" +.LASF879: + .string "CAN_RFIFOMDATA0(canx,bank) REG32((canx) + 0x1B8U + ((bank) * 0x10U))" +.LASF4319: + .string "CAUSE_BREAKPOINT 0x3" +.LASF2198: + .string "RCU_APB1EN_USART1EN BIT(17)" +.LASF2966: + .string "USART_CTL0_REN BIT(2)" +.LASF4160: + .string "CSR_MCOUNTEREN 0x306" +.LASF1296: + .string "DMA_FLAG_G DMA_INTF_GIF" +.LASF1841: + .string "GPIO_PIN_3 BIT(3)" +.LASF3683: + .string "MASK_SRLI 0xfc00707f" +.LASF805: + .string "CAN_RFIFOMDATA10(canx) REG32((canx) + 0x1BCU)" +.LASF1019: + .string "TMDATA0_DB3(regval) (BITS(24,31) & ((uint32_t)(regval) << 24))" +.LASF2402: + .string "RCU_DEEPSLEEP_V_1_2 DSV_DSLPVS(0)" +.LASF166: + .string "__DBL_DECIMAL_DIG__ 17" +.LASF2611: + .string "TIMER_CH1CV(timerx) REG32((timerx) + 0x38U)" +.LASF3335: + .string "__need_wint_t " +.LASF3592: + .string "MIE_MTIE MIP_MTIP" +.LASF135: + .string "__UINT_FAST64_MAX__ 0xffffffffffffffffULL" +.LASF1926: + .string "I2C_STAT0_BERR BIT(8)" +.LASF2334: + .string "BDCTL_RTCSRC(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF2011: + .string "FWDGT_WRITEACCESS_DISABLE ((uint16_t)0x0000U)" +.LASF1415: + .string "EXTI_RTEN_RTEN7 BIT(7)" +.LASF2018: + .string "GD32VF103_DBG_H " +.LASF2813: + .string "TIMER_DMACFG_DMATC_16TRANSFER DMACFG_DMATC(15)" +.LASF2996: + .string "USART_CTL2_CTSEN BIT(9)" +.LASF3846: + .string "MATCH_CSRRC 0x3073" +.LASF1637: + .string "GPIO_CTL1_MD9 BITS(4, 5)" +.LASF2537: + .string "I2S_AUDIOSAMPLE_44K ((uint32_t)44100U)" +.LASF1760: + .string "AFIO_PCF0_CAN_REMAP BITS(13, 14)" +.LASF2565: + .string "SPI_I2S_INT_TBE ((uint8_t)0x00U)" +.LASF4216: + .string "CSR_MHPMEVENT13 0x32d" +.LASF1645: + .string "GPIO_CTL1_MD13 BITS(20, 21)" +.LASF3815: + .string "MASK_AMOMINU_D 0xf800707f" +.LASF323: + .string "HAVE_CCONFIG_H 1" +.LASF46: + .string "__UINT16_TYPE__ short unsigned int" +.LASF941: + .string "CAN_INTEN_ERRIE BIT(15)" +.LASF430: + .string "INTPTR_MAX (__INTPTR_MAX__)" +.LASF3870: + .string "MATCH_FMAX_S 0x28001053" +.LASF3162: + .string "BWEI_HANDLER eclic_bwei_handler" +.LASF2978: + .string "USART_CTL1_ADDR BITS(0,3)" +.LASF71: + .string "__LONG_MAX__ 0x7fffffffL" +.LASF2558: + .string "I2S_STD_PCMLONG (I2SCTL_I2SSTD(3) | SPI_I2SCTL_PCMSMOD)" +.LASF2729: + .string "TIMER_CCHP_DTCFG BITS(0,7)" +.LASF1975: + .string "I2C_DMALST_ON I2C_CTL1_DMALST" +.LASF3695: + .string "MASK_SLL 0xfe00707f" +.LASF487: + .string "UINT64_C(x) __UINT64_C(x)" +.LASF3601: + .string "PRV_M 3" +.LASF4303: + .string "CSR_MNXTI 0x345" +.LASF2340: + .string "RCU_PREDV0_DIV1 CFG1_PREDV0(0)" +.LASF296: + .string "__GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1" +.LASF2639: + .string "TIMER_SMCFG_MSM BIT(7)" +.LASF3407: + .string "_REENT_SIGNAL_BUF(ptr) ((ptr)->_new._reent._signal_buf)" +.LASF4367: + .string "I2C1_ER_IRQn" +.LASF4193: + .string "CSR_MHPMCOUNTER21 0xb15" +.LASF106: + .string "__INT_LEAST8_WIDTH__ 8" +.LASF2192: + .string "RCU_APB1EN_TIMER4EN BIT(3)" +.LASF4176: + .string "CSR_MHPMCOUNTER4 0xb04" +.LASF4125: + .string "CSR_HPMCOUNTER12 0xc0c" +.LASF4288: + .string "CSR_MHPMCOUNTER18H 0xb92" +.LASF55: + .string "__UINT_LEAST32_TYPE__ long unsigned int" +.LASF2028: + .string "DBG_CTL_TIMER0_HOLD BIT(10)" +.LASF3475: + .string "SEEK_CUR 1" +.LASF1094: + .string "CAN_MODE_SLEEP ((uint8_t)0x04U)" +.LASF961: + .string "CAN_TMP_DLENC BITS(0,3)" +.LASF1084: + .string "CAN_NOMAILBOX ((uint8_t)0x03U)" +.LASF1344: + .string "EXMC_SNCTL_NRWTEN BIT(13)" +.LASF1794: + .string "GPIO_OSPEED_2MHZ ((uint8_t)0x02U)" +.LASF1132: + .string "DAC0_L12DH REG32(DAC + 0x0CU)" +.LASF3384: + .string "_REENT_CHECK_SIGNAL_BUF(ptr) " +.LASF2746: + .string "TIMER_INT_TRG TIMER_DMAINTEN_TRGIE" +.LASF361: + .string "__EXP(x) __ ##x ##__" +.LASF1521: + .string "FMC_OBSTAT_SPC BIT(1)" +.LASF2155: + .string "RCU_APB1RST_TIMER5RST BIT(4)" +.LASF2841: + .string "TIMER_ROS_STATE_ENABLE ((uint16_t)TIMER_CCHP_ROS)" +.LASF283: + .string "__GNUC_STDC_INLINE__ 1" +.LASF4069: + .string "MASK_CUSTOM0_RD 0x707f" +.LASF426: + .string "__int_fast16_t_defined 1" +.LASF1610: + .string "GPIO_BC(gpiox) REG32((gpiox) + 0x14U)" +.LASF1079: + .string "CAN_BT_BS2_7TQ ((uint8_t)0x06U)" +.LASF284: + .string "__NO_INLINE__ 1" +.LASF2141: + .string "RCU_APB2RST_PARST BIT(2)" +.LASF1951: + .string "I2C_BIT_POS2(val) (((uint32_t)(val) & 0x1F0000U) >> 16)" +.LASF331: + .string "__O volatile" +.LASF2820: + .string "TIMER_EVENT_SRC_CH3G ((uint16_t)0x0010U)" +.LASF566: + .string "ADC_CTL0_SYNCM BITS(16,19)" +.LASF1954: + .string "I2C_STAT1_REG_OFFSET 0x18U" +.LASF868: + .string "CAN_F25DATA1(canx) REG32((canx) + 0x30CU)" +.LASF2634: + .string "TIMER_CTL1_ISO2 BIT(12)" +.LASF3674: + .string "MATCH_SLLI 0x1013" +.LASF969: + .string "CAN_TMDATA1_DB5 BITS(8,15)" +.LASF2476: + .string "SPI_CTL1_NSSP BIT(3)" +.LASF538: + .string "ADC_IOFF3(adcx) REG32((adcx) + 0x20U)" +.LASF2668: + .string "TIMER_INTF_CH1OF BIT(10)" +.LASF4110: + .string "CSR_FFLAGS 0x1" +.LASF2735: + .string "TIMER_CCHP_OAEN BIT(14)" +.LASF1432: + .string "EXTI_FTEN_FTEN5 BIT(5)" +.LASF3342: + .string "_TIME_T_ __int_least64_t" +.LASF198: + .string "__FLT16_MAX__ 6.55040000000000000000000000000000000e+4F16" +.LASF3593: + .string "MIE_SEIE MIP_SEIP" +.LASF362: + .string "__have_longlong64 1" +.LASF851: + .string "CAN_F8DATA1(canx) REG32((canx) + 0x284U)" +.LASF894: + .string "CAN_STAT_WUIF BIT(3)" +.LASF4322: + .string "CAUSE_MISALIGNED_STORE 0x6" +.LASF29: + .string "__BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__" +.LASF1385: + .string "EXTI_INTEN_INTEN15 BIT(15)" +.LASF2452: + .string "SPI_STAT(spix) REG32((spix) + 0x08U)" +.LASF3480: + .string "stderr (_REENT->_stderr)" +.LASF403: + .string "__LEAST64 \"ll\"" +.LASF1947: + .string "I2C_REG_VAL(i2cx,offset) (REG32((i2cx) + (((uint32_t)(offset) & 0xFFFFU) >> 6)))" +.LASF1640: + .string "GPIO_CTL1_CTL10 BITS(10, 11)" +.LASF1058: + .string "CAN_BT_BS1_2TQ ((uint8_t)0x01U)" +.LASF1183: + .string "DAC_WAVE_MODE_LFSR CTL_DWM(1)" +.LASF2447: + .string "SPI0 (SPI_BASE + 0x0000F800U)" +.LASF1146: + .string "DAC_CTL_DWM0 BITS(6,7)" +.LASF3905: + .string "MASK_FLE_D 0xfe00707f" +.LASF2443: + .string "RTC_FLAG_OVERFLOW RTC_CTL_OVIF" +.LASF2599: + .string "TIMER_SMCFG(timerx) REG32((timerx) + 0x08U)" +.LASF2964: + .string "USART_CTL0_SBKCMD BIT(0)" +.LASF703: + .string "ADC_OVERSAMPLING_RATIO_MUL4 OVSCR_OVSR(1)" +.LASF1315: + .string "DMA_MEMORY_WIDTH_16BIT CHCTL_MWIDTH(1U)" +.LASF3776: + .string "MATCH_REMW 0x200603b" +.LASF2008: + .string "FWDGT_PSC_DIV128 ((uint8_t)PSC_PSC(5))" +.LASF4153: + .string "CSR_SPTBR 0x180" +.LASF3471: + .string "FOPEN_MAX 20" +.LASF3070: + .string "WWDGT_CFG_PSC_DIV1 CFG_PSC(0)" +.LASF1502: + .string "FMC_WS_WSCNT BITS(0,2)" +.LASF2940: + .string "USART2 (USART_BASE+(0x00000400U))" +.LASF0: + .string "__STDC__ 1" +.LASF1174: + .string "DAC_TRIGGER_T2_TRGO CTL_DTSEL(1)" +.LASF1689: + .string "GPIO_BOP_BOP6 BIT(6)" +.LASF2722: + .string "TIMER_PSC_PSC BITS(0,15)" +.LASF1107: + .string "CAN_INT_RFNE1 CAN_INTEN_RFNEIE1" +.LASF1184: + .string "DAC_WAVE_MODE_TRIANGLE CTL_DWM(2)" +.LASF820: + .string "CAN_F5DATA0(canx) REG32((canx) + 0x268U)" +.LASF3527: + .string "SSTATUS_PUM 0x00040000" +.LASF3445: + .string "__FILE_defined " +.LASF2853: + .string "TIMER_CCHP_PROT_2 CCHP_PROT(3)" +.LASF387: + .string "__int20__ +2" +.LASF4033: + .string "MASK_C_AND 0xfc63" +.LASF1309: + .string "CHCTL_PWIDTH(regval) (BITS(8,9) & ((uint32_t)(regval) << 8))" +.LASF3633: + .string "PTE_SOFT 0x300" +.LASF1904: + .string "I2C_CTL0_SALT BIT(13)" +.LASF1920: + .string "I2C_STAT0_ADDSEND BIT(1)" +.LASF858: + .string "CAN_F15DATA1(canx) REG32((canx) + 0x2BCU)" +.LASF2909: + .string "TIMER_TRI_OUT_SRC_ENABLE CTL1_MMC(1)" +.LASF3708: + .string "MATCH_AND 0x7033" +.LASF1210: + .string "DATA_ALIGN(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF322: + .string "NO_INIT 1" +.LASF1520: + .string "FMC_OBSTAT_OBERR BIT(0)" +.LASF2305: + .string "RCU_PLL_MUL19 (PLLMF_4 | CFG0_PLLMF(2))" +.LASF1569: + .string "OB_WP_7 ((uint32_t)0x00000080U)" +.LASF4338: + .string "RCU_CTC_IRQn" +.LASF3668: + .string "MATCH_LUI 0x37" +.LASF617: + .string "ADC_DATAALIGN_RIGHT ((uint32_t)0x00000000U)" +.LASF3492: + .string "ferror(p) __sferror(p)" +.LASF2254: + .string "RCU_SCSS_HXTAL CFG0_SCSS(1)" +.LASF1721: + .string "GPIO_BC_CR6 BIT(6)" +.LASF1445: + .string "EXTI_FTEN_FTEN18 BIT(18)" +.LASF4300: + .string "CSR_MHPMCOUNTER30H 0xb9e" +.LASF3795: + .string "MASK_AMOMAXU_W 0xf800707f" +.LASF1594: + .string "OB_WP_ALL ((uint32_t)0xFFFFFFFFU)" +.LASF1497: + .string "OB_USER REG16((OB) + 0x02U)" +.LASF2534: + .string "I2S_AUDIOSAMPLE_16K ((uint32_t)16000U)" +.LASF1121: + .string "CRC_CTL REG32(CRC + 0x08U)" +.LASF2342: + .string "RCU_PREDV0_DIV3 CFG1_PREDV0(2)" +.LASF194: + .string "__FLT16_MIN_10_EXP__ (-4)" +.LASF653: + .string "ADC_INSERTED_CHANNEL ((uint8_t)0x02U)" +.LASF1901: + .string "I2C_CTL0_ACKEN BIT(10)" +.LASF2070: + .string "PMU_LDO_LOWPOWER PMU_CTL_LDOLP" +.LASF2134: + .string "RCU_INT_IRC8MSTBIC BIT(18)" +.LASF3804: + .string "MATCH_AMOXOR_D 0x2000302f" +.LASF2172: + .string "RCU_AHBEN_DMA1EN BIT(1)" +.LASF4337: + .string "FMC_IRQn" +.LASF2016: + .string "FWDGT_FLAG_PUD FWDGT_STAT_PUD" +.LASF1766: + .string "AFIO_EXTI0_SS BITS(0, 3)" +.LASF3009: + .string "USART_CTL2_REG_OFFSET (0x00000014U)" +.LASF413: + .string "__int32_t_defined 1" +.LASF11: + .string "__ATOMIC_ACQUIRE 2" +.LASF539: + .string "ADC_WDHT(adcx) REG32((adcx) + 0x24U)" +.LASF3837: + .string "MASK_DRET 0xffffffff" +.LASF3035: + .string "USART_CLEN_NONE CTL1_CLEN(0)" +.LASF175: + .string "__LDBL_MANT_DIG__ 113" +.LASF2549: + .string "I2S_MODE_SLAVETX I2SCTL_I2SOPMOD(0)" +.LASF2626: + .string "TIMER_CTL1_CCUC BIT(2)" +.LASF3341: + .string "_CLOCK_T_ unsigned long" +.LASF2562: + .string "SPI_DMA_RECEIVE ((uint8_t)0x01U)" +.LASF223: + .string "__FLT64_MIN_EXP__ (-1021)" +.LASF3309: + .string "__NULLABILITY_PRAGMA_PUSH " +.LASF4257: + .string "CSR_HPMCOUNTER18H 0xc92" +.LASF356: + .string "__MISC_VISIBLE 0" +.LASF18: + .string "__SIZEOF_LONG_LONG__ 8" +.LASF4015: + .string "MASK_C_JAL 0xe003" +.LASF548: + .string "ADC_IDATA3(adcx) REG32((adcx) + 0x48U)" +.LASF960: + .string "CAN_TMI_SFID BITS(21,31)" +.LASF3692: + .string "MATCH_SUB 0x40000033" +.LASF1478: + .string "EXTI_PD_PD13 BIT(13)" +.LASF1556: + .string "OB_USER_USER ((uint32_t)0x00FF0000U)" +.LASF214: + .string "__FLT32_NORM_MAX__ 3.40282346638528859811704183484516925e+38F32" +.LASF922: + .string "CAN_RFIFO0_RFL0 BITS(0,1)" +.LASF1307: + .string "DMA_MEMORY_INCREASE_DISABLE ((uint8_t)0x00U)" +.LASF3313: + .string "__lock_annotate(x) " +.LASF3329: + .string "__pt_guarded_by(x) __lock_annotate(pt_guarded_by(x))" +.LASF232: + .string "__FLT64_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F64" +.LASF3806: + .string "MATCH_AMOOR_D 0x4000302f" +.LASF4102: + .string "MATCH_CUSTOM3_RS1_RS2 0x307b" +.LASF2290: + .string "RCU_PLL_MUL4 CFG0_PLLMF(2)" +.LASF2354: + .string "RCU_PREDV0_DIV15 CFG1_PREDV0(14)" +.LASF871: + .string "CAN_TMI(canx,bank) REG32((canx) + 0x180U + ((bank) * 0x10U))" +.LASF4224: + .string "CSR_MHPMEVENT21 0x335" +.LASF128: + .string "__INT_FAST32_MAX__ 0x7fffffff" +.LASF3994: + .string "MATCH_C_LDSP 0x6002" +.LASF2220: + .string "RCU_RSTSCK_SWRSTF BIT(28)" +.LASF2304: + .string "RCU_PLL_MUL18 (PLLMF_4 | CFG0_PLLMF(1))" +.LASF2670: + .string "TIMER_INTF_CH3OF BIT(12)" +.LASF3219: + .string "__unbounded " +.LASF853: + .string "CAN_F10DATA1(canx) REG32((canx) + 0x294U)" +.LASF3606: + .string "VM_SV39 9" +.LASF1903: + .string "I2C_CTL0_PECTRANS BIT(12)" +.LASF2712: + .string "TIMER_CHCTL2_CH1P BIT(5)" +.LASF3023: + .string "CTL0_WL(regval) (BIT(12) & ((uint32_t)(regval) << 12))" +.LASF282: + .string "__USER_LABEL_PREFIX__ " +.LASF1421: + .string "EXTI_RTEN_RTEN13 BIT(13)" +.LASF1207: + .string "DAC_LFSR_BITS9_0 DAC_WAVE_BIT_WIDTH_10" +.LASF532: + .string "ADC_CTL1(adcx) REG32((adcx) + 0x08U)" +.LASF1681: + .string "GPIO_OCTL_OCTL14 BIT(14)" +.LASF4202: + .string "CSR_MHPMCOUNTER30 0xb1e" +.LASF3713: + .string "MASK_SLLIW 0xfe00707f" +.LASF3759: + .string "MASK_MULHSU 0xfe00707f" +.LASF3244: + .string "__CC_SUPPORTS_WARNING 1" +.LASF564: + .string "ADC_CTL0_DISIC BIT(12)" +.LASF1799: + .string "GPIO_EVENT_PORT_GPIOD ((uint8_t)0x03U)" +.LASF1066: + .string "CAN_BT_BS1_10TQ ((uint8_t)0x09U)" +.LASF1865: + .string "GPIO_TIMER1_FULL_REMAP ((uint32_t)0x00180300U)" +.LASF2248: + .string "CFG0_SCS(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF2318: + .string "RCU_PLL_MUL32 (PLLMF_4 | CFG0_PLLMF(15))" +.LASF1254: + .string "DMA_CH5MADDR(dmax) REG32((dmax) + 0x78U)" +.LASF274: + .string "__FLT64X_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F64x" +.LASF4293: + .string "CSR_MHPMCOUNTER23H 0xb97" +.LASF3493: + .string "clearerr(p) __sclearerr(p)" +.LASF2993: + .string "USART_CTL2_DENR BIT(6)" +.LASF1499: + .string "OB_WP1 REG16((OB) + 0x0AU)" +.LASF1124: + .string "CRC_CTL_RST BIT(0)" +.LASF3581: + .string "MIP_STIP (1 << IRQ_S_TIMER)" +.LASF994: + .string "CAN_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF180: + .string "__LDBL_MAX_10_EXP__ 4932" +.LASF2219: + .string "RCU_RSTSCK_PORRSTF BIT(27)" +.LASF885: + .string "CAN_CTL_ARD BIT(4)" +.LASF1239: + .string "DMA_CH2CTL(dmax) REG32((dmax) + 0x30U)" +.LASF3125: + .string "__need_NULL" +.LASF2792: + .string "TIMER_DMACFG_DMATA_CH1CV DMACFG_DMATA(14)" +.LASF1537: + .string "FMC_OBSTAT_REG_OFFSET 0x1CU" +.LASF2719: + .string "TIMER_CHCTL2_CH3EN BIT(12)" +.LASF1674: + .string "GPIO_OCTL_OCTL7 BIT(7)" +.LASF2659: + .string "TIMER_INTF_UPIF BIT(0)" +.LASF2082: + .string "RCU_AHBEN REG32(RCU + 0x14U)" +.LASF2166: + .string "RCU_APB1RST_CAN0RST BIT(25)" +.LASF4127: + .string "CSR_HPMCOUNTER14 0xc0e" +.LASF541: + .string "ADC_RSQ0(adcx) REG32((adcx) + 0x2CU)" +.LASF2854: + .string "TIMER_BREAK_ENABLE ((uint16_t)TIMER_CCHP_BRKEN)" +.LASF2216: + .string "RCU_RSTSCK_IRC40KSTB BIT(1)" +.LASF2889: + .string "TIMER_IC_POLARITY_FALLING ((uint16_t)0x0002U)" +.LASF4228: + .string "CSR_MHPMEVENT25 0x339" +.LASF4195: + .string "CSR_MHPMCOUNTER23 0xb17" +.LASF988: + .string "CAN_FCTL_HBC1F BITS(8,13)" +.LASF3467: + .string "_IOLBF 1" +.LASF273: + .string "__FLT64X_MAX__ 1.18973149535723176508575932662800702e+4932F64x" +.LASF2816: + .string "TIMER_EVENT_SRC_UPG ((uint16_t)0x0001U)" +.LASF2497: + .string "SPI_I2SCTL_I2SSTD BITS(4,5)" +.LASF525: + .string "USE_STDPERIPH_DRIVER " +.LASF3951: + .string "MASK_FCVT_D_LU 0xfff0007f" +.LASF2204: + .string "RCU_APB1EN_CAN0EN BIT(25)" +.LASF3673: + .string "MASK_ADDI 0x707f" +.LASF2303: + .string "RCU_PLL_MUL17 (PLLMF_4 | CFG0_PLLMF(0))" +.LASF3178: + .string "HAVE_INITFINI_ARRAY 1" +.LASF924: + .string "CAN_RFIFO0_RFO0 BIT(4)" +.LASF2344: + .string "RCU_PREDV0_DIV5 CFG1_PREDV0(4)" +.LASF2943: + .string "USART0 (USART_BASE+(0x0000F400U))" +.LASF377: + .string "char" +.LASF3347: + .string "__SYS_LOCK_H__ " +.LASF3478: + .string "stdin (_REENT->_stdin)" +.LASF2106: + .string "RCU_CFG0_AHBPSC BITS(4,7)" +.LASF664: + .string "ADC_CHANNEL_4 ((uint8_t)0x04U)" +.LASF2367: + .string "RCU_PREDV1_DIV11 CFG1_PREDV1(10)" +.LASF1447: + .string "EXTI_SWIEV_SWIEV1 BIT(1)" +.LASF2246: + .string "CFG0_REG_OFFSET 0x04U" +.LASF102: + .string "__UINT32_MAX__ 0xffffffffUL" +.LASF3191: + .string "__RAND_MAX" +.LASF2891: + .string "TIMER_IC_SELECTION_DIRECTTI ((uint16_t)0x0001U)" +.LASF1374: + .string "EXTI_INTEN_INTEN4 BIT(4)" +.LASF2152: + .string "RCU_APB1RST_TIMER2RST BIT(1)" +.LASF1757: + .string "AFIO_PCF0_TIMER1_REMAP BITS(8, 9)" +.LASF3597: + .string "SIP_STIP MIP_STIP" +.LASF3194: + .string "__IMPORT " +.LASF2293: + .string "RCU_PLL_MUL7 CFG0_PLLMF(5)" +.LASF4376: + .string "EXMC_IRQn" +.LASF605: + .string "ADC_INSERTED_CHANNEL_AUTO ADC_CTL0_ICA" +.LASF3783: + .string "MASK_AMOXOR_W 0xf800707f" +.LASF833: + .string "CAN_F18DATA0(canx) REG32((canx) + 0x2D0U)" +.LASF1164: + .string "DACC_R12DH_DAC0_DH BITS(0,11)" +.LASF1327: + .string "ECLIC_PRIGROUP_LEVEL1_PRIO3 1" +.LASF2771: + .string "TIMER_DMA_CH2D ((uint16_t)TIMER_DMAINTEN_CH2DEN)" +.LASF2273: + .string "RCU_APB2_CKAHB_DIV1 CFG0_APB2PSC(0)" +.LASF1131: + .string "DAC0_R12DH REG32(DAC + 0x08U)" +.LASF2679: + .string "TIMER_CHCTL0_CH0MS BITS(0,1)" +.LASF1910: + .string "I2C_CTL1_DMAON BIT(11)" +.LASF108: + .string "__INT16_C(c) c" +.LASF318: + .string "__riscv_zifencei 2000000" +.LASF3734: + .string "MATCH_LD 0x3003" +.LASF275: + .string "__FLT64X_MIN__ 3.36210314311209350626267781732175260e-4932F64x" +.LASF528: + .string "ADC0 ADC_BASE" +.LASF1514: + .string "FMC_CTL_START BIT(6)" +.LASF3211: + .string "__ASMNAME(cname) __XSTRING (__USER_LABEL_PREFIX__) cname" +.LASF1075: + .string "CAN_BT_BS2_3TQ ((uint8_t)0x02U)" +.LASF3842: + .string "MATCH_CSRRW 0x1073" +.LASF2027: + .string "DBG_CTL_WWDGT_HOLD BIT(9)" +.LASF4077: + .string "MASK_CUSTOM1_RS1 0x707f" +.LASF3835: + .string "MASK_MRET 0xffffffff" +.LASF165: + .string "__DBL_MAX_10_EXP__ 308" +.LASF3235: + .string "__GNUC_VA_LIST_COMPATIBILITY 1" +.LASF3356: + .string "__lock_try_acquire(lock) ((void) 0)" +.LASF37: + .string "__UINTMAX_TYPE__ long long unsigned int" +.LASF2618: + .string "TIMER_CTL0_UPDIS BIT(1)" +.LASF572: + .string "ADC_CTL1_RSTCLB BIT(3)" +.LASF4087: + .string "MASK_CUSTOM2 0x707f" +.LASF2357: + .string "RCU_PREDV1_DIV1 CFG1_PREDV1(0)" +.LASF3506: + .string "MSTATUS_UPIE 0x00000010" +.LASF1893: + .string "I2C_CTL0_SMBEN BIT(1)" +.LASF415: + .string "_UINT64_T_DECLARED " +.LASF503: + .string "AHB1_BUS_BASE ((uint32_t)0x40018000U)" +.LASF4262: + .string "CSR_HPMCOUNTER23H 0xc97" +.LASF3020: + .string "CTL0_WM(regval) (BIT(11) & ((uint32_t)(regval) << 11))" +.LASF3892: + .string "MATCH_FCVT_S_D 0x40100053" +.LASF2391: + .string "RCU_PLL2_MUL14 CFG1_PLL2MF(12)" +.LASF507: + .string "WWDGT_BASE (APB1_BUS_BASE + 0x00002C00U)" +.LASF1468: + .string "EXTI_PD_PD3 BIT(3)" +.LASF3137: + .string "TIMER_FREQ ((uint32_t)SystemCoreClock/4)" +.LASF1454: + .string "EXTI_SWIEV_SWIEV8 BIT(8)" +.LASF1629: + .string "GPIO_CTL0_MD5 BITS(20, 21)" +.LASF3405: + .string "_REENT_WCSRTOMBS_STATE(ptr) ((ptr)->_new._reent._wcsrtombs_state)" +.LASF1797: + .string "GPIO_EVENT_PORT_GPIOB ((uint8_t)0x01U)" +.LASF2177: + .string "RCU_AHBEN_USBFSEN BIT(12)" +.LASF965: + .string "CAN_TMDATA0_DB1 BITS(8,15)" +.LASF1803: + .string "GPIO_PORT_SOURCE_GPIOC ((uint8_t)0x02U)" +.LASF3474: + .string "SEEK_SET 0" +.LASF429: + .string "INTPTR_MIN (-__INTPTR_MAX__ - 1)" +.LASF1667: + .string "GPIO_OCTL_OCTL0 BIT(0)" +.LASF3338: + .string "_MACHINE__TYPES_H " +.LASF2932: + .string "TIMER_ETP_FALLING TIMER_SMCFG_ETP" +.LASF2025: + .string "DBG_CTL_STB_HOLD BIT(2)" +.LASF2823: + .string "TIMER_EVENT_SRC_BRKG ((uint16_t)0x0080U)" +.LASF1977: + .string "I2C_PEC_ENABLE I2C_CTL0_PECEN" +.LASF3927: + .string "MASK_FCVT_L_D 0xfff0007f" +.LASF1965: + .string "I2C_DUADEN_DISABLE ((uint32_t)0x00000000U)" +.LASF2871: + .string "TIMER_OCN_IDLE_STATE_LOW ((uint16_t)0x0000U)" +.LASF56: + .string "__UINT_LEAST64_TYPE__ long long unsigned int" +.LASF1584: + .string "OB_WP_22 ((uint32_t)0x00400000U)" +.LASF1122: + .string "CRC_DATA_DATA BITS(0, 31)" +.LASF1959: + .string "I2C_RECEIVER ((uint32_t)0x00000001U)" +.LASF2100: + .string "RCU_CTL_PLL1EN BIT(26)" +.LASF241: + .string "__FLT128_MAX_10_EXP__ 4932" +.LASF1367: + .string "EXTI_FTEN REG32(EXTI + 0x0CU)" +.LASF2026: + .string "DBG_CTL_FWDGT_HOLD BIT(8)" +.LASF1361: + .string "EXMC_NWAIT_POLARITY_HIGH ((uint32_t)0x00000200U)" +.LASF4145: + .string "CSR_SSTATUS 0x100" +.LASF1541: + .string "WS_WSCNT_0 WS_WSCNT(0)" +.LASF3856: + .string "MATCH_FSUB_S 0x8000053" +.LASF1282: + .string "DMA_FLAG_ADD(flag,shift) ((flag) << ((shift) * 4U))" +.LASF1743: + .string "GPIO_LOCK_LK12 BIT(12)" +.LASF682: + .string "ADC_INT_FLAG_EOC ADC_STAT_EOC" +.LASF51: + .string "__INT_LEAST32_TYPE__ long int" +.LASF865: + .string "CAN_F22DATA1(canx) REG32((canx) + 0x2F4U)" +.LASF2969: + .string "USART_CTL0_RBNEIE BIT(5)" +.LASF3311: + .string "__arg_type_tag(arg_kind,arg_idx,type_tag_idx) " +.LASF1589: + .string "OB_WP_27 ((uint32_t)0x08000000U)" +.LASF373: + .string "_SYS__INTSUP_H " +.LASF4013: + .string "MASK_C_ADDI 0xe003" +.LASF912: + .string "CAN_TSTAT_MAL2 BIT(18)" +.LASF2569: + .string "SPI_I2S_INT_FLAG_RBNE ((uint8_t)0x01U)" +.LASF3281: + .string "__null_sentinel __attribute__((__sentinel__))" +.LASF3054: + .string "USART_CTS_DISABLE CLT2_CTSEN(0)" +.LASF2800: + .string "TIMER_DMACFG_DMATC_3TRANSFER DMACFG_DMATC(2)" +.LASF2346: + .string "RCU_PREDV0_DIV7 CFG1_PREDV0(6)" +.LASF2511: + .string "SPI_TRANSMODE_BDRECEIVE SPI_CTL0_BDEN" +.LASF3399: + .string "_REENT_MBTOWC_STATE(ptr) ((ptr)->_new._reent._mbtowc_state)" +.LASF2998: + .string "USART_GP_PSC BITS(0,7)" +.LASF798: + .string "CAN_TMI2(canx) REG32((canx) + 0x1A0U)" +.LASF3343: + .string "_CLOCKID_T_ unsigned long" +.LASF2135: + .string "RCU_INT_HXTALSTBIC BIT(19)" +.LASF4133: + .string "CSR_HPMCOUNTER20 0xc14" +.LASF2468: + .string "SPI_CTL0_FF16 BIT(11)" +.LASF3730: + .string "MATCH_LH 0x1003" +.LASF3682: + .string "MATCH_SRLI 0x5013" +.LASF809: + .string "CAN_RFIFOMDATA11(canx) REG32((canx) + 0x1CCU)" +.LASF2080: + .string "RCU_APB2RST REG32(RCU + 0x0CU)" +.LASF3672: + .string "MATCH_ADDI 0x13" +.LASF1588: + .string "OB_WP_26 ((uint32_t)0x04000000U)" +.LASF2109: + .string "RCU_CFG0_ADCPSC BITS(14,15)" +.LASF1196: + .string "DAC_WAVE_BIT_WIDTH_11 DWBW(10)" +.LASF389: + .string "long +4" +.LASF1265: + .string "DMA_INTC_HTFIFC BIT(2)" +.LASF1071: + .string "CAN_BT_BS1_15TQ ((uint8_t)0x0EU)" +.LASF3006: + .string "USART_STAT_REG_OFFSET (0x00000000U)" +.LASF2147: + .string "RCU_APB2RST_ADC1RST BIT(10)" +.LASF2251: + .string "RCU_CKSYSSRC_PLL CFG0_SCS(2)" +.LASF1896: + .string "I2C_CTL0_PECEN BIT(5)" +.LASF3337: + .string "__need_wint_t" +.LASF159: + .string "__FLT_HAS_QUIET_NAN__ 1" +.LASF4120: + .string "CSR_HPMCOUNTER7 0xc07" +.LASF630: + .string "ADC0_1_EXTTRIG_INSERTED_T0_TRGO CTL1_ETSIC(0)" +.LASF4079: + .string "MASK_CUSTOM1_RS1_RS2 0x707f" +.LASF3569: + .string "MCONTROL_ACTION_TRACE_START 2" +.LASF3634: + .string "PTE_PPN_SHIFT 10" +.LASF2222: + .string "RCU_RSTSCK_WWDGTRSTF BIT(30)" +.LASF4281: + .string "CSR_MHPMCOUNTER11H 0xb8b" +.LASF2941: + .string "UART3 (USART_BASE+(0x00000800U))" +.LASF3386: + .string "_REENT_RAND_NEXT(ptr) ((ptr)->_new._reent._rand_next)" +.LASF2039: + .string "DBG_LOW_POWER_SLEEP DBG_CTL_SLP_HOLD" +.LASF589: + .string "ADC_ISQ_IL BITS(20,21)" +.LASF445: + .string "INT32_MAX (__INT32_MAX__)" +.LASF2373: + .string "CFG1_PLL1MF(regval) (BITS(8,11) & ((uint32_t)(regval) << 8))" +.LASF680: + .string "ADC_INT_EOIC ADC_STAT_EOIC" +.LASF2844: + .string "TIMER_IOS_STATE_DISABLE ((uint16_t)0x0000U)" +.LASF3473: + .string "L_tmpnam FILENAME_MAX" +.LASF1: + .string "__STDC_VERSION__ 201710L" +.LASF2763: + .string "TIMER_FLAG_BRK TIMER_INTF_BRKIF" +.LASF911: + .string "CAN_TSTAT_MTFNERR2 BIT(17)" +.LASF2359: + .string "RCU_PREDV1_DIV3 CFG1_PREDV1(2)" +.LASF2850: + .string "TIMER_CCHP_PROT_OFF CCHP_PROT(0)" +.LASF4302: + .string "CSR_MTVT 0x307" +.LASF3252: + .string "__const const" +.LASF3192: + .string "__RAND_MAX 0x7fffffff" +.LASF657: + .string "ADC_INSERTED_CHANNEL_1 ((uint8_t)0x01U)" +.LASF3254: + .string "__volatile volatile" +.LASF136: + .string "__INTPTR_MAX__ 0x7fffffff" +.LASF888: + .string "CAN_CTL_TTC BIT(7)" +.LASF1295: + .string "DMA_INT_FLAG_ERR DMA_INTF_ERRIF" +.LASF2232: + .string "RCU_DSV_DSLPVS BITS(0,1)" +.LASF3507: + .string "MSTATUS_SPIE 0x00000020" +.LASF2529: + .string "SPI_PSC_64 CTL0_PSC(5)" +.LASF2528: + .string "SPI_PSC_32 CTL0_PSC(4)" +.LASF224: + .string "__FLT64_MIN_10_EXP__ (-307)" +.LASF1745: + .string "GPIO_LOCK_LK14 BIT(14)" +.LASF621: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH0 CTL1_ETSRC(0)" +.LASF2649: + .string "TIMER_DMAINTEN_CMTIE BIT(5)" +.LASF2107: + .string "RCU_CFG0_APB1PSC BITS(8,10)" +.LASF606: + .string "CTL0_SYNCM(regval) (BITS(16,19) & ((uint32_t)(regval) << 16))" +.LASF1754: + .string "AFIO_PCF0_USART1_REMAP BIT(3)" +.LASF3933: + .string "MASK_FCLASS_D 0xfff0707f" +.LASF4215: + .string "CSR_MHPMEVENT12 0x32c" +.LASF2510: + .string "SPI_TRANSMODE_RECEIVEONLY SPI_CTL0_RO" +.LASF4175: + .string "CSR_MHPMCOUNTER3 0xb03" +.LASF4231: + .string "CSR_MHPMEVENT28 0x33c" +.LASF1820: + .string "GPIO_EVENT_PIN_14 ((uint8_t)0x0EU)" +.LASF3756: + .string "MATCH_MULH 0x2001033" +.LASF2849: + .string "CCHP_PROT(regval) ((uint16_t)(BITS(8, 9) & ((uint32_t)(regval) << 8U)))" +.LASF4060: + .string "MATCH_C_FSWSP 0xe002" +.LASF2285: + .string "RCU_PLLSRC_HXTAL RCU_CFG0_PLLSEL" +.LASF393: + .string "__INT16 \"h\"" +.LASF2754: + .string "TIMER_INT_FLAG_TRG TIMER_INT_TRG" +.LASF2325: + .string "RCU_CKOUT0SRC_NONE CFG0_CKOUT0SEL(0)" +.LASF956: + .string "CAN_TMI_TEN BIT(0)" +.LASF2666: + .string "TIMER_INTF_BRKIF BIT(7)" +.LASF167: + .string "__DBL_MAX__ ((double)1.79769313486231570814527423731704357e+308L)" +.LASF2464: + .string "SPI_CTL0_LF BIT(7)" +.LASF3454: + .string "__SEOF 0x0020" +.LASF3414: + .string "_GLOBAL_ATEXIT (_GLOBAL_REENT->_atexit)" +.LASF600: + .string "ADC_FLAG_EOIC ADC_STAT_EOIC" +.LASF1128: + .string "DAC1 (1U)" +.LASF3968: + .string "MATCH_FNMADD_S 0x4f" +.LASF679: + .string "ADC_INT_EOC ADC_STAT_EOC" +.LASF3129: + .string "TIMER_MSIP 0xFFC" +.LASF3438: + .string "_CLOCKID_T_DECLARED " +.LASF3123: + .string "NULL" +.LASF781: + .string "CAN1 (CAN0 + 0x00000400U)" +.LASF3532: + .string "DCSR_FULLRESET (1<<28)" +.LASF1346: + .string "EXMC_SNTCFG_ASET BITS(0,3)" +.LASF117: + .string "__UINT8_C(c) c" +.LASF3220: + .string "__ptrvalue " +.LASF3553: + .string "MCONTROL_SELECT (1<<19)" +.LASF330: + .string "__I volatile const" +.LASF1891: + .string "I2C_FMPCFG(i2cx) REG32((i2cx) + 0x90U)" +.LASF3632: + .string "PTE_D 0x080" +.LASF1002: + .string "TSTAT_REG_OFFSET ((uint8_t)0x08U)" +.LASF2847: + .string "TIMER_OUTAUTO_ENABLE ((uint16_t)TIMER_CCHP_OAEN)" +.LASF935: + .string "CAN_INTEN_RFFIE1 BIT(5)" +.LASF2266: + .string "CFG0_APB1PSC(regval) (BITS(8,10) & ((uint32_t)(regval) << 8))" +.LASF3202: + .string "_NOINLINE __attribute__ ((__noinline__))" +.LASF1713: + .string "GPIO_BOP_CR14 BIT(30)" +.LASF648: + .string "WDHT_WDHT(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF3105: + .string "__need_size_t" +.LASF1807: + .string "GPIO_EVENT_PIN_1 ((uint8_t)0x01U)" +.LASF228: + .string "__FLT64_MAX__ 1.79769313486231570814527423731704357e+308F64" +.LASF2253: + .string "RCU_SCSS_IRC8M CFG0_SCSS(0)" +.LASF176: + .string "__LDBL_DIG__ 33" +.LASF1092: + .string "CAN_MODE_INITIALIZE ((uint8_t)0x01U)" +.LASF2986: + .string "USART_CTL1_LMEN BIT(14)" +.LASF34: + .string "__WCHAR_TYPE__ int" +.LASF977: + .string "CAN_RFIFOMP_FI BITS(8,15)" +.LASF1882: + .string "I2C_CTL0(i2cx) REG32((i2cx) + 0x00U)" +.LASF845: + .string "CAN_F2DATA1(canx) REG32((canx) + 0x254U)" +.LASF1636: + .string "GPIO_CTL1_CTL8 BITS(2, 3)" +.LASF1363: + .string "EXTI EXTI_BASE" +.LASF2038: + .string "DBG_CTL_CAN1_HOLD BIT(21)" +.LASF4114: + .string "CSR_TIME 0xc01" +.LASF2002: + .string "PSC_PSC(regval) (BITS(0,2) & ((uint32_t)(regval) << 0))" +.LASF1779: + .string "AFIO_EXTI13_SS BITS(4, 7)" +.LASF1397: + .string "EXTI_EVEN_EVEN8 BIT(8)" +.LASF4360: + .string "TIMER0_Channel_IRQn" +.LASF324: + .string "GD32VF103V_EVAL 1" +.LASF1337: + .string "EXMC_SNCTL_NRBKEN BIT(0)" +.LASF2024: + .string "DBG_CTL_DSLP_HOLD BIT(1)" +.LASF642: + .string "ADC_SAMPLETIME_28POINT5 SAMPTX_SPT(3)" +.LASF792: + .string "CAN_TMDATA00(canx) REG32((canx) + 0x188U)" +.LASF4085: + .string "MASK_CUSTOM1_RD_RS1_RS2 0x707f" +.LASF2123: + .string "RCU_INT_PLL2STBIF BIT(6)" +.LASF84: + .string "__WCHAR_WIDTH__ 32" +.LASF2252: + .string "CFG0_SCSS(regval) (BITS(2,3) & ((uint32_t)(regval) << 2))" +.LASF687: + .string "ADC_RESOLUTION_8B OVSCR_DRES(2)" +.LASF513: + .string "BKP_BASE (APB1_BUS_BASE + 0x00006C00U)" +.LASF2320: + .string "RCU_CKUSB_CKPLL_DIV1_5 CFG0_USBPSC(0)" +.LASF688: + .string "ADC_RESOLUTION_6B OVSCR_DRES(3)" +.LASF4023: + .string "MASK_C_SRAI 0xec03" +.LASF3801: + .string "MASK_SC_W 0xf800707f" +.LASF2339: + .string "CFG1_PREDV0(regval) (BITS(0,3) & ((uint32_t)(regval) << 0))" +.LASF772: + .string "OCTL_RCCV(regval) (BITS(0,6) & ((uint32_t)(regval) << 0))" +.LASF1944: + .string "I2C_RT_RISETIME BITS(0,5)" +.LASF2591: + .string "TIMER1 (TIMER_BASE + 0x00000000U)" +.LASF2361: + .string "RCU_PREDV1_DIV5 CFG1_PREDV1(4)" +.LASF995: + .string "CAN_REG_VAL(canx,offset) (REG32((canx) + ((uint32_t)(offset) >> 6)))" +.LASF3212: + .string "__ptr_t void *" +.LASF967: + .string "CAN_TMDATA0_DB3 BITS(24,31)" +.LASF2440: + .string "RTC_INT_FLAG_OVERFLOW RTC_CTL_OVIF" +.LASF2064: + .string "PMU_LVDT_6 CTL_LVDT(6)" +.LASF4005: + .string "MASK_C_FLW 0xe003" +.LASF3366: + .string "_RAND48_SEED_2 (0x1234)" +.LASF1914: + .string "I2C_SADDR0_ADDRESS_H BITS(8,9)" +.LASF3327: + .string "__nosanitizethread " +.LASF1102: + .string "CAN_TIMEOUT ((uint32_t)0x0000FFFFU)" +.LASF1105: + .string "CAN_INT_RFF0 CAN_INTEN_RFFIE0" +.LASF2703: + .string "TIMER_CHCTL1_CH2CAPPSC BITS(2,3)" +.LASF1573: + .string "OB_WP_11 ((uint32_t)0x00000800U)" +.LASF81: + .string "__INT_WIDTH__ 32" +.LASF765: + .string "BKP_TPCS_TIR BIT(1)" +.LASF3426: + .string "_ID_T_DECLARED " +.LASF3727: + .string "MASK_SRAW 0xfe00707f" +.LASF1483: + .string "EXTI_PD_PD18 BIT(18)" +.LASF202: + .string "__FLT16_DENORM_MIN__ 5.96046447753906250000000000000000000e-8F16" +.LASF3423: + .string "__daddr_t_defined " +.LASF612: + .string "ADC_DAUL_INSERTED_PARALLEL CTL0_SYNCM(5)" +.LASF437: + .string "UINT_LEAST8_MAX (__UINT_LEAST8_MAX__)" +.LASF1659: + .string "GPIO_ISTAT_ISTAT8 BIT(8)" +.LASF3800: + .string "MATCH_SC_W 0x1800202f" +.LASF780: + .string "CAN0 CAN_BASE" +.LASF399: + .string "__FAST64 \"ll\"" +.LASF1133: + .string "DAC0_R8DH REG32(DAC + 0x10U)" +.LASF1586: + .string "OB_WP_24 ((uint32_t)0x01000000U)" +.LASF173: + .string "__DBL_HAS_INFINITY__ 1" +.LASF1053: + .string "CAN_BT_SJW_1TQ ((uint8_t)0x00U)" +.LASF3523: + .string "SSTATUS_SPIE 0x00000020" +.LASF142: + .string "__FLT_EVAL_METHOD_TS_18661_3__ 0" +.LASF3666: + .string "MATCH_JAL 0x6f" +.LASF30: + .string "__FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__" +.LASF1921: + .string "I2C_STAT0_BTC BIT(2)" +.LASF3375: + .string "_REENT_STDIO_STREAM(var,index) &(var)->__sf[index]" +.LASF776: + .string "TAMPER_PIN_ACTIVE_LOW ((uint16_t)0x0002U)" +.LASF33: + .string "__PTRDIFF_TYPE__ int" +.LASF2880: + .string "TIMER_OC_SHADOW_ENABLE ((uint16_t)0x0008U)" +.LASF987: + .string "CAN_FCTL_FLD BIT(0)" +.LASF4379: + .string "UART3_IRQn" +.LASF1426: + .string "EXTI_RTEN_RTEN18 BIT(18)" +.LASF3008: + .string "USART_CTL1_REG_OFFSET (0x00000010U)" +.LASF1438: + .string "EXTI_FTEN_FTEN11 BIT(11)" +.LASF113: + .string "__INT_LEAST64_MAX__ 0x7fffffffffffffffLL" +.LASF93: + .string "__SIG_ATOMIC_MAX__ 0x7fffffff" +.LASF1897: + .string "I2C_CTL0_GCEN BIT(6)" +.LASF1039: + .string "ERR_ERRN(regval) (BITS(4,6) & ((uint32_t)(regval) << 4))" +.LASF3040: + .string "CTL1_CPL(regval) (BIT(10) & ((uint32_t)(regval) << 10))" +.LASF1995: + .string "FWDGT_RLD REG32((FWDGT) + 0x00000008U)" +.LASF2767: + .string "TIMER_FLAG_CH3O TIMER_INTF_CH3OF" +.LASF3398: + .string "_REENT_MBLEN_STATE(ptr) ((ptr)->_new._reent._mblen_state)" +.LASF3457: + .string "__SAPP 0x0100" +.LASF2857: + .string "TIMER_CH_1 ((uint16_t)0x0001U)" +.LASF1798: + .string "GPIO_EVENT_PORT_GPIOC ((uint8_t)0x02U)" +.LASF3428: + .string "_OFF_T_DECLARED " +.LASF3458: + .string "__SSTR 0x0200" +.LASF1003: + .string "RFIFO0_REG_OFFSET ((uint8_t)0x0CU)" +.LASF4223: + .string "CSR_MHPMEVENT20 0x334" +.LASF623: + .string "ADC0_1_EXTTRIG_REGULAR_T0_CH2 CTL1_ETSRC(2)" +.LASF2368: + .string "RCU_PREDV1_DIV12 CFG1_PREDV1(11)" +.LASF1845: + .string "GPIO_PIN_7 BIT(7)" +.LASF958: + .string "CAN_TMI_FF BIT(2)" +.LASF2019: + .string "DBG DBG_BASE" +.LASF1605: + .string "GPIO_CTL0(gpiox) REG32((gpiox) + 0x00U)" +.LASF2787: + .string "TIMER_DMACFG_DMATA_CNT DMACFG_DMATA(9)" +.LASF2760: + .string "TIMER_FLAG_CH3 TIMER_INTF_CH3IF" +.LASF3489: + .string "__sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF)))" +.LASF1390: + .string "EXTI_EVEN_EVEN1 BIT(1)" +.LASF976: + .string "CAN_RFIFOMP_DLENC BITS(0,3)" +.LASF4059: + .string "MASK_C_SWSP 0xe003" +.LASF3896: + .string "MATCH_FSQRT_D 0x5a000053" +.LASF1434: + .string "EXTI_FTEN_FTEN7 BIT(7)" +.LASF3098: + .string "_SIZE_T_DEFINED " +.LASF2779: + .string "TIMER_DMACFG_DMATA_CTL1 DMACFG_DMATA(1)" +.LASF436: + .string "INT_LEAST8_MAX (__INT_LEAST8_MAX__)" +.LASF1392: + .string "EXTI_EVEN_EVEN3 BIT(3)" +.LASF1572: + .string "OB_WP_10 ((uint32_t)0x00000400U)" +.LASF3259: + .string "__used __attribute__((__used__))" +.LASF3418: + .string "_BLKSIZE_T_DECLARED " +.LASF2277: + .string "RCU_APB2_CKAHB_DIV16 CFG0_APB2PSC(7)" +.LASF2020: + .string "DBG_ID REG32(DBG + 0x00U)" +.LASF3325: + .string "__no_lock_analysis __lock_annotate(no_thread_safety_analysis)" +.LASF17: + .string "__SIZEOF_LONG__ 4" +.LASF2006: + .string "FWDGT_PSC_DIV32 ((uint8_t)PSC_PSC(3))" +.LASF2720: + .string "TIMER_CHCTL2_CH3P BIT(13)" +.LASF2926: + .string "TIMER_MASTER_SLAVE_MODE_DISABLE ((uint32_t)0x00000000U)" +.LASF1591: + .string "OB_WP_29 ((uint32_t)0x20000000U)" +.LASF394: + .string "__INT32 \"l\"" +.LASF760: + .string "BKP_OCTL_ASOEN BIT(8)" +.LASF1292: + .string "DMA_INT_FLAG_G DMA_INTF_GIF" +.LASF1329: + .string "ECLIC_PRIGROUP_LEVEL3_PRIO1 3" +.LASF4278: + .string "CSR_MHPMCOUNTER8H 0xb88" +.LASF1561: + .string "OB_WP3_WP3 ((uint32_t)0xFF000000U)" +.LASF3908: + .string "MATCH_FEQ_D 0xa2002053" +.LASF4152: + .string "CSR_SIP 0x144" +.LASF2379: + .string "RCU_PLL1_MUL13 CFG1_PLL1MF(11)" +.LASF346: + .string "__NEWLIB__ 4" +.LASF3224: + .string "__END_DECLS " +.LASF1652: + .string "GPIO_ISTAT_ISTAT1 BIT(1)" +.LASF2723: + .string "TIMER_CAR_CARL BITS(0,15)" +.LASF3724: + .string "MATCH_SRLW 0x503b" +.LASF3119: + .string "_GCC_WCHAR_T " +.LASF4187: + .string "CSR_MHPMCOUNTER15 0xb0f" +.LASF1266: + .string "DMA_INTC_ERRIFC BIT(3)" +.LASF4147: + .string "CSR_STVEC 0x105" +.LASF1408: + .string "EXTI_RTEN_RTEN0 BIT(0)" +.LASF2184: + .string "RCU_APB2EN_ADC0EN BIT(9)" +.LASF2081: + .string "RCU_APB1RST REG32(RCU + 0x10U)" +.LASF1749: + .string "AFIO_EC_PORT BITS(4, 6)" +.LASF350: + .string "__GNUC_PREREQ__(ma,mi) __GNUC_PREREQ(ma, mi)" +.LASF3812: + .string "MATCH_AMOMAX_D 0xa000302f" +.LASF259: + .string "__FLT32X_NORM_MAX__ 1.79769313486231570814527423731704357e+308F32x" +.LASF2718: + .string "TIMER_CHCTL2_CH2NP BIT(11)" +.LASF2770: + .string "TIMER_DMA_CH1D ((uint16_t)TIMER_DMAINTEN_CH1DEN)" +.LASF2961: + .string "USART_DATA_DATA BITS(0,8)" +.LASF364: + .string "___int8_t_defined 1" +.LASF1459: + .string "EXTI_SWIEV_SWIEV13 BIT(13)" +.LASF4129: + .string "CSR_HPMCOUNTER16 0xc10" +.LASF2983: + .string "USART_CTL1_CPL BIT(10)" +.LASF1932: + .string "I2C_STAT0_SMBALT BIT(15)" +.LASF459: + .string "INT_FAST16_MIN (-__INT_FAST16_MAX__ - 1)" +.LASF2214: + .string "RCU_BDCTL_BKPRST BIT(16)" +.LASF931: + .string "CAN_INTEN_RFNEIE0 BIT(1)" +.LASF2645: + .string "TIMER_DMAINTEN_CH0IE BIT(1)" +.LASF953: + .string "CAN_BT_SJW BITS(24,25)" +.LASF2755: + .string "TIMER_INT_FLAG_BRK TIMER_INT_BRK" +.LASF2057: + .string "CTL_LVDT(regval) (BITS(5,7)&((uint32_t)(regval) << 5))" +.LASF439: + .string "INT16_MAX (__INT16_MAX__)" +.LASF112: + .string "__INT_LEAST32_WIDTH__ 32" +.LASF2455: + .string "SPI_RCRC(spix) REG32((spix) + 0x14U)" +.LASF1436: + .string "EXTI_FTEN_FTEN9 BIT(9)" +.LASF1192: + .string "DAC_WAVE_BIT_WIDTH_7 DWBW(6)" +.LASF267: + .string "__FLT64X_DIG__ 33" +.LASF3033: + .string "USART_LBLEN_11B CTL1_LBLEN(1)" +.LASF3811: + .string "MASK_AMOMIN_D 0xf800707f" +.LASF1216: + .string "DAC_TRIANGLE_AMPLITUDE_7 DAC_WAVE_BIT_WIDTH_3" +.LASF1838: + .string "GPIO_PIN_0 BIT(0)" +.LASF1096: + .string "CAN_FILTERBITS_32BIT ((uint8_t)0x01U)" +.LASF827: + .string "CAN_F12DATA0(canx) REG32((canx) + 0x2A0U)" +.LASF4037: + .string "MASK_C_ADDW 0xfc63" +.LASF2000: + .string "FWDGT_STAT_PUD BIT(0)" +.LASF4142: + .string "CSR_HPMCOUNTER29 0xc1d" +.LASF636: + .string "ADC0_1_EXTTRIG_INSERTED_EXTI_15 CTL1_ETSIC(6)" +.LASF2953: + .string "USART_STAT_NERR BIT(2)" +.LASF946: + .string "CAN_ERR_BOERR BIT(2)" +.LASF3967: + .string "MASK_FNMSUB_S 0x600007f" +.LASF844: + .string "CAN_F1DATA1(canx) REG32((canx) + 0x24CU)" +.LASF2696: + .string "TIMER_CHCTL1_CH2COMCTL BITS(4,6)" +.LASF261: + .string "__FLT32X_EPSILON__ 2.22044604925031308084726333618164062e-16F32x" +.LASF3487: + .string "__sfeof(p) ((int)(((p)->_flags & __SEOF) != 0))" +.LASF4040: + .string "MATCH_C_BEQZ 0xc001" +.LASF2224: + .string "RCU_AHBRST_USBFSRST BIT(12)" +.LASF4403: + .string "long double" +.LASF3084: + .string "___int_ptrdiff_t_h " +.LASF3369: + .string "_RAND48_MULT_2 (0x0005)" +.LASF1498: + .string "OB_WP0 REG16((OB) + 0x08U)" +.LASF1581: + .string "OB_WP_19 ((uint32_t)0x00080000U)" +.LASF2501: + .string "SPI_I2SCTL_I2SSEL BIT(11)" +.LASF3203: + .string "_NOINLINE_STATIC _NOINLINE static" +.LASF2049: + .string "PMU_CTL_STBRST BIT(3)" +.LASF3401: + .string "_REENT_MBRLEN_STATE(ptr) ((ptr)->_new._reent._mbrlen_state)" +.LASF2577: + .string "SPI_FLAG_CRCERR SPI_STAT_CRCERR" +.LASF3635: + .string "PTE_TABLE(PTE) (((PTE) & (PTE_V | PTE_R | PTE_W | PTE_X)) == PTE_V)" +.LASF2622: + .string "TIMER_CTL0_CAM BITS(5,6)" +.LASF3240: + .string "__CC_SUPPORTS_INLINE 1" +.LASF1503: + .string "FMC_KEY_KEY BITS(0,31)" +.LASF1583: + .string "OB_WP_21 ((uint32_t)0x00200000U)" +.LASF3344: + .string "_TIMER_T_ unsigned long" +.LASF3555: + .string "MCONTROL_ACTION (0x3f<<12)" +.LASF2387: + .string "RCU_PLL2_MUL10 CFG1_PLL2MF(8)" +.LASF339: + .string "LXTAL_VALUE ((uint32_t)32768)" +.LASF480: + .string "INT8_C(x) __INT8_C(x)" +.LASF3844: + .string "MATCH_CSRRS 0x2073" +.LASF3074: + .string "N200_FUNC_H " +.LASF4116: + .string "CSR_HPMCOUNTER3 0xc03" +.LASF4101: + .string "MASK_CUSTOM3_RS1 0x707f" +.LASF1693: + .string "GPIO_BOP_BOP10 BIT(10)" +.LASF787: + .string "CAN_INTEN(canx) REG32((canx) + 0x14U)" +.LASF1626: + .string "GPIO_CTL0_CTL3 BITS(14, 15)" +.LASF2881: + .string "TIMER_OC_SHADOW_DISABLE ((uint16_t)0x0000U)" +.LASF1709: + .string "GPIO_BOP_CR10 BIT(26)" +.LASF2620: + .string "TIMER_CTL0_SPM BIT(3)" +.LASF4083: + .string "MASK_CUSTOM1_RD_RS1 0x707f" +.LASF3101: + .string "___int_size_t_h " +.LASF2148: + .string "RCU_APB2RST_TIMER0RST BIT(11)" +.LASF4241: + .string "CSR_INSTRETH 0xc82" +.LASF1458: + .string "EXTI_SWIEV_SWIEV12 BIT(12)" +.LASF2835: + .string "TIMER_CKDIV_DIV2 CTL0_CKDIV(1)" +.LASF2711: + .string "TIMER_CHCTL2_CH1EN BIT(4)" +.LASF2441: + .string "RTC_FLAG_SECOND RTC_CTL_SCIF" +.LASF1563: + .string "OB_WP_1 ((uint32_t)0x00000002U)" +.LASF231: + .string "__FLT64_EPSILON__ 2.22044604925031308084726333618164062e-16F64" +.LASF4031: + .string "MASK_C_OR 0xfc63" +.LASF1874: + .string "GPIO_SWJ_NONJTRST_REMAP ((uint32_t)0x00300100U)" +.LASF3315: + .string "__locks_exclusive(...) __lock_annotate(exclusive_lock_function(__VA_ARGS__))" +.LASF3742: + .string "MATCH_SB 0x23" +.LASF3441: + .string "_USECONDS_T_DECLARED " +.LASF4050: + .string "MATCH_C_FLWSP 0x6002" +.LASF4244: + .string "CSR_HPMCOUNTER5H 0xc85" +.LASF3273: + .string "__nonnull_all __attribute__((__nonnull__))" +.LASF3698: + .string "MATCH_SLTU 0x3033" +.LASF3379: + .string "_REENT_CHECK_MP(ptr) " +.LASF2766: + .string "TIMER_FLAG_CH2O TIMER_INTF_CH2OF" +.LASF1814: + .string "GPIO_EVENT_PIN_8 ((uint8_t)0x08U)" +.LASF1195: + .string "DAC_WAVE_BIT_WIDTH_10 DWBW(9)" +.LASF3880: + .string "MATCH_FDIV_D 0x1a000053" +.LASF1579: + .string "OB_WP_17 ((uint32_t)0x00020000U)" +.LASF277: + .string "__FLT64X_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F64x" +.LASF2048: + .string "PMU_CTL_WURST BIT(2)" +.LASF3196: + .string "_BEGIN_STD_C " +.LASF3833: + .string "MASK_HRET 0xffffffff" +.LASF873: + .string "CAN_TMDATA0(canx,bank) REG32((canx) + 0x188U + ((bank) * 0x10U))" +.LASF4382: + .string "TIMER6_IRQn" +.LASF158: + .string "__FLT_HAS_INFINITY__ 1" +.LASF4130: + .string "CSR_HPMCOUNTER17 0xc11" +.LASF4014: + .string "MATCH_C_JAL 0x2001" +.LASF3314: + .string "__lockable __lock_annotate(lockable)" +.LASF3868: + .string "MATCH_FMIN_S 0x28000053" +.LASF1429: + .string "EXTI_FTEN_FTEN2 BIT(2)" +.LASF3700: + .string "MATCH_XOR 0x4033" +.LASF3530: + .string "DCSR_XDEBUGVER (3U<<30)" +.LASF2563: + .string "SPI_CRC_TX ((uint8_t)0x00U)" +.LASF73: + .string "__WCHAR_MAX__ 0x7fffffff" +.LASF2365: + .string "RCU_PREDV1_DIV9 CFG1_PREDV1(8)" +.LASF4166: + .string "CSR_TSELECT 0x7a0" +.LASF3041: + .string "USART_CPL_LOW CTL1_CPL(0)" +.LASF4039: + .string "MASK_C_J 0xe003" +.LASF2937: + .string "TIMER_CHVSEL_DISABLE ((uint16_t)0x0000U)" +.LASF3822: + .string "MATCH_SC_D 0x1800302f" +.LASF2866: + .string "TIMER_OCN_POLARITY_HIGH ((uint16_t)0x0000U)" +.LASF2363: + .string "RCU_PREDV1_DIV7 CFG1_PREDV1(6)" +.LASF4221: + .string "CSR_MHPMEVENT18 0x332" +.LASF1218: + .string "DAC_TRIANGLE_AMPLITUDE_31 DAC_WAVE_BIT_WIDTH_5" +.LASF2092: + .string "RCU_CTL_IRC8MADJ BITS(3,7)" +.LASF524: + .string "USBFS_BASE (AHB1_BUS_BASE + 0x0FFE8000U)" +.LASF2907: + .string "CTL1_MMC(regval) (BITS(4, 6) & ((uint32_t)(regval) << 4U))" +.LASF3739: + .string "MASK_LHU 0x707f" +.LASF2212: + .string "RCU_BDCTL_RTCSRC BITS(8,9)" +.LASF660: + .string "ADC_CHANNEL_0 ((uint8_t)0x00U)" +.LASF209: + .string "__FLT32_MIN_10_EXP__ (-37)" +.LASF3179: + .string "_HAVE_LONG_DOUBLE 1" +.LASF122: + .string "__UINT_LEAST64_MAX__ 0xffffffffffffffffULL" +.LASF3392: + .string "_REENT_MP_P5S(ptr) ((ptr)->_p5s)" +.LASF2925: + .string "TIMER_MASTER_SLAVE_MODE_ENABLE TIMER_SMCFG_MSM" +.LASF2695: + .string "TIMER_CHCTL1_CH2COMSEN BIT(3)" +.LASF1950: + .string "I2C_REG_VAL2(i2cx,offset) (REG32((i2cx) + ((uint32_t)(offset) >> 22)))" +.LASF269: + .string "__FLT64X_MIN_10_EXP__ (-4931)" +.LASF601: + .string "ADC_FLAG_STIC ADC_STAT_STIC" +.LASF3165: + .string "ECLIC_GROUP_LEVEL1_PRIO3 1" +.LASF306: + .string "__riscv_mul 1" +.LASF2744: + .string "TIMER_INT_CH3 TIMER_DMAINTEN_CH3IE" +.LASF3058: + .string "GD32VF103_WWDGT_H " +.LASF4266: + .string "CSR_HPMCOUNTER27H 0xc9b" +.LASF64: + .string "__UINT_FAST64_TYPE__ long long unsigned int" +.LASF4391: + .string "CAN1_EWMC_IRQn" +.LASF3004: + .string "USART_REG_VAL2(usartx,offset) (REG32((usartx) + ((uint32_t)(offset) >> 22)))" +.LASF921: + .string "CAN_TSTAT_TMLS2 BIT(31)" +.LASF2658: + .string "TIMER_DMAINTEN_TRGDEN BIT(14)" +.LASF4061: + .string "MASK_C_FSWSP 0xe003" +.LASF3434: + .string "_SSIZE_T_DECLARED " +.LASF3484: + .string "__VALIST __gnuc_va_list" +.LASF146: + .string "__FLT_DIG__ 6" +.LASF454: + .string "INT_LEAST64_MAX (__INT_LEAST64_MAX__)" +.LASF936: + .string "CAN_INTEN_RFOIE1 BIT(6)" +.LASF276: + .string "__FLT64X_EPSILON__ 1.92592994438723585305597794258492732e-34F64x" +.LASF3251: + .string "__XSTRING(x) __STRING(x)" +.LASF3615: + .string "IRQ_H_EXT 10" +.LASF1596: + .string "FMC_SIZE (*(uint16_t *)0x1FFFF7E0U)" +.LASF2583: + .string "I2S_FLAG_TBE SPI_STAT_TBE" +.LASF1755: + .string "AFIO_PCF0_USART2_REMAP BITS(4, 5)" +.LASF3819: + .string "MASK_AMOSWAP_D 0xf800707f" +.LASF1870: + .string "GPIO_CAN0_FULL_REMAP ((uint32_t)0x001D6000U)" +.LASF3675: + .string "MASK_SLLI 0xfc00707f" +.LASF2521: + .string "SPI_CK_PL_LOW_PH_2EDGE SPI_CTL0_CKPH" +.LASF2282: + .string "RCU_CKADC_CKAPB2_DIV12 ((uint32_t)0x00000005U)" +.LASF910: + .string "CAN_TSTAT_MTF2 BIT(16)" +.LASF1565: + .string "OB_WP_3 ((uint32_t)0x00000008U)" +.LASF4146: + .string "CSR_SIE 0x104" +.LASF3197: + .string "_END_STD_C " +.LASF1308: + .string "DMA_MEMORY_INCREASE_ENABLE ((uint8_t)0x01U)" +.LASF917: + .string "CAN_TSTAT_TME1 BIT(27)" +.LASF3504: + .string "MSTATUS_HIE 0x00000004" +.LASF819: + .string "CAN_F4DATA0(canx) REG32((canx) + 0x260U)" +.LASF2114: + .string "RCU_CFG0_CKOUT0SEL BITS(24,27)" +.LASF3769: + .string "MASK_REMU 0xfe00707f" +.LASF2068: + .string "PMU_FLAG_LVD PMU_CS_LVDF" +.LASF489: + .string "UINTMAX_C(x) __UINTMAX_C(x)" +.LASF3491: + .string "feof(p) __sfeof(p)" +.LASF1358: + .string "EXMC_MEMORY_TYPE_NOR SNCTL_NRTP(2)" +.LASF2236: + .string "AHBEN_REG_OFFSET 0x14U" +.LASF595: + .string "ADC_OVSCR_OVSS BITS(5,8)" +.LASF1955: + .string "I2C_I2CMODE_ENABLE ((uint32_t)0x00000000U)" +.LASF314: + .string "__riscv_m 2000000" +.LASF3456: + .string "__SMBF 0x0080" +.LASF1958: + .string "I2C_SMBUS_HOST I2C_CTL0_SMBSEL" +.LASF1961: + .string "I2C_ACK_DISABLE ((uint32_t)0x00000000U)" +.LASF4242: + .string "CSR_HPMCOUNTER3H 0xc83" +.LASF3403: + .string "_REENT_MBSRTOWCS_STATE(ptr) ((ptr)->_new._reent._mbsrtowcs_state)" +.LASF179: + .string "__LDBL_MAX_EXP__ 16384" +.LASF1559: + .string "OB_WP1_WP1 ((uint32_t)0x0000FF00U)" +.LASF4374: + .string "RTC_ALARM_IRQn" +.LASF23: + .string "__SIZEOF_SIZE_T__ 4" +.LASF337: + .string "IRC8M_STARTUP_TIMEOUT ((uint16_t)0x0500)" +.LASF4045: + .string "MASK_C_SLLI 0xe003" +.LASF1718: + .string "GPIO_BC_CR3 BIT(3)" +.LASF2289: + .string "RCU_PLL_MUL3 CFG0_PLLMF(1)" +.LASF1542: + .string "WS_WSCNT_1 WS_WSCNT(1)" +.LASF4109: + .string "MASK_CUSTOM3_RD_RS1_RS2 0x707f" +.LASF1101: + .string "CAN_FT_REMOTE ((uint32_t)0x00000002U)" +.LASF1241: + .string "DMA_CH2PADDR(dmax) REG32((dmax) + 0x38U)" +.LASF1511: + .string "FMC_CTL_MER BIT(2)" +.LASF1957: + .string "I2C_SMBUS_DEVICE ((uint32_t)0x00000000U)" +.LASF3983: + .string "MASK_C_JR 0xf07f" +.LASF1317: + .string "CHCTL_PRIO(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF3408: + .string "_REENT_GETDATE_ERR_P(ptr) (&((ptr)->_new._reent._getdate_err))" +.LASF2944: + .string "USART_STAT(usartx) REG32((usartx) + (0x00000000U))" +.LASF3218: + .string "__bounded " +.LASF2162: + .string "RCU_APB1RST_UART3RST BIT(19)" +.LASF2775: + .string "TIMER_DMAREQUEST_UPDATEEVENT TIMER_CTL1_DMAS" +.LASF255: + .string "__FLT32X_MAX_EXP__ 1024" +.LASF628: + .string "ADC0_1_EXTTRIG_REGULAR_NONE CTL1_ETSRC(7)" +.LASF2674: + .string "TIMER_SWEVG_CH2G BIT(3)" +.LASF1707: + .string "GPIO_BOP_CR8 BIT(24)" +.LASF3916: + .string "MATCH_FCVT_LU_S 0xc0300053" +.LASF2159: + .string "RCU_APB1RST_SPI2RST BIT(15)" +.LASF1730: + .string "GPIO_BC_CR15 BIT(15)" +.LASF104: + .string "__INT_LEAST8_MAX__ 0x7f" +.LASF2997: + .string "USART_CTL2_CTSIE BIT(10)" +.LASF3115: + .string "_WCHAR_T_DEFINED " +.LASF2033: + .string "DBG_CTL_I2C0_HOLD BIT(15)" +.LASF381: + .string "long" +.LASF3374: + .string "_N_LISTS 30" +.LASF3135: + .string "TIMER_CTRL_ADDR 0xd1000000" +.LASF2821: + .string "TIMER_EVENT_SRC_CMTG ((uint16_t)0x0020U)" +.LASF2208: + .string "RCU_APB1EN_DACEN BIT(29)" +.LASF1273: + .string "DMA_CHXCTL_PNAGA BIT(6)" +.LASF2683: + .string "TIMER_CHCTL0_CH0COMCEN BIT(7)" +.LASF3702: + .string "MATCH_SRL 0x5033" +.LASF3855: + .string "MASK_FADD_S 0xfe00007f" +.LASF63: + .string "__UINT_FAST32_TYPE__ unsigned int" +.LASF3050: + .string "USART_RTS_ENABLE CLT2_RTSEN(1)" +.LASF355: + .string "__LARGEFILE_VISIBLE 0" +.LASF3618: + .string "IRQ_HOST 13" +.LASF3667: + .string "MASK_JAL 0x7f" +.LASF4320: + .string "CAUSE_MISALIGNED_LOAD 0x4" +.LASF1852: + .string "GPIO_PIN_14 BIT(14)" +.LASF1173: + .string "DAC_TRIGGER_T5_TRGO CTL_DTSEL(0)" +.LASF2407: + .string "RTC RTC_BASE" +.LASF951: + .string "CAN_BT_BS1 BITS(16,19)" +.LASF1781: + .string "AFIO_EXTI15_SS BITS(12, 15)" +.LASF1472: + .string "EXTI_PD_PD7 BIT(7)" +.LASF1120: + .string "CRC_FDATA REG32(CRC + 0x04U)" +.LASF3725: + .string "MASK_SRLW 0xfe00707f" +.LASF3654: + .string "MATCH_BNE 0x1063" +.LASF2119: + .string "RCU_INT_IRC8MSTBIF BIT(2)" +.LASF1545: + .string "OB_FWDGT_HW ((uint8_t)0x00U)" +.LASF1550: + .string "OB_BOOT_B0 ((uint8_t)0x08U)" +.LASF1011: + .string "FDATA_MASK_HIGH(regval) (BITS(16,31) & ((uint32_t)(regval) << 16))" +.LASF2217: + .string "RCU_RSTSCK_RSTFC BIT(24)" +.LASF998: + .string "CAN_REG_VALS(canx,offset) (REG32((canx) + ((uint32_t)(offset) >> 12)))" +.LASF3970: + .string "MATCH_FMADD_D 0x2000043" +.LASF1671: + .string "GPIO_OCTL_OCTL4 BIT(4)" +.LASF49: + .string "__INT_LEAST8_TYPE__ signed char" +.LASF1443: + .string "EXTI_FTEN_FTEN16 BIT(16)" +.LASF1287: + .string "DMA_CHCTL_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF785: + .string "CAN_RFIFO0(canx) REG32((canx) + 0x0CU)" +.LASF1326: + .string "ECLIC_PRIGROUP_LEVEL0_PRIO4 0" +.LASF2990: + .string "USART_CTL2_HDEN BIT(3)" +.LASF1208: + .string "DAC_LFSR_BITS10_0 DAC_WAVE_BIT_WIDTH_11" +.LASF2225: + .string "RCU_CFG1_PREDV0 BITS(0,3)" +.LASF3534: + .string "DCSR_EBREAKH (1<<14)" +.LASF1452: + .string "EXTI_SWIEV_SWIEV6 BIT(6)" +.LASF1360: + .string "EXMC_NWAIT_POLARITY_LOW ((uint32_t)0x00000000U)" +.LASF253: + .string "__FLT32X_MIN_EXP__ (-1021)" +.LASF1373: + .string "EXTI_INTEN_INTEN3 BIT(3)" +.LASF3269: + .string "__pure __attribute__((__pure__))" +.LASF367: + .string "___int64_t_defined 1" +.LASF4111: + .string "CSR_FRM 0x2" +.LASF3699: + .string "MASK_SLTU 0xfe00707f" +.LASF2530: + .string "SPI_PSC_128 CTL0_PSC(6)" +.LASF196: + .string "__FLT16_MAX_10_EXP__ 4" +.LASF1056: + .string "CAN_BT_SJW_4TQ ((uint8_t)0x03U)" +.LASF3225: + .string "__GNUCLIKE_ASM 3" +.LASF3691: + .string "MASK_ADD 0xfe00707f" +.LASF4096: + .string "MATCH_CUSTOM2_RD_RS1_RS2 0x705b" +.LASF2245: + .string "INT_REG_OFFSET 0x08U" +.LASF229: + .string "__FLT64_NORM_MAX__ 1.79769313486231570814527423731704357e+308F64" +.LASF2058: + .string "PMU_LVDT_0 CTL_LVDT(0)" +.LASF4128: + .string "CSR_HPMCOUNTER15 0xc0f" +.LASF1259: + .string "DMA_INTF_GIF BIT(0)" +.LASF3696: + .string "MATCH_SLT 0x2033" +.LASF455: + .string "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)" +.LASF4218: + .string "CSR_MHPMEVENT15 0x32f" +.LASF4249: + .string "CSR_HPMCOUNTER10H 0xc8a" +.LASF1366: + .string "EXTI_RTEN REG32(EXTI + 0x08U)" +.LASF1290: + .string "DMA_CHMADDR_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF1739: + .string "GPIO_LOCK_LK8 BIT(8)" +.LASF3521: + .string "SSTATUS_SIE 0x00000002" +.LASF3007: + .string "USART_CTL0_REG_OFFSET (0x0000000CU)" +.LASF1476: + .string "EXTI_PD_PD11 BIT(11)" +.LASF2523: + .string "CTL0_PSC(regval) (BITS(3,5) & ((uint32_t)(regval) << 3))" +.LASF676: + .string "ADC_CHANNEL_16 ((uint8_t)0x10U)" +.LASF3939: + .string "MASK_FCVT_S_L 0xfff0007f" +.LASF3431: + .string "_GID_T_DECLARED " +.LASF952: + .string "CAN_BT_BS2 BITS(20,22)" +.LASF1558: + .string "OB_WP0_WP0 ((uint32_t)0x000000FFU)" +.LASF226: + .string "__FLT64_MAX_10_EXP__ 308" +.LASF311: + .string "__riscv_cmodel_medany 1" +.LASF4154: + .string "CSR_MSTATUS 0x300" +.LASF2065: + .string "PMU_LVDT_7 CTL_LVDT(7)" +.LASF2372: + .string "RCU_PREDV1_DIV16 CFG1_PREDV1(15)" +.LASF2781: + .string "TIMER_DMACFG_DMATA_DMAINTEN DMACFG_DMATA(3)" +.LASF2250: + .string "RCU_CKSYSSRC_HXTAL CFG0_SCS(1)" +.LASF1332: + .string "GD32VF103_EXMC_H " +.LASF257: + .string "__FLT32X_DECIMAL_DIG__ 17" +.LASF2803: + .string "TIMER_DMACFG_DMATC_6TRANSFER DMACFG_DMATC(5)" +.LASF2910: + .string "TIMER_TRI_OUT_SRC_UPDATE CTL1_MMC(2)" +.LASF3412: + .string "_REENT _impure_ptr" +.LASF3305: + .string "__DEQUALIFY(type,var) ((type)(__uintptr_t)(const volatile void *)(var))" +.LASF3046: + .string "CLT2_DENT(regval) (BIT(7) & ((uint32_t)(regval) << 7))" +.LASF2394: + .string "RCU_PLL2_MUL20 CFG1_PLL2MF(15)" +.LASF70: + .string "__INT_MAX__ 0x7fffffff" +.LASF2520: + .string "SPI_CK_PL_HIGH_PH_1EDGE SPI_CTL0_CKPL" +.LASF1453: + .string "EXTI_SWIEV_SWIEV7 BIT(7)" +.LASF4074: + .string "MATCH_CUSTOM1 0x2b" +.LASF1419: + .string "EXTI_RTEN_RTEN11 BIT(11)" +.LASF1243: + .string "DMA_CH3CTL(dmax) REG32((dmax) + 0x44U)" +.LASF2517: + .string "SPI_ENDIAN_MSB ((uint32_t)0x00000000U)" +.LASF3669: + .string "MASK_LUI 0x7f" +.LASF1679: + .string "GPIO_OCTL_OCTL12 BIT(12)" +.LASF3920: + .string "MATCH_FCLASS_S 0xe0001053" +.LASF2415: + .string "RTC_CNTL REG32(RTC + 0x1CU)" +.LASF3455: + .string "__SERR 0x0040" +.LASF3334: + .string "_SYS__TYPES_H " +.LASF4156: + .string "CSR_MEDELEG 0x302" +.LASF133: + .string "__UINT_FAST16_MAX__ 0xffffffffU" +.LASF3233: + .string "__GNUCLIKE_BUILTIN_STDARG 1" +.LASF1867: + .string "GPIO_TIMER2_FULL_REMAP ((uint32_t)0x001A0C00U)" +.LASF2013: + .string "FWDGT_KEY_ENABLE ((uint16_t)0xCCCCU)" +.LASF2761: + .string "TIMER_FLAG_CMT TIMER_INTF_CMTIF" +.LASF2477: + .string "SPI_CTL1_TMOD BIT(4)" +.LASF2769: + .string "TIMER_DMA_CH0D ((uint16_t)TIMER_DMAINTEN_CH0DEN)" +.LASF4354: + .string "CAN0_RX1_IRQn" +.LASF1465: + .string "EXTI_PD_PD0 BIT(0)" +.LASF120: + .string "__UINT_LEAST32_MAX__ 0xffffffffUL" +.LASF1227: + .string "DMA0 (DMA_BASE)" +.LASF555: + .string "ADC_STAT_STRC BIT(4)" +.LASF3216: + .string "__attribute_format_strfmon__(a,b) " +.LASF2259: + .string "RCU_AHB_CKSYS_DIV4 CFG0_AHBPSC(9)" +.LASF1916: + .string "I2C_SADDR1_DUADEN BIT(0)" +.LASF447: + .string "INT_LEAST32_MIN (-__INT_LEAST32_MAX__ - 1)" +.LASF1819: + .string "GPIO_EVENT_PIN_13 ((uint8_t)0x0DU)" +.LASF3497: + .string "__SYS_UNISTD_H__ " +.LASF431: + .string "UINTPTR_MAX (__UINTPTR_MAX__)" +.LASF19: + .string "__SIZEOF_SHORT__ 2" +.LASF1279: + .string "DMA_CHXCNT_CNT BITS(0,15)" +.LASF3882: + .string "MATCH_FSGNJ_D 0x22000053" +.LASF4333: + .string "WWDGT_IRQn" +.LASF1063: + .string "CAN_BT_BS1_7TQ ((uint8_t)0x06U)" +.LASF407: + .string "__int8_t_defined 1" +.LASF1253: + .string "DMA_CH5PADDR(dmax) REG32((dmax) + 0x74U)" +.LASF1764: + .string "AFIO_PCF0_SPI2_REMAP BIT(28)" +.LASF1298: + .string "DMA_FLAG_HTF DMA_INTF_HTFIF" +.LASF35: + .string "__WINT_TYPE__ unsigned int" +.LASF972: + .string "CAN_RFIFOMI_FT BIT(1)" +.LASF3564: + .string "MCONTROL_LOAD (1<<0)" +.LASF1353: + .string "EXMC_NOR_DATABUS_WIDTH_8B SNCTL_NRW(0)" +.LASF3248: + .string "__CONCAT1(x,y) x ## y" +.LASF1111: + .string "CAN_INT_PERR CAN_INTEN_PERRIE" +.LASF110: + .string "__INT_LEAST32_MAX__ 0x7fffffffL" +.LASF3183: + .string "_WIDE_ORIENT 1" +.LASF1352: + .string "SNCTL_NRW(regval) (BITS(4,5) & ((uint32_t)(regval) << 4))" +.LASF2435: + .string "RTC_INT_SECOND RTC_INTEN_SCIE" +.LASF490: + .string "REG32(addr) (*(volatile uint32_t *)(uint32_t)(addr))" +.LASF2675: + .string "TIMER_SWEVG_CH3G BIT(4)" +.LASF3622: + .string "CONFIG_STRING_ADDR 0x0000100C" +.LASF3485: + .string "__sgetc_raw_r(__ptr,__f) (--(__f)->_r < 0 ? __srget_r(__ptr, __f) : (int)(*(__f)->_p++))" +.LASF3907: + .string "MASK_FLT_D 0xfe00707f" +.LASF3550: + .string "MCONTROL_TYPE(xlen) (0xfULL<<((xlen)-4))" +.LASF2269: + .string "RCU_APB1_CKAHB_DIV4 CFG0_APB1PSC(5)" +.LASF4052: + .string "MATCH_C_MV 0x8002" +.LASF148: + .string "__FLT_MIN_10_EXP__ (-37)" +.LASF3991: + .string "MASK_C_SD 0xe003" +.LASF3320: + .string "__asserts_exclusive(...) __lock_annotate(assert_exclusive_lock(__VA_ARGS__))" +.LASF1732: + .string "GPIO_LOCK_LK1 BIT(1)" +.LASF3529: + .string "SSTATUS64_SD 0x8000000000000000" +.LASF351: + .string "__ATFILE_VISIBLE 0" +.LASF3878: + .string "MATCH_FMUL_D 0x12000053" +.LASF4046: + .string "MATCH_C_FLDSP 0x2002" +.LASF4334: + .string "LVD_IRQn" +.LASF3466: + .string "_IOFBF 0" +.LASF2203: + .string "RCU_APB1EN_I2C1EN BIT(22)" +.LASF2502: + .string "SPI_I2SPSC_DIV BITS(0,7)" +.LASF667: + .string "ADC_CHANNEL_7 ((uint8_t)0x07U)" +.LASF1334: + .string "EXMC_SNCTL0 REG32(EXMC + 0x00U)" +.LASF1934: + .string "I2C_STAT1_I2CBSY BIT(1)" +.LASF4092: + .string "MATCH_CUSTOM2_RD 0x405b" +.LASF1701: + .string "GPIO_BOP_CR2 BIT(18)" +.LASF811: + .string "CAN_FMCFG(canx) REG32((canx) + 0x204U)" +.LASF891: + .string "CAN_STAT_IWS BIT(0)" +.LASF4306: + .string "CSR_MTVT2 0x7EC" +.LASF850: + .string "CAN_F7DATA1(canx) REG32((canx) + 0x27CU)" +.LASF3649: + .string "rdcycle() read_csr(cycle)" +.LASF3617: + .string "IRQ_COP 12" +.LASF1859: + .string "GPIO_USART2_PARTIAL_REMAP ((uint32_t)0x00140010U)" +.LASF4141: + .string "CSR_HPMCOUNTER28 0xc1c" +.LASF506: + .string "RTC_BASE (APB1_BUS_BASE + 0x00002800U)" +.LASF1139: + .string "DACC_R8DH REG32(DAC + 0x28U)" +.LASF1698: + .string "GPIO_BOP_BOP15 BIT(15)" +.LASF3296: + .string "__sym_compat(sym,impl,verid) __asm__(\".symver \" #impl \", \" #sym \"@\" #verid)" +.LASF3253: + .string "__signed signed" +.LASF2867: + .string "TIMER_OCN_POLARITY_LOW ((uint16_t)0x0008U)" +.LASF978: + .string "CAN_RFIFOMP_TS BITS(16,31)" +.LASF4123: + .string "CSR_HPMCOUNTER10 0xc0a" +.LASF573: + .string "ADC_CTL1_DMA BIT(8)" +.LASF2882: + .string "TIMER_OC_FAST_ENABLE ((uint16_t)0x0004)" +.LASF3549: + .string "DCSR_CAUSE_HALT 5" +.LASF1093: + .string "CAN_MODE_NORMAL ((uint8_t)0x02U)" +.LASF1260: + .string "DMA_INTF_FTFIF BIT(1)" +.LASF766: + .string "BKP_TPCS_TPIE BIT(2)" +.LASF1463: + .string "EXTI_SWIEV_SWIEV17 BIT(17)" +.LASF949: + .string "CAN_ERR_RECNT BITS(24,31)" +.LASF3639: + .string "RISCV_PGSHIFT 12" +.LASF1127: + .string "DAC0 (0U)" +.LASF968: + .string "CAN_TMDATA1_DB4 BITS(0,7)" +.LASF2414: + .string "RTC_CNTH REG32(RTC + 0x18U)" +.LASF2206: + .string "RCU_APB1EN_BKPIEN BIT(27)" +.LASF1562: + .string "OB_WP_0 ((uint32_t)0x00000001U)" +.LASF3430: + .string "_UID_T_DECLARED " +.LASF114: + .string "__INT64_C(c) c ## LL" +.LASF3189: + .string "_READ_WRITE_RETURN_TYPE _ssize_t" +.LASF235: + .string "__FLT64_HAS_QUIET_NAN__ 1" +.LASF1653: + .string "GPIO_ISTAT_ISTAT2 BIT(2)" +.LASF205: + .string "__FLT16_HAS_QUIET_NAN__ 1" +.LASF4135: + .string "CSR_HPMCOUNTER22 0xc16" +.LASF4189: + .string "CSR_MHPMCOUNTER17 0xb11" +.LASF4279: + .string "CSR_MHPMCOUNTER9H 0xb89" +.LASF3567: + .string "MCONTROL_ACTION_DEBUG_EXCEPTION 0" +.LASF485: + .string "UINT32_C(x) __UINT32_C(x)" +.LASF237: + .string "__FLT128_DIG__ 33" +.LASF616: + .string "ADC_DAUL_INSERTED_TRIGGER_ROTATION CTL0_SYNCM(9)" +.LASF3631: + .string "PTE_A 0x040" +.LASF1665: + .string "GPIO_ISTAT_ISTAT14 BIT(14)" +.LASF3526: + .string "SSTATUS_XS 0x00018000" +.LASF2161: + .string "RCU_APB1RST_USART2RST BIT(18)" +.LASF3052: + .string "CLT2_CTSEN(regval) (BIT(9) & ((uint32_t)(regval) << 9))" +.LASF2908: + .string "TIMER_TRI_OUT_SRC_RESET CTL1_MMC(0)" +.LASF1576: + .string "OB_WP_14 ((uint32_t)0x00004000U)" +.LASF1403: + .string "EXTI_EVEN_EVEN14 BIT(14)" +.LASF3546: + .string "DCSR_CAUSE_HWBP 2" +.LASF2965: + .string "USART_CTL0_RWU BIT(1)" +.LASF767: + .string "BKP_TPCS_TEF BIT(8)" +.LASF2037: + .string "DBG_CTL_TIMER6_HOLD BIT(20)" +.LASF4392: + .string "USBFS_IRQn" +.LASF1172: + .string "CTL_DTSEL(regval) (BITS(3,5) & ((uint32_t)(regval) << 3))" +.LASF2672: + .string "TIMER_SWEVG_CH0G BIT(1)" +.LASF3287: + .string "__printflike(fmtarg,firstvararg) __attribute__((__format__ (__printf__, fmtarg, firstvararg)))" +.LASF569: + .string "ADC_CTL1_ADCON BIT(0)" +.LASF242: + .string "__FLT128_DECIMAL_DIG__ 36" +.LASF4082: + .string "MATCH_CUSTOM1_RD_RS1 0x602b" +.LASF325: + .string "__RTTHREAD__ 1" +.LASF2950: + .string "USART_GP(usartx) REG32((usartx) + (0x00000018U))" +.LASF2493: + .string "SPI_TCRC_TCRC BITS(0,15)" +.LASF2059: + .string "PMU_LVDT_1 CTL_LVDT(1)" +.LASF2822: + .string "TIMER_EVENT_SRC_TRGG ((uint16_t)0x0040U)" +.LASF189: + .string "__LDBL_HAS_INFINITY__ 1" +.LASF2280: + .string "RCU_CKADC_CKAPB2_DIV6 ((uint32_t)0x00000002U)" +.LASF2972: + .string "USART_CTL0_PERRIE BIT(8)" +.LASF1575: + .string "OB_WP_13 ((uint32_t)0x00002000U)" +.LASF3904: + .string "MATCH_FLE_D 0xa2000053" +.LASF2689: + .string "TIMER_CHCTL0_CH0CAPPSC BITS(2,3)" +.LASF3825: + .string "MASK_ECALL 0xffffffff" +.LASF3628: + .string "PTE_X 0x008" +.LASF2465: + .string "SPI_CTL0_SWNSS BIT(8)" +.LASF4259: + .string "CSR_HPMCOUNTER20H 0xc94" +.LASF1343: + .string "EXMC_SNCTL_WREN BIT(12)" +.LASF2409: + .string "RTC_CTL REG32(RTC + 0x04U)" +.LASF1112: + .string "CAN_INT_BO CAN_INTEN_BOIE" +.LASF2421: + .string "RTC_CTL_SCIF BIT(0)" +.LASF1597: + .string "SRAM_SIZE (*(uint16_t *)0x1FFFF7E2U)" +.LASF3411: + .string "__ATTRIBUTE_IMPURE_PTR__ " +.LASF308: + .string "__riscv_muldiv 1" +.LASF2317: + .string "RCU_PLL_MUL31 (PLLMF_4 | CFG0_PLLMF(14))" +.LASF85: + .string "__WINT_WIDTH__ 32" +.LASF1496: + .string "OB_SPC REG16((OB) + 0x00U)" +.LASF329: + .string "GD32VF103_H " +.LASF562: + .string "ADC_CTL0_ICA BIT(10)" +.LASF496: + .string "FLASH_BASE ((uint32_t)0x08000000U)" +.LASF2859: + .string "TIMER_CH_3 ((uint16_t)0x0003U)" +.LASF68: + .string "__SCHAR_MAX__ 0x7f" +.LASF293: + .string "__GCC_ATOMIC_INT_LOCK_FREE 2" +.LASF3232: + .string "__GNUCLIKE_BUILTIN_VARARGS 1" +.LASF258: + .string "__FLT32X_MAX__ 1.79769313486231570814527423731704357e+308F32x" +.LASF4366: + .string "I2C1_EV_IRQn" +.LASF1097: + .string "CAN_FILTERMODE_MASK ((uint8_t)0x00U)" +.LASF1856: + .string "GPIO_I2C0_REMAP ((uint32_t)0x00000002U)" +.LASF2: + .string "__STDC_UTF_16__ 1" +.LASF2030: + .string "DBG_CTL_TIMER2_HOLD BIT(12)" +.LASF3954: + .string "MATCH_FLW 0x2007" +.LASF2189: + .string "RCU_APB1EN_TIMER1EN BIT(0)" +.LASF2911: + .string "TIMER_TRI_OUT_SRC_CH0 CTL1_MMC(3)" +.LASF2613: + .string "TIMER_CH3CV(timerx) REG32((timerx) + 0x40U)" +.LASF3204: + .string "_FSTDIO " +.LASF101: + .string "__UINT16_MAX__ 0xffff" +.LASF2433: + .string "RTC_ALRMH_ALRM BITS(0,15)" +.LASF1886: + .string "I2C_DATA(i2cx) REG32((i2cx) + 0x10U)" +.LASF773: + .string "RTC_OUTPUT_ALARM_PULSE ((uint16_t)0x0000U)" +.LASF4190: + .string "CSR_MHPMCOUNTER18 0xb12" +.LASF3952: + .string "MATCH_FMV_D_X 0xf2000053" +.LASF38: + .string "__CHAR16_TYPE__ short unsigned int" +.LASF1080: + .string "CAN_BT_BS2_8TQ ((uint8_t)0x07U)" +.LASF3410: + .string "_Kmax (sizeof (size_t) << 3)" +.LASF3056: + .string "USART_IRLP_LOW CTL2_IRLP(1)" +.LASF842: + .string "CAN_F27DATA0(canx) REG32((canx) + 0x318U)" +.LASF270: + .string "__FLT64X_MAX_EXP__ 16384" +.LASF2078: + .string "RCU_CFG0 REG32(RCU + 0x04U)" +.LASF3328: + .string "__guarded_by(x) __lock_annotate(guarded_by(x))" +.LASF778: + .string "BKP_INT_FLAG_TAMPER BKP_TPCS_TIF" +.LASF959: + .string "CAN_TMI_EFID BITS(3,31)" +.LASF1789: + .string "GPIO_MODE_OUT_OD ((uint8_t)0x14U)" +.LASF2741: + .string "TIMER_INT_CH0 TIMER_DMAINTEN_CH0IE" +.LASF3942: + .string "MATCH_FMV_S_X 0xf0000053" +.LASF1046: + .string "CAN_ERRN_6 ERR_ERRN(6U)" +.LASF3353: + .string "__lock_close_recursive(lock) ((void) 0)" +.LASF3460: + .string "__SNPT 0x0800" +.LASF3323: + .string "__requires_shared(...) __lock_annotate(shared_locks_required(__VA_ARGS__))" +.LASF3: + .string "__STDC_UTF_32__ 1" +.LASF1289: + .string "DMA_CHPADDR_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF4350: + .string "DMA0_Channel6_IRQn" +.LASF359: + .string "__XSI_VISIBLE 0" +.LASF3181: + .string "_FVWRITE_IN_STREAMIO 1" +.LASF3025: + .string "USART_WL_9BIT CTL0_WL(1)" +.LASF3443: + .string "_SYS__PTHREADTYPES_H_ " +.LASF2538: + .string "I2S_AUDIOSAMPLE_48K ((uint32_t)48000U)" +.LASF1832: + .string "GPIO_PIN_SOURCE_10 ((uint8_t)0x0AU)" +.LASF2436: + .string "RTC_INT_ALARM RTC_INTEN_ALRMIE" +.LASF2215: + .string "RCU_RSTSCK_IRC40KEN BIT(0)" +.LASF2418: + .string "RTC_INTEN_SCIE BIT(0)" +.LASF1557: + .string "OB_USER_USER_N ((uint32_t)0xFF000000U)" +.LASF3623: + .string "EXT_IO_BASE 0x40000000" +.LASF1059: + .string "CAN_BT_BS1_3TQ ((uint8_t)0x02U)" +.LASF615: + .string "ADC_DAUL_REGULAL_FOLLOWUP_SLOW CTL0_SYNCM(8)" +.LASF2110: + .string "RCU_CFG0_PLLSEL BIT(16)" +.LASF565: + .string "ADC_CTL0_DISNUM BITS(13,15)" +.LASF2174: + .string "RCU_AHBEN_FMCSPEN BIT(4)" +.LASF2960: + .string "USART_STAT_CTSF BIT(9)" +.LASF693: + .string "ADC_OVERSAMPLING_SHIFT_1B OVSCR_OVSS(1)" +.LASF3231: + .string "__GNUCLIKE_BUILTIN_CONSTANT_P 1" +.LASF1010: + .string "BT_MODE(regval) (BITS(30,31) & ((uint32_t)(regval) << 30))" +.LASF4269: + .string "CSR_HPMCOUNTER30H 0xc9e" +.LASF6: + .string "__GNUC_MINOR__ 2" +.LASF234: + .string "__FLT64_HAS_INFINITY__ 1" +.LASF2353: + .string "RCU_PREDV0_DIV14 CFG1_PREDV0(13)" +.LASF1081: + .string "CAN_MAILBOX0 ((uint8_t)0x00U)" +.LASF3247: + .string "__P(protos) protos" +.LASF155: + .string "__FLT_EPSILON__ 1.19209289550781250000000000000000000e-7F" +.LASF592: + .string "ADC_RDATA_ADC1RDTR BITS(16,31)" +.LASF2606: + .string "TIMER_CNT(timerx) REG32((timerx) + 0x24U)" +.LASF3542: + .string "DCSR_STEP (1<<2)" +.LASF2242: + .string "RSTSCK_REG_OFFSET 0x24U" +.LASF3249: + .string "__CONCAT(x,y) __CONCAT1(x,y)" +.LASF3044: + .string "USART_DENR_ENABLE CLT2_DENR(1)" +.LASF152: + .string "__FLT_MAX__ 3.40282346638528859811704183484516925e+38F" +.LASF3808: + .string "MATCH_AMOAND_D 0x6000302f" +.LASF832: + .string "CAN_F17DATA0(canx) REG32((canx) + 0x2C8U)" +.LASF370: + .string "___int_least32_t_defined 1" +.LASF1388: + .string "EXTI_INTEN_INTEN18 BIT(18)" +.LASF3850: + .string "MATCH_CSRRSI 0x6073" +.LASF1535: + .string "FMC_STAT_REG_OFFSET 0x0CU" +.LASF2175: + .string "RCU_AHBEN_CRCEN BIT(6)" +.LASF2525: + .string "SPI_PSC_4 CTL0_PSC(1)" +.LASF1412: + .string "EXTI_RTEN_RTEN4 BIT(4)" +.LASF41: + .string "__INT8_TYPE__ signed char" +.LASF556: + .string "ADC_CTL0_WDCHSEL BITS(0,4)" +.LASF1524: + .string "FMC_WP_WP BITS(0,31)" +.LASF1200: + .string "DAC_LFSR_BITS2_0 DAC_WAVE_BIT_WIDTH_3" +.LASF3138: + .string "N200_ECLIC_H " +.LASF2642: + .string "TIMER_SMCFG_SMC1 BIT(14)" +.LASF2825: + .string "TIMER_COUNTER_EDGE CTL0_CAM(0)" +.LASF1810: + .string "GPIO_EVENT_PIN_4 ((uint8_t)0x04U)" +.LASF570: + .string "ADC_CTL1_CTN BIT(1)" +.LASF4239: + .string "CSR_CYCLEH 0xc80" +.LASF4035: + .string "MASK_C_SUBW 0xfc63" +.LASF3775: + .string "MASK_DIVUW 0xfe00707f" +.LASF2974: + .string "USART_CTL0_PCEN BIT(10)" +.LASF4210: + .string "CSR_MHPMEVENT7 0x327" +.LASF1627: + .string "GPIO_CTL0_MD4 BITS(16, 17)" +.LASF3301: + .string "__SCCSID(s) struct __hack" +.LASF582: + .string "ADC_SAMPTX_SPTN BITS(0,2)" +.LASF3679: + .string "MASK_SLTIU 0x707f" +.LASF449: + .string "UINT_LEAST32_MAX (__UINT_LEAST32_MAX__)" +.LASF1656: + .string "GPIO_ISTAT_ISTAT5 BIT(5)" +.LASF3663: + .string "MASK_BGEU 0x707f" +.LASF2739: + .string "TIMER_DMATB_DMATB BITS(0,15)" +.LASF3160: + .string "MSIP_HANDLER eclic_msip_handler" +.LASF3605: + .string "VM_SV32 8" +.LASF3551: + .string "MCONTROL_DMODE(xlen) (1ULL<<((xlen)-5))" +.LASF2963: + .string "USART_BAUD_INTDIV BITS(4,15)" +.LASF3048: + .string "USART_DENT_DISABLE CLT2_DENT(0)" +.LASF1377: + .string "EXTI_INTEN_INTEN7 BIT(7)" +.LASF1842: + .string "GPIO_PIN_4 BIT(4)" +.LASF1049: + .string "CAN_NORMAL_MODE ((uint8_t)0x00U)" +.LASF4044: + .string "MATCH_C_SLLI 0x2" +.LASF382: + .string "signed +0" +.LASF1321: + .string "DMA_PRIORITY_ULTRA_HIGH CHCTL_PRIO(3U)" +.LASF1828: + .string "GPIO_PIN_SOURCE_6 ((uint8_t)0x06U)" +.LASF684: + .string "OVSCR_DRES(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF2814: + .string "TIMER_DMACFG_DMATC_17TRANSFER DMACFG_DMATC(16)" +.LASF1141: + .string "DAC1_DO REG32(DAC + 0x30U)" +.LASF3852: + .string "MATCH_CSRRCI 0x7073" +.LASF1162: + .string "DAC1_L12DH_DAC1_DH BITS(4,15)" +.LASF4289: + .string "CSR_MHPMCOUNTER19H 0xb93" +.LASF1747: + .string "GPIO_LOCK_LKK BIT(16)" +.LASF107: + .string "__INT_LEAST16_MAX__ 0x7fff" +.LASF103: + .string "__UINT64_MAX__ 0xffffffffffffffffULL" +.LASF4268: + .string "CSR_HPMCOUNTER29H 0xc9d" +.LASF3894: + .string "MATCH_FCVT_D_S 0x42000053" +.LASF3427: + .string "_INO_T_DECLARED " +.LASF423: + .string "__int_least32_t_defined 1" +.LASF3851: + .string "MASK_CSRRSI 0x707f" +.LASF1248: + .string "DMA_CH4CNT(dmax) REG32((dmax) + 0x5CU)" +.LASF1244: + .string "DMA_CH3CNT(dmax) REG32((dmax) + 0x48U)" +.LASF411: + .string "_INT32_T_DECLARED " +.LASF1538: + .string "UNLOCK_KEY0 ((uint32_t)0x45670123U)" +.LASF3881: + .string "MASK_FDIV_D 0xfe00007f" +.LASF2682: + .string "TIMER_CHCTL0_CH0COMCTL BITS(4,6)" +.LASF410: + .string "__int16_t_defined 1" +.LASF2915: + .string "TIMER_TRI_OUT_SRC_O3CPRE CTL1_MMC(7)" +.LASF651: + .string "ISQ_IL(regval) (BITS(20,21) & ((uint32_t)(regval) << 20))" +.LASF4209: + .string "CSR_MHPMEVENT6 0x326" +.LASF2738: + .string "TIMER_DMACFG_DMATC BITS(8,12)" +.LASF3985: + .string "MASK_C_JALR 0xf07f" +.LASF156: + .string "__FLT_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F" +.LASF2315: + .string "RCU_PLL_MUL29 (PLLMF_4 | CFG0_PLLMF(12))" +.LASF2624: + .string "TIMER_CTL0_CKDIV BITS(8,9)" +.LASF4159: + .string "CSR_MTVEC 0x305" +.LASF3409: + .string "_REENT_INIT_PTR(var) { memset((var), 0, sizeof(*(var))); _REENT_INIT_PTR_ZEROED(var); }" +.LASF3229: + .string "__GNUCLIKE___SECTION 1" +.LASF1040: + .string "CAN_ERRN_0 ERR_ERRN(0U)" +.LASF1481: + .string "EXTI_PD_PD16 BIT(16)" +.LASF3184: + .string "_UNBUF_STREAM_OPT 1" +.LASF521: + .string "RCU_BASE (AHB1_BUS_BASE + 0x00009000U)" +.LASF695: + .string "ADC_OVERSAMPLING_SHIFT_3B OVSCR_OVSS(3)" +.LASF3771: + .string "MASK_MULW 0xfe00707f" +.LASF1108: + .string "CAN_INT_RFF1 CAN_INTEN_RFFIE1" +.LASF3299: + .string "__RCSID(s) struct __hack" +.LASF1043: + .string "CAN_ERRN_3 ERR_ERRN(3U)" +.LASF2201: + .string "RCU_APB1EN_UART4EN BIT(20)" +.LASF3794: + .string "MATCH_AMOMAXU_W 0xe000202f" +.LASF4369: + .string "SPI1_IRQn" +.LASF2182: + .string "RCU_APB2EN_PDEN BIT(5)" +.LASF211: + .string "__FLT32_MAX_10_EXP__ 38" +.LASF3000: + .string "USART_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF4246: + .string "CSR_HPMCOUNTER7H 0xc87" +.LASF933: + .string "CAN_INTEN_RFOIE0 BIT(3)" +.LASF3031: + .string "CTL1_LBLEN(regval) (BIT(5) & ((uint32_t)(regval) << 5))" +.LASF4291: + .string "CSR_MHPMCOUNTER21H 0xb95" +.LASF3890: + .string "MATCH_FMAX_D 0x2a001053" +.LASF4245: + .string "CSR_HPMCOUNTER6H 0xc86" +.LASF174: + .string "__DBL_HAS_QUIET_NAN__ 1" +.LASF3694: + .string "MATCH_SLL 0x1033" +.LASF69: + .string "__SHRT_MAX__ 0x7fff" +.LASF2690: + .string "TIMER_CHCTL0_CH0CAPFLT BITS(4,7)" +.LASF796: + .string "CAN_TMDATA01(canx) REG32((canx) + 0x198U)" +.LASF2458: + .string "SPI_I2SPSC(spix) REG32((spix) + 0x20U)" +.LASF1988: + .string "I2C_DTCY_16_9 I2C_CKCFG_DTCY" +.LASF3518: + .string "MSTATUS32_SD 0x80000000" +.LASF1424: + .string "EXTI_RTEN_RTEN16 BIT(16)" +.LASF2261: + .string "RCU_AHB_CKSYS_DIV16 CFG0_AHBPSC(11)" +.LASF4000: + .string "MATCH_C_FLD 0x2000" +.LASF3528: + .string "SSTATUS32_SD 0x80000000" +.LASF2432: + .string "RTC_CNTL_CNT BITS(0,15)" +.LASF1927: + .string "I2C_STAT0_LOSTARB BIT(9)" +.LASF2855: + .string "TIMER_BREAK_DISABLE ((uint16_t)0x0000U)" +.LASF3911: + .string "MASK_FCVT_W_S 0xfff0007f" +.LASF4352: + .string "CAN0_TX_IRQn" +.LASF557: + .string "ADC_CTL0_EOCIE BIT(5)" +.LASF72: + .string "__LONG_LONG_MAX__ 0x7fffffffffffffffLL" +.LASF4346: + .string "DMA0_Channel2_IRQn" +.LASF83: + .string "__LONG_LONG_WIDTH__ 64" +.LASF2522: + .string "SPI_CK_PL_HIGH_PH_2EDGE (SPI_CTL0_CKPL | SPI_CTL0_CKPH)" +.LASF45: + .string "__UINT8_TYPE__ unsigned char" +.LASF2270: + .string "RCU_APB1_CKAHB_DIV8 CFG0_APB1PSC(6)" +.LASF105: + .string "__INT8_C(c) c" +.LASF397: + .string "__FAST16 " +.LASF3079: + .string "_T_PTRDIFF_ " +.LASF1076: + .string "CAN_BT_BS2_4TQ ((uint8_t)0x03U)" +.LASF804: + .string "CAN_RFIFOMDATA00(canx) REG32((canx) + 0x1B8U)" +.LASF2980: + .string "USART_CTL1_LBDIE BIT(6)" +.LASF129: + .string "__INT_FAST32_WIDTH__ 32" +.LASF1370: + .string "EXTI_INTEN_INTEN0 BIT(0)" +.LASF2066: + .string "PMU_FLAG_WAKEUP PMU_CS_WUF" +.LASF3319: + .string "__unlocks(...) __lock_annotate(unlock_function(__VA_ARGS__))" +.LASF1911: + .string "I2C_CTL1_DMALST BIT(12)" +.LASF2597: + .string "TIMER_CTL0(timerx) REG32((timerx) + 0x00U)" +.LASF4387: + .string "DMA1_Channel4_IRQn" +.LASF3382: + .string "_REENT_CHECK_EMERGENCY(ptr) " +.LASF315: + .string "__riscv_a 2000000" +.LASF1202: + .string "DAC_LFSR_BITS4_0 DAC_WAVE_BIT_WIDTH_5" +.LASF3208: + .string "__PMT(args) args" +.LASF499: + .string "DBG_BASE ((uint32_t)0xE0042000U)" +.LASF3912: + .string "MATCH_FCVT_WU_S 0xc0100053" +.LASF1109: + .string "CAN_INT_RFO1 CAN_INTEN_RFOIE1" +.LASF2069: + .string "PMU_LDO_NORMAL ((uint32_t)0x00000000U)" +.LASF2390: + .string "RCU_PLL2_MUL13 CFG1_PLL2MF(11)" +.LASF260: + .string "__FLT32X_MIN__ 2.22507385850720138309023271733240406e-308F32x" +.LASF243: + .string "__FLT128_MAX__ 1.18973149535723176508575932662800702e+4932F128" +.LASF3131: + .string "TIMER_MTIMECMP 0x8" +.LASF2439: + .string "RTC_INT_FLAG_ALARM RTC_CTL_ALRMIF" +.LASF948: + .string "CAN_ERR_TECNT BITS(16,23)" +.LASF75: + .string "__WINT_MAX__ 0xffffffffU" +.LASF533: + .string "ADC_SAMPT0(adcx) REG32((adcx) + 0x0CU)" +.LASF756: + .string "BKP_TPCS REG16((BKP) + 0x34U)" +.LASF2596: + .string "TIMER6 (TIMER_BASE + 0x00001400U)" +.LASF824: + .string "CAN_F9DATA0(canx) REG32((canx) + 0x288U)" +.LASF98: + .string "__INT32_MAX__ 0x7fffffffL" +.LASF1908: + .string "I2C_CTL1_EVIE BIT(9)" +.LASF3292: + .string "__printf0like(fmtarg,firstvararg) " +.LASF1532: + .string "FMC_BIT_POS0(val) (((uint32_t)(val) >> 6) & 0x1FU)" +.LASF1964: + .string "I2C_ACKPOS_CURRENT ((uint32_t)0x00000001U)" +.LASF4325: + .string "CAUSE_SUPERVISOR_ECALL 0x9" +.LASF3463: + .string "__SL64 0x8000" +.LASF1501: + .string "OB_WP3 REG16((OB) + 0x0EU)" +.LASF1433: + .string "EXTI_FTEN_FTEN6 BIT(6)" +.LASF862: + .string "CAN_F19DATA1(canx) REG32((canx) + 0x2DCU)" +.LASF4321: + .string "CAUSE_FAULT_LOAD 0x5" +.LASF2545: + .string "I2S_FRAMEFORMAT_DT32B_CH32B (I2SCTL_DTLEN(2) | SPI_I2SCTL_CHLEN)" +.LASF3921: + .string "MASK_FCLASS_S 0xfff0707f" +.LASF3752: + .string "MATCH_FENCE_I 0x100f" +.LASF1634: + .string "GPIO_CTL0_CTL7 BITS(30, 31)" +.LASF2337: + .string "RCU_RTCSRC_IRC40K BDCTL_RTCSRC(2)" +.LASF3096: + .string "_BSD_SIZE_T_ " +.LASF2467: + .string "SPI_CTL0_RO BIT(10)" +.LASF1028: + .string "GET_RFIFOMDATA0_DB0(regval) GET_BITS((uint32_t)(regval), 0U, 7U)" +.LASF471: + .string "SIZE_MAX (__SIZE_MAX__)" +.LASF1310: + .string "DMA_PERIPHERAL_WIDTH_8BIT CHCTL_PWIDTH(0U)" +.LASF3226: + .string "__GNUCLIKE_MATH_BUILTIN_CONSTANTS " +.LASF2074: + .string "WFE_CMD ((uint8_t)0x01U)" +.LASF42: + .string "__INT16_TYPE__ short int" +.LASF47: + .string "__UINT32_TYPE__ long unsigned int" +.LASF2444: + .string "RTC_FLAG_RSYN RTC_CTL_RSYNF" +.LASF4192: + .string "CSR_MHPMCOUNTER20 0xb14" +.LASF2322: + .string "RCU_CKUSB_CKPLL_DIV2_5 CFG0_USBPSC(2)" +.LASF3289: + .string "__format_arg(fmtarg) __attribute__((__format_arg__ (fmtarg)))" +.LASF76: + .string "__WINT_MIN__ 0U" +.LASF1945: + .string "I2C_FMPCFG_FMPEN BIT(0)" +.LASF2623: + .string "TIMER_CTL0_ARSE BIT(7)" +.LASF428: + .string "__int_fast64_t_defined 1" +.LASF1937: + .string "I2C_STAT1_DEFSMB BIT(5)" +.LASF937: + .string "CAN_INTEN_WERRIE BIT(8)" +.LASF3720: + .string "MATCH_SUBW 0x4000003b" +.LASF1690: + .string "GPIO_BOP_BOP7 BIT(7)" +.LASF3078: + .string "_PTRDIFF_T " +.LASF697: + .string "ADC_OVERSAMPLING_SHIFT_5B OVSCR_OVSS(5)" +.LASF3118: + .string "__INT_WCHAR_T_H " +.LASF1488: + .string "FMC_KEY REG32((FMC) + 0x04U)" +.LASF2894: + .string "TIMER_IC_PSC_DIV1 ((uint16_t)0x0000U)" +.LASF2745: + .string "TIMER_INT_CMT TIMER_DMAINTEN_CMTIE" +.LASF576: + .string "ADC_CTL1_ETEIC BIT(15)" +.LASF3185: + .string "__SYS_CONFIG_H__ " +.LASF1508: + .string "FMC_STAT_ENDF BIT(5)" +.LASF1286: + .string "DMA_CHMADDR(dma,channel) REG32(((dma) + 0x14U) + 0x14U * (uint32_t)(channel))" +.LASF2438: + .string "RTC_INT_FLAG_SECOND RTC_CTL_SCIF" +.LASF2865: + .string "TIMER_OC_POLARITY_LOW ((uint16_t)0x0002U)" +.LASF2335: + .string "RCU_RTCSRC_NONE BDCTL_RTCSRC(0)" +.LASF74: + .string "__WCHAR_MIN__ (-__WCHAR_MAX__ - 1)" +.LASF2034: + .string "DBG_CTL_I2C1_HOLD BIT(16)" +.LASF1335: + .string "EXMC_SNTCFG0 REG32(EXMC + 0x04U)" +.LASF3648: + .string "rdtime() read_csr(time)" +.LASF421: + .string "__int_least8_t_defined 1" +.LASF950: + .string "CAN_BT_BAUDPSC BITS(0,9)" +.LASF4139: + .string "CSR_HPMCOUNTER26 0xc1a" +.LASF1722: + .string "GPIO_BC_CR7 BIT(7)" +.LASF3318: + .string "__trylocks_shared(...) __lock_annotate(shared_trylock_function(__VA_ARGS__))" +.LASF2667: + .string "TIMER_INTF_CH0OF BIT(9)" +.LASF1416: + .string "EXTI_RTEN_RTEN8 BIT(8)" +.LASF1190: + .string "DAC_WAVE_BIT_WIDTH_5 DWBW(4)" +.LASF245: + .string "__FLT128_MIN__ 3.36210314311209350626267781732175260e-4932F128" +.LASF3568: + .string "MCONTROL_ACTION_DEBUG_MODE 1" +.LASF608: + .string "ADC_DAUL_REGULAL_PARALLEL_INSERTED_PARALLEL CTL0_SYNCM(1)" +.LASF1004: + .string "RFIFO1_REG_OFFSET ((uint8_t)0x10U)" +.LASF3809: + .string "MASK_AMOAND_D 0xf800707f" +.LASF2199: + .string "RCU_APB1EN_USART2EN BIT(18)" +.LASF3586: + .string "MIP_MEIP (1 << IRQ_M_EXT)" +.LASF138: + .string "__UINTPTR_MAX__ 0xffffffffU" +.LASF417: + .string "_INTMAX_T_DECLARED " +.LASF109: + .string "__INT_LEAST16_WIDTH__ 16" +.LASF2992: + .string "USART_CTL2_SCEN BIT(5)" +.LASF634: + .string "ADC0_1_EXTTRIG_INSERTED_T2_CH3 CTL1_ETSIC(4)" +.LASF2495: + .string "SPI_I2SCTL_DTLEN BITS(1,2)" +.LASF3620: + .string "DEFAULT_NMIVEC 0x00001004" +.LASF2532: + .string "I2S_AUDIOSAMPLE_8K ((uint32_t)8000U)" +.LASF3533: + .string "DCSR_EBREAKM (1<<15)" +.LASF3697: + .string "MASK_SLT 0xfe00707f" +.LASF954: + .string "CAN_BT_LCMOD BIT(30)" +.LASF1401: + .string "EXTI_EVEN_EVEN12 BIT(12)" +.LASF405: + .string "_INT8_T_DECLARED " +.LASF147: + .string "__FLT_MIN_EXP__ (-125)" +.LASF4126: + .string "CSR_HPMCOUNTER13 0xc0d" +.LASF1136: + .string "DAC1_R8DH REG32(DAC + 0x1CU)" +.LASF2644: + .string "TIMER_DMAINTEN_UPIE BIT(0)" +.LASF3284: + .string "__offsetof(type,field) offsetof(type, field)" +.LASF1571: + .string "OB_WP_9 ((uint32_t)0x00000200U)" +.LASF3637: + .string "SSTATUS_SD SSTATUS32_SD" +.LASF3603: + .string "VM_MBB 1" +.LASF2777: + .string "DMACFG_DMATA(regval) (BITS(0, 4) & ((uint32_t)(regval) << 0U))" +.LASF4356: + .string "EXTI5_9_IRQn" +.LASF4409: + .string "IRQn" +.LASF3364: + .string "_RAND48_SEED_0 (0x330e)" +.LASF1631: + .string "GPIO_CTL0_MD6 BITS(24, 25)" +.LASF643: + .string "ADC_SAMPLETIME_41POINT5 SAMPTX_SPT(4)" +.LASF1177: + .string "DAC_TRIGGER_T1_TRGO CTL_DTSEL(4)" +.LASF1072: + .string "CAN_BT_BS1_16TQ ((uint8_t)0x0FU)" +.LASF2156: + .string "RCU_APB1RST_TIMER6RST BIT(5)" +.LASF4183: + .string "CSR_MHPMCOUNTER11 0xb0b" +.LASF1238: + .string "DMA_CH1MADDR(dmax) REG32((dmax) + 0x28U)" +.LASF4294: + .string "CSR_MHPMCOUNTER24H 0xb98" +.LASF1985: + .string "DATA_TRANS(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF689: + .string "ADC_OVERSAMPLING_ALL_CONVERT 0" +.LASF188: + .string "__LDBL_HAS_DENORM__ 1" +.LASF944: + .string "CAN_ERR_WERR BIT(0)" +.LASF2590: + .string "TIMER0 (TIMER_BASE + 0x00012C00U)" +.LASF1365: + .string "EXTI_EVEN REG32(EXTI + 0x04U)" +.LASF1090: + .string "CAN_SFID_MASK ((uint32_t)0x000007FFU)" +.LASF3705: + .string "MASK_SRA 0xfe00707f" +.LASF2140: + .string "RCU_APB2RST_AFRST BIT(0)" +.LASF161: + .string "__DBL_DIG__ 15" +.LASF1694: + .string "GPIO_BOP_BOP11 BIT(11)" +.LASF1877: + .string "GPIO_TIMER1ITI1_REMAP ((uint32_t)0x00202000U)" +.LASF3282: + .string "__exported __attribute__((__visibility__(\"default\")))" +.LASF3614: + .string "IRQ_S_EXT 9" +.LASF2271: + .string "RCU_APB1_CKAHB_DIV16 CFG0_APB1PSC(7)" +.LASF1158: + .string "DAC0_R12DH_DAC0_DH BITS(0,11)" +.LASF3358: + .string "__lock_release(lock) ((void) 0)" +.LASF3789: + .string "MASK_AMOMIN_W 0xf800707f" +.LASF183: + .string "__LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L" +.LASF763: + .string "BKP_TPCTL_TPAL BIT(1)" +.LASF1506: + .string "FMC_STAT_PGERR BIT(2)" +.LASF1619: + .string "GPIO_CTL0_MD0 BITS(0, 1)" +.LASF2924: + .string "TIMER_SLAVE_MODE_EXTERNAL0 SMCFG_SMC(7)" +.LASF2975: + .string "USART_CTL0_WM BIT(11)" +.LASF1993: + .string "FWDGT_CTL REG32((FWDGT) + 0x00000000U)" +.LASF2798: + .string "TIMER_DMACFG_DMATC_1TRANSFER DMACFG_DMATC(0)" +.LASF418: + .string "_UINTMAX_T_DECLARED " +.LASF1485: + .string "FMC FMC_BASE" +.LASF3986: + .string "MATCH_C_EBREAK 0x9002" +.LASF4254: + .string "CSR_HPMCOUNTER15H 0xc8f" +.LASF2786: + .string "TIMER_DMACFG_DMATA_CHCTL2 DMACFG_DMATA(8)" +.LASF1683: + .string "GPIO_BOP_BOP0 BIT(0)" +.LASF1940: + .string "I2C_STAT1_PECV BITS(8,15)" +.LASF3910: + .string "MATCH_FCVT_W_S 0xc0000053" +.LASF1923: + .string "I2C_STAT0_STPDET BIT(4)" +.LASF3276: + .string "__returns_twice __attribute__((__returns_twice__))" +.LASF902: + .string "CAN_TSTAT_MAL0 BIT(2)" +.LASF3627: + .string "PTE_W 0x004" +.LASF3998: + .string "MATCH_C_ADDI4SPN 0x0" +.LASF96: + .string "__INT8_MAX__ 0x7f" +.LASF3307: + .string "_Nullable " +.LASF1204: + .string "DAC_LFSR_BITS6_0 DAC_WAVE_BIT_WIDTH_7" +.LASF317: + .string "__riscv_zicsr 2000000" +.LASF2650: + .string "TIMER_DMAINTEN_TRGIE BIT(6)" +.LASF95: + .string "__SIG_ATOMIC_WIDTH__ 32" +.LASF699: + .string "ADC_OVERSAMPLING_SHIFT_7B OVSCR_OVSS(7)" +.LASF3686: + .string "MATCH_ORI 0x6013" +.LASF2307: + .string "RCU_PLL_MUL21 (PLLMF_4 | CFG0_PLLMF(4))" +.LASF2142: + .string "RCU_APB2RST_PBRST BIT(3)" +.LASF2654: + .string "TIMER_DMAINTEN_CH1DEN BIT(10)" +.LASF1675: + .string "GPIO_OCTL_OCTL8 BIT(8)" +.LASF4038: + .string "MATCH_C_J 0xa001" +.LASF997: + .string "CAN_REGIDX_BITS(regidx,bitpos0,bitpos1) (((uint32_t)(regidx) << 12) | ((uint32_t)(bitpos0) << 6) | (uint32_t)(bitpos1))" +.LASF1953: + .string "I2C_STAT0_REG_OFFSET 0x14U" +.LASF1715: + .string "GPIO_BC_CR0 BIT(0)" +.LASF3017: + .string "USART_PM_NONE CTL0_PM(0)" +.LASF4233: + .string "CSR_MHPMEVENT30 0x33e" +.LASF4207: + .string "CSR_MHPMEVENT4 0x324" +.LASF3766: + .string "MATCH_REM 0x2006033" +.LASF1034: + .string "GET_RFIFOMDATA1_DB6(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF1976: + .string "I2C_DMALST_OFF ((uint32_t)0x00000000U)" +.LASF4007: + .string "MASK_C_FSD 0xe003" +.LASF867: + .string "CAN_F24DATA1(canx) REG32((canx) + 0x304U)" +.LASF2706: + .string "TIMER_CHCTL1_CH3CAPFLT BITS(12,15)" +.LASF663: + .string "ADC_CHANNEL_3 ((uint8_t)0x03U)" +.LASF54: + .string "__UINT_LEAST16_TYPE__ short unsigned int" +.LASF3354: + .string "__lock_acquire(lock) ((void) 0)" +.LASF1351: + .string "EXMC_SNTCFG(region) REG32(EXMC + 0x04U + 0x08U * (region))" +.LASF190: + .string "__LDBL_HAS_QUIET_NAN__ 1" +.LASF2329: + .string "RCU_CKOUT0SRC_CKPLL_DIV2 CFG0_CKOUT0SEL(7)" +.LASF4181: + .string "CSR_MHPMCOUNTER9 0xb09" +.LASF3380: + .string "_REENT_CHECK_TM(ptr) " +.LASF4097: + .string "MASK_CUSTOM2_RD_RS1_RS2 0x707f" +.LASF3953: + .string "MASK_FMV_D_X 0xfff0707f" +.LASF4219: + .string "CSR_MHPMEVENT16 0x330" +.LASF1978: + .string "I2C_PEC_DISABLE ((uint32_t)0x00000000U)" +.LASF2054: + .string "PMU_CS_STBF BIT(1)" +.LASF2403: + .string "RCU_DEEPSLEEP_V_1_1 DSV_DSLPVS(1)" +.LASF4099: + .string "MASK_CUSTOM3 0x707f" +.LASF3978: + .string "MATCH_C_NOP 0x1" +.LASF2705: + .string "TIMER_CHCTL1_CH3CAPPSC BITS(10,11)" +.LASF1767: + .string "AFIO_EXTI1_SS BITS(4, 7)" +.LASF1774: + .string "AFIO_EXTI8_SS BITS(0, 3)" +.LASF4211: + .string "CSR_MHPMEVENT8 0x328" +.LASF4263: + .string "CSR_HPMCOUNTER24H 0xc98" +.LASF2806: + .string "TIMER_DMACFG_DMATC_9TRANSFER DMACFG_DMATC(8)" +.LASF4383: + .string "DMA1_Channel0_IRQn" +.LASF1802: + .string "GPIO_PORT_SOURCE_GPIOB ((uint8_t)0x01U)" +.LASF3086: + .string "_PTRDIFF_T_DECLARED " +.LASF3385: + .string "_REENT_SIGNGAM(ptr) ((ptr)->_new._reent._gamma_signgam)" +.LASF435: + .string "INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)" +.LASF964: + .string "CAN_TMDATA0_DB0 BITS(0,7)" +.LASF1469: + .string "EXTI_PD_PD4 BIT(4)" +.LASF2778: + .string "TIMER_DMACFG_DMATA_CTL0 DMACFG_DMATA(0)" +.LASF4122: + .string "CSR_HPMCOUNTER9 0xc09" +.LASF3693: + .string "MASK_SUB 0xfe00707f" +.LASF1206: + .string "DAC_LFSR_BITS8_0 DAC_WAVE_BIT_WIDTH_9" +.LASF2808: + .string "TIMER_DMACFG_DMATC_11TRANSFER DMACFG_DMATC(10)" +.LASF2956: + .string "USART_STAT_RBNE BIT(5)" +.LASF1560: + .string "OB_WP2_WP2 ((uint32_t)0x00FF0000U)" +.LASF215: + .string "__FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32" +.LASF3947: + .string "MASK_FCVT_D_WU 0xfff0007f" +.LASF857: + .string "CAN_F14DATA1(canx) REG32((canx) + 0x2B4U)" +.LASF2831: + .string "TIMER_COUNTER_UP ((uint16_t)0x0000U)" +.LASF4398: + .string "short unsigned int" +.LASF741: + .string "BKP_DATA29 REG16((BKP) + 0x8CU)" +.LASF4043: + .string "MASK_C_BNEZ 0xe003" +.LASF1322: + .string "DMA_MEMORY_TO_MEMORY_DISABLE ((uint32_t)0x00000000U)" +.LASF207: + .string "__FLT32_DIG__ 6" +.LASF900: + .string "CAN_TSTAT_MTF0 BIT(0)" +.LASF292: + .string "__GCC_ATOMIC_SHORT_LOCK_FREE 1" +.LASF1643: + .string "GPIO_CTL1_MD12 BITS(16, 17)" +.LASF1145: + .string "DAC_CTL_DTSEL0 BITS(3,5)" +.LASF2593: + .string "TIMER3 (TIMER_BASE + 0x00000800U)" +.LASF2791: + .string "TIMER_DMACFG_DMATA_CH0CV DMACFG_DMATA(13)" +.LASF3802: + .string "MATCH_AMOADD_D 0x302f" +.LASF3128: + .string "N200_TIMER_H " +.LASF1144: + .string "DAC_CTL_DTEN0 BIT(2)" +.LASF575: + .string "ADC_CTL1_ETSIC BITS(12,14)" +.LASF3130: + .string "TIMER_MSIP_size 0x4" +.LASF2050: + .string "PMU_CTL_LVDEN BIT(4)" +.LASF3073: + .string "WWDGT_CFG_PSC_DIV8 CFG_PSC(3)" +.LASF3571: + .string "MCONTROL_ACTION_TRACE_EMIT 4" +.LASF2918: + .string "TIMER_ENCODER_MODE0 SMCFG_SMC(1)" +.LASF3264: + .string "__alloc_size2(n,x) __attribute__((__alloc_size__(n, x)))" +.LASF3336: + .string "_WINT_T " +.LASF1862: + .string "GPIO_TIMER0_FULL_REMAP ((uint32_t)0x001600C0U)" +.LASF3647: + .string "clear_csr(reg,bit) ({ unsigned long __tmp; if (__builtin_constant_p(bit) && (unsigned long)(bit) < 32) asm volatile (\"csrrc %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"i\"(bit)); else asm volatile (\"csrrc %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"r\"(bit)); __tmp; })" +.LASF2748: + .string "TIMER_INT_FLAG_UP TIMER_INT_UP" +.LASF3685: + .string "MASK_SRAI 0xfc00707f" +.LASF1320: + .string "DMA_PRIORITY_HIGH CHCTL_PRIO(2U)" +.LASF1546: + .string "OB_DEEPSLEEP_NRST ((uint8_t)0x02U)" +.LASF298: + .string "__GCC_HAVE_DWARF2_CFI_ASM 1" +.LASF896: + .string "CAN_STAT_TS BIT(8)" +.LASF1863: + .string "GPIO_TIMER1_PARTIAL_REMAP0 ((uint32_t)0x00180100U)" +.LASF1455: + .string "EXTI_SWIEV_SWIEV9 BIT(9)" +.LASF1668: + .string "GPIO_OCTL_OCTL1 BIT(1)" +.LASF2188: + .string "RCU_APB2EN_USART0EN BIT(14)" +.LASF3830: + .string "MATCH_SRET 0x10200073" +.LASF4112: + .string "CSR_FCSR 0x3" +.LASF1736: + .string "GPIO_LOCK_LK5 BIT(5)" +.LASF717: + .string "BKP_DATA5 REG16((BKP) + 0x18U)" +.LASF611: + .string "ADC_DAUL_INSERTED_PARALLEL_REGULAL_FOLLOWUP_SLOW CTL0_SYNCM(4)" +.LASF1274: + .string "DMA_CHXCTL_MNAGA BIT(7)" +.LASF2491: + .string "SPI_CRCPOLY_CRCPOLY BITS(0,15)" +.LASF3317: + .string "__trylocks_exclusive(...) __lock_annotate(exclusive_trylock_function(__VA_ARGS__))" +.LASF2610: + .string "TIMER_CH0CV(timerx) REG32((timerx) + 0x34U)" +.LASF1900: + .string "I2C_CTL0_STOP BIT(9)" +.LASF398: + .string "__FAST32 " +.LASF1250: + .string "DMA_CH4MADDR(dmax) REG32((dmax) + 0x64U)" +.LASF1381: + .string "EXTI_INTEN_INTEN11 BIT(11)" +.LASF66: + .string "__UINTPTR_TYPE__ unsigned int" +.LASF729: + .string "BKP_DATA17 REG16((BKP) + 0x5CU)" +.LASF3391: + .string "_REENT_MP_RESULT_K(ptr) ((ptr)->_result_k)" +.LASF1705: + .string "GPIO_BOP_CR6 BIT(22)" +.LASF303: + .string "__riscv 1" +.LASF4408: + .string "D:\\\\rt-thread\\\\bsp\\\\gd32\\\\risc-v\\\\gd32vf103v-eval" +.LASF3535: + .string "DCSR_EBREAKS (1<<13)" +.LASF145: + .string "__FLT_MANT_DIG__ 24" +.LASF3213: + .string "__long_double_t long double" +.LASF467: + .string "UINT_FAST64_MAX (__UINT_FAST64_MAX__)" +.LASF2629: + .string "TIMER_CTL1_TI0S BIT(7)" +.LASF3010: + .string "CTL0_REN(regval) (BIT(2) & ((uint32_t)(regval) << 2))" +.LASF774: + .string "RTC_OUTPUT_SECOND_PULSE ((uint16_t)0x0200U)" +.LASF823: + .string "CAN_F8DATA0(canx) REG32((canx) + 0x280U)" +.LASF4053: + .string "MASK_C_MV 0xf003" +.LASF3198: + .string "_NOTHROW " +.LASF2999: + .string "USART_GP_GUAT BITS(8,15)" +.LASF2426: + .string "RTC_CTL_LWOFF BIT(5)" +.LASF1751: + .string "AFIO_PCF0_SPI0_REMAP BIT(0)" +.LASF1068: + .string "CAN_BT_BS1_12TQ ((uint8_t)0x0BU)" +.LASF656: + .string "ADC_INSERTED_CHANNEL_0 ((uint8_t)0x00U)" +.LASF3784: + .string "MATCH_AMOOR_W 0x4000202f" +.LASF1885: + .string "I2C_SADDR1(i2cx) REG32((i2cx) + 0x0CU)" +.LASF577: + .string "ADC_CTL1_ETSRC BITS(17,19)" +.LASF2858: + .string "TIMER_CH_2 ((uint16_t)0x0002U)" +.LASF1051: + .string "CAN_SILENT_MODE ((uint8_t)0x02U)" +.LASF3817: + .string "MASK_AMOMAXU_D 0xf800707f" +.LASF2568: + .string "SPI_I2S_INT_FLAG_TBE ((uint8_t)0x00U)" +.LASF2846: + .string "TIMER_BREAK_POLARITY_HIGH ((uint16_t)TIMER_CCHP_BRKP)" +.LASF2621: + .string "TIMER_CTL0_DIR BIT(4)" +.LASF184: + .string "__LDBL_NORM_MAX__ 1.18973149535723176508575932662800702e+4932L" +.LASF4329: + .string "CLIC_INT_SFT" +.LASF375: + .string "signed" +.LASF4342: + .string "EXTI3_IRQn" +.LASF974: + .string "CAN_RFIFOMI_EFID BITS(3,31)" +.LASF4103: + .string "MASK_CUSTOM3_RS1_RS2 0x707f" +.LASF2736: + .string "TIMER_CCHP_POEN BIT(15)" +.LASF2507: + .string "SPI_BIDIRECTIONAL_TRANSMIT SPI_CTL0_BDOEN" +.LASF552: + .string "ADC_STAT_EOC BIT(1)" +.LASF353: + .string "__GNU_VISIBLE 0" +.LASF2890: + .string "TIMER_IC_POLARITY_BOTH_EDGE ((uint16_t)0x000AU)" +.LASF2378: + .string "RCU_PLL1_MUL12 CFG1_PLL1MF(10)" +.LASF1638: + .string "GPIO_CTL1_CTL9 BITS(6, 7)" +.LASF1441: + .string "EXTI_FTEN_FTEN14 BIT(14)" +.LASF1543: + .string "WS_WSCNT_2 WS_WSCNT(2)" +.LASF2633: + .string "TIMER_CTL1_ISO1N BIT(11)" +.LASF1251: + .string "DMA_CH5CTL(dmax) REG32((dmax) + 0x6CU)" +.LASF2178: + .string "RCU_APB2EN_AFEN BIT(0)" +.LASF1272: + .string "DMA_CHXCTL_CMEN BIT(5)" +.LASF2185: + .string "RCU_APB2EN_ADC1EN BIT(10)" +.LASF3787: + .string "MASK_AMOAND_W 0xf800707f" +.LASF279: + .string "__FLT64X_HAS_INFINITY__ 1" +.LASF1180: + .string "DAC_TRIGGER_SOFTWARE CTL_DTSEL(7)" +.LASF1618: + .string "AFIO_PCF1 REG32(AFIO + 0x1CU)" +.LASF2349: + .string "RCU_PREDV0_DIV10 CFG1_PREDV0(9)" +.LASF2205: + .string "RCU_APB1EN_CAN1EN BIT(26)" +.LASF222: + .string "__FLT64_DIG__ 15" +.LASF3607: + .string "VM_SV48 10" +.LASF2788: + .string "TIMER_DMACFG_DMATA_PSC DMACFG_DMATA(10)" +.LASF3372: + .string "_REENT_ASCTIME_SIZE 26" +.LASF2845: + .string "TIMER_BREAK_POLARITY_LOW ((uint16_t)0x0000U)" +.LASF3841: + .string "MASK_WFI 0xffffffff" +.LASF3976: + .string "MATCH_FNMADD_D 0x200004f" +.LASF4: + .string "__STDC_HOSTED__ 1" +.LASF3917: + .string "MASK_FCVT_LU_S 0xfff0007f" +.LASF3548: + .string "DCSR_CAUSE_STEP 4" +.LASF1364: + .string "EXTI_INTEN REG32(EXTI + 0x00U)" +.LASF675: + .string "ADC_CHANNEL_15 ((uint8_t)0x0FU)" +.LASF401: + .string "__LEAST16 \"h\"" +.LASF1540: + .string "WS_WSCNT(regval) (BITS(0,2) & ((uint32_t)(regval)))" +.LASF4318: + .string "CAUSE_ILLEGAL_INSTRUCTION 0x2" +.LASF4297: + .string "CSR_MHPMCOUNTER27H 0xb9b" +.LASF1448: + .string "EXTI_SWIEV_SWIEV2 BIT(2)" +.LASF4270: + .string "CSR_HPMCOUNTER31H 0xc9f" +.LASF808: + .string "CAN_RFIFOMDATA01(canx) REG32((canx) + 0x1C8U)" +.LASF2676: + .string "TIMER_SWEVG_CMTG BIT(5)" +.LASF2153: + .string "RCU_APB1RST_TIMER3RST BIT(2)" +.LASF3989: + .string "MASK_C_LD 0xe003" +.LASF1247: + .string "DMA_CH4CTL(dmax) REG32((dmax) + 0x58U)" +.LASF2003: + .string "FWDGT_PSC_DIV4 ((uint8_t)PSC_PSC(0))" +.LASF1990: + .string "I2C_ADDFORMAT_10BITS I2C_SADDR0_ADDFORMAT" +.LASF1197: + .string "DAC_WAVE_BIT_WIDTH_12 DWBW(11)" +.LASF1624: + .string "GPIO_CTL0_CTL2 BITS(10, 11)" +.LASF3158: + .string "ECLIC_CFG_NLBITS_MASK _AC(0x1E,UL)" +.LASF2244: + .string "BDCTL_REG_OFFSET 0x20U" +.LASF1214: + .string "DAC_TRIANGLE_AMPLITUDE_1 DAC_WAVE_BIT_WIDTH_1" +.LASF1318: + .string "DMA_PRIORITY_LOW CHCTL_PRIO(0U)" +.LASF3029: + .string "USART_STB_2BIT CTL1_STB(2)" +.LASF3053: + .string "USART_CTS_ENABLE CLT2_CTSEN(1)" +.LASF2962: + .string "USART_BAUD_FRADIV BITS(0,3)" +.LASF2619: + .string "TIMER_CTL0_UPS BIT(2)" +.LASF1787: + .string "GPIO_MODE_IPD ((uint8_t)0x28U)" +.LASF475: + .string "PTRDIFF_MIN (-PTRDIFF_MAX - 1)" +.LASF2179: + .string "RCU_APB2EN_PAEN BIT(2)" +.LASF2169: + .string "RCU_APB1RST_PMURST BIT(28)" +.LASF4119: + .string "CSR_HPMCOUNTER6 0xc06" +.LASF3723: + .string "MASK_SLLW 0xfe00707f" +.LASF1354: + .string "EXMC_NOR_DATABUS_WIDTH_16B SNCTL_NRW(1)" +.LASF4251: + .string "CSR_HPMCOUNTER12H 0xc8c" +.LASF923: + .string "CAN_RFIFO0_RFF0 BIT(3)" +.LASF3677: + .string "MASK_SLTI 0x707f" +.LASF2031: + .string "DBG_CTL_TIMER3_HOLD BIT(13)" +.LASF4073: + .string "MASK_CUSTOM0_RD_RS1_RS2 0x707f" +.LASF849: + .string "CAN_F6DATA1(canx) REG32((canx) + 0x274U)" +.LASF1551: + .string "OB_USER_MASK ((uint8_t)0xF0U)" +.LASF1519: + .string "FMC_ADDR0_ADDR BITS(0,31)" +.LASF1824: + .string "GPIO_PIN_SOURCE_2 ((uint8_t)0x02U)" +.LASF549: + .string "ADC_RDATA(adcx) REG32((adcx) + 0x4CU)" +.LASF1677: + .string "GPIO_OCTL_OCTL10 BIT(10)" +.LASF3826: + .string "MATCH_EBREAK 0x100073" +.LASF2598: + .string "TIMER_CTL1(timerx) REG32((timerx) + 0x04U)" +.LASF2292: + .string "RCU_PLL_MUL6 CFG0_PLLMF(4)" +.LASF4165: + .string "CSR_MIP 0x344" +.LASF1894: + .string "I2C_CTL0_SMBSEL BIT(3)" +.LASF2752: + .string "TIMER_INT_FLAG_CH3 TIMER_INT_CH3" +.LASF1312: + .string "DMA_PERIPHERAL_WIDTH_32BIT CHCTL_PWIDTH(2U)" +.LASF2971: + .string "USART_CTL0_TBEIE BIT(7)" +.LASF2747: + .string "TIMER_INT_BRK TIMER_DMAINTEN_BRKIE" +.LASF1156: + .string "DAC_SWT_SWTR0 BIT(0)" +.LASF3449: + .string "__SLBF 0x0001" +.LASF2892: + .string "TIMER_IC_SELECTION_INDIRECTTI ((uint16_t)0x0002U)" +.LASF4198: + .string "CSR_MHPMCOUNTER26 0xb1a" +.LASF4304: + .string "CSR_MCOUNTINHIBIT 0x320" +.LASF887: + .string "CAN_CTL_ABOR BIT(6)" +.LASF26: + .string "__ORDER_LITTLE_ENDIAN__ 1234" +.LASF3239: + .string "__GNUCLIKE_BUILTIN_MEMCPY 1" +.LASF2470: + .string "SPI_CTL0_CRCEN BIT(13)" +.LASF3541: + .string "DCSR_HALT (1<<3)" +.LASF1123: + .string "CRC_FDATA_FDATA BITS(0, 7)" +.LASF3961: + .string "MASK_FSD 0x707f" +.LASF4004: + .string "MATCH_C_FLW 0x6000" +.LASF3291: + .string "__strftimelike(fmtarg,firstvararg) __attribute__((__format__ (__strftime__, fmtarg, firstvararg)))" +.LASF983: + .string "CAN_RFIFOMDATA1_DB4 BITS(0,7)" +.LASF818: + .string "CAN_F3DATA0(canx) REG32((canx) + 0x258U)" +.LASF3821: + .string "MASK_LR_D 0xf9f0707f" +.LASF1348: + .string "EXMC_SNTCFG_DSET BITS(8,15)" +.LASF1474: + .string "EXTI_PD_PD9 BIT(9)" +.LASF4402: + .string "long long unsigned int" +.LASF2044: + .string "PMU_CTL REG32((PMU) + 0x00U)" +.LASF2264: + .string "RCU_AHB_CKSYS_DIV256 CFG0_AHBPSC(14)" +.LASF2615: + .string "TIMER_DMACFG(timerx) REG32((timerx) + 0x48U)" +.LASF171: + .string "__DBL_DENORM_MIN__ ((double)4.94065645841246544176568792868221372e-324L)" +.LASF986: + .string "CAN_RFIFOMDATA1_DB7 BITS(24,31)" +.LASF1313: + .string "CHCTL_MWIDTH(regval) (BITS(10,11) & ((uint32_t)(regval) << 10))" +.LASF856: + .string "CAN_F13DATA1(canx) REG32((canx) + 0x2ACU)" +.LASF4204: + .string "CSR_MUCOUNTEREN 0x320" +.LASF1119: + .string "CRC_DATA REG32(CRC + 0x00U)" +.LASF3875: + .string "MASK_FADD_D 0xfe00007f" +.LASF473: + .string "SIG_ATOMIC_MAX (__STDINT_EXP(INT_MAX))" +.LASF2075: + .string "GD32VF103_RCU_H " +.LASF784: + .string "CAN_TSTAT(canx) REG32((canx) + 0x08U)" +.LASF2275: + .string "RCU_APB2_CKAHB_DIV4 CFG0_APB2PSC(5)" +.LASF1518: + .string "FMC_CTL_ENDIE BIT(12)" +.LASF1398: + .string "EXTI_EVEN_EVEN9 BIT(9)" +.LASF1280: + .string "DMA_CHXPADDR_PADDR BITS(0,31)" +.LASF3516: + .string "MSTATUS_MXR 0x00080000" +.LASF899: + .string "CAN_STAT_RXL BIT(11)" +.LASF3805: + .string "MASK_AMOXOR_D 0xf800707f" +.LASF1539: + .string "UNLOCK_KEY1 ((uint32_t)0xCDEF89ABU)" +.LASF1970: + .string "I2C_GCEN_DISABLE ((uint32_t)0x00000000U)" +.LASF3452: + .string "__SWR 0x0008" +.LASF2934: + .string "TIMER_HALLINTERFACE_ENABLE TIMER_CTL1_TI0S" +.LASF3624: + .string "DRAM_BASE 0x80000000" +.LASF4036: + .string "MATCH_C_ADDW 0x9c21" +.LASF940: + .string "CAN_INTEN_ERRNIE BIT(11)" +.LASF3979: + .string "MASK_C_NOP 0xffff" +.LASF3943: + .string "MASK_FMV_S_X 0xfff0707f" +.LASF4396: + .string "unsigned char" +.LASF1406: + .string "EXTI_EVEN_EVEN17 BIT(17)" +.LASF3028: + .string "USART_STB_0_5BIT CTL1_STB(1)" +.LASF2662: + .string "TIMER_INTF_CH2IF BIT(3)" +.LASF2514: + .string "SPI_FRAMESIZE_8BIT ((uint32_t)0x00000000U)" +.LASF248: + .string "__FLT128_HAS_DENORM__ 1" +.LASF4172: + .string "CSR_DSCRATCH 0x7b2" +.LASF3611: + .string "IRQ_S_TIMER 5" +.LASF1088: + .string "CAN_FIFO1 ((uint8_t)0x01U)" +.LASF2749: + .string "TIMER_INT_FLAG_CH0 TIMER_INT_CH0" +.LASF2837: + .string "TIMER_SP_MODE_SINGLE TIMER_CTL0_SPM" +.LASF3173: + .string "_WANT_IO_LONG_LONG 1" +.LASF4208: + .string "CSR_MHPMEVENT5 0x325" +.LASF786: + .string "CAN_RFIFO1(canx) REG32((canx) + 0x10U)" +.LASF3395: + .string "_REENT_TM(ptr) (&(ptr)->_new._reent._localtime_buf)" +.LASF1972: + .string "I2C_SRESET_RESET ((uint32_t)0x00000000U)" +.LASF3716: + .string "MATCH_SRAIW 0x4000501b" +.LASF3346: + .string "__Long long" +.LASF2095: + .string "RCU_CTL_HXTALSTB BIT(17)" +.LASF1699: + .string "GPIO_BOP_CR0 BIT(16)" +.LASF1647: + .string "GPIO_CTL1_MD14 BITS(24, 25)" +.LASF2714: + .string "TIMER_CHCTL2_CH1NP BIT(7)" +.LASF1660: + .string "GPIO_ISTAT_ISTAT9 BIT(9)" +.LASF1952: + .string "I2C_CTL1_REG_OFFSET 0x04U" +.LASF2759: + .string "TIMER_FLAG_CH2 TIMER_INTF_CH2IF" +.LASF2921: + .string "TIMER_SLAVE_MODE_RESTART SMCFG_SMC(4)" +.LASF4199: + .string "CSR_MHPMCOUNTER27 0xb1b" +.LASF2579: + .string "SPI_FLAG_RXORERR SPI_STAT_RXORERR" +.LASF2295: + .string "RCU_PLL_MUL9 CFG0_PLLMF(7)" +.LASF705: + .string "ADC_OVERSAMPLING_RATIO_MUL16 OVSCR_OVSR(3)" +.LASF1931: + .string "I2C_STAT0_SMBTO BIT(14)" +.LASF1696: + .string "GPIO_BOP_BOP13 BIT(13)" +.LASF1224: + .string "DAC_TRIANGLE_AMPLITUDE_2047 DAC_WAVE_BIT_WIDTH_11" +.LASF3707: + .string "MASK_OR 0xfe00707f" +.LASF2864: + .string "TIMER_OC_POLARITY_HIGH ((uint16_t)0x0000U)" +.LASF3464: + .string "__SNLK 0x0001" +.LASF1712: + .string "GPIO_BOP_CR13 BIT(29)" +.LASF4155: + .string "CSR_MISA 0x301" +.LASF3223: + .string "__BEGIN_DECLS " +.LASF3377: + .ascii "_REENT_INIT_PTR_ZEROED(var) { (var)->_stdin = _REENT_STDIO_S" + .ascii "TREAM(var, 0); (var)->_stdout = _REENT_STDIO_STREAM(var, 1);" + .ascii " (var)->_stderr = _REENT_STDIO_STREAM(var, 2); (var)->_new._" + .ascii "reent._rand_next = 1; (var)->_new._reent._r48._seed[0] = _RA" + .ascii "ND48_SEED_0; (var)->_new._reent._r48._seed[1] = _RAND48_S" + .string "EED_1; (var)->_new._reent._r48._seed[2] = _RAND48_SEED_2; (var)->_new._reent._r48._mult[0] = _RAND48_MULT_0; (var)->_new._reent._r48._mult[1] = _RAND48_MULT_1; (var)->_new._reent._r48._mult[2] = _RAND48_MULT_2; (var)->_new._reent._r48._add = _RAND48_ADD; }" +.LASF2125: + .string "RCU_INT_IRC40KSTBIE BIT(8)" +.LASF1461: + .string "EXTI_SWIEV_SWIEV15 BIT(15)" +.LASF1735: + .string "GPIO_LOCK_LK4 BIT(4)" +.LASF1816: + .string "GPIO_EVENT_PIN_10 ((uint8_t)0x0AU)" +.LASF463: + .string "INT_FAST32_MAX (__INT_FAST32_MAX__)" +.LASF2709: + .string "TIMER_CHCTL2_CH0NEN BIT(2)" +.LASF3205: + .string "__need_size_t " +.LASF1998: + .string "FWDGT_PSC_PSC BITS(0,2)" +.LASF3721: + .string "MASK_SUBW 0xfe00707f" +.LASF4068: + .string "MATCH_CUSTOM0_RD 0x400b" +.LASF3421: + .string "__time_t_defined " +.LASF2586: + .string "I2S_FLAG_RXORERR SPI_STAT_RXORERR" +.LASF3886: + .string "MATCH_FSGNJX_D 0x22002053" +.LASF2693: + .string "TIMER_CHCTL1_CH2MS BITS(0,1)" +.LASF1981: + .string "I2C_SALTSEND_ENABLE I2C_CTL0_SALT" +.LASF1026: + .string "GET_RFIFOMP_DLENC(regval) GET_BITS((uint32_t)(regval), 0U, 3U)" +.LASF2543: + .string "I2S_FRAMEFORMAT_DT16B_CH32B (I2SCTL_DTLEN(0) | SPI_I2SCTL_CHLEN)" +.LASF2469: + .string "SPI_CTL0_CRCNT BIT(12)" +.LASF1846: + .string "GPIO_PIN_8 BIT(8)" +.LASF2903: + .string "TIMER_SMCFG_TRGSEL_CI0F_ED SMCFG_TRGSEL(4)" +.LASF3963: + .string "MASK_FMADD_S 0x600007f" +.LASF527: + .string "GD32VF103_ADC_H " +.LASF265: + .string "__FLT32X_HAS_QUIET_NAN__ 1" +.LASF841: + .string "CAN_F26DATA0(canx) REG32((canx) + 0x310U)" +.LASF347: + .string "__NEWLIB_MINOR__ 1" +.LASF1284: + .string "DMA_CHCNT(dma,channel) REG32(((dma) + 0x0CU) + 0x14U * (uint32_t)(channel))" +.LASF981: + .string "CAN_RFIFOMDATA0_DB2 BITS(16,23)" +.LASF2332: + .string "RCU_CKOUT0SRC_EXT1 CFG0_CKOUT0SEL(10)" +.LASF1391: + .string "EXTI_EVEN_EVEN2 BIT(2)" +.LASF186: + .string "__LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L" +.LASF578: + .string "ADC_CTL1_ETERC BIT(20)" +.LASF402: + .string "__LEAST32 \"l\"" +.LASF581: + .string "ADC_CTL1_TSVREN BIT(23)" +.LASF1507: + .string "FMC_STAT_WPERR BIT(4)" +.LASF3255: + .string "__weak_symbol __attribute__((__weak__))" +.LASF271: + .string "__FLT64X_MAX_10_EXP__ 4932" +.LASF1368: + .string "EXTI_SWIEV REG32(EXTI + 0x10U)" +.LASF1509: + .string "FMC_CTL_PG BIT(0)" +.LASF2762: + .string "TIMER_FLAG_TRG TIMER_INTF_TRGIF" +.LASF3777: + .string "MASK_REMW 0xfe00707f" +.LASF3625: + .string "PTE_V 0x001" +.LASF1409: + .string "EXTI_RTEN_RTEN1 BIT(1)" +.LASF1038: + .string "GET_ERR_RECNT(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF2513: + .string "SPI_FRAMESIZE_16BIT SPI_CTL0_FF16" +.LASF285: + .string "__CHAR_UNSIGNED__ 1" +.LASF596: + .string "ADC_OVSCR_TOVS BIT(9)" +.LASF2732: + .string "TIMER_CCHP_ROS BIT(11)" +.LASF1642: + .string "GPIO_CTL1_CTL11 BITS(14, 15)" +.LASF1968: + .string "I2C_SCLSTRETCH_DISABLE I2C_CTL0_SS" +.LASF3928: + .string "MATCH_FCVT_LU_D 0xc2300053" +.LASF893: + .string "CAN_STAT_ERRIF BIT(2)" +.LASF3768: + .string "MATCH_REMU 0x2007033" +.LASF1349: + .string "EXMC_SNTCFG_BUSLAT BITS(16,19)" +.LASF1314: + .string "DMA_MEMORY_WIDTH_8BIT CHCTL_MWIDTH(0U)" +.LASF3332: + .string "__GNUC_VA_LIST " +.LASF2226: + .string "RCU_CFG1_PREDV1 BITS(4,7)" +.LASF123: + .string "__UINT64_C(c) c ## ULL" +.LASF3126: + .string "offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)" +.LASF2694: + .string "TIMER_CHCTL1_CH2COMFEN BIT(2)" +.LASF3133: + .string "TIMER_MTIME 0x0" +.LASF4026: + .string "MATCH_C_SUB 0x8c01" +.LASF1607: + .string "GPIO_ISTAT(gpiox) REG32((gpiox) + 0x08U)" +.LASF486: + .string "INT64_C(x) __INT64_C(x)" +.LASF2991: + .string "USART_CTL2_NKEN BIT(4)" +.LASF971: + .string "CAN_TMDATA1_DB7 BITS(24,31)" +.LASF169: + .string "__DBL_MIN__ ((double)2.22507385850720138309023271733240406e-308L)" +.LASF2873: + .string "TIMER_OC_MODE_ACTIVE ((uint16_t)0x0010U)" +.LASF1294: + .string "DMA_INT_FLAG_HTF DMA_INTF_HTFIF" +.LASF4022: + .string "MATCH_C_SRAI 0x8401" +.LASF831: + .string "CAN_F16DATA0(canx) REG32((canx) + 0x2C0U)" +.LASF299: + .string "__PRAGMA_REDEFINE_EXTNAME 1" +.LASF655: + .string "ADC_CHANNEL_DISCON_DISABLE ((uint8_t)0x04U)" +.LASF4298: + .string "CSR_MHPMCOUNTER28H 0xb9c" +.LASF520: + .string "DMA_BASE (AHB1_BUS_BASE + 0x00008000U)" +.LASF1118: + .string "CRC CRC_BASE" +.LASF1394: + .string "EXTI_EVEN_EVEN5 BIT(5)" +.LASF848: + .string "CAN_F5DATA1(canx) REG32((canx) + 0x26CU)" +.LASF2973: + .string "USART_CTL0_PM BIT(9)" +.LASF1639: + .string "GPIO_CTL1_MD10 BITS(8, 9)" +.LASF3726: + .string "MATCH_SRAW 0x4000503b" +.LASF559: + .string "ADC_CTL0_EOICIE BIT(7)" +.LASF4389: + .string "CAN1_RX0_IRQn" +.LASF3490: + .string "__sfileno(p) ((p)->_file)" +.LASF3574: + .string "MCONTROL_MATCH_GE 2" +.LASF875: + .string "CAN_FDATA0(canx,bank) REG32((canx) + 0x240U + ((bank) * 0x8U) + 0x0U)" +.LASF4095: + .string "MASK_CUSTOM2_RD_RS1 0x707f" +.LASF914: + .string "CAN_TSTAT_MST2 BIT(23)" +.LASF3094: + .string "__SIZE_T " +.LASF4091: + .string "MASK_CUSTOM2_RS1_RS2 0x707f" +.LASF4169: + .string "CSR_TDATA3 0x7a3" +.LASF2486: + .string "SPI_STAT_CONFERR BIT(5)" +.LASF3272: + .string "__nonnull(x) __attribute__((__nonnull__ x))" +.LASF3703: + .string "MASK_SRL 0xfe00707f" +.LASF1873: + .string "GPIO_CAN1_REMAP ((uint32_t)0x00200040U)" +.LASF2316: + .string "RCU_PLL_MUL30 (PLLMF_4 | CFG0_PLLMF(13))" +.LASF4339: + .string "EXTI0_IRQn" +.LASF348: + .string "__NEWLIB_PATCHLEVEL__ 0" +.LASF3154: + .string "ECLIC_INT_ATTR_TRIG_POS 0x00" +.LASF1741: + .string "GPIO_LOCK_LK10 BIT(10)" +.LASF1839: + .string "GPIO_PIN_1 BIT(1)" +.LASF3222: + .string "__has_feature(x) 0" +.LASF344: + .string "_NEWLIB_VERSION_H__ 1" +.LASF1345: + .string "EXMC_SNCTL_ASYNCWAIT BIT(15)" +.LASF1620: + .string "GPIO_CTL0_CTL0 BITS(2, 3)" +.LASF1963: + .string "I2C_ACKPOS_NEXT ((uint32_t)0x00000000U)" +.LASF3171: + .string "__NEWLIB_H__ 1" +.LASF1100: + .string "CAN_FT_DATA ((uint32_t)0x00000000U)" +.LASF1835: + .string "GPIO_PIN_SOURCE_13 ((uint8_t)0x0DU)" +.LASF3488: + .string "__sferror(p) ((int)(((p)->_flags & __SERR) != 0))" +.LASF493: + .string "BIT(x) ((uint32_t)((uint32_t)0x01U<<(x)))" +.LASF3246: + .string "__CC_SUPPORTS_DYNAMIC_ARRAY_INIT 1" +.LASF291: + .string "__GCC_ATOMIC_WCHAR_T_LOCK_FREE 2" +.LASF2671: + .string "TIMER_SWEVG_UPG BIT(0)" +.LASF2099: + .string "RCU_CTL_PLLSTB BIT(25)" +.LASF2595: + .string "TIMER5 (TIMER_BASE + 0x00001000U)" +.LASF2957: + .string "USART_STAT_TC BIT(6)" +.LASF3975: + .string "MASK_FNMSUB_D 0x600007f" +.LASF1487: + .string "FMC_WS REG32((FMC) + 0x00U)" +.LASF2740: + .string "TIMER_INT_UP TIMER_DMAINTEN_UPIE" +.LASF3051: + .string "USART_RTS_DISABLE CLT2_RTSEN(0)" +.LASF2572: + .string "SPI_INT_FLAG_CRCERR ((uint8_t)0x04U)" +.LASF3988: + .string "MATCH_C_LD 0x6000" +.LASF1836: + .string "GPIO_PIN_SOURCE_14 ((uint8_t)0x0EU)" +.LASF1135: + .string "DAC1_L12DH REG32(DAC + 0x18U)" +.LASF2299: + .string "RCU_PLL_MUL13 CFG0_PLLMF(11)" +.LASF60: + .string "__INT_FAST64_TYPE__ long long int" +.LASF1149: + .string "DAC_CTL_DEN1 BIT(16)" +.LASF2651: + .string "TIMER_DMAINTEN_BRKIE BIT(7)" +.LASF2478: + .string "SPI_CTL1_ERRIE BIT(5)" +.LASF2933: + .string "TIMER_ETP_RISING ((uint32_t)0x00000000U)" +.LASF908: + .string "CAN_TSTAT_MTE1 BIT(11)" +.LASF197: + .string "__FLT16_DECIMAL_DIG__ 5" +.LASF498: + .string "OB_BASE ((uint32_t)0x1FFFF800U)" +.LASF1547: + .string "OB_DEEPSLEEP_RST ((uint8_t)0x00U)" +.LASF1615: + .string "AFIO_EXTISS1 REG32(AFIO + 0x0CU)" +.LASF2256: + .string "CFG0_AHBPSC(regval) (BITS(4,7) & ((uint32_t)(regval) << 4))" +.LASF247: + .string "__FLT128_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F128" +.LASF863: + .string "CAN_F20DATA1(canx) REG32((canx) + 0x2E4U)" +.LASF3367: + .string "_RAND48_MULT_0 (0xe66d)" +.LASF2979: + .string "USART_CTL1_LBLEN BIT(5)" +.LASF3728: + .string "MATCH_LB 0x3" +.LASF2073: + .string "WFI_CMD ((uint8_t)0x00U)" +.LASF2105: + .string "RCU_CFG0_SCSS BITS(2,3)" +.LASF22: + .string "__SIZEOF_LONG_DOUBLE__ 16" +.LASF21: + .string "__SIZEOF_DOUBLE__ 8" +.LASF149: + .string "__FLT_MAX_EXP__ 128" +.LASF815: + .string "CAN_F0DATA0(canx) REG32((canx) + 0x240U)" +.LASF2636: + .string "TIMER_CTL1_ISO3 BIT(14)" +.LASF619: + .string "ADC_CONTINUOUS_MODE ADC_CTL1_CTN" +.LASF3520: + .string "SSTATUS_UIE 0x00000001" +.LASF2371: + .string "RCU_PREDV1_DIV15 CFG1_PREDV1(14)" +.LASF1917: + .string "I2C_SADDR1_ADDRESS2 BITS(1,7)" +.LASF2504: + .string "SPI_I2SPSC_MCKOEN BIT(9)" +.LASF144: + .string "__FLT_RADIX__ 2" +.LASF1831: + .string "GPIO_PIN_SOURCE_9 ((uint8_t)0x09U)" +.LASF3348: + .string "__LOCK_INIT(class,lock) static int lock = 0;" +.LASF3929: + .string "MASK_FCVT_LU_D 0xfff0007f" +.LASF2884: + .string "TIMER_OC_CLEAR_ENABLE ((uint16_t)0x0080U)" +.LASF1962: + .string "I2C_ACK_ENABLE ((uint32_t)0x00000001U)" +.LASF1813: + .string "GPIO_EVENT_PIN_7 ((uint8_t)0x07U)" +.LASF2193: + .string "RCU_APB1EN_TIMER5EN BIT(4)" +.LASF966: + .string "CAN_TMDATA0_DB2 BITS(16,23)" +.LASF731: + .string "BKP_DATA19 REG16((BKP) + 0x64U)" +.LASF111: + .string "__INT32_C(c) c ## L" +.LASF934: + .string "CAN_INTEN_RFNEIE1 BIT(4)" +.LASF2098: + .string "RCU_CTL_PLLEN BIT(24)" +.LASF3764: + .string "MATCH_DIVU 0x2005033" +.LASF1342: + .string "EXMC_SNCTL_NRWTPOL BIT(9)" +.LASF4407: + .string "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\env_Eclipse\\init.c" +.LASF1946: + .string "I2C_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF1269: + .string "DMA_CHXCTL_HTFIE BIT(2)" +.LASF2790: + .string "TIMER_DMACFG_DMATA_CREP DMACFG_DMATA(12)" +.LASF518: + .string "GPIO_BASE (APB2_BUS_BASE + 0x00000800U)" +.LASF2905: + .string "TIMER_SMCFG_TRGSEL_CI1FE1 SMCFG_TRGSEL(6)" +.LASF3503: + .string "MSTATUS_SIE 0x00000002" +.LASF1528: + .string "FMC_REG_VAL(offset) (REG32(FMC + ((uint32_t)(offset) >> 6)))" +.LASF82: + .string "__LONG_WIDTH__ 32" +.LASF2863: + .string "TIMER_CCXN_DISABLE ((uint16_t)0x0000U)" +.LASF737: + .string "BKP_DATA25 REG16((BKP) + 0x7CU)" +.LASF2646: + .string "TIMER_DMAINTEN_CH1IE BIT(2)" +.LASF4148: + .string "CSR_SSCRATCH 0x140" +.LASF3186: + .string "__IEEE_LITTLE_ENDIAN " +.LASF2233: + .string "RCU_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF869: + .string "CAN_F26DATA1(canx) REG32((canx) + 0x314U)" +.LASF14: + .string "__ATOMIC_CONSUME 1" +.LASF3735: + .string "MASK_LD 0x707f" +.LASF2326: + .string "RCU_CKOUT0SRC_CKSYS CFG0_CKOUT0SEL(4)" +.LASF3150: + .string "ECLIC_INT_ATTR_OFFSET _AC(0x1002,UL)" +.LASF4009: + .string "MASK_C_SW 0xe003" +.LASF216: + .string "__FLT32_EPSILON__ 1.19209289550781250000000000000000000e-7F32" +.LASF2794: + .string "TIMER_DMACFG_DMATA_CH3CV DMACFG_DMATA(16)" +.LASF341: + .string "_STDINT_H " +.LASF1430: + .string "EXTI_FTEN_FTEN3 BIT(3)" +.LASF419: + .string "_INTPTR_T_DECLARED " +.LASF1125: + .string "GD32VF103_DAC_H " +.LASF2843: + .string "TIMER_IOS_STATE_ENABLE ((uint16_t)TIMER_CCHP_IOS)" +.LASF1884: + .string "I2C_SADDR0(i2cx) REG32((i2cx) + 0x08U)" +.LASF1024: + .string "GET_RFIFOMI_EFID(regval) GET_BITS((uint32_t)(regval), 3U, 31U)" +.LASF2111: + .string "RCU_CFG0_PREDV0_LSB BIT(17)" +.LASF4065: + .string "MASK_CUSTOM0_RS1 0x707f" +.LASF354: + .string "__ISO_C_VISIBLE 2011" +.LASF4371: + .string "USART1_IRQn" +.LASF2382: + .string "RCU_PLL1_MUL16 CFG1_PLL1MF(14)" +.LASF1032: + .string "GET_RFIFOMDATA1_DB4(regval) GET_BITS((uint32_t)(regval), 0U, 7U)" +.LASF3971: + .string "MASK_FMADD_D 0x600007f" +.LASF2648: + .string "TIMER_DMAINTEN_CH3IE BIT(4)" +.LASF3645: + .string "swap_csr(reg,val) ({ unsigned long __tmp; if (__builtin_constant_p(val) && (unsigned long)(val) < 32) asm volatile (\"csrrw %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"i\"(val)); else asm volatile (\"csrrw %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"r\"(val)); __tmp; })" +.LASF3887: + .string "MASK_FSGNJX_D 0xfe00707f" +.LASF3508: + .string "MSTATUS_HPIE 0x00000040" +.LASF3227: + .string "__GNUCLIKE___TYPEOF 1" +.LASF2801: + .string "TIMER_DMACFG_DMATC_4TRANSFER DMACFG_DMATC(3)" +.LASF2374: + .string "RCU_PLL1_MUL8 CFG1_PLL1MF(6)" +.LASF3026: + .string "CTL1_STB(regval) (BITS(12,13) & ((uint32_t)(regval) << 12))" +.LASF3256: + .string "__dead2 __attribute__((__noreturn__))" +.LASF2780: + .string "TIMER_DMACFG_DMATA_SMCFG DMACFG_DMATA(2)" +.LASF1479: + .string "EXTI_PD_PD14 BIT(14)" +.LASF1213: + .string "DAC_ALIGN_8B_R DATA_ALIGN(2)" +.LASF2187: + .string "RCU_APB2EN_SPI0EN BIT(12)" +.LASF2968: + .string "USART_CTL0_IDLEIE BIT(4)" +.LASF2416: + .string "RTC_ALRMH REG32(RTC + 0x20U)" +.LASF1167: + .string "DACC_L12DH_DAC1_DH BITS(20,31)" +.LASF962: + .string "CAN_TMP_TSEN BIT(8)" +.LASF3818: + .string "MATCH_AMOSWAP_D 0x800302f" +.LASF178: + .string "__LDBL_MIN_10_EXP__ (-4931)" +.LASF13: + .string "__ATOMIC_ACQ_REL 4" +.LASF3157: + .string "ECLIC_ADDR_BASE 0xd2000000" +.LASF3858: + .string "MATCH_FMUL_S 0x10000053" +.LASF1982: + .string "I2C_SALTSEND_DISABLE ((uint32_t)0x00000000U)" +.LASF2519: + .string "SPI_CK_PL_LOW_PH_1EDGE ((uint32_t)0x00000000U)" +.LASF4016: + .string "MATCH_C_LI 0x4001" +.LASF4238: + .string "CSR_MHARTID 0xf14" +.LASF213: + .string "__FLT32_MAX__ 3.40282346638528859811704183484516925e+38F32" +.LASF2377: + .string "RCU_PLL1_MUL11 CFG1_PLL1MF(9)" +.LASF725: + .string "BKP_DATA13 REG16((BKP) + 0x4CU)" +.LASF1878: + .string "GPIO_EXMC_NADV_REMAP ((uint32_t)0x80000400U)" +.LASF730: + .string "BKP_DATA18 REG16((BKP) + 0x60U)" +.LASF1008: + .string "BT_BS2(regval) (BITS(20,22) & ((uint32_t)(regval) << 20))" +.LASF2815: + .string "TIMER_DMACFG_DMATC_18TRANSFER DMACFG_DMATC(17)" +.LASF4286: + .string "CSR_MHPMCOUNTER16H 0xb90" +.LASF692: + .string "ADC_OVERSAMPLING_SHIFT_NONE OVSCR_OVSS(0)" +.LASF1992: + .string "FWDGT FWDGT_BASE" +.LASF1422: + .string "EXTI_RTEN_RTEN14 BIT(14)" +.LASF3278: + .string "__restrict restrict" +.LASF116: + .string "__UINT_LEAST8_MAX__ 0xff" +.LASF1682: + .string "GPIO_OCTL_OCTL15 BIT(15)" +.LASF1933: + .string "I2C_STAT1_MASTER BIT(0)" +.LASF3059: + .string "WWDGT WWDGT_BASE" +.LASF4243: + .string "CSR_HPMCOUNTER4H 0xc84" +.LASF3001: + .string "USART_REG_VAL(usartx,offset) (REG32((usartx) + (((uint32_t)(offset) & (0x0000FFFFU)) >> 6)))" +.LASF2321: + .string "RCU_CKUSB_CKPLL_DIV1 CFG0_USBPSC(1)" +.LASF474: + .string "PTRDIFF_MAX (__PTRDIFF_MAX__)" +.LASF930: + .string "CAN_INTEN_TMEIE BIT(0)" +.LASF1270: + .string "DMA_CHXCTL_ERRIE BIT(3)" +.LASF2419: + .string "RTC_INTEN_ALRMIE BIT(1)" +.LASF2902: + .string "TIMER_SMCFG_TRGSEL_ITI3 SMCFG_TRGSEL(3)" +.LASF3524: + .string "SSTATUS_SPP 0x00000100" +.LASF2338: + .string "RCU_RTCSRC_HXTAL_DIV_128 BDCTL_RTCSRC(3)" +.LASF3609: + .string "IRQ_H_SOFT 2" +.LASF4115: + .string "CSR_INSTRET 0xc02" +.LASF4048: + .string "MATCH_C_LWSP 0x4002" +.LASF2145: + .string "RCU_APB2RST_PERST BIT(6)" +.LASF4030: + .string "MATCH_C_OR 0x8c41" +.LASF256: + .string "__FLT32X_MAX_10_EXP__ 308" +.LASF3324: + .string "__requires_unlocked(...) __lock_annotate(locks_excluded(__VA_ARGS__))" +.LASF1848: + .string "GPIO_PIN_10 BIT(10)" +.LASF876: + .string "CAN_FDATA1(canx,bank) REG32((canx) + 0x240U + ((bank) * 0x8U) + 0x4U)" +.LASF4100: + .string "MATCH_CUSTOM3_RS1 0x207b" +.LASF803: + .string "CAN_RFIFOMP0(canx) REG32((canx) + 0x1B4U)" +.LASF2167: + .string "RCU_APB1RST_CAN1RST BIT(26)" +.LASF4385: + .string "DMA1_Channel2_IRQn" +.LASF4261: + .string "CSR_HPMCOUNTER22H 0xc96" +.LASF2923: + .string "TIMER_SLAVE_MODE_EVENT SMCFG_SMC(6)" +.LASF3848: + .string "MATCH_CSRRWI 0x5073" +.LASF3843: + .string "MASK_CSRRW 0x707f" +.LASF793: + .string "CAN_TMDATA10(canx) REG32((canx) + 0x18CU)" +.LASF162: + .string "__DBL_MIN_EXP__ (-1021)" +.LASF482: + .string "INT16_C(x) __INT16_C(x)" +.LASF10: + .string "__ATOMIC_SEQ_CST 5" +.LASF1646: + .string "GPIO_CTL1_CTL13 BITS(22, 23)" +.LASF4066: + .string "MATCH_CUSTOM0_RS1_RS2 0x300b" +.LASF3718: + .string "MATCH_ADDW 0x3b" +.LASF1871: + .string "GPIO_PD01_REMAP ((uint32_t)0x00008000U)" +.LASF2087: + .string "RCU_AHBRST REG32(RCU + 0x28U)" +.LASF928: + .string "CAN_RFIFO1_RFO1 BIT(4)" +.LASF1604: + .string "AFIO AFIO_BASE" +.LASF4174: + .string "CSR_MINSTRET 0xb02" +.LASF1355: + .string "SNCTL_NRTP(regval) (BITS(2,3) & ((uint32_t)(regval) << 2))" +.LASF843: + .string "CAN_F0DATA1(canx) REG32((canx) + 0x244U)" +.LASF1719: + .string "GPIO_BC_CR4 BIT(4)" +.LASF1221: + .string "DAC_TRIANGLE_AMPLITUDE_255 DAC_WAVE_BIT_WIDTH_8" +.LASF2630: + .string "TIMER_CTL1_ISO0 BIT(8)" +.LASF3261: + .string "__aligned(x) __attribute__((__aligned__(x)))" +.LASF3116: + .string "_WCHAR_T_H " +.LASF3588: + .string "MIE_HSIE MIP_HSIP" +.LASF2032: + .string "DBG_CTL_CAN0_HOLD BIT(14)" +.LASF2489: + .string "SPI_STAT_FERR BIT(8)" +.LASF3803: + .string "MASK_AMOADD_D 0xf800707f" +.LASF4282: + .string "CSR_MHPMCOUNTER12H 0xb8c" +.LASF4173: + .string "CSR_MCYCLE 0xb00" +.LASF2919: + .string "TIMER_ENCODER_MODE1 SMCFG_SMC(2)" +.LASF250: + .string "__FLT128_HAS_QUIET_NAN__ 1" +.LASF2887: + .string "TIMER_UPDATECTL_CCUTRI TIMER_CTL1_CCUC" +.LASF544: + .string "ADC_ISQ(adcx) REG32((adcx) + 0x38U)" +.LASF2462: + .string "SPI_CTL0_PSC BITS(3,5)" +.LASF3498: + .string "STDIN_FILENO 0" +.LASF963: + .string "CAN_TMP_TS BITS(16,31)" +.LASF584: + .string "ADC_WDHT_WDHT BITS(0,11)" +.LASF3938: + .string "MATCH_FCVT_S_L 0xd0200053" +.LASF3262: + .string "__section(x) __attribute__((__section__(x)))" +.LASF3823: + .string "MASK_SC_D 0xf800707f" +.LASF2218: + .string "RCU_RSTSCK_EPRSTF BIT(26)" +.LASF3554: + .string "MCONTROL_TIMING (1<<18)" +.LASF3064: + .string "WWDGT_CTL_WDGTEN BIT(7)" +.LASF4358: + .string "TIMER0_UP_IRQn" +.LASF3093: + .string "_T_SIZE " +.LASF3349: + .string "__LOCK_INIT_RECURSIVE(class,lock) static int lock = 0;" +.LASF481: + .string "UINT8_C(x) __UINT8_C(x)" +.LASF779: + .string "GD32VF103_CAN_H " +.LASF65: + .string "__INTPTR_TYPE__ int" +.LASF1969: + .string "I2C_GCEN_ENABLE I2C_CTL0_GCEN" +.LASF1771: + .string "AFIO_EXTI5_SS BITS(4, 7)" +.LASF749: + .string "BKP_DATA37 REG16((BKP) + 0xACU)" +.LASF1906: + .string "I2C_CTL1_I2CCLK BITS(0,5)" +.LASF508: + .string "FWDGT_BASE (APB1_BUS_BASE + 0x00003000U)" +.LASF646: + .string "ADC_SAMPLETIME_239POINT5 SAMPTX_SPT(7)" +.LASF1305: + .string "DMA_PERIPH_INCREASE_DISABLE ((uint8_t)0x00U)" +.LASF1783: + .string "GPIO_MODE_SET(n,mode) ((uint32_t)((uint32_t)(mode) << (4U * (n))))" +.LASF1152: + .string "DAC_CTL_DTSEL1 BITS(19,21)" +.LASF36: + .string "__INTMAX_TYPE__ long long int" +.LASF4067: + .string "MASK_CUSTOM0_RS1_RS2 0x707f" +.LASF3376: + .ascii "_REENT_INIT(var) { 0, _REENT_STDIO_STREAM(&(var), 0), _REENT" + .ascii "_STDIO_STREAM(&(var), 1), _REENT_STDIO_STREAM(&(var), 2), 0," + .ascii " \"\", 0, _NULL, 0, _NULL, _NULL, 0, _NULL, _NULL, 0, _NULL," + .ascii " { { 0, _NULL, \"\", {0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 1, {" + .string " {_RAND48_SEED_0, _RAND48_SEED_1, _RAND48_SEED_2}, {_RAND48_MULT_0, _RAND48_MULT_1, _RAND48_MULT_2}, _RAND48_ADD }, {0, {0}}, {0, {0}}, {0, {0}}, \"\", \"\", 0, {0, {0}}, {0, {0}}, {0, {0}}, {0, {0}}, {0, {0}} } }, _REENT_INIT_ATEXIT _NULL, {_NULL, 0, _NULL} }" +.LASF1303: + .string "DMA_PERIPHERAL_TO_MEMORY ((uint8_t)0x00U)" +.LASF764: + .string "BKP_TPCS_TER BIT(0)" +.LASF2922: + .string "TIMER_SLAVE_MODE_PAUSE SMCFG_SMC(5)" +.LASF2627: + .string "TIMER_CTL1_DMAS BIT(3)" +.LASF495: + .string "GET_BITS(regval,start,end) (((regval) & BITS((start),(end))) >> (start))" +.LASF2954: + .string "USART_STAT_ORERR BIT(3)" +.LASF825: + .string "CAN_F10DATA0(canx) REG32((canx) + 0x290U)" +.LASF2017: + .string "FWDGT_FLAG_RUD FWDGT_STAT_RUD" +.LASF2408: + .string "RTC_INTEN REG32(RTC + 0x00U)" +.LASF3885: + .string "MASK_FSGNJN_D 0xfe00707f" +.LASF461: + .string "UINT_FAST16_MAX (__UINT_FAST16_MAX__)" +.LASF1590: + .string "OB_WP_28 ((uint32_t)0x10000000U)" +.LASF2383: + .string "RCU_PLL1_MUL20 CFG1_PLL1MF(15)" +.LASF3482: + .string "_stdout_r(x) ((x)->_stdout)" +.LASF1996: + .string "FWDGT_STAT REG32((FWDGT) + 0x0000000CU)" +.LASF3451: + .string "__SRD 0x0004" +.LASF671: + .string "ADC_CHANNEL_11 ((uint8_t)0x0BU)" +.LASF1672: + .string "GPIO_OCTL_OCTL5 BIT(5)" +.LASF2716: + .string "TIMER_CHCTL2_CH2P BIT(9)" +.LASF810: + .string "CAN_FCTL(canx) REG32((canx) + 0x200U)" +.LASF1129: + .string "DAC_CTL REG32(DAC + 0x00U)" +.LASF1230: + .string "DMA_INTC(dmax) REG32((dmax) + 0x04U)" +.LASF2742: + .string "TIMER_INT_CH1 TIMER_DMAINTEN_CH1IE" +.LASF2834: + .string "TIMER_CKDIV_DIV1 CTL0_CKDIV(0)" +.LASF2878: + .string "TIMER_OC_MODE_PWM0 ((uint16_t)0x0060U)" +.LASF3918: + .string "MATCH_FMV_X_S 0xe0000053" +.LASF1494: + .string "FMC_WP REG32((FMC) + 0x20U)" +.LASF89: + .string "__INTMAX_C(c) c ## LL" +.LASF2046: + .string "PMU_CTL_LDOLP BIT(0)" +.LASF3678: + .string "MATCH_SLTIU 0x3013" +.LASF864: + .string "CAN_F21DATA1(canx) REG32((canx) + 0x2ECU)" +.LASF3661: + .string "MASK_BLTU 0x707f" +.LASF3106: + .string "__wchar_t__ " +.LASF2314: + .string "RCU_PLL_MUL28 (PLLMF_4 | CFG0_PLLMF(11))" +.LASF4308: + .string "CSR_PUSHMCAUSE 0x7EE" +.LASF4255: + .string "CSR_HPMCOUNTER16H 0xc90" +.LASF2398: + .string "RCU_I2S1SRC_CKPLL2_MUL2 RCU_CFG1_I2S1SEL" +.LASF302: + .string "__SIZEOF_PTRDIFF_T__ 4" +.LASF2827: + .string "TIMER_COUNTER_CENTER_UP CTL0_CAM(2)" +.LASF3914: + .string "MATCH_FCVT_L_S 0xc0200053" +.LASF1516: + .string "FMC_CTL_OBWEN BIT(9)" +.LASF890: + .string "CAN_CTL_DFZ BIT(16)" +.LASF3584: + .string "MIP_SEIP (1 << IRQ_S_EXT)" +.LASF3608: + .string "IRQ_S_SOFT 1" +.LASF1399: + .string "EXTI_EVEN_EVEN10 BIT(10)" +.LASF979: + .string "CAN_RFIFOMDATA0_DB0 BITS(0,7)" +.LASF1676: + .string "GPIO_OCTL_OCTL9 BIT(9)" +.LASF909: + .string "CAN_TSTAT_MST1 BIT(15)" +.LASF3080: + .string "_T_PTRDIFF " +.LASF1860: + .string "GPIO_USART2_FULL_REMAP ((uint32_t)0x00140030U)" +.LASF3169: + .string "_STDIO_H_ " +.LASF644: + .string "ADC_SAMPLETIME_55POINT5 SAMPTX_SPT(5)" +.LASF502: + .string "APB2_BUS_BASE ((uint32_t)0x40010000U)" +.LASF534: + .string "ADC_SAMPT1(adcx) REG32((adcx) + 0x10U)" +.LASF4047: + .string "MASK_C_FLDSP 0xe003" +.LASF3861: + .string "MASK_FDIV_S 0xfe00007f" +.LASF2060: + .string "PMU_LVDT_2 CTL_LVDT(2)" +.LASF1740: + .string "GPIO_LOCK_LK9 BIT(9)" +.LASF3100: + .string "_SIZE_T_DECLARED " +.LASF2474: + .string "SPI_CTL1_DMATEN BIT(1)" +.LASF607: + .string "ADC_MODE_FREE CTL0_SYNCM(0)" +.LASF86: + .string "__PTRDIFF_WIDTH__ 32" +.LASF762: + .string "BKP_TPCTL_TPEN BIT(0)" +.LASF2348: + .string "RCU_PREDV0_DIV9 CFG1_PREDV0(8)" +.LASF3871: + .string "MASK_FMAX_S 0xfe00707f" +.LASF3924: + .string "MATCH_FCVT_WU_D 0xc2100053" +.LASF3088: + .string "__size_t__ " +.LASF4328: + .string "CLIC_INT_RESERVED" +.LASF2588: + .string "I2S_FLAG_FERR SPI_STAT_FERR" +.LASF603: + .string "CTL0_DISNUM(regval) (BITS(13,15) & ((uint32_t)(regval) << 13))" +.LASF2836: + .string "TIMER_CKDIV_DIV4 CTL0_CKDIV(2)" +.LASF4024: + .string "MATCH_C_ANDI 0x8801" +.LASF2352: + .string "RCU_PREDV0_DIV13 CFG1_PREDV0(12)" +.LASF3748: + .string "MATCH_SD 0x3023" +.LASF775: + .string "TAMPER_PIN_ACTIVE_HIGH ((uint16_t)0x0000U)" +.LASF3515: + .string "MSTATUS_PUM 0x00040000" +.LASF3995: + .string "MASK_C_LDSP 0xe003" +.LASF1219: + .string "DAC_TRIANGLE_AMPLITUDE_63 DAC_WAVE_BIT_WIDTH_6" +.LASF690: + .string "ADC_OVERSAMPLING_ONE_CONVERT 1" +.LASF4217: + .string "CSR_MHPMEVENT14 0x32e" +.LASF2948: + .string "USART_CTL1(usartx) REG32((usartx) + (0x00000010U))" +.LASF3357: + .string "__lock_try_acquire_recursive(lock) ((void) 0)" +.LASF1281: + .string "DMA_CHXMADDR_MADDR BITS(0,31)" +.LASF3745: + .string "MASK_SH 0x707f" +.LASF1237: + .string "DMA_CH1PADDR(dmax) REG32((dmax) + 0x24U)" +.LASF1971: + .string "I2C_SRESET_SET I2C_CTL0_SRESET" +.LASF505: + .string "TIMER_BASE (APB1_BUS_BASE + 0x00000000U)" +.LASF942: + .string "CAN_INTEN_WIE BIT(16)" +.LASF1383: + .string "EXTI_INTEN_INTEN13 BIT(13)" +.LASF1818: + .string "GPIO_EVENT_PIN_12 ((uint8_t)0x0CU)" +.LASF2840: + .string "TIMER_UPDATE_SRC_GLOBAL ((uint32_t)0x00000000U)" +.LASF1451: + .string "EXTI_SWIEV_SWIEV5 BIT(5)" +.LASF3433: + .string "_KEY_T_DECLARED " +.LASF3715: + .string "MASK_SRLIW 0xfe00707f" +.LASF465: + .string "INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1)" +.LASF1466: + .string "EXTI_PD_PD1 BIT(1)" +.LASF3142: + .string "_BITUL(x) (_AC(1,UL) << (x))" +.LASF1060: + .string "CAN_BT_BS1_4TQ ((uint8_t)0x03U)" +.LASF3760: + .string "MATCH_MULHU 0x2003033" +.LASF3446: + .string "_NEWLIB_STDIO_H " +.LASF3710: + .string "MATCH_ADDIW 0x1b" +.LASF1630: + .string "GPIO_CTL0_CTL5 BITS(22, 23)" +.LASF4151: + .string "CSR_SBADADDR 0x143" +.LASF2023: + .string "DBG_CTL_SLP_HOLD BIT(0)" +.LASF1905: + .string "I2C_CTL0_SRESET BIT(15)" +.LASF2617: + .string "TIMER_CTL0_CEN BIT(0)" +.LASF2200: + .string "RCU_APB1EN_UART3EN BIT(19)" +.LASF666: + .string "ADC_CHANNEL_6 ((uint8_t)0x06U)" +.LASF915: + .string "CAN_TSTAT_NUM BITS(24,25)" +.LASF4203: + .string "CSR_MHPMCOUNTER31 0xb1f" +.LASF789: + .string "CAN_BT(canx) REG32((canx) + 0x1CU)" +.LASF1991: + .string "GD32VF103_FWDGT_H " +.LASF4390: + .string "CAN1_RX1_IRQn" +.LASF1147: + .string "DAC_CTL_DWBW0 BITS(8,11)" +.LASF1386: + .string "EXTI_INTEN_INTEN16 BIT(16)" +.LASF425: + .string "__int_fast8_t_defined 1" +.LASF620: + .string "CTL1_ETSRC(regval) (BITS(17,19) & ((uint32_t)(regval) << 17))" +.LASF2901: + .string "TIMER_SMCFG_TRGSEL_ITI2 SMCFG_TRGSEL(2)" +.LASF2083: + .string "RCU_APB2EN REG32(RCU + 0x18U)" +.LASF2809: + .string "TIMER_DMACFG_DMATC_12TRANSFER DMACFG_DMATC(11)" +.LASF625: + .string "ADC0_1_EXTTRIG_REGULAR_T2_TRGO CTL1_ETSRC(4)" +.LASF1283: + .string "DMA_CHCTL(dma,channel) REG32(((dma) + 0x08U) + 0x14U * (uint32_t)(channel))" +.LASF118: + .string "__UINT_LEAST16_MAX__ 0xffff" +.LASF1611: + .string "GPIO_LOCK(gpiox) REG32((gpiox) + 0x18U)" +.LASF2587: + .string "I2S_FLAG_TRANS SPI_STAT_TRANS" +.LASF1025: + .string "GET_RFIFOMI_SFID(regval) GET_BITS((uint32_t)(regval), 21U, 31U)" +.LASF3077: + .string "_ANSI_STDDEF_H " +.LASF1746: + .string "GPIO_LOCK_LK15 BIT(15)" +.LASF4075: + .string "MASK_CUSTOM1 0x707f" +.LASF3422: + .string "_TIME_T_DECLARED " +.LASF3177: + .string "_MB_LEN_MAX 1" +.LASF440: + .string "UINT16_MAX (__UINT16_MAX__)" +.LASF61: + .string "__UINT_FAST8_TYPE__ unsigned int" +.LASF1510: + .string "FMC_CTL_PER BIT(1)" +.LASF3108: + .string "_WCHAR_T " +.LASF2423: + .string "RTC_CTL_OVIF BIT(2)" +.LASF838: + .string "CAN_F23DATA0(canx) REG32((canx) + 0x3F8U)" +.LASF3147: + .string "ECLIC_MTH_OFFSET 0xB" +.LASF1858: + .string "GPIO_USART1_REMAP ((uint32_t)0x00000008U)" +.LASF2101: + .string "RCU_CTL_PLL1STB BIT(27)" +.LASF1733: + .string "GPIO_LOCK_LK2 BIT(2)" +.LASF2554: + .string "I2S_STD_PHILLIPS I2SCTL_I2SSTD(0)" +.LASF1582: + .string "OB_WP_20 ((uint32_t)0x00100000U)" +.LASF491: + .string "REG16(addr) (*(volatile uint16_t *)(uint32_t)(addr))" +.LASF1331: + .string "__SEV eclic_send_event" +.LASF1033: + .string "GET_RFIFOMDATA1_DB5(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF1134: + .string "DAC1_R12DH REG32(DAC + 0x14U)" +.LASF837: + .string "CAN_F22DATA0(canx) REG32((canx) + 0x2F0U)" +.LASF2970: + .string "USART_CTL0_TCIE BIT(6)" +.LASF1020: + .string "TMDATA1_DB4(regval) (BITS(0,7) & ((uint32_t)(regval) << 0))" +.LASF4063: + .string "MASK_CUSTOM0 0x707f" +.LASF1879: + .string "GD32VF103_I2C_H " +.LASF2420: + .string "RTC_INTEN_OVIE BIT(2)" +.LASF2842: + .string "TIMER_ROS_STATE_DISABLE ((uint16_t)0x0000U)" +.LASF4256: + .string "CSR_HPMCOUNTER17H 0xc91" +.LASF3839: + .string "MASK_SFENCE_VM 0xfff07fff" +.LASF3470: + .string "BUFSIZ 1024" +.LASF3922: + .string "MATCH_FCVT_W_D 0xc2000053" +.LASF1350: + .string "EXMC_SNCTL(region) REG32(EXMC + 0x08U * (region))" +.LASF2384: + .string "CFG1_PLL2MF(regval) (BITS(12,15) & ((uint32_t)(regval) << 12))" +.LASF141: + .string "__FLT_EVAL_METHOD__ 0" +.LASF1726: + .string "GPIO_BC_CR11 BIT(11)" +.LASF3964: + .string "MATCH_FMSUB_S 0x47" +.LASF1805: + .string "GPIO_PORT_SOURCE_GPIOE ((uint8_t)0x04U)" +.LASF4267: + .string "CSR_HPMCOUNTER28H 0xc9c" +.LASF4168: + .string "CSR_TDATA2 0x7a2" +.LASF3930: + .string "MATCH_FMV_X_D 0xe2000053" +.LASF2396: + .string "RCU_PREDV0SRC_CKPLL1 RCU_CFG1_PREDV0SEL" +.LASF2312: + .string "RCU_PLL_MUL26 (PLLMF_4 | CFG0_PLLMF(9))" +.LASF2138: + .string "RCU_INT_PLL2STBIC BIT(22)" +.LASF3865: + .string "MASK_FSGNJN_S 0xfe00707f" +.LASF484: + .string "INT32_C(x) __INT32_C(x)" +.LASF264: + .string "__FLT32X_HAS_INFINITY__ 1" +.LASF3387: + .string "_REENT_RAND48_SEED(ptr) ((ptr)->_new._reent._r48._seed)" +.LASF1650: + .string "GPIO_CTL1_CTL15 BITS(30, 31)" +.LASF3969: + .string "MASK_FNMADD_S 0x600007f" +.LASF3280: + .string "__predict_false(exp) __builtin_expect((exp), 0)" +.LASF710: + .string "GD32VF103_BKP_H " +.LASF2258: + .string "RCU_AHB_CKSYS_DIV2 CFG0_AHBPSC(8)" +.LASF2479: + .string "SPI_CTL1_RBNEIE BIT(6)" +.LASF3589: + .string "MIE_MSIE MIP_MSIP" +.LASF78: + .string "__SIZE_MAX__ 0xffffffffU" +.LASF4188: + .string "CSR_MHPMCOUNTER16 0xb10" +.LASF3974: + .string "MATCH_FNMSUB_D 0x200004b" +.LASF1686: + .string "GPIO_BOP_BOP3 BIT(3)" +.LASF2108: + .string "RCU_CFG0_APB2PSC BITS(11,13)" +.LASF3097: + .string "_SIZE_T_DEFINED_ " +.LASF736: + .string "BKP_DATA24 REG16((BKP) + 0x78U)" +.LASF1729: + .string "GPIO_BC_CR14 BIT(14)" +.LASF2163: + .string "RCU_APB1RST_UART4RST BIT(20)" +.LASF4359: + .string "TIMER0_TRG_CMT_IRQn" +.LASF4177: + .string "CSR_MHPMCOUNTER5 0xb05" +.LASF4327: + .string "CAUSE_MACHINE_ECALL 0xb" +.LASF251: + .string "__FLT32X_MANT_DIG__ 53" +.LASF2609: + .string "TIMER_CREP(timerx) REG32((timerx) + 0x30U)" +.LASF2341: + .string "RCU_PREDV0_DIV2 CFG1_PREDV0(1)" +.LASF289: + .string "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 1" +.LASF3687: + .string "MASK_ORI 0x707f" +.LASF1249: + .string "DMA_CH4PADDR(dmax) REG32((dmax) + 0x60U)" +.LASF2657: + .string "TIMER_DMAINTEN_CMTDEN BIT(13)" +.LASF3360: + .string "_ATEXIT_SIZE 32" +.LASF3583: + .string "MIP_MTIP (1 << IRQ_M_TIMER)" +.LASF352: + .string "__BSD_VISIBLE 0" +.LASF740: + .string "BKP_DATA28 REG16((BKP) + 0x88U)" +.LASF100: + .string "__UINT8_MAX__ 0xff" +.LASF2977: + .string "USART_CTL0_UEN BIT(13)" +.LASF3019: + .string "USART_PM_ODD CTL0_PM(3)" +.LASF9: + .string "__ATOMIC_RELAXED 0" +.LASF2281: + .string "RCU_CKADC_CKAPB2_DIV8 ((uint32_t)0x00000003U)" +.LASF652: + .string "ADC_REGULAR_CHANNEL ((uint8_t)0x01U)" +.LASF1035: + .string "GET_RFIFOMDATA1_DB7(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF3561: + .string "MCONTROL_U (1<<3)" +.LASF268: + .string "__FLT64X_MIN_EXP__ (-16381)" +.LASF3057: + .string "USART_IRLP_NORMAL CTL2_IRLP(0)" +.LASF3840: + .string "MATCH_WFI 0x10500073" +.LASF1179: + .string "DAC_TRIGGER_EXTI_9 CTL_DTSEL(6)" +.LASF1703: + .string "GPIO_BOP_CR4 BIT(20)" +.LASF2838: + .string "TIMER_SP_MODE_REPETITIVE ((uint32_t)0x00000000U)" +.LASF4002: + .string "MATCH_C_LW 0x4000" +.LASF4230: + .string "CSR_MHPMEVENT27 0x33b" +.LASF4214: + .string "CSR_MHPMEVENT11 0x32b" +.LASF2389: + .string "RCU_PLL2_MUL12 CFG1_PLL2MF(10)" +.LASF2604: + .string "TIMER_CHCTL1(timerx) REG32((timerx) + 0x1CU)" +.LASF3390: + .string "_REENT_MP_RESULT(ptr) ((ptr)->_result)" +.LASF3486: + .string "__sgetc_r(__ptr,__p) __sgetc_raw_r(__ptr, __p)" +.LASF2228: + .string "RCU_CFG1_PLL2MF BITS(12,15)" +.LASF3351: + .string "__lock_init_recursive(lock) ((void) 0)" +.LASF3022: + .string "USART_WM_ADDR CTL0_WM(1)" +.LASF395: + .string "__INT64 \"ll\"" +.LASF1979: + .string "I2C_PECTRANS_ENABLE I2C_CTL0_PECTRANS" +.LASF3148: + .string "ECLIC_INT_IP_OFFSET _AC(0x1000,UL)" +.LASF3400: + .string "_REENT_WCTOMB_STATE(ptr) ((ptr)->_new._reent._wctomb_state)" +.LASF1126: + .string "DAC DAC_BASE" +.LASF4393: + .string "ECLIC_NUM_INTERRUPTS" +.LASF1473: + .string "EXTI_PD_PD8 BIT(8)" +.LASF4170: + .string "CSR_DCSR 0x7b0" +.LASF975: + .string "CAN_RFIFOMI_SFID BITS(21,31)" +.LASF406: + .string "_UINT8_T_DECLARED " +.LASF993: + .string "CAN_FDATA_FD(regval) BIT(regval)" +.LASF2492: + .string "SPI_RCRC_RCRC BITS(0,15)" +.LASF154: + .string "__FLT_MIN__ 1.17549435082228750796873653722224568e-38F" +.LASF1077: + .string "CAN_BT_BS2_5TQ ((uint8_t)0x04U)" +.LASF1263: + .string "DMA_INTC_GIFC BIT(0)" +.LASF2571: + .string "SPI_INT_FLAG_CONFERR ((uint8_t)0x03U)" +.LASF2035: + .string "DBG_CTL_TIMER4_HOLD BIT(18)" +.LASF2508: + .string "SPI_BIDIRECTIONAL_RECEIVE (~SPI_CTL0_BDOEN)" +.LASF1549: + .string "OB_STDBY_RST ((uint8_t)0x00U)" +.LASF2207: + .string "RCU_APB1EN_PMUEN BIT(28)" +.LASF3440: + .string "_TIMER_T_DECLARED " +.LASF249: + .string "__FLT128_HAS_INFINITY__ 1" +.LASF4347: + .string "DMA0_Channel3_IRQn" +.LASF4377: + .string "TIMER4_IRQn" +.LASF728: + .string "BKP_DATA16 REG16((BKP) + 0x58U)" +.LASF659: + .string "ADC_INSERTED_CHANNEL_3 ((uint8_t)0x03U)" +.LASF2724: + .string "TIMER_CREP_CREP BITS(0,7)" +.LASF1439: + .string "EXTI_FTEN_FTEN12 BIT(12)" +.LASF718: + .string "BKP_DATA6 REG16((BKP) + 0x1CU)" +.LASF1014: + .string "TMI_EFID(regval) (BITS(3,31) & ((uint32_t)(regval) << 3))" +.LASF583: + .string "ADC_IOFFX_IOFF BITS(0,11)" +.LASF1935: + .string "I2C_STAT1_TR BIT(2)" +.LASF2811: + .string "TIMER_DMACFG_DMATC_14TRANSFER DMACFG_DMATC(13)" +.LASF4029: + .string "MASK_C_XOR 0xfc63" +.LASF3722: + .string "MATCH_SLLW 0x103b" +.LASF802: + .string "CAN_RFIFOMI0(canx) REG32((canx) + 0x1B0U)" +.LASF446: + .string "UINT32_MAX (__UINT32_MAX__)" +.LASF1306: + .string "DMA_PERIPH_INCREASE_ENABLE ((uint8_t)0x01U)" +.LASF1005: + .string "ERR_REG_OFFSET ((uint8_t)0x18U)" +.LASF1997: + .string "FWDGT_CTL_CMD BITS(0,15)" +.LASF3577: + .string "MCONTROL_MATCH_MASK_HIGH 5" +.LASF609: + .string "ADC_DAUL_REGULAL_PARALLEL_INSERTED_ROTATION CTL0_SYNCM(2)" +.LASF739: + .string "BKP_DATA27 REG16((BKP) + 0x84U)" +.LASF218: + .string "__FLT32_HAS_DENORM__ 1" +.LASF301: + .string "__SIZEOF_WINT_T__ 4" +.LASF3500: + .string "STDERR_FILENO 2" +.LASF2879: + .string "TIMER_OC_MODE_PWM1 ((uint16_t)0x0070U)" +.LASF1989: + .string "I2C_ADDFORMAT_7BITS ((uint32_t)0x00000000U)" +.LASF990: + .string "CAN_FSCFG_FS(regval) BIT(regval)" +.LASF1585: + .string "OB_WP_23 ((uint32_t)0x00800000U)" +.LASF558: + .string "ADC_CTL0_WDEIE BIT(6)" +.LASF233: + .string "__FLT64_HAS_DENORM__ 1" +.LASF560: + .string "ADC_CTL0_SM BIT(8)" +.LASF1009: + .string "BT_SJW(regval) (BITS(24,25) & ((uint32_t)(regval) << 24))" +.LASF727: + .string "BKP_DATA15 REG16((BKP) + 0x54U)" +.LASF3915: + .string "MASK_FCVT_L_S 0xfff0007f" +.LASF3522: + .string "SSTATUS_UPIE 0x00000010" +.LASF554: + .string "ADC_STAT_STIC BIT(3)" +.LASF2445: + .string "RTC_FLAG_LWOF RTC_CTL_LWOFF" +.LASF745: + .string "BKP_DATA33 REG16((BKP) + 0x9CU)" +.LASF4098: + .string "MATCH_CUSTOM3 0x7b" +.LASF4086: + .string "MATCH_CUSTOM2 0x5b" +.LASF817: + .string "CAN_F2DATA0(canx) REG32((canx) + 0x250U)" +.LASF2149: + .string "RCU_APB2RST_SPI0RST BIT(12)" +.LASF3156: + .string "ECLIC_INT_CTRL_OFFSET _AC(0x1003,UL)" +.LASF334: + .string "HXTAL_VALUE_25M HXTAL_VALUE" +.LASF1857: + .string "GPIO_USART0_REMAP ((uint32_t)0x00000004U)" +.LASF2429: + .string "RTC_DIVH_DIV BITS(0,3)" +.LASF598: + .string "ADC_FLAG_WDE ADC_STAT_WDE" +.LASF157: + .string "__FLT_HAS_DENORM__ 1" +.LASF1915: + .string "I2C_SADDR0_ADDFORMAT BIT(15)" +.LASF468: + .string "INTMAX_MAX (__INTMAX_MAX__)" +.LASF390: + .string "_INTPTR_EQ_INT " +.LASF649: + .string "WDLT_WDLT(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF201: + .string "__FLT16_EPSILON__ 9.76562500000000000000000000000000000e-4F16" +.LASF2343: + .string "RCU_PREDV0_DIV4 CFG1_PREDV0(3)" +.LASF2137: + .string "RCU_INT_PLL1STBIC BIT(21)" +.LASF897: + .string "CAN_STAT_RS BIT(9)" +.LASF4201: + .string "CSR_MHPMCOUNTER29 0xb1d" +.LASF1598: + .string "GD32VF103_GPIO_H " +.LASF3598: + .string "PRV_U 0" +.LASF1395: + .string "EXTI_EVEN_EVEN6 BIT(6)" +.LASF1827: + .string "GPIO_PIN_SOURCE_5 ((uint8_t)0x05U)" +.LASF3114: + .string "_WCHAR_T_DEFINED_ " +.LASF2331: + .string "RCU_CKOUT0SRC_CKPLL2_DIV2 CFG0_CKOUT0SEL(9)" +.LASF4240: + .string "CSR_TIMEH 0xc81" +.LASF799: + .string "CAN_TMP2(canx) REG32((canx) + 0x1A4U)" +.LASF1809: + .string "GPIO_EVENT_PIN_3 ((uint8_t)0x03U)" +.LASF2005: + .string "FWDGT_PSC_DIV16 ((uint8_t)PSC_PSC(2))" +.LASF691: + .string "OVSCR_OVSS(regval) (BITS(5,8) & ((uint32_t)(regval) << 5))" +.LASF316: + .string "__riscv_c 2000000" +.LASF1413: + .string "EXTI_RTEN_RTEN5 BIT(5)" +.LASF2195: + .string "RCU_APB1EN_WWDGTEN BIT(11)" +.LASF3731: + .string "MASK_LH 0x707f" +.LASF3536: + .string "DCSR_EBREAKU (1<<12)" +.LASF3303: + .string "__DECONST(type,var) ((type)(__uintptr_t)(const void *)(var))" +.LASF3127: + .string "_GCC_MAX_ALIGN_T " +.LASF2785: + .string "TIMER_DMACFG_DMATA_CHCTL1 DMACFG_DMATA(7)" +.LASF1489: + .string "FMC_OBKEY REG32((FMC) + 0x08U)" +.LASF2812: + .string "TIMER_DMACFG_DMATC_15TRANSFER DMACFG_DMATC(14)" +.LASF379: + .string "__int20" +.LASF2898: + .string "SMCFG_TRGSEL(regval) (BITS(4, 6) & ((uint32_t)(regval) << 4U))" +.LASF2062: + .string "PMU_LVDT_4 CTL_LVDT(4)" +.LASF733: + .string "BKP_DATA21 REG16((BKP) + 0x6CU)" +.LASF738: + .string "BKP_DATA26 REG16((BKP) + 0x80U)" +.LASF313: + .string "__riscv_i 2000000" +.LASF1762: + .string "AFIO_PCF0_TIMER4CH3_IREMAP BIT(16)" +.LASF2395: + .string "RCU_PREDV0SRC_HXTAL ((uint32_t)0x00000000U)" +.LASF797: + .string "CAN_TMDATA11(canx) REG32((canx) + 0x19CU)" +.LASF1324: + .string "DMA_CHANNEL_CNT_MASK DMA_CHXCNT_CNT" +.LASF2190: + .string "RCU_APB1EN_TIMER2EN BIT(1)" +.LASF3616: + .string "IRQ_M_EXT 11" +.LASF2406: + .string "GD32VF103_RTC_H " +.LASF4104: + .string "MATCH_CUSTOM3_RD 0x407b" +.LASF1085: + .string "CAN_FF_STANDARD ((uint32_t)0x00000000U)" +.LASF1657: + .string "GPIO_ISTAT_ISTAT6 BIT(6)" +.LASF2067: + .string "PMU_FLAG_STANDBY PMU_CS_STBF" +.LASF1252: + .string "DMA_CH5CNT(dmax) REG32((dmax) + 0x70U)" +.LASF79: + .string "__SCHAR_WIDTH__ 8" +.LASF2463: + .string "SPI_CTL0_SPIEN BIT(6)" +.LASF590: + .string "ADC_IDATAX_IDATAN BITS(0,15)" +.LASF2717: + .string "TIMER_CHCTL2_CH2NEN BIT(10)" +.LASF4341: + .string "EXTI2_IRQn" +.LASF1138: + .string "DACC_L12DH REG32(DAC + 0x24U)" +.LASF1378: + .string "EXTI_INTEN_INTEN8 BIT(8)" +.LASF1843: + .string "GPIO_PIN_5 BIT(5)" +.LASF2701: + .string "TIMER_CHCTL1_CH3COMCTL BITS(12,14)" +.LASF3370: + .string "_RAND48_ADD (0x000b)" +.LASF3014: + .string "USART_TRANSMIT_ENABLE CTL0_TEN(1)" +.LASF522: + .string "FMC_BASE (AHB1_BUS_BASE + 0x0000A000U)" +.LASF3781: + .string "MASK_AMOADD_W 0xf800707f" +.LASF2488: + .string "SPI_STAT_TRANS BIT(7)" +.LASF904: + .string "CAN_TSTAT_MST0 BIT(7)" +.LASF2446: + .string "GD32VF103_SPI_H " +.LASF332: + .string "__IO volatile" +.LASF3709: + .string "MASK_AND 0xfe00707f" +.LASF2124: + .string "RCU_INT_CKMIF BIT(7)" +.LASF3763: + .string "MASK_DIV 0xfe00707f" +.LASF1117: + .string "GD32VF103_CRC_H " +.LASF751: + .string "BKP_DATA39 REG16((BKP) + 0xB4U)" +.LASF1580: + .string "OB_WP_18 ((uint32_t)0x00040000U)" +.LASF1193: + .string "DAC_WAVE_BIT_WIDTH_8 DWBW(7)" +.LASF1278: + .string "DMA_CHXCTL_M2M BIT(14)" +.LASF3791: + .string "MASK_AMOMAX_W 0xf800707f" +.LASF4397: + .string "short int" +.LASF3340: + .string "unsigned signed" +.LASF2580: + .string "SPI_FLAG_TRANS SPI_STAT_TRANS" +.LASF1297: + .string "DMA_FLAG_FTF DMA_INTF_FTFIF" +.LASF1925: + .string "I2C_STAT0_TBE BIT(7)" +.LASF4247: + .string "CSR_HPMCOUNTER8H 0xc88" +.LASF1030: + .string "GET_RFIFOMDATA0_DB2(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF3604: + .string "VM_MBBID 2" +.LASF1574: + .string "OB_WP_12 ((uint32_t)0x00001000U)" +.LASF3732: + .string "MATCH_LW 0x2003" +.LASF1404: + .string "EXTI_EVEN_EVEN15 BIT(15)" +.LASF3121: + .string "_BSD_WCHAR_T_" +.LASF3860: + .string "MATCH_FDIV_S 0x18000053" +.LASF3719: + .string "MASK_ADDW 0xfe00707f" +.LASF3780: + .string "MATCH_AMOADD_W 0x202f" +.LASF3113: + .string "_BSD_WCHAR_T_ " +.LASF2094: + .string "RCU_CTL_HXTALEN BIT(16)" +.LASF2186: + .string "RCU_APB2EN_TIMER0EN BIT(11)" +.LASF208: + .string "__FLT32_MIN_EXP__ (-125)" +.LASF3469: + .string "EOF (-1)" +.LASF3499: + .string "STDOUT_FILENO 1" +.LASF1209: + .string "DAC_LFSR_BITS11_0 DAC_WAVE_BIT_WIDTH_12" +.LASF2795: + .string "TIMER_DMACFG_DMATA_CCHP DMACFG_DMATA(17)" +.LASF4137: + .string "CSR_HPMCOUNTER24 0xc18" +.LASF3089: + .string "__SIZE_T__ " +.LASF3746: + .string "MATCH_SW 0x2023" +.LASF4070: + .string "MATCH_CUSTOM0_RD_RS1 0x600b" +.LASF1983: + .string "I2C_ARP_ENABLE I2C_CTL0_ARPEN" +.LASF1999: + .string "FWDGT_RLD_RLD BITS(0,11)" +.LASF1866: + .string "GPIO_TIMER2_PARTIAL_REMAP ((uint32_t)0x001A0800U)" +.LASF2209: + .string "RCU_BDCTL_LXTALEN BIT(0)" +.LASF3751: + .string "MASK_FENCE 0x707f" +.LASF3670: + .string "MATCH_AUIPC 0x17" +.LASF2158: + .string "RCU_APB1RST_SPI1RST BIT(14)" +.LASF3765: + .string "MASK_DIVU 0xfe00707f" +.LASF2345: + .string "RCU_PREDV0_DIV6 CFG1_PREDV0(5)" +.LASF2183: + .string "RCU_APB2EN_PEEN BIT(6)" +.LASF1800: + .string "GPIO_EVENT_PORT_GPIOE ((uint8_t)0x04U)" +.LASF2484: + .string "SPI_STAT_TXURERR BIT(3)" +.LASF1333: + .string "EXMC (EXMC_BASE)" +.LASF1050: + .string "CAN_LOOPBACK_MODE ((uint8_t)0x01U)" +.LASF384: + .string "char +0" +.LASF4323: + .string "CAUSE_FAULT_STORE 0x7" +.LASF1710: + .string "GPIO_BOP_CR11 BIT(27)" +.LASF1154: + .string "DAC_CTL_DWBW1 BITS(24,27)" +.LASF3786: + .string "MATCH_AMOAND_W 0x6000202f" +.LASF1007: + .string "BT_BS1(regval) (BITS(16,19) & ((uint32_t)(regval) << 16))" +.LASF3853: + .string "MASK_CSRRCI 0x707f" +.LASF444: + .string "INT32_MIN (-__INT32_MAX__ - 1)" +.LASF4310: + .string "CSR_PUSHMSUBM 0x7EB" +.LASF2656: + .string "TIMER_DMAINTEN_CH3DEN BIT(12)" +.LASF750: + .string "BKP_DATA38 REG16((BKP) + 0xB0U)" +.LASF512: + .string "CAN_BASE (APB1_BUS_BASE + 0x00006400U)" +.LASF2072: + .string "PMU_FLAG_RESET_STANDBY ((uint8_t)0x01U)" +.LASF2360: + .string "RCU_PREDV1_DIV4 CFG1_PREDV1(3)" +.LASF2472: + .string "SPI_CTL0_BDEN BIT(15)" +.LASF3175: + .string "_WANT_IO_LONG_DOUBLE 1" +.LASF4081: + .string "MASK_CUSTOM1_RD 0x707f" +.LASF3063: + .string "WWDGT_CTL_CNT BITS(0,6)" +.LASF1411: + .string "EXTI_RTEN_RTEN3 BIT(3)" +.LASF2230: + .string "RCU_CFG1_I2S1SEL BIT(17)" +.LASF1493: + .string "FMC_OBSTAT REG32((FMC) + 0x1CU)" +.LASF3416: + .string "_SYS_TYPES_H " +.LASF1784: + .string "GPIO_MODE_MASK(n) (0xFU << (4U * (n)))" +.LASF2860: + .string "TIMER_CCX_ENABLE ((uint16_t)0x0001U)" +.LASF1661: + .string "GPIO_ISTAT_ISTAT10 BIT(10)" +.LASF567: + .string "ADC_CTL0_IWDEN BIT(22)" +.LASF4084: + .string "MATCH_CUSTOM1_RD_RS1_RS2 0x702b" +.LASF2861: + .string "TIMER_CCX_DISABLE ((uint16_t)0x0000U)" +.LASF1371: + .string "EXTI_INTEN_INTEN1 BIT(1)" +.LASF3932: + .string "MATCH_FCLASS_D 0xe2001053" +.LASF369: + .string "___int_least16_t_defined 1" +.LASF2868: + .string "TIMER_OC_IDLE_STATE_HIGH ((uint16_t)0x0100)" +.LASF702: + .string "ADC_OVERSAMPLING_RATIO_MUL2 OVSCR_OVSR(0)" +.LASF15: + .string "__FINITE_MATH_ONLY__ 0" +.LASF3872: + .string "MATCH_FSQRT_S 0x58000053" +.LASF4019: + .string "MASK_C_LUI 0xe003" +.LASF1258: + .string "DMA_CH6MADDR(dmax) REG32((dmax) + 0x8CU)" +.LASF2967: + .string "USART_CTL0_TEN BIT(3)" +.LASF2358: + .string "RCU_PREDV1_DIV2 CFG1_PREDV1(1)" +.LASF3152: + .string "ECLIC_INT_ATTR_TRIG_LEVEL 0x00" +.LASF3796: + .string "MATCH_AMOSWAP_W 0x800202f" +.LASF2874: + .string "TIMER_OC_MODE_INACTIVE ((uint16_t)0x0020U)" +.LASF1513: + .string "FMC_CTL_OBER BIT(5)" +.LASF1073: + .string "CAN_BT_BS2_1TQ ((uint8_t)0x00U)" +.LASF807: + .string "CAN_RFIFOMP1(canx) REG32((canx) + 0x1C4U)" +.LASF2055: + .string "PMU_CS_LVDF BIT(2)" +.LASF3652: + .string "MATCH_BEQ 0x63" +.LASF925: + .string "CAN_RFIFO0_RFD0 BIT(5)" +.LASF3024: + .string "USART_WL_8BIT CTL0_WL(0)" +.LASF3151: + .string "ECLIC_INT_ATTR_SHV 0x01" +.LASF3030: + .string "USART_STB_1_5BIT CTL1_STB(3)" +.LASF3557: + .string "MCONTROL_MATCH (0xf<<7)" +.LASF212: + .string "__FLT32_DECIMAL_DIG__ 9" +.LASF3120: + .string "_WCHAR_T_DECLARED " +.LASF2247: + .string "CFG1_REG_OFFSET 0x2CU" +.LASF3990: + .string "MATCH_C_SD 0xe000" +.LASF2804: + .string "TIMER_DMACFG_DMATC_7TRANSFER DMACFG_DMATC(6)" +.LASF561: + .string "ADC_CTL0_WDSC BIT(9)" +.LASF704: + .string "ADC_OVERSAMPLING_RATIO_MUL8 OVSCR_OVSR(2)" +.LASF3209: + .string "__DOTS , ..." +.LASF366: + .string "___int32_t_defined 1" +.LASF2090: + .string "RCU_CTL_IRC8MEN BIT(0)" +.LASF1181: + .string "CTL_DWM(regval) (BITS(6,7) & ((uint32_t)(regval) << 6))" +.LASF3949: + .string "MASK_FCVT_D_L 0xfff0007f" +.LASF168: + .string "__DBL_NORM_MAX__ ((double)1.79769313486231570814527423731704357e+308L)" +.LASF3537: + .string "DCSR_STOPCYCLE (1<<10)" +.LASF230: + .string "__FLT64_MIN__ 2.22507385850720138309023271733240406e-308F64" +.LASF3243: + .string "__CC_SUPPORTS___FUNC__ 1" +.LASF633: + .string "ADC0_1_EXTTRIG_INSERTED_T1_CH0 CTL1_ETSIC(3)" +.LASF3199: + .string "_LONG_DOUBLE long double" +.LASF1621: + .string "GPIO_CTL0_MD1 BITS(4, 5)" +.LASF4164: + .string "CSR_MBADADDR 0x343" +.LASF246: + .string "__FLT128_EPSILON__ 1.92592994438723585305597794258492732e-34F128" +.LASF2856: + .string "TIMER_CH_0 ((uint16_t)0x0000U)" +.LASF2164: + .string "RCU_APB1RST_I2C0RST BIT(21)" +.LASF2283: + .string "RCU_CKADC_CKAPB2_DIV16 ((uint32_t)0x00000007U)" +.LASF4380: + .string "UART4_IRQn" +.LASF2136: + .string "RCU_INT_PLLSTBIC BIT(20)" +.LASF1769: + .string "AFIO_EXTI3_SS BITS(12, 15)" +.LASF2893: + .string "TIMER_IC_SELECTION_ITS ((uint16_t)0x0003U)" +.LASF1613: + .string "AFIO_PCF0 REG32(AFIO + 0x04U)" +.LASF632: + .string "ADC0_1_EXTTRIG_INSERTED_T1_TRGO CTL1_ETSIC(2)" +.LASF3984: + .string "MATCH_C_JALR 0x9002" +.LASF4295: + .string "CSR_MHPMCOUNTER25H 0xb99" +.LASF3294: + .string "__weak_reference(sym,alias) __asm__(\".weak \" #alias); __asm__(\".equ \" #alias \", \" #sym)" +.LASF492: + .string "REG8(addr) (*(volatile uint8_t *)(uint32_t)(addr))" +.LASF4273: + .string "CSR_MHPMCOUNTER3H 0xb83" +.LASF906: + .string "CAN_TSTAT_MTFNERR1 BIT(9)" +.LASF2012: + .string "FWDGT_KEY_RELOAD ((uint16_t)0xAAAAU)" +.LASF1691: + .string "GPIO_BOP_BOP8 BIT(8)" +.LASF2509: + .string "SPI_TRANSMODE_FULLDUPLEX ((uint32_t)0x00000000U)" +.LASF3359: + .string "__lock_release_recursive(lock) ((void) 0)" +.LASF2632: + .string "TIMER_CTL1_ISO1 BIT(10)" +.LASF2920: + .string "TIMER_ENCODER_MODE2 SMCFG_SMC(3)" +.LASF3406: + .string "_REENT_L64A_BUF(ptr) ((ptr)->_new._reent._l64a_buf)" +.LASF422: + .string "__int_least16_t_defined 1" +.LASF1168: + .string "DACC_R8DH_DAC0_DH BITS(0,7)" +.LASF2347: + .string "RCU_PREDV0_DIV8 CFG1_PREDV0(7)" +.LASF3111: + .string "__WCHAR_T " +.LASF3543: + .string "DCSR_PRV (3<<0)" +.LASF408: + .string "_INT16_T_DECLARED " +.LASF3966: + .string "MATCH_FNMSUB_S 0x4b" +.LASF3461: + .string "__SOFF 0x1000" +.LASF88: + .string "__INTMAX_MAX__ 0x7fffffffffffffffLL" +.LASF1188: + .string "DAC_WAVE_BIT_WIDTH_3 DWBW(2)" +.LASF1045: + .string "CAN_ERRN_5 ERR_ERRN(5U)" +.LASF3640: + .string "RISCV_PGSIZE (1 << RISCV_PGSHIFT)" +.LASF918: + .string "CAN_TSTAT_TME2 BIT(28)" +.LASF4287: + .string "CSR_MHPMCOUNTER17H 0xb91" +.LASF1723: + .string "GPIO_BC_CR8 BIT(8)" +.LASF2697: + .string "TIMER_CHCTL1_CH2COMCEN BIT(7)" +.LASF2276: + .string "RCU_APB2_CKAHB_DIV8 CFG0_APB2PSC(6)" +.LASF90: + .string "__UINTMAX_MAX__ 0xffffffffffffffffULL" +.LASF4003: + .string "MASK_C_LW 0xe003" +.LASF4399: + .string "long int" +.LASF614: + .string "ADC_DAUL_REGULAL_FOLLOWUP_FAST CTL0_SYNCM(7)" +.LASF2237: + .string "APB1EN_REG_OFFSET 0x1CU" +.LASF1889: + .string "I2C_CKCFG(i2cx) REG32((i2cx) + 0x1CU)" +.LASF2582: + .string "I2S_FLAG_RBNE SPI_STAT_RBNE" +.LASF4027: + .string "MASK_C_SUB 0xfc63" +.LASF3862: + .string "MATCH_FSGNJ_S 0x20000053" +.LASF3420: + .string "_CLOCK_T_DECLARED " +.LASF2297: + .string "RCU_PLL_MUL11 CFG0_PLLMF(9)" +.LASF1362: + .string "GD32VF103_EXTI_H " +.LASF4361: + .string "TIMER1_IRQn" +.LASF1756: + .string "AFIO_PCF0_TIMER0_REMAP BITS(6, 7)" +.LASF3925: + .string "MASK_FCVT_WU_D 0xfff0007f" +.LASF1340: + .string "EXMC_SNCTL_NRW BITS(4,5)" +.LASF32: + .string "__SIZE_TYPE__ unsigned int" +.LASF3560: + .string "MCONTROL_S (1<<4)" +.LASF3015: + .string "USART_TRANSMIT_DISABLE CTL0_TEN(0)" +.LASF2196: + .string "RCU_APB1EN_SPI1EN BIT(14)" +.LASF4378: + .string "SPI2_IRQn" +.LASF4167: + .string "CSR_TDATA1 0x7a1" +.LASF880: + .string "CAN_RFIFOMDATA1(canx,bank) REG32((canx) + 0x1BCU + ((bank) * 0x10U))" +.LASF2708: + .string "TIMER_CHCTL2_CH0P BIT(1)" +.LASF391: + .string "_INT32_EQ_LONG " +.LASF1069: + .string "CAN_BT_BS1_13TQ ((uint8_t)0x0CU)" +.LASF3958: + .string "MATCH_FSW 0x2027" +.LASF1928: + .string "I2C_STAT0_AERR BIT(10)" +.LASF2319: + .string "CFG0_USBPSC(regval) (BITS(22,23) & ((uint32_t)(regval) << 22))" +.LASF2869: + .string "TIMER_OC_IDLE_STATE_LOW ((uint16_t)0x0000)" +.LASF535: + .string "ADC_IOFF0(adcx) REG32((adcx) + 0x14U)" +.LASF1384: + .string "EXTI_INTEN_INTEN14 BIT(14)" +.LASF907: + .string "CAN_TSTAT_MAL1 BIT(10)" +.LASF31: + .string "__SIZEOF_POINTER__ 4" +.LASF2045: + .string "PMU_CS REG32((PMU) + 0x04U)" +.LASF4206: + .string "CSR_MHPMEVENT3 0x323" +.LASF597: + .string "ADC_OVSCR_DRES BITS(12,13)" +.LASF2376: + .string "RCU_PLL1_MUL10 CFG1_PLL1MF(8)" +.LASF217: + .string "__FLT32_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F32" +.LASF2088: + .string "RCU_CFG1 REG32(RCU + 0x2CU)" +.LASF1311: + .string "DMA_PERIPHERAL_WIDTH_16BIT CHCTL_PWIDTH(1U)" +.LASF2877: + .string "TIMER_OC_MODE_HIGH ((uint16_t)0x0050U)" +.LASF685: + .string "ADC_RESOLUTION_12B OVSCR_DRES(0)" +.LASF2883: + .string "TIMER_OC_FAST_DISABLE ((uint16_t)0x0000)" +.LASF4326: + .string "CAUSE_HYPERVISOR_ECALL 0xa" +.LASF1795: + .string "GPIO_OSPEED_50MHZ ((uint8_t)0x03U)" +.LASF686: + .string "ADC_RESOLUTION_10B OVSCR_DRES(1)" +.LASF2241: + .string "APB2RST_REG_OFFSET 0x0CU" +.LASF2994: + .string "USART_CTL2_DENT BIT(7)" +.LASF2796: + .string "TIMER_DMACFG_DMATA_DMACFG DMACFG_DMATA(18)" +.LASF2483: + .string "SPI_STAT_I2SCH BIT(2)" +.LASF3792: + .string "MATCH_AMOMINU_W 0xc000202f" +.LASF3012: + .string "USART_RECEIVE_DISABLE CTL0_REN(0)" +.LASF2631: + .string "TIMER_CTL1_ISO0N BIT(9)" +.LASF3944: + .string "MATCH_FCVT_D_W 0xd2000053" +.LASF2685: + .string "TIMER_CHCTL0_CH1COMFEN BIT(10)" +.LASF2817: + .string "TIMER_EVENT_SRC_CH0G ((uint16_t)0x0002U)" +.LASF662: + .string "ADC_CHANNEL_2 ((uint8_t)0x02U)" +.LASF3067: + .string "WWDGT_CFG_EWIE BIT(9)" +.LASF1853: + .string "GPIO_PIN_15 BIT(15)" +.LASF4271: + .string "CSR_MCYCLEH 0xb80" +.LASF3778: + .string "MATCH_REMUW 0x200703b" +.LASF3483: + .string "_stderr_r(x) ((x)->_stderr)" +.LASF1527: + .string "FMC_REGIDX_BIT(regidx,bitpos) (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos))" +.LASF3704: + .string "MATCH_SRA 0x40005033" +.LASF1103: + .string "CAN_INT_TME CAN_INTEN_TMEIE" +.LASF516: + .string "AFIO_BASE (APB2_BUS_BASE + 0x00000000U)" +.LASF1895: + .string "I2C_CTL0_ARPEN BIT(4)" +.LASF2362: + .string "RCU_PREDV1_DIV6 CFG1_PREDV1(5)" +.LASF2160: + .string "RCU_APB1RST_USART1RST BIT(17)" +.LASF1924: + .string "I2C_STAT0_RBNE BIT(6)" +.LASF2393: + .string "RCU_PLL2_MUL16 CFG1_PLL2MF(14)" +.LASF1684: + .string "GPIO_BOP_BOP1 BIT(1)" +.LASF2764: + .string "TIMER_FLAG_CH0O TIMER_INTF_CH0OF" +.LASF707: + .string "ADC_OVERSAMPLING_RATIO_MUL64 OVSCR_OVSR(5)" +.LASF1042: + .string "CAN_ERRN_2 ERR_ERRN(2U)" +.LASF1617: + .string "AFIO_EXTISS3 REG32(AFIO + 0x14U)" +.LASF1444: + .string "EXTI_FTEN_FTEN17 BIT(17)" +.LASF2287: + .string "CFG0_PLLMF(regval) (BITS(18,21) & ((uint32_t)(regval) << 18))" +.LASF2386: + .string "RCU_PLL2_MUL9 CFG1_PLL2MF(7)" +.LASF4108: + .string "MATCH_CUSTOM3_RD_RS1_RS2 0x707b" +.LASF2117: + .string "RCU_INT_IRC40KSTBIF BIT(0)" +.LASF2589: + .string "GD32VF103_TIMER_H " +.LASF1017: + .string "TMDATA0_DB1(regval) (BITS(8,15) & ((uint32_t)(regval) << 8))" +.LASF2036: + .string "DBG_CTL_TIMER5_HOLD BIT(19)" +.LASF3076: + .string "_STDDEF_H_ " +.LASF4062: + .string "MATCH_CUSTOM0 0xb" +.LASF721: + .string "BKP_DATA9 REG16((BKP) + 0x28U)" +.LASF3424: + .string "__caddr_t_defined " +.LASF3539: + .string "DCSR_CAUSE (7<<6)" +.LASF3221: + .string "__has_extension __has_feature" +.LASF4220: + .string "CSR_MHPMEVENT17 0x331" +.LASF4234: + .string "CSR_MHPMEVENT31 0x33f" +.LASF3164: + .string "ECLIC_GROUP_LEVEL0_PRIO4 0" +.LASF2686: + .string "TIMER_CHCTL0_CH1COMSEN BIT(11)" +.LASF840: + .string "CAN_F25DATA0(canx) REG32((canx) + 0x308U)" +.LASF4264: + .string "CSR_HPMCOUNTER25H 0xc99" +.LASF172: + .string "__DBL_HAS_DENORM__ 1" +.LASF1716: + .string "GPIO_BC_CR1 BIT(1)" +.LASF2085: + .string "RCU_BDCTL REG32(RCU + 0x20U)" +.LASF989: + .string "CAN_FMCFG_FMOD(regval) BIT(regval)" +.LASF2079: + .string "RCU_INT REG32(RCU + 0x08U)" +.LASF3960: + .string "MATCH_FSD 0x3027" +.LASF2584: + .string "I2S_FLAG_CH SPI_STAT_I2SCH" +.LASF2197: + .string "RCU_APB1EN_SPI2EN BIT(15)" +.LASF4106: + .string "MATCH_CUSTOM3_RD_RS1 0x607b" +.LASF920: + .string "CAN_TSTAT_TMLS1 BIT(30)" +.LASF478: + .string "WINT_MAX (__WINT_MAX__)" +.LASF855: + .string "CAN_F12DATA1(canx) REG32((canx) + 0x2A4U)" +.LASF3188: + .string "__OBSOLETE_MATH __OBSOLETE_MATH_DEFAULT" +.LASF4229: + .string "CSR_MHPMEVENT26 0x33a" +.LASF1015: + .string "TMI_SFID(regval) (BITS(21,31) & ((uint32_t)(regval) << 21))" +.LASF861: + .string "CAN_F18DATA1(canx) REG32((canx) + 0x2D4U)" +.LASF1564: + .string "OB_WP_2 ((uint32_t)0x00000004U)" +.LASF3068: + .string "WWDGT_STAT_EWIF BIT(0)" +.LASF1782: + .string "AFIO_PCF1_EXMC_NADV BIT(10)" +.LASF2221: + .string "RCU_RSTSCK_FWDGTRSTF BIT(29)" +.LASF4171: + .string "CSR_DPC 0x7b1" +.LASF1477: + .string "EXTI_PD_PD12 BIT(12)" +.LASF1022: + .string "TMDATA1_DB6(regval) (BITS(16,23) & ((uint32_t)(regval) << 16))" +.LASF1801: + .string "GPIO_PORT_SOURCE_GPIOA ((uint8_t)0x00U)" +.LASF200: + .string "__FLT16_MIN__ 6.10351562500000000000000000000000000e-5F16" +.LASF3596: + .string "SIP_SSIP MIP_SSIP" +.LASF2733: + .string "TIMER_CCHP_BRKEN BIT(12)" +.LASF2128: + .string "RCU_INT_HXTALSTBIE BIT(11)" +.LASF3898: + .string "MATCH_FLE_S 0xa0000053" +.LASF3901: + .string "MASK_FLT_S 0xfe00707f" +.LASF563: + .string "ADC_CTL0_DISRC BIT(11)" +.LASF3660: + .string "MATCH_BLTU 0x6063" +.LASF3595: + .string "MIE_MEIE MIP_MEIP" +.LASF295: + .string "__GCC_ATOMIC_LLONG_LOCK_FREE 1" +.LASF2336: + .string "RCU_RTCSRC_LXTAL BDCTL_RTCSRC(1)" +.LASF4054: + .string "MATCH_C_ADD 0x9002" +.LASF1234: + .string "DMA_CH0MADDR(dmax) REG32((dmax) + 0x14U)" +.LASF814: + .string "CAN_FW(canx) REG32((canx) + 0x21CU)" +.LASF1752: + .string "AFIO_PCF0_I2C0_REMAP BIT(1)" +.LASF2605: + .string "TIMER_CHCTL2(timerx) REG32((timerx) + 0x20U)" +.LASF2936: + .string "TIMER_CHVSEL_ENABLE ((uint16_t)TIMER_CFG_OUTSEL)" +.LASF3897: + .string "MASK_FSQRT_D 0xfff0007f" +.LASF2330: + .string "RCU_CKOUT0SRC_CKPLL1 CFG0_CKOUT0SEL(8)" +.LASF3573: + .string "MCONTROL_MATCH_NAPOT 1" +.LASF2567: + .string "SPI_I2S_INT_ERR ((uint8_t)0x02U)" +.LASF3210: + .string "__THROW " +.LASF806: + .string "CAN_RFIFOMI1(canx) REG32((canx) + 0x1C0U)" +.LASF1470: + .string "EXTI_PD_PD5 BIT(5)" +.LASF1420: + .string "EXTI_RTEN_RTEN12 BIT(12)" +.LASF830: + .string "CAN_F15DATA0(canx) REG32((canx) + 0x2B8U)" +.LASF4105: + .string "MASK_CUSTOM3_RD 0x707f" +.LASF4348: + .string "DMA0_Channel4_IRQn" +.LASF1680: + .string "GPIO_OCTL_OCTL13 BIT(13)" +.LASF3827: + .string "MASK_EBREAK 0xffffffff" +.LASF1939: + .string "I2C_STAT1_DUMODF BIT(7)" +.LASF530: + .string "ADC_STAT(adcx) REG32((adcx) + 0x00U)" +.LASF720: + .string "BKP_DATA8 REG16((BKP) + 0x24U)" +.LASF3032: + .string "USART_LBLEN_10B CTL1_LBLEN(0)" +.LASF427: + .string "__int_fast32_t_defined 1" +.LASF1669: + .string "GPIO_OCTL_OCTL2 BIT(2)" +.LASF57: + .string "__INT_FAST8_TYPE__ int" +.LASF1593: + .string "OB_WP_31 ((uint32_t)0x80000000U)" +.LASF1166: + .string "DACC_L12DH_DAC0_DH BITS(4,15)" +.LASF3587: + .string "MIE_SSIE MIP_SSIP" +.LASF3948: + .string "MATCH_FCVT_D_L 0xd2200053" +.LASF4200: + .string "CSR_MHPMCOUNTER28 0xb1c" +.LASF1044: + .string "CAN_ERRN_4 ERR_ERRN(4U)" +.LASF3339: + .string "__size_t" +.LASF3774: + .string "MATCH_DIVUW 0x200503b" +.LASF3018: + .string "USART_PM_EVEN CTL0_PM(2)" +.LASF3926: + .string "MATCH_FCVT_L_D 0xc2200053" +.LASF955: + .string "CAN_BT_SCMOD BIT(31)" +.LASF4180: + .string "CSR_MHPMCOUNTER8 0xb08" +.LASF2691: + .string "TIMER_CHCTL0_CH1CAPPSC BITS(10,11)" +.LASF3761: + .string "MASK_MULHU 0xfe00707f" +.LASF2022: + .string "DBG_ID_ID_CODE BITS(0,31)" +.LASF724: + .string "BKP_DATA12 REG16((BKP) + 0x48U)" +.LASF4144: + .string "CSR_HPMCOUNTER31 0xc1f" +.LASF3779: + .string "MASK_REMUW 0xfe00707f" +.LASF1140: + .string "DAC0_DO REG32(DAC + 0x2CU)" +.LASF2427: + .string "RTC_PSCH_PSC BITS(0,3)" +.LASF1171: + .string "DAC1_DO_DAC1_DO BITS(0,11)" +.LASF1417: + .string "EXTI_RTEN_RTEN9 BIT(9)" +.LASF719: + .string "BKP_DATA7 REG16((BKP) + 0x20U)" +.LASF2257: + .string "RCU_AHB_CKSYS_DIV1 CFG0_AHBPSC(0)" +.LASF2061: + .string "PMU_LVDT_3 CTL_LVDT(3)" +.LASF1544: + .string "OB_FWDGT_SW ((uint8_t)0x01U)" +.LASF4283: + .string "CSR_MHPMCOUNTER13H 0xb8d" +.LASF1330: + .string "ECLIC_PRIGROUP_LEVEL4_PRIO0 4" +.LASF4212: + .string "CSR_MHPMEVENT9 0x329" +.LASF2641: + .string "TIMER_SMCFG_ETPSC BITS(12,13)" +.LASF452: + .string "UINT64_MAX (__UINT64_MAX__)" +.LASF1918: + .string "I2C_DATA_TRB BITS(0,7)" +.LASF3468: + .string "_IONBF 2" +.LASF1987: + .string "I2C_DTCY_2 ((uint32_t)0x00000000U)" +.LASF1578: + .string "OB_WP_16 ((uint32_t)0x00010000U)" +.LASF1737: + .string "GPIO_LOCK_LK6 BIT(6)" +.LASF3217: + .string "__flexarr [0]" +.LASF735: + .string "BKP_DATA23 REG16((BKP) + 0x74U)" +.LASF3946: + .string "MATCH_FCVT_D_WU 0xd2100053" +.LASF3511: + .string "MSTATUS_MPP 0x00001800" +.LASF4041: + .string "MASK_C_BEQZ 0xe003" +.LASF3854: + .string "MATCH_FADD_S 0x53" +.LASF4252: + .string "CSR_HPMCOUNTER13H 0xc8d" +.LASF3146: + .string "ECLIC_INFO_OFFSET 0x4" +.LASF883: + .string "CAN_CTL_TFO BIT(2)" +.LASF3782: + .string "MATCH_AMOXOR_W 0x2000202f" +.LASF2262: + .string "RCU_AHB_CKSYS_DIV64 CFG0_AHBPSC(12)" +.LASF2731: + .string "TIMER_CCHP_IOS BIT(10)" +.LASF3140: + .string "_AC(X,Y) (X ##Y)" +.LASF1773: + .string "AFIO_EXTI7_SS BITS(12, 15)" +.LASF2524: + .string "SPI_PSC_2 CTL0_PSC(0)" +.LASF895: + .string "CAN_STAT_SLPIF BIT(4)" +.LASF3200: + .string "_ATTRIBUTE(attrs) __attribute__ (attrs)" +.LASF59: + .string "__INT_FAST32_TYPE__ int" +.LASF2947: + .string "USART_CTL0(usartx) REG32((usartx) + (0x0000000CU))" +.LASF709: + .string "ADC_OVERSAMPLING_RATIO_MUL256 OVSCR_OVSR(7)" +.LASF752: + .string "BKP_DATA40 REG16((BKP) + 0xB8U)" +.LASF1450: + .string "EXTI_SWIEV_SWIEV4 BIT(4)" +.LASF2830: + .string "TIMER_PSC_RELOAD_UPDATE ((uint32_t)0x00000000U)" +.LASF1553: + .string "FMC_USPC ((uint8_t)0xBBU)" +.LASF2143: + .string "RCU_APB2RST_PCRST BIT(4)" +.LASF714: + .string "BKP_DATA2 REG16((BKP) + 0x0CU)" +.LASF1223: + .string "DAC_TRIANGLE_AMPLITUDE_1023 DAC_WAVE_BIT_WIDTH_10" +.LASF16: + .string "__SIZEOF_INT__ 4" +.LASF1608: + .string "GPIO_OCTL(gpiox) REG32((gpiox) + 0x0CU)" +.LASF1048: + .string "CAN_STATE_PENDING ((uint32_t)0x00000000U)" +.LASF383: + .string "unsigned +0" +.LASF28: + .string "__ORDER_PDP_ENDIAN__ 3412" +.LASF151: + .string "__FLT_DECIMAL_DIG__ 9" +.LASF1255: + .string "DMA_CH6CTL(dmax) REG32((dmax) + 0x80U)" +.LASF1702: + .string "GPIO_BOP_CR3 BIT(19)" +.LASF2485: + .string "SPI_STAT_CRCERR BIT(4)" +.LASF99: + .string "__INT64_MAX__ 0x7fffffffffffffffLL" +.LASF2126: + .string "RCU_INT_LXTALSTBIE BIT(9)" +.LASF2399: + .string "RCU_I2S2SRC_CKSYS ((uint32_t)0x00000000U)" +.LASF3005: + .string "USART_BIT_POS2(val) (((uint32_t)(val) & (0x001F0000U)) >> 16)" +.LASF3899: + .string "MASK_FLE_S 0xfe00707f" +.LASF878: + .string "CAN_RFIFOMP(canx,bank) REG32((canx) + 0x1B4U + ((bank) * 0x10U))" +.LASF3884: + .string "MATCH_FSGNJN_D 0x22001053" +.LASF674: + .string "ADC_CHANNEL_14 ((uint8_t)0x0EU)" +.LASF3956: + .string "MATCH_FLD 0x3007" +.LASF2173: + .string "RCU_AHBEN_SRAMSPEN BIT(2)" +.LASF593: + .string "ADC_OVSCR_OVSEN BIT(0)" +.LASF3877: + .string "MASK_FSUB_D 0xfe00007f" +.LASF2833: + .string "CTL0_CKDIV(regval) ((uint16_t)(BITS(8, 9) & ((uint32_t)(regval) << 8U)))" +.LASF2600: + .string "TIMER_DMAINTEN(timerx) REG32((timerx) + 0x0CU)" +.LASF3957: + .string "MASK_FLD 0x707f" +.LASF416: + .string "__int64_t_defined 1" +.LASF723: + .string "BKP_DATA11 REG16((BKP) + 0x44U)" +.LASF2103: + .string "RCU_CTL_PLL2STB BIT(29)" +.LASF3664: + .string "MATCH_JALR 0x67" +.LASF3462: + .string "__SORD 0x2000" +.LASF2885: + .string "TIMER_OC_CLEAR_DISABLE ((uint16_t)0x0000U)" +.LASF3448: + .string "_funlockfile(fp) (((fp)->_flags & __SSTR) ? 0 : __lock_release_recursive((fp)->_lock))" +.LASF3997: + .string "MASK_C_SDSP 0xe003" +.LASF378: + .string "short" +.LASF1356: + .string "EXMC_MEMORY_TYPE_SRAM SNCTL_NRTP(0)" +.LASF1464: + .string "EXTI_SWIEV_SWIEV18 BIT(18)" +.LASF1523: + .string "FMC_OBSTAT_DATA BITS(10,25)" +.LASF3228: + .string "__GNUCLIKE___OFFSETOF 1" +.LASF771: + .string "BKP_DATA_GET(regval) GET_BITS((uint32_t)(regval), 0, 15)" +.LASF2928: + .string "TIMER_EXT_TRI_PSC_OFF SMCFG_ETPSC(0)" +.LASF2364: + .string "RCU_PREDV1_DIV8 CFG1_PREDV1(7)" +.LASF991: + .string "CAN_FAFIFOR_FAF(regval) BIT(regval)" +.LASF3071: + .string "WWDGT_CFG_PSC_DIV2 CFG_PSC(1)" +.LASF3404: + .string "_REENT_WCRTOMB_STATE(ptr) ((ptr)->_new._reent._wcrtomb_state)" +.LASF4136: + .string "CSR_HPMCOUNTER23 0xc17" +.LASF4406: + .string "GNU C17 10.2.0 -march=rv32imac -mabi=ilp32 -mcmodel=medany -msmall-data-limit= 8 -march=rv32imac -g3 -O0" +.LASF1186: + .string "DAC_WAVE_BIT_WIDTH_1 DWBW(0)" +.LASF1517: + .string "FMC_CTL_ERRIE BIT(10)" +.LASF4315: + .string "CSR_MSUBM 0x7c4" +.LASF748: + .string "BKP_DATA36 REG16((BKP) + 0xA8U)" +.LASF870: + .string "CAN_F27DATA1(canx) REG32((canx) + 0x31CU)" +.LASF734: + .string "BKP_DATA22 REG16((BKP) + 0x70U)" +.LASF1012: + .string "FDATA_MASK_LOW(regval) (BITS(0,15) & ((uint32_t)(regval) << 0))" +.LASF3206: + .string "__need_NULL " +.LASF193: + .string "__FLT16_MIN_EXP__ (-13)" +.LASF2021: + .string "DBG_CTL REG32(DBG + 0x04U)" +.LASF1823: + .string "GPIO_PIN_SOURCE_1 ((uint8_t)0x01U)" +.LASF2704: + .string "TIMER_CHCTL1_CH2CAPFLT BITS(4,7)" +.LASF1666: + .string "GPIO_ISTAT_ISTAT15 BIT(15)" +.LASF3476: + .string "SEEK_END 2" +.LASF3016: + .string "CTL0_PM(regval) (BITS(9,10) & ((uint32_t)(regval) << 9))" +.LASF2466: + .string "SPI_CTL0_SWNSSEN BIT(9)" +.LASF2546: + .string "I2S_MCKOUT_DISABLE ((uint32_t)0x00000000U)" +.LASF591: + .string "ADC_RDATA_RDATA BITS(0,15)" +.LASF938: + .string "CAN_INTEN_PERRIE BIT(9)" +.LASF1775: + .string "AFIO_EXTI9_SS BITS(4, 7)" +.LASF3242: + .string "__CC_SUPPORTS___INLINE__ 1" +.LASF2120: + .string "RCU_INT_HXTALSTBIF BIT(3)" +.LASF358: + .string "__SVID_VISIBLE 0" +.LASF4357: + .string "TIMER0_BRK_IRQn" +.LASF2104: + .string "RCU_CFG0_SCS BITS(0,1)" +.LASF2673: + .string "TIMER_SWEVG_CH1G BIT(2)" +.LASF1449: + .string "EXTI_SWIEV_SWIEV3 BIT(3)" +.LASF1663: + .string "GPIO_ISTAT_ISTAT12 BIT(12)" +.LASF747: + .string "BKP_DATA35 REG16((BKP) + 0xA4U)" +.LASF3371: + .string "_REENT_EMERGENCY_SIZE 25" +.LASF1246: + .string "DMA_CH3MADDR(dmax) REG32((dmax) + 0x50U)" +.LASF1098: + .string "CAN_FILTERMODE_LIST ((uint8_t)0x01U)" +.LASF3814: + .string "MATCH_AMOMINU_D 0xc000302f" +.LASF2240: + .string "APB1RST_REG_OFFSET 0x10U" +.LASF53: + .string "__UINT_LEAST8_TYPE__ unsigned char" +.LASF3867: + .string "MASK_FSGNJX_S 0xfe00707f" +.LASF4032: + .string "MATCH_C_AND 0x8c61" +.LASF1887: + .string "I2C_STAT0(i2cx) REG32((i2cx) + 0x14U)" +.LASF3308: + .string "_Null_unspecified " +.LASF2699: + .string "TIMER_CHCTL1_CH3COMFEN BIT(10)" +.LASF2263: + .string "RCU_AHB_CKSYS_DIV128 CFG0_AHBPSC(13)" +.LASF822: + .string "CAN_F7DATA0(canx) REG32((canx) + 0x278U)" +.LASF2227: + .string "RCU_CFG1_PLL1MF BITS(8,11)" +.LASF27: + .string "__ORDER_BIG_ENDIAN__ 4321" +.LASF722: + .string "BKP_DATA10 REG16((BKP) + 0x40U)" +.LASF939: + .string "CAN_INTEN_BOIE BIT(10)" +.LASF3547: + .string "DCSR_CAUSE_DEBUGINT 3" +.LASF1821: + .string "GPIO_EVENT_PIN_15 ((uint8_t)0x0FU)" +.LASF2876: + .string "TIMER_OC_MODE_LOW ((uint16_t)0x0040U)" +.LASF3874: + .string "MATCH_FADD_D 0x2000053" +.LASF1792: + .string "GPIO_MODE_AF_PP ((uint8_t)0x18U)" +.LASF3580: + .string "MIP_MSIP (1 << IRQ_M_SOFT)" +.LASF3207: + .string "_SYS_CDEFS_H_ " +.LASF3345: + .string "_NULL 0" +.LASF2730: + .string "TIMER_CCHP_PROT BITS(8,9)" +.LASF4107: + .string "MASK_CUSTOM3_RD_RS1 0x707f" +.LASF1226: + .string "GD32VF103_DMA_H " +.LASF3642: + .string "write_fpu(reg,val) ({ if (__builtin_constant_p(val) && (unsigned long)(val) < 32) asm volatile (\"fmv.w.x \" #reg \", %0\" :: \"i\"(val)); else asm volatile (\"fmv.w.x \" #reg \", %0\" :: \"r\"(val)); })" +.LASF3378: + .string "_REENT_CHECK_RAND48(ptr) " +.LASF221: + .string "__FLT64_MANT_DIG__ 53" +.LASF4373: + .string "EXTI10_15_IRQn" +.LASF1157: + .string "DAC_SWT_SWTR1 BIT(1)" +.LASF2014: + .string "FWDGT_PSC_TIMEOUT ((uint32_t)0x000FFFFFU)" +.LASF2602: + .string "TIMER_SWEVG(timerx) REG32((timerx) + 0x14U)" +.LASF4150: + .string "CSR_SCAUSE 0x142" +.LASF1087: + .string "CAN_FIFO0 ((uint8_t)0x00U)" +.LASF3680: + .string "MATCH_XORI 0x4013" +.LASF2010: + .string "FWDGT_WRITEACCESS_ENABLE ((uint16_t)0x5555U)" +.LASF2700: + .string "TIMER_CHCTL1_CH3COMSEN BIT(11)" +.LASF3733: + .string "MASK_LW 0x707f" +.LASF94: + .string "__SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)" +.LASF1949: + .string "I2C_REGIDX_BIT2(regidx,bitpos,regidx2,bitpos2) (((uint32_t)(regidx2) << 22) | (uint32_t)((bitpos2) << 16) | (((uint32_t)(regidx) << 6) | (uint32_t)(bitpos)))" +.LASF3502: + .string "MSTATUS_UIE 0x00000001" +.LASF753: + .string "BKP_DATA41 REG16((BKP) + 0xBCU)" +.LASF2370: + .string "RCU_PREDV1_DIV14 CFG1_PREDV1(13)" +.LASF2076: + .string "RCU RCU_BASE" +.LASF2750: + .string "TIMER_INT_FLAG_CH1 TIMER_INT_CH1" +.LASF4157: + .string "CSR_MIDELEG 0x303" +.LASF252: + .string "__FLT32X_DIG__ 15" +.LASF2635: + .string "TIMER_CTL1_ISO2N BIT(13)" +.LASF2824: + .string "CTL0_CAM(regval) ((uint16_t)(BITS(5, 6) & ((uint32_t)(regval) << 5U)))" +.LASF2043: + .string "PMU PMU_BASE" +.LASF4071: + .string "MASK_CUSTOM0_RD_RS1 0x707f" +.LASF4276: + .string "CSR_MHPMCOUNTER6H 0xb86" +.LASF3326: + .string "__nosanitizeaddress " +.LASF746: + .string "BKP_DATA34 REG16((BKP) + 0xA0U)" +.LASF2616: + .string "TIMER_DMATB(timerx) REG32((timerx) + 0x4CU)" +.LASF2547: + .string "I2S_MCKOUT_ENABLE SPI_I2SPSC_MCKOEN" +.LASF3807: + .string "MASK_AMOOR_D 0xf800707f" +.LASF618: + .string "ADC_DATAALIGN_LEFT ADC_CTL1_DAL" +.LASF368: + .string "___int_least8_t_defined 1" +.LASF2278: + .string "RCU_CKADC_CKAPB2_DIV2 ((uint32_t)0x00000000U)" +.LASF3562: + .string "MCONTROL_EXECUTE (1<<2)" +.LASF2180: + .string "RCU_APB2EN_PBEN BIT(3)" +.LASF801: + .string "CAN_TMDATA12(canx) REG32((canx) + 0x1ACU)" +.LASF669: + .string "ADC_CHANNEL_9 ((uint8_t)0x09U)" +.LASF1902: + .string "I2C_CTL0_POAP BIT(11)" +.LASF2561: + .string "SPI_DMA_TRANSMIT ((uint8_t)0x00U)" +.LASF4405: + .string "_init" +.LASF1744: + .string "GPIO_LOCK_LK13 BIT(13)" +.LASF396: + .string "__FAST8 " +.LASF2053: + .string "PMU_CS_WUF BIT(0)" +.LASF647: + .string "IOFFX_IOFF(regval) (BITS(0,11) & ((uint32_t)(regval) << 0))" +.LASF1796: + .string "GPIO_EVENT_PORT_GPIOA ((uint8_t)0x00U)" +.LASF571: + .string "ADC_CTL1_CLB BIT(2)" +.LASF1708: + .string "GPIO_BOP_CR9 BIT(25)" +.LASF629: + .string "CTL1_ETSIC(regval) (BITS(12,14) & ((uint32_t)(regval) << 12))" +.LASF3816: + .string "MATCH_AMOMAXU_D 0xe000302f" +.LASF1759: + .string "AFIO_PCF0_TIMER3_REMAP BIT(12)" +.LASF3365: + .string "_RAND48_SEED_1 (0xabcd)" +.LASF2313: + .string "RCU_PLL_MUL27 (PLLMF_4 | CFG0_PLLMF(10))" +.LASF3545: + .string "DCSR_CAUSE_SWBP 1" +.LASF529: + .string "ADC1 (ADC_BASE + 0x400U)" +.LASF3906: + .string "MATCH_FLT_D 0xa2001053" +.LASF759: + .string "BKP_OCTL_COEN BIT(7)" +.LASF2487: + .string "SPI_STAT_RXORERR BIT(6)" +.LASF4343: + .string "EXTI4_IRQn" +.LASF1163: + .string "DAC1_R8DH_DAC1_DH BITS(0,7)" +.LASF2404: + .string "RCU_DEEPSLEEP_V_1_0 DSV_DSLPVS(2)" +.LASF2401: + .string "DSV_DSLPVS(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))" +.LASF2913: + .string "TIMER_TRI_OUT_SRC_O1CPRE CTL1_MMC(5)" +.LASF2758: + .string "TIMER_FLAG_CH1 TIMER_INTF_CH1IF" +.LASF3417: + .string "_BLKCNT_T_DECLARED " +.LASF1113: + .string "CAN_INT_ERRN CAN_INTEN_ERRNIE" +.LASF1064: + .string "CAN_BT_BS1_8TQ ((uint8_t)0x07U)" +.LASF310: + .string "__riscv_float_abi_soft 1" +.LASF2381: + .string "RCU_PLL1_MUL15 CFG1_PLL1MF(13)" +.LASF1232: + .string "DMA_CH0CNT(dmax) REG32((dmax) + 0x0CU)" +.LASF2952: + .string "USART_STAT_FERR BIT(1)" +.LASF3556: + .string "MCONTROL_CHAIN (1<<11)" +.LASF2914: + .string "TIMER_TRI_OUT_SRC_O2CPRE CTL1_MMC(6)" +.LASF1592: + .string "OB_WP_30 ((uint32_t)0x40000000U)" +.LASF3268: + .string "__malloc_like __attribute__((__malloc__))" +.LASF2328: + .string "RCU_CKOUT0SRC_HXTAL CFG0_CKOUT0SEL(6)" +.LASF3913: + .string "MASK_FCVT_WU_S 0xfff0007f" +.LASF2029: + .string "DBG_CTL_TIMER1_HOLD BIT(11)" +.LASF239: + .string "__FLT128_MIN_10_EXP__ (-4931)" +.LASF1369: + .string "EXTI_PD REG32(EXTI + 0x14U)" +.LASF1758: + .string "AFIO_PCF0_TIMER2_REMAP BITS(10, 11)" +.LASF1960: + .string "I2C_TRANSMITTER ((uint32_t)0xFFFFFFFEU)" +.LASF4213: + .string "CSR_MHPMEVENT10 0x32a" +.LASF708: + .string "ADC_OVERSAMPLING_RATIO_MUL128 OVSCR_OVSR(6)" +.LASF1777: + .string "AFIO_EXTI11_SS BITS(12, 15)" +.LASF519: + .string "ADC_BASE (APB2_BUS_BASE + 0x00002400U)" +.LASF4158: + .string "CSR_MIE 0x304" +.LASF2434: + .string "RTC_ALRML_ALRM BITS(0,15)" +.LASF3688: + .string "MATCH_ANDI 0x7013" +.LASF545: + .string "ADC_IDATA0(adcx) REG32((adcx) + 0x3CU)" +.LASF4277: + .string "CSR_MHPMCOUNTER7H 0xb87" +.LASF2457: + .string "SPI_I2SCTL(spix) REG32((spix) + 0x1CU)" +.LASF1770: + .string "AFIO_EXTI4_SS BITS(0, 3)" +.LASF3671: + .string "MASK_AUIPC 0x7f" +.LASF3859: + .string "MASK_FMUL_S 0xfe00007f" +.LASF3931: + .string "MASK_FMV_X_D 0xfff0707f" +.LASF4186: + .string "CSR_MHPMCOUNTER14 0xb0e" +.LASF2268: + .string "RCU_APB1_CKAHB_DIV2 CFG0_APB1PSC(4)" +.LASF3285: + .string "__rangeof(type,start,end) (__offsetof(type, end) - __offsetof(type, start))" +.LASF3576: + .string "MCONTROL_MATCH_MASK_LOW 4" +.LASF905: + .string "CAN_TSTAT_MTF1 BIT(8)" +.LASF1785: + .string "GPIO_MODE_AIN ((uint8_t)0x00U)" +.LASF517: + .string "EXTI_BASE (APB2_BUS_BASE + 0x00000400U)" +.LASF2542: + .string "I2S_FRAMEFORMAT_DT16B_CH16B I2SCTL_DTLEN(0)" +.LASF4317: + .string "CAUSE_FAULT_FETCH 0x1" +.LASF1070: + .string "CAN_BT_BS1_14TQ ((uint8_t)0x0DU)" +.LASF1505: + .string "FMC_STAT_BUSY BIT(0)" +.LASF2417: + .string "RTC_ALRML REG32(RTC + 0x24U)" +.LASF3643: + .string "read_csr(reg) ({ unsigned long __tmp; asm volatile (\"csrr %0, \" #reg : \"=r\"(__tmp)); __tmp; })" +.LASF2663: + .string "TIMER_INTF_CH3IF BIT(4)" +.LASF1376: + .string "EXTI_INTEN_INTEN6 BIT(6)" +.LASF594: + .string "ADC_OVSCR_OVSR BITS(2,4)" +.LASF3442: + .string "_SUSECONDS_T_DECLARED " +.LASF1622: + .string "GPIO_CTL0_CTL1 BITS(6, 7)" +.LASF2118: + .string "RCU_INT_LXTALSTBIF BIT(1)" +.LASF4345: + .string "DMA0_Channel1_IRQn" +.LASF4395: + .string "signed char" +.LASF163: + .string "__DBL_MIN_10_EXP__ (-307)" +.LASF333: + .string "HXTAL_VALUE ((uint32_t)8000000)" +.LASF610: + .string "ADC_DAUL_INSERTED_PARALLEL_REGULAL_FOLLOWUP_FAST CTL0_SYNCM(3)" +.LASF3510: + .string "MSTATUS_SPP 0x00000100" +.LASF236: + .string "__FLT128_MANT_DIG__ 113" +.LASF1847: + .string "GPIO_PIN_9 BIT(9)" +.LASF134: + .string "__UINT_FAST32_MAX__ 0xffffffffU" +.LASF2154: + .string "RCU_APB1RST_TIMER4RST BIT(3)" +.LASF627: + .string "ADC0_1_EXTTRIG_REGULAR_EXTI_11 CTL1_ETSRC(6)" +.LASF2089: + .string "RCU_DSV REG32(RCU + 0x34U)" +.LASF1000: + .string "CAN_BIT_POS1(val) ((uint32_t)(val) & 0x1FU)" +.LASF3965: + .string "MASK_FMSUB_S 0x600007f" +.LASF4330: + .string "CLIC_INT_TMR" +.LASF43: + .string "__INT32_TYPE__ long int" +.LASF2661: + .string "TIMER_INTF_CH1IF BIT(2)" +.LASF392: + .string "__INT8 \"hh\"" +.LASF2288: + .string "RCU_PLL_MUL2 CFG0_PLLMF(0)" +.LASF1761: + .string "AFIO_PCF0_PD01_REMAP BIT(15)" +.LASF1486: + .string "OB OB_BASE" +.LASF3266: + .string "__generic(expr,t,yes,no) _Generic(expr, t: yes, default: no)" +.LASF497: + .string "SRAM_BASE ((uint32_t)0x20000000U)" +.LASF3187: + .string "__OBSOLETE_MATH_DEFAULT 1" +.LASF3681: + .string "MASK_XORI 0x707f" +.LASF3810: + .string "MATCH_AMOMIN_D 0x8000302f" +.LASF244: + .string "__FLT128_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F128" +.LASF4236: + .string "CSR_MARCHID 0xf12" +.LASF3034: + .string "CTL1_CLEN(regval) (BIT(8) & ((uint32_t)(regval) << 8))" +.LASF852: + .string "CAN_F9DATA1(canx) REG32((canx) + 0x28CU)" +.LASF3579: + .string "MIP_HSIP (1 << IRQ_H_SOFT)" +.LASF1142: + .string "DAC_CTL_DEN0 BIT(0)" +.LASF4388: + .string "CAN1_TX_IRQn" +.LASF2539: + .string "I2S_AUDIOSAMPLE_96K ((uint32_t)96000U)" +.LASF3333: + .string "_SYS_REENT_H_ " +.LASF433: + .string "INT8_MAX (__INT8_MAX__)" +.LASF3753: + .string "MASK_FENCE_I 0x707f" +.LASF1482: + .string "EXTI_PD_PD17 BIT(17)" +.LASF540: + .string "ADC_WDLT(adcx) REG32((adcx) + 0x28U)" +.LASF1065: + .string "CAN_BT_BS1_9TQ ((uint8_t)0x08U)" +.LASF1714: + .string "GPIO_BOP_CR15 BIT(31)" +.LASF121: + .string "__UINT32_C(c) c ## UL" +.LASF1612: + .string "AFIO_EC REG32(AFIO + 0x00U)" +.LASF2573: + .string "I2S_INT_FLAG_TXURERR ((uint8_t)0x05U)" +.LASF3646: + .string "set_csr(reg,bit) ({ unsigned long __tmp; if (__builtin_constant_p(bit) && (unsigned long)(bit) < 32) asm volatile (\"csrrs %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"i\"(bit)); else asm volatile (\"csrrs %0, \" #reg \", %1\" : \"=r\"(__tmp) : \"r\"(bit)); __tmp; })" +.LASF1748: + .string "AFIO_EC_PIN BITS(0, 3)" +.LASF1182: + .string "DAC_WAVE_DISABLE CTL_DWM(0)" +.LASF77: + .string "__PTRDIFF_MAX__ 0x7fffffff" +.LASF2799: + .string "TIMER_DMACFG_DMATC_2TRANSFER DMACFG_DMATC(1)" +.LASF1687: + .string "GPIO_BOP_BOP4 BIT(4)" +.LASF3923: + .string "MASK_FCVT_W_D 0xfff0007f" +.LASF2051: + .string "PMU_CTL_LVDT BITS(5,7)" +.LASF3626: + .string "PTE_R 0x002" +.LASF3711: + .string "MASK_ADDIW 0x707f" +.LASF3785: + .string "MASK_AMOOR_W 0xf800707f" +.LASF2927: + .string "SMCFG_ETPSC(regval) (BITS(12, 13) & ((uint32_t)(regval) << 12U))" +.LASF1654: + .string "GPIO_ISTAT_ISTAT3 BIT(3)" +.LASF3297: + .string "__sym_default(sym,impl,verid) __asm__(\".symver \" #impl \", \" #sym \"@@\" #verid)" +.LASF1425: + .string "EXTI_RTEN_RTEN17 BIT(17)" +.LASF2482: + .string "SPI_STAT_TBE BIT(1)" +.LASF4131: + .string "CSR_HPMCOUNTER18 0xc12" +.LASF1437: + .string "EXTI_FTEN_FTEN10 BIT(10)" +.LASF388: + .string "int +2" +.LASF3496: + .string "L_ctermid 16" +.LASF2388: + .string "RCU_PLL2_MUL11 CFG1_PLL2MF(9)" +.LASF3619: + .string "DEFAULT_RSTVEC 0x00001000" +.LASF4272: + .string "CSR_MINSTRETH 0xb82" +.LASF2284: + .string "RCU_PLLSRC_IRC8M_DIV2 ((uint32_t)0x00000000U)" +.LASF2506: + .string "SPI_SLAVE ((uint32_t)0x00000000U)" +.LASF3514: + .string "MSTATUS_MPRV 0x00020000" +.LASF3575: + .string "MCONTROL_MATCH_LT 3" +.LASF2603: + .string "TIMER_CHCTL0(timerx) REG32((timerx) + 0x18U)" +.LASF2411: + .string "RTC_PSCL REG32(RTC + 0x0CU)" +.LASF220: + .string "__FLT32_HAS_QUIET_NAN__ 1" +.LASF1083: + .string "CAN_MAILBOX2 ((uint8_t)0x02U)" +.LASF4072: + .string "MATCH_CUSTOM0_RD_RS1_RS2 0x700b" +.LASF8: + .string "__VERSION__ \"10.2.0\"" +.LASF185: + .string "__LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L" +.LASF48: + .string "__UINT64_TYPE__ long long unsigned int" +.LASF1061: + .string "CAN_BT_BS1_5TQ ((uint8_t)0x04U)" +.LASF874: + .string "CAN_TMDATA1(canx,bank) REG32((canx) + 0x18CU + ((bank) * 0x10U))" +.LASF460: + .string "INT_FAST16_MAX (__INT_FAST16_MAX__)" +.LASF996: + .string "CAN_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF3883: + .string "MASK_FSGNJ_D 0xfe00707f" +.LASF2669: + .string "TIMER_INTF_CH2OF BIT(11)" +.LASF1536: + .string "FMC_CTL_REG_OFFSET 0x10U" +.LASF2828: + .string "TIMER_COUNTER_CENTER_BOTH CTL0_CAM(3)" +.LASF1778: + .string "AFIO_EXTI12_SS BITS(0, 3)" +.LASF1161: + .string "DAC1_R12DH_DAC1_DH BITS(0,11)" +.LASF1495: + .string "FMC_PID REG32((FMC) + 0x100U)" +.LASF3940: + .string "MATCH_FCVT_S_LU 0xd0300053" +.LASF3167: + .string "ECLIC_GROUP_LEVEL3_PRIO1 3" +.LASF1435: + .string "EXTI_FTEN_FTEN8 BIT(8)" +.LASF3630: + .string "PTE_G 0x020" +.LASF514: + .string "PMU_BASE (APB1_BUS_BASE + 0x00007000U)" +.LASF1375: + .string "EXTI_INTEN_INTEN5 BIT(5)" +.LASF1840: + .string "GPIO_PIN_2 BIT(2)" +.LASF2397: + .string "RCU_I2S1SRC_CKSYS ((uint32_t)0x00000000U)" +.LASF982: + .string "CAN_RFIFOMDATA0_DB3 BITS(24,31)" +.LASF2291: + .string "RCU_PLL_MUL5 CFG0_PLLMF(3)" +.LASF453: + .string "INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1)" +.LASF286: + .string "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1" +.LASF1812: + .string "GPIO_EVENT_PIN_6 ((uint8_t)0x06U)" +.LASF755: + .string "BKP_TPCTL REG16((BKP) + 0x30U)" +.LASF2115: + .string "RCU_CFG0_ADCPSC_2 BIT(28)" +.LASF2007: + .string "FWDGT_PSC_DIV64 ((uint8_t)PSC_PSC(4))" +.LASF3047: + .string "USART_DENT_ENABLE CLT2_DENT(1)" +.LASF4140: + .string "CSR_HPMCOUNTER27 0xc1b" +.LASF442: + .string "INT_LEAST16_MAX (__INT_LEAST16_MAX__)" +.LASF2512: + .string "SPI_TRANSMODE_BDTRANSMIT (SPI_CTL0_BDEN | SPI_CTL0_BDOEN)" +.LASF309: + .string "__riscv_xlen 32" +.LASF3538: + .string "DCSR_STOPTIME (1<<9)" +.LASF2797: + .string "DMACFG_DMATC(regval) (BITS(8, 12) & ((uint32_t)(regval) << 8U))" +.LASF281: + .string "__REGISTER_PREFIX__ " +.LASF3413: + .string "_GLOBAL_REENT _global_impure_ptr" +.LASF1633: + .string "GPIO_CTL0_MD7 BITS(28, 29)" +.LASF20: + .string "__SIZEOF_FLOAT__ 4" +.LASF2949: + .string "USART_CTL2(usartx) REG32((usartx) + (0x00000014U))" +.LASF3849: + .string "MASK_CSRRWI 0x707f" +.LASF645: + .string "ADC_SAMPLETIME_71POINT5 SAMPTX_SPT(6)" +.LASF836: + .string "CAN_F21DATA0(canx) REG32((canx) + 0x2E8U)" +.LASF1428: + .string "EXTI_FTEN_FTEN1 BIT(1)" +.LASF2896: + .string "TIMER_IC_PSC_DIV4 ((uint16_t)0x0008U)" +.LASF3676: + .string "MATCH_SLTI 0x2013" +.LASF985: + .string "CAN_RFIFOMDATA1_DB6 BITS(16,23)" +.LASF1268: + .string "DMA_CHXCTL_FTFIE BIT(1)" +.LASF1245: + .string "DMA_CH3PADDR(dmax) REG32((dmax) + 0x4CU)" +.LASF1410: + .string "EXTI_RTEN_RTEN2 BIT(2)" +.LASF1256: + .string "DMA_CH6CNT(dmax) REG32((dmax) + 0x84U)" +.LASF2959: + .string "USART_STAT_LBDF BIT(8)" +.LASF585: + .string "ADC_WDLT_WDLT BITS(0,11)" +.LASF3300: + .string "__RCSID_SOURCE(s) struct __hack" +.LASF854: + .string "CAN_F11DATA1(canx) REG32((canx) + 0x29CU)" +.LASF744: + .string "BKP_DATA32 REG16((BKP) + 0x98U)" +.LASF1830: + .string "GPIO_PIN_SOURCE_8 ((uint8_t)0x08U)" +.LASF3655: + .string "MASK_BNE 0x707f" +.LASF1054: + .string "CAN_BT_SJW_2TQ ((uint8_t)0x01U)" +.LASF376: + .string "unsigned" +.LASF476: + .string "WCHAR_MIN (__WCHAR_MIN__)" +.LASF1919: + .string "I2C_STAT0_SBSEND BIT(0)" +.LASF523: + .string "CRC_BASE (AHB1_BUS_BASE + 0x0000B000U)" +.LASF3444: + .string "__need_inttypes" +.LASF2564: + .string "SPI_CRC_RX ((uint8_t)0x01U)" +.LASF2751: + .string "TIMER_INT_FLAG_CH2 TIMER_INT_CH2" +.LASF2608: + .string "TIMER_CAR(timerx) REG32((timerx) + 0x2CU)" +.LASF3039: + .string "USART_CPH_2CK CTL1_CPH(1)" +.LASF2351: + .string "RCU_PREDV0_DIV12 CFG1_PREDV0(11)" +.LASF4080: + .string "MATCH_CUSTOM1_RD 0x402b" +.LASF1526: + .string "FMC_PID_PID BITS(0,31)" +.LASF4049: + .string "MASK_C_LWSP 0xe003" +.LASF140: + .string "__GCC_IEC_559_COMPLEX 0" +.LASF153: + .string "__FLT_NORM_MAX__ 3.40282346638528859811704183484516925e+38F" +.LASF219: + .string "__FLT32_HAS_INFINITY__ 1" +.LASF2294: + .string "RCU_PLL_MUL8 CFG0_PLLMF(6)" +.LASF1484: + .string "GD32VF103_FMC_H " +.LASF3714: + .string "MATCH_SRLIW 0x501b" +.LASF4191: + .string "CSR_MHPMCOUNTER19 0xb13" +.LASF2688: + .string "TIMER_CHCTL0_CH1COMCEN BIT(15)" +.LASF4237: + .string "CSR_MIMPID 0xf13" +.LASF2938: + .string "GD32VF103_USART_H " +.LASF24: + .string "__CHAR_BIT__ 8" +.LASF2900: + .string "TIMER_SMCFG_TRGSEL_ITI1 SMCFG_TRGSEL(1)" +.LASF3563: + .string "MCONTROL_STORE (1<<1)" +.LASF3665: + .string "MASK_JALR 0x707f" +.LASF3283: + .string "__hidden __attribute__((__visibility__(\"hidden\")))" +.LASF2886: + .string "TIMER_UPDATECTL_CCU ((uint32_t)0x00000000U)" +.LASF3290: + .string "__strfmonlike(fmtarg,firstvararg) __attribute__((__format__ (__strfmon__, fmtarg, firstvararg)))" +.LASF3042: + .string "USART_CPL_HIGH CTL1_CPL(1)" +.LASF716: + .string "BKP_DATA4 REG16((BKP) + 0x14U)" +.LASF203: + .string "__FLT16_HAS_DENORM__ 1" +.LASF1191: + .string "DAC_WAVE_BIT_WIDTH_6 DWBW(5)" +.LASF2425: + .string "RTC_CTL_CMF BIT(4)" +.LASF3394: + .string "_REENT_ASCTIME_BUF(ptr) ((ptr)->_new._reent._asctime_buf)" +.LASF1170: + .string "DAC0_DO_DAC0_DO BITS(0,11)" +.LASF3857: + .string "MASK_FSUB_S 0xfe00007f" +.LASF4185: + .string "CSR_MHPMCOUNTER13 0xb0d" +.LASF3302: + .string "__COPYRIGHT(s) struct __hack" +.LASF479: + .string "WINT_MIN (__WINT_MIN__)" +.LASF732: + .string "BKP_DATA20 REG16((BKP) + 0x68U)" +.LASF2047: + .string "PMU_CTL_STBMOD BIT(1)" +.LASF1825: + .string "GPIO_PIN_SOURCE_3 ((uint8_t)0x03U)" +.LASF1930: + .string "I2C_STAT0_PECERR BIT(12)" +.LASF335: + .string "HXTAL_STARTUP_TIMEOUT ((uint16_t)0xFFFF)" +.LASF254: + .string "__FLT32X_MIN_10_EXP__ (-307)" +.LASF1929: + .string "I2C_STAT0_OUERR BIT(11)" +.LASF1402: + .string "EXTI_EVEN_EVEN13 BIT(13)" +.LASF1431: + .string "EXTI_FTEN_FTEN4 BIT(4)" +.LASF637: + .string "ADC0_1_EXTTRIG_INSERTED_NONE CTL1_ETSIC(7)" +.LASF1534: + .string "FMC_REG_OFFSET_GET(flag) ((uint32_t)(flag) >> 12)" +.LASF3453: + .string "__SRW 0x0010" +.LASF542: + .string "ADC_RSQ1(adcx) REG32((adcx) + 0x30U)" +.LASF3368: + .string "_RAND48_MULT_1 (0xdeec)" +.LASF1793: + .string "GPIO_OSPEED_10MHZ ((uint8_t)0x01U)" +.LASF3980: + .string "MATCH_C_ADDI16SP 0x6101" +.LASF743: + .string "BKP_DATA31 REG16((BKP) + 0x94U)" +.LASF4020: + .string "MATCH_C_SRLI 0x8001" +.LASF3494: + .string "getchar_unlocked() _getchar_unlocked()" +.LASF92: + .string "__INTMAX_WIDTH__ 64" +.LASF2490: + .string "SPI_DATA_DATA BITS(0,15)" +.LASF2171: + .string "RCU_AHBEN_DMA0EN BIT(0)" +.LASF287: + .string "__GCC_ATOMIC_BOOL_LOCK_FREE 1" +.LASF635: + .string "ADC0_1_EXTTRIG_INSERTED_T3_TRGO CTL1_ETSIC(5)" +.LASF3361: + .string "_ATEXIT_INIT {_NULL, 0, {_NULL}, {{_NULL}, {_NULL}, 0, 0}}" +.LASF3425: + .string "_FSBLKCNT_T_DECLARED " +.LASF4336: + .string "RTC_IRQn" +.LASF3895: + .string "MASK_FCVT_D_S 0xfff0007f" +.LASF1888: + .string "I2C_STAT1(i2cx) REG32((i2cx) + 0x18U)" +.LASF338: + .string "IRC40K_VALUE ((uint32_t)40000)" +.LASF4088: + .string "MATCH_CUSTOM2_RS1 0x205b" +.LASF3659: + .string "MASK_BGE 0x707f" +.LASF2194: + .string "RCU_APB1EN_TIMER6EN BIT(5)" +.LASF3572: + .string "MCONTROL_MATCH_EQUAL 0" +.LASF670: + .string "ADC_CHANNEL_10 ((uint8_t)0x0AU)" +.LASF1021: + .string "TMDATA1_DB5(regval) (BITS(8,15) & ((uint32_t)(regval) << 8))" +.LASF2302: + .string "RCU_PLL_MUL16 CFG0_PLLMF(14)" +.LASF3112: + .string "_WCHAR_T_ " +.LASF2272: + .string "CFG0_APB2PSC(regval) (BITS(11,13) & ((uint32_t)(regval) << 11))" +.LASF1688: + .string "GPIO_BOP_BOP5 BIT(5)" +.LASF4057: + .string "MASK_C_FSDSP 0xe003" +.LASF3082: + .string "_PTRDIFF_T_ " +.LASF2084: + .string "RCU_APB1EN REG32(RCU + 0x1CU)" +.LASF483: + .string "UINT16_C(x) __UINT16_C(x)" +.LASF1635: + .string "GPIO_CTL1_MD8 BITS(0, 1)" +.LASF3909: + .string "MASK_FEQ_D 0xfe00707f" +.LASF4056: + .string "MATCH_C_FSDSP 0xa002" +.LASF650: + .string "RSQ0_RL(regval) (BITS(20,23) & ((uint32_t)(regval) << 20))" +.LASF3888: + .string "MATCH_FMIN_D 0x2a000053" +.LASF2647: + .string "TIMER_DMAINTEN_CH2IE BIT(3)" +.LASF3758: + .string "MATCH_MULHSU 0x2002033" +.LASF3373: + .string "_REENT_SIGNAL_SIZE 24" +.LASF882: + .string "CAN_CTL_SLPWMOD BIT(1)" +.LASF847: + .string "CAN_F4DATA1(canx) REG32((canx) + 0x264U)" +.LASF4340: + .string "EXTI1_IRQn" +.LASF1883: + .string "I2C_CTL1(i2cx) REG32((i2cx) + 0x04U)" +.LASF1522: + .string "FMC_OBSTAT_USER BITS(2,9)" +.LASF3644: + .string "write_csr(reg,val) ({ if (__builtin_constant_p(val) && (unsigned long)(val) < 32) asm volatile (\"csrw \" #reg \", %0\" :: \"i\"(val)); else asm volatile (\"csrw \" #reg \", %0\" :: \"r\"(val)); })" +.LASF319: + .string "__ELF__ 1" +.LASF715: + .string "BKP_DATA3 REG16((BKP) + 0x10U)" +.LASF238: + .string "__FLT128_MIN_EXP__ (-16381)" +.LASF130: + .string "__INT_FAST64_MAX__ 0x7fffffffffffffffLL" +.LASF2664: + .string "TIMER_INTF_CMTIF BIT(5)" +.LASF2459: + .string "SPI_CTL0_CKPH BIT(0)" +.LASF4017: + .string "MASK_C_LI 0xe003" +.LASF4324: + .string "CAUSE_USER_ECALL 0x8" +.LASF3959: + .string "MASK_FSW 0x707f" +.LASF2151: + .string "RCU_APB1RST_TIMER1RST BIT(0)" +.LASF2122: + .string "RCU_INT_PLL1STBIF BIT(5)" +.LASF2625: + .string "TIMER_CTL1_CCSE BIT(0)" +.LASF3743: + .string "MASK_SB 0x707f" +.LASF2680: + .string "TIMER_CHCTL0_CH0COMFEN BIT(2)" +.LASF3712: + .string "MATCH_SLLIW 0x101b" +.LASF2862: + .string "TIMER_CCXN_ENABLE ((uint16_t)0x0004U)" +.LASF2713: + .string "TIMER_CHCTL2_CH1NEN BIT(6)" +.LASF2793: + .string "TIMER_DMACFG_DMATA_CH2CV DMACFG_DMATA(15)" +.LASF3847: + .string "MASK_CSRRC 0x707f" +.LASF742: + .string "BKP_DATA30 REG16((BKP) + 0x90U)" +.LASF816: + .string "CAN_F1DATA0(canx) REG32((canx) + 0x248U)" +.LASF3312: + .string "__datatype_type_tag(kind,type) " +.LASF3973: + .string "MASK_FMSUB_D 0x600007f" +.LASF2086: + .string "RCU_RSTSCK REG32(RCU + 0x24U)" +.LASF970: + .string "CAN_TMDATA1_DB6 BITS(16,23)" +.LASF1228: + .string "DMA1 (DMA_BASE + 0x0400U)" +.LASF3081: + .string "__PTRDIFF_T " +.LASF2453: + .string "SPI_DATA(spix) REG32((spix) + 0x0CU)" +.LASF2643: + .string "TIMER_SMCFG_ETP BIT(15)" +.LASF2951: + .string "USART_STAT_PERR BIT(0)" +.LASF1037: + .string "GET_ERR_TECNT(regval) GET_BITS((uint32_t)(regval), 16U, 23U)" +.LASF2052: + .string "PMU_CTL_BKPWEN BIT(8)" +.LASF2239: + .string "AHBRST_REG_OFFSET 0x28U" +.LASF432: + .string "INT8_MIN (-__INT8_MAX__ - 1)" +.LASF2628: + .string "TIMER_CTL1_MMC BITS(4,6)" +.LASF3450: + .string "__SNBF 0x0002" +.LASF2442: + .string "RTC_FLAG_ALARM RTC_CTL_ALRMIF" +.LASF3505: + .string "MSTATUS_MIE 0x00000008" +.LASF1199: + .string "DAC_LFSR_BITS1_0 DAC_WAVE_BIT_WIDTH_2" +.LASF272: + .string "__FLT64X_DECIMAL_DIG__ 36" +.LASF3132: + .string "TIMER_MTIMECMP_size 0x8" +.LASF3981: + .string "MASK_C_ADDI16SP 0xef83" +.LASF1271: + .string "DMA_CHXCTL_DIR BIT(4)" +.LASF1456: + .string "EXTI_SWIEV_SWIEV10 BIT(10)" +.LASF866: + .string "CAN_F23DATA1(canx) REG32((canx) + 0x2FCU)" +.LASF586: + .string "ADC_RSQX_RSQN BITS(0,4)" +.LASF132: + .string "__UINT_FAST8_MAX__ 0xffffffffU" +.LASF2324: + .string "CFG0_CKOUT0SEL(regval) (BITS(24,27) & ((uint32_t)(regval) << 24))" +.LASF462: + .string "INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1)" +.LASF1980: + .string "I2C_PECTRANS_DISABLE ((uint32_t)0x00000000U)" +.LASF2249: + .string "RCU_CKSYSSRC_IRC8M CFG0_SCS(0)" +.LASF1359: + .string "EXMC_BANK0_NORSRAM_REGION0 ((uint32_t)0x00000000U)" +.LASF1001: + .string "STAT_REG_OFFSET ((uint8_t)0x04U)" +.LASF3061: + .string "WWDGT_CFG REG32((WWDGT) + 0x00000004U)" +.LASF3090: + .string "_SIZE_T " +.LASF1285: + .string "DMA_CHPADDR(dma,channel) REG32(((dma) + 0x10U) + 0x14U * (uint32_t)(channel))" +.LASF4365: + .string "I2C0_ER_IRQn" +.LASF2306: + .string "RCU_PLL_MUL20 (PLLMF_4 | CFG0_PLLMF(3))" +.LASF3389: + .string "_REENT_RAND48_ADD(ptr) ((ptr)->_new._reent._r48._add)" +.LASF2112: + .string "RCU_CFG0_PLLMF BITS(18,21)" +.LASF2677: + .string "TIMER_SWEVG_TRGG BIT(6)" +.LASF574: + .string "ADC_CTL1_DAL BIT(11)" +.LASF2498: + .string "SPI_I2SCTL_PCMSMOD BIT(7)" +.LASF1151: + .string "DAC_CTL_DTEN1 BIT(18)" +.LASF2935: + .string "TIMER_HALLINTERFACE_DISABLE ((uint32_t)0x00000000U)" +.LASF3234: + .string "__GNUCLIKE_BUILTIN_VAALIST 1" +.LASF3531: + .string "DCSR_NDRESET (1<<29)" +.LASF672: + .string "ADC_CHANNEL_12 ((uint8_t)0x0CU)" +.LASF2380: + .string "RCU_PLL1_MUL14 CFG1_PLL1MF(12)" +.LASF170: + .string "__DBL_EPSILON__ ((double)2.22044604925031308084726333618164062e-16L)" +.LASF345: + .string "_NEWLIB_VERSION \"4.1.0\"" +.LASF3754: + .string "MATCH_MUL 0x2000033" +.LASF1948: + .string "I2C_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF2721: + .string "TIMER_CNT_CNT BITS(0,15)" +.LASF881: + .string "CAN_CTL_IWMOD BIT(0)" +.LASF1786: + .string "GPIO_MODE_IN_FLOATING ((uint8_t)0x04U)" +.LASF1938: + .string "I2C_STAT1_HSTSMB BIT(6)" +.LASF1727: + .string "GPIO_BC_CR12 BIT(12)" +.LASF3043: + .string "CLT2_DENR(regval) (BIT(6) & ((uint32_t)(regval) << 6))" +.LASF4372: + .string "USART2_IRQn" +.LASF4305: + .string "CSR_MNVEC 0x7C3" +.LASF706: + .string "ADC_OVERSAMPLING_RATIO_MUL32 OVSCR_OVSR(4)" +.LASF409: + .string "_UINT16_T_DECLARED " +.LASF3656: + .string "MATCH_BLT 0x4063" +.LASF2133: + .string "RCU_INT_LXTALSTBIC BIT(17)" +.LASF886: + .string "CAN_CTL_AWU BIT(5)" +.LASF4205: + .string "CSR_MSCOUNTEREN 0x321" +.LASF3950: + .string "MATCH_FCVT_D_LU 0xd2300053" +.LASF3891: + .string "MASK_FMAX_D 0xfe00707f" +.LASF2753: + .string "TIMER_INT_FLAG_CMT TIMER_INT_CMT" +.LASF1673: + .string "GPIO_OCTL_OCTL6 BIT(6)" +.LASF3190: + .string "_POINTER_INT long" +.LASF3288: + .string "__scanflike(fmtarg,firstvararg) __attribute__((__format__ (__scanf__, fmtarg, firstvararg)))" +.LASF326: + .string "RT_USING_NEWLIB 1" +.LASF3271: + .string "__noinline __attribute__ ((__noinline__))" +.LASF2681: + .string "TIMER_CHCTL0_CH0COMSEN BIT(3)" +.LASF3472: + .string "FILENAME_MAX 1024" +.LASF901: + .string "CAN_TSTAT_MTFNERR0 BIT(1)" +.LASF2150: + .string "RCU_APB2RST_USART0RST BIT(14)" +.LASF456: + .string "INT_FAST8_MIN (-__INT_FAST8_MAX__ - 1)" +.LASF3717: + .string "MASK_SRAIW 0xfe00707f" +.LASF3170: + .string "_ANSIDECL_H_ " +.LASF694: + .string "ADC_OVERSAMPLING_SHIFT_2B OVSCR_OVSS(2)" +.LASF3590: + .string "MIE_STIE MIP_STIP" +.LASF1606: + .string "GPIO_CTL1(gpiox) REG32((gpiox) + 0x04U)" +.LASF3274: + .string "__fastcall __attribute__((__fastcall__))" +.LASF943: + .string "CAN_INTEN_SLPWIE BIT(17)" +.LASF4292: + .string "CSR_MHPMCOUNTER22H 0xb96" +.LASF1235: + .string "DMA_CH1CTL(dmax) REG32((dmax) + 0x1CU)" +.LASF1817: + .string "GPIO_EVENT_PIN_11 ((uint8_t)0x0BU)" +.LASF604: + .string "ADC_SCAN_MODE ADC_CTL0_SM" +.LASF131: + .string "__INT_FAST64_WIDTH__ 64" +.LASF2234: + .string "RCU_REG_VAL(periph) (REG32(RCU + ((uint32_t)(periph) >> 6)))" +.LASF2942: + .string "UART4 (USART_BASE+(0x00000C00U))" +.LASF3036: + .string "USART_CLEN_EN CTL1_CLEN(1)" +.LASF3267: + .string "__min_size(x) static (x)" +.LASF343: + .string "_SYS_FEATURES_H " +.LASF839: + .string "CAN_F24DATA0(canx) REG32((canx) + 0x300U)" +.LASF1706: + .string "GPIO_BOP_CR7 BIT(23)" +.LASF3936: + .string "MATCH_FCVT_S_WU 0xd0100053" +.LASF1078: + .string "CAN_BT_BS2_6TQ ((uint8_t)0x05U)" +.LASF599: + .string "ADC_FLAG_EOC ADC_STAT_EOC" +.LASF654: + .string "ADC_REGULAR_INSERTED_CHANNEL ((uint8_t)0x03U)" +.LASF2737: + .string "TIMER_DMACFG_DMATA BITS(0,4)" +.LASF3653: + .string "MASK_BEQ 0x707f" +.LASF3658: + .string "MATCH_BGE 0x5063" +.LASF3824: + .string "MATCH_ECALL 0x73" +.LASF2851: + .string "TIMER_CCHP_PROT_0 CCHP_PROT(1)" +.LASF448: + .string "INT_LEAST32_MAX (__INT_LEAST32_MAX__)" +.LASF2899: + .string "TIMER_SMCFG_TRGSEL_ITI0 SMCFG_TRGSEL(0)" +.LASF3117: + .string "___int_wchar_t_h " +.LASF1875: + .string "GPIO_SWJ_DISABLE_REMAP ((uint32_t)0x00300200U)" +.LASF3383: + .string "_REENT_CHECK_MISC(ptr) " +.LASF3813: + .string "MASK_AMOMAX_D 0xf800707f" +.LASF2223: + .string "RCU_RSTSCK_LPRSTF BIT(31)" +.LASF3641: + .string "read_fpu(reg) ({ unsigned long __tmp; asm volatile (\"fmv.x.w %0, \" #reg : \"=r\"(__tmp)); __tmp; })" +.LASF3684: + .string "MATCH_SRAI 0x40005013" +.LASF3767: + .string "MASK_REM 0xfe00707f" +.LASF1568: + .string "OB_WP_6 ((uint32_t)0x00000040U)" +.LASF1851: + .string "GPIO_PIN_13 BIT(13)" +.LASF3136: + .string "TIMER_REG(offset) _REG32(TIMER_CTRL_ADDR, offset)" +.LASF711: + .string "BKP BKP_BASE" +.LASF1231: + .string "DMA_CH0CTL(dmax) REG32((dmax) + 0x08U)" +.LASF1165: + .string "DACC_R12DH_DAC1_DH BITS(16,27)" +.LASF1176: + .string "DAC_TRIGGER_T4_TRGO CTL_DTSEL(3)" +.LASF1057: + .string "CAN_BT_BS1_1TQ ((uint8_t)0x00U)" +.LASF2702: + .string "TIMER_CHCTL1_CH3COMCEN BIT(15)" +.LASF2527: + .string "SPI_PSC_16 CTL0_PSC(3)" +.LASF3159: + .string "ECLIC_CFG_NLBITS_LSB (1u)" +.LASF2422: + .string "RTC_CTL_ALRMIF BIT(1)" +.LASF2451: + .string "SPI_CTL1(spix) REG32((spix) + 0x04U)" +.LASF3565: + .string "MCONTROL_TYPE_NONE 0" +.LASF1201: + .string "DAC_LFSR_BITS3_0 DAC_WAVE_BIT_WIDTH_4" +.LASF3415: + .string "__BIT_TYPES_DEFINED__ 1" +.LASF126: + .string "__INT_FAST16_MAX__ 0x7fffffff" +.LASF602: + .string "ADC_FLAG_STRC ADC_STAT_STRC" +.LASF2784: + .string "TIMER_DMACFG_DMATA_CHCTL0 DMACFG_DMATA(6)" +.LASF1442: + .string "EXTI_FTEN_FTEN15 BIT(15)" +.LASF2071: + .string "PMU_FLAG_RESET_WAKEUP ((uint8_t)0x00U)" +.LASF4134: + .string "CSR_HPMCOUNTER21 0xc15" +.LASF380: + .string "__int20__" +.LASF262: + .string "__FLT32X_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F32x" +.LASF1467: + .string "EXTI_PD_PD2 BIT(2)" +.LASF1531: + .string "FMC_REG_VALS(offset) (REG32(FMC + ((uint32_t)(offset) >> 12)))" +.LASF488: + .string "INTMAX_C(x) __INTMAX_C(x)" +.LASF829: + .string "CAN_F14DATA0(canx) REG32((canx) + 0x2B0U)" +.LASF3143: + .string "_BITULL(x) (_AC(1,ULL) << (x))" +.LASF1023: + .string "TMDATA1_DB7(regval) (BITS(24,31) & ((uint32_t)(regval) << 24))" +.LASF3069: + .string "CFG_PSC(regval) (BITS(7,8) & ((uint32_t)(regval) << 7))" +.LASF199: + .string "__FLT16_NORM_MAX__ 6.55040000000000000000000000000000000e+4F16" +.LASF2042: + .string "GD32VF103_PMU_H " +.LASF846: + .string "CAN_F3DATA1(canx) REG32((canx) + 0x25CU)" +.LASF3021: + .string "USART_WM_IDLE CTL0_WM(0)" +.LASF501: + .string "APB1_BUS_BASE ((uint32_t)0x40000000U)" +.LASF553: + .string "ADC_STAT_EOIC BIT(2)" +.LASF1876: + .string "GPIO_SPI2_REMAP ((uint32_t)0x00201100U)" +.LASF4121: + .string "CSR_HPMCOUNTER8 0xc08" +.LASF4076: + .string "MATCH_CUSTOM1_RS1 0x202b" +.LASF1994: + .string "FWDGT_PSC REG32((FWDGT) + 0x00000004U)" +.LASF3363: + .string "_REENT_SMALL_CHECK_INIT(ptr) " +.LASF1804: + .string "GPIO_PORT_SOURCE_GPIOD ((uint8_t)0x03U)" +.LASF1052: + .string "CAN_SILENT_LOOPBACK_MODE ((uint8_t)0x03U)" +.LASF2612: + .string "TIMER_CH2CV(timerx) REG32((timerx) + 0x3CU)" +.LASF3236: + .string "__compiler_membar() __asm __volatile(\" \" : : : \"memory\")" +.LASF3828: + .string "MATCH_URET 0x200073" +.LASF1788: + .string "GPIO_MODE_IPU ((uint8_t)0x48U)" +.LASF3902: + .string "MATCH_FEQ_S 0xa0002053" +.LASF3740: + .string "MATCH_LWU 0x6003" +.LASF1086: + .string "CAN_FF_EXTENDED ((uint32_t)0x00000004U)" +.LASF3124: + .string "NULL ((void *)0)" +.LASF443: + .string "UINT_LEAST16_MAX (__UINT_LEAST16_MAX__)" +.LASF1941: + .string "I2C_CKCFG_CLKC BITS(0,11)" +.LASF1475: + .string "EXTI_PD_PD10 BIT(10)" +.LASF1110: + .string "CAN_INT_WERR CAN_INTEN_WERRIE" +.LASF2091: + .string "RCU_CTL_IRC8MSTB BIT(1)" +.LASF1595: + .string "FMC_TIMEOUT_COUNT ((uint32_t)0x000F0000U)" +.LASF2471: + .string "SPI_CTL0_BDOEN BIT(14)" +.LASF3836: + .string "MATCH_DRET 0x7b200073" +.LASF2640: + .string "TIMER_SMCFG_ETFC BITS(8,11)" +.LASF3790: + .string "MATCH_AMOMAX_W 0xa000202f" +.LASF1316: + .string "DMA_MEMORY_WIDTH_32BIT CHCTL_MWIDTH(2U)" +.LASF696: + .string "ADC_OVERSAMPLING_SHIFT_4B OVSCR_OVSS(4)" +.LASF1198: + .string "DAC_LFSR_BIT0 DAC_WAVE_BIT_WIDTH_1" +.LASF3279: + .string "__predict_true(exp) __builtin_expect((exp), 1)" +.LASF613: + .string "ADC_DAUL_REGULAL_PARALLEL CTL0_SYNCM(6)" +.LASF3987: + .string "MASK_C_EBREAK 0xffff" +.LASF2594: + .string "TIMER4 (TIMER_BASE + 0x00000C00U)" +.LASF3773: + .string "MASK_DIVW 0xfe00707f" +.LASF3479: + .string "stdout (_REENT->_stdout)" +.LASF3866: + .string "MATCH_FSGNJX_S 0x20002053" +.LASF927: + .string "CAN_RFIFO1_RFF1 BIT(3)" +.LASF1734: + .string "GPIO_LOCK_LK3 BIT(3)" +.LASF3741: + .string "MASK_LWU 0x707f" +.LASF791: + .string "CAN_TMP0(canx) REG32((canx) + 0x184U)" +.LASF1649: + .string "GPIO_CTL1_MD15 BITS(28, 29)" +.LASF1104: + .string "CAN_INT_RFNE0 CAN_INTEN_RFNEIE0" +.LASF1304: + .string "DMA_MEMORY_TO_PERIPHERAL ((uint8_t)0x01U)" +.LASF4316: + .string "CAUSE_MISALIGNED_FETCH 0x0" +.LASF1264: + .string "DMA_INTC_FTFIFC BIT(1)" +.LASF2652: + .string "TIMER_DMAINTEN_UPDEN BIT(8)" +.LASF1150: + .string "DAC_CTL_DBOFF1 BIT(17)" +.LASF1418: + .string "EXTI_RTEN_RTEN10 BIT(10)" +.LASF3321: + .string "__asserts_shared(...) __lock_annotate(assert_shared_lock(__VA_ARGS__))" +.LASF504: + .string "AHB3_BUS_BASE ((uint32_t)0x60000000U)" +.LASF3102: + .string "_GCC_SIZE_T " +.LASF1678: + .string "GPIO_OCTL_OCTL11 BIT(11)" +.LASF3277: + .string "__unreachable() __builtin_unreachable()" +.LASF2945: + .string "USART_DATA(usartx) REG32((usartx) + (0x00000004U))" +.LASF4232: + .string "CSR_MHPMEVENT29 0x33d" +.LASF3362: + .string "_REENT_INIT_ATEXIT _NULL, _ATEXIT_INIT," +.LASF1570: + .string "OB_WP_8 ((uint32_t)0x00000100U)" +.LASF777: + .string "BKP_FLAG_TAMPER BKP_TPCS_TEF" +.LASF374: + .string "__STDINT_EXP(x) __ ##x ##__" +.LASF4384: + .string "DMA1_Channel1_IRQn" +.LASF1233: + .string "DMA_CH0PADDR(dmax) REG32((dmax) + 0x10U)" +.LASF3755: + .string "MASK_MUL 0xfe00707f" +.LASF3122: + .string "__need_wchar_t" +.LASF1765: + .string "AFIO_PCF0_TIMER1_ITI1_REMAP BIT(29)" +.LASF973: + .string "CAN_RFIFOMI_FF BIT(2)" +.LASF3436: + .string "_NLINK_T_DECLARED " +.LASF3201: + .string "_ELIDABLE_INLINE static __inline__" +.LASF139: + .string "__GCC_IEC_559 0" +.LASF1850: + .string "GPIO_PIN_12 BIT(12)" +.LASF3831: + .string "MASK_SRET 0xffffffff" +.LASF3651: + .string "RISCV_ENCODING_H " +.LASF320: + .string "USE_PLIC 1" +.LASF3876: + .string "MATCH_FSUB_D 0xa000053" +.LASF206: + .string "__FLT32_MANT_DIG__ 24" +.LASF932: + .string "CAN_INTEN_RFFIE0 BIT(2)" +.LASF3829: + .string "MASK_URET 0xffffffff" +.LASF1869: + .string "GPIO_CAN0_PARTIAL_REMAP ((uint32_t)0x001D4000U)" +.LASF1504: + .string "FMC_OBKEY_OBKEY BITS(0,31)" +.LASF3062: + .string "WWDGT_STAT REG32((WWDGT) + 0x00000008U)" +.LASF321: + .string "USE_M_TIME 1" +.LASF3582: + .string "MIP_HTIP (1 << IRQ_H_TIMER)" +.LASF1220: + .string "DAC_TRIANGLE_AMPLITUDE_127 DAC_WAVE_BIT_WIDTH_7" +.LASF2660: + .string "TIMER_INTF_CH0IF BIT(1)" +.LASF2985: + .string "USART_CTL1_STB BITS(12,13)" +.LASF1492: + .string "FMC_ADDR REG32((FMC) + 0x14U)" +.LASF2734: + .string "TIMER_CCHP_BRKP BIT(13)" +.LASF3075: + .string "_STDDEF_H " +.LASF1302: + .string "DMA_INT_ERR DMA_CHXCTL_ERRIE" +.LASF1966: + .string "I2C_DUADEN_ENABLE ((uint32_t)0x00000001U)" +.LASF1457: + .string "EXTI_SWIEV_SWIEV11 BIT(11)" +.LASF3091: + .string "_SYS_SIZE_T_H " +.LASF80: + .string "__SHRT_WIDTH__ 16" +.LASF2559: + .string "I2S_CKPL_LOW ((uint32_t)0x00000000U)" +.LASF3509: + .string "MSTATUS_MPIE 0x00000080" +.LASF3602: + .string "VM_MBARE 0" +.LASF1868: + .string "GPIO_TIMER3_REMAP ((uint32_t)0x00001000U)" +.LASF67: + .string "__GXX_ABI_VERSION 1014" +.LASF1491: + .string "FMC_CTL REG32((FMC) + 0x10U)" +.LASF1446: + .string "EXTI_SWIEV_SWIEV0 BIT(0)" +.LASF3388: + .string "_REENT_RAND48_MULT(ptr) ((ptr)->_new._reent._r48._mult)" +.LASF683: + .string "ADC_INT_FLAG_EOIC ADC_STAT_EOIC" +.LASF3832: + .string "MATCH_HRET 0x20200073" +.LASF1018: + .string "TMDATA0_DB2(regval) (BITS(16,23) & ((uint32_t)(regval) << 16))" +.LASF360: + .string "__SSP_FORTIFY_LEVEL 0" +.LASF2448: + .string "SPI1 SPI_BASE" +.LASF2412: + .string "RTC_DIVH REG32(RTC + 0x10U)" +.LASF3275: + .string "__result_use_check __attribute__((__warn_unused_result__))" +.LASF3095: + .string "_SIZE_T_ " +.LASF2355: + .string "RCU_PREDV0_DIV16 CFG1_PREDV0(15)" +.LASF658: + .string "ADC_INSERTED_CHANNEL_2 ((uint8_t)0x02U)" +.LASF2552: + .string "I2S_MODE_MASTERRX I2SCTL_I2SOPMOD(3)" +.LASF2810: + .string "TIMER_DMACFG_DMATC_13TRANSFER DMACFG_DMATC(12)" +.LASF4280: + .string "CSR_MHPMCOUNTER10H 0xb8a" +.LASF3600: + .string "PRV_H 2" +.LASF3260: + .string "__packed __attribute__((__packed__))" +.LASF288: + .string "__GCC_ATOMIC_CHAR_LOCK_FREE 1" +.LASF115: + .string "__INT_LEAST64_WIDTH__ 64" +.LASF1203: + .string "DAC_LFSR_BITS5_0 DAC_WAVE_BIT_WIDTH_6" +.LASF2356: + .string "CFG1_PREDV1(regval) (BITS(4,7) & ((uint32_t)(regval) << 4))" +.LASF2369: + .string "RCU_PREDV1_DIV13 CFG1_PREDV1(12)" +.LASF782: + .string "CAN_CTL(canx) REG32((canx) + 0x00U)" +.LASF4001: + .string "MASK_C_FLD 0xe003" +.LASF3993: + .string "MASK_C_ADDIW 0xe003" +.LASF280: + .string "__FLT64X_HAS_QUIET_NAN__ 1" +.LASF568: + .string "ADC_CTL0_RWDEN BIT(23)" +.LASF1644: + .string "GPIO_CTL1_CTL12 BITS(18, 19)" +.LASF2684: + .string "TIMER_CHCTL0_CH1MS BITS(8,9)" +.LASF2829: + .string "TIMER_PSC_RELOAD_NOW TIMER_SWEVG_UPG" +.LASF2872: + .string "TIMER_OC_MODE_TIMING ((uint16_t)0x0000U)" +.LASF3662: + .string "MATCH_BGEU 0x7063" +.LASF3762: + .string "MATCH_DIV 0x2004033" +.LASF3306: + .string "_Nonnull " +.LASF3396: + .string "_REENT_EMERGENCY(ptr) ((ptr)->_emergency)" +.LASF1700: + .string "GPIO_BOP_CR1 BIT(17)" +.LASF58: + .string "__INT_FAST16_TYPE__ int" +.LASF3540: + .string "DCSR_DEBUGINT (1<<5)" +.LASF3263: + .string "__alloc_size(x) __attribute__((__alloc_size__(x)))" +.LASF889: + .string "CAN_CTL_SWRST BIT(15)" +.LASF3941: + .string "MASK_FCVT_S_LU 0xfff0007f" +.LASF4222: + .string "CSR_MHPMEVENT19 0x333" +.LASF698: + .string "ADC_OVERSAMPLING_SHIFT_6B OVSCR_OVSS(6)" +.LASF640: + .string "ADC_SAMPLETIME_7POINT5 SAMPTX_SPT(1)" +.LASF2238: + .string "APB2EN_REG_OFFSET 0x18U" +.LASF1912: + .string "I2C_SADDR0_ADDRESS0 BIT(0)" +.LASF2516: + .string "SPI_NSS_HARD ((uint32_t)0x00000000U)" +.LASF1697: + .string "GPIO_BOP_BOP14 BIT(14)" +.LASF2210: + .string "RCU_BDCTL_LXTALSTB BIT(1)" +.LASF2311: + .string "RCU_PLL_MUL25 (PLLMF_4 | CFG0_PLLMF(8))" +.LASF4162: + .string "CSR_MEPC 0x341" +.LASF821: + .string "CAN_F6DATA0(canx) REG32((canx) + 0x270U)" +.LASF3316: + .string "__locks_shared(...) __lock_annotate(shared_lock_function(__VA_ARGS__))" +.LASF543: + .string "ADC_RSQ2(adcx) REG32((adcx) + 0x34U)" +.LASF3107: + .string "__WCHAR_T__ " +.LASF336: + .string "IRC8M_VALUE ((uint32_t)8000000)" +.LASF4331: + .string "CLIC_INT_BWEI" +.LASF4404: + .string "_fini" +.LASF1462: + .string "EXTI_SWIEV_SWIEV16 BIT(16)" +.LASF87: + .string "__SIZE_WIDTH__ 32" +.LASF1074: + .string "CAN_BT_BS2_2TQ ((uint8_t)0x01U)" +.LASF713: + .string "BKP_DATA1 REG16((BKP) + 0x08U)" +.LASF3092: + .string "_T_SIZE_ " +.LASF2526: + .string "SPI_PSC_8 CTL0_PSC(2)" +.LASF1808: + .string "GPIO_EVENT_PIN_2 ((uint8_t)0x02U)" +.LASF1599: + .string "GPIOA (GPIO_BASE + 0x00000000U)" +.LASF2265: + .string "RCU_AHB_CKSYS_DIV512 CFG0_AHBPSC(15)" +.LASF2165: + .string "RCU_APB1RST_I2C1RST BIT(22)" +.LASF472: + .string "SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)" +.LASF2743: + .string "TIMER_INT_CH2 TIMER_DMAINTEN_CH2IE" +.LASF1602: + .string "GPIOD (GPIO_BASE + 0x00000C00U)" +.LASF3355: + .string "__lock_acquire_recursive(lock) ((void) 0)" +.LASF2939: + .string "USART1 USART_BASE" +.LASF1664: + .string "GPIO_ISTAT_ISTAT13 BIT(13)" +.LASF3501: + .string "RISCV_CSR_ENCODING_H " +.LASF4028: + .string "MATCH_C_XOR 0x8c21" +.LASF2550: + .string "I2S_MODE_SLAVERX I2SCTL_I2SOPMOD(1)" +.LASF441: + .string "INT_LEAST16_MIN (-__INT_LEAST16_MAX__ - 1)" +.LASF1854: + .string "GPIO_PIN_ALL BITS(0, 15)" +.LASF1211: + .string "DAC_ALIGN_12B_R DATA_ALIGN(0)" +.LASF537: + .string "ADC_IOFF2(adcx) REG32((adcx) + 0x1CU)" +.LASF4311: + .string "CSR_WFE 0x810" +.LASF2653: + .string "TIMER_DMAINTEN_CH0DEN BIT(9)" +.LASF52: + .string "__INT_LEAST64_TYPE__ long long int" +.LASF3193: + .string "__EXPORT " +.LASF4042: + .string "MATCH_C_BNEZ 0xe001" +.LASF712: + .string "BKP_DATA0 REG16((BKP) + 0x04U)" +.LASF1826: + .string "GPIO_PIN_SOURCE_4 ((uint8_t)0x04U)" +.LASF191: + .string "__FLT16_MANT_DIG__ 11" +.LASF1089: + .string "CAN_RFIF_RFL_MASK ((uint32_t)0x00000003U)" +.LASF2130: + .string "RCU_INT_PLL1STBIE BIT(13)" +.LASF4012: + .string "MATCH_C_ADDI 0x1" +.LASF1382: + .string "EXTI_INTEN_INTEN12 BIT(12)" +.LASF2385: + .string "RCU_PLL2_MUL8 CFG1_PLL2MF(6)" +.LASF1529: + .string "FMC_BIT_POS(val) ((uint32_t)(val) & 0x1FU)" +.LASF3772: + .string "MATCH_DIVW 0x200403b" +.LASF3447: + .string "_flockfile(fp) (((fp)->_flags & __SSTR) ? 0 : __lock_acquire_recursive((fp)->_lock))" +.LASF1067: + .string "CAN_BT_BS1_11TQ ((uint8_t)0x0AU)" +.LASF769: + .string "BKP_DATA0_9(number) REG16((BKP) + 0x04U + (number) * 0x04U)" +.LASF3629: + .string "PTE_U 0x010" +.LASF1205: + .string "DAC_LFSR_BITS7_0 DAC_WAVE_BIT_WIDTH_8" +.LASF3144: + .string "ECLICINTCTLBITS 4" +.LASF1396: + .string "EXTI_EVEN_EVEN7 BIT(7)" +.LASF1898: + .string "I2C_CTL0_SS BIT(7)" +.LASF631: + .string "ADC0_1_EXTTRIG_INSERTED_T0_CH3 CTL1_ETSIC(1)" +.LASF3087: + .string "__need_ptrdiff_t" +.LASF1658: + .string "GPIO_ISTAT_ISTAT7 BIT(7)" +.LASF2536: + .string "I2S_AUDIOSAMPLE_32K ((uint32_t)32000U)" +.LASF2916: + .string "SMCFG_SMC(regval) (BITS(0, 2) & ((uint32_t)(regval) << 0U))" +.LASF4275: + .string "CSR_MHPMCOUNTER5H 0xb85" +.LASF240: + .string "__FLT128_MAX_EXP__ 16384" +.LASF3610: + .string "IRQ_M_SOFT 3" +.LASF3298: + .string "__FBSDID(s) struct __hack" +.LASF1909: + .string "I2C_CTL1_BUFIE BIT(10)" +.LASF3566: + .string "MCONTROL_TYPE_MATCH 2" +.LASF2481: + .string "SPI_STAT_RBNE BIT(0)" +.LASF4055: + .string "MASK_C_ADD 0xf003" +.LASF4138: + .string "CSR_HPMCOUNTER25 0xc19" +.LASF1973: + .string "I2C_DMA_ON I2C_CTL1_DMAON" +.LASF1414: + .string "EXTI_RTEN_RTEN6 BIT(6)" +.LASF187: + .string "__LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L" +.LASF2802: + .string "TIMER_DMACFG_DMATC_5TRANSFER DMACFG_DMATC(4)" +.LASF1178: + .string "DAC_TRIGGER_T3_TRGO CTL_DTSEL(5)" +.LASF4265: + .string "CSR_HPMCOUNTER26H 0xc9a" +.LASF3873: + .string "MASK_FSQRT_S 0xfff0007f" +.LASF2500: + .string "SPI_I2SCTL_I2SEN BIT(10)" +.LASF1880: + .string "I2C0 I2C_BASE" +.LASF404: + .string "_SYS__STDINT_H " +.LASF1185: + .string "DWBW(regval) (BITS(8,11) & ((uint32_t)(regval) << 8))" +.LASF4401: + .string "long long int" +.LASF164: + .string "__DBL_MAX_EXP__ 1024" +.LASF4307: + .string "CSR_JALMNXTI 0x7ED" +.LASF2707: + .string "TIMER_CHCTL2_CH0EN BIT(0)" +.LASF91: + .string "__UINTMAX_C(c) c ## ULL" +.LASF2310: + .string "RCU_PLL_MUL24 (PLLMF_4 | CFG0_PLLMF(7))" +.LASF4248: + .string "CSR_HPMCOUNTER9H 0xc89" +.LASF2601: + .string "TIMER_INTF(timerx) REG32((timerx) + 0x10U)" +.LASF4178: + .string "CSR_MHPMCOUNTER6 0xb06" +.LASF3176: + .string "_REENT_CHECK_VERIFY 1" +.LASF700: + .string "ADC_OVERSAMPLING_SHIFT_8B OVSCR_OVSS(8)" +.LASF3996: + .string "MATCH_C_SDSP 0xe002" +.LASF2895: + .string "TIMER_IC_PSC_DIV2 ((uint16_t)0x0004U)" +.LASF297: + .string "__GCC_ATOMIC_POINTER_LOCK_FREE 2" +.LASF3585: + .string "MIP_HEIP (1 << IRQ_H_EXT)" +.LASF1379: + .string "EXTI_INTEN_INTEN9 BIT(9)" +.LASF1844: + .string "GPIO_PIN_6 BIT(6)" +.LASF3168: + .string "ECLIC_GROUP_LEVEL4_PRIO0 4" +.LASF4008: + .string "MATCH_C_SW 0xc000" +.LASF2456: + .string "SPI_TCRC(spix) REG32((spix) + 0x18U)" +.LASF2229: + .string "RCU_CFG1_PREDV0SEL BIT(16)" +.LASF1616: + .string "AFIO_EXTISS2 REG32(AFIO + 0x10U)" +.LASF515: + .string "DAC_BASE (APB1_BUS_BASE + 0x00007400U)" +.LASF1525: + .string "FMC_WSEN_WSEN BIT(0)" +.LASF2392: + .string "RCU_PLL2_MUL15 CFG1_PLL2MF(13)" +.LASF2698: + .string "TIMER_CHCTL1_CH3MS BITS(8,9)" +.LASF872: + .string "CAN_TMP(canx,bank) REG32((canx) + 0x184U + ((bank) * 0x10U))" +.LASF1791: + .string "GPIO_MODE_AF_OD ((uint8_t)0x1CU)" +.LASF4364: + .string "I2C0_EV_IRQn" +.LASF3241: + .string "__CC_SUPPORTS___INLINE 1" +.LASF1389: + .string "EXTI_EVEN_EVEN0 BIT(0)" +.LASF3195: + .string "_READ_WRITE_BUFSIZE_TYPE int" +.LASF877: + .string "CAN_RFIFOMI(canx,bank) REG32((canx) + 0x1B0U + ((bank) * 0x10U))" +.LASF3797: + .string "MASK_AMOSWAP_W 0xf800707f" +.LASF1222: + .string "DAC_TRIANGLE_AMPLITUDE_511 DAC_WAVE_BIT_WIDTH_9" +.LASF681: + .string "ADC_INT_FLAG_WDE ADC_STAT_WDE" +.LASF3045: + .string "USART_DENR_DISABLE CLT2_DENR(0)" +.LASF1742: + .string "GPIO_LOCK_LK11 BIT(11)" +.LASF137: + .string "__INTPTR_WIDTH__ 32" +.LASF2503: + .string "SPI_I2SPSC_OF BIT(8)" +.LASF12: + .string "__ATOMIC_RELEASE 3" +.LASF1137: + .string "DACC_R12DH REG32(DAC + 0x20U)" +.LASF1628: + .string "GPIO_CTL0_CTL4 BITS(18, 19)" +.LASF457: + .string "INT_FAST8_MAX (__INT_FAST8_MAX__)" +.LASF1293: + .string "DMA_INT_FLAG_FTF DMA_INTF_FTFIF" +.LASF2692: + .string "TIMER_CHCTL0_CH1CAPFLT BITS(12,15)" +.LASF588: + .string "ADC_ISQ_ISQN BITS(0,4)" +.LASF4090: + .string "MATCH_CUSTOM2_RS1_RS2 0x305b" +.LASF3744: + .string "MATCH_SH 0x1023" +.LASF1288: + .string "DMA_CHCNT_RESET_VALUE ((uint32_t)0x00000000U)" +.LASF2431: + .string "RTC_CNTH_CNT BITS(0,15)" +.LASF2333: + .string "RCU_CKOUT0SRC_CKPLL2 CFG0_CKOUT0SEL(11)" +.LASF3153: + .string "ECLIC_INT_ATTR_TRIG_EDGE 0x02" +.LASF1555: + .string "OB_SPC_SPC_N ((uint32_t)0x0000FF00U)" +.LASF1623: + .string "GPIO_CTL0_MD2 BITS(8, 9)" +.LASF3172: + .string "_WANT_IO_C99_FORMATS 1" +.LASF1291: + .string "DMA_CHINTF_RESET_VALUE (DMA_INTF_GIF | DMA_INTF_FTFIF | DMA_INTF_HTFIF | DMA_INTF_ERRIF)" +.LASF1387: + .string "EXTI_INTEN_INTEN17 BIT(17)" +.LASF4381: + .string "TIMER5_IRQn" +.LASF2566: + .string "SPI_I2S_INT_RBNE ((uint8_t)0x01U)" +.LASF1217: + .string "DAC_TRIANGLE_AMPLITUDE_15 DAC_WAVE_BIT_WIDTH_4" +.LASF3477: + .string "TMP_MAX 26" +.LASF4332: + .string "CLIC_INT_PMOVI" +.LASF2191: + .string "RCU_APB1EN_TIMER3EN BIT(2)" +.LASF3065: + .string "WWDGT_CFG_WIN BITS(0,6)" +.LASF2309: + .string "RCU_PLL_MUL23 (PLLMF_4 | CFG0_PLLMF(6))" +.LASF143: + .string "__DEC_EVAL_METHOD__ 2" +.LASF2848: + .string "TIMER_OUTAUTO_DISABLE ((uint16_t)0x0000U)" +.LASF1728: + .string "GPIO_BC_CR13 BIT(13)" +.LASF225: + .string "__FLT64_MAX_EXP__ 1024" +.LASF2176: + .string "RCU_AHBEN_EXMCEN BIT(8)" +.LASF1212: + .string "DAC_ALIGN_12B_L DATA_ALIGN(1)" +.LASF1651: + .string "GPIO_ISTAT_ISTAT0 BIT(0)" +.LASF3027: + .string "USART_STB_1BIT CTL1_STB(0)" +.LASF2170: + .string "RCU_APB1RST_DACRST BIT(29)" +.LASF3166: + .string "ECLIC_GROUP_LEVEL2_PRIO2 2" +.LASF1943: + .string "I2C_CKCFG_FAST BIT(15)" +.LASF3066: + .string "WWDGT_CFG_PSC BITS(7,8)" +.LASF3352: + .string "__lock_close(lock) ((void) 0)" +.LASF892: + .string "CAN_STAT_SLPWS BIT(1)" +.LASF3174: + .string "_WANT_REGISTER_FINI 1" +.LASF3038: + .string "USART_CPH_1CK CTL1_CPH(0)" +.LASF1242: + .string "DMA_CH2MADDR(dmax) REG32((dmax) + 0x3CU)" +.LASF4363: + .string "TIMER3_IRQn" +.LASF2460: + .string "SPI_CTL0_CKPL BIT(1)" +.LASF2870: + .string "TIMER_OCN_IDLE_STATE_HIGH ((uint16_t)0x0200U)" +.LASF1861: + .string "GPIO_TIMER0_PARTIAL_REMAP ((uint32_t)0x00160040U)" +.LASF1006: + .string "BT_BAUDPSC(regval) (BITS(0,9) & ((uint32_t)(regval) << 0))" +.LASF4184: + .string "CSR_MHPMCOUNTER12 0xb0c" +.LASF1500: + .string "OB_WP2 REG16((OB) + 0x0CU)" +.LASF1577: + .string "OB_WP_15 ((uint32_t)0x00008000U)" +.LASF4161: + .string "CSR_MSCRATCH 0x340" +.LASF2505: + .string "SPI_MASTER (SPI_CTL0_MSTMOD | SPI_CTL0_SWNSS)" +.LASF1031: + .string "GET_RFIFOMDATA0_DB3(regval) GET_BITS((uint32_t)(regval), 24U, 31U)" +.LASF587: + .string "ADC_RSQ0_RL BITS(20,23)" +.LASF5: + .string "__GNUC__ 10" +.LASF2687: + .string "TIMER_CHCTL0_CH1COMCTL BITS(12,14)" +.LASF3432: + .string "_PID_T_DECLARED " +.LASF2776: + .string "TIMER_DMAREQUEST_CHANNELEVENT ((uint32_t)0x00000000U)" +.LASF2581: + .string "SPI_FLAG_FERR SPI_STAT_FERR" +.LASF4021: + .string "MASK_C_SRLI 0xec03" +.LASF3657: + .string "MASK_BLT 0x707f" +.LASF3060: + .string "WWDGT_CTL REG32((WWDGT) + 0x00000000U)" +.LASF2097: + .string "RCU_CTL_CKMEN BIT(19)" +.LASF2274: + .string "RCU_APB2_CKAHB_DIV2 CFG0_APB2PSC(4)" +.LASF678: + .string "ADC_INT_WDE ADC_STAT_WDE" +.LASF1834: + .string "GPIO_PIN_SOURCE_12 ((uint8_t)0x0CU)" +.LASF1027: + .string "GET_RFIFOMP_FI(regval) GET_BITS((uint32_t)(regval), 8U, 15U)" +.LASF2678: + .string "TIMER_SWEVG_BRKG BIT(7)" +.LASF1300: + .string "DMA_INT_FTF DMA_CHXCTL_FTFIE" +.LASF2553: + .string "I2SCTL_I2SSTD(regval) (BITS(4,5) & ((uint32_t)(regval) << 4))" +.LASF3295: + .string "__warn_references(sym,msg) __asm__(\".section .gnu.warning.\" #sym); __asm__(\".asciz \\\"\" msg \"\\\"\"); __asm__(\".previous\")" +.LASF1372: + .string "EXTI_INTEN_INTEN2 BIT(2)" +.LASF181: + .string "__DECIMAL_DIG__ 36" +.LASF97: + .string "__INT16_MAX__ 0x7fff" +.LASF3798: + .string "MATCH_LR_W 0x1000202f" +.LASF1648: + .string "GPIO_CTL1_CTL14 BITS(26, 27)" +.LASF3109: + .string "_T_WCHAR_ " +.LASF2040: + .string "DBG_LOW_POWER_DEEPSLEEP DBG_CTL_DSLP_HOLD" +.LASF2308: + .string "RCU_PLL_MUL22 (PLLMF_4 | CFG0_PLLMF(5))" +.LASF984: + .string "CAN_RFIFOMDATA1_DB5 BITS(8,15)" +.LASF2213: + .string "RCU_BDCTL_RTCEN BIT(15)" +.LASF4132: + .string "CSR_HPMCOUNTER19 0xc13" +.LASF2826: + .string "TIMER_COUNTER_CENTER_DOWN CTL0_CAM(1)" +.LASF1325: + .string "GD32VF103_ECLIC_H " +.LASF1984: + .string "I2C_ARP_DISABLE ((uint32_t)0x00000000U)" +.LASF494: + .string "BITS(start,end) ((0xFFFFFFFFUL << (start)) & (0xFFFFFFFFUL >> (31U - (uint32_t)(end))))" +.LASF469: + .string "INTMAX_MIN (-INTMAX_MAX - 1)" +.LASF1480: + .string "EXTI_PD_PD15 BIT(15)" +.LASF3591: + .string "MIE_HTIE MIP_HTIP" +.LASF3747: + .string "MASK_SW 0x707f" +.LASF2056: + .string "PMU_CS_WUPEN BIT(8)" +.LASF790: + .string "CAN_TMI0(canx) REG32((canx) + 0x180U)" +.LASF2102: + .string "RCU_CTL_PLL2EN BIT(28)" +.LASF2121: + .string "RCU_INT_PLLSTBIF BIT(4)" +.LASF2327: + .string "RCU_CKOUT0SRC_IRC8M CFG0_CKOUT0SEL(5)" +.LASF1160: + .string "DAC0_R8DH_DAC0_DH BITS(0,7)" +.LASF4226: + .string "CSR_MHPMEVENT23 0x337" +.LASF3104: + .string "__size_t " +.LASF2541: + .string "I2SCTL_DTLEN(regval) (BITS(1,2) & ((uint32_t)(regval) << 1))" +.LASF3955: + .string "MASK_FLW 0x707f" +.LASF357: + .string "__POSIX_VISIBLE 199009" +.LASF4296: + .string "CSR_MHPMCOUNTER26H 0xb9a" +.LASF4194: + .string "CSR_MHPMCOUNTER22 0xb16" +.LASF3599: + .string "PRV_S 1" +.LASF3381: + .string "_REENT_CHECK_ASCTIME_BUF(ptr) " +.LASF2129: + .string "RCU_INT_PLLSTBIE BIT(12)" +.LASF2231: + .string "RCU_CFG1_I2S2SEL BIT(18)" +.LASF119: + .string "__UINT16_C(c) c" +.LASF1864: + .string "GPIO_TIMER1_PARTIAL_REMAP1 ((uint32_t)0x00180200U)" +.LASF1423: + .string "EXTI_RTEN_RTEN15 BIT(15)" +.LASF3149: + .string "ECLIC_INT_IE_OFFSET _AC(0x1001,UL)" +.LASF2725: + .string "TIMER_CH0CV_CH0VAL BITS(0,15)" +.LASF1625: + .string "GPIO_CTL0_MD3 BITS(12, 13)" +.LASF2981: + .string "USART_CTL1_CLEN BIT(8)" +.LASF835: + .string "CAN_F20DATA0(canx) REG32((canx) + 0x2E0U)" +.LASF1692: + .string "GPIO_BOP_BOP9 BIT(9)" +.LASF372: + .string "__EXP" +.LASF290: + .string "__GCC_ATOMIC_CHAR32_T_LOCK_FREE 2" +.LASF1881: + .string "I2C1 (I2C_BASE + 0x00000400U)" +.LASF3215: + .string "__attribute_pure__ " +.LASF795: + .string "CAN_TMP1(canx) REG32((canx) + 0x194U)" +.LASF4058: + .string "MATCH_C_SWSP 0xc002" +.LASF546: + .string "ADC_IDATA1(adcx) REG32((adcx) + 0x40U)" +.LASF2157: + .string "RCU_APB1RST_WWDGTRST BIT(11)" +.LASF263: + .string "__FLT32X_HAS_DENORM__ 1" +.LASF1600: + .string "GPIOB (GPIO_BASE + 0x00000400U)" +.LASF2917: + .string "TIMER_SLAVE_MODE_DISABLE SMCFG_SMC(0)" +.LASF2255: + .string "RCU_SCSS_PLL CFG0_SCSS(2)" +.LASF919: + .string "CAN_TSTAT_TMLS0 BIT(29)" +.LASF3258: + .string "__unused __attribute__((__unused__))" +.LASF1837: + .string "GPIO_PIN_SOURCE_15 ((uint8_t)0x0FU)" +.LASF3002: + .string "USART_BIT_POS(val) ((uint32_t)(val) & (0x0000001FU))" +.LASF1275: + .string "DMA_CHXCTL_PWIDTH BITS(8,9)" +.LASF2782: + .string "TIMER_DMACFG_DMATA_INTF DMACFG_DMATA(4)" +.LASF768: + .string "BKP_TPCS_TIF BIT(9)" +.LASF160: + .string "__DBL_MANT_DIG__ 53" +.LASF526: + .string "GD32VF103_LIBOPT_H " +.LASF2638: + .string "TIMER_SMCFG_TRGS BITS(4,6)" +.LASF4117: + .string "CSR_HPMCOUNTER4 0xc04" +.LASF1724: + .string "GPIO_BC_CR9 BIT(9)" +.LASF2726: + .string "TIMER_CH1CV_CH1VAL BITS(0,15)" +.LASF3257: + .string "__pure2 __attribute__((__const__))" +.LASF371: + .string "___int_least64_t_defined 1" +.LASF4197: + .string "CSR_MHPMCOUNTER25 0xb19" +.LASF2946: + .string "USART_BAUD(usartx) REG32((usartx) + (0x00000008U))" +.LASF210: + .string "__FLT32_MAX_EXP__ 128" +.LASF3286: + .string "__containerof(x,s,m) ({ const volatile __typeof(((s *)0)->m) *__x = (x); __DEQUALIFY(s *, (const volatile char *)__x - __offsetof(s, m));})" +.LASF3429: + .string "_DEV_T_DECLARED " +.LASF4355: + .string "CAN0_EWMC_IRQn" +.LASF4149: + .string "CSR_SEPC 0x141" +.LASF3621: + .string "DEFAULT_MTVEC 0x00001010" +.LASF3552: + .string "MCONTROL_MASKMAX(xlen) (0x3fULL<<((xlen)-11))" +.LASF860: + .string "CAN_F17DATA1(canx) REG32((canx) + 0x24CU)" +.LASF1347: + .string "EXMC_SNTCFG_AHLD BITS(4,7)" +.LASF3544: + .string "DCSR_CAUSE_NONE 0" +.LASF4011: + .string "MASK_C_FSW 0xe003" +.LASF1790: + .string "GPIO_MODE_OUT_PP ((uint8_t)0x10U)" +.LASF3072: + .string "WWDGT_CFG_PSC_DIV4 CFG_PSC(2)" +.LASF3350: + .string "__lock_init(lock) ((void) 0)" +.LASF1603: + .string "GPIOE (GPIO_BASE + 0x00001000U)" +.LASF125: + .string "__INT_FAST8_WIDTH__ 32" +.LASF3145: + .string "ECLIC_CFG_OFFSET 0x0" +.LASF3757: + .string "MASK_MULH 0xfe00707f" +.LASF2728: + .string "TIMER_CH3CV_CH3VAL BITS(0,15)" +.LASF2819: + .string "TIMER_EVENT_SRC_CH2G ((uint16_t)0x0008U)" +.LASF1091: + .string "CAN_EFID_MASK ((uint32_t)0x1FFFFFFFU)" +.LASF1116: + .string "CAN_INT_SLPW CAN_INTEN_SLPWIE" +.LASF2727: + .string "TIMER_CH2CV_CH2VAL BITS(0,15)" +.LASF304: + .string "__riscv_compressed 1" +.LASF266: + .string "__FLT64X_MANT_DIG__ 113" +.LASF1153: + .string "DAC_CTL_DWM1 BITS(22,23)" +.LASF2015: + .string "FWDGT_RLD_TIMEOUT ((uint32_t)0x000FFFFFU)" +.LASF1815: + .string "GPIO_EVENT_PIN_9 ((uint8_t)0x09U)" +.LASF1566: + .string "OB_WP_4 ((uint32_t)0x00000010U)" +.LASF470: + .string "UINTMAX_MAX (__UINTMAX_MAX__)" +.LASF916: + .string "CAN_TSTAT_TME0 BIT(26)" +.LASF661: + .string "ADC_CHANNEL_1 ((uint8_t)0x01U)" +.LASF3439: + .string "__timer_t_defined " +.LASF579: + .string "ADC_CTL1_SWICST BIT(21)" +.LASF1267: + .string "DMA_CHXCTL_CHEN BIT(0)" +.LASF2093: + .string "RCU_CTL_IRC8MCALIB BITS(8,15)" +.LASF2366: + .string "RCU_PREDV1_DIV10 CFG1_PREDV1(9)" +.LASF192: + .string "__FLT16_DIG__ 3" +.LASF3402: + .string "_REENT_MBRTOWC_STATE(ptr) ((ptr)->_new._reent._mbrtowc_state)" +.LASF2818: + .string "TIMER_EVENT_SRC_CH1G ((uint16_t)0x0004U)" +.LASF3013: + .string "CTL0_TEN(regval) (BIT(3) & ((uint32_t)(regval) << 3))" +.LASF3141: + .string "_AT(T,X) ((T)(X))" +.LASF4394: + .string "unsigned int" +.LASF2454: + .string "SPI_CRCPOLY(spix) REG32((spix) + 0x10U)" +.LASF1942: + .string "I2C_CKCFG_DTCY BIT(14)" +.LASF2267: + .string "RCU_APB1_CKAHB_DIV1 CFG0_APB1PSC(0)" +.LASF424: + .string "__int_least64_t_defined 1" +.LASF1892: + .string "I2C_CTL0_I2CEN BIT(0)" +.LASF770: + .string "BKP_DATA10_41(number) REG16((BKP) + 0x40U + ((number)-10U) * 0x04U)" +.LASF2614: + .string "TIMER_CCHP(timerx) REG32((timerx) + 0x44U)" +.LASF414: + .string "_INT64_T_DECLARED " +.LASF2756: + .string "TIMER_FLAG_UP TIMER_INTF_UPIF" +.LASF3893: + .string "MASK_FCVT_S_D 0xfff0007f" +.LASF1685: + .string "GPIO_BOP_BOP2 BIT(2)" +.LASF2852: + .string "TIMER_CCHP_PROT_1 CCHP_PROT(2)" +.LASF3729: + .string "MASK_LB 0x707f" +.LASF3919: + .string "MASK_FMV_X_S 0xfff0707f" +.LASF2929: + .string "TIMER_EXT_TRI_PSC_DIV2 SMCFG_ETPSC(1)" +.LASF1159: + .string "DAC0_L12DH_DAC0_DH BITS(4,15)" +.LASF1632: + .string "GPIO_CTL0_CTL6 BITS(26, 27)" +.LASF1548: + .string "OB_STDBY_NRST ((uint8_t)0x04U)" +.LASF1299: + .string "DMA_FLAG_ERR DMA_INTF_ERRIF" +.LASF3977: + .string "MASK_FNMADD_D 0x600007f" +.LASF3690: + .string "MATCH_ADD 0x33" + .ident "GCC: (xPack GNU RISC-V Embedded GCC x86_64) 10.2.0" diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/start.S b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/start.S new file mode 100644 index 0000000000..231d14e55f --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/start.S @@ -0,0 +1,258 @@ +// See LICENSE for license details. + +#include "riscv_encoding.h" + + .section .init + + .weak eclic_msip_handler + .weak eclic_mtip_handler + .weak eclic_bwei_handler + .weak eclic_pmovi_handler + .weak WWDGT_IRQHandler + .weak LVD_IRQHandler + .weak TAMPER_IRQHandler + .weak RTC_IRQHandler + .weak FMC_IRQHandler + .weak RCU_IRQHandler + .weak EXTI0_IRQHandler + .weak EXTI1_IRQHandler + .weak EXTI2_IRQHandler + .weak EXTI3_IRQHandler + .weak EXTI4_IRQHandler + .weak DMA0_Channel0_IRQHandler + .weak DMA0_Channel1_IRQHandler + .weak DMA0_Channel2_IRQHandler + .weak DMA0_Channel3_IRQHandler + .weak DMA0_Channel4_IRQHandler + .weak DMA0_Channel5_IRQHandler + .weak DMA0_Channel6_IRQHandler + .weak ADC0_1_IRQHandler + .weak CAN0_TX_IRQHandler + .weak CAN0_RX0_IRQHandler + .weak CAN0_RX1_IRQHandler + .weak CAN0_EWMC_IRQHandler + .weak EXTI5_9_IRQHandler + .weak TIMER0_BRK_IRQHandler + .weak TIMER0_UP_IRQHandler + .weak TIMER0_TRG_CMT_IRQHandler + .weak TIMER0_Channel_IRQHandler + .weak TIMER1_IRQHandler + .weak TIMER2_IRQHandler + .weak TIMER3_IRQHandler + .weak I2C0_EV_IRQHandler + .weak I2C0_ER_IRQHandler + .weak I2C1_EV_IRQHandler + .weak I2C1_ER_IRQHandler + .weak SPI0_IRQHandler + .weak SPI1_IRQHandler + .weak USART0_IRQHandler + .weak USART1_IRQHandler + .weak USART2_IRQHandler + .weak EXTI10_15_IRQHandler + .weak RTC_Alarm_IRQHandler + .weak USBFS_WKUP_IRQHandler + .weak EXMC_IRQHandler + .weak TIMER4_IRQHandler + .weak SPI2_IRQHandler + .weak UART3_IRQHandler + .weak UART4_IRQHandler + .weak TIMER5_IRQHandler + .weak TIMER6_IRQHandler + .weak DMA1_Channel0_IRQHandler + .weak DMA1_Channel1_IRQHandler + .weak DMA1_Channel2_IRQHandler + .weak DMA1_Channel3_IRQHandler + .weak DMA1_Channel4_IRQHandler + .weak CAN1_TX_IRQHandler + .weak CAN1_RX0_IRQHandler + .weak CAN1_RX1_IRQHandler + .weak CAN1_EWMC_IRQHandler + .weak USBFS_IRQHandler + +vector_base: + j _start + .align 2 + .word 0 + .word 0 + .word eclic_msip_handler + .word 0 + .word 0 + .word 0 + .word eclic_mtip_handler + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word eclic_bwei_handler + .word eclic_pmovi_handler + .word WWDGT_IRQHandler + .word LVD_IRQHandler + .word TAMPER_IRQHandler + .word RTC_IRQHandler + .word FMC_IRQHandler + .word RCU_IRQHandler + .word EXTI0_IRQHandler + .word EXTI1_IRQHandler + .word EXTI2_IRQHandler + .word EXTI3_IRQHandler + .word EXTI4_IRQHandler + .word DMA0_Channel0_IRQHandler + .word DMA0_Channel1_IRQHandler + .word DMA0_Channel2_IRQHandler + .word DMA0_Channel3_IRQHandler + .word DMA0_Channel4_IRQHandler + .word DMA0_Channel5_IRQHandler + .word DMA0_Channel6_IRQHandler + .word ADC0_1_IRQHandler + .word CAN0_TX_IRQHandler + .word CAN0_RX0_IRQHandler + .word CAN0_RX1_IRQHandler + .word CAN0_EWMC_IRQHandler + .word EXTI5_9_IRQHandler + .word TIMER0_BRK_IRQHandler + .word TIMER0_UP_IRQHandler + .word TIMER0_TRG_CMT_IRQHandler + .word TIMER0_Channel_IRQHandler + .word TIMER1_IRQHandler + .word TIMER2_IRQHandler + .word TIMER3_IRQHandler + .word I2C0_EV_IRQHandler + .word I2C0_ER_IRQHandler + .word I2C1_EV_IRQHandler + .word I2C1_ER_IRQHandler + .word SPI0_IRQHandler + .word SPI1_IRQHandler + .word USART0_IRQHandler + .word USART1_IRQHandler + .word USART2_IRQHandler + .word EXTI10_15_IRQHandler + .word RTC_Alarm_IRQHandler + .word USBFS_WKUP_IRQHandler + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word EXMC_IRQHandler + .word 0 + .word TIMER4_IRQHandler + .word SPI2_IRQHandler + .word UART3_IRQHandler + .word UART4_IRQHandler + .word TIMER5_IRQHandler + .word TIMER6_IRQHandler + .word DMA1_Channel0_IRQHandler + .word DMA1_Channel1_IRQHandler + .word DMA1_Channel2_IRQHandler + .word DMA1_Channel3_IRQHandler + .word DMA1_Channel4_IRQHandler + .word 0 + .word 0 + .word CAN1_TX_IRQHandler + .word CAN1_RX0_IRQHandler + .word CAN1_RX1_IRQHandler + .word CAN1_EWMC_IRQHandler + .word USBFS_IRQHandler + + .globl _start + .type _start,@function + +_start: + + csrc CSR_MSTATUS, MSTATUS_MIE + /* Jump to logical address first to ensure correct operation of RAM region */ + la a0, _start + li a1, 1 + slli a1, a1, 29 + bleu a1, a0, _start0800 + srli a1, a1, 2 + bleu a1, a0, _start0800 + la a0, _start0800 + add a0, a0, a1 + jr a0 + +_start0800: + + /* Set the the NMI base to share with mtvec by setting CSR_MMISC_CTL */ + li t0, 0x200 + csrs CSR_MMISC_CTL, t0 + + /* Intial the mtvt*/ + la t0, vector_base + csrw CSR_MTVT, t0 + + /* Intial the mtvt2 and enable it*/ + la t0, irq_entry + csrw CSR_MTVT2, t0 + csrs CSR_MTVT2, 0x1 + + /* Intial the CSR MTVEC for the Trap ane NMI base addr*/ + la t0, trap_entry + csrw CSR_MTVEC, t0 + +#ifdef __riscv_flen + /* Enable FPU */ + li t0, MSTATUS_FS + csrs mstatus, t0 + csrw fcsr, x0 +#endif + +.option push +.option norelax + la gp, __global_pointer$ +.option pop + la sp, _sp + + /* Load data section */ + la a0, _data_lma + la a1, _data + la a2, _edata + bgeu a1, a2, 2f +1: + lw t0, (a0) + sw t0, (a1) + addi a0, a0, 4 + addi a1, a1, 4 + bltu a1, a2, 1b +2: + /* Clear bss section */ + la a0, __bss_start + la a1, _end + bgeu a0, a1, 2f +1: + sw zero, (a0) + addi a0, a0, 4 + bltu a0, a1, 1b +2: + /*enable mcycle_minstret*/ + csrci CSR_MCOUNTINHIBIT, 0x5 + /* Call global constructors */ + la a0, __libc_fini_array + call atexit + call __libc_init_array + + + /* argc = argv = 0 */ + li a0, 0 + li a1, 0 + call entry + tail exit + +1: + j 1b + + .global disable_mcycle_minstret +disable_mcycle_minstret: + csrsi CSR_MCOUNTINHIBIT, 0x5 + ret + + .global enable_mcycle_minstret +enable_mcycle_minstret: + csrci CSR_MCOUNTINHIBIT, 0x5 + ret + diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/your_printf.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/your_printf.c new file mode 100644 index 0000000000..bbb95b6167 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/your_printf.c @@ -0,0 +1,5 @@ +int __wrap_printf(const char* fmt, ...) +{ + // You can implement your own printf to reduce the code size, because the printf is really a big function +} + diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/your_printf.s b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/your_printf.s new file mode 100644 index 0000000000..d6f2977d91 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/your_printf.s @@ -0,0 +1,1885 @@ + .file "your_printf.c" + .option nopic + .text +.Ltext0: + .cfi_sections .debug_frame + .align 1 + .globl __wrap_printf + .type __wrap_printf, @function +__wrap_printf: +.LFB0: + .file 1 "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\env_Eclipse\\your_printf.c" + .loc 1 2 1 + .cfi_startproc + addi sp,sp,-64 + .cfi_def_cfa_offset 64 + sw s0,28(sp) + .cfi_offset 8, -36 + addi s0,sp,32 + .cfi_def_cfa 8, 32 + sw a0,-20(s0) + sw a1,4(s0) + sw a2,8(s0) + sw a3,12(s0) + sw a4,16(s0) + sw a5,20(s0) + sw a6,24(s0) + sw a7,28(s0) + .loc 1 4 1 + nop + mv a0,a5 + lw s0,28(sp) + .cfi_restore 8 + .cfi_def_cfa 2, 64 + addi sp,sp,64 + .cfi_def_cfa_offset 0 + jr ra + .cfi_endproc +.LFE0: + .size __wrap_printf, .-__wrap_printf +.Letext0: + .section .debug_info,"",@progbits +.Ldebug_info0: + .4byte 0x6a + .2byte 0x4 + .4byte .Ldebug_abbrev0 + .byte 0x4 + .byte 0x1 + .4byte .LASF330 + .byte 0xc + .4byte .LASF331 + .4byte .LASF332 + .4byte .Ltext0 + .4byte .Letext0-.Ltext0 + .4byte .Ldebug_line0 + .4byte .Ldebug_macro0 + .byte 0x2 + .4byte .LASF333 + .byte 0x1 + .byte 0x1 + .byte 0x5 + .4byte 0x54 + .4byte .LFB0 + .4byte .LFE0-.LFB0 + .byte 0x1 + .byte 0x9c + .4byte 0x54 + .byte 0x3 + .string "fmt" + .byte 0x1 + .byte 0x1 + .byte 0x1f + .4byte 0x5b + .byte 0x2 + .byte 0x91 + .byte 0x4c + .byte 0x4 + .byte 0 + .byte 0x5 + .byte 0x4 + .byte 0x5 + .string "int" + .byte 0x6 + .byte 0x4 + .4byte 0x68 + .byte 0x7 + .byte 0x1 + .byte 0x8 + .4byte .LASF329 + .byte 0x8 + .4byte 0x61 + .byte 0 + .section .debug_abbrev,"",@progbits +.Ldebug_abbrev0: + .byte 0x1 + .byte 0x11 + .byte 0x1 + .byte 0x25 + .byte 0xe + .byte 0x13 + .byte 0xb + .byte 0x3 + .byte 0xe + .byte 0x1b + .byte 0xe + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x10 + .byte 0x17 + .byte 0x99,0x42 + .byte 0x17 + .byte 0 + .byte 0 + .byte 0x2 + .byte 0x2e + .byte 0x1 + .byte 0x3f + .byte 0x19 + .byte 0x3 + .byte 0xe + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x27 + .byte 0x19 + .byte 0x49 + .byte 0x13 + .byte 0x11 + .byte 0x1 + .byte 0x12 + .byte 0x6 + .byte 0x40 + .byte 0x18 + .byte 0x97,0x42 + .byte 0x19 + .byte 0x1 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x3 + .byte 0x5 + .byte 0 + .byte 0x3 + .byte 0x8 + .byte 0x3a + .byte 0xb + .byte 0x3b + .byte 0xb + .byte 0x39 + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0x2 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0x4 + .byte 0x18 + .byte 0 + .byte 0 + .byte 0 + .byte 0x5 + .byte 0x24 + .byte 0 + .byte 0xb + .byte 0xb + .byte 0x3e + .byte 0xb + .byte 0x3 + .byte 0x8 + .byte 0 + .byte 0 + .byte 0x6 + .byte 0xf + .byte 0 + .byte 0xb + .byte 0xb + .byte 0x49 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0x7 + .byte 0x24 + .byte 0 + .byte 0xb + .byte 0xb + .byte 0x3e + .byte 0xb + .byte 0x3 + .byte 0xe + .byte 0 + .byte 0 + .byte 0x8 + .byte 0x26 + .byte 0 + .byte 0x49 + .byte 0x13 + .byte 0 + .byte 0 + .byte 0 + .section .debug_aranges,"",@progbits + .4byte 0x1c + .2byte 0x2 + .4byte .Ldebug_info0 + .byte 0x4 + .byte 0 + .2byte 0 + .2byte 0 + .4byte .Ltext0 + .4byte .Letext0-.Ltext0 + .4byte 0 + .4byte 0 + .section .debug_macro,"",@progbits +.Ldebug_macro0: + .2byte 0x4 + .byte 0x2 + .4byte .Ldebug_line0 + .byte 0x3 + .byte 0 + .byte 0x1 + .byte 0x5 + .byte 0x1 + .4byte .LASF0 + .byte 0x5 + .byte 0x2 + .4byte .LASF1 + .byte 0x5 + .byte 0x3 + .4byte .LASF2 + .byte 0x5 + .byte 0x4 + .4byte .LASF3 + .byte 0x5 + .byte 0x5 + .4byte .LASF4 + .byte 0x5 + .byte 0x6 + .4byte .LASF5 + .byte 0x5 + .byte 0x7 + .4byte .LASF6 + .byte 0x5 + .byte 0x8 + .4byte .LASF7 + .byte 0x5 + .byte 0x9 + .4byte .LASF8 + .byte 0x5 + .byte 0xa + .4byte .LASF9 + .byte 0x5 + .byte 0xb + .4byte .LASF10 + .byte 0x5 + .byte 0xc + .4byte .LASF11 + .byte 0x5 + .byte 0xd + .4byte .LASF12 + .byte 0x5 + .byte 0xe + .4byte .LASF13 + .byte 0x5 + .byte 0xf + .4byte .LASF14 + .byte 0x5 + .byte 0x10 + .4byte .LASF15 + .byte 0x5 + .byte 0x11 + .4byte .LASF16 + .byte 0x5 + .byte 0x12 + .4byte .LASF17 + .byte 0x5 + .byte 0x13 + .4byte .LASF18 + .byte 0x5 + .byte 0x14 + .4byte .LASF19 + .byte 0x5 + .byte 0x15 + .4byte .LASF20 + .byte 0x5 + .byte 0x16 + .4byte .LASF21 + .byte 0x5 + .byte 0x17 + .4byte .LASF22 + .byte 0x5 + .byte 0x18 + .4byte .LASF23 + .byte 0x5 + .byte 0x19 + .4byte .LASF24 + .byte 0x5 + .byte 0x1a + .4byte .LASF25 + .byte 0x5 + .byte 0x1b + .4byte .LASF26 + .byte 0x5 + .byte 0x1c + .4byte .LASF27 + .byte 0x5 + .byte 0x1d + .4byte .LASF28 + .byte 0x5 + .byte 0x1e + .4byte .LASF29 + .byte 0x5 + .byte 0x1f + .4byte .LASF30 + .byte 0x5 + .byte 0x20 + .4byte .LASF31 + .byte 0x5 + .byte 0x21 + .4byte .LASF32 + .byte 0x5 + .byte 0x22 + .4byte .LASF33 + .byte 0x5 + .byte 0x23 + .4byte .LASF34 + .byte 0x5 + .byte 0x24 + .4byte .LASF35 + .byte 0x5 + .byte 0x25 + .4byte .LASF36 + .byte 0x5 + .byte 0x26 + .4byte .LASF37 + .byte 0x5 + .byte 0x27 + .4byte .LASF38 + .byte 0x5 + .byte 0x28 + .4byte .LASF39 + .byte 0x5 + .byte 0x29 + .4byte .LASF40 + .byte 0x5 + .byte 0x2a + .4byte .LASF41 + .byte 0x5 + .byte 0x2b + .4byte .LASF42 + .byte 0x5 + .byte 0x2c + .4byte .LASF43 + .byte 0x5 + .byte 0x2d + .4byte .LASF44 + .byte 0x5 + .byte 0x2e + .4byte .LASF45 + .byte 0x5 + .byte 0x2f + .4byte .LASF46 + .byte 0x5 + .byte 0x30 + .4byte .LASF47 + .byte 0x5 + .byte 0x31 + .4byte .LASF48 + .byte 0x5 + .byte 0x32 + .4byte .LASF49 + .byte 0x5 + .byte 0x33 + .4byte .LASF50 + .byte 0x5 + .byte 0x34 + .4byte .LASF51 + .byte 0x5 + .byte 0x35 + .4byte .LASF52 + .byte 0x5 + .byte 0x36 + .4byte .LASF53 + .byte 0x5 + .byte 0x37 + .4byte .LASF54 + .byte 0x5 + .byte 0x38 + .4byte .LASF55 + .byte 0x5 + .byte 0x39 + .4byte .LASF56 + .byte 0x5 + .byte 0x3a + .4byte .LASF57 + .byte 0x5 + .byte 0x3b + .4byte .LASF58 + .byte 0x5 + .byte 0x3c + .4byte .LASF59 + .byte 0x5 + .byte 0x3d + .4byte .LASF60 + .byte 0x5 + .byte 0x3e + .4byte .LASF61 + .byte 0x5 + .byte 0x3f + .4byte .LASF62 + .byte 0x5 + .byte 0x40 + .4byte .LASF63 + .byte 0x5 + .byte 0x41 + .4byte .LASF64 + .byte 0x5 + .byte 0x42 + .4byte .LASF65 + .byte 0x5 + .byte 0x43 + .4byte .LASF66 + .byte 0x5 + .byte 0x44 + .4byte .LASF67 + .byte 0x5 + .byte 0x45 + .4byte .LASF68 + .byte 0x5 + .byte 0x46 + .4byte .LASF69 + .byte 0x5 + .byte 0x47 + .4byte .LASF70 + .byte 0x5 + .byte 0x48 + .4byte .LASF71 + .byte 0x5 + .byte 0x49 + .4byte .LASF72 + .byte 0x5 + .byte 0x4a + .4byte .LASF73 + .byte 0x5 + .byte 0x4b + .4byte .LASF74 + .byte 0x5 + .byte 0x4c + .4byte .LASF75 + .byte 0x5 + .byte 0x4d + .4byte .LASF76 + .byte 0x5 + .byte 0x4e + .4byte .LASF77 + .byte 0x5 + .byte 0x4f + .4byte .LASF78 + .byte 0x5 + .byte 0x50 + .4byte .LASF79 + .byte 0x5 + .byte 0x51 + .4byte .LASF80 + .byte 0x5 + .byte 0x52 + .4byte .LASF81 + .byte 0x5 + .byte 0x53 + .4byte .LASF82 + .byte 0x5 + .byte 0x54 + .4byte .LASF83 + .byte 0x5 + .byte 0x55 + .4byte .LASF84 + .byte 0x5 + .byte 0x56 + .4byte .LASF85 + .byte 0x5 + .byte 0x57 + .4byte .LASF86 + .byte 0x5 + .byte 0x58 + .4byte .LASF87 + .byte 0x5 + .byte 0x59 + .4byte .LASF88 + .byte 0x5 + .byte 0x5a + .4byte .LASF89 + .byte 0x5 + .byte 0x5b + .4byte .LASF90 + .byte 0x5 + .byte 0x5c + .4byte .LASF91 + .byte 0x5 + .byte 0x5d + .4byte .LASF92 + .byte 0x5 + .byte 0x5e + .4byte .LASF93 + .byte 0x5 + .byte 0x5f + .4byte .LASF94 + .byte 0x5 + .byte 0x60 + .4byte .LASF95 + .byte 0x5 + .byte 0x61 + .4byte .LASF96 + .byte 0x5 + .byte 0x62 + .4byte .LASF97 + .byte 0x5 + .byte 0x63 + .4byte .LASF98 + .byte 0x5 + .byte 0x64 + .4byte .LASF99 + .byte 0x5 + .byte 0x65 + .4byte .LASF100 + .byte 0x5 + .byte 0x66 + .4byte .LASF101 + .byte 0x5 + .byte 0x67 + .4byte .LASF102 + .byte 0x5 + .byte 0x68 + .4byte .LASF103 + .byte 0x5 + .byte 0x69 + .4byte .LASF104 + .byte 0x5 + .byte 0x6a + .4byte .LASF105 + .byte 0x5 + .byte 0x6b + .4byte .LASF106 + .byte 0x5 + .byte 0x6c + .4byte .LASF107 + .byte 0x5 + .byte 0x6d + .4byte .LASF108 + .byte 0x5 + .byte 0x6e + .4byte .LASF109 + .byte 0x5 + .byte 0x6f + .4byte .LASF110 + .byte 0x5 + .byte 0x70 + .4byte .LASF111 + .byte 0x5 + .byte 0x71 + .4byte .LASF112 + .byte 0x5 + .byte 0x72 + .4byte .LASF113 + .byte 0x5 + .byte 0x73 + .4byte .LASF114 + .byte 0x5 + .byte 0x74 + .4byte .LASF115 + .byte 0x5 + .byte 0x75 + .4byte .LASF116 + .byte 0x5 + .byte 0x76 + .4byte .LASF117 + .byte 0x5 + .byte 0x77 + .4byte .LASF118 + .byte 0x5 + .byte 0x78 + .4byte .LASF119 + .byte 0x5 + .byte 0x79 + .4byte .LASF120 + .byte 0x5 + .byte 0x7a + .4byte .LASF121 + .byte 0x5 + .byte 0x7b + .4byte .LASF122 + .byte 0x5 + .byte 0x7c + .4byte .LASF123 + .byte 0x5 + .byte 0x7d + .4byte .LASF124 + .byte 0x5 + .byte 0x7e + .4byte .LASF125 + .byte 0x5 + .byte 0x7f + .4byte .LASF126 + .byte 0x5 + .byte 0x80,0x1 + .4byte .LASF127 + .byte 0x5 + .byte 0x81,0x1 + .4byte .LASF128 + .byte 0x5 + .byte 0x82,0x1 + .4byte .LASF129 + .byte 0x5 + .byte 0x83,0x1 + .4byte .LASF130 + .byte 0x5 + .byte 0x84,0x1 + .4byte .LASF131 + .byte 0x5 + .byte 0x85,0x1 + .4byte .LASF132 + .byte 0x5 + .byte 0x86,0x1 + .4byte .LASF133 + .byte 0x5 + .byte 0x87,0x1 + .4byte .LASF134 + .byte 0x5 + .byte 0x88,0x1 + .4byte .LASF135 + .byte 0x5 + .byte 0x89,0x1 + .4byte .LASF136 + .byte 0x5 + .byte 0x8a,0x1 + .4byte .LASF137 + .byte 0x5 + .byte 0x8b,0x1 + .4byte .LASF138 + .byte 0x5 + .byte 0x8c,0x1 + .4byte .LASF139 + .byte 0x5 + .byte 0x8d,0x1 + .4byte .LASF140 + .byte 0x5 + .byte 0x8e,0x1 + .4byte .LASF141 + .byte 0x5 + .byte 0x8f,0x1 + .4byte .LASF142 + .byte 0x5 + .byte 0x90,0x1 + .4byte .LASF143 + .byte 0x5 + .byte 0x91,0x1 + .4byte .LASF144 + .byte 0x5 + .byte 0x92,0x1 + .4byte .LASF145 + .byte 0x5 + .byte 0x93,0x1 + .4byte .LASF146 + .byte 0x5 + .byte 0x94,0x1 + .4byte .LASF147 + .byte 0x5 + .byte 0x95,0x1 + .4byte .LASF148 + .byte 0x5 + .byte 0x96,0x1 + .4byte .LASF149 + .byte 0x5 + .byte 0x97,0x1 + .4byte .LASF150 + .byte 0x5 + .byte 0x98,0x1 + .4byte .LASF151 + .byte 0x5 + .byte 0x99,0x1 + .4byte .LASF152 + .byte 0x5 + .byte 0x9a,0x1 + .4byte .LASF153 + .byte 0x5 + .byte 0x9b,0x1 + .4byte .LASF154 + .byte 0x5 + .byte 0x9c,0x1 + .4byte .LASF155 + .byte 0x5 + .byte 0x9d,0x1 + .4byte .LASF156 + .byte 0x5 + .byte 0x9e,0x1 + .4byte .LASF157 + .byte 0x5 + .byte 0x9f,0x1 + .4byte .LASF158 + .byte 0x5 + .byte 0xa0,0x1 + .4byte .LASF159 + .byte 0x5 + .byte 0xa1,0x1 + .4byte .LASF160 + .byte 0x5 + .byte 0xa2,0x1 + .4byte .LASF161 + .byte 0x5 + .byte 0xa3,0x1 + .4byte .LASF162 + .byte 0x5 + .byte 0xa4,0x1 + .4byte .LASF163 + .byte 0x5 + .byte 0xa5,0x1 + .4byte .LASF164 + .byte 0x5 + .byte 0xa6,0x1 + .4byte .LASF165 + .byte 0x5 + .byte 0xa7,0x1 + .4byte .LASF166 + .byte 0x5 + .byte 0xa8,0x1 + .4byte .LASF167 + .byte 0x5 + .byte 0xa9,0x1 + .4byte .LASF168 + .byte 0x5 + .byte 0xaa,0x1 + .4byte .LASF169 + .byte 0x5 + .byte 0xab,0x1 + .4byte .LASF170 + .byte 0x5 + .byte 0xac,0x1 + .4byte .LASF171 + .byte 0x5 + .byte 0xad,0x1 + .4byte .LASF172 + .byte 0x5 + .byte 0xae,0x1 + .4byte .LASF173 + .byte 0x5 + .byte 0xaf,0x1 + .4byte .LASF174 + .byte 0x5 + .byte 0xb0,0x1 + .4byte .LASF175 + .byte 0x5 + .byte 0xb1,0x1 + .4byte .LASF176 + .byte 0x5 + .byte 0xb2,0x1 + .4byte .LASF177 + .byte 0x5 + .byte 0xb3,0x1 + .4byte .LASF178 + .byte 0x5 + .byte 0xb4,0x1 + .4byte .LASF179 + .byte 0x5 + .byte 0xb5,0x1 + .4byte .LASF180 + .byte 0x5 + .byte 0xb6,0x1 + .4byte .LASF181 + .byte 0x5 + .byte 0xb7,0x1 + .4byte .LASF182 + .byte 0x5 + .byte 0xb8,0x1 + .4byte .LASF183 + .byte 0x5 + .byte 0xb9,0x1 + .4byte .LASF184 + .byte 0x5 + .byte 0xba,0x1 + .4byte .LASF185 + .byte 0x5 + .byte 0xbb,0x1 + .4byte .LASF186 + .byte 0x5 + .byte 0xbc,0x1 + .4byte .LASF187 + .byte 0x5 + .byte 0xbd,0x1 + .4byte .LASF188 + .byte 0x5 + .byte 0xbe,0x1 + .4byte .LASF189 + .byte 0x5 + .byte 0xbf,0x1 + .4byte .LASF190 + .byte 0x5 + .byte 0xc0,0x1 + .4byte .LASF191 + .byte 0x5 + .byte 0xc1,0x1 + .4byte .LASF192 + .byte 0x5 + .byte 0xc2,0x1 + .4byte .LASF193 + .byte 0x5 + .byte 0xc3,0x1 + .4byte .LASF194 + .byte 0x5 + .byte 0xc4,0x1 + .4byte .LASF195 + .byte 0x5 + .byte 0xc5,0x1 + .4byte .LASF196 + .byte 0x5 + .byte 0xc6,0x1 + .4byte .LASF197 + .byte 0x5 + .byte 0xc7,0x1 + .4byte .LASF198 + .byte 0x5 + .byte 0xc8,0x1 + .4byte .LASF199 + .byte 0x5 + .byte 0xc9,0x1 + .4byte .LASF200 + .byte 0x5 + .byte 0xca,0x1 + .4byte .LASF201 + .byte 0x5 + .byte 0xcb,0x1 + .4byte .LASF202 + .byte 0x5 + .byte 0xcc,0x1 + .4byte .LASF203 + .byte 0x5 + .byte 0xcd,0x1 + .4byte .LASF204 + .byte 0x5 + .byte 0xce,0x1 + .4byte .LASF205 + .byte 0x5 + .byte 0xcf,0x1 + .4byte .LASF206 + .byte 0x5 + .byte 0xd0,0x1 + .4byte .LASF207 + .byte 0x5 + .byte 0xd1,0x1 + .4byte .LASF208 + .byte 0x5 + .byte 0xd2,0x1 + .4byte .LASF209 + .byte 0x5 + .byte 0xd3,0x1 + .4byte .LASF210 + .byte 0x5 + .byte 0xd4,0x1 + .4byte .LASF211 + .byte 0x5 + .byte 0xd5,0x1 + .4byte .LASF212 + .byte 0x5 + .byte 0xd6,0x1 + .4byte .LASF213 + .byte 0x5 + .byte 0xd7,0x1 + .4byte .LASF214 + .byte 0x5 + .byte 0xd8,0x1 + .4byte .LASF215 + .byte 0x5 + .byte 0xd9,0x1 + .4byte .LASF216 + .byte 0x5 + .byte 0xda,0x1 + .4byte .LASF217 + .byte 0x5 + .byte 0xdb,0x1 + .4byte .LASF218 + .byte 0x5 + .byte 0xdc,0x1 + .4byte .LASF219 + .byte 0x5 + .byte 0xdd,0x1 + .4byte .LASF220 + .byte 0x5 + .byte 0xde,0x1 + .4byte .LASF221 + .byte 0x5 + .byte 0xdf,0x1 + .4byte .LASF222 + .byte 0x5 + .byte 0xe0,0x1 + .4byte .LASF223 + .byte 0x5 + .byte 0xe1,0x1 + .4byte .LASF224 + .byte 0x5 + .byte 0xe2,0x1 + .4byte .LASF225 + .byte 0x5 + .byte 0xe3,0x1 + .4byte .LASF226 + .byte 0x5 + .byte 0xe4,0x1 + .4byte .LASF227 + .byte 0x5 + .byte 0xe5,0x1 + .4byte .LASF228 + .byte 0x5 + .byte 0xe6,0x1 + .4byte .LASF229 + .byte 0x5 + .byte 0xe7,0x1 + .4byte .LASF230 + .byte 0x5 + .byte 0xe8,0x1 + .4byte .LASF231 + .byte 0x5 + .byte 0xe9,0x1 + .4byte .LASF232 + .byte 0x5 + .byte 0xea,0x1 + .4byte .LASF233 + .byte 0x5 + .byte 0xeb,0x1 + .4byte .LASF234 + .byte 0x5 + .byte 0xec,0x1 + .4byte .LASF235 + .byte 0x5 + .byte 0xed,0x1 + .4byte .LASF236 + .byte 0x5 + .byte 0xee,0x1 + .4byte .LASF237 + .byte 0x5 + .byte 0xef,0x1 + .4byte .LASF238 + .byte 0x5 + .byte 0xf0,0x1 + .4byte .LASF239 + .byte 0x5 + .byte 0xf1,0x1 + .4byte .LASF240 + .byte 0x5 + .byte 0xf2,0x1 + .4byte .LASF241 + .byte 0x5 + .byte 0xf3,0x1 + .4byte .LASF242 + .byte 0x5 + .byte 0xf4,0x1 + .4byte .LASF243 + .byte 0x5 + .byte 0xf5,0x1 + .4byte .LASF244 + .byte 0x5 + .byte 0xf6,0x1 + .4byte .LASF245 + .byte 0x5 + .byte 0xf7,0x1 + .4byte .LASF246 + .byte 0x5 + .byte 0xf8,0x1 + .4byte .LASF247 + .byte 0x5 + .byte 0xf9,0x1 + .4byte .LASF248 + .byte 0x5 + .byte 0xfa,0x1 + .4byte .LASF249 + .byte 0x5 + .byte 0xfb,0x1 + .4byte .LASF250 + .byte 0x5 + .byte 0xfc,0x1 + .4byte .LASF251 + .byte 0x5 + .byte 0xfd,0x1 + .4byte .LASF252 + .byte 0x5 + .byte 0xfe,0x1 + .4byte .LASF253 + .byte 0x5 + .byte 0xff,0x1 + .4byte .LASF254 + .byte 0x5 + .byte 0x80,0x2 + .4byte .LASF255 + .byte 0x5 + .byte 0x81,0x2 + .4byte .LASF256 + .byte 0x5 + .byte 0x82,0x2 + .4byte .LASF257 + .byte 0x5 + .byte 0x83,0x2 + .4byte .LASF258 + .byte 0x5 + .byte 0x84,0x2 + .4byte .LASF259 + .byte 0x5 + .byte 0x85,0x2 + .4byte .LASF260 + .byte 0x5 + .byte 0x86,0x2 + .4byte .LASF261 + .byte 0x5 + .byte 0x87,0x2 + .4byte .LASF262 + .byte 0x5 + .byte 0x88,0x2 + .4byte .LASF263 + .byte 0x5 + .byte 0x89,0x2 + .4byte .LASF264 + .byte 0x5 + .byte 0x8a,0x2 + .4byte .LASF265 + .byte 0x5 + .byte 0x8b,0x2 + .4byte .LASF266 + .byte 0x5 + .byte 0x8c,0x2 + .4byte .LASF267 + .byte 0x5 + .byte 0x8d,0x2 + .4byte .LASF268 + .byte 0x5 + .byte 0x8e,0x2 + .4byte .LASF269 + .byte 0x5 + .byte 0x8f,0x2 + .4byte .LASF270 + .byte 0x5 + .byte 0x90,0x2 + .4byte .LASF271 + .byte 0x5 + .byte 0x91,0x2 + .4byte .LASF272 + .byte 0x5 + .byte 0x92,0x2 + .4byte .LASF273 + .byte 0x5 + .byte 0x93,0x2 + .4byte .LASF274 + .byte 0x5 + .byte 0x94,0x2 + .4byte .LASF275 + .byte 0x5 + .byte 0x95,0x2 + .4byte .LASF276 + .byte 0x5 + .byte 0x96,0x2 + .4byte .LASF277 + .byte 0x5 + .byte 0x97,0x2 + .4byte .LASF278 + .byte 0x5 + .byte 0x98,0x2 + .4byte .LASF279 + .byte 0x5 + .byte 0x99,0x2 + .4byte .LASF280 + .byte 0x5 + .byte 0x9a,0x2 + .4byte .LASF281 + .byte 0x5 + .byte 0x9b,0x2 + .4byte .LASF282 + .byte 0x5 + .byte 0x9c,0x2 + .4byte .LASF283 + .byte 0x5 + .byte 0x9d,0x2 + .4byte .LASF284 + .byte 0x5 + .byte 0x9e,0x2 + .4byte .LASF285 + .byte 0x5 + .byte 0x9f,0x2 + .4byte .LASF286 + .byte 0x5 + .byte 0xa0,0x2 + .4byte .LASF287 + .byte 0x5 + .byte 0xa1,0x2 + .4byte .LASF288 + .byte 0x5 + .byte 0xa2,0x2 + .4byte .LASF289 + .byte 0x5 + .byte 0xa3,0x2 + .4byte .LASF290 + .byte 0x5 + .byte 0xa4,0x2 + .4byte .LASF291 + .byte 0x5 + .byte 0xa5,0x2 + .4byte .LASF292 + .byte 0x5 + .byte 0xa6,0x2 + .4byte .LASF293 + .byte 0x5 + .byte 0xa7,0x2 + .4byte .LASF294 + .byte 0x5 + .byte 0xa8,0x2 + .4byte .LASF295 + .byte 0x5 + .byte 0xa9,0x2 + .4byte .LASF296 + .byte 0x5 + .byte 0xaa,0x2 + .4byte .LASF297 + .byte 0x5 + .byte 0xab,0x2 + .4byte .LASF298 + .byte 0x5 + .byte 0xac,0x2 + .4byte .LASF299 + .byte 0x5 + .byte 0xad,0x2 + .4byte .LASF300 + .byte 0x5 + .byte 0xae,0x2 + .4byte .LASF301 + .byte 0x5 + .byte 0xaf,0x2 + .4byte .LASF302 + .byte 0x5 + .byte 0xb0,0x2 + .4byte .LASF303 + .byte 0x5 + .byte 0xb1,0x2 + .4byte .LASF304 + .byte 0x5 + .byte 0xb2,0x2 + .4byte .LASF305 + .byte 0x5 + .byte 0xb3,0x2 + .4byte .LASF306 + .byte 0x5 + .byte 0xb4,0x2 + .4byte .LASF307 + .byte 0x5 + .byte 0xb5,0x2 + .4byte .LASF308 + .byte 0x5 + .byte 0xb6,0x2 + .4byte .LASF309 + .byte 0x5 + .byte 0xb7,0x2 + .4byte .LASF310 + .byte 0x5 + .byte 0xb8,0x2 + .4byte .LASF311 + .byte 0x5 + .byte 0xb9,0x2 + .4byte .LASF312 + .byte 0x5 + .byte 0xba,0x2 + .4byte .LASF313 + .byte 0x5 + .byte 0xbb,0x2 + .4byte .LASF314 + .byte 0x5 + .byte 0xbc,0x2 + .4byte .LASF315 + .byte 0x5 + .byte 0xbd,0x2 + .4byte .LASF316 + .byte 0x5 + .byte 0xbe,0x2 + .4byte .LASF317 + .byte 0x5 + .byte 0xbf,0x2 + .4byte .LASF318 + .byte 0x5 + .byte 0xc0,0x2 + .4byte .LASF319 + .byte 0x5 + .byte 0x1 + .4byte .LASF320 + .byte 0x5 + .byte 0x2 + .4byte .LASF321 + .byte 0x5 + .byte 0x3 + .4byte .LASF322 + .byte 0x5 + .byte 0x4 + .4byte .LASF323 + .byte 0x5 + .byte 0x5 + .4byte .LASF324 + .byte 0x5 + .byte 0x6 + .4byte .LASF325 + .byte 0x5 + .byte 0x7 + .4byte .LASF326 + .byte 0x5 + .byte 0x8 + .4byte .LASF327 + .byte 0x5 + .byte 0x9 + .4byte .LASF328 + .byte 0x4 + .byte 0 + .section .debug_line,"",@progbits +.Ldebug_line0: + .section .debug_str,"MS",@progbits,1 +.LASF132: + .string "__UINT_FAST8_MAX__ 0xffffffffU" +.LASF233: + .string "__FLT64_HAS_DENORM__ 1" +.LASF129: + .string "__INT_FAST32_WIDTH__ 32" +.LASF202: + .string "__FLT16_DENORM_MIN__ 5.96046447753906250000000000000000000e-8F16" +.LASF231: + .string "__FLT64_EPSILON__ 2.22044604925031308084726333618164062e-16F64" +.LASF207: + .string "__FLT32_DIG__ 6" +.LASF23: + .string "__SIZEOF_SIZE_T__ 4" +.LASF44: + .string "__INT64_TYPE__ long long int" +.LASF246: + .string "__FLT128_EPSILON__ 1.92592994438723585305597794258492732e-34F128" +.LASF155: + .string "__FLT_EPSILON__ 1.19209289550781250000000000000000000e-7F" +.LASF114: + .string "__INT64_C(c) c ## LL" +.LASF31: + .string "__SIZEOF_POINTER__ 4" +.LASF55: + .string "__UINT_LEAST32_TYPE__ long unsigned int" +.LASF308: + .string "__riscv_muldiv 1" +.LASF84: + .string "__WCHAR_WIDTH__ 32" +.LASF73: + .string "__WCHAR_MAX__ 0x7fffffff" +.LASF91: + .string "__UINTMAX_C(c) c ## ULL" +.LASF124: + .string "__INT_FAST8_MAX__ 0x7fffffff" +.LASF48: + .string "__UINT64_TYPE__ long long unsigned int" +.LASF230: + .string "__FLT64_MIN__ 2.22507385850720138309023271733240406e-308F64" +.LASF314: + .string "__riscv_m 2000000" +.LASF255: + .string "__FLT32X_MAX_EXP__ 1024" +.LASF180: + .string "__LDBL_MAX_10_EXP__ 4932" +.LASF192: + .string "__FLT16_DIG__ 3" +.LASF10: + .string "__ATOMIC_SEQ_CST 5" +.LASF313: + .string "__riscv_i 2000000" +.LASF228: + .string "__FLT64_MAX__ 1.79769313486231570814527423731704357e+308F64" +.LASF301: + .string "__SIZEOF_WINT_T__ 4" +.LASF204: + .string "__FLT16_HAS_INFINITY__ 1" +.LASF185: + .string "__LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L" +.LASF112: + .string "__INT_LEAST32_WIDTH__ 32" +.LASF39: + .string "__CHAR32_TYPE__ long unsigned int" +.LASF175: + .string "__LDBL_MANT_DIG__ 113" +.LASF274: + .string "__FLT64X_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F64x" +.LASF24: + .string "__CHAR_BIT__ 8" +.LASF173: + .string "__DBL_HAS_INFINITY__ 1" +.LASF1: + .string "__STDC_VERSION__ 201710L" +.LASF259: + .string "__FLT32X_NORM_MAX__ 1.79769313486231570814527423731704357e+308F32x" +.LASF254: + .string "__FLT32X_MIN_10_EXP__ (-307)" +.LASF261: + .string "__FLT32X_EPSILON__ 2.22044604925031308084726333618164062e-16F32x" +.LASF278: + .string "__FLT64X_HAS_DENORM__ 1" +.LASF305: + .string "__riscv_atomic 1" +.LASF4: + .string "__STDC_HOSTED__ 1" +.LASF142: + .string "__FLT_EVAL_METHOD_TS_18661_3__ 0" +.LASF226: + .string "__FLT64_MAX_10_EXP__ 308" +.LASF170: + .string "__DBL_EPSILON__ ((double)2.22044604925031308084726333618164062e-16L)" +.LASF269: + .string "__FLT64X_MIN_10_EXP__ (-4931)" +.LASF332: + .string "D:\\\\rt-thread\\\\bsp\\\\gd32\\\\risc-v\\\\gd32vf103v-eval" +.LASF272: + .string "__FLT64X_DECIMAL_DIG__ 36" +.LASF75: + .string "__WINT_MAX__ 0xffffffffU" +.LASF32: + .string "__SIZE_TYPE__ unsigned int" +.LASF235: + .string "__FLT64_HAS_QUIET_NAN__ 1" +.LASF218: + .string "__FLT32_HAS_DENORM__ 1" +.LASF79: + .string "__SCHAR_WIDTH__ 8" +.LASF160: + .string "__DBL_MANT_DIG__ 53" +.LASF56: + .string "__UINT_LEAST64_TYPE__ long long unsigned int" +.LASF169: + .string "__DBL_MIN__ ((double)2.22507385850720138309023271733240406e-308L)" +.LASF65: + .string "__INTPTR_TYPE__ int" +.LASF113: + .string "__INT_LEAST64_MAX__ 0x7fffffffffffffffLL" +.LASF80: + .string "__SHRT_WIDTH__ 16" +.LASF194: + .string "__FLT16_MIN_10_EXP__ (-4)" +.LASF45: + .string "__UINT8_TYPE__ unsigned char" +.LASF40: + .string "__SIG_ATOMIC_TYPE__ int" +.LASF214: + .string "__FLT32_NORM_MAX__ 3.40282346638528859811704183484516925e+38F32" +.LASF162: + .string "__DBL_MIN_EXP__ (-1021)" +.LASF299: + .string "__PRAGMA_REDEFINE_EXTNAME 1" +.LASF109: + .string "__INT_LEAST16_WIDTH__ 16" +.LASF183: + .string "__LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L" +.LASF326: + .string "RT_USING_NEWLIB 1" +.LASF189: + .string "__LDBL_HAS_INFINITY__ 1" +.LASF157: + .string "__FLT_HAS_DENORM__ 1" +.LASF238: + .string "__FLT128_MIN_EXP__ (-16381)" +.LASF133: + .string "__UINT_FAST16_MAX__ 0xffffffffU" +.LASF136: + .string "__INTPTR_MAX__ 0x7fffffff" +.LASF101: + .string "__UINT16_MAX__ 0xffff" +.LASF291: + .string "__GCC_ATOMIC_WCHAR_T_LOCK_FREE 2" +.LASF41: + .string "__INT8_TYPE__ signed char" +.LASF29: + .string "__BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__" +.LASF82: + .string "__LONG_WIDTH__ 32" +.LASF168: + .string "__DBL_NORM_MAX__ ((double)1.79769313486231570814527423731704357e+308L)" +.LASF30: + .string "__FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__" +.LASF118: + .string "__UINT_LEAST16_MAX__ 0xffff" +.LASF43: + .string "__INT32_TYPE__ long int" +.LASF50: + .string "__INT_LEAST16_TYPE__ short int" +.LASF58: + .string "__INT_FAST16_TYPE__ int" +.LASF88: + .string "__INTMAX_MAX__ 0x7fffffffffffffffLL" +.LASF156: + .string "__FLT_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F" +.LASF187: + .string "__LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L" +.LASF21: + .string "__SIZEOF_DOUBLE__ 8" +.LASF315: + .string "__riscv_a 2000000" +.LASF319: + .string "__ELF__ 1" +.LASF100: + .string "__UINT8_MAX__ 0xff" +.LASF78: + .string "__SIZE_MAX__ 0xffffffffU" +.LASF298: + .string "__GCC_HAVE_DWARF2_CFI_ASM 1" +.LASF210: + .string "__FLT32_MAX_EXP__ 128" +.LASF111: + .string "__INT32_C(c) c ## L" +.LASF225: + .string "__FLT64_MAX_EXP__ 1024" +.LASF137: + .string "__INTPTR_WIDTH__ 32" +.LASF87: + .string "__SIZE_WIDTH__ 32" +.LASF216: + .string "__FLT32_EPSILON__ 1.19209289550781250000000000000000000e-7F32" +.LASF290: + .string "__GCC_ATOMIC_CHAR32_T_LOCK_FREE 2" +.LASF37: + .string "__UINTMAX_TYPE__ long long unsigned int" +.LASF95: + .string "__SIG_ATOMIC_WIDTH__ 32" +.LASF135: + .string "__UINT_FAST64_MAX__ 0xffffffffffffffffULL" +.LASF177: + .string "__LDBL_MIN_EXP__ (-16381)" +.LASF18: + .string "__SIZEOF_LONG_LONG__ 8" +.LASF146: + .string "__FLT_DIG__ 6" +.LASF171: + .string "__DBL_DENORM_MIN__ ((double)4.94065645841246544176568792868221372e-324L)" +.LASF12: + .string "__ATOMIC_RELEASE 3" +.LASF150: + .string "__FLT_MAX_10_EXP__ 38" +.LASF284: + .string "__NO_INLINE__ 1" +.LASF322: + .string "NO_INIT 1" +.LASF76: + .string "__WINT_MIN__ 0U" +.LASF22: + .string "__SIZEOF_LONG_DOUBLE__ 16" +.LASF105: + .string "__INT8_C(c) c" +.LASF215: + .string "__FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32" +.LASF6: + .string "__GNUC_MINOR__ 2" +.LASF219: + .string "__FLT32_HAS_INFINITY__ 1" +.LASF275: + .string "__FLT64X_MIN__ 3.36210314311209350626267781732175260e-4932F64x" +.LASF143: + .string "__DEC_EVAL_METHOD__ 2" +.LASF72: + .string "__LONG_LONG_MAX__ 0x7fffffffffffffffLL" +.LASF5: + .string "__GNUC__ 10" +.LASF205: + .string "__FLT16_HAS_QUIET_NAN__ 1" +.LASF159: + .string "__FLT_HAS_QUIET_NAN__ 1" +.LASF127: + .string "__INT_FAST16_WIDTH__ 32" +.LASF206: + .string "__FLT32_MANT_DIG__ 24" +.LASF125: + .string "__INT_FAST8_WIDTH__ 32" +.LASF99: + .string "__INT64_MAX__ 0x7fffffffffffffffLL" +.LASF147: + .string "__FLT_MIN_EXP__ (-125)" +.LASF260: + .string "__FLT32X_MIN__ 2.22507385850720138309023271733240406e-308F32x" +.LASF312: + .string "__riscv_arch_test 1" +.LASF181: + .string "__DECIMAL_DIG__ 36" +.LASF310: + .string "__riscv_float_abi_soft 1" +.LASF27: + .string "__ORDER_BIG_ENDIAN__ 4321" +.LASF38: + .string "__CHAR16_TYPE__ short unsigned int" +.LASF178: + .string "__LDBL_MIN_10_EXP__ (-4931)" +.LASF297: + .string "__GCC_ATOMIC_POINTER_LOCK_FREE 2" +.LASF36: + .string "__INTMAX_TYPE__ long long int" +.LASF249: + .string "__FLT128_HAS_INFINITY__ 1" +.LASF19: + .string "__SIZEOF_SHORT__ 2" +.LASF154: + .string "__FLT_MIN__ 1.17549435082228750796873653722224568e-38F" +.LASF234: + .string "__FLT64_HAS_INFINITY__ 1" +.LASF295: + .string "__GCC_ATOMIC_LLONG_LOCK_FREE 1" +.LASF108: + .string "__INT16_C(c) c" +.LASF279: + .string "__FLT64X_HAS_INFINITY__ 1" +.LASF149: + .string "__FLT_MAX_EXP__ 128" +.LASF331: + .string "D:\\rt-thread\\bsp\\gd32\\risc-v\\libraries\\GD32VF103_Firmware_Library\\RISCV\\env_Eclipse\\your_printf.c" +.LASF318: + .string "__riscv_zifencei 2000000" +.LASF172: + .string "__DBL_HAS_DENORM__ 1" +.LASF277: + .string "__FLT64X_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F64x" +.LASF239: + .string "__FLT128_MIN_10_EXP__ (-4931)" +.LASF70: + .string "__INT_MAX__ 0x7fffffff" +.LASF248: + .string "__FLT128_HAS_DENORM__ 1" +.LASF68: + .string "__SCHAR_MAX__ 0x7f" +.LASF7: + .string "__GNUC_PATCHLEVEL__ 0" +.LASF209: + .string "__FLT32_MIN_10_EXP__ (-37)" +.LASF316: + .string "__riscv_c 2000000" +.LASF166: + .string "__DBL_DECIMAL_DIG__ 17" +.LASF161: + .string "__DBL_DIG__ 15" +.LASF151: + .string "__FLT_DECIMAL_DIG__ 9" +.LASF60: + .string "__INT_FAST64_TYPE__ long long int" +.LASF25: + .string "__BIGGEST_ALIGNMENT__ 16" +.LASF16: + .string "__SIZEOF_INT__ 4" +.LASF116: + .string "__UINT_LEAST8_MAX__ 0xff" +.LASF256: + .string "__FLT32X_MAX_10_EXP__ 308" +.LASF304: + .string "__riscv_compressed 1" +.LASF97: + .string "__INT16_MAX__ 0x7fff" +.LASF286: + .string "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1" +.LASF201: + .string "__FLT16_EPSILON__ 9.76562500000000000000000000000000000e-4F16" +.LASF240: + .string "__FLT128_MAX_EXP__ 16384" +.LASF323: + .string "HAVE_CCONFIG_H 1" +.LASF273: + .string "__FLT64X_MAX__ 1.18973149535723176508575932662800702e+4932F64x" +.LASF81: + .string "__INT_WIDTH__ 32" +.LASF197: + .string "__FLT16_DECIMAL_DIG__ 5" +.LASF145: + .string "__FLT_MANT_DIG__ 24" +.LASF92: + .string "__INTMAX_WIDTH__ 64" +.LASF285: + .string "__CHAR_UNSIGNED__ 1" +.LASF57: + .string "__INT_FAST8_TYPE__ int" +.LASF211: + .string "__FLT32_MAX_10_EXP__ 38" +.LASF292: + .string "__GCC_ATOMIC_SHORT_LOCK_FREE 1" +.LASF102: + .string "__UINT32_MAX__ 0xffffffffUL" +.LASF130: + .string "__INT_FAST64_MAX__ 0x7fffffffffffffffLL" +.LASF251: + .string "__FLT32X_MANT_DIG__ 53" +.LASF106: + .string "__INT_LEAST8_WIDTH__ 8" +.LASF54: + .string "__UINT_LEAST16_TYPE__ short unsigned int" +.LASF164: + .string "__DBL_MAX_EXP__ 1024" +.LASF138: + .string "__UINTPTR_MAX__ 0xffffffffU" +.LASF191: + .string "__FLT16_MANT_DIG__ 11" +.LASF140: + .string "__GCC_IEC_559_COMPLEX 0" +.LASF258: + .string "__FLT32X_MAX__ 1.79769313486231570814527423731704357e+308F32x" +.LASF11: + .string "__ATOMIC_ACQUIRE 2" +.LASF212: + .string "__FLT32_DECIMAL_DIG__ 9" +.LASF320: + .string "USE_PLIC 1" +.LASF90: + .string "__UINTMAX_MAX__ 0xffffffffffffffffULL" +.LASF293: + .string "__GCC_ATOMIC_INT_LOCK_FREE 2" +.LASF152: + .string "__FLT_MAX__ 3.40282346638528859811704183484516925e+38F" +.LASF300: + .string "__SIZEOF_WCHAR_T__ 4" +.LASF257: + .string "__FLT32X_DECIMAL_DIG__ 17" +.LASF288: + .string "__GCC_ATOMIC_CHAR_LOCK_FREE 1" +.LASF63: + .string "__UINT_FAST32_TYPE__ unsigned int" +.LASF307: + .string "__riscv_div 1" +.LASF224: + .string "__FLT64_MIN_10_EXP__ (-307)" +.LASF324: + .string "GD32VF103V_EVAL 1" +.LASF144: + .string "__FLT_RADIX__ 2" +.LASF47: + .string "__UINT32_TYPE__ long unsigned int" +.LASF121: + .string "__UINT32_C(c) c ## UL" +.LASF203: + .string "__FLT16_HAS_DENORM__ 1" +.LASF120: + .string "__UINT_LEAST32_MAX__ 0xffffffffUL" +.LASF107: + .string "__INT_LEAST16_MAX__ 0x7fff" +.LASF250: + .string "__FLT128_HAS_QUIET_NAN__ 1" +.LASF85: + .string "__WINT_WIDTH__ 32" +.LASF242: + .string "__FLT128_DECIMAL_DIG__ 36" +.LASF74: + .string "__WCHAR_MIN__ (-__WCHAR_MAX__ - 1)" +.LASF289: + .string "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 1" +.LASF311: + .string "__riscv_cmodel_medany 1" +.LASF179: + .string "__LDBL_MAX_EXP__ 16384" +.LASF252: + .string "__FLT32X_DIG__ 15" +.LASF263: + .string "__FLT32X_HAS_DENORM__ 1" +.LASF89: + .string "__INTMAX_C(c) c ## LL" +.LASF153: + .string "__FLT_NORM_MAX__ 3.40282346638528859811704183484516925e+38F" +.LASF77: + .string "__PTRDIFF_MAX__ 0x7fffffff" +.LASF317: + .string "__riscv_zicsr 2000000" +.LASF141: + .string "__FLT_EVAL_METHOD__ 0" +.LASF49: + .string "__INT_LEAST8_TYPE__ signed char" +.LASF119: + .string "__UINT16_C(c) c" +.LASF69: + .string "__SHRT_MAX__ 0x7fff" +.LASF20: + .string "__SIZEOF_FLOAT__ 4" +.LASF165: + .string "__DBL_MAX_10_EXP__ 308" +.LASF247: + .string "__FLT128_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F128" +.LASF0: + .string "__STDC__ 1" +.LASF28: + .string "__ORDER_PDP_ENDIAN__ 3412" +.LASF229: + .string "__FLT64_NORM_MAX__ 1.79769313486231570814527423731704357e+308F64" +.LASF26: + .string "__ORDER_LITTLE_ENDIAN__ 1234" +.LASF35: + .string "__WINT_TYPE__ unsigned int" +.LASF333: + .string "__wrap_printf" +.LASF52: + .string "__INT_LEAST64_TYPE__ long long int" +.LASF9: + .string "__ATOMIC_RELAXED 0" +.LASF328: + .string "_POSIX_C_SOURCE 1" +.LASF196: + .string "__FLT16_MAX_10_EXP__ 4" +.LASF193: + .string "__FLT16_MIN_EXP__ (-13)" +.LASF110: + .string "__INT_LEAST32_MAX__ 0x7fffffffL" +.LASF139: + .string "__GCC_IEC_559 0" +.LASF51: + .string "__INT_LEAST32_TYPE__ long int" +.LASF262: + .string "__FLT32X_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F32x" +.LASF266: + .string "__FLT64X_MANT_DIG__ 113" +.LASF306: + .string "__riscv_mul 1" +.LASF200: + .string "__FLT16_MIN__ 6.10351562500000000000000000000000000e-5F16" +.LASF321: + .string "USE_M_TIME 1" +.LASF280: + .string "__FLT64X_HAS_QUIET_NAN__ 1" +.LASF190: + .string "__LDBL_HAS_QUIET_NAN__ 1" +.LASF93: + .string "__SIG_ATOMIC_MAX__ 0x7fffffff" +.LASF199: + .string "__FLT16_NORM_MAX__ 6.55040000000000000000000000000000000e+4F16" +.LASF329: + .string "char" +.LASF264: + .string "__FLT32X_HAS_INFINITY__ 1" +.LASF236: + .string "__FLT128_MANT_DIG__ 113" +.LASF66: + .string "__UINTPTR_TYPE__ unsigned int" +.LASF184: + .string "__LDBL_NORM_MAX__ 1.18973149535723176508575932662800702e+4932L" +.LASF123: + .string "__UINT64_C(c) c ## ULL" +.LASF221: + .string "__FLT64_MANT_DIG__ 53" +.LASF158: + .string "__FLT_HAS_INFINITY__ 1" +.LASF325: + .string "__RTTHREAD__ 1" +.LASF227: + .string "__FLT64_DECIMAL_DIG__ 17" +.LASF327: + .string "RT_USING_LIBC 1" +.LASF83: + .string "__LONG_LONG_WIDTH__ 64" +.LASF232: + .string "__FLT64_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F64" +.LASF42: + .string "__INT16_TYPE__ short int" +.LASF17: + .string "__SIZEOF_LONG__ 4" +.LASF134: + .string "__UINT_FAST32_MAX__ 0xffffffffU" +.LASF2: + .string "__STDC_UTF_16__ 1" +.LASF186: + .string "__LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L" +.LASF61: + .string "__UINT_FAST8_TYPE__ unsigned int" +.LASF33: + .string "__PTRDIFF_TYPE__ int" +.LASF188: + .string "__LDBL_HAS_DENORM__ 1" +.LASF265: + .string "__FLT32X_HAS_QUIET_NAN__ 1" +.LASF276: + .string "__FLT64X_EPSILON__ 1.92592994438723585305597794258492732e-34F64x" +.LASF128: + .string "__INT_FAST32_MAX__ 0x7fffffff" +.LASF281: + .string "__REGISTER_PREFIX__ " +.LASF14: + .string "__ATOMIC_CONSUME 1" +.LASF182: + .string "__LDBL_DECIMAL_DIG__ 36" +.LASF3: + .string "__STDC_UTF_32__ 1" +.LASF46: + .string "__UINT16_TYPE__ short unsigned int" +.LASF271: + .string "__FLT64X_MAX_10_EXP__ 4932" +.LASF176: + .string "__LDBL_DIG__ 33" +.LASF268: + .string "__FLT64X_MIN_EXP__ (-16381)" +.LASF220: + .string "__FLT32_HAS_QUIET_NAN__ 1" +.LASF195: + .string "__FLT16_MAX_EXP__ 16" +.LASF302: + .string "__SIZEOF_PTRDIFF_T__ 4" +.LASF243: + .string "__FLT128_MAX__ 1.18973149535723176508575932662800702e+4932F128" +.LASF67: + .string "__GXX_ABI_VERSION 1014" +.LASF126: + .string "__INT_FAST16_MAX__ 0x7fffffff" +.LASF94: + .string "__SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)" +.LASF131: + .string "__INT_FAST64_WIDTH__ 64" +.LASF245: + .string "__FLT128_MIN__ 3.36210314311209350626267781732175260e-4932F128" +.LASF59: + .string "__INT_FAST32_TYPE__ int" +.LASF217: + .string "__FLT32_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F32" +.LASF62: + .string "__UINT_FAST16_TYPE__ unsigned int" +.LASF222: + .string "__FLT64_DIG__ 15" +.LASF303: + .string "__riscv 1" +.LASF241: + .string "__FLT128_MAX_10_EXP__ 4932" +.LASF294: + .string "__GCC_ATOMIC_LONG_LOCK_FREE 2" +.LASF167: + .string "__DBL_MAX__ ((double)1.79769313486231570814527423731704357e+308L)" +.LASF267: + .string "__FLT64X_DIG__ 33" +.LASF96: + .string "__INT8_MAX__ 0x7f" +.LASF174: + .string "__DBL_HAS_QUIET_NAN__ 1" +.LASF148: + .string "__FLT_MIN_10_EXP__ (-37)" +.LASF296: + .string "__GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1" +.LASF198: + .string "__FLT16_MAX__ 6.55040000000000000000000000000000000e+4F16" +.LASF13: + .string "__ATOMIC_ACQ_REL 4" +.LASF34: + .string "__WCHAR_TYPE__ int" +.LASF244: + .string "__FLT128_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F128" +.LASF309: + .string "__riscv_xlen 32" +.LASF15: + .string "__FINITE_MATH_ONLY__ 0" +.LASF71: + .string "__LONG_MAX__ 0x7fffffffL" +.LASF103: + .string "__UINT64_MAX__ 0xffffffffffffffffULL" +.LASF86: + .string "__PTRDIFF_WIDTH__ 32" +.LASF282: + .string "__USER_LABEL_PREFIX__ " +.LASF270: + .string "__FLT64X_MAX_EXP__ 16384" +.LASF208: + .string "__FLT32_MIN_EXP__ (-125)" +.LASF213: + .string "__FLT32_MAX__ 3.40282346638528859811704183484516925e+38F32" +.LASF64: + .string "__UINT_FAST64_TYPE__ long long unsigned int" +.LASF117: + .string "__UINT8_C(c) c" +.LASF237: + .string "__FLT128_DIG__ 33" +.LASF53: + .string "__UINT_LEAST8_TYPE__ unsigned char" +.LASF115: + .string "__INT_LEAST64_WIDTH__ 64" +.LASF98: + .string "__INT32_MAX__ 0x7fffffffL" +.LASF253: + .string "__FLT32X_MIN_EXP__ (-1021)" +.LASF104: + .string "__INT_LEAST8_MAX__ 0x7f" +.LASF287: + .string "__GCC_ATOMIC_BOOL_LOCK_FREE 1" +.LASF122: + .string "__UINT_LEAST64_MAX__ 0xffffffffffffffffULL" +.LASF163: + .string "__DBL_MIN_10_EXP__ (-307)" +.LASF8: + .string "__VERSION__ \"10.2.0\"" +.LASF283: + .string "__GNUC_STDC_INLINE__ 1" +.LASF330: + .string "GNU C17 10.2.0 -march=rv32imac -mabi=ilp32 -mcmodel=medany -msmall-data-limit= 8 -march=rv32imac -g3 -O0" +.LASF223: + .string "__FLT64_MIN_EXP__ (-1021)" + .ident "GCC: (xPack GNU RISC-V Embedded GCC x86_64) 10.2.0" diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_IAR/compiler.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_IAR/compiler.h new file mode 100644 index 0000000000..d476bd391b --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_IAR/compiler.h @@ -0,0 +1,20 @@ +#ifndef __COMPILER_H__ +#define __COMPILER_H__ + +#ifdef __ICCRISCV__ +#include + +#define read_csr __read_csr +#define set_csr __write_csr +#define write_csr __write_csr +#define clear_csr __clear_bits_csr + +#define mstatus _CSR_MSTATUS +#define mcycle _CSR_MCYCLE +#define mcycleh _CSR_MCYCLEH +#define mtvec _CSR_MTVEC +#define minstret _CSR_MINSTRET +#define minstreth _CSR_MINSTRETH +#endif + +#endif diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_IAR/low_level_init.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_IAR/low_level_init.c new file mode 100644 index 0000000000..dfab980436 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/env_IAR/low_level_init.c @@ -0,0 +1,238 @@ +#include "GigaDevice/ioGD32VF103.h" +#include "intrinsics.h" +#include "csr.h" +#include "stdlib.h" +#include "stdint.h" + +#pragma language=extended + + +extern __weak void eclic_msip_handler(void); +extern __weak void eclic_mtip_handler(void); +extern __weak void eclic_bwei_handler(void); +extern __weak void eclic_pmovi_handler(void); +extern __weak void WWDGT_IRQHandler(void); +extern __weak void LVD_IRQHandler(void); +extern __weak void TAMPER_IRQHandler(void); +extern __weak void RTC_IRQHandler(void); +extern __weak void FMC_IRQHandler(void); +extern __weak void RCU_IRQHandler(void); +extern __weak void EXTI0_IRQHandler(void); +extern __weak void EXTI1_IRQHandler(void); +extern __weak void EXTI2_IRQHandler(void); +extern __weak void EXTI3_IRQHandler(void); +extern __weak void EXTI4_IRQHandler(void); +extern __weak void DMA0_Channel0_IRQHandler(void); +extern __weak void DMA0_Channel1_IRQHandler(void); +extern __weak void DMA0_Channel2_IRQHandler(void); +extern __weak void DMA0_Channel3_IRQHandler(void); +extern __weak void DMA0_Channel4_IRQHandler(void); +extern __weak void DMA0_Channel5_IRQHandler(void); +extern __weak void DMA0_Channel6_IRQHandler(void); +extern __weak void ADC0_1_IRQHandler(void); +extern __weak void CAN0_TX_IRQHandler(void); +extern __weak void CAN0_RX0_IRQHandler(void); +extern __weak void CAN0_RX1_IRQHandler(void); +extern __weak void CAN0_EWMC_IRQHandler(void); +extern __weak void EXTI5_9_IRQHandler(void); +extern __weak void TIMER0_BRK_IRQHandler(void); +extern __weak void TIMER0_UP_IRQHandler(void); +extern __weak void TIMER0_TRG_CMT_IRQHandler(void); +extern __weak void TIMER0_Channel_IRQHandler(void); +extern __weak void TIMER1_IRQHandler(void); +extern __weak void TIMER2_IRQHandler(void); +extern __weak void TIMER3_IRQHandler(void); +extern __weak void I2C0_EV_IRQHandler(void); +extern __weak void I2C0_ER_IRQHandler(void); +extern __weak void I2C1_EV_IRQHandler(void); +extern __weak void I2C1_ER_IRQHandler(void); +extern __weak void SPI0_IRQHandler(void); +extern __weak void SPI1_IRQHandler(void); +extern __weak void USART0_IRQHandler(void); +extern __weak void USART1_IRQHandler(void); +extern __weak void USART2_IRQHandler(void); +extern __weak void EXTI10_15_IRQHandler(void); +extern __weak void RTC_Alarm_IRQHandler(void); +extern __weak void USBFS_WKUP_IRQHandler(void); +extern __weak void EXMC_IRQHandler(void); +extern __weak void TIMER4_IRQHandler(void); +extern __weak void SPI2_IRQHandler(void); +extern __weak void UART3_IRQHandler(void); +extern __weak void UART4_IRQHandler(void); +extern __weak void TIMER5_IRQHandler(void); +extern __weak void TIMER6_IRQHandler(void); +extern __weak void DMA1_Channel0_IRQHandler(void); +extern __weak void DMA1_Channel1_IRQHandler(void); +extern __weak void DMA1_Channel2_IRQHandler(void); +extern __weak void DMA1_Channel3_IRQHandler(void); +extern __weak void DMA1_Channel4_IRQHandler(void); +extern __weak void CAN1_TX_IRQHandler(void); +extern __weak void CAN1_RX0_IRQHandler(void); +extern __weak void CAN1_RX1_IRQHandler(void); +extern __weak void CAN1_EWMC_IRQHandler(void); +extern __weak void USBFS_IRQHandler(void); + +typedef void(*__fp)(void); +const __fp gd_vector_base[96] = +{ + 0, + 0, + 0, + eclic_msip_handler, + 0, + 0, + 0, + eclic_mtip_handler, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + eclic_bwei_handler, + eclic_pmovi_handler, + WWDGT_IRQHandler, + LVD_IRQHandler, + TAMPER_IRQHandler, + RTC_IRQHandler, + FMC_IRQHandler, + RCU_IRQHandler, + EXTI0_IRQHandler, + EXTI1_IRQHandler, + EXTI2_IRQHandler, + EXTI3_IRQHandler, + EXTI4_IRQHandler, + DMA0_Channel0_IRQHandler, + DMA0_Channel1_IRQHandler, + DMA0_Channel2_IRQHandler, + DMA0_Channel3_IRQHandler, + DMA0_Channel4_IRQHandler, + DMA0_Channel5_IRQHandler, + DMA0_Channel6_IRQHandler, + ADC0_1_IRQHandler, + CAN0_TX_IRQHandler, + CAN0_RX0_IRQHandler, + CAN0_RX1_IRQHandler, + CAN0_EWMC_IRQHandler, + EXTI5_9_IRQHandler, + TIMER0_BRK_IRQHandler, + TIMER0_UP_IRQHandler, + TIMER0_TRG_CMT_IRQHandler, + TIMER0_Channel_IRQHandler, + TIMER1_IRQHandler, + TIMER2_IRQHandler, + TIMER3_IRQHandler, + I2C0_EV_IRQHandler, + I2C0_ER_IRQHandler, + I2C1_EV_IRQHandler, + I2C1_ER_IRQHandler, + SPI0_IRQHandler, + SPI1_IRQHandler, + USART0_IRQHandler, + USART1_IRQHandler, + USART2_IRQHandler, + EXTI10_15_IRQHandler, + RTC_Alarm_IRQHandler, + USBFS_WKUP_IRQHandler, + 0, + 0, + 0, + 0, + 0, + EXMC_IRQHandler, + 0, + TIMER4_IRQHandler, + SPI2_IRQHandler, + UART3_IRQHandler, + UART4_IRQHandler, + TIMER5_IRQHandler, + TIMER6_IRQHandler, + DMA1_Channel0_IRQHandler, + DMA1_Channel1_IRQHandler, + DMA1_Channel2_IRQHandler, + DMA1_Channel3_IRQHandler, + DMA1_Channel4_IRQHandler, + 0, + 0, + CAN1_TX_IRQHandler, + CAN1_RX0_IRQHandler, + CAN1_RX1_IRQHandler, + CAN1_EWMC_IRQHandler, + USBFS_IRQHandler + +}; + +extern unsigned int __minterrupt_clic_base; +extern __interrupt __machine void __minterrupt_single(void); + +__interrupt __machine void __default_minterrupt_handler(void); + +__interrupt __machine void __default_minterrupt_handler(void) +{ + abort(); +} + +extern uintptr_t handle_trap(uintptr_t mcause, uintptr_t sp); + +uintptr_t handle_trap(uintptr_t mcause, uintptr_t sp) +{ + __fp fp; + mcause &= 0xFFF; + fp = gd_vector_base[mcause]; + if (fp) + fp(); + return 0; +} + +__interrupt void trap_entry() +{ + uintptr_t mcause = __read_csr(_CSR_MCAUSE); + handle_trap(mcause, 0); +} + +__interrupt void irq_entry() +{ + uintptr_t mcause = __read_csr(_CSR_MCAUSE); + uintptr_t mepc = __read_csr(_CSR_MEPC); + uintptr_t msubm = __read_csr(0x7C4); + __enable_interrupt(); + handle_trap(mcause, 0); + //asm("csrrw ra,0x7ED, ra"); + __disable_interrupt(); + __write_csr(_CSR_MCAUSE, mcause); + __write_csr(_CSR_MEPC, mepc); + __write_csr(0x7C4, msubm); +} + +int __low_level_init() +{ + __disable_interrupt(); + /* Set the the NMI base to share with mtvec by setting CSR_MMISC_CTL */ + /* li t0, 0x200 */ + /* csrs CSR_MMISC_CTL, t0 */ + __set_bits_csr(/*CSR_MMISC_CTL*/ 0x7D0, 0x200); + + /* Initialize the mtvt */ + /* la t0, vector_base */ + /* csrw CSR_MTVT, t0 */ + __write_csr(_CSR_MTVT, ((unsigned int)&gd_vector_base)); + /* Initialize the mtvt2 and enable it */ + /* la t0, irq_entry + csrw CSR_MTVT2, t0 + csrs CSR_MTVT2, 0x1 + */ + __write_csr(/*_CSR_MTVT2*/ 0x7EC, 0x1 | ((unsigned int)&irq_entry)); + + /* Initialize the CSR MTVEC for the Trap ane NMI base addr*/ + /* la t0, trap_entry + csrw CSR_MTVEC, t0 + */ + __write_csr(_CSR_MTVEC, 0x03 | ((unsigned int)&trap_entry)); + + /* Enable mycycle_minstret */ + __clear_bits_csr(/*CSR_MCOUNTINHIBIT*/ 0x320, 0x5); + return 1; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/_exit.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/_exit.c new file mode 100644 index 0000000000..33467d08bd --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/_exit.c @@ -0,0 +1,17 @@ +/* See LICENSE of license details. */ + +#include + +#include "stub.h" + + +void _exit(int code) +{ + const char message[] = "\nProgram has exited with code:"; + + write(STDERR_FILENO, message, sizeof(message) - 1); + write_hex(STDERR_FILENO, code); + write(STDERR_FILENO, "\n", 1); + + for (;;); +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/close.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/close.c new file mode 100644 index 0000000000..e50362e77b --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/close.c @@ -0,0 +1,9 @@ +/* See LICENSE of license details. */ + +#include +#include "stub.h" + +int _close(int fd) +{ + return _stub(EBADF); +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/fstat.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/fstat.c new file mode 100644 index 0000000000..c30d27cba6 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/fstat.c @@ -0,0 +1,16 @@ +/* See LICENSE of license details. */ + +#include +#include +#include +#include "stub.h" + +int _fstat(int fd, struct stat* st) +{ + if (isatty(fd)) { + st->st_mode = S_IFCHR; + return 0; + } + + return _stub(EBADF); +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/isatty.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/isatty.c new file mode 100644 index 0000000000..a590ebae51 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/isatty.c @@ -0,0 +1,11 @@ +/* See LICENSE of license details. */ + +#include + +int _isatty(int fd) +{ + if (fd == STDOUT_FILENO || fd == STDERR_FILENO) + return 1; + + return 0; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/lseek.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/lseek.c new file mode 100644 index 0000000000..f519b51816 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/lseek.c @@ -0,0 +1,14 @@ +/* See LICENSE of license details. */ + +#include +#include +#include +#include "stub.h" + +off_t _lseek(int fd, off_t ptr, int dir) +{ + if (isatty(fd)) + return 0; + + return _stub(EBADF); +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/read.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/read.c new file mode 100644 index 0000000000..c874f678dc --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/read.c @@ -0,0 +1,13 @@ +/* See LICENSE of license details. */ + +#include +#include +#include +#include + +#include "stub.h" + +ssize_t _read(int fd, void* ptr, size_t len) +{ + return _stub(EBADF); +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/sbrk.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/sbrk.c new file mode 100644 index 0000000000..f04511920f --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/sbrk.c @@ -0,0 +1,16 @@ +/* See LICENSE of license details. */ + +#include + +void *_sbrk(ptrdiff_t incr) +{ + extern char _end[]; + extern char _heap_end[]; + static char *curbrk = _end; + + if ((curbrk + incr < _end) || (curbrk + incr > _heap_end)) + return NULL - 1; + + curbrk += incr; + return curbrk - incr; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/stub.h b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/stub.h new file mode 100644 index 0000000000..4381156846 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/stub.h @@ -0,0 +1,18 @@ +/* See LICENSE of license details. */ +#ifndef _NUCLEI_SYS_STUB_H +#define _NUCLEI_SYS_STUB_H + +#include +#if defined (__GNUC__) +#include +#endif + +void write_hex(int fd, unsigned long int hex); + +static inline int _stub(int err) +{ + return -1; +} + + +#endif /* _NUCLEI_SYS_STUB_H */ diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/write.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/write.c new file mode 100644 index 0000000000..d1916f0427 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/write.c @@ -0,0 +1,72 @@ +/* See LICENSE of license details. */ + +#include +#include +#include +#include + +#if defined (__GNUC__) +#include +#include +#endif + +#include "stub.h" +#include "gd32vf103.h" + +//typedef unsigned int size_t; +extern int _put_char(int ch) __attribute__((weak)); + +#if defined (__ICCRISCV__) +size_t __write(int handle, const unsigned char *buf, size_t bufSize) +{ + size_t nChars = 0; + + if (handle == -1) + { + return 0; + } + + for (; bufSize > 0; --bufSize) + { + _put_char((uint8_t) *buf); + ++buf; + ++nChars; + } + + return nChars; + } + +int puts(const char* string) { + return __write(0, (const void *) string, strlen(string)); +} + +#elif defined ( __GNUC__ ) +ssize_t _write(int fd, const void* ptr, size_t len) { + const uint8_t * current = (const uint8_t *) ptr; + { + for (size_t jj = 0; jj < len; jj++) { + _put_char(current[jj]); + + if (current[jj] == '\n') { + _put_char('\r'); + } + } + return len; + } + + return _stub(EBADF); +} + +int puts(const char* string) { + return _write(0, (const void *) string, strlen(string)); +} +#endif + +int _put_char(int ch) +{ + usart_data_transmit(USART0, (uint8_t) ch ); + while (usart_flag_get(USART0, USART_FLAG_TBE)== RESET){ + } + + return ch; +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/write_hex.c b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/write_hex.c new file mode 100644 index 0000000000..f7aa9a4b2d --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/stubs/write_hex.c @@ -0,0 +1,18 @@ +/* See LICENSE of license details. */ + +#include +#include + +void write_hex(int fd, unsigned long int hex) +{ + uint8_t ii; + uint8_t jj; + char towrite; + write(fd , "0x", 2); + for (ii = sizeof(unsigned long int) * 2 ; ii > 0; ii--) { + jj = ii - 1; + uint8_t digit = ((hex & (0xF << (jj*4))) >> (jj*4)); + towrite = digit < 0xA ? ('0' + digit) : ('A' + (digit - 0xA)); + write(fd, &towrite, 1); + } +} diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/tools/openocd_upload.sh b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/tools/openocd_upload.sh new file mode 100644 index 0000000000..3e987a7bf9 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/RISCV/tools/openocd_upload.sh @@ -0,0 +1,5 @@ +#! /bin/bash -x + +work/build/openocd/prefix/bin/openocd -f ${2} \ + -c "flash protect 0 0 last off; program ${1} verify; resume 0x20000000; exit" \ + 2>&1 | tee openocd_upload.log diff --git a/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/SConscript b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/SConscript new file mode 100644 index 0000000000..3739964aba --- /dev/null +++ b/bsp/gd32/risc-v/libraries/GD32VF103_Firmware_Library/SConscript @@ -0,0 +1,61 @@ +import rtconfig +from building import * + +# get current directory +cwd = GetCurrentDir() + +# The set of source files associated with this SConscript file. +cwd = GetCurrentDir() + +src = Split(''' +RISCV/env_Eclipse/handlers.c +RISCV/env_Eclipse/init.c +RISCV/env_Eclipse/your_printf.c +RISCV/drivers/n200_func.c +GD32VF103_standard_peripheral/system_gd32vf103.c +GD32VF103_standard_peripheral/Source/gd32vf103_gpio.c +GD32VF103_standard_peripheral/Source/gd32vf103_rcu.c +GD32VF103_standard_peripheral/Source/gd32vf103_exti.c +GD32VF103_standard_peripheral/Source/gd32vf103_eclic.c +''') + +if GetDepend(['RT_USING_SERIAL']): + src += ['GD32VF103_standard_peripheral/Source/gd32vf103_usart.c'] + +if GetDepend(['RT_USING_I2C']): + src += ['GD32VF103_standard_peripheral/Source/gd32vf103_i2c.c'] + +if GetDepend(['RT_USING_SPI']): + src += ['GD32VF103_standard_peripheral/Source/gd32vf103_spi.c'] + +if GetDepend(['RT_USING_CAN']): + src += ['GD32VF103_standard_peripheral/Source/gd32vf103_can.c'] + +if GetDepend(['BSP_USING_ETH']): + src += ['GD32VF103_standard_peripheral/Source/gd32vf103_enet.c'] + +if GetDepend(['RT_USING_ADC']): + src += ['GD32VF103_standard_peripheral/Source/gd32vf103_adc.c'] + +if GetDepend(['RT_USING_DAC']): + src += ['GD32VF103_standard_peripheral/Source/gd32vf103_dac.c'] + +if GetDepend(['RT_USING_HWTIMER']): + src += ['GD32VF103_standard_peripheral/Source/gd32vf103_timer.c'] + +if GetDepend(['RT_USING_RTC']): + src += ['GD32VF103_standard_peripheral/Source/gd32vf103_rtc.c'] + src += ['GD32VF103_standard_peripheral/Source/gd32vf103_pmu.c'] + +if GetDepend(['RT_USING_WDT']): + src += ['GD32VF103_standard_peripheral/Source/gd32vf103_wwdgt.c'] + src += ['GD32VF103_standard_peripheral/Source/gd32vf103fwdgt.c'] + +path = [ + cwd + '/RISCV/drivers', + cwd + '/GD32VF103_standard_peripheral', + cwd + '/GD32VF103_standard_peripheral/Include',] + +group = DefineGroup('Libraries', src, depend = [''], CPPPATH = path) + +Return('group') diff --git a/bsp/gd32/risc-v/libraries/Kconfig b/bsp/gd32/risc-v/libraries/Kconfig new file mode 100644 index 0000000000..5145a8f332 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/Kconfig @@ -0,0 +1,8 @@ +config SOC_FAMILY_GD32 + bool + +config SOC_GD32VF103V + bool + select SOC_SERIES_GD32VF103V + select SOC_FAMILY_GD32 + diff --git a/bsp/gd32/risc-v/libraries/gd32_drivers/Kconfig b/bsp/gd32/risc-v/libraries/gd32_drivers/Kconfig new file mode 100644 index 0000000000..705f7be4b5 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/gd32_drivers/Kconfig @@ -0,0 +1,6 @@ +if BSP_USING_USBD + config BSP_USBD_TYPE_FS + bool + # "USB Full Speed (FS) Core" +endif + diff --git a/bsp/gd32/risc-v/libraries/gd32_drivers/SConscript b/bsp/gd32/risc-v/libraries/gd32_drivers/SConscript new file mode 100644 index 0000000000..df963f3b78 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/gd32_drivers/SConscript @@ -0,0 +1,52 @@ +Import('RTT_ROOT') +Import('rtconfig') +from building import * + +cwd = GetCurrentDir() + +# add the general drivers. +src = Split(""" +""") + +# add pin drivers. +if GetDepend('RT_USING_PIN'): + src += ['drv_gpio.c'] + +# add usart drivers. +if GetDepend(['RT_USING_SERIAL']): + src += ['drv_usart.c'] + +# add i2c drivers. +if GetDepend(['RT_USING_I2C', 'RT_USING_I2C_BITOPS']): + if GetDepend('BSP_USING_I2C0') or GetDepend('BSP_USING_I2C1') or GetDepend('BSP_USING_I2C2') or GetDepend('BSP_USING_I2C3'): + src += ['drv_soft_i2c.c'] + +# add spi drivers. +if GetDepend('RT_USING_SPI'): + src += ['drv_spi.c'] + +# add spi flash drivers. +if GetDepend('RT_USING_SFUD'): + src += ['drv_spi_flash.c', 'drv_spi.c'] + +# add wdt drivers. +if GetDepend('RT_USING_WDT'): + src += ['drv_wdt.c'] + +# add rtc drivers. +if GetDepend('RT_USING_RTC'): + src += ['drv_rtc.c'] + +# add timer drivers. +if GetDepend('RT_USING_HWTIMER'): + src += ['drv_hwtimer.c'] + +# add adc drivers. +if GetDepend('RT_USING_ADC'): + src += ['drv_adc.c'] + +path = [cwd] + +group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path) + +Return('group') diff --git a/bsp/gd32/risc-v/libraries/gd32_drivers/drv_adc.c b/bsp/gd32/risc-v/libraries/gd32_drivers/drv_adc.c new file mode 100644 index 0000000000..070dc5f14f --- /dev/null +++ b/bsp/gd32/risc-v/libraries/gd32_drivers/drv_adc.c @@ -0,0 +1,192 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-05-03 BruceOu optimization adc + */ + +#include "drv_adc.h" + +#define DBG_TAG "drv.adc" +#define DBG_LVL DBG_INFO + +#include + +#ifdef RT_USING_ADC + +#if defined(BSP_USING_ADC0) +struct rt_adc_device adc0; +#endif + +#if defined(BSP_USING_ADC1) +struct rt_adc_device adc1; +#endif + +#if defined(BSP_USING_ADC2) +struct rt_adc_device adc2; +#endif + +#define MAX_EXTERN_ADC_CHANNEL 16 + +static const struct gd32_adc adc_obj[] = { +#ifdef BSP_USING_ADC0 + { + ADC0, + RCU_ADC0, + { + GET_PIN(A, 0), GET_PIN(A, 1), GET_PIN(A, 2), GET_PIN(A, 3), + GET_PIN(A, 4), GET_PIN(A, 5), GET_PIN(A, 6), GET_PIN(A, 7), + GET_PIN(B, 0), GET_PIN(B, 1), GET_PIN(C, 0), GET_PIN(C, 1), + GET_PIN(C, 2), GET_PIN(C, 3), GET_PIN(C, 4), GET_PIN(C, 5), + }, + &adc0, + "adc0", + }, +#endif + +#ifdef BSP_USING_ADC1 + { + ADC1, + RCU_ADC1, + { + GET_PIN(A, 0), GET_PIN(A, 1), GET_PIN(A, 2), GET_PIN(A, 3), + GET_PIN(A, 4), GET_PIN(A, 5), GET_PIN(A, 6), GET_PIN(A, 7), + GET_PIN(B, 0), GET_PIN(B, 1), GET_PIN(C, 0), GET_PIN(C, 1), + GET_PIN(C, 2), GET_PIN(C, 3), GET_PIN(C, 4), GET_PIN(C, 5), + }, + &adc1, + "adc1", + }, +#endif +#ifdef BSP_USING_ADC2 + { + ADC2, + RCU_ADC2, + { + GET_PIN(A, 0), GET_PIN(A, 1), GET_PIN(A, 2), GET_PIN(A, 3), + GET_PIN(A, 4), GET_PIN(A, 5), GET_PIN(A, 6), GET_PIN(A, 7), + GET_PIN(B, 0), GET_PIN(B, 1), GET_PIN(C, 0), GET_PIN(C, 1), + GET_PIN(C, 2), GET_PIN(C, 3), GET_PIN(C, 4), GET_PIN(C, 5), + }, + &adc2, + "adc2", + }, +#endif +}; + +/** +* @brief ADC MSP Initialization +* This function configures the hardware resources. +* @param adc_clk, pin +* @retval None +*/ +static void gd32_adc_gpio_init(rcu_periph_enum adc_clk, rt_base_t pin) +{ + /* enable ADC clock */ + rcu_periph_clock_enable(adc_clk); + + /* configure adc pin */ + gpio_init(PIN_GDPORT(pin), GPIO_MODE_AIN, GPIO_OSPEED_50MHZ, PIN_GDPIN(pin)); + +} + +/** +* @brief ADC enable +* This function enable adc. +* @param device, channel, enabled +* @retval None +*/ +static rt_err_t gd32_adc_enabled(struct rt_adc_device *device, rt_uint32_t channel, rt_bool_t enabled) +{ + uint32_t adc_periph; + struct gd32_adc * adc = (struct gd32_adc *)device->parent.user_data; + + if (channel >= MAX_EXTERN_ADC_CHANNEL) + { + LOG_E("invalid channel"); + return -RT_EINVAL; + } + + adc_periph = (uint32_t )(adc->adc_periph); + + if (enabled == ENABLE) + { + gd32_adc_gpio_init(adc->adc_clk, adc->adc_pins[channel]); + + adc_channel_length_config(adc_periph, ADC_REGULAR_CHANNEL, 1); + adc_data_alignment_config(adc_periph, ADC_DATAALIGN_RIGHT); + + adc_external_trigger_source_config(adc_periph, ADC_REGULAR_CHANNEL, ADC0_1_2_EXTTRIG_REGULAR_NONE); + adc_external_trigger_config(adc_periph, ADC_REGULAR_CHANNEL, ENABLE); + + adc_regular_channel_config(adc_periph, 0, channel, ADC_SAMPLETIME_13POINT5); + + adc_enable(adc_periph); + + /* ADC calibration and reset calibration */ + adc_calibration_enable(adc_periph); + } + else + { + adc_disable(adc_periph); + } + return 0; +} + +/** +* @brief convert adc. +* This function get adc value. +* @param device, channel, value +* @retval None +*/ +static rt_err_t gd32_adc_convert(struct rt_adc_device *device, rt_uint32_t channel, rt_uint32_t *value) +{ + uint32_t adc_periph; + struct gd32_adc * adc = (struct gd32_adc *)(device->parent.user_data); + + if (!value) + { + LOG_E("invalid param"); + return -RT_EINVAL; + } + + adc_periph = (uint32_t )(adc->adc_periph); + adc_software_trigger_enable(adc_periph, ADC_REGULAR_CHANNEL); + + while(!adc_flag_get(adc_periph, ADC_FLAG_EOC)){}; + // clear flag + adc_flag_clear(adc_periph, ADC_FLAG_EOC); + + *value = adc_regular_data_read(adc_periph); + + return 0; +} + +static struct rt_adc_ops gd32_adc_ops = { + .enabled = gd32_adc_enabled, + .convert = gd32_adc_convert, +}; + +static int rt_hw_adc_init(void) +{ + int ret, i = 0; + + for (; i < sizeof(adc_obj) / sizeof(adc_obj[0]); i++) + { + ret = rt_hw_adc_register(adc_obj[i].adc, \ + (const char *)adc_obj[i].device_name, \ + &gd32_adc_ops, &adc_obj[i]); + if (ret != RT_EOK) + { + /* TODO err handler */ + LOG_E("failed register %s, err=%d", adc_obj[i].device_name, ret); + } + } + + return ret; +} +INIT_BOARD_EXPORT(rt_hw_adc_init); +#endif diff --git a/bsp/gd32/risc-v/libraries/gd32_drivers/drv_adc.h b/bsp/gd32/risc-v/libraries/gd32_drivers/drv_adc.h new file mode 100644 index 0000000000..05d0724da6 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/gd32_drivers/drv_adc.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-06-03 BruceOu first implementation + */ + +#ifndef __DRV_ADC_H__ +#define __DRV_ADC_H__ + +#include +#include +#include +#include "drv_gpio.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* gd32 adc dirver class */ +struct gd32_adc +{ + uint32_t adc_periph; + rcu_periph_enum adc_clk; + rt_base_t adc_pins[16]; + struct rt_adc_device *adc; + char *device_name; +}; + +#ifdef __cplusplus +} +#endif + +#endif /* __DRV_ADC_H__ */ diff --git a/bsp/gd32/risc-v/libraries/gd32_drivers/drv_gpio.c b/bsp/gd32/risc-v/libraries/gd32_drivers/drv_gpio.c new file mode 100644 index 0000000000..586509be65 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/gd32_drivers/drv_gpio.c @@ -0,0 +1,574 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-08-20 BruceOu the first version + */ + +#include +#include +#include + +#ifdef RT_USING_PIN + +#include "drv_gpio.h" + +static const struct pin_index pins[] = +{ +#ifdef GPIOA + GD32_PIN(0, A, 0), + GD32_PIN(1, A, 1), + GD32_PIN(2, A, 2), + GD32_PIN(3, A, 3), + GD32_PIN(4, A, 4), + GD32_PIN(5, A, 5), + GD32_PIN(6, A, 6), + GD32_PIN(7, A, 7), + GD32_PIN(8, A, 8), + GD32_PIN(9, A, 9), + GD32_PIN(10, A, 10), + GD32_PIN(11, A, 11), + GD32_PIN(12, A, 12), + GD32_PIN(13, A, 13), + GD32_PIN(14, A, 14), + GD32_PIN(15, A, 15), +#endif +#ifdef GPIOB + GD32_PIN(16, B, 0), + GD32_PIN(17, B, 1), + GD32_PIN(18, B, 2), + GD32_PIN(19, B, 3), + GD32_PIN(20, B, 4), + GD32_PIN(21, B, 5), + GD32_PIN(22, B, 6), + GD32_PIN(23, B, 7), + GD32_PIN(24, B, 8), + GD32_PIN(25, B, 9), + GD32_PIN(26, B, 10), + GD32_PIN(27, B, 11), + GD32_PIN(28, B, 12), + GD32_PIN(39, B, 13), + GD32_PIN(30, B, 14), + GD32_PIN(31, B, 15), +#endif +#ifdef GPIOC + GD32_PIN(32, C, 0), + GD32_PIN(33, C, 1), + GD32_PIN(34, C, 2), + GD32_PIN(35, C, 3), + GD32_PIN(36, C, 4), + GD32_PIN(37, C, 5), + GD32_PIN(38, C, 6), + GD32_PIN(39, C, 7), + GD32_PIN(40, C, 8), + GD32_PIN(41, C, 9), + GD32_PIN(42, C, 10), + GD32_PIN(43, C, 11), + GD32_PIN(44, C, 12), + GD32_PIN(45, C, 13), + GD32_PIN(46, C, 14), + GD32_PIN(47, C, 15), +#endif +#ifdef GPIOD + GD32_PIN(48, D, 0), + GD32_PIN(49, D, 1), + GD32_PIN(50, D, 2), + GD32_PIN(51, D, 3), + GD32_PIN(52, D, 4), + GD32_PIN(53, D, 5), + GD32_PIN(54, D, 6), + GD32_PIN(55, D, 7), + GD32_PIN(56, D, 8), + GD32_PIN(57, D, 9), + GD32_PIN(58, D, 10), + GD32_PIN(59, D, 11), + GD32_PIN(60, D, 12), + GD32_PIN(61, D, 13), + GD32_PIN(62, D, 14), + GD32_PIN(63, D, 15), +#endif +#ifdef GPIOE + GD32_PIN(64, E, 0), + GD32_PIN(65, E, 1), + GD32_PIN(66, E, 2), + GD32_PIN(67, E, 3), + GD32_PIN(68, E, 4), + GD32_PIN(69, E, 5), + GD32_PIN(70, E, 6), + GD32_PIN(71, E, 7), + GD32_PIN(72, E, 8), + GD32_PIN(73, E, 9), + GD32_PIN(74, E, 10), + GD32_PIN(75, E, 11), + GD32_PIN(76, E, 12), + GD32_PIN(77, E, 13), + GD32_PIN(78, E, 14), + GD32_PIN(79, E, 15), +#endif +}; + +static const struct pin_irq_map pin_irq_map[] = +{ + {GPIO_PIN_0, EXTI0_IRQn}, + {GPIO_PIN_1, EXTI1_IRQn}, + {GPIO_PIN_2, EXTI2_IRQn}, + {GPIO_PIN_3, EXTI3_IRQn}, + {GPIO_PIN_4, EXTI4_IRQn}, + {GPIO_PIN_5, EXTI5_9_IRQn}, + {GPIO_PIN_6, EXTI5_9_IRQn}, + {GPIO_PIN_7, EXTI5_9_IRQn}, + {GPIO_PIN_8, EXTI5_9_IRQn}, + {GPIO_PIN_9, EXTI5_9_IRQn}, + {GPIO_PIN_10, EXTI10_15_IRQn}, + {GPIO_PIN_11, EXTI10_15_IRQn}, + {GPIO_PIN_12, EXTI10_15_IRQn}, + {GPIO_PIN_13, EXTI10_15_IRQn}, + {GPIO_PIN_14, EXTI10_15_IRQn}, + {GPIO_PIN_15, EXTI10_15_IRQn}, +}; + +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}, +}; + +#define ITEM_NUM(items) sizeof(items) / sizeof(items[0]) + +/** + * @brief get pin + * @param pin + * @retval None + */ +const struct pin_index *get_pin(rt_uint8_t pin) +{ + const struct pin_index *index; + + if (pin < ITEM_NUM(pins)) + { + index = &pins[pin]; + if (index->index == -1) + index = RT_NULL; + } + else + { + index = RT_NULL; + } + + return index; +} + +/** + * @brief set pin mode + * @param dev, pin, mode + * @retval None + */ +static void gd32_pin_mode(rt_device_t dev, rt_base_t pin, rt_base_t mode) +{ + const struct pin_index *index = RT_NULL; + rt_uint32_t pin_mode = 0; + + index = get_pin(pin); + if (index == RT_NULL) + { + return; + } + + /* GPIO Periph clock enable */ + rcu_periph_clock_enable(index->clk); + + pin_mode = GPIO_MODE_OUT_PP; + + switch(mode) + { + case PIN_MODE_OUTPUT: + /* output setting */ + pin_mode = GPIO_MODE_OUT_PP; + break; + case PIN_MODE_OUTPUT_OD: + /* output setting: od. */ + pin_mode = GPIO_MODE_OUT_OD; + break; + case PIN_MODE_INPUT: + /* input setting: not pull. */ + pin_mode = GPIO_MODE_IN_FLOATING; + break; + case PIN_MODE_INPUT_PULLUP: + /* input setting: pull up. */ + pin_mode = GPIO_MODE_IPU; + break; + case PIN_MODE_INPUT_PULLDOWN: + /* input setting: pull down. */ + pin_mode = GPIO_MODE_IPD; + break; + default: + break; + } + + gpio_init(index->gpio_periph, pin_mode, GPIO_OSPEED_50MHZ, index->pin); +} + +/** + * @brief pin write + * @param dev, pin, valuie + * @retval None + */ +static void gd32_pin_write(rt_device_t dev, rt_base_t pin, rt_base_t value) +{ + const struct pin_index *index = RT_NULL; + + index = get_pin(pin); + if (index == RT_NULL) + { + return; + } + + gpio_bit_write(index->gpio_periph, index->pin, (bit_status)value); +} + +/** + * @brief pin read + * @param dev, pin + * @retval None + */ +static int gd32_pin_read(rt_device_t dev, rt_base_t pin) +{ + int value = PIN_LOW; + const struct pin_index *index = RT_NULL; + + index = get_pin(pin); + if (index == RT_NULL) + { + return value; + } + + value = gpio_input_bit_get(index->gpio_periph, index->pin); + return value; +} + +/** + * @brief bit2bitno + * @param bit + * @retval None + */ +rt_inline rt_int32_t bit2bitno(rt_uint32_t bit) +{ + rt_uint8_t i; + for (i = 0; i < 32; i++) + { + if ((0x01 << i) == bit) + { + return i; + } + } + return -1; +} + +/** + * @brief pin write + * @param pinbit + * @retval None + */ +rt_inline const struct pin_irq_map *get_pin_irq_map(rt_uint32_t pinbit) +{ + rt_int32_t map_index = bit2bitno(pinbit); + if (map_index < 0 || map_index >= ITEM_NUM(pin_irq_map)) + { + return RT_NULL; + } + return &pin_irq_map[map_index]; +} + +/** + * @brief pin irq attach + * @param device, pin, mode + * @retval None + */ +static rt_err_t gd32_pin_attach_irq(struct rt_device *device, rt_int32_t pin, + rt_uint32_t mode, void (*hdr)(void *args), void *args) +{ + const struct pin_index *index = RT_NULL; + rt_base_t level; + rt_int32_t hdr_index = -1; + + index = get_pin(pin); + if (index == RT_NULL) + { + return -RT_EINVAL; + } + + hdr_index = bit2bitno(index->pin); + if (hdr_index < 0 || hdr_index >= ITEM_NUM(pin_irq_map)) + { + return -RT_EINVAL; + } + + level = rt_hw_interrupt_disable(); + if (pin_irq_hdr_tab[hdr_index].pin == pin && + pin_irq_hdr_tab[hdr_index].hdr == hdr && + pin_irq_hdr_tab[hdr_index].mode == mode && + pin_irq_hdr_tab[hdr_index].args == args) + { + rt_hw_interrupt_enable(level); + return RT_EOK; + } + if (pin_irq_hdr_tab[hdr_index].pin != -1) + { + rt_hw_interrupt_enable(level); + return -RT_EFULL; + } + pin_irq_hdr_tab[hdr_index].pin = pin; + pin_irq_hdr_tab[hdr_index].hdr = hdr; + pin_irq_hdr_tab[hdr_index].mode = mode; + pin_irq_hdr_tab[hdr_index].args = args; + rt_hw_interrupt_enable(level); + + return RT_EOK; +} + +/** + * @brief pin irq detach + * @param device, pin + * @retval None + */ +static rt_err_t gd32_pin_detach_irq(struct rt_device *device, rt_int32_t pin) +{ + const struct pin_index *index = RT_NULL; + rt_base_t level; + rt_int32_t hdr_index = -1; + + index = get_pin(pin); + if (index == RT_NULL) + { + return -RT_EINVAL; + } + + hdr_index = bit2bitno(index->pin); + if (hdr_index < 0 || hdr_index >= ITEM_NUM(pin_irq_map)) + { + return -RT_EINVAL; + } + + level = rt_hw_interrupt_disable(); + if (pin_irq_hdr_tab[hdr_index].pin == -1) + { + rt_hw_interrupt_enable(level); + return RT_EOK; + } + pin_irq_hdr_tab[hdr_index].pin = -1; + pin_irq_hdr_tab[hdr_index].hdr = RT_NULL; + pin_irq_hdr_tab[hdr_index].mode = 0; + pin_irq_hdr_tab[hdr_index].args = RT_NULL; + rt_hw_interrupt_enable(level); + + return RT_EOK; +} + +/** + * @brief pin irq enable + * @param device, pin, enabled + * @retval None + */ +static rt_err_t gd32_pin_irq_enable(struct rt_device *device, rt_base_t pin, rt_uint32_t enabled) +{ + const struct pin_index *index; + const struct pin_irq_map *irqmap; + rt_base_t level; + rt_int32_t hdr_index = -1; + exti_trig_type_enum trigger_mode; + + index = get_pin(pin); + if (index == RT_NULL) + { + return -RT_EINVAL; + } + + if (enabled == PIN_IRQ_ENABLE) + { + hdr_index = bit2bitno(index->pin); + if (hdr_index < 0 || hdr_index >= ITEM_NUM(pin_irq_map)) + { + return -RT_EINVAL; + } + + level = rt_hw_interrupt_disable(); + if (pin_irq_hdr_tab[hdr_index].pin == -1) + { + rt_hw_interrupt_enable(level); + return -RT_EINVAL; + } + + irqmap = &pin_irq_map[hdr_index]; + + switch (pin_irq_hdr_tab[hdr_index].mode) + { + case PIN_IRQ_MODE_RISING: + trigger_mode = EXTI_TRIG_RISING; + break; + case PIN_IRQ_MODE_FALLING: + trigger_mode = EXTI_TRIG_FALLING; + break; + case PIN_IRQ_MODE_RISING_FALLING: + trigger_mode = EXTI_TRIG_BOTH; + break; + default: + rt_hw_interrupt_enable(level); + return -RT_EINVAL; + } + + rcu_periph_clock_enable(RCU_AF); + + /* enable and set interrupt priority */ + eclic_irq_enable(irqmap->irqno, 5U, 0U); + + /* connect EXTI line to GPIO pin */ + gpio_exti_source_select(index->port_src, index->pin_src); + + /* configure EXTI line */ + exti_init((exti_line_enum)(index->pin), EXTI_INTERRUPT, trigger_mode); + exti_interrupt_flag_clear((exti_line_enum)(index->pin)); + + rt_hw_interrupt_enable(level); + } + else if (enabled == PIN_IRQ_DISABLE) + { + irqmap = get_pin_irq_map(index->pin); + if (irqmap == RT_NULL) + { + return -RT_EINVAL; + } + eclic_irq_disable(irqmap->irqno); + } + else + { + return -RT_EINVAL; + } + + return RT_EOK; +} + +const static struct rt_pin_ops gd32_pin_ops = +{ + .pin_mode = gd32_pin_mode, + .pin_write = gd32_pin_write, + .pin_read = gd32_pin_read, + .pin_attach_irq = gd32_pin_attach_irq, + .pin_detach_irq= gd32_pin_detach_irq, + .pin_irq_enable = gd32_pin_irq_enable, + RT_NULL, +}; + +/** + * @brief pin write + * @param irqno + * @retval None + */ +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); + } +} + +/** + * @brief gd32 exit interrupt + * @param exti_line + * @retval None + */ +void GD32_GPIO_EXTI_IRQHandler(rt_int8_t exti_line) +{ + if(RESET != exti_interrupt_flag_get((exti_line_enum)(1 << exti_line))) + { + pin_irq_hdr(exti_line); + exti_interrupt_flag_clear((exti_line_enum)(1 << exti_line)); + } +} + +void EXTI0_IRQHandler(void) +{ + rt_interrupt_enter(); + GD32_GPIO_EXTI_IRQHandler(0); + rt_interrupt_leave(); +} + +void EXTI1_IRQHandler(void) +{ + rt_interrupt_enter(); + GD32_GPIO_EXTI_IRQHandler(1); + rt_interrupt_leave(); +} + +void EXTI2_IRQHandler(void) +{ + rt_interrupt_enter(); + GD32_GPIO_EXTI_IRQHandler(2); + rt_interrupt_leave(); +} + +void EXTI3_IRQHandler(void) +{ + rt_interrupt_enter(); + GD32_GPIO_EXTI_IRQHandler(3); + rt_interrupt_leave(); +} + +void EXTI4_IRQHandler(void) +{ + rt_interrupt_enter(); + GD32_GPIO_EXTI_IRQHandler(4); + rt_interrupt_leave(); +} + +void EXTI5_9_IRQHandler(void) +{ + rt_interrupt_enter(); + GD32_GPIO_EXTI_IRQHandler(5); + GD32_GPIO_EXTI_IRQHandler(6); + GD32_GPIO_EXTI_IRQHandler(7); + GD32_GPIO_EXTI_IRQHandler(8); + GD32_GPIO_EXTI_IRQHandler(9); + rt_interrupt_leave(); +} + +void EXTI10_15_IRQHandler(void) +{ + rt_interrupt_enter(); + GD32_GPIO_EXTI_IRQHandler(10); + GD32_GPIO_EXTI_IRQHandler(11); + GD32_GPIO_EXTI_IRQHandler(12); + GD32_GPIO_EXTI_IRQHandler(13); + GD32_GPIO_EXTI_IRQHandler(14); + GD32_GPIO_EXTI_IRQHandler(15); + rt_interrupt_leave(); +} + +int rt_hw_pin_init(void) +{ + int result; + + result = rt_device_pin_register("pin", &gd32_pin_ops, RT_NULL); + + return result; +} + +INIT_BOARD_EXPORT(rt_hw_pin_init); + +#endif diff --git a/bsp/gd32/risc-v/libraries/gd32_drivers/drv_gpio.h b/bsp/gd32/risc-v/libraries/gd32_drivers/drv_gpio.h new file mode 100644 index 0000000000..3bfc37b363 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/gd32_drivers/drv_gpio.h @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-08-20 BruceOu the first version + */ + +#ifndef __DRV_GPIO_H__ +#define __DRV_GPIO_H__ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined SOC_SERIES_GD32VF103V +#include "gd32vf103_gpio.h" +#endif + +#define __GD32_PORT(port) GPIO##port + + +#define GD32_PIN(index, port, pin) {index, RCU_GPIO##port, \ + GPIO##port, GPIO_PIN_##pin, \ + GPIO_PORT_SOURCE_GPIO##port, \ + GPIO_PIN_SOURCE_##pin} + +#define GD32_PIN_DEFAULT {-1, (rcu_periph_enum)0, 0, 0, 0, 0} + +#define GET_PIN(PORTx,PIN) (rt_base_t)((16 * ( ((rt_base_t)__GD32_PORT(PORTx) - (rt_base_t)GPIO_BASE)/(0x0400UL) )) + PIN) + +#define PIN_PORT(pin) ((uint8_t)(((pin) >> 4) & 0xFu)) +#define PIN_NO(pin) ((uint8_t)((pin) & 0xFu)) + +#define PIN_GDPORT(pin) (GPIO_BASE + (0x400u * PIN_PORT(pin))) +#define PIN_GDPIN(pin) ((uint16_t)(1u << PIN_NO(pin))) + +struct pin_index +{ + rt_int16_t index; + rcu_periph_enum clk; + rt_uint32_t gpio_periph; + rt_uint32_t pin; + rt_uint8_t port_src; + rt_uint8_t pin_src; +}; + +struct pin_irq_map +{ + rt_uint16_t pinbit; + IRQn_Type irqno; +}; + +#ifdef __cplusplus +} +#endif + +#endif /* __DRV_GPIO_H__ */ + diff --git a/bsp/gd32/risc-v/libraries/gd32_drivers/drv_soft_i2c.c b/bsp/gd32/risc-v/libraries/gd32_drivers/drv_soft_i2c.c new file mode 100644 index 0000000000..a8282e16ff --- /dev/null +++ b/bsp/gd32/risc-v/libraries/gd32_drivers/drv_soft_i2c.c @@ -0,0 +1,201 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-06-04 BruceOu the first version + */ +#include "drv_soft_i2c.h" + +#ifdef RT_USING_I2C + +#define LOG_TAG "drv.i2c" +#include + +#if !defined(BSP_USING_I2C0) && !defined(BSP_USING_I2C1) && !defined(BSP_USING_I2C2) && !defined(BSP_USING_I2C3) +#error "Please define at least one BSP_USING_I2Cx" +/* this driver can be disabled at menuconfig → RT-Thread Components → Device Drivers */ +#endif + +static const struct gd32_soft_i2c_config soft_i2c_config[] = +{ +#ifdef BSP_USING_I2C0 + I2C0_BUS_CONFIG, +#endif +#ifdef BSP_USING_I2C1 + I2C1_BUS_CONFIG, +#endif +#ifdef BSP_USING_I2C2 + I2C2_BUS_CONFIG, +#endif +#ifdef BSP_USING_I2C3 + I2C3_BUS_CONFIG, +#endif +}; + +static struct gd32_i2c i2c_obj[sizeof(soft_i2c_config) / sizeof(soft_i2c_config[0])]; + +/** + * @brief This function initializes the i2c pin. + * @param i2c + * @retval None + */ +static void gd32_i2c_gpio_init(struct gd32_i2c *i2c) +{ + struct gd32_soft_i2c_config* cfg = (struct gd32_soft_i2c_config*)i2c->ops.data; + + rt_pin_mode(cfg->scl, PIN_MODE_OUTPUT_OD); + rt_pin_mode(cfg->sda, PIN_MODE_OUTPUT_OD); + + rt_pin_write(cfg->scl, PIN_HIGH); + rt_pin_write(cfg->sda, PIN_HIGH); +} + +/** + * @brief This function sets the sda pin. + * @param data, state + * @retval None + */ +static void gd32_set_sda(void *data, rt_int32_t state) +{ + struct gd32_soft_i2c_config* cfg = (struct gd32_soft_i2c_config*)data; + if (state) + { + rt_pin_write(cfg->sda, PIN_HIGH); + } + else + { + rt_pin_write(cfg->sda, PIN_LOW); + } +} + +/** + * @brief This function sets the scl pin. + * @param data, state + * @retval None + */ +static void gd32_set_scl(void *data, rt_int32_t state) +{ + struct gd32_soft_i2c_config* cfg = (struct gd32_soft_i2c_config*)data; + if (state) + { + rt_pin_write(cfg->scl, PIN_HIGH); + } + else + { + rt_pin_write(cfg->scl, PIN_LOW); + } +} + +/** + * @brief This function gets the sda pin state. + * @param data + * @retval None + */ +static rt_int32_t gd32_get_sda(void *data) +{ + struct gd32_soft_i2c_config* cfg = (struct gd32_soft_i2c_config*)data; + return rt_pin_read(cfg->sda); +} + + +/** + * @brief This function gets the scl pin state. + * @param data + * @retval None + */ +static rt_int32_t gd32_get_scl(void *data) +{ + struct gd32_soft_i2c_config* cfg = (struct gd32_soft_i2c_config*)data; + return rt_pin_read(cfg->scl); +} + +/** + * @brief The time delay function. + * @param us + * @retval None + */ +static void gd32_udelay(rt_uint32_t us) +{ + int i = ( rcu_clock_freq_get(CK_SYS) / 4000000 * us); + while(i) + { + i--; + } +} + +static const struct rt_i2c_bit_ops gd32_bit_ops_default = +{ + .data = RT_NULL, + .set_sda = gd32_set_sda, + .set_scl = gd32_set_scl, + .get_sda = gd32_get_sda, + .get_scl = gd32_get_scl, + .udelay = gd32_udelay, + .delay_us = 1, + .timeout = 100 +}; + +/** + * @brief if i2c is locked, this function will unlock it + * @param cfg + * @retval RT_EOK indicates successful unlock. + */ +static rt_err_t gd32_i2c_bus_unlock(const struct gd32_soft_i2c_config *cfg) +{ + rt_int32_t i = 0; + + if (PIN_LOW == rt_pin_read(cfg->sda)) + { + while (i++ < 9) + { + rt_pin_write(cfg->scl, PIN_HIGH); + gd32_udelay(100); + rt_pin_write(cfg->scl, PIN_LOW); + gd32_udelay(100); + } + } + if (PIN_LOW == rt_pin_read(cfg->sda)) + { + return -RT_ERROR; + } + + return RT_EOK; +} + +/** + * @brief I2C initialization function + * @param None + * @retval RT_EOK indicates successful initialization. + */ +int rt_hw_i2c_init(void) +{ + rt_size_t obj_num = sizeof(i2c_obj) / sizeof(struct gd32_i2c); + rt_err_t result; + + for (int i = 0; i < obj_num; i++) + { + i2c_obj[i].ops = gd32_bit_ops_default; + i2c_obj[i].ops.data = (void*)&soft_i2c_config[i]; + i2c_obj[i].i2c2_bus.priv = &i2c_obj[i].ops; + gd32_i2c_gpio_init(&i2c_obj[i]); + + result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c2_bus, soft_i2c_config[i].bus_name); + + RT_ASSERT(result == RT_EOK); + + gd32_i2c_bus_unlock(&soft_i2c_config[i]); + + LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", + soft_i2c_config[i].bus_name, + soft_i2c_config[i].scl, + soft_i2c_config[i].sda); + } + + return RT_EOK; +} +INIT_BOARD_EXPORT(rt_hw_i2c_init); + +#endif /* RT_USING_I2C */ diff --git a/bsp/gd32/risc-v/libraries/gd32_drivers/drv_soft_i2c.h b/bsp/gd32/risc-v/libraries/gd32_drivers/drv_soft_i2c.h new file mode 100644 index 0000000000..1c8e21dcc0 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/gd32_drivers/drv_soft_i2c.h @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-06-04 BruceOu the first version + */ + +#ifndef __DRV_I2C__ +#define __DRV_I2C__ + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* gd32 config class */ +struct gd32_soft_i2c_config +{ + rt_uint8_t scl; + rt_uint8_t sda; + const char *bus_name; +}; + +/* gd32 i2c dirver class */ +struct gd32_i2c +{ + struct rt_i2c_bit_ops ops; + struct rt_i2c_bus_device i2c2_bus; +}; + +#ifdef BSP_USING_I2C0 +#define I2C4_BUS_CONFIG \ + { \ + .scl = BSP_I2C0_SCL_PIN, \ + .sda = BSP_I2C0_SDA_PIN, \ + .bus_name = "i2c0", \ + } +#endif + +#ifdef BSP_USING_I2C1 +#define I2C1_BUS_CONFIG \ + { \ + .scl = BSP_I2C1_SCL_PIN, \ + .sda = BSP_I2C1_SDA_PIN, \ + .bus_name = "i2c1", \ + } +#endif + +#ifdef BSP_USING_I2C2 +#define I2C2_BUS_CONFIG \ + { \ + .scl = BSP_I2C2_SCL_PIN, \ + .sda = BSP_I2C2_SDA_PIN, \ + .bus_name = "i2c2", \ + } +#endif + +#ifdef BSP_USING_I2C3 +#define I2C3_BUS_CONFIG \ + { \ + .scl = BSP_I2C3_SCL_PIN, \ + .sda = BSP_I2C3_SDA_PIN, \ + .bus_name = "i2c3", \ + } +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __DRV_I2C__ */ diff --git a/bsp/gd32/risc-v/libraries/gd32_drivers/drv_spi.c b/bsp/gd32/risc-v/libraries/gd32_drivers/drv_spi.c new file mode 100644 index 0000000000..cbd0fd4b28 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/gd32_drivers/drv_spi.c @@ -0,0 +1,347 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-06-04 BruceOu first implementation + */ +#include "drv_spi.h" + +#ifdef RT_USING_SPI + +#if defined(BSP_USING_SPI0) || defined(BSP_USING_SPI1) || defined(BSP_USING_SPI2) +#define LOG_TAG "drv.spi" + +#include + +#ifdef BSP_USING_SPI0 +static struct rt_spi_bus spi_bus0; +#endif +#ifdef BSP_USING_SPI1 +static struct rt_spi_bus spi_bus1; +#endif +#ifdef BSP_USING_SPI2 +static struct rt_spi_bus spi_bus2; +#endif + +static const struct gd32_spi spi_bus_obj[] = { + +#ifdef BSP_USING_SPI0 + { + SPI0, + "spi0", + RCU_SPI0, + RCU_GPIOA, + &spi_bus0, + GPIOA, + GPIO_PIN_5, + GPIO_PIN_6, + GPIO_PIN_7, + } +#endif /* BSP_USING_SPI0 */ + +#ifdef BSP_USING_SPI1 + { + SPI1, + "spi1", + RCU_SPI1, + RCU_GPIOB, + &spi_bus1, + GPIOB, + GPIO_PIN_12, + GPIO_PIN_14, + GPIO_PIN_15, + } +#endif /* BSP_USING_SPI1 */ + +#ifdef BSP_USING_SPI2 + { + SPI2, + "spi2", + RCU_SPI2, + RCU_GPIOB, + &spi_bus2, + GPIOB, + GPIO_PIN_3, + GPIO_PIN_4, + GPIO_PIN_5, + } +#endif /* BSP_USING_SPI2 */ +}; + +/* private rt-thread spi ops function */ +static rt_err_t spi_configure(struct rt_spi_device* device, struct rt_spi_configuration* configuration); +static rt_uint32_t spixfer(struct rt_spi_device* device, struct rt_spi_message* message); + +static struct rt_spi_ops gd32_spi_ops = +{ + .configure = spi_configure, + .xfer = spixfer, +}; + +/** +* @brief SPI Initialization +* @param gd32_spi: SPI BUS +* @retval None +*/ +static void gd32_spi_init(struct gd32_spi *gd32_spi) +{ + /* enable SPI clock */ + rcu_periph_clock_enable(gd32_spi->spi_clk); + rcu_periph_clock_enable(gd32_spi->gpio_clk); + + /* Init SPI SCK MOSI */ + gpio_init(gd32_spi->spi_port, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, gd32_spi->sck_pin | gd32_spi->mosi_pin); + + /* Init SPI MISO */ + gpio_init(gd32_spi->spi_port, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, gd32_spi->miso_pin); + +} + +static rt_err_t spi_configure(struct rt_spi_device* device, + struct rt_spi_configuration* configuration) +{ + struct rt_spi_bus * spi_bus = (struct rt_spi_bus *)device->bus; + struct gd32_spi *spi_device = (struct gd32_spi *)spi_bus->parent.user_data; + spi_parameter_struct spi_init_struct; + uint32_t spi_periph = spi_device->spi_periph; + + RT_ASSERT(device != RT_NULL); + RT_ASSERT(configuration != RT_NULL); + + //Init SPI + gd32_spi_init(spi_device); + + /* data_width */ + if(configuration->data_width <= 8) + { + spi_init_struct.frame_size = SPI_FRAMESIZE_8BIT; + } + else if(configuration->data_width <= 16) + { + spi_init_struct.frame_size = SPI_FRAMESIZE_16BIT; + } + else + { + return RT_EIO; + } + + /* baudrate */ + { + rcu_clock_freq_enum spi_src; + uint32_t spi_apb_clock; + uint32_t max_hz; + + max_hz = configuration->max_hz; + + LOG_D("sys freq: %d\n", rcu_clock_freq_get(CK_SYS)); + LOG_D("CK_APB2 freq: %d\n", rcu_clock_freq_get(CK_APB2)); + LOG_D("max freq: %d\n", max_hz); + + if (spi_periph == SPI1 || spi_periph == SPI2) + { + spi_src = CK_APB1; + } + else + { + spi_src = CK_APB2; + } + spi_apb_clock = rcu_clock_freq_get(spi_src); + + if(max_hz >= spi_apb_clock/2) + { + spi_init_struct.prescale = SPI_PSC_2; + } + else if (max_hz >= spi_apb_clock/4) + { + spi_init_struct.prescale = SPI_PSC_4; + } + else if (max_hz >= spi_apb_clock/8) + { + spi_init_struct.prescale = SPI_PSC_8; + } + else if (max_hz >= spi_apb_clock/16) + { + spi_init_struct.prescale = SPI_PSC_16; + } + else if (max_hz >= spi_apb_clock/32) + { + spi_init_struct.prescale = SPI_PSC_32; + } + else if (max_hz >= spi_apb_clock/64) + { + spi_init_struct.prescale = SPI_PSC_64; + } + else if (max_hz >= spi_apb_clock/128) + { + spi_init_struct.prescale = SPI_PSC_128; + } + else + { + /* min prescaler 256 */ + spi_init_struct.prescale = SPI_PSC_256; + } + } /* baudrate */ + + switch(configuration->mode & RT_SPI_MODE_3) + { + case RT_SPI_MODE_0: + spi_init_struct.clock_polarity_phase = SPI_CK_PL_LOW_PH_1EDGE; + break; + case RT_SPI_MODE_1: + spi_init_struct.clock_polarity_phase = SPI_CK_PL_LOW_PH_2EDGE; + break; + case RT_SPI_MODE_2: + spi_init_struct.clock_polarity_phase = SPI_CK_PL_HIGH_PH_1EDGE; + break; + case RT_SPI_MODE_3: + spi_init_struct.clock_polarity_phase = SPI_CK_PL_HIGH_PH_2EDGE; + break; + } + + /* MSB or LSB */ + if(configuration->mode & RT_SPI_MSB) + { + spi_init_struct.endian = SPI_ENDIAN_MSB; + } + else + { + spi_init_struct.endian = SPI_ENDIAN_LSB; + } + + spi_init_struct.trans_mode = SPI_TRANSMODE_FULLDUPLEX; + spi_init_struct.device_mode = SPI_MASTER; + spi_init_struct.nss = SPI_NSS_SOFT; + + spi_crc_off(spi_periph); + + /* init SPI */ + spi_init(spi_periph, &spi_init_struct); + /* Enable SPI_MASTER */ + spi_enable(spi_periph); + + return RT_EOK; +}; + +static rt_uint32_t spixfer(struct rt_spi_device* device, struct rt_spi_message* message) +{ + struct rt_spi_bus * gd32_spi_bus = (struct rt_spi_bus *)device->bus; + struct gd32_spi *spi_device = (struct gd32_spi *)gd32_spi_bus->parent.user_data; + struct rt_spi_configuration * config = &device->config; + struct gd32_spi_cs * gd32_spi_cs = device->parent.user_data; + uint32_t spi_periph = spi_device->spi_periph; + + RT_ASSERT(device != NULL); + RT_ASSERT(message != NULL); + + /* take CS */ + if(message->cs_take) + { + gpio_bit_reset(gd32_spi_cs->GPIOx, gd32_spi_cs->GPIO_Pin); + LOG_D("spi take cs\n"); + } + + { + if(config->data_width <= 8) + { + const rt_uint8_t * send_ptr = message->send_buf; + rt_uint8_t * recv_ptr = message->recv_buf; + rt_uint32_t size = message->length; + + LOG_D("spi poll transfer start: %d\n", size); + + while(size--) + { + rt_uint8_t data = 0xFF; + + if(send_ptr != RT_NULL) + { + data = *send_ptr++; + } + + // Todo: replace register read/write by gd32f4 lib + //Wait until the transmit buffer is empty + while(RESET == spi_i2s_flag_get(spi_periph, SPI_FLAG_TBE)); + // Send the byte + spi_i2s_data_transmit(spi_periph, data); + + //Wait until a data is received + while(RESET == spi_i2s_flag_get(spi_periph, SPI_FLAG_RBNE)); + // Get the received data + data = spi_i2s_data_receive(spi_periph); + + if(recv_ptr != RT_NULL) + { + *recv_ptr++ = data; + } + } + LOG_D("spi poll transfer finsh\n"); + } + else if(config->data_width <= 16) + { + const rt_uint16_t * send_ptr = message->send_buf; + rt_uint16_t * recv_ptr = message->recv_buf; + rt_uint32_t size = message->length; + + while(size--) + { + rt_uint16_t data = 0xFF; + + if(send_ptr != RT_NULL) + { + data = *send_ptr++; + } + + //Wait until the transmit buffer is empty + while(RESET == spi_i2s_flag_get(spi_periph, SPI_FLAG_TBE)); + // Send the byte + spi_i2s_data_transmit(spi_periph, data); + + //Wait until a data is received + while(RESET == spi_i2s_flag_get(spi_periph, SPI_FLAG_RBNE)); + // Get the received data + data = spi_i2s_data_receive(spi_periph); + + if(recv_ptr != RT_NULL) + { + *recv_ptr++ = data; + } + } + } + } + + /* release CS */ + if(message->cs_release) + { + gpio_bit_set(gd32_spi_cs->GPIOx, gd32_spi_cs->GPIO_Pin); + LOG_D("spi release cs\n"); + } + + return message->length; +}; + +int rt_hw_spi_init(void) +{ + int result = 0; + int i; + + for (i = 0; i < sizeof(spi_bus_obj) / sizeof(spi_bus_obj[0]); i++) + { + spi_bus_obj[i].spi_bus->parent.user_data = (void *)&spi_bus_obj[i]; + + result = rt_spi_bus_register(spi_bus_obj[i].spi_bus, spi_bus_obj[i].bus_name, &gd32_spi_ops); + + RT_ASSERT(result == RT_EOK); + + LOG_D("%s bus init done", spi_bus_obj[i].bus_name); + } + + return result; +} + +INIT_BOARD_EXPORT(rt_hw_spi_init); + +#endif /* BSP_USING_SPI0 || BSP_USING_SPI1 || BSP_USING_SPI2 */ +#endif /* RT_USING_SPI */ diff --git a/bsp/gd32/risc-v/libraries/gd32_drivers/drv_spi.h b/bsp/gd32/risc-v/libraries/gd32_drivers/drv_spi.h new file mode 100644 index 0000000000..e39c1830dc --- /dev/null +++ b/bsp/gd32/risc-v/libraries/gd32_drivers/drv_spi.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-06-04 BruceOu first implementation + */ + +#ifndef __DRV_SPI_H__ +#define __DRV_SPI_H__ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct gd32_spi_cs +{ + uint32_t GPIOx; + uint32_t GPIO_Pin; +}; + +/* gd32 spi dirver class */ +struct gd32_spi +{ + uint32_t spi_periph; + char *bus_name; + rcu_periph_enum spi_clk; + rcu_periph_enum gpio_clk; + struct rt_spi_bus *spi_bus; + uint32_t spi_port; + uint16_t sck_pin; + uint16_t miso_pin; + uint16_t mosi_pin; +}; + +#ifdef __cplusplus +} +#endif + +#endif /* __DRV_SPI_H__ */ diff --git a/bsp/gd32/risc-v/libraries/gd32_drivers/drv_usart.c b/bsp/gd32/risc-v/libraries/gd32_drivers/drv_usart.c new file mode 100644 index 0000000000..328770af41 --- /dev/null +++ b/bsp/gd32/risc-v/libraries/gd32_drivers/drv_usart.c @@ -0,0 +1,448 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-08-20 BruceOu first implementation + */ + +#include "drv_usart.h" + +#define RT_USING_SERIAL + +#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) +#error "Please define at least one UARTx" + +#endif + +#include + +static void GD32_UART_IRQHandler(struct rt_serial_device *serial); + +#if defined(BSP_USING_UART0) +struct rt_serial_device serial0; + +void USART0_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + + GD32_UART_IRQHandler(&serial0); + + /* leave interrupt */ + rt_interrupt_leave(); +} + +#endif /* BSP_USING_UART0 */ + +#if defined(BSP_USING_UART1) +struct rt_serial_device serial1; + +void USART1_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + + GD32_UART_IRQHandler(&serial1); + + /* leave interrupt */ + rt_interrupt_leave(); +} + +#endif /* BSP_USING_UART1 */ + +#if defined(BSP_USING_UART2) +struct rt_serial_device serial2; + +void USART2_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + + GD32_UART_IRQHandler(&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(); + + GD32_UART_IRQHandler(&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(); + + GD32_UART_IRQHandler(&serial4); + + /* leave interrupt */ + rt_interrupt_leave(); +} +#endif /* BSP_USING_UART4 */ + +#if defined(BSP_USING_UART5) +struct rt_serial_device serial5; + +void USART5_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + + GD32_UART_IRQHandler(&serial5); + + /* leave interrupt */ + rt_interrupt_leave(); +} + +#endif /* BSP_USING_UART5 */ + +#if defined(BSP_USING_UART6) +struct rt_serial_device serial6; + +void UART6_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + + GD32_UART_IRQHandler(&serial6); + + /* leave interrupt */ + rt_interrupt_leave(); +} + +#endif /* BSP_USING_UART6 */ + +#if defined(BSP_USING_UART7) +struct rt_serial_device serial7; + +void UART7_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + + GD32_UART_IRQHandler(&serial7); + + /* leave interrupt */ + rt_interrupt_leave(); +} + +#endif /* BSP_USING_UART7 */ + +static const struct gd32_uart uart_obj[] = { + #ifdef BSP_USING_UART0 + { + USART0, // uart peripheral index + USART0_IRQn, // uart iqrn + RCU_USART0, RCU_GPIOA, RCU_GPIOA, // periph clock, tx gpio clock, rt gpio clock + GPIOA, GPIO_PIN_9, // tx port, tx pin + GPIOA, GPIO_PIN_10, // rx port, rx pin + &serial0, + "uart0", + }, + #endif + + #ifdef BSP_USING_UART1 + { + USART1, // uart peripheral index + USART1_IRQn, // uart iqrn + RCU_USART1, RCU_GPIOA, RCU_GPIOA, // periph clock, tx gpio clock, rt gpio clock + GPIOA, GPIO_PIN_2, // tx port, tx pin + GPIOA, GPIO_PIN_3, // rx port, rx pin + &serial1, + "uart1", + }, + #endif + + #ifdef BSP_USING_UART2 + { + USART2, // uart peripheral index + USART2_IRQn, // uart iqrn + RCU_USART2, RCU_GPIOB, RCU_GPIOB, // periph clock, tx gpio clock, rt gpio clock + GPIOB, GPIO_PIN_10, // tx port, tx pin + GPIOB, GPIO_PIN_11, // rx port, rx pin + &serial2, + "uart2", + }, + #endif + + #ifdef BSP_USING_UART3 + { + UART3, // uart peripheral index + UART3_IRQn, // uart iqrn + RCU_UART3, RCU_GPIOC, RCU_GPIOC, // periph clock, tx gpio clock, rt gpio clock + GPIOC, GPIO_PIN_10, // tx port, tx pin + GPIOC, GPIO_PIN_11, // rx port, rx pin + &serial3, + "uart3", + }, + #endif + + #ifdef BSP_USING_UART4 + { + UART4, // uart peripheral index + UART4_IRQn, // uart iqrn + RCU_UART4, RCU_GPIOC, RCU_GPIOD, // periph clock, tx gpio clock, rt gpio clock + GPIOC, GPIO_PIN_12, // tx port, tx pin + GPIOD, GPIO_PIN_2, // rx port, rx pin + &serial4, + "uart4", + }, + #endif +}; + + +/** +* @brief UART MSP Initialization +* This function configures the hardware resources used in this example: +* - Peripheral's clock enable +* - Peripheral's GPIO Configuration +* - NVIC configuration for UART interrupt request enable +* @param huart: UART handle pointer +* @retval None +*/ +void gd32_uart_gpio_init(struct gd32_uart *uart) +{ + /* enable USART clock */ + rcu_periph_clock_enable(uart->tx_gpio_clk); + rcu_periph_clock_enable(uart->rx_gpio_clk); + rcu_periph_clock_enable(uart->per_clk); + + /* connect port to USARTx_Tx */ + gpio_init(uart->tx_port, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, uart->tx_pin); + + /* connect port to USARTx_Rx */ + gpio_init(uart->rx_port, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, uart->rx_pin); +} + +/** + * @brief uart configure + * @param serial, cfg + * @retval None + */ +static rt_err_t gd32_uart_configure(struct rt_serial_device *serial, struct serial_configure *cfg) +{ + struct gd32_uart *uart; + + RT_ASSERT(serial != RT_NULL); + RT_ASSERT(cfg != RT_NULL); + + uart = (struct gd32_uart *)serial->parent.user_data; + + gd32_uart_gpio_init(uart); + + usart_baudrate_set(uart->uart_periph, cfg->baud_rate); + + switch (cfg->data_bits) + { + case DATA_BITS_9: + usart_word_length_set(uart->uart_periph, USART_WL_9BIT); + break; + + default: + usart_word_length_set(uart->uart_periph, USART_WL_8BIT); + break; + } + + switch (cfg->stop_bits) + { + case STOP_BITS_2: + usart_stop_bit_set(uart->uart_periph, USART_STB_2BIT); + break; + default: + usart_stop_bit_set(uart->uart_periph, USART_STB_1BIT); + break; + } + + switch (cfg->parity) + { + case PARITY_ODD: + usart_parity_config(uart->uart_periph, USART_PM_ODD); + break; + case PARITY_EVEN: + usart_parity_config(uart->uart_periph, USART_PM_EVEN); + break; + default: + usart_parity_config(uart->uart_periph, USART_PM_NONE); + break; + } + + usart_receive_config(uart->uart_periph, USART_RECEIVE_ENABLE); + usart_transmit_config(uart->uart_periph, USART_TRANSMIT_ENABLE); + usart_enable(uart->uart_periph); + + return RT_EOK; +} + +/** + * @brief uart control + * @param serial, arg + * @retval None + */ +static rt_err_t gd32_uart_control(struct rt_serial_device *serial, int cmd, void *arg) +{ + struct gd32_uart *uart; + + RT_ASSERT(serial != RT_NULL); + uart = (struct gd32_uart *)serial->parent.user_data; + + switch (cmd) + { + case RT_DEVICE_CTRL_CLR_INT: + /* disable rx irq */ + eclic_irq_disable(uart->uart_periph); + /* disable interrupt */ + usart_interrupt_disable(uart->uart_periph, USART_INT_RBNE); + + break; + case RT_DEVICE_CTRL_SET_INT: + eclic_set_nlbits(ECLIC_GROUP_LEVEL3_PRIO1); + /* enable rx irq */ + eclic_irq_enable(uart->irqn, 1, 0); + /* enable interrupt */ + usart_interrupt_enable(uart->uart_periph, USART_INT_RBNE); + break; + } + + return RT_EOK; +} + +/** + * @brief uart put char + * @param serial, ch + * @retval None + */ +static int gd32_uart_putc(struct rt_serial_device *serial, char ch) +{ + struct gd32_uart *uart; + + RT_ASSERT(serial != RT_NULL); + uart = (struct gd32_uart *)serial->parent.user_data; + + usart_data_transmit(uart->uart_periph, ch); + while((usart_flag_get(uart->uart_periph, USART_FLAG_TBE) == RESET)); + + return RT_EOK; +} + +/** + * @brief uart get char + * @param serial + * @retval None + */ +static int gd32_uart_getc(struct rt_serial_device *serial) +{ + int ch; + struct gd32_uart *uart; + + RT_ASSERT(serial != RT_NULL); + uart = (struct gd32_uart *)serial->parent.user_data; + + ch = -1; + if (usart_flag_get(uart->uart_periph, USART_FLAG_RBNE) != RESET) + ch = usart_data_receive(uart->uart_periph); + return ch; +} + +/** + * Uart common interrupt process. This need add to uart ISR. + * + * @param serial serial device + */ +static void GD32_UART_IRQHandler(struct rt_serial_device *serial) +{ + struct gd32_uart *uart = (struct gd32_uart *) serial->parent.user_data; + + RT_ASSERT(uart != RT_NULL); + + /* UART in mode Receiver -------------------------------------------------*/ + if ((usart_interrupt_flag_get(uart->uart_periph, USART_INT_FLAG_RBNE) != RESET) && + (usart_flag_get(uart->uart_periph, USART_FLAG_RBNE) != RESET)) + { + rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_IND); + usart_interrupt_flag_clear(uart->uart_periph, USART_INT_FLAG_RBNE); + /* Clear RXNE interrupt flag */ + usart_flag_clear(uart->uart_periph, USART_FLAG_RBNE); + } + else + { + if (usart_flag_get(uart->uart_periph, USART_FLAG_CTS) != RESET) + { + usart_flag_clear(uart->uart_periph, USART_FLAG_CTS); + } + + if (usart_flag_get(uart->uart_periph, USART_FLAG_LBD) != RESET) + { + usart_flag_clear(uart->uart_periph, USART_FLAG_LBD); + } + + if (usart_flag_get(uart->uart_periph, USART_FLAG_TC) != RESET) + { + usart_flag_clear(uart->uart_periph, USART_FLAG_TC); + } + } +} + +static const struct rt_uart_ops gd32_uart_ops = +{ + .configure = gd32_uart_configure, + .control = gd32_uart_control, + .putc = gd32_uart_putc, + .getc = gd32_uart_getc, + RT_NULL, +}; + +/** + * @brief uart init + * @param None + * @retval None + */ +int rt_hw_usart_init(void) +{ + struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; + int i; + + int result; + + for (i = 0; i < sizeof(uart_obj) / sizeof(uart_obj[0]); i++) + { + uart_obj[i].serial->ops = &gd32_uart_ops; + uart_obj[i].serial->config = config; + + /* register UART1 device */ + result = rt_hw_serial_register(uart_obj[i].serial, + uart_obj[i].device_name, + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, + (void *)&uart_obj[i]); + RT_ASSERT(result == RT_EOK); + } + + return result; +} + +//INIT_BOARD_EXPORT(rt_hw_usart_init); + +#endif diff --git a/bsp/gd32/risc-v/libraries/gd32_drivers/drv_usart.h b/bsp/gd32/risc-v/libraries/gd32_drivers/drv_usart.h new file mode 100644 index 0000000000..5c5c1af2ad --- /dev/null +++ b/bsp/gd32/risc-v/libraries/gd32_drivers/drv_usart.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-06-04 BruceOu first implementation + */ + +#ifndef __DRV_USART_H__ +#define __DRV_USART_H__ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* GD32 uart driver */ +// Todo: compress uart info +struct gd32_uart +{ + uint32_t uart_periph; //Todo: 3bits + IRQn_Type irqn; //Todo: 7bits + rcu_periph_enum per_clk; //Todo: 5bits + rcu_periph_enum tx_gpio_clk; //Todo: 5bits + rcu_periph_enum rx_gpio_clk; //Todo: 5bits + uint32_t tx_port; //Todo: 4bits + uint16_t tx_pin; //Todo: 4bits + uint32_t rx_port; //Todo: 4bits + uint16_t rx_pin; //Todo: 4bits + struct rt_serial_device * serial; + char *device_name; +}; + +int rt_hw_usart_init(void); + +#ifdef __cplusplus +} +#endif + +#endif /* __DRV_USART_H__ */ diff --git a/bsp/gd32/risc-v/tools/interface/openocd_gdlink_riscv.cfg b/bsp/gd32/risc-v/tools/interface/openocd_gdlink_riscv.cfg new file mode 100644 index 0000000000..b02242d6c5 --- /dev/null +++ b/bsp/gd32/risc-v/tools/interface/openocd_gdlink_riscv.cfg @@ -0,0 +1,43 @@ +adapter speed 1000 +reset_config srst_only +adapter srst pulse_width 100 + + + +adapter driver cmsis-dap + +transport select jtag + +set _CHIPNAME riscv +jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x1000563d + +set _TARGETNAME $_CHIPNAME.cpu +target create $_TARGETNAME riscv -chain-position $_TARGETNAME +$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size 20480 -work-area-backup 0 + + +# Work-area is a space in RAM used for flash programming +if { [info exists WORKAREASIZE] } { + set _WORKAREASIZE $WORKAREASIZE +} else { + set _WORKAREASIZE 0x5000 +} + +# Allow overriding the Flash bank size +if { [info exists FLASH_SIZE] } { + set _FLASH_SIZE $FLASH_SIZE +} else { + # autodetect size + set _FLASH_SIZE 0 +} + +# flash size will be probed +set _FLASHNAME $_CHIPNAME.flash + +flash bank $_FLASHNAME gd32vf103 0x08000000 0 0 0 $_TARGETNAME +riscv set_reset_timeout_sec 1 +init + +halt + + diff --git a/bsp/gd32/risc-v/tools/sdk_dist.py b/bsp/gd32/risc-v/tools/sdk_dist.py new file mode 100644 index 0000000000..d6f97a3835 --- /dev/null +++ b/bsp/gd32/risc-v/tools/sdk_dist.py @@ -0,0 +1,37 @@ +import os +import sys +import shutil + +cwd_path = os.getcwd() +sys.path.append(os.path.join(os.path.dirname(cwd_path), 'rt-thread', 'tools')) + +def bsp_update_board_kconfig(dist_dir): + # change board/kconfig path + if not os.path.isfile(os.path.join(dist_dir, 'board/Kconfig')): + return + + with open(os.path.join(dist_dir, 'board/Kconfig'), 'r') as f: + data = f.readlines() + with open(os.path.join(dist_dir, 'board/Kconfig'), 'w') as f: + for line in data: + if line.find('../libraries/gd32_drivers/Kconfig') != -1: + position = line.find('../libraries/gd32_drivers/Kconfig') + line = line[0:position] + 'libraries/gd32_drivers/Kconfig"\n' + f.write(line) + +# BSP dist function +def dist_do_building(BSP_ROOT, dist_dir): + from mkdist import bsp_copy_files + import rtconfig + + print("=> copy gd32 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, 'gd32_drivers'), os.path.join(library_dir, 'gd32_drivers')) + shutil.copyfile(os.path.join(library_path, 'Kconfig'), os.path.join(library_dir, 'Kconfig')) + + bsp_update_board_kconfig(dist_dir)

    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 H*YE!y83z3_ literal 0 HcmV?d00001 diff --git a/bsp/gd32/risc-v/gd32vf103r-start/.config b/bsp/gd32/risc-v/gd32vf103r-start/.config new file mode 100644 index 0000000000..73fe15f934 --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103r-start/.config @@ -0,0 +1,686 @@ +# +# Automatically generated file; DO NOT EDIT. +# RT-Thread Configuration +# + +# +# RT-Thread Kernel +# +CONFIG_RT_NAME_MAX=8 +# CONFIG_RT_USING_ARCH_DATA_TYPE is not set +# CONFIG_RT_USING_SMP is not set +CONFIG_RT_ALIGN_SIZE=4 +# CONFIG_RT_THREAD_PRIORITY_8 is not set +CONFIG_RT_THREAD_PRIORITY_32=y +# CONFIG_RT_THREAD_PRIORITY_256 is not set +CONFIG_RT_THREAD_PRIORITY_MAX=32 +CONFIG_RT_TICK_PER_SECOND=100 +CONFIG_RT_USING_OVERFLOW_CHECK=y +CONFIG_RT_USING_HOOK=y +CONFIG_RT_HOOK_USING_FUNC_PTR=y +CONFIG_RT_USING_IDLE_HOOK=y +CONFIG_RT_IDLE_HOOK_LIST_SIZE=4 +CONFIG_IDLE_THREAD_STACK_SIZE=512 +CONFIG_RT_USING_TIMER_SOFT=y +CONFIG_RT_TIMER_THREAD_PRIO=4 +CONFIG_RT_TIMER_THREAD_STACK_SIZE=512 + +# +# kservice optimization +# +# CONFIG_RT_KSERVICE_USING_STDLIB is not set +# CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set +# CONFIG_RT_USING_TINY_FFS is not set +# CONFIG_RT_KPRINTF_USING_LONGLONG is not set +CONFIG_RT_DEBUG=y +# CONFIG_RT_DEBUG_COLOR is not set +# CONFIG_RT_DEBUG_INIT_CONFIG is not set +# CONFIG_RT_DEBUG_THREAD_CONFIG is not set +# CONFIG_RT_DEBUG_SCHEDULER_CONFIG is not set +# CONFIG_RT_DEBUG_IPC_CONFIG is not set +# CONFIG_RT_DEBUG_TIMER_CONFIG is not set +# CONFIG_RT_DEBUG_IRQ_CONFIG is not set +# CONFIG_RT_DEBUG_MEM_CONFIG is not set +# CONFIG_RT_DEBUG_SLAB_CONFIG is not set +# CONFIG_RT_DEBUG_MEMHEAP_CONFIG is not set +# CONFIG_RT_DEBUG_MODULE_CONFIG is not set + +# +# Inter-Thread communication +# +CONFIG_RT_USING_SEMAPHORE=y +CONFIG_RT_USING_MUTEX=y +CONFIG_RT_USING_EVENT=y +CONFIG_RT_USING_MAILBOX=y +CONFIG_RT_USING_MESSAGEQUEUE=y +# CONFIG_RT_USING_SIGNALS is not set + +# +# Memory Management +# +CONFIG_RT_USING_MEMPOOL=y +CONFIG_RT_USING_SMALL_MEM=y +# CONFIG_RT_USING_SLAB is not set +# CONFIG_RT_USING_MEMHEAP is not set +CONFIG_RT_USING_SMALL_MEM_AS_HEAP=y +# CONFIG_RT_USING_MEMHEAP_AS_HEAP is not set +# CONFIG_RT_USING_SLAB_AS_HEAP is not set +# CONFIG_RT_USING_USERHEAP is not set +# CONFIG_RT_USING_NOHEAP is not set +# CONFIG_RT_USING_MEMTRACE is not set +# CONFIG_RT_USING_HEAP_ISR is not set +CONFIG_RT_USING_HEAP=y + +# +# Kernel Device Object +# +CONFIG_RT_USING_DEVICE=y +# CONFIG_RT_USING_DEVICE_OPS is not set +# CONFIG_RT_USING_INTERRUPT_INFO is not set +CONFIG_RT_USING_CONSOLE=y +CONFIG_RT_CONSOLEBUF_SIZE=128 +CONFIG_RT_CONSOLE_DEVICE_NAME="uart1" +CONFIG_RT_VER_NUM=0x40101 +# CONFIG_RT_USING_CPU_FFS is not set +# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set + +# +# RT-Thread Components +# +CONFIG_RT_USING_COMPONENTS_INIT=y +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 +CONFIG_RT_USING_MSH=y +CONFIG_RT_USING_FINSH=y +CONFIG_FINSH_USING_MSH=y +CONFIG_FINSH_THREAD_NAME="tshell" +CONFIG_FINSH_THREAD_PRIORITY=20 +CONFIG_FINSH_THREAD_STACK_SIZE=4096 +CONFIG_FINSH_USING_HISTORY=y +CONFIG_FINSH_HISTORY_LINES=5 +CONFIG_FINSH_USING_SYMTAB=y +CONFIG_FINSH_CMD_SIZE=80 +CONFIG_MSH_USING_BUILT_IN_COMMANDS=y +CONFIG_FINSH_USING_DESCRIPTION=y +# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set +# CONFIG_FINSH_USING_AUTH is not set +CONFIG_FINSH_ARG_MAX=10 +# CONFIG_RT_USING_DFS is not set +# CONFIG_RT_USING_FAL is not set + +# +# Device Drivers +# +CONFIG_RT_USING_DEVICE_IPC=y +# CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set +CONFIG_RT_USING_SERIAL=y +CONFIG_RT_USING_SERIAL_V1=y +# CONFIG_RT_USING_SERIAL_V2 is not set +# CONFIG_RT_SERIAL_USING_DMA is not set +CONFIG_RT_SERIAL_RB_BUFSZ=64 +# CONFIG_RT_USING_CAN is not set +# CONFIG_RT_USING_HWTIMER is not set +# CONFIG_RT_USING_CPUTIME is not set +# CONFIG_RT_USING_I2C is not set +# CONFIG_RT_USING_PHY is not set +CONFIG_RT_USING_PIN=y +# CONFIG_RT_USING_ADC is not set +# CONFIG_RT_USING_DAC is not set +# CONFIG_RT_USING_PWM is not set +# CONFIG_RT_USING_MTD_NOR is not set +# CONFIG_RT_USING_MTD_NAND is not set +# CONFIG_RT_USING_PM is not set +# CONFIG_RT_USING_RTC is not set +# CONFIG_RT_USING_SDIO is not set +# CONFIG_RT_USING_SPI is not set +# CONFIG_RT_USING_WDT is not set +# CONFIG_RT_USING_AUDIO is not set +# CONFIG_RT_USING_SENSOR is not set +# CONFIG_RT_USING_TOUCH is not set +# CONFIG_RT_USING_HWCRYPTO is not set +# CONFIG_RT_USING_PULSE_ENCODER is not set +# CONFIG_RT_USING_INPUT_CAPTURE is not set +# CONFIG_RT_USING_WIFI is not set + +# +# Using USB +# +# CONFIG_RT_USING_USB is not set +# CONFIG_RT_USING_USB_HOST is not set +# CONFIG_RT_USING_USB_DEVICE is not set + +# +# C/C++ and POSIX layer +# +CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 + +# +# POSIX (Portable Operating System Interface) layer +# +# CONFIG_RT_USING_POSIX_FS is not set +# CONFIG_RT_USING_POSIX_DELAY is not set +# CONFIG_RT_USING_POSIX_CLOCK is not set +# CONFIG_RT_USING_POSIX_TIMER is not set +# CONFIG_RT_USING_PTHREADS is not set +# CONFIG_RT_USING_MODULE is not set + +# +# Interprocess Communication (IPC) +# +# CONFIG_RT_USING_POSIX_PIPE is not set +# CONFIG_RT_USING_POSIX_MESSAGE_QUEUE is not set +# CONFIG_RT_USING_POSIX_MESSAGE_SEMAPHORE is not set + +# +# Socket is in the 'Network' category +# +# CONFIG_RT_USING_CPLUSPLUS is not set + +# +# Network +# +# CONFIG_RT_USING_SAL is not set +# CONFIG_RT_USING_NETDEV is not set +# CONFIG_RT_USING_LWIP is not set +# CONFIG_RT_USING_AT is not set + +# +# Utilities +# +# CONFIG_RT_USING_RYM is not set +# CONFIG_RT_USING_ULOG is not set +# CONFIG_RT_USING_UTEST is not set +# CONFIG_RT_USING_VAR_EXPORT is not set +# CONFIG_RT_USING_RT_LINK is not set +# CONFIG_RT_USING_VBUS is not set + +# +# RT-Thread Utestcases +# +# CONFIG_RT_USING_UTESTCASES is not set + +# +# RT-Thread online packages +# + +# +# 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 +# CONFIG_PKG_USING_WEBCLIENT is not set +# CONFIG_PKG_USING_WEBNET is not set +# CONFIG_PKG_USING_MONGOOSE is not set +# CONFIG_PKG_USING_MYMQTT is not set +# CONFIG_PKG_USING_KAWAII_MQTT is not set +# CONFIG_PKG_USING_BC28_MQTT is not set +# CONFIG_PKG_USING_WEBTERMINAL is not set +# CONFIG_PKG_USING_LIBMODBUS is not set +# CONFIG_PKG_USING_FREEMODBUS is not set +# CONFIG_PKG_USING_NANOPB is not set + +# +# Wi-Fi +# + +# +# Marvell WiFi +# +# CONFIG_PKG_USING_WLANMARVELL is not set + +# +# Wiced WiFi +# +# CONFIG_PKG_USING_WLAN_WICED is not set +# CONFIG_PKG_USING_RW007 is not set +# CONFIG_PKG_USING_COAP is not set +# CONFIG_PKG_USING_NOPOLL is not set +# CONFIG_PKG_USING_NETUTILS is not set +# CONFIG_PKG_USING_CMUX is not set +# CONFIG_PKG_USING_PPP_DEVICE is not set +# CONFIG_PKG_USING_AT_DEVICE is not set +# CONFIG_PKG_USING_ATSRV_SOCKET is not set +# CONFIG_PKG_USING_WIZNET is not set +# CONFIG_PKG_USING_ZB_COORDINATOR is not set + +# +# IoT Cloud +# +# CONFIG_PKG_USING_ONENET is not set +# CONFIG_PKG_USING_GAGENT_CLOUD is not set +# CONFIG_PKG_USING_ALI_IOTKIT is not set +# CONFIG_PKG_USING_AZURE is not set +# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set +# CONFIG_PKG_USING_JIOT-C-SDK is not set +# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set +# CONFIG_PKG_USING_JOYLINK is not set +# CONFIG_PKG_USING_EZ_IOT_OS is not set +# CONFIG_PKG_USING_IOTSHARP_SDK 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 +# CONFIG_PKG_USING_AIRKISS_OPEN is not set +# CONFIG_PKG_USING_LIBRWS is not set +# CONFIG_PKG_USING_TCPSERVER is not set +# CONFIG_PKG_USING_PROTOBUF_C is not set +# CONFIG_PKG_USING_DLT645 is not set +# CONFIG_PKG_USING_QXWZ is not set +# CONFIG_PKG_USING_SMTP_CLIENT is not set +# CONFIG_PKG_USING_ABUP_FOTA is not set +# CONFIG_PKG_USING_LIBCURL2RTT is not set +# CONFIG_PKG_USING_CAPNP is not set +# CONFIG_PKG_USING_AGILE_TELNET is not set +# CONFIG_PKG_USING_NMEALIB is not set +# CONFIG_PKG_USING_PDULIB is not set +# CONFIG_PKG_USING_BTSTACK is not set +# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set +# CONFIG_PKG_USING_WAYZ_IOTKIT is not set +# CONFIG_PKG_USING_MAVLINK is not set +# CONFIG_PKG_USING_BSAL is not set +# CONFIG_PKG_USING_AGILE_MODBUS is not set +# CONFIG_PKG_USING_AGILE_FTP is not set +# CONFIG_PKG_USING_EMBEDDEDPROTO is not set +# CONFIG_PKG_USING_RT_LINK_HW is not set +# CONFIG_PKG_USING_LORA_PKT_FWD is not set +# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set +# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set +# CONFIG_PKG_USING_HM is not set +# CONFIG_PKG_USING_SMALL_MODBUS is not set +# CONFIG_PKG_USING_NET_SERVER is not set +# CONFIG_PKG_USING_ZFTP is not set + +# +# security packages +# +# CONFIG_PKG_USING_MBEDTLS is not set +# CONFIG_PKG_USING_LIBSODIUM is not set +# CONFIG_PKG_USING_LIBHYDROGEN is not set +# CONFIG_PKG_USING_TINYCRYPT is not set +# CONFIG_PKG_USING_TFM is not set +# CONFIG_PKG_USING_YD_CRYPTO is not set + +# +# 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 +# CONFIG_PKG_USING_MICROPYTHON is not set +# CONFIG_PKG_USING_PIKASCRIPT is not set +# CONFIG_PKG_USING_RTT_RUST is not set + +# +# multimedia packages +# + +# +# LVGL: powerful and easy-to-use embedded GUI library +# +# CONFIG_PKG_USING_LVGL is not set +# CONFIG_PKG_USING_LITTLEVGL2RTT is not set +# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set +# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set + +# +# u8g2: a monochrome graphic library +# +# CONFIG_PKG_USING_U8G2_OFFICIAL is not set +# CONFIG_PKG_USING_U8G2 is not set +# CONFIG_PKG_USING_OPENMV is not set +# CONFIG_PKG_USING_MUPDF is not set +# CONFIG_PKG_USING_STEMWIN is not set +# CONFIG_PKG_USING_WAVPLAYER is not set +# CONFIG_PKG_USING_TJPGD is not set +# CONFIG_PKG_USING_PDFGEN is not set +# CONFIG_PKG_USING_HELIX is not set +# CONFIG_PKG_USING_AZUREGUIX is not set +# CONFIG_PKG_USING_TOUCHGFX2RTT is not set +# CONFIG_PKG_USING_NUEMWIN is not set +# CONFIG_PKG_USING_MP3PLAYER is not set +# CONFIG_PKG_USING_TINYJPEG is not set +# CONFIG_PKG_USING_UGUI is not set + +# +# PainterEngine: A cross-platform graphics application framework written in C language +# +# CONFIG_PKG_USING_PAINTERENGINE is not set +# CONFIG_PKG_USING_PAINTERENGINE_AUX is not set +# CONFIG_PKG_USING_MCURSES is not set +# CONFIG_PKG_USING_TERMBOX is not set +# CONFIG_PKG_USING_VT100 is not set +# CONFIG_PKG_USING_QRCODE is not set +# CONFIG_PKG_USING_GUIENGINE is not set + +# +# tools packages +# +# CONFIG_PKG_USING_CMBACKTRACE is not set +# CONFIG_PKG_USING_EASYFLASH is not set +# CONFIG_PKG_USING_EASYLOGGER is not set +# CONFIG_PKG_USING_SYSTEMVIEW is not set +# CONFIG_PKG_USING_SEGGER_RTT is not set +# CONFIG_PKG_USING_RDB 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 +# CONFIG_PKG_USING_ADBD is not set +# CONFIG_PKG_USING_COREMARK is not set +# CONFIG_PKG_USING_DHRYSTONE is not set +# CONFIG_PKG_USING_MEMORYPERF is not set +# CONFIG_PKG_USING_NR_MICRO_SHELL is not set +# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set +# CONFIG_PKG_USING_LUNAR_CALENDAR is not set +# CONFIG_PKG_USING_BS8116A is not set +# CONFIG_PKG_USING_GPS_RMC is not set +# CONFIG_PKG_USING_URLENCODE is not set +# CONFIG_PKG_USING_UMCN is not set +# CONFIG_PKG_USING_LWRB2RTT is not set +# CONFIG_PKG_USING_CPU_USAGE is not set +# CONFIG_PKG_USING_GBK2UTF8 is not set +# CONFIG_PKG_USING_VCONSOLE is not set +# CONFIG_PKG_USING_KDB is not set +# CONFIG_PKG_USING_WAMR is not set +# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set +# CONFIG_PKG_USING_LWLOG is not set +# CONFIG_PKG_USING_ANV_TRACE is not set +# CONFIG_PKG_USING_ANV_MEMLEAK is not set +# CONFIG_PKG_USING_ANV_TESTSUIT is not set +# CONFIG_PKG_USING_ANV_BENCH is not set +# CONFIG_PKG_USING_DEVMEM is not set +# CONFIG_PKG_USING_REGEX is not set +# CONFIG_PKG_USING_MEM_SANDBOX is not set +# CONFIG_PKG_USING_SOLAR_TERMS is not set +# CONFIG_PKG_USING_GAN_ZHI is not set +# CONFIG_PKG_USING_FDT is not set +# CONFIG_PKG_USING_CBOX is not set +# CONFIG_PKG_USING_SNOWFLAKE is not set +# CONFIG_PKG_USING_HASH_MATCH is not set +# CONFIG_PKG_USING_FIRE_PID_CURVE is not set + +# +# system packages +# + +# +# enhanced kernel services +# +# CONFIG_PKG_USING_RT_MEMCPY_CM is not set +# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set +# CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set + +# +# POSIX extension functions +# +# 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_CTYPES is not set + +# +# acceleration: Assembly language or algorithmic acceleration packages +# +# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set +# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set +# CONFIG_PKG_USING_QFPLIB_M3 is not set + +# +# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard +# +# CONFIG_PKG_USING_CMSIS_5 is not set +# CONFIG_PKG_USING_CMSIS_RTOS1 is not set +# CONFIG_PKG_USING_CMSIS_RTOS2 is not set + +# +# Micrium: Micrium software products porting for RT-Thread +# +# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set +# CONFIG_PKG_USING_UCOSII_WRAPPER is not set +# CONFIG_PKG_USING_UC_CRC is not set +# CONFIG_PKG_USING_UC_CLK is not set +# CONFIG_PKG_USING_UC_COMMON is not set +# CONFIG_PKG_USING_UC_MODBUS is not set +# CONFIG_PKG_USING_RTDUINO 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_FLASHDB is not set +# CONFIG_PKG_USING_SQLITE is not set +# CONFIG_PKG_USING_RTI is not set +# CONFIG_PKG_USING_DFS_YAFFS is not set +# CONFIG_PKG_USING_LITTLEFS is not set +# CONFIG_PKG_USING_DFS_JFFS2 is not set +# CONFIG_PKG_USING_DFS_UFFS is not set +# CONFIG_PKG_USING_LWEXT4 is not set +# CONFIG_PKG_USING_THREAD_POOL is not set +# CONFIG_PKG_USING_ROBOTS is not set +# CONFIG_PKG_USING_EV is not set +# CONFIG_PKG_USING_SYSWATCH is not set +# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set +# CONFIG_PKG_USING_PLCCORE is not set +# CONFIG_PKG_USING_RAMDISK is not set +# CONFIG_PKG_USING_MININI is not set +# CONFIG_PKG_USING_QBOOT is not set +# CONFIG_PKG_USING_PPOOL is not set +# CONFIG_PKG_USING_OPENAMP is not set +# CONFIG_PKG_USING_LPM is not set +# CONFIG_PKG_USING_TLSF is not set +# CONFIG_PKG_USING_EVENT_RECORDER is not set +# CONFIG_PKG_USING_ARM_2D is not set +# CONFIG_PKG_USING_MCUBOOT is not set +# CONFIG_PKG_USING_TINYUSB is not set +# CONFIG_PKG_USING_CHERRYUSB is not set +# CONFIG_PKG_USING_KMULTI_RTIMER is not set +# CONFIG_PKG_USING_TFDB is not set +# CONFIG_PKG_USING_QPC is not set + +# +# peripheral libraries and drivers +# +# CONFIG_PKG_USING_SENSORS_DRIVERS is not set +# CONFIG_PKG_USING_REALTEK_AMEBA is not set +# CONFIG_PKG_USING_SHT2X is not set +# CONFIG_PKG_USING_SHT3X is not set +# CONFIG_PKG_USING_AS7341 is not set +# CONFIG_PKG_USING_STM32_SDIO is not set +# CONFIG_PKG_USING_ICM20608 is not set +# CONFIG_PKG_USING_BUTTON is not set +# CONFIG_PKG_USING_PCF8574 is not set +# CONFIG_PKG_USING_SX12XX is not set +# CONFIG_PKG_USING_SIGNAL_LED is not set +# CONFIG_PKG_USING_LEDBLINK is not set +# CONFIG_PKG_USING_LITTLED is not set +# CONFIG_PKG_USING_LKDGUI is not set +# CONFIG_PKG_USING_NRF5X_SDK is not set +# CONFIG_PKG_USING_NRFX is not set +# 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 +# CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set +# CONFIG_PKG_USING_AD7746 is not set +# CONFIG_PKG_USING_PCA9685 is not set +# CONFIG_PKG_USING_I2C_TOOLS is not set +# CONFIG_PKG_USING_NRF24L01 is not set +# CONFIG_PKG_USING_TOUCH_DRIVERS is not set +# CONFIG_PKG_USING_MAX17048 is not set +# CONFIG_PKG_USING_RPLIDAR is not set +# CONFIG_PKG_USING_AS608 is not set +# CONFIG_PKG_USING_RC522 is not set +# CONFIG_PKG_USING_WS2812B is not set +# CONFIG_PKG_USING_EMBARC_BSP is not set +# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set +# CONFIG_PKG_USING_MULTI_RTIMER is not set +# CONFIG_PKG_USING_MAX7219 is not set +# CONFIG_PKG_USING_BEEP is not set +# CONFIG_PKG_USING_EASYBLINK is not set +# CONFIG_PKG_USING_PMS_SERIES is not set +# CONFIG_PKG_USING_CAN_YMODEM is not set +# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set +# CONFIG_PKG_USING_QLED is not set +# CONFIG_PKG_USING_PAJ7620 is not set +# CONFIG_PKG_USING_AGILE_CONSOLE is not set +# CONFIG_PKG_USING_LD3320 is not set +# CONFIG_PKG_USING_WK2124 is not set +# CONFIG_PKG_USING_LY68L6400 is not set +# CONFIG_PKG_USING_DM9051 is not set +# CONFIG_PKG_USING_SSD1306 is not set +# CONFIG_PKG_USING_QKEY is not set +# CONFIG_PKG_USING_RS485 is not set +# CONFIG_PKG_USING_RS232 is not set +# CONFIG_PKG_USING_NES is not set +# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set +# CONFIG_PKG_USING_VDEVICE is not set +# CONFIG_PKG_USING_SGM706 is not set +# CONFIG_PKG_USING_STM32WB55_SDK is not set +# CONFIG_PKG_USING_RDA58XX is not set +# CONFIG_PKG_USING_LIBNFC is not set +# CONFIG_PKG_USING_MFOC is not set +# CONFIG_PKG_USING_TMC51XX is not set +# CONFIG_PKG_USING_TCA9534 is not set +# CONFIG_PKG_USING_KOBUKI is not set +# CONFIG_PKG_USING_ROSSERIAL is not set +# CONFIG_PKG_USING_MICRO_ROS is not set +# CONFIG_PKG_USING_MCP23008 is not set +# CONFIG_PKG_USING_BLUETRUM_SDK is not set +# CONFIG_PKG_USING_MISAKA_AT24CXX is not set +# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set +# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set +# CONFIG_PKG_USING_BL_MCU_SDK is not set +# 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 +# +# CONFIG_PKG_USING_LIBANN is not set +# CONFIG_PKG_USING_NNOM is not set +# CONFIG_PKG_USING_ONNX_BACKEND is not set +# CONFIG_PKG_USING_ONNX_PARSER is not set +# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set +# CONFIG_PKG_USING_ELAPACK is not set +# CONFIG_PKG_USING_ULAPACK is not set +# CONFIG_PKG_USING_QUEST is not set +# CONFIG_PKG_USING_NAXOS is not set + +# +# miscellaneous packages +# + +# +# project laboratory +# + +# +# samples: kernel and components samples +# +# CONFIG_PKG_USING_KERNEL_SAMPLES is not set +# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set +# CONFIG_PKG_USING_NETWORK_SAMPLES is not set +# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set + +# +# entertainment: terminal games and other interesting software packages +# +# CONFIG_PKG_USING_CMATRIX is not set +# CONFIG_PKG_USING_SL is not set +# CONFIG_PKG_USING_CAL is not set +# CONFIG_PKG_USING_ACLOCK is not set +# CONFIG_PKG_USING_THREES is not set +# CONFIG_PKG_USING_2048 is not set +# CONFIG_PKG_USING_SNAKE is not set +# CONFIG_PKG_USING_TETRIS is not set +# CONFIG_PKG_USING_DONUT is not set +# CONFIG_PKG_USING_COWSAY is not set +# CONFIG_PKG_USING_LIBCSV is not set +# CONFIG_PKG_USING_OPTPARSE is not set +# CONFIG_PKG_USING_FASTLZ is not set +# CONFIG_PKG_USING_MINILZO is not set +# CONFIG_PKG_USING_QUICKLZ is not set +# CONFIG_PKG_USING_LZMA is not set +# CONFIG_PKG_USING_MULTIBUTTON is not set +# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set +# CONFIG_PKG_USING_CANFESTIVAL is not set +# CONFIG_PKG_USING_ZLIB is not set +# CONFIG_PKG_USING_MINIZIP is not set +# CONFIG_PKG_USING_HEATSHRINK is not set +# CONFIG_PKG_USING_DSTR is not set +# CONFIG_PKG_USING_TINYFRAME is not set +# CONFIG_PKG_USING_KENDRYTE_DEMO is not set +# CONFIG_PKG_USING_DIGITALCTRL is not set +# CONFIG_PKG_USING_UPACKER is not set +# CONFIG_PKG_USING_UPARAM is not set +# CONFIG_PKG_USING_HELLO is not set +# CONFIG_PKG_USING_VI is not set +# CONFIG_PKG_USING_KI is not set +# CONFIG_PKG_USING_ARMv7M_DWT is not set +# CONFIG_PKG_USING_UKAL is not set +# CONFIG_PKG_USING_CRCLIB is not set +# CONFIG_PKG_USING_LWGPS is not set +# CONFIG_PKG_USING_STATE_MACHINE is not set +# CONFIG_PKG_USING_DESIGN_PATTERN is not set +# CONFIG_PKG_USING_CONTROLLER is not set +# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set +# CONFIG_PKG_USING_MFBD is not set +# CONFIG_PKG_USING_SLCAN2RTT is not set +# CONFIG_PKG_USING_SOEM is not set +CONFIG_SOC_FAMILY_GD32=y +CONFIG_SOC_GD32VF103V=y + +# +# Hardware Drivers Config +# +CONFIG_SOC_SERIES_GD32VF103V=y + +# +# Onboard Peripheral Drivers +# + +# +# On-chip Peripheral Drivers +# +CONFIG_BSP_USING_GPIO=y +CONFIG_BSP_USING_UART=y +# CONFIG_BSP_USING_UART0 is not set +CONFIG_BSP_USING_UART1=y +# CONFIG_BSP_UART1_RX_USING_DMA is not set +# CONFIG_BSP_USING_UART2 is not set +# CONFIG_BSP_USING_UART3 is not set +# CONFIG_BSP_USING_UART4 is not set +# CONFIG_BSP_USING_SPI is not set +# CONFIG_BSP_USING_I2C1 is not set +# CONFIG_BSP_USING_ADC is not set +# CONFIG_BSP_USING_TIM is not set +# CONFIG_BSP_USING_ONCHIP_RTC is not set +# CONFIG_BSP_USING_WDT is not set + +# +# Board extended module Drivers +# diff --git a/bsp/gd32/risc-v/gd32vf103r-start/Kconfig b/bsp/gd32/risc-v/gd32vf103r-start/Kconfig new file mode 100644 index 0000000000..dbc650938f --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103r-start/Kconfig @@ -0,0 +1,21 @@ +mainmenu "RT-Thread Configuration" + +config BSP_DIR + string + option env="BSP_ROOT" + default "." + +config RTT_DIR + string + option env="RTT_ROOT" + default "../../../.." + +config PKGS_DIR + string + option env="PKGS_ROOT" + default "packages" + +source "$RTT_DIR/Kconfig" +source "$PKGS_DIR/Kconfig" +source "../libraries/Kconfig" +source "board/Kconfig" diff --git a/bsp/gd32/gd32105c-eval/README.md b/bsp/gd32/risc-v/gd32vf103r-start/README.md similarity index 60% rename from bsp/gd32/gd32105c-eval/README.md rename to bsp/gd32/risc-v/gd32vf103r-start/README.md index 125d7e6890..a51c3d9c5c 100644 --- a/bsp/gd32/gd32105c-eval/README.md +++ b/bsp/gd32/risc-v/gd32vf103r-start/README.md @@ -1,8 +1,8 @@ -# GD32105C-EVAL开发板BSP说明 +# GD32VF103R_START开发板BSP说明 ## 简介 -GD3105C-EVAL是-兆易创新推出的一款GD32F10X系列的评估板,最高主频高达108M,该开发板具有丰富的板载资源,可以充分发挥 GD32105VCT6 的芯片性能。 +GD32VF103V_EVAL是-兆易创新推出的一款GD32VF1系列的评估板,最高主频高达108M,该开发板具有丰富的板载资源,可以充分发挥 GD32VF103RB 的芯片性能。 开发板外观如下图所示: @@ -10,16 +10,17 @@ GD3105C-EVAL是-兆易创新推出的一款GD32F10X系列的评估板,最高 该开发板常用 **板载资源** 如下: -- GD32105VCT6,主频 108MHz,256KB FLASH ,96KB RAM +- GD32VF103RB ,主频 108MHz,128KB FLASH ,32KB RAM - 常用外设 - - LED :5个,LED1 (电源指示灯),LED2(PC0),LED3(PC2),LED4(PE0),LED5(PE1) - - 按键:3个,K1(用户按键,PA0),K2(用户按键,PC13),K3(用户按键,PB14) + - LED :2个,LED1(PA7),LED2(PA8),LED3(PA10),LED4(PC13) + - 按键:2个,K1(复位引脚),K2(用户按键,PA0) - 常用接口:USB 接口 -- 调试接口:GD-LINK +- 调试接口:GD-Link + ## 外设支持 @@ -27,11 +28,11 @@ GD3105C-EVAL是-兆易创新推出的一款GD32F10X系列的评估板,最高 | **片上外设** | **支持情况** | **备注** | |:--------- |:--------:|:------------------------------------- | -| GPIO | 支持 | PA0, PA1... PK15 ---> PIN: 0, 1...144 | +| GPIO | 支持 | PA0, PA1... ---> PIN: 0, 1...50 | | UART | 支持 | UART0 - UART4 | | I2C | 支持 | I2C1 | | SPI | 支持 | SPI0 - SPI2 | -| SPI FLASH | 支持 | | +| ADC | 支持 | ADC0 - ADC1 | | **扩展模块** | **支持情况** | **备注** | | 暂无 | 暂不支持 | 暂不支持 | @@ -49,17 +50,15 @@ GD3105C-EVAL是-兆易创新推出的一款GD32F10X系列的评估板,最高 ### 快速上手 -本 BSP 为开发者提供 MDK5 工程,并且支持 GCC 开发环境,也可使用RT-Thread Studio开发。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 +本 BSP 为开发者提供 GCC 工程。下面介绍如何将系统运行起来。 #### 硬件连接 -使用数据线连接开发板到 PC,使用USB转TTL模块连接PA2(MCU TX)和PA3(MCU RX),打开电源开关。 +使用数据线连接开发板到 PC,使用USB转TTL连接USART1,打开电源开关。 #### 编译下载 -双击 project.uvprojx 文件,打开 MDK5 工程,编译并下载程序到开发板。 - -> 工程默认配置使用 GD-Link 仿真器下载程序,在通过 GD-Link 连接开发板的基础上,点击下载按钮即可下载程序到开发板 +在工程目录下输入`scons `命令编译工程,使用GD-Link下载程序到开发板。 #### 运行结果 @@ -70,8 +69,8 @@ GD3105C-EVAL是-兆易创新推出的一款GD32F10X系列的评估板,最高 ```bash \ | / - RT - Thread Operating System - / | \ 4.0.4 build Dec 19 2021 10:00:27 - 2006 - 2021 Copyright by rt-thread team + / | \ 4.1.1 build Jun 8 2022 00:49:01 + 2006 - 2022 Copyright by RT-Thread team msh > ``` @@ -85,7 +84,7 @@ msh > 3. 输入`pkgs --update`命令更新软件包。 -4. 输入`scons --target=mdk4/mdk5` 命令重新生成工程。 +4. 输入`scons `命令重新编译工程。 ## 注意事项 diff --git a/bsp/gd32/risc-v/gd32vf103r-start/SConscript b/bsp/gd32/risc-v/gd32vf103r-start/SConscript new file mode 100644 index 0000000000..945e23289a --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103r-start/SConscript @@ -0,0 +1,16 @@ +# for module compiling +import os +Import('RTT_ROOT') +from building import * + +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/gd32/risc-v/gd32vf103r-start/SConstruct b/bsp/gd32/risc-v/gd32vf103r-start/SConstruct new file mode 100644 index 0000000000..cc841fc64a --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103r-start/SConstruct @@ -0,0 +1,57 @@ +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.' + rtconfig.TARGET_EXT + +DefaultEnvironment(tools=[]) +env = Environment(tools = ['mingw'], + AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, + CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS, + AR = rtconfig.AR, ARFLAGS = '-rc', + CXX = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS, + LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) +env.PrependENVPath('PATH', rtconfig.EXEC_PATH) +env['ASCOM'] = env['ASPPCOM'] + +Export('RTT_ROOT') +Export('rtconfig') + +SDK_ROOT = os.path.abspath('./') + +if os.path.exists(SDK_ROOT + '/libraries'): + libraries_path_prefix = SDK_ROOT + '/libraries' +else: + libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries' + +SDK_LIB = libraries_path_prefix +Export('SDK_LIB') + +# prepare building environment +# objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) +objs = PrepareBuilding(env, RTT_ROOT) + +gd32_library = 'GD32VF103_Firmware_Library' +rtconfig.BSP_LIBRARY_TYPE = gd32_library + +# include libraries +objs.extend(SConscript(os.path.join(libraries_path_prefix, gd32_library, 'SConscript'))) + +# include drivers +objs.extend(SConscript(os.path.join(libraries_path_prefix, 'gd32_drivers', 'SConscript'))) + +# make a building +DoBuilding(TARGET, objs) \ No newline at end of file diff --git a/bsp/gd32/risc-v/gd32vf103r-start/applications/SConscript b/bsp/gd32/risc-v/gd32vf103r-start/applications/SConscript new file mode 100644 index 0000000000..ef1c39fd83 --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103r-start/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/gd32/risc-v/gd32vf103r-start/applications/main.c b/bsp/gd32/risc-v/gd32vf103r-start/applications/main.c new file mode 100644 index 0000000000..4b1c6df62e --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103r-start/applications/main.c @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-06-04 BruceOu first implementation + */ + +#include +#include +#include +#include + +/* defined the LED1 pin: PA7 */ +#define LED1_PIN GET_PIN(A, 7) + +int main(void) +{ + int count = 1; + + /* set LED1 pin mode to output */ + rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT); + + while (count++) + { + rt_pin_write(LED1_PIN, PIN_HIGH); + rt_thread_mdelay(500); + rt_pin_write(LED1_PIN, PIN_LOW); + rt_thread_mdelay(500); + } + + return RT_EOK; +} diff --git a/bsp/gd32/gd32105r-start/board/Kconfig b/bsp/gd32/risc-v/gd32vf103r-start/board/Kconfig similarity index 76% rename from bsp/gd32/gd32105r-start/board/Kconfig rename to bsp/gd32/risc-v/gd32vf103r-start/board/Kconfig index 8c6338255d..a5691b840d 100644 --- a/bsp/gd32/gd32105r-start/board/Kconfig +++ b/bsp/gd32/risc-v/gd32vf103r-start/board/Kconfig @@ -1,16 +1,16 @@ menu "Hardware Drivers Config" -config SOC_SERIES_GD32F10x +config SOC_SERIES_GD32VF103V bool default y - -config SOC_GD32105R + +config SOC_GD32VF103V bool - select SOC_SERIES_GD32F10x + select SOC_SERIES_GD32VF103V select RT_USING_COMPONENTS_INIT select RT_USING_USER_MAIN default y - + menu "Onboard Peripheral Drivers" endmenu @@ -77,33 +77,25 @@ menu "On-chip Peripheral Drivers" select RT_SERIAL_USING_DMA 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 - config BSP_USING_ADC1 - bool "using adc1" - default n - endif - + menuconfig BSP_USING_SPI bool "Enable SPI BUS" default n select RT_USING_SPI if BSP_USING_SPI - config BSP_USING_SPI0 - bool "Enable SPI0 BUS" - default n - config BSP_USING_SPI1 + config BSP_USING_SPI1 bool "Enable SPI1 BUS" default n - config BSP_USING_SPI2 - bool "Enable SPI2 BUS" + + config BSP_SPI1_TX_USING_DMA + bool "Enable SPI1 TX DMA" + depends on BSP_USING_SPI1 + default n + + config BSP_SPI1_RX_USING_DMA + bool "Enable SPI1 RX DMA" + depends on BSP_USING_SPI1 + select BSP_SPI1_TX_USING_DMA default n endif @@ -124,44 +116,68 @@ menu "On-chip Peripheral Drivers" default 25 endif - menuconfig BSP_USING_TIM + menuconfig BSP_USING_ADC + bool "Enable ADC" + default n + select RT_USING_ADC + if BSP_USING_ADC + config BSP_USING_ADC0 + bool "Enable ADC0" + default n + + config BSP_USING_ADC1 + bool "Enable ADC1" + default n + + endif + + menuconfig BSP_USING_TIM bool "Enable timer" default n select RT_USING_HWTIMER if BSP_USING_TIM - config BSP_USING_TIM10 + config BSP_USING_TIM10 bool "Enable TIM10" default n - + config BSP_USING_TIM11 bool "Enable TIM11" - default n - - config BSP_USING_TIM12 - bool "Enable TIM12" default n - config BSP_USING_TIM13 + config BSP_USING_TIM12 bool "Enable TIM13" default n endif - - config BSP_USING_WDT + + menuconfig BSP_USING_ONCHIP_RTC + bool "Enable RTC" + select RT_USING_RTC + default n + if BSP_USING_ONCHIP_RTC + choice + prompt "Select clock source" + default BSP_RTC_USING_LSE + + config BSP_RTC_USING_LSE + bool "RTC USING LSE" + + config BSP_RTC_USING_LSI + bool "RTC USING LSI" + endchoice + 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 - source "../libraries/gd32_drivers/Kconfig" - + endmenu menu "Board extended module Drivers" endmenu - + endmenu + diff --git a/bsp/gd32/risc-v/gd32vf103r-start/board/SConscript b/bsp/gd32/risc-v/gd32vf103r-start/board/SConscript new file mode 100644 index 0000000000..f21fc1fdd8 --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103r-start/board/SConscript @@ -0,0 +1,26 @@ +import os +import rtconfig +from building import * + +Import('SDK_LIB') + +cwd = GetCurrentDir() + +# add general drivers +src = Split(''' +board.c +''') + +path = [cwd] + +startup_path_prefix = SDK_LIB + +if rtconfig.CROSS_TOOL == 'gcc': + src += [startup_path_prefix + '/GD32VF103_Firmware_Library/RISCV/env_Eclipse/start.S'] + src += [startup_path_prefix + '/GD32VF103_Firmware_Library/RISCV/env_Eclipse/entry.S'] + +CPPDEFINES = ['GD32VF103R_START'] +group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES) + + +Return('group') diff --git a/bsp/gd32/risc-v/gd32vf103r-start/board/board.c b/bsp/gd32/risc-v/gd32vf103r-start/board/board.c new file mode 100644 index 0000000000..64b28a505d --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103r-start/board/board.c @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-06-04 BruceOu first implementation + */ + +#include +#include +#include +#include "board.h" + +#ifdef RT_USING_SERIAL +#include +#endif + +/* System Tick Configuration */ +static void systick_config(rt_uint32_t ticks) +{ + /* set value */ + *(rt_uint64_t *) (TIMER_CTRL_ADDR + TIMER_MTIMECMP) = ticks; + /* enable interrupt */ + eclic_irq_enable(CLIC_INT_TMR, 0, 0); + /* clear value */ + *(rt_uint64_t *) (TIMER_CTRL_ADDR + TIMER_MTIME) = 0; +} + +/* This is the timer interrupt service routine. */ +void eclic_mtip_handler(void) +{ + /* clear value */ + *(rt_uint64_t *) (TIMER_CTRL_ADDR + TIMER_MTIME) = 0; + + /* enter interrupt */ + rt_interrupt_enter(); + /* tick increase */ + rt_tick_increase(); + + /* leave interrupt */ + rt_interrupt_leave(); +} + +/* fixed misaligned bug for qemu */ +void *__wrap_memset(void *s, int c, size_t n) +{ + return rt_memset(s, c, n); +} + +void rt_hw_board_init(void) +{ +extern void _init(void); + _init(); + systick_config(TIMER_FREQ / RT_TICK_PER_SECOND); + + /* USART driver initialization is open by default */ +#ifdef RT_USING_SERIAL + rt_hw_usart_init(); +#endif + + /* Set the shell console output device */ +#if defined(RT_USING_CONSOLE) && defined(RT_USING_DEVICE) + rt_console_set_device(RT_CONSOLE_DEVICE_NAME); +#endif + + /* Board underlying hardware initialization */ +#ifdef RT_USING_COMPONENTS_INIT + rt_components_board_init(); +#endif + +#ifdef RT_USING_HEAP + rt_system_heap_init((void *) HEAP_BEGIN, (void *) HEAP_END); +#endif + +} + +/******************** end of file *******************/ + diff --git a/bsp/gd32/risc-v/gd32vf103r-start/board/board.h b/bsp/gd32/risc-v/gd32vf103r-start/board/board.h new file mode 100644 index 0000000000..a169a57eb3 --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103r-start/board/board.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-06-04 BruceOu first implementation + */ + +#ifndef __BOARD__ +#define __BOARD__ +#include "gd32vf103.h" +#include "drv_gpio.h" +extern void *_end; +extern void *_heap_end; +#define HEAP_BEGIN &_end +#define HEAP_END &_heap_end + +void rt_hw_board_init(void); + +#endif /* __BOARD__ */ + +/******************** end of file *******************/ diff --git a/bsp/gd32/risc-v/gd32vf103r-start/board/gd32vf103_libopt.h b/bsp/gd32/risc-v/gd32vf103r-start/board/gd32vf103_libopt.h new file mode 100644 index 0000000000..a04737a6f5 --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103r-start/board/gd32vf103_libopt.h @@ -0,0 +1,62 @@ +/*! + \file gd32vf103_libopt.h + \brief library optional for gd32vf103 + + \version 2019-06-05, V1.0.0, demo for GD32VF103 + \version 2020-12-18, V1.1.0, demo for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_LIBOPT_H +#define GD32VF103_LIBOPT_H + +#include "gd32vf103_adc.h" +#include "gd32vf103_bkp.h" +#include "gd32vf103_can.h" +#include "gd32vf103_crc.h" +#include "gd32vf103_dac.h" +#include "gd32vf103_dma.h" +#include "gd32vf103_eclic.h" +#include "gd32vf103_exmc.h" +#include "gd32vf103_exti.h" +#include "gd32vf103_fmc.h" +#include "gd32vf103_gpio.h" +#include "gd32vf103_i2c.h" +#include "gd32vf103_fwdgt.h" +#include "gd32vf103_dbg.h" +#include "gd32vf103_pmu.h" +#include "gd32vf103_rcu.h" +#include "gd32vf103_rtc.h" +#include "gd32vf103_spi.h" +#include "gd32vf103_timer.h" +#include "gd32vf103_usart.h" +#include "gd32vf103_wwdgt.h" +#include "n200_func.h" + +#endif /* GD32VF103_LIBOPT_H */ diff --git a/bsp/gd32/risc-v/gd32vf103r-start/figures/board.jpg b/bsp/gd32/risc-v/gd32vf103r-start/figures/board.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6b6f4b10aca0407e0dbd8e96ce1d546b626d1896 GIT binary patch literal 119055 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�tmfhu9Pt>bgw0O=K93djV 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 R{|3_k6IA~{l#LAX-vPH?z)=7I literal 0 HcmV?d00001 diff --git a/bsp/gd32/risc-v/gd32vf103r-start/rtconfig.h b/bsp/gd32/risc-v/gd32vf103r-start/rtconfig.h new file mode 100644 index 0000000000..33038e06bc --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103r-start/rtconfig.h @@ -0,0 +1,195 @@ +#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_HOOK_USING_FUNC_PTR +#define RT_USING_IDLE_HOOK +#define RT_IDLE_HOOK_LIST_SIZE 4 +#define IDLE_THREAD_STACK_SIZE 512 +#define RT_USING_TIMER_SOFT +#define RT_TIMER_THREAD_PRIO 4 +#define RT_TIMER_THREAD_STACK_SIZE 512 + +/* kservice optimization */ + +#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_SMALL_MEM_AS_HEAP +#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 "uart1" +#define RT_VER_NUM 0x40101 + +/* 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 +#define RT_USING_MSH +#define RT_USING_FINSH +#define FINSH_USING_MSH +#define FINSH_THREAD_NAME "tshell" +#define FINSH_THREAD_PRIORITY 20 +#define FINSH_THREAD_STACK_SIZE 4096 +#define FINSH_USING_HISTORY +#define FINSH_HISTORY_LINES 5 +#define FINSH_USING_SYMTAB +#define FINSH_CMD_SIZE 80 +#define MSH_USING_BUILT_IN_COMMANDS +#define FINSH_USING_DESCRIPTION +#define FINSH_ARG_MAX 10 + +/* Device Drivers */ + +#define RT_USING_DEVICE_IPC +#define RT_USING_SERIAL +#define RT_USING_SERIAL_V1 +#define RT_SERIAL_RB_BUFSZ 64 +#define RT_USING_PIN + +/* Using USB */ + + +/* C/C++ and POSIX layer */ + +#define RT_LIBC_DEFAULT_TIMEZONE 8 + +/* POSIX (Portable Operating System Interface) layer */ + + +/* Interprocess Communication (IPC) */ + + +/* Socket is in the 'Network' category */ + + +/* Network */ + + +/* Utilities */ + + +/* RT-Thread Utestcases */ + + +/* RT-Thread online packages */ + +/* IoT - internet of things */ + + +/* Wi-Fi */ + +/* Marvell WiFi */ + + +/* Wiced WiFi */ + + +/* IoT Cloud */ + + +/* security packages */ + + +/* language packages */ + +/* JSON: JavaScript Object Notation, a lightweight data-interchange format */ + + +/* XML: Extensible Markup Language */ + + +/* multimedia packages */ + +/* LVGL: powerful and easy-to-use embedded GUI library */ + + +/* u8g2: a monochrome graphic library */ + + +/* PainterEngine: A cross-platform graphics application framework written in C language */ + + +/* tools packages */ + + +/* system packages */ + +/* enhanced kernel services */ + + +/* POSIX extension functions */ + + +/* acceleration: Assembly language or algorithmic acceleration packages */ + + +/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */ + + +/* Micrium: Micrium software products porting for RT-Thread */ + + +/* peripheral libraries and drivers */ + + +/* AI packages */ + + +/* miscellaneous packages */ + +/* project laboratory */ + +/* samples: kernel and components samples */ + + +/* entertainment: terminal games and other interesting software packages */ + +#define SOC_FAMILY_GD32 +#define SOC_GD32VF103V + +/* Hardware Drivers Config */ + +#define SOC_SERIES_GD32VF103V + +/* Onboard Peripheral Drivers */ + +/* On-chip Peripheral Drivers */ + +#define BSP_USING_GPIO +#define BSP_USING_UART +#define BSP_USING_UART1 + +/* Board extended module Drivers */ + + +#endif diff --git a/bsp/gd32/risc-v/gd32vf103r-start/rtconfig.py b/bsp/gd32/risc-v/gd32vf103r-start/rtconfig.py new file mode 100644 index 0000000000..454c4eee9d --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103r-start/rtconfig.py @@ -0,0 +1,74 @@ +import os + +# toolchains options +ARCH='risc-v' +CPU='bumblebee' +CROSS_TOOL='gcc' + +# bsp lib config +BSP_LIBRARY_TYPE = None + +if os.getenv('RTT_CC'): + CROSS_TOOL = os.getenv('RTT_CC') +if os.getenv('RTT_ROOT'): + RTT_ROOT = os.getenv('RTT_ROOT') + +# cross_tool provides the cross compiler +# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR +if CROSS_TOOL == 'gcc': + PLATFORM = 'gcc' + EXEC_PATH = EXEC_PATH = r'D:/gcc/xpack-riscv-none-embed-gcc-10.2.0-1.2/bin' +else: + print('Please make sure your toolchains is GNU GCC!') + exit(0) + +#if os.getenv('RTT_EXEC_PATH'): +# EXEC_PATH = os.getenv('RTT_EXEC_PATH') + +CORE = 'risc-v' +BUILD = 'debug' +MAP_FILE = 'rtthread.map' +LINK_FILE = '../libraries/GD32VF103_Firmware_Library/RISCV/env_Eclipse/GD32VF103xB.lds' + +if PLATFORM == 'gcc': + # toolchains + PREFIX = 'riscv-none-embed-' + CC = PREFIX + 'gcc' + AS = PREFIX + 'gcc' + AR = PREFIX + 'ar' + CXX = PREFIX + 'g++' + LINK = PREFIX + 'gcc' + TARGET_EXT = 'elf' + SIZE = PREFIX + 'size' + OBJDUMP = PREFIX + 'objdump' + OBJCPY = PREFIX + 'objcopy' + + DEVICE = ' -march=rv32imac -mabi=ilp32 -DUSE_PLIC -DUSE_M_TIME -DNO_INIT -mcmodel=medany -msmall-data-limit=8 -L. -nostartfiles -lc ' + CFLAGS = DEVICE + CFLAGS += ' -save-temps=obj' + AFLAGS = '-c'+ DEVICE + ' -x assembler-with-cpp' + AFLAGS += ' -Iplatform -Ilibraries/RISCV/include -Ilibraries/RISCV/env_Eclipse' + LFLAGS = DEVICE + LFLAGS += ' -Wl,--gc-sections,-cref,-Map=' + MAP_FILE + LFLAGS += ' -T ' + LINK_FILE + LFLAGS += ' -Wl,-wrap=memset' + + CPATH = '' + LPATH = '' + + if BUILD == 'debug': + CFLAGS += ' -O0 -g3' + AFLAGS += ' -g3' + else: + CFLAGS += ' -O2' + + CXXFLAGS = CFLAGS + + POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' + +def dist_handle(BSP_ROOT, dist_dir): + import sys + cwd_path = os.getcwd() + sys.path.append(os.path.join(os.path.dirname(BSP_ROOT), 'tools')) + from sdk_dist import dist_do_building + dist_do_building(BSP_ROOT, dist_dir) diff --git a/bsp/gd32/risc-v/gd32vf103v-eval/.config b/bsp/gd32/risc-v/gd32vf103v-eval/.config new file mode 100644 index 0000000000..3d43ebc099 --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103v-eval/.config @@ -0,0 +1,686 @@ +# +# Automatically generated file; DO NOT EDIT. +# RT-Thread Configuration +# + +# +# RT-Thread Kernel +# +CONFIG_RT_NAME_MAX=8 +# CONFIG_RT_USING_ARCH_DATA_TYPE is not set +# CONFIG_RT_USING_SMP is not set +CONFIG_RT_ALIGN_SIZE=4 +# CONFIG_RT_THREAD_PRIORITY_8 is not set +CONFIG_RT_THREAD_PRIORITY_32=y +# CONFIG_RT_THREAD_PRIORITY_256 is not set +CONFIG_RT_THREAD_PRIORITY_MAX=32 +CONFIG_RT_TICK_PER_SECOND=100 +CONFIG_RT_USING_OVERFLOW_CHECK=y +CONFIG_RT_USING_HOOK=y +CONFIG_RT_HOOK_USING_FUNC_PTR=y +CONFIG_RT_USING_IDLE_HOOK=y +CONFIG_RT_IDLE_HOOK_LIST_SIZE=4 +CONFIG_IDLE_THREAD_STACK_SIZE=512 +CONFIG_RT_USING_TIMER_SOFT=y +CONFIG_RT_TIMER_THREAD_PRIO=4 +CONFIG_RT_TIMER_THREAD_STACK_SIZE=512 + +# +# kservice optimization +# +# CONFIG_RT_KSERVICE_USING_STDLIB is not set +# CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set +# CONFIG_RT_USING_TINY_FFS is not set +# CONFIG_RT_KPRINTF_USING_LONGLONG is not set +CONFIG_RT_DEBUG=y +# CONFIG_RT_DEBUG_COLOR is not set +# CONFIG_RT_DEBUG_INIT_CONFIG is not set +# CONFIG_RT_DEBUG_THREAD_CONFIG is not set +# CONFIG_RT_DEBUG_SCHEDULER_CONFIG is not set +# CONFIG_RT_DEBUG_IPC_CONFIG is not set +# CONFIG_RT_DEBUG_TIMER_CONFIG is not set +# CONFIG_RT_DEBUG_IRQ_CONFIG is not set +# CONFIG_RT_DEBUG_MEM_CONFIG is not set +# CONFIG_RT_DEBUG_SLAB_CONFIG is not set +# CONFIG_RT_DEBUG_MEMHEAP_CONFIG is not set +# CONFIG_RT_DEBUG_MODULE_CONFIG is not set + +# +# Inter-Thread communication +# +CONFIG_RT_USING_SEMAPHORE=y +CONFIG_RT_USING_MUTEX=y +CONFIG_RT_USING_EVENT=y +CONFIG_RT_USING_MAILBOX=y +CONFIG_RT_USING_MESSAGEQUEUE=y +# CONFIG_RT_USING_SIGNALS is not set + +# +# Memory Management +# +CONFIG_RT_USING_MEMPOOL=y +CONFIG_RT_USING_SMALL_MEM=y +# CONFIG_RT_USING_SLAB is not set +# CONFIG_RT_USING_MEMHEAP is not set +CONFIG_RT_USING_SMALL_MEM_AS_HEAP=y +# CONFIG_RT_USING_MEMHEAP_AS_HEAP is not set +# CONFIG_RT_USING_SLAB_AS_HEAP is not set +# CONFIG_RT_USING_USERHEAP is not set +# CONFIG_RT_USING_NOHEAP is not set +# CONFIG_RT_USING_MEMTRACE is not set +# CONFIG_RT_USING_HEAP_ISR is not set +CONFIG_RT_USING_HEAP=y + +# +# Kernel Device Object +# +CONFIG_RT_USING_DEVICE=y +# CONFIG_RT_USING_DEVICE_OPS is not set +# CONFIG_RT_USING_INTERRUPT_INFO is not set +CONFIG_RT_USING_CONSOLE=y +CONFIG_RT_CONSOLEBUF_SIZE=128 +CONFIG_RT_CONSOLE_DEVICE_NAME="uart0" +CONFIG_RT_VER_NUM=0x40101 +# CONFIG_RT_USING_CPU_FFS is not set +# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set + +# +# RT-Thread Components +# +CONFIG_RT_USING_COMPONENTS_INIT=y +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 +CONFIG_RT_USING_MSH=y +CONFIG_RT_USING_FINSH=y +CONFIG_FINSH_USING_MSH=y +CONFIG_FINSH_THREAD_NAME="tshell" +CONFIG_FINSH_THREAD_PRIORITY=20 +CONFIG_FINSH_THREAD_STACK_SIZE=4096 +CONFIG_FINSH_USING_HISTORY=y +CONFIG_FINSH_HISTORY_LINES=5 +CONFIG_FINSH_USING_SYMTAB=y +CONFIG_FINSH_CMD_SIZE=80 +CONFIG_MSH_USING_BUILT_IN_COMMANDS=y +CONFIG_FINSH_USING_DESCRIPTION=y +# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set +# CONFIG_FINSH_USING_AUTH is not set +CONFIG_FINSH_ARG_MAX=10 +# CONFIG_RT_USING_DFS is not set +# CONFIG_RT_USING_FAL is not set + +# +# Device Drivers +# +CONFIG_RT_USING_DEVICE_IPC=y +# CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set +CONFIG_RT_USING_SERIAL=y +CONFIG_RT_USING_SERIAL_V1=y +# CONFIG_RT_USING_SERIAL_V2 is not set +# CONFIG_RT_SERIAL_USING_DMA is not set +CONFIG_RT_SERIAL_RB_BUFSZ=64 +# CONFIG_RT_USING_CAN is not set +# CONFIG_RT_USING_HWTIMER is not set +# CONFIG_RT_USING_CPUTIME is not set +# CONFIG_RT_USING_I2C is not set +# CONFIG_RT_USING_PHY is not set +CONFIG_RT_USING_PIN=y +# CONFIG_RT_USING_ADC is not set +# CONFIG_RT_USING_DAC is not set +# CONFIG_RT_USING_PWM is not set +# CONFIG_RT_USING_MTD_NOR is not set +# CONFIG_RT_USING_MTD_NAND is not set +# CONFIG_RT_USING_PM is not set +# CONFIG_RT_USING_RTC is not set +# CONFIG_RT_USING_SDIO is not set +# CONFIG_RT_USING_SPI is not set +# CONFIG_RT_USING_WDT is not set +# CONFIG_RT_USING_AUDIO is not set +# CONFIG_RT_USING_SENSOR is not set +# CONFIG_RT_USING_TOUCH is not set +# CONFIG_RT_USING_HWCRYPTO is not set +# CONFIG_RT_USING_PULSE_ENCODER is not set +# CONFIG_RT_USING_INPUT_CAPTURE is not set +# CONFIG_RT_USING_WIFI is not set + +# +# Using USB +# +# CONFIG_RT_USING_USB is not set +# CONFIG_RT_USING_USB_HOST is not set +# CONFIG_RT_USING_USB_DEVICE is not set + +# +# C/C++ and POSIX layer +# +CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 + +# +# POSIX (Portable Operating System Interface) layer +# +# CONFIG_RT_USING_POSIX_FS is not set +# CONFIG_RT_USING_POSIX_DELAY is not set +# CONFIG_RT_USING_POSIX_CLOCK is not set +# CONFIG_RT_USING_POSIX_TIMER is not set +# CONFIG_RT_USING_PTHREADS is not set +# CONFIG_RT_USING_MODULE is not set + +# +# Interprocess Communication (IPC) +# +# CONFIG_RT_USING_POSIX_PIPE is not set +# CONFIG_RT_USING_POSIX_MESSAGE_QUEUE is not set +# CONFIG_RT_USING_POSIX_MESSAGE_SEMAPHORE is not set + +# +# Socket is in the 'Network' category +# +# CONFIG_RT_USING_CPLUSPLUS is not set + +# +# Network +# +# CONFIG_RT_USING_SAL is not set +# CONFIG_RT_USING_NETDEV is not set +# CONFIG_RT_USING_LWIP is not set +# CONFIG_RT_USING_AT is not set + +# +# Utilities +# +# CONFIG_RT_USING_RYM is not set +# CONFIG_RT_USING_ULOG is not set +# CONFIG_RT_USING_UTEST is not set +# CONFIG_RT_USING_VAR_EXPORT is not set +# CONFIG_RT_USING_RT_LINK is not set +# CONFIG_RT_USING_VBUS is not set + +# +# RT-Thread Utestcases +# +# CONFIG_RT_USING_UTESTCASES is not set + +# +# RT-Thread online packages +# + +# +# 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 +# CONFIG_PKG_USING_WEBCLIENT is not set +# CONFIG_PKG_USING_WEBNET is not set +# CONFIG_PKG_USING_MONGOOSE is not set +# CONFIG_PKG_USING_MYMQTT is not set +# CONFIG_PKG_USING_KAWAII_MQTT is not set +# CONFIG_PKG_USING_BC28_MQTT is not set +# CONFIG_PKG_USING_WEBTERMINAL is not set +# CONFIG_PKG_USING_LIBMODBUS is not set +# CONFIG_PKG_USING_FREEMODBUS is not set +# CONFIG_PKG_USING_NANOPB is not set + +# +# Wi-Fi +# + +# +# Marvell WiFi +# +# CONFIG_PKG_USING_WLANMARVELL is not set + +# +# Wiced WiFi +# +# CONFIG_PKG_USING_WLAN_WICED is not set +# CONFIG_PKG_USING_RW007 is not set +# CONFIG_PKG_USING_COAP is not set +# CONFIG_PKG_USING_NOPOLL is not set +# CONFIG_PKG_USING_NETUTILS is not set +# CONFIG_PKG_USING_CMUX is not set +# CONFIG_PKG_USING_PPP_DEVICE is not set +# CONFIG_PKG_USING_AT_DEVICE is not set +# CONFIG_PKG_USING_ATSRV_SOCKET is not set +# CONFIG_PKG_USING_WIZNET is not set +# CONFIG_PKG_USING_ZB_COORDINATOR is not set + +# +# IoT Cloud +# +# CONFIG_PKG_USING_ONENET is not set +# CONFIG_PKG_USING_GAGENT_CLOUD is not set +# CONFIG_PKG_USING_ALI_IOTKIT is not set +# CONFIG_PKG_USING_AZURE is not set +# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set +# CONFIG_PKG_USING_JIOT-C-SDK is not set +# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set +# CONFIG_PKG_USING_JOYLINK is not set +# CONFIG_PKG_USING_EZ_IOT_OS is not set +# CONFIG_PKG_USING_IOTSHARP_SDK 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 +# CONFIG_PKG_USING_AIRKISS_OPEN is not set +# CONFIG_PKG_USING_LIBRWS is not set +# CONFIG_PKG_USING_TCPSERVER is not set +# CONFIG_PKG_USING_PROTOBUF_C is not set +# CONFIG_PKG_USING_DLT645 is not set +# CONFIG_PKG_USING_QXWZ is not set +# CONFIG_PKG_USING_SMTP_CLIENT is not set +# CONFIG_PKG_USING_ABUP_FOTA is not set +# CONFIG_PKG_USING_LIBCURL2RTT is not set +# CONFIG_PKG_USING_CAPNP is not set +# CONFIG_PKG_USING_AGILE_TELNET is not set +# CONFIG_PKG_USING_NMEALIB is not set +# CONFIG_PKG_USING_PDULIB is not set +# CONFIG_PKG_USING_BTSTACK is not set +# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set +# CONFIG_PKG_USING_WAYZ_IOTKIT is not set +# CONFIG_PKG_USING_MAVLINK is not set +# CONFIG_PKG_USING_BSAL is not set +# CONFIG_PKG_USING_AGILE_MODBUS is not set +# CONFIG_PKG_USING_AGILE_FTP is not set +# CONFIG_PKG_USING_EMBEDDEDPROTO is not set +# CONFIG_PKG_USING_RT_LINK_HW is not set +# CONFIG_PKG_USING_LORA_PKT_FWD is not set +# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set +# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set +# CONFIG_PKG_USING_HM is not set +# CONFIG_PKG_USING_SMALL_MODBUS is not set +# CONFIG_PKG_USING_NET_SERVER is not set +# CONFIG_PKG_USING_ZFTP is not set + +# +# security packages +# +# CONFIG_PKG_USING_MBEDTLS is not set +# CONFIG_PKG_USING_LIBSODIUM is not set +# CONFIG_PKG_USING_LIBHYDROGEN is not set +# CONFIG_PKG_USING_TINYCRYPT is not set +# CONFIG_PKG_USING_TFM is not set +# CONFIG_PKG_USING_YD_CRYPTO is not set + +# +# 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 +# CONFIG_PKG_USING_MICROPYTHON is not set +# CONFIG_PKG_USING_PIKASCRIPT is not set +# CONFIG_PKG_USING_RTT_RUST is not set + +# +# multimedia packages +# + +# +# LVGL: powerful and easy-to-use embedded GUI library +# +# CONFIG_PKG_USING_LVGL is not set +# CONFIG_PKG_USING_LITTLEVGL2RTT is not set +# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set +# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set + +# +# u8g2: a monochrome graphic library +# +# CONFIG_PKG_USING_U8G2_OFFICIAL is not set +# CONFIG_PKG_USING_U8G2 is not set +# CONFIG_PKG_USING_OPENMV is not set +# CONFIG_PKG_USING_MUPDF is not set +# CONFIG_PKG_USING_STEMWIN is not set +# CONFIG_PKG_USING_WAVPLAYER is not set +# CONFIG_PKG_USING_TJPGD is not set +# CONFIG_PKG_USING_PDFGEN is not set +# CONFIG_PKG_USING_HELIX is not set +# CONFIG_PKG_USING_AZUREGUIX is not set +# CONFIG_PKG_USING_TOUCHGFX2RTT is not set +# CONFIG_PKG_USING_NUEMWIN is not set +# CONFIG_PKG_USING_MP3PLAYER is not set +# CONFIG_PKG_USING_TINYJPEG is not set +# CONFIG_PKG_USING_UGUI is not set + +# +# PainterEngine: A cross-platform graphics application framework written in C language +# +# CONFIG_PKG_USING_PAINTERENGINE is not set +# CONFIG_PKG_USING_PAINTERENGINE_AUX is not set +# CONFIG_PKG_USING_MCURSES is not set +# CONFIG_PKG_USING_TERMBOX is not set +# CONFIG_PKG_USING_VT100 is not set +# CONFIG_PKG_USING_QRCODE is not set +# CONFIG_PKG_USING_GUIENGINE is not set + +# +# tools packages +# +# CONFIG_PKG_USING_CMBACKTRACE is not set +# CONFIG_PKG_USING_EASYFLASH is not set +# CONFIG_PKG_USING_EASYLOGGER is not set +# CONFIG_PKG_USING_SYSTEMVIEW is not set +# CONFIG_PKG_USING_SEGGER_RTT is not set +# CONFIG_PKG_USING_RDB 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 +# CONFIG_PKG_USING_ADBD is not set +# CONFIG_PKG_USING_COREMARK is not set +# CONFIG_PKG_USING_DHRYSTONE is not set +# CONFIG_PKG_USING_MEMORYPERF is not set +# CONFIG_PKG_USING_NR_MICRO_SHELL is not set +# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set +# CONFIG_PKG_USING_LUNAR_CALENDAR is not set +# CONFIG_PKG_USING_BS8116A is not set +# CONFIG_PKG_USING_GPS_RMC is not set +# CONFIG_PKG_USING_URLENCODE is not set +# CONFIG_PKG_USING_UMCN is not set +# CONFIG_PKG_USING_LWRB2RTT is not set +# CONFIG_PKG_USING_CPU_USAGE is not set +# CONFIG_PKG_USING_GBK2UTF8 is not set +# CONFIG_PKG_USING_VCONSOLE is not set +# CONFIG_PKG_USING_KDB is not set +# CONFIG_PKG_USING_WAMR is not set +# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set +# CONFIG_PKG_USING_LWLOG is not set +# CONFIG_PKG_USING_ANV_TRACE is not set +# CONFIG_PKG_USING_ANV_MEMLEAK is not set +# CONFIG_PKG_USING_ANV_TESTSUIT is not set +# CONFIG_PKG_USING_ANV_BENCH is not set +# CONFIG_PKG_USING_DEVMEM is not set +# CONFIG_PKG_USING_REGEX is not set +# CONFIG_PKG_USING_MEM_SANDBOX is not set +# CONFIG_PKG_USING_SOLAR_TERMS is not set +# CONFIG_PKG_USING_GAN_ZHI is not set +# CONFIG_PKG_USING_FDT is not set +# CONFIG_PKG_USING_CBOX is not set +# CONFIG_PKG_USING_SNOWFLAKE is not set +# CONFIG_PKG_USING_HASH_MATCH is not set +# CONFIG_PKG_USING_FIRE_PID_CURVE is not set + +# +# system packages +# + +# +# enhanced kernel services +# +# CONFIG_PKG_USING_RT_MEMCPY_CM is not set +# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set +# CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set + +# +# POSIX extension functions +# +# 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 +# +# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set +# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set +# CONFIG_PKG_USING_QFPLIB_M3 is not set + +# +# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard +# +# CONFIG_PKG_USING_CMSIS_5 is not set +# CONFIG_PKG_USING_CMSIS_RTOS1 is not set +# CONFIG_PKG_USING_CMSIS_RTOS2 is not set + +# +# Micrium: Micrium software products porting for RT-Thread +# +# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set +# CONFIG_PKG_USING_UCOSII_WRAPPER is not set +# CONFIG_PKG_USING_UC_CRC is not set +# CONFIG_PKG_USING_UC_CLK is not set +# CONFIG_PKG_USING_UC_COMMON is not set +# CONFIG_PKG_USING_UC_MODBUS is not set +# CONFIG_PKG_USING_RTDUINO 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_FLASHDB is not set +# CONFIG_PKG_USING_SQLITE is not set +# CONFIG_PKG_USING_RTI is not set +# CONFIG_PKG_USING_DFS_YAFFS is not set +# CONFIG_PKG_USING_LITTLEFS is not set +# CONFIG_PKG_USING_DFS_JFFS2 is not set +# CONFIG_PKG_USING_DFS_UFFS is not set +# CONFIG_PKG_USING_LWEXT4 is not set +# CONFIG_PKG_USING_THREAD_POOL is not set +# CONFIG_PKG_USING_ROBOTS is not set +# CONFIG_PKG_USING_EV is not set +# CONFIG_PKG_USING_SYSWATCH is not set +# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set +# CONFIG_PKG_USING_PLCCORE is not set +# CONFIG_PKG_USING_RAMDISK is not set +# CONFIG_PKG_USING_MININI is not set +# CONFIG_PKG_USING_QBOOT is not set +# CONFIG_PKG_USING_PPOOL is not set +# CONFIG_PKG_USING_OPENAMP is not set +# CONFIG_PKG_USING_LPM is not set +# CONFIG_PKG_USING_TLSF is not set +# CONFIG_PKG_USING_EVENT_RECORDER is not set +# CONFIG_PKG_USING_ARM_2D is not set +# CONFIG_PKG_USING_MCUBOOT is not set +# CONFIG_PKG_USING_TINYUSB is not set +# CONFIG_PKG_USING_CHERRYUSB is not set +# CONFIG_PKG_USING_KMULTI_RTIMER is not set +# CONFIG_PKG_USING_TFDB is not set +# CONFIG_PKG_USING_QPC is not set + +# +# peripheral libraries and drivers +# +# CONFIG_PKG_USING_SENSORS_DRIVERS is not set +# CONFIG_PKG_USING_REALTEK_AMEBA is not set +# CONFIG_PKG_USING_SHT2X is not set +# CONFIG_PKG_USING_SHT3X is not set +# CONFIG_PKG_USING_AS7341 is not set +# CONFIG_PKG_USING_STM32_SDIO is not set +# CONFIG_PKG_USING_ICM20608 is not set +# CONFIG_PKG_USING_BUTTON is not set +# CONFIG_PKG_USING_PCF8574 is not set +# CONFIG_PKG_USING_SX12XX is not set +# CONFIG_PKG_USING_SIGNAL_LED is not set +# CONFIG_PKG_USING_LEDBLINK is not set +# CONFIG_PKG_USING_LITTLED is not set +# CONFIG_PKG_USING_LKDGUI is not set +# CONFIG_PKG_USING_NRF5X_SDK is not set +# CONFIG_PKG_USING_NRFX is not set +# 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 +# CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set +# CONFIG_PKG_USING_AD7746 is not set +# CONFIG_PKG_USING_PCA9685 is not set +# CONFIG_PKG_USING_I2C_TOOLS is not set +# CONFIG_PKG_USING_NRF24L01 is not set +# CONFIG_PKG_USING_TOUCH_DRIVERS is not set +# CONFIG_PKG_USING_MAX17048 is not set +# CONFIG_PKG_USING_RPLIDAR is not set +# CONFIG_PKG_USING_AS608 is not set +# CONFIG_PKG_USING_RC522 is not set +# CONFIG_PKG_USING_WS2812B is not set +# CONFIG_PKG_USING_EMBARC_BSP is not set +# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set +# CONFIG_PKG_USING_MULTI_RTIMER is not set +# CONFIG_PKG_USING_MAX7219 is not set +# CONFIG_PKG_USING_BEEP is not set +# CONFIG_PKG_USING_EASYBLINK is not set +# CONFIG_PKG_USING_PMS_SERIES is not set +# CONFIG_PKG_USING_CAN_YMODEM is not set +# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set +# CONFIG_PKG_USING_QLED is not set +# CONFIG_PKG_USING_PAJ7620 is not set +# CONFIG_PKG_USING_AGILE_CONSOLE is not set +# CONFIG_PKG_USING_LD3320 is not set +# CONFIG_PKG_USING_WK2124 is not set +# CONFIG_PKG_USING_LY68L6400 is not set +# CONFIG_PKG_USING_DM9051 is not set +# CONFIG_PKG_USING_SSD1306 is not set +# CONFIG_PKG_USING_QKEY is not set +# CONFIG_PKG_USING_RS485 is not set +# CONFIG_PKG_USING_RS232 is not set +# CONFIG_PKG_USING_NES is not set +# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set +# CONFIG_PKG_USING_VDEVICE is not set +# CONFIG_PKG_USING_SGM706 is not set +# CONFIG_PKG_USING_STM32WB55_SDK is not set +# CONFIG_PKG_USING_RDA58XX is not set +# CONFIG_PKG_USING_LIBNFC is not set +# CONFIG_PKG_USING_MFOC is not set +# CONFIG_PKG_USING_TMC51XX is not set +# CONFIG_PKG_USING_TCA9534 is not set +# CONFIG_PKG_USING_KOBUKI is not set +# CONFIG_PKG_USING_ROSSERIAL is not set +# CONFIG_PKG_USING_MICRO_ROS is not set +# CONFIG_PKG_USING_MCP23008 is not set +# CONFIG_PKG_USING_BLUETRUM_SDK is not set +# CONFIG_PKG_USING_MISAKA_AT24CXX is not set +# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set +# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set +# CONFIG_PKG_USING_BL_MCU_SDK is not set +# 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 +# +# CONFIG_PKG_USING_LIBANN is not set +# CONFIG_PKG_USING_NNOM is not set +# CONFIG_PKG_USING_ONNX_BACKEND is not set +# CONFIG_PKG_USING_ONNX_PARSER is not set +# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set +# CONFIG_PKG_USING_ELAPACK is not set +# CONFIG_PKG_USING_ULAPACK is not set +# CONFIG_PKG_USING_QUEST is not set +# CONFIG_PKG_USING_NAXOS is not set + +# +# miscellaneous packages +# + +# +# project laboratory +# + +# +# samples: kernel and components samples +# +# CONFIG_PKG_USING_KERNEL_SAMPLES is not set +# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set +# CONFIG_PKG_USING_NETWORK_SAMPLES is not set +# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set + +# +# entertainment: terminal games and other interesting software packages +# +# CONFIG_PKG_USING_CMATRIX is not set +# CONFIG_PKG_USING_SL is not set +# CONFIG_PKG_USING_CAL is not set +# CONFIG_PKG_USING_ACLOCK is not set +# CONFIG_PKG_USING_THREES is not set +# CONFIG_PKG_USING_2048 is not set +# CONFIG_PKG_USING_SNAKE is not set +# CONFIG_PKG_USING_TETRIS is not set +# CONFIG_PKG_USING_DONUT is not set +# CONFIG_PKG_USING_COWSAY is not set +# CONFIG_PKG_USING_LIBCSV is not set +# CONFIG_PKG_USING_OPTPARSE is not set +# CONFIG_PKG_USING_FASTLZ is not set +# CONFIG_PKG_USING_MINILZO is not set +# CONFIG_PKG_USING_QUICKLZ is not set +# CONFIG_PKG_USING_LZMA is not set +# CONFIG_PKG_USING_MULTIBUTTON is not set +# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set +# CONFIG_PKG_USING_CANFESTIVAL is not set +# CONFIG_PKG_USING_ZLIB is not set +# CONFIG_PKG_USING_MINIZIP is not set +# CONFIG_PKG_USING_HEATSHRINK is not set +# CONFIG_PKG_USING_DSTR is not set +# CONFIG_PKG_USING_TINYFRAME is not set +# CONFIG_PKG_USING_KENDRYTE_DEMO is not set +# CONFIG_PKG_USING_DIGITALCTRL is not set +# CONFIG_PKG_USING_UPACKER is not set +# CONFIG_PKG_USING_UPARAM is not set +# CONFIG_PKG_USING_HELLO is not set +# CONFIG_PKG_USING_VI is not set +# CONFIG_PKG_USING_KI is not set +# CONFIG_PKG_USING_ARMv7M_DWT is not set +# CONFIG_PKG_USING_UKAL is not set +# CONFIG_PKG_USING_CRCLIB is not set +# CONFIG_PKG_USING_LWGPS is not set +# CONFIG_PKG_USING_STATE_MACHINE is not set +# CONFIG_PKG_USING_DESIGN_PATTERN is not set +# CONFIG_PKG_USING_CONTROLLER is not set +# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set +# CONFIG_PKG_USING_MFBD is not set +# CONFIG_PKG_USING_SLCAN2RTT is not set +# CONFIG_PKG_USING_SOEM is not set +CONFIG_SOC_FAMILY_GD32=y +CONFIG_SOC_GD32VF103V=y + +# +# Hardware Drivers Config +# +CONFIG_SOC_SERIES_GD32VF103V=y + +# +# Onboard Peripheral Drivers +# + +# +# On-chip Peripheral Drivers +# +CONFIG_BSP_USING_GPIO=y +CONFIG_BSP_USING_UART=y +CONFIG_BSP_USING_UART0=y +# CONFIG_BSP_UART0_RX_USING_DMA is not set +CONFIG_BSP_USING_UART1=y +# CONFIG_BSP_UART1_RX_USING_DMA is not set +# CONFIG_BSP_USING_UART2 is not set +# CONFIG_BSP_USING_UART3 is not set +# CONFIG_BSP_USING_UART4 is not set +# CONFIG_BSP_USING_SPI is not set +# CONFIG_BSP_USING_I2C1 is not set +# CONFIG_BSP_USING_ADC is not set +# CONFIG_BSP_USING_TIM is not set +# CONFIG_BSP_USING_ONCHIP_RTC is not set +# CONFIG_BSP_USING_WDT is not set + +# +# Board extended module Drivers +# diff --git a/bsp/gd32/risc-v/gd32vf103v-eval/Kconfig b/bsp/gd32/risc-v/gd32vf103v-eval/Kconfig new file mode 100644 index 0000000000..dbc650938f --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103v-eval/Kconfig @@ -0,0 +1,21 @@ +mainmenu "RT-Thread Configuration" + +config BSP_DIR + string + option env="BSP_ROOT" + default "." + +config RTT_DIR + string + option env="RTT_ROOT" + default "../../../.." + +config PKGS_DIR + string + option env="PKGS_ROOT" + default "packages" + +source "$RTT_DIR/Kconfig" +source "$PKGS_DIR/Kconfig" +source "../libraries/Kconfig" +source "board/Kconfig" diff --git a/bsp/gd32/risc-v/gd32vf103v-eval/README.md b/bsp/gd32/risc-v/gd32vf103v-eval/README.md new file mode 100644 index 0000000000..a145e36e4b --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103v-eval/README.md @@ -0,0 +1,105 @@ +# GD32VF103V_EVAL开发板BSP说明 + +## 简介 + +GD32VF103V_EVAL是-兆易创新推出的一款GD32VF1系列的评估板,最高主频高达108M,该开发板具有丰富的板载资源,可以充分发挥 GD32VF103VB 的芯片性能。 + +开发板外观如下图所示: + +![board](figures/board.jpg) + +该开发板常用 **板载资源** 如下: + +- GD32VF103VBT6 ,主频 108MHz,128KB FLASH ,32KB RAM +- 常用外设 + - LED :4个,LED1(PC0),LED2(PC2),LED3(PE0),LED4(PE1) + - 按键:2个,K1(复位按键),K2(用户五向按键,PA0, PC13, PB14, PC5, PC4) + - General TM * 4 、Advanced TM * 1、Basic TM * 2 + - 系统定时器 * 1 + - 看门狗 * 2 + - RTC * 1 + - USART * 3、UART * 2 + - I2C * 2、I2S * 2 + - SPI * 3 + - CAN2.0B * 2 + - USB2.0 OTG FS * 1 + - TFT-LCD + - EXMC/SDRAM * 1 + - ADC * 2 + - DAC * 2 + - 最多支持80GPIOs +- 调试接口:GD-Link/J-link + +## 外设支持 + +本 BSP 目前对外设的支持情况如下: + +| **片上外设** | **支持情况** | **备注** | +|:--------- |:--------:|:------------------------------------- | +| GPIO | 支持 | PA0, PA1... ---> PIN: 0, 1...79 | +| UART | 支持 | UART0 - UART4 | +| I2C | 支持 | I2C1 | +| SPI | 支持 | SPI0 - SPI2 | +| ADC | 支持 | ADC0 - ADC2 | +| **扩展模块** | **支持情况** | **备注** | +| 暂无 | 暂不支持 | 暂不支持 | + +## 使用说明 + +使用说明分为如下两个章节: + +- 快速上手 + + 本章节是为刚接触 RT-Thread 的新手准备的使用说明,遵循简单的步骤即可将 RT-Thread 操作系统运行在该开发板上,看到实验效果 。 + +- 进阶使用 + + 本章节是为需要在 RT-Thread 操作系统上使用更多开发板资源的开发者准备的。通过使用 ENV 工具对 BSP 进行配置,可以开启更多板载资源,实现更多高级功能。 + +### 快速上手 + +本 BSP 为开发者提供 GCC 工程。下面介绍如何将系统运行起来。 + +#### 硬件连接 + +使用数据线连接开发板到 PC,使用USB转232连接USART0,打开电源开关。 + +#### 编译下载 + +在工程目录下输入`scons `命令编译工程,使用J-link/GD-Link下载程序到开发板。 + +#### 运行结果 + +下载程序成功之后,系统会自动运行,LED 闪烁。 + +连接开发板对应串口到 PC , 在终端工具里打开相应的串口(115200-8-1-N),复位设备后,可以看到 RT-Thread 的输出信息: + +```bash + \ | / +- RT - Thread Operating System + / | \ 4.1.1 build Jun 8 2022 00:49:01 + 2006 - 2022 Copyright by RT-Thread team +msh > +``` + +### 进阶使用 + +此 BSP 默认只开启了 GPIO 和 串口0的功能,如果需使用高级功能,需要利用 ENV 工具对BSP 进行配置,步骤如下: + +1. 在 bsp 下打开 env 工具。 + +2. 输入`menuconfig`命令配置工程,配置好之后保存退出。 + +3. 输入`pkgs --update`命令更新软件包。 + +4. 输入`scons `命令重新编译工程。 + +## 注意事项 + +暂无 + +## 联系人信息 + +维护人: + +- [BruceOu](https://github.com/Ouxiaolong/), 邮箱: \ No newline at end of file diff --git a/bsp/gd32/risc-v/gd32vf103v-eval/SConscript b/bsp/gd32/risc-v/gd32vf103v-eval/SConscript new file mode 100644 index 0000000000..945e23289a --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103v-eval/SConscript @@ -0,0 +1,16 @@ +# for module compiling +import os +Import('RTT_ROOT') +from building import * + +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/gd32/risc-v/gd32vf103v-eval/SConstruct b/bsp/gd32/risc-v/gd32vf103v-eval/SConstruct new file mode 100644 index 0000000000..cc841fc64a --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103v-eval/SConstruct @@ -0,0 +1,57 @@ +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.' + rtconfig.TARGET_EXT + +DefaultEnvironment(tools=[]) +env = Environment(tools = ['mingw'], + AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, + CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS, + AR = rtconfig.AR, ARFLAGS = '-rc', + CXX = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS, + LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) +env.PrependENVPath('PATH', rtconfig.EXEC_PATH) +env['ASCOM'] = env['ASPPCOM'] + +Export('RTT_ROOT') +Export('rtconfig') + +SDK_ROOT = os.path.abspath('./') + +if os.path.exists(SDK_ROOT + '/libraries'): + libraries_path_prefix = SDK_ROOT + '/libraries' +else: + libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries' + +SDK_LIB = libraries_path_prefix +Export('SDK_LIB') + +# prepare building environment +# objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) +objs = PrepareBuilding(env, RTT_ROOT) + +gd32_library = 'GD32VF103_Firmware_Library' +rtconfig.BSP_LIBRARY_TYPE = gd32_library + +# include libraries +objs.extend(SConscript(os.path.join(libraries_path_prefix, gd32_library, 'SConscript'))) + +# include drivers +objs.extend(SConscript(os.path.join(libraries_path_prefix, 'gd32_drivers', 'SConscript'))) + +# make a building +DoBuilding(TARGET, objs) \ No newline at end of file diff --git a/bsp/gd32/risc-v/gd32vf103v-eval/applications/SConscript b/bsp/gd32/risc-v/gd32vf103v-eval/applications/SConscript new file mode 100644 index 0000000000..ef1c39fd83 --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103v-eval/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/gd32/risc-v/gd32vf103v-eval/applications/main.c b/bsp/gd32/risc-v/gd32vf103v-eval/applications/main.c new file mode 100644 index 0000000000..feb7854091 --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103v-eval/applications/main.c @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-06-04 BruceOu first implementation + */ + +#include +#include +#include +#include + +/* defined the LED1 pin: PC0 */ +#define LED1_PIN GET_PIN(C, 0) + +int main(void) +{ + int count = 1; + + /* set LED1 pin mode to output */ + rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT); + + while (count++) + { + rt_pin_write(LED1_PIN, PIN_HIGH); + rt_thread_mdelay(500); + rt_pin_write(LED1_PIN, PIN_LOW); + rt_thread_mdelay(500); + } + + return RT_EOK; +} diff --git a/bsp/gd32/gd32103c-eval/board/Kconfig b/bsp/gd32/risc-v/gd32vf103v-eval/board/Kconfig similarity index 78% rename from bsp/gd32/gd32103c-eval/board/Kconfig rename to bsp/gd32/risc-v/gd32vf103v-eval/board/Kconfig index 3240e327b7..b24d929aa3 100644 --- a/bsp/gd32/gd32103c-eval/board/Kconfig +++ b/bsp/gd32/risc-v/gd32vf103v-eval/board/Kconfig @@ -1,16 +1,16 @@ menu "Hardware Drivers Config" -config SOC_SERIES_GD32F10x +config SOC_SERIES_GD32VF103V bool default y - -config SOC_GD32103V + +config SOC_GD32VF103V bool - select SOC_SERIES_GD32F10x + select SOC_SERIES_GD32VF103V select RT_USING_COMPONENTS_INIT select RT_USING_USER_MAIN default y - + menu "Onboard Peripheral Drivers" endmenu @@ -29,7 +29,7 @@ menu "On-chip Peripheral Drivers" if BSP_USING_UART config BSP_USING_UART0 bool "Enable UART0" - default n + default y config BSP_UART0_RX_USING_DMA bool "Enable UART0 RX DMA" @@ -39,7 +39,7 @@ menu "On-chip Peripheral Drivers" config BSP_USING_UART1 bool "Enable UART1" - default y + default n config BSP_UART1_RX_USING_DMA bool "Enable UART1 RX DMA" @@ -116,59 +116,64 @@ menu "On-chip Peripheral Drivers" default 25 endif - config BSP_USING_WDT - bool "Enable Watchdog Timer" - select RT_USING_WDT - default n - - config BSP_USING_RTC - bool "Enable Internal RTC" - select RT_USING_RTC - default n - - 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 - config BSP_USING_HWTIMER4 - bool "using hwtimer4" - default n - config BSP_USING_HWTIMER5 - bool "using hwtimer5" - default n - config BSP_USING_HWTIMER6 - bool "using hwtimer6" - default n - config BSP_USING_HWTIMER7 - bool "using hwtimer7" - 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" + bool "Enable ADC0" default n + config BSP_USING_ADC1 - bool "using adc1" + bool "Enable ADC1" + default n + + config BSP_USING_ADC2 + bool "Enable ADC2" default n endif + + menuconfig BSP_USING_TIM + bool "Enable timer" + default n + select RT_USING_HWTIMER + if BSP_USING_TIM + config BSP_USING_TIM10 + bool "Enable TIM10" + default n + + config BSP_USING_TIM11 + bool "Enable TIM11" + default n + + config BSP_USING_TIM12 + bool "Enable TIM13" + default n + endif + + menuconfig BSP_USING_ONCHIP_RTC + bool "Enable RTC" + select RT_USING_RTC + default n + if BSP_USING_ONCHIP_RTC + choice + prompt "Select clock source" + default BSP_RTC_USING_LSE + + config BSP_RTC_USING_LSE + bool "RTC USING LSE" + + config BSP_RTC_USING_LSI + bool "RTC USING LSI" + endchoice + endif + + config BSP_USING_WDT + bool "Enable Watchdog Timer" + select RT_USING_WDT + default n + source "../libraries/gd32_drivers/Kconfig" endmenu @@ -178,3 +183,4 @@ menu "Board extended module Drivers" endmenu endmenu + diff --git a/bsp/gd32/risc-v/gd32vf103v-eval/board/SConscript b/bsp/gd32/risc-v/gd32vf103v-eval/board/SConscript new file mode 100644 index 0000000000..25ebfdce5c --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103v-eval/board/SConscript @@ -0,0 +1,26 @@ +import os +import rtconfig +from building import * + +Import('SDK_LIB') + +cwd = GetCurrentDir() + +# add general drivers +src = Split(''' +board.c +''') + +path = [cwd] + +startup_path_prefix = SDK_LIB + +if rtconfig.CROSS_TOOL == 'gcc': + src += [startup_path_prefix + '/GD32VF103_Firmware_Library/RISCV/env_Eclipse/start.S'] + src += [startup_path_prefix + '/GD32VF103_Firmware_Library/RISCV/env_Eclipse/entry.S'] + +CPPDEFINES = ['GD32VF103V_EVAL'] +group = DefineGroup('Drivers', src, depend = [''], CPPPATH = path, CPPDEFINES = CPPDEFINES) + + +Return('group') diff --git a/bsp/gd32/risc-v/gd32vf103v-eval/board/board.c b/bsp/gd32/risc-v/gd32vf103v-eval/board/board.c new file mode 100644 index 0000000000..64b28a505d --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103v-eval/board/board.c @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-06-04 BruceOu first implementation + */ + +#include +#include +#include +#include "board.h" + +#ifdef RT_USING_SERIAL +#include +#endif + +/* System Tick Configuration */ +static void systick_config(rt_uint32_t ticks) +{ + /* set value */ + *(rt_uint64_t *) (TIMER_CTRL_ADDR + TIMER_MTIMECMP) = ticks; + /* enable interrupt */ + eclic_irq_enable(CLIC_INT_TMR, 0, 0); + /* clear value */ + *(rt_uint64_t *) (TIMER_CTRL_ADDR + TIMER_MTIME) = 0; +} + +/* This is the timer interrupt service routine. */ +void eclic_mtip_handler(void) +{ + /* clear value */ + *(rt_uint64_t *) (TIMER_CTRL_ADDR + TIMER_MTIME) = 0; + + /* enter interrupt */ + rt_interrupt_enter(); + /* tick increase */ + rt_tick_increase(); + + /* leave interrupt */ + rt_interrupt_leave(); +} + +/* fixed misaligned bug for qemu */ +void *__wrap_memset(void *s, int c, size_t n) +{ + return rt_memset(s, c, n); +} + +void rt_hw_board_init(void) +{ +extern void _init(void); + _init(); + systick_config(TIMER_FREQ / RT_TICK_PER_SECOND); + + /* USART driver initialization is open by default */ +#ifdef RT_USING_SERIAL + rt_hw_usart_init(); +#endif + + /* Set the shell console output device */ +#if defined(RT_USING_CONSOLE) && defined(RT_USING_DEVICE) + rt_console_set_device(RT_CONSOLE_DEVICE_NAME); +#endif + + /* Board underlying hardware initialization */ +#ifdef RT_USING_COMPONENTS_INIT + rt_components_board_init(); +#endif + +#ifdef RT_USING_HEAP + rt_system_heap_init((void *) HEAP_BEGIN, (void *) HEAP_END); +#endif + +} + +/******************** end of file *******************/ + diff --git a/bsp/gd32/risc-v/gd32vf103v-eval/board/board.h b/bsp/gd32/risc-v/gd32vf103v-eval/board/board.h new file mode 100644 index 0000000000..a169a57eb3 --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103v-eval/board/board.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-06-04 BruceOu first implementation + */ + +#ifndef __BOARD__ +#define __BOARD__ +#include "gd32vf103.h" +#include "drv_gpio.h" +extern void *_end; +extern void *_heap_end; +#define HEAP_BEGIN &_end +#define HEAP_END &_heap_end + +void rt_hw_board_init(void); + +#endif /* __BOARD__ */ + +/******************** end of file *******************/ diff --git a/bsp/gd32/risc-v/gd32vf103v-eval/board/gd32vf103_libopt.h b/bsp/gd32/risc-v/gd32vf103v-eval/board/gd32vf103_libopt.h new file mode 100644 index 0000000000..a04737a6f5 --- /dev/null +++ b/bsp/gd32/risc-v/gd32vf103v-eval/board/gd32vf103_libopt.h @@ -0,0 +1,62 @@ +/*! + \file gd32vf103_libopt.h + \brief library optional for gd32vf103 + + \version 2019-06-05, V1.0.0, demo for GD32VF103 + \version 2020-12-18, V1.1.0, demo for GD32VF103 +*/ + +/* + Copyright (c) 2020, GigaDevice Semiconductor Inc. + + Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +*/ + +#ifndef GD32VF103_LIBOPT_H +#define GD32VF103_LIBOPT_H + +#include "gd32vf103_adc.h" +#include "gd32vf103_bkp.h" +#include "gd32vf103_can.h" +#include "gd32vf103_crc.h" +#include "gd32vf103_dac.h" +#include "gd32vf103_dma.h" +#include "gd32vf103_eclic.h" +#include "gd32vf103_exmc.h" +#include "gd32vf103_exti.h" +#include "gd32vf103_fmc.h" +#include "gd32vf103_gpio.h" +#include "gd32vf103_i2c.h" +#include "gd32vf103_fwdgt.h" +#include "gd32vf103_dbg.h" +#include "gd32vf103_pmu.h" +#include "gd32vf103_rcu.h" +#include "gd32vf103_rtc.h" +#include "gd32vf103_spi.h" +#include "gd32vf103_timer.h" +#include "gd32vf103_usart.h" +#include "gd32vf103_wwdgt.h" +#include "n200_func.h" + +#endif /* GD32VF103_LIBOPT_H */ diff --git a/bsp/gd32/risc-v/gd32vf103v-eval/figures/board.jpg b/bsp/gd32/risc-v/gd32vf103v-eval/figures/board.jpg new file mode 100644 index 0000000000000000000000000000000000000000..997d98fbd52fd2fe825d6a08cad14acab478e99d GIT binary patch literal 115432 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Ɠ^l0`~|J%i0TG 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