From e8b5fffe19ffd3e5598e55c0e203a781d23524c0 Mon Sep 17 00:00:00 2001 From: xiaoyi <2985672336@qq.com> Date: Mon, 30 Aug 2021 18:51:08 +0800 Subject: [PATCH] =?UTF-8?q?[update]=20MQTT=E5=8D=8F=E8=AE=AE=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E4=BA=91=E5=B9=B3=E5=8F=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- firmware/stm32/smart_dormitory/.mxproject | 48 +- .../Core/Inc/stm32f1xx_hal_conf.h | 2 +- .../smart_dormitory/Core/Inc/stm32f1xx_it.h | 2 +- .../stm32/smart_dormitory/Core/Src/main.c | 48 +- .../smart_dormitory/Core/Src/stm32f1xx_it.c | 28 +- .../stm32/smart_dormitory/Core/Src/usart.c | 66 +- .../MDK-ARM/Project.uvguix.Administrator | 115 +- .../smart_dormitory/MDK-ARM/Project.uvoptx | 36 +- .../smart_dormitory/MDK-ARM/Project.uvprojx | 12 +- .../MDK-ARM/Project/Project.map | 1307 ++++++++--------- .../smart_dormitory/MDK-ARM/Project/adc.crf | Bin 602129 -> 602126 bytes .../smart_dormitory/MDK-ARM/Project/dht11.crf | Bin 603526 -> 603523 bytes .../smart_dormitory/MDK-ARM/Project/dma.crf | Bin 601434 -> 601434 bytes .../smart_dormitory/MDK-ARM/Project/dma.d | 38 + .../MDK-ARM/Project/{tcp.o => dma.o} | Bin 667624 -> 663496 bytes .../MDK-ARM/Project/esp8266.crf | Bin 607408 -> 607778 bytes .../smart_dormitory/MDK-ARM/Project/flash.crf | Bin 602476 -> 602473 bytes .../smart_dormitory/MDK-ARM/Project/gpio.crf | Bin 602580 -> 602577 bytes .../smart_dormitory/MDK-ARM/Project/i2c.crf | Bin 602195 -> 602192 bytes .../smart_dormitory/MDK-ARM/Project/main.crf | Bin 615939 -> 613896 bytes .../smart_dormitory/MDK-ARM/Project/mqtt.crf | Bin 610856 -> 604900 bytes .../smart_dormitory/MDK-ARM/Project/oled.crf | Bin 603818 -> 603815 bytes .../MDK-ARM/Project/process.crf | Bin 603784 -> 603750 bytes .../smart_dormitory/MDK-ARM/Project/rc522.crf | Bin 611028 -> 611025 bytes .../MDK-ARM/Project/sensor_light.crf | Bin 601838 -> 601835 bytes .../smart_dormitory/MDK-ARM/Project/spi.crf | Bin 602209 -> 602206 bytes .../MDK-ARM/Project/stm32f1xx_hal.crf | Bin 595029 -> 595026 bytes .../MDK-ARM/Project/stm32f1xx_hal_adc.crf | Bin 607780 -> 607777 bytes .../MDK-ARM/Project/stm32f1xx_hal_adc_ex.crf | Bin 602862 -> 602859 bytes .../MDK-ARM/Project/stm32f1xx_hal_cortex.crf | Bin 594490 -> 594487 bytes .../MDK-ARM/Project/stm32f1xx_hal_dma.crf | Bin 601486 -> 601483 bytes .../MDK-ARM/Project/stm32f1xx_hal_exti.crf | Bin 596642 -> 596639 bytes .../MDK-ARM/Project/stm32f1xx_hal_flash.crf | Bin 598433 -> 598430 bytes .../Project/stm32f1xx_hal_flash_ex.crf | Bin 599663 -> 599660 bytes .../MDK-ARM/Project/stm32f1xx_hal_gpio.crf | Bin 597437 -> 597434 bytes .../MDK-ARM/Project/stm32f1xx_hal_gpio_ex.crf | Bin 593690 -> 593687 bytes .../MDK-ARM/Project/stm32f1xx_hal_i2c.crf | Bin 658789 -> 658786 bytes .../MDK-ARM/Project/stm32f1xx_hal_msp.crf | Bin 601566 -> 601563 bytes .../MDK-ARM/Project/stm32f1xx_hal_pwr.crf | Bin 596494 -> 596491 bytes .../MDK-ARM/Project/stm32f1xx_hal_rcc.crf | Bin 605837 -> 605834 bytes .../MDK-ARM/Project/stm32f1xx_hal_rcc_ex.crf | Bin 596307 -> 596304 bytes .../MDK-ARM/Project/stm32f1xx_hal_spi.crf | Bin 619820 -> 619817 bytes .../MDK-ARM/Project/stm32f1xx_hal_tim.crf | Bin 657026 -> 657023 bytes .../MDK-ARM/Project/stm32f1xx_hal_tim_ex.crf | Bin 618620 -> 618617 bytes .../MDK-ARM/Project/stm32f1xx_hal_uart.crf | Bin 611657 -> 611654 bytes .../MDK-ARM/Project/stm32f1xx_it.crf | Bin 605145 -> 605021 bytes .../MDK-ARM/Project/system_stm32f1xx.crf | Bin 593824 -> 593821 bytes .../smart_dormitory/MDK-ARM/Project/tcp.crf | Bin 605504 -> 604851 bytes .../smart_dormitory/MDK-ARM/Project/tcp.d | 40 - .../smart_dormitory/MDK-ARM/Project/tim.crf | Bin 603030 -> 603027 bytes .../smart_dormitory/MDK-ARM/Project/usart.crf | Bin 607310 -> 606621 bytes firmware/stm32/smart_dormitory/Project.ioc | 37 +- .../smart_dormitory/User/Process/process.h | 2 - .../User/xiaoyi_wifi/esp8266.c | 259 ++-- .../User/xiaoyi_wifi/esp8266.h | 107 +- .../smart_dormitory/User/xiaoyi_wifi/mqtt.c | 355 +---- .../smart_dormitory/User/xiaoyi_wifi/mqtt.h | 63 +- .../smart_dormitory/User/xiaoyi_wifi/tcp.c | 42 + .../smart_dormitory/User/xiaoyi_wifi/tcp.h | 22 + 59 files changed, 1126 insertions(+), 1503 deletions(-) create mode 100644 firmware/stm32/smart_dormitory/MDK-ARM/Project/dma.d rename firmware/stm32/smart_dormitory/MDK-ARM/Project/{tcp.o => dma.o} (65%) delete mode 100644 firmware/stm32/smart_dormitory/MDK-ARM/Project/tcp.d create mode 100644 firmware/stm32/smart_dormitory/User/xiaoyi_wifi/tcp.c create mode 100644 firmware/stm32/smart_dormitory/User/xiaoyi_wifi/tcp.h diff --git a/firmware/stm32/smart_dormitory/.mxproject b/firmware/stm32/smart_dormitory/.mxproject index 6769f366..731f1f19 100644 --- a/firmware/stm32/smart_dormitory/.mxproject +++ b/firmware/stm32/smart_dormitory/.mxproject @@ -2,38 +2,36 @@ LibFiles=Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/core_armv8mbl.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/tz_context.h; [PreviousUsedKeilFiles] -SourceFiles=..\Core\Src\main.c;..\Core\Src\gpio.c;..\Core\Src\adc.c;..\Core\Src\dma.c;..\Core\Src\i2c.c;..\Core\Src\spi.c;..\Core\Src\tim.c;..\Core\Src\usart.c;..\Core\Src\stm32f1xx_it.c;..\Core\Src\stm32f1xx_hal_msp.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;..\Core\Src/system_stm32f1xx.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;..\Core\Src/system_stm32f1xx.c;..\Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;; +SourceFiles=..\Core\Src\main.c;..\Core\Src\gpio.c;..\Core\Src\adc.c;..\Core\Src\i2c.c;..\Core\Src\spi.c;..\Core\Src\tim.c;..\Core\Src\usart.c;..\Core\Src\stm32f1xx_it.c;..\Core\Src\stm32f1xx_hal_msp.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;..\Core\Src/system_stm32f1xx.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;..\Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;..\Core\Src/system_stm32f1xx.c;..\Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;; HeaderPath=..\Drivers\STM32F1xx_HAL_Driver\Inc;..\Drivers\STM32F1xx_HAL_Driver\Inc\Legacy;..\Drivers\CMSIS\Device\ST\STM32F1xx\Include;..\Drivers\CMSIS\Include;..\Core\Inc; CDefines=USE_HAL_DRIVER;STM32F103xB;USE_HAL_DRIVER;USE_HAL_DRIVER; [PreviousGenFiles] AdvancedFolderStructure=true -HeaderFileListSize=10 -HeaderFiles#0=D:/work/platform/wumei-smart/firmware/stm32/smart_dormitory/Core/Inc/gpio.h -HeaderFiles#1=D:/work/platform/wumei-smart/firmware/stm32/smart_dormitory/Core/Inc/adc.h -HeaderFiles#2=D:/work/platform/wumei-smart/firmware/stm32/smart_dormitory/Core/Inc/dma.h -HeaderFiles#3=D:/work/platform/wumei-smart/firmware/stm32/smart_dormitory/Core/Inc/i2c.h -HeaderFiles#4=D:/work/platform/wumei-smart/firmware/stm32/smart_dormitory/Core/Inc/spi.h -HeaderFiles#5=D:/work/platform/wumei-smart/firmware/stm32/smart_dormitory/Core/Inc/tim.h -HeaderFiles#6=D:/work/platform/wumei-smart/firmware/stm32/smart_dormitory/Core/Inc/usart.h -HeaderFiles#7=D:/work/platform/wumei-smart/firmware/stm32/smart_dormitory/Core/Inc/stm32f1xx_it.h -HeaderFiles#8=D:/work/platform/wumei-smart/firmware/stm32/smart_dormitory/Core/Inc/stm32f1xx_hal_conf.h -HeaderFiles#9=D:/work/platform/wumei-smart/firmware/stm32/smart_dormitory/Core/Inc/main.h +HeaderFileListSize=9 +HeaderFiles#0=D:/work/projects/XiaoYi_IOTKits/product_iotkits_smart_dormitory/device/01.Project_smart_dormitory/Core/Inc/gpio.h +HeaderFiles#1=D:/work/projects/XiaoYi_IOTKits/product_iotkits_smart_dormitory/device/01.Project_smart_dormitory/Core/Inc/adc.h +HeaderFiles#2=D:/work/projects/XiaoYi_IOTKits/product_iotkits_smart_dormitory/device/01.Project_smart_dormitory/Core/Inc/i2c.h +HeaderFiles#3=D:/work/projects/XiaoYi_IOTKits/product_iotkits_smart_dormitory/device/01.Project_smart_dormitory/Core/Inc/spi.h +HeaderFiles#4=D:/work/projects/XiaoYi_IOTKits/product_iotkits_smart_dormitory/device/01.Project_smart_dormitory/Core/Inc/tim.h +HeaderFiles#5=D:/work/projects/XiaoYi_IOTKits/product_iotkits_smart_dormitory/device/01.Project_smart_dormitory/Core/Inc/usart.h +HeaderFiles#6=D:/work/projects/XiaoYi_IOTKits/product_iotkits_smart_dormitory/device/01.Project_smart_dormitory/Core/Inc/stm32f1xx_it.h +HeaderFiles#7=D:/work/projects/XiaoYi_IOTKits/product_iotkits_smart_dormitory/device/01.Project_smart_dormitory/Core/Inc/stm32f1xx_hal_conf.h +HeaderFiles#8=D:/work/projects/XiaoYi_IOTKits/product_iotkits_smart_dormitory/device/01.Project_smart_dormitory/Core/Inc/main.h HeaderFolderListSize=1 -HeaderPath#0=D:/work/platform/wumei-smart/firmware/stm32/smart_dormitory/Core/Inc +HeaderPath#0=D:/work/projects/XiaoYi_IOTKits/product_iotkits_smart_dormitory/device/01.Project_smart_dormitory/Core/Inc HeaderFiles=; -SourceFileListSize=10 -SourceFiles#0=D:/work/platform/wumei-smart/firmware/stm32/smart_dormitory/Core/Src/gpio.c -SourceFiles#1=D:/work/platform/wumei-smart/firmware/stm32/smart_dormitory/Core/Src/adc.c -SourceFiles#2=D:/work/platform/wumei-smart/firmware/stm32/smart_dormitory/Core/Src/dma.c -SourceFiles#3=D:/work/platform/wumei-smart/firmware/stm32/smart_dormitory/Core/Src/i2c.c -SourceFiles#4=D:/work/platform/wumei-smart/firmware/stm32/smart_dormitory/Core/Src/spi.c -SourceFiles#5=D:/work/platform/wumei-smart/firmware/stm32/smart_dormitory/Core/Src/tim.c -SourceFiles#6=D:/work/platform/wumei-smart/firmware/stm32/smart_dormitory/Core/Src/usart.c -SourceFiles#7=D:/work/platform/wumei-smart/firmware/stm32/smart_dormitory/Core/Src/stm32f1xx_it.c -SourceFiles#8=D:/work/platform/wumei-smart/firmware/stm32/smart_dormitory/Core/Src/stm32f1xx_hal_msp.c -SourceFiles#9=D:/work/platform/wumei-smart/firmware/stm32/smart_dormitory/Core/Src/main.c +SourceFileListSize=9 +SourceFiles#0=D:/work/projects/XiaoYi_IOTKits/product_iotkits_smart_dormitory/device/01.Project_smart_dormitory/Core/Src/gpio.c +SourceFiles#1=D:/work/projects/XiaoYi_IOTKits/product_iotkits_smart_dormitory/device/01.Project_smart_dormitory/Core/Src/adc.c +SourceFiles#2=D:/work/projects/XiaoYi_IOTKits/product_iotkits_smart_dormitory/device/01.Project_smart_dormitory/Core/Src/i2c.c +SourceFiles#3=D:/work/projects/XiaoYi_IOTKits/product_iotkits_smart_dormitory/device/01.Project_smart_dormitory/Core/Src/spi.c +SourceFiles#4=D:/work/projects/XiaoYi_IOTKits/product_iotkits_smart_dormitory/device/01.Project_smart_dormitory/Core/Src/tim.c +SourceFiles#5=D:/work/projects/XiaoYi_IOTKits/product_iotkits_smart_dormitory/device/01.Project_smart_dormitory/Core/Src/usart.c +SourceFiles#6=D:/work/projects/XiaoYi_IOTKits/product_iotkits_smart_dormitory/device/01.Project_smart_dormitory/Core/Src/stm32f1xx_it.c +SourceFiles#7=D:/work/projects/XiaoYi_IOTKits/product_iotkits_smart_dormitory/device/01.Project_smart_dormitory/Core/Src/stm32f1xx_hal_msp.c +SourceFiles#8=D:/work/projects/XiaoYi_IOTKits/product_iotkits_smart_dormitory/device/01.Project_smart_dormitory/Core/Src/main.c SourceFolderListSize=1 -SourcePath#0=D:/work/platform/wumei-smart/firmware/stm32/smart_dormitory/Core/Src +SourcePath#0=D:/work/projects/XiaoYi_IOTKits/product_iotkits_smart_dormitory/device/01.Project_smart_dormitory/Core/Src SourceFiles=; diff --git a/firmware/stm32/smart_dormitory/Core/Inc/stm32f1xx_hal_conf.h b/firmware/stm32/smart_dormitory/Core/Inc/stm32f1xx_hal_conf.h index 79f69304..ca23127b 100644 --- a/firmware/stm32/smart_dormitory/Core/Inc/stm32f1xx_hal_conf.h +++ b/firmware/stm32/smart_dormitory/Core/Inc/stm32f1xx_hal_conf.h @@ -41,7 +41,7 @@ /*#define HAL_CORTEX_MODULE_ENABLED */ /*#define HAL_CRC_MODULE_ENABLED */ /*#define HAL_DAC_MODULE_ENABLED */ -#define HAL_DMA_MODULE_ENABLED +/*#define HAL_DMA_MODULE_ENABLED */ /*#define HAL_ETH_MODULE_ENABLED */ /*#define HAL_FLASH_MODULE_ENABLED */ #define HAL_GPIO_MODULE_ENABLED diff --git a/firmware/stm32/smart_dormitory/Core/Inc/stm32f1xx_it.h b/firmware/stm32/smart_dormitory/Core/Inc/stm32f1xx_it.h index ca781d3f..cb5dd974 100644 --- a/firmware/stm32/smart_dormitory/Core/Inc/stm32f1xx_it.h +++ b/firmware/stm32/smart_dormitory/Core/Inc/stm32f1xx_it.h @@ -56,7 +56,7 @@ void SVC_Handler(void); void DebugMon_Handler(void); void PendSV_Handler(void); void SysTick_Handler(void); -void DMA1_Channel3_IRQHandler(void); +void USART3_IRQHandler(void); /* USER CODE BEGIN EFP */ /* USER CODE END EFP */ diff --git a/firmware/stm32/smart_dormitory/Core/Src/main.c b/firmware/stm32/smart_dormitory/Core/Src/main.c index a76a61a5..4d6bf1a8 100644 --- a/firmware/stm32/smart_dormitory/Core/Src/main.c +++ b/firmware/stm32/smart_dormitory/Core/Src/main.c @@ -20,7 +20,6 @@ /* Includes ------------------------------------------------------------------*/ #include "main.h" #include "adc.h" -#include "dma.h" #include "i2c.h" #include "spi.h" #include "tim.h" @@ -29,15 +28,14 @@ /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ -#include "esp8266.h" -#include "mqtt.h" #include "oled.h" #include "dht11.h" #include "flash.h" +#include "esp8266.h" #include "sensor_light.h" #include "rc522.h" #include "process.h" - +#include "mqtt.h" /* USER CODE END Includes */ @@ -75,24 +73,6 @@ void delay_ms(int ms) { HAL_Delay(ms); } - -// ESP8266主动下发给MCU数据 -int wifi_data_recv_fun(type_recv_e type, uint8_t *data, int len) -{ - switch((int)type) - { - case TYPE_RECV_DISCONNECT: - printf("WIFI DISCONNECT!\r\n"); - break; - case TYPE_RECV_GOT_IP: - printf("WIFI GOT IP!\r\n"); - break; - case TYPE_RECV_SUBSCRIBE: - printf("recv_fun sucribe data : %s\r\n", data); - break; - } -} - /* USER CODE END 0 */ /** @@ -124,7 +104,6 @@ int main(void) /* Initialize all configured peripherals */ MX_GPIO_Init(); - MX_DMA_Init(); MX_ADC1_Init(); MX_TIM3_Init(); MX_USART1_UART_Init(); @@ -137,11 +116,11 @@ int main(void) stop_buzz(); dht11_init(); oled_init(); - macRC522_Reset_Disable(); - macRC522_CS_Disable(); +// macRC522_Reset_Disable(); +// macRC522_CS_Disable(); - PcdReset();//RC522复位 - M500PcdConfigISOType ( 'A' );//设置工作方式 +// PcdReset();//RC522复位 +// M500PcdConfigISOType ( 'A' );//设置工作方式 delay_ms(1000); oled_fill(0xFF);//全屏点亮 @@ -152,26 +131,21 @@ int main(void) oled_show_string(70, 3, "Humi:", 1); MX_TIM4_Init(); - if (HAL_OK == __HAL_UART_ENABLE_IT(&huart3, UART_IT_IDLE)) // 使能空闲中断 + if (HAL_OK == HAL_UART_Receive_IT(&huart3, &aRxBuffer, 1)) { printf("enable uart3 isr\r\n"); } - HAL_UART_Receive_DMA(&huart3, ESP8266_Fram_Record_Struct.Data_RX_BUF, RX_BUF_MAX_LEN); // 启动DMA接收 - if (HAL_OK == HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_1)) { - printf("enable time4 pwm output\r\n"); + printf("enable time4 pwm output\r\n"); } - set_sg90(50); - if (HAL_TIM_Base_Start_IT(&htim3)) + if (HAL_TIM_Base_Start_IT(&htim4)) { - printf("enable time3 base isr\r\n"); + printf("enable time3 base isr\r\n"); } - - ESP8266_Fram_Record_Struct.wifi_data_recv_cb = wifi_data_recv_fun; // 定义系统回调函数,当有数据下发,会进入这个函数 - + ESP8266_STA_MQTTClient_Init(); printf("ready go into while1\r\n"); /* USER CODE END 2 */ diff --git a/firmware/stm32/smart_dormitory/Core/Src/stm32f1xx_it.c b/firmware/stm32/smart_dormitory/Core/Src/stm32f1xx_it.c index e578ded6..92c20c92 100644 --- a/firmware/stm32/smart_dormitory/Core/Src/stm32f1xx_it.c +++ b/firmware/stm32/smart_dormitory/Core/Src/stm32f1xx_it.c @@ -58,7 +58,7 @@ /* USER CODE END 0 */ /* External variables --------------------------------------------------------*/ -extern DMA_HandleTypeDef hdma_usart3_rx; +extern UART_HandleTypeDef huart3; /* USER CODE BEGIN EV */ /* USER CODE END EV */ @@ -200,17 +200,29 @@ void SysTick_Handler(void) /******************************************************************************/ /** - * @brief This function handles DMA1 channel3 global interrupt. + * @brief This function handles USART3 global interrupt. */ -void DMA1_Channel3_IRQHandler(void) +void USART3_IRQHandler(void) { - /* USER CODE BEGIN DMA1_Channel3_IRQn 0 */ + /* USER CODE BEGIN USART3_IRQn 0 */ - /* USER CODE END DMA1_Channel3_IRQn 0 */ - HAL_DMA_IRQHandler(&hdma_usart3_rx); - /* USER CODE BEGIN DMA1_Channel3_IRQn 1 */ + /* USER CODE END USART3_IRQn 0 */ + //空闲中断 + if(__HAL_UART_GET_FLAG(&huart3,UART_FLAG_IDLE) != RESET) + { + //一帧数据接收完成 + ESP8266_Fram_Record_Struct.InfBit.FramFinishFlag = 1; + //由软件序列清除中断标志位(先读USART_SR,然后读USART_DR) + __HAL_UART_CLEAR_IDLEFLAG(&huart3); + printf("..............\r\n"); + }else + { + HAL_UART_IRQHandler(&huart3); + } - /* USER CODE END DMA1_Channel3_IRQn 1 */ + /* USER CODE BEGIN USART3_IRQn 1 */ + + /* USER CODE END USART3_IRQn 1 */ } /* USER CODE BEGIN 1 */ diff --git a/firmware/stm32/smart_dormitory/Core/Src/usart.c b/firmware/stm32/smart_dormitory/Core/Src/usart.c index aa017004..7414044c 100644 --- a/firmware/stm32/smart_dormitory/Core/Src/usart.c +++ b/firmware/stm32/smart_dormitory/Core/Src/usart.c @@ -30,7 +30,6 @@ extern volatile uint8_t TcpClosedFlag; UART_HandleTypeDef huart1; UART_HandleTypeDef huart3; -DMA_HandleTypeDef hdma_usart3_rx; /* USART1 init function */ @@ -125,25 +124,8 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - /* USART3 DMA Init */ - /* USART3_RX Init */ - hdma_usart3_rx.Instance = DMA1_Channel3; - hdma_usart3_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; - hdma_usart3_rx.Init.PeriphInc = DMA_PINC_DISABLE; - hdma_usart3_rx.Init.MemInc = DMA_MINC_ENABLE; - hdma_usart3_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; - hdma_usart3_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; - hdma_usart3_rx.Init.Mode = DMA_NORMAL; - hdma_usart3_rx.Init.Priority = DMA_PRIORITY_HIGH; - if (HAL_DMA_Init(&hdma_usart3_rx) != HAL_OK) - { - Error_Handler(); - } - - __HAL_LINKDMA(uartHandle,hdmarx,hdma_usart3_rx); - /* USART3 interrupt Init */ - HAL_NVIC_SetPriority(USART3_IRQn, 0, 0); + HAL_NVIC_SetPriority(USART3_IRQn, 2, 0); HAL_NVIC_EnableIRQ(USART3_IRQn); /* USER CODE BEGIN USART3_MspInit 1 */ __HAL_UART_ENABLE_IT(&huart3, UART_IT_IDLE); @@ -186,9 +168,6 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle) */ HAL_GPIO_DeInit(GPIOB, GPIO_PIN_10|GPIO_PIN_11); - /* USART3 DMA DeInit */ - HAL_DMA_DeInit(uartHandle->hdmarx); - /* USART3 interrupt Deinit */ HAL_NVIC_DisableIRQ(USART3_IRQn); /* USER CODE BEGIN USART3_MspDeInit 1 */ @@ -219,44 +198,21 @@ PUTCHAR_PROTOTYPE /** * @brief This function handles USART IDLE interrupt. - * { - "airHumidity":0.0, - "airTemperature":0.0, - "blue":0, - "brightness":11, - "createBy":"", - "createTime":1627381144000, - "deviceId":3, - "deviceNum":"E8DB84933089", - "deviceStatusId":57, - "deviceTemperature":40.0, - "fadeTime":259, - "green":0, - "isOnline":1, - "lightInterval":432, - "lightMode":0, - "lightStatus":1, - "params":{}, - "red":255, - "relayStatus":1, - "rssi":-54, - "triggerSource":0, - "updateBy":"", - "updateTime":1627381657000} */ -void USART3_IRQHandler(void) +void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle) { - if(__HAL_UART_GET_FLAG(&huart3, UART_FLAG_IDLE) != RESET) // 空闲中断标记被置位 + uint8_t len = 0; + + if(UartHandle->Instance == USART3) { - __HAL_UART_CLEAR_IDLEFLAG(&huart3); // 清除中断标记 - HAL_UART_DMAStop(&huart3); // 停止DMA接收 - ESP8266_Fram_Record_Struct.InfBit.FramLength = RX_BUF_MAX_LEN - __HAL_DMA_GET_COUNTER(huart3.hdmarx); // 总数据量减去未接收到的数据量为已经接收到的数据量 - ESP8266_Fram_Record_Struct.Data_RX_BUF[ESP8266_Fram_Record_Struct.InfBit.FramLength] = 0; // 添加结束符 - ESP8266_Fram_Record_Struct.InfBit.FramFinishFlag = 1; // 标记接收结束 - HAL_UART_Receive_DMA(&huart3, ESP8266_Fram_Record_Struct.Data_RX_BUF, RX_BUF_MAX_LEN); // 重新启动DMA接收 + if(ESP8266_Fram_Record_Struct.InfBit.FramLength < ( RX_BUF_MAX_LEN - 1 ) ) + { + //留最后一位做结束位 + ESP8266_Fram_Record_Struct.Data_RX_BUF[ ESP8266_Fram_Record_Struct.InfBit.FramLength ++ ] = aRxBuffer; + } + HAL_UART_Receive_IT(&huart3,&aRxBuffer,1); } } - /* USER CODE END 1 */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvguix.Administrator b/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvguix.Administrator index 76530a26..838b847a 100644 --- a/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvguix.Administrator +++ b/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvguix.Administrator @@ -30,7 +30,7 @@ 1506 Symbols - 64 64 64 + 80 80 80 1936 @@ -91,17 +91,17 @@ -1 - 0 - -8 - 1002 - 843 + -7 + 246 + 1256 + 830 0 - 705 - 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000005000000020000000100000056443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C557365725C7869616F79695F776966695C657370383236362E630000000009657370383236362E6300000000FFDC7800FFFFFFFF53443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C557365725C7869616F79695F776966695C6D7174742E6300000000066D7174742E6300000000BECEA100FFFFFFFF4B443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000F0A0A100FFFFFFFF4C443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C436F72655C5372635C75736172742E63000000000775736172742E6300000000BCA8E100FFFFFFFF56443A5C776F726B5C706C6174666F726D5C77756D65692D736D6172745C6669726D776172655C73746D33325C736D6172745F646F726D69746F72795C557365725C7869616F79695F776966695C657370383236362E680000000009657370383236362E68000000009CC1B600FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD50001000000000000000200000034010000660000000006000041020000 + 1032 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000006000000000000000100000077443A5C776F726B5C70726F6A656374735C5869616F59695F494F544B6974735C70726F647563745F696F746B6974735F736D6172745F646F726D69746F72795C6465766963655C30312E77756D65695F736D6172745F646F726D69746F72795C557365725C7869616F79695F776966695C6D7174742E6300000000066D7174742E6300000000FFDC7800FFFFFFFF6F443A5C776F726B5C70726F6A656374735C5869616F59695F494F544B6974735C70726F647563745F696F746B6974735F736D6172745F646F726D69746F72795C6465766963655C30312E77756D65695F736D6172745F646F726D69746F72795C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000BECEA100FFFFFFFF7A443A5C776F726B5C70726F6A656374735C5869616F59695F494F544B6974735C70726F647563745F696F746B6974735F736D6172745F646F726D69746F72795C6465766963655C30312E77756D65695F736D6172745F646F726D69746F72795C557365725C7869616F79695F776966695C657370383236362E630000000009657370383236362E6300000000F0A0A100FFFFFFFF7A443A5C776F726B5C70726F6A656374735C5869616F59695F494F544B6974735C70726F647563745F696F746B6974735F736D6172745F646F726D69746F72795C6465766963655C30312E77756D65695F736D6172745F646F726D69746F72795C557365725C7869616F79695F776966695C657370383236362E680000000009657370383236362E6800000000BCA8E100FFFFFFFF77443A5C776F726B5C70726F6A656374735C5869616F59695F494F544B6974735C70726F647563745F696F746B6974735F736D6172745F646F726D69746F72795C6465766963655C30312E77756D65695F736D6172745F646F726D69746F72795C557365725C7869616F79695F776966695C6D7174742E6800000000066D7174742E68000000009CC1B600FFFFFFFF76443A5C776F726B5C70726F6A656374735C5869616F59695F494F544B6974735C70726F647563745F696F746B6974735F736D6172745F646F726D69746F72795C6465766963655C30312E77756D65695F736D6172745F646F726D69746F72795C557365725C7869616F79695F776966695C7463702E6300000000057463702E6300000000F7B88600FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD50001000000000000000200000034010000660000008007000018030000 @@ -140,7 +140,7 @@ 0 16 - 03000000660000002D01000011020000 + 03000000660000002D010000E8020000 16 @@ -160,7 +160,7 @@ 0 16 - 03000000660000002D01000011020000 + 03000000660000002D010000E8020000 16 @@ -440,7 +440,7 @@ 0 16 - 03000000660000002D01000011020000 + 03000000660000002D010000E8020000 16 @@ -460,7 +460,7 @@ 0 16 - 03000000660000002D01000011020000 + 03000000660000002D010000E8020000 16 @@ -480,7 +480,7 @@ 0 16 - 0300000045020000FD050000F5020000 + 030000001C0300007D070000CD030000 16 @@ -520,7 +520,7 @@ 0 16 - 0300000045020000FD050000F5020000 + 030000001C0300007D070000CD030000 16 @@ -1140,7 +1140,7 @@ 0 16 - 03000000660000002D01000011020000 + 03000000660000002D010000E8020000 16 @@ -1160,7 +1160,7 @@ 0 16 - 0300000045020000FD050000F5020000 + 030000001C0300007D070000CD030000 16 @@ -1180,7 +1180,7 @@ 0 16 - 0300000045020000FD050000F5020000 + 030000001C0300007D070000CD030000 16 @@ -1240,7 +1240,7 @@ 0 16 - 0300000045020000FD050000F5020000 + 030000001C0300007D070000CD030000 16 @@ -1260,7 +1260,7 @@ 0 16 - 0300000045020000FD050000F5020000 + 030000001C0300007D070000CD030000 16 @@ -1720,7 +1720,7 @@ 0 16 - 000000000E0300000006000021030000 + 00000000E603000080070000F9030000 16 @@ -1789,14 +1789,14 @@ 3317 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF300100004F000000340100002A02000001000000020000100400000001000000EAFEFFFFDF040000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000660000003001000041020000000000004F000000300100002A0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000002A020000000600002E02000001000000010000100400000001000000ECFDFFFFA0000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000000000000450200000006000025030000000000002E020000000600000E0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF1346696E6420416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF300100004F000000340100000103000001000000020000100400000001000000EAFEFFFFDF040000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000660000003001000018030000000000004F00000030010000010300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000000103000080070000050300000100000001000010040000000100000039FDFFFFC5000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000001C03000080070000FD030000000000000503000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF1346696E6420416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 File - 2599 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000F41545F4672616D655F5265636F7264960000000000000014000F41545F4672616D655F5265636F72641A455350383236365F4672616D5F5265636F72645F5374727563741541545F4672616D5F5265636F72645F5374727563740B666972655F7374617475730D68616C5F41545F7072696E746609776966695F646174610CCAFDBEDDD6A1BDE1B9B9CCE5096C6576656C5F6C6F770A6C6576656C5F686967681848414C5F4750494F5F455854495F49525148616E646C65721648414C5F4750494F5F455854495F43616C6C6261636B0A43574155544F434F4E4E0E5055424C4953485F464C41475F540D557365725F455350383236365F09434F4E4E4543545F540673656E736F72084B65795F5363616E07666C616754786410636F756E745F696E746572727570743110636F756E745F696E74657272757074300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000 + 2562 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000025C5C96000000000000001400025C5C0D557365725F455350383236365F034953500A737463383963353272630F41545F4672616D655F5265636F72641A455350383236365F4672616D5F5265636F72645F5374727563741541545F4672616D5F5265636F72645F5374727563740B666972655F7374617475730D68616C5F41545F7072696E746609776966695F646174610CCAFDBEDDD6A1BDE1B9B9CCE5096C6576656C5F6C6F770A6C6576656C5F686967681848414C5F4750494F5F455854495F49525148616E646C65721648414C5F4750494F5F455854495F43616C6C6261636B0A43574155544F434F4E4E0E5055424C4953485F464C41475F5409434F4E4E4543545F540673656E736F72084B65795F5363616E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000 1423 @@ -1828,7 +1828,7 @@ Debug 2373 - 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 898 @@ -1841,8 +1841,8 @@ 0 - 1536 - 864 + 1920 + 1080 @@ -1852,48 +1852,57 @@ 0 100 - 2 - - ..\User\xiaoyi_wifi\esp8266.c - 14 - 1 - 1 - 1 - - 0 - + 0 ..\User\xiaoyi_wifi\mqtt.c - 35 - 32 - 56 + 66 + 1 + 16 1 0 ../Core/Src/main.c - 3 - 176 - 182 - 1 - - 0 - - - ../Core/Src/usart.c 2 - 234 - 240 + 126 + 150 1 0 - D:\work\platform\wumei-smart\firmware\stm32\smart_dormitory\User\xiaoyi_wifi\esp8266.h - 10 - 76 - 85 + ..\User\xiaoyi_wifi\esp8266.c + 0 + 89 + 122 + 1 + + 0 + + + D:\work\projects\XiaoYi_IOTKits\product_iotkits_smart_dormitory\device\01.wumei_smart_dormitory\User\xiaoyi_wifi\esp8266.h + 17 + 55 + 76 + 1 + + 0 + + + D:\work\projects\XiaoYi_IOTKits\product_iotkits_smart_dormitory\device\01.wumei_smart_dormitory\User\xiaoyi_wifi\mqtt.h + 43 + 1 + 20 + 1 + + 0 + + + ..\User\xiaoyi_wifi\tcp.c + 0 + 4 + 18 1 0 diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvoptx b/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvoptx index 38d06495..59b7713b 100644 --- a/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvoptx +++ b/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvoptx @@ -171,7 +171,7 @@ Application/MDK-ARM - 1 + 0 0 0 0 @@ -238,18 +238,6 @@ 0 0 0 - ../Core/Src/dma.c - dma.c - 0 - 0 - - - 2 - 6 - 1 - 0 - 0 - 0 ../Core/Src/i2c.c i2c.c 0 @@ -257,7 +245,7 @@ 2 - 7 + 6 1 0 0 @@ -269,7 +257,7 @@ 2 - 8 + 7 1 0 0 @@ -281,7 +269,7 @@ 2 - 9 + 8 1 0 0 @@ -293,7 +281,7 @@ 2 - 10 + 9 1 0 0 @@ -305,7 +293,7 @@ 2 - 11 + 10 1 0 0 @@ -323,6 +311,18 @@ 0 0 0 + + 3 + 11 + 1 + 0 + 0 + 0 + ..\User\xiaoyi_wifi\tcp.c + tcp.c + 0 + 0 + 3 12 diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvprojx b/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvprojx index 4a66eaa4..c563ad7b 100644 --- a/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvprojx +++ b/firmware/stm32/smart_dormitory/MDK-ARM/Project.uvprojx @@ -337,7 +337,7 @@ USE_HAL_DRIVER,STM32F103xB - ../Core/Inc; ../Drivers/STM32F1xx_HAL_Driver/Inc; ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy; ../Drivers/CMSIS/Device/ST/STM32F1xx/Include; ../Drivers/CMSIS/Include; ..\User\flash; ..\User\dht11; ..\User\light; ..\User\oled; ..\User\key_scan; ..\User\Process; ..\User\xiaoyi_wifi; ..\User\RC522 + ../Core/Inc; ../Drivers/STM32F1xx_HAL_Driver/Inc; ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy; ../Drivers/CMSIS/Device/ST/STM32F1xx/Include; ../Drivers/CMSIS/Include; ..\User\flash; ..\User\dht11; ..\User\light; ..\User\oled; ..\User\key_scan; ..\User\Process; ..\User\xiaoyi_wifi; ..\User\RC522 @@ -406,11 +406,6 @@ 1 ../Core/Src/adc.c - - dma.c - 1 - ../Core/Src/dma.c - i2c.c 1 @@ -446,6 +441,11 @@ Application/User/Process + + tcp.c + 1 + ..\User\xiaoyi_wifi\tcp.c + mqtt.c 1 diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/Project.map b/firmware/stm32/smart_dormitory/MDK-ARM/Project/Project.map index 95db9c02..b5731e1d 100644 --- a/firmware/stm32/smart_dormitory/MDK-ARM/Project/Project.map +++ b/firmware/stm32/smart_dormitory/MDK-ARM/Project/Project.map @@ -15,8 +15,7 @@ Section Cross References startup_stm32f103xb.o(RESET) refers to stm32f1xx_it.o(i.DebugMon_Handler) for DebugMon_Handler startup_stm32f103xb.o(RESET) refers to stm32f1xx_it.o(i.PendSV_Handler) for PendSV_Handler startup_stm32f103xb.o(RESET) refers to stm32f1xx_it.o(i.SysTick_Handler) for SysTick_Handler - startup_stm32f103xb.o(RESET) refers to stm32f1xx_it.o(i.DMA1_Channel3_IRQHandler) for DMA1_Channel3_IRQHandler - startup_stm32f103xb.o(RESET) refers to usart.o(i.USART3_IRQHandler) for USART3_IRQHandler + startup_stm32f103xb.o(RESET) refers to stm32f1xx_it.o(i.USART3_IRQHandler) for USART3_IRQHandler startup_stm32f103xb.o(.text) refers to system_stm32f1xx.o(i.SystemInit) for SystemInit startup_stm32f103xb.o(.text) refers to entry.o(.ARM.Collect$$$$00000000) for __main main.o(i.SystemClock_Config) refers to memseta.o(.text) for __aeabi_memclr4 @@ -27,7 +26,6 @@ Section Cross References main.o(i.main) refers to stm32f1xx_hal.o(i.HAL_Init) for HAL_Init main.o(i.main) refers to main.o(i.SystemClock_Config) for SystemClock_Config main.o(i.main) refers to gpio.o(i.MX_GPIO_Init) for MX_GPIO_Init - main.o(i.main) refers to dma.o(i.MX_DMA_Init) for MX_DMA_Init main.o(i.main) refers to adc.o(i.MX_ADC1_Init) for MX_ADC1_Init main.o(i.main) refers to tim.o(i.MX_TIM3_Init) for MX_TIM3_Init main.o(i.main) refers to usart.o(i.MX_USART1_UART_Init) for MX_USART1_UART_Init @@ -39,23 +37,19 @@ Section Cross References main.o(i.main) refers to process.o(i.stop_buzz) for stop_buzz main.o(i.main) refers to dht11.o(i.dht11_init) for dht11_init main.o(i.main) refers to oled.o(i.oled_init) for oled_init - main.o(i.main) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin - main.o(i.main) refers to rc522.o(i.PcdReset) for PcdReset - main.o(i.main) refers to rc522.o(i.M500PcdConfigISOType) for M500PcdConfigISOType main.o(i.main) refers to stm32f1xx_hal.o(i.HAL_Delay) for HAL_Delay main.o(i.main) refers to oled.o(i.oled_fill) for oled_fill main.o(i.main) refers to oled.o(i.oled_show_string) for oled_show_string - main.o(i.main) refers to stm32f1xx_hal_uart.o(i.HAL_UART_Receive_DMA) for HAL_UART_Receive_DMA + main.o(i.main) refers to stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT) for HAL_UART_Receive_IT main.o(i.main) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Start) for HAL_TIM_PWM_Start - main.o(i.main) refers to process.o(i.set_sg90) for set_sg90 main.o(i.main) refers to stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Start_IT) for HAL_TIM_Base_Start_IT + main.o(i.main) refers to mqtt.o(i.ESP8266_STA_MQTTClient_Init) for ESP8266_STA_MQTTClient_Init main.o(i.main) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_TogglePin) for HAL_GPIO_TogglePin + main.o(i.main) refers to usart.o(.data) for aRxBuffer main.o(i.main) refers to usart.o(.bss) for huart3 - main.o(i.main) refers to esp8266.o(.bss) for ESP8266_Fram_Record_Struct main.o(i.main) refers to tim.o(.bss) for htim4 - main.o(i.main) refers to main.o(i.wifi_data_recv_fun) for wifi_data_recv_fun main.o(i.main) refers to gpio.o(.data) for key_flag - main.o(i.wifi_data_recv_fun) refers to printf3.o(i.__0printf$3) for __2printf + main.o(i.main) refers to esp8266.o(.bss) for ESP8266_Fram_Record_Struct gpio.o(i.HAL_GPIO_EXTI_Callback) refers to gpio.o(.data) for .data gpio.o(i.MX_GPIO_Init) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin gpio.o(i.MX_GPIO_Init) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init) for HAL_GPIO_Init @@ -65,8 +59,6 @@ Section Cross References adc.o(i.MX_ADC1_Init) refers to main.o(i.Error_Handler) for Error_Handler adc.o(i.MX_ADC1_Init) refers to stm32f1xx_hal_adc.o(i.HAL_ADC_ConfigChannel) for HAL_ADC_ConfigChannel adc.o(i.MX_ADC1_Init) refers to adc.o(.bss) for .bss - dma.o(i.MX_DMA_Init) refers to stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority) for HAL_NVIC_SetPriority - dma.o(i.MX_DMA_Init) refers to stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) for HAL_NVIC_EnableIRQ i2c.o(i.HAL_I2C_MspDeInit) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_DeInit) for HAL_GPIO_DeInit i2c.o(i.HAL_I2C_MspInit) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init) for HAL_GPIO_Init i2c.o(i.MX_I2C1_Init) refers to stm32f1xx_hal_i2c.o(i.HAL_I2C_Init) for HAL_I2C_Init @@ -91,69 +83,53 @@ Section Cross References tim.o(i.MX_TIM4_Init) refers to tim.o(i.HAL_TIM_MspPostInit) for HAL_TIM_MspPostInit tim.o(i.MX_TIM4_Init) refers to tim.o(.bss) for .bss usart.o(i.HAL_UART_MspDeInit) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_DeInit) for HAL_GPIO_DeInit - usart.o(i.HAL_UART_MspDeInit) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_DeInit) for HAL_DMA_DeInit usart.o(i.HAL_UART_MspDeInit) refers to stm32f1xx_hal_cortex.o(i.HAL_NVIC_DisableIRQ) for HAL_NVIC_DisableIRQ usart.o(i.HAL_UART_MspInit) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init) for HAL_GPIO_Init - usart.o(i.HAL_UART_MspInit) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_Init) for HAL_DMA_Init - usart.o(i.HAL_UART_MspInit) refers to main.o(i.Error_Handler) for Error_Handler usart.o(i.HAL_UART_MspInit) refers to stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority) for HAL_NVIC_SetPriority usart.o(i.HAL_UART_MspInit) refers to stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) for HAL_NVIC_EnableIRQ usart.o(i.HAL_UART_MspInit) refers to usart.o(.bss) for .bss + usart.o(i.HAL_UART_RxCpltCallback) refers to stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT) for HAL_UART_Receive_IT + usart.o(i.HAL_UART_RxCpltCallback) refers to esp8266.o(.bss) for ESP8266_Fram_Record_Struct + usart.o(i.HAL_UART_RxCpltCallback) refers to usart.o(.data) for .data + usart.o(i.HAL_UART_RxCpltCallback) refers to usart.o(.bss) for .bss usart.o(i.MX_USART1_UART_Init) refers to stm32f1xx_hal_uart.o(i.HAL_UART_Init) for HAL_UART_Init usart.o(i.MX_USART1_UART_Init) refers to main.o(i.Error_Handler) for Error_Handler usart.o(i.MX_USART1_UART_Init) refers to usart.o(.bss) for .bss usart.o(i.MX_USART3_UART_Init) refers to stm32f1xx_hal_uart.o(i.HAL_UART_Init) for HAL_UART_Init usart.o(i.MX_USART3_UART_Init) refers to main.o(i.Error_Handler) for Error_Handler usart.o(i.MX_USART3_UART_Init) refers to usart.o(.bss) for .bss - usart.o(i.USART3_IRQHandler) refers to stm32f1xx_hal_uart.o(i.HAL_UART_DMAStop) for HAL_UART_DMAStop - usart.o(i.USART3_IRQHandler) refers to stm32f1xx_hal_uart.o(i.HAL_UART_Receive_DMA) for HAL_UART_Receive_DMA - usart.o(i.USART3_IRQHandler) refers to usart.o(.bss) for .bss - usart.o(i.USART3_IRQHandler) refers to esp8266.o(.bss) for ESP8266_Fram_Record_Struct usart.o(i.fputc) refers to stm32f1xx_hal_uart.o(i.HAL_UART_Transmit) for HAL_UART_Transmit usart.o(i.fputc) refers to usart.o(.bss) for .bss - stm32f1xx_it.o(i.DMA1_Channel3_IRQHandler) refers to stm32f1xx_hal_dma.o(i.HAL_DMA_IRQHandler) for HAL_DMA_IRQHandler - stm32f1xx_it.o(i.DMA1_Channel3_IRQHandler) refers to usart.o(.bss) for hdma_usart3_rx stm32f1xx_it.o(i.SysTick_Handler) refers to stm32f1xx_hal.o(i.HAL_IncTick) for HAL_IncTick - mqtt.o(i.mqtt_ack_check) refers to mqtt.o(i.mqtt_recv) for mqtt_recv - mqtt.o(i.mqtt_beat) refers to mqtt.o(i.mqtt_send) for mqtt_send - mqtt.o(i.mqtt_beat) refers to mqtt.o(i.mqtt_ack_check) for mqtt_ack_check - mqtt.o(i.mqtt_beat) refers to mqtt.o(i.mqtt_connect) for mqtt_connect - mqtt.o(i.mqtt_connect) refers to mqtt.o(i.mqtt_str_fill) for mqtt_str_fill - mqtt.o(i.mqtt_connect) refers to strlen.o(.text) for strlen - mqtt.o(i.mqtt_connect) refers to mqtt.o(i.mqtt_send) for mqtt_send - mqtt.o(i.mqtt_connect) refers to mqtt.o(i.mqtt_ack_check) for mqtt_ack_check - mqtt.o(i.mqtt_handle) refers to mqtt.o(i.mqtt_recv) for mqtt_recv - mqtt.o(i.mqtt_handle) refers to mqtt.o(i.mqtt_publish_from_cloud) for mqtt_publish_from_cloud - mqtt.o(i.mqtt_init) refers to mqtt.o(i.mqtt_connect) for mqtt_connect - mqtt.o(i.mqtt_init) refers to printf3.o(i.__0printf$3) for __2printf - mqtt.o(i.mqtt_init) refers to mqtt.o(i.mqtt_subscriber) for mqtt_subscriber - mqtt.o(i.mqtt_init) refers to mqtt.o(.data) for .data - mqtt.o(i.mqtt_publish) refers to mqtt.o(i.mqtt_str_fill) for mqtt_str_fill - mqtt.o(i.mqtt_publish) refers to strlen.o(.text) for strlen - mqtt.o(i.mqtt_publish) refers to memcpya.o(.text) for __aeabi_memcpy - mqtt.o(i.mqtt_publish) refers to mqtt.o(i.mqtt_send) for mqtt_send - mqtt.o(i.mqtt_publish) refers to mqtt.o(i.mqtt_ack_check) for mqtt_ack_check - mqtt.o(i.mqtt_publish_from_cloud) refers to memseta.o(.text) for __aeabi_memclr4 - mqtt.o(i.mqtt_publish_from_cloud) refers to memcpya.o(.text) for __aeabi_memcpy - mqtt.o(i.mqtt_publish_from_cloud) refers to strcmp.o(.text) for strcmp - mqtt.o(i.mqtt_publish_from_cloud) refers to mqtt.o(i.mqtt_send) for mqtt_send - mqtt.o(i.mqtt_publish_update) refers to mqtt.o(i.mqtt_publish) for mqtt_publish - mqtt.o(i.mqtt_publish_update) refers to mqtt.o(.data) for .data - mqtt.o(i.mqtt_recv) refers to memcpya.o(.text) for __aeabi_memcpy - mqtt.o(i.mqtt_recv) refers to stm32f1xx_hal.o(i.HAL_Delay) for HAL_Delay - mqtt.o(i.mqtt_recv) refers to esp8266.o(.bss) for ESP8266_Fram_Record_Struct - mqtt.o(i.mqtt_send) refers to memcpya.o(.text) for __aeabi_memcpy - mqtt.o(i.mqtt_send) refers to stm32f1xx_hal_uart.o(i.HAL_UART_Transmit) for HAL_UART_Transmit - mqtt.o(i.mqtt_send) refers to esp8266.o(.bss) for ESP8266_Fram_Record_Struct - mqtt.o(i.mqtt_send) refers to usart.o(.bss) for huart3 - mqtt.o(i.mqtt_str_fill) refers to strlen.o(.text) for strlen - mqtt.o(i.mqtt_str_fill) refers to strcpy.o(.text) for strcpy - mqtt.o(i.mqtt_subscriber) refers to mqtt.o(i.mqtt_str_fill) for mqtt_str_fill - mqtt.o(i.mqtt_subscriber) refers to strlen.o(.text) for strlen - mqtt.o(i.mqtt_subscriber) refers to mqtt.o(i.mqtt_send) for mqtt_send - mqtt.o(i.mqtt_subscriber) refers to mqtt.o(i.mqtt_ack_check) for mqtt_ack_check - mqtt.o(i.mqtt_tcp_connect) refers to printf3.o(i.__0sprintf$3) for __2sprintf - mqtt.o(i.mqtt_tcp_connect) refers to esp8266.o(i.ESP8266_Send_AT_Cmd) for ESP8266_Send_AT_Cmd + stm32f1xx_it.o(i.USART3_IRQHandler) refers to printf3.o(i.__0printf$3) for __2printf + stm32f1xx_it.o(i.USART3_IRQHandler) refers to stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) for HAL_UART_IRQHandler + stm32f1xx_it.o(i.USART3_IRQHandler) refers to usart.o(.bss) for huart3 + stm32f1xx_it.o(i.USART3_IRQHandler) refers to esp8266.o(.bss) for ESP8266_Fram_Record_Struct + tcp.o(i.ESP8266_STA_TCPClient_Test) refers to memseta.o(.text) for __aeabi_memclr4 + tcp.o(i.ESP8266_STA_TCPClient_Test) refers to esp8266.o(i.ESP8266_ATE0) for ESP8266_ATE0 + tcp.o(i.ESP8266_STA_TCPClient_Test) refers to printf3.o(i.__0printf$3) for __2printf + tcp.o(i.ESP8266_STA_TCPClient_Test) refers to esp8266.o(i.ESP8266_Net_Mode_Choose) for ESP8266_Net_Mode_Choose + tcp.o(i.ESP8266_STA_TCPClient_Test) refers to esp8266.o(i.ESP8266_JoinAP) for ESP8266_JoinAP + tcp.o(i.ESP8266_STA_TCPClient_Test) refers to esp8266.o(i.ESP8266_Enable_MultipleId) for ESP8266_Enable_MultipleId + tcp.o(i.ESP8266_STA_TCPClient_Test) refers to esp8266.o(i.ESP8266_Link_Server) for ESP8266_Link_Server + tcp.o(i.ESP8266_STA_TCPClient_Test) refers to esp8266.o(i.ESP8266_UnvarnishSend) for ESP8266_UnvarnishSend + tcp.o(i.ESP8266_STA_TCPClient_Test) refers to printf3.o(i.__0sprintf$3) for __2sprintf + tcp.o(i.ESP8266_STA_TCPClient_Test) refers to esp8266.o(i.ESP8266_SendString) for ESP8266_SendString + tcp.o(i.ESP8266_STA_TCPClient_Test) refers to main.o(i.delay_ms) for delay_ms + tcp.o(i.ESP8266_STA_TCPClient_Test) refers to esp8266.o(i.ESP8266_ExitUnvarnishSend) for ESP8266_ExitUnvarnishSend + tcp.o(i.ESP8266_STA_TCPClient_Test) refers to esp8266.o(i.ESP8266_Get_LinkStatus) for ESP8266_Get_LinkStatus + tcp.o(i.ESP8266_STA_TCPClient_Test) refers to tcp.o(.data) for .data + mqtt.o(i.ESP8266_STA_MQTTClient_Init) refers to memcpya.o(.text) for __aeabi_memcpy4 + mqtt.o(i.ESP8266_STA_MQTTClient_Init) refers to printf3.o(i.__0printf$3) for __2printf + mqtt.o(i.ESP8266_STA_MQTTClient_Init) refers to esp8266.o(i.ESP8266_ATE0) for ESP8266_ATE0 + mqtt.o(i.ESP8266_STA_MQTTClient_Init) refers to esp8266.o(i.ESP8266_Net_Mode_Choose) for ESP8266_Net_Mode_Choose + mqtt.o(i.ESP8266_STA_MQTTClient_Init) refers to esp8266.o(i.ESP8266_JoinAP) for ESP8266_JoinAP + mqtt.o(i.ESP8266_STA_MQTTClient_Init) refers to esp8266.o(i.ESP8266_MQTTUSERCFG) for ESP8266_MQTTUSERCFG + mqtt.o(i.ESP8266_STA_MQTTClient_Init) refers to main.o(i.delay_ms) for delay_ms + mqtt.o(i.ESP8266_STA_MQTTClient_Init) refers to esp8266.o(i.ESP8266_MQTTCONN) for ESP8266_MQTTCONN + mqtt.o(i.ESP8266_STA_MQTTClient_Init) refers to esp8266.o(i.ESP8266_MQTTSUB) for ESP8266_MQTTSUB + mqtt.o(i.ESP8266_STA_MQTTClient_Init) refers to esp8266.o(i.MQTT_SendString) for MQTT_SendString + mqtt.o(i.ESP8266_STA_MQTTClient_Init) refers to mqtt.o(.conststring) for .conststring process.o(i.set_sg90) refers to tim.o(.bss) for htim4 sensor_light.o(i.light_get_average_value) refers to sensor_light.o(i.light_get_value) for light_get_value sensor_light.o(i.light_get_average_value) refers to main.o(i.delay_ms) for delay_ms @@ -260,15 +236,13 @@ Section Cross References esp8266.o(i.ESP8266_ATE0) refers to main.o(i.delay_ms) for delay_ms esp8266.o(i.ESP8266_ATE0) refers to esp8266.o(i.ESP8266_Send_AT_Cmd) for ESP8266_Send_AT_Cmd esp8266.o(i.ESP8266_ATE0) refers to printf3.o(i.__0printf$3) for __2printf - esp8266.o(i.ESP8266_AT_Test) refers to main.o(i.delay_ms) for delay_ms - esp8266.o(i.ESP8266_AT_Test) refers to esp8266.o(i.ESP8266_Send_AT_Cmd) for ESP8266_Send_AT_Cmd - esp8266.o(i.ESP8266_AT_Test) refers to printf3.o(i.__0printf$3) for __2printf - esp8266.o(i.ESP8266_Enable_AutoConnect) refers to printf3.o(i.__0sprintf$3) for __2sprintf - esp8266.o(i.ESP8266_Enable_AutoConnect) refers to esp8266.o(i.ESP8266_Send_AT_Cmd) for ESP8266_Send_AT_Cmd + esp8266.o(i.ESP8266_AT_Restore) refers to main.o(i.delay_ms) for delay_ms + esp8266.o(i.ESP8266_AT_Restore) refers to esp8266.o(i.ESP8266_Send_AT_Cmd) for ESP8266_Send_AT_Cmd + esp8266.o(i.ESP8266_AT_Restore) refers to printf3.o(i.__0printf$3) for __2printf esp8266.o(i.ESP8266_Enable_MultipleId) refers to printf3.o(i.__0sprintf$3) for __2sprintf esp8266.o(i.ESP8266_Enable_MultipleId) refers to esp8266.o(i.ESP8266_Send_AT_Cmd) for ESP8266_Send_AT_Cmd esp8266.o(i.ESP8266_ExitUnvarnishSend) refers to main.o(i.delay_ms) for delay_ms - esp8266.o(i.ESP8266_ExitUnvarnishSend) refers to esp8266.o(i.hal_AT_printf) for hal_AT_printf + esp8266.o(i.ESP8266_ExitUnvarnishSend) refers to esp8266.o(i.USART_printf) for USART_printf esp8266.o(i.ESP8266_Get_LinkStatus) refers to esp8266.o(i.ESP8266_Send_AT_Cmd) for ESP8266_Send_AT_Cmd esp8266.o(i.ESP8266_Get_LinkStatus) refers to strstr.o(.text) for strstr esp8266.o(i.ESP8266_Get_LinkStatus) refers to esp8266.o(.bss) for .bss @@ -277,28 +251,29 @@ Section Cross References esp8266.o(i.ESP8266_Link_Server) refers to memseta.o(.text) for __aeabi_memclr4 esp8266.o(i.ESP8266_Link_Server) refers to printf3.o(i.__0sprintf$3) for __2sprintf esp8266.o(i.ESP8266_Link_Server) refers to esp8266.o(i.ESP8266_Send_AT_Cmd) for ESP8266_Send_AT_Cmd + esp8266.o(i.ESP8266_MQTTCLEAN) refers to printf3.o(i.__0sprintf$3) for __2sprintf + esp8266.o(i.ESP8266_MQTTCLEAN) refers to esp8266.o(i.ESP8266_Send_AT_Cmd) for ESP8266_Send_AT_Cmd + esp8266.o(i.ESP8266_MQTTCONN) refers to printf3.o(i.__0sprintf$3) for __2sprintf + esp8266.o(i.ESP8266_MQTTCONN) refers to esp8266.o(i.ESP8266_Send_AT_Cmd) for ESP8266_Send_AT_Cmd + esp8266.o(i.ESP8266_MQTTPUB) refers to printf3.o(i.__0sprintf$3) for __2sprintf + esp8266.o(i.ESP8266_MQTTPUB) refers to esp8266.o(i.ESP8266_Send_AT_Cmd) for ESP8266_Send_AT_Cmd + esp8266.o(i.ESP8266_MQTTSUB) refers to printf3.o(i.__0sprintf$3) for __2sprintf + esp8266.o(i.ESP8266_MQTTSUB) refers to esp8266.o(i.ESP8266_Send_AT_Cmd) for ESP8266_Send_AT_Cmd + esp8266.o(i.ESP8266_MQTTUSERCFG) refers to printf3.o(i.__0sprintf$3) for __2sprintf + esp8266.o(i.ESP8266_MQTTUSERCFG) refers to esp8266.o(i.ESP8266_Send_AT_Cmd) for ESP8266_Send_AT_Cmd esp8266.o(i.ESP8266_Net_Mode_Choose) refers to esp8266.o(i.ESP8266_Send_AT_Cmd) for ESP8266_Send_AT_Cmd - esp8266.o(i.ESP8266_Rst) refers to esp8266.o(i.ESP8266_Send_AT_Cmd) for ESP8266_Send_AT_Cmd - esp8266.o(i.ESP8266_SendString) refers to esp8266.o(i.hal_AT_printf) for hal_AT_printf + esp8266.o(i.ESP8266_SendString) refers to esp8266.o(i.USART_printf) for USART_printf esp8266.o(i.ESP8266_SendString) refers to printf3.o(i.__0sprintf$3) for __2sprintf esp8266.o(i.ESP8266_SendString) refers to esp8266.o(i.ESP8266_Send_AT_Cmd) for ESP8266_Send_AT_Cmd - esp8266.o(i.ESP8266_Send_AT_Cmd) refers to memseta.o(.text) for __aeabi_memclr4 - esp8266.o(i.ESP8266_Send_AT_Cmd) refers to esp8266.o(i.hal_AT_printf) for hal_AT_printf + esp8266.o(i.ESP8266_Send_AT_Cmd) refers to esp8266.o(i.USART_printf) for USART_printf esp8266.o(i.ESP8266_Send_AT_Cmd) refers to main.o(i.delay_ms) for delay_ms esp8266.o(i.ESP8266_Send_AT_Cmd) refers to printf3.o(i.__0printf$3) for __2printf esp8266.o(i.ESP8266_Send_AT_Cmd) refers to strstr.o(.text) for strstr esp8266.o(i.ESP8266_Send_AT_Cmd) refers to esp8266.o(.bss) for .bss esp8266.o(i.ESP8266_UnvarnishSend) refers to esp8266.o(i.ESP8266_Send_AT_Cmd) for ESP8266_Send_AT_Cmd - esp8266.o(i.WiFi_Connect_IoTServer) refers to esp8266.o(i.ESP8266_ATE0) for ESP8266_ATE0 - esp8266.o(i.WiFi_Connect_IoTServer) refers to printf3.o(i.__0printf$3) for __2printf - esp8266.o(i.WiFi_Connect_IoTServer) refers to esp8266.o(i.ESP8266_Net_Mode_Choose) for ESP8266_Net_Mode_Choose - esp8266.o(i.WiFi_Connect_IoTServer) refers to esp8266.o(i.ESP8266_Enable_MultipleId) for ESP8266_Enable_MultipleId - esp8266.o(i.WiFi_Connect_IoTServer) refers to esp8266.o(i.ESP8266_Enable_AutoConnect) for ESP8266_Enable_AutoConnect - esp8266.o(i.WiFi_Connect_IoTServer) refers to esp8266.o(i.ESP8266_JoinAP) for ESP8266_JoinAP - esp8266.o(i.WiFi_Connect_IoTServer) refers to mqtt.o(i.mqtt_tcp_connect) for mqtt_tcp_connect - esp8266.o(i.WiFi_Connect_IoTServer) refers to esp8266.o(i.ESP8266_UnvarnishSend) for ESP8266_UnvarnishSend - esp8266.o(i.hal_AT_printf) refers to stm32f1xx_hal_uart.o(i.HAL_UART_Transmit) for HAL_UART_Transmit - esp8266.o(i.hal_AT_printf) refers to usart.o(.bss) for huart3 + esp8266.o(i.MQTT_SendString) refers to esp8266.o(i.ESP8266_MQTTPUB) for ESP8266_MQTTPUB + esp8266.o(i.USART_printf) refers to stm32f1xx_hal_uart.o(i.HAL_UART_Transmit) for HAL_UART_Transmit + esp8266.o(i.USART_printf) refers to usart.o(.bss) for huart3 stm32f1xx_hal_adc.o(i.ADC_ConversionStop_Disable) refers to stm32f1xx_hal.o(i.HAL_GetTick) for HAL_GetTick stm32f1xx_hal_adc.o(i.ADC_DMAConvCplt) refers to stm32f1xx_hal_adc.o(i.HAL_ADC_ConvCpltCallback) for HAL_ADC_ConvCpltCallback stm32f1xx_hal_adc.o(i.ADC_DMAError) refers to stm32f1xx_hal_adc.o(i.HAL_ADC_ErrorCallback) for HAL_ADC_ErrorCallback @@ -923,7 +898,7 @@ Section Cross References stm32f1xx_hal_uart.o(i.UART_DMAError) refers to stm32f1xx_hal_uart.o(i.UART_EndTxTransfer) for UART_EndTxTransfer stm32f1xx_hal_uart.o(i.UART_DMAError) refers to stm32f1xx_hal_uart.o(i.UART_EndRxTransfer) for UART_EndRxTransfer stm32f1xx_hal_uart.o(i.UART_DMAError) refers to stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback) for HAL_UART_ErrorCallback - stm32f1xx_hal_uart.o(i.UART_DMAReceiveCplt) refers to stm32f1xx_hal_uart.o(i.HAL_UART_RxCpltCallback) for HAL_UART_RxCpltCallback + stm32f1xx_hal_uart.o(i.UART_DMAReceiveCplt) refers to usart.o(i.HAL_UART_RxCpltCallback) for HAL_UART_RxCpltCallback stm32f1xx_hal_uart.o(i.UART_DMARxAbortCallback) refers to stm32f1xx_hal_uart.o(i.HAL_UART_AbortCpltCallback) for HAL_UART_AbortCpltCallback stm32f1xx_hal_uart.o(i.UART_DMARxHalfCplt) refers to stm32f1xx_hal_uart.o(i.HAL_UART_RxHalfCpltCallback) for HAL_UART_RxHalfCpltCallback stm32f1xx_hal_uart.o(i.UART_DMARxOnlyAbortCallback) refers to stm32f1xx_hal_uart.o(i.HAL_UART_AbortReceiveCpltCallback) for HAL_UART_AbortReceiveCpltCallback @@ -931,7 +906,7 @@ Section Cross References stm32f1xx_hal_uart.o(i.UART_DMATxAbortCallback) refers to stm32f1xx_hal_uart.o(i.HAL_UART_AbortCpltCallback) for HAL_UART_AbortCpltCallback stm32f1xx_hal_uart.o(i.UART_DMATxHalfCplt) refers to stm32f1xx_hal_uart.o(i.HAL_UART_TxHalfCpltCallback) for HAL_UART_TxHalfCpltCallback stm32f1xx_hal_uart.o(i.UART_DMATxOnlyAbortCallback) refers to stm32f1xx_hal_uart.o(i.HAL_UART_AbortTransmitCpltCallback) for HAL_UART_AbortTransmitCpltCallback - stm32f1xx_hal_uart.o(i.UART_Receive_IT) refers to stm32f1xx_hal_uart.o(i.HAL_UART_RxCpltCallback) for HAL_UART_RxCpltCallback + stm32f1xx_hal_uart.o(i.UART_Receive_IT) refers to usart.o(i.HAL_UART_RxCpltCallback) for HAL_UART_RxCpltCallback stm32f1xx_hal_uart.o(i.UART_SetConfig) refers to stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq) for HAL_RCC_GetPCLK2Freq stm32f1xx_hal_uart.o(i.UART_SetConfig) refers to stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) for HAL_RCC_GetPCLK1Freq stm32f1xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) refers to stm32f1xx_hal.o(i.HAL_GetTick) for HAL_GetTick @@ -1221,9 +1196,6 @@ Removing Unused input sections from the image. Removing adc.o(.revsh_text), (4 bytes). Removing adc.o(.rrx_text), (6 bytes). Removing adc.o(i.HAL_ADC_MspDeInit), (40 bytes). - Removing dma.o(.rev16_text), (4 bytes). - Removing dma.o(.revsh_text), (4 bytes). - Removing dma.o(.rrx_text), (6 bytes). Removing i2c.o(.rev16_text), (4 bytes). Removing i2c.o(.revsh_text), (4 bytes). Removing i2c.o(.rrx_text), (6 bytes). @@ -1240,38 +1212,28 @@ Removing Unused input sections from the image. Removing usart.o(.rev16_text), (4 bytes). Removing usart.o(.revsh_text), (4 bytes). Removing usart.o(.rrx_text), (6 bytes). - Removing usart.o(i.HAL_UART_MspDeInit), (100 bytes). - Removing usart.o(.data), (1 bytes). + Removing usart.o(i.HAL_UART_MspDeInit), (92 bytes). Removing stm32f1xx_it.o(.rev16_text), (4 bytes). Removing stm32f1xx_it.o(.revsh_text), (4 bytes). Removing stm32f1xx_it.o(.rrx_text), (6 bytes). Removing stm32f1xx_hal_msp.o(.rev16_text), (4 bytes). Removing stm32f1xx_hal_msp.o(.revsh_text), (4 bytes). Removing stm32f1xx_hal_msp.o(.rrx_text), (6 bytes). + Removing tcp.o(.rev16_text), (4 bytes). + Removing tcp.o(.revsh_text), (4 bytes). + Removing tcp.o(.rrx_text), (6 bytes). + Removing tcp.o(i.ESP8266_STA_TCPClient_Test), (284 bytes). + Removing tcp.o(.data), (1 bytes). Removing mqtt.o(.rev16_text), (4 bytes). Removing mqtt.o(.revsh_text), (4 bytes). Removing mqtt.o(.rrx_text), (6 bytes). - Removing mqtt.o(i.mqtt_ack_check), (64 bytes). - Removing mqtt.o(i.mqtt_beat), (112 bytes). - Removing mqtt.o(i.mqtt_connect), (186 bytes). - Removing mqtt.o(i.mqtt_handle), (54 bytes). - Removing mqtt.o(i.mqtt_init), (240 bytes). - Removing mqtt.o(i.mqtt_publish), (104 bytes). - Removing mqtt.o(i.mqtt_publish_from_cloud), (180 bytes). - Removing mqtt.o(i.mqtt_publish_update), (44 bytes). - Removing mqtt.o(i.mqtt_recv), (88 bytes). - Removing mqtt.o(i.mqtt_send), (148 bytes). - Removing mqtt.o(i.mqtt_str_fill), (38 bytes). - Removing mqtt.o(i.mqtt_subscriber), (86 bytes). - Removing mqtt.o(i.mqtt_tcp_connect), (96 bytes). - Removing mqtt.o(.data), (114 bytes). - Removing mqtt.o(.data), (2 bytes). Removing process.o(.rev16_text), (4 bytes). Removing process.o(.revsh_text), (4 bytes). Removing process.o(.rrx_text), (6 bytes). Removing process.o(i.process_handle_wifi_data), (2 bytes). Removing process.o(i.process_local_handle), (2 bytes). Removing process.o(i.process_report_data), (2 bytes). + Removing process.o(i.set_sg90), (12 bytes). Removing process.o(i.start_buzz), (16 bytes). Removing sensor_light.o(.rev16_text), (4 bytes). Removing sensor_light.o(.revsh_text), (4 bytes). @@ -1305,35 +1267,38 @@ Removing Unused input sections from the image. Removing rc522.o(.revsh_text), (4 bytes). Removing rc522.o(.rrx_text), (6 bytes). Removing rc522.o(i.CalulateCRC), (102 bytes). + Removing rc522.o(i.ClearBitMask), (24 bytes). Removing rc522.o(i.IC_CMT), (70 bytes). + Removing rc522.o(i.M500PcdConfigISOType), (86 bytes). Removing rc522.o(i.PcdAntennaOff), (8 bytes). + Removing rc522.o(i.PcdAntennaOn), (26 bytes). Removing rc522.o(i.PcdAnticoll), (108 bytes). Removing rc522.o(i.PcdAuthState), (84 bytes). Removing rc522.o(i.PcdComMF522), (278 bytes). Removing rc522.o(i.PcdHalt), (50 bytes). Removing rc522.o(i.PcdRead), (76 bytes). Removing rc522.o(i.PcdRequest), (82 bytes). + Removing rc522.o(i.PcdReset), (132 bytes). Removing rc522.o(i.PcdSelect), (100 bytes). Removing rc522.o(i.PcdWrite), (132 bytes). + Removing rc522.o(i.ReadRawRC), (60 bytes). + Removing rc522.o(i.SPI_FLASH_ReadByte), (44 bytes). + Removing rc522.o(i.SPI_FLASH_SendByte), (44 bytes). + Removing rc522.o(i.SetBitMask), (24 bytes). + Removing rc522.o(i.WriteRawRC), (60 bytes). Removing esp8266.o(.rev16_text), (4 bytes). Removing esp8266.o(.revsh_text), (4 bytes). Removing esp8266.o(.rrx_text), (6 bytes). - Removing esp8266.o(i.ESP8266_ATE0), (72 bytes). - Removing esp8266.o(i.ESP8266_AT_Test), (76 bytes). - Removing esp8266.o(i.ESP8266_Enable_AutoConnect), (56 bytes). + Removing esp8266.o(i.ESP8266_AT_Restore), (76 bytes). Removing esp8266.o(i.ESP8266_Enable_MultipleId), (60 bytes). Removing esp8266.o(i.ESP8266_ExitUnvarnishSend), (32 bytes). Removing esp8266.o(i.ESP8266_Get_LinkStatus), (124 bytes). Removing esp8266.o(i.ESP8266_Init), (28 bytes). - Removing esp8266.o(i.ESP8266_JoinAP), (76 bytes). Removing esp8266.o(i.ESP8266_Link_Server), (176 bytes). - Removing esp8266.o(i.ESP8266_Net_Mode_Choose), (96 bytes). - Removing esp8266.o(i.ESP8266_Rst), (32 bytes). + Removing esp8266.o(i.ESP8266_MQTTCLEAN), (52 bytes). + Removing esp8266.o(i.ESP8266_Rst), (2 bytes). Removing esp8266.o(i.ESP8266_SendString), (132 bytes). - Removing esp8266.o(i.ESP8266_Send_AT_Cmd), (152 bytes). Removing esp8266.o(i.ESP8266_UnvarnishSend), (76 bytes). - Removing esp8266.o(i.WiFi_Connect_IoTServer), (460 bytes). - Removing esp8266.o(i.hal_AT_printf), (304 bytes). Removing stm32f1xx_hal_gpio_ex.o(.rev16_text), (4 bytes). Removing stm32f1xx_hal_gpio_ex.o(.revsh_text), (4 bytes). Removing stm32f1xx_hal_gpio_ex.o(.rrx_text), (6 bytes). @@ -1434,13 +1399,17 @@ Removing Unused input sections from the image. Removing stm32f1xx_hal_dma.o(.rev16_text), (4 bytes). Removing stm32f1xx_hal_dma.o(.revsh_text), (4 bytes). Removing stm32f1xx_hal_dma.o(.rrx_text), (6 bytes). - Removing stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT), (152 bytes). + Removing stm32f1xx_hal_dma.o(i.DMA_SetConfig), (42 bytes). + Removing stm32f1xx_hal_dma.o(i.HAL_DMA_Abort), (70 bytes). Removing stm32f1xx_hal_dma.o(i.HAL_DMA_DeInit), (92 bytes). Removing stm32f1xx_hal_dma.o(i.HAL_DMA_GetError), (4 bytes). Removing stm32f1xx_hal_dma.o(i.HAL_DMA_GetState), (6 bytes). + Removing stm32f1xx_hal_dma.o(i.HAL_DMA_IRQHandler), (340 bytes). + Removing stm32f1xx_hal_dma.o(i.HAL_DMA_Init), (92 bytes). Removing stm32f1xx_hal_dma.o(i.HAL_DMA_PollForTransfer), (532 bytes). Removing stm32f1xx_hal_dma.o(i.HAL_DMA_RegisterCallback), (74 bytes). Removing stm32f1xx_hal_dma.o(i.HAL_DMA_Start), (80 bytes). + Removing stm32f1xx_hal_dma.o(i.HAL_DMA_Start_IT), (112 bytes). Removing stm32f1xx_hal_dma.o(i.HAL_DMA_UnRegisterCallback), (82 bytes). Removing stm32f1xx_hal_cortex.o(.rev16_text), (4 bytes). Removing stm32f1xx_hal_cortex.o(.revsh_text), (4 bytes). @@ -1611,6 +1580,7 @@ Removing Unused input sections from the image. Removing stm32f1xx_hal_spi.o(i.HAL_SPI_RxCpltCallback), (2 bytes). Removing stm32f1xx_hal_spi.o(i.HAL_SPI_RxHalfCpltCallback), (2 bytes). Removing stm32f1xx_hal_spi.o(i.HAL_SPI_Transmit), (358 bytes). + Removing stm32f1xx_hal_spi.o(i.HAL_SPI_TransmitReceive), (482 bytes). Removing stm32f1xx_hal_spi.o(i.HAL_SPI_TransmitReceive_DMA), (292 bytes). Removing stm32f1xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT), (164 bytes). Removing stm32f1xx_hal_spi.o(i.HAL_SPI_Transmit_DMA), (216 bytes). @@ -1639,10 +1609,12 @@ Removing Unused input sections from the image. Removing stm32f1xx_hal_spi.o(i.SPI_DMATransmitReceiveCplt), (90 bytes). Removing stm32f1xx_hal_spi.o(i.SPI_DMATxAbortCallback), (112 bytes). Removing stm32f1xx_hal_spi.o(i.SPI_EndRxTransaction), (92 bytes). + Removing stm32f1xx_hal_spi.o(i.SPI_EndRxTxTransaction), (32 bytes). Removing stm32f1xx_hal_spi.o(i.SPI_RxISR_16BIT), (32 bytes). Removing stm32f1xx_hal_spi.o(i.SPI_RxISR_8BIT), (32 bytes). Removing stm32f1xx_hal_spi.o(i.SPI_TxISR_16BIT), (32 bytes). Removing stm32f1xx_hal_spi.o(i.SPI_TxISR_8BIT), (32 bytes). + Removing stm32f1xx_hal_spi.o(i.SPI_WaitFlagStateUntilTimeout), (184 bytes). Removing stm32f1xx_hal_tim.o(.rev16_text), (4 bytes). Removing stm32f1xx_hal_tim.o(.revsh_text), (4 bytes). Removing stm32f1xx_hal_tim.o(.rrx_text), (6 bytes). @@ -1813,26 +1785,29 @@ Removing Unused input sections from the image. Removing stm32f1xx_hal_uart.o(i.HAL_UART_Abort_IT), (172 bytes). Removing stm32f1xx_hal_uart.o(i.HAL_UART_DMAPause), (102 bytes). Removing stm32f1xx_hal_uart.o(i.HAL_UART_DMAResume), (94 bytes). + Removing stm32f1xx_hal_uart.o(i.HAL_UART_DMAStop), (88 bytes). Removing stm32f1xx_hal_uart.o(i.HAL_UART_DeInit), (50 bytes). Removing stm32f1xx_hal_uart.o(i.HAL_UART_GetError), (4 bytes). Removing stm32f1xx_hal_uart.o(i.HAL_UART_GetState), (10 bytes). - Removing stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler), (348 bytes). Removing stm32f1xx_hal_uart.o(i.HAL_UART_MspDeInit), (2 bytes). Removing stm32f1xx_hal_uart.o(i.HAL_UART_MspInit), (2 bytes). Removing stm32f1xx_hal_uart.o(i.HAL_UART_Receive), (188 bytes). - Removing stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT), (82 bytes). + Removing stm32f1xx_hal_uart.o(i.HAL_UART_Receive_DMA), (152 bytes). + Removing stm32f1xx_hal_uart.o(i.HAL_UART_RxCpltCallback), (2 bytes). + Removing stm32f1xx_hal_uart.o(i.HAL_UART_RxHalfCpltCallback), (2 bytes). Removing stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_DMA), (128 bytes). Removing stm32f1xx_hal_uart.o(i.HAL_UART_Transmit_IT), (62 bytes). - Removing stm32f1xx_hal_uart.o(i.HAL_UART_TxCpltCallback), (2 bytes). Removing stm32f1xx_hal_uart.o(i.HAL_UART_TxHalfCpltCallback), (2 bytes). - Removing stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError), (16 bytes). + Removing stm32f1xx_hal_uart.o(i.UART_DMAError), (74 bytes). + Removing stm32f1xx_hal_uart.o(i.UART_DMAReceiveCplt), (60 bytes). Removing stm32f1xx_hal_uart.o(i.UART_DMARxAbortCallback), (42 bytes). + Removing stm32f1xx_hal_uart.o(i.UART_DMARxHalfCplt), (10 bytes). Removing stm32f1xx_hal_uart.o(i.UART_DMARxOnlyAbortCallback), (20 bytes). Removing stm32f1xx_hal_uart.o(i.UART_DMATransmitCplt), (46 bytes). Removing stm32f1xx_hal_uart.o(i.UART_DMATxAbortCallback), (42 bytes). Removing stm32f1xx_hal_uart.o(i.UART_DMATxHalfCplt), (10 bytes). Removing stm32f1xx_hal_uart.o(i.UART_DMATxOnlyAbortCallback), (20 bytes). - Removing stm32f1xx_hal_uart.o(i.UART_Receive_IT), (140 bytes). + Removing stm32f1xx_hal_uart.o(i.UART_EndTxTransfer), (18 bytes). Removing system_stm32f1xx.o(.rev16_text), (4 bytes). Removing system_stm32f1xx.o(.revsh_text), (4 bytes). Removing system_stm32f1xx.o(.rrx_text), (6 bytes). @@ -1847,7 +1822,7 @@ Removing Unused input sections from the image. Removing cdrcmple.o(.text), (48 bytes). Removing depilogue.o(.text), (186 bytes). -637 unused section(s) (total 52941 bytes) removed from the image. +637 unused section(s) (total 51999 bytes) removed from the image. ============================================================================== @@ -1858,7 +1833,6 @@ Image Symbol Table Symbol Name Value Ov Type Size Object(Section) ../Core/Src/adc.c 0x00000000 Number 0 adc.o ABSOLUTE - ../Core/Src/dma.c 0x00000000 Number 0 dma.o ABSOLUTE ../Core/Src/gpio.c 0x00000000 Number 0 gpio.o ABSOLUTE ../Core/Src/i2c.c 0x00000000 Number 0 i2c.o ABSOLUTE ../Core/Src/main.c 0x00000000 Number 0 main.o ABSOLUTE @@ -1886,55 +1860,51 @@ Image Symbol Table ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c 0x00000000 Number 0 stm32f1xx_hal_tim.o ABSOLUTE ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c 0x00000000 Number 0 stm32f1xx_hal_tim_ex.o ABSOLUTE ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c 0x00000000 Number 0 stm32f1xx_hal_uart.o ABSOLUTE - ../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE ../clib/microlib/division.c 0x00000000 Number 0 uldiv.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE + ../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE - ../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE + ../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf7.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfa.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf8.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfa.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE ../clib/microlib/printf/stubs.s 0x00000000 Number 0 stubs.o ABSOLUTE ../clib/microlib/stdio/streams.c 0x00000000 Number 0 stdout.o ABSOLUTE - ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE + ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE ../clib/microlib/string/memset.c 0x00000000 Number 0 memseta.o ABSOLUTE - ../clib/microlib/string/strcmp.c 0x00000000 Number 0 strcmp.o ABSOLUTE - ../clib/microlib/string/strcpy.c 0x00000000 Number 0 strcpy.o ABSOLUTE - ../clib/microlib/string/strlen.c 0x00000000 Number 0 strlen.o ABSOLUTE ../clib/microlib/string/strstr.c 0x00000000 Number 0 strstr.o ABSOLUTE ../clib/microlib/stubs.s 0x00000000 Number 0 iusefp.o ABSOLUTE ../fplib/microlib/fpadd.c 0x00000000 Number 0 dadd.o ABSOLUTE - ../fplib/microlib/fpdiv.c 0x00000000 Number 0 fdiv.o ABSOLUTE ../fplib/microlib/fpdiv.c 0x00000000 Number 0 ddiv.o ABSOLUTE - ../fplib/microlib/fpepilogue.c 0x00000000 Number 0 fepilogue.o ABSOLUTE + ../fplib/microlib/fpdiv.c 0x00000000 Number 0 fdiv.o ABSOLUTE ../fplib/microlib/fpepilogue.c 0x00000000 Number 0 depilogue.o ABSOLUTE + ../fplib/microlib/fpepilogue.c 0x00000000 Number 0 fepilogue.o ABSOLUTE ../fplib/microlib/fpfix.c 0x00000000 Number 0 dfixul.o ABSOLUTE ../fplib/microlib/fpflt.c 0x00000000 Number 0 ffltui.o ABSOLUTE ../fplib/microlib/fpmul.c 0x00000000 Number 0 dmul.o ABSOLUTE ..\Core\Src\adc.c 0x00000000 Number 0 adc.o ABSOLUTE - ..\Core\Src\dma.c 0x00000000 Number 0 dma.o ABSOLUTE ..\Core\Src\gpio.c 0x00000000 Number 0 gpio.o ABSOLUTE ..\Core\Src\i2c.c 0x00000000 Number 0 i2c.o ABSOLUTE ..\Core\Src\main.c 0x00000000 Number 0 main.o ABSOLUTE @@ -1970,6 +1940,7 @@ Image Symbol Table ..\User\oled\oled.c 0x00000000 Number 0 oled.o ABSOLUTE ..\User\xiaoyi_wifi\esp8266.c 0x00000000 Number 0 esp8266.o ABSOLUTE ..\User\xiaoyi_wifi\mqtt.c 0x00000000 Number 0 mqtt.o ABSOLUTE + ..\User\xiaoyi_wifi\tcp.c 0x00000000 Number 0 tcp.o ABSOLUTE ..\\User\\Process\\process.c 0x00000000 Number 0 process.o ABSOLUTE ..\\User\\RC522\\rc522.c 0x00000000 Number 0 rc522.o ABSOLUTE ..\\User\\dht11\\dht11.c 0x00000000 Number 0 dht11.o ABSOLUTE @@ -1978,6 +1949,7 @@ Image Symbol Table ..\\User\\oled\\oled.c 0x00000000 Number 0 oled.o ABSOLUTE ..\\User\\xiaoyi_wifi\\esp8266.c 0x00000000 Number 0 esp8266.o ABSOLUTE ..\\User\\xiaoyi_wifi\\mqtt.c 0x00000000 Number 0 mqtt.o ABSOLUTE + ..\\User\\xiaoyi_wifi\\tcp.c 0x00000000 Number 0 tcp.o ABSOLUTE cdrcmple.s 0x00000000 Number 0 cdrcmple.o ABSOLUTE dc.s 0x00000000 Number 0 dc.o ABSOLUTE handlers.s 0x00000000 Number 0 handlers.o ABSOLUTE @@ -1995,177 +1967,168 @@ Image Symbol Table .ARM.Collect$$$$00002712 0x080000fc Section 4 entry2.o(.ARM.Collect$$$$00002712) __lit__00000000 0x080000fc Data 4 entry2.o(.ARM.Collect$$$$00002712) .text 0x08000100 Section 36 startup_stm32f103xb.o(.text) - .text 0x08000124 Section 0 memseta.o(.text) - .text 0x08000148 Section 0 uidiv.o(.text) - .text 0x08000174 Section 36 init.o(.text) - i.ADC_ConversionStop_Disable 0x08000198 Section 0 stm32f1xx_hal_adc.o(i.ADC_ConversionStop_Disable) - i.BusFault_Handler 0x080001e4 Section 0 stm32f1xx_it.o(i.BusFault_Handler) - i.ClearBitMask 0x080001e6 Section 0 rc522.o(i.ClearBitMask) - i.DHT11_Mode_Out_PP 0x08000200 Section 0 dht11.o(i.DHT11_Mode_Out_PP) - DHT11_Mode_Out_PP 0x08000201 Thumb Code 24 dht11.o(i.DHT11_Mode_Out_PP) - i.DMA1_Channel3_IRQHandler 0x0800021c Section 0 stm32f1xx_it.o(i.DMA1_Channel3_IRQHandler) - i.DMA_SetConfig 0x08000228 Section 0 stm32f1xx_hal_dma.o(i.DMA_SetConfig) - DMA_SetConfig 0x08000229 Thumb Code 42 stm32f1xx_hal_dma.o(i.DMA_SetConfig) - i.DebugMon_Handler 0x08000252 Section 0 stm32f1xx_it.o(i.DebugMon_Handler) - i.Error_Handler 0x08000254 Section 0 main.o(i.Error_Handler) - i.HAL_ADC_ConfigChannel 0x08000258 Section 0 stm32f1xx_hal_adc.o(i.HAL_ADC_ConfigChannel) - i.HAL_ADC_Init 0x08000354 Section 0 stm32f1xx_hal_adc.o(i.HAL_ADC_Init) - i.HAL_ADC_MspInit 0x08000470 Section 0 adc.o(i.HAL_ADC_MspInit) - i.HAL_DMA_Abort 0x080004c8 Section 0 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort) - i.HAL_DMA_IRQHandler 0x08000510 Section 0 stm32f1xx_hal_dma.o(i.HAL_DMA_IRQHandler) - i.HAL_DMA_Init 0x08000664 Section 0 stm32f1xx_hal_dma.o(i.HAL_DMA_Init) - i.HAL_DMA_Start_IT 0x080006c0 Section 0 stm32f1xx_hal_dma.o(i.HAL_DMA_Start_IT) - i.HAL_Delay 0x08000730 Section 0 stm32f1xx_hal.o(i.HAL_Delay) - i.HAL_GPIO_Init 0x08000754 Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init) - i.HAL_GPIO_TogglePin 0x08000934 Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_TogglePin) - i.HAL_GPIO_WritePin 0x08000944 Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) - i.HAL_GetTick 0x08000950 Section 0 stm32f1xx_hal.o(i.HAL_GetTick) - i.HAL_I2C_Init 0x0800095c Section 0 stm32f1xx_hal_i2c.o(i.HAL_I2C_Init) - i.HAL_I2C_Mem_Write 0x08000ae4 Section 0 stm32f1xx_hal_i2c.o(i.HAL_I2C_Mem_Write) - i.HAL_I2C_MspInit 0x08000c14 Section 0 i2c.o(i.HAL_I2C_MspInit) - i.HAL_IncTick 0x08000c84 Section 0 stm32f1xx_hal.o(i.HAL_IncTick) - i.HAL_Init 0x08000c94 Section 0 stm32f1xx_hal.o(i.HAL_Init) - i.HAL_InitTick 0x08000cb8 Section 0 stm32f1xx_hal.o(i.HAL_InitTick) - i.HAL_MspInit 0x08000cf8 Section 0 stm32f1xx_hal_msp.o(i.HAL_MspInit) - i.HAL_NVIC_EnableIRQ 0x08000d34 Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) - i.HAL_NVIC_SetPriority 0x08000d50 Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority) - i.HAL_NVIC_SetPriorityGrouping 0x08000d90 Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping) - i.HAL_RCCEx_PeriphCLKConfig 0x08000db4 Section 0 stm32f1xx_hal_rcc_ex.o(i.HAL_RCCEx_PeriphCLKConfig) - i.HAL_RCC_ClockConfig 0x08000ea0 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig) - i.HAL_RCC_GetPCLK1Freq 0x08000fcc Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) - i.HAL_RCC_GetPCLK2Freq 0x08000fec Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq) - i.HAL_RCC_GetSysClockFreq 0x0800100c Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) - i.HAL_RCC_OscConfig 0x08001078 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig) - i.HAL_SPI_Init 0x08001398 Section 0 stm32f1xx_hal_spi.o(i.HAL_SPI_Init) - i.HAL_SPI_MspInit 0x0800144c Section 0 spi.o(i.HAL_SPI_MspInit) - i.HAL_SPI_TransmitReceive 0x080014c0 Section 0 stm32f1xx_hal_spi.o(i.HAL_SPI_TransmitReceive) - i.HAL_SYSTICK_Config 0x080016a2 Section 0 stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config) - i.HAL_TIMEx_MasterConfigSynchronization 0x080016cc Section 0 stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_MasterConfigSynchronization) - i.HAL_TIM_Base_Init 0x08001734 Section 0 stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Init) - i.HAL_TIM_Base_MspInit 0x08001790 Section 0 tim.o(i.HAL_TIM_Base_MspInit) - i.HAL_TIM_Base_Start_IT 0x080017b8 Section 0 stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Start_IT) - i.HAL_TIM_ConfigClockSource 0x08001810 Section 0 stm32f1xx_hal_tim.o(i.HAL_TIM_ConfigClockSource) - i.HAL_TIM_MspPostInit 0x080018e8 Section 0 tim.o(i.HAL_TIM_MspPostInit) - i.HAL_TIM_OC_ConfigChannel 0x08001934 Section 0 stm32f1xx_hal_tim.o(i.HAL_TIM_OC_ConfigChannel) - i.HAL_TIM_OC_Init 0x08001980 Section 0 stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Init) - i.HAL_TIM_OC_MspInit 0x080019dc Section 0 tim.o(i.HAL_TIM_OC_MspInit) - i.HAL_TIM_PWM_Start 0x08001a04 Section 0 stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Start) - i.HAL_UART_DMAStop 0x08001aa0 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_DMAStop) - i.HAL_UART_ErrorCallback 0x08001af8 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback) - i.HAL_UART_Init 0x08001afa Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Init) - i.HAL_UART_MspInit 0x08001b5c Section 0 usart.o(i.HAL_UART_MspInit) - i.HAL_UART_Receive_DMA 0x08001c6c Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Receive_DMA) - i.HAL_UART_RxCpltCallback 0x08001d04 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_RxCpltCallback) - i.HAL_UART_RxHalfCpltCallback 0x08001d06 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_RxHalfCpltCallback) - i.HAL_UART_Transmit 0x08001d08 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit) - i.HardFault_Handler 0x08001dba Section 0 stm32f1xx_it.o(i.HardFault_Handler) - i.I2C_IsAcknowledgeFailed 0x08001dbc Section 0 stm32f1xx_hal_i2c.o(i.I2C_IsAcknowledgeFailed) - I2C_IsAcknowledgeFailed 0x08001dbd Thumb Code 46 stm32f1xx_hal_i2c.o(i.I2C_IsAcknowledgeFailed) - i.I2C_RequestMemoryWrite 0x08001dec Section 0 stm32f1xx_hal_i2c.o(i.I2C_RequestMemoryWrite) - I2C_RequestMemoryWrite 0x08001ded Thumb Code 162 stm32f1xx_hal_i2c.o(i.I2C_RequestMemoryWrite) - i.I2C_WaitOnBTFFlagUntilTimeout 0x08001e94 Section 0 stm32f1xx_hal_i2c.o(i.I2C_WaitOnBTFFlagUntilTimeout) - I2C_WaitOnBTFFlagUntilTimeout 0x08001e95 Thumb Code 76 stm32f1xx_hal_i2c.o(i.I2C_WaitOnBTFFlagUntilTimeout) - i.I2C_WaitOnFlagUntilTimeout 0x08001ee0 Section 0 stm32f1xx_hal_i2c.o(i.I2C_WaitOnFlagUntilTimeout) - I2C_WaitOnFlagUntilTimeout 0x08001ee1 Thumb Code 104 stm32f1xx_hal_i2c.o(i.I2C_WaitOnFlagUntilTimeout) - i.I2C_WaitOnMasterAddressFlagUntilTimeout 0x08001f48 Section 0 stm32f1xx_hal_i2c.o(i.I2C_WaitOnMasterAddressFlagUntilTimeout) - I2C_WaitOnMasterAddressFlagUntilTimeout 0x08001f49 Thumb Code 150 stm32f1xx_hal_i2c.o(i.I2C_WaitOnMasterAddressFlagUntilTimeout) - i.I2C_WaitOnTXEFlagUntilTimeout 0x08001fde Section 0 stm32f1xx_hal_i2c.o(i.I2C_WaitOnTXEFlagUntilTimeout) - I2C_WaitOnTXEFlagUntilTimeout 0x08001fdf Thumb Code 76 stm32f1xx_hal_i2c.o(i.I2C_WaitOnTXEFlagUntilTimeout) - i.M500PcdConfigISOType 0x0800202a Section 0 rc522.o(i.M500PcdConfigISOType) - i.MX_ADC1_Init 0x08002080 Section 0 adc.o(i.MX_ADC1_Init) - i.MX_DMA_Init 0x080020d0 Section 0 dma.o(i.MX_DMA_Init) - i.MX_GPIO_Init 0x080020fc Section 0 gpio.o(i.MX_GPIO_Init) - i.MX_I2C1_Init 0x080021ec Section 0 i2c.o(i.MX_I2C1_Init) - i.MX_SPI2_Init 0x0800222c Section 0 spi.o(i.MX_SPI2_Init) - i.MX_TIM3_Init 0x08002270 Section 0 tim.o(i.MX_TIM3_Init) - i.MX_TIM4_Init 0x080022d8 Section 0 tim.o(i.MX_TIM4_Init) - i.MX_USART1_UART_Init 0x0800234c Section 0 usart.o(i.MX_USART1_UART_Init) - i.MX_USART3_UART_Init 0x08002384 Section 0 usart.o(i.MX_USART3_UART_Init) - i.MemManage_Handler 0x080023bc Section 0 stm32f1xx_it.o(i.MemManage_Handler) - i.NMI_Handler 0x080023be Section 0 stm32f1xx_it.o(i.NMI_Handler) - i.PcdAntennaOn 0x080023c0 Section 0 rc522.o(i.PcdAntennaOn) - i.PcdReset 0x080023dc Section 0 rc522.o(i.PcdReset) - i.PendSV_Handler 0x08002460 Section 0 stm32f1xx_it.o(i.PendSV_Handler) - i.ReadRawRC 0x08002464 Section 0 rc522.o(i.ReadRawRC) - i.SPI_EndRxTxTransaction 0x080024a0 Section 0 stm32f1xx_hal_spi.o(i.SPI_EndRxTxTransaction) - SPI_EndRxTxTransaction 0x080024a1 Thumb Code 32 stm32f1xx_hal_spi.o(i.SPI_EndRxTxTransaction) - i.SPI_FLASH_ReadByte 0x080024c0 Section 0 rc522.o(i.SPI_FLASH_ReadByte) - i.SPI_FLASH_SendByte 0x080024ec Section 0 rc522.o(i.SPI_FLASH_SendByte) - i.SPI_WaitFlagStateUntilTimeout 0x08002518 Section 0 stm32f1xx_hal_spi.o(i.SPI_WaitFlagStateUntilTimeout) - SPI_WaitFlagStateUntilTimeout 0x08002519 Thumb Code 180 stm32f1xx_hal_spi.o(i.SPI_WaitFlagStateUntilTimeout) - i.SVC_Handler 0x080025d0 Section 0 stm32f1xx_it.o(i.SVC_Handler) - i.SetBitMask 0x080025d2 Section 0 rc522.o(i.SetBitMask) - i.SysTick_Handler 0x080025ea Section 0 stm32f1xx_it.o(i.SysTick_Handler) - i.SystemClock_Config 0x080025ee Section 0 main.o(i.SystemClock_Config) - i.SystemInit 0x0800264e Section 0 system_stm32f1xx.o(i.SystemInit) - i.TIM_Base_SetConfig 0x08002650 Section 0 stm32f1xx_hal_tim.o(i.TIM_Base_SetConfig) - i.TIM_CCxChannelCmd 0x080026bc Section 0 stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) - i.TIM_ETR_SetConfig 0x080026d6 Section 0 stm32f1xx_hal_tim.o(i.TIM_ETR_SetConfig) - i.TIM_ITRx_SetConfig 0x080026ea Section 0 stm32f1xx_hal_tim.o(i.TIM_ITRx_SetConfig) - TIM_ITRx_SetConfig 0x080026eb Thumb Code 16 stm32f1xx_hal_tim.o(i.TIM_ITRx_SetConfig) - i.TIM_OC1_SetConfig 0x080026fc Section 0 stm32f1xx_hal_tim.o(i.TIM_OC1_SetConfig) - TIM_OC1_SetConfig 0x080026fd Thumb Code 74 stm32f1xx_hal_tim.o(i.TIM_OC1_SetConfig) - i.TIM_OC2_SetConfig 0x0800274c Section 0 stm32f1xx_hal_tim.o(i.TIM_OC2_SetConfig) - i.TIM_OC3_SetConfig 0x080027a4 Section 0 stm32f1xx_hal_tim.o(i.TIM_OC3_SetConfig) - TIM_OC3_SetConfig 0x080027a5 Thumb Code 82 stm32f1xx_hal_tim.o(i.TIM_OC3_SetConfig) - i.TIM_OC4_SetConfig 0x080027fc Section 0 stm32f1xx_hal_tim.o(i.TIM_OC4_SetConfig) - TIM_OC4_SetConfig 0x080027fd Thumb Code 64 stm32f1xx_hal_tim.o(i.TIM_OC4_SetConfig) - i.TIM_TI1_ConfigInputStage 0x08002840 Section 0 stm32f1xx_hal_tim.o(i.TIM_TI1_ConfigInputStage) - TIM_TI1_ConfigInputStage 0x08002841 Thumb Code 34 stm32f1xx_hal_tim.o(i.TIM_TI1_ConfigInputStage) - i.TIM_TI2_ConfigInputStage 0x08002862 Section 0 stm32f1xx_hal_tim.o(i.TIM_TI2_ConfigInputStage) - TIM_TI2_ConfigInputStage 0x08002863 Thumb Code 36 stm32f1xx_hal_tim.o(i.TIM_TI2_ConfigInputStage) - i.UART_DMAError 0x08002886 Section 0 stm32f1xx_hal_uart.o(i.UART_DMAError) - UART_DMAError 0x08002887 Thumb Code 74 stm32f1xx_hal_uart.o(i.UART_DMAError) - i.UART_DMAReceiveCplt 0x080028d0 Section 0 stm32f1xx_hal_uart.o(i.UART_DMAReceiveCplt) - UART_DMAReceiveCplt 0x080028d1 Thumb Code 60 stm32f1xx_hal_uart.o(i.UART_DMAReceiveCplt) - i.UART_DMARxHalfCplt 0x0800290c Section 0 stm32f1xx_hal_uart.o(i.UART_DMARxHalfCplt) - UART_DMARxHalfCplt 0x0800290d Thumb Code 10 stm32f1xx_hal_uart.o(i.UART_DMARxHalfCplt) - i.UART_EndRxTransfer 0x08002916 Section 0 stm32f1xx_hal_uart.o(i.UART_EndRxTransfer) - UART_EndRxTransfer 0x08002917 Thumb Code 28 stm32f1xx_hal_uart.o(i.UART_EndRxTransfer) - i.UART_EndTxTransfer 0x08002932 Section 0 stm32f1xx_hal_uart.o(i.UART_EndTxTransfer) - UART_EndTxTransfer 0x08002933 Thumb Code 18 stm32f1xx_hal_uart.o(i.UART_EndTxTransfer) - i.UART_SetConfig 0x08002944 Section 0 stm32f1xx_hal_uart.o(i.UART_SetConfig) - UART_SetConfig 0x08002945 Thumb Code 178 stm32f1xx_hal_uart.o(i.UART_SetConfig) - i.UART_WaitOnFlagUntilTimeout 0x080029fc Section 0 stm32f1xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) - UART_WaitOnFlagUntilTimeout 0x080029fd Thumb Code 100 stm32f1xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) - i.USART3_IRQHandler 0x08002a60 Section 0 usart.o(i.USART3_IRQHandler) - i.UsageFault_Handler 0x08002ac4 Section 0 stm32f1xx_it.o(i.UsageFault_Handler) - i.WriteRawRC 0x08002ac8 Section 0 rc522.o(i.WriteRawRC) - i.__0printf$3 0x08002b04 Section 0 printf3.o(i.__0printf$3) - i.__NVIC_SetPriority 0x08002b24 Section 0 stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority) - __NVIC_SetPriority 0x08002b25 Thumb Code 32 stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority) - i.__scatterload_copy 0x08002b44 Section 14 handlers.o(i.__scatterload_copy) - i.__scatterload_null 0x08002b52 Section 2 handlers.o(i.__scatterload_null) - i.__scatterload_zeroinit 0x08002b54 Section 14 handlers.o(i.__scatterload_zeroinit) - i._printf_core 0x08002b64 Section 0 printf3.o(i._printf_core) - _printf_core 0x08002b65 Thumb Code 436 printf3.o(i._printf_core) - i.delay_ms 0x08002d1c Section 0 main.o(i.delay_ms) - i.dht11_init 0x08002d20 Section 0 dht11.o(i.dht11_init) - i.fputc 0x08002d50 Section 0 usart.o(i.fputc) - i.main 0x08002d68 Section 0 main.o(i.main) - i.oled_fill 0x08002f60 Section 0 oled.o(i.oled_fill) - i.oled_init 0x08002f98 Section 0 oled.o(i.oled_init) - i.oled_set_pos 0x0800304c Section 0 oled.o(i.oled_set_pos) - i.oled_show_string 0x08003074 Section 0 oled.o(i.oled_show_string) - i.oled_write_cmd 0x0800314c Section 0 oled.o(i.oled_write_cmd) - i.oled_write_data 0x08003170 Section 0 oled.o(i.oled_write_data) - i.set_sg90 0x08003194 Section 0 process.o(i.set_sg90) - i.stop_buzz 0x080031a0 Section 0 process.o(i.stop_buzz) - i.wifi_data_recv_fun 0x080031b0 Section 0 main.o(i.wifi_data_recv_fun) - .constdata 0x08003214 Section 2072 oled.o(.constdata) - .constdata 0x08003a2c Section 16 system_stm32f1xx.o(.constdata) - .constdata 0x08003a3c Section 8 system_stm32f1xx.o(.constdata) + .text 0x08000124 Section 0 memcpya.o(.text) + .text 0x08000148 Section 0 memseta.o(.text) + .text 0x0800016c Section 0 strstr.o(.text) + .text 0x08000190 Section 0 uidiv.o(.text) + .text 0x080001bc Section 36 init.o(.text) + i.ADC_ConversionStop_Disable 0x080001e0 Section 0 stm32f1xx_hal_adc.o(i.ADC_ConversionStop_Disable) + i.BusFault_Handler 0x0800022c Section 0 stm32f1xx_it.o(i.BusFault_Handler) + i.DHT11_Mode_Out_PP 0x08000230 Section 0 dht11.o(i.DHT11_Mode_Out_PP) + DHT11_Mode_Out_PP 0x08000231 Thumb Code 24 dht11.o(i.DHT11_Mode_Out_PP) + i.DebugMon_Handler 0x0800024c Section 0 stm32f1xx_it.o(i.DebugMon_Handler) + i.ESP8266_ATE0 0x08000250 Section 0 esp8266.o(i.ESP8266_ATE0) + i.ESP8266_JoinAP 0x08000298 Section 0 esp8266.o(i.ESP8266_JoinAP) + i.ESP8266_MQTTCONN 0x080002d4 Section 0 esp8266.o(i.ESP8266_MQTTCONN) + i.ESP8266_MQTTPUB 0x08000314 Section 0 esp8266.o(i.ESP8266_MQTTPUB) + i.ESP8266_MQTTSUB 0x0800035c Section 0 esp8266.o(i.ESP8266_MQTTSUB) + i.ESP8266_MQTTUSERCFG 0x08000394 Section 0 esp8266.o(i.ESP8266_MQTTUSERCFG) + i.ESP8266_Net_Mode_Choose 0x080003e8 Section 0 esp8266.o(i.ESP8266_Net_Mode_Choose) + i.ESP8266_STA_MQTTClient_Init 0x08000448 Section 0 mqtt.o(i.ESP8266_STA_MQTTClient_Init) + i.ESP8266_Send_AT_Cmd 0x080005c0 Section 0 esp8266.o(i.ESP8266_Send_AT_Cmd) + i.Error_Handler 0x08000640 Section 0 main.o(i.Error_Handler) + i.HAL_ADC_ConfigChannel 0x08000644 Section 0 stm32f1xx_hal_adc.o(i.HAL_ADC_ConfigChannel) + i.HAL_ADC_Init 0x08000740 Section 0 stm32f1xx_hal_adc.o(i.HAL_ADC_Init) + i.HAL_ADC_MspInit 0x0800085c Section 0 adc.o(i.HAL_ADC_MspInit) + i.HAL_DMA_Abort_IT 0x080008b4 Section 0 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) + i.HAL_Delay 0x0800094c Section 0 stm32f1xx_hal.o(i.HAL_Delay) + i.HAL_GPIO_Init 0x08000970 Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init) + i.HAL_GPIO_TogglePin 0x08000b50 Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_TogglePin) + i.HAL_GPIO_WritePin 0x08000b60 Section 0 stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) + i.HAL_GetTick 0x08000b6c Section 0 stm32f1xx_hal.o(i.HAL_GetTick) + i.HAL_I2C_Init 0x08000b78 Section 0 stm32f1xx_hal_i2c.o(i.HAL_I2C_Init) + i.HAL_I2C_Mem_Write 0x08000d00 Section 0 stm32f1xx_hal_i2c.o(i.HAL_I2C_Mem_Write) + i.HAL_I2C_MspInit 0x08000e30 Section 0 i2c.o(i.HAL_I2C_MspInit) + i.HAL_IncTick 0x08000ea0 Section 0 stm32f1xx_hal.o(i.HAL_IncTick) + i.HAL_Init 0x08000eb0 Section 0 stm32f1xx_hal.o(i.HAL_Init) + i.HAL_InitTick 0x08000ed4 Section 0 stm32f1xx_hal.o(i.HAL_InitTick) + i.HAL_MspInit 0x08000f14 Section 0 stm32f1xx_hal_msp.o(i.HAL_MspInit) + i.HAL_NVIC_EnableIRQ 0x08000f50 Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) + i.HAL_NVIC_SetPriority 0x08000f6c Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority) + i.HAL_NVIC_SetPriorityGrouping 0x08000fac Section 0 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping) + i.HAL_RCCEx_PeriphCLKConfig 0x08000fd0 Section 0 stm32f1xx_hal_rcc_ex.o(i.HAL_RCCEx_PeriphCLKConfig) + i.HAL_RCC_ClockConfig 0x080010bc Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig) + i.HAL_RCC_GetPCLK1Freq 0x080011e8 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) + i.HAL_RCC_GetPCLK2Freq 0x08001208 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq) + i.HAL_RCC_GetSysClockFreq 0x08001228 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) + i.HAL_RCC_OscConfig 0x08001294 Section 0 stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig) + i.HAL_SPI_Init 0x080015b4 Section 0 stm32f1xx_hal_spi.o(i.HAL_SPI_Init) + i.HAL_SPI_MspInit 0x08001668 Section 0 spi.o(i.HAL_SPI_MspInit) + i.HAL_SYSTICK_Config 0x080016dc Section 0 stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config) + i.HAL_TIMEx_MasterConfigSynchronization 0x08001704 Section 0 stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_MasterConfigSynchronization) + i.HAL_TIM_Base_Init 0x0800176c Section 0 stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Init) + i.HAL_TIM_Base_MspInit 0x080017c8 Section 0 tim.o(i.HAL_TIM_Base_MspInit) + i.HAL_TIM_Base_Start_IT 0x080017f0 Section 0 stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Start_IT) + i.HAL_TIM_ConfigClockSource 0x08001848 Section 0 stm32f1xx_hal_tim.o(i.HAL_TIM_ConfigClockSource) + i.HAL_TIM_MspPostInit 0x08001920 Section 0 tim.o(i.HAL_TIM_MspPostInit) + i.HAL_TIM_OC_ConfigChannel 0x0800196c Section 0 stm32f1xx_hal_tim.o(i.HAL_TIM_OC_ConfigChannel) + i.HAL_TIM_OC_Init 0x080019b8 Section 0 stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Init) + i.HAL_TIM_OC_MspInit 0x08001a14 Section 0 tim.o(i.HAL_TIM_OC_MspInit) + i.HAL_TIM_PWM_Start 0x08001a3c Section 0 stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Start) + i.HAL_UART_ErrorCallback 0x08001ad8 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback) + i.HAL_UART_IRQHandler 0x08001adc Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) + i.HAL_UART_Init 0x08001c38 Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Init) + i.HAL_UART_MspInit 0x08001c9c Section 0 usart.o(i.HAL_UART_MspInit) + i.HAL_UART_Receive_IT 0x08001d7c Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT) + i.HAL_UART_RxCpltCallback 0x08001dd0 Section 0 usart.o(i.HAL_UART_RxCpltCallback) + i.HAL_UART_Transmit 0x08001e2c Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit) + i.HAL_UART_TxCpltCallback 0x08001ede Section 0 stm32f1xx_hal_uart.o(i.HAL_UART_TxCpltCallback) + i.HardFault_Handler 0x08001ee0 Section 0 stm32f1xx_it.o(i.HardFault_Handler) + i.I2C_IsAcknowledgeFailed 0x08001ee2 Section 0 stm32f1xx_hal_i2c.o(i.I2C_IsAcknowledgeFailed) + I2C_IsAcknowledgeFailed 0x08001ee3 Thumb Code 46 stm32f1xx_hal_i2c.o(i.I2C_IsAcknowledgeFailed) + i.I2C_RequestMemoryWrite 0x08001f10 Section 0 stm32f1xx_hal_i2c.o(i.I2C_RequestMemoryWrite) + I2C_RequestMemoryWrite 0x08001f11 Thumb Code 162 stm32f1xx_hal_i2c.o(i.I2C_RequestMemoryWrite) + i.I2C_WaitOnBTFFlagUntilTimeout 0x08001fb8 Section 0 stm32f1xx_hal_i2c.o(i.I2C_WaitOnBTFFlagUntilTimeout) + I2C_WaitOnBTFFlagUntilTimeout 0x08001fb9 Thumb Code 76 stm32f1xx_hal_i2c.o(i.I2C_WaitOnBTFFlagUntilTimeout) + i.I2C_WaitOnFlagUntilTimeout 0x08002004 Section 0 stm32f1xx_hal_i2c.o(i.I2C_WaitOnFlagUntilTimeout) + I2C_WaitOnFlagUntilTimeout 0x08002005 Thumb Code 104 stm32f1xx_hal_i2c.o(i.I2C_WaitOnFlagUntilTimeout) + i.I2C_WaitOnMasterAddressFlagUntilTimeout 0x0800206c Section 0 stm32f1xx_hal_i2c.o(i.I2C_WaitOnMasterAddressFlagUntilTimeout) + I2C_WaitOnMasterAddressFlagUntilTimeout 0x0800206d Thumb Code 150 stm32f1xx_hal_i2c.o(i.I2C_WaitOnMasterAddressFlagUntilTimeout) + i.I2C_WaitOnTXEFlagUntilTimeout 0x08002102 Section 0 stm32f1xx_hal_i2c.o(i.I2C_WaitOnTXEFlagUntilTimeout) + I2C_WaitOnTXEFlagUntilTimeout 0x08002103 Thumb Code 76 stm32f1xx_hal_i2c.o(i.I2C_WaitOnTXEFlagUntilTimeout) + i.MQTT_SendString 0x0800214e Section 0 esp8266.o(i.MQTT_SendString) + i.MX_ADC1_Init 0x08002154 Section 0 adc.o(i.MX_ADC1_Init) + i.MX_GPIO_Init 0x080021a4 Section 0 gpio.o(i.MX_GPIO_Init) + i.MX_I2C1_Init 0x08002294 Section 0 i2c.o(i.MX_I2C1_Init) + i.MX_SPI2_Init 0x080022d4 Section 0 spi.o(i.MX_SPI2_Init) + i.MX_TIM3_Init 0x08002318 Section 0 tim.o(i.MX_TIM3_Init) + i.MX_TIM4_Init 0x08002380 Section 0 tim.o(i.MX_TIM4_Init) + i.MX_USART1_UART_Init 0x080023f4 Section 0 usart.o(i.MX_USART1_UART_Init) + i.MX_USART3_UART_Init 0x0800242c Section 0 usart.o(i.MX_USART3_UART_Init) + i.MemManage_Handler 0x08002464 Section 0 stm32f1xx_it.o(i.MemManage_Handler) + i.NMI_Handler 0x08002466 Section 0 stm32f1xx_it.o(i.NMI_Handler) + i.PendSV_Handler 0x08002468 Section 0 stm32f1xx_it.o(i.PendSV_Handler) + i.SVC_Handler 0x0800246a Section 0 stm32f1xx_it.o(i.SVC_Handler) + i.SysTick_Handler 0x0800246c Section 0 stm32f1xx_it.o(i.SysTick_Handler) + i.SystemClock_Config 0x08002470 Section 0 main.o(i.SystemClock_Config) + i.SystemInit 0x080024d0 Section 0 system_stm32f1xx.o(i.SystemInit) + i.TIM_Base_SetConfig 0x080024d4 Section 0 stm32f1xx_hal_tim.o(i.TIM_Base_SetConfig) + i.TIM_CCxChannelCmd 0x08002540 Section 0 stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) + i.TIM_ETR_SetConfig 0x0800255a Section 0 stm32f1xx_hal_tim.o(i.TIM_ETR_SetConfig) + i.TIM_ITRx_SetConfig 0x0800256e Section 0 stm32f1xx_hal_tim.o(i.TIM_ITRx_SetConfig) + TIM_ITRx_SetConfig 0x0800256f Thumb Code 16 stm32f1xx_hal_tim.o(i.TIM_ITRx_SetConfig) + i.TIM_OC1_SetConfig 0x08002580 Section 0 stm32f1xx_hal_tim.o(i.TIM_OC1_SetConfig) + TIM_OC1_SetConfig 0x08002581 Thumb Code 74 stm32f1xx_hal_tim.o(i.TIM_OC1_SetConfig) + i.TIM_OC2_SetConfig 0x080025d0 Section 0 stm32f1xx_hal_tim.o(i.TIM_OC2_SetConfig) + i.TIM_OC3_SetConfig 0x08002628 Section 0 stm32f1xx_hal_tim.o(i.TIM_OC3_SetConfig) + TIM_OC3_SetConfig 0x08002629 Thumb Code 82 stm32f1xx_hal_tim.o(i.TIM_OC3_SetConfig) + i.TIM_OC4_SetConfig 0x08002680 Section 0 stm32f1xx_hal_tim.o(i.TIM_OC4_SetConfig) + TIM_OC4_SetConfig 0x08002681 Thumb Code 64 stm32f1xx_hal_tim.o(i.TIM_OC4_SetConfig) + i.TIM_TI1_ConfigInputStage 0x080026c4 Section 0 stm32f1xx_hal_tim.o(i.TIM_TI1_ConfigInputStage) + TIM_TI1_ConfigInputStage 0x080026c5 Thumb Code 34 stm32f1xx_hal_tim.o(i.TIM_TI1_ConfigInputStage) + i.TIM_TI2_ConfigInputStage 0x080026e6 Section 0 stm32f1xx_hal_tim.o(i.TIM_TI2_ConfigInputStage) + TIM_TI2_ConfigInputStage 0x080026e7 Thumb Code 36 stm32f1xx_hal_tim.o(i.TIM_TI2_ConfigInputStage) + i.UART_DMAAbortOnError 0x0800270a Section 0 stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) + UART_DMAAbortOnError 0x0800270b Thumb Code 16 stm32f1xx_hal_uart.o(i.UART_DMAAbortOnError) + i.UART_EndRxTransfer 0x0800271a Section 0 stm32f1xx_hal_uart.o(i.UART_EndRxTransfer) + UART_EndRxTransfer 0x0800271b Thumb Code 28 stm32f1xx_hal_uart.o(i.UART_EndRxTransfer) + i.UART_Receive_IT 0x08002736 Section 0 stm32f1xx_hal_uart.o(i.UART_Receive_IT) + UART_Receive_IT 0x08002737 Thumb Code 140 stm32f1xx_hal_uart.o(i.UART_Receive_IT) + i.UART_SetConfig 0x080027c4 Section 0 stm32f1xx_hal_uart.o(i.UART_SetConfig) + UART_SetConfig 0x080027c5 Thumb Code 178 stm32f1xx_hal_uart.o(i.UART_SetConfig) + i.UART_WaitOnFlagUntilTimeout 0x0800287c Section 0 stm32f1xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) + UART_WaitOnFlagUntilTimeout 0x0800287d Thumb Code 100 stm32f1xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) + i.USART3_IRQHandler 0x080028e0 Section 0 stm32f1xx_it.o(i.USART3_IRQHandler) + i.USART_printf 0x08002930 Section 0 esp8266.o(i.USART_printf) + i.UsageFault_Handler 0x08002a60 Section 0 stm32f1xx_it.o(i.UsageFault_Handler) + i.__0printf$3 0x08002a64 Section 0 printf3.o(i.__0printf$3) + i.__0sprintf$3 0x08002a84 Section 0 printf3.o(i.__0sprintf$3) + i.__NVIC_SetPriority 0x08002aac Section 0 stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority) + __NVIC_SetPriority 0x08002aad Thumb Code 32 stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority) + i.__scatterload_copy 0x08002acc Section 14 handlers.o(i.__scatterload_copy) + i.__scatterload_null 0x08002ada Section 2 handlers.o(i.__scatterload_null) + i.__scatterload_zeroinit 0x08002adc Section 14 handlers.o(i.__scatterload_zeroinit) + i._printf_core 0x08002aec Section 0 printf3.o(i._printf_core) + _printf_core 0x08002aed Thumb Code 436 printf3.o(i._printf_core) + i._sputc 0x08002ca4 Section 0 printf3.o(i._sputc) + _sputc 0x08002ca5 Thumb Code 10 printf3.o(i._sputc) + i.delay_ms 0x08002cae Section 0 main.o(i.delay_ms) + i.dht11_init 0x08002cb4 Section 0 dht11.o(i.dht11_init) + i.fputc 0x08002ce4 Section 0 usart.o(i.fputc) + i.main 0x08002cfc Section 0 main.o(i.main) + i.oled_fill 0x08002eb4 Section 0 oled.o(i.oled_fill) + i.oled_init 0x08002eec Section 0 oled.o(i.oled_init) + i.oled_set_pos 0x08002fa0 Section 0 oled.o(i.oled_set_pos) + i.oled_show_string 0x08002fc8 Section 0 oled.o(i.oled_show_string) + i.oled_write_cmd 0x080030a0 Section 0 oled.o(i.oled_write_cmd) + i.oled_write_data 0x080030c4 Section 0 oled.o(i.oled_write_data) + i.stop_buzz 0x080030e8 Section 0 process.o(i.stop_buzz) + .constdata 0x080030f8 Section 2072 oled.o(.constdata) + .constdata 0x08003910 Section 16 system_stm32f1xx.o(.constdata) + .constdata 0x08003920 Section 8 system_stm32f1xx.o(.constdata) + .conststring 0x08003928 Section 267 mqtt.o(.conststring) .data 0x20000000 Section 4 gpio.o(.data) - .data 0x20000004 Section 12 stm32f1xx_hal.o(.data) - .data 0x20000010 Section 4 system_stm32f1xx.o(.data) - .data 0x20000014 Section 4 stdout.o(.data) - .bss 0x20000018 Section 48 adc.o(.bss) - .bss 0x20000048 Section 84 i2c.o(.bss) - .bss 0x2000009c Section 88 spi.o(.bss) - .bss 0x200000f4 Section 144 tim.o(.bss) - .bss 0x20000184 Section 196 usart.o(.bss) - .bss 0x20000248 Section 1032 esp8266.o(.bss) - STACK 0x20000650 Section 1024 startup_stm32f103xb.o(STACK) + .data 0x20000004 Section 1 usart.o(.data) + .data 0x20000008 Section 12 stm32f1xx_hal.o(.data) + .data 0x20000014 Section 4 system_stm32f1xx.o(.data) + .data 0x20000018 Section 4 stdout.o(.data) + .bss 0x2000001c Section 48 adc.o(.bss) + .bss 0x2000004c Section 84 i2c.o(.bss) + .bss 0x200000a0 Section 88 spi.o(.bss) + .bss 0x200000f8 Section 144 tim.o(.bss) + .bss 0x20000188 Section 128 usart.o(.bss) + .bss 0x20000208 Section 1026 esp8266.o(.bss) + STACK 0x20000610 Section 1024 startup_stm32f103xb.o(STACK) Global Symbols @@ -2237,6 +2200,7 @@ Image Symbol Table CAN1_SCE_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) DMA1_Channel1_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) DMA1_Channel2_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) + DMA1_Channel3_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) DMA1_Channel4_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) DMA1_Channel5_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) DMA1_Channel6_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) @@ -2273,145 +2237,146 @@ Image Symbol Table USB_HP_CAN1_TX_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) USB_LP_CAN1_RX0_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) WWDG_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - __aeabi_memset 0x08000125 Thumb Code 14 memseta.o(.text) - __aeabi_memset4 0x08000125 Thumb Code 0 memseta.o(.text) - __aeabi_memset8 0x08000125 Thumb Code 0 memseta.o(.text) - __aeabi_memclr 0x08000133 Thumb Code 4 memseta.o(.text) - __aeabi_memclr4 0x08000133 Thumb Code 0 memseta.o(.text) - __aeabi_memclr8 0x08000133 Thumb Code 0 memseta.o(.text) - _memset$wrapper 0x08000137 Thumb Code 18 memseta.o(.text) - __aeabi_uidiv 0x08000149 Thumb Code 0 uidiv.o(.text) - __aeabi_uidivmod 0x08000149 Thumb Code 44 uidiv.o(.text) - __scatterload 0x08000175 Thumb Code 28 init.o(.text) - __scatterload_rt2 0x08000175 Thumb Code 0 init.o(.text) - ADC_ConversionStop_Disable 0x08000199 Thumb Code 76 stm32f1xx_hal_adc.o(i.ADC_ConversionStop_Disable) - BusFault_Handler 0x080001e5 Thumb Code 2 stm32f1xx_it.o(i.BusFault_Handler) - ClearBitMask 0x080001e7 Thumb Code 24 rc522.o(i.ClearBitMask) - DMA1_Channel3_IRQHandler 0x0800021d Thumb Code 6 stm32f1xx_it.o(i.DMA1_Channel3_IRQHandler) - DebugMon_Handler 0x08000253 Thumb Code 2 stm32f1xx_it.o(i.DebugMon_Handler) - Error_Handler 0x08000255 Thumb Code 2 main.o(i.Error_Handler) - HAL_ADC_ConfigChannel 0x08000259 Thumb Code 240 stm32f1xx_hal_adc.o(i.HAL_ADC_ConfigChannel) - HAL_ADC_Init 0x08000355 Thumb Code 272 stm32f1xx_hal_adc.o(i.HAL_ADC_Init) - HAL_ADC_MspInit 0x08000471 Thumb Code 76 adc.o(i.HAL_ADC_MspInit) - HAL_DMA_Abort 0x080004c9 Thumb Code 70 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort) - HAL_DMA_IRQHandler 0x08000511 Thumb Code 316 stm32f1xx_hal_dma.o(i.HAL_DMA_IRQHandler) - HAL_DMA_Init 0x08000665 Thumb Code 84 stm32f1xx_hal_dma.o(i.HAL_DMA_Init) - HAL_DMA_Start_IT 0x080006c1 Thumb Code 112 stm32f1xx_hal_dma.o(i.HAL_DMA_Start_IT) - HAL_Delay 0x08000731 Thumb Code 32 stm32f1xx_hal.o(i.HAL_Delay) - HAL_GPIO_Init 0x08000755 Thumb Code 446 stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init) - HAL_GPIO_TogglePin 0x08000935 Thumb Code 16 stm32f1xx_hal_gpio.o(i.HAL_GPIO_TogglePin) - HAL_GPIO_WritePin 0x08000945 Thumb Code 10 stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) - HAL_GetTick 0x08000951 Thumb Code 6 stm32f1xx_hal.o(i.HAL_GetTick) - HAL_I2C_Init 0x0800095d Thumb Code 376 stm32f1xx_hal_i2c.o(i.HAL_I2C_Init) - HAL_I2C_Mem_Write 0x08000ae5 Thumb Code 294 stm32f1xx_hal_i2c.o(i.HAL_I2C_Mem_Write) - HAL_I2C_MspInit 0x08000c15 Thumb Code 96 i2c.o(i.HAL_I2C_MspInit) - HAL_IncTick 0x08000c85 Thumb Code 12 stm32f1xx_hal.o(i.HAL_IncTick) - HAL_Init 0x08000c95 Thumb Code 32 stm32f1xx_hal.o(i.HAL_Init) - HAL_InitTick 0x08000cb9 Thumb Code 54 stm32f1xx_hal.o(i.HAL_InitTick) - HAL_MspInit 0x08000cf9 Thumb Code 52 stm32f1xx_hal_msp.o(i.HAL_MspInit) - HAL_NVIC_EnableIRQ 0x08000d35 Thumb Code 26 stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) - HAL_NVIC_SetPriority 0x08000d51 Thumb Code 60 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority) - HAL_NVIC_SetPriorityGrouping 0x08000d91 Thumb Code 26 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping) - HAL_RCCEx_PeriphCLKConfig 0x08000db5 Thumb Code 224 stm32f1xx_hal_rcc_ex.o(i.HAL_RCCEx_PeriphCLKConfig) - HAL_RCC_ClockConfig 0x08000ea1 Thumb Code 280 stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig) - HAL_RCC_GetPCLK1Freq 0x08000fcd Thumb Code 20 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) - HAL_RCC_GetPCLK2Freq 0x08000fed Thumb Code 20 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq) - HAL_RCC_GetSysClockFreq 0x0800100d Thumb Code 74 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) - HAL_RCC_OscConfig 0x08001079 Thumb Code 778 stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig) - HAL_SPI_Init 0x08001399 Thumb Code 178 stm32f1xx_hal_spi.o(i.HAL_SPI_Init) - HAL_SPI_MspInit 0x0800144d Thumb Code 102 spi.o(i.HAL_SPI_MspInit) - HAL_SPI_TransmitReceive 0x080014c1 Thumb Code 482 stm32f1xx_hal_spi.o(i.HAL_SPI_TransmitReceive) - HAL_SYSTICK_Config 0x080016a3 Thumb Code 40 stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config) - HAL_TIMEx_MasterConfigSynchronization 0x080016cd Thumb Code 92 stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_MasterConfigSynchronization) - HAL_TIM_Base_Init 0x08001735 Thumb Code 90 stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Init) - HAL_TIM_Base_MspInit 0x08001791 Thumb Code 30 tim.o(i.HAL_TIM_Base_MspInit) - HAL_TIM_Base_Start_IT 0x080017b9 Thumb Code 76 stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Start_IT) - HAL_TIM_ConfigClockSource 0x08001811 Thumb Code 214 stm32f1xx_hal_tim.o(i.HAL_TIM_ConfigClockSource) - HAL_TIM_MspPostInit 0x080018e9 Thumb Code 62 tim.o(i.HAL_TIM_MspPostInit) - HAL_TIM_OC_ConfigChannel 0x08001935 Thumb Code 76 stm32f1xx_hal_tim.o(i.HAL_TIM_OC_ConfigChannel) - HAL_TIM_OC_Init 0x08001981 Thumb Code 90 stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Init) - HAL_TIM_OC_MspInit 0x080019dd Thumb Code 30 tim.o(i.HAL_TIM_OC_MspInit) - HAL_TIM_PWM_Start 0x08001a05 Thumb Code 144 stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Start) - HAL_UART_DMAStop 0x08001aa1 Thumb Code 88 stm32f1xx_hal_uart.o(i.HAL_UART_DMAStop) - HAL_UART_ErrorCallback 0x08001af9 Thumb Code 2 stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback) - HAL_UART_Init 0x08001afb Thumb Code 98 stm32f1xx_hal_uart.o(i.HAL_UART_Init) - HAL_UART_MspInit 0x08001b5d Thumb Code 242 usart.o(i.HAL_UART_MspInit) - HAL_UART_Receive_DMA 0x08001c6d Thumb Code 138 stm32f1xx_hal_uart.o(i.HAL_UART_Receive_DMA) - HAL_UART_RxCpltCallback 0x08001d05 Thumb Code 2 stm32f1xx_hal_uart.o(i.HAL_UART_RxCpltCallback) - HAL_UART_RxHalfCpltCallback 0x08001d07 Thumb Code 2 stm32f1xx_hal_uart.o(i.HAL_UART_RxHalfCpltCallback) - HAL_UART_Transmit 0x08001d09 Thumb Code 178 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit) - HardFault_Handler 0x08001dbb Thumb Code 2 stm32f1xx_it.o(i.HardFault_Handler) - M500PcdConfigISOType 0x0800202b Thumb Code 86 rc522.o(i.M500PcdConfigISOType) - MX_ADC1_Init 0x08002081 Thumb Code 70 adc.o(i.MX_ADC1_Init) - MX_DMA_Init 0x080020d1 Thumb Code 40 dma.o(i.MX_DMA_Init) - MX_GPIO_Init 0x080020fd Thumb Code 224 gpio.o(i.MX_GPIO_Init) - MX_I2C1_Init 0x080021ed Thumb Code 50 i2c.o(i.MX_I2C1_Init) - MX_SPI2_Init 0x0800222d Thumb Code 60 spi.o(i.MX_SPI2_Init) - MX_TIM3_Init 0x08002271 Thumb Code 94 tim.o(i.MX_TIM3_Init) - MX_TIM4_Init 0x080022d9 Thumb Code 106 tim.o(i.MX_TIM4_Init) - MX_USART1_UART_Init 0x0800234d Thumb Code 48 usart.o(i.MX_USART1_UART_Init) - MX_USART3_UART_Init 0x08002385 Thumb Code 48 usart.o(i.MX_USART3_UART_Init) - MemManage_Handler 0x080023bd Thumb Code 2 stm32f1xx_it.o(i.MemManage_Handler) - NMI_Handler 0x080023bf Thumb Code 2 stm32f1xx_it.o(i.NMI_Handler) - PcdAntennaOn 0x080023c1 Thumb Code 26 rc522.o(i.PcdAntennaOn) - PcdReset 0x080023dd Thumb Code 128 rc522.o(i.PcdReset) - PendSV_Handler 0x08002461 Thumb Code 2 stm32f1xx_it.o(i.PendSV_Handler) - ReadRawRC 0x08002465 Thumb Code 54 rc522.o(i.ReadRawRC) - SPI_FLASH_ReadByte 0x080024c1 Thumb Code 38 rc522.o(i.SPI_FLASH_ReadByte) - SPI_FLASH_SendByte 0x080024ed Thumb Code 38 rc522.o(i.SPI_FLASH_SendByte) - SVC_Handler 0x080025d1 Thumb Code 2 stm32f1xx_it.o(i.SVC_Handler) - SetBitMask 0x080025d3 Thumb Code 24 rc522.o(i.SetBitMask) - SysTick_Handler 0x080025eb Thumb Code 4 stm32f1xx_it.o(i.SysTick_Handler) - SystemClock_Config 0x080025ef Thumb Code 96 main.o(i.SystemClock_Config) - SystemInit 0x0800264f Thumb Code 2 system_stm32f1xx.o(i.SystemInit) - TIM_Base_SetConfig 0x08002651 Thumb Code 94 stm32f1xx_hal_tim.o(i.TIM_Base_SetConfig) - TIM_CCxChannelCmd 0x080026bd Thumb Code 26 stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) - TIM_ETR_SetConfig 0x080026d7 Thumb Code 20 stm32f1xx_hal_tim.o(i.TIM_ETR_SetConfig) - TIM_OC2_SetConfig 0x0800274d Thumb Code 84 stm32f1xx_hal_tim.o(i.TIM_OC2_SetConfig) - USART3_IRQHandler 0x08002a61 Thumb Code 92 usart.o(i.USART3_IRQHandler) - UsageFault_Handler 0x08002ac5 Thumb Code 2 stm32f1xx_it.o(i.UsageFault_Handler) - WriteRawRC 0x08002ac9 Thumb Code 54 rc522.o(i.WriteRawRC) - __0printf$3 0x08002b05 Thumb Code 22 printf3.o(i.__0printf$3) - __1printf$3 0x08002b05 Thumb Code 0 printf3.o(i.__0printf$3) - __2printf 0x08002b05 Thumb Code 0 printf3.o(i.__0printf$3) - __scatterload_copy 0x08002b45 Thumb Code 14 handlers.o(i.__scatterload_copy) - __scatterload_null 0x08002b53 Thumb Code 2 handlers.o(i.__scatterload_null) - __scatterload_zeroinit 0x08002b55 Thumb Code 14 handlers.o(i.__scatterload_zeroinit) - delay_ms 0x08002d1d Thumb Code 4 main.o(i.delay_ms) - dht11_init 0x08002d21 Thumb Code 38 dht11.o(i.dht11_init) - fputc 0x08002d51 Thumb Code 20 usart.o(i.fputc) - main 0x08002d69 Thumb Code 316 main.o(i.main) - oled_fill 0x08002f61 Thumb Code 56 oled.o(i.oled_fill) - oled_init 0x08002f99 Thumb Code 180 oled.o(i.oled_init) - oled_set_pos 0x0800304d Thumb Code 38 oled.o(i.oled_set_pos) - oled_show_string 0x08003075 Thumb Code 208 oled.o(i.oled_show_string) - oled_write_cmd 0x0800314d Thumb Code 32 oled.o(i.oled_write_cmd) - oled_write_data 0x08003171 Thumb Code 32 oled.o(i.oled_write_data) - set_sg90 0x08003195 Thumb Code 8 process.o(i.set_sg90) - stop_buzz 0x080031a1 Thumb Code 10 process.o(i.stop_buzz) - wifi_data_recv_fun 0x080031b1 Thumb Code 30 main.o(i.wifi_data_recv_fun) - F6x8 0x08003214 Data 552 oled.o(.constdata) - F8X16 0x0800343c Data 1520 oled.o(.constdata) - AHBPrescTable 0x08003a2c Data 16 system_stm32f1xx.o(.constdata) - APBPrescTable 0x08003a3c Data 8 system_stm32f1xx.o(.constdata) - Region$$Table$$Base 0x08003a44 Number 0 anon$$obj.o(Region$$Table) - Region$$Table$$Limit 0x08003a64 Number 0 anon$$obj.o(Region$$Table) + __aeabi_memcpy 0x08000125 Thumb Code 36 memcpya.o(.text) + __aeabi_memcpy4 0x08000125 Thumb Code 0 memcpya.o(.text) + __aeabi_memcpy8 0x08000125 Thumb Code 0 memcpya.o(.text) + __aeabi_memset 0x08000149 Thumb Code 14 memseta.o(.text) + __aeabi_memset4 0x08000149 Thumb Code 0 memseta.o(.text) + __aeabi_memset8 0x08000149 Thumb Code 0 memseta.o(.text) + __aeabi_memclr 0x08000157 Thumb Code 4 memseta.o(.text) + __aeabi_memclr4 0x08000157 Thumb Code 0 memseta.o(.text) + __aeabi_memclr8 0x08000157 Thumb Code 0 memseta.o(.text) + _memset$wrapper 0x0800015b Thumb Code 18 memseta.o(.text) + strstr 0x0800016d Thumb Code 36 strstr.o(.text) + __aeabi_uidiv 0x08000191 Thumb Code 0 uidiv.o(.text) + __aeabi_uidivmod 0x08000191 Thumb Code 44 uidiv.o(.text) + __scatterload 0x080001bd Thumb Code 28 init.o(.text) + __scatterload_rt2 0x080001bd Thumb Code 0 init.o(.text) + ADC_ConversionStop_Disable 0x080001e1 Thumb Code 76 stm32f1xx_hal_adc.o(i.ADC_ConversionStop_Disable) + BusFault_Handler 0x0800022d Thumb Code 2 stm32f1xx_it.o(i.BusFault_Handler) + DebugMon_Handler 0x0800024d Thumb Code 2 stm32f1xx_it.o(i.DebugMon_Handler) + ESP8266_ATE0 0x08000251 Thumb Code 50 esp8266.o(i.ESP8266_ATE0) + ESP8266_JoinAP 0x08000299 Thumb Code 34 esp8266.o(i.ESP8266_JoinAP) + ESP8266_MQTTCONN 0x080002d5 Thumb Code 34 esp8266.o(i.ESP8266_MQTTCONN) + ESP8266_MQTTPUB 0x08000315 Thumb Code 38 esp8266.o(i.ESP8266_MQTTPUB) + ESP8266_MQTTSUB 0x0800035d Thumb Code 32 esp8266.o(i.ESP8266_MQTTSUB) + ESP8266_MQTTUSERCFG 0x08000395 Thumb Code 36 esp8266.o(i.ESP8266_MQTTUSERCFG) + ESP8266_Net_Mode_Choose 0x080003e9 Thumb Code 44 esp8266.o(i.ESP8266_Net_Mode_Choose) + ESP8266_STA_MQTTClient_Init 0x08000449 Thumb Code 124 mqtt.o(i.ESP8266_STA_MQTTClient_Init) + ESP8266_Send_AT_Cmd 0x080005c1 Thumb Code 104 esp8266.o(i.ESP8266_Send_AT_Cmd) + Error_Handler 0x08000641 Thumb Code 2 main.o(i.Error_Handler) + HAL_ADC_ConfigChannel 0x08000645 Thumb Code 240 stm32f1xx_hal_adc.o(i.HAL_ADC_ConfigChannel) + HAL_ADC_Init 0x08000741 Thumb Code 272 stm32f1xx_hal_adc.o(i.HAL_ADC_Init) + HAL_ADC_MspInit 0x0800085d Thumb Code 76 adc.o(i.HAL_ADC_MspInit) + HAL_DMA_Abort_IT 0x080008b5 Thumb Code 148 stm32f1xx_hal_dma.o(i.HAL_DMA_Abort_IT) + HAL_Delay 0x0800094d Thumb Code 32 stm32f1xx_hal.o(i.HAL_Delay) + HAL_GPIO_Init 0x08000971 Thumb Code 446 stm32f1xx_hal_gpio.o(i.HAL_GPIO_Init) + HAL_GPIO_TogglePin 0x08000b51 Thumb Code 16 stm32f1xx_hal_gpio.o(i.HAL_GPIO_TogglePin) + HAL_GPIO_WritePin 0x08000b61 Thumb Code 10 stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin) + HAL_GetTick 0x08000b6d Thumb Code 6 stm32f1xx_hal.o(i.HAL_GetTick) + HAL_I2C_Init 0x08000b79 Thumb Code 376 stm32f1xx_hal_i2c.o(i.HAL_I2C_Init) + HAL_I2C_Mem_Write 0x08000d01 Thumb Code 294 stm32f1xx_hal_i2c.o(i.HAL_I2C_Mem_Write) + HAL_I2C_MspInit 0x08000e31 Thumb Code 96 i2c.o(i.HAL_I2C_MspInit) + HAL_IncTick 0x08000ea1 Thumb Code 12 stm32f1xx_hal.o(i.HAL_IncTick) + HAL_Init 0x08000eb1 Thumb Code 32 stm32f1xx_hal.o(i.HAL_Init) + HAL_InitTick 0x08000ed5 Thumb Code 54 stm32f1xx_hal.o(i.HAL_InitTick) + HAL_MspInit 0x08000f15 Thumb Code 52 stm32f1xx_hal_msp.o(i.HAL_MspInit) + HAL_NVIC_EnableIRQ 0x08000f51 Thumb Code 26 stm32f1xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) + HAL_NVIC_SetPriority 0x08000f6d Thumb Code 60 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriority) + HAL_NVIC_SetPriorityGrouping 0x08000fad Thumb Code 26 stm32f1xx_hal_cortex.o(i.HAL_NVIC_SetPriorityGrouping) + HAL_RCCEx_PeriphCLKConfig 0x08000fd1 Thumb Code 224 stm32f1xx_hal_rcc_ex.o(i.HAL_RCCEx_PeriphCLKConfig) + HAL_RCC_ClockConfig 0x080010bd Thumb Code 280 stm32f1xx_hal_rcc.o(i.HAL_RCC_ClockConfig) + HAL_RCC_GetPCLK1Freq 0x080011e9 Thumb Code 20 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) + HAL_RCC_GetPCLK2Freq 0x08001209 Thumb Code 20 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK2Freq) + HAL_RCC_GetSysClockFreq 0x08001229 Thumb Code 74 stm32f1xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) + HAL_RCC_OscConfig 0x08001295 Thumb Code 778 stm32f1xx_hal_rcc.o(i.HAL_RCC_OscConfig) + HAL_SPI_Init 0x080015b5 Thumb Code 178 stm32f1xx_hal_spi.o(i.HAL_SPI_Init) + HAL_SPI_MspInit 0x08001669 Thumb Code 102 spi.o(i.HAL_SPI_MspInit) + HAL_SYSTICK_Config 0x080016dd Thumb Code 40 stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config) + HAL_TIMEx_MasterConfigSynchronization 0x08001705 Thumb Code 92 stm32f1xx_hal_tim_ex.o(i.HAL_TIMEx_MasterConfigSynchronization) + HAL_TIM_Base_Init 0x0800176d Thumb Code 90 stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Init) + HAL_TIM_Base_MspInit 0x080017c9 Thumb Code 30 tim.o(i.HAL_TIM_Base_MspInit) + HAL_TIM_Base_Start_IT 0x080017f1 Thumb Code 76 stm32f1xx_hal_tim.o(i.HAL_TIM_Base_Start_IT) + HAL_TIM_ConfigClockSource 0x08001849 Thumb Code 214 stm32f1xx_hal_tim.o(i.HAL_TIM_ConfigClockSource) + HAL_TIM_MspPostInit 0x08001921 Thumb Code 62 tim.o(i.HAL_TIM_MspPostInit) + HAL_TIM_OC_ConfigChannel 0x0800196d Thumb Code 76 stm32f1xx_hal_tim.o(i.HAL_TIM_OC_ConfigChannel) + HAL_TIM_OC_Init 0x080019b9 Thumb Code 90 stm32f1xx_hal_tim.o(i.HAL_TIM_OC_Init) + HAL_TIM_OC_MspInit 0x08001a15 Thumb Code 30 tim.o(i.HAL_TIM_OC_MspInit) + HAL_TIM_PWM_Start 0x08001a3d Thumb Code 144 stm32f1xx_hal_tim.o(i.HAL_TIM_PWM_Start) + HAL_UART_ErrorCallback 0x08001ad9 Thumb Code 2 stm32f1xx_hal_uart.o(i.HAL_UART_ErrorCallback) + HAL_UART_IRQHandler 0x08001add Thumb Code 344 stm32f1xx_hal_uart.o(i.HAL_UART_IRQHandler) + HAL_UART_Init 0x08001c39 Thumb Code 98 stm32f1xx_hal_uart.o(i.HAL_UART_Init) + HAL_UART_MspInit 0x08001c9d Thumb Code 198 usart.o(i.HAL_UART_MspInit) + HAL_UART_Receive_IT 0x08001d7d Thumb Code 82 stm32f1xx_hal_uart.o(i.HAL_UART_Receive_IT) + HAL_UART_RxCpltCallback 0x08001dd1 Thumb Code 74 usart.o(i.HAL_UART_RxCpltCallback) + HAL_UART_Transmit 0x08001e2d Thumb Code 178 stm32f1xx_hal_uart.o(i.HAL_UART_Transmit) + HAL_UART_TxCpltCallback 0x08001edf Thumb Code 2 stm32f1xx_hal_uart.o(i.HAL_UART_TxCpltCallback) + HardFault_Handler 0x08001ee1 Thumb Code 2 stm32f1xx_it.o(i.HardFault_Handler) + MQTT_SendString 0x0800214f Thumb Code 4 esp8266.o(i.MQTT_SendString) + MX_ADC1_Init 0x08002155 Thumb Code 70 adc.o(i.MX_ADC1_Init) + MX_GPIO_Init 0x080021a5 Thumb Code 224 gpio.o(i.MX_GPIO_Init) + MX_I2C1_Init 0x08002295 Thumb Code 50 i2c.o(i.MX_I2C1_Init) + MX_SPI2_Init 0x080022d5 Thumb Code 60 spi.o(i.MX_SPI2_Init) + MX_TIM3_Init 0x08002319 Thumb Code 94 tim.o(i.MX_TIM3_Init) + MX_TIM4_Init 0x08002381 Thumb Code 106 tim.o(i.MX_TIM4_Init) + MX_USART1_UART_Init 0x080023f5 Thumb Code 48 usart.o(i.MX_USART1_UART_Init) + MX_USART3_UART_Init 0x0800242d Thumb Code 48 usart.o(i.MX_USART3_UART_Init) + MemManage_Handler 0x08002465 Thumb Code 2 stm32f1xx_it.o(i.MemManage_Handler) + NMI_Handler 0x08002467 Thumb Code 2 stm32f1xx_it.o(i.NMI_Handler) + PendSV_Handler 0x08002469 Thumb Code 2 stm32f1xx_it.o(i.PendSV_Handler) + SVC_Handler 0x0800246b Thumb Code 2 stm32f1xx_it.o(i.SVC_Handler) + SysTick_Handler 0x0800246d Thumb Code 4 stm32f1xx_it.o(i.SysTick_Handler) + SystemClock_Config 0x08002471 Thumb Code 96 main.o(i.SystemClock_Config) + SystemInit 0x080024d1 Thumb Code 2 system_stm32f1xx.o(i.SystemInit) + TIM_Base_SetConfig 0x080024d5 Thumb Code 94 stm32f1xx_hal_tim.o(i.TIM_Base_SetConfig) + TIM_CCxChannelCmd 0x08002541 Thumb Code 26 stm32f1xx_hal_tim.o(i.TIM_CCxChannelCmd) + TIM_ETR_SetConfig 0x0800255b Thumb Code 20 stm32f1xx_hal_tim.o(i.TIM_ETR_SetConfig) + TIM_OC2_SetConfig 0x080025d1 Thumb Code 84 stm32f1xx_hal_tim.o(i.TIM_OC2_SetConfig) + USART3_IRQHandler 0x080028e1 Thumb Code 50 stm32f1xx_it.o(i.USART3_IRQHandler) + USART_printf 0x08002931 Thumb Code 298 esp8266.o(i.USART_printf) + UsageFault_Handler 0x08002a61 Thumb Code 2 stm32f1xx_it.o(i.UsageFault_Handler) + __0printf$3 0x08002a65 Thumb Code 22 printf3.o(i.__0printf$3) + __1printf$3 0x08002a65 Thumb Code 0 printf3.o(i.__0printf$3) + __2printf 0x08002a65 Thumb Code 0 printf3.o(i.__0printf$3) + __0sprintf$3 0x08002a85 Thumb Code 34 printf3.o(i.__0sprintf$3) + __1sprintf$3 0x08002a85 Thumb Code 0 printf3.o(i.__0sprintf$3) + __2sprintf 0x08002a85 Thumb Code 0 printf3.o(i.__0sprintf$3) + __scatterload_copy 0x08002acd Thumb Code 14 handlers.o(i.__scatterload_copy) + __scatterload_null 0x08002adb Thumb Code 2 handlers.o(i.__scatterload_null) + __scatterload_zeroinit 0x08002add Thumb Code 14 handlers.o(i.__scatterload_zeroinit) + delay_ms 0x08002caf Thumb Code 4 main.o(i.delay_ms) + dht11_init 0x08002cb5 Thumb Code 38 dht11.o(i.dht11_init) + fputc 0x08002ce5 Thumb Code 20 usart.o(i.fputc) + main 0x08002cfd Thumb Code 258 main.o(i.main) + oled_fill 0x08002eb5 Thumb Code 56 oled.o(i.oled_fill) + oled_init 0x08002eed Thumb Code 180 oled.o(i.oled_init) + oled_set_pos 0x08002fa1 Thumb Code 38 oled.o(i.oled_set_pos) + oled_show_string 0x08002fc9 Thumb Code 208 oled.o(i.oled_show_string) + oled_write_cmd 0x080030a1 Thumb Code 32 oled.o(i.oled_write_cmd) + oled_write_data 0x080030c5 Thumb Code 32 oled.o(i.oled_write_data) + stop_buzz 0x080030e9 Thumb Code 10 process.o(i.stop_buzz) + F6x8 0x080030f8 Data 552 oled.o(.constdata) + F8X16 0x08003320 Data 1520 oled.o(.constdata) + AHBPrescTable 0x08003910 Data 16 system_stm32f1xx.o(.constdata) + APBPrescTable 0x08003920 Data 8 system_stm32f1xx.o(.constdata) + Region$$Table$$Base 0x08003a34 Number 0 anon$$obj.o(Region$$Table) + Region$$Table$$Limit 0x08003a54 Number 0 anon$$obj.o(Region$$Table) key_flag 0x20000000 Data 4 gpio.o(.data) - uwTickFreq 0x20000004 Data 1 stm32f1xx_hal.o(.data) - uwTickPrio 0x20000008 Data 4 stm32f1xx_hal.o(.data) - uwTick 0x2000000c Data 4 stm32f1xx_hal.o(.data) - SystemCoreClock 0x20000010 Data 4 system_stm32f1xx.o(.data) - __stdout 0x20000014 Data 4 stdout.o(.data) - hadc1 0x20000018 Data 48 adc.o(.bss) - hi2c1 0x20000048 Data 84 i2c.o(.bss) - hspi2 0x2000009c Data 88 spi.o(.bss) - htim3 0x200000f4 Data 72 tim.o(.bss) - htim4 0x2000013c Data 72 tim.o(.bss) - huart1 0x20000184 Data 64 usart.o(.bss) - huart3 0x200001c4 Data 64 usart.o(.bss) - hdma_usart3_rx 0x20000204 Data 68 usart.o(.bss) - ESP8266_Fram_Record_Struct 0x20000248 Data 1032 esp8266.o(.bss) - __initial_sp 0x20000a50 Data 0 startup_stm32f103xb.o(STACK) + aRxBuffer 0x20000004 Data 1 usart.o(.data) + uwTickFreq 0x20000008 Data 1 stm32f1xx_hal.o(.data) + uwTickPrio 0x2000000c Data 4 stm32f1xx_hal.o(.data) + uwTick 0x20000010 Data 4 stm32f1xx_hal.o(.data) + SystemCoreClock 0x20000014 Data 4 system_stm32f1xx.o(.data) + __stdout 0x20000018 Data 4 stdout.o(.data) + hadc1 0x2000001c Data 48 adc.o(.bss) + hi2c1 0x2000004c Data 84 i2c.o(.bss) + hspi2 0x200000a0 Data 88 spi.o(.bss) + htim3 0x200000f8 Data 72 tim.o(.bss) + htim4 0x20000140 Data 72 tim.o(.bss) + huart1 0x20000188 Data 64 usart.o(.bss) + huart3 0x200001c8 Data 64 usart.o(.bss) + ESP8266_Fram_Record_Struct 0x20000208 Data 1026 esp8266.o(.bss) + __initial_sp 0x20000a10 Data 0 startup_stm32f103xb.o(STACK) @@ -2421,193 +2386,194 @@ Memory Map of the image Image Entry point : 0x080000ed - Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00003a7c, Max: 0x00010000, ABSOLUTE) + Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00003a70, Max: 0x00010000, ABSOLUTE) - Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00003a64, Max: 0x00010000, ABSOLUTE) + Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00003a54, Max: 0x00010000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object 0x08000000 0x08000000 0x000000ec Data RO 3 RESET startup_stm32f103xb.o - 0x080000ec 0x080000ec 0x00000000 Code RO 4629 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) - 0x080000ec 0x080000ec 0x00000004 Code RO 4913 .ARM.Collect$$$$00000001 mc_w.l(entry2.o) - 0x080000f0 0x080000f0 0x00000004 Code RO 4916 .ARM.Collect$$$$00000004 mc_w.l(entry5.o) - 0x080000f4 0x080000f4 0x00000000 Code RO 4918 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o) - 0x080000f4 0x080000f4 0x00000000 Code RO 4920 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o) - 0x080000f4 0x080000f4 0x00000008 Code RO 4921 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o) - 0x080000fc 0x080000fc 0x00000000 Code RO 4923 .ARM.Collect$$$$0000000D mc_w.l(entry10a.o) - 0x080000fc 0x080000fc 0x00000000 Code RO 4925 .ARM.Collect$$$$0000000F mc_w.l(entry11a.o) - 0x080000fc 0x080000fc 0x00000004 Code RO 4914 .ARM.Collect$$$$00002712 mc_w.l(entry2.o) + 0x080000ec 0x080000ec 0x00000000 Code RO 4682 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) + 0x080000ec 0x080000ec 0x00000004 Code RO 4960 .ARM.Collect$$$$00000001 mc_w.l(entry2.o) + 0x080000f0 0x080000f0 0x00000004 Code RO 4963 .ARM.Collect$$$$00000004 mc_w.l(entry5.o) + 0x080000f4 0x080000f4 0x00000000 Code RO 4965 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o) + 0x080000f4 0x080000f4 0x00000000 Code RO 4967 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o) + 0x080000f4 0x080000f4 0x00000008 Code RO 4968 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o) + 0x080000fc 0x080000fc 0x00000000 Code RO 4970 .ARM.Collect$$$$0000000D mc_w.l(entry10a.o) + 0x080000fc 0x080000fc 0x00000000 Code RO 4972 .ARM.Collect$$$$0000000F mc_w.l(entry11a.o) + 0x080000fc 0x080000fc 0x00000004 Code RO 4961 .ARM.Collect$$$$00002712 mc_w.l(entry2.o) 0x08000100 0x08000100 0x00000024 Code RO 4 .text startup_stm32f103xb.o - 0x08000124 0x08000124 0x00000024 Code RO 4636 .text mc_w.l(memseta.o) - 0x08000148 0x08000148 0x0000002c Code RO 4928 .text mc_w.l(uidiv.o) - 0x08000174 0x08000174 0x00000024 Code RO 4945 .text mc_w.l(init.o) - 0x08000198 0x08000198 0x0000004c Code RO 1300 i.ADC_ConversionStop_Disable stm32f1xx_hal_adc.o - 0x080001e4 0x080001e4 0x00000002 Code RO 535 i.BusFault_Handler stm32f1xx_it.o - 0x080001e6 0x080001e6 0x00000018 Code RO 1005 i.ClearBitMask rc522.o - 0x080001fe 0x080001fe 0x00000002 PAD - 0x08000200 0x08000200 0x0000001c Code RO 817 i.DHT11_Mode_Out_PP dht11.o - 0x0800021c 0x0800021c 0x0000000c Code RO 536 i.DMA1_Channel3_IRQHandler stm32f1xx_it.o - 0x08000228 0x08000228 0x0000002a Code RO 1954 i.DMA_SetConfig stm32f1xx_hal_dma.o - 0x08000252 0x08000252 0x00000002 Code RO 537 i.DebugMon_Handler stm32f1xx_it.o - 0x08000254 0x08000254 0x00000002 Code RO 13 i.Error_Handler main.o - 0x08000256 0x08000256 0x00000002 PAD - 0x08000258 0x08000258 0x000000fc Code RO 1306 i.HAL_ADC_ConfigChannel stm32f1xx_hal_adc.o - 0x08000354 0x08000354 0x0000011c Code RO 1315 i.HAL_ADC_Init stm32f1xx_hal_adc.o - 0x08000470 0x08000470 0x00000058 Code RO 258 i.HAL_ADC_MspInit adc.o - 0x080004c8 0x080004c8 0x00000046 Code RO 1955 i.HAL_DMA_Abort stm32f1xx_hal_dma.o - 0x0800050e 0x0800050e 0x00000002 PAD - 0x08000510 0x08000510 0x00000154 Code RO 1960 i.HAL_DMA_IRQHandler stm32f1xx_hal_dma.o - 0x08000664 0x08000664 0x0000005c Code RO 1961 i.HAL_DMA_Init stm32f1xx_hal_dma.o - 0x080006c0 0x080006c0 0x00000070 Code RO 1965 i.HAL_DMA_Start_IT stm32f1xx_hal_dma.o - 0x08000730 0x08000730 0x00000024 Code RO 1583 i.HAL_Delay stm32f1xx_hal.o - 0x08000754 0x08000754 0x000001e0 Code RO 1891 i.HAL_GPIO_Init stm32f1xx_hal_gpio.o - 0x08000934 0x08000934 0x00000010 Code RO 1894 i.HAL_GPIO_TogglePin stm32f1xx_hal_gpio.o - 0x08000944 0x08000944 0x0000000a Code RO 1895 i.HAL_GPIO_WritePin stm32f1xx_hal_gpio.o - 0x0800094e 0x0800094e 0x00000002 PAD - 0x08000950 0x08000950 0x0000000c Code RO 1587 i.HAL_GetTick stm32f1xx_hal.o - 0x0800095c 0x0800095c 0x00000188 Code RO 2562 i.HAL_I2C_Init stm32f1xx_hal_i2c.o - 0x08000ae4 0x08000ae4 0x00000130 Code RO 2583 i.HAL_I2C_Mem_Write stm32f1xx_hal_i2c.o - 0x08000c14 0x08000c14 0x00000070 Code RO 324 i.HAL_I2C_MspInit i2c.o - 0x08000c84 0x08000c84 0x00000010 Code RO 1593 i.HAL_IncTick stm32f1xx_hal.o - 0x08000c94 0x08000c94 0x00000024 Code RO 1594 i.HAL_Init stm32f1xx_hal.o - 0x08000cb8 0x08000cb8 0x00000040 Code RO 1595 i.HAL_InitTick stm32f1xx_hal.o - 0x08000cf8 0x08000cf8 0x0000003c Code RO 617 i.HAL_MspInit stm32f1xx_hal_msp.o - 0x08000d34 0x08000d34 0x0000001a Code RO 2051 i.HAL_NVIC_EnableIRQ stm32f1xx_hal_cortex.o - 0x08000d4e 0x08000d4e 0x00000002 PAD - 0x08000d50 0x08000d50 0x00000040 Code RO 2057 i.HAL_NVIC_SetPriority stm32f1xx_hal_cortex.o - 0x08000d90 0x08000d90 0x00000024 Code RO 2058 i.HAL_NVIC_SetPriorityGrouping stm32f1xx_hal_cortex.o - 0x08000db4 0x08000db4 0x000000ec Code RO 1854 i.HAL_RCCEx_PeriphCLKConfig stm32f1xx_hal_rcc_ex.o - 0x08000ea0 0x08000ea0 0x0000012c Code RO 1751 i.HAL_RCC_ClockConfig stm32f1xx_hal_rcc.o - 0x08000fcc 0x08000fcc 0x00000020 Code RO 1758 i.HAL_RCC_GetPCLK1Freq stm32f1xx_hal_rcc.o - 0x08000fec 0x08000fec 0x00000020 Code RO 1759 i.HAL_RCC_GetPCLK2Freq stm32f1xx_hal_rcc.o - 0x0800100c 0x0800100c 0x0000006c Code RO 1760 i.HAL_RCC_GetSysClockFreq stm32f1xx_hal_rcc.o - 0x08001078 0x08001078 0x00000320 Code RO 1763 i.HAL_RCC_OscConfig stm32f1xx_hal_rcc.o - 0x08001398 0x08001398 0x000000b2 Code RO 2989 i.HAL_SPI_Init stm32f1xx_hal_spi.o - 0x0800144a 0x0800144a 0x00000002 PAD - 0x0800144c 0x0800144c 0x00000074 Code RO 366 i.HAL_SPI_MspInit spi.o - 0x080014c0 0x080014c0 0x000001e2 Code RO 2998 i.HAL_SPI_TransmitReceive stm32f1xx_hal_spi.o - 0x080016a2 0x080016a2 0x00000028 Code RO 2062 i.HAL_SYSTICK_Config stm32f1xx_hal_cortex.o - 0x080016ca 0x080016ca 0x00000002 PAD - 0x080016cc 0x080016cc 0x00000068 Code RO 4025 i.HAL_TIMEx_MasterConfigSynchronization stm32f1xx_hal_tim_ex.o - 0x08001734 0x08001734 0x0000005a Code RO 3302 i.HAL_TIM_Base_Init stm32f1xx_hal_tim.o - 0x0800178e 0x0800178e 0x00000002 PAD - 0x08001790 0x08001790 0x00000028 Code RO 408 i.HAL_TIM_Base_MspInit tim.o - 0x080017b8 0x080017b8 0x00000058 Code RO 3307 i.HAL_TIM_Base_Start_IT stm32f1xx_hal_tim.o - 0x08001810 0x08001810 0x000000d6 Code RO 3311 i.HAL_TIM_ConfigClockSource stm32f1xx_hal_tim.o - 0x080018e6 0x080018e6 0x00000002 PAD - 0x080018e8 0x080018e8 0x0000004c Code RO 409 i.HAL_TIM_MspPostInit tim.o - 0x08001934 0x08001934 0x0000004c Code RO 3351 i.HAL_TIM_OC_ConfigChannel stm32f1xx_hal_tim.o - 0x08001980 0x08001980 0x0000005a Code RO 3355 i.HAL_TIM_OC_Init stm32f1xx_hal_tim.o - 0x080019da 0x080019da 0x00000002 PAD - 0x080019dc 0x080019dc 0x00000028 Code RO 411 i.HAL_TIM_OC_MspInit tim.o - 0x08001a04 0x08001a04 0x0000009c Code RO 3382 i.HAL_TIM_PWM_Start stm32f1xx_hal_tim.o - 0x08001aa0 0x08001aa0 0x00000058 Code RO 4292 i.HAL_UART_DMAStop stm32f1xx_hal_uart.o - 0x08001af8 0x08001af8 0x00000002 Code RO 4294 i.HAL_UART_ErrorCallback stm32f1xx_hal_uart.o - 0x08001afa 0x08001afa 0x00000062 Code RO 4298 i.HAL_UART_Init stm32f1xx_hal_uart.o - 0x08001b5c 0x08001b5c 0x00000110 Code RO 474 i.HAL_UART_MspInit usart.o - 0x08001c6c 0x08001c6c 0x00000098 Code RO 4302 i.HAL_UART_Receive_DMA stm32f1xx_hal_uart.o - 0x08001d04 0x08001d04 0x00000002 Code RO 4304 i.HAL_UART_RxCpltCallback stm32f1xx_hal_uart.o - 0x08001d06 0x08001d06 0x00000002 Code RO 4305 i.HAL_UART_RxHalfCpltCallback stm32f1xx_hal_uart.o - 0x08001d08 0x08001d08 0x000000b2 Code RO 4306 i.HAL_UART_Transmit stm32f1xx_hal_uart.o - 0x08001dba 0x08001dba 0x00000002 Code RO 538 i.HardFault_Handler stm32f1xx_it.o - 0x08001dbc 0x08001dbc 0x0000002e Code RO 2604 i.I2C_IsAcknowledgeFailed stm32f1xx_hal_i2c.o - 0x08001dea 0x08001dea 0x00000002 PAD - 0x08001dec 0x08001dec 0x000000a8 Code RO 2615 i.I2C_RequestMemoryWrite stm32f1xx_hal_i2c.o - 0x08001e94 0x08001e94 0x0000004c Code RO 2618 i.I2C_WaitOnBTFFlagUntilTimeout stm32f1xx_hal_i2c.o - 0x08001ee0 0x08001ee0 0x00000068 Code RO 2619 i.I2C_WaitOnFlagUntilTimeout stm32f1xx_hal_i2c.o - 0x08001f48 0x08001f48 0x00000096 Code RO 2620 i.I2C_WaitOnMasterAddressFlagUntilTimeout stm32f1xx_hal_i2c.o - 0x08001fde 0x08001fde 0x0000004c Code RO 2622 i.I2C_WaitOnTXEFlagUntilTimeout stm32f1xx_hal_i2c.o - 0x0800202a 0x0800202a 0x00000056 Code RO 1007 i.M500PcdConfigISOType rc522.o - 0x08002080 0x08002080 0x00000050 Code RO 259 i.MX_ADC1_Init adc.o - 0x080020d0 0x080020d0 0x0000002c Code RO 299 i.MX_DMA_Init dma.o - 0x080020fc 0x080020fc 0x000000f0 Code RO 225 i.MX_GPIO_Init gpio.o - 0x080021ec 0x080021ec 0x00000040 Code RO 325 i.MX_I2C1_Init i2c.o - 0x0800222c 0x0800222c 0x00000044 Code RO 367 i.MX_SPI2_Init spi.o - 0x08002270 0x08002270 0x00000068 Code RO 412 i.MX_TIM3_Init tim.o - 0x080022d8 0x080022d8 0x00000074 Code RO 413 i.MX_TIM4_Init tim.o - 0x0800234c 0x0800234c 0x00000038 Code RO 475 i.MX_USART1_UART_Init usart.o - 0x08002384 0x08002384 0x00000038 Code RO 476 i.MX_USART3_UART_Init usart.o - 0x080023bc 0x080023bc 0x00000002 Code RO 539 i.MemManage_Handler stm32f1xx_it.o - 0x080023be 0x080023be 0x00000002 Code RO 540 i.NMI_Handler stm32f1xx_it.o - 0x080023c0 0x080023c0 0x0000001a Code RO 1009 i.PcdAntennaOn rc522.o - 0x080023da 0x080023da 0x00000002 PAD - 0x080023dc 0x080023dc 0x00000084 Code RO 1016 i.PcdReset rc522.o - 0x08002460 0x08002460 0x00000002 Code RO 541 i.PendSV_Handler stm32f1xx_it.o - 0x08002462 0x08002462 0x00000002 PAD - 0x08002464 0x08002464 0x0000003c Code RO 1019 i.ReadRawRC rc522.o - 0x080024a0 0x080024a0 0x00000020 Code RO 3027 i.SPI_EndRxTxTransaction stm32f1xx_hal_spi.o - 0x080024c0 0x080024c0 0x0000002c Code RO 1020 i.SPI_FLASH_ReadByte rc522.o - 0x080024ec 0x080024ec 0x0000002c Code RO 1021 i.SPI_FLASH_SendByte rc522.o - 0x08002518 0x08002518 0x000000b8 Code RO 3032 i.SPI_WaitFlagStateUntilTimeout stm32f1xx_hal_spi.o - 0x080025d0 0x080025d0 0x00000002 Code RO 542 i.SVC_Handler stm32f1xx_it.o - 0x080025d2 0x080025d2 0x00000018 Code RO 1022 i.SetBitMask rc522.o - 0x080025ea 0x080025ea 0x00000004 Code RO 543 i.SysTick_Handler stm32f1xx_it.o - 0x080025ee 0x080025ee 0x00000060 Code RO 14 i.SystemClock_Config main.o - 0x0800264e 0x0800264e 0x00000002 Code RO 4595 i.SystemInit system_stm32f1xx.o - 0x08002650 0x08002650 0x0000006c Code RO 3395 i.TIM_Base_SetConfig stm32f1xx_hal_tim.o - 0x080026bc 0x080026bc 0x0000001a Code RO 3396 i.TIM_CCxChannelCmd stm32f1xx_hal_tim.o - 0x080026d6 0x080026d6 0x00000014 Code RO 3406 i.TIM_ETR_SetConfig stm32f1xx_hal_tim.o - 0x080026ea 0x080026ea 0x00000010 Code RO 3407 i.TIM_ITRx_SetConfig stm32f1xx_hal_tim.o - 0x080026fa 0x080026fa 0x00000002 PAD - 0x080026fc 0x080026fc 0x00000050 Code RO 3408 i.TIM_OC1_SetConfig stm32f1xx_hal_tim.o - 0x0800274c 0x0800274c 0x00000058 Code RO 3409 i.TIM_OC2_SetConfig stm32f1xx_hal_tim.o - 0x080027a4 0x080027a4 0x00000058 Code RO 3410 i.TIM_OC3_SetConfig stm32f1xx_hal_tim.o - 0x080027fc 0x080027fc 0x00000044 Code RO 3411 i.TIM_OC4_SetConfig stm32f1xx_hal_tim.o - 0x08002840 0x08002840 0x00000022 Code RO 3413 i.TIM_TI1_ConfigInputStage stm32f1xx_hal_tim.o - 0x08002862 0x08002862 0x00000024 Code RO 3415 i.TIM_TI2_ConfigInputStage stm32f1xx_hal_tim.o - 0x08002886 0x08002886 0x0000004a Code RO 4312 i.UART_DMAError stm32f1xx_hal_uart.o - 0x080028d0 0x080028d0 0x0000003c Code RO 4313 i.UART_DMAReceiveCplt stm32f1xx_hal_uart.o - 0x0800290c 0x0800290c 0x0000000a Code RO 4315 i.UART_DMARxHalfCplt stm32f1xx_hal_uart.o - 0x08002916 0x08002916 0x0000001c Code RO 4321 i.UART_EndRxTransfer stm32f1xx_hal_uart.o - 0x08002932 0x08002932 0x00000012 Code RO 4322 i.UART_EndTxTransfer stm32f1xx_hal_uart.o - 0x08002944 0x08002944 0x000000b8 Code RO 4324 i.UART_SetConfig stm32f1xx_hal_uart.o - 0x080029fc 0x080029fc 0x00000064 Code RO 4325 i.UART_WaitOnFlagUntilTimeout stm32f1xx_hal_uart.o - 0x08002a60 0x08002a60 0x00000064 Code RO 477 i.USART3_IRQHandler usart.o - 0x08002ac4 0x08002ac4 0x00000002 Code RO 544 i.UsageFault_Handler stm32f1xx_it.o - 0x08002ac6 0x08002ac6 0x00000002 PAD - 0x08002ac8 0x08002ac8 0x0000003c Code RO 1023 i.WriteRawRC rc522.o - 0x08002b04 0x08002b04 0x00000020 Code RO 4737 i.__0printf$3 mc_w.l(printf3.o) - 0x08002b24 0x08002b24 0x00000020 Code RO 2064 i.__NVIC_SetPriority stm32f1xx_hal_cortex.o - 0x08002b44 0x08002b44 0x0000000e Code RO 4955 i.__scatterload_copy mc_w.l(handlers.o) - 0x08002b52 0x08002b52 0x00000002 Code RO 4956 i.__scatterload_null mc_w.l(handlers.o) - 0x08002b54 0x08002b54 0x0000000e Code RO 4957 i.__scatterload_zeroinit mc_w.l(handlers.o) - 0x08002b62 0x08002b62 0x00000002 PAD - 0x08002b64 0x08002b64 0x000001b8 Code RO 4744 i._printf_core mc_w.l(printf3.o) - 0x08002d1c 0x08002d1c 0x00000004 Code RO 15 i.delay_ms main.o - 0x08002d20 0x08002d20 0x00000030 Code RO 820 i.dht11_init dht11.o - 0x08002d50 0x08002d50 0x00000018 Code RO 478 i.fputc usart.o - 0x08002d68 0x08002d68 0x000001f8 Code RO 16 i.main main.o - 0x08002f60 0x08002f60 0x00000038 Code RO 906 i.oled_fill oled.o - 0x08002f98 0x08002f98 0x000000b4 Code RO 907 i.oled_init oled.o - 0x0800304c 0x0800304c 0x00000026 Code RO 908 i.oled_set_pos oled.o - 0x08003072 0x08003072 0x00000002 PAD - 0x08003074 0x08003074 0x000000d8 Code RO 910 i.oled_show_string oled.o - 0x0800314c 0x0800314c 0x00000024 Code RO 913 i.oled_write_cmd oled.o - 0x08003170 0x08003170 0x00000024 Code RO 914 i.oled_write_data oled.o - 0x08003194 0x08003194 0x0000000c Code RO 736 i.set_sg90 process.o - 0x080031a0 0x080031a0 0x00000010 Code RO 738 i.stop_buzz process.o - 0x080031b0 0x080031b0 0x00000064 Code RO 17 i.wifi_data_recv_fun main.o - 0x08003214 0x08003214 0x00000818 Data RO 915 .constdata oled.o - 0x08003a2c 0x08003a2c 0x00000010 Data RO 4596 .constdata system_stm32f1xx.o - 0x08003a3c 0x08003a3c 0x00000008 Data RO 4597 .constdata system_stm32f1xx.o - 0x08003a44 0x08003a44 0x00000020 Data RO 4953 Region$$Table anon$$obj.o + 0x08000124 0x08000124 0x00000024 Code RO 4687 .text mc_w.l(memcpya.o) + 0x08000148 0x08000148 0x00000024 Code RO 4689 .text mc_w.l(memseta.o) + 0x0800016c 0x0800016c 0x00000024 Code RO 4691 .text mc_w.l(strstr.o) + 0x08000190 0x08000190 0x0000002c Code RO 4975 .text mc_w.l(uidiv.o) + 0x080001bc 0x080001bc 0x00000024 Code RO 4992 .text mc_w.l(init.o) + 0x080001e0 0x080001e0 0x0000004c Code RO 1353 i.ADC_ConversionStop_Disable stm32f1xx_hal_adc.o + 0x0800022c 0x0800022c 0x00000002 Code RO 502 i.BusFault_Handler stm32f1xx_it.o + 0x0800022e 0x0800022e 0x00000002 PAD + 0x08000230 0x08000230 0x0000001c Code RO 847 i.DHT11_Mode_Out_PP dht11.o + 0x0800024c 0x0800024c 0x00000002 Code RO 503 i.DebugMon_Handler stm32f1xx_it.o + 0x0800024e 0x0800024e 0x00000002 PAD + 0x08000250 0x08000250 0x00000048 Code RO 1167 i.ESP8266_ATE0 esp8266.o + 0x08000298 0x08000298 0x0000003c Code RO 1173 i.ESP8266_JoinAP esp8266.o + 0x080002d4 0x080002d4 0x00000040 Code RO 1176 i.ESP8266_MQTTCONN esp8266.o + 0x08000314 0x08000314 0x00000048 Code RO 1177 i.ESP8266_MQTTPUB esp8266.o + 0x0800035c 0x0800035c 0x00000038 Code RO 1178 i.ESP8266_MQTTSUB esp8266.o + 0x08000394 0x08000394 0x00000054 Code RO 1179 i.ESP8266_MQTTUSERCFG esp8266.o + 0x080003e8 0x080003e8 0x00000060 Code RO 1180 i.ESP8266_Net_Mode_Choose esp8266.o + 0x08000448 0x08000448 0x00000178 Code RO 638 i.ESP8266_STA_MQTTClient_Init mqtt.o + 0x080005c0 0x080005c0 0x00000080 Code RO 1183 i.ESP8266_Send_AT_Cmd esp8266.o + 0x08000640 0x08000640 0x00000002 Code RO 13 i.Error_Handler main.o + 0x08000642 0x08000642 0x00000002 PAD + 0x08000644 0x08000644 0x000000fc Code RO 1359 i.HAL_ADC_ConfigChannel stm32f1xx_hal_adc.o + 0x08000740 0x08000740 0x0000011c Code RO 1368 i.HAL_ADC_Init stm32f1xx_hal_adc.o + 0x0800085c 0x0800085c 0x00000058 Code RO 249 i.HAL_ADC_MspInit adc.o + 0x080008b4 0x080008b4 0x00000098 Code RO 2009 i.HAL_DMA_Abort_IT stm32f1xx_hal_dma.o + 0x0800094c 0x0800094c 0x00000024 Code RO 1636 i.HAL_Delay stm32f1xx_hal.o + 0x08000970 0x08000970 0x000001e0 Code RO 1944 i.HAL_GPIO_Init stm32f1xx_hal_gpio.o + 0x08000b50 0x08000b50 0x00000010 Code RO 1947 i.HAL_GPIO_TogglePin stm32f1xx_hal_gpio.o + 0x08000b60 0x08000b60 0x0000000a Code RO 1948 i.HAL_GPIO_WritePin stm32f1xx_hal_gpio.o + 0x08000b6a 0x08000b6a 0x00000002 PAD + 0x08000b6c 0x08000b6c 0x0000000c Code RO 1640 i.HAL_GetTick stm32f1xx_hal.o + 0x08000b78 0x08000b78 0x00000188 Code RO 2615 i.HAL_I2C_Init stm32f1xx_hal_i2c.o + 0x08000d00 0x08000d00 0x00000130 Code RO 2636 i.HAL_I2C_Mem_Write stm32f1xx_hal_i2c.o + 0x08000e30 0x08000e30 0x00000070 Code RO 291 i.HAL_I2C_MspInit i2c.o + 0x08000ea0 0x08000ea0 0x00000010 Code RO 1646 i.HAL_IncTick stm32f1xx_hal.o + 0x08000eb0 0x08000eb0 0x00000024 Code RO 1647 i.HAL_Init stm32f1xx_hal.o + 0x08000ed4 0x08000ed4 0x00000040 Code RO 1648 i.HAL_InitTick stm32f1xx_hal.o + 0x08000f14 0x08000f14 0x0000003c Code RO 584 i.HAL_MspInit stm32f1xx_hal_msp.o + 0x08000f50 0x08000f50 0x0000001a Code RO 2104 i.HAL_NVIC_EnableIRQ stm32f1xx_hal_cortex.o + 0x08000f6a 0x08000f6a 0x00000002 PAD + 0x08000f6c 0x08000f6c 0x00000040 Code RO 2110 i.HAL_NVIC_SetPriority stm32f1xx_hal_cortex.o + 0x08000fac 0x08000fac 0x00000024 Code RO 2111 i.HAL_NVIC_SetPriorityGrouping stm32f1xx_hal_cortex.o + 0x08000fd0 0x08000fd0 0x000000ec Code RO 1907 i.HAL_RCCEx_PeriphCLKConfig stm32f1xx_hal_rcc_ex.o + 0x080010bc 0x080010bc 0x0000012c Code RO 1804 i.HAL_RCC_ClockConfig stm32f1xx_hal_rcc.o + 0x080011e8 0x080011e8 0x00000020 Code RO 1811 i.HAL_RCC_GetPCLK1Freq stm32f1xx_hal_rcc.o + 0x08001208 0x08001208 0x00000020 Code RO 1812 i.HAL_RCC_GetPCLK2Freq stm32f1xx_hal_rcc.o + 0x08001228 0x08001228 0x0000006c Code RO 1813 i.HAL_RCC_GetSysClockFreq stm32f1xx_hal_rcc.o + 0x08001294 0x08001294 0x00000320 Code RO 1816 i.HAL_RCC_OscConfig stm32f1xx_hal_rcc.o + 0x080015b4 0x080015b4 0x000000b2 Code RO 3042 i.HAL_SPI_Init stm32f1xx_hal_spi.o + 0x08001666 0x08001666 0x00000002 PAD + 0x08001668 0x08001668 0x00000074 Code RO 333 i.HAL_SPI_MspInit spi.o + 0x080016dc 0x080016dc 0x00000028 Code RO 2115 i.HAL_SYSTICK_Config stm32f1xx_hal_cortex.o + 0x08001704 0x08001704 0x00000068 Code RO 4078 i.HAL_TIMEx_MasterConfigSynchronization stm32f1xx_hal_tim_ex.o + 0x0800176c 0x0800176c 0x0000005a Code RO 3355 i.HAL_TIM_Base_Init stm32f1xx_hal_tim.o + 0x080017c6 0x080017c6 0x00000002 PAD + 0x080017c8 0x080017c8 0x00000028 Code RO 375 i.HAL_TIM_Base_MspInit tim.o + 0x080017f0 0x080017f0 0x00000058 Code RO 3360 i.HAL_TIM_Base_Start_IT stm32f1xx_hal_tim.o + 0x08001848 0x08001848 0x000000d6 Code RO 3364 i.HAL_TIM_ConfigClockSource stm32f1xx_hal_tim.o + 0x0800191e 0x0800191e 0x00000002 PAD + 0x08001920 0x08001920 0x0000004c Code RO 376 i.HAL_TIM_MspPostInit tim.o + 0x0800196c 0x0800196c 0x0000004c Code RO 3404 i.HAL_TIM_OC_ConfigChannel stm32f1xx_hal_tim.o + 0x080019b8 0x080019b8 0x0000005a Code RO 3408 i.HAL_TIM_OC_Init stm32f1xx_hal_tim.o + 0x08001a12 0x08001a12 0x00000002 PAD + 0x08001a14 0x08001a14 0x00000028 Code RO 378 i.HAL_TIM_OC_MspInit tim.o + 0x08001a3c 0x08001a3c 0x0000009c Code RO 3435 i.HAL_TIM_PWM_Start stm32f1xx_hal_tim.o + 0x08001ad8 0x08001ad8 0x00000002 Code RO 4347 i.HAL_UART_ErrorCallback stm32f1xx_hal_uart.o + 0x08001ada 0x08001ada 0x00000002 PAD + 0x08001adc 0x08001adc 0x0000015c Code RO 4350 i.HAL_UART_IRQHandler stm32f1xx_hal_uart.o + 0x08001c38 0x08001c38 0x00000062 Code RO 4351 i.HAL_UART_Init stm32f1xx_hal_uart.o + 0x08001c9a 0x08001c9a 0x00000002 PAD + 0x08001c9c 0x08001c9c 0x000000e0 Code RO 441 i.HAL_UART_MspInit usart.o + 0x08001d7c 0x08001d7c 0x00000052 Code RO 4356 i.HAL_UART_Receive_IT stm32f1xx_hal_uart.o + 0x08001dce 0x08001dce 0x00000002 PAD + 0x08001dd0 0x08001dd0 0x0000005c Code RO 442 i.HAL_UART_RxCpltCallback usart.o + 0x08001e2c 0x08001e2c 0x000000b2 Code RO 4359 i.HAL_UART_Transmit stm32f1xx_hal_uart.o + 0x08001ede 0x08001ede 0x00000002 Code RO 4362 i.HAL_UART_TxCpltCallback stm32f1xx_hal_uart.o + 0x08001ee0 0x08001ee0 0x00000002 Code RO 504 i.HardFault_Handler stm32f1xx_it.o + 0x08001ee2 0x08001ee2 0x0000002e Code RO 2657 i.I2C_IsAcknowledgeFailed stm32f1xx_hal_i2c.o + 0x08001f10 0x08001f10 0x000000a8 Code RO 2668 i.I2C_RequestMemoryWrite stm32f1xx_hal_i2c.o + 0x08001fb8 0x08001fb8 0x0000004c Code RO 2671 i.I2C_WaitOnBTFFlagUntilTimeout stm32f1xx_hal_i2c.o + 0x08002004 0x08002004 0x00000068 Code RO 2672 i.I2C_WaitOnFlagUntilTimeout stm32f1xx_hal_i2c.o + 0x0800206c 0x0800206c 0x00000096 Code RO 2673 i.I2C_WaitOnMasterAddressFlagUntilTimeout stm32f1xx_hal_i2c.o + 0x08002102 0x08002102 0x0000004c Code RO 2675 i.I2C_WaitOnTXEFlagUntilTimeout stm32f1xx_hal_i2c.o + 0x0800214e 0x0800214e 0x00000004 Code RO 1185 i.MQTT_SendString esp8266.o + 0x08002152 0x08002152 0x00000002 PAD + 0x08002154 0x08002154 0x00000050 Code RO 250 i.MX_ADC1_Init adc.o + 0x080021a4 0x080021a4 0x000000f0 Code RO 216 i.MX_GPIO_Init gpio.o + 0x08002294 0x08002294 0x00000040 Code RO 292 i.MX_I2C1_Init i2c.o + 0x080022d4 0x080022d4 0x00000044 Code RO 334 i.MX_SPI2_Init spi.o + 0x08002318 0x08002318 0x00000068 Code RO 379 i.MX_TIM3_Init tim.o + 0x08002380 0x08002380 0x00000074 Code RO 380 i.MX_TIM4_Init tim.o + 0x080023f4 0x080023f4 0x00000038 Code RO 443 i.MX_USART1_UART_Init usart.o + 0x0800242c 0x0800242c 0x00000038 Code RO 444 i.MX_USART3_UART_Init usart.o + 0x08002464 0x08002464 0x00000002 Code RO 505 i.MemManage_Handler stm32f1xx_it.o + 0x08002466 0x08002466 0x00000002 Code RO 506 i.NMI_Handler stm32f1xx_it.o + 0x08002468 0x08002468 0x00000002 Code RO 507 i.PendSV_Handler stm32f1xx_it.o + 0x0800246a 0x0800246a 0x00000002 Code RO 508 i.SVC_Handler stm32f1xx_it.o + 0x0800246c 0x0800246c 0x00000004 Code RO 509 i.SysTick_Handler stm32f1xx_it.o + 0x08002470 0x08002470 0x00000060 Code RO 14 i.SystemClock_Config main.o + 0x080024d0 0x080024d0 0x00000002 Code RO 4648 i.SystemInit system_stm32f1xx.o + 0x080024d2 0x080024d2 0x00000002 PAD + 0x080024d4 0x080024d4 0x0000006c Code RO 3448 i.TIM_Base_SetConfig stm32f1xx_hal_tim.o + 0x08002540 0x08002540 0x0000001a Code RO 3449 i.TIM_CCxChannelCmd stm32f1xx_hal_tim.o + 0x0800255a 0x0800255a 0x00000014 Code RO 3459 i.TIM_ETR_SetConfig stm32f1xx_hal_tim.o + 0x0800256e 0x0800256e 0x00000010 Code RO 3460 i.TIM_ITRx_SetConfig stm32f1xx_hal_tim.o + 0x0800257e 0x0800257e 0x00000002 PAD + 0x08002580 0x08002580 0x00000050 Code RO 3461 i.TIM_OC1_SetConfig stm32f1xx_hal_tim.o + 0x080025d0 0x080025d0 0x00000058 Code RO 3462 i.TIM_OC2_SetConfig stm32f1xx_hal_tim.o + 0x08002628 0x08002628 0x00000058 Code RO 3463 i.TIM_OC3_SetConfig stm32f1xx_hal_tim.o + 0x08002680 0x08002680 0x00000044 Code RO 3464 i.TIM_OC4_SetConfig stm32f1xx_hal_tim.o + 0x080026c4 0x080026c4 0x00000022 Code RO 3466 i.TIM_TI1_ConfigInputStage stm32f1xx_hal_tim.o + 0x080026e6 0x080026e6 0x00000024 Code RO 3468 i.TIM_TI2_ConfigInputStage stm32f1xx_hal_tim.o + 0x0800270a 0x0800270a 0x00000010 Code RO 4364 i.UART_DMAAbortOnError stm32f1xx_hal_uart.o + 0x0800271a 0x0800271a 0x0000001c Code RO 4374 i.UART_EndRxTransfer stm32f1xx_hal_uart.o + 0x08002736 0x08002736 0x0000008c Code RO 4376 i.UART_Receive_IT stm32f1xx_hal_uart.o + 0x080027c2 0x080027c2 0x00000002 PAD + 0x080027c4 0x080027c4 0x000000b8 Code RO 4377 i.UART_SetConfig stm32f1xx_hal_uart.o + 0x0800287c 0x0800287c 0x00000064 Code RO 4378 i.UART_WaitOnFlagUntilTimeout stm32f1xx_hal_uart.o + 0x080028e0 0x080028e0 0x00000050 Code RO 510 i.USART3_IRQHandler stm32f1xx_it.o + 0x08002930 0x08002930 0x00000130 Code RO 1186 i.USART_printf esp8266.o + 0x08002a60 0x08002a60 0x00000002 Code RO 511 i.UsageFault_Handler stm32f1xx_it.o + 0x08002a62 0x08002a62 0x00000002 PAD + 0x08002a64 0x08002a64 0x00000020 Code RO 4784 i.__0printf$3 mc_w.l(printf3.o) + 0x08002a84 0x08002a84 0x00000028 Code RO 4786 i.__0sprintf$3 mc_w.l(printf3.o) + 0x08002aac 0x08002aac 0x00000020 Code RO 2117 i.__NVIC_SetPriority stm32f1xx_hal_cortex.o + 0x08002acc 0x08002acc 0x0000000e Code RO 5002 i.__scatterload_copy mc_w.l(handlers.o) + 0x08002ada 0x08002ada 0x00000002 Code RO 5003 i.__scatterload_null mc_w.l(handlers.o) + 0x08002adc 0x08002adc 0x0000000e Code RO 5004 i.__scatterload_zeroinit mc_w.l(handlers.o) + 0x08002aea 0x08002aea 0x00000002 PAD + 0x08002aec 0x08002aec 0x000001b8 Code RO 4791 i._printf_core mc_w.l(printf3.o) + 0x08002ca4 0x08002ca4 0x0000000a Code RO 4793 i._sputc mc_w.l(printf3.o) + 0x08002cae 0x08002cae 0x00000004 Code RO 15 i.delay_ms main.o + 0x08002cb2 0x08002cb2 0x00000002 PAD + 0x08002cb4 0x08002cb4 0x00000030 Code RO 850 i.dht11_init dht11.o + 0x08002ce4 0x08002ce4 0x00000018 Code RO 445 i.fputc usart.o + 0x08002cfc 0x08002cfc 0x000001b8 Code RO 16 i.main main.o + 0x08002eb4 0x08002eb4 0x00000038 Code RO 936 i.oled_fill oled.o + 0x08002eec 0x08002eec 0x000000b4 Code RO 937 i.oled_init oled.o + 0x08002fa0 0x08002fa0 0x00000026 Code RO 938 i.oled_set_pos oled.o + 0x08002fc6 0x08002fc6 0x00000002 PAD + 0x08002fc8 0x08002fc8 0x000000d8 Code RO 940 i.oled_show_string oled.o + 0x080030a0 0x080030a0 0x00000024 Code RO 943 i.oled_write_cmd oled.o + 0x080030c4 0x080030c4 0x00000024 Code RO 944 i.oled_write_data oled.o + 0x080030e8 0x080030e8 0x00000010 Code RO 768 i.stop_buzz process.o + 0x080030f8 0x080030f8 0x00000818 Data RO 945 .constdata oled.o + 0x08003910 0x08003910 0x00000010 Data RO 4649 .constdata system_stm32f1xx.o + 0x08003920 0x08003920 0x00000008 Data RO 4650 .constdata system_stm32f1xx.o + 0x08003928 0x08003928 0x0000010b Data RO 639 .conststring mqtt.o + 0x08003a33 0x08003a33 0x00000001 PAD + 0x08003a34 0x08003a34 0x00000020 Data RO 5000 Region$$Table anon$$obj.o - Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08003a64, Size: 0x00000a50, Max: 0x00005000, ABSOLUTE) + Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08003a54, Size: 0x00000a10, Max: 0x00005000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object - 0x20000000 0x08003a64 0x00000004 Data RW 226 .data gpio.o - 0x20000004 0x08003a68 0x0000000c Data RW 1601 .data stm32f1xx_hal.o - 0x20000010 0x08003a74 0x00000004 Data RW 4598 .data system_stm32f1xx.o - 0x20000014 0x08003a78 0x00000004 Data RW 4927 .data mc_w.l(stdout.o) - 0x20000018 - 0x00000030 Zero RW 260 .bss adc.o - 0x20000048 - 0x00000054 Zero RW 326 .bss i2c.o - 0x2000009c - 0x00000058 Zero RW 368 .bss spi.o - 0x200000f4 - 0x00000090 Zero RW 414 .bss tim.o - 0x20000184 - 0x000000c4 Zero RW 479 .bss usart.o - 0x20000248 - 0x00000408 Zero RW 1153 .bss esp8266.o - 0x20000650 - 0x00000400 Zero RW 1 STACK startup_stm32f103xb.o + 0x20000000 0x08003a54 0x00000004 Data RW 217 .data gpio.o + 0x20000004 0x08003a58 0x00000001 Data RW 447 .data usart.o + 0x20000005 0x08003a59 0x00000003 PAD + 0x20000008 0x08003a5c 0x0000000c Data RW 1654 .data stm32f1xx_hal.o + 0x20000014 0x08003a68 0x00000004 Data RW 4651 .data system_stm32f1xx.o + 0x20000018 0x08003a6c 0x00000004 Data RW 4974 .data mc_w.l(stdout.o) + 0x2000001c - 0x00000030 Zero RW 251 .bss adc.o + 0x2000004c - 0x00000054 Zero RW 293 .bss i2c.o + 0x200000a0 - 0x00000058 Zero RW 335 .bss spi.o + 0x200000f8 - 0x00000090 Zero RW 381 .bss tim.o + 0x20000188 - 0x00000080 Zero RW 446 .bss usart.o + 0x20000208 - 0x00000402 Zero RW 1187 .bss esp8266.o + 0x2000060a 0x08003a70 0x00000006 PAD + 0x20000610 - 0x00000400 Zero RW 1 STACK startup_stm32f103xb.o ============================================================================== @@ -2617,40 +2583,39 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug Object Name - 168 22 0 0 48 1665 adc.o - 76 14 0 0 0 1365 dht11.o - 44 4 0 0 0 774 dma.o - 0 0 0 0 1032 2201 esp8266.o - 240 16 0 4 0 1262 gpio.o - 176 30 0 0 84 1689 i2c.o - 706 258 0 0 0 461508 main.o - 562 16 2072 0 0 4686 oled.o - 28 10 0 0 0 895 process.o - 500 28 0 0 0 5482 rc522.o - 184 22 0 0 88 1681 spi.o - 36 8 236 0 1024 812 startup_stm32f103xb.o - 164 28 0 12 0 5965 stm32f1xx_hal.o - 612 24 0 0 0 3324 stm32f1xx_hal_adc.o - 198 14 0 0 0 28983 stm32f1xx_hal_cortex.o - 656 32 0 0 0 4311 stm32f1xx_hal_dma.o - 506 34 0 0 0 3537 stm32f1xx_hal_gpio.o - 1316 32 0 0 0 9243 stm32f1xx_hal_i2c.o - 60 8 0 0 0 886 stm32f1xx_hal_msp.o - 1272 100 0 0 0 5236 stm32f1xx_hal_rcc.o - 236 12 0 0 0 1396 stm32f1xx_hal_rcc_ex.o - 876 4 0 0 0 4737 stm32f1xx_hal_spi.o - 1278 58 0 0 0 12376 stm32f1xx_hal_tim.o - 104 12 0 0 0 1340 stm32f1xx_hal_tim_ex.o - 996 20 0 0 0 9939 stm32f1xx_hal_uart.o - 32 6 0 0 0 4393 stm32f1xx_it.o - 2 0 24 4 0 1143 system_stm32f1xx.o - 376 54 0 0 144 3426 tim.o - 508 58 0 0 196 3740 usart.o + 168 22 0 0 48 1817 adc.o + 76 14 0 0 0 1481 dht11.o + 940 266 0 0 1026 10219 esp8266.o + 240 16 0 4 0 1378 gpio.o + 176 30 0 0 84 1841 i2c.o + 542 182 0 0 0 459594 main.o + 376 252 267 0 0 682 mqtt.o + 562 16 2072 0 0 5030 oled.o + 16 6 0 0 0 468 process.o + 184 22 0 0 88 1829 spi.o + 36 8 236 0 1024 848 startup_stm32f103xb.o + 164 28 0 12 0 6273 stm32f1xx_hal.o + 612 24 0 0 0 3476 stm32f1xx_hal_adc.o + 198 14 0 0 0 29211 stm32f1xx_hal_cortex.o + 152 4 0 0 0 1191 stm32f1xx_hal_dma.o + 506 34 0 0 0 3681 stm32f1xx_hal_gpio.o + 1316 32 0 0 0 9583 stm32f1xx_hal_i2c.o + 60 8 0 0 0 962 stm32f1xx_hal_msp.o + 1272 100 0 0 0 5468 stm32f1xx_hal_rcc.o + 236 12 0 0 0 1476 stm32f1xx_hal_rcc_ex.o + 178 0 0 0 0 1323 stm32f1xx_hal_spi.o + 1278 58 0 0 0 13024 stm32f1xx_hal_tim.o + 104 12 0 0 0 1416 stm32f1xx_hal_tim_ex.o + 1178 10 0 0 0 9503 stm32f1xx_hal_uart.o + 100 30 0 0 0 5331 stm32f1xx_it.o + 2 0 24 4 0 1251 system_stm32f1xx.o + 376 54 0 0 144 3694 tim.o + 452 64 0 1 128 3943 usart.o ---------------------------------------------------------------------- - 11944 924 2364 20 2616 587995 Object Totals + 11538 1318 2632 24 2548 585993 Object Totals 0 0 32 0 0 0 (incl. Generated) - 32 0 0 0 0 0 (incl. Padding) + 38 0 1 3 6 0 (incl. Padding) ---------------------------------------------------------------------- @@ -2666,23 +2631,25 @@ Image component sizes 8 4 0 0 0 0 entry9a.o 30 0 0 0 0 0 handlers.o 36 8 0 0 0 68 init.o + 36 0 0 0 0 68 memcpya.o 36 0 0 0 0 108 memseta.o - 472 14 0 0 0 184 printf3.o + 522 20 0 0 0 336 printf3.o 0 0 0 4 0 0 stdout.o + 36 0 0 0 0 80 strstr.o 44 0 0 0 0 80 uidiv.o ---------------------------------------------------------------------- - 640 30 0 4 0 440 Library Totals + 762 36 0 4 0 740 Library Totals 2 0 0 0 0 0 (incl. Padding) ---------------------------------------------------------------------- Code (inc. data) RO Data RW Data ZI Data Debug Library Name - 638 30 0 4 0 440 mc_w.l + 760 36 0 4 0 740 mc_w.l ---------------------------------------------------------------------- - 640 30 0 4 0 440 Library Totals + 762 36 0 4 0 740 Library Totals ---------------------------------------------------------------------- @@ -2691,15 +2658,15 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug - 12584 954 2364 24 2616 582243 Grand Totals - 12584 954 2364 24 2616 582243 ELF Image Totals - 12584 954 2364 24 0 0 ROM Totals + 12300 1354 2632 28 2548 580905 Grand Totals + 12300 1354 2632 28 2548 580905 ELF Image Totals + 12300 1354 2632 28 0 0 ROM Totals ============================================================================== - Total RO Size (Code + RO Data) 14948 ( 14.60kB) - Total RW Size (RW Data + ZI Data) 2640 ( 2.58kB) - Total ROM Size (Code + RO Data + RW Data) 14972 ( 14.62kB) + Total RO Size (Code + RO Data) 14932 ( 14.58kB) + Total RW Size (RW Data + ZI Data) 2576 ( 2.52kB) + Total ROM Size (Code + RO Data + RW Data) 14960 ( 14.61kB) ============================================================================== diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/adc.crf b/firmware/stm32/smart_dormitory/MDK-ARM/Project/adc.crf index 8a37ea9f8481b6baabfba327d5c33218092396e6..774ea39a4762c15c67819a33fb1cb0fb2bd0cc51 100644 GIT binary patch delta 216 zcmbREK&9`2$^>PuBl{aV*cgC7YND%`#Kn@R!vjWQnASV#W;bn1G iVCeyJCIC5nEFKChKY*qww->Hq17h~=g=;t#Gy?z-K0!bL delta 214 zcmeBspfd4+$^>PuuK6vUYz#n7Vm&I9uO&%#$5M5&*=mU-=ECOXuk1p2j}GF zTo)&|aw#=eaJN@*GXgOa5HkZY3lOtzui$3;wJ1_wfyG;aV=lPxg2}v$<{STZa83^6R+`+( zb+NgEyS;*&5r~<9m>Gy!fS7fA1vlHTMKL-GEFKChKNuSruifTl;AGKPVDVO9`2gf! zzs<$K#bThqvVy6Bu@A`MW^qtpIRWIv0y#V^P6{k%fSfQOhnK}!f#m{_69DA!vA8R+ W^Z+^i?WfnV0Wtgb)9W~Pv;hF@$2#@^ diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/dma.crf b/firmware/stm32/smart_dormitory/MDK-ARM/Project/dma.crf index 6dc59038374175ea7433d8c2bb1ac1db76620dab..e438005fdda497a33daa39574e72bca789449fe5 100644 GIT binary patch delta 107 zcmcb0OXb!rl?lpRNB1{$urUAu|3qC0uH!J?jEVl42%g8}26pp}KX-5-l(RSQ=4{{1 e$q2+uK+FupEI`Z(#B4y!4#XVWcXM*iR|WvXP$RJb delta 107 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 delta 35855 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 Gfd3yl4OaI6 diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/esp8266.crf b/firmware/stm32/smart_dormitory/MDK-ARM/Project/esp8266.crf index cb2029c04c192722db61bff5c69b72eae099f289..c699d4f3b412af35af9a744109584fe2b70a8c34 100644 GIT binary patch delta 5642 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 MO^0;+-!Dt~U$9YENdN!< delta 5230 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 ausz##y!6ykO_99|Z81(qHlX9AGJ$Ks*D W@&jm^a(nzbHXvr-9>0!*w;2FYDLI?~ delta 194 zcmaF)Naf8Vl?k5wUGrNy*%*M}!%YVUCX>mItcDXijk(~$3nue2ns5Bu!8tjMTWNAD z*Tv=v?)D09Mj&PaVrC#_0bc;3+hf+T0Wtgbm~|Yy%>X=fIYs~g diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/gpio.crf b/firmware/stm32/smart_dormitory/MDK-ARM/Project/gpio.crf index 36f6dc1e4c3d7898343c9b15334c12cd4a9310e6..22e19dcaedae1b2cfec7c05828da41b371dc0c5a 100644 GIT binary patch delta 211 zcmcceSmokll?f_bNA@>#urUC^#EE(mT*qO&8509Cx$b|S(+QTlKe>_JeB-a390=u| zllOA&pFEH2;^Z1GrRIF@_Iz$eAZ7w$W*}w(V%F{X+-%DiMCvQBcq_1cU~FK#ahr>Q zlf^)RWd&0MV?U6?#p0mAastSS19G@ooD^8j06F164iAg70?P#;ClJWtWpP(v=>c*k c06Bat9ttc!fTk(87p-9fV)pGtYdDfx0o{N>ApigX delta 214 zcmcckSmnxNl?f_bUGrNy*%*M}*+e}F1n*H&pWMK1zVYV{4uo>+ z$-6oCO~1p)$~k!n*NMrMTuRM3-0eBsj6lo;#LPg<0>rG_bGX@7EQr)sVDVO9`M}t~ zc;hw~11F1t0?P`f2F89Mhl|BQf#n2{69?pQvp6ZRoB?vefgBzdX9boEKu#c#!^`5X iz|sTcOaOBDSUeP1egI8VZZBBF2E^>!3)XNvZUz9jEkaiS delta 214 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 UvO!)f;2yv}@}wRA>eE{OA5Rn0uK)l5 delta 9181 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 diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/mqtt.crf b/firmware/stm32/smart_dormitory/MDK-ARM/Project/mqtt.crf index 37a4be2c98074ec352049be1a6cdb37037133890..461037191b247fe7de5d347178d20918abf7a3be 100644 GIT binary patch delta 166110 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 delta 172209 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 GN6J%JVNAXMDdvq(zD@NqL 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

