From a8ed6fead25bcc143a7929726a6883977eb74895 Mon Sep 17 00:00:00 2001 From: armfly Date: Sun, 3 Nov 2019 05:33:32 +0800 Subject: [PATCH 1/2] =?UTF-8?q?1.GBK->UTF-8=202.TAB=20->=204=E4=B8=AA?= =?UTF-8?q?=E7=A9=BA=E6=A0=BC=203.=E5=AE=8C=E5=96=84=E9=AB=98=E4=BE=A7?= =?UTF-8?q?=E7=94=B5=E6=B5=81=E8=A1=A8=E5=8A=9F=E8=83=BD=EF=BC=9A=E7=94=B5?= =?UTF-8?q?=E5=8E=8B=E3=80=81=E7=94=B5=E6=B5=81=E3=80=81=E5=8A=9F=E7=8E=87?= =?UTF-8?q?=E3=80=81=E6=94=BE=E7=94=B5=E5=AE=B9=E9=87=8F=204.=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E4=BA=8C=E6=9E=81=E7=AE=A1=E6=B5=8B=E9=87=8F=EF=BC=8C?= =?UTF-8?q?=E5=92=8C=E7=94=B5=E9=98=BB=E6=B5=8B=E9=87=8F=E5=90=8C=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E7=95=8C=E9=9D=A2=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 - Doc/02.例程修改记录.txt | 8 + Libraries/FatFs/src/drivers/emmc_diskio_dma.c | 4 +- Project/MDK-ARM(uV5)/EventRecorderStub.scvd | 9 - Project/MDK-ARM(uV5)/hex2bin.exe | Bin 0 -> 75776 bytes Project/MDK-ARM(uV5)/project.uvguix.ASUS | 3619 ----------------- .../MDK-ARM(uV5)/project.uvguix.Administrator | 3591 ---------------- Project/MDK-ARM(uV5)/project.uvoptx | 28 +- Project/MDK-ARM(uV5)/startup_stm32h743xx.s | 2 +- ..._tool_app.bin => h7_tool_app(V1.03).bin} | Bin 597208 -> 598944 bytes User/app/inc/param.h | 31 +- User/app/src/main.c | 56 +- User/app/src/status_current_meter.c | 171 +- User/app/src/status_link_mode.c | 14 +- User/app/src/status_resistor_meter.c | 29 +- User/bsp/bsp.c | 4 +- User/bsp/src/bsp_cpu_adc.c | 16 +- User/bsp/src/bsp_spi_fast.c | 2 +- User/bsp/src/bsp_tft_st7789.c | 2 - User/bsp/src/bsp_uart_fifo.c | 7 +- User/bsp/src/bsp_user_lib.c | 1 - User/daplink/source/daplink/cmsis-dap/DAP.c | 2 +- User/daplink/source/daplink/cmsis-dap/DAP.h | 2 +- .../source/daplink/cmsis-dap/DAP_queue.c | 2 +- .../source/daplink/cmsis-dap/DAP_queue.h | 2 +- .../source/daplink/cmsis-dap/DAP_vendor.c | 4 +- .../source/daplink/cmsis-dap/JTAG_DP.c | 2 +- User/daplink/source/daplink/cmsis-dap/SWO.c | 2 +- User/daplink/source/daplink/cmsis-dap/SW_DP.c | 36 +- .../source/daplink/cmsis-dap/debug_ca.h | 2 +- .../source/daplink/cmsis-dap/debug_cm.h | 2 +- User/fonts/hz16.c | 13 + User/fonts/hz24.c | 54 +- User/lua/if/lua_if.c | 204 +- User/lua/if/lua_if.h | 18 +- User/lua/if/lua_if_adc.c | 64 +- User/lua/if/lua_if_adc.h | 18 +- User/lua/if/lua_if_dac.c | 88 +- User/lua/if/lua_if_dac.h | 18 +- User/lua/if/lua_if_extio.c | 78 +- User/lua/if/lua_if_extio.h | 18 +- User/lua/if/lua_if_fatfs.c | 70 +- User/lua/if/lua_if_fatfs.h | 18 +- User/lua/if/lua_if_gpio.c | 72 +- User/lua/if/lua_if_gpio.h | 18 +- User/lua/if/lua_if_i2c.c | 34 +- User/lua/if/lua_if_i2c.h | 18 +- User/lua/if/lua_if_qspi.c | 62 +- User/lua/if/lua_if_qspi.h | 18 +- User/lua/if/lua_if_register.c | 120 +- User/lua/if/lua_if_register.h | 18 +- User/lua/if/lua_if_spi.c | 6 +- User/lua/if/lua_if_spi.h | 18 +- User/lua/if/lua_if_swd.c | 100 +- User/lua/if/lua_if_swd.h | 18 +- User/lua/if/lua_if_tcp_udp.c | 6 +- User/lua/if/lua_if_tcp_udp.h | 18 +- User/lua/if/lua_if_tim.c | 8 +- User/lua/if/lua_if_tim.h | 18 +- User/modbus/modbus_slave.c | 14 +- User/usbd_mass_storage/usbd_it.c | 26 +- User/usbd_mass_storage/usbd_storage.c | 6 +- User/usbd_mass_storage/usbd_usr.c | 34 +- User/usbd_mass_storage/usbd_usr.h | 8 +- User/usbd_virtual_com/readme.txt | 27 +- User/usbd_virtual_com/usbd_cdc_interface.c | 78 +- User/usbd_virtual_com/usbd_cdc_interface.h | 12 +- User/usbd_virtual_com/usbd_it.c | 16 +- User/usbd_virtual_com/usbd_user.c | 36 +- User/usbd_virtual_com/usbd_user.h | 16 +- 删除目标文件(用于打包备份).bat | 3 +- 71 files changed, 1063 insertions(+), 8077 deletions(-) delete mode 100755 Project/MDK-ARM(uV5)/EventRecorderStub.scvd create mode 100644 Project/MDK-ARM(uV5)/hex2bin.exe delete mode 100755 Project/MDK-ARM(uV5)/project.uvguix.ASUS delete mode 100755 Project/MDK-ARM(uV5)/project.uvguix.Administrator rename Project/{h7_tool_app.bin => h7_tool_app(V1.03).bin} (80%) diff --git a/.gitignore b/.gitignore index 690e466..4ac5610 100644 --- a/.gitignore +++ b/.gitignore @@ -29,7 +29,6 @@ *.dylib # Executables -*.exe *.out *.app *.i*86 diff --git a/Doc/02.例程修改记录.txt b/Doc/02.例程修改记录.txt index 1172807..2201e38 100755 --- a/Doc/02.例程修改记录.txt +++ b/Doc/02.例程修改记录.txt @@ -3,6 +3,14 @@ 2. usbd_cdc_interface.h 文件中的宏定义移到c文件中,编译过,但是运行异常,奇怪。 3. qspi_read(), lua连续读取存在问题. 2019-07-07 +---------------------------------------------------------------------------- +2019-11-03 V1.03a +1.GBK->UTF-8 +2.TAB -> 4个空格 +3.完善高侧电流表功能:电压、电流、功率、放电容量 +4.增加二极管测量,和电阻测量同一个界面。 + + ---------------------------------------------------------------------------- 2019-10-20 V1.02 1.lua脚本增加bsp_GetRunTimer等时间函数,方便统计时间 diff --git a/Libraries/FatFs/src/drivers/emmc_diskio_dma.c b/Libraries/FatFs/src/drivers/emmc_diskio_dma.c index 243e9a0..6f5f92e 100755 --- a/Libraries/FatFs/src/drivers/emmc_diskio_dma.c +++ b/Libraries/FatFs/src/drivers/emmc_diskio_dma.c @@ -171,7 +171,7 @@ DRESULT SD_read(BYTE lun, BYTE *buff, DWORD sector, UINT count) uint32_t alignedAddr; #endif -#if 0 /* DMAģʽ */ +#if 0 /* 非DMA模式 */ if(BSP_MMC_ReadBlocks((uint32_t *) buff, (uint32_t) (sector), count, 1000) == MMC_OK) { res = RES_OK; @@ -181,7 +181,7 @@ DRESULT SD_read(BYTE lun, BYTE *buff, DWORD sector, UINT count) res = RES_ERROR; } return res; -#else /* DMAģʽ */ +#else /* DMA模式 */ if(BSP_MMC_ReadBlocks_DMA((uint32_t*)buff, (uint32_t) (sector), count) == MMC_OK) diff --git a/Project/MDK-ARM(uV5)/EventRecorderStub.scvd b/Project/MDK-ARM(uV5)/EventRecorderStub.scvd deleted file mode 100755 index 0fb3ee5..0000000 --- a/Project/MDK-ARM(uV5)/EventRecorderStub.scvd +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/Project/MDK-ARM(uV5)/hex2bin.exe b/Project/MDK-ARM(uV5)/hex2bin.exe new file mode 100644 index 0000000000000000000000000000000000000000..79e50d4c2ba56a107504c226196afdeb9ccc39fe GIT binary patch literal 75776 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 z - - - -6.1 - -
### uVision Project, (C) Keil Software
- - - F:\MyWork\01.开发板\H7-TOOL\04.STM32软件\HT_App\User\app\inc - - - - - - - 38003 - Registers - 140 141 - - - 346 - Code Coverage - 770 160 - - - 204 - Performance Analyzer - 930 - - - - - - 35141 - Event Statistics - - 200 50 700 - - - 1506 - Symbols - - 64 64 64 - - - 1936 - Watch 1 - - 200 133 133 - - - 1937 - Watch 2 - - 200 133 133 - - - 1935 - Call Stack + Locals - - 200 133 133 - - - 2506 - Trace Data - - 75 135 130 95 70 230 200 150 - - - 466 - Source Browser - *** Not Enabled *** - 445 - 148 - - - - - - - - 0 - 0 - 0 - 50 - 16 - - - - - - - 44 - 2 - 3 - - -1 - -1 - - - -1 - -1 - - - 16 - 123 - 1049 - 856 - - - - 0 - - 268 - 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000100000000000000010000003D443A5C48372D544F4F4C5F53544D333248375F4170705C50726F6A6563745C4D444B2D41524D28755635295C68372D746F6F6C5F64656275672E736374000000001168372D746F6F6C5F64656275672E73637400000000C5D4F200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000002701000066000000000600000F020000 - - - - 0 - Build - - -1 - -1 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - C40000004F00000070040000BD000000 - - - 16 - C40000006600000070040000D4000000 - - - - 1005 - 1005 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006600000020010000F5020000 - - - 16 - 58FFFFFFA40100008300000063040000 - - - - 109 - 109 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006600000020010000F5020000 - - - 16 - 58FFFFFFA40100008300000063040000 - - - - 1465 - 1465 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - 03000000AC0100006D040000FE010000 - - - 16 - 9C030000660000006B040000AB020000 - - - - 1466 - 1466 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - 03000000AC0100006D040000FE010000 - - - 16 - 9C030000660000006B040000AB020000 - - - - 1467 - 1467 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - 03000000AC0100006D040000FE010000 - - - 16 - 9C030000660000006B040000AB020000 - - - - 1468 - 1468 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - 03000000AC0100006D040000FE010000 - - - 16 - 9C030000660000006B040000AB020000 - - - - 1506 - 1506 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 1913 - 1913 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - C7000000660000006D040000A4000000 - - - 16 - 8A000000A1000000C20200000F010000 - - - - 1935 - 1935 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - 03000000AC0100006D040000FE010000 - - - 16 - 9C030000660000006B040000AB020000 - - - - 1936 - 1936 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - 03000000AC0100006D040000FE010000 - - - 16 - 9C030000660000006B040000AB020000 - - - - 1937 - 1937 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - 03000000AC0100006D040000FE010000 - - - 16 - 9C030000660000006B040000AB020000 - - - - 1939 - 1939 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - 03000000AC0100006D040000FE010000 - - - 16 - 9C030000660000006B040000AB020000 - - - - 1940 - 1940 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - 03000000AC0100006D040000FE010000 - - - 16 - 9C030000660000006B040000AB020000 - - - - 1941 - 1941 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - 03000000AC0100006D040000FE010000 - - - 16 - 9C030000660000006B040000AB020000 - - - - 1942 - 1942 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - 03000000AC0100006D040000FE010000 - - - 16 - 9C030000660000006B040000AB020000 - - - - 195 - 195 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006600000020010000F5020000 - - - 16 - 58FFFFFFA40100008300000063040000 - - - - 196 - 196 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006600000020010000F5020000 - - - 16 - 58FFFFFFA40100008300000063040000 - - - - 197 - 197 - 1 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 2A01000013020000FD050000F5020000 - - - 16 - C4000000EA020000BD05000099030000 - - - - 198 - 198 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 00000000950100007004000017020000 - - - 16 - 8A000000A1000000C20200000F010000 - - - - 199 - 199 - 1 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 2A01000013020000FD050000F5020000 - - - 16 - C4000000EA020000BD05000099030000 - - - - 203 - 203 - 0 - 0 - 0 - 0 - 32767 - 0 - 8192 - 0 - - 16 - C7000000660000006D040000A4000000 - - - 16 - 8A000000A1000000C20200000F010000 - - - - 204 - 204 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - C7000000660000006D040000A4000000 - - - 16 - 8A000000A1000000C20200000F010000 - - - - 221 - 221 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 00000000000000000000000000000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 2506 - 2506 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 2507 - 2507 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - 03000000AC0100006D040000FE010000 - - - 16 - 9C030000660000006B040000AB020000 - - - - 343 - 343 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - C7000000660000006D040000A4000000 - - - 16 - 8A000000A1000000C20200000F010000 - - - - 346 - 346 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - C7000000660000006D040000A4000000 - - - 16 - 8A000000A1000000C20200000F010000 - - - - 35141 - 35141 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - C7000000660000006D040000A4000000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 35824 - 35824 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - C7000000660000006D040000A4000000 - - - 16 - 8A000000A1000000C20200000F010000 - - - - 35885 - 35885 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 35886 - 35886 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 35887 - 35887 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 35888 - 35888 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 35889 - 35889 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 35890 - 35890 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 35891 - 35891 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 35892 - 35892 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 35893 - 35893 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 35894 - 35894 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 35895 - 35895 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 35896 - 35896 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 35897 - 35897 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 35898 - 35898 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 35899 - 35899 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 35900 - 35900 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 35901 - 35901 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 35902 - 35902 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 35903 - 35903 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 35904 - 35904 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 35905 - 35905 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 38003 - 38003 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006600000020010000F5020000 - - - 16 - 58FFFFFFA40100008300000063040000 - - - - 38007 - 38007 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 2A01000013020000FD050000F5020000 - - - 16 - C4000000EA020000BD05000099030000 - - - - 436 - 436 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 2A01000013020000FD050000F5020000 - - - 16 - C4000000EA020000BD05000099030000 - - - - 437 - 437 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - 03000000AC0100006D040000FE010000 - - - 16 - 9C030000660000006B040000AB020000 - - - - 440 - 440 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - 03000000AC0100006D040000FE010000 - - - 16 - 9C030000660000006B040000AB020000 - - - - 463 - 463 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 2A01000013020000FD050000F5020000 - - - 16 - C4000000EA020000BD05000099030000 - - - - 466 - 466 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 2A01000013020000FD050000F5020000 - - - 16 - C4000000EA020000BD05000099030000 - - - - 470 - 470 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - C7000000660000006D040000A4000000 - - - 16 - 8A000000A1000000C20200000F010000 - - - - 50000 - 50000 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 50001 - 50001 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 50002 - 50002 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 50003 - 50003 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 50004 - 50004 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 50005 - 50005 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 50006 - 50006 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 50007 - 50007 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 50008 - 50008 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 50009 - 50009 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 50010 - 50010 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 50011 - 50011 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 50012 - 50012 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 50013 - 50013 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 50014 - 50014 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 50015 - 50015 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 50016 - 50016 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 50017 - 50017 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 50018 - 50018 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 50019 - 50019 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - B3030000660000006D0400008C010000 - - - 16 - 8A000000A10000004A01000041010000 - - - - 59392 - 59392 - 1 - 0 - 0 - 0 - 966 - 0 - 8192 - 0 - - 16 - 0000000000000000D10300001C000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 59393 - 0 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 000000000E0300000006000021030000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 59399 - 59399 - 1 - 0 - 0 - 0 - 476 - 0 - 8192 - 1 - - 16 - 0A0000001C000000F101000038000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 59400 - 59400 - 0 - 0 - 0 - 0 - 612 - 0 - 8192 - 2 - - 16 - 00000000380000006F02000054000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 824 - 824 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - 03000000AC0100006D040000FE010000 - - - 16 - 9C030000660000006B040000AB020000 - - - - 3374 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFC4000000BD00000070040000C1000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000C40000006600000070040000D4000000C40000004F00000070040000BD0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFAC0300004F000000B0030000A5010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000B00300006600000070040000BC010000B00300004F00000070040000A501000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000080000000000000FFFFFFFFFFFFFFFF0000000091010000700400009501000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB0900000180008000000000000000000000AC010000700400002E0200000000000095010000700400001702000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF38020000950100003C0200001702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF27010000F801000000060000FC01000001000000010000100400000001000000E1FDFFFF9500000000000000000000000000000001000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000010000002701000013020000000600002503000027010000FC010000000600000E0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF24536F757263652042726F77736572202D202A2A2A204E6F7420456E61626C6564202A2A2A00000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000010000001000000FFFFFFFFFFFFFFFF230100004F000000270100000E03000001000000020000100400000001000000000000000000000000000000000000000000000001000000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000660000002301000025030000000000004F000000230100000E0300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000000000000000000 - - - 59392 - File - - 2914 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000D45535033325F456E7465724154960000000000000014000D45535033325F456E74657241540D6273705F496E697445535033320B4D696E694170705F494438195243435F53504449465258434C4B534F555243455F504C4C331948414C5F52434345785F506572697068434C4B436F6E6669671152434345785F504C4C335F436F6E66696709424545505F53746F70036E74631652454730335F43414C49425F4E54435F5245535F59341652454730335F43414C49425F4E54435F5245535F58310941646353756D417667155343414E5F4D4F44455F53414D504C455F53495A450C546162656C42756653697A6504C5C5D0F203696E740D6273705F4765744164634176670B6C75615F53657454564343087365745F7476636311577269746552656756616C75655F303648063078303146460000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 - - - 1423 - 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 - - - 1423 - 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 - - - - 59399 - Build - - 998 - 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000013466C617368A3A830783038303230303030A3A99600000000000000010013466C617368A3A830783038303230303030A3A9000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 - - - 583 - 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 - - - 583 - 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 - - - - 59400 - Debug - - 2373 - 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 - - - 898 - 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 - - - 898 - 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 - - - - 0 - 1536 - 864 - - - - 1 - Debug - - -1 - -1 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 100100004F000000D004000091000000 - - - 16 - 1001000066000000D0040000A8000000 - - - - 1005 - 1005 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006600000024010000F5020000 - - - 16 - BEFFFFFFA2010000C200000061040000 - - - - 109 - 109 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006600000024010000F5020000 - - - 16 - BEFFFFFFA2010000C200000061040000 - - - - 1465 - 1465 - 1 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - B904000066000000FD050000F5020000 - - - 16 - AC050000A40100007B060000E9030000 - - - - 1466 - 1466 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - B904000066000000FD050000F5020000 - - - 16 - AC050000A40100007B060000E9030000 - - - - 1467 - 1467 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - B904000066000000FD050000F5020000 - - - 16 - AC050000A40100007B060000E9030000 - - - - 1468 - 1468 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - B904000066000000FD050000F5020000 - - - 16 - AC050000A40100007B060000E9030000 - - - - 1506 - 1506 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 1913 - 1913 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 1301000066000000CD04000078000000 - - - 16 - BE000000D5000000F602000043010000 - - - - 1935 - 1935 - 1 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - B904000066000000FD050000F5020000 - - - 16 - AC050000A40100007B060000E9030000 - - - - 1936 - 1936 - 1 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - B904000066000000FD050000F5020000 - - - 16 - AC050000A40100007B060000E9030000 - - - - 1937 - 1937 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - B904000066000000FD050000F5020000 - - - 16 - AC050000A40100007B060000E9030000 - - - - 1939 - 1939 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - B904000066000000FD050000F5020000 - - - 16 - AC050000A40100007B060000E9030000 - - - - 1940 - 1940 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - B904000066000000FD050000F5020000 - - - 16 - AC050000A40100007B060000E9030000 - - - - 1941 - 1941 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - B904000066000000FD050000F5020000 - - - 16 - AC050000A40100007B060000E9030000 - - - - 1942 - 1942 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - B904000066000000FD050000F5020000 - - - 16 - AC050000A40100007B060000E9030000 - - - - 195 - 195 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006600000024010000F5020000 - - - 16 - BEFFFFFFA2010000C200000061040000 - - - - 196 - 196 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006600000024010000F5020000 - - - 16 - BEFFFFFFA2010000C200000061040000 - - - - 197 - 197 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 2E0100004F020000AF040000F5020000 - - - 16 - BE000000D5000000F602000043010000 - - - - 198 - 198 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 00000000B7010000D004000039020000 - - - 16 - BE000000D5000000F602000043010000 - - - - 199 - 199 - 1 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 2B0100004C020000B20400000E030000 - - - 16 - BE000000D5000000F602000043010000 - - - - 203 - 203 - 0 - 0 - 0 - 0 - 32767 - 0 - 8192 - 0 - - 16 - 1301000066000000CD04000078000000 - - - 16 - BE000000D5000000F602000043010000 - - - - 204 - 204 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 1301000066000000CD04000078000000 - - - 16 - BE000000D5000000F602000043010000 - - - - 221 - 221 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 00000000000000000000000000000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 2506 - 2506 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 2507 - 2507 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - B904000066000000FD050000F5020000 - - - 16 - AC050000A40100007B060000E9030000 - - - - 343 - 343 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 1301000066000000CD04000078000000 - - - 16 - BE000000D5000000F602000043010000 - - - - 346 - 346 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 1301000066000000CD04000078000000 - - - 16 - BE000000D5000000F602000043010000 - - - - 35141 - 35141 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 1301000066000000CD04000078000000 - - - 16 - BE000000D50000007E01000075010000 - - - - 35824 - 35824 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 1301000066000000CD04000078000000 - - - 16 - BE000000D5000000F602000043010000 - - - - 35885 - 35885 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 35886 - 35886 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 35887 - 35887 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 35888 - 35888 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 35889 - 35889 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 35890 - 35890 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 35891 - 35891 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 35892 - 35892 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 35893 - 35893 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 35894 - 35894 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 35895 - 35895 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 35896 - 35896 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 35897 - 35897 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 35898 - 35898 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 35899 - 35899 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 35900 - 35900 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 35901 - 35901 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 35902 - 35902 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 35903 - 35903 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 35904 - 35904 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 35905 - 35905 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 38003 - 38003 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006600000024010000F5020000 - - - 16 - BEFFFFFFA2010000C200000061040000 - - - - 38007 - 38007 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 2E0100004F020000AF040000F5020000 - - - 16 - BE000000D5000000F602000043010000 - - - - 436 - 436 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 2E0100004F020000AF040000F5020000 - - - 16 - BE000000D5000000A101000091020000 - - - - 437 - 437 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - B904000066000000FD050000F5020000 - - - 16 - AC050000A40100007B060000E9030000 - - - - 440 - 440 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - B904000066000000FD050000F5020000 - - - 16 - AC050000A40100007B060000E9030000 - - - - 463 - 463 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 2E0100004F020000AF040000F5020000 - - - 16 - BE000000D5000000A101000091020000 - - - - 466 - 466 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 2E0100004F020000AF040000F5020000 - - - 16 - BE000000D5000000A101000091020000 - - - - 470 - 470 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 1301000066000000CD04000078000000 - - - 16 - BE000000D5000000F602000043010000 - - - - 50000 - 50000 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 50001 - 50001 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 50002 - 50002 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 50003 - 50003 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 50004 - 50004 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 50005 - 50005 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 50006 - 50006 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 50007 - 50007 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 50008 - 50008 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 50009 - 50009 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 50010 - 50010 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 50011 - 50011 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 50012 - 50012 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 50013 - 50013 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 50014 - 50014 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 50015 - 50015 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 50016 - 50016 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 50017 - 50017 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 50018 - 50018 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 50019 - 50019 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - F103000066000000AF0400001B020000 - - - 16 - BE000000D50000007E01000075010000 - - - - 59392 - 59392 - 1 - 0 - 0 - 0 - 494 - 0 - 8192 - 0 - - 16 - 0000000000000000D10300001C000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 59393 - 0 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 000000000E0300000006000021030000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 59399 - 59399 - 0 - 0 - 0 - 0 - 476 - 0 - 8192 - 1 - - 16 - 000000001C000000E701000038000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 59400 - 59400 - 1 - 0 - 0 - 0 - 612 - 0 - 8192 - 2 - - 16 - 000000001C0000006F02000038000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 824 - 824 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - B904000066000000FD050000F5020000 - - - 16 - AC050000A40100007B060000E9030000 - - - - 3526 - 000000000C000000000000000020000000000000FFFFFFFFFFFFFFFF1001000091000000D0040000950000000000000001000000040000000100000094FFFFFFED000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E6500200000000000001001000066000000D0040000A8000000100100004F000000D0040000910000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFEA0300004F000000EE030000340200000000000002000000040000000100000059FCFFFF4601000000000000000000000000000001000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000EE03000066000000B20400004B020000EE0300004F000000B20400003402000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF054750494F49000000003F8C000001000000FFFFFFFFFFFFFFFF054750494F4A00000000408C000001000000FFFFFFFFFFFFFFFF054750494F4100000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000002000000000000000000000002000000FFFFFFFFD20400004F000000D6040000FF01000000000000020000000400000000000000000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000080000000000000FFFFFFFFFFFFFFFF00000000B3010000D0040000B701000000000000010000000400000001000000000000000000000000000000000000000000000001000000C60000000000000001000000000000000000000001000000FFFFFFFF000300008C020000040300000E03000000000000020000000400000000000000000000000000000000000000000000000000000001000000C600000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF2B01000034020000B20400003802000001000000010000100400000001000000C2FDFFFF76000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000010000002B0100004F020000B2040000250300002B01000038020000B20400000E0300000000000040820056060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFF01000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000040000001000000FFFFFFFFFFFFFFFFB20400004F000000B60400000E03000001000000020000100400000001000000BBFCFFFFA801000000000000000000000000000001000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800040000001000000B6040000660000000006000025030000B60400004F000000000600000E03000000000000404100560F0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000001000000FFFFFFFF8F07000001000000FFFFFFFF8F070000000000000010000001000000FFFFFFFFFFFFFFFF270100004F0000002B0100000E03000001000000020000100400000001000000B2FEFFFF5903000000000000000000000000000001000000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000660000002701000025030000000000004F000000270100000E0300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000000000000000000 - - - 59392 - File - - 2855 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000036E746396000000000000001400036E7463000C43616C63756C4E74635265730C43616C63756C5265665265731652454730335F43414C49425F4E54435F5245535F59341652454730335F43414C49425F4E54435F5245535F58310941646353756D417667155343414E5F4D4F44455F53414D504C455F53495A450C546162656C42756653697A6504C5C5D0F203696E740D6273705F4765744164634176670B6C75615F53657454564343087365745F7476636311577269746552656756616C75655F30364806307830314646063078303030390C52454730335F5933315F313604202D2D2012555342445F48616E646C65547970654465660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000300150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65EE010000 - - - 1423 - 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 - - - 1423 - 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 - - - - 59399 - Build - - 955 - 00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0000000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000000002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050FFFFFFFF00960000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000000240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 - - - 583 - 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 - - - 583 - 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 - - - - 59400 - Debug - - 2362 - 00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020000002D0000000000000000000000000000000001000000010000000180F07F0000020000002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000020000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 - - - 898 - 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 - - - 898 - 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 - - - - 0 - 1536 - 864 - - - - - - 1 - 0 - - 100 - 0 - - D:\H7-TOOL_STM32H7_App\Project\MDK-ARM(uV5)\h7-tool_debug.sct - 30 - 1 - 12 - 1 - - 0 - - - - -
diff --git a/Project/MDK-ARM(uV5)/project.uvguix.Administrator b/Project/MDK-ARM(uV5)/project.uvguix.Administrator deleted file mode 100755 index 8ddba39..0000000 --- a/Project/MDK-ARM(uV5)/project.uvguix.Administrator +++ /dev/null @@ -1,3591 +0,0 @@ - - - - -6.1 - -
### uVision Project, (C) Keil Software
- - - - - - 38003 - Registers - 142 143 - - - 346 - Code Coverage - 1010 160 - - - 204 - Performance Analyzer - 1170 - - - - - - 1506 - Symbols - - 80 80 80 - - - 1936 - Watch 1 - - 200 133 133 - - - 1937 - Watch 2 - - 200 133 133 - - - 1935 - Call Stack + Locals - - 200 133 133 - - - 2506 - Trace Data - - 75 135 130 95 70 230 200 150 - - - 466 - Source Browser - *** Not Enabled *** - 129 - 43 - - - - - - - - 0 - 0 - 0 - 50 - 16 - - - - - - - 44 - 2 - 3 - - -32000 - -32000 - - - -1 - -1 - - - 0 - -7 - 1927 - 1047 - - - - 0 - - 60 - 010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000000000000 - - - - 0 - Build - - -1 - -1 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - F40000004F00000090050000DF000000 - - - 16 - F40000006600000090050000F6000000 - - - - 1005 - 1005 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006600000024010000CD030000 - - - 16 - 32FFFFFF090200009900000066040000 - - - - 109 - 109 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006600000024010000CD030000 - - - 16 - 32FFFFFF090200009900000066040000 - - - - 1465 - 1465 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D050000A4020000 - - - 16 - BE000000D50000008603000065010000 - - - - 1466 - 1466 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D050000A4020000 - - - 16 - BE000000D50000008603000065010000 - - - - 1467 - 1467 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D050000A4020000 - - - 16 - BE000000D50000008603000065010000 - - - - 1468 - 1468 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D050000A4020000 - - - 16 - BE000000D50000008603000065010000 - - - - 1506 - 1506 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 1913 - 1913 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - F7000000660000008D050000C6000000 - - - 16 - BE000000D50000008603000065010000 - - - - 1935 - 1935 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 03000000300200008D050000A4020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 1936 - 1936 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D050000A4020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 1937 - 1937 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D050000A4020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 1939 - 1939 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D050000A4020000 - - - 16 - BE000000D50000008603000065010000 - - - - 1940 - 1940 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D050000A4020000 - - - 16 - BE000000D50000008603000065010000 - - - - 1941 - 1941 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D050000A4020000 - - - 16 - BE000000D50000008603000065010000 - - - - 1942 - 1942 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D050000A4020000 - - - 16 - BE000000D50000008603000065010000 - - - - 195 - 195 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006600000024010000CD030000 - - - 16 - 32FFFFFF090200009900000066040000 - - - - 196 - 196 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006600000024010000CD030000 - - - 16 - 32FFFFFF090200009900000066040000 - - - - 197 - 197 - 1 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 2E010000A10200007D070000CD030000 - - - 16 - 4C0100008A030000BE07000031040000 - - - - 198 - 198 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 000000001902000090050000BD020000 - - - 16 - BE000000D50000008603000065010000 - - - - 199 - 199 - 1 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 2E010000A10200007D070000CD030000 - - - 16 - 4C0100008A030000BE07000031040000 - - - - 203 - 203 - 0 - 0 - 0 - 0 - 32767 - 0 - 8192 - 0 - - 16 - F7000000660000008D050000C6000000 - - - 16 - BE000000D50000008603000065010000 - - - - 204 - 204 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - F7000000660000008D050000C6000000 - - - 16 - BE000000D50000008603000065010000 - - - - 221 - 221 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 00000000000000000000000000000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 2506 - 2506 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 2507 - 2507 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D050000A4020000 - - - 16 - BE000000D50000008603000065010000 - - - - 343 - 343 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - F7000000660000008D050000C6000000 - - - 16 - BE000000D50000008603000065010000 - - - - 346 - 346 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - F7000000660000008D050000C6000000 - - - 16 - BE000000D50000008603000065010000 - - - - 35141 - 35141 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - F7000000660000008D050000C6000000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 35824 - 35824 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - F7000000660000008D050000C6000000 - - - 16 - BE000000D50000008603000065010000 - - - - 35885 - 35885 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 35886 - 35886 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 35887 - 35887 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 35888 - 35888 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 35889 - 35889 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 35890 - 35890 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 35891 - 35891 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 35892 - 35892 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 35893 - 35893 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 35894 - 35894 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 35895 - 35895 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 35896 - 35896 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 35897 - 35897 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 35898 - 35898 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 35899 - 35899 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 35900 - 35900 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 35901 - 35901 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 35902 - 35902 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 35903 - 35903 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 35904 - 35904 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 35905 - 35905 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 38003 - 38003 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006600000024010000CD030000 - - - 16 - 32FFFFFF090200009900000066040000 - - - - 38007 - 38007 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 2E010000A10200007D070000E7030000 - - - 16 - 4C0100008A030000BE07000031040000 - - - - 436 - 436 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 2E010000A10200007D070000E7030000 - - - 16 - 4C0100008A030000BE07000031040000 - - - - 437 - 437 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D050000A4020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 440 - 440 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D050000A4020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 463 - 463 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 2E010000A10200007D070000E7030000 - - - 16 - 4C0100008A030000BE07000031040000 - - - - 466 - 466 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 2E010000A10200007D070000E7030000 - - - 16 - 4C0100008A030000BE07000031040000 - - - - 470 - 470 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - F7000000660000008D050000C6000000 - - - 16 - BE000000D50000008603000065010000 - - - - 50000 - 50000 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 50001 - 50001 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 50002 - 50002 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 50003 - 50003 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 50004 - 50004 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 50005 - 50005 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 50006 - 50006 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 50007 - 50007 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 50008 - 50008 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 50009 - 50009 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 50010 - 50010 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 50011 - 50011 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 50012 - 50012 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 50013 - 50013 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 50014 - 50014 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 50015 - 50015 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 50016 - 50016 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 50017 - 50017 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 50018 - 50018 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 50019 - 50019 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 59392 - 59392 - 1 - 0 - 0 - 0 - 953 - 0 - 8192 - 0 - - 16 - 0000000000000000C40300001C000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 59393 - 0 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 00000000E603000080070000F9030000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 59399 - 59399 - 1 - 0 - 0 - 0 - 476 - 0 - 8192 - 2 - - 16 - 000000001C000000E701000038000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 59400 - 59400 - 0 - 0 - 0 - 0 - 612 - 0 - 8192 - 1 - - 16 - 000000001C0000006F02000038000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 824 - 824 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000300200008D050000A4020000 - - - 16 - BE000000D5000000AE010000A0010000 - - - - 3379 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF2B01000086020000800700008A0200000100000001000010040000000100000079FDFFFF0501000000000000000000000000000001000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000010000002B0100008702000080070000FD0300002B0100008A02000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF24536F757263652042726F77736572202D202A2A2A204E6F7420456E61626C6564202A2A2A00000000D201000001000000FFFFFFFFFFFFFFFF1346696E6420416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000010000001000000FFFFFFFFFFFFFFFF270100004F0000002B010000E60300000100000002000010040000000100000024FFFFFF3204000000000000000000000000000001000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000000000006600000027010000FD030000000000004F00000027010000E60300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000000000000000000 - - - 59392 - File - - 2565 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000400020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000004000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000004000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000400000000000000000000000000000000000001000000010000009600000002002050000000000F6273705F537069427573456E746572960000000000000014000C46535F564F4C554D455F5344000F445244595F49525148616E646C65720F425553595F49525148616E646C657209425553595F4952516E075F454E414C424506454E414C4245144750494F5F4D4F44455F49545F46414C4C494E470F4750494F5F4D4F44455F494E5055540344495F0B445244595F49535F4C4F5710544D373730355F5772697465427974650F544D373730355F526561644279746510544D373730355F5265616433427974650E544D373730355F5265616452656709746D5F7072696E7466067072696E74660D6273705F73706957726974653110544D373730355F526573657448617264134750494F5F4D4F44455F4F55545055545F50500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000004001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000 - - - 1423 - 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 - - - 1423 - 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 - - - - 59399 - Build - - 970 - 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000005466C6173689600000000000000010005466C617368000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 - - - 583 - 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 - - - 583 - 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 - - - - 59400 - Debug - - 2373 - 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 - - - 898 - 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 - - - 898 - 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 - - - - 0 - 1920 - 1080 - - - - 1 - Debug - - -1 - -1 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 0C0100004F000000D40500009D000000 - - - 16 - 0C01000066000000D4050000B4000000 - - - - 1005 - 1005 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000660000000501000091020000 - - - 16 - 70000000870000006001000052010000 - - - - 109 - 109 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000660000000501000091020000 - - - 16 - 70000000870000008C010000C7020000 - - - - 1465 - 1465 - 1 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - DB050000660000007D070000CD030000 - - - 16 - EA0300001102000086060000B5020000 - - - - 1466 - 1466 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - DB050000660000007D070000CD030000 - - - 16 - EA0300001102000086060000B5020000 - - - - 1467 - 1467 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - DB050000660000007D070000CD030000 - - - 16 - EA0300001102000086060000B5020000 - - - - 1468 - 1468 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - DB050000660000007D070000CD030000 - - - 16 - EA0300001102000086060000B5020000 - - - - 1506 - 1506 - 0 - 0 - 0 - 0 - 32767 - 0 - 16384 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 1913 - 1913 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 0F01000066000000D105000084000000 - - - 16 - 70000000870000003803000017010000 - - - - 1935 - 1935 - 1 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - DB050000660000007D070000CD030000 - - - 16 - EA0300001102000086060000B5020000 - - - - 1936 - 1936 - 1 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - DB050000660000007D070000CD030000 - - - 16 - EA0300001102000086060000B5020000 - - - - 1937 - 1937 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - DB050000660000007D070000CD030000 - - - 16 - EA0300001102000086060000B5020000 - - - - 1939 - 1939 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - DB050000660000007D070000CD030000 - - - 16 - EA0300001102000086060000B5020000 - - - - 1940 - 1940 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - DB050000660000007D070000CD030000 - - - 16 - EA0300001102000086060000B5020000 - - - - 1941 - 1941 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - DB050000660000007D070000CD030000 - - - 16 - EA0300001102000086060000B5020000 - - - - 1942 - 1942 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - DB050000660000007D070000CD030000 - - - 16 - EA0300001102000086060000B5020000 - - - - 195 - 195 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000660000000501000091020000 - - - 16 - 70000000870000008C010000C7020000 - - - - 196 - 196 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000660000000501000091020000 - - - 16 - 70000000870000008C010000C7020000 - - - - 197 - 197 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 030000006D030000D1050000CD030000 - - - 16 - 70000000870000003803000017010000 - - - - 198 - 198 - 1 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - 00000000AE020000D405000052030000 - - - 16 - 70000000870000003803000017010000 - - - - 199 - 199 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 000000006A030000D4050000E6030000 - - - 16 - 70000000870000003803000017010000 - - - - 203 - 203 - 1 - 0 - 0 - 0 - 32767 - 0 - 8192 - 0 - - 16 - 0C01000063000000D40500009D000000 - - - 16 - 70000000870000003803000017010000 - - - - 204 - 204 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 0F01000066000000D105000084000000 - - - 16 - 70000000870000003803000017010000 - - - - 221 - 221 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 00000000000000000000000000000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 2506 - 2506 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 2507 - 2507 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - DB050000660000007D070000CD030000 - - - 16 - EA0300001102000086060000B5020000 - - - - 343 - 343 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 0F01000066000000D105000084000000 - - - 16 - 70000000870000003803000017010000 - - - - 346 - 346 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 0F01000066000000D105000084000000 - - - 16 - 70000000870000003803000017010000 - - - - 35141 - 35141 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 0F01000066000000D105000084000000 - - - 16 - 70000000870000006001000052010000 - - - - 35824 - 35824 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 0F01000066000000D105000084000000 - - - 16 - 70000000870000003803000017010000 - - - - 35885 - 35885 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 35886 - 35886 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 35887 - 35887 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 35888 - 35888 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 35889 - 35889 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 35890 - 35890 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 35891 - 35891 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 35892 - 35892 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 35893 - 35893 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 35894 - 35894 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 35895 - 35895 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 35896 - 35896 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 35897 - 35897 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 35898 - 35898 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 35899 - 35899 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 35900 - 35900 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 35901 - 35901 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 35902 - 35902 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 35903 - 35903 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 35904 - 35904 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 35905 - 35905 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 38003 - 38003 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 03000000660000000501000091020000 - - - 16 - 70000000870000008C010000C7020000 - - - - 38007 - 38007 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006D030000D1050000CD030000 - - - 16 - 70000000870000003803000017010000 - - - - 436 - 436 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006D030000D1050000CD030000 - - - 16 - 70000000870000008C010000C7020000 - - - - 437 - 437 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - DB050000660000007D070000CD030000 - - - 16 - EA0300001102000086060000B5020000 - - - - 440 - 440 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - DB050000660000007D070000CD030000 - - - 16 - EA0300001102000086060000B5020000 - - - - 463 - 463 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006D030000D1050000CD030000 - - - 16 - 70000000870000008C010000C7020000 - - - - 466 - 466 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 030000006D030000D1050000CD030000 - - - 16 - 70000000870000008C010000C7020000 - - - - 470 - 470 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 0F01000066000000D105000084000000 - - - 16 - 70000000870000003803000017010000 - - - - 50000 - 50000 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 50001 - 50001 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 50002 - 50002 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 50003 - 50003 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 50004 - 50004 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 50005 - 50005 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 50006 - 50006 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 50007 - 50007 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 50008 - 50008 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 50009 - 50009 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 50010 - 50010 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 50011 - 50011 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 50012 - 50012 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 50013 - 50013 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 50014 - 50014 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 50015 - 50015 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 50016 - 50016 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 50017 - 50017 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 50018 - 50018 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 50019 - 50019 - 0 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - A3040000660000008D05000010020000 - - - 16 - 70000000870000006001000052010000 - - - - 59392 - 59392 - 1 - 0 - 0 - 0 - 953 - 0 - 8192 - 0 - - 16 - 0000000000000000C40300001C000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 59393 - 0 - 1 - 0 - 0 - 0 - 32767 - 0 - 4096 - 0 - - 16 - 00000000E603000080070000F9030000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 59399 - 59399 - 0 - 0 - 0 - 0 - 476 - 0 - 8192 - 1 - - 16 - 000000001C000000E701000038000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 59400 - 59400 - 1 - 0 - 0 - 0 - 612 - 0 - 8192 - 2 - - 16 - 000000001C0000006F02000038000000 - - - 16 - 0A0000000A0000006E0000006E000000 - - - - 824 - 824 - 0 - 0 - 0 - 0 - 32767 - 0 - 32768 - 0 - - 16 - DB050000660000007D070000CD030000 - - - 16 - EA0300001102000086060000B5020000 - - - - 3420 - 000000000C000000000000000020000001000000FFFFFFFFFFFFFFFF0C0100009D000000D4050000A10000000100000001000010040000000100000072FFFFFF56020000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E6500200000010000000C01000066000000D4050000B40000000C0100004F000000D40500009D0000000000000040280056080000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF080100004F0000000C010000AA0200000100000002000010040000000100000051FEFFFFC6050000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000000000006600000008010000C1020000000000004F00000008010000AA0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF00000000AA020000D4050000AE02000001000000010000100400000001000000000000000000000000000000000000000000000001000000C60000000000000001000000000000000000000001000000FFFFFFFFA1020000A5020000A50200004903000000000000020000000400000000000000000000000000000000000000000000000000000001000000C600000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000052030000D405000056030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000006D030000D4050000FD0300000000000056030000D4050000E60300000000000040820056060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF1346696E6420416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFF01000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000040000001000000FFFFFFFFFFFFFFFFD40500004F000000D8050000E6030000010000000200001004000000010000008DFBFFFFC800000000000000000000000000000001000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800040000001000000D80500006600000080070000FD030000D80500004F00000080070000E603000000000000404100560F0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF0500000000000000000000000000000000000000000000000000000001000000FFFFFFFF8F07000001000000FFFFFFFF8F070000000000000000000000000000 - - - 59392 - File - - 2588 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000135F5F48414C5F554152545F434C4541525F4954960000000000000013000E554152545F434C4541525F575546135F5F48414C5F554152545F434C4541525F49540F55534152545F4352335F57554649452155534152545F4352315F50454945207C2055534152545F4352315F52584E4549450B55617274566172496E69741948414C5F5541525445785F57616B65757043616C6C6261636B0657414B4555500474686973106273705F53657455617274506172616D0D48414C5F554152545F496E69740D52533438355F536574426175640A636F6D5365744261756407534554424155440E554152545F536574436F6E6669670568756172741055534152545F4352315F5458464549450F554152545F526563656976655F4954055F52584E451448414C5F554152545F5472616E736D69745F495400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000100150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000 - - - 1423 - 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 - - - 1423 - 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 - - - - 59399 - Build - - 955 - 00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0000000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000000002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050FFFFFFFF00960000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000000240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 - - - 583 - 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 - - - 583 - 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 - - - - 59400 - Debug - - 2362 - 00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000020000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 - - - 898 - 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 - - - 898 - 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 - - - - 0 - 1920 - 1080 - - - - -
diff --git a/Project/MDK-ARM(uV5)/project.uvoptx b/Project/MDK-ARM(uV5)/project.uvoptx index dfbc465..fe455f7 100755 --- a/Project/MDK-ARM(uV5)/project.uvoptx +++ b/Project/MDK-ARM(uV5)/project.uvoptx @@ -263,7 +263,7 @@ App - 1 + 0 0 0 0 @@ -439,7 +439,7 @@ BSP - 1 + 0 0 0 0 @@ -1963,7 +1963,7 @@ USB_Device_Library_Core - 0 + 1 0 0 0 @@ -2075,7 +2075,7 @@ USBD_Virtual_COM - 1 + 0 0 0 0 @@ -2083,7 +2083,7 @@ 13 144 1 - 0 + 1 0 0 ..\..\User\usbd_virtual_com\usbd_cdc_interface.c @@ -2143,7 +2143,7 @@ USBD_Mass Storage - 0 + 1 0 0 0 @@ -2627,7 +2627,7 @@ LwIP_PhyDrv - 0 + 1 0 0 0 @@ -2647,7 +2647,7 @@ LwIP_IF - 0 + 1 0 0 0 @@ -2715,7 +2715,7 @@ LwIP_HTTP - 0 + 1 0 0 0 @@ -2771,7 +2771,7 @@ LwIP_TCP - 0 + 1 0 0 0 @@ -2847,7 +2847,7 @@ Programmer - 0 + 1 0 0 0 @@ -2867,7 +2867,7 @@ Lua src 5.3.5 - 0 + 1 0 0 0 @@ -3435,7 +3435,7 @@ DAP_bsp - 0 + 1 0 0 0 @@ -3515,7 +3515,7 @@ DAP_Host - 0 + 1 0 0 0 diff --git a/Project/MDK-ARM(uV5)/startup_stm32h743xx.s b/Project/MDK-ARM(uV5)/startup_stm32h743xx.s index b625833..3b0a6a0 100755 --- a/Project/MDK-ARM(uV5)/startup_stm32h743xx.s +++ b/Project/MDK-ARM(uV5)/startup_stm32h743xx.s @@ -68,7 +68,7 @@ __Vectors DCD __initial_sp ; Top of Stack DCD MemManage_Handler ; MPU Fault Handler DCD BusFault_Handler ; Bus Fault Handler DCD UsageFault_Handler ; Usage Fault Handler - DCD 0x00000102 ; Reserved H7-TOOL APP̼汾 + DCD 0x00000103 ; Reserved H7-TOOL APP̼汾 DCD 0 ; Reserved DCD 0 ; Reserved DCD 0 ; Reserved diff --git a/Project/h7_tool_app.bin b/Project/h7_tool_app(V1.03).bin similarity index 80% rename from Project/h7_tool_app.bin rename to Project/h7_tool_app(V1.03).bin index 4d11444a084b45a617e4f7e4a55e413305a14428..75f0aadbd10fcc3cf971a3ff1e94cf543c21ae15 100644 GIT binary patch delta 48488 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 lm?k^NsN@f&u0~eILKyaGvu#XJ4P~-1-yAXPc9U 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 1MΩ"); } - LCD_DispStrEx(10, 50, buf, &tFont, 220, ALIGN_CENTER); + + /* 大致计算,不是很精确 */ + volt = 2.5f * g_tVar.NTCRes / (g_tVar.NTCRes + 5.1f); + curr = volt / g_tVar.NTCRes; + if (volt > 2.4f) + { + sprintf(buf, " 压降: > 2.4V"); + LCD_DispStrEx(10, 50 + 50, buf, &tFont, 220, ALIGN_LEFT); + + sprintf(buf, " 电流: %0.3fmA", curr); + LCD_DispStrEx(10, 50 + 50 + 24, buf, &tFont, 220, ALIGN_LEFT); + } + else + { + sprintf(buf, " 压降: %0.3fV", volt); + LCD_DispStrEx(10, 50 + 50, buf, &tFont, 220, ALIGN_LEFT); + + sprintf(buf, " 电流: %0.3fmA", curr); + LCD_DispStrEx(10, 50 + 50 + 24, buf, &tFont, 220, ALIGN_LEFT); + } } /***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/bsp/bsp.c b/User/bsp/bsp.c index db6267c..77825f9 100755 --- a/User/bsp/bsp.c +++ b/User/bsp/bsp.c @@ -421,7 +421,9 @@ void bsp_RunPer1ms(void) ********************************************************************************************************* */ extern void lwip_pro(void); -extern void lua_Poll(); +extern void lua_Poll(void); +extern void wifi_task(void); +extern void EXIO_ScanTask(void); void bsp_Idle(void) { /* --- 喂狗 */ diff --git a/User/bsp/src/bsp_cpu_adc.c b/User/bsp/src/bsp_cpu_adc.c index 211d01d..9a93bc7 100755 --- a/User/bsp/src/bsp_cpu_adc.c +++ b/User/bsp/src/bsp_cpu_adc.c @@ -2366,14 +2366,10 @@ float bsp_AdcToCH1Volt(float _adc) { float volt; - volt = CaculTwoPointFloat( + volt = CaculTwoPointFloat( g_tCalib.CH1[g_tDSO.Gain1].x1, g_tCalib.CH1[g_tDSO.Gain1].y1, g_tCalib.CH1[g_tDSO.Gain1].x2, g_tCalib.CH1[g_tDSO.Gain1].y2, - _adc); -// if (volt > (float)-0.020 && volt < (float)0.020) /* 0值.正负20mV以内自动归零 */ -// { -// volt = 0; -// } + _adc); return volt; } @@ -2389,14 +2385,10 @@ float bsp_AdcToCH2Volt(float _adc) { float volt; - volt = CaculTwoPointFloat( + volt = CaculTwoPointFloat( g_tCalib.CH2[g_tDSO.Gain2].x1, g_tCalib.CH2[g_tDSO.Gain2].y1, g_tCalib.CH2[g_tDSO.Gain2].x2, g_tCalib.CH2[g_tDSO.Gain2].y2, - _adc); -// if (volt > (float)-0.020 && volt < (float)0.020) /* 0值.正负20mV以内自动归零 */ -// { -// volt = 0; -// } + _adc); return volt; } diff --git a/User/bsp/src/bsp_spi_fast.c b/User/bsp/src/bsp_spi_fast.c index 6335e4b..ac9a86b 100755 --- a/User/bsp/src/bsp_spi_fast.c +++ b/User/bsp/src/bsp_spi_fast.c @@ -54,7 +54,7 @@ extern SPI_HandleTypeDef hspi2; void SWD_SendBitsOK(uint8_t _bits, uint32_t _data) { #if 1 - static uint8_t s_first = 1; + //static uint8_t s_first = 1; // if (s_first == 0) // { diff --git a/User/bsp/src/bsp_tft_st7789.c b/User/bsp/src/bsp_tft_st7789.c index e50edff..5b06a4a 100755 --- a/User/bsp/src/bsp_tft_st7789.c +++ b/User/bsp/src/bsp_tft_st7789.c @@ -287,8 +287,6 @@ static void ST7789_SendByteQuick(uint8_t data) /*写数据到 LCD 模块*/ void Lcd_WriteData(uint8_t data1) { - char i; - LCD_RS_1(); LCD_CS_0(); ST7789_SendByteQuick(data1); diff --git a/User/bsp/src/bsp_uart_fifo.c b/User/bsp/src/bsp_uart_fifo.c index 3d3d6d2..d888a17 100755 --- a/User/bsp/src/bsp_uart_fifo.c +++ b/User/bsp/src/bsp_uart_fifo.c @@ -189,7 +189,7 @@ static void UartVarInit(void); static void InitHardUart(void); static void UartSend(UART_T *_pUart, uint8_t *_ucaBuf, uint16_t _usLen); static uint8_t UartGetChar(UART_T *_pUart, uint8_t *_pByte); -static void UartIRQ(UART_T *_pUart); +//static void UartIRQ(UART_T *_pUart); void RS485_InitTXE(void); @@ -848,7 +848,7 @@ void bsp_SetUartParam(USART_TypeDef *Instance, uint32_t BaudRate, uint32_t Parit */ static void InitHardUart(void) { - GPIO_InitTypeDef GPIO_InitStruct; + // GPIO_InitTypeDef GPIO_InitStruct; RCC_PeriphCLKInitTypeDef RCC_PeriphClkInit; UART_HandleTypeDef UartHandle; @@ -1287,7 +1287,7 @@ void comPutRxFifo(COM_PORT_E _ucPort, uint8_t *_buf, uint16_t _len) * 返 回 值: 无 ********************************************************************************************************* */ -static void UartIRQ(UART_T *_pUart) +void UartIRQ(UART_T *_pUart) { uint32_t isrflags = READ_REG(_pUart->uart->ISR); uint32_t cr1its = READ_REG(_pUart->uart->CR1); @@ -1530,6 +1530,7 @@ int fgetc(FILE *f) // return (int)USART_ReceiveData(USART1); //#endif + return 0; } /***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/bsp/src/bsp_user_lib.c b/User/bsp/src/bsp_user_lib.c index 831552d..530bfd0 100755 --- a/User/bsp/src/bsp_user_lib.c +++ b/User/bsp/src/bsp_user_lib.c @@ -794,7 +794,6 @@ void FloatToBEBuf(float _f, uint8_t *_pBuf) { float f; uint8_t *p; - uint8_t buf[4]; f = _f; p = (uint8_t *)&f; diff --git a/User/daplink/source/daplink/cmsis-dap/DAP.c b/User/daplink/source/daplink/cmsis-dap/DAP.c index e66c70c..e963c26 100755 --- a/User/daplink/source/daplink/cmsis-dap/DAP.c +++ b/User/daplink/source/daplink/cmsis-dap/DAP.c @@ -1,4 +1,4 @@ -/** +/** * @file DAP.c * @brief Implementation of DAP.h * diff --git a/User/daplink/source/daplink/cmsis-dap/DAP.h b/User/daplink/source/daplink/cmsis-dap/DAP.h index 17143e3..a1f862a 100755 --- a/User/daplink/source/daplink/cmsis-dap/DAP.h +++ b/User/daplink/source/daplink/cmsis-dap/DAP.h @@ -1,4 +1,4 @@ -/** +/** * @file DAP.h * @brief Access to ARM DAP using CMSIS-DAP protocol * diff --git a/User/daplink/source/daplink/cmsis-dap/DAP_queue.c b/User/daplink/source/daplink/cmsis-dap/DAP_queue.c index 4f7e452..b26a064 100755 --- a/User/daplink/source/daplink/cmsis-dap/DAP_queue.c +++ b/User/daplink/source/daplink/cmsis-dap/DAP_queue.c @@ -1,4 +1,4 @@ -/** +/** * @file DAP_queue.c * @brief DAP processing queue * diff --git a/User/daplink/source/daplink/cmsis-dap/DAP_queue.h b/User/daplink/source/daplink/cmsis-dap/DAP_queue.h index 94d27c4..f081a53 100755 --- a/User/daplink/source/daplink/cmsis-dap/DAP_queue.h +++ b/User/daplink/source/daplink/cmsis-dap/DAP_queue.h @@ -1,4 +1,4 @@ -/** +/** * @file DAP_queue.h * @brief DAP processing queue * diff --git a/User/daplink/source/daplink/cmsis-dap/DAP_vendor.c b/User/daplink/source/daplink/cmsis-dap/DAP_vendor.c index 07527b1..16e0df1 100755 --- a/User/daplink/source/daplink/cmsis-dap/DAP_vendor.c +++ b/User/daplink/source/daplink/cmsis-dap/DAP_vendor.c @@ -1,4 +1,4 @@ -/* +/* * Copyright (c) 2013-2016 ARM Limited. All rights reserved. * * SPDX-License-Identifier: Apache-2.0 @@ -62,7 +62,7 @@ uint32_t DAP_ProcessVendorCommand(const uint8_t *request, uint8_t *response) { uint32_t num = (1U << 16) | 1U; *response++ = *request; // copy Command ID -#if 0 // armfly ʱ +#if 0 // armfly 临时屏蔽 switch (*request++) { // first byte in request is Command ID case ID_DAP_Vendor0: { const char *id_str = info_get_unique_id(); diff --git a/User/daplink/source/daplink/cmsis-dap/JTAG_DP.c b/User/daplink/source/daplink/cmsis-dap/JTAG_DP.c index 2008d05..87642f6 100755 --- a/User/daplink/source/daplink/cmsis-dap/JTAG_DP.c +++ b/User/daplink/source/daplink/cmsis-dap/JTAG_DP.c @@ -1,4 +1,4 @@ -/** +/** * @file JTAG_DP.c * @brief JTAG driver * diff --git a/User/daplink/source/daplink/cmsis-dap/SWO.c b/User/daplink/source/daplink/cmsis-dap/SWO.c index 897af7f..4cad178 100755 --- a/User/daplink/source/daplink/cmsis-dap/SWO.c +++ b/User/daplink/source/daplink/cmsis-dap/SWO.c @@ -1,4 +1,4 @@ -/* +/* * Copyright (c) 2013-2016 ARM Limited. All rights reserved. * * SPDX-License-Identifier: Apache-2.0 diff --git a/User/daplink/source/daplink/cmsis-dap/SW_DP.c b/User/daplink/source/daplink/cmsis-dap/SW_DP.c index f6605c3..9a87aa5 100755 --- a/User/daplink/source/daplink/cmsis-dap/SW_DP.c +++ b/User/daplink/source/daplink/cmsis-dap/SW_DP.c @@ -1,4 +1,4 @@ -/** +/** * @file SW_DP.c * @brief SWD driver * @@ -31,22 +31,22 @@ #include "DAP_config.h" #include "DAP.h" -#define SPI_MODE_ENABLE 1 /* 1 ʾSPIģʽ 0ʾGPIOģʽ */ +#define SPI_MODE_ENABLE 1 /* 1 表示SPI模式, 0表示GPIO模式 */ /* - SPI_BAUDRATEPRESCALER_4 = 50MHz SCKʱӣܹ - SPI_BAUDRATEPRESCALER_8 = 25MHz SCKʱӣȶд д2048ֽڣʱ5msЧٶ 800KB/s + SPI_BAUDRATEPRESCALER_4 = 50MHz SCK时钟,不能工作。 + SPI_BAUDRATEPRESCALER_8 = 25MHz SCK时钟,稳定读写。 写并读2048字节,耗时5ms,等效传输速度 800KB/s SPI_BAUDRATEPRESCALER_16 = 12.5MHz SPI_BAUDRATEPRESCALER_32 = 6.25MHz SPI_BAUDRATEPRESCALER_64 = 3.125MHz SPI_BAUDRATEPRESCALER_128 = 1.5625MHz - ʵST-LINK640K򣬲Ҫ9루CPUFLASHʱ£̺УҪ13롣 - H7-TOOL800KB/SٶȣSWDʱ1ɣʣµʱҪUSBͨźCPUЧʡ - SWDײʱŻѾûжıҪˣҲߵ1MB/SǶЧûжơ + 实测ST-LINK下载640K程序,擦除需要9秒(这是CPU的FLASH擦除时间较慢导致),编程和校验需要13秒。 + 按H7-TOOL的800KB/S的速度,SWD时序传输可以在1秒内完成,剩下的时间主要靠USB通信和CPU运算来提高效率。 + 因此在SWD底层时序上优化已经没有多大的必要了,也许可以提高到1MB/S。但是对整体效率没有多大改善。 */ -#define SPI_MODE_BAUD SPI_BAUDRATEPRESCALER_8 /* SPI_BAUDRATEPRESCALER_4 ȶ */ +#define SPI_MODE_BAUD SPI_BAUDRATEPRESCALER_8 /* SPI_BAUDRATEPRESCALER_4 不稳定 */ #define PIN_SWCLK_SET PIN_SWCLK_TCK_SET @@ -236,7 +236,7 @@ uint8_t SWD_Transfer(uint32_t request, uint32_t *data) } } -/********************************* armfly Żʱٶ ***************************/ +/********************************* armfly 优化时序速度 ***************************/ // SWD Transfer I/O // request: A[3:2] RnW APnDP // data: DATA[31:0] @@ -425,7 +425,7 @@ void SWD_DIO_OutDisable(void) { #if SPI_MODE_ENABLE == 1 SPI2->CR1 = SPI_CR1_SSI; - GPIOG->BSRRH = GPIO_PIN_9; /* PG9 = 0 / + GPIOG->BSRRH = GPIO_PIN_9; /* PG9 = 0 是输入 */ #else PIN_SWDIO_OUT_DISABLE(); #endif @@ -434,7 +434,7 @@ void SWD_DIO_OutDisable(void) void SWD_DIO_OutEnable(void) { #if SPI_MODE_ENABLE == 1 - GPIOG->BSRRL = GPIO_PIN_9; /* PG9 = 1 */ + GPIOG->BSRRL = GPIO_PIN_9; /* PG9 = 1 是输出 */ SPI2->CR1 = SPI_CR1_SSI | SPI_CR1_HDDIR; #else PIN_SWDIO_OUT_ENABLE(); @@ -472,7 +472,7 @@ void SWJ_Sequence (uint32_t count, const uint8_t *data) { if (rem) { - val = *(uint32_t *)data; /* ܶڴ */ + val = *(uint32_t *)data; /* 可能多访问内存 */ SWD_SendBits(rem, val); } } @@ -558,7 +558,7 @@ uint8_t SWD_TransferFastH7(uint32_t request, uint32_t *data) // if (ack == DAP_TRANSFER_OK) { /* OK response */ /* Data transfer */ - if (request & DAP_TRANSFER_RnW) /* ָ - 32 + 1 bit */ + if (request & DAP_TRANSFER_RnW) /* 读指令 - 32 + 1 bit */ { ack = SWD_ReadBits(3 + DAP_Data.swd_conf.turnaround); ack >>= DAP_Data.swd_conf.turnaround; @@ -625,7 +625,7 @@ uint8_t SWD_TransferFastH7(uint32_t request, uint32_t *data) return ((uint8_t)ack); } } - else // дָ + else // 写指令 { ack = SWD_ReadBits(3 + DAP_Data.swd_conf.turnaround + 1); ack >>= DAP_Data.swd_conf.turnaround; @@ -669,7 +669,7 @@ uint8_t SWD_TransferFastH7(uint32_t request, uint32_t *data) SWD_SendBits(16, val); SWD_SendBits(16 + 1 + DAP_Data.transfer.idle_cycles, (val >> 16) + (parity << 16)); - //PIN_SWDIO_OUT(1U); DZġ + //PIN_SWDIO_OUT(1U); 好像不是必须的。 return ((uint8_t)ack); } @@ -679,7 +679,7 @@ uint8_t SWD_TransferFastH7(uint32_t request, uint32_t *data) if ((ack == DAP_TRANSFER_WAIT) || (ack == DAP_TRANSFER_FAULT)) { - if (request & DAP_TRANSFER_RnW) /* 쳣 */ + if (request & DAP_TRANSFER_RnW) /* 读异常 */ { /* WAIT or FAULT response */ // if (DAP_Data.swd_conf.data_phase && ((request & DAP_TRANSFER_RnW) != 0U)) @@ -710,7 +710,7 @@ uint8_t SWD_TransferFastH7(uint32_t request, uint32_t *data) PIN_SWDIO_OUT(1U); return ((uint8_t)ack); } - else /* д쳣 - ǰ෢1clk */ + else /* 写异常 - 前面多发了1个clk */ { /* WAIT or FAULT response */ // if (DAP_Data.swd_conf.data_phase && ((request & DAP_TRANSFER_RnW) != 0U)) @@ -804,7 +804,7 @@ uint8_t SWD_TransferFastH7_ok(uint32_t request, uint32_t *data) if (ack == DAP_TRANSFER_OK) { /* OK response */ /* Data transfer */ - if (request & DAP_TRANSFER_RnW) /* ָ - 32 + 1 bit */ + if (request & DAP_TRANSFER_RnW) /* 读指令 - 32 + 1 bit */ { /* Read data */ val = 0U; diff --git a/User/daplink/source/daplink/cmsis-dap/debug_ca.h b/User/daplink/source/daplink/cmsis-dap/debug_ca.h index dbe085a..078e3af 100755 --- a/User/daplink/source/daplink/cmsis-dap/debug_ca.h +++ b/User/daplink/source/daplink/cmsis-dap/debug_ca.h @@ -1,4 +1,4 @@ -/** +/** * @file debug_ca.h * @brief Access to ARM DAP (Cortex-A) using CMSIS-DAP protocol * diff --git a/User/daplink/source/daplink/cmsis-dap/debug_cm.h b/User/daplink/source/daplink/cmsis-dap/debug_cm.h index 42a47a8..0e8a34b 100755 --- a/User/daplink/source/daplink/cmsis-dap/debug_cm.h +++ b/User/daplink/source/daplink/cmsis-dap/debug_cm.h @@ -1,4 +1,4 @@ -/** +/** * @file debug_cm.h * @brief Access to ARM DAP (Cortex-M) using CMSIS-DAP protocol * diff --git a/User/fonts/hz16.c b/User/fonts/hz16.c index dac2831..942a2a3 100755 --- a/User/fonts/hz16.c +++ b/User/fonts/hz16.c @@ -1232,6 +1232,19 @@ unsigned char const g_Hz16[] = { 0xCF,0xB5, 0x00,0xF8,0x3F,0x00,0x04,0x00,0x08,0x20,0x10,0x40,0x3F,0x80,0x01,0x00,0x06,0x10,// 系 // 0x18,0x08,0x7F,0xFC,0x01,0x04,0x09,0x20,0x11,0x10,0x21,0x08,0x45,0x04,0x02,0x00, +0xB3,0xD8, 0x00,0x40,0x20,0x40,0x12,0x40,0x12,0x58,0x82,0x68,0x42,0xC8,0x53,0x48,0x1E,0x48,// 池 // + 0x12,0x48,0x22,0x48,0xE2,0x58,0x22,0x42,0x22,0x02,0x22,0x02,0x21,0xFE,0x00,0x00, + + +0xB5,0xE7, 0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,// 电 // + 0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x0A,0x01,0x02,0x01,0x02,0x00,0xFE, + + +0xB7,0xC5, 0x20,0x40,0x10,0x40,0x00,0x40,0xFE,0x80,0x20,0xFE,0x21,0x08,0x3E,0x88,0x24,0x88,// 放 // + 0x24,0x88,0x24,0x50,0x24,0x50,0x24,0x20,0x44,0x50,0x54,0x88,0x89,0x04,0x02,0x02, + +0xC8,0xDD, 0x02,0x00,0x01,0x00,0x7F,0xFE,0x40,0x02,0x88,0x24,0x11,0x10,0x22,0x88,0x04,0x40,// 容 // + 0x08,0x20,0x30,0x18,0xDF,0xF6,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10, /* 最后一行必须用0xFF,0xFF结束,这是字库数组结束标志 */ 0xFF,0xFF diff --git a/User/fonts/hz24.c b/User/fonts/hz24.c index dc70454..e2f8048 100755 --- a/User/fonts/hz24.c +++ b/User/fonts/hz24.c @@ -377,8 +377,60 @@ unsigned char const g_Hz24[] = { 0x0C,0x60,0x30,0x0C,0x7F,0xF0,0x0C,0x60,0x30,0x0C,0x60,0x30,0x0C,0x60,0x34,0x0D, 0xFF,0xFE,0x0C,0x00,0x00,0x08,0x00,0x00, +0xB9,0xA6, 0x00,0x04,0x00,0x00,0x07,0x00,0x00,0x06,0x00,0x00,0xC6,0x00,0x7F,0xE6,0x00,0x06,// 功 // + 0x06,0x00,0x06,0x06,0x18,0x06,0x7F,0xFC,0x06,0x06,0x18,0x06,0x06,0x18,0x06,0x06, + 0x18,0x06,0x06,0x18,0x06,0x06,0x18,0x06,0x0C,0x18,0x06,0x6C,0x18,0x07,0x8C,0x18, + 0x0E,0x18,0x18,0x78,0x18,0x18,0x30,0x30,0x18,0x20,0x60,0x38,0x00,0xC3,0xF0,0x01, + 0x00,0xE0,0x02,0x00,0x40,0x00,0x00,0x00, + +0xC2,0xCA, 0x00,0x30,0x00,0x00,0x18,0x00,0x00,0x0C,0x00,0x00,0x08,0x18,0x3F,0xFF,0xFC,0x00,// 率 // + 0x20,0x00,0x10,0x32,0x10,0x18,0x43,0x38,0x0D,0xFE,0x40,0x04,0x8C,0x00,0x00,0x1A, + 0x60,0x06,0x21,0x30,0x18,0x4F,0x98,0x71,0xF1,0x90,0x20,0x90,0x80,0x00,0x1C,0x00, + 0x00,0x18,0x0C,0x7F,0xFF,0xFE,0x00,0x18,0x00,0x00,0x18,0x00,0x00,0x18,0x00,0x00, + 0x18,0x00,0x00,0x18,0x00,0x00,0x10,0x00, + +0xC8,0xDD, 0x00,0x30,0x00,0x00,0x18,0x00,0x00,0x0C,0x00,0x10,0x08,0x04,0x1F,0xFF,0xFE,0x31,// 容 // + 0x00,0x0C,0x71,0xC3,0x08,0x61,0x90,0xC0,0x03,0x1C,0x70,0x06,0x38,0x38,0x0C,0x34, + 0x18,0x10,0x62,0x10,0x00,0xC1,0x80,0x01,0x80,0xE0,0x03,0x00,0x38,0x07,0xFF,0xDF, + 0x19,0x80,0xC4,0x61,0x80,0xC0,0x81,0x80,0xC0,0x01,0x80,0xC0,0x01,0x80,0xC0,0x01, + 0xFF,0xC0,0x01,0x80,0xC0,0x01,0x00,0x80, + +0xB7,0xC5, 0x00,0x02,0x00,0x0C,0x03,0x80,0x06,0x03,0x00,0x03,0x03,0x00,0x02,0x03,0x00,0x00,// 放 // + 0x63,0x0C,0x7F,0xF7,0xFE,0x0C,0x06,0x30,0x0C,0x06,0x30,0x0C,0x64,0x30,0x0F,0xEA, + 0x30,0x0C,0x6A,0x30,0x0C,0x72,0x30,0x0C,0x62,0x60,0x0C,0x61,0x60,0x0C,0x61,0xC0, + 0x18,0x60,0xC0,0x18,0x61,0xC0,0x10,0x63,0x60,0x33,0xE6,0x30,0x20,0xCC,0x1C,0x40, + 0x98,0x0F,0x80,0x60,0x04,0x01,0x80,0x00, + +0xBD,0xB5, 0x00,0x08,0x00,0x21,0x8E,0x00,0x3F,0xCC,0x30,0x31,0x9F,0xF8,0x31,0x18,0x30,0x33,// 降 // + 0x24,0x60,0x32,0x24,0xC0,0x32,0x43,0x80,0x34,0x03,0x80,0x32,0x06,0xE0,0x31,0x18, + 0x7E,0x31,0xE1,0x18,0x31,0x81,0xC0,0x31,0x81,0x98,0x31,0xBF,0xFC,0x31,0x91,0x80, + 0x3F,0x99,0x80,0x33,0x31,0x8C,0x32,0x7F,0xFE,0x30,0x21,0x80,0x30,0x01,0x80,0x30, + 0x01,0x80,0x30,0x01,0x80,0x20,0x01,0x00, + +0xA1,0xA2, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 、 // + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00, + 0x0C,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0x80,0x00,0x01,0x80,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + +0xB6,0xFE, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x1F,// 二 // + 0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x7F,0xFF,0xFE,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + +0xB9,0xDC, 0x04,0x02,0x00,0x06,0x03,0x00,0x0C,0x66,0x0C,0x0F,0xF7,0xFE,0x1A,0x08,0x80,0x11,// 管 // + 0xB0,0x60,0x21,0x18,0x40,0x50,0x10,0x04,0x1F,0xFF,0xFE,0x30,0x00,0x0C,0x32,0x00, + 0xC8,0x63,0xFF,0xE0,0x03,0x00,0xC0,0x03,0x00,0xC0,0x03,0xFF,0xC0,0x03,0x00,0x00, + 0x03,0x00,0x60,0x03,0xFF,0xF0,0x03,0x00,0x60,0x03,0x00,0x60,0x03,0x00,0x60,0x03, + 0xFF,0xE0,0x03,0x00,0x40,0x02,0x00,0x00, + +0xBC,0xAB, 0x08,0x00,0x00,0x0E,0x00,0x20,0x0C,0x7F,0xF0,0x0C,0x18,0x60,0x0C,0x18,0x60,0x0D,// 极 // + 0x98,0x40,0x7F,0xD8,0xC0,0x0C,0x18,0xC0,0x0C,0x18,0x90,0x1C,0x19,0xF8,0x1E,0x18, + 0xB0,0x3D,0x1C,0x30,0x2D,0xB4,0x30,0x2C,0xB2,0x60,0x4C,0x32,0x60,0x4C,0x33,0xC0, + 0x8C,0x61,0x80,0x0C,0x61,0x80,0x0C,0x43,0xC0,0x0C,0xC6,0x60,0x0C,0x8C,0x38,0x0D, + 0x30,0x1F,0x0E,0x40,0x0C,0x08,0x00,0x00, - /* 最后一行必须用0xFF,0xFF结束,这是字库数组结束标志 */ 0xFF,0xFF diff --git a/User/lua/if/lua_if.c b/User/lua/if/lua_if.c index 4cbc804..e12c526 100755 --- a/User/lua/if/lua_if.c +++ b/User/lua/if/lua_if.c @@ -3,21 +3,21 @@ #include "param.h" /* - lua ӵԴķ: + lua 增加调试代码的方法: -lobject.cļ: +lobject.c文件: const char *luaO_pushfstring (lua_State *L, const char *fmt, ...) { #if 1 printf("%s", msg); #endif -ldebug.c ļ luaG_runerror printf +ldebug.c 文件 luaG_runerror 函数,增加printf -lauxlib.c ļ luaL_errorprintf +lauxlib.c 文件 luaL_error函数,增加printf -ldo.c ļ luaD_throw printf("\r\nthrow errcode=%d\r\n", errcode); +ldo.c 文件 luaD_throw 函 printf("\r\nthrow errcode=%d\r\n", errcode); -lua.h +lua.h 定义错误代码 #define LUA_ERRRUN 2 #define LUA_ERRSYNTAX 3 #define LUA_ERRMEM 4 @@ -27,7 +27,7 @@ lua.h */ /* - luaconf.h ļԸĴ ȱʡ64λ˫ȸ + luaconf.h 文件对浮点和整数的处理。 缺省64位整数,双精度浮点 default configuration for 64-bit Lua ('long long' and 'double') */ @@ -60,41 +60,41 @@ int system(const char *cmd) /* time_t : date/time in unix secs past 1-Jan-70 */ time_t time(time_t *_t) { - /* ´ڣ https://blog.csdn.net/qq_29350001/article/details/87637350 */ - #define xMINUTE (60) /* 1ֵ */ - #define xHOUR (60*xMINUTE) /* 1Сʱ */ - #define xDAY (24*xHOUR ) /* 1 */ - #define xYEAR (365*xDAY ) /* 1 */ + /* 以下代码来自于: https://blog.csdn.net/qq_29350001/article/details/87637350 */ + #define xMINUTE (60) /* 1分的秒数 */ + #define xHOUR (60*xMINUTE) /* 1小时的秒数 */ + #define xDAY (24*xHOUR ) /* 1天的秒数 */ + #define xYEAR (365*xDAY ) /* 1年的秒数 */ - /* localtimeUTC+8ʱ䣩תΪUNIX TIME197011Ϊ */ + /* 将localtime(UTC+8北京时间)转为UNIX TIME,以1970年1月1日为起点 */ static unsigned int month[12] = { - /*01*/xDAY*(0), - /*02*/xDAY*(31), - /*03*/xDAY*(31+28), - /*04*/xDAY*(31+28+31), - /*05*/xDAY*(31+28+31+30), - /*06*/xDAY*(31+28+31+30+31), - /*07*/xDAY*(31+28+31+30+31+30), - /*08*/xDAY*(31+28+31+30+31+30+31), - /*09*/xDAY*(31+28+31+30+31+30+31+31), - /*10*/xDAY*(31+28+31+30+31+30+31+31+30), - /*11*/xDAY*(31+28+31+30+31+30+31+31+30+31), - /*12*/xDAY*(31+28+31+30+31+30+31+31+30+31+30) + /*01月*/xDAY*(0), + /*02月*/xDAY*(31), + /*03月*/xDAY*(31+28), + /*04月*/xDAY*(31+28+31), + /*05月*/xDAY*(31+28+31+30), + /*06月*/xDAY*(31+28+31+30+31), + /*07月*/xDAY*(31+28+31+30+31+30), + /*08月*/xDAY*(31+28+31+30+31+30+31), + /*09月*/xDAY*(31+28+31+30+31+30+31+31), + /*10月*/xDAY*(31+28+31+30+31+30+31+31+30), + /*11月*/xDAY*(31+28+31+30+31+30+31+31+30+31), + /*12月*/xDAY*(31+28+31+30+31+30+31+31+30+31+30) }; unsigned int seconds = 0; unsigned int year = 0; RTC_ReadClock(); - year = g_tRTC.Year - 1970; /* 2100ǧ */ - seconds = xYEAR * year + xDAY * ((year + 1) /4); /* ǰȥ */ - seconds += month[g_tRTC.Mon - 1]; /* Ͻ걾¹ȥ */ - if ((g_tRTC.Mon > 2) && (((year + 2) % 4) == 0)) /* 2008Ϊ */ - seconds += xDAY; /* 1 */ - seconds += xDAY * (g_tRTC.Day-1); /* ϱȥ */ - seconds += xHOUR * g_tRTC.Hour; /* ϱСʱȥ */ - seconds += xMINUTE * g_tRTC.Min; /* ϱӹȥ */ - seconds += g_tRTC.Sec; /* ϵǰ
seconds -= 8 * xHOUR; */ + year = g_tRTC.Year - 1970; /* 不考虑2100年千年虫问题 */ + seconds = xYEAR * year + xDAY * ((year + 1) /4); /* 前几年过去的秒数 */ + seconds += month[g_tRTC.Mon - 1]; /* 加上今年本月过去的秒数 */ + if ((g_tRTC.Mon > 2) && (((year + 2) % 4) == 0)) /* 2008年为闰年 */ + seconds += xDAY; /* 闰年加1天秒数 */ + seconds += xDAY * (g_tRTC.Day-1); /* 加上本天过去的秒数 */ + seconds += xHOUR * g_tRTC.Hour; /* 加上本小时过去的秒数 */ + seconds += xMINUTE * g_tRTC.Min; /* 加上本分钟过去的秒数 */ + seconds += g_tRTC.Sec; /* 加上当前秒数
 seconds -= 8 * xHOUR; */ *_t = seconds; return *_t; } @@ -132,32 +132,32 @@ const char lua_test[] = { void lua_Test(void) { - luaL_dostring(g_Lua, lua_test); /* Luaű */ + luaL_dostring(g_Lua, lua_test); /* 运行Lua脚本 */ luaL_dostring(g_Lua, "print(add_f(1.0, 9.09))\n print(sub_f(20.1,19.01))"); } /* ********************************************************************************************************* -* : lua_Init -* ˵: ʼlua -* : -* ֵ: +* 函 数 名: lua_Init +* 功能说明: 初始化lua虚拟机 +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ void lua_Init(void) { - g_Lua = luaL_newstate(); /* Luaл */ + g_Lua = luaL_newstate(); /* 建立Lua运行环境 */ luaL_openlibs(g_Lua); luaopen_base(g_Lua); - lua_RegisterFunc(); /* עclua */ + lua_RegisterFunc(); /* 注册c函数,供lua调用 */ } -/* رͷLua */ +/* 关闭释放Lua */ void lua_DeInit(void) { - lua_close(g_Lua); /* ͷڴ */ + lua_close(g_Lua); /* 释放内存 */ g_Lua = 0; } @@ -199,12 +199,12 @@ void lua_DoInit(void) luaL_dostring(g_Lua, "init()"); } -// ͨдļ +// 通信写文件 uint8_t lua_66H_Write(uint32_t _addr, uint8_t *_buf, uint32_t _len) { uint8_t re; - lua_getglobal(g_Lua, "write"); // ջ ȡluawrite + lua_getglobal(g_Lua, "write"); // 函数入栈 获取lua函数write lua_pushinteger(g_Lua, _addr); lua_pushlstring(g_Lua, (char *)_buf, _len); lua_pushinteger(g_Lua, _len); @@ -213,22 +213,22 @@ uint8_t lua_66H_Write(uint32_t _addr, uint8_t *_buf, uint32_t _len) /* lua_pcall(lua_State *L,int nargs,int nresults,int errfunc) 1 - nargs - nresults ֵ - errFunc 0ʾޣʾջе + nargs 参数个数 + nresults 返回值个数 + errFunc 错误处理函数,0表示无,表示错误处理函数在栈中的索引 */ re = lua_tonumber(g_Lua, -1); lua_pop(g_Lua, 1); return re; } -// ͨŶļ +// 通信读文件 uint8_t lua_67H_Read(uint32_t _addr, uint8_t *_buf, uint32_t _len) { uint8_t re = 0; uint32_t i; - lua_getglobal(g_Lua, "read"); // ջ ȡluawrite + lua_getglobal(g_Lua, "read"); // 函数入栈 获取lua函数write lua_pushinteger(g_Lua, _addr); lua_pushinteger(g_Lua, _len); @@ -236,9 +236,9 @@ uint8_t lua_67H_Read(uint32_t _addr, uint8_t *_buf, uint32_t _len) /* lua_pcall(lua_State *L,int nargs,int nresults,int errfunc) 1 - nargs - nresults ֵ - errFunc 0ʾޣʾջе + nargs 参数个数 + nresults 返回值个数 + errFunc 错误处理函数,0表示无,表示错误处理函数在栈中的索引 */ for (i = 0; i < _len; i++) @@ -251,34 +251,34 @@ uint8_t lua_67H_Read(uint32_t _addr, uint8_t *_buf, uint32_t _len) /* ********************************************************************************************************* -* : beep -* ˵: lua -* : -* ֵ: +* 函 数 名: beep +* 功能说明: 蜂鸣函数 lua调用 +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ static int beep(lua_State* L) { - //ջеIJǷϷ1ʾLuaʱĵһ()ơ - //LuaڵʱݵIJΪnumberúִֹС + //检查栈中的参数是否合法,1表示Lua调用时的第一个参数(从左到右),依此类推。 + //如果Lua代码在调用时传递的参数不为number,该函数将报错并终止程序的执行。 // double op1 = luaL_checknumber(L, 1); // double op2 = luaL_checknumber(L, 2); BEEP_KeyTone(); - //ĽѹջСжֵѹջС + //将函数的结果压入栈中。如果有多个返回值,可以在这里多次压入栈中。 //lua_pushnumber(L, op1 + op2); - //ֵʾCķֵѹջеķֵ + //返回值用于提示该C函数的返回值数量,即压入栈中的返回值数量。 return 0; } /* ********************************************************************************************************* -* : delayus -* ˵: ΢ӳ lua -* : -* ֵ: +* 函 数 名: delayus +* 功能说明: 微秒延迟 lua函数 +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ static int delayus(lua_State* L) @@ -291,10 +291,10 @@ static int delayus(lua_State* L) /* ********************************************************************************************************* -* : delayms -* ˵: ӳ lua -* : -* ֵ: +* 函 数 名: delayms +* 功能说明: 毫秒延迟 lua函数 +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ static int delayms(lua_State* L) @@ -308,22 +308,22 @@ static int delayms(lua_State* L) /* ********************************************************************************************************* -* : printhex -* ˵: ӡhexʽ. pr nthex(100, 2); p inthex("123"); -* : -* ֵ: +* 函 数 名: printhex +* 功能说明: 打印hex格式. pr nthex(100, 2); p inthex("123"); +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ extern uint8_t USBCom_SendBuf(int _Port, uint8_t *_Buf, uint16_t _Len); extern void lua_udp_SendBuf(uint8_t *_buf, uint16_t _len, uint16_t _port); static int printhex(lua_State* L) { - if (lua_type(L, 1) == LUA_TSTRING) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TSTRING) /* 判断第1个参数 */ { const char *data; size_t len; - data = luaL_checklstring(L, 1, &len); /* 1Dzλã lenstringij */ + data = luaL_checklstring(L, 1, &len); /* 1是参数的位置, len是string的长度 */ #if PRINT_TO_UDP == 1 lua_udp_SendBuf((uint8_t *)data, len, LUA_UDP_PORT); #else @@ -331,14 +331,14 @@ static int printhex(lua_State* L) #endif } - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { char buf[32]; uint32_t num; uint32_t bytes; num = luaL_checknumber(L, 1); - if (lua_type(L, 2) == LUA_TNUMBER) /* жϵ2 */ + if (lua_type(L, 2) == LUA_TNUMBER) /* 判断第2个参数 */ { bytes = luaL_checknumber(L, 2); if (bytes == 1) @@ -378,10 +378,10 @@ static int printhex(lua_State* L) /* ********************************************************************************************************* -* : write_clock -* ˵: дʱ -* : -* ֵ: +* 函 数 名: write_clock +* 功能说明: 写时钟 +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ static int write_clock(lua_State* L) @@ -389,7 +389,7 @@ static int write_clock(lua_State* L) uint16_t year; uint8_t mon, day, hour, min, sec; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { year = luaL_checknumber(L, 1); } @@ -420,10 +420,10 @@ static int write_clock(lua_State* L) /* ********************************************************************************************************* -* : read_clock -* ˵: дʱ -* : -* ֵ: +* 函 数 名: read_clock +* 功能说明: 写时钟 +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ static int read_clock(lua_State* L) @@ -447,10 +447,10 @@ static int read_clock(lua_State* L) /* ********************************************************************************************************* -* : get_runtime -* ˵: CPUʱ䡣msλ -* : -* ֵ: +* 函 数 名: get_runtime +* 功能说明: 获得CPU运行时间。ms单位 +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ static int get_runtime(lua_State* L) @@ -464,10 +464,10 @@ static int get_runtime(lua_State* L) /* ********************************************************************************************************* -* : check_runtime -* ˵: жʱ䳤 -* : -* ֵ: +* 函 数 名: check_runtime +* 功能说明: 判断时间长度 +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ static int check_runtime(lua_State* L) @@ -475,7 +475,7 @@ static int check_runtime(lua_State* L) int32_t lasttime; uint8_t re; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { lasttime = luaL_checknumber(L, 1); } @@ -488,16 +488,16 @@ static int check_runtime(lua_State* L) /* ********************************************************************************************************* -* : lua_RegisterFunc -* ˵: עluaɵõc -* : -* ֵ: +* 函 数 名: lua_RegisterFunc +* 功能说明: 注册lua可调用的c函数 +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ static void lua_RegisterFunc(void) { - //ָĺעΪLuaȫֺеһַΪLua - //ڵCʱʹõȫֺڶΪʵCָ롣 + //将指定的函数注册为Lua的全局函数变量,其中第一个字符串参数为Lua代码 + //在调用C函数时使用的全局函数名,第二个参数为实际C函数的指针。 lua_register(g_Lua, "beep", beep); lua_register(g_Lua, "delayus", delayus); lua_register(g_Lua, "delayms", delayms); @@ -507,7 +507,7 @@ static void lua_RegisterFunc(void) lua_register(g_Lua, "get_runtime", get_runtime); lua_register(g_Lua, "check_runtime", check_runtime); - /* עӿں */ + /* 注册接口函数 */ lua_gpio_RegisterFun(); lua_i2c_RegisterFun(); lua_spi_RegisterFun(); diff --git a/User/lua/if/lua_if.h b/User/lua/if/lua_if.h index e62fdce..3541460 100755 --- a/User/lua/if/lua_if.h +++ b/User/lua/if/lua_if.h @@ -1,15 +1,15 @@ /* ********************************************************************************************************* * -* ģ : luaӿģ -* ļ : lua_if.h -* : V1.0 -* ˵ : -* ޸ļ¼ : -* 汾 ˵ -* v1.0 2015-04-25 armfly ST̼汾 V2.1.0 +* 模块名称 : lua接口模块 +* 文件名称 : lua_if.h +* 版 本 : V1.0 +* 说 明 : 。 +* 修改记录 : +* 版本号 日期 作者 说明 +* v1.0 2015-04-25 armfly ST固件库版本 V2.1.0 * -* Copyright (C), 2014-2015, www.armfly.com +* Copyright (C), 2014-2015, 安富莱电子 www.armfly.com * ********************************************************************************************************* */ @@ -57,4 +57,4 @@ extern uint32_t s_lua_prog_len; #endif -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/lua/if/lua_if_adc.c b/User/lua/if/lua_if_adc.c index ccd78fa..b63be18 100755 --- a/User/lua/if/lua_if_adc.c +++ b/User/lua/if/lua_if_adc.c @@ -5,33 +5,33 @@ #include "bsp.h" #include "param.h" -/* Ϊ˱DAPеĺģ麯ǰ׺ h7swd */ +/* 为了避免和DAP驱动中的函数混淆,本模块函数名前缀用 h7swd */ static int lua_ReadAdc(lua_State* L); static int lua_ReadAnalog(lua_State* L); /* ********************************************************************************************************* -* : lua_adc_RegisterFun -* ˵: עlua CԽӿں -* : -* ֵ: +* 函 数 名: lua_adc_RegisterFun +* 功能说明: 注册lua C语言接口函数 +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ void lua_adc_RegisterFun(void) { - //ָĺעΪLuaȫֺеһַΪLua - //ڵCʱʹõȫֺڶΪʵCָ롣 + //将指定的函数注册为Lua的全局函数变量,其中第一个字符串参数为Lua代码 + //在调用C函数时使用的全局函数名,第二个参数为实际C函数的指针。 lua_register(g_Lua, "read_adc", lua_ReadAdc); lua_register(g_Lua, "read_analog", lua_ReadAnalog); } /* ********************************************************************************************************* -* : lua_ReadAdc -* ˵: ADCֵ -* : ͨ 0-8 -* ֵ: +* 函 数 名: lua_ReadAdc +* 功能说明: 读ADC值 +* 形 参: 通道号 0-8 +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_ReadAdc(lua_State* L) @@ -39,33 +39,33 @@ static int lua_ReadAdc(lua_State* L) uint8_t ch; float re; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { - ch = luaL_checknumber(L, 1); /* ģͨ */ + ch = luaL_checknumber(L, 1); /* 模拟通道 */ } - if (ch == AN_CH1) re = g_tVar.ADC_CH1Volt; /* CH1ѹ */ - else if (ch == AN_CH2) re = g_tVar.ADC_CH2Volt; /* CH2ѹ */ + if (ch == AN_CH1) re = g_tVar.ADC_CH1Volt; /* CH1电压 */ + else if (ch == AN_CH2) re = g_tVar.ADC_CH2Volt; /* CH2电压 */ else if (ch == AN_HIGH_SIDE_VOLT) re = g_tVar.ADC_HighSideVolt; else if (ch == AN_HIGH_SIDE_CURR) re = g_tVar.ADC_HighSideCurr; - else if (ch == AN_TVCC_VOLT) re = g_tVar.ADC_TVCCVolt; /* TVCCʵѹ */ - else if (ch == AN_TVCC_CURR) re = g_tVar.ADC_TVCCCurr; /* TVCCʵѹ */ - else if (ch == AN_NTC_RES) re = g_tVar.ADC_NTCRes; /* NTC */ + else if (ch == AN_TVCC_VOLT) re = g_tVar.ADC_TVCCVolt; /* TVCC实测电压 */ + else if (ch == AN_TVCC_CURR) re = g_tVar.ADC_TVCCCurr; /* TVCC实测电压 */ + else if (ch == AN_NTC_RES) re = g_tVar.ADC_NTCRes; /* NTC电阻 */ else if (ch == AN_12V_VOLT) re = g_tVar.ADC_ExtPowerVolt; else if (ch == AN_USB_VOLT) re = g_tVar.ADC_USBPowerVolt; else re = 0; - lua_pushnumber(L, re); /* ɹ, */ + lua_pushnumber(L, re); /* 成功,返回数据 */ return 1; } /* ********************************************************************************************************* -* : lua_ReadAdc -* ˵: У׼ģ -* : -* ֵ: +* 函 数 名: lua_ReadAdc +* 功能说明: 读校准后的模拟量 +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_ReadAnalog(lua_State* L) @@ -73,25 +73,25 @@ static int lua_ReadAnalog(lua_State* L) uint8_t ch; float re; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { - ch = luaL_checknumber(L, 1); /* ģͨ */ + ch = luaL_checknumber(L, 1); /* 模拟通道 */ } - if (ch == AN_CH1) re = g_tVar.CH1Volt; /* CH1ѹ */ - else if (ch == AN_CH2) re = g_tVar.CH2Volt; /* CH2ѹ */ + if (ch == AN_CH1) re = g_tVar.CH1Volt; /* CH1电压 */ + else if (ch == AN_CH2) re = g_tVar.CH2Volt; /* CH2电压 */ else if (ch == AN_HIGH_SIDE_VOLT) re = g_tVar.HighSideVolt; else if (ch == AN_HIGH_SIDE_CURR) re = g_tVar.HighSideCurr; - else if (ch == AN_TVCC_VOLT) re = g_tVar.TVCCVolt; /* TVCCʵѹ */ - else if (ch == AN_TVCC_CURR) re = g_tVar.TVCCCurr; /* TVCCʵѹ */ - else if (ch == AN_NTC_RES) re = g_tVar.NTCRes; /* NTC */ + else if (ch == AN_TVCC_VOLT) re = g_tVar.TVCCVolt; /* TVCC实测电压 */ + else if (ch == AN_TVCC_CURR) re = g_tVar.TVCCCurr; /* TVCC实测电压 */ + else if (ch == AN_NTC_RES) re = g_tVar.NTCRes; /* NTC电阻 */ else if (ch == AN_12V_VOLT) re = g_tVar.ExtPowerVolt; else if (ch == AN_USB_VOLT) re = g_tVar.USBPowerVolt; else re = 0; - lua_pushnumber(L, re); /* ɹ, */ + lua_pushnumber(L, re); /* 成功,返回数据 */ return 1; } -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/lua/if/lua_if_adc.h b/User/lua/if/lua_if_adc.h index 7d602fa..4632be7 100755 --- a/User/lua/if/lua_if_adc.h +++ b/User/lua/if/lua_if_adc.h @@ -1,15 +1,15 @@ /* ********************************************************************************************************* * -* ģ : lua adcģ -* ļ : lua_if_adc.h -* : V1.0 -* ˵ : -* ޸ļ¼ : -* 汾 ˵ -* v1.0 2019-10-15 armfly ׷ +* 模块名称 : lua adc模块 +* 文件名称 : lua_if_adc.h +* 版 本 : V1.0 +* 说 明 : 。 +* 修改记录 : +* 版本号 日期 作者 说明 +* v1.0 2019-10-15 armfly 首发 * -* Copyright (C), 2019-2030, www.armfly.com +* Copyright (C), 2019-2030, 安富莱电子 www.armfly.com * ********************************************************************************************************* */ @@ -21,4 +21,4 @@ void lua_adc_RegisterFun(void); #endif -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/lua/if/lua_if_dac.c b/User/lua/if/lua_if_dac.c index 3f97df9..95401ef 100755 --- a/User/lua/if/lua_if_dac.c +++ b/User/lua/if/lua_if_dac.c @@ -7,7 +7,7 @@ #include "modbus_reg_addr.h" #include "modbus_register.h" -/* Ϊ˱DAPеĺģ麯ǰ׺ h7swd */ +/* 为了避免和DAP驱动中的函数混淆,本模块函数名前缀用 h7swd */ static int lua_WriteDac(lua_State* L); static int lua_WriteVolt(lua_State* L); @@ -19,16 +19,16 @@ static int lua_PowerOffDac(lua_State* L); /* ********************************************************************************************************* -* : lua_adc_RegisterFun -* ˵: עlua CԽӿں -* : -* ֵ: +* 函 数 名: lua_adc_RegisterFun +* 功能说明: 注册lua C语言接口函数 +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ void lua_dac_RegisterFun(void) { - //ָĺעΪLuaȫֺеһַΪLua - //ڵCʱʹõȫֺڶΪʵCָ롣 + //将指定的函数注册为Lua的全局函数变量,其中第一个字符串参数为Lua代码 + //在调用C函数时使用的全局函数名,第二个参数为实际C函数的指针。 lua_register(g_Lua, "dac_on", lua_PowerOnDac); lua_register(g_Lua, "dac_off", lua_PowerOffDac); lua_register(g_Lua, "dac_write", lua_WriteDac); @@ -40,47 +40,47 @@ void lua_dac_RegisterFun(void) /* ********************************************************************************************************* -* : lua_PowerOnDac -* ˵: DACԴ -* : -* ֵ: +* 函 数 名: lua_PowerOnDac +* 功能说明: 打开DAC电源 +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_PowerOnDac(lua_State* L) { - WriteRegValue_06H(REG03_DAC_WAVE_TYPE, 0); /* ֱ */ + WriteRegValue_06H(REG03_DAC_WAVE_TYPE, 0); /* 直流 */ WriteRegValue_06H(REG03_DAC_WAVE_START, 1); return 1; } /* ********************************************************************************************************* -* : lua_PowerOffDac -* ˵: رDACԴ -* : -* ֵ: +* 函 数 名: lua_PowerOffDac +* 功能说明: 关闭DAC电源 +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_PowerOffDac(lua_State* L) { - WriteRegValue_06H(REG03_DAC_WAVE_TYPE, 0); /* ֱ */ + WriteRegValue_06H(REG03_DAC_WAVE_TYPE, 0); /* 直流 */ WriteRegValue_06H(REG03_DAC_WAVE_START, 0); return 1; } /* ********************************************************************************************************* -* : lua_WriteDac -* ˵: дDAC -* : dacֵ 0-4095 -* ֵ: +* 函 数 名: lua_WriteDac +* 功能说明: 写DAC +* 形 参: dac值 0-4095 +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_WriteDac(lua_State* L) { uint16_t value; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { value = luaL_checknumber(L, 1); /* dac */ } @@ -92,19 +92,19 @@ static int lua_WriteDac(lua_State* L) /* ********************************************************************************************************* -* : lua_WriteVolt -* ˵: дѹֵ -* : ѹmv -* ֵ: +* 函 数 名: lua_WriteVolt +* 功能说明: 写电压值 +* 形 参: 电压mv +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_WriteVolt(lua_State* L) { int16_t value; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { - value = luaL_checknumber(L, 1); /* ѹ */ + value = luaL_checknumber(L, 1); /* 电压 */ } WriteRegValue_06H(REG03_OUT_VOLT_MV, value); @@ -114,10 +114,10 @@ static int lua_WriteVolt(lua_State* L) /* ********************************************************************************************************* -* : lua_WriteCurr -* ˵: дֵ -* : ֵuA -* ֵ: +* 函 数 名: lua_WriteCurr +* 功能说明: 写电流值 +* 形 参: 电流值uA +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_WriteCurr(lua_State* L) @@ -125,7 +125,7 @@ static int lua_WriteCurr(lua_State* L) uint16_t value; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { value = luaL_checknumber(L, 1); /* dac */ } @@ -137,17 +137,17 @@ static int lua_WriteCurr(lua_State* L) /* ********************************************************************************************************* -* : lua_WriteTvccDac -* ˵: дTVCC DAC -* : dac 0-127 -* ֵ: +* 函 数 名: lua_WriteTvccDac +* 功能说明: 写TVCC DAC +* 形 参: dac 0-127 +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_WriteTvccDac(lua_State* L) { uint16_t value; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { value = luaL_checknumber(L, 1); /* dac */ } @@ -159,17 +159,17 @@ static int lua_WriteTvccDac(lua_State* L) /* ********************************************************************************************************* -* : lua_WriteTvccVolt -* ˵: дTVCC ѹ -* : dac 1200-5000 -* ֵ: +* 函 数 名: lua_WriteTvccVolt +* 功能说明: 写TVCC 电压 +* 形 参: dac 1200-5000 +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_WriteTvccVolt(lua_State* L) { uint16_t value; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { value = luaL_checknumber(L, 1); /* dac */ } @@ -179,4 +179,4 @@ static int lua_WriteTvccVolt(lua_State* L) return 1; } -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/lua/if/lua_if_dac.h b/User/lua/if/lua_if_dac.h index 8c50240..4f64b56 100755 --- a/User/lua/if/lua_if_dac.h +++ b/User/lua/if/lua_if_dac.h @@ -1,15 +1,15 @@ /* ********************************************************************************************************* * -* ģ : lua dacģ -* ļ : lua_if_dac.h -* : V1.0 -* ˵ : -* ޸ļ¼ : -* 汾 ˵ -* v1.0 2019-10-15 armfly ׷ +* 模块名称 : lua dac模块 +* 文件名称 : lua_if_dac.h +* 版 本 : V1.0 +* 说 明 : 。 +* 修改记录 : +* 版本号 日期 作者 说明 +* v1.0 2019-10-15 armfly 首发 * -* Copyright (C), 2019-2030, www.armfly.com +* Copyright (C), 2019-2030, 安富莱电子 www.armfly.com * ********************************************************************************************************* */ @@ -21,4 +21,4 @@ void lua_dac_RegisterFun(void); #endif -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/lua/if/lua_if_extio.c b/User/lua/if/lua_if_extio.c index 2d949a7..19c4019 100755 --- a/User/lua/if/lua_if_extio.c +++ b/User/lua/if/lua_if_extio.c @@ -15,16 +15,16 @@ static int lua_ReadADC(lua_State* L); /* ********************************************************************************************************* -* : lua_extio_RegisterFun -* ˵: עlua CԽӿں -* : -* ֵ: +* 函 数 名: lua_extio_RegisterFun +* 功能说明: 注册lua C语言接口函数 +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ void lua_extio_RegisterFun(void) { - //ָĺעΪLuaȫֺеһַΪLua - //ڵCʱʹõȫֺڶΪʵCָ롣 + //将指定的函数注册为Lua的全局函数变量,其中第一个字符串参数为Lua代码 + //在调用C函数时使用的全局函数名,第二个参数为实际C函数的指针。 lua_register(g_Lua, "ex_start", lua_StartExtIO); lua_register(g_Lua, "ex_stop", lua_StopExtIO); lua_register(g_Lua, "ex_dout", lua_WriteDO); @@ -36,10 +36,10 @@ void lua_extio_RegisterFun(void) /* ********************************************************************************************************* -* : lua_StartExtIO -* ˵: չIO -* : 0-23 -* ֵ: +* 函 数 名: lua_StartExtIO +* 功能说明: 启动扩展IO任务 +* 形 参: 0-23 +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_StartExtIO(lua_State* L) @@ -50,10 +50,10 @@ static int lua_StartExtIO(lua_State* L) /* ********************************************************************************************************* -* : lua_StopExtIO -* ˵: ֹͣչIO -* : 0-23 -* ֵ: +* 函 数 名: lua_StopExtIO +* 功能说明: 停止扩展IO任务 +* 形 参: 0-23 +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_StopExtIO(lua_State* L) @@ -64,10 +64,10 @@ static int lua_StopExtIO(lua_State* L) /* ********************************************************************************************************* -* : lua_WriteDO -* ˵: дDO -* : 0-23 -* ֵ: +* 函 数 名: lua_WriteDO +* 功能说明: 写DO +* 形 参: 0-23 +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_WriteDO(lua_State* L) @@ -75,12 +75,12 @@ static int lua_WriteDO(lua_State* L) uint8_t pin; uint8_t value; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { pin = luaL_checknumber(L, 1); /* dac */ } - if (lua_type(L, 2) == LUA_TNUMBER) /* жϵ2 */ + if (lua_type(L, 2) == LUA_TNUMBER) /* 判断第2个参数 */ { value = luaL_checknumber(L, 2); /* dac */ } @@ -92,10 +92,10 @@ static int lua_WriteDO(lua_State* L) /* ********************************************************************************************************* -* : lua_ReadDI -* ˵: DI -* : 0-15 -* ֵ: +* 函 数 名: lua_ReadDI +* 功能说明: 读DI +* 形 参: 0-15 +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_ReadDI(lua_State* L) @@ -103,24 +103,24 @@ static int lua_ReadDI(lua_State* L) uint8_t pin; uint8_t value; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { pin = luaL_checknumber(L, 1); /* dac */ } value = EX165_GetPin(pin); - lua_pushnumber(L, value); /* ɹ, */ + lua_pushnumber(L, value); /* 成功,返回数据 */ return 1; } /* ********************************************************************************************************* -* : lua_WriteDAC -* ˵: дDAC -* : 0-1 -* ֵ: +* 函 数 名: lua_WriteDAC +* 功能说明: 写DAC +* 形 参: 0-1 +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_WriteDAC(lua_State* L) @@ -128,12 +128,12 @@ static int lua_WriteDAC(lua_State* L) uint8_t ch; uint16_t dac; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { ch = luaL_checknumber(L, 1); /* dac */ } - if (lua_type(L, 2) == LUA_TNUMBER) /* жϵ2 */ + if (lua_type(L, 2) == LUA_TNUMBER) /* 判断第2个参数 */ { dac = luaL_checknumber(L, 2); /* dac */ } @@ -145,10 +145,10 @@ static int lua_WriteDAC(lua_State* L) /* ********************************************************************************************************* -* : lua_ReadADC -* ˵: ADC -* : 0-7 -* ֵ: +* 函 数 名: lua_ReadADC +* 功能说明: 读ADC +* 形 参: 0-7 +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_ReadADC(lua_State* L) @@ -156,16 +156,16 @@ static int lua_ReadADC(lua_State* L) uint8_t ch; int16_t adc; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { ch = luaL_checknumber(L, 1); /* dac */ } adc = AD7606_ReadAdc(ch); /* dac */ - lua_pushnumber(L, adc); /* ɹ, */ + lua_pushnumber(L, adc); /* 成功,返回数据 */ return 1; } -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/lua/if/lua_if_extio.h b/User/lua/if/lua_if_extio.h index 7f0a194..d7c551b 100755 --- a/User/lua/if/lua_if_extio.h +++ b/User/lua/if/lua_if_extio.h @@ -1,15 +1,15 @@ /* ********************************************************************************************************* * -* ģ : lua extioģ -* ļ : lua_if_extio.h -* : V1.0 -* ˵ : -* ޸ļ¼ : -* 汾 ˵ -* v1.0 2019-10-15 armfly ׷ +* 模块名称 : lua extio模块 +* 文件名称 : lua_if_extio.h +* 版 本 : V1.0 +* 说 明 : 。 +* 修改记录 : +* 版本号 日期 作者 说明 +* v1.0 2019-10-15 armfly 首发 * -* Copyright (C), 2019-2030, www.armfly.com +* Copyright (C), 2019-2030, 安富莱电子 www.armfly.com * ********************************************************************************************************* */ @@ -21,4 +21,4 @@ void lua_extio_RegisterFun(void); #endif -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/lua/if/lua_if_fatfs.c b/User/lua/if/lua_if_fatfs.c index d81cc02..ad270a8 100755 --- a/User/lua/if/lua_if_fatfs.c +++ b/User/lua/if/lua_if_fatfs.c @@ -11,7 +11,7 @@ FATFS g_lua_fs; FIL g_lua_file1; -char luaDiskPath[4]; /* FatFS · */ +char luaDiskPath[4]; /* 保存FatFS 磁盘路径 */ static int lua_f_mount(lua_State* L); static int lua_f_dir(lua_State* L); @@ -19,28 +19,28 @@ void ViewDir(char *_path); void lua_fatfs_RegisterFun(void) { - //ָĺעΪLuaȫֺеһַΪLua - //ڵCʱʹõȫֺڶΪʵCָ롣 + //将指定的函数注册为Lua的全局函数变量,其中第一个字符串参数为Lua代码 + //在调用C函数时使用的全局函数名,第二个参数为实际C函数的指针。 lua_register(g_Lua, "f_init", lua_f_mount); lua_register(g_Lua, "f_dir", lua_f_dir); } /* ********************************************************************************************************* -* : lua_udp_SendBytes -* ˵: UDPһݡUDPĿIPһνյUDPȡҲֻһͨŵ -* : -* ֵ: +* 函 数 名: lua_udp_SendBytes +* 功能说明: 向UDP发送一包数据。UDP目标IP由最后一次接收到的UDP包中提取,也就是只发给最后一次通信的主机 +* 形 参: +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_f_mount(lua_State* L) { FATFS_LinkDriver(&SD_Driver, luaDiskPath); - /* ļϵͳ */ + /* 挂载文件系统 */ if (f_mount(&g_lua_fs, luaDiskPath, 0) != FR_OK) { - printf("f_mountļϵͳʧ"); + printf("f_mount文件系统失败"); } return 1; @@ -48,10 +48,10 @@ static int lua_f_mount(lua_State* L) /* ********************************************************************************************************* -* : lua_f_dir -* ˵: -* : -* ֵ: +* 函 数 名: lua_f_dir +* 功能说明: +* 形 参: +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_f_dir(lua_State* L) @@ -59,9 +59,9 @@ static int lua_f_dir(lua_State* L) const char *data; uint32_t len; - if (lua_type(L, 1) == LUA_TSTRING) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TSTRING) /* 判断第1个参数 */ { - data = luaL_checklstring(L, 1, &len); /* 1Dzλã lenstri ij */ + data = luaL_checklstring(L, 1, &len); /* 1是参数的位置, len是stri 的长度 */ } ViewDir((char *)data); @@ -71,35 +71,35 @@ static int lua_f_dir(lua_State* L) /* ********************************************************************************************************* -* : ViewDir -* ˵: ʾĿ¼µļ -* : -* ֵ: +* 函 数 名: ViewDir +* 功能说明: 显示根目录下的文件名 +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ void ViewDir(char *_path) { - /* ʹõľֲռý϶࣬޸ļ֤ջռ乻 */ + /* 本函数使用的局部变量占用较多,请修改启动文件,保证堆栈空间够用 */ FRESULT result; DIR DirInf; FILINFO FileInf; uint32_t cnt = 0; - /* 򿪸ļ - Ҫ f_closedir */ - result = f_opendir(&DirInf, _path); /* 1: ʾ̷ */ + /* 打开根文件夹 - 用完后需要 f_closedir */ + result = f_opendir(&DirInf, _path); /* 1: 表示盘符 */ if (result != FR_OK) { - printf("򿪸Ŀ¼ʧ (%d)\r\n", result); + printf("打开根目录失败 (%d)\r\n", result); return; } - printf("\r\nǰĿ¼%s\r\n", _path); + printf("\r\n当前目录:%s\r\n", _path); - /* ȡǰļµļĿ¼ */ - printf(" | ļС | ļ | ļ\r\n"); + /* 读取当前文件夹下的文件和目录 */ + printf("属性 | 文件大小 | 短文件名 | 长文件名\r\n"); for (cnt = 0; ;cnt++) { - result = f_readdir(&DirInf,&FileInf); /* ȡĿ¼Զ */ + result = f_readdir(&DirInf,&FileInf); /* 读取目录项,索引会自动下移 */ if (result != FR_OK || FileInf.fname[0] == 0) { break; @@ -110,26 +110,26 @@ void ViewDir(char *_path) continue; } - /* жļĿ¼ */ + /* 判断是文件还是子目录 */ if (FileInf.fattrib & AM_DIR) { - printf("(0x%02d)Ŀ¼ ", FileInf.fattrib); + printf("(0x%02d)目录 ", FileInf.fattrib); } else { - printf("(0x%02d)ļ ", FileInf.fattrib); + printf("(0x%02d)文件 ", FileInf.fattrib); } - /* ӡļС, 4G */ + /* 打印文件大小, 最大4G */ printf(" %10d", FileInf.fsize); - printf(" %s |", FileInf.altname); /* ļ */ + printf(" %s |", FileInf.altname); /* 短文件名 */ - printf(" %s\r\n", (char *)FileInf.fname); /* ļ */ + printf(" %s\r\n", (char *)FileInf.fname); /* 长文件名 */ } - f_closedir(&DirInf); /*رմ򿪵Ŀ¼ */ + f_closedir(&DirInf); /* 关闭打开的目录 */ } -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/lua/if/lua_if_fatfs.h b/User/lua/if/lua_if_fatfs.h index dfa0cce..ed62f56 100755 --- a/User/lua/if/lua_if_fatfs.h +++ b/User/lua/if/lua_if_fatfs.h @@ -1,15 +1,15 @@ /* ********************************************************************************************************* * -* ģ : lua fatļϵͳ -* ļ : lua_if_fatfs.h -* : V1.0 -* ˵ : -* ޸ļ¼ : -* 汾 ˵ -* v1.0 2019-07-03 armfly ׷ +* 模块名称 : lua fat文件系统 +* 文件名称 : lua_if_fatfs.h +* 版 本 : V1.0 +* 说 明 : 。 +* 修改记录 : +* 版本号 日期 作者 说明 +* v1.0 2019-07-03 armfly 首发 * -* Copyright (C), 2019-2030, www.armfly.com +* Copyright (C), 2019-2030, 安富莱电子 www.armfly.com * ********************************************************************************************************* */ @@ -21,4 +21,4 @@ void lua_fatfs_RegisterFun(void); #endif -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/lua/if/lua_if_gpio.c b/User/lua/if/lua_if_gpio.c index 3de0cfb..3c30b53 100755 --- a/User/lua/if/lua_if_gpio.c +++ b/User/lua/if/lua_if_gpio.c @@ -12,16 +12,16 @@ static int lua_ReadFmcBus(lua_State* L); /* ********************************************************************************************************* -* : lua_GpioCfg -* ˵: GPIO -* : -* ֵ: +* 函 数 名: lua_GpioCfg +* 功能说明: 配置GPIO功能 +* 形 参: +* 返 回 值: 无 ********************************************************************************************************* */ void lua_gpio_RegisterFun(void) { - //ָĺעΪLuaȫֺеһַΪLua - //ڵCʱʹõȫֺڶΪʵCָ롣 + //将指定的函数注册为Lua的全局函数变量,其中第一个字符串参数为Lua代码 + //在调用C函数时使用的全局函数名,第二个参数为实际C函数的指针。 lua_register(g_Lua, "gpio_cfg", lua_GpioCfg); /* gpio_cfg(0, 1) */ lua_register(g_Lua, "gpio_write", lua_GpioWrite); /* gpio_write(0, 1) */ lua_register(g_Lua, "gpio_read", lua_GpioRead); /* gpio_write(0, 1) */ @@ -33,10 +33,10 @@ void lua_gpio_RegisterFun(void) /* ********************************************************************************************************* -* : lua_GpioCfg -* ˵: GPIO -* : -* ֵ: +* 函 数 名: lua_GpioCfg +* 功能说明: 配置GPIO功能 +* 形 参: +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_GpioCfg(lua_State* L) @@ -44,7 +44,7 @@ static int lua_GpioCfg(lua_State* L) uint8_t _no; uint8_t _dir; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { _no = luaL_checknumber(L, 1); } @@ -53,7 +53,7 @@ static int lua_GpioCfg(lua_State* L) return 1; } - if (lua_type(L, 2) == LUA_TNUMBER) /* жϵ2 */ + if (lua_type(L, 2) == LUA_TNUMBER) /* 判断第2个参数 */ { _dir = luaL_checknumber(L, 2); } @@ -79,10 +79,10 @@ static int lua_GpioCfg(lua_State* L) /* ********************************************************************************************************* -* : lua_GpioWrite -* ˵: GPIOƽ -* : -* ֵ: +* 函 数 名: lua_GpioWrite +* 功能说明: 设置GPIO输出电平 +* 形 参: +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_GpioWrite(lua_State* L) @@ -90,7 +90,7 @@ static int lua_GpioWrite(lua_State* L) uint8_t _no; uint8_t _value; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { _no = luaL_checknumber(L, 1); } @@ -99,7 +99,7 @@ static int lua_GpioWrite(lua_State* L) return 1; } - if (lua_type(L, 2) == LUA_TNUMBER) /* жϵ2 */ + if (lua_type(L, 2) == LUA_TNUMBER) /* 判断第2个参数 */ { _value = luaL_checknumber(L, 2); } @@ -121,10 +121,10 @@ static int lua_GpioWrite(lua_State* L) /* ********************************************************************************************************* -* : lua_GpioRead -* ˵: ȡGPIOƽ -* : -* ֵ: +* 函 数 名: lua_GpioRead +* 功能说明: 读取GPIO输出电平 +* 形 参: +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_GpioRead(lua_State* L) @@ -132,7 +132,7 @@ static int lua_GpioRead(lua_State* L) uint8_t _no; uint8_t _value; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { _no = luaL_checknumber(L, 1); } @@ -143,21 +143,21 @@ static int lua_GpioRead(lua_State* L) if (EIO_GetInputLevel(_no) == 0) { - lua_pushnumber(L, 0); /* ֵ */ + lua_pushnumber(L, 0); /* 返回值 */ } else { - lua_pushnumber(L, 1); /* ֵ */ + lua_pushnumber(L, 1); /* 返回值 */ } return 1; } /* ********************************************************************************************************* -* : lua_ReadFmcBus -* ˵: ͨFMC߶ȡߵƽ -* : -* ֵ: 16bit +* 函 数 名: lua_ReadFmcBus +* 功能说明: 通过FMC总线读取口线电平 +* 形 参: 无 +* 返 回 值: 16bit数据 ********************************************************************************************************* */ static int lua_ReadFmcBus(lua_State* L) @@ -166,23 +166,23 @@ static int lua_ReadFmcBus(lua_State* L) in = EIO_ReadFMC(); - lua_pushnumber(L, in); /* ֵ */ + lua_pushnumber(L, in); /* 返回值 */ return 1; } /* ********************************************************************************************************* -* : lua_SetTVCC -* ˵: TVCCѹ -* : IOѹ. λָ֧ -* ֵ: +* 函 数 名: lua_SetTVCC +* 功能说明: 设置TVCC电压 +* 形 参: 输入IO电压. 单位伏。支持浮点 +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_SetTVCC(lua_State* L) { float volt; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { volt = luaL_checknumber(L, 1); bsp_SetTVCC(volt * 1000); @@ -190,4 +190,4 @@ static int lua_SetTVCC(lua_State* L) return 1; } -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/lua/if/lua_if_gpio.h b/User/lua/if/lua_if_gpio.h index 0d9268a..e6320b7 100755 --- a/User/lua/if/lua_if_gpio.h +++ b/User/lua/if/lua_if_gpio.h @@ -1,15 +1,15 @@ /* ********************************************************************************************************* * -* ģ : lua gpioģ -* ļ : lua_gpio.h -* : V1.0 -* ˵ : -* ޸ļ¼ : -* 汾 ˵ -* v1.0 2019-07-03 armfly ׷ +* 模块名称 : lua gpio模块 +* 文件名称 : lua_gpio.h +* 版 本 : V1.0 +* 说 明 : 。 +* 修改记录 : +* 版本号 日期 作者 说明 +* v1.0 2019-07-03 armfly 首发 * -* Copyright (C), 2019-2030, www.armfly.com +* Copyright (C), 2019-2030, 安富莱电子 www.armfly.com * ********************************************************************************************************* */ @@ -21,4 +21,4 @@ void lua_gpio_RegisterFun(void); #endif -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/lua/if/lua_if_i2c.c b/User/lua/if/lua_if_i2c.c index 35c3750..5e9fc3f 100755 --- a/User/lua/if/lua_if_i2c.c +++ b/User/lua/if/lua_if_i2c.c @@ -11,8 +11,8 @@ static int lua_I2C_ReciveBytes(lua_State* L); void lua_i2c_RegisterFun(void) { - //ָĺעΪLuaȫֺеһַΪLua - //ڵCʱʹõȫֺڶΪʵCָ롣 + //将指定的函数注册为Lua的全局函数变量,其中第一个字符串参数为Lua代码 + //在调用C函数时使用的全局函数名,第二个参数为实际C函数的指针。 lua_register(g_Lua, "i2c_start", lua_I2C_Start); lua_register(g_Lua, "i2c_stop", lua_I2C_Stop); lua_register(g_Lua, "i2c_send", lua_I2C_SendBytes); @@ -32,8 +32,8 @@ static int lua_I2C_Stop(lua_State* L) } /* - ʽ1: i2c_send(buf); - ʽ2: i2c_send(3 ); + 形式1: i2c_send(buf); + 形式2: i2c_send(3 ); */ static int lua_I2C_SendBytes(lua_State* L) { @@ -43,12 +43,12 @@ static int lua_I2C_SendBytes(lua_State* L) uint8_t buf[1]; int re; - if (lua_type(L, 1) == LUA_TSTRING) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TSTRING) /* 判断第1个参数 */ { - data = luaL_checklstring(L, 1, &len); /* 1Dzλã lenstri ij */ + data = luaL_checklstring(L, 1, &len); /* 1是参数的位置, len是stri 的长度 */ } - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { len = 1; buf[0] = luaL_checknumber(L, 1); @@ -67,15 +67,15 @@ static int lua_I2C_SendBytes(lua_State* L) break; } } - lua_pushnumber(L, re); /* ֵ */ + lua_pushnumber(L, re); /* 返回值 */ return 1; } /* -LuaC++bufferʱʹstringУC++ģtolua++ʹȡbuffer +Lua给C++传buffer时,使用string就行,再C++的,tolua++中使用下面代码读取buffer size_t ld; - const char *data = luaL_checklstring(tolua_S, 2, &ld); // 2Dzλã ldbufferij -C++LuabufferʱC++ʹ봫buffer + const char *data = luaL_checklstring(tolua_S, 2, &ld); // 2是参数的位置, ld是buffer的长度 +C++给Lua传buffer时,在C++代码中使用下面代码传入buffer LuaStack *stack = LuaEngine::getInstance()->getLuaStack(); stack-> @@ -89,26 +89,26 @@ static int lua_I2C_ReciveBytes(lua_State* L) len = luaL_checknumber(L, 1); if (len == 0 || len > LUA_READ_LEN_MAX) { - lua_pushnumber(L, 0); /* ֵ */ + lua_pushnumber(L, 0); /* 返回值 */ return 0; } for (i = 0; i < len; i++) { - s_lua_read_buf[i] = i2c_ReadByte(); /* 1ֽ */ + s_lua_read_buf[i] = i2c_ReadByte(); /* 读1个字节 */ - /* ÿ1ֽںҪAck һֽڲҪAckNack */ + /* 每读完1个字节后,需要发送Ack, 最后一个字节不需要Ack,发Nack */ if (i != len - 1) { - i2c_Ack(); /* мֽڶCPUACKź(SDA = 0) */ + i2c_Ack(); /* 中间字节读完后,CPU产生ACK信号(驱动SDA = 0) */ } else { - i2c_NAck(); /* 1ֽڶCPUNACKź(SDA = 1) */ + i2c_NAck(); /* 最后1个字节读完后,CPU产生NACK信号(驱动SDA = 1) */ } } - //lua_pushnumber(L, 1); /* ֵ */ + //lua_pushnumber(L, 1); /* 返回值 */ // strcpy(s_lua_read_buf, "s_lua_read_buf"); lua_pushlstring(L, (char *)s_lua_read_buf, len); return 1; diff --git a/User/lua/if/lua_if_i2c.h b/User/lua/if/lua_if_i2c.h index 36e0f52..43c5b04 100755 --- a/User/lua/if/lua_if_i2c.h +++ b/User/lua/if/lua_if_i2c.h @@ -1,15 +1,15 @@ /* ********************************************************************************************************* * -* ģ : lua i2cģ -* ļ : lua_i2c.h -* : V1.0 -* ˵ : -* ޸ļ¼ : -* 汾 ˵ -* v1.0 2019-07-03 armfly ST̼汾 V2.1.0 +* 模块名称 : lua i2c模块 +* 文件名称 : lua_i2c.h +* 版 本 : V1.0 +* 说 明 : 。 +* 修改记录 : +* 版本号 日期 作者 说明 +* v1.0 2019-07-03 armfly ST固件库版本 V2.1.0 * -* Copyright (C), 2019-2030, www.armfly.com +* Copyright (C), 2019-2030, 安富莱电子 www.armfly.com * ********************************************************************************************************* */ @@ -21,4 +21,4 @@ void lua_i2c_RegisterFun(void); #endif -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/lua/if/lua_if_qspi.c b/User/lua/if/lua_if_qspi.c index bd381b6..097aa58 100755 --- a/User/lua/if/lua_if_qspi.c +++ b/User/lua/if/lua_if_qspi.c @@ -11,8 +11,8 @@ static int qspi_erase4k(lua_State* L); void lua_qspi_RegisterFun(void) { - //ָĺעΪLuaȫֺеһַΪLua - //ڵCʱʹõȫֺڶΪʵCָ롣 + //将指定的函数注册为Lua的全局函数变量,其中第一个字符串参数为Lua代码 + //在调用C函数时使用的全局函数名,第二个参数为实际C函数的指针。 lua_register(g_Lua, "qspi_readid", qspi_readid); lua_register(g_Lua, "qspi_read", qspi_read); lua_register(g_Lua, "qspi_write", qspi_write); @@ -21,10 +21,10 @@ void lua_qspi_RegisterFun(void) /* ********************************************************************************************************* -* : qspi_readid -* ˵: оƬID -* : -* ֵ: +* 函 数 名: qspi_readid +* 功能说明: 读芯片ID +* 形 参: +* 返 回 值: 无 ********************************************************************************************************* */ static int qspi_readid(lua_State* L) @@ -32,7 +32,7 @@ static int qspi_readid(lua_State* L) uint32_t id; id = QSPI_ReadID(); - lua_pushnumber(L, id); /* ֵ */ + lua_pushnumber(L, id); /* 返回值 */ return 1; } @@ -40,17 +40,17 @@ static int qspi_readid(lua_State* L) /* ********************************************************************************************************* -* : qspi_erase4k -* ˵: һ4KB -* : -* ֵ: +* 函 数 名: qspi_erase4k +* 功能说明: 擦除一个扇区,4KB +* 形 参: +* 返 回 值: 无 ********************************************************************************************************* */ static int qspi_erase4k(lua_State* L) { uint32_t addr; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ2 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第2个参数 */ { addr = luaL_checknumber(L, 1); @@ -59,17 +59,17 @@ static int qspi_erase4k(lua_State* L) } QSPI_EraseSector(addr); - lua_pushnumber(L, 1); /* ɹ */ + lua_pushnumber(L, 1); /* 成功 */ return 1; } /* ********************************************************************************************************* -* : qspi_write -* ˵: дһݣС256ֽ -* : -* ֵ: +* 函 数 名: qspi_write +* 功能说明: 写一包数据,小于256字节 +* 形 参: +* 返 回 值: 无 ********************************************************************************************************* */ static int qspi_write(lua_State* L) @@ -78,39 +78,39 @@ static int qspi_write(lua_State* L) const char *data; uint32_t addr; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ2 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第2个参数 */ { addr = luaL_checknumber(L, 1); } - if (lua_type(L, 2) == LUA_TSTRING) /* жϵ1 */ + if (lua_type(L, 2) == LUA_TSTRING) /* 判断第1个参数 */ { - data = luaL_checklstring(L, 2, &len); /* 1Dzλã lenstri ij */ + data = luaL_checklstring(L, 2, &len); /* 1是参数的位置, len是stri 的长度 */ } if (len > QSPI_PAGE_SIZE) { - lua_pushnumber(L, 0); /* */ + lua_pushnumber(L, 0); /* 出错 */ return 1; } if (QSPI_WriteBuffer((uint8_t *)data, addr, len) == 0) { - lua_pushnumber(L, 0); /* */ + lua_pushnumber(L, 0); /* 出错 */ } else { - lua_pushnumber(L, 1); /* ɹ */ + lua_pushnumber(L, 1); /* 成功 */ } return 1; } /* ********************************************************************************************************* -* : qspi_read -* ˵: һݣɴ256ֽ -* : -* ֵ: +* 函 数 名: qspi_read +* 功能说明: 读一包数据,可大于256字节 +* 形 参: +* 返 回 值: 无 ********************************************************************************************************* */ static int qspi_read(lua_State* L) @@ -118,12 +118,12 @@ static int qspi_read(lua_State* L) uint32_t addr; uint32_t num; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { - addr = luaL_checknumber(L, 1); /* 1Dzλã lenstri ij */ + addr = luaL_checknumber(L, 1); /* 1是参数的位置, len是stri 的长度 */ } - if (lua_type(L, 2) == LUA_TNUMBER) /* жϵ2 */ + if (lua_type(L, 2) == LUA_TNUMBER) /* 判断第2个参数 */ { num = luaL_checknumber(L, 2); @@ -142,4 +142,4 @@ static int qspi_read(lua_State* L) return 1; } -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/lua/if/lua_if_qspi.h b/User/lua/if/lua_if_qspi.h index 914581b..f3495c2 100755 --- a/User/lua/if/lua_if_qspi.h +++ b/User/lua/if/lua_if_qspi.h @@ -1,15 +1,15 @@ /* ********************************************************************************************************* * -* ģ : lua qspiģ -* ļ : lua_qspi.h -* : V1.0 -* ˵ : -* ޸ļ¼ : -* 汾 ˵ -* v1.0 2019-07-03 armfly ׷ +* 模块名称 : lua qspi模块 +* 文件名称 : lua_qspi.h +* 版 本 : V1.0 +* 说 明 : 。 +* 修改记录 : +* 版本号 日期 作者 说明 +* v1.0 2019-07-03 armfly 首发 * -* Copyright (C), 2019-2030, www.armfly.com +* Copyright (C), 2019-2030, 安富莱电子 www.armfly.com * ********************************************************************************************************* */ @@ -21,4 +21,4 @@ void lua_qspi_RegisterFun(void); #endif -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/lua/if/lua_if_register.c b/User/lua/if/lua_if_register.c index 8520090..cd6bc75 100755 --- a/User/lua/if/lua_if_register.c +++ b/User/lua/if/lua_if_register.c @@ -7,7 +7,7 @@ #include "modbus_reg_addr.h" #include "modbus_register.h" -/* Ϊ˱DAPеĺģ麯ǰ׺ h7swd */ +/* 为了避免和DAP驱动中的函数混淆,本模块函数名前缀用 h7swd */ static int lua_WriteReg16(lua_State* L); static int lua_WriteReg32(lua_State* L); static int lua_WriteRegFloat(lua_State* L); @@ -19,16 +19,16 @@ static int lua_SaveParam(lua_State* L); /* ********************************************************************************************************* -* : lua_reg_RegisterFun -* ˵: עlua CԽӿں -* : -* ֵ: +* 函 数 名: lua_reg_RegisterFun +* 功能说明: 注册lua C语言接口函数 +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ void lua_reg_RegisterFun(void) { - //ָĺעΪLuaȫֺеһַΪLua - //ڵCʱʹõȫֺڶΪʵCָ롣 + //将指定的函数注册为Lua的全局函数变量,其中第一个字符串参数为Lua代码 + //在调用C函数时使用的全局函数名,第二个参数为实际C函数的指针。 lua_register(g_Lua, "write_reg16", lua_WriteReg16); lua_register(g_Lua, "write_reg32", lua_WriteReg32); lua_register(g_Lua, "write_regfloat", lua_WriteRegFloat); @@ -42,10 +42,10 @@ void lua_reg_RegisterFun(void) /* ********************************************************************************************************* -* : lua_SaveParam -* ˵: дˢµeeprom -* : -* ֵ: +* 函 数 名: lua_SaveParam +* 功能说明: 写参数。将参数刷新到eeprom +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_SaveParam(lua_State* L) @@ -61,10 +61,10 @@ static int lua_SaveParam(lua_State* L) /* ********************************************************************************************************* -* : lua_WriteReg16 -* ˵: дĴ 16bit -* : Addrַ Ĵֵ -* ֵ: +* 函 数 名: lua_WriteReg16 +* 功能说明: 写寄存器 16bit +* 形 参: Addr地址 和 寄存器值 +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_WriteReg16(lua_State* L) @@ -73,14 +73,14 @@ static int lua_WriteReg16(lua_State* L) int16_t value; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { - addr = luaL_checknumber(L, 1); /* Ĵַ */ + addr = luaL_checknumber(L, 1); /* 寄存器地址 */ } - if (lua_type(L, 2) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 2) == LUA_TNUMBER) /* 判断第1个参数 */ { - value = luaL_checknumber(L, 2); /* Ĵֵ */ + value = luaL_checknumber(L, 2); /* 寄存器值 */ } WriteRegValue_06H(addr, (uint16_t)value); @@ -90,10 +90,10 @@ static int lua_WriteReg16(lua_State* L) /* ********************************************************************************************************* -* : lua_ReadReg16 -* ˵: Ĵ 16bit -* : Addrַ -* ֵ: Ĵֵ +* 函 数 名: lua_ReadReg16 +* 功能说明: 读寄存器 16bit +* 形 参: Addr地址 +* 返 回 值: 寄存器值 ********************************************************************************************************* */ static int lua_ReadReg16(lua_State* L) @@ -101,18 +101,18 @@ static int lua_ReadReg16(lua_State* L) uint16_t addr; uint16_t value; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { - addr = luaL_checknumber(L, 1); /* Ĵַ */ + addr = luaL_checknumber(L, 1); /* 寄存器地址 */ } if (ReadRegValue_03H(addr, &value) == 1) { - lua_pushnumber(L, value); /* ɹ, */ + lua_pushnumber(L, value); /* 成功,返回数据 */ } else { - lua_pushnumber(L, 0); /* ɹ, */ + lua_pushnumber(L, 0); /* 成功,返回数据 */ } return 1; @@ -120,10 +120,10 @@ static int lua_ReadReg16(lua_State* L) /* ********************************************************************************************************* -* : lua_WriteReg32 -* ˵: дĴ 32Bit -* : Addrַ Ĵֵ -* ֵ: +* 函 数 名: lua_WriteReg32 +* 功能说明: 写寄存器 32Bit整数 +* 形 参: Addr地址 和 寄存器值 +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_WriteReg32(lua_State* L) @@ -131,14 +131,14 @@ static int lua_WriteReg32(lua_State* L) uint16_t addr; int32_t value; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { - addr = luaL_checknumber(L, 1); /* Ĵַ */ + addr = luaL_checknumber(L, 1); /* 寄存器地址 */ } - if (lua_type(L, 2) == LUA_TNUMBER) /* жϵ2 */ + if (lua_type(L, 2) == LUA_TNUMBER) /* 判断第2个参数 */ { - value = luaL_checknumber(L, 2); /* Ĵַ */ + value = luaL_checknumber(L, 2); /* 寄存器地址 */ } WriteRegValue_06H(addr, (uint32_t)value >> 16); @@ -148,10 +148,10 @@ static int lua_WriteReg32(lua_State* L) /* ********************************************************************************************************* -* : lua_ReadReg32 -* ˵: Ĵ 32bit з -* : Addrַ -* ֵ: Ĵֵ +* 函 数 名: lua_ReadReg32 +* 功能说明: 读寄存器 32bit 有符号 +* 形 参: Addr地址 +* 返 回 值: 寄存器值 ********************************************************************************************************* */ static int lua_ReadReg32(lua_State* L) @@ -162,9 +162,9 @@ static int lua_ReadReg32(lua_State* L) int32_t value32; uint8_t re = 0; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { - addr = luaL_checknumber(L, 1); /* Ĵַ */ + addr = luaL_checknumber(L, 1); /* 寄存器地址 */ } re = ReadRegValue_03H(addr, &value1); @@ -173,11 +173,11 @@ static int lua_ReadReg32(lua_State* L) if (re == 2) { value32 =(value1 << 8) + value2; - lua_pushnumber(L, value32); /* ɹ, */ + lua_pushnumber(L, value32); /* 成功,返回数据 */ } else { - lua_pushnumber(L, 0); /* ɹ, */ + lua_pushnumber(L, 0); /* 成功,返回数据 */ } return 1; @@ -186,10 +186,10 @@ static int lua_ReadReg32(lua_State* L) /* ********************************************************************************************************* -* : lua_WriteRegFloat -* ˵: дĴ 32Bit -* : Addrַ Ĵֵ -* ֵ: +* 函 数 名: lua_WriteRegFloat +* 功能说明: 写寄存器 32Bit浮点 +* 形 参: Addr地址 和 寄存器值 +* 返 回 值: 无 ********************************************************************************************************* */ static int lua_WriteRegFloat(lua_State* L) @@ -197,14 +197,14 @@ static int lua_WriteRegFloat(lua_State* L) uint16_t addr; float ff; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { - addr = luaL_checknumber(L, 1); /* Ĵַ */ + addr = luaL_checknumber(L, 1); /* 寄存器地址 */ } - if (lua_type(L, 2) == LUA_TNUMBER) /* жϵ2 */ + if (lua_type(L, 2) == LUA_TNUMBER) /* 判断第2个参数 */ { - ff = luaL_checknumber(L, 2); /* Ĵַ */ + ff = luaL_checknumber(L, 2); /* 寄存器地址 */ } WriteRegValue_06H(addr, GetHigh16OfFloat(ff)); @@ -214,10 +214,10 @@ static int lua_WriteRegFloat(lua_State* L) /* ********************************************************************************************************* -* : lua_ReadRegFloat -* ˵: Ĵ -* : Addrַ -* ֵ: Ĵֵ +* 函 数 名: lua_ReadRegFloat +* 功能说明: 读寄存器 浮点 +* 形 参: Addr地址 +* 返 回 值: 寄存器值 ********************************************************************************************************* */ static int lua_ReadRegFloat(lua_State* L) @@ -229,9 +229,9 @@ static int lua_ReadRegFloat(lua_State* L) uint8_t re = 0; uint8_t buf[4]; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { - addr = luaL_checknumber(L, 1); /* Ĵַ */ + addr = luaL_checknumber(L, 1); /* 寄存器地址 */ } re = ReadRegValue_03H(addr, &value1); @@ -246,14 +246,14 @@ static int lua_ReadRegFloat(lua_State* L) ff = BEBufToFloat(buf); - lua_pushnumber(L, ff); /* ɹ, */ + lua_pushnumber(L, ff); /* 成功,返回数据 */ } else { - lua_pushnumber(L, 0); /* ɹ, */ + lua_pushnumber(L, 0); /* 成功,返回数据 */ } return 1; } -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/lua/if/lua_if_register.h b/User/lua/if/lua_if_register.h index 54b8cb2..6e55dc6 100755 --- a/User/lua/if/lua_if_register.h +++ b/User/lua/if/lua_if_register.h @@ -1,15 +1,15 @@ /* ********************************************************************************************************* * -* ģ : lua Ĵģ -* ļ : lua_reg_register.h -* : V1.0 -* ˵ : -* ޸ļ¼ : -* 汾 ˵ -* v1.0 2019-10-15 armfly ׷ +* 模块名称 : lua 寄存器操作模块 +* 文件名称 : lua_reg_register.h +* 版 本 : V1.0 +* 说 明 : 。 +* 修改记录 : +* 版本号 日期 作者 说明 +* v1.0 2019-10-15 armfly 首发 * -* Copyright (C), 2019-2030, www.armfly.com +* Copyright (C), 2019-2030, 安富莱电子 www.armfly.com * ********************************************************************************************************* */ @@ -21,4 +21,4 @@ void lua_reg_RegisterFun(void); #endif -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/lua/if/lua_if_spi.c b/User/lua/if/lua_if_spi.c index cd4d0f6..4681da4 100755 --- a/User/lua/if/lua_if_spi.c +++ b/User/lua/if/lua_if_spi.c @@ -7,10 +7,10 @@ void lua_spi_RegisterFun(void) { - //ָĺעΪLuaȫֺеһַΪLua - //ڵCʱʹõȫֺڶΪʵCָ롣 + //将指定的函数注册为Lua的全局函数变量,其中第一个字符串参数为Lua代码 + //在调用C函数时使用的全局函数名,第二个参数为实际C函数的指针。 //lua_register(g_Lua, "udp_print", lua_udp_print); } -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/lua/if/lua_if_spi.h b/User/lua/if/lua_if_spi.h index 72e974d..6b4655e 100755 --- a/User/lua/if/lua_if_spi.h +++ b/User/lua/if/lua_if_spi.h @@ -1,15 +1,15 @@ /* ********************************************************************************************************* * -* ģ : lua spiģ -* ļ : lua_spi.h -* : V1.0 -* ˵ : -* ޸ļ¼ : -* 汾 ˵ -* v1.0 2019-07-03 armfly ׷ +* 模块名称 : lua spi模块 +* 文件名称 : lua_spi.h +* 版 本 : V1.0 +* 说 明 : 。 +* 修改记录 : +* 版本号 日期 作者 说明 +* v1.0 2019-07-03 armfly 首发 * -* Copyright (C), 2019-2030, www.armfly.com +* Copyright (C), 2019-2030, 安富莱电子 www.armfly.com * ********************************************************************************************************* */ @@ -21,4 +21,4 @@ void lua_spi_RegisterFun(void); #endif -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/lua/if/lua_if_swd.c b/User/lua/if/lua_if_swd.c index 999542f..9820dcd 100755 --- a/User/lua/if/lua_if_swd.c +++ b/User/lua/if/lua_if_swd.c @@ -9,7 +9,7 @@ #include "swd_host.h" #include "Systick_Handler.h" -/* Ϊ˱DAPеĺģ麯ǰ׺ h7swd */ +/* 为了避免和DAP驱动中的函数混淆,本模块函数名前缀用 h7swd */ static int h7swd_Init(lua_State* L); static int h7swd_ReadID(lua_State* L); @@ -18,16 +18,16 @@ static int h7swd_ReadMemory(lua_State* L); /* ********************************************************************************************************* -* : lua_swd_RegisterFun -* ˵: עlua CԽӿں -* : -* ֵ: +* 函 数 名: lua_swd_RegisterFun +* 功能说明: 注册lua C语言接口函数 +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ void lua_swd_RegisterFun(void) { - //ָĺעΪLuaȫֺеһַΪLua - //ڵCʱʹõȫֺڶΪʵCָ롣 + //将指定的函数注册为Lua的全局函数变量,其中第一个字符串参数为Lua代码 + //在调用C函数时使用的全局函数名,第二个参数为实际C函数的指针。 lua_register(g_Lua, "swd_init", h7swd_Init); lua_register(g_Lua, "swd_getid", h7swd_ReadID); lua_register(g_Lua, "swd_write", h7swd_WriteMemory); @@ -36,37 +36,37 @@ void lua_swd_RegisterFun(void) /* ********************************************************************************************************* -* : h7swd_Init -* ˵: оƬID -* : vcc : CPUѹ -* ֵ: +* 函 数 名: h7swd_Init +* 功能说明: 读芯片ID +* 形 参: vcc : CPU供电电压 +* 返 回 值: 无 ********************************************************************************************************* */ static int h7swd_Init(lua_State* L) { float vcc; - sysTickInit(); /* DAPеijʼ,ȫֱʼ */ + sysTickInit(); /* 这是DAP驱动中的初始化函数,全局变量初始化 */ - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { - vcc = luaL_checknumber(L, 1); /* VCCѹ㣬λV */ + vcc = luaL_checknumber(L, 1); /* VCC电压,浮点,单位V */ } - bsp_SetTVCC(vcc * 1000); /* ýӿڵƽ3.3V */ - bsp_DelayUS(100 * 100); /* ӳ100ms */ + bsp_SetTVCC(vcc * 1000); /* 设置接口电平3.3V */ + bsp_DelayUS(100 * 100); /* 延迟100ms */ - swd_init_debug(); /* swd debug״̬ */ + swd_init_debug(); /* 进入swd debug状态 */ return 1; } /* ********************************************************************************************************* -* : h7swd_ReadID -* ˵: оƬID -* : -* ֵ: +* 函 数 名: h7swd_ReadID +* 功能说明: 读芯片ID +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ static int h7swd_ReadID(lua_State* L) @@ -75,22 +75,22 @@ static int h7swd_ReadID(lua_State* L) if (swd_read_idcode(&id) == 0) { - lua_pushnumber(L, 0); /* */ + lua_pushnumber(L, 0); /* 出错 */ } else { - lua_pushnumber(L, id); /* ɹ,ID */ + lua_pushnumber(L, id); /* 成功,返回ID */ } return 1; } /* ********************************************************************************************************* -* : h7swd_WriteMemory -* ˵: дCPUڴ棨Ĵ -* : addr : Ŀַ -* data : ݻ -* ֵ: 0 ʧ 1 ɹ +* 函 数 名: h7swd_WriteMemory +* 功能说明: 写CPU内存(或寄存器) +* 形 参: addr : 目标地址 +* data : 数据缓冲区,含长度 +* 返 回 值: 0 失败 1 成功 ********************************************************************************************************* */ static int h7swd_WriteMemory(lua_State* L) @@ -99,36 +99,36 @@ static int h7swd_WriteMemory(lua_State* L) const char *data; size_t len = 0; - sysTickInit(); /* DAPеijʼ,ȫֱʼ */ + sysTickInit(); /* 这是DAP驱动中的初始化函数,全局变量初始化 */ - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { - addr = luaL_checknumber(L, 1); /* Ŀڴַ */ + addr = luaL_checknumber(L, 1); /* 目标内存地址 */ } else { - lua_pushnumber(L, 0); /* */ + lua_pushnumber(L, 0); /* 出错 */ return 1; } - if (lua_type(L, 2) == LUA_TSTRING) /* жϵ2 */ + if (lua_type(L, 2) == LUA_TSTRING) /* 判断第2个参数 */ { - data = luaL_checklstring(L, 2, &len); /* 1Dzλã lenstri ij */ + data = luaL_checklstring(L, 2, &len); /* 1是参数的位置, len是stri 的长度 */ } if (len > 128 * 1024) { - lua_pushnumber(L, 0); /* */ + lua_pushnumber(L, 0); /* 出错 */ return 1; } if (swd_write_memory(addr, (uint8_t *)data, len) == 0) { - lua_pushnumber(L, 0); /* */ + lua_pushnumber(L, 0); /* 出错 */ } else { - lua_pushnumber(L, 1); /* ɹ */ + lua_pushnumber(L, 1); /* 成功 */ } return 1; @@ -136,11 +136,11 @@ static int h7swd_WriteMemory(lua_State* L) /* ********************************************************************************************************* -* : h7swd_ReadMemory -* ˵: CPUڴ棨Ĵ -* : addr : Ŀַ -* data : ݻ -* ֵ: 0 ʧ 1 ɹ +* 函 数 名: h7swd_ReadMemory +* 功能说明: 读CPU内存(或寄存器) +* 形 参: addr : 目标地址 +* data : 数据缓冲区,含长度 +* 返 回 值: 0 失败 1 成功 ********************************************************************************************************* */ static int h7swd_ReadMemory(lua_State* L) @@ -148,17 +148,17 @@ static int h7swd_ReadMemory(lua_State* L) uint32_t addr; uint32_t num; - if (lua_type(L, 1) == LUA_TNUMBER) /* жϵ1 */ + if (lua_type(L, 1) == LUA_TNUMBER) /* 判断第1个参数 */ { - addr = luaL_checknumber(L, 1); /* 1Dzλã lenstri ij */ + addr = luaL_checknumber(L, 1); /* 1是参数的位置, len是stri 的长度 */ } else { - lua_pushnumber(L, 0); /* */ + lua_pushnumber(L, 0); /* 出错 */ return 1; } - if (lua_type(L, 2) == LUA_TNUMBER) /* жϵ2 */ + if (lua_type(L, 2) == LUA_TNUMBER) /* 判断第2个参数 */ { num = luaL_checknumber(L, 2); @@ -167,21 +167,21 @@ static int h7swd_ReadMemory(lua_State* L) if (num > LUA_READ_LEN_MAX) { - lua_pushnumber(L, 0); /* */ + lua_pushnumber(L, 0); /* 出错 */ return 1; } if (swd_read_memory(addr, s_lua_read_buf, num) == 0) { - lua_pushnumber(L, 0); /* */ + lua_pushnumber(L, 0); /* 出错 */ } else { - lua_pushnumber(L, 1); /* ɹ */ + lua_pushnumber(L, 1); /* 成功 */ } lua_pushlstring(L, (char *)s_lua_read_buf, num); return 1; } -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/lua/if/lua_if_swd.h b/User/lua/if/lua_if_swd.h index f453aa9..65bd44c 100755 --- a/User/lua/if/lua_if_swd.h +++ b/User/lua/if/lua_if_swd.h @@ -1,15 +1,15 @@ /* ********************************************************************************************************* * -* ģ : lua swdģ -* ļ : lua_if_swd.h -* : V1.0 -* ˵ : -* ޸ļ¼ : -* 汾 ˵ -* v1.0 2019-09-29 armfly ׷ +* 模块名称 : lua swd模块 +* 文件名称 : lua_if_swd.h +* 版 本 : V1.0 +* 说 明 : 。 +* 修改记录 : +* 版本号 日期 作者 说明 +* v1.0 2019-09-29 armfly 首发 * -* Copyright (C), 2019-2030, www.armfly.com +* Copyright (C), 2019-2030, 安富莱电子 www.armfly.com * ********************************************************************************************************* */ @@ -21,4 +21,4 @@ void lua_swd_RegisterFun(void); #endif -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/lua/if/lua_if_tcp_udp.c b/User/lua/if/lua_if_tcp_udp.c index 39c5013..aa30e2a 100755 --- a/User/lua/if/lua_if_tcp_udp.c +++ b/User/lua/if/lua_if_tcp_udp.c @@ -7,10 +7,10 @@ void lua_tcp_RegisterFun(void) { - //ָĺעΪLuaȫֺеһַΪLua - //ڵCʱʹõȫֺڶΪʵCָ롣 + //将指定的函数注册为Lua的全局函数变量,其中第一个字符串参数为Lua代码 + //在调用C函数时使用的全局函数名,第二个参数为实际C函数的指针。 //lua_register(g_Lua, "udp_print", lua_udp_print); } -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/lua/if/lua_if_tcp_udp.h b/User/lua/if/lua_if_tcp_udp.h index a828b45..b3ce459 100755 --- a/User/lua/if/lua_if_tcp_udp.h +++ b/User/lua/if/lua_if_tcp_udp.h @@ -1,15 +1,15 @@ /* ********************************************************************************************************* * -* ģ : lua tcp udpģ -* ļ : lua_tcp_udp.h -* : V1.0 -* ˵ : -* ޸ļ¼ : -* 汾 ˵ -* v1.0 2019-07-03 armfly ׷ +* 模块名称 : lua tcp udp模块 +* 文件名称 : lua_tcp_udp.h +* 版 本 : V1.0 +* 说 明 : 。 +* 修改记录 : +* 版本号 日期 作者 说明 +* v1.0 2019-07-03 armfly 首发 * -* Copyright (C), 2019-2030, www.armfly.com +* Copyright (C), 2019-2030, 安富莱电子 www.armfly.com * ********************************************************************************************************* */ @@ -21,4 +21,4 @@ void lua_tcp_RegisterFun(void); #endif -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/lua/if/lua_if_tim.c b/User/lua/if/lua_if_tim.c index 9022a32..61fe3b1 100755 --- a/User/lua/if/lua_if_tim.c +++ b/User/lua/if/lua_if_tim.c @@ -1,4 +1,4 @@ -//ģ黹δʵ +//本模块还未实现 #include "lauxlib.h" #include "lualib.h" @@ -10,12 +10,12 @@ static int lua_udp_print(lua_State* L); void lua_tim_RegisterFun(void) { - //ָĺעΪLuaȫֺеһַΪLua - //ڵCʱʹõȫֺڶΪʵCָ롣 + //将指定的函数注册为Lua的全局函数变量,其中第一个字符串参数为Lua代码 + //在调用C函数时使用的全局函数名,第二个参数为实际C函数的指针。 //lua_register(g_Lua, "udp_print", lua_udp_print); } -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/lua/if/lua_if_tim.h b/User/lua/if/lua_if_tim.h index d09a8f4..9772185 100755 --- a/User/lua/if/lua_if_tim.h +++ b/User/lua/if/lua_if_tim.h @@ -1,15 +1,15 @@ /* ********************************************************************************************************* * -* ģ : lua TIMʱģ -* ļ : lua_ttim.h -* : V1.0 -* ˵ : -* ޸ļ¼ : -* 汾 ˵ -* v1.0 2019-07-03 armfly ׷ +* 模块名称 : lua TIM定时器模块 +* 文件名称 : lua_ttim.h +* 版 本 : V1.0 +* 说 明 : 。 +* 修改记录 : +* 版本号 日期 作者 说明 +* v1.0 2019-07-03 armfly 首发 * -* Copyright (C), 2019-2030, www.armfly.com +* Copyright (C), 2019-2030, 安富莱电子 www.armfly.com * ********************************************************************************************************* */ @@ -21,4 +21,4 @@ void lua_tim_RegisterFun(void); #endif -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/modbus/modbus_slave.c b/User/modbus/modbus_slave.c index 25cc019..a5d69c1 100755 --- a/User/modbus/modbus_slave.c +++ b/User/modbus/modbus_slave.c @@ -19,6 +19,8 @@ #include "modbus_register.h" #include "modbus_iap.h" #include "lua_if.h" +#include "usbd_cdc_interface.h" + static void MODS_AnalyzeApp(void); @@ -34,9 +36,9 @@ static void MODS_10H(void); static void MODS_0FH(void); static void MODS_64H(void); static void MODS_65H(void); -static void MODS_66H(void); -static void MODS_67H(void); -static void MODS_68H(void); +//static void MODS_66H(void); +//static void MODS_67H(void); +//static void MODS_68H(void); static void MODS_60H(void); /* PC发这个指令读取波形数据 */ @@ -1191,7 +1193,7 @@ err_ret: * 返 回 值: 无 ********************************************************************************************************* */ -static void MODS_66H(void) +void MODS_66H(void) { /* 66H - write file @@ -1253,7 +1255,7 @@ err_ret: * 返 回 值: 无 ********************************************************************************************************* */ -static void MODS_67H(void) +void MODS_67H(void) { /* 67H - read file @@ -1429,7 +1431,7 @@ err_ret: * 返 回 值: 无 ********************************************************************************************************* */ -static void Send_61H(uint8_t _Ch, uint32_t _Offset, uint16_t _PackageLen) +void Send_61H(uint8_t _Ch, uint32_t _Offset, uint16_t _PackageLen) { /* 从机应答: (然后开始多包连续应答) diff --git a/User/usbd_mass_storage/usbd_it.c b/User/usbd_mass_storage/usbd_it.c index 97ec938..2767adb 100755 --- a/User/usbd_mass_storage/usbd_it.c +++ b/User/usbd_mass_storage/usbd_it.c @@ -1,16 +1,16 @@ /* ********************************************************************************************************* * -* ģ : USB device жϷ -* ļ : usb_it.c -* : V1.0 -* ˵ : ļUSB deviceжϷֻ轫ļ빤̼ɣٵ stm32f4xx_it.c ЩISR +* 模块名称 : USB device 中断服务程序 +* 文件名称 : usb_it.c +* 版 本 : V1.0 +* 说 明 : 本文件存放USB device中断服务程序。只需将该文件加入工程即可,无需再到 stm32f4xx_it.c 中添加这些ISR程序 * -* ޸ļ¼ : -* 汾 ˵ -* V1.0 2018-09-08 armfly ʽ +* 修改记录 : +* 版本号 日期 作者 说明 +* V1.0 2018-09-08 armfly 正式发布 * -* Copyright (C), 2018-2030, www.armfly.com +* Copyright (C), 2018-2030, 安富莱电子 www.armfly.com * ********************************************************************************************************* */ @@ -20,10 +20,10 @@ /* ********************************************************************************************************* -* : OTG_FS_IRQHandler, OTG_HS_IRQHandler -* ˵: USB HOSTжϷ -* : -* ֵ: +* 函 数 名: OTG_FS_IRQHandler, OTG_HS_IRQHandler +* 功能说明: USB HOST中断服务程序 +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ #ifdef USE_USB_FS @@ -35,4 +35,4 @@ void OTG_HS_IRQHandler(void) HAL_PCD_IRQHandler(&hpcd); } -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/usbd_mass_storage/usbd_storage.c b/User/usbd_mass_storage/usbd_storage.c index f266ceb..16107df 100755 --- a/User/usbd_mass_storage/usbd_storage.c +++ b/User/usbd_mass_storage/usbd_storage.c @@ -65,7 +65,7 @@ //#define LUN_NAND 2 -/* SDRAM ̵ĵַͿռ䡣 4Mֽ */ +/* 定义SDRAM 虚拟磁盘的地址和空间。 4M字节 */ #define SDRAM_DISK_ADDR SDRAM_APP_BUF #define SDRAM_DISK_SIZE (4 * 1024 * 1024) @@ -272,7 +272,7 @@ int8_t STORAGE_Read(uint8_t lun, uint8_t * buf, uint32_t blk_addr, // // if (blk_len * 512 > SDRAM_DISK_SIZE) // { -// break; /* 쳣 */ +// break; /* 异常 */ // } // // p_buf = (uint32_t *)buf; @@ -325,7 +325,7 @@ int8_t STORAGE_Write(uint8_t lun, uint8_t * buf, uint32_t blk_addr, // // if (blk_len * 512 > SDRAM_DISK_SIZE) // { -// break; /* 쳣 */ +// break; /* 异常 */ // } // // printf_ok("sdram_Write ok: BlockNo=%d, Count=%d", blk_addr, blk_len); diff --git a/User/usbd_mass_storage/usbd_usr.c b/User/usbd_mass_storage/usbd_usr.c index bc35404..b547827 100755 --- a/User/usbd_mass_storage/usbd_usr.c +++ b/User/usbd_mass_storage/usbd_usr.c @@ -1,16 +1,16 @@ /* ********************************************************************************************************* * -* ģ : USB devie -* ļ : usbd_usr.c -* : V1.0 -* ˵ : װU̲ṩAPPʹ. +* 模块名称 : USB devie 虚拟磁盘驱动 +* 文件名称 : usbd_usr.c +* 版 本 : V1.0 +* 说 明 : 封装虚拟U盘操作函数,提供给APP使用. * -* ޸ļ¼ : -* 汾 ˵ -* V1.0 2018-09-05 armfly ʽ +* 修改记录 : +* 版本号 日期 作者 说明 +* V1.0 2018-09-05 armfly 正式发布 * -* Copyright (C), 2015-2030, www.armfly.com +* Copyright (C), 2015-2030, 安富莱电子 www.armfly.com * ********************************************************************************************************* */ @@ -27,10 +27,10 @@ PCD_HandleTypeDef hpcd; /* ********************************************************************************************************* -* : usbd_OpenMassStorage -* ˵: USB -* : -* ֵ: +* 函 数 名: usbd_OpenMassStorage +* 功能说明: 打开USB +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ void usbd_OpenMassStorage(void) @@ -54,10 +54,10 @@ void usbd_OpenMassStorage(void) /* ********************************************************************************************************* -* : usbd_CloseMassStorage -* ˵: رUSB -* : -* ֵ: +* 函 数 名: usbd_CloseMassStorage +* 功能说明: 关闭USB +* 形 参: 无 +* 返 回 值: 无 ********************************************************************************************************* */ void usbd_CloseMassStorage(void) @@ -67,4 +67,4 @@ void usbd_CloseMassStorage(void) USBD_DeInit(&USBD_Device); } -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/usbd_mass_storage/usbd_usr.h b/User/usbd_mass_storage/usbd_usr.h index f6d7c1d..4b380a0 100755 --- a/User/usbd_mass_storage/usbd_usr.h +++ b/User/usbd_mass_storage/usbd_usr.h @@ -1,9 +1,9 @@ /* ********************************************************************************************************* * -* ģ : USB Deviceӿģ -* ļ : usbd_usr.h -* : V1.0 +* 模块名称 : USB Device接口模块 +* 文件名称 : usbd_usr.h +* 版 本 : V1.0 * ********************************************************************************************************* */ @@ -16,5 +16,5 @@ void usbd_CloseMassStorage(void); #endif -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/ diff --git a/User/usbd_virtual_com/readme.txt b/User/usbd_virtual_com/readme.txt index aeda334..c657049 100755 --- a/User/usbd_virtual_com/readme.txt +++ b/User/usbd_virtual_com/readme.txt @@ -52,7 +52,7 @@ This is a typical application on how to use the STM32H743xx USB OTG Device perip behaves as a USB-to-RS232 bridge following the Virtual COM Port (VCP) implementation. - On one side, the STM32 exchanges data with a PC host through USB interface in Device mode. - On the other side, the STM32 exchanges data with other devices (same host, other host, - other devices) through the UART interface (RS232). + other devices� through the UART interface (RS232). At the beginning of the main program the HAL_Init() function is called to reset all the peripherals, initialize the Flash interface and the systick. @@ -148,20 +148,17 @@ compiler preprocessor (already done in the preconfigured projects provided with - "USE_USB_FS" when using USB Full Speed (FS) Core @Note If the application is using the DTCM/ITCM memories (@0x20000000/ 0x0000000: not cacheable and only accessible - by the Cortex M7 and the MDMA), no need for cache maintenance when the Cortex M7 and the MDMA access these RAMs. - If the application needs to use DMA(or other masters) based access or requires more RAM, then the user has to: - - Use a non TCM SRAM. (example : D1 AXI-SRAM @ 0x24000000) - - Add a cache maintenance mechanism to ensure the cache coherence between CPU and other masters(DMAs,DMA2D,LTDC,MDMA). - - The addresses and the size of cacheable buffers (shared between CPU and other masters) - must be properlydefined to be aligned to L1-CACHE line size (32 bytes). - -@Note It is recommended to enable the cache and maintain its coherence, but depending on the use case - It is also possible to configure the MPU as "Write through", to guarantee the write access coherence. - In that case, the MPU must be configured as Cacheable/Bufferable/Not Shareable. - Even though the user must manage the cache coherence for read accesses. -Please refer to the AN4838 Managing memory protection unit (MPU) in STM32 MCUs -Please refer to the AN4839 Level 1 cache on STM32F7 Series - + by the Cortex M7 and the 燤DMA), no need for cache maintenance when the Cortex M7 and the MDMA access these RAMs. +牋牋�If the application needs to use DMA(or other masters) based access or requires more RAM, then 爐he user has to: +牋牋牋牋牋��- Use a non TCM SRAM. (example : D1 AXI-SRAM @ 0x24000000) +牋牋牋牋牋��- Add a cache maintenance mechanism to ensure the cache coherence between CPU and other masters(DMAs,DMA2D,LTDC,MDMA). +牋牋牋� - The addresses and the size of cacheable buffers (shared between CPU and other masters) + must be properly燿efined to be aligned to L1-CACHE line size (32 bytes). +�@Note It is recommended to enable the cache and maintain its coherence, but depending on the use case +牋牋�It is also possible to configure the MPU as "Write through", to guarantee the write access coherence. +牋牋牋牋牋��In that case, the MPU must be configured as Cacheable/Bufferable/Not Shareable. +牋牋牋牋牋��Even though the user must manage the cache coherence for read accesses. +牋牋牋牋牋牋牋Please refer to the AN4838 揗anaging memory protection unit (MPU) in STM32 MCUs�牋牋牋牋牋牋牋Please refer to the AN4839 揕evel 1 cache on STM32F7 Series� @par Directory contents - USB_Device/CDC_Standalone/Src/main.c Main program diff --git a/User/usbd_virtual_com/usbd_cdc_interface.c b/User/usbd_virtual_com/usbd_cdc_interface.c index 5c897a4..03c099b 100755 --- a/User/usbd_virtual_com/usbd_cdc_interface.c +++ b/User/usbd_virtual_com/usbd_cdc_interface.c @@ -1,16 +1,16 @@ /* ********************************************************************************************************* * -* ģ : CDC⴮Ӳ -* ļ : usbd_cdc_interface.c -* : V1.0 -* ˵ : +* 妯″潡鍚岖О : CDC铏氭嫙涓插彛纭欢閰岖疆 +* 鏂囦欢鍚岖О : usbd_cdc_interface.c +* 鐗? 链?: V1.0 +* 璇? 鏄?: * -* ޸ļ¼ : -* 汾 ˵ -* V1.0 2018-12-11 armfly ʽ +* 淇敼璁板綍 : +* 鐗堟湰鍙? 镞ユ湡 浣滆€? 璇存槑 +* V1.0 2018-12-11 armfly 姝e纺鍙戝竷 * -* Copyright (C), 2018-2030, www.armfly.com +* Copyright (C), 2018-2030, 瀹夊瘜銮辩数瀛?www.armfly.com * ********************************************************************************************************* */ @@ -25,7 +25,7 @@ uint16_t g_ModbusRxLen = 0; /* Private typedef ----------------------------------------------------------- */ /* Private define ------------------------------------------------------------ */ -#define APP_RX_DATA_SIZE 2048 // 512ֽûɶ */ +#define APP_RX_DATA_SIZE 2048 // 濂藉儚澶т簬512瀛楄妭娌″暐浣灭敤 */ #define APP_TX_DATA_SIZE 2048 /* Private macro ------------------------------------------------------------- */ @@ -56,7 +56,7 @@ uint32_t UserTxBufPtrOut = 0; /* Increment this pointer or roll it back to UART_HandleTypeDef A_UartHandle; UART_HandleTypeDef B_UartHandle; -UART_HandleTypeDef *NowUartHandle = &A_UartHandle; /* ǰѡUart */ +UART_HandleTypeDef *NowUartHandle = &A_UartHandle; /* 褰揿墠阃夋嫨镄刄art */ /* TIM handler declaration */ TIM_HandleTypeDef TimHandle; @@ -81,10 +81,10 @@ USBD_CDC_ItfTypeDef USBD_CDC_fops = { /* ********************************************************************************************************* -* : SelectCDCUart -* ˵: ѡCDC -* : _com : 1, 4 -* ֵ: +* 鍑?鏁?鍚? SelectCDCUart +* 锷熻兘璇存槑: 阃夋嫨CDC涓插彛 +* 褰? 鍙? _com : 1, 4 +* 杩?锲?链? 镞? ********************************************************************************************************* */ void SelectCDCUart(uint8_t _com) @@ -259,7 +259,7 @@ void HAL_UART_MspInit(UART_HandleTypeDef * huart) HAL_NVIC_EnableIRQ(B_USARTx_IRQn); } -// ѵTIMúUART޹ +// 宸插埌TIM閰岖疆鍑芥暟锛屽拰UART镞犲叧 // /* ##-7- Enable TIM peripherals Clock ####################################### // */ // TIMx_CLK_ENABLE(); @@ -510,10 +510,10 @@ static int8_t CDC_Itf_Control(uint8_t cmd, uint8_t * pbuf, uint16_t length) */ /* ********************************************************************************************************* -* : HAL_TIM_PeriodElapsedCallback -* ˵: ʱѯ. 5ms Ե1ms -* : _com : 1, 4 -* ֵ: +* 鍑?鏁?鍚? HAL_TIM_PeriodElapsedCallback +* 锷熻兘璇存槑: 瀹氭椂杞. 5ms 锛屾渶蹇彲浠ヨ皟鍒?ms +* 褰? 鍙? _com : 1, 4 +* 杩?锲?链? 镞? ********************************************************************************************************* */ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef * htim) @@ -580,11 +580,11 @@ void HAL_UART_RxCpltCallback(UART_HandleTypeDef * huart) */ /* ********************************************************************************************************* -* : CDC_Itf_Receive -* ˵: STM32յUSBݺִб ݳ512ֽڡ CDC_DATA_HS_MAX_PACKET_SIZE = 512 -* λд512ֽڵݣְ䡣 -* : -* ֵ: +* 鍑?鏁?鍚? CDC_Itf_Receive +* 锷熻兘璇存槑: STM32鏀跺埌USB鏁版嵁鍚庢墽琛屾湰鍑芥暟銆?鏁版嵁闀垮害链€澶?12瀛楄妭銆? CDC_DATA_HS_MAX_PACKET_SIZE = 512 +* 濡傛灉涓娄綅链烘湁澶т簬512瀛楄妭镄勬暟鎹紝鍒欎细鍒嗗寘浼犺緭銆? +* 褰? 鍙? 镞? +* 杩?锲?链? 镞? ********************************************************************************************************* */ static int8_t CDC_Itf_Receive(uint8_t * Buf, uint32_t *Len) @@ -603,7 +603,7 @@ static int8_t CDC_Itf_Receive(uint8_t * Buf, uint32_t *Len) g_ModbusRxLen += len; } - /* жϳȲ̫õķ. 512ֽ */ + /* 鍒ゆ柇闀垮害涓嶆槸澶ソ镄勬柟妗? 濡傛灉澶т簬512瀛楄妭 */ if (len != 512) { MODS_Poll(g_ModbusRxBuf, g_ModbusRxLen); @@ -635,7 +635,7 @@ static int8_t CDC_Itf_Receive(uint8_t * Buf, uint32_t *Len) { if (NowUartHandle == &A_UartHandle) { - RS485_TX_EN(); /* 485ʹ */ + RS485_TX_EN(); /* 485鍙戦€佷娇鑳?*/ HAL_UART_Transmit_DMA(&A_UartHandle, Buf, *Len); @@ -655,17 +655,17 @@ static int8_t CDC_Itf_Receive(uint8_t * Buf, uint32_t *Len) */ /* ********************************************************************************************************* -* : HAL_UART_TxCpltCallback -* ˵: STM32ڷȫʱִб -* : -* ֵ: +* 鍑?鏁?鍚? HAL_UART_TxCpltCallback +* 锷熻兘璇存槑: STM32涓插彛鍙戝嚭镄勬暟鎹叏閮ㄥ彂阃佸畲姣曟椂镓ц链嚱鏁般€? +* 褰? 鍙? 镞? +* 杩?锲?链? 镞? ********************************************************************************************************* */ void HAL_UART_TxCpltCallback(UART_HandleTypeDef * huart) { if (NowUartHandle == &A_UartHandle) { - RS485_RX_EN(); /* ڷϡֹ485ͣΪģʽ */ + RS485_RX_EN(); /* 涓插彛鍙戦€佸畲姣曘€傜姝?85鍙戦€侊紝璁剧疆涓烘帴鏀舵ā寮?*/ } else if (NowUartHandle == &B_UartHandle) { @@ -824,10 +824,10 @@ void HAL_UART_ErrorCallback(UART_HandleTypeDef * UartHandle) /* ********************************************************************************************************* -* : USBCom_SendBufNow -* ˵: STM32һݵPCUSB -* : -* ֵ: +* 鍑?鏁?鍚? USBCom_SendBufNow +* 锷熻兘璇存槑: STM32鍙戦€佷竴涓叉暟鎹埌PC链篣SB锛岀珛鍗冲彂阃? +* 褰? 鍙? 镞? +* 杩?锲?链? 镞? ********************************************************************************************************* */ uint8_t USBCom_SendBufNow(int _Port, uint8_t *_Buf, uint16_t _Len) @@ -843,10 +843,10 @@ uint8_t USBCom_SendBufNow(int _Port, uint8_t *_Buf, uint16_t _Len) /* ********************************************************************************************************* -* : USBCom_SendBuf -* ˵: һݵUSB, 棬 -* : -* ֵ: +* 鍑?鏁?鍚? USBCom_SendBuf +* 锷熻兘璇存槑: 鍙戦€佷竴涓叉暟鎹埌USB涓插彛, 浠呬粎缂揿瓨锛屼笉鍙戦€? +* 褰? 鍙? 镞? +* 杩?锲?链? 镞? ********************************************************************************************************* */ uint8_t USBCom_SendBuf(int _Port, uint8_t *_Buf, uint16_t _Len) diff --git a/User/usbd_virtual_com/usbd_cdc_interface.h b/User/usbd_virtual_com/usbd_cdc_interface.h index ce54319..e266657 100755 --- a/User/usbd_virtual_com/usbd_cdc_interface.h +++ b/User/usbd_virtual_com/usbd_cdc_interface.h @@ -51,17 +51,17 @@ #include "usbd_cdc.h" /* - H7-TOOL ⴮ڣRS232 RS485TTL-UARTʹõPA9 PA10 + H7-TOOL 虚拟串口(RS232, RS485,TTL-UART)使用的PA9 PA10 PA9/USART1_TX/PE13/FMC_D10 PA10/USART1_RX/PE14/FMC_D11 - ʱESP32ʱԽӳ䵽UART4ڣͨPCֲATָ + 临时调试ESP32时,可以将其映射到UART4口,通过PC串口助手测试AT指令。 PH13/UART4_TX PH14/UART4_RX */ -/* AڣBл */ -#if 1 /* H7-TOOL ȱʡʹUART */ +/* 定义物理串口 A口,B口切换 */ +#if 1 /* H7-TOOL 缺省使用这个UART */ #define A_USARTx USART1 #define A_USARTx_CLK_ENABLE() __HAL_RCC_USART1_CLK_ENABLE() @@ -102,7 +102,7 @@ #define A_USARTx_DMA_RX_IRQHandler DMA1_Stream5_IRQHandler #endif -#if 1 /* H7-TOOL ESP32ģ̼ʱʹUART */ +#if 1 /* H7-TOOL 升级ESP32模块固件时使用这个UART */ #define B_USARTx UART4 #define B_USARTx_CLK_ENABLE() __HAL_RCC_UART4_CLK_ENABLE() @@ -143,7 +143,7 @@ #endif -/* Definition for TIMx clock resources . TIM3 DSOʾADCԴ */ +/* Definition for TIMx clock resources . TIM3 用于DSO示波器ADC触发源 */ #define TIMx TIM15 #define TIMx_CLK_ENABLE __HAL_RCC_TIM15_CLK_ENABLE #define TIMx_FORCE_RESET() __HAL_RCC_TIM15_FORCE_RESET() diff --git a/User/usbd_virtual_com/usbd_it.c b/User/usbd_virtual_com/usbd_it.c index 664046f..8cbb56a 100755 --- a/User/usbd_virtual_com/usbd_it.c +++ b/User/usbd_virtual_com/usbd_it.c @@ -1,16 +1,16 @@ /* ********************************************************************************************************* * -* ģ : USB device жϷ -* ļ : usb_it.c -* : V1.0 -* ˵ : ļUSB deviceжϷֻ轫ļ빤̼ɣٵ stm32f4xx_it.c ЩISR +* 妯″潡鍚岖О : USB device 涓柇链嶅姟绋嫔簭 +* 鏂囦欢鍚岖О : usb_it.c +* 鐗? 链?: V1.0 +* 璇? 鏄?: 链枃浠跺瓨鏀绾SB device涓柇链嶅姟绋嫔簭銆傚彧闇€灏呜鏂囦欢锷犲叆宸ョ▼鍗冲彲锛屾棤闇€鍐嶅埌 stm32f4xx_it.c 涓坊锷犺繖浜汭SR绋嫔簭 * -* ޸ļ¼ : -* 汾 ˵ -* V1.0 2018-09-08 armfly ʽ +* 淇敼璁板綍 : +* 鐗堟湰鍙? 镞ユ湡 浣滆€? 璇存槑 +* V1.0 2018-09-08 armfly 姝e纺鍙戝竷 * -* Copyright (C), 2018-2030, www.armfly.com +* Copyright (C), 2018-2030, 瀹夊瘜銮辩数瀛?www.armfly.com * ********************************************************************************************************* */ diff --git a/User/usbd_virtual_com/usbd_user.c b/User/usbd_virtual_com/usbd_user.c index 358cbbb..dd2004a 100755 --- a/User/usbd_virtual_com/usbd_user.c +++ b/User/usbd_virtual_com/usbd_user.c @@ -1,16 +1,16 @@ /* ********************************************************************************************************* * -* ģ : USB devie ⴮ -* ļ : usbd_user.c -* : V1.0 -* ˵ : װ⴮ڲṩAPPʹ. +* 妯″潡鍚岖О : USB devie 铏氭嫙涓插彛椹卞姩 +* 鏂囦欢鍚岖О : usbd_user.c +* 鐗? 链?: V1.0 +* 璇? 鏄?: 灏佽铏氭嫙涓插彛鎿崭綔鍑芥暟锛屾彁渚涚粰APP浣跨敤. * -* ޸ļ¼ : -* 汾 ˵ -* V1.0 2018-12-11 armfly ʽ +* 淇敼璁板綍 : +* 鐗堟湰鍙? 镞ユ湡 浣滆€? 璇存槑 +* V1.0 2018-12-11 armfly 姝e纺鍙戝竷 * -* Copyright (C), 2018-2030, www.armfly.com +* Copyright (C), 2018-2030, 瀹夊瘜銮辩数瀛?www.armfly.com * ********************************************************************************************************* */ @@ -23,15 +23,15 @@ extern PCD_HandleTypeDef hpcd; extern void SelectCDCUart(uint8_t _com); /* ********************************************************************************************************* -* : usbd_OpenCDC -* ˵: USB -* : _com : 1, 4 -* ֵ: +* 鍑?鏁?鍚? usbd_OpenCDC +* 锷熻兘璇存槑: 镓揿紑USB +* 褰? 鍙? _com : 1, 4 +* 杩?锲?链? 镞? ********************************************************************************************************* */ void usbd_OpenCDC(uint8_t _com) { - SelectCDCUart(_com); /* ѡuart1uart4Ϊ⴮ */ + SelectCDCUart(_com); /* 阃夋嫨uart1鎴杣art4浣滀负铏氭嫙涓插彛 */ /* Init Device Library */ USBD_Init(&USBD_Device, &VCP_Desc, 0); @@ -48,10 +48,10 @@ void usbd_OpenCDC(uint8_t _com) /* ********************************************************************************************************* -* : usbd_CloseCDC -* ˵: رUSB -* : -* ֵ: +* 鍑?鏁?鍚? usbd_CloseCDC +* 锷熻兘璇存槑: 鍏抽棴USB +* 褰? 鍙? 镞? +* 杩?锲?链? 镞? ********************************************************************************************************* */ void usbd_CloseCDC(void) @@ -66,4 +66,4 @@ void usbd_CloseCDC(void) USBD_DeInit(&USBD_Device); } -/***************************** www.armfly.com (END OF FILE) *********************************/ +/***************************** 瀹夊瘜銮辩数瀛?www.armfly.com (END OF FILE) *********************************/ diff --git a/User/usbd_virtual_com/usbd_user.h b/User/usbd_virtual_com/usbd_user.h index 0da040d..0b8b92b 100755 --- a/User/usbd_virtual_com/usbd_user.h +++ b/User/usbd_virtual_com/usbd_user.h @@ -1,16 +1,16 @@ /* ********************************************************************************************************* * -* ģ : USB devie ⴮ -* ļ : usbd_user.h -* : V1.0 -* ˵ : װ⴮ڲṩAPPʹ. +* 模块名称 : USB devie 虚拟串口驱动 +* 文件名称 : usbd_user.h +* 版 本 : V1.0 +* 说 明 : 封装虚拟串口操作函数,提供给APP使用. * -* ޸ļ¼ : -* 汾 ˵ -* V1.0 2018-12-11 armfly ʽ +* 修改记录 : +* 版本号 日期 作者 说明 +* V1.0 2018-12-11 armfly 正式发布 * -* Copyright (C), 2018-2030, www.armfly.com +* Copyright (C), 2018-2030, 安富莱电子 www.armfly.com * ********************************************************************************************************* */ diff --git a/删除目标文件(用于打包备份).bat b/删除目标文件(用于打包备份).bat index 7d49e36..e71e66c 100755 --- a/删除目标文件(用于打包备份).bat +++ b/删除目标文件(用于打包备份).bat @@ -4,7 +4,8 @@ rd /Q /S project\MDK-ARM(uV5)\DebugConfig del /Q project\MDK-ARM(uV5)\*.bak del /Q project\MDK-ARM(uV5)\*.dep del /Q project\MDK-ARM(uV5)\JLink* -del /Q project\MDK-ARM(uV5)\project.uvgui.* +del /Q project\MDK-ARM(uV5)\project.uvguix.* +del /Q project\MDK-ARM(uV5)\*.scvd rd /Q /S project\MDK5-DAPLink\Objects rd /Q /S project\MDK5-DAPLink\Listings From bda18c3f4d854217f79b838565fbf7e6f2d805f7 Mon Sep 17 00:00:00 2001 From: armfly <49202476+armfly@users.noreply.github.com> Date: Sun, 3 Nov 2019 05:40:30 +0800 Subject: [PATCH 2/2] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 11f6045..f5cd1fc 100644 --- a/README.md +++ b/README.md @@ -6,3 +6,6 @@ 3、程序定位地址(FLASH):0x0802 0000,容量2MB - 128KB 4、MDK中FLASH配置使用STM32H743配置,强行使用2MB Flash + +5、源文件编码为UTF-8, TAB = 4个空格 +