_hu%PpVHXSOa*)v&u^vzzKEAMbKW~M*w##v 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 delta 209 zcmcb(RQ1YI)d`;bUGrNy*%*M}!%YVUCX>mItcDXijk(~$3nue2ns5BOg99PtJ$XOp z^U3AhN|TpyU2LAo-9D3>5r~<9m>Gy!fS7grOl~%n%`rL(EFKChKNuSruifTl;AGKP zVDVO9`2gf!zs<$K#bThqvVy6Bu@A`MW^qtpIRWIv0y#V^P6{k%fSfQOhnK}!f#m{_ d69DA!vA8R+^Z+^i?PB}cfS7%|*nW=PlK~&TK9T?c diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/sensor_light.crf b/firmware/stm32/smart_dormitory/MDK-ARM/Project/sensor_light.crf index 152f20eea130e34ba957d7d819e7c860996865c1..96a98b2e3663a84a758c8e81b0b4a34e57437f2b 100644 GIT binary patch delta 246 zcmaENSLO9xl?eg-$M-jMurUC^jGGP&OeT|94JS@8=DPoRPA6FO{$x2e^UW-bJ2~`^ zz*J7WDaXJhq^GCvoL`ix@0pjZpO})Ym%#v6AazrdfpMaM%w!I(tCRn8U7UQEOR4z+ zcl!lyMj&PaVrC#_0b#Kn@R!vjWQnASV#W;bn1GVCeyJCIC5nEFKChKY*qww;Qcx O17h~=Mr%3tGy(uKfJ*WJ delta 249 zcmaETSLNMZl?eg-UGrNy*%*M}!%YVUCX-35h7%_kbHPOyOqOFa-^{|elS3aa_Uxt{ z1Cx-Rp1yN_QL4UYUb22-O0r%C16)D=O-%;Ii2^c{Ik>J)UdOF8`7YPR<_p~I7q}UL zmqdHTnt<+1_~@I zm>L-SfE;cX2L+ZBKu#=>!^7gFz;Xu22?KI?S)3JEE&w?JKn@>^y8=rOkkj9;zm^S% M*|+Pj<=E2*02Gu;oB#j- diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/spi.crf b/firmware/stm32/smart_dormitory/MDK-ARM/Project/spi.crf index d3bb3b4212826214c8db6d30e9e12e6e8ced2f9e..c036a5f72f50ca1ebac0732215793a3107c8d220 100644 GIT binary patch delta 216 zcmaF(K;_;8l?lpRNB1{$urUC^*NM6kT*qO&858|8x$b|S(+QTlKe>V3eB;j@90=ua zC-3ImH~kJHE9c}TTqh=1aw#?EaJT1hGXgOa5HkZY3lOtz&*5g9vLI4lfyG;a_dn0+WMcq=`;#xQns3~8f@AUm&Wn@lIF*_Ux!Mc47=f4xh?#+y z1&CR<7jm&Zo)D?8z~rsK^ntN~@xg5_26iR`1*R2D4UAKP91bQ21*Q`~P7092$>gNK zbOy+Y1#-BUoE4ZZ06F164mXp#0#gr=GY!b$Ve(L5`T;aevwg#CHXvr-zF{`U(h2}% CXEaR! delta 171 zcmcb#LgnfTl?kO>UGrNy*%*Le!Q>09<{P)2;F#>sr8K#Y^I~%$S9>8BBM>tIF*6Xe z05R+KLN2z)6Jm4}m^>7ielRvL-n-4qz|N$vz~rsK^a04ff18VegULXFX$4aQ;}jr= zlgUAW=>(9I4CHVzIVmum0diu19Bw9O1*Qu?P8g8G!{n~O)C1&9ZC^W^4T#ydubs`Y Gv;qJ=*E9D3 diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_adc.crf b/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_adc.crf index f603025cfb92a6e1fe4150c402db08cf6e1581f3..cec4bc9a929ee28705fd52fba660239adbdd2488 100644 GIT binary patch delta 168 zcmZ3|qq?w1bwVlE{m*kc*%*M}{^Sd+<{P)2;h4OH^Wx+tPNn8juJ%$cMj&PaVrC#_ z0b0d~lnKft|@ffoTO(1LIU6hl9yMf$0R0lLF*$GC3(Q zodI%UfgCO-X9cDUKu$Q2!_DNbz|;feOapRwm^>7iegI9=Y+o>+4T#ydFPP8KvJ3zX Cdo#8G delta 171 zcmZ43qq?L=bwVju*Zh`FHU=PAF!=(j`NnN$I3@>kDNSzTyx3gI)n3ZQ2*gZ4%nZaV zK+L+ml#A{Blo%ZaCJzOsAB+u*_ipnturui^FnKF5eE{_dn0+WMcq=`;#xQns3~8o@4TI&Wn>j9Ez~rsK^ntN~@xg5_26iR`1*R2D4UAKP91bQ21*Q`~P7092$>gNK zbOy+Y1#-BUoE4ZZ06F164mXp#0#gr=GY!b$Ve(L5`T;aevpr=V8xXT^PnpNjH3b08 CX*3l8 delta 171 zcmaF;ROQ`Ml?kO>UGrNy*%*Le!Q>09<{P)2=a?MEr8K#f^I~%aS9=8)BM>tIF*6Xe z05R+K3NE$@lVfxgm^>7ielRvL-n-4qz|N$vz~rsK^a04ff18VegULXFX$4aQ;}jr= zlgUAW=>(9I4CHVzIVmum0diu19Bw9O1*Qu?P8g8G!{n~O)C1&9ZBLxX2E^>!6X$Vs GO#uL@zcar8 diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_cortex.crf b/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_cortex.crf index 91abfdbc8e48cd90e4bf118232ee644e65210440..621560d99f3125fa41df04d1e6e68b8a0cd4f453 100644 GIT binary patch delta 172 zcmdnBL}mLDl?kO>_dn0+WMcq=`;#xQns3~8o@4TI&Wn>gNK zbOy+Y1#-BUoE4ZZ06F2e`53sF+!dI5fE>lR2F6K1Sso@21*RWB6E)ip%w_{(_U#8| Ib5xZ904irSVE_OC delta 175 zcmdnKL}k|!l?kO>UGrNy*%*Le!Q>09<{P)2=a?MEr8K#f^I~%aS9=8)BM>tIF*6Xe z05R+K3NE%66B2Y3m^>7ielRvL-n-4qz|N$vz~rsK^a04ff18VegULXFX$4aQ;}jr= zlgUAW=>(9I4CHVzIVmum0diu19Bw9O1*Qu?PS|Ze1|BAN1*RS#M=`E}abo-4*=#_} LzJ2d(j;b;M0@^hT diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_dma.crf b/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_dma.crf index dec5a6b69cb528e72b699c3465a5e663baeda3e4..12340129821f5dbb4118fd1ea828cc6695be91a9 100644 GIT binary patch delta 206 zcmWN}yAAtHW`HoK}@LV6e@{^S5PRZr!cKf zLZP&F@)uuLvgbiz8Wfg}etxzS)8IY*d#rLg-z)=n@Gu1T$h2q>Ut+f*-$S g`>x7!O`#>&a`lKb+JZ0FB9R$~JCnsP;m$fP{_#saIsgCw delta 179 zcmeCatkDNSzTyx3gI)n3ZQ2*gZ4%nZaV zK+L+ml#A`gBGbOOjp26DKVoD`VO068&04mXpt0@DQ`Ck)8pVRBbs>H%`5w(p!_s``x(+>b|wl$Uj diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_exti.crf b/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_exti.crf index 360d35023f9167a8b0f3361b027b19701df08f0f..0124f0ecd958543e92bf5f63b3c76ce724dc90cf 100644 GIT binary patch delta 168 zcmZ3qRb~EGl?kO>_dn0+WMcq=`;#xQns3~8mSgf#&Wn?qIhC5rxZ2CO7=f4xh?#+y z1&CRUGrNy*%*Le!Q>09<{P)2<(M48r8K#j^I~%uS9=*3BM>tIF*6Xe z05R+KGA=f$NijMKOdbkMKNuSr@7?BQU}w@-VDeUA`T*qLzs<$K!DOJow1TODaSD*b z$>gBGbOOjp26DKVoD`VO068&04mXpt0@DQ`Ck)8pVRBbs>H%`5w!fUi2E^>!U(Vs! GRto^veKX?# diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_flash.crf b/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_flash.crf index 14cfe7708cff693e7846c5e063f62088a97e5ded..d939549e4d696283bc04f833099497f8d150582e 100644 GIT binary patch delta 168 zcmZ2@SY_T}l?kO>_dn0+WMcq=`;#xQns3~8j$`sN&Wn>gNK zbOy+Y1#-BUoE4ZZ06F164mXp#0#gr=GY!b$Ve(L5`T;aev%PK(8xXT^ubac6+zJ3h CW-}N7 delta 171 zcmbPtSY_d1l?kO>UGrNy*%*Le!Q>09<{P)2`ZBM>tIF*6Xe z05R+KaxS*j6JvA~m^>7ielRvL-n-4qz|N$vz~rsK^a04ff18VegULXFX$4aQ;}jr= zlgUAW=>(9I4CHVzIVmum0diu19Bw9O1*Qu?P8g8G!{n~O)C1&9ZLglg2E^>!tLJbi Gw*mkjPcp&) diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_flash_ex.crf b/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_flash_ex.crf index d80658046d57426f24164cdbbaf2d2c416a42db1..5b784baded73b08f023f8aa420b0f6de6fbf6b8b 100644 GIT binary patch delta 168 zcmaEVM&->Jl?kO>_dn0+WMcq=`;#xQns3~8kz?{o&Wn@VIhC5LxZ10@7=f4xh?#+y z1&CRgNK zbOy+Y1#-BUoE4ZZ06F164mXp#0#gr=GY!b$Ve(L5`T;aev;EwBHXvr-er`U;!ZrZ! CBsHu6 delta 171 zcmaEJM&UGrNy*%*Le!Q>09<{P(NtIF*6Xe z05R+KDlWDkQ(|-!m^>7ielRvL-n-4qz|N$vz~rsK^a04ff18VegULXFX$4aQ;}jr= zlgUAW=>(9I4CHVzIVmum0diu19Bw9O1*Qu?P8g8G!{n~O)C1&9Z9hGq4T#ydpPtXL GunhprVKr6& diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_gpio.crf b/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_gpio.crf index a2ba087fd0f3516b01cc13bb5261f0de84b2f275..d73e220d007753d14f4cb52c9a5eb23c3c3e685e 100644 GIT binary patch delta 206 zcmdnHTV>a7l?kO>_dn0+WMcq=`;#xQns3~8mSgf#&Wn?qIhC5rxZ2CO7=f4xh?#+y z1&CRgNKbOy+Y1#-BUoE4ZZ06F164mXp#0#gr=GY!b$Ve(L5`T;ai6UgCZ@>F1& g1C(h3a`>3M6qvq1W%%1K%wq#$_U#wualEYq00}-lQvd(} delta 179 zcmdnBTV?NVl?kO>UGrNy*%*Le!Q>09<{P)2<(M48r8K#j^I~%uS9=*3BM>tIF*6Xe z05R+KGA_0olT&yZ*qC$_m^>7ielRvL-n%Wxz|N$vz~rsK^a03MENNgodYg-ZgULXF zX$4aQ;}jr=lgUAW=>(9I4CHVzIVmum0diu19Bw9O1*Qu?P8g8G!{n~O)C1&9ZC^i+ O4T#ydub;=kT@L_%-!!lQ diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_gpio_ex.crf b/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_gpio_ex.crf index b820ae088e6d0fd2a03453603db841db2e97d69d..4f367a656756006ea57a747db299657fc8565523 100644 GIT binary patch delta 176 zcmbO=Pi6W%l?kO>_dn0+WMcq=`;#xQns3~8fn)Lt&Wn@VIF*_!x!Nna7=f4xh?#+y z1&CR7iegI9>Y_FZg2E^>! KYiDuHEdc=Mbu&Z& delta 179 zcmbO}Pi59Tl?kO>UGrNy*%*Le!Q>09<{P(N;FuiFr8K#X^I~%)S9>KFBM>tIF*6Xe z05R+KN-nkq{VBW*Y)m=|OdbkMKNuSr@7)$;U}w@-VDeUA`T*oB8aFVq-R5H8U@}l( zTEW!7I0eYzWO7hoIsxP)136qwP6|wCfSed0hnvY+f$0K}69(k)Fu5x*^#D0j+pA`= N0Wtgbs#zR!O8~}RGVTBX diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_i2c.crf b/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_i2c.crf index f40e3af69fcc4e446dd6b1dafd53408c4e5aea35..97629dc19c6010d3a21eb82e0cd8df01ebd99d53 100644 GIT binary patch delta 177 zcmaDlOXJZjjR~b(_dn0+WMcq=`;#xQns3~8hGX&)&Wn?qIF*`9x!Oy)7=f4xh?#+y z1&CR09<{P)2;g}rEr8K#T^I~%;S9>WJBM>tIF*6Xe z05R+KQZBZlt%*7cOdbkMKNuSr@7?BQU}w@-VDeUA`T*qLzs=9U!DOJow1TODQSmg8 zP`J&-z{%vGz;pu0Nd|Jbn4A=t&Hy+rcZ(R77gX>6qr{qH84&B zayXeC6qru{If+0H7qgQB^BEu~3drGRc2;1%0OW)KIXukn3d}t~&SW5mm)S#s`3KN6 Swf4QM*?^dR``*;)53d|k~%s&_#7;oL?W#C}eS77#5VEzE)-@eVoz{zZ& zz`TN~fpH>`!^P~NzgKDf=rz|Lf#z_fy?fpIF3!@=aBz;pu0Nda;=nVb}u z&Hy>FKn@p^vjWovASWEi;bwAIVCn&KrU5xTOdbkMKY*rbw#{X0o6Ej!E(c#N07FYK At^fc4 delta 171 zcmeC)qSCiTWkM-e*Zh`FHU=PAF!=(j`NnN$I3@>kDNSzTyx3gI)n3ZQ2*gZ4%nZaV zK+L+ml#5M&QjCrQlZOJ+55@+@d$)NR*qQVdn7kF3J^=amZ*wtlFc~N?tzc?koC4%< zGC3$Pod9x@fgCO-Ck3W6Ku!#h!_DNZz;pq~2?KI?nA{bZdVrj%?SJR60WtgbzjHYF FY5~ArGgtrs diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_rcc.crf b/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_rcc.crf index c8eb13b49b521e39228d77d30174f58f8c72372d..4ec9b8f506c1e13a5cbb4a6a31a984c1578a721c 100644 GIT binary patch delta 168 zcmeDEtJ3vXWkM;}{m*kc*%*M}{^Sd+<{P)2;h4OH^Wx+tPNn8juJ%$cMj&PaVrC#_ z0bgKDf=rz|Lf#z_fy?fpIF3!@=aBz;pu0Nda;=nVb}u z&Hy>FKn@p^vjWovASWEi;bwAIVCn&KrU5xTOdbkMKY*rbwkytM17h~=igP(~76Jf0 CFfvB~ delta 171 zcmeDBtJ3>dWkM-e*Zh`FHU=PAF!=(j`NnN$I3@>kDNSzTyx3gI)n3ZQ2*gZ4%nZaV zK+L+ml#4B3QjCrQlZOJ+55@+@d$)NR*qQVdn7kF3J^=amZ*wtlFc~N?tzc?koC4%< zGC3$Pod9x@fgCO-Ck3W6Ku!#h!_DNZz;pq~2?KI?nA{bZdVrj%?Q(P3fS7%|++2>F Fg#Z?_G4TKZ diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_rcc_ex.crf b/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_rcc_ex.crf index 4a6aaf3e68269428fa8de65478e2158a80c71809..85a373c3daa8a4b63c93fd3b056d6c1c171e7ddd 100644 GIT binary patch delta 168 zcmcb-N#(*Ol?kO>_dn0+WMcq=`;#xQns3~8o@4TI&Wn>e4z~rsK^ntN~@xg5_26iR`1*R2D4UAKP91bQ21*Q`~P7092$>gNK zbOy+Y1#-BUoE4ZZ06F164mXp#0#gr=GY!b$Ve(L5`T;aevwhiYHXvr-zHBzf+FAgK CPc(r5 delta 171 zcmcbxN#*h;l?kO>UGrNy*%*Le!Q>09<{P)2=a?MEr8K#f^I~%aS9=8)BM>tIF*6Xe z05R+K3NE%w6Jm4}m^>7ielRvL-n-4qz|N$vz~rsK^a04ff18VegULXFX$4aQ;}jr= zlgUAW=>(9I4CHVzIVmum0diu19Bw9O1*Qu?P8g8G!{n~O)C1&9ZC^Z_4T#ydFP_b@ GwiW09<{P)2;g}rEr8K#T^I~%;S9>WJBM>tIF*6Xe z05R+KQZBY_3lnt|m^>7ielRvL-n-4qz|N$vz~rsK^a04ff18VegULXFX$4aQE}RcE+!`hrZYg17$Aq6$ytHv0+161WJBM>tIF*6Xe z05R+KQZBY{>*Dkkn7kF3J}@>gKDf=rz|Lf#z_fy?fpIF3!@=aBz;pu0Nx99>z{%vK zz;p)4Q9KG%`vEA;#pJBObO9(54&-n%xhpXB06Eiu93CbQ1*RWBWt#10cCrC6I}meh KKeLl_n-2hE3ON1% delta 180 zcmez0qtVo>F`<;JYko^78v_t5n0$fNeB-t=9Fv2&lqNTEUTiMqYA@wt1Y#y2W(Hyw zAZFcO%Ek6=U80TxlZOJ+55@+@d$)NR*qQVdn7kF3J^=amZ*wtlFc~N?tzc?koC4%< zGC3$Pod9x@Z}T&7F*zwPodI$bj{?=c2TF4@IV&(-0E&bGIXq163QRpf&eZmkJK2Dk O9f&!$pWMm0%?AK6FF2(D diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_tim_ex.crf b/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_hal_tim_ex.crf index 082b97be4d4760d14cfbbf2fb649c02f600c33b0..65f577bdfb317f874f0b68540e417922e809a08a 100644 GIT binary patch delta 172 zcmezKK=tPX)d{6s_dn0+WMcq=`;#xQns3~8o@4TI&Wn>09<{P)2=a?MEr8K#f^I~%aS9=8)BM>tIF*6Xe z05R+K3NE&gSqVA{OdbkMKNuSr@7?BQU}w@-VDeUA`T*qLzs<$K!DOJow1TODaSD*b z$>gBGbOOjpzRkzL#pI;GbOy*#jBH?x1gNK zbOy+Yz0J?S#pJBObOFdwd09<{P)2<(M48r8K#j^I~%uS9=*3BM>tIF*6Xe z05R+KGA_2QvlDd`m^>7ielRvL-n-4qz|N$vz~rsK^a04ff18VegULXFX$4aQ;}jr= zlgUAW=>(9I4CHVzIVmum0dit)^D}TWIV&(-0CE(c0yUllO7k$eD=_r{MW(iQE@J~? M_U)a^IQFgs086$t`~Uy| diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_it.crf b/firmware/stm32/smart_dormitory/MDK-ARM/Project/stm32f1xx_it.crf index 92b83ec0df7c0ec365c4d0e83492e2d21ec01be4..b21fb254914e66444dfb7584296d57256c9b3ab7 100644 GIT binary patch delta 2343 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 diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/system_stm32f1xx.crf b/firmware/stm32/smart_dormitory/MDK-ARM/Project/system_stm32f1xx.crf index 2d013ba6fa38f6bd45fb41f77fa722da2d93715b..6b7a87fb3667eae3d4762606f138d5f154929e9e 100644 GIT binary patch delta 195 zcmZ25UuEuml?^#eT=zfE>11O7g8P#%u$ymQ%cQ`@_3qvGf2<&}>CM+U+OKmk0x=U1 zGjG4n!SY>c`Uh>6i__0(vnaJ6)L{W)Rv=~rV)pF^bvRD3$LlL_c`I;zU~FK#a+{lB zgBO>90@n(r2F8g%-bODj2L-MZKwbinx5Kf2E^>!59)B7Vo%ah;PO!5`oY-1cnIsxRx19_XhxSSNY&H#B4K;9NFE@uU< a3qW2Fkhj%~%Uyx12gsYa{gnyF=34;GL_p;L diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/tcp.crf b/firmware/stm32/smart_dormitory/MDK-ARM/Project/tcp.crf index 69d5dc69e90aeb8149c1da8500c9638528ef64dc..dd147ff6c91e1244ede869c58c62a963f618580b 100644 GIT binary patch delta 1555 zcmYM#eN0tl90%~{xgHMO7cVc96$|kR@bR>4X%jNXG*MBf6#{C8aYsr(BPjfx{%CFY z_) zgTtA-FJ}h2y^MJ{GwMxtWlLa!uXk`;z0U9{-jem&|5b8wel3Ph^YBZB2q~bN##oaZpFn{_3+1Vj? zSg4?ERZZ>cP$AWttB75Q2H9jEx@r1THD>i{wm+K864GKgi?lcCiT1T7y-iE0Gqu{X zHEbI?$K~KTt5H}(wQR`l*`s&z7558mk#d%^EQ`xr#2kxnwcl>hCnN?IA$qh!?d!#QmwI*)KXy5s^D2glWo8}IE43Up;n+gz^N){oWKolcZBA!H)AVL<8M0QN~ z&d@OGok;(5Z$=nnB96{JBRO7d20ka5CSC`=AUQ#70``&=;#FWD$-BiyCyDJRnJ$cY zyk0V5qQ$eFAUi-ZL)`ib_2~X3$%$euaFC=FVW63$AzlK$B6*K^5%@YxaGO5A?m#StzP>269L~YVjy^hTL82#++v$i9_R|Whj|zD zx6;SZRi%%hYvdmDMrc@RC-e`w$NocTMCk+QU#0h<>*QXD9ZqbR-5~c~yo;h`y2^mo zDy8F8uQRz{+*q*sd&M06IS|Gj{5no= uoyo^xU1CIz6EE3D(})#Ds>evI6ArT+)Zn))ID delta 2202 zcmZ{m32ak!9LN9v@z!l^S+@nm!5DwW_){)Hgn@X3ZM0Bb%CdGauDsMyU^s_vzXu{Q zeV{myOB`BJ2x4NQ(Gdl;3UZ2aUmiGK@dT%c$|Z-0$M?M!AsUx_Up~L%fB$~X)?X;x zdZp0WlEGLCXYLgmYhC8-Vt;kz=|&sFUv$}^h4!6W^!b)GvMHMnUeEcCbo-@`=Ouir znhs`6u+QCoCNW@D(;)lirX7xgrt|j0kF`1)TOAxqf!aU{lp1Sw*o@VYJab8w<@W^D zK(IJi8Bl$GUyv0T-B=>j>4wl4pVz0Bj`I6Gr9q#61lwa2B(pmHPnKsm>uPjKCUy9C zlD9bGD?>_qqiZrH_lA_xvQd@8)j(xwsV5L%l}3It=cfPUc#C~ytjfq`H(RI4uAW|3 z7p^9?fkLD;sA1OM=$IUw6C7LaQ7b&9qpgEPa1yr0=$wqUzaAa#3nWjn7|&swNOlu$7mn8+>aO!a@l3XvWTCjWg>s~CA=y(r3fM}rmoOLEMzXh<1=voq zkC+MgAVRXQ&_Fv#-Xa zEA1sYM3^ry1>SumhYA(2pX424BH#eYyTmxaL6UciD!?I<#UdDw*w|r`C87eZk4buj zAMgoDuP6h2O427r0zM;okMLrhBP9L8eC1*opOY*XQq}oDq_mI>h@pU^BrC;WfI)JM zFhg;YRbl|(7|C&>AK(j;<3(RU>iiu1zmQpEuYyin^h(^t&RFDbi%k^jJP)z6WR~H}7=6wncc#uy z!hfF3x_Alnt3_)-7c6=)0=#J9YD{^_BCE1cRauB#CbObff_}5;1<)0Xo(KJI(F!bh z)grSVk6@lZ$m{`k7Su!Msfhnc@*!BcIzIsGFEX3dou~82ZcL+VvO(uA&>V|0L31^; zh3ufmEXn{qZc#dDo<(V(Cp5FoQbCOtDWLflwE->A%my?c=t+whXrX2{V3eB;j@99&0X z3f@oN&AD&-9Y$8p$xFCSOs?coYR=(q&*5eSVkRJF24WT5uv`Fg0)ZS} k7Iy`f9w27|ki*B~p}_J3Xqs|+*IG6pX5ZemmV>7a0AF=N>i_@% delta 214 zcmbRITxHsGl?lpRUGrNy*%*MpccQKYg7;yfeT86951J diff --git a/firmware/stm32/smart_dormitory/MDK-ARM/Project/usart.crf b/firmware/stm32/smart_dormitory/MDK-ARM/Project/usart.crf index 4a496312a03fcc7b5f2a862dad31d89e6dfe562f..361a465faf61baa06580dbcb7d187218acaa7b2b 100644 GIT binary patch delta 5363 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 delta 6160 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", 500 ); + } @@ -215,25 +200,28 @@ bool ESP8266_SendString(FunctionalState enumEnUnvarnishTx, char * pStr, uint32_t char cStr [20]; bool bRet = false; + if ( enumEnUnvarnishTx ) { - hal_AT_printf ( "%s", pStr ); + ESP8266_USART ( "%s", pStr ); bRet = true; + } else { if ( ucId < 5 ) sprintf ( cStr, "AT+CIPSEND=%d,%d", ucId, ulStrLength + 2 ); - else sprintf ( cStr, "AT+CIPSEND=%d", ulStrLength + 2 ); ESP8266_Send_AT_Cmd ( cStr, "> ", 0, 1000 ); bRet = ESP8266_Send_AT_Cmd ( pStr, "SEND OK", 0, 1000 ); - } + } + return bRet; + } @@ -241,7 +229,7 @@ bool ESP8266_SendString(FunctionalState enumEnUnvarnishTx, char * pStr, uint32_t void ESP8266_ExitUnvarnishSend ( void ) { delay_ms(1000); - hal_AT_printf( "+++" ); + ESP8266_USART( "+++" ); delay_ms( 500 ); } @@ -255,89 +243,20 @@ uint8_t ESP8266_Get_LinkStatus ( void ) { if (ESP8266_Send_AT_Cmd( "AT+CIPSTATUS", "OK", 0, 500 ) ) { - if ( strstr ( (char *)ESP8266_Fram_Record_Struct.Data_RX_BUF, "STATUS:2\r\n" ) ) + if ( strstr ( ESP8266_Fram_Record_Struct.Data_RX_BUF, "STATUS:2\r\n" ) ) return 2; - else if ( strstr ( (char *)ESP8266_Fram_Record_Struct.Data_RX_BUF, "STATUS:3\r\n" ) ) + + else if ( strstr ( ESP8266_Fram_Record_Struct.Data_RX_BUF, "STATUS:3\r\n" ) ) return 3; - else if ( strstr ( (char *)ESP8266_Fram_Record_Struct.Data_RX_BUF, "STATUS:4\r\n" ) ) + + else if ( strstr ( ESP8266_Fram_Record_Struct.Data_RX_BUF, "STATUS:4\r\n" ) ) return 4; + } + return 0; } - - -extern char mqtt_tcp_connect(int timeout); - -/*-------------------------------------------------*/ -/*函数名:WiFi连接服务器 */ -/*参 数:无 */ -/*返回值:0:正确 其他:错误 */ -/*-------------------------------------------------*/ -char WiFi_Connect_IoTServer(void) -{ -// printf("准备复位模块\r\n"); //串口提示数据 -// ESP8266_Rst(); - - // 取消回显 - ESP8266_ATE0(); - - printf("ready to set STA mode\r\n"); - // 设置STA模式 - if (ESP8266_Net_Mode_Choose(STA)) - { - printf("Set STA mode\r\n"); - } - - // 准备关闭多路连接 - if (ESP8266_Enable_MultipleId(DISABLE)) - { - printf("close multipled ID success\r\n"); - }else - { - printf("close multipled ID error\r\n"); - } - // 取消自动重连 - if(ESP8266_Enable_AutoConnect(0)) //取消自动连接,100ms超时单位,总计5s超时时间 - { - printf("取消自动连接成功\r\n"); //串口提示数据 - }else - { - printf("取消自动连接失败,准备重启\r\n"); //返回非0值,进入if,串口提示数据 - return 3; - } - - - // 连接路由器 - if(ESP8266_JoinAP(User_SSID, User_PWD)) - { - printf("connect to router success\r\n"); - }else - { - printf("connect to router failed\r\n"); - return 9; - } - - // 连接服务器 - if(mqtt_tcp_connect(500)) //连接服务器,100ms超时单位,总计10s超时时间 - { - printf("connect to server success\r\n"); //返回非0值,进入if,串口提示数据 - //返回10 - }else - { - printf("connect to server failed\r\n"); //串口提示数据 - return 10; - } - - // 进入透传模式 - if (ESP8266_UnvarnishSend() ) - { - printf("go into unvarnishSend mode\r\n"); - } - return 0; //正确返回0 -} - - static char *itoa( int value, char *string, int radix ) { int i, d; @@ -388,7 +307,7 @@ static char *itoa( int value, char *string, int radix ) } /* NCL_Itoa */ -void hal_AT_printf ( char * Data, ... ) +void USART_printf ( char * Data, ... ) { const char *s; int d; @@ -452,14 +371,108 @@ void hal_AT_printf ( char * Data, ... ) Data++; break; } - } + } else { HAL_UART_Transmit(&huart3, (uint8_t *)Data, 1, 0xFFFF); Data++; while( __HAL_UART_GET_FLAG(&huart3, UART_FLAG_TXE) == false); } + } } - \ No newline at end of file +//下面为ESP8266MQTT功能指令 + +/* +*MQTT配置用户属性 +*LinkID 连接ID,目前只支持0 +*scheme 连接方式,这里选择MQTT over TCP,这里设置为1 +*client_id MQTTclientID 用于标志client身份 +*username 用于登录 MQTT 服务器 的 username +*password 用于登录 MQTT 服务器 的 password +*cert_key_ID 证书 ID, 目前支持一套 cert 证书, 参数为 0 +*CA_ID 目前支持一套 CA 证书, 参数为 0 +*path 资源路径,这里设置为"" +*设置成功返回true 反之false +*/ +bool ESP8266_MQTTUSERCFG( char * pClient_Id, char * pUserName,char * PassWord) +{ + char cCmd [120]; + sprintf ( cCmd, "AT+MQTTUSERCFG=0,1,\"%s\",\"%s\",\"%s\",0,0,\"\"", pClient_Id,pUserName,PassWord ); + return ESP8266_Send_AT_Cmd( cCmd, "OK", NULL, 500 ); +} + + +/* +*连接指定的MQTT服务器 +*LinkID 连接ID,目前只支持0 +*IP:MQTT服务器上对应的IP地址 +*ComNum MQTT服务器上对应的端口号,一般为1883 +*设置成功返回true 反之false +*/ +bool ESP8266_MQTTCONN( char * Ip, int Num) +{ + char cCmd [120]; + sprintf ( cCmd,"AT+MQTTCONN=0,\"%s\",%d,0", Ip,Num); + return ESP8266_Send_AT_Cmd( cCmd, "OK", NULL, 500 ); +} + +/* +*订阅指定连接的 MQTT 主题, 可重复多次订阅不同 topic +*LinkID 连接ID,目前只支持0 +*Topic 订阅的主题名字,这里设置为Topic +*Qos值:一般为0,这里设置为1 +*设置成功返回true 反之false +*/ +bool ESP8266_MQTTSUB(char * Topic) +{ + char cCmd [120]; + sprintf ( cCmd, "AT+MQTTSUB=0,\"%s\",1",Topic ); + return ESP8266_Send_AT_Cmd( cCmd, "OK", NULL, 500 ); +} + + +/* +*在LinkID上通过 topic 发布数据 data, 其中 data 为字符串消息 +*LinkID 连接ID,目前只支持0 +*Topic 订阅的主题名字,这里设置为Topic +*data:字符串信息 +*设置成功返回true 反之false +*/ +bool ESP8266_MQTTPUB( char * Topic,char *temp) +{ + char cCmd [512]; + sprintf (cCmd, "AT+MQTTPUB=0,\"%s\",\"%s\",0,0", Topic ,temp); + return ESP8266_Send_AT_Cmd( cCmd, "OK", NULL, 1000 ); +} + +/* +*关闭 MQTT Client 为 LinkID 的连接, 并释放内部占用的资源 +*LinkID 连接ID,目前只支持0 +*Topic 订阅的主题名字,这里设置为Topic +*data:字符串信息 +*设置成功返回true 反之false +*/ +bool ESP8266_MQTTCLEAN(void) +{ + char cCmd [120]; + sprintf ( cCmd, "AT+MQTTCLEAN=0"); + return ESP8266_Send_AT_Cmd( cCmd, "OK", NULL, 500 ); +} + +//ESP8266发送字符串 +//enumEnUnvarnishTx是否使能透传模式 +//pStr字符串 +//ulStrLength字符串长度 +//ucId 连接号 +//设置成功返回true, 反之false +bool MQTT_SendString(char * pTopic,char *temp2) +{ + bool bRet = false; + + bRet = ESP8266_MQTTPUB(pTopic,temp2); + + return bRet; +} + diff --git a/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/esp8266.h b/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/esp8266.h index 36963b82..572025b0 100644 --- a/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/esp8266.h +++ b/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/esp8266.h @@ -1,5 +1,5 @@ -#ifndef __ESP8266_H__ -#define __ESP8266_H__ +#ifndef __ESP8266_H +#define __ESP8266_H #include "main.h" @@ -7,6 +7,33 @@ #include #include +#if defined ( __CC_ARM ) +#pragma anon_unions +#endif + +//ESP8266模式选择 +typedef enum +{ + STA, + AP, + STA_AP +}ENUM_Net_ModeTypeDef; + +//网络传输层协议,枚举类型 +typedef enum{ + enumTCP, + enumUDP, +} ENUM_NetPro_TypeDef; +//连接号,指定为该连接号可以防止其他计算机访问同一端口而发生错误 +typedef enum{ + Multiple_ID_0 = 0, + Multiple_ID_1 = 1, + Multiple_ID_2 = 2, + Multiple_ID_3 = 3, + Multiple_ID_4 = 4, + Single_ID_0 = 5, +} ENUM_ID_NO_TypeDef; + #define ESP8266_RST_Pin GPIO_PIN_4 //复位管脚 #define ESP8266_RST_Pin_Port GPIOA //复位 @@ -26,62 +53,11 @@ #define PC_USART(fmt, ...) printf(fmt, ##__VA_ARGS__) //这是串口打印函数,串口1,执行printf后会自动执行fput函数,重定向了printf。 + #define RX_BUF_MAX_LEN 1024 //最大字节数 - -#define User_SSID "brown1" //wifi名 -#define User_PWD "123456789a" //wifi密码 - - -//ESP8266模式选择 -typedef enum +extern struct STRUCT_USART_Fram //数据帧结构体 { - STA, - AP, - STA_AP -}ENUM_Net_ModeTypeDef; - -//网络传输层协议,枚举类型 -typedef enum{ - enumTCP, - enumUDP, -} ENUM_NetPro_TypeDef; - -//连接号,指定为该连接号可以防止其他计算机访问同一端口而发生错误 -typedef enum{ - Multiple_ID_0 = 0, - Multiple_ID_1 = 1, - Multiple_ID_2 = 2, - Multiple_ID_3 = 3, - Multiple_ID_4 = 4, - Single_ID_0 = 5, -} ENUM_ID_NO_TypeDef; - - -//ESP8266网络状态 -typedef enum{ - NET_STATUS_INIT = 0, - NET_STATUS_WIFI_CONNECTING, - NET_STATUS_WIFI_CONNECTED, - NET_STATUS_WIFI_FAILED, - NET_STATUS_CLOUD_SUCCESS, - NET_STATUS_CLOUD_FAIL, -}connect_status_e; - -//ESP8266网络状态 -typedef enum{ - TYPE_RECV_CONNECT = 0, - TYPE_RECV_DISCONNECT, - TYPE_RECV_GOT_IP, - TYPE_RECV_SUBSCRIBE, // 接收MQTT下发订阅消息 - TYPE_RECV_NONE, -}type_recv_e; - -typedef int (*wifi_data_arrvied)(type_recv_e type, uint8_t *data, int len); // 函数指针,接收WIFI发来的数据 - -#pragma anon_unions -typedef struct STRUCT_USART_Fram //数据帧结构体 -{ - uint8_t Data_RX_BUF[RX_BUF_MAX_LEN]; + char Data_RX_BUF[RX_BUF_MAX_LEN]; union { __IO uint16_t InfAll; @@ -91,17 +67,15 @@ typedef struct STRUCT_USART_Fram // __IO uint16_t FramFinishFlag :1; // 15 }InfBit; }; - wifi_data_arrvied wifi_data_recv_cb; -}STRUCT_USART_Fram_t; -extern STRUCT_USART_Fram_t ESP8266_Fram_Record_Struct; +}ESP8266_Fram_Record_Struct; + //初始化和TCP功能函数 void ESP8266_Init(uint32_t bound); -void ESP8266_AT_Test(void); void ESP8266_ATE0(void); bool ESP8266_Send_AT_Cmd(char *cmd,char *ack1,char *ack2,uint32_t time); -char ESP8266_Rst(void); +void ESP8266_Rst(void); bool ESP8266_Net_Mode_Choose(ENUM_Net_ModeTypeDef enumMode); bool ESP8266_JoinAP( char * pSSID, char * pPassWord ); bool ESP8266_Enable_MultipleId ( FunctionalState enumEnUnvarnishTx ); @@ -110,8 +84,15 @@ bool ESP8266_SendString(FunctionalState enumEnUnvarnishTx, char * pStr, uint32_t bool ESP8266_UnvarnishSend ( void ); void ESP8266_ExitUnvarnishSend ( void ); uint8_t ESP8266_Get_LinkStatus ( void ); -void hal_AT_printf( char * Data, ... ); -char WiFi_Connect_IoTServer(void); +void USART_printf( char * Data, ... ); + +//MQTT功能函数 +bool ESP8266_MQTTUSERCFG( char * pClient_Id, char * pUserName,char * PassWord); +bool ESP8266_MQTTCONN( char * Ip, int Num); +bool ESP8266_MQTTSUB(char * Topic); +bool ESP8266_MQTTPUB( char * Topic,char *temp); +bool ESP8266_MQTTCLEAN(void); +bool MQTT_SendString(char * pTopic,char *temp2); #endif diff --git a/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/mqtt.c b/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/mqtt.c index b4025c99..1cc303a4 100644 --- a/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/mqtt.c +++ b/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/mqtt.c @@ -1,340 +1,37 @@ #include "mqtt.h" -#include "usart.h" -char str[] = "{\"deviceNum\": \"E8DB84933089\",\"relayStatus\": 0,\"lightStatus\": 0,\"isOnline\": 1,\"rssi\": -54,\"deviceTemperature\": 38}"; - -static int mqtt_send(uint8_t head, uint32_t vlen, uint8_t *vhead, - uint32_t pay_len, uint8_t *payload) +void ESP8266_STA_MQTTClient_Init(void) { - int32_t tmp_encode, tmp_x; - uint32_t i = 0; - uint8_t msg[RX_BUF_MAX_LEN]; - msg[i++] = head; - - tmp_x = vlen + pay_len; - do { - tmp_encode = tmp_x % 128; - tmp_x = tmp_x / 128; - if (tmp_x > 0) { - tmp_encode = tmp_encode | 128; - } - msg[i++] = tmp_encode; - } while (tmp_x > 0); - - if (vlen != 0) { - memcpy(&msg[i], vhead, vlen); - i = i + vlen; - } - if (pay_len != 0) { - memcpy(&msg[i], payload, pay_len); - i = i + pay_len; - } - ESP8266_Fram_Record_Struct.InfBit.FramFinishFlag = 0; - ESP8266_Fram_Record_Struct.InfBit.FramLength = 0; - HAL_UART_Transmit(&huart3, msg, i, 0xFFFF); - - return 0; -} - -static int mqtt_str_fill(uint8_t *outbuff, char *instr) -{ - uint8_t *p_tmp; - p_tmp = &outbuff[2]; - outbuff[0] = strlen(instr) / 256; - outbuff[1] = strlen(instr) % 256; - strcpy((char*) p_tmp, (char*) instr); - return 0; -} - -static int mqtt_recv(uint8_t *ackbuff, uint16_t *ack_len, int timeout) -{ - do { - if(1 == ESP8266_Fram_Record_Struct.InfBit.FramFinishFlag) - { - memcpy(ackbuff, ESP8266_Fram_Record_Struct.Data_RX_BUF, ESP8266_Fram_Record_Struct.InfBit.FramLength); - *ack_len = ESP8266_Fram_Record_Struct.InfBit.FramLength; - ESP8266_Fram_Record_Struct.InfBit.FramFinishFlag = 0; - return 0; - } - - if (timeout > 0) { - HAL_Delay(100); - } else { - return -1; - } - } while (timeout--); - return -1; -} - -static int mqtt_ack_check(uint8_t head, int timeout, uint16_t msg_id) -{ - uint8_t recv_head; - uint8_t recv_buff[RX_BUF_MAX_LEN]; - uint16_t recv_len; - - if (mqtt_recv(recv_buff, &recv_len, timeout) != 0) { - return -1; - } - recv_head = recv_buff[0]; - - if ((head & recv_head) != head) { - return -1; - } - switch (recv_head & 0xF0) { - case MQTT_CONNACK: - return 0; - case MQTT_PUBACK: - return 0; - case MQTT_SUBACK: - return 0; - case MQTT_PINGRESP: - return 0; - default: - return -1; - } - return -1; -} - -/*-------------------------------------------------*/ -/*函数名:连接TCP服务器 */ -/*参 数:timeout: 超时时间(100ms的倍数) */ -/*返回值:True:正确 False:错误 */ -/*-------------------------------------------------*/ -char mqtt_tcp_connect(int timeout) -{ - char cCmd [120]; + char str[] = "{\"deviceNum\":\"863488052352477\"\,\"relayStatus\":0\,\ + \"lightStatus\":0\,\"isOnline\":1\,\"rssi\":-54\,\"deviceTemperature\":40\,\"airTemperature\":0\,\ + \"airHumidity\":0\,\"triggerSource\":0\,\"brightness\":11\,\"lightInterval\":432\,\ + \"lightMode\":0\,\"fadeTime\":259\,\"red\":255\,\"green\":0\,\"blue\":0}"; - sprintf (cCmd, "AT+CIPSTART=\"TCP\",\"%s\",%d\r\n", User_MQTTServer_IP, User_MQTTServer_PORT); + printf("正在配置ESP8266参数\r\n"); + ESP8266_ATE0();//取消回显 + ESP8266_Net_Mode_Choose(STA); + while(!ESP8266_JoinAP(WIFI_SSID, WIFI_PWD)); - return ESP8266_Send_AT_Cmd ( cCmd, "OK", "WIFI GOT IP", timeout); -} + // 配置用户参数 + ESP8266_MQTTUSERCFG(WIFI_client_id,WIFI_username,WIFI_password); + delay_ms(200); + // 连接MQTT服务器 + ESP8266_MQTTCONN( WIFI_MQTTServer_IP, WIFI_MQTTServer_PORT); + // 订阅主题 + ESP8266_MQTTSUB( WIFI_MQTTServer_Topic_SUB); + printf("\r\nMQTT配置完成"); + + delay_ms(200); -static int mqtt_connect(char *name, char *pwd, char *client_id) -{ - uint32_t i, j; - uint8_t vhead[512]; - uint8_t payload[512]; - uint8_t connec_flag = 0; - uint8_t head; - uint16_t keep_alive = 60; - - i = 0; - vhead[i++] = 0; - vhead[i++] = 4; - vhead[i++] = 'M'; - vhead[i++] = 'Q'; - vhead[i++] = 'T'; - vhead[i++] = 'T'; - vhead[i++] = 4; - - if (name != NULL) { - connec_flag = connec_flag | CONNECT_FLAG_NAME; - } - if (pwd != NULL) { - connec_flag = connec_flag | CONNECT_FLAG_PWD; - } - vhead[i++] = connec_flag; - vhead[i++] = keep_alive / 256; - vhead[i++] = keep_alive % 256; - - j = 0; - mqtt_str_fill(&payload[j], client_id); - j = j + strlen(client_id) + 2; - mqtt_str_fill(&payload[j], name); - j = j + strlen(name) + 2; - mqtt_str_fill(&payload[j], pwd); - j = j + strlen(pwd) + 2; - - head = MQTT_CONNECT; - - mqtt_send(head, i, vhead, j, payload); - if (mqtt_ack_check(MQTT_CONNACK, 100, 0) != 0) { - return -1; - } - return 0; -} - -static int mqtt_disconnect(void) -{ - uint8_t head; - head = MQTT_DISCONNECT; - mqtt_send(head, 0, NULL, 0, NULL); -} -static int mqtt_publish(char *topic, uint8_t *msg, uint16_t msg_len, - uint16_t msg_id) -{ - uint32_t i, j; - uint8_t vhead[512]; - uint8_t head; - uint8_t payload[512]; - - head = 0; - head = head | MQTT_PUBLISH; - head = head | PUBLISH_FLAG_RETN; - head = head | PUBLISH_FLAG_QOS1; - - i = 0; - mqtt_str_fill(&vhead[i], topic); - i = i + strlen(topic) + 2; - vhead[i++] = msg_id >> 8; - vhead[i++] = msg_id; - - j = 0; - memcpy(payload, msg, msg_len); - j = j + msg_len; - - mqtt_send(head, i, vhead, j, payload); - - if (mqtt_ack_check(MQTT_PUBACK, 100, msg_id) != 0) { - return -1; - } - return 0; -} - -static int mqtt_publish_ack(uint16_t msg_id) -{ - uint32_t i, j; - uint8_t vhead[512]; - uint8_t head; - uint8_t payload[512]; - head = MQTT_PUBACK; - i = 0; - vhead[i++] = msg_id >> 8; - vhead[i++] = msg_id; - j = 0; - mqtt_send(head, i, vhead, j, payload); - return 0; -} - -static int mqtt_subscriber(char *topic, uint16_t msg_id) -{ - uint32_t i, j; - uint8_t vhead[512]; - uint8_t payload[512]; - uint8_t head; - head = MQTT_SUBSCRIBE; - head = head | 0x02; - i = 0; - vhead[i++] = msg_id >> 8; - vhead[i++] = msg_id; - - j = 0; - mqtt_str_fill(&payload[j], topic); - j = j + strlen(topic) + 2; - payload[j++] = 1; - mqtt_send(head, i, vhead, j, payload); - if (mqtt_ack_check(MQTT_SUBACK, 100, msg_id) != 0) { - return -1; - } - return 0; -} - -static int mqtt_publish_from_cloud(uint8_t *ackbuff, uint16_t ack_len) -{ - uint32_t i = 0; - uint16_t multiplier = 1; - uint32_t remain_len = 0; - uint32_t vhead_len; - uint32_t payload_len; - uint8_t byte; - uint8_t payload[512]; - uint16_t msg_id; - uint8_t topic[256]; - i = 1; - - memset(topic, 0, 256); - memset(payload, 0, 256); - do { - byte = ackbuff[i++]; - remain_len += (byte & 0x7F) * multiplier; - multiplier *= 128; - if (multiplier > 128 * 128 * 128) { - return -1; - } - } while ((byte & 0x80) != 0); - vhead_len = ackbuff[i++]; - vhead_len = (vhead_len * 256) + ackbuff[i++]; - memcpy(topic, &ackbuff[i], vhead_len); - - i = i + vhead_len; - msg_id = ackbuff[i++]; - msg_id = (msg_id * 256) + ackbuff[i++]; - - payload_len = remain_len - vhead_len - 4; - - memcpy(payload, &ackbuff[i], payload_len); - if (strcmp((char*) topic, User_MQTTServer_Topic_SUB) == 0) { - // sensor_data_set(payload); - ; - } - mqtt_publish_ack(msg_id); - return 0; -} - -uint16_t msg_id = 1; - -int mqtt_beat(void) -{ - uint8_t head = MQTT_PINGREQ; - uint8_t vhead[5]; - uint8_t payload[5]; - uint32_t i = 0, j = 0; - mqtt_send(head, i, vhead, j, payload); - if (mqtt_ack_check(MQTT_PINGRESP, 100, 0) != 0) { - if (mqtt_connect(User_Username, User_Password, User_Client_ID) != 0) { - return -1; - }else{ - return 0; - } - } - return 0; -} - -int mqtt_handle(void) -{ - uint8_t recv_head; - uint8_t recv_buff[RX_BUF_MAX_LEN]; - uint16_t recv_len; - - if (mqtt_recv(recv_buff, &recv_len, 0) != 0) { - return -1; - } - recv_head = recv_buff[0]; - - switch (recv_head & 0xF0) { - case MQTT_PUBLISH: - return mqtt_publish_from_cloud(recv_buff, recv_len); - default: - return -1; - } - return -1; -} - -int mqtt_publish_update(uint8_t *msg, uint16_t msg_len) -{ - if (mqtt_publish(User_MQTTServer_Topic_PUB, msg, msg_len, msg_id++) != 0) { - return -1; - } - return 0; -} - -int mqtt_init(void) -{ - if (mqtt_connect(User_Username, User_Password, User_Client_ID) != 0) { - printf("MQTT handshake error\r\n"); - return -1; + //发送数据到MQTT服务器 + if (MQTT_SendString (WIFI_MQTTServer_Topic_PUB, str)) + { + printf("send data to mqtt server success\r\n"); }else { - printf("MQTT handshake success\r\n"); + printf("send data to mqtt server error\r\n"); + printf(": %s\r\n", str); } - - if (mqtt_subscriber(User_MQTTServer_Topic_SUB, msg_id++) != 0) { - printf("subscribe error\r\n"); - return -1; - }else - { - printf("subscribe success\r\n"); - } - return 0; + } diff --git a/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/mqtt.h b/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/mqtt.h index 9ba15965..ddcff045 100644 --- a/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/mqtt.h +++ b/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/mqtt.h @@ -1,57 +1,26 @@ -#ifndef __MQTT_H__ -#define __MQTT_H __ +#ifndef __MQTT_H +#define __MQTT_H #include "main.h" #include "esp8266.h" -#define User_Client_ID "50fccfefb50a48b98a93ce27bb04592f" //MQTTclientID 用于标志client身份 最长256字节 -#define User_Username "admin" //用于登录 MQTT 服务器 的 username, 最长 64 字节 -#define User_Password "admin123" //用于登录 MQTT 服务器 的 password, 最长 64 字节 -#define User_MQTTServer_IP "106.12.9.213" //MQTT本地服务器IP -#define User_MQTTServer_PORT 1883 //服务器端口号 -#define User_MQTTServer_Topic_PUB "status" //发布MQTT主题 -#define User_MQTTServer_Topic_SUB "status/set/E8DB84933088" //订阅MQTT主题 +/* +*以下参数需要用户自行修改才能测试用过 +*/ -typedef enum { - MQTT_NULL = 0, - MQTT_CONNECT = 1 << 4, - MQTT_CONNACK = 2 << 4, - MQTT_PUBLISH = 3 << 4, - MQTT_PUBACK = 4 << 4, - MQTT_PUBREC = 5 << 4, - MQTT_PUBREL = 6 << 4, - MQTT_PUBCOMP = 7 << 4, - MQTT_SUBSCRIBE = 8 << 4, - MQTT_SUBACK = 9 << 4, - MQTT_UNSUBSCRIBE= 10 << 4, - MQTT_UNSUBACK = 11 << 4, - MQTT_PINGREQ = 12 << 4, - MQTT_PINGRESP = 13 << 4, - MQTT_DISCONNECT = 14 << 4, -}MQTT_HEAD_T; -typedef enum{ - CONNECT_FLAG = 0, - CONNECT_FLAG_NAME = 1 << 7, - CONNECT_FLAG_PWD = 1 << 6, - CONNECT_FLAG_RETAIN = 1 << 5, - CONNECT_FLAG_QOS = 1 << 4, - CONNECT_FLAG_FLAG = 1 << 2, - CONNECT_FLAG_CLS = 1 << 1, -}CONNECT_T; +#define WIFI_SSID "DianJing" //wifi名 +#define WIFI_PWD "wzry6666" //wifi密码 -typedef enum{ - PUBLISH_FLAG_RETN = 1, - PUBLISH_FLAG_QOS0 = 0, - PUBLISH_FLAG_QOS1 = 1 << 1, - PUBLISH_FLAG_QOS2 = 1 << 2, - PUBLISH_FLAG_DUP = 1 << 3, -}PUBLISH_FLAG_T; +#define WIFI_client_id "50fccfefb50a48b98a93ce27bb04591f" //MQTTclientID 用于标志client身份 最长256字节 +#define WIFI_username "admin" //用于登录 MQTT 服务器 的 username, 最长 64 字节 +#define WIFI_password "admin13" //用于登录 MQTT 服务器 的 password, 最长 64 字节 +#define WIFI_MQTTServer_IP "106.12.9.213" //MQTT本地服务器IP +#define WIFI_MQTTServer_PORT 1883 //服务器端口号 +#define WIFI_MQTTServer_Topic_PUB "status" //发布MQTT主题 +#define WIFI_MQTTServer_Topic_SUB "status/set/863488052352477" //订阅MQTT主题 -int mqtt_init(void); -int mqtt_handle(void); -int mqtt_beat(void); -int mqtt_publish_update(uint8_t *msg, uint16_t msg_len); -#endif /* __MQTT_H */ +void ESP8266_STA_MQTTClient_Init(void); +#endif diff --git a/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/tcp.c b/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/tcp.c new file mode 100644 index 00000000..429a4b94 --- /dev/null +++ b/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/tcp.c @@ -0,0 +1,42 @@ +#include "tcp.h" + +volatile uint8_t TcpClosedFlag = 0; + +void ESP8266_STA_TCPClient_Test(void) +{ + uint8_t res; + + char str[100]={0}; + ESP8266_ATE0(); + printf("正在配置ESP8266\r\n"); + ESP8266_Net_Mode_Choose(STA); + while(!ESP8266_JoinAP(User_ESP8266_SSID, User_ESP8266_PWD)); + ESP8266_Enable_MultipleId ( DISABLE ); + while(!ESP8266_Link_Server(enumTCP, User_ESP8266_TCPServer_IP, User_ESP8266_TCPServer_PORT, Single_ID_0)); + while(!ESP8266_UnvarnishSend()); + printf("\r\n配置完成"); + while ( 1 ) + { + sprintf (str,"深圳市安信可科技有限公司" );//格式化发送字符串到TCP服务器 + ESP8266_SendString ( ENABLE, str, 0, Single_ID_0 ); + delay_ms(1000); + if(TcpClosedFlag) //判断是否失去连接 + { + ESP8266_ExitUnvarnishSend(); //退出透传模式 + do + { + res = ESP8266_Get_LinkStatus(); //获取连接状态 + } + while(!res); + + if(res == 4) //确认失去连接,重连 + { + + + while (!ESP8266_JoinAP(User_ESP8266_SSID, User_ESP8266_PWD ) ); + while (!ESP8266_Link_Server(enumTCP, User_ESP8266_TCPServer_IP, User_ESP8266_TCPServer_PORT, Single_ID_0 ) ); + } + while(!ESP8266_UnvarnishSend()); + } + } +} diff --git a/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/tcp.h b/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/tcp.h new file mode 100644 index 00000000..828d0606 --- /dev/null +++ b/firmware/stm32/smart_dormitory/User/xiaoyi_wifi/tcp.h @@ -0,0 +1,22 @@ +#ifndef __TCP_H +#define __TCP_H + +#include "main.h" +#include "esp8266.h" + +/* +*以下参数需要用户自行修改才能测试用过 +*/ + +#define User_ESP8266_SSID "miot_default" //wifi名 +#define User_ESP8266_PWD "123456789x" //wifi密码 + +#define User_ESP8266_TCPServer_IP "192.168.31.16" //服务器IP +#define User_ESP8266_TCPServer_PORT "8888" //服务器端口号 + + +extern volatile uint8_t TcpClosedFlag; //连接状态标志 + +void ESP8266_STA_TCPClient_Test(void); + +#endif